当前位置: 首页 > 知识库问答 >
问题:

ARcore:如何围绕其Y轴旋转对象?

濮丰
2023-03-14

我想知道如何围绕它的Y轴旋转一个物体。

例如,我想旋转谷歌示例应用程序hello\u ar\u java的droid机器人https://github.com/google-ar/arcore-android-sdk/tree/master/samples/hello_ar_java围绕其Y轴,角度为alpha。

共有3个答案

韩弘壮
2023-03-14

我用科特林来回答。

使用四元数进行旋转以避免万向锁。一个常见的四元数规则是浮点数xyzw的平方根应始终等于1

sqrt((x * x) + (y * y) + (z * z) + (w * w)) = 1

要逆时针旋转立方体,请使用以下代码:

var value: Float = 5.0

override fun onLeft(value: Float) {
    cubeNode.apply {
        Log.d("left", value.toString())
        localRotationCCW = Quaternion.axisAngle(Vector3(0.0f, 1.0f, 0.0f), value)
    }
} 

要按时钟方向旋转立方体,请使用以下代码:

var value: Float = 5.0

override fun onRight(value: Float) {
    cubeNode.apply {
        Log.d("right", value.toString())
        localRotationCW = Quaternion.axisAngle(Vector3(0.0f, 1.0f, 0.0f), -value)
    }
}

希望这有帮助。

孔运良
2023-03-14

只是以一种更简单的方式实现了这一点,尽管这不能正确处理帧速率增量,但它可能是一个有用的开端。在扩展AnchorNode的类中,我在类中定义了新节点,使其可用:

private Node myNode = null;

然后覆盖onUpdate,如下所示:

@Override
public void onUpdate(FrameTime frameTime) {
    super.onUpdate(frameTime);
    if (myNode!=null){
    Quaternion q1 = myNode.getLocalRotation();
    Quaternion q2 = Quaternion.axisAngle(new Vector3(0, 1f, 0f), .2f);
    myNode.setLocalRotation(Quaternion.multiply(q1, q2));
    }
}
孟豪
2023-03-14

我最近不得不做类似的事情。在对象渲染器的绘制方法中,您可以添加:

    Matrix.translateM(mModelMatrix, 0, x, y, z);
    Matrix.rotateM(mModelMatrix, 0, rotationAngle, 0f, 1f, 0f);
    Matrix.translateM(mModelMatrix, 0, -x, -y, -z);
 类似资料:
  • 我有一个球员(绿色),我想让他左右旋转。 这可以通过在其局部Y轴上旋转来轻松实现。然而,问题是播放器可能会沿其局部X轴旋转。这是一张草图: 以下是从顶部看到的视图: 我需要沿红线旋转播放器。我需要这样做,不管他现在在X轴上有什么旋转。(玩家像超人一样飞行,见第一张图片) 通过使用父对象可以很容易地解决此问题,但这在我当前的设置中是不可能的。我当前使用的代码在局部旋转时会出现奇怪的旋转: 如何在全局

  • 我在下面有一个类,我将其附加到一个对象上,以使其围绕其轴旋转。我把雪碧的枢轴通过检查员送来了。 这正是我想要的效果,但是我遇到的问题是,每当我触摸并拖动它,然后再次触摸并拖动它,它就会捕捉到一个新的位置。 我想让它做的是,当它旋转,然后再次旋转时,精灵保持其相同的旋转,而不是捕捉到一个新的位置,我想精灵的角度重置为0。接下来,我想让角度持续旋转。所以如果我朝正方向旋转,角度应该在正方向上不断增加,

  • 嗨,我正在尝试实现一个带有旋转的opengl程序 以下代码仅供参考:

  • 我的屏幕上有一个旋转和平移的对象,但是我有两个关于z轴旋转的问题。解释起来有点棘手,所以我上传了两个视频来描述每个问题。 1) 反向旋转:在绕x轴旋转对象后,z轴旋转将被反向,并且应该如此。 2)错误的Z轴旋转:同样,在围绕x轴旋转物体后,我试图围绕z轴旋转物体,旋转导致不同的轴旋转。 我相信视频很好地描述了这些问题。 编辑:更新#1 好的,我想我找到了解决方案,就是只绕Z轴旋转相机,然后对模型本

  • 我尝试绕全局y轴旋转对象(基本上,无论当前方向如何,都围绕0,1,0偏航)。我想给你看一张照片,但是声誉。。。我想绕全局轴而不是对象的局部轴旋转偏航。例如,如果我通过俯仰稍微倾斜一个长方体,然后尝试旋转偏航,它将以倾斜的角度而不是直线旋转长方体,就好像长方体根本没有倾斜一样。 每个对象将其位置和旋转存储在矩阵中,每个更新调用都会更新该矩阵。旋转的代码看起来是这样的: 其中,位置是每次更新都会平移和

  • 我试图旋转一个立方体,这样向下拖动总是绕着世界X轴旋转对象,而向一侧拖动总是绕着世界Y轴旋转对象,无论对象如何旋转。我看到了这个例子,它实现了我想要的准确行为:https://jsfiddle.net/MadLittleMods/n6u6asza/ 这是我遇到麻烦的jsFiddle代码:http://jsfiddle.net/9sqvp52u/ 我看到了这个stackoverflow答案:Open