2009-08-17 223 views
6

我用Java編寫的3D,當用戶的觀看位置被設置爲一些協調使用下面的代碼的場景:如何在Java 3D場景上繪製2D覆蓋圖?

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

現在我需要把覆蓋上總是可見的場景之上,如一些文字。我試過以下,但無濟於事:

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

當我運行上面的代碼,我沒有看到任何文字的。任何人都可以幫忙嗎?

+0

我希望我能夠很快理解這個問題。 Java 3D在這裏,我來了。 – 2011-12-11 03:59:19

回答

4

問題在於,您正在鄰近剪輯平面內的相機頂部直接顯示文字。你需要這樣的東西來沿z軸平移-1。

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

希望有幫助。

+0

絕對太棒了!非常感謝! – Cuga 2009-08-21 14:18:16