2
カメラのアニメーションがあり、2dスプライトシェーダに動きの角度を渡します。私はこれらの2つのベクトルをカメラに投影してから角度を計算する必要があると推測していますが、動作しません。カメラの動きのベクトルの角度を取得する方法
let prevCameraVector = null;
function tick() {
if(prevCameraVector && !prevCameraVector.equals(camera.position)) {
let vector1 = prevCameraVector;
let vector2 = new THREE.Vector3(camera.position.x, camera.position.y, camera.position.z);
vector1.project(camera);
vector2.project(camera);
let angle = vector1.angleTo(vector2);
uniforms.uRotate.value = angle;
}
prevCameraVector = new THREE.Vector3(camera.position.x, camera.position.y, camera.position.z);
}
は何回毎秒あなたは新しい 'Vector3'sをインスタンス化していますか? 1つか2つ作成して再利用してください。また、 'vec.copy(camera.position)'を使うこともできます。 – WestLangley
これは 'requestAnimationFrame'を呼び出します。そうすれば、少しパフォーマンスが低下する可能性があります。あなたのヒントありがとう! – RED