我在pointofview中有一个指向节点的箭头.我希望只有在屏幕中看不到节点时才会出现该箭头.
我找到了一个方法:
projectPoint 8的节点边界框的角落,并检查是否:
1)任何点位于屏幕内
2)点的任何边缘位于屏幕内
3)任何平面位于屏幕内
但它似乎非常困难和混乱.
那么有没有更简单的方法呢?
Dav*_*ist 13
您可以使用isNode(_:insideFrustumOf:)检查给定节点的边界框是否与另一个节点的视点的视锥体相交,以指示该节点是否可见.
这是一个实例方法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.
}
Run Code Online (Sandbox Code Playgroud)
请注意,如文档所述,这不执行遮挡测试.这意味着完全出现在另一个节点后面的节点(即完全被遮挡)可能不可见但仍位于视锥体内.
| 归档时间: |
|
| 查看次数: |
2056 次 |
| 最近记录: |