0

我有一个从 SCNScene 中提取的节点。我有一些关于它的信息,但我对一件事感到困惑 - 如何计算边界框。节点一旦加载到向量 0,0,0 就被定位,使用:

[myNode setPosition: SCNVector3Make(0, 0, 0)];

但是,边界框仍报告 -1 的 min.x。

如果我刚刚将它定位在 0,这怎么可能?此外,我给出的向量值无关紧要,它的 min.x 始终为 -1 - 尽管节点实际上按预期在屏幕上移动。

4

1 回答 1

2

如果没有更多关于场景中的内容以及您正在使用它做什么的更多信息,很难明确回答,但这可能是以下一个或两个问题:

边界框告诉你节点内容的范围,而不是它的位置——例如,如果你有一个 2 个单位宽的立方体位于(0, 0, 0),它的边界框最小和最大角将是(-1, -1, -1)(1, 1, 1)

根据您用来移动节点的技巧,节点本身可能不会改变位置 - SCNActions、CAAnimations 和物理都在节点层次结构的单独副本上工作。(部分是为了支持隐式动画——例如设置position一个节点,它看起来会从当前位置动画到你设置的位置,但你仍然可以读回position它并让它成为你设置的值。 )

您可以使用节点的属性进入这个单独的层次结构presentationNode- 向表示节点询问其边界框,您将看到它的位置/范围受动作/动画/物理影响并且当前呈现。

于 2015-02-06T18:59:10.003 回答