webglレンダラーを使用して、選択して移動できる複数の3Dオブジェクトを配置するシーンを作成しました。ただし、オブジェクトを選択したときに、その軸を描画したいと思います。オブジェクトの中心に線を引くことは問題ありませんが、他のオブジェクトが前にある場合でも表示されるように、シーン上の他のオブジェクトの前に線を表示したいと思います-Blenderのように。
renderDepthパラメータを試してみましたが、使い方がわからず、結果が得られませんでした。
ご協力ありがとうございました。
webglレンダラーを使用して、選択して移動できる複数の3Dオブジェクトを配置するシーンを作成しました。ただし、オブジェクトを選択したときに、その軸を描画したいと思います。オブジェクトの中心に線を引くことは問題ありませんが、他のオブジェクトが前にある場合でも表示されるように、シーン上の他のオブジェクトの前に線を表示したいと思います-Blenderのように。
renderDepthパラメータを試してみましたが、使い方がわからず、結果が得られませんでした。
ご協力ありがとうございました。
一部のオブジェクトを「上」または「前」にレンダリングする場合、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