Pergunta

No meu aplicativo Java3D, tenho uma plataforma de visualização móvel (graças aos comportamentos "OrbitBehavior" e "Keynavigatorbehavior", por exemplo) para que eu possa mudar meu ponto de vista para a cena. Agora, eu gostaria de adicionar um objeto que é "estático" sobre a minha opinião, ou seja, sempre visto da mesma maneira quando movo minha visão (por exemplo, como a arma do jogador em um FPS). Até agora, tentei as duas abordagens a seguir para esse problema, mas nenhum deles funcionou.

1/ Anexe diretamente meu objeto ao ViewingPlatform (por meio de um grupo de ramo dedicado mais um transformGroup). Nesse caso, meu objeto simplesmente não é exibido (absolutamente não tenho certeza de que seja permitido executar essa operação na verdade ...). Esta é esta parte do meu código:

Código: (com view o ViewingPlatform)

BranchGroup fixedBG = new BranchGroup();
TransformGroup fixedTG = new TransformGroup();
fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
fixedTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Transform3D transfo = new Transform3D();
transfo.setTranslation(new Vector3f(0.2f, 0.0f, -1.0f));
fixedTG.setTransform(transfo);
ColorCube fixedCube = new ColorCube(0.2);
fixedTG.addChild(fixedCube);
view.addChild(fixedBG);

2/ Aplique ao meu objeto a mesma transformação (rotação + tradução; recuperado via getTransform () no getViewPlatFormTransform () - Eu também tentei algo mais complexo aqui, com operações entre essas transformações e posições iniciais de visão PF e objeto) como visualização da plataforma. Eu faço tudo isso em tempo real, com um comportamento dedicado (mesmas condições de despertar que os comportamentos modificando o local da visualização). Aqui, meu objeto desaparece quando movo a visualização e, em seguida, aparece novamente, às vezes, quando uso a ação do zoom/zoom do Keynavigator (mas de uma maneira realmente instável).

Tenho certeza de que o que estou tentando fazer é factível e provavelmente bastante simples, mas agora, não tenho idéia ...

Obrigado pelo Advance por sua ajuda

(PS: Como o inglês não é meu idioma nativo, posso estar muito confuso em explicar meu problema: não hesite em me pedir para escrever novamente peças pouco compreensíveis)

Foi útil?

Solução

Não tenho 100% de certeza se isso funcionaria, mas revisei alguma documentação - (http://graphcomp.com/info/specs/java3d/j3dguide/intro.doc.html#47470) Por exemplo, e acho que você precisa inverter a ordem no gráfico da cena. Portanto, normalmente, sua plataforma de visualização fica pendurada em um grupo de transformação que pendura um grupo de filiais que pendura no local. O grupo de transformação é o que os orientos da visão. Se você anexar seu colorcube a esse grupo de transformação, sua plataforma de exibição a esse cubo de cores, a exibição e o cubo devem se mover juntos. Acho que você pode interferir em outro grupo de transformação para compensar o cubo da vista. O usuário que controla a câmera está manipulando o grupo de transformação mais alto da ramificação.

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