javafx中3D场景上的静态2D文本

Kil*_*ian 2 javafx-8 javafx-3d

我的目标是在 javafx 中将 2D 文本叠加在 3D 场景上,如所示这个图片

使用子场景不是一个有效的选择,因为我希望 3D 模型能够占据屏幕上的整个空间。

我尝试向场景添加标签并关闭深度缓冲,但是一旦模型旋转(实际相机改变位置),正确的定位就会中断。(使用代码来控制相机

我是否可以通过使用锚点窗格并使用具有透明背景的 2D 场景,以某种方式在 3D 场景上覆盖静态 2D GUI?

关于堆栈溢出,我只发现了这些问题:
问题 1
问题 2
不符合我的确切需求。

Kil*_*ian 5

我误解了子场景的概念,因为它们都显示完全独立的控件。使用以下结构可以叠加 3D 文本...

  • 根容器(例如锚定窗格)
    • 2D 内容(标签)
    • 子场景
      • 透视相机
      • 根3D
        • 3D内容

代码示例:

//Add 2D content here
AnchorPane globalRoot = new AnchorPane();
globalRoot.getChildren().add(new Label("Hello World"));
Scene scene = new Scene(globalRoot, 1024, 768, true);

SubScene sub = new 
SubScene(root3D,1024,768,false,SceneAntialiasing.BALANCED);
sub.setCamera(camera);
globalRoot.getChildren().add(sub);

//Add all 3D content to the root3D node    

primaryStage.setScene(scene);
primaryStage.show();
Run Code Online (Sandbox Code Playgroud)