Homchenkokostya
@Homchenkokostya

ThreeJs движение объекта вокруг своей оси?

Как сделать движение каждого объекта вокруг собственной оси ?
Получается почему то только вокруг центра сцены.
Например вот так
object.rotation.y += 1;
по идее объект должен крутится вокруг своей оси, но он крутится относительно центра сцены.
Пример
В примере видно как у кубика меняется ось Y, но он не крутится вокруг свой оси.
  • Вопрос задан
  • 704 просмотра
Пригласить эксперта
Ответы на вопрос 1
sozercanie_kosmosa
@sozercanie_kosmosa
я делал как то так к сожалению не помню всех тонкостей
этот пример был сделан для реализации костей но методы которые в нем использовались возможно помогут.
// получаем мировую матрицу родительского объекта
            var m = E.uid[obj.eparent].mWorld.clone();

// делаем параллельный перенос
            m.multiply(new THREE.Matrix4().setPosition(obj.pos));
// поворачиваем
            m.multiply(new THREE.Matrix4().makeRotationFromQuaternion(obj.ang));
// устанавливаем опорную точку
            m.multiply(new THREE.Matrix4().setPosition(obj.basis));

// сохраняем трансформированную матрицу объекта для потомка
            obj.mWorld = m.clone();
// масштабируем
            m.scale(obj.escale);
// сбрасываем
            obj.matrix.identity();
// применяем трансформированную матрицу к объекту
            obj.applyMatrix(m.clone());
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы