mirror of
https://github.com/overte-org/overte.git
synced 2025-08-06 20:58:38 +02:00
Improved idle to walk forward transition
Hooked up a transition animation from idle to walk in the animation json. Also fixed a bug in the AnimBlendLinearMove which was preventing the interpolation into idle from being correct.
This commit is contained in:
parent
29516619ee
commit
30480f126b
2 changed files with 32 additions and 5 deletions
|
@ -415,10 +415,25 @@
|
||||||
"states": [
|
"states": [
|
||||||
{
|
{
|
||||||
"id": "idle",
|
"id": "idle",
|
||||||
"interpTarget": 15,
|
"interpTarget": 10,
|
||||||
"interpDuration": 15,
|
"interpDuration": 10,
|
||||||
"transitions": [
|
"transitions": [
|
||||||
{ "var": "isMovingForward", "state": "walkFwd" },
|
{ "var": "isMovingForward", "state": "idleToWalkFwd" },
|
||||||
|
{ "var": "isMovingBackward", "state": "walkBwd" },
|
||||||
|
{ "var": "isMovingRight", "state": "strafeRight" },
|
||||||
|
{ "var": "isMovingLeft", "state": "strafeLeft" },
|
||||||
|
{ "var": "isTurningRight", "state": "turnRight" },
|
||||||
|
{ "var": "isTurningLeft", "state": "turnLeft" },
|
||||||
|
{ "var": "isAway", "state": "awayIntro" }
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "idleToWalkFwd",
|
||||||
|
"interpTarget": 3,
|
||||||
|
"interpDuration": 3,
|
||||||
|
"transitions": [
|
||||||
|
{ "var": "idleToWalkFwdOnDone", "state": "walkFwd" },
|
||||||
|
{ "var": "isNotMoving", "state": "idle" },
|
||||||
{ "var": "isMovingBackward", "state": "walkBwd" },
|
{ "var": "isMovingBackward", "state": "walkBwd" },
|
||||||
{ "var": "isMovingRight", "state": "strafeRight" },
|
{ "var": "isMovingRight", "state": "strafeRight" },
|
||||||
{ "var": "isMovingLeft", "state": "strafeLeft" },
|
{ "var": "isMovingLeft", "state": "strafeLeft" },
|
||||||
|
@ -429,7 +444,7 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"id": "walkFwd",
|
"id": "walkFwd",
|
||||||
"interpTarget": 6,
|
"interpTarget": 15,
|
||||||
"interpDuration": 6,
|
"interpDuration": 6,
|
||||||
"transitions": [
|
"transitions": [
|
||||||
{ "var": "isNotMoving", "state": "idle" },
|
{ "var": "isNotMoving", "state": "idle" },
|
||||||
|
@ -638,6 +653,18 @@
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"id": "idleToWalkFwd",
|
||||||
|
"type": "clip",
|
||||||
|
"data": {
|
||||||
|
"url": "http://hifi-content.s3.amazonaws.com/ozan/dev/anim/standard_anims/idle_to_walk.fbx",
|
||||||
|
"startFrame": 1.0,
|
||||||
|
"endFrame": 19.0,
|
||||||
|
"timeScale": 1.0,
|
||||||
|
"loopFlag": false
|
||||||
|
},
|
||||||
|
"children": []
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"id": "walkBwd",
|
"id": "walkBwd",
|
||||||
"type": "blendLinearMove",
|
"type": "blendLinearMove",
|
||||||
|
|
|
@ -122,5 +122,5 @@ void AnimBlendLinearMove::setCurrentFrameInternal(float frame) {
|
||||||
auto clipNode = std::dynamic_pointer_cast<AnimClip>(_children.front());
|
auto clipNode = std::dynamic_pointer_cast<AnimClip>(_children.front());
|
||||||
assert(clipNode);
|
assert(clipNode);
|
||||||
const float NUM_FRAMES = (clipNode->getEndFrame() - clipNode->getStartFrame()) + 1.0f;
|
const float NUM_FRAMES = (clipNode->getEndFrame() - clipNode->getStartFrame()) + 1.0f;
|
||||||
_phase = fmodf(frame, NUM_FRAMES);
|
_phase = fmodf(frame / NUM_FRAMES, 1.0f);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue