【GAMES101笔记速查——Lecture 17 Materials and Appearances】

目录

1 材质和外观

1.1 自然界中,外观是光线和材质共同作用的结果

1.2 图形学中,什么是材质?

1.2.1 渲染方程严格正确,其中BRDF项决定了物体的材质

1.2.2 漫反射材质

(1)如何定义漫反射系数?

1.2.3 Glossy材质

1.2.4 发生反射和折射的材质-水/玻璃

(1)反射

(2)折射

折射snell定律

senll window/circle现象

(3)菲涅尔项

绝缘体的菲涅尔项

金属的菲涅尔项(导体)

1.3 微表面材质Microfacet Material

1.3.1 微表面理论

1.3.2 微表面法线的分布情况

1.3.3 微表面模型的强大效果举例

1.4 区分材质的方式:各向同性材质/各向异性材质

1.4.1 生活中很多的各向异性的材质:

1.4.2 BRDF的性质

1.4.3 如何测量BRDF

1.4.4 如何存储BRDF


1 材质和外观

1.1 自然界中,外观是光线材质共同作用的结果

自然界材质的表现形式,一些例子

海浪的通透,深度影响颜色

光投到洞穴中会形成一个光柱

头发透过的颜色

布料为什么看上去就是布,而不是金属?

蝴蝶翅膀鳞片往往没有颜色,堆在一起怎么就有颜色了?

为什么我们能看到彩虹?

寿司的鱼肉质感,次表面散射现象。

自然界中的材质成千上万,最强的渲染器也只支持40种材质。其中精美的效果其中大部分工作归功于美工,用纹理和贴图表现质感。

1.2 图形学中,什么是材质?

陶瓷表面会上釉,这层釉会以镜面反射方式反射一些能量,当光进入内部,又会发生漫反射,所以最终的陶瓷材料是兼具镜面反射和漫反射的。

1.2.1 渲染方程严格正确,其中BRDF项决定了物体的材质

BRDF   决定了   物体反射光的方式   决定了   材质

BRDF = 材质

1.2.2 漫反射材质

(1)如何定义漫反射系数?

假定:空间内任何一个方向进来的光的radiance都一样,也就是uniform的,那反射出来的光也都是uniform的。

由能量守恒:如果一个点不发光,又不吸收光(物体为白色),那么进来的irradiance和出去的irradiance大小相同,那么入射光的radiance和出射光的radience也是一样的,即 Li = Lo。

(irradiance:单位面积上的能量 ,radiance:在单位立体角且在单位投影面积上的能量)

漫反射的BRDF是个常数。

在上述假设成立的情况下,Lo = Li ,推出漫反射系数 fr = 1/pai 

人们定义p(rou)为反射率albedo,它在0-1之间,可以是单通道/多通道。再让他除以pai就可以了。fr取值范围就变成了0~1/pai

这样就定义了一个正确的漫反射的BRDF。

1.2.3 Glossy材质

类似于镜面反射,但比镜面反射更粗糙一些。

不同的金属材质又有不同的性质,铜会更发红一些(左),铝会更发白一些(右)

1.2.4 发生反射和折射的材质-水/玻璃

左图中的玻璃壳既可以看到周围环境色(反射),又可以看到内部的灰色(折射)。

右图的紫色从哪里来的?

答:折射光在玻璃内部传播时有一部分被吸收。

(1)反射

反射公式有2种不同理解方式

1.用几何关系可以推出入射光出射光、法线之间的关系。

2.左边图从上往下看,变成右边图,这样的话,入射光和出射光在方位角\phi上的朝向正好相反,也就是相差\Pi

入射光的\theta \phi两个角度知道了,出射光方向就可以由入射光确定了。

完美的镜面反射结果

镜面反射用BRDF写出来不是很容易,分布函数的书写涉及到德尔塔函数,不过多解释。

(2)折射

铅笔在水中“折断”

激光通过玻璃后折射过程中发生了平移

三棱镜折射出彩虹

海底美丽的光波纹 - 焦散现象caustic - 光线打到海水凹凸不平的表面,被折射到不同的方向,某些地方接受到的光线多,就形成了更亮的条纹(实际上是聚焦的结果)。

折射snell定律

定义入射角和折射角和法线的夹角\theta _{i}\theta _{t}

入射光、折射光的折射率夹角的正弦乘积相等

入射光、折射光的方位角\phi朝向相反。

这样一来,知道入射角\theta _{i}、折射率,就可以计算出来折射角\theta _{t}

钻石的折射率非常高2.42

计算折射角的余弦值

如果余弦值没有意义(根号里的数小于0)\frac{\eta _{i}}{\eta _{t}} > 1,即入射介质折射率 > 折射介质折射率,

此时就不能发生折射,是一个全反射现象

senll window/circle现象

人在水底只能看到一个锥形区域。大约为97.2度?

BRDF中的R指的是反射

那折射的分布函数好像应该叫BTDF?

其实有个统一的叫法:BSDF,这里的S指的是散射,反射和折射都是一种散射。

但一般也不在严格意义上区分。

(3)菲涅尔项

离桌面越近,夹角越小,能看到的反射光更多(桌面就越亮)。

菲涅尔项解释了有多少能量被反射,有多少能量被折射。

绝缘体的菲涅尔项

绝缘体的菲涅尔项可视化图,体现了如下信息

如果入射光方向与物体表面几乎平行,那么几乎所有的光都会被反射。

如果是垂直的话,更多能量会直接传过去而不反射。

光线的极化性质:很少考虑

金属的菲涅尔项(导体)

即使是垂直看过去,光被反射的也挺多的。

这也就是为什么古时候镜子大都用金属(比如银、铜)制成。

菲涅尔项到底怎么算?

准确的公式已经有了。还有个简化公式:Schlick近似。

为什么要介绍菲涅尔项?因为要引入一个真正基于物理的材质:微表面模型

1.3 微表面材质Microfacet Material

微表面模型啥意思?

一片发生在澳大利亚的高光,挺完美的(),大家觉得地球表面不是光滑的,但高光如此光滑,说明实际上我们从远处看不到物体的细节,看到的是总体的效应。

1.3.1 微表面理论

从远处看,看到的是外观:东西是平的、粗糙的。

从近处看,看到的是几何:可以看到组成物体的微元,每个微元镜面反射。

1.3.2 微表面法线的分布情况

glossy材质微表面的法线几本朝一个方向

diffuse材质微表面的法线朝向非常混乱

然后将这种法线分布抽象成一个分布函数,进行一些计算。。。

其中:the normal Distribution function, the Fresnel equation and the Geometry function

这个f函数就是微表面的BRDF

1.3.3 微表面模型的强大效果举例

微表面模型是现在的state-of-art模型

微表面模型是一个统称,有很多种

1.4 区分材质的方式:各向同性材质/各向异性材质

电梯间的内部,电梯是被磨过的金属,这样会形成奇怪的高光。

这就引出了

各向同性材质:微表面方向性很弱

各向异性材质:微表面的方向性很强

各向异性材质反应在BRDF上:在方位角上旋转后,如果BRDF不同了,那就是各向异性材质。

1.4.1 生活中很多的各向异性的材质:

锅的辐射状高光

尼龙面料

天鹅绒面料

1.4.2 BRDF的性质

BRDF的值非负:不会有负能量

BRDF线性性质:BRDF可以拆成很多块,可以把每个块单独计算,然后结果相加。

BRDF可逆性:交换入射方向和出射方向的角色,得到的BRDF值一样

BRDF的存在不可能让能量变多,能量守恒。

各向同性的BRDF可以从四维变三维

所有的BRDF相对的方位角不用考虑正负

模型都是对实际情况的近似,测量出的BRDF才是真实的BRDF

1.4.3 如何测量BRDF

对于某个观测点,改变光源位置和拍照位置,穷尽所有的组合对。

实际的测量工具展示图片

关于BRDF的测量也是现在研究改进的热点

1.4.4 如何存储BRDF

MERL BRDF库

这个项目测量了很多不同的各向同性材质,每个材质做90*90*180次测量,然后进行压缩,讲结果存储到三维数组中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/451591.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数字图像处理:频率域滤波

数字图像处理:频率域滤波 笔者相关内容笔记: 1.傅里叶变换与图像处理 2.傅利叶变换在图像处理的应用 1.1 频率域滤波总体流程 1.2 DFT/IDFT DFT的例子 1.3 常见频率域滤波器 过滤高频信息,保留低频信息,则图像模糊 过滤…

特步引入IPD管理,钉钉项目 Teambition 助力高效产品研发管理

中国是全球第二大消费市场,运动鞋服行业拥有着巨大的发展潜力。在过去五年时间里,随着中国产品品牌和质量的提升,体育市场的占有率格局发生了显著变化,不同于部分国际品牌巨头营收持续减弱,国产领军体育运动品牌「特步…

RK平台 GPIO序号转换软件

RK平台 GPIO序号转换软件 下载地址 https://download.csdn.net/download/ruidongren/89900151 链接: link

大数据毕业设计选题推荐-电影数据分析系统-电影推荐系统-Python数据可视化-Hive-Hadoop-Spark

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

VSCode中的TypeScript教程

TypeScript 是JavaScript的类型化超集,可编译为纯JavaScript。它提供了类、模块和接口来帮助您构建健壮的组件。 安装 TypeScript 编译器 Visual Studio Code 包括 TypeScript 语言支持,但不包括 TypeScript 编译器tsc。您需要在全局或工作区中安装Typ…

空间解析几何 4:空间中线段到圆的距离【附MATLAB代码】

目录 理论公式 matlab代码 理论公式 对于解一元4次方程,请详见我的博客 一元四次方程求解 -【附MATLAB代码】-CSDN博客文章浏览阅读1.4k次,点赞41次,收藏4次。最近在研究机器人的干涉(碰撞)检测,遇到了一…

015_基于django旅游数据分析与推荐系统2024_cg8s735i

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

使用Docker启动的Redis容器使用的配置文件路径等问题以及Python使用clickhouse_driver操作clickhouse数据库

一、使用Docker启动的Redis容器使用的配置文件路径等问题 1.docker启动的redis使用的配置文件路径是什么 使用docker搭建redis服务,本身redis启动的时候可以指定配置文件的, redis-server /指定配置文件路径/redis.conf。 但手上也没有一个redis配置文件…

win10上安装wsl(ubuntu)

1,搜索到微软网站下载 Ubuntu Installer.exe文件,运行它。 2.根据提示点击获取ubuntu,自动下载完之后提示安装,do。 3.出错:Installing, this may take a few minutes... WslRegisterDistribution failed with error: 0x8007019e Error: 0x8…

吴伟仁《英国文学史及选读》第一二册课后答案PDF

新经典高等学校英语专业系列教材《英国文学史及选读》根据英国文学历史的顺序结合作品选读编写而成,在历史部分,对英国文学史的每个阶段作了简明扼要的概述,而在作品选读部分则尽可能遴选了文学史上的重要作家和重要作品。教材内容丰富&#…

Web集群服务-代理和负载均衡

1. 概述 1. 用户----->代理--->Web节点,后面只有一个节点,一般使用的是nginx代理功能即可 2. 后面如果是集群需要使用nginx负载均衡功能 2. 代理分类 代理分类方向应用正向代理用户(服务器)-->代理--->外部(某网站)服务器通过代理实现共享上网/访问公网反向代理用…

MySQL-事务Transaction详解

文章目录 事务概述事务基本概念事务四大特性(ACID)演示MySQL事务手动开启事务MySQL默认事务机制 事务的隔离级别隔离级别基本概述三种现象脏读不可重复读幻读 查看和设置隔离级别四种隔离级别及演示读未提交(read uncommitted)读提交(read committed)可重复读(repeatable read)…

颠覆Transformer的Mamba模型[精简版本]------S4

1、改进transformer不擅长处理超长的序列的问题:输入u到状态x 序列数据一般都是离散的数据 比如文本、图、DNA,但现实生活中还有很多连续的数据,比如音频、视频,对于音视频这种信号而言,其一个重要特点就是有极长的context window,而在transformer长context上往往会失败,…

Spring Boot技术栈的电影评论网站设计与实现

6系统测试 6.1概念和意义 测试的定义:程序测试是为了发现错误而执行程序的过程。测试(Testing)的任务与目的可以描述为: 目的:发现程序的错误; 任务:通过在计算机上执行程序,暴露程序中潜在的错误。 另一个…

算法——python实现堆排序

文章目录 堆排序二叉树堆堆排序的过程:代码实现python中的heapq模块 堆排序 二叉树 关于二叉树的操作,其实核心就是 父节点找子节点,子节点找父节点 如果要将二叉树存储到队列中,就需要找出 父子节点之间的规律: 父…

什么是SYN flood,如何处理

在数字化时代,随着互联网的普及和技术的飞速发展,网络安全问题变得日益严峻。Flood攻击,作为一种典型的网络攻击手段,对个人和企业的信息安全构成了重大威胁。通过深入了解Flood攻击的概念、特点、影响及解决方案,我们…

Sentinel 快速入门

前置推荐阅读:Sentinel 介绍-CSDN博客 前置推荐阅读:Nacos快速入门-CSDN博客 快速开始 欢迎来到 Sentinel 的世界!这篇新手指南将指引您快速入门 Sentinel。 Sentinel 的使用可以分为两个部分: 核心库(Java 客户端)&#xff1a…

现代数字信号处理I-P4 CRLB+LMMSE 学习笔记

目录 学习资料视频链接: 1. 估计参数的CRLB回顾 2. 参数变换下的CRLB拓展 3. 矢量参数下的CRLB扩展 3.1 矢量参数下的CRLB公式 3.2 两个矩阵不等式关系的意义说明 3.3 矢量参数下CRLB公式的证明过程 4. 线性估计 重点注意事项:此处的线性估计&am…

【React】React18核心源码解读

前言 本文使用 React18.2.0 的源码,如果想回退到某一版本执行git checkout tags/v18.2.0即可。如果打开源码发现js文件报ts类型错误请看本人另一篇文章:VsCode查看React源码全是类型报错如何解决。 阅读源码的过程: 下载源码 观察 package…

【java面经thinking】二

目录 redis了解 使用原因 应用场景 数据类型 redis事务 数据持久化 RDB(快照): AOF(即时更新): 选择方式: redis快速的原因 redis单线程 单机瓶颈 经典3问 参考博客 redis了解 缓存中间件 使用原因 缓解高并发、提升高可用。…