【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.mzph.cn/bicheng/57370.shtml

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

相关文章

教你如何轻松用 python 连接和操作 redis 数据库

连接数据库之前,你需要提前安装好 Python 和 redis,这里默认你已经好了。点击这里了解 Python安装、 演示代码地址。     在 Python 中操作 redis,通常使用 redis 这个库来进行数据库的连接、查询和操作。下面是使用 redis 连接 MySQL 数据…

mysql8以上版本第一次下载后的登录问题

mysql8以上版本第一次下载后的登录问题 在官网下载mysql后,按照MySQL下载和安装教程操作就可以 如果出现问题,参考https://blog.csdn.net/weixin_63107823/article/details/136588474 注意ini配置文件,如果你是复制的别人的代码&#xff0…

ESD防静电闸机如何保护汽车电子产品

随着汽车电子技术的快速发展,汽车中集成了越来越多的电子设备,如车载信息娱乐系统、自动驾驶传感器、驾驶辅助系统等。静电放电可能导致电子组件的损坏、性能下降,甚至使整个系统失效。因此,如何有效保护汽车电子产品免受静电损害…

this指针—静态成员—单例模式

01 this指针 C是在C语言的基础上发展而来的,第一个C的编译器实际上是将C程序翻译为C语言,然后再使用C语言编译器编译 C语言中没有类的概念,只有结构,函数都是全局函数,没有成员函数的概念 翻译的时候,将cla…

2024 四川省大学生信息安全技术大赛 安恒杯 部分 WP

文章目录 一、前言二、MISCunzip-png拓展 第47张图片重要的文件 三、WEB四、CRYPTO五、REVERSE 一、前言 WP不完整,仅供参考! 除WEB外,其余附件均已打包完毕,在这里也是非常感谢师傅的附件支持! 123网盘下载&#x…

腾讯PAG 动画库Android版本的一个问题与排查记录

1 背景与环境 Android project中有加载动画的需求,设计师推荐使用腾讯的pag动画。项目中使用到的pag android库的版本是:com.tencent.tav:libpag:4.3.50。 2 故事经过 项目中pag的动画资源是有固定尺寸的,由于资源中的内容过于偏左&#x…

Web应用框架-Django应用基础(2)

1.请求响应对象 1.1 请求对象HttpRequest测试 #hello\views def http_request(request):#1.获得请求方式print(request.method)#2.获得请求头信息#2.1 获取META中的请求头信息headers request.METAprint(headers)#2.2 获取请求头信息的内容ua request.META.get(HTTP_USER_AG…

023 elasticsearch查询数据 高亮 分页 中文分词器 field的数据类型

文章目录 1查询的语法2查询全部数据3termQuery 关键词查询4QueryString查询,根据查询字符串查询5match查询,功能和query_string相同6multi_match查询7bool查询8高亮处理9查询结果分页10中文分词器field的数据类型 1查询的语法 方法:post url…

Zookeeper面试整理-Zookeeper的基础概念

Zookeeper的基础概念是理解其作为分布式协调服务的核心要素。以下是一些关键的基础概念: 1. Zookeeper是什么? Zookeeper 是一个开源的分布式协调服务,用于分布式应用中的配置管理、命名服务、分布式锁、集群管理等任务。它提供了一组简单的原语,帮助开发人员构建健壮的分布…

[已解决] pycharm添加本地conda虚拟环境 + 配置解释器 - pycharm找不到conda可执行文件

目录 问题: 方法: 补充:创建conda虚拟环境 参考文档:pycharm找不到conda可执行文件怎么办?-CSDN 问题: 1.显示:未为项目配置 Python 解释器 2.想在pycharm中使用本地创建的虚拟环境 方法&a…

【分布式微服务云原生】《微服务架构大揭秘:流行框架与服务治理攻略》

标题:《微服务架构大揭秘:流行框架与服务治理攻略》 摘要:本文深入探讨了流行的微服务架构框架,包括 Spring Cloud、Docker Kubernetes、Dubbo、Service Mesh 和 Serverless 架构,详细介绍了它们的关键组件和服务治理…

通过前端UI界面创建VUE项目

通过前端UI界面创建VUE项目,是比较方面的一种方式,下面我们详细分析一下流程: 1、找到合适目录 右键鼠标,点击在终端打开 2、开始创建 输入 vue ui 浏览器弹出页面 3、点击Create项目 显示已有文件列表,另外可以点击…

HttpURLConnection和OkHttp的特点

HttpURLConnection与OkHttp概述及个人倾向性分析 在Java和Android开发中,HttpURLConnection与OkHttp都是用于处理HTTP请求的库,它们在功能、性能、易用性等方面各有千秋。本文将详细阐述两者的特点,并结合个人使用经验,表达我对哪…

【React系列二】—React学习历程的分享

一、表单处理 受控组件 HTML 中的表单元素是可输入的,也就是有自己的可变状态 而 React 中可变状态通常保存在state中,并且只能通过 setState() 方法来修改 React 将 state 与表单元素值 value 绑定在一起,有 state 的值来控制表单元素的值…

find_library、pkg_check_modules、pkg_search_module的区别

在CMake中,find_library、pkg_check_modules和pkg_search_module是用于查找和使用库的三种不同命令。以下是具体介绍: find_library 功能:find_library用于查找指定的库文件(动态库或静态库),不依赖于库提供…

ChatGLM4重磅开源! 连忙实操测试一波,效果惊艳,真的好用!附带最新相关资料和喂饭级实操推理教程!!

本文目录 GLM4重磅开源啦 GLM4系列版本介绍 GLM4大模型能力测评结果 经典测评任务结果 长文本能力 工具调用能力 多模态能力 手把手实操GLM-4-9B-Chat推理预测&&效果展示 GLM4运行硬件和环境要求 配置对应的库环境 使用peftbitsandbytes 进行4位量化推理 进…

【大模型报告】2024年中国AI大模型场景探索及产业应用调研报告【免费下载】

1.行业概况 市场规模: 2023年中国AI大模型行业规模达到147亿元,预计到2028年将突破1000亿元,复合增速超过50%。 应用价值: AI大模型技术能够提升生产要素的产出效率,并提高数据要素在生产要素组合中的地位。 应用路…

本地生活便民信息服务小程序源码系统 PHP+MySQL组合开发 带完整的安装代码包以及搭建部署教程

系统概述 地方门户分类信息网站源码系统是一个基于PHP和MySQL开发的强大平台,旨在帮助用户轻松搭建地方性的分类信息网站。该系统集成了众多实用功能,支持用户自由发帖、浏览和搜索各类信息,如二手交易、求职招聘、房屋租售、生活服务、商家…

Git核心概念图例与最常用内容操作(reset、diff、restore、stash、reflog、cherry-pick)

文章目录 简介前置概念.git目录objects目录refs目录HEAD文件 resetreflog 与 reset --hardrevert(撤销指定提交)stashdiff工作区与暂存区差异暂存区与HEAD差异工作区与HEAD差异其他比较 restore、checkout(代码撤回)merge、rebase、cherry-pick 简介 本文将介绍Git几个核心概念…

ubuntu22.04下GStreamer源码编译单步调试

前言 本文会通过介绍在linux平台下的GStreamer的源码编译和单步调试example实例。官网介绍直接通过命令行来安装gstreamer可以参考链接:Installing on Linux。 这种方法安装后,基于gstreamer的程序,单步调试的时候并不会进入到gstreamer源码…