Como desenhar uma sobreposição de 2d em uma cena 3D Java?
Pergunta
Eu tenho uma cena escrito em Java 3D, em que a posição de visualização do usuário é definida para algum coordenar usando o seguinte código:
ViewingPlatform vp = simpleUniverse.getViewingPlatform();
TransformGroup steerTG = vp.getViewPlatformTransform();
Transform3D t3d = new Transform3D();
steerTG.getTransform(t3d);
t3d.lookAt(
new Point3d(-5, 10, 25), new Point3d(0, 0, 0), new Vector3d(0, 1, 0));
t3d.invert();
steerTG.setTransform(t3d);
Agora eu preciso colocar uma cobertura no topo da cena que está sempre visível, como algum texto. Eu tentei o seguinte, mas sem sucesso:
PlatformGeometry pg = new PlatformGeometry();
Text2D text = new Text2D("Text to display", Cell.BLACK, "Verdana", 18, 1);
pg.addChild(text);
simpleUniverse.getViewingPlatform().setPlatformGeometry(pg);
Quando eu executar o código acima, não vejo qualquer texto em tudo. Alguém pode ajudar por favor?
Solução
O problema é que você está exibindo o texto diretamente na parte superior da câmera dentro do plano de recorte próximo. Você precisa de algo como este para traduzir -1 ao longo do eixo z.
PlatformGeometry pg = new PlatformGeometry();
TransformGroup objScale = new TransformGroup();
Transform3D t3d = new Transform3D();
t3d.setTranslation(new Vector3f(0f, 0f, -1f));
objScale.setTransform(t3d);
Text2D text = new Text2D("Text to display", Cell.BLACK, "Verdana", 18, 1);
objScale.addChild(text);
pg.addChild(objScale);
simpleUniverse.getViewingPlatform().setPlatformGeometry(pg);
Espero que ajude.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow