游戏引擎如何制作出精美的图片?
在一个游戏开发团队中,通常分为三个部分,美术,策划,程序。策划负责所有与游戏剧情、风格、UI格式等相关的内容。~美术负责制作模型和各种地图~而程序负责实现具体功能~程序可以细分为AI、逻辑、渲染等。~在这里,我们首先要明白一个问题。真正能左右游戏画面效果的不是美术,而是程序~或者说程序占主导。美术站处于次要地位~不知道LZ是否存疑~既然美术负责游戏中所有美术资源的制作~而程序只负责代码,为什么程序占据主要地位~很简单的一个问题,用3Dmax做模型的时候,有一个数据在里面, 也就是当前模型的面数~这个面数通常是指构成整个模型的三角形的数量~在显示这些模型的过程中,所有的三角形信息都会被送到显卡中进行计算和处理~这时候就会出现一个问题~对于同一个模型,三角形面数越多, 它的模型精度越高,越接近真实场景~但是这样会导致CPU和GPU的运算量增加,导致游戏卡顿~所以这种情况下就需要减少模型的面数,同时大量的特效也不能再直接由3Dmax等软件作为cg制作,而是由程序完成。
一个游戏引擎通常由一个引擎内核和一系列工具组成。更大的引擎包括美术的建模工具,甚至一些规划之类的任务工具~内核的好坏直接决定了整个引擎的好坏~它是对具体技术细节的一层封装~它使得程序不需要完成具体的技术细节~游戏的渲染效果也直接由引擎决定。
说到这,可能有点抽象。说一两件事吧。比如玩游戏的时候可以设置游戏特效,比如全屏泛光,多重抗锯齿,HDR等等。这些东西都是程序实现的,而且基本上都是已经在引擎中实现的效果~这些技术的细节需要一些数学计算~像全屏泛光,就是提取场景中亮度高的点,然后在水平和垂直两个方向做高斯模糊~然后把这个处理过的图片粘贴到屏幕上~但是从提取高光开始,就涉及到计算机图形学领域的相关内容~如果程序懂图形学,他自己就可以做。如果程序不理解的话,实现这些东西会非常困难,所以具体的计算方法是在引擎中完成的。如果程序想要达到这样的效果,按照引擎中的规定写少量的代码就可以实现~这里说的只是引擎的一个功能~进一步说,就像我刚才说的,面太多会导致计算机的负荷增加~要解决这个问题,就要想一些优化面数的方法~通常情况下, 有的方法是用贴图代替模型,或者实现LOD ~模型和地形的LOD指的是层次细节,也就是在玩家远离一个NPC的时候,减少它的模型细节,减少它的面数~而用贴图代替模型就是对贴图进行处理,让它看起来更真实~常见的有凹凸贴图,法线贴图,检验贴图等等。 LZ这里可能又有问题了~既然是地图,为什么不让美术来做呢?问题是这样的:假设现在有一面砖墙,你正拿着手电筒照着这面墙,那么你站在不同的位置,这面墙上的砖的阴影就会不一样~换句话说,这些阴影是动态的,不是你画的时候静态的阴影~而实现这种效果的具体方法也是引擎封装的。当然,大多数引擎支持程序都是自己完成这个效果的。