Rodar em torno de um ponto específico no Java3D
Pergunta
Eu estou importando 2 modelos em Java3D, escalando-os para baixo e, em seguida, girando um deles usando um RotationInterpolator
No entanto, este gira o objeto em torno da origem. Eu quero girar o objeto em torno de seu centro, não a cena é. Simplificando, eu quero que ele girar no lugar.
Como faço para girar em torno de um ponto específico?
TransformGroup rotateTheBlades = new TransformGroup();
rotateTheBlades.setCapability(
TransformGroup.ALLOW_TRANSFORM_WRITE);
Alpha rotationAlpha = new Alpha(-1,5000);
RotationInterpolator rotator =
new RotationInterpolator(
rotationAlpha,rotateTheBlades);
Transform3D abc = new Transform3D();
abc.rotZ(Math.PI/2);
rotator.setTransformAxis(abc);
rotator.setSchedulingBounds(new BoundingSphere());
rotateTheBlades.addChild(rotator);
rotateTheBlades.addChild(theBlades);
Este é o meu código para fazer o meu rotação atual.
Solução
DR respondeu com traduzir o objeto para a origem, fazendo a rotação, em seguida, traduzir o objeto de volta para a sua posição. Que trabalhou.
A minha solução real era simplesmente centralizar o modelo na origem no arquivo .obj que eu estava carregando em Java3D, cumprir o meu rotação e, em seguida, traduzir os objetos para sua posição correta.