three.jsシーンでオブジェクトを回転させるために、これら2つの関数を使用しています
// Rotate an object around an arbitrary axis in object space
function rotateAroundObjectAxis(object, axis, radians) {
rotationMatrix = new THREE.Matrix4();
rotationMatrix.makeRotationAxis(axis.normalize(), radians);
object.matrix.multiplySelf(rotationMatrix); // post-multiply
object.rotation.getRotationFromMatrix(object.matrix, object.scale);
delete rotationMatrix;
}
// Rotate an object around an arbitrary axis in world space
function rotateAroundWorldAxis(object, axis, radians) {
rotationMatrix = new THREE.Matrix4();
rotationMatrix.makeRotationAxis(axis.normalize(), radians);
rotationMatrix.multiplySelf(object.matrix); // pre-multiply
object.matrix = rotationMatrix;
object.rotation.getRotationFromMatrix(object.matrix, object.scale);
delete rotationMatrix;
}
ここで、rotationMatrixはグローバル変数です。私はJavascriptとWebアプリの開発に不慣れですが、フレームごとにこれらの関数を呼び出すことがあるため、呼び出すたびに新しいオブジェクトが作成されることを心配する必要があることを伝えているようです。これまでのところ問題は発生していませんが、ガベージコレクターが最終的に追いつくことができなくなることを心配する必要がありますか?ここでのdeleteキーワードは、C ++とは異なり、参照のみを削除することを理解しています。これは、各関数の最後で呼び出すときに役立ちますか?また、この機能をより効率的にするために、それ以外にできることはありますか?速度を落としたり、最終的にブラウザがメモリを大量に消費したりすることなく、可能な限り何度も呼び出すことができるようにします。