Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Genrich <daniel.genrich@gmx.net>2012-11-23 09:00:07 +0400
committerDaniel Genrich <daniel.genrich@gmx.net>2012-11-23 09:00:07 +0400
commitef67ddeba9c9f1f99129da3a4a7eb6b535a542e5 (patch)
tree1eb091638eb19e38ab15a77efb518ca47b66f5fa /intern/elbeem
parent7189a9db514e2ba8f79ed3cf5bc6d00ea6ff4b8c (diff)
Bugfix [#29186] Object contribute to fluid sim animation start earlier than keyframe
Also fix: - Fluid simulation was always lagging 1 frame behind: E.g. the 250th frame in blender showed 249th frame of the fluid simulation. Change: - Animated enabled/disabled property only gets counted as "on" if value >= 1 Note that this bugfix should solve many problems with timings of animated fluid sim properties.
Diffstat (limited to 'intern/elbeem')
-rw-r--r--intern/elbeem/intern/ntl_geometryobject.cpp2
-rw-r--r--intern/elbeem/intern/ntl_world.cpp11
-rw-r--r--intern/elbeem/intern/ntl_world.h3
3 files changed, 14 insertions, 2 deletions
diff --git a/intern/elbeem/intern/ntl_geometryobject.cpp b/intern/elbeem/intern/ntl_geometryobject.cpp
index 4f640253f0f..1e08cb96a95 100644
--- a/intern/elbeem/intern/ntl_geometryobject.cpp
+++ b/intern/elbeem/intern/ntl_geometryobject.cpp
@@ -787,7 +787,7 @@ ntlVec3Gfx ntlGeometryObject::getTranslation(double t) {
}
/*! get active flag time t*/
float ntlGeometryObject::getGeoActive(double t) {
- float act = mcGeoActive.get(t); // if <= 0.0 -> off
+ float act = (mcGeoActive.get(t) >= 1.) ? 1.0 : 0.0;
return act;
}
diff --git a/intern/elbeem/intern/ntl_world.cpp b/intern/elbeem/intern/ntl_world.cpp
index 0b36f724985..dcc81dbe5cb 100644
--- a/intern/elbeem/intern/ntl_world.cpp
+++ b/intern/elbeem/intern/ntl_world.cpp
@@ -143,6 +143,7 @@ void ntlWorld::initDefaults()
mFirstSim = 1;
mSingleStepDebug = false;
mFrameCnt = 0;
+ mSimFrameCnt = 0;
mpOpenGLRenderer = NULL;
/* create scene storage */
@@ -406,7 +407,6 @@ int ntlWorld::advanceSims(int framenum)
}
for(size_t i=0;i<mpSims->size();i++) { (*mpSims)[i]->setFrameNum(framenum); }
- double targetTime = mSimulationTime + (*mpSims)[mFirstSim]->getFrameTime(framenum);
// time stopped? nothing else to do...
if( (*mpSims)[mFirstSim]->getFrameTime(framenum) <= 0.0 ){
@@ -416,6 +416,13 @@ int ntlWorld::advanceSims(int framenum)
(*mpSims)[mFirstSim]->checkCallerStatus(FLUIDSIM_CBSTATUS_STEP, 0);
}
+ // Prevent bug [#29186] Object contribute to fluid sim animation start earlier than keyframe
+ // Was: double targetTime = mSimulationTime + (*mpSims)[mFirstSim]->getFrameTime(framenum); - DG
+ double totalTime = 0.0, targetTime = 0.0;
+ for(size_t i = 0; i < mSimFrameCnt; i++)
+ totalTime += (*mpSims)[mFirstSim]->getFrameTime(framenum);
+ targetTime = totalTime + (*mpSims)[mFirstSim]->getFrameTime(framenum);
+
int gstate = 0;
myTime_t advsstart = getTime();
@@ -461,6 +468,8 @@ int ntlWorld::advanceSims(int framenum)
sim->prepareVisualization();
}
+ mSimFrameCnt++;
+
return 0;
}
diff --git a/intern/elbeem/intern/ntl_world.h b/intern/elbeem/intern/ntl_world.h
index 3c5958477d4..c207904cf75 100644
--- a/intern/elbeem/intern/ntl_world.h
+++ b/intern/elbeem/intern/ntl_world.h
@@ -115,6 +115,9 @@ class ntlWorld
/*! count no. of frame for viz render */
int mFrameCnt;
+
+ /*! count no. of frame for correct sim time */
+ int mSimFrameCnt;
};