【问题标题】:How do I rotate an object around only one axis in RealityKit?如何在 RealityKit 中仅围绕一个轴旋转对象?
【发布时间】:2020-04-05 06:07:58
【问题描述】:

我正在尝试围绕它的 z 轴旋转一个立方体,但我找不到方法。

RealityKit 中有没有办法做到这一点?

【问题讨论】:

  • 我不熟悉 RealityKit,但在文档中我看到提到了一个 Transform 组件,它具有四元数形式的旋转属性,大概您可以操纵它。不过,我也没有使用过 RealityKit,所以我只是根据文档进行猜测。
  • 谢谢!正因为如此,我找到了答案

标签: swift rotation augmented-reality arkit realitykit


【解决方案1】:

在 RealityKit 中,至少有三种方法可以围绕单轴旋转对象

在每个示例中,我们逆时针 (CCW) 旋转对象。


第一种方法:

let boxScene = try! Experience.loadBox()

boxScene.steelBox?.orientation = simd_quatf(angle: .pi/4,    /* 45 Degrees */
                                             axis: [0,0,1])  /* About Z axis */


第二种方法:

boxScene.steelBox?.transform = Transform(pitch: 0, 
                                           yaw: 0, 
                                          roll: .pi/4)      /* Around Z axis */

pitchyawroll 是围绕 X、Y 和 Z 轴的旋转,以弧度表示。


第三种方法:

let a: Float = cos(.pi/4)
let b: Float = sin(.pi/4)

let matrix = float4x4([ a, b, 0, 0 ],        /* column 0 */
                      [-b, a, 0, 0 ],        /* column 1 */
                      [ 0, 0, 1, 0 ],        /* column 2 */
                      [ 0, 0, 0, 1 ])        /* column 3 */

boxAnchor.steelBox?.setTransformMatrix(matrix, relativeTo: nil)

旋转矩阵的可视化表示如下:

let a: Float = cos(.pi/4)
let b: Float = sin(.pi/4)

//  0  1  2  3
 ┌              ┐
 |  a -b  0  0  |
 |  b  a  0  0  |
 |  0  0  1  0  |
 |  0  0  0  1  |
 └              ┘

如果您想了解有关旋转矩阵的更多信息,请阅读 this 帖子。

【讨论】:

  • 感谢您的回答!另外:您知道如何使这种旋转动画化吗?
  • 您可以为此使用playAnimation(_:transitionDuration:startsPaused:) 实例方法。另外,请阅读这篇有用的帖子:medium.com/twinkl-educational-publishers/…
  • 非常感谢您抽出宝贵时间。帮了我很多!
  • 嗨,Andy,我阅读了这篇文章并按照教程进行操作,但这篇文章适用于 Reality Composer 及其行为。我实际上是想弄清楚如何在代码中进行旋转,例如动画。你知道怎么做吗?
  • 请创建一个关于动画的新问题。
【解决方案2】:

对于也在搜索此内容的人,您需要使用 transformrotation。 这需要一个 simd_quatf,您可以在其中给出 角度

就我而言,我不得不使用这个:

"object".transform.rotation = simd_quatf(angle: GLKMathDegreesToRadians(90), axis: SIMD3(x: 0, y: 0, z: 1))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-02-10
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2015-01-06
    • 2018-08-02
    • 1970-01-01
    相关资源
    最近更新 更多