Gire el objeto en un eje específico en cualquier lugar de Three.js, incluso fuera de la malla
Intentando rotar un objeto alrededor de cualquier eje.
Por ejemplo, como una bisagra de puerta (en el borde del objeto) o un planeta alrededor del sol (fuera del objeto).
El problema parece estar definiendo el eje. El siguiente vector unitario da como resultado que el eje permanezca en el origen del objeto (centro) para ello, idéntico a la rotación estándar:
object2.rotateOnAxis(new THREE.Vector3(1,0,0), 0.01);
// same as
object1.rotation.x += 0.01;
Ver ejemplo de código:JSFiddle
EDITAR: Buscando una manera de rotar alrededor de un pivote sin usar hijos anidados. Girar a los padres de un niño proporciona una manera fácil de manipular el punto de pivote del niño, pero modificar el punto de pivote no es viable.
Ejemplo a continuación, si quisiera rotar el cubo en un movimiento de la figura 8, sería posible con este método cambiando el padre. Pero uno tendría que asegurarse de que la posición y orientación del nuevo padre esté configurada con precisión para que el niño salte sin problemas entre los padres, y los movimientos complejos que no se repiten o repiten serían muy complicados. En cambio, me gustaría (y parafrasear el título de la pregunta) rotar un objeto en un eje específico sin usar objetos que anidan en cualquier lugar de la escena, incluso fuera de la malla del objeto.
Ver ejemplo de código:JSFiddle con pivotes