私は Three.js を使用しており、シーンからオブジェクトを取得し、それを新しいオブジェクトに置き換えたいと考えていますが、削除したオブジェクトと同じ回転になります。
削除するオブジェクトの回転を記録し、この関数を使用して新しいオブジェクトの回転を設定します。
rotateToWorldAxis = function(object, xradians, yradians, zradians) {
axisX = new THREE.Vector3(0, 1, 0);
axisY = new THREE.Vector3(1, 0, 0);
axisZ = new THREE.Vector3(0, 0, 1);
rotationMatrix = new THREE.Matrix4();
rotationMatrix.setRotationAxis(axisX.normalize(), xradians)
object.matrix = rotationMatrix;
object.rotation.setRotationFromMatrix(object.matrix);
rotationMatrix = new THREE.Matrix4();
rotationMatrix.setRotationAxis(axisY.normalize(), yradians);
rotationMatrix.multiplySelf(object.matrix);
object.matrix = rotationMatrix;
object.rotation.setRotationFromMatrix(object.matrix);
rotationMatrix = new THREE.Matrix4();
rotationMatrix.setRotationAxis(axisZ.normalize(), zradians);
rotationMatrix.multiplySelf(object.matrix);
object.matrix = rotationMatrix;
object.rotation.setRotationFromMatrix(object.matrix);
}
x と y の回転は正常に機能しますが、z の回転では目的の結果が得られません。
誰かが私が間違っていることを見つけてくれたらとても感謝していますか、それとも別の方法でやるべきですか?
ありがとう