17 - Games101 - 笔记 - 材质与外观

**17 **材质与外观

材质与BRDF

自然界中的材质:丝绸、头发、蝴蝶翅膀表面、寿司表面等等
图形学中的材质:同一个模型之所以渲染出不同结果的原因就是因为材质。在图形学中是给不同的物体指定不同的材质,知道它们如何和光线作用后就能正确的渲染。

image-20240408202511984

漫反射 BRDF

漫反射材质:光线打到一个点上后均匀分散到各个不同方向上。

image-20240408202615511

漫反射材质可以定义它在任何一个点上可以有不同的漫反射系数,虽然都是漫反射,但各个点的光被吸收的不同,所以会显示出不同的颜色。

image-20240408202716277

image-20240408203236191

Glossy BRDF

image-20240408203313863

Glossy材质,不完全镜面反射,也就是抛光金属。

BSDF=BRDF+BTDF

折射:一根光线打进来,一部分能量沿着镜面反射出去;有一部分能量却进到物体内部,这叫折射。
这种材质是玻璃或者水。

image-20240408203623592

反射BRDF和折射BTDF共同称为散射BSDF

反射BRDF

反射定律:对于镜面物体有一个入射方向,法线方向,出射方向,入射角等于出射角。

反射公式:

  • 平行四边形法则
  • 投影

image-20240408203750032

折射BTDF

斯内尔定律:入射角的正弦和折射角的正弦,它们之间满足折射率相乘相等的关系。

image-20240408203948946

折射角的计算:

image-20240408204038262

折射方向的计算:

image-20240408204244699

image-20240408205546281

全反射现象BTDF:
再来看折射角公式:

image-20240408204932726

例:

image-20240408204952750

菲涅尔项

日常生活中可以发现,物体的反射率与观察角度有关。

image-20240408205210545

对于绝缘体来说观察角度与法线夹角越大,反射的程度就越大,如下图:

image-20240408205358611

导体(金属)与绝缘体不同,他的反射率与夹角呈如下关系:

image-20240408205420245

菲涅尔项公式(精确)

image-20240408205447393

微表面理论 Microfacet Material

镜面反射项推导

对于一个物体如果我们离得足够远,很多微小的东西是看不到的,看到的是他们总体对表面的作用。
微平面理论,就是从微观的角度去分析,其认为任意物体的表面在到达微观的尺度之后,都是由许许多多的更小的镜面所组成的:
img
远处(macrosurface)看材质 近处(microsurface)看几何

微表面BRDF的核心是认为每个微表面都有自己的法向量,它们的分布对整体的法向量有贡献。
img
Glossy的微表面法向量分布与整体几乎一致,而diffuse较为分散。

微表面镜面反射项公式
img

image-20240408205836918

image-20240408210034154

image-20240408210151698

image-20240408210322165

image-20240408210350667

image-20240408210414835

image-20240408210426246

image-20240408210453767

image-20240408210508604

image-20240408210518699

区分材质

材质可以分为两类:

  • 各向同性:微表面法线分布均匀
  • 各项异性:微表面法线分布有明确的方向性

各项异性的BRDF

  • 和方向角(绝对立体角)有关
  • 拉丝金属(钢锅底)、尼龙、天鹅绒

BRDFs的性质

img
img
img

  • 非负性:能量的分布
  • 线性性质:Blinn-Phong
  • 可逆性
  • 能量守恒
  • 各向同性/异性

BRDFs的测量

  • 测量的原因:理论准确,直接测出来,能测出来的就不用计算了。
  • 做法:枚举所有camera和光源的入射出射方向
  • 著名BRDF库:MERL BRDF Database

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

体验Docker快速部署微信机器人

找到一个 Docker 部署微信机器人的镜像,简单测试一下。 1 使用 Docker 部署 1.1 拉取最新镜像 docker pull dannicool/docker-wechatbot-webhook1.2 Docker 部署 docker run -d --name wxBotWebhook -p 3001:3001 \ -v ~/wxBot_logs:/app/log \ dannicool/docker…

【C++基础】运算符和流程控制语句

C中的运算符和流程控制语句 一、运算符1. C和Java在通用运算符中的不同之处对比2. C中的位运算符2.1 移位运算符2.2 位逻辑运算符 3. 运算时的类型转换总结3.1 隐式类型转换3.2 显式类型转换(强制类型转换) 4. 注意 二、流程控制语句1. C和Java在通用流程…

网工内推 | 安全运维、服务工程师,软考中级、CISP优先,六险一金

01 华成峰科技 招聘岗位:安全运维工程师 职责描述: 1、负责安全产品的运维管理,包括设备升级变更、策略配置优化、设备巡检等; 2、负责7*24小时安全监控与应急响应,包括态势感知日志监测、安全事件分析及处置等&#…

【Keil5-报错】

Keil5-报错 ■ 调试烧录出现问题■ 烧录程序失败■ 编译报错 .\Objects\stm32h7_tms.axf: Error: L6218E: Undefined symbol __heap_base (referred from alloc.o).■ Keil5 load 出错■ No Space in execution regions with .ANY selector matching startup ...■ Execution r…

selenium自动化测试实战

🔥 交流讨论:欢迎加入我们一起学习! 🔥 资源分享:耗时200小时精选的「软件测试」资料包 🔥 教程推荐:火遍全网的《软件测试》教程 📢欢迎点赞 👍 收藏 ⭐留言 &#x1…

SSD涨价停不下来!

随着HBM内存产能短缺问题的出现,存储市场正遭遇另一波供应短缺。在2021年存储市场陷入低迷后,SSD价格已连续下滑约两年。面对市场变化,存储厂商减少了NAND闪存的生产。随着减产策略的有效执行,需求部分回升,导致SSD供应…

Hot100【十一】:最大子数组和

// 定义dp:以i结尾的最大子数组和 dp[i] max(dp[i-1] nums[i],nums[i]) class Solution {public int maxSubArray(int[] nums) {// 1. 不需要特殊处理// 2. 定义dpint[] dp new int[nums.length];dp[0] nums[0];int maxResult nums[0];// 3. dp递推for (int i …

Oracle 在线回缩表

Oracle 在线回缩表 conn scott/tiger DROP TABLE EMP1 PURGE; CREATE TABLE EMP1 AS SELECT * FROM EMP; alter table emp1 enable row movement; -- 启动回缩特性 insert into emp1 select * from emp1; / / commit; -- 增加到14000行 -- 分析表的结构 analyz…

Vue2 —— 学习(五)

一、生命周期 &#xff08;一&#xff09;引入案例 我们想让一行文字按一定频率逐渐变得透明 1. Vue 实例外写法 函数写在 Vue 实例外面也能实现但是不推荐 <body><div id"root"><h2 :style"{opacity}">欢迎学习Vue</h2><…

ELK大型日志收集分析系统

目录 一、 ELK日志分析系统 1.1ELK介绍 1.2ELK各组件介绍 1.2.1ElasticSearch 1.2.2Kiabana 1.2.3Logstash 1.2.4可以添加的其它组件 1.2.4.1Filebeat filebeat 结合logstash 带来好处 1.2.4.2缓存/消息队列&#xff08;redis、kafka、RabbitMQ等&#xff09; 1.2.4…

100道面试必会算法-21-二叉树的最近公共祖先

100道面试必会算法-21-二叉树的最近公共祖先 题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为&#xff1a;“对于有根树 T 的两个节点 p、q&#xff0c;最近公共祖先表示为一个节点 x&#xff0c;满足 x 是 p、q 的祖先且…

springcloud==springboot3.X+JDK21

2024年新版springcloud springboot3.X JDK21 ROADMAP 配套代码地址 GitHub - hebian1994/cloud2024

外包干了3天,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;19年通过校招进入杭州某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

最祥解决python 将Dataframe格式数据上传数据库所碰到的问题

碰到的问题 上传Datafrane格式的数据到数据库 会碰见很多错误 举几个很普遍遇到的问题(主要以SqlServer举例) 这里解释下 将截断字符串或二进制数据 这个是字符长度超过数据库设置的长度 然后还有字符转int失败 或者字符串转换日期/或时间失败 这个是碰到的需要解决的最多的问…

【MATLAB源码-第179期】基于matlab的64QAM调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 在通信系统中&#xff0c;频率偏移是一种常见的问题&#xff0c;它会导致接收到的信号频率与发送信号的频率不完全匹配&#xff0c;进而影响通信质量。在调制技术中&#xff0c;QPSK&#xff08;Quadrature Phase Shift Keyi…

在开发过程中使用 git rebase 还是 git merge

在开发过程中使用 git rebase 还是 git merge Merge(合并)的优点和缺点Rebase(变基)的优点和缺点总结&#xff1a; Git merge 和rebase的目的是一样的&#xff0c;它们都是将多个分支合并成一个。 虽然他们最终的目标是一样的&#xff0c;但这两种方法实现的方式是不同的。那么…

SpringBoot常用注解及其使用示例

Spring Boot是一个用于快速构建Java应用程序的框架&#xff0c;它简化了Spring应用程序的创建和部署过程。 Spring Boot提供了很多注解&#xff0c;用于简化开发过程&#xff0c;提高开发效率。本文将介绍几个Spring Boot常用注解的使用案例&#xff0c;包括Controller、Reques…

rancher踩坑日志:prometheus访问kubelet 10250端口提示鉴权失败

该原因是因为kubectl禁止了非授权用户访问10250端口来获取node的数据。 解决思路&#xff1a; 添加prometheus访问kubelet时带上证书进行验证匹配 --> 由于我的prometheus是rancher安装的&#xff0c;不知道要怎么修改所以研究了一会没研究明白就放弃了。设置prometheus访问…

《深入Linux内核架构》第2章 进程管理和调度 (2)

目录 2.4 进程管理相关的系统调用 2.4.1 进程复制 2.4.2 内核线程 2.4.3 启动新程序 2.4.4 退出进程 本专栏文章将有70篇左右&#xff0c;欢迎关注&#xff0c;订阅后续文章。 2.4 进程管理相关的系统调用 2.4.1 进程复制 1. _do_fork函数 fork vfork clone都最终调用_…

YOLOv5实战记录06 Gradio搭建Web GUI

个人打卡&#xff0c;慎看。 指路大佬&#xff1a;【手把手带你实战YOLOv5-入门篇】YOLOv5 Gradio搭建Web GUI_哔哩哔哩_bilibili 先放一张效果图&#xff1a; 零、虚拟环境激活 之前up说要激活环境时&#xff0c;我没当回事儿&#xff0c;今天突然想&#xff0c;激活环境然后…