[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58665] trunk/blender/source/blender/ editors/space_view3d/view3d_edit.c: cleanup ED_view3d_from_m4() ambiguity with NULL checks, now assert if dist is set up but ofs.

Campbell Barton ideasman42 at gmail.com
Sat Jul 27 16:44:53 CEST 2013


Revision: 58665
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58665
Author:   campbellbarton
Date:     2013-07-27 14:44:52 +0000 (Sat, 27 Jul 2013)
Log Message:
-----------
cleanup ED_view3d_from_m4() ambiguity with NULL checks, now assert if dist is set up but ofs.
also small optimization for matrix conversion.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_edit.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_edit.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2013-07-27 14:17:20 UTC (rev 58664)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_edit.c	2013-07-27 14:44:52 UTC (rev 58665)
@@ -4200,29 +4200,28 @@
  */
 void ED_view3d_from_m4(float mat[4][4], float ofs[3], float quat[4], float *dist)
 {
+	float nmat[3][3];
+
+	/* dist depends on offset */
+	BLI_assert(dist == NULL || ofs != NULL);
+
+	copy_m3_m4(nmat, mat);
+	normalize_m3(nmat);
+
 	/* Offset */
 	if (ofs)
 		negate_v3_v3(ofs, mat[3]);
 
 	/* Quat */
 	if (quat) {
-		float imat[4][4];
-		normalize_m4_m4(imat, mat);
-		invert_m4(imat);
-		mat4_to_quat(quat, imat);
+		float imat[3][3];
+		invert_m3_m3(imat, nmat);
+		mat3_to_quat(quat, imat);
 	}
 
-	if (dist) {
-		float nmat[3][3];
-		float vec[3];
+	if (ofs && dist) {
+		float vec[3] = {0.0f, 0.0f, -(*dist)};
 
-		vec[0] = 0.0f;
-		vec[1] = 0.0f;
-		vec[2] = -(*dist);
-
-		copy_m3_m4(nmat, mat);
-		normalize_m3(nmat);
-
 		mul_m3_v3(nmat, vec);
 		sub_v3_v3(ofs, vec);
 	}




More information about the Bf-blender-cvs mailing list