2017-07-12 4 views
1

私はSCNViewでSCNSceneをレンダリングしています。私はシーン内でレンダリング/移動するいくつかの* .daeモデルを持っています。SceneKit Culling Plane

私は透明なキューブを持っています。私のモデルの1つが後ろにいくと、モデルがレンダリングされないようにします。現時点では、キューブは透明なので、キューブを通して見ることができます。

透過キューブに適用できるプロパティ/設定/シェーダはありますか?その背後にあるものはレンダリングされません。

例:私の目は緑色の点で

、キューブは青い四角で、私のモデルは赤い円である。しかし、キューブによって隠さ円の一部が紫である...これは実際になります見えない。青い正方形も目に見えません。

Cull

この開発者は、何が必要ありませんオクルージョンシェーダを持っていますが、それはユニティです:https://youtu.be/MK3D91kCKzM

種類よろしく

クリス

+0

代わりに何を見たいですか?スクリーンショットとスケッチが大いに役立ちます。 –

+0

私は必要なものをより良く理解するために画像を追加しました。 – Chris

+0

そこには何かがレンダリングされなければなりません。 「不可視」は色ではありません。透明な立方体によって遮られた赤/紫のボールの部分では、何を描くべきですか?ブラック?白?ボールの背後にある物体?あなたが今持っているもののスクリーンショットを投稿し、それがあなたが望むものとどのように違うのかを記述できますか? –

答えて

7

ここソリューションです

  1. キューブの場合、 constantlightingModelとします。それは一番安いものです。
  2. writesToDepthBuffertrueに、colorBufferWriteMask[](空のオプションセット)に設定されています。こうすると、キューブはデプスバッファに書き込まれますが、画面上には何も描画されません。
  3. キューブのrenderingOrder-1に設定すると、シーン内の他のノードの前に描画されます。これにより、他のオブジェクトの前にキューブが深度バッファに書き込まれ、キューブの背後にある場合に描画されなくなります。
+0

サンプルがありますか? { LET材料= SCNMaterial() material.lightingModel = .constant material.writesToDepthBuffer =真 キューブ= scene.rootNode.childNode(:再帰的に、 "目に見えない" 真withName)を許可すれば :私はこれを試してみましたmaterial.colorBufferWriteMask = [] cube.geometry?materials = [素材] キューブレンダリングオーダー= -1 – Chris

+0

これは、飛行機では機能しませんでしたが、フラットキューブはうまく機能しました! – Chris

+0

「SCNPlane」と同じように正常に動作するはずです。カメラに向き合うように向きが正しいことを確認してください。 – mnuages