gpt4 book ai didi

android - 如何在 ARCore Sceneform 中为节点的旋转设置动画

转载 作者:行者123 更新时间:2023-11-29 14:29:47 43 4
gpt4 key购买 nike

我知道 ARCore 尚不支持步行等 3D 动画,但我如何为节点的旋转设置动画?

我知道我可以设置 LocalRotation 或 WorldRotation,但如何以流畅的方式连续制作此动画?

最佳答案

最简单的方法是使用 Android Property Animation .这样做的一个例子是 Sceneform 示例“Solar System”。看看RotatingNode .这会围绕其轴旋转节点。

首先,它创建一个 ObjectAnimator它使用 LinearInterpolation 设置围绕一个圆的 4 个点之间的旋转。

private static ObjectAnimator createAnimator() {
// Node's setLocalRotation method accepts Quaternions as parameters.
// First, set up orientations that will animate a circle.
Quaternion orientation1 = Quaternion.axisAngle(new Vector3(0.0f, 1.0f, 0.0f), 0);
Quaternion orientation2 = Quaternion.axisAngle(new Vector3(0.0f, 1.0f, 0.0f), 120);
Quaternion orientation3 = Quaternion.axisAngle(new Vector3(0.0f, 1.0f, 0.0f), 240);
Quaternion orientation4 = Quaternion.axisAngle(new Vector3(0.0f, 1.0f, 0.0f), 360);

ObjectAnimator orbitAnimation = new ObjectAnimator();
orbitAnimation.setObjectValues(orientation1, orientation2, orientation3, orientation4);

// Next, give it the localRotation property.
orbitAnimation.setPropertyName("localRotation");

// Use Sceneform's QuaternionEvaluator.
orbitAnimation.setEvaluator(new QuaternionEvaluator());

// Allow orbitAnimation to repeat forever
orbitAnimation.setRepeatCount(ObjectAnimator.INFINITE);
orbitAnimation.setRepeatMode(ObjectAnimator.RESTART);
orbitAnimation.setInterpolator(new LinearInterpolator());
orbitAnimation.setAutoCancel(true);

return orbitAnimation;
}

接下来,它开始动画:

  orbitAnimation = createAnimator();
orbitAnimation.setTarget(this);
orbitAnimation.setDuration(getAnimationDuration());
orbitAnimation.start();

关于android - 如何在 ARCore Sceneform 中为节点的旋转设置动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52392333/

43 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com