【发布时间】:2014-11-28 02:30:17
【问题描述】:
SceneKit 中的节点有一个边界框,它由两个点组成:一个是节点所有坐标中最小的,另一个是节点所有坐标中最大的。这些坐标在节点自己的坐标系中,我看不到如何在不同的坐标系中找到边界框。
例如,假设我们有一个具有这样的单元盒几何形状的节点,其轴由. 或: 标记:
:
A---------+
| : |
..|....:....|...
| : |
+---------B
:
在节点自己的坐标系中,A为(-0.5,-0.5,-0.5),B为(0.5,0.5,0.5)。如果盒子在世界坐标系中的位置为 (45, 0, 0),则 A 将是 (44.5, -0.5, -0.5),B 将是 (45.5, 0.5, 0.5)。我们可以通过调用-[SCNNode getBoundingBoxMin:max:] 然后调用-[SCNNode convertPosition:toNode:] 来获取这些值。
但是如果节点围绕 Z 轴旋转 45°,那么在世界坐标系中,它看起来像这样呢?
A
/ \
/ \
...+.........+...
\ /
\ /
B
如果你在这种情况下调用-[SCNNode convertPosition:toNode:],你会得到一个没有宽度的乱七八糟的边界框!
有没有办法解决这个问题?
【问题讨论】:
标签: scenekit