渲染,英文为Render,也有的把它称为着色,但我更习惯把Shade称为着色,把Render称为渲染。因为Render和Shade值两个词在三维软件中是截然不同的两个概念,虽然它们的功能很相似,但却有不同。Shade是一种显示方案,一般出现在三维软件的主要窗口中,和三维模型的线框图一样起到辅助观察模型的作用。很明显,着色模式比线框模式更容易让我们理解模型的结构,但它只是简单的显示而已,数字图像中把它称为明暗着色法。在像Maya这样的高级三维软件中,还可以用Shade显示出简单的灯光效果、阴影效果和表面纹理效果,当然,高质量的着色效果是需要专业三维图形显示卡来支持的,它可以加速和优化三维图形的显示。但无论怎样优化,它都无法把显示出来的三维图形变成高质量的图像,这时因为Shade采用的是一种实时显示技术,硬件的速度限制它无法实时地反馈出场景中的反射、折射等光线追踪效果。而现实工作中我们往往要把模型或者场景输出成图像文件、视频信号或者电影胶片,这就必须经过Render程序。
Shade视窗,提供了非常直观、实时的表面基本着色效果,根据硬件的能力,还能显示出纹理贴图、光源影响甚至阴影效果,但这一切都是粗糙的,特别是在没有硬件支持的情况下,它的显示甚至会是无理无序的。Render效果就不同了,它是基于一套完整的程序计算出来的,硬件对它的影响只是一个速度问题,而不会改变渲染的结果,影响结果的是看它是基于什么程序渲染的,比如是光影追踪还是光能传递。
渲染的基本过程
首先,必须定位三维场景中的摄像机,这和真实的摄影是一样的。一般来说,三维软件已经提供了四个默认的摄像机,那就是软件中四个主要的窗口,分为顶视图、正视图、侧视图和透视图。我们大多数时候渲染的是透视图而不是其他视图,透视图的摄像机基本遵循真实摄像机的原理,所以我们看到的结果才会和真实的三维世界一样,具备立体感。接下来,为了体现空间感,渲染程序要做一些“特殊”的工作,就是决定哪些物体在前面、哪些物体在后面和那些物体被遮挡等。空间感仅通过物体的遮挡关系是不能完美再现的,很多初学三维的人只注意立体感的塑造而忽略了空间感。要知道空间感和光源的衰减、环境雾、景深效果都是有着密切联系的。
渲染程序通过摄像机获取了需要渲染的范围之后,就要计算光源对物体的影响,这和真实世界的情况又是一样的。许多三维软件都有默认的光源,否则,我们是看不到透视图中的着色效果的,更不要说渲染了。因此,渲染程序就是要计算我们在场景中添加的每一个光源对物体的影响。和真实世界中光源不同的是,渲染程序往往要计算大量的辅助光源。在场景中,有的光源会照射所有的物体,而有的光源只照射某个物体,这样使得原本简单的事情又变得复杂起来。在这之后,还要是使用深度贴图阴影还是使用光线追踪阴影?这往往取决于在场景中是否使用了透明材质的物体计算光源投射出来的阴影。另外,使用了面积光源之后,渲染程序还要计算一种特殊的阴影--软阴影(只能使用光线追踪),场景中的光源如果使用了光源特效,渲染程序还将花费更多的系统资源来计算特效的结果,特别是体积光,也称为灯光雾,它会占用代量的系统资源,使用的时候一定要注意。
在这之后,渲染程序还要根据物体的材质来计算物体表面的颜色,材质的类型不同,属性不同,纹理不同都会产生各种不同的效果。而且,这个结果不是独立存在的,它必须和前面所说的光源结合起来。如果场景中有粒子系统,比如火焰、烟雾等,渲染程序都要加以“考虑”。
智能光
我一直认为,自然界的光是具有智慧的,它像一个魔法师,把世界变得缤纷绚丽,甚至离奇古怪,而渲染程序中的光就显得笨拙得多了,程序虽然提供了足够多的光源类型来让我们模拟真实世界的光源,但就其本质来说,都只解决了光源的直接照射问题,而真实世界中的照明不是这样的,它还存在再次反射的现象,也就是通常所说的的光能传递,现在流行的叫法是Global Illumination,即全局照明。不要把它跟Lightscape的光能传递相混淆,它们虽然在原理和结果上非常相似,但是算方式却不一样。
光的“智能”还体现在它的反射和折射质量上,这个质量并不是指渲染图像的质量或者光线追踪的正确与否,而是指是否能自动完成与光线的反射和折射有关的所有效果。Caustic特效的产生成为了高级渲染程序的一个重要标志。Cau-stic是一种光学特效,通常出现在有反射和折射属性的物体上,比如透明的圆球、凸透镜、镜子、水面等,它包含聚焦和散焦两个方面的效果。
就目前的情况来说,衡量一个渲染程序里的光源是否具有“智能”,不是看它的光源类型有多么丰富,或者说,已经与直接照明没有什么关系了(所有的渲染程序都能很好的解决直接照明的问题),而是与光源的间接照明有密切的关系。无论是天空光还是全局照明,或者是Caustic特效,都不是光源直接照射到物体上产生的效果,它们是光线的Diffu-se、Radiosity、Reflection和Refraction产生的结果,产生这些结果的自动化程度很高,即不需借助任何辅助光源——我们就可以把该渲染程序的光源看成是有“智能”的。需要注意的是,并不是说不能自动产生间接照明效果的渲染程序就是低级的。我们依然可以使用辅助光源来模拟那些间接照明的效果,作为渲染的图像来说,我们关心的仍然是图像所显示的效果,而不是产生结果的方法,所谓条条大路通罗马,目的才是最重要的。我们不要迷失其中。
[说明:天空光是一种很特殊的光源。准确的说天空光不应该称为光源,它是由于大气漫反射太阳光形成的,所以,它也可以看成是太阳光的间接照明。]
上一页 1 |