• 双向反射分布函数(BRDF:Bidirecitonal Reflectance Distribution Function)

    • 用来描述物体表面对光的反射性质
  • 预备知识
  • BRDF的定义和性质
  • BRDF模型
  • BRDF的度量与评价

光照、照明

  • 分为全局和局部光照

    • 局部光照(Local illumination)和物体直接被光源照射的情况
    • 全局光照(global illumination)和物体被光源外的其他地方的光线照射的情况相关,包括其他物体反射和投射过来的光线。

预备知识

  • 球面坐标(Spherical Coordinate)
  • 立体角(Solid Angel)
  • 投影面积(Foreshortened Area)
  • 光能(Radiant Energy)
  • 光通量(Radiant Flux)
  • 灰度(Irradiance)
  • 发光强度(Intensity)
  • 光亮度(Radiance)

球面坐标

  • 由于光线主要通过方向来表达,通常用球面坐标表示比笛卡尔坐标更方便

  • 球面坐标中的向量用三个元素表示

    • r表示向量长度
    • θ表示向量与z轴的夹角
    • φ表示向量在x-y平面上的投影与x轴逆时针夹角
  • 球面坐标和三维笛卡尔坐标对应关系

Car(x,y,z)=Sph(r,theta,phi)
  • 转换关系
r=sqrt(x^2+y^2+z^2)

θ = acos(z/r)
φ = atan(y/x)

立体角(Solid Angle)

  • 立体角描述了从原点向一个球面区域张开的视野大小,是平面角的自然推广
  • 立体角的最大值为全交:4π,改最大值表示区域为整个球面
  • 立体角微分形式
dw=dA/r^2
  • 由于面积微元在球面坐标系下可以写成
dA = (rdθ)(rsinθdφ) = r^2sinθdθdφ

投影面积(Foreshortened Area)

  • 投影面积描述了一个物体表面的微小区域在某个视线方向上的可见面积。
  • 对于面积微元A,则沿着与法向夹角为θ方向的A的可见面积。
Area=Acos θ

光能(Radiant Energy)

  • 光能表示的是(一个区域中)光子能量的总和。
  • 光能通常使用符号Q表示,单位是焦耳(J)

光通量(Radiant Flux)

  • 光能并不会停留和存储在某个位置,而是在始终不断运动。
  • 光通量描述的是单位时间穿过截面的光能。

辉度(Irradiance)

  • 辉度表示单位面积受光能的影响的程度,等于单位面积上的光通量

发光强度(Intensity)

  • 对一个点(如光源),发光强度表啊是单位立体角上的光通量。

光亮度(Radiance)

  • 光亮度表示物体表面沿着某一方向的明亮成都,它表示单位投影面积和单位立体角上的光通量。

BRDF的定义和性质

  • BRDF的定义
  • BRDF的性质
    • 可逆性(Reciprocity)
    • 能量守恒
    • 基于BRDF的渲染方程(Redering Equation)

BRDF的定义

  • BRDF描述的是物体表面将光能从任何一个入射方向反射到任何一个视点方向的反射特性。

  • BRDF模型是绝大多数图形学算法中用于描述光反射现象的基本模型。

  • BRDF是关于入射光方向和反射光方向的四维实值函数,它等于反射方向的光亮度和沿入射方向的入射光的辉度之比:

    f(wi→wr)=dLr(wr)/dEi

    • 可以写成关于入射光的光亮度的形式

    f(wi→wr)=dLr(wr)/Li(wi)cos wi dwi

BRDF的可逆性

  • BRDF的可逆性源自于Helmholtz光路可逆性
  • BRDF的可逆性是说:交换入射光和反射光的角色,并不会改变BRDF的值

    f(wi→wr)=f(wr→wi)

能量守恒性质

  • BRDF需要遵循的另一个物理定律是能量守恒。入射光的能量与出射光的总能量应该相等

    Qincoming=Qreflected + Qabsorb + Qtransmitted

  • 因此BRDF必须满足如下积分的不等式、

渲染方程(Redering Equation)

  • 用于计算环境光照明下的反射光的光亮度,可以写成不同角度入射光的光亮度乘BRDF的积分

BRDF模型

  • 为了方便高效的使用BRDF数据,往往被组织成为参数化的数值模型

  • BRDF的数值模型分为三类

    • 经验模型(Empirical Models)
    • 基于物理的模型(Physical-based Models)
    • 数据表达的模型(Data-driven Models)
  • 经验模型

    • 使用基于实验提出的公式对BRDF做快速估计
  • 基于物理的模型

    • 根据物体表面材料的几何以及光学属性简历反射方程计算BRDF
  • 数据表达的模型

    • 将BRDF按照实测数据建立查找表,以便于快速的查找和计算

经验模型1:Lambertain

  • Lambertain模型是最基本的反射模型

    • 反射光线被均匀的反射到到各个方向
    • 沿不同的方向BRDF是一个常数
  • 反射率
    • 反射率是反射光亮度与入射光亮度之比。

  • Lambert漫反射模型能很好的描述包含纯粹漫反射的物体(如:纸张)
  • Lambert漫反射模型不能表现出材质的镜面反射效果,而镜面反射对金属材质非常重要。
  • 由于Lambert模型的简洁以及对漫反射良好的描述,常在其他经验模型中作为分量被包含

经验模型2:Phong模型

  • Phong模型是在Lambert漫反射模型的基础上,添加了镜面反射项,以表达反射角上的镜面反射效果

  • 其中pd和ps分别表示漫反射光和镜面反射光线的反射率,s表示发光指数,用于描述镜面反射的锋利度。
  • Phong模型不满足可逆性
  • Phong模型缺乏物理解释,并且对于某些金属材质,它并不十分准确,优势在于简洁高效,可以同时表现漫反射和镜面反射的特征。

Phong模型的扩展

  • Blinn-Phong模型
  • 引入入射方向l和视线方向v的角平分线h,使用h和法向n的点积代替原来的r与v的点积,简化运算。

【三】材质反射属性模型BRDF的更多相关文章

  1. Qt 3D教程(三)实现对模型材质參数的控制

    Qt 3D教程(三)实现对模型材质參数的控制 蒋彩阳原创文章,首发地址:http://blog.csdn.net/gamesdev/article/details/47131841.欢迎同行前来探讨. ...

  2. SQL2000的三种“故障还原模型”

    一.SQL2000的三种“故障还原模型” 在数据库属性的“选项”页,“故障还原模型”栏,共有三项选择:简单.完全.大容量日志记录.它们的根本差别在于SQL2000对数据库日志的维护方式不同.下面逐个讲 ...

  3. 在UML系统开发中有三个主要的模型

    http://www.cnblogs.com/Yogurshine/archive/2013/01/14/2859248.html 在UML系统开发中有三个主要的模型: 功能模型: 从用户的角度展示系 ...

  4. 第三篇 css属性

    一.颜色属性 颜色属性有下面四种方式 <div style="color:blueviolet">ppppp</div> <div style=&qu ...

  5. C和指针 第三章 链接属性 extern、internal、none

    三种链接属性 组成一个程序有多个源文件,如果相同的标识符出现在多个源文件中,那么标识符的链接属性决定如何处理在不同文件中出现的标识符. 链接属性有三种: external:外部 多个源文件中的相同标识 ...

  6. (第三章)Java内存模型(下)

    一.happens-before happens-before是JMM最核心的概念.对于Java程序员来说,理解happens-before是理解JMM的关键. 1.1 JMM的设计 从JMM设计者的 ...

  7. day28 反射 属性操作 getattr hasattr setattr delattr

    反射 用字符串来对应其同名的属性或者方法,通过某种方法调用这个字符串来执行方法或者获取属性 网络编程的时候非常好用,是很重要的内容 先看个示例吧: class Teather: dic = { &qu ...

  8. BEGINNING SHAREPOINT&#174; 2013 DEVELOPMENT 第2章节--SharePoint 2013 App 模型概览 理解三个SharePoint 部署模型 Apps

    BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第2章节--SharePoint 2013 App 模型概览 理解三个SharePoint 部署模型 Apps       ...

  9. UIButton中的三个UIEdgeInsets属性

    接着昨天的 UIButton中的三个UIEdgeInsets属性 ,今天我们具体谈谈UIButton的contentEdgeInsets.titleEdgeInsets.imageEdgeInsets ...

随机推荐

  1. BZOJ 2631 tree | Luogu P1501 [国家集训队]Tree II (LCT 多重标记下放)

    链接:https://www.luogu.org/problemnew/show/P1501 题面: 题目描述 一棵n个点的树,每个点的初始权值为1.对于这棵树有q个操作,每个操作为以下四种操作之一: ...

  2. (5.3.2)数据库迁移——SSIS包批量导出

    SSIS连接出错 原因 :    ssms 工具 不是 admin 权限 打开的  SSIS包批量导出代码 use msdb go IF OBJECT_ID('msdb.dbo.usp_ExportS ...

  3. spring boot 使用elasticsearch

    在文章开始之前我们先来介绍一下elasticsearch 是一个分布式的 RESTful 风格的搜索和数据分析引擎. 查询 : Elasticsearch 允许执行和合并多种类型的搜索 — 结构化.非 ...

  4. JS中的迭代

    for each...in 使用一个变量迭代一个对象的所有属性值.对于每一个属性值,有一个指定的语句块被执行. 作为ECMA-357(E4X)标准的一部分,for each...in语句已被废弃,E4 ...

  5. ABP领域层定义仓储并实现

    原文作者:圣杰 原文地址:ABP入门系列(3)——领域层定义仓储并实现 在原文作者上进行改正,适配ABP新版本.内容相同 一.先来介绍下仓储 仓储(Repository): 仓储用来操作数据库进行数据 ...

  6. PAT A1046 Shortest Distance (20 分)

    题目提交一直出现段错误,经过在网上搜索得知是数组溢出,故将数组设置的大一点 AC代码 #include <cstdio> #include <algorithm> #defin ...

  7. 高性能MySQL3_笔记0

    该书2015年5月出版的,实际上已经有些老了,但是经典的东西还是经典. 该书一共16章 1.Mysql的架构与历史 2.Mysql基准测试 3.服务器性能剖析 4.Schema与数据类型优化 5.创建 ...

  8. Function(Of T) as T 泛型类型多态返回对象的实现

    Shared Function ResultT(Of T As result)(msg As String, Optional success As Boolean = False) As T Dim ...

  9. oracle数据库锁的问题

    查询当前数据库被锁的对象 select b.owner,b.object_name,a.SESSION_ID,a.LOCKED_MODE from v$locked_object a dba_obje ...

  10. Presto基础知识

    背景 MapReduce不能满足大数据快速实时adhoc查询计算的性能要求. Facebook的数据仓库存储在少量大型Hadoop/HDFS集群.Hive是Facebook在几年前专为Hadoop打造 ...