第9章 phong光照模型
光照模型
透 明
透明算法原理
在透明算法中若不考虑折射,则上述情况都不会发生, 这里也不 考虑光线在媒介经过的距离对光强度的影响 如果可见面是透明的,则可用它与其最靠近的物体表面光强度的线 性组合表示透明面的光强度。公式如下: I = tI1+(1-t)I2 (5 - 16) 其中,I1为可见面的光强度,I2为距可见面最近表面的光强度,t为 I1所在物体表面的透明度 (0≤t≤1)(t=0,可见面不可见;t=1,可见面 不透明) 若I2所对应的面也是透明面,则可按上述过程递归处理,直到遇到 不透明面为止 曲面物体的处理方法,引入透明因子(基于曲面法矢量的z分量): t=tmin+(tmax-tmin)[1-(1-|nz|p)] 其中,tmin和tmax 分别为物体的最小和最大透明度,nz为表面的法 矢量的z分量,p为透明指数,t为物体表面上任一点或屏幕上任意 象素点上的透明度
对曲面用不同多边形分割, 会产生不同效果
Gouraud明暗处理
Gouraud明暗处理算法分析
以三边形和四边形为例,我们可以看出不同点:
用三边形分割
用四边形分割
Phong明暗处理
Phong明暗处理原理
P处法矢量的计算可分为两步: – 对A,B处法矢量作线性插值求处Q处法矢量,对B,C处法矢量 作线性插值求出R处法矢量;
阴影处理算法原理
阴影处理算法
本算法只考虑单个物体情况,物体以体矩阵形式存放。入射光线矢
量以一维数组存放。视点放在Z轴上。主要步骤如下:
– 针对入射光线,判断物体各个面是不是自身消隐面(即对光线是 否可见);
– 对每个非自身消隐面,求出其在基平面的投影多边形(即投影面
光照模型
S
N
S R V
简单光照模型-镜面反射
• 镜面反射光特点
– 空间分布具有一定方向性 – 光强不仅取决于入射光和表面材料,还与观察方向
有关 – 具有与入射光相同的性质
N R L
P
镜面反射
简单光照模型-Phong光照模型
• 简单光照模型模拟物体表面对光的反射 作用,光源为点光源 • 反射作用分为
• 1975年,Phong提出图形学中第一个有影
简单光照模型-Phong光照模型
• Phong光照模型的综合表述:由物体表面上 一点P反射到视点的光强I为环境光的反射 光强Ie、理想漫反射光强Id、和镜面反射光 Is的总和。
I Ie Id Is
I a Ka I p [ Kd ( L N ) K s (V R)n ]
考虑周围环境对当前景物表面的光照影
响,忽略了光在环境景物之间的传递,
很难表现自然界复杂场景的高质量真实
感图形。为了增加图形的真实感,必须
考虑环境的漫射、镜面反射和规则投射
对景物表面产生的整体照明效果。
7.3.6 整体光照模型
• 物体表面入射光的构成
(1)光源直接照射
(2)其它物体的反射光 (3)透射光
• 点光源的照射:在物体的不同部分其亮度也
不同,亮度的大小依赖于物体的朝向及它与点光源 之间的距离.
简单光照模型-漫反射角度余弦的推导
• 漫反射
– 粗糙、无光泽物体(如粉笔)表面对光的反射 – 光照方程
I d I p K d cos
[0, ]
2
• I d 漫反射的亮度 • I p 点光源的亮度
N
R L
N
Phong光照模型的Shader实现
Phong光照模型的Shader实现计算反射向量Phong⽤到的是反射向量,计算反射向量的公式是R = 2*N(dot(N, L)) - L这个公式是根据向量的投影公式以及平⾏四边形法则推导出来的详细步骤请看这篇⽂章,讲的⾮常好Shader "Phong"{Properties{_MainTex ("Texture", 2D) = "white" {}_Specular("Specular", Range(1, 20)) = 1_SpecColor("SpecColor", Color) = (1,1,1,1)}SubShader{Tags { "RenderType"="Opaque" }LOD 100Pass{CGPROGRAM#pragma vertex vert#pragma fragment frag#include "UnityCG.cginc"struct v2f{float2 uv : TEXCOORD0;float4 vertex : SV_POSITION;float3 normal : TEXCOORD1;float3 lightDir : TEXCOORD2;float4 objPos : TEXCOORD3;};sampler2D _MainTex;float4 _MainTex_ST;float4 _LightColor0;float _Specular;float4 _SpecColor;v2f vert (appdata_full v){v2f o;o.objPos = v.vertex;o.vertex = mul(UNITY_MATRIX_MVP, v.vertex);o.uv = TRANSFORM_TEX(v.texcoord, _MainTex);o.normal = v.normal;o.lightDir = ObjSpaceLightDir(v.vertex);//把光向量从世界空间转成模型空间return o;}fixed4 frag (v2f i) : SV_Target{float3 L = normalize(i.lightDir);float3 N = normalize(i.normal);float3 viewDir = normalize(ObjSpaceViewDir(i.objPos));//计算出视线float diff = saturate(dot(L, N));float3 reflection = normalize(2.0 * N * diff - L);//反射向量float spec = pow(max(0, dot(reflection, viewDir)), _Specular);float3 finalSpec = _SpecColor.rgb * spec;//漫反射+镜⾯⾼光+环境光float3 finalLight = diff * _LightColor0 + finalSpec + UNITY_LIGHTMODEL_AMBIENT;fixed4 col = tex2D(_MainTex, i.uv);return col * float4(finalLight, 1);}ENDCG}}}Blinn-phong光照模型blinn是⼀个⼈的名字,他叫吉姆·布林,图形学界的⼤⽜,他发现了使⽤半⾓向量代替反射向量的计算⽅式原理是通过视线向量跟光向量的半⾓向量代替反射向量halfVector = normalize( L + V );/herox25000/article/details/50491483在图形学中,计算光照模型时,经常需要求取反射向量,⼀般的shader函数库都提供计算反射向量的⽅法,下⾯介绍⼀下如何⼿动计算反射向量。
phong光照模型
05
Phong光照模型的优缺 点
优点
真实感强
Phong光照模型能够模拟出较为真实的光照效果,通过计算不同表 面的反射特性,能够呈现出较为逼真的材质质感。
灵活性高
Phong光照模型提供了多种光照参数,如环境光、漫反射光和镜面 光等,允许开发者根据需求调整光照效果,以适应不同的场景和需 求。
易于实现
。
编写着色器
Unity使用着色器来实现光照模型,需要编写相应的Phong 着色器代码。
渲染图像
将着色器代码应用到物体上,并根据光源和材质属性计算 出物体的光照强度,最终渲染出具有真实感的3D图像。
THANKS FOR WATCHING
感谢您的观看
沉浸式体验
Phong光照模型能够提供逼真的光照效果,使虚拟现实场景更加 真实、自然,提高用户的沉浸感。
交互式探索
通过Phong光照模型,虚拟现实开发者可以为用户提供更加丰富的 交互体验,如实时调整光照、观察物体表面的反射等。
教育与培训
Phong光照模型在虚拟现实中的教育应用也很广泛,如模拟实验、 历史场景重建等,有助于提高学习效果和培训质量。
04
Phong光照模型的应用
游戏开发
逼真渲染
Phong光照模型能够提供 逼真的光照效果,使游戏 场景更加真实、生动。
细节表现
通过Phong光照模型,游 戏开发者可以更好地表现 物体的细节和纹理,提升 游戏的视觉体验。
交互性增强
Phong光照模型能够根据 玩家的视角和动作实时调 整光照效果,增强游戏的 交互性和沉浸感。
折射光
折射光的概念
折射光是指光线在穿过透明物体时发生折射后形成的影像。在Phong光照模型中,折射光的计也是实现逼真光照效 果的重要一环。
第9章 光照模型02
上海交通大学计算机系 何援军
17
9.5.3 光线跟踪算法
//计算与景物的交点并计算最近交点的光照值 // depth是光栅树的当前深度
RayColor RayTracing(RayTracing ray , int depth)
{ 确定光线与某个景物object的最近交点intersection; if (命中景物) { 计算交点处景物表面的法向normal; return RayShading(object,ray, intersection, normal, depth); }
2005年7月5日
上海交通大学计算机系 何援军
24
9.5.4 关键技术——加速算法
加速算法的常用策略有:
1)控制跟踪深度 在光线跟踪基本算法中,结束光线跟踪的 条件是光线不与任何景物相交,或已达到 预定的最大光线跟踪深度。 对于复杂的场景,没有必要将光线跟踪得 很深,可根据光线所穿过区域的性质自适 应地改变跟踪深度。
1条视线E,是由视点 V与屏幕上的像素点 (x,y)发出的射线; 对每一景物表面上的 交点Pi有3条光线:
①与光源的连线Si ②反射光线Ri ③折射光线Ti
2005年7月5日 上海交通大学计算机系 何援军 14
9.5.3 光线跟踪算法
光线跟踪算法构成的光线树
2005年7月5日
上海交通大学计算机系 何援军
9.5.3 光线跟踪算法
根据光线跟踪算法的定义,计算景物表面 某点P的光强应由3部分组成:
由光源产生的直接的光线照射光强 反射方向上对其它景物引起的间接光照光强 折射方向上对其它景物引起的间接光照光强
2005年7月5日
上海交通大学计算机系 何援军
13
9.2简单光照模型
PDF pdfFactory
一、Phong光照模型
在实际的应用中,由于Phong光照模型是一个经验模型, 因此还具有以下的一些问题: –显示出的物体象塑料,无质感变化 –没有考虑物体间相互反射光 –镜面反射颜色与材质无关 –镜面反射入射角大,会产生失真现象
PDF pdfFactory
PDF pdfFactory
三、背景物理知识
镜面反射光:一束光照射到一面镜子上或不绣钢的表面,光 线会沿着反射光方向全部反射出去,这种叫镜面反射光。 折射光:比如水晶、玻璃等,光线会穿过去一直往前走。 吸收光:比如冬天晒太阳会感觉到温暖,这是因为吸收了太 阳光。
PDF pdfFactory
PDF pdfFactory
PDF pdfFactory
PDF pdfFactory
二、光照模型的发展演化
1、早期发展 1967年,Wylie等人第一次在显示物体时加进光照效果, 认为光强与距离成反比。 1970年,Bouknight提出第一个光反射模型:Lambert漫 反射+环境光(第一个可用的光照模型)。这篇文章发表 在 Communication of ACM 上。 1971年,Gouraud提出漫反射模型加插值的思想(漫反射 的意思是光强主要取决于入射光的强度和入射光与法线的夹 角)发表在 IEEE Transactions on Computers 上。 1975年,Phong提出图形学中第一个最有影响的光照明模型 。在漫反射模型的基础上加进了高光项。
PDF pdfFactory
PDF pdfFactory
三、背景物理知识
1、光的传播规律 反射定律:入射角等于反射角,而且反射光线、入射光 线与法向量在同一平面上。
Unityshader学习之Blinn-Phong光照模型
Unityshader学习之Blinn-Phong光照模型Blinn-Phong光照模型不⽤计算反射⽅向,计算公式如下:h = normalize(v + l);C specular = C light * m specular * pow(max(0, dot(n, h), gloss))转载请注明出处:shader如下:1 Shader "Custom/Specular Blinn-Phong"2 {3 Properties4 {5 _Diffuse ("Diffuse Color", Color) = (1,1,1,1)6 _Specular ("Specular Color", Color) = (1,1,1,1)7 _Gloss ("Gloss", Range(8, 256)) = 88 }9 SubShader10 {11 Tags { "RenderType"="Opaque" }12 LOD 1001314 Pass15 {16 Tags { "LightMode"="ForwardBase" }1718 CGPROGRAM19#pragma vertex vert20#pragma fragment frag2122 #include "UnityCG.cginc"23 #include "Lighting.cginc"2425struct appdata26 {27 float4 vertex : POSITION;28 float3 normal : NORMAL;29 };3031struct v2f32 {33 float4 vertex : SV_POSITION;34 float3 worldPos : TEXCOORD0;35 float3 worldNormal : TEXCOORD1;36 };3738 fixed4 _Diffuse;39 fixed4 _Specular;40float _Gloss;4142 v2f vert (appdata v)43 {44 v2f o;45 o.vertex = UnityObjectToClipPos(v.vertex);46 o.worldNormal = UnityObjectToWorldNormal(v.normal);47 o.worldPos = mul(unity_ObjectToWorld, v.vertex);48return o;49 }5051 fixed4 frag (v2f i) : SV_Target52 {53// specular54 float3 worldNormal = normalize(i.worldNormal);55 float3 lightDir = UnityWorldSpaceLightDir(i.worldPos);56 lightDir = normalize(lightDir);57 float3 viewDir = UnityWorldSpaceViewDir(i.worldPos);58 viewDir = normalize(viewDir);59 float3 halfDir = normalize(lightDir + viewDir);60float d = max(0, dot(halfDir, worldNormal));61 float3 spec = _LightColor0.rgb * _Specular.rgb * pow(d, _Gloss);6263// diffuse64 float3 diff = _LightColor0.rgb * _Diffuse.rgb * max(0, dot(lightDir, worldNormal));6566 float3 c = spec + diff + UNITY_LIGHTMODEL_AMBIENT.rgb;67return fixed4(c, 1);68 }69 ENDCG70 }71 }72 }效果如下:这种光照模型的⾼光反射看起来更⼤,更亮⼀些。
实验:Phong模型(详细)
计算机图形学课程实验:Phong模型目录1 Phong模型 (1)1.1 光源设置 (1)2 光照计算 (3)2.1 定向光 (3)2.2 点光源 (4)2.3 聚光 (4)1 Phong模型接下来,我们来介绍一下Phong模型。
绘制效果如下,我们可以看到,中间的立方体是被照射的对象,有一个定向光源,六个点光源和一个聚光的光源。
图1 效果图我们的程序流程主体还是跟前面的课程相同。
因此我们这节的重点部分就是主要在这两个方面,一个是光源的设置,一个是光照计算。
1.1 光源设置首先是光源的设置,我们这里的光源种类主要有三种,定向光,点光源和聚光,三种光源的效果叠加形成了我们刚才看到的效果。
那么我们在代码中是如何实现的呢?首先我们来看定向光,定向光就是类似太阳这种,它的属性包括定向光的方向,以及环境光,漫反射光,镜面反射光的强度参数。
由于定向光是光源处于无限远处的平行光,因此我们无需指定出定向光光源具体的位置,只需指定其指向的方向即可。
接下来是点光源,我们定义了六个点光源,点光源就是类似灯泡这种,每一个点光源的属性都包括点光源的位置,环境光,漫反射光,和镜面反射光的1强度参数,这里每一个分量都要乘一个点光源的颜色。
那么除此之外点光源与定向光有哪些不同呢?它与定向光不同的是它多了三个属性参数,这三个参数是用来计算衰减公式的三个系数,分别是constant常数项,linear一次项和quadratic二次项,它会使得光线强度随距离的增加不断减小并且衰减的幅度也逐渐减小,这样更接近现实生活中点光源的效果。
我们的第三种光源是聚光,聚光就是类似手电筒的这种效果,聚光的属性也包括聚光光源的位置,方向,这里我们是用摄像机的位置和朝向来指定的,还有环境光,漫反射光,和镜面反射光的强度参数以及三个衰减系数,那么除此之外聚光光源与点光源又有哪些不同呢?这里我们又多了两个参数分别表示我们聚光内外圆锥的内外切光角。
聚光的效果就相当于是一个圆锥的光效,我们这里通过使用两个圆锥来使我们的聚光效果看起来更加平滑。
球体Phong光照模型课程设计报告
计算机图形学课程设计课程设计球体Phong光照模型一、实验目的(1)掌握双线性法矢插值模型;(2)掌握ZBuffer算法的思想;(3)掌握有效边表填充算法;二、实验要求1、建立三维坐标系Oxyz,原点位于屏幕客户区中心,x轴水平向右为正,y轴垂直向上为正,z轴垂直于屏幕指向观察者。
2、绘制体心和坐标系中心重合的球体表面,使用Z-Buffer消隐算法进行消隐。
3、使用单点光源对球体进行照射生成Phong光照模型,光源位置位于球体右上方。
4、背景色设置为RGB(128,0,0)。
5、使用键盘方向键旋转球体。
6、使用鼠标左击缩小球体、右击增大球体。
三、实验步骤建立球体的网格模型,使用地理划分法将球体北极和南极划分为三角形面片,其余部分划分为四边形面片,先对球体网格模型进行背面剔除,然后使用深度缓冲算法进行消隐。
计算面片各顶点的平均法矢量,然后采用双线性法失插值计算面片内各点的法矢量。
最终根据每点的法矢量对光源的朝向,通过简单光照模型计算所获得的光强。
面片使用有效边表算法填1、Phong双线性法矢插值模型Gouraud双线性光强插值模型解决了相邻多边形之间的颜色突变问题,产生的真实感图形颜色过渡均匀,图形显得非常光滑,这是它的优点,但是,由于采用光强插值,其镜面反射光效果不太理想,而且相邻多边形边界处的马赫带效应并不能完全消除。
Phong 模型提出的双线性法矢插值模型可以有效的解决上述问题,产生正确的高光区域。
Phong 模型在进行光强插值的时候,需要先对面片的每一个顶点计算平均法矢量,然后通过双线性法矢插值计算面片内每个点的法矢量,最后根据简单光照模型计算面片上各点的颜色值。
基本算法如下。
(1)计算面片顶点的平均法矢量。
∑∑===ni ini iNN N 11由于球心位于三维坐标系原点,所以球面上任意面片的顶点平均法矢量就是该点的位置矢量。
(2)计算面片内部各点的法矢量。
在图中,三角形面片的顶点坐标为),(000y x P ,法矢量为0N ;),,(111y x P 法矢量是1N ;。
phong着色
Phong光照模型的简单说明我简单地介绍一下Phong光照模型...虽然这种光照模型算是比较古老的,但是通过合适的参数设置,仍然可以实现真实的效果。
我们的目标是渲染出以下效果,这里以Doom3的男主角为例(终于不是怪物了...)一般而言,Phong光照模型分为三个累加阶段:漫反射,镜面反射和环境光以下按顺序说明:1.漫反射(Diffuse)对于表面比较粗糙的物体,基本表面的明暗就是漫反射效果,比如裤子的材质。
某一个象素的明暗系数只取决于该点与光源的相对位置,而与眼睛的位置无关。
diffuse_color = base_map * (N * V_L )* mat_diffuse * light_diffuse;上式中base_map代表该点的基础颜色,一般通过纹理索引;N 是该点的法线;V_L是该点到光源方向的单位向量;N * V_L 即两者的点积,注意需要用max( ( N * V_L ), 0 ),因为负的值是没有意义的;mat_diffuse和light_diffuse分别是材质和光源的漫反射系数,用来宏观调制漫反射的颜色。
下图是只有N * V_L 项的渲染结果:2.镜面反射(Specular)尽管漫反射已经可以很好地表达光照,但是由于它是与视点无关的,所以多少有些欠缺生动,而镜面反射是视点相关的,所以会随着眼睛位置的变化而“流动”。
specular_color = pow( v_e' * v_l, gloss ) * mat_specular * light_specular;这里解释一下:v_e' 是e_v的反射向量(v_e' = reflect( e_v, n ) ),而e_v是眼睛到该点的单位向量,所谓反射向量,即以与该点的法线所垂直的平面做镜面反射所得到的向量(虽然按照原理来说,应该是光线反射,而非视线反射...都没有问题吧);v_l是该点到光源的单位向量;v_e' * v_l 是两者的点积, 同样要用max(v_e' * v_l,0),负的值也是不需要的;pow是幂积,点积是底,gloss是指数;gloss用来调制亮斑的大小,一般来说,gloss越大,光斑越细小,gloss越小,光斑分布越宽泛。
第9章 phong光照模型
RGB模型
❖ R、G、B分别取值0-1,0-255
RGB彩色模型也称为加色模型, 色彩来源于红、绿、蓝3种基本 色的不同亮度的叠加,故称加色 模型。 它主要用来描述发光设备,如显 示器、电视机、扫描仪等装置所 表现的颜色。
三基色示意图
9.1 简单光照明模型
用计算机在图形设备上生成连续色调的真实感图形必 须完成四个基本的任务
➢使用通常的多边形扫描线算法来绘制这种近似表示的物体, 则生成的图形将失去原有曲面的光滑性,而呈现多面体状。
➢原因:不同平面片之间存在不连续的法向量,导致由多个平
面片表示的物体表面光亮度呈现不连续跃变
1
4
5
7
2
3
6
(a)
(b)
图 光滑表面的多边形表示
解决方法 ➢用尽可能小的多边形来逼近和表示曲面, 使光照效果中存在的不连续的光亮度跳 跃变化小于人类视觉的分辨率
➢ 光是来自四面八方的。
这种光产生的效应简化为它在各个方向都有均匀的光
强度Ia,
➢ 某一个可见物体在仅有环境光照明的条件下, 其上各点明暗程度完全一样,分不出哪个地方亮, 哪个地方暗。
环境反射光亮度可表示为:
I Ipaka
➢ Ia为物体的环境光反射亮度,
➢ Ipa为环境光亮度,
➢ ka为物体表面的环境光反射系数(0≤ka≤1)
光照明模型
➢简单光照明模型
✓仅考虑光源直接照射在景物表面所产生的光照 效果 ✓景物表面通常被假定为不透明,且具有均匀反 射率 ✓能表现由光源直接照射在漫射表面上形成的连 续明暗色调,镜面上的高光以及由于景物互相遮 挡而形成的阴影等
光照明模型
光照效果
光照明模型
一个光照的球体
第九章 使用MFC实现真实感图形绘制
第九章使用MFC实现真实感图形绘制真实感图形绘制是计算机图形学的一个重要组成部分。
它综合利用数学、物理学、计算机科学和其他学科知识在计算机图形设备上生成象彩色照片那样的真实感图形。
要用计算机图形设备绘制场景的真实感图形,就必须首先在计算机中建立该场景的模型,用这个模型来反映场景的特点和属性。
这一模型通常是由一批几何数据及数据之间的拓扑关系来表示的,这就是造型技术,它是真实感图形绘制技术的重要组成部分。
有了三维场景的模型,并给定了观察点和观察方向以后,就可以通过几何变换和投影变换在屏幕上显示该三维场景的二维图像。
为了使二维图像具有立体感,并尽可能逼真地显示出该物体在现实世界中被观察到的形象,就需要运用适当的光照模型,来模拟场景在现实世界中受到各种光源照射时的效果,这就是真实感图形的画面绘制技术,也就是真实感图形的生成技术。
用计算机在图形设备上生成连续色调的真实感图形大致可以分为以下四步:第一步,用数学方法建立所需三维场景的几何描述,并将它们输入至计算机。
这部分工作可由三维立体造型或曲面造型系统来完成。
场景的几何描述直接影响了图形的复杂性和图形绘制的计算耗费,因此选择合理的、有效的数据表示和输入手段是非常重要的。
第二步,将三维几何描述转换为二维投影图。
这可以通过对场景的投影变换来完成。
第三步,确定场景中的所有可见面,这需要使用隐藏面消除算法将被其他物体遮挡的不可见面消去。
第四步,计算场景中可见面的颜色,严格地说,就是根据基于光学物理的光照明模型计算可见面投射到观察者眼中的光亮度大小和色彩分量,并将它转换成适合图形设备的颜色值,从而确定投影画面上每一象素的颜色,最终生成图形。
前三步的相关知识在前面已经进行了介绍,本章将重点介绍如何通过MFC 编程的方式,利用光照模型计算场景中可见面的光亮度和颜色,并绘制最终的真实感图形。
实际上,现在OpenGL和DirectX等图形函数库提供了很多支持真实感图形绘制的函数,使用它们可以更轻松的完成真实感图形绘制。
phong光照模型公式
phong光照模型公式Phong光照模型公式介绍•光照模型是计算计算机图形学中的重要概念之一,它描述了光照在物体表面的作用。
•Phong光照模型是计算机图形学中最常用的光照模型之一,由Bui Tuong Phong提出。
•本文将详细介绍Phong光照模型的公式及其各个组成部分。
Phong光照模型公式Phong光照模型可以分为三个独立的部分:环境光照、漫反射光照和镜面光照。
它们的组合就是物体的最终光照效果。
环境光照•环境光照是来自周围环境的无方向光,对物体的作用均匀而全局。
•环境光照的计算公式为:Ia = ka * La•其中,Ia是环境光照的强度,ka是环境光照系数,La是环境光颜色。
漫反射光照•漫反射光照是来自光源的有方向光,对物体表面的不同区域有不同的作用。
•漫反射光照的计算公式为:Id = kd * Ld * max(0, N · L)•其中,Id是漫反射光照的强度,kd是漫反射系数,Ld是光源颜色,N是物体表面法向量,L是光源方向向量。
镜面光照•镜面光照是来自光源的有方向光,对物体表面的特定区域产生高光效果。
•镜面光照的计算公式为:Is = ks * Ls * max(0, R · V)^s •其中,Is是镜面光照的强度,ks是镜面反射系数,Ls是光源颜色,R是光的反射方向向量,V是视线方向向量,s是镜面光照的反射指数。
光照模型的应用•Phong光照模型通常用于计算机图形学中的渲染算法,用于模拟真实世界中的光照效果。
•光照模型的计算可以应用于三维模型的表面上,使其在渲染过程中呈现出真实感和立体感。
总结•Phong光照模型通过组合环境光照、漫反射光照和镜面光照三个部分,可以模拟真实世界中的光照效果。
•光照模型在计算机图形学中有着广泛的应用,能够提升渲染效果和真实感。
•了解Phong光照模型的公式及其组成部分,对于研究和应用计算机图形学具有重要意义。
以上是对Phong光照模型公式的介绍和解析。
Phong光照模型
Phong光照模型简介在3D计算机图形学中,Phong着⾊是计算机图形学先驱Bui Tuong Phong发明的⼀种⽤于表⾯着⾊的插值技术。
也称为Phong插值或法向⽮量插值阴影。
它会在栅格化的多边形上内插表⾯法线,并根据内插法线和反射模型计算像素颜⾊。
Phong阴影也可以指Phong插值和Phong反射模型的特定组合。
主要过程:计算多边形顶点的法向量双线性插值计算每个像素点的法向量通过每个像素的法向量计算光强根据光强绘制像素历史:在1975年,由Phong提出,以他的名字冠名,是⼀种局部光照的模型。
Phong着⾊法与Gouraud着⾊法⽐较Phong着⾊法与Gouraud着⾊法类似,区别在于进⾏双线性插值的不是光照强度本⾝,⽽是顶点的法线。
因此使⽤这种着⾊法计算出的⾼光⽐Gouraud着⾊更精确。
Phong着⾊法与Gouraud著⾊法⽐较,Phong著⾊法的效果更逼真,能够提供更好的光滑曲⾯的近似值。
Phong著⾊法假设⼀个平滑变化的曲⾯为⼀⽮量。
在对于有较⼩的⾼光曲线区的反射模型,例如Phong模型时,Phong著⾊法⽐Gouraud著⾊法更优。
但运算程序也⽐前者为复杂。
Gouraud著⾊法在遇到在较⼤的多边形模型中央有⾼光曲线区时会产⽣严重的问题。
因为这些⾼光曲线区在多边形的顶点处会产⽣缺失⽽Gouraud著⾊法是基于顶点的颜⾊的,这些⾼光曲线区会从多边形的内部缺失。
这个问题在Phong著⾊法中得到了解决。
不同于通过多边形差值的Gouraud著⾊法,Phong著⾊法中⼀个⽮量是从多边形顶点的法线到多边形表⾯进⾏差值的。
为了或得到最后的像素颜⾊,⾯的法线被差值,应⽤于⼀个反射模型。
由于Phong著⾊法需要逐像素点进⾏计算,因此运算量远⼤于Gouraud著⾊法。
Phong光照模型是真实图形学中提出的第⼀个有影响的光照明模型,该模型只考虑物体对直接光照的反射作⽤,认为环境光是常量,没有考虑物体之间相互的反射光,物体间的反射光只⽤环境光表⽰。
phong模型公式
phong模型公式Phong模型公式导言Phong模型公式是计算机图形学中一种重要的光照模型,用于模拟真实世界中的光照效果。
本文将介绍Phong模型公式的原理、应用以及一些注意事项。
Phong模型公式的原理Phong模型公式由Bui-Tuong Phong于1973年提出,它分为三个主要的部分:环境光反射、漫反射和镜面反射。
通过计算三者的叠加效果,可以得到物体表面的光照强度。
环境光反射环境光反射是指光源照射到物体表面后被散射到周围环境中的光线。
它与物体表面的材质属性无关,通常可视为均匀的柔和光照。
环境光反射的计算公式为:I_a = k_a * I其中,I_a为环境光强度,k_a为环境光系数,I为光源强度。
漫反射是指当光线照射到物体表面时,被物体材质粗糙度所散射的光线。
漫反射的强度取决于入射光线的角度和物体表面的法向量。
漫反射的计算公式为:I_d = k_d * I * (L · N)其中,I_d为漫反射强度,k_d为漫反射系数,I为光源强度,L 为光线方向向量,N为法向量。
镜面反射镜面反射是指光线照射到物体表面时,在光线方向上镜面反射的现象。
镜面反射主要与物体表面的镜面反射特性相关,如光线的反射方向和视角。
镜面反射的强度取决于视角、反射方向和光源的位置。
镜面反射的计算公式为:I_s = k_s * I * (R · V)^n其中,I_s为镜面反射强度,k_s为镜面反射系数,I为光源强度,R为反射方向向量,V为视角方向向量,n为反射系数。
Phong模型公式的应用Phong模型公式广泛应用于三维计算机图形学中的渲染引擎,用于计算物体表面的光照效果。
通过调整环境光系数、漫反射系数和镜面反射系数等参数,可以获得不同材质和光照条件下的逼真图像。
在使用Phong模型公式时,需要注意以下几个问题:•光源位置的选择对光照效果有重要影响,应根据实际场景进行调整。
•光照计算是基于像素级别的,因此需要进行光照插值以获得平滑的效果。
一种改进的Phong光照模型及光线跟踪实现
一种改进的Phong光照模型及光线跟踪实现
陈家新;周纬杰
【期刊名称】《系统仿真学报》
【年(卷),期】2002(14)12
【摘要】光线跟踪算法所基于的Phong光照模型对于面片之间的辐射与色素渗透效应(即漫反射相互反射, diffuse inter-reflection)表现不足,本文在辐射度与Phong光照模型的理论基础上提出了一种高级光照模型,并对该模型建立了相应的简化模型,并给出了加速算法予以实现。
【总页数】3页(P1642-1643)
【关键词】Phong光照模型;光线跟踪;辐射度;真实感图形绘制;图形系统
【作者】陈家新;周纬杰
【作者单位】洛阳工学院
【正文语种】中文
【中图分类】TP391.41
【相关文献】
1.一种基于Phong物体光照模型的阴影检测算法 [J], 吴亮;周东翔;梁华;蔡宣平
2.一种改进的灰度重构形状光照模型及其实现 [J], 赵辉煌;周德俭;黄春跃
3.基于辐射度与Phong模型的高级光照模型及光线跟踪实现 [J], 周纬杰;王辉
4.一种改进的Phong浓淡处理技术 [J], 张谦
5.一种改进算法实现岩心图像无缝拼接 [J], 朱望;沈疆海
因版权原因,仅展示原文概要,查看原文内容请购买。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
N0:物体表面单位法向量
N i 入射光 N0 L0 N A
Computer Graphics
L0:物体表面一点指向点 光源的单位向量
L0 i N0
漫反射光计算式
I d I pd k d cosi
可表示为:
N i R θ P 图 Phong模型计算中涉及的各方向向量 V L
∑表示对所有特定光源求和
kd+ks=1
简单光照明模型(Phong模型)
Phong模型
Computer Graphics
I ka I pa kd I pd cosi ks I ps cosn
基于RGB三基色颜色系统的Phong模型
当视点取在镜面反射方向附近时,观察者接受到 的镜面反射光较强,而偏离这一方向观察时,镜面 反射光就会减弱甚至消失。
镜面反射光的会聚指数n
Computer Graphics
Ips Ipscosnθ θ θ D E‘ E’
光亮度 Ipd
E
D
E’
(a)
(b)
图 Phong光照明模型用于光滑球面时的情形
其镜面反射光分布于表面镜面反射方向的周围
常采用余弦函数的幂次来模拟一般光滑表面的 镜面反射光的空间分布
N
入射光 反射光
入射光
N
反射光
n大
Computer Graphics
n小
一般光滑平面 (b)
纯镜面 (a)
图 镜面反射
采用余弦函数的幂次来模拟一般光滑表面的镜面反射光的空间分布。
I s I ps k s cosn
Is 为观察者接受到的镜面反射光亮度 Ips为入射光的光亮度, θ为镜面反射方向和视线方向的夹角,介于0o到90o之间 n为镜面反射光的会聚指数(与物体表面光滑度有关)
ks为镜面反射系数(与材料性质和入射光波长有关)。
Computer Graphics
镜面高光指数
较光滑的物体表面(如金属、玻璃等)
RGB模型
R、G、B分别取值0-1,0-255
Computer Graphics
RGB彩色模型也称为加色模型, 色彩来源于红、绿、蓝3种基本 色的不同亮度的叠加,故称加色 模型。 它主要用来描述发光设备,如显 示器、电视机、扫描仪等装置所 表现的颜色。
三基色示意图
9.1 简单光照明模型
用计算机在图形设备上生成连续色调的真实感图形必
Computer Graphics
•可用光的波长(λ)或频率(f)来表示各种颜 色。
Computer Graphics
除频率和波长以外,描述光的各种性质还 需要其它一些特征。其中一组特征便是亮 度和明度。 物体表面的亮度与其周围环境的亮度无关。 表面的明度即人眼感知到的亮度与其周围 环境的亮度相关。
Computer Graphics
cosi ( L0 N 0 )
cos ( R0 V0 )
R0 2 cosi N 0 L0
N0
i
N
L0
L0
2 cos i N 0
R0
V0
i
COS i N 0 L0
图 R0的表示
在实际使用中,由于cosθ =(R0·V0)有时常用(N0·H0) 来代替。 H0为沿L和V的角平分线的单位向量,可理解为朝观察 方向产生镜面反射的虚拟表面的法向量, H和表面的实际法向量N之间的角度反映了射向观察 者的镜面反射光的大小。 Phong模型成为
计算波长比例要涉及到光谱分析和光谱到颜色的转换, 在计算机图形学中,我们不用这种方法来计算,而是 采用较为简单的方法来计算物体的颜色值。也就是一 些简单的光照模型。
光的特性
Computer Graphics
可见光波段中每一频率对应一种单独的颜色, 其低频率端是红色,高频率端是紫色 。从低 频到高频的光谱颜色变化分别是红,橙,黄, 绿,蓝,青和紫。
光源的几何形状 点光源,线光源,面光源和体光源 光源向四周所辐射光的光谱分布 漫反射: 粗糙物体表面往往将反射光向各个方向散射。物 体颜色实际上就是入射光线被漫反射后所表现出 来的颜色。 镜面反射:磨光物体表面产生的高光或强光 空间光亮度分布 在计算机图形学中,认为光源通常朝空间各个方 向发射的光强是相同的。但实际情况常常不是这样, 例如遮挡。
rpd rpa rps r g k g k g cosi k g cosn d pd a pa s ps b pd b pa b ps b
Ipd
Ipdcosi i
B C
A
B’
C’
Computer Graphics
这种反射光的计算用郎伯余弦定律
对于一个漫反射体,表面的反射光亮度和光源 入射角(入射光线和表面法向量的夹角)的余 Ipd 弦成正比
I d I pd k d cosi
Id为物体表面漫反射光的光亮度 i为光源入射角 kd 为漫射系数,决定于表面材料及入射 光的波长(0≤kd≤1)
光谱量对应的颜色可由用户直接指定 一旦反射光中三种分量的颜色以及它们的系数ka, kd 和ks 确 定之后,从景物表面上某点达到观察者的反射光颜色就仅仅 和光源入射角和视角θ有关,
因此,Phong模型实际上是纯几何模型。
Computer Graphics
在实际应用中,为了减小计算量,可采用下面的方法 计算cosi和cosθ 。 设L0,N0,R0,V0是与L,N,R,V相应的单位向量,则
漫反射与镜面反射
漫反射分量和镜面反射分量则表示特定光源 照射在景物表面上产生的反射光。
1. 环境反射光
反射所产生的。
光是来自四面八方的。
这种光产生的效应简化为它在各个方向都有均匀的光 强度Ia,
Computer Graphics
环境反射光是由环境光在邻近物体上经过多次
某一个可见物体在仅有环境光照明的条件下, 其上各点明暗程度完全一样,分不出哪个地方亮, 哪个地方暗。
I d I pd kd ( N 0 L0)
3. 镜面反射光
镜面反射光为朝一定方向的反射光。
Computer Graphics
根据 光的反射定律 ,反射光和入射光对称地分 布于表面法向的两侧。 对纯镜面,入射至表面面元上的光严格地遵循 光的反射定律单向反射出去,反射角与入射角相等。
计算场 景中可 见面的 颜色。
9.1.1 光 源
光源称为发光体
Computer Graphics
反射表面(如房屋的墙壁)则称为反射光源
光源
反射面
通常在一个不透明且不发光的物体表面所观察到的 光线是其反射光,它由光源与其他物体表面的反射 光所共同产生
光源的属性包括
Computer Graphics
入射光
反射光
纯镜面 (a)
Computer Graphics
N
R L
N
N
R
L
V L
R
P
P
P
理想镜面反射
一般光滑表面镜面反射
粗糙表面的镜面反射
N 入射光 反射光
入射光
N
Computer 反射光 Graphics
n大 n小
纯镜面 (a)
图 镜面反射
一般光滑平面 (b)
一般光滑表面: 表面实际上是有许多朝向不同的微小平面组成
漫反射系数/镜面反射系数
4. Phong模型
I I pa ka I p (kd cosi k s cosn )
当光源有多个时,则上式可写为:
Computer Graphics
I I pa ka ( I pd kd cosi I ps ks cosn )
ka 环境反射系数 kd漫反射系数 ks镜面反射系数
Computer Graphics
环境反射光亮度可表示为:
I I pa ka
Ia为物体的环境光反射亮度,
Ipa为环境光亮度,
ka为物体表面的环境光反射系数(0≤ka≤1)
2. 漫反射光
Computer Graphics
漫反射分量表示 特定点光源 在景物表面某一点
的反射光中那些向空间各方向均匀反射出去的光, 表面对入射光在各个方向上都有强度相同的反 射,因而无论从哪个角度观察,这一点的光亮度 都是相同的。
9.1.2
材 质
Computer Graphics
材质的颜色是由它所反射的光的波长决定 如果光线被投射至一个不透明的物体表面,则部分 光线被反射,部分被吸收
物体表面的材质类型决定了反射光的强弱 表面光滑较亮的材质将反射较多的入射光,而较 暗的表面则吸收较多的入射光。 同样对于一个半透明物体的表面,部分入射光会被 反射,而另一部分则被折射。
具有恒定亮度的物体,当 将其置于不同环境时,它 的明度不同。
Computer Graphics
光的另外一个特征就是光 的纯度(Purity)或叫饱 和度(Saturation)。 纯度说明光的颜色表现得 多纯。 淡的颜色说明不太纯。
Computer Graphics
颜色模型
所谓颜色模型指的是某个三维颜色空间中的一个可 见光子集,它包含某个颜色域的所有颜色。 采用颜色模型的目的是在某个颜色域中方便的指定 颜色。
须完成四个基本的任务
Computer Graphics
建模
投影变换
可见性计算
可见面颜色
用数学方法建 立所构造三维 场景的几何描 述,并将他们 输入计算机, 这部分工作可 由三维立体造 型或曲面造型 系统来完成