2017-03-24 5 views
0

シーンにテキストスパイを追加すると、透明なプレーンがスプライトを隠すことがわかりましたが、3Dオブジェクトを隠すことはありませんでした。 これはなぜ、どのようにスプライトを透明な平面の下に見えるようにするのですか?Three.js - 透明なプレーンがスプライトを隠している

// transparent plane 
geometry = new THREE.PlaneGeometry(200, 200, 200); 
material = new THREE.MeshBasicMaterial({ 
      color: 0xa6cfe2, 
      side: THREE.DoubleSide, 
      transparent: true, 
      opacity: 0.5, 
      depthFunc: THREE.LessDepth, 
     }); 

しかし、それは何の仕事が良いようだ:PNG example click here

私の飛行機を見に

です。 だから、そのexamleのために、私は問題を把握するために、フィドルにいくつかのコードを書いた: look fidddle example

+0

three.jsまた、私はスタックをチェックし、スプライトで例を見つける(http://stackoverflow.com/questions/19046972/three-js-cannot-view-a-sprite-through-a-mesh-with-transparency)しかし、私はそれが私のためには良くないだろう次の理由により、プロジェクト(https://github.com/VKIU/ProgressTrackingにリンク): - 私たちは15以上のスプライトを持っています。 - カメラの位置をcamera.set(x、y、z)のように変更し、2台のカメラと2つのシーンを作成する場合は、最初のシーンから2番目のシーンまで(スプライトとスプライトの場合は15個のスプライト+ rotation ...) – Gudsaf

答えて

1

three.js、まず透明なオブジェクト、そして最後にスプライトを不透明なオブジェクトをレンダリングします。あなたのスプライトは他のオブジェクトと同様に深度バッファの影響を受けます。

あなたはデプスバッファへの書き込みから、あなたの透明なオブジェクトを防ぐために、このパターンを使用することができます。

// transparent plane 
geometry = new THREE.PlaneGeometry(200, 200, 1, 1); 

material = new THREE.MeshBasicMaterial({ 
    color: 0xa6cfe2, 
    side: THREE.DoubleSide, 
    transparent: true, 
    opacity: 0.5, 
    depthWrite: false 
}); 

更新フィドル:https://jsfiddle.net/vyLc6roq/2/

r.84

+0

これは私が助けたいと思っていない、私はちょうど透明な平面の下にスプライトを描画し、 "透明な平面の下で"、飛行機の後ろではないように見えるそれを保存する必要があります。赤い立方体のように。 – Gudsaf

関連する問題