2009-08-17 11 views
6

Ho una scena scritta in Java 3D, dove la posizione di visualizzazione dell'utente è impostato su una certa coordinata utilizzando il seguente codice:Come disegnare una sovrapposizione 2d su una scena 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); 

Ora ho bisogno di mettere una sovrapposizione sulla parte superiore della scena che è sempre visibile, come un testo Ho provato quanto segue, ma senza alcun risultato:

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

Quando eseguo il codice di cui sopra, non vedo alcun testo a tutti. Qualcuno può aiutare, per favore?

+0

Spero di essere in grado di capire presto questa domanda. Java 3D eccomi qui. –

risposta

4

Il problema è che si sta visualizzando il testo direttamente sulla parte superiore della telecamera all'interno del piano di ritaglio vicino. Hai bisogno di qualcosa di simile per tradurre -1 lungo l'asse 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); 

Spero che questo aiuti.

+0

Assolutamente fantastico! Grazie mille! – Cuga

Problemi correlati