Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrecht Van Lommel <brechtvanlommel@pandora.be>2012-10-01 21:09:12 +0400
committerBrecht Van Lommel <brechtvanlommel@pandora.be>2012-10-01 21:09:12 +0400
commit02fc3eb56cbb544222276c31c8bbe2be804f1cbb (patch)
tree18680fa1dafd66522b01b0717decb69d903bed45
parente5faa314f263bc572286a01442543b246a1eb81c (diff)
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.
-rw-r--r--intern/cycles/blender/blender_camera.cpp15
1 files 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);