[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33412] trunk/blender/source/blender/ blenkernel/intern/cloth.c: Fix for [#24958] Cloth pinning not working

Janne Karhu jhkarh at gmail.com
Wed Dec 1 13:23:10 CET 2010


Revision: 33412
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33412
Author:   jhk
Date:     2010-12-01 13:23:10 +0100 (Wed, 01 Dec 2010)

Log Message:
-----------
Fix for [#24958] Cloth pinning not working
* Cloth now uses the original derived mesh for simulation and a new dm only for applying the simulation result.
* Reverted Campbell's temporary workaround r33406.

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

Modified: trunk/blender/source/blender/blenkernel/intern/cloth.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/cloth.c	2010-12-01 10:17:31 UTC (rev 33411)
+++ trunk/blender/source/blender/blenkernel/intern/cloth.c	2010-12-01 12:23:10 UTC (rev 33412)
@@ -447,11 +447,6 @@
 		return dm;
 	}
 
-	/* XXX, workaround for bug [#24958], see report for more info */
-	if(CustomData_has_layer(&dm->vertData, CD_MDEFORMVERT) && !CustomData_has_layer(&result->vertData, CD_MDEFORMVERT)) {
-		DM_add_vert_layer(result, CD_MDEFORMVERT, CD_DUPLICATE, dm->getVertDataArray(dm, CD_MDEFORMVERT));
-	}
-
 	if(clmd->sim_parms->reset
 		|| (framenr == (startframe - clmd->sim_parms->preroll) && clmd->sim_parms->preroll != 0)
 		|| (clmd->clothObject && result->getNumVerts(result) != clmd->clothObject->numverts))
@@ -473,10 +468,10 @@
 		BKE_ptcache_invalidate(cache);
 
 		/* do simulation */
-		if(!do_init_cloth(ob, clmd, result, framenr))
+		if(!do_init_cloth(ob, clmd, dm, framenr))
 			return result;
 
-		do_step_cloth(ob, clmd, result, framenr);
+		do_step_cloth(ob, clmd, dm, framenr);
 		cloth_to_object(ob, clmd, result);
 
 		return result;
@@ -497,12 +492,12 @@
 		framedelta= -1;
 
 	/* initialize simulation data if it didn't exist already */
-	if(!do_init_cloth(ob, clmd, result, framenr))
+	if(!do_init_cloth(ob, clmd, dm, framenr))
 		return result;
 
 	if((framenr == startframe) && (clmd->sim_parms->preroll == 0)) {
 		BKE_ptcache_id_reset(scene, &pid, PTCACHE_RESET_OUTDATED);
-		do_init_cloth(ob, clmd, result, framenr);
+		do_init_cloth(ob, clmd, dm, framenr);
 		BKE_ptcache_validate(cache, framenr);
 		cache->flag &= ~PTCACHE_REDO_NEEDED;
 		return result;
@@ -540,7 +535,7 @@
 	/* do simulation */
 	BKE_ptcache_validate(cache, framenr);
 
-	if(!do_step_cloth(ob, clmd, result, framenr)) {
+	if(!do_step_cloth(ob, clmd, dm, framenr)) {
 		BKE_ptcache_invalidate(cache);
 	}
 	else





More information about the Bf-blender-cvs mailing list