我创建了一个Blender模型,该模型使用具有骨骼约束的骨架来为模型设置动画。将模型导出为.fbx
文件并将其传递给fbx-conv后,我的动画会分成几个动画。
每个动画的最终ID都与"MyObject|MyAnimation"
类似。
换句话说,我需要立即运行所有这些子动画来运行我的完整动画。
我尝试了几种AnimationController方法。首先,我尝试为每个动画调用AnimationController.setAnimation()
,这不起作用,因为它在每次调用时取消当前动画。
AnimationController.animate()
方法听起来应该做我想要的,但我得到与.setAnimation()
相同的结果。
这是我尝试过的代码:
instance = new ModelInstance( myModel );
controller = new AnimationController( instance );
for( Animation animation : instance.animations ) {
controller.animate( animation.id, 0 );
}
这不是.animate()
的意图吗?
另外,我并不完全确定如何正确使用第二个参数transitionTime
。这可能是问题吗?
答案 0 :(得分:1)
正如Xoppa指出的那样,LibGDX docs on 3D Animations and Skinning表示如下:
"如果要将多个动画应用于同一个ModelInstance,您可以使用多个AnimationControllers,只要它们不会相互干扰(不会影响相同的节点)。 "
示例:强>
ModelInstance myInstance = new ModelInstance( myModel );
AnimationController controllerOne = new AnimationController( myInstance );
AnimationController controllerTwo = new AnimationController( myInstance );
controllerOne.setAnimation( "FirstAnimationId", -1 );
controllerTwo.setAnimation( "SecondAnimationId", -1 );
然后在渲染循环中,您还需要在所有.update(delta)
上致电AnimationController
:
controllerOne.update( Gdx.graphics.getDeltaTime() );
controllerTwo.update( Gdx.graphics.getDeltaTime() );