SCNNode getBoundingBoxMin

时间:2015-02-06 17:45:00

标签: objective-c scenekit scnnode

我有一个节点,我从SCNScene中提取。我已经获得了一些有关它的信息,但我对一件事情感到困惑 - 如何计算边界框。使用:

将节点加载到向量0,0,0后定位
[myNode setPosition: SCNVector3Make(0, 0, 0)];

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

如果我将它定位在0,怎么会这样呢?此外,我给出的矢量值并不重要,它总是具有-1的最小值 - 尽管节点实际上按预期在屏幕上移动。

1 个答案:

答案 0 :(得分:2)

如果没有关于您的场景中的内容以及您使用它的内容的更多信息,很难明确回答,但它可能是这些问题中的一个或两个:< / p>

边界框会告诉您节点内容的范围,而不是它的位置 - 例如如果您在(0, 0, 0)处放置了2个单位宽的立方体,则其边界框最小和最大角将为(-1, -1, -1)(1, 1, 1)

根据您用来移动节点的技巧,节点本身可能无法更改位置 - SCNAction s,CAAnimation和物理所有工作都在单独的副本上节点层次结构。 (部分这是为了支持隐式动画 - 例如设置节点的position,它似乎从当前位置动画到你设置的位置,但你仍然可以回读{{1}并将它设置为它的值。)

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