我的博客和笔记我的博客和笔记
首页
文章
  • TurboLink
  • TinyEncrypt
  • UnrealStyleGuide
  • AxTrace
  • Cyclone
  • 数学相关
  • 图形学
  • 密码学
  • 编程语言
关于
GitHub
首页
文章
  • TurboLink
  • TinyEncrypt
  • UnrealStyleGuide
  • AxTrace
  • Cyclone
  • 数学相关
  • 图形学
  • 密码学
  • 编程语言
关于
GitHub
  • 我的文章

    • 从抛币协议到智能合约

      • Part1
      • Part2
    • JPEG算法解密

      • Part1
      • Part2
      • Part3
      • Part4
      • Part5
      • Github
    • SPH算法简介

      • Part1
      • Part2
      • Part3
      • Part4
      • Github
    • 赌博中的数学:Martingle策略
    • 如何生成一个随机的圆形
    • 一个简单的DH密钥协商算法的实现
    • 如何计算线段和圆的交点
    • 一道数学趣题
    • 斐波那契数列和1/89
    • 匀速贝塞尔曲线运动的实现

      • Part1
      • Part2
  • 开源项目

    • TurboLink
    • TinyEncrypt
    • UnrealStyleGuide
    • AxTrace
    • Cyclone
  • 学习笔记

    • 数学相关

      • 常用数学符号
      • 群
      • 数论(一)
      • 数论(二)
      • 数论(三)
      • 概率
    • 密码学

      • RSA
      • 抛币协议
      • 智能扑克协议
    • 图形学

      • 数学基础

        • 矢量
        • 矩阵
        • 立体角
        • 几何变换(一)
        • 几何变换(二)
        • 法线变换
        • 摄像机变换
      • 光照模型

        • 传统光照模型
          • 1. Phong模型
            • 1.1 基本定义
            • 1.2 算法
            • 1.2.1 环境光(Ambient Reflection)
            • 1.2.2 漫反射(Diffuse Reflection)
            • 1.2.3 高光反射(Specular Reflection)
            • 1.2.3 反射射线
          • 2. Blinn-Phong模型
            • 2.1 基本定义
            • 2.2 算法
        • 光度学
        • 双向反射分布函数(BRDF)
        • 微平面理论(一)
        • 微平面理论(二)
        • 微平面理论(三)
        • 光照方程
      • 环境光渲染

        • 环境光渲染(一)
        • 环境光渲染(二)
    • 编程语言

      • JavaScript

        • 环境搭建
        • 基本语法
        • 函数
        • 对象和类

传统光照模型(Illumination Model)

1. Phong模型

1.1 基本定义

  • N→表示表面的单位法线矢量
  • L→是指向光源的单位矢量
  • R→是反射光线的单位矢量
  • V→是指向相机的单位矢量

1.2 算法

https://en.wikipedia.org/wiki/Phong_reflection_model

Iphong=Iambient+∑(Idiffuse+Ispecular)

1.2.1 环境光(Ambient Reflection)

Iambient=LaKa

其中La是环境光亮度,Ia是环境光反射系数0≤Ka≤1

1.2.2 漫反射(Diffuse Reflection)

根据Lambert规则,材质的漫反射是均匀发射到周围的,和观察角度无关,只和光源的入射角度有关

Idiffuse=(L→⋅N→)LdKd

其中Ld是光源的光亮度,Kd是漫反射系数0≤Kd≤1

1.2.3 高光反射(Specular Reflection)

Ispecular=(R→⋅V→)nLsKs

其中Ls是光源亮度,Ks是高光反射系数0≤Ks≤1,n高光强度

1.2.3 反射射线

在计算高光反射时,需要计算反射射线R→

R→=2(L→⋅N→)N→−L→

2. Blinn-Phong模型

2.1 基本定义

和Phong模型很类似,只不过增加了半角向量H→,也就是指向光源的向量L→和指向相机的向量V→的中间向量

V→=L→+V→∥L→+V→∥

2.2 算法

https://en.wikipedia.org/wiki/Blinn%E2%80%93Phong_shading_model

IBlinnPhong=Iambient+∑(Idiffuse+Ispecular)

其中环境光和漫反射和Phong相同

Idiffuse=(L→⋅N→)LdKdIspecular=(R→⋅V→)αLsKs

高光部分使用N→⋅H→代替R→⋅V→

Ispecular=(N→⋅H→)nLsKs
Next
光度学