2

前の質問に続いて、BufferGeometry でモデルを構築する作業を行っていますが、transparentフラグがレンダリングの順序に影響することに気付きました。透明なマテリアルを持つオブジェクトは、透明でないオブジェクトの後にレンダリングされます。

また、私はこのスレッドを読み、 JSFiddleで実験を行い、BufferGeometry の面のレンダリング順序がバッファーで指定されている順序と同じであるが、カメラからの距離ではないことに気付きました。(上記の実験では、バッファ内で最初により近い三角形を指定し、その背後にある他の三角形を覆い隠します。)

だから私の質問は: BufferGeometry で顔のレンダリング順序を手動で設定することは可能ですか? 私の場合、建物要素の透明度を動的に変更する必要があるかもしれません。( Object3Dを設定できるというスレッドを読みました。)renderOrder

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

4

1 に答える 1

1

顔は、 に表示される順序でレンダリングされます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.FrontSideobject.renderOrderオブジェクト間で特定のレンダリング順序を強制するために使用できます。

three.js r.75

于 2016-04-17T03:32:41.577 に答える