2009-08-17 13 views
6

que tienen una escena escrita en Java 3D, donde la posición de visualización del usuario se establece en alguna de coordenadas utilizando el siguiente código:¿Cómo dibujar una superposición 2D en una escena Java 3D?

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); 

Ahora tengo que poner una capa en la parte superior de la escena que está siempre visible, como algún texto. He intentado lo siguiente, pero fue en vano:

PlatformGeometry pg = new PlatformGeometry(); 
Text2D text = new Text2D("Text to display", Cell.BLACK, "Verdana", 18, 1); 
pg.addChild(text); 
simpleUniverse.getViewingPlatform().setPlatformGeometry(pg); 

Cuando ejecuto el código anterior, no veo ningún texto en absoluto. Alguien puede ayudarme porfavor?

+0

Espero poder entender esta pregunta pronto. Java 3D aquí vengo. –

Respuesta

4

El problema es que está mostrando el texto directamente en la parte superior de la cámara dentro del plano de recorte cercano. Necesitas algo como esto para traducir -1 a lo largo del eje 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 ayude.

+0

¡Absolutamente fantástico! ¡Muchas gracias! – Cuga

Cuestiones relacionadas