java - ARCore – 模型旋转

标签 java android augmented-reality arcore sceneform

我正在 ARCore Android 中工作,我想在单击按钮时旋转 3D 模型。

我已经完成了旋转,但问题是它不会在当前位置旋转,即如果模型移动到平面上的其他位置,它会回到模型投影的初始位置,在这里我们可以看到旋转。我想将我的模型旋转到平面上的任何位置,并且它保留在那里。

这是我的代码

 private void rotateRight(TransformableNode node, AxisClass objAxis, Vector3 pos) {
     node.getRotationController().setEnabled(true);
     node.getScaleController().setEnabled(true);
     node.getTranslationController().setEnabled(false);

     Quaternion rightMoveVector = new Quaternion();
     rightMoveVector = tNode.getLocalRotation();

     Quaternion orientations = new Quaternion();
     Quaternion orientation = Quaternion.axisAngle(new Vector3(pos.x, 1.0f, pos.z), rotateAngle);
     node.setLocalRotation(Quaternion.axisAngle(new Vector3(0.0f, 1.0f, 0.0f), rotateAngle));
     rotateAngle = rotateAngle + 30;
     objAxis.setRotateRight(String.valueOf(rotateAngle));
     objAxis.setY_axis(String.valueOf(Math.toRadians(rotateAngle)));
}

最佳答案

我正在回答我自己的问题,这对某人会有帮助。

对于模型旋转,您必须重写 sceneform android 中的 onupdate 方法。

执行旋转后,您必须设置模型位置,使其保持在原来的位置。

Quaternion q1 = tNode.getLocalRotation();
        Quaternion q2 = Quaternion.axisAngle(new Vector3(0f, 1f, 0f), -2f);
        tNode.setLocalRotation(Quaternion.multiply(q1, q2));
        tNode.setLocalPosition(localPosition);

关于java - ARCore – 模型旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58204140/

相关文章:

java - 如何从 unix 终端运行简单的 MongoDB java 程序

android - 如何找到运行在7英寸或10英寸Tab上的Android应用程序?

swift - Apple ARKit 人脸识别项目 (ARKitFaceExample) 的运行时问题

android - 如何从android中的 Assets 中获取XML数据?

java - 电话间隙 : calling a java function from Javascript

image - 具有巨大数据集的 Logo 识别

camera - 获取由具有已知位置和方向的相机查看的对象的 3D 位置

java - 在最大化我的框架之前 JLabel 不会显示

java - Spring分页和MongoDB切片中包含未知实例的页面/切片

java - 如何将 Java 程序的入口点更改为 C 签名?