我有一个相邻的 2 个 SCNNode(1 个大盒子和 1 个小盒子)。
我旋转它的父级,这样小盒子有时在相机中不再可见,是否有可能知道小盒子何时不再可见,因为它在大盒子后面?
我目前的结构
Scene - RootNode
- SCNNode (camera)
- SCNNode (parent)
- SCNNode (Big box)
- SCNNode (Small box)
您正在寻找的是遮挡测试,它不是 SceneKit 提供的 API 来做的。在一般情况下,这是一个大毛病。
不过,由于您只是在使用盒子,因此有相当不错的方法来伪造它。如果小盒子隐藏在大盒子后面,那么从相机位置到小盒子八个角的线将与大盒子相交。
所以:
在包含两者的节点(根节点)的坐标系中获取相机和每个角的位置。对于盒子的角,您可以获取盒子节点的位置并进行数学运算以获得角,或者使用 SCNBoundingVolume
协议(protocol)。您可能需要使用一些 SCNNode
坐标转换方法来获取同一空间中的所有点。
对于每个角,使用 ptions:" rel="noreferrer noopener nofollow">hitTestWithSegmentFromPoint:toPointptions:
进行射线测试方法。
如果所有八个 HitTest 都返回大框,则小框完全隐藏在大框后面。
关于ios - SceneKit,测试 SCNNode 是否完全可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29799485/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |