渲染(phong或Blinn -Phong反射模型,Gouraud与Phong插值阴影)

渲染(phong或Blinn -Phong反射模型,Gouraud与Phong插值阴影)

1.1本地与全球照明
•照明模型:自然之光
•反射模型:光的相互作用与表面的特性和事件的本质光。
•今天的要点:本地反射模型。
•以后的要点:“全球”技术,例如 射线追踪。

1.2本地反射模型
•我们只考虑光源直接照明表面
•表面倾斜朝向光来源的表面将更明亮

1.3概述
•多边形的顶点是从世界空间进入屏幕空间的空间
•多边形重叠像素的集合
•对于每个像素计算强度
•因此,阴影算法起作用屏幕空间:增量算法
•但是,照明计算是在世界空间

2.Phong Inlumination(1975)
•仅直接照明。
•没有阴影,也没有对象之间的反射。
•物理反射现象:
完美的镜面反射
不完美的镜面反射
完美的漫反射(Gouroud,71)

弥漫性反射是从表面的光或其他波或颗粒反射的反射,使入射在表面上的射线以许多角度散射,而不是在一个角度散布,如镜面反射而言。 理想的弥漫性反射表面据说表现出兰伯特的反射,这意味着当从各个方向上观察到位于表面的半个空间中时,亮度相等。
对象的可见性(不包括发光的物体)主要是由光的弥散反射引起的:它是散射的光线,形成观察者眼中对象的图像。

3个组件的线性组合:
反射光=环境ambient +散射diffuse +镜面specular
I = ka Ia + kd Id + ks Is
such that ka+kd+ks=1

2.1 环境Ambient
模拟(近似)的常数全球或间接照明
•照亮所有表面,即使从光源看不到
•没有环境术语,对象的一部分看不到光将被呈现为黑色的
• Ia - 环境光强度
•Ka - 反映的环境光的部分;本质上定义了表面的颜色

2.2 散射Diffuse (Lambertian)
•粉笔等暗淡的哑光表面从各个方向看起来同样明亮
•表面的亮度取决于表面的正常(normal of the surface)
Id = IL cosθ = IL(L.N) 0 <= θ <= π
其中l和N是单位向量,lL是事件的强度光,θ是表面之间的角度,正常n处于兴趣点以及光的方向来源l

2.3镜面specular
•完美光滑的闪亮物体反映在镜子方向
•但是,大多数物体不是理想的,所以光线是反映在镜子方向附近
•phong模型使用 cos ^n a:
Is = IL cos ^n a = IL (R.V) ^n
其中R和V是单位向量,IL是入射光的强度,a是观看之间的角度方向V和镜子方向R,n是模拟度的索引表面 - 衰减因子的不完美

2.4合并
I = ka Ia + IL (kd(L.N) + ks (R.V)^n )

2.5其他
•启发式大气衰减(Heuristic atmospheric attenuation):
I = ka Ia +f att IL (kd(L.N) + ks (R.V)^n )
where f att =1/(distFromSurfaceToLight^2)
•多个灯:
I = ka Ia +∑ IL (kd(L.N) + ks (R.V)^n )
溢出的可能性,即最大的光强度被破坏 - 需要固定值。

2.6 Blinn-Phong
Phong: I = ka Ia + IL (kd(L.N) + ks(R.V)^n)
Blinn-Phong: I =ka Ia + IL (kd(L.N) + ks(N.H)^n’)
计算R.V很昂贵
•定义:H =(L+V)/2然后归一化(或H =(L+V)/ǁL+vǁ)
•术语(N.H)以与(R.V)相同的方式变化
•OpenGL固定功能管道中使用的默认模型

Blinn -Phong反射模型,也称为修饰的phong反射模型,是吉姆·布林(Jim Blinn)对phong反射模型开发的修改。
Blinn – Phong是OpenGL和Direct3D的固定功能管道中使用的默认阴影模型(Direct3d 10和OpenGL 3.1之前),并在每个顶点在图形管道上传递时都会在每个顶点上执行; 默认情况下,顶点之间的像素值是通过古罗德阴影插值的,而不是计算更昂贵的phong阴影

2.7颜色
•我们使用强度的三个颜色组件:Ir,Ig,Ib
•对于白光,Ks 在所有三个方程式中都是相等的:
Ir = kar Ia + IL (kdr(L.N) + ks(N.H)^n)
Ig = kag Ia + IL (kdg(L.N) + ks(N.H)^n)
Ib = kab Ia + IL (kdb(L.N) + ks(N.H)^n)

3.光源注意事项
•(Warn,83)为我们提供了一个简单的定向光源来模拟聚光灯: IL = Is(-L.Ls)^m

4.Gouraud插值阴影
•在世界空间中完成的照明计算,在每个顶点需要正常:
I = f(n)
•1971年:环境和分散;1975年开始:phong:环境,弥漫和镜面
•现在每个顶点都有强度
•每个顶点都投影到屏幕空间
•现在需要计算哪些像素是被三角形覆盖,每个的强度是什么
•在多边形上的双线性插值顶点强度给每个像素的强度
•加权平均值:
Ia = (1/(y2-y0)) (I2(ys-y0) +I0(y2-ys))
•这个过程通常使眼睛看不到多边形之间的边界边缘:
扁平阴影,使用多边形正常计算的整个多边形的单颜色(better); Gouraud插值阴影,没有镜面术语(worse)
•由于强度仅在顶点计算,因此该方法不能充分处理镜面亮点(除非几何分辨率是使多边形投影到2x2像素)

5.Phong插值阴影
•每个顶点都有正常
•每个顶点都投影到屏幕空间
•世界空间顶点正常是使用屏幕空间插值计算
•插值正常用于计算强度
•在世界空间中完成的照明计算使用插值正常

6.Gouraud与Phong插值阴影
•Gouraud:使用正常的强度在每个顶点计算; 强度跨多边形插值
•phong:顶点正态在多边形上插值; 强度使用插值正常对每个像素进行计算
•phong的额外费用:
矢量插值是强度插值的三倍
在每个步骤中,必须将正常标准化
在每个步骤(即每个像素),进行照明计算

8.总结
•本地模型 - 仅在自由空间中近似于单个对象的现实空间
•还有其他局部反思模型包含其他效果:例如 微纤维模型(Cook&Torrance,82),特定的型号材料,地下散射
•插值阴影:
Gouraud强度插值,带有phong或blinn-phong的多边形顶点处的反射模型是固定函数最常见的管道
phong正常插值,带有phong或blinn-phong反射每个像素的模型是“标准”质量阴影方法 - 这可以可以在GPU上使用每个像素阴影来实现

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值