[Bf-blender-cvs] [cee1ea5] alembic_pointcache: Use a realistic time scale for cloth sim.

Lukas Tönne noreply at git.blender.org
Fri Feb 13 17:56:05 CET 2015


Commit: cee1ea55334ff1ffb37ab2df6a22a4c8e9f4c7d3
Author: Lukas Tönne
Date:   Fri Feb 13 17:18:34 2015 +0100
Branches: alembic_pointcache
https://developer.blender.org/rBcee1ea55334ff1ffb37ab2df6a22a4c8e9f4c7d3

Use a realistic time scale for cloth sim.

===================================================================

M	source/blender/blenkernel/intern/cloth.c

===================================================================

diff --git a/source/blender/blenkernel/intern/cloth.c b/source/blender/blenkernel/intern/cloth.c
index 2913e13..2d1aa5d 100644
--- a/source/blender/blenkernel/intern/cloth.c
+++ b/source/blender/blenkernel/intern/cloth.c
@@ -431,6 +431,8 @@ static DerivedMesh *cloth_to_triangles(DerivedMesh *dm)
  ************************************************/
 void clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, DerivedMesh *dm, float (*vertexCos)[3])
 {
+	const float fps = FPS;
+	const float timescale = fps > 0.0f ? 1.0f / fps : 0.0f;
 	PointCache *cache;
 	int framenr, startframe, endframe;
 	PTCReadSampleResult cache_result;
@@ -440,10 +442,7 @@ void clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, Derived
 	framenr= (int)scene->r.cfra;
 	cache= clmd->point_cache;
 
-	cache_reader = PTC_reader_cloth(scene, ob, clmd);
-	PTC_reader_get_frame_range(cache_reader, &startframe, &endframe);
-
-	clmd->sim_parms->timescale = 1.0f;
+	clmd->sim_parms->timescale = timescale;
 
 	if (clmd->sim_parms->reset || (clmd->clothObject && dm->getNumVerts(dm) != clmd->clothObject->numverts)) {
 		clmd->sim_parms->reset = 0;
@@ -453,6 +452,8 @@ void clothModifier_do(ClothModifierData *clmd, Scene *scene, Object *ob, Derived
 	// unused in the moment, calculated separately in implicit.c
 	clmd->sim_parms->dt = clmd->sim_parms->timescale / clmd->sim_parms->stepsPerFrame;
 
+	cache_reader = PTC_reader_cloth(scene, ob, clmd);
+	PTC_reader_get_frame_range(cache_reader, &startframe, &endframe);
 	/* simulation is only active during a specific period */
 	if (framenr < startframe) {
 		return;




More information about the Bf-blender-cvs mailing list