查看全文
实只是一张按距离远近缩放的 2D 图片而已,就像我们在靶场看到的人形立牌一样,这个敌人是没有侧面,没有背后的,它只有正面的图片。
所以,玩家在游戏里,无论怎样围绕敌人跑动,都不可能看到敌人的后背,因为它没有后背。
在正常战斗的时候,玩家可能会觉得很自然,因为敌人始终都会面对自己,所以自然看不到敌人后背。
可是,当敌人被玩家杀死变成尸体之后,看起来就有点诡异了,因为尸体也只有一张 2D 图片,所以当玩家围绕尸体跑动的时候会发现满地的尸体都保持着同一个角度朝着自己在旋转,这看起来还是有点吓人的。
不过光线投射演算因为是堆叠 2D 图片来模拟 3D 视觉,所以只有换算物体在画面上的大小和位置,因此所有墙壁都是等高的,而且地面也只能是平坦的,并无法有高低变化,更不可能实现不同楼层的效果。
所以等到《毁灭战士》出现的时候,ID 公司又发明了新的欺骗算法:二元空间分割技术。
这个算法比射线要复杂一些。
当设计师设计地图的时候,就可以给每个部份设定「高度」参数了,然后引擎会自动把地图不断分割直到引擎能接受的大小,再用二叉树的方式记录,然后引擎把一张 2D 的地图运用切割的方式切成小块小块的区域。
把地图切割成小块
然后后台算法再把这些切碎的区块资料用二叉树的方式两两连接起来,形成一个巨大的二叉树。
之后,影像要呈现在画面上时,二叉树先找到玩家所在的区块和视线朝向,然后将玩家面向的区域从二叉树中有相连的区域左到右开始画,一块一块地将玩家视野中会看到的部份画出来。
二叉树算法
这个算法的厉害之处就在于避免的描画看不到的图片,因此大量的节省了计算机的算力。
空间被分割之后,玩家就只用看到与自己视线相关的 2D 图片,而且还用 2D 图片模拟出了高低维度的差别。
当时这款游戏让全球无数玩家产生如同宗教狂热一般的热爱,因为当时计算机硬件性能很弱,而这个模拟 3D 的演算法对当时的很弱的 CPU 来说也足以胜任,所以玩家们不必花大价钱买台梦幻电脑才能体验 3D 游戏乐趣,他们可以在任何普通办公用的电脑上就跑起来,而且画面感觉非常惊人,并且还支持局域网联网。
一时间,各个 IT 公司下班都充满了自愿加班的游戏青年,在键盘前第一次体验到如同现在吃鸡一般的快乐。
DOOM 的游戏画面
不过,我们讲这么多《重返德军总部》和《毁灭战士》的 3D 欺骗算法与我们之前的中微子问题有什么关联呢?
当然是有关联了。
不知道大家发现没有,当《重返德军总部》和《毁灭战士》采用了 2D 图片模拟 3D 图片的技术之后,游戏中的物体,也