2009-08-17 25 views
6

Mam scena napisany w Java 3D, gdzie pozycja przeglądania użytkownika jest ustawiona na niektóre współrzędnych przy użyciu następującego kodu:Jak narysować nakładkę 2D na scenie 3D Java?

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

Teraz muszę umieścić nakładkę na górnej części sceny, który jest zawsze widoczny, taki jak jakiś tekst. Próbowałem następujących, ale bezskutecznie:

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

Kiedy uruchomić powyższy kod, nie widzę żadnego tekstu w ogóle. Czy ktoś może ci pomóc?

+0

Mam nadzieję, że wkrótce będę w stanie to zrozumieć. Java 3D tutaj przychodzę. –

Odpowiedz

4

Problem polega na tym, że wyświetlasz tekst bezpośrednio na wierzchu kamery w pobliżu płaszczyzny przycinania. Potrzebujesz czegoś takiego, aby przetłumaczyć -1 wzdłuż osi 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); 

Nadzieję, że pomaga.

+0

Absolutnie fantastycznie! Dzięki wielkie! – Cuga