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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top