[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [52670] trunk/blender/source/blender/ editors: fix for view-all operator not taking the view-angle into account.

Campbell Barton ideasman42 at gmail.com
Fri Nov 30 05:26:01 CET 2012


Revision: 52670
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=52670
Author:   campbellbarton
Date:     2012-11-30 04:25:58 +0000 (Fri, 30 Nov 2012)
Log Message:
-----------
fix for view-all operator not taking the view-angle into account.

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-29 20:13:59 UTC (rev 52669)
+++ trunk/blender/source/blender/editors/include/ED_view3d.h	2012-11-30 04:25:58 UTC (rev 52670)
@@ -219,6 +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);
 
 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-29 20:13:59 UTC (rev 52669)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2012-11-30 04:25:58 UTC (rev 52670)
@@ -2224,6 +2224,8 @@
 		/* fix up zoom distance if needed */
 
 		if (rv3d->is_persp) {
+			/* offset the view based on the lens */
+			size = ED_view3d_dist_from_radius(v3d, 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-29 20:13:59 UTC (rev 52669)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2012-11-30 04:25:58 UTC (rev 52670)
@@ -1511,7 +1511,7 @@
 	}
 }
 
-float ED_view3d_pixel_size(struct RegionView3D *rv3d, const float co[3])
+float ED_view3d_pixel_size(RegionView3D *rv3d, const float co[3])
 {
 	return (rv3d->persmat[3][3] + (
 	            rv3d->persmat[0][3] * co[0] +
@@ -1520,6 +1520,13 @@
 	        ) * rv3d->pixsize;
 }
 
+/* use for perspective view only */
+float ED_view3d_dist_from_radius(View3D *v3d, 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));
+}
+
 /* view matrix properties utilities */
 
 /* unused */




More information about the Bf-blender-cvs mailing list