SCNNode getBoundingBoxMin
SCNNode getBoundingBoxMin
我有一个从 SCNScene 中提取的节点。我有一些关于它的信息,但我对一件事感到困惑 - 如何计算边界框。节点一旦加载到向量 0,0,0 就定位,使用:
[myNode setPosition: SCNVector3Make(0, 0, 0)];
但是,边界框仍然报告 min.x 为 -1。
如果我只是将它定位在 0,怎么会这样?此外,无论我给出什么矢量值,它总是具有 -1 的 min.x - 尽管节点实际上按预期在屏幕上移动。
如果没有关于场景中的内容以及您正在使用它做什么的更多信息,很难做出明确的回答,但这可能是以下一个或两个问题:
边界框告诉您节点内容的范围,而不是它的位置——例如如果您在 (0, 0, 0)
处有一个 2 个单位宽的立方体,它的边界框最小角和最大角将为 (-1, -1, -1)
和 (1, 1, 1)
.
根据您用来移动节点的技巧,节点本身可能不会改变位置 — SCNAction
s、CAAnimation
s 和物理学都在单独的副本上工作节点层次结构。 (部分原因是为了支持隐式动画——例如设置节点的 position
,它会从当前位置动画到你设置的位置,但你仍然可以读回 position
和让它成为您设置的值。)
您使用节点的 presentationNode
属性 进入这个单独的层次结构 — 向表示节点询问其边界框,您将看到其 position/extent 受 actions/animations/physics 并且当前呈现。
我有一个从 SCNScene 中提取的节点。我有一些关于它的信息,但我对一件事感到困惑 - 如何计算边界框。节点一旦加载到向量 0,0,0 就定位,使用:
[myNode setPosition: SCNVector3Make(0, 0, 0)];
但是,边界框仍然报告 min.x 为 -1。
如果我只是将它定位在 0,怎么会这样?此外,无论我给出什么矢量值,它总是具有 -1 的 min.x - 尽管节点实际上按预期在屏幕上移动。
如果没有关于场景中的内容以及您正在使用它做什么的更多信息,很难做出明确的回答,但这可能是以下一个或两个问题:
边界框告诉您节点内容的范围,而不是它的位置——例如如果您在 (0, 0, 0)
处有一个 2 个单位宽的立方体,它的边界框最小角和最大角将为 (-1, -1, -1)
和 (1, 1, 1)
.
根据您用来移动节点的技巧,节点本身可能不会改变位置 — SCNAction
s、CAAnimation
s 和物理学都在单独的副本上工作节点层次结构。 (部分原因是为了支持隐式动画——例如设置节点的 position
,它会从当前位置动画到你设置的位置,但你仍然可以读回 position
和让它成为您设置的值。)
您使用节点的 presentationNode
属性 进入这个单独的层次结构 — 向表示节点询问其边界框,您将看到其 position/extent 受 actions/animations/physics 并且当前呈现。