[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [56119] trunk/blender/source/blender: Support object scale for mesh display options.

Campbell Barton ideasman42 at gmail.com
Thu Apr 18 01:30:19 CEST 2013


Revision: 56119
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=56119
Author:   campbellbarton
Date:     2013-04-17 23:30:19 +0000 (Wed, 17 Apr 2013)
Log Message:
-----------
Support object scale for mesh display options. (currently only uniform scale for thickness test)

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c
    trunk/blender/source/blender/blenlib/BLI_math_matrix.h
    trunk/blender/source/blender/blenlib/intern/math_matrix.c

Modified: trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c	2013-04-17 20:07:22 UTC (rev 56118)
+++ trunk/blender/source/blender/blenkernel/intern/editderivedmesh.c	2013-04-17 23:30:19 UTC (rev 56119)
@@ -1576,6 +1576,11 @@
 
 	axis_from_enum_v3(dir, axis);
 
+	if (LIKELY(em->ob)) {
+		mul_transposed_mat3_m4_v3(em->ob->obmat, dir);
+		normalize_v3(dir);
+	}
+
 	/* now convert into global space */
 	BM_ITER_MESH_INDEX (f, &iter, bm, BM_FACES_OF_MESH, index) {
 		float fac = angle_normalized_v3v3(polyNos ? polyNos[index] : f->no, dir) / (float)M_PI;
@@ -1667,7 +1672,7 @@
 		if (vertexCos) {
 			cos[0] = vertexCos[BM_elem_index_get(ltri[0]->v)];
 			cos[1] = vertexCos[BM_elem_index_get(ltri[1]->v)];
-			cos[3] = vertexCos[BM_elem_index_get(ltri[2]->v)];
+			cos[2] = vertexCos[BM_elem_index_get(ltri[2]->v)];
 		}
 		else {
 			cos[0] = ltri[0]->v->co;
@@ -1805,6 +1810,7 @@
 
 	switch (statvis->type) {
 		case SCE_STATVIS_OVERHANG:
+		{
 			statvis_calc_overhang(
 			            em, bmdm ? bmdm->polyNos : NULL,
 			            statvis->overhang_min / (float)M_PI,
@@ -1812,18 +1818,24 @@
 			            statvis->overhang_axis,
 			            r_face_colors);
 			break;
+		}
 		case SCE_STATVIS_THICKNESS:
+		{
+			const float scale = 1.0f / mat4_to_scale(em->ob->obmat);
 			statvis_calc_thickness(
 			            em, bmdm ? bmdm->vertexCos : NULL,
-			            statvis->thickness_min,
-			            statvis->thickness_max,
+			            statvis->thickness_min * scale,
+			            statvis->thickness_max * scale,
 			            statvis->thickness_samples,
 			            r_face_colors);
 			break;
+		}
 		case SCE_STATVIS_INTERSECT:
+		{
 			statvis_calc_intersect(
 			            em, bmdm ? bmdm->vertexCos : NULL,
 			            r_face_colors);
 			break;
+		}
 	}
 }

Modified: trunk/blender/source/blender/blenlib/BLI_math_matrix.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_math_matrix.h	2013-04-17 20:07:22 UTC (rev 56118)
+++ trunk/blender/source/blender/blenlib/BLI_math_matrix.h	2013-04-17 23:30:19 UTC (rev 56119)
@@ -98,6 +98,7 @@
 void mul_v3_m3v3(float r[3], float M[3][3], const float a[3]);
 void mul_v2_m3v3(float r[2], float M[3][3], const float a[3]);
 void mul_transposed_m3_v3(float M[3][3], float r[3]);
+void mul_transposed_mat3_m4_v3(float M[4][4], float r[3]);
 void mul_m3_v3_double(float M[3][3], double r[3]);
 
 void mul_m3_fl(float R[3][3], float f);

Modified: trunk/blender/source/blender/blenlib/intern/math_matrix.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/math_matrix.c	2013-04-17 20:07:22 UTC (rev 56118)
+++ trunk/blender/source/blender/blenlib/intern/math_matrix.c	2013-04-17 23:30:19 UTC (rev 56119)
@@ -445,6 +445,18 @@
 	vec[2] = x * mat[2][0] + y * mat[2][1] + mat[2][2] * vec[2];
 }
 
+void mul_transposed_mat3_m4_v3(float mat[4][4], float vec[3])
+{
+	float x, y;
+
+	x = vec[0];
+	y = vec[1];
+	vec[0] = x * mat[0][0] + y * mat[0][1] + mat[0][2] * vec[2];
+	vec[1] = x * mat[1][0] + y * mat[1][1] + mat[1][2] * vec[2];
+	vec[2] = x * mat[2][0] + y * mat[2][1] + mat[2][2] * vec[2];
+}
+
+
 void mul_m3_fl(float m[3][3], float f)
 {
 	int i, j;




More information about the Bf-blender-cvs mailing list