2009-08-17 200 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