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).

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

您使用节点的 presentationNode 属性 进入这个单独的层次结构 — 向表示节点询问其边界框,您将看到其 position/extent 受 actions/animations/physics 并且当前呈现。