什么是光照模型

2022-1-16 18:57cgsd 114 0

每个像素都是颜色值,但是要获得这个颜色值,你要观察这个像素所处的整个环境。


一.综述


本篇文章主要概述真实感渲染中光照模型的主要理论和技术手段,细节步骤等重要问题将再以后阐述。

真实感渲染和非真实感的区别


开始之前,还是要理解一下题目中的反面:什么是非真实感渲染?


早期非真实感渲染的支持者致力于绘制媒质的仿真,用计算机重现典的钢笔画、水彩、水粉或者油画的效果,媒质仿真是非真实感渲染的一个重要分支。例如应用于实现卡通,水彩,水墨画等风格化的渲染。


二.真实感渲染(Photorealistic Rendering)

计算机图形学的一个主要的目的就是利用使计算机来产生令人赏心悦目的真实感图形。真实感图形学是计算机图形学中的一个重要组成部分,它的基本要求就是在计算机中生成三维场景的真实感图形图像。


真实感图形技术包括消隐技术、光照模型、明暗处理和纹理及纹理映射,阴影生成等


三.光照模型(illumination model


当光照射到物体表面时,物体对光会发生反射、透射、吸收、衍射、折射、和干涉,其中被物体吸收的部分转化为热,反射、透射的光进入人的视觉系统,使我们能看见物体。为模拟这一现象,我们建立一些数学模型来替代复杂的物理模型,这些模型就称为明暗效应模型或者光照明模型。下面将简要叙述光照模型研究的发展历程。

1967年,wylie等人第一次在显示物体时加进光照效果。wylie认为,物体表面上一点的光强,与该点到光源的距离成反比。
1970年,Bouknight提出第一个光反射模型,指出物体表面朝向是确定物体表面上一点光强的主要因素,用Lambert漫反射定律计算物体表面上各多边形的光强,对光照射不到的地方,用环境光代替。
1971年Gourand提出的基于“漫反射模型与插值”思想的Gourand模型。对多面体模型,用漫反射模型计算多边形顶点的光亮度,再用增量法插值计算。
1975年,phong提出图形学中第一个有影响的简单光照明模型。模型虽然只是一个经验模型,但是其真实度已达到可以接受的程度。在phong光照模型的基础之上,相继出现了Goud明暗处理和phong明暗处理两个增量式光照模型。
1980年,whitted提出了一个光透射模型:whitted模型,并第一次给出光线跟踪算法的范例,实现了模型它综合考虑了光的反射、折射透射、阴影等。从本质上来说,whitted模型也只是一种经验模型,它仅考虑特定方向上的环境入射光对被照射点的光亮度共线,因而它仅能模拟理想的镜面反射和规则的投射效果。
1982年,Cook和Torrance为了克服Phong模型的缺点,提出了一个基于物理光学的表面反射模型—Cook-Torrance模型“使得模型中反射光的位置和分布与实际情况非常接近,因而用它绘制的图形具有很好的质感。
1983年,Hall和Greenbert在whitted基础上此进一步给出Hall光透射模型,考虑了漫透射和规则透射光。改进了whitted中投射高光效果,并再环境光中加入距离衰减因子,使之能够更好的模拟物体表面的透射特性。

1986年,Kajiya统一了以前所有的光照模型.Kajiya首先提出使类似于随机采样的蒙特卡罗(Monte
Carlo)方法求解绘制方程的光线追踪算法(Raytracing),
通过对到达图像平面上的光线路径进行采样,然后估计它们对最终图像的贡献来生成图像.

3.1什么是局部光照模型:

在真实感图形学中,仅处理光源直接照射物体表面的光照明模型被称为局部光照明模型。


局部光照模型是一种比较简单的光照模型它是与光栅化渲染算法相适应的,光栅化算法一次只考虑一个像素的光照强度,因此局部光照模型不能计算某像素受其他像素影响的光照强度部分。也就是说,局部光照模型只对物体进行直接光照的计算,而不考虑其他的间接影响。


在前面已经列出的以phong模型为代表的简单光照明模型,该模型就是针对点光源照明来计算物体表面光强,从局部光照模型的定义上来看,它也属于一种局部光照模型。但是该模型是一种经验模型,它将镜面反射考虑成与物体表面的颜色和材质无关。这显然是不对的。常见的局部光照模型如下:


1.Lambert漫反射模型


Lambert是光源照射到物体表面后,向四面八方反射,产生的漫反射效果。这是一种理想的漫反射光照模型。如下图:这个是顶点函数处理后的该光照模型,因此看起来像素不够平滑。

2.phong光照明模型


Lambert模型较好的表现了粗糙表面的光照现象,如墙壁,纸张等,但是在用于诸如金属等有光泽效果的材质上则会显得呆板,表现不出光泽,主要原因是Lambert光照模型没有考虑表现这些表面的镜面反射效果。

3.BlinnPhong光照模型


BlinnPhong光照模型混合和了Lambert的漫反射和标准的高光,渲染有时比Phong高光更柔和、更平滑,此外它的处理速度相当快,因此成为许多CG软件中默认的光照渲染方法。


Phong模型及它的改进模型Blinn-Phong模型至今仍在使用,比如著名的3D软件3dsMax中的基于它们的Blinn-Phong明暗器。

4.cook-torrance光照模型


BlinnPhong模型和cook-torrance模型均建立在双向反射率这一概念上.双向反射率的定义为表面朝给定方向的反射光亮度与入射光在景物表面产生的照度之比.


3.2什么是全局光照模型

全局光照模型是基于光学物理原理的,光照强度的计算依赖于光能在现实世界中的传播情况,考虑光线与整个场景中各物体表面及物体表面间的相互影响,包括多次反射


、透射 、散射等。因此,与局部光照模型相比,全局光照模型需要相当大的计算量 ,但同时也能取得非常逼真的真实效果 。


由于计算机硬件的限制,全局光照模型一般在离线渲染领域如电影中应用,随着GPU硬件的发展和算法的改进 ,采用全局照模型的实时渲染逐渐成为研究的热点。


3.3光线跟踪


光线跟踪算法通过模拟光的传播方式,即光从光源出发经过若干次反射或折射到达摄像机的过程来实现全局光照效果。其思想起源于光线投射算法。由于只有最终到达摄像机的光线才会对生成的图像有贡献,因此光线跟踪的实现通常是从摄像机逆向发出光线,以寻找达到光源的路径。尽管对光线的跟踪方向不同,两者所遵循的计算方式是一致的。其核心操作是寻找光线与场景中物体的交点。


计算机图形学领域对光线跟踪算法的研究最早起源于1968年,当时appel正在研究隐藏面消除的光线投射算法,并首次给出了光线跟踪算法的描述。

1980年,whitted提出了第一个整体whitted光照模型并给出一般性光线跟踪算法的范例,综合考虑了光的反射、折射透射、阴影等此时的光线跟踪才真正的变成一个强大的工具。其将光线投射算法扩展为递归算法。

1984年,Cook等将类似随机采样的蒙特卡罗(Monte Carlo)方法引入减少锯齿和失真。

1986年,Kajiya首先提出使类似于随机采样的蒙特卡罗(Monte Carlo)方法求解绘制方程的光线追踪算法(Raytracing), 通过对到达图像平面上的光线路径进行采样,然后估计它们对最终图像的贡献来生成图像.
  1. whitted光线追踪

whitted提出了一种递归的光线跟踪方式,可实现直接光照、镜面反射和折射效果,如图所示。为了确定着色点是否对光源直接可见,算法从着色点向光源发射一条阴影线以寻找任意交点。如果交点存在,则意味着光照被某个物体遮挡,因而着色点必然位于阴影中。否则,着色点一定能够直接被光源照射到。为了实现镜面的反射和折射效果,当光线命中一个材质为镜面的物体时,跟踪过程在结束对当前着色点的直接光照后,会继续向反射和折射方向发射新的光线。反射和折射方向可根据物理定律得到。由于新的光线又会重复可见性判定和着色操作,因此整个跟踪过程可以按照递归的方式实现。通常,阴影线、反射和折射线被统称为次级光线以区别于从摄像机发出的主光线。

递归的光线跟踪


2.分布式光线跟踪


分布式光线跟踪引入了随机采样的思想,可以实现比递归光线跟踪更加丰富的效果。递归光线跟踪只允许点光源模型,即光源与着色点之间的遮挡判定只有“是”或“否”两种结果。因而只能实现硬阴影效果。而分布式光线跟踪允许使用面积光源从而能够支持软阴影效果。


通过从面积光源表面随机抽取若干采样点,光源与着色点间可以形成多条阴影线。遮挡关系可以通过综合多条阴影线的判定结果得出。随着阴影线数量的增加,遮挡关系的表示精度也相应扩大,从而使阴影的程度不仅限于“是”或“否”两种级别。


3.4辐射度


辐射度方法对热辐射的发散和反射的描绘基于热能工程模型,它为物体间的多重反射提供了更加精确的处理方法,避免了对漫反射光线直接处理。

辐射度方法是一种物体空间的算法,用于解离散的点或者环境中的表面曲面片的光强度问题,而不是用于解图像平面投影中的像素问题。因此,解是独立于观察者的位置的。辐射度方法也是一种能量守恒或者叫做能量平衡的方法,它作为一个封闭的空间中所有表面的辐射度提供一个解。对于系统的输入,能量来自那些作为发射器的表面。


之后的文章将重点关注这个部分


3.5光子映射


在提出光子映射之前,主流的全局光照渲染算法是光线跟踪和辐射度算法,早期的光线跟踪算法只能处理镜面反射、折射以及直接光照,随着蒙特卡罗的方法对光线跟踪算法进行的扩展,使得光线跟踪算法可以处理焦散、间接光照等效果,这种方法对甸条光线使用随机的光线分布,要得到满意的图像需要对光线进行大量的采样


光子映射在1994年被提出,95年有第一篇关于它的论文发表,它可以很好模拟包括漫反射辉映、焦散等全局光照效果,和一般的光线跟踪一样的灵活,但计算时间却少得多。当然,光子映射仍然无法达到实时的地步。


基飞光子映射的全局光照算法有两步:


第一步,从光源向场景发射光子,少在它们碰到镜面物体时发生反射,在碰到镜面物体时按一定几率反射,将不发生反射的光子保存在一个光子图中,建立光子图。光子图表示了光源发出的能量在场景中的分布。


第二步,渲染,使用统计方法从光子图中提取出场景中所有点的入射通量以及反射辐射能。光子图与场景表述是完全分离开的,这一特性使得光子映射方法能处理很复杂的场景,包括千万个三角面片,实例化的几何体,复杂的过程式物体.


鲜花

握手

雷人

路过

鸡蛋

最新评论

QQ|手机版|小黑屋|九艺游戏动画论坛 ( 津ICP备2022000452号-1 )

GMT+8, 2024-4-26 10:37 , Processed in 0.096227 second(s), 18 queries .

Powered by Discuz! X3.4  © 2001-2017 Discuz Team.