光照与实体

一、颜色模型

1.颜色

  1. 颜色格式
    1.浮点数格式
    2.字节值格式
  2. 颜色加法
    Csum = C1 + C2 = (MAX(r1+r2,255),MAX(g1+g2,255),MAX(b1+b2,255))

  3. 颜色调制
    调制颜色亮度: Cmodulated=sC1=(sr1,sg1,sb1)
    s为0到正无穷任意值
    直到rgb中有一值达到255.便不再变化(三分量都不再变化)

  4. alpha 混合
    将多个像素的颜色相加混合,混合时指定每个源像素的百分比。
    pixel_dest[x,y]rgb=pixel_source1[x,y]rgbalpha+pixel_source2[x,y]rgb(1alpha)

2.光照模型

  1. 光源

    1.点光源
    位置,发射光颜色,四周发散

    2.无穷远光源
    单方向照明,光路几何平行
    仅需定义发射方向向量和颜色

    3.辐射强度衰减

    fl,radatten=1.0,1a0+a1dl+a0d2l,

    4.方向光源和投射
    位于光源方向范围之外的对象得不到该光源的光照
    一个方向向量加一个角度范围:光锥

    VobjVlight=cosα0<θl<90cosαcosθl

    Vobj:Vlight:

    5.角强度衰减(只有方向光源(即投影光源)才有角强度衰减
    圆锥轴光强最大,离开圆锥轴时逐渐减弱

    fl,angatten=1.0,0.0,VobjVlight)al,VobjVlight=cosα<cosθl

  2. 表面光照效果
    表面光学特性:透明度,颜色反射系数,各种表面纹理参数
    不透明:反射,吸收
    粗糙颗粒:漫反射
    漫反射光颜色称为对象的颜色
    镜面反射
    一个表面上的反射是 全体光源光的反射 加上 其他被照明对象反射光的反射

  3. 基本光照模型

    1. 环境光,全局漫反射
      对于表面S一点,反射的环境光强度可表示为:

      Itotal=CsambientIambient   (1)

      环境光强度: Csambient
      环境反射颜色: Iambient

    2. 漫反射
      理想漫反射模型(朗博反射体):入射光在各个方向上以相同强度发散,与观察位置无关
      朗伯余弦定律:计算理想漫反射模型表面任意一点反射出的辐射光能量
      在与对象表面法向量夹角为 ϕN 的方向上, 每个面积为 Δ A的平面单位所发散的光线与cos ϕN 成正比。

      =cosϕNΔAcosϕN=

      1. 假设在我们的模型中, 每种表面材质都有其特定的漫反射颜色 Rsdiffuse ,它决定了该表面材质对散射光的反射程度, 称为 漫反射系数

      2. 对于背景光, 可假设每一表面都使用对场景设定的环境光 Ia 来照明,因此对于表面上任何一点而言,环境光对漫反射的贡献都是:

        Iambdiff=RsdiffuseIa

        场景很少只用环境光绘制,至少还需要一个点光源,常位于观察位置。

      3. 入射光线与表面相交光线数量与该表面投影到入射光线方向的面积成正比,因此,一个强度为 Il 的光源的入射光总量为:

        Il,incident=Ilcosθ

      4. 故,强度为 Il 的光源的漫反射为:

        Il,diff=RsdiffuseIl,incident=RsdiffuseIlcosθ

      5. 记 单位法向量 N , 指向点光源 的单位方向向量 L

        cosθ=(NL)

      6. 故点光源在表面照明的漫反射公式可表示为:

        Il,diff={RsdiffuseIl(NL),0.0,NL>0NL0

      7. 故加入点光源表面照明的漫反射项后,光照模型如下:
        在有多个光源的情况下,只需要将每个光源在表面照明的漫反射项累积起来,而环境光漫反射((1)式)保持不变。

        (NL>0) 情况下:

        Itotalad=CsambientIambient+Rsdiffusei=1n[I(i)diffuse(nili)]

    3. 镜面反射

      1. 镜面反射角等于入射角。对于一个理想反射体,入射光仅在镜面反射方向有反射现象,即当 观察方向反射方向 重合时才能观察到反射光线。

      2. Phong 模型:
        Phong光照模型是真实图形学中提出的第一个有影响的光照明模型,该模型只考虑物体对直接光照的反射作用,认为环境光是常量,没有考虑物体之间相互的反射光,物体间的反射光只用环境光表示。Phong光照模型属于简单光照模型。
        光照与实体_第1张图片
        该模型认为,镜面反射光强度和 (cosθ)ns 成正比。
        参数 ns 的值则由要显示的表面材质所决定。光滑表面 ns 要大,粗糙表面 ns 要小(小到1)。
        物体的镜面反射系数越大,镜面反射区域越小。当反射向量 R 与观察向量 V 的夹角接近于0时,反射光强度将急剧增大。随着夹角增大,反射光强急剧降低。

      3. 为模拟镜面反射光照, 需要考虑 观察向量反射向量 以及一个定义物体表面 光洁度 的常量(镜面反射率,specularity),反射系数( ks 可以简单的设置为0到1 之间某个值,对于许多不透明的材质,几乎对所有入射角的镜面反射均为常量), 光照强度 Ispecular 镜面反射指数 ns )。

      4. 由于反射向量 R 的方向可以通过向量 LN 计算出来,其中 L RN 都是单位向量:

        R+L=(2NL)NR=(2NL)NLcosθ=VR

        故,Phong模型镜面反射反射为:
        Il,spec=ksIspecular(cosθ)ns={ksIspecular(VR)ns0.0,VR>0VR0

      5. Blinn-Phone:
        由于R向量的计算太浪费,采用一种近似的方法,使用半角向量 H 和 法线向量 N 的夹角 ϕ 去近似 θ 角。

        半角向量就是平分两个向量之间夹角的单位向量。两个向量相加,结果是两个向量构成的平行四边形的对角线,所以半角向量是两个向量相加。
        

        Blinn-Phone的改进就是不用反射向量去计算镜面反射,而是用入射光向量和观察向量的 半角向量 来代替计算。这一方法也是没有物理依据的,只是这样计算计算量更少而且效果差不多甚至更好。

        H=L+V|L+V|cosϕ=NHVR=cosθ

    4. 漫反射和镜面反射的合并

      1. 对于单个点光源

        I=Idiff+Ispec=CsambientIambient+RsdiffuseIl(NL)+ksIl(NH)ns

      2. 对于多个点光源,可在任意一个表面点上叠加各个光源的效果

        I=Iambdiff+i=1n[I(i)diff+I(i)spec]=CsambientIambient+i=1n[I(i)[Rsdiffuse(NL)+ks(NH)ns]]

你可能感兴趣的:(渲染器-图形库,图形学)