0

ここに私のテストアプリケーション inthree.js- http://zheden.elitno.net/があります

キューブは 2 つあり、緑が上のキューブです。「Cube 2」(黄色の内側のキューブ)のチェックを外すと見えなくなります。そして、カメラを回転させて回転させた後、「Cube 2」をチェックバックすると外側になります。すべての回転角度で再現するわけではありません。

「renderer.sortObjects = false」を追加すると、問題が修正されました。しかし、この行動の理由を教えてください。レンダラーは、位置に基づいてオブジェクトを並べ替えます。一部のオブジェクトが透明な場合、レンダリングの順序が変更されるのはなぜですか? その位置は変更されていません。

これは WebGL の透過テクスチャの動作に関連していますか?

ありがとう、ジェーニャ

4

1 に答える 1

3

デモには透明なオブジェクトはなく、不透明なオブジェクトのみです。可視性を変更しています。

WebGLRendererカメラからの距離に基づいてオブジェクトを並べ替え、並べ替えられた順序でオブジェクトをレンダリングします。不透明なオブジェクトを前から後ろにレンダリングします。

レンダリングの順序は、2 つのオブジェクトがカメラから同じ距離にある場合に並べ替えアルゴリズムがどのように関係を断ち切るかによって変わることがあります。

ただし、可視性をオフにしてから再度オンに切り替えたときに、レンダリング順序が必ずしも変更されるとは限りません。変化する可能性があるのは、カメラを移動したときの丸めにより、最下位桁の深度バッファーまでの距離です。したがって、2 番目のオブジェクトがレンダリングされる場合とレンダリングされない場合があります。

まったく同じ位置に、まったく同じサイズと向きの 2 つの立方体があります。そんなことしたらダメ。あらゆる種類のレンダリングの問題を引き起こす可能性があります。最も一般的なのはちらつきです。

three.js r.58

于 2013-07-08T15:31:39.220 に答える