Я работаю над основным редактором для Three.js. Я хочу иметь возможность вращать, перемещать и масштабировать объекты.Вращение, перемещение и масштабирование объекта в зависимости от направления и положения камеры, в Three.js
Использование базовой функции работает, но отлично, но иногда немного запутывает.
cube.rotation.z = Math.PI * val;
cube.rotation.x = Math.PI * val;
cube.position.z = val * -1;
cube.scale.y = val;
То, что я хочу сделать, это повернуть объект в направлении вместо оси и от угла камеры.
Вот код, иллюстрирующий это. https://codepen.io/arpo/pen/LxyoRJ
Он отлично работает, пока другие входы нетронуты. Если вы перетащите диапазон «Повернуть влево вправо», он вращает куб на оси z. Но если вы перетащите диапазон «Повернуть задний фронт» до упора вправо, а затем снова переверните «Повернуть влево», поворот выглядит так, как будто он находится на оси Y. То же самое касается других входов.
Я понимаю, почему это происходит, но я не знаю, как добиться желаемого эффекта. Я также хотел бы, чтобы это работало с точки зрения камер. Чтобы переместить камеру влево и перетащить диапазон «Переместить назад», куб должен отойти или приблизиться.
Так что я хочу, чтобы при повороте куба с помощью поворота влево/вправо я хочу, чтобы он качался влево или вправо с точки зрения пользователей. Если вы используете диапазон перемещения, я хочу, чтобы куб отталкивался от пользователя.
Да, я знаю об этом, поэтому «Я понимаю, почему это происходит, но я не знаю, как добиться желаемого эффекта». – arpo
Не могли бы вы указать, какой именно желаемый эффект? Вращение вокруг мировых осей или осей камеры? И какой должен быть центр ротации - центр объекта или центр мира? Это всего 4 варианта, и каждый из них работает по-разному. – Matey
Я знаю, что это трудно объяснить. Я хочу, чтобы при повороте куба с помощью поворота влево/вправо, я хочу, чтобы он качался влево или вправо с точки зрения пользователей. Если вы используете диапазон перемещения, я хочу, чтобы куб отталкивался от пользователя. Я думаю, что это связано с манипуляциями с матрицами, но моих знаний пока нет. Я думаю, что задавать вопросы здесь - часть изучения этого. – arpo