受《EVA》启发的太空游戏虚构HUD:在Godot中绘制数学线框而非3D模型
据 ninetailedoctopus 介绍,该设计的主要灵感来自《福音战士新剧场版》系列中的 AAA 温德。他们表示,游戏中的飞船可能会变得非常小或隐形,玩家很容易丢失目标。他们没有采用自己觉得“无聊”的指南针条或血条,而是制作了一个叙事性 HUD(diegetic HUD),让 UI 作为游戏世界的一部分存在。
这是一张角色在游戏中看到 HUD 的参考图:

“在设定中,战斗舰桥的 AR 源自 F-35 的全向传感器融合技术,但现在已经变成舰桥船员的共享 AR。他们坐在一个装甲舱体中央,这个舱体同时也是一个全息投影容器。未进行增强改造的人看到的是舱壁上的屏幕,而经过增强改造的人则能看到屏幕以及空隙间的全息投影。”
遗憾的是,关于游戏本身公开的细节非常少。不过,ninetailedoctopus 确实分享了他们如何做出这种效果——剧透警告:这并非 3D 模型:
“想象一个包裹住飞船的 AR 球体,以飞船为其父级。然后你在 GDScript 中编写一组全局工具函数,在这个球体上绘制内容——线条、V 形、弧线,基本上就是带有宽度的折线,并配合大量数学运算。它输出一组顶点和索引,准备放入 ArrayMesh。
接着,你在同一个 GDScript 文件中编写另一组函数来变换和复制线条,比如 repeat_arc 或 repeat_line,它们接收之前构建的顶点,然后将其变换到另一个向量。
最终网格会被烘焙到 ArrayMesh 中。剩余的由手动制作完成——定位、缩放调整。接着,你将作为一个整体旋转的节点烘焙进多个 tscns 中,比如罗盘环、俯仰梯。然后取这些烘焙场景,参考飞船的变换和状态,沿相应轴旋转。设置 TopLevel=on 或手动去除旋转,是我让它们保持固定的方法。
底部的生命/装甲显示只是一些六边形棱柱,代表装甲耐久。装甲网格以及沿 X、Y、Z 方向的迭代都很直接。
关键在于,你要有非常棒的参考图和美术风格作为依据。我也做了大量关于飞机 HUD 的研究。或者你也可以直接用 Blender 建模,但我希望数学计算是正确的。”
以下是他解释如何为线条添加发光效果:
“启用 HDR(在 Forward+ 模式下通常默认就是开启的)。绘制一些内容。对于顶点类物体,在颜色选择器中将颜色强度设置为 >1.0。对于纹理,也是同样的操作,但必须将其导入为 HDR 格式。或者,你也可以使用着色器,在片元着色器中增加自发光强度。
你也可以使用标准材质,直接设置自发光,或者添加自发光贴图。
最后,添加一个环境(Environment),启用辉光(Glow),然后调整各项数值。尽情享受你的发光粘液/粒子/触手吧!”
这并不是开发者第一次分享幕后制作过程。此前,他们展示了如何通过修改 Bonkahe 的 Sunshine Clouds 2 插件来生成体积云,从而创建游戏中的云层。
“性能优化、世界空间射线投射、抖动修复、卡通着色。在我的笔记本 4070 上以原生分辨率渲染耗时 8ms。目前正在使用 TAAU(TAA 上采样),以便以半分辨率渲染,实现 2-3ms 的快速性能。”
这里是浮空岛生成器和战斗测试:
相关链接
原文链接:https://80.lv/articles/neon-genesis-evangelion-inspired-diegetic-hud-for-space-game
喜欢这篇内容吗?