我有一个用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);
现在我需要在总是可见的场景顶部放置一个叠加层,例如一些文本。我尝试了以下,但无济于事:
PlatformGeometry pg = new PlatformGeometry();
Text2D text = new Text2D("Text to display", Cell.BLACK, "Verdana", 18, 1);
pg.addChild(text);
simpleUniverse.getViewingPlatform().setPlatformGeometry(pg);
当我运行上面的代码时,我根本看不到任何文字。有人可以帮忙吗?
答案 0 :(得分: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);
希望有所帮助。