Ios 如何知道节点在屏幕上是否可见?

Ios 如何知道节点在屏幕上是否可见?,ios,scenekit,Ios,Scenekit,我有一个箭头指向一个节点。我希望该箭头仅在节点在屏幕上不可见时显示 我找到了一种方法:投影节点边界框的8个角并检查: 1) 任何点位于屏幕内 2) 点的任何边缘位于屏幕内部 3) 任何平面位于屏幕内 但它看起来非常大、坚硬、凌乱 那么有没有更简单的方法呢 可以使用来检查给定节点的边界框是否与另一节点的视点相交,以指示该节点是否可见 它是SCNSceneRendered上的一个实例方法,这意味着它在SCNView上可用: if let pointOfView = sceneView.pointOf

我有一个箭头指向一个节点。我希望该箭头仅在节点在屏幕上不可见时显示

我找到了一种方法:
投影节点边界框的8个角并检查:
1) 任何点位于屏幕内
2) 点的任何边缘位于屏幕内部
3) 任何平面位于屏幕内

但它看起来非常大、坚硬、凌乱

那么有没有更简单的方法呢

可以使用来检查给定节点的边界框是否与另一节点的视点相交,以指示该节点是否可见

它是
SCNSceneRendered
上的一个实例方法,这意味着它在
SCNView
上可用:

if let pointOfView = sceneView.pointOfView {
    let isMaybeVisible = sceneView.isNode(yourNode, insideFrustumOf: pointOfView)
    // `yourNode` is in the scene's view frustum and might be visible. 
}

请注意,如文件所述,这不会执行遮挡测试。这意味着完全出现在另一个节点后面(即完全遮挡)的节点可能不可见,但仍在视锥体内。

据我所知并非如此。但这一点并不难。只需为自己编写一个扩展即可,这样您就可以调用
scnNode.isOnScreen
或类似的功能。请查看帮助。让我们看看是否有更简单的解决方案。我只是试着从做一些我不太擅长的数学,从点和东西中找出线。他发明了一种魔法。您为我节省了几行代码和令人头痛的数学知识,但在某些旋转中,节点出现了一些问题。使用node.presentation解决了此问题。您在哪里执行此操作?每秒钟调用一个方法并在其中检查它?N马克怎么样?