31

webglレンダラーを使用して、選択して移動できる複数の3Dオブジェクトを配置するシーンを作成しました。ただし、オブジェクトを選択したときに、その軸を描画したいと思います。オブジェクトの中心に線を引くことは問題ありませんが、他のオブジェクトが前にある場合でも表示されるように、シーン上の他のオブジェクトの前に線を表示したいと思います-Blenderのように。

renderDepthパラメータを試してみましたが、使い方がわからず、結果が得られませんでした。

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

4

1 に答える 1

82

一部のオブジェクトを「上」または「前」にレンダリングする場合、1つのトリックは、2つのシーンを作成することです。最初のシーンは通常のシーンで、2番目のシーンには上に配置するオブジェクトが含まれます。

まず、

renderer.autoClear = false;

次に、2つのシーンを作成します

var scene = new THREE.Scene();
var scene2 = new THREE.Scene();

通常どおり、オブジェクトを最初のシーンに追加し、上に配置するオブジェクトを2番目のシーンに追加します。

次に、render()関数で次のようにします。

renderer.clear();
renderer.render( scene, camera );
renderer.clearDepth();
renderer.render( scene2, camera );

これにより、最初のシーンがレンダリングされ、深度バッファがクリアされてから、2番目のシーンが上にレンダリングされます。

ここにフィドルがあります:http://jsfiddle.net/d9Lzdkkr/


編集:別の解決策は、シーンを1つだけにすることですが、次のパターンを使用します。

mesh.renderOrder = 999;
mesh.onBeforeRender = function( renderer ) { renderer.clearDepth(); };

メッシュに単一のマテリアルがある場合、「上」にレンダリングされます。

three.js r.85

于 2012-10-01T02:39:40.427 に答える