渲染的概念
渲染,英文为Render,也有的把它称为着色,但我更习惯把Shade称为着色,把Render称为渲染。因为Render和Shade值两个词在三维软件中是截然不同的两个概念,虽然它们的功能很相似,但却有不同。Shade是一种显示方案,一般出现在三维软件的主要窗口中,和三维模型的线框图一样起到辅助观察模型的作用。很明显,着色模式比线框模式更容易让我们理解模型的结构,但它只是简单的显示而已,数字图像中把它称为明暗着色法。在像Maya这样的高级三维软件中,还可以用Shade显示出简单的灯光效果、阴影效果和表面纹理效果,当然,高质量的着色效果是需要专业三维图形显示卡来支持的,它可以加速和优化三维图形的显示。但无论怎样优化,它都无法把显示出来的三维图形变成高质量的图像,这时因为Shade采用的是一种实时显示技术,硬件的速度限制它无法实时地反馈出场景中的反射、折射等光线追踪效果。而现实工作中我们往往要把模型或者场景输出成图像文件、视频信号或者电影胶片,这就必须经过Render程序。
Shade视窗,提供了非常直观、实时的表面基本着色效果,根据硬件的能力,还能显示出纹理贴图、光源影响甚至阴影效果,但这一切都是粗糙的,特别是在没有硬件支持的情况下,它的显示甚至会是无理无序的。
Render效果就不同了,它是基于一套完整的程序计算出来的,硬件对它的影响只是一个速度问题,而不会改变渲染的结果,影响结果的是看它是基于什么程序渲染的,比如是光影追踪还是光能传递。
渲染的基本过程
首先,必须定位三维场景中的摄像机,这和真实的摄影是一样的。一般来说,三维软件已经提供了四个默认的摄像机,那就是软件中四个主要的窗口,分为顶视图、正视图、侧视图和透视图。我们大多数时候渲染的是透视图而不是其他视图,透视图的摄像机基本遵循真实摄像机的原理,所以我们看到的结果才会和真实的三维世界一样,具备立体感。接下来,为了体现空间感,渲染程序要做一些“特殊”的工作,就是决定哪些物体在前面、哪些物体在后面和那些物体被遮挡等。空间感仅通过物体的遮挡关系是不能完美再现的,很多初学三维的人只注意立体感的塑造而忽略了空间感。要知道空间感和光源的衰减、环境雾、景深效果都是有着密切联系的。
渲染程序通过摄像机获取了需要渲染的范围之后,就要计算光源对物体的影响,这和真实世界的情况又是一样的。许多三维软件都有默认的光源,否则,我们是看不到透视图中的着色效果的,更不要说渲染了。因此,渲染程序就是要计算我们在场景中添加的每一个光源对物体的影响。和真实世界中光源不同的是,渲染程序往往要计算大量的辅助光源。在场景中,有的光源会照射所有的物体,而有的光源只照射某个物体,这样使得原本简单的事情又变得复杂起来。在这之后,还要是使用深度贴图阴影还是使用光线追踪阴影?这往往取决于在场景中是否使用了透明材质的物体计算光源投射出来的阴影。另外,使用了面积光源之后,渲染程序还要计算一种特殊的阴影--软阴影(只能使用光线追踪),场景中的光源如果使用了光源特效,渲染程序还将花费更多的系统资源来计算特效的结果,特别是体积光,也称为灯光雾,它会占用代量的系统资源,使用的时候一定要注意。
在这之后,渲染程序还要根据物体的材质来计算物体表面的颜色,材质的类型不同,属性不同,纹理不同都会产生各种不同的效果。而且,这个结果不是独立存在的,它必须和前面所说的光源结合起来。如果场景中有粒子系统,比如火焰、烟雾等,渲染程序都要加以“考虑”。
(责任编辑:城市网)