Dúvida no Java3D

Eae galera.

Estou desenvolvendo um jogo usando Java3D para o TCC da facul.
Ja dei uma olhada em outras APIs e frameworks e gostei mesmo do Java3D… não pela facilidade… ja que dependendo do que se quer fazer, é bem mais facil usar o Jmonkey mesmo ou outros… mas por diversos outros motivos que não vem ao caso aqui =p

Minha dúvida é a seguinte. Trata-se de controlar uma nave. Ja importei e adicionei os behaviors e estão funcionando corretamente na nave.

Ao apertar as teclas esquerda e direita, a nave gira, tudo Ok. Mas antes dela girar, gostaria que ela inclinasse levemente no proprio eixo e só depois virasse ( ou fizesse os 2 ao mesmo tempo tanto faz ).
Explicando de outro modo pra ficar facil entender, é só imaginar um jato por exemplo. Qndo o piloto gira para a esquerda, o jato inclina levemente para a esquerda ( no eixo do jato ) antes do bico do jato em si começar a virar para a esquerda.

Fiz isso corretamente mas o problema é que ao começar a girar no proprio eixo, a tranformação do jato fica nesse novo eixo então quando o jato vira o bico para a esquerda, ele vai um pouco para baixo. Quanto mais inclinação, mais vai pra baixo ao girar o bico do jato. Assim, vc vai colocando pra esquerda e direita e cada vez o bico esta mais pra baixo a ponto do jato acabar dando voltas em torno dele mesmo de tão pra baixo.

A maioria dos jogos não liga pra isso. Ja que a visão na maioria dos jogos é traseira, se o jato vai descendo conforme vc gira para a esquerda, torna mais realista ainda o jogo. Então poucos ligam pra isso. O jogador controla a vontade onde o jato vai.

Contudo a visão do meu jogo é superior. Ele deve girar no eixo e depois virar o bico para os lados sem ir pra baixo… não sei se deu pra entender.

No java3d, eu faço o seguinte. Pego o objeto transform da nave, passo as novas rotações e aplico no grupo. Isso faz com que as rotações se somem e então ele vai descendo mesmo.

Preciso de uma saida pra isso… tentei usar billboard mas a visão acompanha qualquer rotação da nave e ela parece imovel. Tentei criar um outro grupo mas como sou obrigado a pegar a transformação do objeto pra continuar de onde parou, continua o msm problema… Tentei criar 2 objetos separados cada um fazendo a rotação ( um no eixo X e outro no eito Y ) e aplicar no objeto “pai” mas mesmo assim ele efetua as somas dos valores…

Fuçando muito… ouvi dizer que posso resolver meu problema usando Matriz de Transformação… mas pouco sei sobre isso - estou estudando mas não é algo facil e nem sei como aplicar isso nos métodos de rotação do java3d.

Se alguem tiver alguma ideia do que posso fazer pra resolver esse problema me da um toque ae… ou então me da uma ajuda em como usar matriz de transformação no java3d…

Valeu.