質問

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

私はRenderDepth Paramでプレーしようとしましたが、私はそれを使う方法を理解していたとは思わない。

あなたの助けをありがとうございました。

役に立ちましたか?

解決

いくつかのオブジェクトが "上に"上にレンダリングさせたい場合、または "前の"では、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つのシーンを1つだけ持つことですが、このパターンを使用してください:

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

メッシュが単一の素材を持っている場合は、「上に」レンダリングします。

3.js R.85

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top