有关场景套件翻译如何工作以及加速度计的问题

Questions about how scene kit translations work, and accelerometer

  1. 我过去做过一点点 3d 图形。当您移动或旋转 Scene Kit 精灵时,它会自动更新其平移矩阵,还是您必须自己制作?
  2. "position" 和 "eulerAngles" 都是……绝对的属性。
    • 例如,如果我在 sprite kit 中并将平移设置为 (1, 0),它将位于相对于原点的那个点。
    • 如果我将 z 轴旋转设置为 90,它将旋转 90 度。
    • 如果我增加翻译(使用 +=)x,它将开始排成一行。
    • zRotation 也一样,如果增加它会旋转。在场景工具包中,如果我对平移和欧拉角值做类似的事情,它们会做同样的事情吗?
  3. 还有加速度计到底在测量什么,比如某段时间内的运动量?所以基本上是设备所在的两个同时点之间的增量。

是的,这个问题确实很宽泛,但是最好把它们放在这里,然后分散在三个小帖子中。

母校,让我看看能不能帮上忙

  1. 翻译矩阵?它有一个 TRANSFORM 矩阵,包括平移、缩放和旋转,是的,当您更改这 3 个中的一个时,它会自动更新,反之亦然。

  2. 如果我理解的很好,是的,就像在 SpriteKit 中一样。它们与其父坐标相关。位置 (1,0,0) 意味着节点(它的中心,除非你改变它的枢轴(spriteKit 中的 anchorPoint))将沿着其父节点的 X 轴与其父原点的距离为 1)。 这同样适用于旋转,如果 NodeA 在 X 轴上旋转 30 度,并且您在 NodeA 中添加一个在 X 轴上旋转 20 度的 NodeB,则 NodeA 在 X 轴上视觉上会旋转 50 度。

  3. 加速度计测量在特定时刻在设备的三个轴上给予设备的加速力。它的单位不是 [m^2/s],而是 [Gravity/s](大约是 [10m^2/s])。一个重要的细节是,该度量也包括重力加速度。 因此,如果您尝试测量垂直于地面的设备的加速度,您会期望 (0, 0, -1)(或 0,0,1,如果倒置)。 将设备平放在地上,它会是 (0, 1or-1, 0) (取决于屏幕是面向地面还是面向天花板)

对于(加速度计更新率的)每个刻度,它计算当时施加给设备的加速度是多​​少。这不是 delta 本身,但如果您存储这些值,它可以很容易地计算出来。