iOS 8 で SceneKit をかなり長い間使用してきましたが、最近、ノードがビューポートに表示されないかどうかを検出する必要がある状況に遭遇しました。オクルージョンカリングは可能な解決策かもしれません。したがって、SceneKit から利用できるオクルージョン カリング オプションはありますか? そうでない場合、試してみたい他の提案は何ですか? ありがとう!
2 に答える
このisNodeInsideFrustum:withPointOfView:
メソッドは、ノードがカメラの視野内にあるかどうかを通知しますが、他のシーン ジオメトリによって遮られているかどうかは通知しません。
オクルージョン テストが必要な場合は、錐台テストを開始することをお勧めします。ノードが視錐台にあることがわかったら、ヒット テストを実行して、間にノードがあるかどうかを確認できます。ヒット テストの結果にターゲット以外のノードが含まれる場合、少なくとも部分的に不明瞭になる可能性があります。
ヒット テストでは極端な詳細 (あるノードのレンダリングされたピクセルが他のノードのピクセルの背後に見えるかどうかなど) は得られませんが、必要なものには十分かもしれません。パラメータを使用し、テストするポイントを選択することで、ヒット テストの感度を少し調整できoptions
ます。たとえば、ターゲット ノードの中心または境界ボックスの角などです。ヒット テストには CPU パフォーマンス コストもかかるため、必要な機能と目標フレーム レートとの間で適切なトレードオフを見つける必要があります。
SCNView は、SCNSceneRenderer プロトコルを介して isNodeInsideFrustum:withPointOfView: を実装します。
特定のカメラからノードが見えるかどうかをテストできます。