Xcode中场景编辑器使用什么单位?

问题描述:

Xcode中的场景编辑器显示尺寸但没有单位。它是英寸尺寸还是米尺寸?Xcode中场景编辑器使用什么单位?

例如,当我选择一个节点时,例如,一个盒子,当我在Node Inspector中检查它的属性,并在“Bounding Box”旁边的“Transforms”部分检查它的大小时,不显示任何单位。

Bounding Box in the Scene Editor in Xcode

单位似乎并不涉及到了在“语言&地区”偏好设置中设置系统的测量单位(在“高级...”酥料饼),因为数字唐当我在“公制”和“美国”之间切换测量单位时,在节点检查器中不会发生变化。

尺寸以米为单位表示。请参阅SceneKit文档:

SceneKit的物理模拟中的所有值都使用国际单位制(SI):质量单位是千克;力,脉冲和扭矩的单位是牛顿,牛顿秒和牛顿米;和节点位置和大小的距离单位是计量器

+0

从苹果获得有关显示丢失单位的反馈意见:“SceneKit中的基本单位始终是计量表,不能更改,因此您始终可以认为它是事实。” –

你从苹果那里得到的答案是正确的,但也是不完整的。

在诸如SceneKit的3D场景图模型中,长度单位对于大多数目的而言并不重要。它可以是完全任意的,只要你的单位一直使用,单位的选择和使用对视觉效果没有影响。例如,下面的场景看起来都如出一辙:

  • 将1.0米宽的立方体,远离相机3.0米
  • 一个0.1米宽的立方体,远离0.3米从相机
  • 0.91米多宽的立方体,远离相机2.73米
  • 一个1.0英尺宽的立方体,从相机
  • 一个6.28 frobnitz宽立方体,18.84 frobnitz远离相机(你如何转换frobnitz到米?隐而不宣3.0英尺远没关系!)

除此之外,场景图中的每个节点都可以对其子节点应用缩放比例。因此,您可以将宽度设置为1.0单位的立方体和设置为3.0单位的摄像机设置为相距3.0的单位,并且将这两个单位都视为规模为0.91的节点的子节点,即使在其他地方还有其他地方在“1.0单位”是指1米的场景中,立方体和相机不同意“1.0单位”的含义。 (对于他们来说,这是一个美国院子)。因此,SceneKit(和Xcode的场景编辑UI)中的大多数基于长度的属性都不标记它们的单位,因为它们的单位与其父级(可能是任意的)节点。

有几个地方的场景空间单位的意义开始发挥作用:

  1. 如果你开始使用物理模拟。当质量,力量,能量和摩擦开始卷入其中时,长度单位与其他数量单位之间的关系变得重要。物理引擎的其余部分(质量,力量,冲动)使用SI单位(千克,牛顿,牛顿秒),所以为了简单起见,我们假设长度(以及延伸,面积,体积和速度)也一样。

  2. 如果您需要渲染场景以使结果看起来与另一个3D空间对齐,如在AR或VR中。当与ARKit一起使用时,SceneKit长度/距离以米为单位,以便渲染的图像看起来像ARKit所测量的那样居住在真实世界中。

所以,是的 - 你从苹果公司得到的答案是正确的......在最广泛的使用案例,这是最好的假设的SceneKit空间未标记的单位是米,并设计相应。但重要的是要知道为什么,什么时候该假设适用,什么时候只是一个任意假设。