欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 山东大学计算机图形学期末复习7——CG11上

山东大学计算机图形学期末复习7——CG11上

2025/5/16 20:36:58 来源:https://blog.csdn.net/qq_66878808/article/details/147986410  浏览:    关键词:山东大学计算机图形学期末复习7——CG11上

CG11上

漫反射 (Diffuse Reflection)

漫反射是指光照在不规则表面上反射,导致光线在所有方向上均匀散射。理想的漫反射表面非常粗糙,使得入射的光线均匀地从所有方向反射。

朗伯面 (Lambertian Surface)

在朗伯面上,反射的光强与入射光与表面法线的夹角 θ \theta θ 成正比。根据 朗伯余弦定律 (Lambert’s Cosine Law),反射光强 I d I_d Id 可以用下式计算:
I d = k d ⋅ I ⋅ cos ⁡ θ I_d = k_d \cdot I \cdot \cos \theta Id=kdIcosθ

  • I d I_d Id 是漫反射的光强。
  • k d k_d kd 是漫反射反射系数,通常是RGB分量。
  • I I I 是入射光的强度。
  • cos ⁡ θ \cos \theta cosθ 是入射光与法线之间的夹角的余弦值,决定了反射光的强度。
物理意义
  • 朗伯表面:在这种表面上,反射光强度与入射角度相关,入射角度越小(与法线越接近),反射光强度越大。
  • 光线反射:入射的光线在表面上均匀反射,因此反射光的强度与表面的粗糙度有关。

理想反射体(Ideal Reflector)

定义

理想反射体是指那些能够完美反射入射光线的表面,反射光线的方向完全符合反射定律,即反射角等于入射角。

反射角和入射角
  • 法线方向:反射角和入射角都相对于表面的法线来定义。
  • 反射定律:在理想反射中,入射光线与表面法线的夹角等于反射光线与表面法线的夹角。
  • 共面性:入射光线、反射光线和法线必须位于同一平面内。
理想反射公式

理想反射的反射光线 r \mathbf{r} r 计算公式为:
r = 2 ( l ⋅ n ) n − l \mathbf{r} = 2 (\mathbf{l} \cdot \mathbf{n}) \mathbf{n} - \mathbf{l} r=2(ln)nl

  • r \mathbf{r} r 是反射光线。
  • l \mathbf{l} l 是入射光线。
  • n \mathbf{n} n 是表面的法向量。
  • l ⋅ n \mathbf{l} \cdot \mathbf{n} ln 是入射光线与法线之间的点积。

此公式表示了反射光线 r \mathbf{r} r 的方向,它是入射光线 l \mathbf{l} l 关于法线 n \mathbf{n} n 的对称反射。

在这里插入图片描述

光泽度系数(Shininess Coefficient)

介绍

光泽度系数 α \alpha α 控制镜面反射高光的锐利程度。较小的 α \alpha α 值会产生较大的、高光不那么锐利的反射,而较大的 α \alpha α 值则会产生更小且更锐利的高光。这个系数对物体表面的光滑度和反射特性有着显著影响。

不同材质的光泽度系数
  • 金属:对于金属表面,光泽度系数通常较大(在 100 到 200 之间),因此它们通常会呈现出非常锐利的镜面反射高光。
  • 塑料:对于塑料表面,光泽度系数较小,通常在 5 到 10 之间,这使得它们的高光较为模糊,呈现较为柔和的反射效果。

光源衰减 (Light Source Attenuation)

1. 光照模型:

光照模型描述了计算光源与表面之间光照强度的公式,其中包含环境光、漫反射光和镜面反射光三大组件。

  • 公式:
    I = I a ⋅ k a + f a t t ⋅ I l i g h t ⋅ k d ⋅ ( N ⋅ L ) I = I_a \cdot k_a + f_{att} \cdot I_{light} \cdot k_d \cdot (N \cdot L) I=Iaka+fattIlightkd(NL)

    • I a I_a Ia:环境光强度。
    • k a k_a ka:材质的环境反射系数。
    • f a t t f_{att} fatt:光源衰减因子。
    • I l i g h t I_{light} Ilight:光源的强度。
    • k d k_d kd:材质的漫反射系数。
    • ( N ⋅ L ) (N \cdot L) (NL):法线向量 N N N 与光源方向向量 L L L 的点积,表示入射光的强度与表面法线的夹角。
2. 衰减因子的计算:
  • 简单的平方反比衰减:
    f a t t = 1 d L 2 f_{att} = \frac{1}{d_L^2} fatt=dL21

    • d L d_L dL:光源与表面之间的距离。
    • 该模型假设光的衰减与距离的平方成反比,模拟了实际光源随距离远离的光强衰减。
  • 带有常数、线性及二次项的衰减:
    f a t t = min ⁡ ( c 1 + c 2 ⋅ d L + c 3 ⋅ d L 2 , 1 ) f_{att} = \min(c_1 + c_2 \cdot d_L + c_3 \cdot d_L^2, 1) fatt=min(c1+c2dL+c3dL2,1)

    • c 1 , c 2 , c 3 c_1, c_2, c_3 c1,c2,c3:衰减常数。
    • 这个衰减公式更细致地控制衰减过程,引入了常数项、线性项和二次项,以适应不同光源和材质的需求。

Phong模型中的光源

1. 光照成分:

Phong模型将光照分解为三种成分:

  • 漫反射(Diffuse Reflection):表面与入射光的角度决定反射光强度。
  • 镜面反射(Specular Reflection):表面对入射光的高光反射,取决于视角与反射方向的夹角。
  • 环境光(Ambient Light):全局的均匀背景光。

每个光源对每个成分都有独立的贡献,这三种成分会被加总得到最终的光照强度。

2. 每个光源的贡献:

每个光源的贡献包括三个分量:漫反射、镜面反射和环境光,每个分量都有RGB分量,因此每个光源共有9个系数(每个成分3个RGB分量)。

  • 漫反射: I d r , I d g , I d b I_{dr}, I_{dg}, I_{db} Idr,Idg,Idb
  • 镜面反射: I s r , I s g , I s b I_{sr}, I_{sg}, I_{sb} Isr,Isg,Isb
  • 环境光: I a r , I a g , I a b I_{ar}, I_{ag}, I_{ab} Iar,Iag,Iab

材质属性

1. 材质反射属性:
  • 漫反射系数: k d r , k d g , k d b k_{dr}, k_{dg}, k_{db} kdr,kdg,kdb,表示材质对不同颜色光的漫反射能力。
  • 镜面反射系数: k s r , k s g , k s b k_{sr}, k_{sg}, k_{sb} ksr,ksg,ksb,表示材质对不同颜色光的镜面反射能力。
  • 环境光系数: k a r , k a g , k a b k_{ar}, k_{ag}, k_{ab} kar,kag,kab,表示材质对环境光的反射能力。
2. 光泽度系数:
  • 光泽度系数 α \alpha α:控制镜面反射高光的集中程度。值越大,高光越集中且锐利,通常对应于如金属等表面;值越小,高光越模糊,通常对应于塑料等表面。

Phong模型公式

1. 完整公式:

Phong模型中,光源的贡献为漫反射、镜面反射和环境光的加权和。公式如下:
I = k d I d ( N ⋅ L ) + k s I s ( V ⋅ R ) α + k a I a I = k_d I_d (N \cdot L) + k_s I_s (V \cdot R)^\alpha + k_a I_a I=kdId(NL)+ksIs(VR)α+kaIa

  • I I I:最终的光强。
  • k d k_d kd k s k_s ks k a k_a ka:材质的漫反射、镜面反射和环境光系数。
  • I d I_d Id I s I_s Is I a I_a Ia:光源的漫反射、镜面反射和环境光强度。
  • N N N:表面的法向量。
  • L L L:光源方向向量。
  • V V V:观察者方向向量。
  • R R R:反射方向向量。
  • α \alpha α:光泽度系数。
2. 各项含义:
  • 漫反射项 k d I d ( N ⋅ L ) k_d I_d (N \cdot L) kdId(NL),表示光线与法线夹角的余弦值,模拟均匀散射的效果。
  • 镜面反射项 k s I s ( V ⋅ R ) α k_s I_s (V \cdot R)^\alpha ksIs(VR)α,表示观察方向与反射方向的接近程度,模拟高光反射的效果。
  • 环境光项 k a I a k_a I_a kaIa,表示均匀的背景光源。
3. 多光源情况:

对于场景中的每个光源,我们都计算上述公式,并累加得到最终的光照效果。


Phong光照模型(简写)

1. 简化公式:

在简化版本的Phong模型中,公式表示为:
I = k a I a + k d I d cos ⁡ θ + k s I s cos ⁡ n γ I = k_a I_a + k_d I_d \cos \theta + k_s I_s \cos^n \gamma I=kaIa+kdIdcosθ+ksIscosnγ

  • cos ⁡ θ \cos \theta cosθ:入射光线与法线的夹角,表示漫反射强度。
  • cos ⁡ γ \cos \gamma cosγ:观察方向与反射方向的夹角,表示镜面反射强度。
  • n n n:光泽度系数 α \alpha α,控制镜面反射高光的锐利程度。
2. 解释:
  • 漫反射:与入射角度 θ \theta θ 相关,越接近法线的入射角产生的反射越强。
  • 镜面反射:与观察角度 γ \gamma γ 相关,越接近理想反射的观察角度产生的高光越强。
  • 环境光:常量部分,补充整体亮度。

Modified Phong Model (Blinn-Phong Model)

1. 背景与问题:
  • Phong模型的镜面反射计算问题:
    • 在Phong模型中,镜面反射项的计算涉及两个重要操作:
      1. 计算反射向量 r \mathbf{r} r
      2. 计算 v ⋅ r \mathbf{v} \cdot \mathbf{r} vr(观察向量与反射向量的点积)。
    • 反射向量计算:反射向量 r \mathbf{r} r 是基于光源方向 l \mathbf{l} l 和法线方向 n \mathbf{n} n 的。计算过程涉及到向量的反射,通常较为复杂且计算量大。
    • 计算复杂性:对于每个顶点和光源方向,反射向量 r \mathbf{r} r 需要进行计算,而反射光强则通过计算 v ⋅ r \mathbf{v} \cdot \mathbf{r} vr 来完成,这使得实时渲染中计算成本较高。
2. Blinn-Phong模型:

通过比对法向量n和半程向量h的接近程度,来界定视角向量和反射向量的接近程度。因为视角向量和反射光向量越接近,则该半程向量和法向量越接近(法向量实则是入射光向量和反射光向量的半程向量)

  • Blinn的优化思路:为了解决Phong模型中反射向量和计算的复杂性,Blinn提出了一种新的简化方法,引入了一个叫做半程向量 h \mathbf{h} h(halfway vector)来代替反射向量 r \mathbf{r} r

    • 半程向量 h \mathbf{h} h 是光源方向 l \mathbf{l} l 和观察方向 v \mathbf{v} v 的归一化平均向量:
      h = l + v ∥ l + v ∥ \mathbf{h} = \frac{\mathbf{l} + \mathbf{v}}{\|\mathbf{l} + \mathbf{v}\|} h=l+vl+v

    • 通过计算 n ⋅ h \mathbf{n} \cdot \mathbf{h} nh 来代替 v ⋅ r \mathbf{v} \cdot \mathbf{r} vr,简化了计算。

3. 计算反射向量与半程向量:
  • 反射向量计算

    • 反射向量 r \mathbf{r} r 可以通过光源方向 l \mathbf{l} l 和法线向量 n \mathbf{n} n 来计算。根据反射定律,反射向量是入射光线 l \mathbf{l} l 关于法线 n \mathbf{n} n 的镜面反射方向,公式为:
      r = 2 ( n ⋅ l ) n − l \mathbf{r} = 2 (\mathbf{n} \cdot \mathbf{l}) \mathbf{n} - \mathbf{l} r=2(nl)nl

    • 该公式涉及到入射光线和法线的点积计算,较为复杂。

      在这里插入图片描述

  • 半程向量计算

    • 半程向量 h \mathbf{h} h 是光源方向 l \mathbf{l} l 和观察方向 v \mathbf{v} v 的加权平均值,公式为:
      h = l + v ∥ l + v ∥ \mathbf{h} = \frac{\mathbf{l} + \mathbf{v}}{\|\mathbf{l} + \mathbf{v}\|} h=l+vl+v

    • 半程向量用于近似代替反射向量进行镜面反射的计算。通过计算法线 n \mathbf{n} n 与半程向量 h \mathbf{h} h 的点积 n ⋅ h \mathbf{n} \cdot \mathbf{h} nh,比直接计算 v ⋅ r \mathbf{v} \cdot \mathbf{r} vr 更加高效。

4. 使用半程角度:
  • 代替反射角计算

    • 在Blinn-Phong模型中,镜面反射项被修改为:
      k s I s ( n ⋅ h ) β k_s I_s (\mathbf{n} \cdot \mathbf{h})^\beta ksIs(nh)β

    • β \beta β 控制高光的锐利程度,与Phong模型中的光泽度系数 α \alpha α 类似,越大则高光越锐利。

    • 半程角度 θ h \theta_h θh r \mathbf{r} r v \mathbf{v} v 之间的夹角的一半(若两向量共面)。通过使用半程向量 h \mathbf{h} h,我们能够计算出一个比直接使用反射向量更简便的光照模型。

5. Blinn-Phong模型与OpenGL标准:
  • Blinn-Phong的优势:
    • 由于计算反射向量 r \mathbf{r} r 需要较高的计算成本,而半程向量的计算相对简单,因此Blinn-Phong模型具有更高的效率。
    • 对于实时渲染应用,Blinn-Phong模型常用于代替传统的Phong模型,尤其是在需要处理多个光源时,Blinn-Phong能够显著减少计算量,同时保持较好的视觉效果。
  • OpenGL标准
    • 由于Blinn-Phong模型提供了更好的计算效率和视觉效果,它已成为OpenGL中标准的光照模型,广泛应用于实时渲染中。

法向量计算

平面法向量计算
n = ( p 2 − p 0 ) × ( p 1 − p 0 ) \mathbf{n} = (\mathbf{p}_2 - \mathbf{p}_0) \times (\mathbf{p}_1 - \mathbf{p}_0) n=(p2p0)×(p1p0)
球面法向量
隐式函数: f ( x , y , z ) = x 2 + y 2 + z 2 − 1 = 0 f(x, y, z) = x^2 + y^2 + z^2 - 1 = 0 f(x,y,z)=x2+y2+z21=0
法向量: n = [ ∂ f ∂ x , ∂ f ∂ y , ∂ f ∂ z ] T = p \mathbf{n} = \left[ \frac{\partial f}{\partial x}, \frac{\partial f}{\partial y}, \frac{\partial f}{\partial z} \right]^T = \mathbf{p} n=[xf,yf,zf]T=p

参数化曲面法向量
x = cos ⁡ u sin ⁡ v , y = cos ⁡ u cos ⁡ v , z = sin ⁡ u x = \cos u \sin v, \quad y = \cos u \cos v, \quad z = \sin u x=cosusinv,y=cosucosv,z=sinu
切向量:
∂ p ∂ u = [ ∂ x ∂ u , ∂ y ∂ u , ∂ z ∂ u ] T , ∂ p ∂ v = [ ∂ x ∂ v , ∂ y ∂ v , ∂ z ∂ v ] T \frac{\partial \mathbf{p}}{\partial u} = \left[ \frac{\partial x}{\partial u}, \frac{\partial y}{\partial u}, \frac{\partial z}{\partial u} \right]^T, \quad \frac{\partial \mathbf{p}}{\partial v} = \left[ \frac{\partial x}{\partial v}, \frac{\partial y}{\partial v}, \frac{\partial z}{\partial v} \right]^T up=[ux,uy,uz]T,vp=[vx,vy,vz]T
法向量:
n = ∂ p ∂ u × ∂ p ∂ v \mathbf{n} = \frac{\partial \mathbf{p}}{\partial u} \times \frac{\partial \mathbf{p}}{\partial v} n=up×vp

平坦着色(Flat Shading)

glShadeModel(GL_FLAT)

平坦着色是一种简单的光照模型,用于为3D模型提供基本的光照效果。以下是关于平坦着色的详细解释:

基本原理
  • 面片统一颜色:在平坦着色中,每个面片(通常是三角形或多边形)使用一个统一的颜色进行渲染。这个颜色是根据面片的法线和光源的位置计算得出的。
  • 光照计算:光照计算在每个面片的基础上进行,而不是在顶点或片元的基础上。计算时,使用面片的法线向量和光源的方向来确定光照强度。
计算过程
  • 面片法线:每个面片有一个法线向量,这个法线向量用于确定光照反射的方向。面片法线通常是通过计算面片顶点坐标的叉积得到的。
  • 光照模型:使用简单的光照模型(如Lambertian漫反射模型)计算光照强度。光照强度取决于面片法线和光源方向之间的夹角。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词