Java3d : How to edit a drawn 2d overlay on a Java 3d scene?

标签 java java-3d hud

我使用的技术回答了这个问题:Java3D: Painting 2D HUD over a Canvas3D

我的代码是这样的:

...
    GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
    Canvas3D canvas3D = new Canvas3D(config){
        public void postRender()
        {
            this.getGraphics2D().setColor(Color.white);
            this.getGraphics2D().drawString("Heads Up Display (HUD) Works!",100,100);
            this.getGraphics2D().flush(false);
        }

    };
...

以后如何删除此 2D HUD 或编辑此 2D HUD?

最佳答案

如果渲染完全从头开始渲染每个帧,您可以在与 postRender() 方法相同的类中添加静态 boolean 值。然后在方法内部使用 if 语句检查 boolean 值是否为 true,否则不执行任何操作,如果您通过

将 boolean 值设置为 false
ClassName.boolean_name=false;

HUD 不应显示。至于更改它,这是可能的,并且实际上取决于您想要显示的信息类型。这是我用于游戏的示例,但它可以适合多个主题。

我想要存储 FPS、x、y 和 z 位置如果我正在开发游戏,那么我要做的就是在类中为我需要显示的每个属性创建一个变量,然后是这样的:

Graphics2D G2D = this.getGraphics2D()
G2D.setColor(Color.white);
G2D.drawString("FPS: "+fps, 100, 100);
G2D.drawString("X: "+x_pos, 100, 80);
G2D.drawString("Y: "+y_pos, 100, 60);
G2D.drawString("Z: "+z_pos, 100, 40);
G2D.flush(false);

此外,如果您注意到我将 G2D 设置为等于 this.getGraphics2D(),这样我每次想要使用 Graphics2D 对象时都不需要调用外部方法,每次调用 getGraphics2D() 时,它都必须转到该类,调用该方法并返回值,与仅获取一次并使用它相比,更快的类型类型,从长远来看会创建更快的速度。

在这一切之后我要做的是我可以将每个变量设置为正确的值,它会显示,这是更新它的一种方法,您可以为每一行做类似的变量,然后去:

line1="this is some text";
list2="this is some more text";
list3="etc...";

关于Java3d : How to edit a drawn 2d overlay on a Java 3d scene?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8451017/

相关文章:

java - RSA 和 Base64 编码字节过多

java - 在 iText 中使用 setEncryption 方法时是否可以仅设置所有者密码?

unity3d - 你如何为纸板游戏制作 HUD?

iOS Urban Airship 进度和 HUD

cocoa - 如何实现像地址簿 "Show in Large Type"这样的HUD风格的窗口

java - 如何在java中生成n个?

java - 无法让我的程序正确读入文件以执行方法

java - jar文件的问题

从 .jar 运行应用程序时出现 Java 3d 错误

java - 为什么我的离屏渲染 Canvas3D 不起作用?