Girar objeto em um eixo específico em qualquer lugar no Three.js - inclusive fora da malha
Tentando girar um objeto em torno de qualquer eixo.
Por exemplo, como uma dobradiça de porta (na borda do objeto) ou planeta ao redor do sol (fora do objeto).
O problema parece estar definindo o eixo. O vetor unitário abaixo resulta no eixo restante na origem do objeto (centro), idêntico à rotação padrão:
object2.rotateOnAxis(new THREE.Vector3(1,0,0), 0.01);
// same as
object1.rotation.x += 0.01;
Veja o exemplo de código:JSFiddle
EDITAR: Procurando uma maneira de girar em torno de um pivô sem usar filhos aninhados. Girar os pais de uma criança fornece uma maneira fácil de manipular o ponto de articulação da criança, mas a modificação do ponto de articulação não é viável.
Exemplo abaixo, se você quiser girar o cubo em um movimento da figura 8, seria possível com esse método alterando o pai. Mas seria preciso garantir que a posição e a orientação do novo pai ou mãe sejam configuradas com precisão para fazer a criança pular perfeitamente entre os pais, e movimentos complexos que não se repetem ou se repetem seriam muito complicados. Em vez disso, eu gostaria de (e parafrasharei o título da pergunta) girar um objeto em um eixo específico sem usar o aninhamento de objeto em qualquer lugar da cena, inclusive fora da malha do objeto.
Veja o exemplo de código:JSFiddle com pivôs