0%

VR迷宫04-迷宫生成与渲染优化

在治牙的时候还是睁开眼睛会感觉更好,如果面对未知的恐惧的话,承受痛苦的能力也会下降。

我喜欢看女大夫那双美丽的眼睛。我想说我相信她,但那最多只是一种无能为力时的依靠。在她把各种奇形怪状的工具探入我灵魂的边缘恣意而为时,我唯一能够做的,就是紧随着她的眼睛,从那普通却又整齐划一的睫毛开始,看到她专注的、却又倒映出我的丑态的瞳孔,试图在她那被面罩所掩盖起来的神情之外寻找自己一秒钟之内的命运。

我背负着命运巨大的齿轮,它无时无刻不缓慢而又坚定向前碾过,想要把我的意志整个粉碎。为此我必须忍受自己的背叛,同时鼓起勇气直面那些曾经只会逃避的事物。

迷宫生成

迷宫生成主要分为两步:生成迷宫结构,并给门、地板、墙壁分配坐标。

1
2
3
4
5
00000
0 1 0
01010
0 1 0
00000

$0$表示不可摧毁的墙,$1$表示可以移除的墙。一开始所有的空格都不连通。

然而,我们可以选择一些$1$移除,使得所有的空格连通。

可以将空格看做点,$1$看做两个空格之间的随机权值的无向边,做一个最小生成树。

假设移除下面三个$1$之后变成这样

1
2
3
4
5
00000
0 1 0
0 0 0
0 0
00000

然后将所有的$1$变成$0$,作为墙。

随后遍历每堵墙,如果边上是空格的话,就生成一个墙面。

每个空格生成一个地板面。

坐标的话,俯视视角,整个区域左上角坐标为$x=0,z=0$,同时向右为$x$轴正方向,向下为$z$轴正方向。

搞一搞就知道要绘制哪些墙面了,也容易通过设定墙外方向来设置空气墙触发器。

迷宫虽然有点简单,但没时间改了。

$N=20$的迷宫只有帧数只有$10$,要想办法优化一下。解决方案是,在画同一批墙之前统一绑定一下纹理。而不是每画一面墙就绑定一下。现在$N=15$能做到$30$帧了。

稍微改动触发器,使得碰到门之后就会被传送到一个新随机生成的迷宫入口。

暂时先这样结束吧。以后可能还会更新更多内容。