From 02fc3eb56cbb544222276c31c8bbe2be804f1cbb Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 1 Oct 2012 17:09:12 +0000 Subject: Fix #32725: cycles border render + panorama camera not working in viewport. It will still look a bit strange since the viewport can't actually render such panorama views, so the opengl drawn scene behind the border render will not match up. --- intern/cycles/blender/blender_camera.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/intern/cycles/blender/blender_camera.cpp b/intern/cycles/blender/blender_camera.cpp index 46d5fefd4dc..e16677336d5 100644 --- a/intern/cycles/blender/blender_camera.cpp +++ b/intern/cycles/blender/blender_camera.cpp @@ -94,7 +94,7 @@ static float blender_camera_focal_distance(BL::Object b_ob, BL::Camera b_camera) return fabsf(transform_get_column(&mat, 3).z); } -static void blender_camera_from_object(BlenderCamera *bcam, BL::Object b_ob) +static void blender_camera_from_object(BlenderCamera *bcam, BL::Object b_ob, bool skip_panorama = false) { BL::ID b_ob_data = b_ob.data(); @@ -111,7 +111,10 @@ static void blender_camera_from_object(BlenderCamera *bcam, BL::Object b_ob) bcam->type = CAMERA_ORTHOGRAPHIC; break; case BL::Camera::type_PANO: - bcam->type = CAMERA_PANORAMA; + if(!skip_panorama) + bcam->type = CAMERA_PANORAMA; + else + bcam->type = CAMERA_PERSPECTIVE; break; case BL::Camera::type_PERSP: default: @@ -378,7 +381,7 @@ void BlenderSync::sync_camera_motion(BL::Object b_ob, int motion) /* Sync 3D View Camera */ -static void blender_camera_from_view(BlenderCamera *bcam, BL::Scene b_scene, BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height) +static void blender_camera_from_view(BlenderCamera *bcam, BL::Scene b_scene, BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height, bool skip_panorama = false) { /* 3d view parameters */ bcam->nearclip = b_v3d.clip_start(); @@ -391,7 +394,7 @@ static void blender_camera_from_view(BlenderCamera *bcam, BL::Scene b_scene, BL: BL::Object b_ob = (b_v3d.lock_camera_and_layers())? b_scene.camera(): b_v3d.camera(); if(b_ob) { - blender_camera_from_object(bcam, b_ob); + blender_camera_from_object(bcam, b_ob, skip_panorama); /* magic zoom formula */ bcam->zoom = (float)b_rv3d.view_camera_zoom(); @@ -447,7 +450,7 @@ static void blender_camera_border(BlenderCamera *bcam, BL::Scene b_scene, BL::Sp /* get viewport viewplane */ BlenderCamera view_bcam; blender_camera_init(&view_bcam); - blender_camera_from_view(&view_bcam, b_scene, b_v3d, b_rv3d, width, height); + blender_camera_from_view(&view_bcam, b_scene, b_v3d, b_rv3d, width, height, true); blender_camera_viewplane(&view_bcam, width, height, &view_left, &view_right, &view_bottom, &view_top, &view_aspect, &sensor_size); @@ -460,7 +463,7 @@ static void blender_camera_border(BlenderCamera *bcam, BL::Scene b_scene, BL::Sp /* get camera viewplane */ BlenderCamera cam_bcam; blender_camera_init(&cam_bcam); - blender_camera_from_object(&cam_bcam, b_ob); + blender_camera_from_object(&cam_bcam, b_ob, true); width = (int)(r.resolution_x()*r.resolution_percentage()/100); height = (int)(r.resolution_y()*r.resolution_percentage()/100); -- cgit v1.2.3