Повернуть объект по определенной оси в любом месте Three.js - в том числе за пределами сетки

Попытка повернуть объект вокруг любой оси.

Например, как дверная петля (на краю объекта) или планета вокруг Солнца (вне объекта).

Кажется, проблема заключается в определении оси. Приведенный ниже единичный вектор приводит к тому, что ось остается в исходной точке (центре) объекта, что соответствует стандартному вращению:

object2.rotateOnAxis(new THREE.Vector3(1,0,0), 0.01);
// same as
object1.rotation.x += 0.01;

Смотрите пример кода:JSFiddle

РЕДАКТИРОВАТЬ: Ищите способ, которым можно вращаться вокруг оси без использования вложенных детей. Вращение родительского элемента ребенка обеспечивает простой способ манипулирования точкой поворота ребенка, но изменение точки поворота невозможно.

В приведенном ниже примере, если вы хотите повернуть куб в движении, показанном на рисунке 8, это можно сделать с помощью этого метода, изменив родителя. Но нужно было бы убедиться, что положение и ориентация нового родителя точно настроены так, чтобы ребенок легко перепрыгивал между родителями, а сложные движения, которые не повторяются или не повторяются, были бы очень сложными. Вместо этого я хотел бы (и перефразирую заголовок вопроса) вращать объект по определенной оси, не используя вложенные объекты в любом месте сцены, в том числе за пределами сетки объекта.

Смотрите пример кода:JSFiddle с шарнирами

Ответы на вопрос(1)

Ваш ответ на вопрос