嗨,

我一直在尝试实现一个系统,让我可以在游戏中可视化出可行的区域,包括视野范围。

一个很好的例子和我想要实现的目标是:在 Divinity Original Sin 2 中,也可以在 Baldur's Gate 3 中找到:

https://preview.redd.it/m2t4y63tr4zg1.jpg?width=1470&format=pjpg&auto=webp&s=0724e902811d0dff981077b7c0fdf50860fe6ffc

这个图片显示的是地面被强调 (而无效区域被灰度,但那部分不重要),指出了一个技能的作用范围。同样的系统也用于可视化 NPC 可以看到的视锥。

一些重要细节是,这些可视化是遮挡感知的(知道那些阻挡视野的物体)。所有内容都是完全地面对齐的,而且根据游戏不会因多个 NPC 的视锥被启用而有帧率下降,有意思的是,这个系统在性能上很轻,这一定意味着没有昂贵的实时计算(射线检测、LOSCheck、渲染等),因此我以为这系统大部分是 “预先烘烤 ”的,区域被采样成了某种形式。

我老老实实地不知道该怎么处理,我试过了几种方法,如射线检测基础的解决方案、渲染网格、通过摄像头捕获渲染纹理并射击它们降低到表面上,但结果性能开销太多,无法为多个角色可行。

我以为所使用的技术和影子映射工作的机制很像,大部分信息都是预先计算的,但我不知道,也不知道如何可以根据这来建立系统。

有谁能给出点儿提示或想法吗?