0

私は数週間three.jsで遊んでいますが、レイキャスティングに矛盾はほとんどありません。これは、私が遭遇したバグの 1 つを示す単純化されたバージョンです。

http://jsfiddle.net/eMrhb/12/

たとえば、 TrackBallControlをさらに使用するために、カメラが球メッシュに追加されます。

scene.add(mesh);    
mesh.add(camera);

球体を数回クリックしてコンソールを開くと、光線メッシュの間に予想される交点が表示されません。

カメラをシーン ( http://jsfiddle.net/eMrhb/9/ ) に追加すると、問題が解決します。

scene.add(mesh);    
scene.add(camera);

しかし、ニーズに合わせて、シーン オブジェクトとカメラの間にもっと複雑な階層を使用することもできます。

これは制限ですか?もしそうなら、私が使用できる回避策はありますか?

4

1 に答える 1

0

はい、これは修正可能です。

カメラが回転または平行移動する別のオブジェクトの子である場合、レイ キャスティングで別のパターンを使用する必要があります。

このおなじみのパターンの代わりに:

var ray = new THREE.Ray( camera.position, vector.subSelf( camera.position ).normalize() );

代わりにこのパターンを使用する必要があります。

var position = camera.matrixWorld.getPosition().clone();
var ray = new THREE.Ray( position, vector.subSelf( position ).normalize() );

three.js r.53

于 2012-12-14T15:12:52.020 に答える