2016-04-17 15 views
0

previous questionに続いて、BufferGeometryでモデルを構築していて、transparentフラグがレンダリング順序に影響することを認識しています。透明な素材のオブジェクトは非透明なオブジェクトの後にレンダリングされます。Thee.jsのBufferGeometryのレンダリング順序

また、私は、このthreadから読み取るJSFiddleに実験を行なったし、BufferGeometryで顔のレンダリング順序は、彼らがバッファに指定された順序と同じである実現ではなく、カメラからの距離。 (上記の実験では、まずバッファー内でより近い三角形を指定し、その背後には他のものを隠す)

私の質問は、BufferGeometryで面のレンダリング順序を手動で設定できるかどうかです。 私の場合、建築要素の透明度を動的に変更する必要があるかもしれません。 (私たちはObject3DのrenderOrderを設定することができますと言ってthreadを読んだ。)

ありがとうございました。

答えて

0

顔は、BufferGeometryに表示される順序でレンダリングされます。

シーン要素の透明度を動的に変更する必要がある場合は、別々のジオメトリをそれぞれ独自のマテリアルとペアにすることをお勧めします。

レンダラは、transparent = falseのオブジェクトを最初にレンダリングします。次に、transparent = trueのオブジェクトをレンダリングします。

あなたはおそらく、あなたの透明な材料のための次の設定を使用する場合は、より少ないアーティファクトを持っています:

material.transparent = true; 
material.opacity = 0.5; // or as desired 
material.depthTest = true; // the default 
material.depthWrite = false; // use for transparent materials only 

また、自己透明性は、特に注意が必要です。一例は、半透明の立方体(または建物)である。このような状況でアーチファクトを減らす1つの方法は、オブジェクトを2回レンダリングすることです。最初はmaterial.side = THREE.BackSideで、次にmaterial.side = THREE.FrontSideで再びオブジェクトをレンダリングします。 object.renderOrderを使用すると、オブジェクト間で特定のレンダリング順序を強制できます。

three.js r.75