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