0

私は3つのjsでフローティングプレーンを持っています。それは両面で、私のカメラはシーンの周りを移動したり回転したりします。私の質問は、飛行機の位置と回転、およびカメラの位置と回転を考えると、飛行機のどちら側を見ているかをどのように判断できますか?

私の古い解決策はこれです(カメラから飛行機の前後までの距離を確認してください)が、明らかにこれは最良の解決策ではありません。

this.back.matrixWorldNeedsUpdate = true;
this.front.matrixWorldNeedsUpdate = true;

this.d1 = (new THREE.Vector3()).getPositionFromMatrix( this.back.matrixWorld ).distanceTo(cameraSystem.camera.position);
this.d2 = (new THREE.Vector3()).getPositionFromMatrix( this.front.matrixWorld ).distanceTo(cameraSystem.camera.position);

if((this.d1 - this.d2) < 0)'Facing the back Side'
else 'Facing the front Side'

ありがとう!

4

1 に答える 1

2

すばらしい、George と three.js のおかげで、camera look vector を設定して読み取り、このコードは機能します

var planeVector = (new THREE.Vector3( 0, 0, 1 )).applyQuaternion(planeMesh.quaternion);
var cameraVector = (new THREE.Vector3( 0, 0, -1 )).applyQuaternion(camera.quaternion );

if(planeVector.angleTo(cameraVector)>Math.PI/2) 'facing front'
else 'facing back'
于 2013-08-05T14:09:34.070 に答える