Повернуть объект по определенной оси в любом месте Three.js - в том числе за пределами сетки
Попытка повернуть объект вокруг любой оси.
Например, как дверная петля (на краю объекта) или планета вокруг Солнца (вне объекта).
Кажется, проблема заключается в определении оси. Приведенный ниже единичный вектор приводит к тому, что ось остается в исходной точке (центре) объекта, что соответствует стандартному вращению:
object2.rotateOnAxis(new THREE.Vector3(1,0,0), 0.01);
// same as
object1.rotation.x += 0.01;
Смотрите пример кода:JSFiddle
РЕДАКТИРОВАТЬ: Ищите способ, которым можно вращаться вокруг оси без использования вложенных детей. Вращение родительского элемента ребенка обеспечивает простой способ манипулирования точкой поворота ребенка, но изменение точки поворота невозможно.
В приведенном ниже примере, если вы хотите повернуть куб в движении, показанном на рисунке 8, это можно сделать с помощью этого метода, изменив родителя. Но нужно было бы убедиться, что положение и ориентация нового родителя точно настроены так, чтобы ребенок легко перепрыгивал между родителями, а сложные движения, которые не повторяются или не повторяются, были бы очень сложными. Вместо этого я хотел бы (и перефразирую заголовок вопроса) вращать объект по определенной оси, не используя вложенные объекты в любом месте сцены, в том числе за пределами сетки объекта.
Смотрите пример кода:JSFiddle с шарнирами