Есть ли простой способ смены поворота THREE.Object3D
? Точка по умолчанию - это точка положения Object3d
.Three.js - Есть простой способ изменить поворот вращения Object3D?
У меня есть группа (реализована как THREE.Object3D
) объектов, и я хочу повернуть все объекты вместе, вокруг THREE.Vector3
точки, которые можно изменить во время выполнения.
Примечание: положение группы не может быть изменено.
Я попытался это (с Derte Trdelnik помощь), но он не работает:
someButton.onClick(function() {
var object = editor.selected;
if (!object instanceof THREE.Object3D) return;
var pivot = new THREE.Vector3(100, 0, 0);
var vectorToPivot = object.position.sub(pivot);
var moveToPivot = new THREE.Matrix4().makeTranslation(vectorToPivot.x,
vectorToPivot.y, vectorToPivot.z);
var rotation = new THREE.Matrix4().makeRotationZ(Math.PI);
var inverseMove = new THREE.Matrix4().makeTranslation(-vectorToPivot.x,-vectorToPivot.y, -vectorToPivot.z);
var matrix = inverseMove.clone().multiply(rotation).multiply(moveToPivot);
object.applyMatrix(matrix);
editor.signals.objectChanged.dispatch(object);
});
Спасибо заранее!
сделали вы имели в виду: THREE.Matrix4 во всех линиях? во всяком случае, это вызывает изменение позиции объектов под группой или положение самой группы. – RoeePeleg
смотрите мой вопрос редактирование. – RoeePeleg
Да, я хотел использовать матрицы, он меняет положение, я, вероятно, неправильно понял ваш вопрос - вы не хотите менять позицию после вращения? в этом случае сделайте вектор поворота [0,0,0], и он будет вращаться вокруг центра или если по какой-то причине у вас есть матрица вращения, которую вы хотите использовать, - используйте ее и переместите группу обратно в прежний центр. –