[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52671] trunk/blender/source/blender/ editors: make previous commit work when the camera is locked to the view ( in that case use the camera lens, not the viewport lens value).

Campbell Barton ideasman42 at gmail.com
Fri Nov 30 05:40:36 CET 2012


Revision: 52671
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52671
Author:   campbellbarton
Date:     2012-11-30 04:40:32 +0000 (Fri, 30 Nov 2012)
Log Message:
-----------
make previous commit work when the camera is locked to the view (in that case use the camera lens, not the viewport lens value).

Modified Paths:
--------------
    trunk/blender/source/blender/editors/include/ED_view3d.h
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
    trunk/blender/source/blender/editors/space_view3d/view3d_view.c

Modified: trunk/blender/source/blender/editors/include/ED_view3d.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_view3d.h	2012-11-30 04:25:58 UTC (rev 52670)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2012-11-30 04:40:32 UTC (rev 52671)
@@ -219,7 +219,7 @@
 void ED_view3d_clipping_disable(void);
 
 float ED_view3d_pixel_size(struct RegionView3D *rv3d, const float co[3]);
-float ED_view3d_dist_from_radius(struct View3D *v3d, const float radius);
+float ED_view3d_dist_from_radius(const float angle, const float radius);
 
 void drawcircball(int mode, const float cent[3], float rad, float tmat[][4]);
 

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2012-11-30 04:25:58 UTC (rev 52670)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2012-11-30 04:40:32 UTC (rev 52671)
@@ -2224,8 +2224,22 @@
 		/* fix up zoom distance if needed */
 
 		if (rv3d->is_persp) {
+			float lens, sensor_size;
 			/* offset the view based on the lens */
-			size = ED_view3d_dist_from_radius(v3d, size / 2.0f);
+			if (rv3d->persp == RV3D_CAMOB && ED_view3d_camera_lock_check(v3d, rv3d)) {
+				CameraParams params;
+				BKE_camera_params_init(&params);
+				BKE_camera_params_from_object(&params, v3d->camera);
+
+				lens = params.lens;
+				sensor_size = BKE_camera_sensor_size(params.sensor_fit, params.sensor_x, params.sensor_y);
+			}
+			else {
+				lens = v3d->lens;
+				sensor_size = DEFAULT_SENSOR_WIDTH;
+			}
+			size = ED_view3d_dist_from_radius(focallength_to_fov(lens, sensor_size), size / 2.0f);
+
 			if (size <= v3d->near * 1.5f) {
 				/* do not zoom closer than the near clipping plane */
 				size = v3d->near * 1.5f;

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_view.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2012-11-30 04:25:58 UTC (rev 52670)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2012-11-30 04:40:32 UTC (rev 52671)
@@ -1521,10 +1521,9 @@
 }
 
 /* use for perspective view only */
-float ED_view3d_dist_from_radius(View3D *v3d, const float radius)
+float ED_view3d_dist_from_radius(const float angle, const float radius)
 {
-	const float angle  = (((float)M_PI) - focallength_to_fov(v3d->lens, DEFAULT_SENSOR_WIDTH));
-	return radius * fabsf(1.0f / cosf(angle / 2.0f));
+	return radius * fabsf(1.0f / cosf((((float)M_PI) - angle) / 2.0f));
 }
 
 /* view matrix properties utilities */




More information about the Bf-blender-cvs mailing list