【问题标题】:SceneKit, test if SCNNode completely visibleSceneKit,测试 SCNNode 是否完全可见
【发布时间】:2015-06-30 05:23:01
【问题描述】:

我有一个相邻的 2 个 SCNNode(1 个大盒子和 1 个小盒子)。

我旋转它的父对象,这样小盒子有时在相机中不再可见,是否有可能知道小盒子何时不再可见,因为它在大盒子后面?

我目前的结构

Scene - RootNode 
           - SCNNode (camera)
           - SCNNode (parent)
                - SCNNode (Big box)
                - SCNNode (Small box)

【问题讨论】:

    标签: ios scenekit scnnode


    【解决方案1】:

    您正在寻找的东西称为遮挡测试,它不是 SceneKit 提供的 API 来做的。在一般情况下,这是一个毛茸茸的大问题。

    不过,由于您只是在使用盒子,因此有相当不错的方法来伪造它。如果小盒子隐藏在大盒子后面,那么从相机位置到小盒子八个角的线将与大盒子相交。

    所以:

    1. 在包含两者的节点(根节点)的坐标系中获取相机和每个角的位置。对于框角,您可以获取框节点的位置并进行数学运算以获取角,或使用SCNBoundingVolume 协议。您可能需要使用一些SCNNode 坐标转换方法将所有点都放在同一个空间中。

    2. 对于每个角,使用hitTestWithSegmentFromPoint:toPoint:options: 方法进行射线测试。

    3. 如果所有 8 个命中测试都返回大框,则小框完全隐藏在大框后面。

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 2019-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      相关资源
      最近更新 更多