[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43777] trunk/blender/source/blender/ blenkernel/intern/constraint.c: Fix #30019: Copy rotation from a vertex group

Sergey Sharybin sergey.vfx at gmail.com
Mon Jan 30 20:46:21 CET 2012


Revision: 43777
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43777
Author:   nazgul
Date:     2012-01-30 19:46:15 +0000 (Mon, 30 Jan 2012)
Log Message:
-----------
Fix #30019: Copy rotation from a vertex group

It was incorrect behavior of contarget_get_mesh_mat in cases when
object's Y axis is co-linear to average vertex group normal.
Use object's X axis for plane definition in such cases.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/constraint.c

Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/constraint.c	2012-01-30 19:02:10 UTC (rev 43776)
+++ trunk/blender/source/blender/blenkernel/intern/constraint.c	2012-01-30 19:46:15 UTC (rev 43777)
@@ -504,14 +504,18 @@
 			normalize_v3(normal);
 			copy_v3_v3(plane, tmat[1]);
 			
-			copy_v3_v3(tmat[2], normal);
-			cross_v3_v3v3(tmat[0], normal, plane);
-			cross_v3_v3v3(tmat[1], tmat[2], tmat[0]);
-			
-			copy_m4_m3(mat, tmat);
+			cross_v3_v3v3(mat[0], normal, plane);
+			if(len_v3(mat[0]) < 1e-3) {
+				copy_v3_v3(plane, tmat[0]);
+				cross_v3_v3v3(mat[0], normal, plane);
+			}
+
+			copy_v3_v3(mat[2], normal);
+			cross_v3_v3v3(mat[1], mat[2], mat[0]);
+
 			normalize_m4(mat);
+
 			
-			
 			/* apply the average coordinate as the new location */
 			mul_v3_m4v3(mat[3], ob->obmat, vec);
 		}




More information about the Bf-blender-cvs mailing list