add maxDelta to blend between glTF and dynamic bone animations

This commit is contained in:
Nick Fisher
2024-06-10 22:32:44 +08:00
parent b5ed69483c
commit 5c5897f74d
12 changed files with 84 additions and 33 deletions

View File

@@ -429,9 +429,10 @@ extern "C"
int numFrames,
float frameLengthInMs,
float fadeOutInSecs,
float fadeInInSecs)
float fadeInInSecs,
float maxDelta)
{
((SceneManager *)sceneManager)->addBoneAnimation(asset, skinIndex, boneIndex, frameData, numFrames, frameLengthInMs, fadeOutInSecs, fadeInInSecs);
((SceneManager *)sceneManager)->addBoneAnimation(asset, skinIndex, boneIndex, frameData, numFrames, frameLengthInMs, fadeOutInSecs, fadeInInSecs, maxDelta);
}
EMSCRIPTEN_KEEPALIVE void set_post_processing(void *const viewer, bool enabled)

View File

@@ -1024,7 +1024,9 @@ namespace flutter_filament
const float *const frameData,
int numFrames,
float frameLengthInMs,
float fadeOutInSecs, float fadeInInSecs)
float fadeOutInSecs,
float fadeInInSecs,
float maxDelta)
{
std::lock_guard lock(_mutex);
@@ -1072,7 +1074,6 @@ namespace flutter_filament
}
animation.frameLengthInMs = frameLengthInMs;
animation.start = std::chrono::high_resolution_clock::now();
animation.reverse = false;
animation.durationInSecs = (frameLengthInMs * numFrames) / 1000.0f;
@@ -1080,6 +1081,7 @@ namespace flutter_filament
animation.frameLengthInMs = frameLengthInMs;
animation.fadeOutInSecs = fadeOutInSecs;
animation.fadeInInSecs = fadeInInSecs;
animation.maxDelta = maxDelta;
animation.skinIndex = skinIndex;
if(!_animationComponentManager->hasComponent(instance->getRoot())) {
Log("ERROR: specified entity is not animatable (has no animation component attached).");