如何在放置在平面上时对ModelRenderable进行动画处理?
How to animate the ModelRenderable at the time of placing on the plane?
我正在尝试在放置 3D 对象(在我的例子中是 .sfb)时播放动画(如掉落或弹跳),但我不知道该怎么做。
我曾尝试使用 ValueAnimator,它可以很好地更改其颜色值,但这不是我想要的。
val alphaAnimator = ValueAnimator.ofFloat(0.0f, 1.0f, 0.0f)
alphaAnimator.addUpdateListener { animation ->
val animatedAlpha = animation.animatedValue as Float
modelRenderable.material.setFloat4(
MaterialFactory.MATERIAL_COLOR,
Color(0.0f, 0.0f, 1.0f * animatedAlpha, animatedAlpha)
)
}
alphaAnimator.repeatCount = ValueAnimator.INFINITE
alphaAnimator.duration = 1000
alphaAnimator.start()
val animatorSet = AnimatorSet()
animatorSet.playSequentially(
ObjectAnimator.ofFloat(modelRenderable, "translationY", 0.0f)
ObjectAnimator.ofFloat(modelRenderable, "translationY", 1.5f)
ObjectAnimator.ofFloat(modelRenderable, "translationY", 0.0f)
)
animatorSet.duration = 600
animatorSet.start()
但这给我一个错误 "Could not find property setter method setTranslationY
on com.google.ar.sceneform.rendering.ModelRenderable"。
您应该为附加可渲染对象的节点而不是模型本身设置动画。该节点有一个 setLocalPosition(Vector3) 方法,您可以将其用于 ObjectAnimator。因此,例如,要为模型的位置设置动画,您应该这样做:
ObjectAnimator nodeAnimator = ObjectAnimator.ofObject(
yourNode,
"localPosition",
new Vector3Evaluator(),
Vector3.zero(), new Vector3(0f, 1f, 0f));
然后您可以设置持续时间、重复次数、模式等。您还可以在动画上缩放和旋转模型。
我正在尝试在放置 3D 对象(在我的例子中是 .sfb)时播放动画(如掉落或弹跳),但我不知道该怎么做。
我曾尝试使用 ValueAnimator,它可以很好地更改其颜色值,但这不是我想要的。
val alphaAnimator = ValueAnimator.ofFloat(0.0f, 1.0f, 0.0f)
alphaAnimator.addUpdateListener { animation ->
val animatedAlpha = animation.animatedValue as Float
modelRenderable.material.setFloat4(
MaterialFactory.MATERIAL_COLOR,
Color(0.0f, 0.0f, 1.0f * animatedAlpha, animatedAlpha)
)
}
alphaAnimator.repeatCount = ValueAnimator.INFINITE
alphaAnimator.duration = 1000
alphaAnimator.start()
val animatorSet = AnimatorSet()
animatorSet.playSequentially(
ObjectAnimator.ofFloat(modelRenderable, "translationY", 0.0f)
ObjectAnimator.ofFloat(modelRenderable, "translationY", 1.5f)
ObjectAnimator.ofFloat(modelRenderable, "translationY", 0.0f)
)
animatorSet.duration = 600
animatorSet.start()
但这给我一个错误 "Could not find property setter method setTranslationY
on com.google.ar.sceneform.rendering.ModelRenderable"。
您应该为附加可渲染对象的节点而不是模型本身设置动画。该节点有一个 setLocalPosition(Vector3) 方法,您可以将其用于 ObjectAnimator。因此,例如,要为模型的位置设置动画,您应该这样做:
ObjectAnimator nodeAnimator = ObjectAnimator.ofObject(
yourNode,
"localPosition",
new Vector3Evaluator(),
Vector3.zero(), new Vector3(0f, 1f, 0f));
然后您可以设置持续时间、重复次数、模式等。您还可以在动画上缩放和旋转模型。