如何让图像栩栩如生? 无论虚拟三维世界有多大、多精彩,计算机都只能通过在二维屏幕上绘制像素来描画那个世界。本节将重点介绍如何让屏幕上的内容看起来栩栩如生,尤其将介绍如何尽量让场景看起来接近于现实世界。首先,我们来了解一下如何让单个静态物体看起来栩栩如生。然后,我们再回答针对整个场景的同一问题。最后,我们将介绍计算机该执行哪些操作,才能显示真实图像以真实速度进行运动的全动态场景。 要让物体的形象逼真,图像的许多要素都发挥着重要作用。其中最重要的部分包括:形状、表面特性、光照、透视、景深和抗锯齿。 形状
表面纹理
要让图像看起来“真实”,办法之一就是在图像的各个不同部分包含大量的上述三种信息。请环顾一下您的四周:您的计算机键盘与桌面在颜色、纹理、反射率方面都存在差异;而桌面的颜色、纹理、反射率又与您手臂的颜色、纹理和反射率存在差异。要生成真实的颜色,计算机必须能够从数百万种不同颜色中选择出适合构成图像的像素使用的颜色,这一点非常重要。纹理的变化来自于为各种表面(从青蛙的皮肤到Jell-o牌果冻,再到存储的应用于表面的“纹理贴图”)建立的数学模型。我们还将各种不可见的性质(软、硬、温暖、寒冷)与特定的颜色、纹理和反射率组合进行关联。只要一个方面出错,真实的感受就会被破坏。
照明 光照在产生以下两种效果方面发挥着重要作用,正是这两种效果让物体看起来具有重量和硬度:明暗和阴影。如果光线照在物体上,一侧的光线比另一侧强,这时就会产生第一种效果,即明暗。正是这种效果使得球看起来是圆的,让高颧骨看起来引人注目,让毯子上的折痕看上去有深度且柔软。这些光线强度的差异与形状配合在一起增强了这样一个假象,那就是物体具有纵深、高度和宽度。重量错觉则来自于第二个效果,即阴影。
光线照在实体上时,实体会投下阴影。观察日晷或树木投在人行道上的阴影,您就可以了解到这一点。因为我们习惯于看到真实物体和人投下阴影,所以,在三维图像中看到阴影有助于加强这样一个错觉,即我们是在透过一扇玻璃窗看真实的世界,而不是在看屏幕上以数学方式生成的各种形状。 透视
在示意图中,那些手是单独存在的,但在大多数场景中,某些物件之前都会有另一些物件,从而部分地遮挡这些物件。对于这些场景而言,软件不仅得计算物件的相对尺寸,而且还必须知道哪个物件挡在前面,以及它挡住了多少其他物件。Z缓冲区算法是计算这些因素的最常用方法。Z缓冲区算法之名来自从屏幕回穿过场景再到地平线的那条轴(或虚线)的通用标记(还可考虑使用另外两条常用轴:衡量场景左右两侧之间距离的X轴和衡量场景上下方之间距离的Y轴)。 Z缓冲区根据包含多边形的物体与场景前端之间的距离来为各个多边形分配一个数字。通常,较小的数字分配给距离屏幕较近的物件,较大的数字分配给距离地平线较近的物件。例如,一个16位的Z缓冲区会将数字32,768分配给距离屏幕最近的物体,而将32,767分配给距离屏幕最远的物体。 在现实世界中,我们的眼睛看不见其他物体之后的物体,因此我们不用去猜想自己应该看到什么。但计算机会不断遇到这个问题,并将以直接的方式来解决问题。每个物体创建出来后,其Z值就会被拿来与拥有相同X值和Y值的其他物体的Z值进行比较。具有最小Z值的物体将被完全渲染,而对于具有较大Z值的物体而言,它与具有较小Z值的物体相交的部分将不被渲染。这样做可确保我们不会看到背景物件透过前景人物,在前景人物中出现。由于物体被完全渲染之前就已采用了Z缓冲区,因此根本无须对隐藏在人物或物体之后的场景部分进行渲染。这就改善了图形的效果。 景深
导演采用景深效果的第二个原因就是要将人们的注意力集中到他们认为最重要的物件或演员身上。例如,一方面,为了将注意力集中到影片的女主角身上,导演可能会采用“浅景深”效果。采用这种效果时,只有演员清晰可见;另一方面,如果场景旨在让观众对壮观的自然景象产生深刻印象,那么就可能采用“深景深”,使场景尽量清晰,引人注目。
抗锯齿
|
|
来自: ldjsld > 《电脑手机及电子技术》