【发布时间】:2018-03-15 11:22:42
【问题描述】:
Xcode 中的场景编辑器显示大小但没有单位。尺寸是英寸还是米?
例如,当我选择一个节点时,例如一个盒子,当我在节点检查器中检查它的属性并在“边界框”旁边的“变换”部分检查它的大小时,没有显示任何单位。
该单位似乎与在“语言和区域”首选项窗格(在“高级...”弹出窗口中)中设置的系统测量单位无关,因为节点中的数字不会改变当我在“公制”和“美国”之间切换测量单位时的检查员。
【问题讨论】:
Xcode 中的场景编辑器显示大小但没有单位。尺寸是英寸还是米?
例如,当我选择一个节点时,例如一个盒子,当我在节点检查器中检查它的属性并在“边界框”旁边的“变换”部分检查它的大小时,没有显示任何单位。
该单位似乎与在“语言和区域”首选项窗格(在“高级...”弹出窗口中)中设置的系统测量单位无关,因为节点中的数字不会改变当我在“公制”和“美国”之间切换测量单位时的检查员。
【问题讨论】:
尺寸以米为单位。请参阅 SceneKit 文档:
SceneKit 物理模拟中的所有值均使用国际单位制 (SI):质量单位为千克;力、冲量和扭矩的单位是牛顿、牛顿-秒和牛顿-米; 节点位置和大小的距离单位是米。
【讨论】:
你从 Apple 得到的答案是正确的,但也不完整。
在诸如 SceneKit 之类的 3D 场景图模型中,长度单位对于大多数用途来说并不重要。它可以是完全任意的,只要你的单位使用一致,单位的选择和使用对视觉效果没有影响。例如,以下场景看起来完全一样:
最重要的是,场景图中的每个节点都可以对其子节点应用比例。因此,您可以拥有一个宽度设置为 1.0 单位的立方体,以及一个距离设置为 3.0 单位的相机,并将这两者作为比例为 0.91 的节点的子节点......在这种情况下,即使其他地方还有其他东西在“1.0 单位”表示一米的场景中,立方体和相机对于“1.0 单位”的含义不一致。 (对他们来说,这是一个美国码。)因此,SceneKit(和 Xcode 的场景版 UI)中的大多数基于长度的属性都没有标记它们的单位,因为它们的单位是相对于其父级的(可能是任意的)比例的节点。
场景空间单元的含义在几个地方开始变得重要:
如果您开始使用物理模拟。当质量、力、能量和摩擦开始涉及时,长度单位和其他量的单位之间的关系就变得很重要。物理引擎的其余部分(质量、力、冲量)使用 SI 单位(千克、牛顿、牛顿秒),所以为了简单起见,我们只假设长度(以及扩展的面积、体积和速度)也一样.
如果您需要渲染场景以使结果看起来与另一个 3D 空间对齐,例如在 AR 或 VR 中。与 ARKit 一起使用时,SceneKit 长度/距离以米为单位,因此渲染的图像看起来就像 ARKit 所测量的真实世界。
所以,是的——你从 Apple 那里得到的答案是正确的......在最广泛的用例中,最好假设 SceneKit 空间的未标记单位是米,并进行相应的设计。但重要的是要知道为什么,什么时候该假设适用,什么时候它只是一个任意假设。
【讨论】: