如何在Java 3d场景上绘制2d叠加层?

Cug*_*uga 6 java opengl 3d java-3d

我有一个用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);
Run Code Online (Sandbox Code Playgroud)

现在我需要在总是可见的场景顶部放置一个叠加层,例如一些文本.我试过以下,但无济于事:

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

当我运行上面的代码时,我根本看不到任何文本.有人可以帮忙吗?

And*_*res 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);
Run Code Online (Sandbox Code Playgroud)

希望有帮助。