Вращайте колеса на 2 оси в Three.JS - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь повернуть объект по двум осям y и x.Но это не работает должным образом.Вот пример

https://imge.to/i/vqyt20 локальная ось (без поворотов)

https://imge.to/i/vqypnA что у меня после перемещения с вращениями

wheel1.rotation.x += movement;
wheel1.rotation.y = angle;

PSон работает, когда movement == 0 или angle == 0, но не работает, когда они оба не равны 0.

Я пытался использовать кватернионы и умножать векторы вращения, но ничего не помогает.Заранее спасибо!

РЕШЕНИЕ:

Я нашел ответ на свой вопрос с вращением вектора вокруг оси y

 angleX += movement; 

    [wheel1, wheel2].forEach(function (wheel) {
        let vector = new THREE.Vector3(1, 0, 0);
        vector.applyAxisAngle(new THREE.Vector3(0, 1, 0), angleY);

        wheel.rotation.y = angleY;
        wheel.rotation.x = 0;
        wheel.rotation.z = 0;

        wheel.rotateOnWorldAxis(vector, angleX);
    });

ЕЩЕ ОДИН РЕШЕНИЕ в комментариях приведено изменение wheel.rotation на 'YXZ' Как повернуть объект и сбросить его вращение в ноль?

...