[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [42090] trunk/blender/source/blender: Fix #29367: Vertex parent regression

Sergey Sharybin sergey.vfx at gmail.com
Wed Nov 23 16:44:21 CET 2011


Revision: 42090
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=42090
Author:   nazgul
Date:     2011-11-23 15:44:20 +0000 (Wed, 23 Nov 2011)
Log Message:
-----------
Fix #29367: Vertex parent regression

Regression was introduced in svn rev40343. It was caused by re-creating
EditMesh structure which was needed to solve issues with parenting to
vertices after topology changes. This would also erase derivedMesh.

Problem reported now is caused by missing derivedMesh which is used
to solve parenting and apply inverted matrix on ob->parentin, so
parented object used to stay at exactly the same position it used to
stay before parenting.

Not very nice solving of this issue: re-create derivedMesh after
re-creating EditMesh when parenting. Nicer solution would require
bigger changes and probably ful lrefactor of this tools.

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=40343

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/object.c
    trunk/blender/source/blender/editors/object/object_relations.c

Modified: trunk/blender/source/blender/blenkernel/intern/object.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/object.c	2011-11-23 15:39:29 UTC (rev 42089)
+++ trunk/blender/source/blender/blenkernel/intern/object.c	2011-11-23 15:44:20 UTC (rev 42090)
@@ -1785,6 +1785,7 @@
 				dm->getVertCo(dm, 0, vec);
 			}
 		}
+		else fprintf(stderr, "%s: DerivedMesh is needed to solve parenting, object position can be wrong now\n", __func__);
 
 		if(em)
 			BKE_mesh_end_editmesh(me, em);

Modified: trunk/blender/source/blender/editors/object/object_relations.c
===================================================================
--- trunk/blender/source/blender/editors/object/object_relations.c	2011-11-23 15:39:29 UTC (rev 42089)
+++ trunk/blender/source/blender/editors/object/object_relations.c	2011-11-23 15:44:20 UTC (rev 42090)
@@ -61,6 +61,7 @@
 #include "BKE_constraint.h"
 #include "BKE_curve.h"
 #include "BKE_depsgraph.h"
+#include "BKE_DerivedMesh.h"
 #include "BKE_displist.h"
 #include "BKE_global.h"
 #include "BKE_fcurve.h"
@@ -128,8 +129,12 @@
 		load_editMesh(scene, obedit);
 		make_editMesh(scene, obedit);
 
-		em = BKE_mesh_get_editmesh(me);
+		em= BKE_mesh_get_editmesh(me);
 
+		/* derivedMesh might be needed for solving parenting,
+		   so re-create it here */
+		makeDerivedMesh(scene, obedit, em, CD_MASK_BAREMESH);
+
 		eve= em->verts.first;
 		while(eve) {
 			if(eve->f & 1) {




More information about the Bf-blender-cvs mailing list