对很多特定年龄段的人来说,第一次真正、良好的3D游戏体验来自《超级马里奥64》。与之前的3D游戏不同,镜头是一个可以由玩家控制的对象,而不是只有第一人称模式,或者由游戏去猜测最佳镜头位置。今天我们可能把这一机制视为理所当然,但在当时,3D是一项新技术,经过了大量实验,才逐渐形成我们今天所熟悉的规范。

从编程的角度看,3D图形可能有点让人头疼,但开发者Gabriel指出,透视和镜头可以简化成几行数学。

打开网易新闻 查看精彩图片

Gabriel刚开始做编程时,用的都是各种会自动提供镜头的工具。但在触到这类框架的极限之后,下一步就是从头搞懂它到底是怎么运作的。答案是一点矩阵运算,里面包含前景和背景裁剪平面,以及宽高比、视野范围和位置等值。这大致复刻出一个梯形棱柱,可以把它想象成一个观察者,从摄像机的视角看整个场景。而要实现纵深感,靠的是在这个矩阵系统里,把X和Y坐标除以Z坐标,让远处的物体变小,从而产生3D效果。

在Gabriel解释这套方法的网站上,有几个示例配了滑块,用来演示改变每个变量的值会如何改变透视和所显示的物体。对一堂数学课来说,这种交互方式相当直观,能帮助人凭直觉理解这些概念。镜头之外,3D物体的生成也有它自己一整套数学公式要学,Gabriel说这些内容"同样"有意思。