ios - 有关场景套件翻译如何工作和加速度计的问题

标签 ios swift scenekit cmmotionmanager

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

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

最佳答案

Doe,让我看看是否可以帮忙

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

  2. 如果我理解得好的话,是的,就像在 SpriteKit 中一样。它们与其父坐标相关。位置 (1,0,0) 意味着节点(其中心,除非您更改其枢轴(spriteKit 中的 anchor ))将位于其父级 X 轴与其父级原点的距离 1 处)。 对于旋转也是如此,如果 NodeA 在 X 轴上旋转 30 度,并且您在 NodeA 中添加一个在 X 处旋转 20 度的 NodeB,则 NodeA 在 X 处视觉上会旋转 50 度。

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

对于每个刻度(加速度计的更新速率),它都会计算当时施加给设备的加速度是多​​少。这不是增量本身,但如果您存储这些值,则可以轻松计算它。

关于ios - 有关场景套件翻译如何工作和加速度计的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33272670/

相关文章:

iphone - 查找两个位置之间的角度

ios - xmpp 'libxml/xmlversion.h' 在 xcode 7.1 中找不到文件

ios - "input is not a PCH file"-Xcode

ios - 在相机捕获和图像编辑时使用 GPUImage GaussianSelective Blur Filter

swift - 永久设置 alamofire cookie

ios - 如何仅更改一个特定行的高度?

ios - SceneKit:变换纹理以仅填充球体的一部分

c++ - VTK:对齐两个 Actor

ios - 如何在 SceneKit iOS 中更改 3D 对象的高度宽度

ios - 如何在 SceneKit 中反转动画?