• 光照计算


    1.Lambert模型(漫反射)

    环境光:

    Iambdiff = Kd*Ia

    其中Ia 表示环境光强度,Kd(0<K<1)为材质对环境光的反射系数,Iambdiff是漫反射体与环境光交互反射的光强。

    方向光:

    Ildiff = Kd * Il * Cos(θ)

    其中Il是点光源强度,θ是入射光方向与顶点法线的夹角,称入射角(0<=A<=90°),Ildiff是漫反射体与方向光交互反射的光强,若 N为顶点单位法向量,L表示从顶点指向光源的单位向量(注意顶点指向光源),则Cos(θ)等价于dot(N,L),故又有:

    Ildiff = Kd * Il * dot(N,L)

    最后综合环境光和方向光源,Lambert光照模型可以写成:

    Idiff = Iambdiff + Ildiff = Kd * Ia + Kd * Il * dot(N,L)

    2.Phong模型(镜面反射)

    Phong模型认为镜面反射的光强与反射光线和视线的夹角相关:

    Ispec = Ks * Il * ( dot(V,R) )^Ns

    其中Ks 为镜面反射系数,Ns是高光指数,V表示从顶点到视点的观察方向,R代表反射光方向。由于反射光的方向R可以通过入射光方向L(从顶点指向光源)和物体的法向量求出,
    R + L = 2 * dot(N, L) * N  即 R = 2 * dot(N,L) * N - L

    所以最终的计算式为:

    Ispec = Ks * Il * ( dot(V, (2 * dot(N,L) * N – L ) )^Ns

    3.Blinn-Phong光照模型(修正镜面光)

    Blinn-Phong是一个基于Phong模型修正的模型,其公式为:

    Ispec = Ks * Il * ( dot(N,H) )^Ns

    其中N是入射点的单位法向量,H是光入射方向L和视点方向V的中间向量,通常也称之为半角向量(半角向量被广泛用于各类光照模型,原因不但在于半角向量蕴含的信息价值,也在于半角向量是很简单的计算:H = (L + V) / |L + V|  )

  • 相关阅读:
    hdu 5001(概率DP)
    hdu 5505(数论-gcd的应用)
    csu 1749: Soldiers ' Training(贪心)
    Button Bashing(搜索)
    Jury Jeopardy(反向模拟)
    interesting Integers(数学暴力||数论扩展欧几里得)
    湖南省第六届省赛题 Biggest Number (dfs+bfs,好题)
    csu 1551(线段树+DP)
    csu 1555(线段树经典插队模型-根据逆序数还原序列)
    csu 1552(米勒拉宾素数测试+二分图匹配)
  • 原文地址:https://www.cnblogs.com/luxishi/p/6423934.html
Copyright © 2020-2023  润新知