当前位置: 首页 > news >正文

【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次测量,然后进行压缩,讲结果存储到三维数组中。

相关文章:

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

目录 1 材质和外观 1.1 自然界中,外观是光线和材质共同作用的结果 1.2 图形学中,什么是材质? 1.2.1 渲染方程严格正确,其中BRDF项决定了物体的材质 1.2.2 漫反射材质 (1)如何定义漫反射系数&#xff1…...

对于从vscode ssh到virtualBox的timeout记录

如题,解决方式如下: 1.把虚拟机关机退出来,在这个界面进行网络设置:选桥接网卡 2.然后再进系统,使用命令 ip addr查看如今的ip地址,应该和在本机里面看到的是一个网段 3.打开vscode,该干啥干…...

鸿蒙原生应用扬帆起航

就在2024年6月21日华为在开发者大会上发布了全新操作的系统HarmonyOS Next开发测试版,网友们把它称之为“称之为纯血鸿蒙”。因为在此之前鸿蒙系统底层式有两套基础架构的,一套是是Android的AOSP,一套是鸿蒙的Open Harmony,因为早…...

《计算机视觉》—— 表情识别

根据计算眼睛、嘴巴的变化,判断是什么表情结合以下两篇文章来理解表情识别的实现方法 基于 dilib 库的人脸检测 https://blog.csdn.net/weixin_73504499/article/details/142977202?spm1001.2014.3001.5501 基于 dlib 库的人脸关键点定位 https://blog.csdn.net/we…...

NVIDIA Aerial Omniverse

NVIDIA Aerial Omniverse 数字孪生助力打造新一代无线网络 文章目录 前言一、从链路级仿真到系统级仿真二、转变无线研发方式1. 开放且可定制的模块化平台2. 适用于 6G 标准化的 3GPP 兼容平台3. 部署前测试4. AI 和 ML 在数字孪生中的应用5. 高级物理精准的电磁求解器6. 合作伙…...

QT程序报错解决方案:Cannot queue arguments of type ‘QTextCharFormat‘ 或 ‘QTextCursor‘

项目场景: 项目场景:基于QT实现的C某程序,搭载在Linux环境中。 问题描述 执行程序时,发现log中报错如下内容: QObject::connect: Cannot queue arguments of type QTextCharFormat (Make sure QTextCharFormat is r…...

MySQL知识点_03

MySQL 命令大全 基础命令 操作命令连接到 MySQL 数据库mysql -u 用户名 -p查看所有数据库SHOW DATABASES;选择一个数据库USE 数据库名;查看所有表SHOW TABLES;查看表结构DESCRIBE 表名; 或 SHOW COLUMNS FROM 表名;创建一个新数据库CREATE DATABASE 数据库名;删除一个数据库D…...

leetcode:744. 寻找比目标字母大的最小字母(python3解法)

难度:简单 给你一个字符数组 letters,该数组按非递减顺序排序,以及一个字符 target。letters 里至少有两个不同的字符。 返回 letters 中大于 target 的最小的字符。如果不存在这样的字符,则返回 letters 的第一个字符。 示例 1&a…...

2015年-2016年 软件工程程序设计题(算法题)实战_c语言程序设计数据结构程序设计分析

文章目录 2015年1.c语言程序设计部分2.数据结构程序设计部分 2016年1.c语言程序设计部分2.数据结构程序设计部分 2015年 1.c语言程序设计部分 1.从一组数据中选择最大的和最小的输出。 void print_maxandmin(double a[],int length) //在一组数据中选择最大的或者最小的输出…...

整理一下实际开发和工作中Git工具的使用 (持续更新中)

介绍一下Git 在实际开发和工作中,Git工具的使用可以说是至关重要的,它不仅提高了团队协作的效率,还帮助开发者有效地管理代码版本。以下是对Git工具使用的扩展描述: 版本控制:Git能够跟踪代码的每一个修改记录&#x…...

Axios 的基本使用与 Fetch 的比较、在 Vue 项目中使用 Axios 的最佳实践

文章目录 1. 引言2. Axios 的基本使用2.1 安装 Axios2.2 发起 GET 请求2.3 发起 POST 请求2.4 请求拦截器2.5 设置全局配置 3. Axios 与 Fetch 的比较3.1 Axios 与 Fetch 的异同点3.2 Fetch 的基本使用3.3 使用 Fetch 处理 POST 请求 4. 讨论在 Vue 项目中使用 Axios 的最佳实践…...

Dockerfile样例

一、基础jar镜像制作 ## Dockerfile FROM registry.openanolis.cn/openanolis/anolisos:8.9 RUN mkdir /work ADD jdk17.tar.gz fonts.tar.gz /work/ RUN yum install fontconfig ttmkfdir -y && yum clean all && \chmod -R 755 /work/fonts ADD fonts.conf …...

MYSQL-多表查询

一、概述 1、定义 多表查询,也称为关联查询,指两个或更多个表一起完成查询操作。 2、前提条件 这些一起查询的表之间是有关系的(一对一、一对多),它们之间一定是有关联字段,这个关联字段可能建立了外键…...

MySQL改密码后不生效问题

MySQL修改密码后连接报密码错误 1.mysql修改密码命令: 这两种连接方式密码都必须修改 修改远程连接密码 ALTER USER ‘root’‘%’ IDENTIFIED BY ‘password’; 修改本地连接密码 ALTER USER ‘root’‘localhost’ IDENTIFIED BY ‘password’; 修改完后必须刷新…...

15分钟学Go 第1天:Go语言简介与特点

Go语言简介与特点 1. Go语言概述 Go语言(又称Golang)是由谷歌于2007年开发并在2009年正式发布的一种开源编程语言。它旨在简单、高效地进行软件开发,尤其适合于网络编程和分布式系统。 1.1 发展背景 多核处理器:随着计算机硬件…...

UDP/TCP协议

网络层只负责将数据包送达至目标主机,并不负责将数据包上交给上层的哪一个应用程序,这是传输层需要干的事,传输层通过端口来区分不同的应用程序。传输层协议主要分为UDP(用户数据报协议)和TCP(传输控制协议…...

gitee建立/取消关联仓库

目录 一、常用指令总结 二、建立关联具体操作 三、取消关联具体操作 一、常用指令总结 首先要选中要关联的文件,右击,选择Git Bash Here。 git remote -v //查看自己的文件有几个关联的仓库git init //初始化文件夹为git可远程建立链接的文件夹…...

在 Windows 环境下,Git 默认会自动处理 CRLF 和 LF 之间的转换。

在 Windows 环境下,Git 默认会自动处理 CRLF 和 LF 之间的转换。 要确保这一点并自动处理换行符差异,你可以按照以下步骤配置 1. 配置 Git 自动转换 CRLF 使用 Git Bash 或命令行执行以下命令,设置 Git 自动处理换行符: git con…...

Kibana可视化Dashboard如何基于字段是否包含某关键词进行过滤

kinana是一个功能强大、可对Elasticsearch数据进行可视化的开源工具。 我们在dashboard创建可视化时,有时需要将某个index里数据的某个字段根据是否包含某些特定关键词进行过滤,这个时候就可以用到lens里的filter功能很方便地进行操作。 如上图所示&…...

架构师之路-学渣到学霸历程-23

实战:NFS安装部署 接早上了解过了NFS的一些基本原理,咋们就看看一些实战; 尝试自己部署一下实验;然后实验成功了是我们最大的鼓励来着; 实战过程中,我们也面临了很多报错;所以每个实战的报错我…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

(十)学生端搭建

本次旨在将之前的已完成的部分功能进行拼装到学生端,同时完善学生端的构建。本次工作主要包括: 1.学生端整体界面布局 2.模拟考场与部分个人画像流程的串联 3.整体学生端逻辑 一、学生端 在主界面可以选择自己的用户角色 选择学生则进入学生登录界面…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全:零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言:云原生安全的范式革命 随着云原生技术的普及,安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测,到2025年,零信任架构将成为超…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

【学习笔记】深入理解Java虚拟机学习笔记——第4章 虚拟机性能监控,故障处理工具

第2章 虚拟机性能监控,故障处理工具 4.1 概述 略 4.2 基础故障处理工具 4.2.1 jps:虚拟机进程状况工具 命令:jps [options] [hostid] 功能:本地虚拟机进程显示进程ID(与ps相同),可同时显示主类&#x…...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配

目录 一、C 内存的基本概念​ 1.1 内存的物理与逻辑结构​ 1.2 C 程序的内存区域划分​ 二、栈内存分配​ 2.1 栈内存的特点​ 2.2 栈内存分配示例​ 三、堆内存分配​ 3.1 new和delete操作符​ 4.2 内存泄漏与悬空指针问题​ 4.3 new和delete的重载​ 四、智能指针…...