PBR系列-物理材质(上)

作者:游梦

对PBR系列文章感兴趣还可以看前文:

PBR系列 - 物理光源

PBR系列-光之简史

前面两篇文章分别介绍了物理光源与光学研究简史,在对光有了简单认识之后,再认识物理材质会发现其实本质上还是对光的研究,再深入一点其实就是光在经过物体之后根据光线散射、反射以及折射的不同区分的材质,看完本篇文章,相信你会对物理材质有个新的认知。

可能有小伙伴好奇为什么我介绍到这里还没有介绍渲染方程,这里小编做个解释,一开始小编在学习PBR时,由于没能看到比较系统简单明了的文章,所以在初次看到渲染方程时产生了不小的恐惧心理,因此当小编开始写PBR时没有上来就介绍底层晦涩难懂的渲染方程,采取的方式是先简单大致介绍PBR整套理论,由浅入深,最后介绍渲染方程时会与前置的所有知识点进行联动,有助于清晰直观的理解渲染方程。

小编对物理材质的理解?

先来做个小测试,下面有三张纹路相似的图,分别是什么材质?

(图源:百度图片)

(图源:百度图片)

(图源:百度图片)

这里揭晓答案:
1. 玻璃
2. 金属
3. 布料

简单是很简单,但是如果让你不根据纹理判断,你会用什么来判断?

相信大家都会想到依据光照呈现的效果来判断。第一个后方的物体发射的光线可以穿透被看到,第二个反射的高光效果像金属平面,第三个光线经过细小的线状物体呈现毛茸茸的感觉推断是布料。可以发现都是依据光线经过物体时所呈现的光效判断,所以不同的物理材质也就是在光学研究中对同一类光照呈现效果的命名。

以上是小编对物理材质的理解,如有偏差欢迎指正^_^。

核心理论

在对光线经过的物体研究时,提出了以下几点核心理论:

微平面理论(Microfacet Theory):微平面理论是将物体表面建模做成无数微观尺度上有随机朝向的理想镜面反射的小平面(microfacet)的理论。在实际的PBR工作流中,这种物体表面的不规则性用粗糙度贴图或者高光度贴图来表示。

(图源:技术美术知识学习_04:PBR的个人理解_npr流程与pbr流程区别-CSDN博客)

能量守恒(Energy Conservation):出射光线的能量永远不能超过入射光线的能量。随着粗糙度的上升镜面反射区域的面积会增加,作为平衡,镜面反射区域的平均亮度则会下降。

菲涅尔反射(Fresnel Reflectance):光线以不同角度入射会有不同的反射率。相同的入射角度,不同的物质也会有不同的反射率。万物皆有菲涅尔反射。F0是即 0 度角入射的菲涅尔反射值。大多数非金属的F0范围是0.02-0.04,大多数金属的F0范围是0.7-1.0。

(图源:https://blog.csdn.net/qq_17775727/article/details/123284920)

线性空间(Linear Space):光照计算必须在线性空间完成,shader中输入的gamma空间的贴图比如漫反射贴图需要被转成线性空间,在具体操作时需要根据不同引擎和渲染器的不同做不同的操作。而描述物体表面属性的贴图如粗糙度,高光贴图,金属贴图等必须保证是线性空间。

色调映射(Tone Mapping):也称色调复制(tonereproduction),是将宽范围的照明级别拟合到屏幕有限色域内的过程。因为基于HDR渲染出来的亮度值会超过显示器能够显示最大亮度,所以需要使用色调映射,将光照结果从HDR转换为显示器能够正常显示的LDR。

物质的光学特性(Substance Optical Properties):现实世界中有不同类型的物质可分为三大类:绝缘体(Insulators),半导体(semi-conductors)和导体(conductors)。在渲染和游戏领域,我们一般只对其中的两个感兴趣:导体(金属)和绝缘体(电解质,非金属)。其中非金属具有单色/灰色镜面反射颜色。而金属具有彩色的镜面反射颜色。即非金属的F0是一个float。而金属的F0是一个float3,如下图:

(图源:【PBR系列一】PBR知识体系_非金属的f0-CSDN博客)

材质渲染工作流

为了能够在图形学中实时模拟计算出材质效果,当前主流的渲染分两种:金属/粗糙度工作流(Metal/Roughness)和镜面反射/光泽度工作(Specular/Glossiness),各自分别有自己的一套参数定义,这里小编介绍最常见的迪士尼基于金属/粗糙度工作流(Metal/Roughness)提出一套参数定义。

(图源:技术美术知识学习_04:PBR的个人理解_npr流程与pbr流程区别-CSDN博客)

据说是被美术设计师提醒,美术师需要的光照模型是可控制的视觉正确模型,不一定需要物理正确。所以迪士尼专家建立一个有“原则”的模式,而不是严格的物理正确模型。

迪士尼设计原则:

1.应该使用直观而非物理参数。

2.应该尽可能少地使用参数。

3.参数应该在合理控制在0到1之间。

4.参数应该被允许超出他们合理的视觉范围。

5.所有参数组合应该尽可能的健壮和可信。

参数:

baseColor:表面颜色,通常由texture maps提供

subsurface:用次表面控制漫反射颜色

metallic: 金属度(0电介质-1金属)这是两种不同模型之间的线性混合,该金属模型没有漫反射成分,有一个带颜色的高光,等同于其基本颜色。

specular: 入射高光反射量,代替了折射率。

specularTint:给美术设计师让步而设计的朝basecolor的入射高光颜色,平射角的高光色彩仍然是无色的。

roughness:表面粗糙度,控制漫反射和高光效果。

anisotropic: 各项异性,各项异性的程度,控制高光的宽高比(0 =各向同性,1 =最大各向异性。)。

sheen:一种额外的平射角组件,主要用于布料材质。

sheenTint:基本颜色的色彩光泽量。

clearcoat:第二特别专用的高光页(specular lobe)。

clearcoatGloss:控制clearcoat的光泽度,(0 =“光滑”外观,1 =“gloss”的外观)

下面是各参数影响的视觉效果:

(图源:离线渲染|Physically Based Shading at Disney:Disney principled BRDF - 知乎)

下面配图解释光线与物体作用示意图,加深理解光线与不同材质会有哪些效果:

光与非光学平坦表面的交互原理

光在与非光学平坦表面(Non-Optically-Flat Surfaces)的交互时,非光学平坦表面表现得像一个微小的光学平面表面的大集合。表面上的每个点都会以略微不同的方向对入射光反射,而最终的表面外观是许多具有不同表面取向的点的聚合结果。

(图源:【PBR系列一】PBR知识体系_非金属的f0-CSDN博客)

在微观尺度上,表面越粗糙,反射越模糊,因为表面取向与整个宏观表面取向的偏离更强。图片顶部所示的表面,表面相对光滑; 表面取向仅略有变化,导致反射光方向的微小变化,从而产生更清晰的反射。 图片底部所示的的表面较粗糙; 表面上的不同点具有广泛变化的方向取向,导致反射光方向的高度变化,并因此导致模糊的反射。 注意,两个表面在肉眼可见尺度下看起来都是光滑的,粗糙度差异仅在微观尺度上。

出于着色的目的,我们通常会去用统计方法处理这种微观几何现象,并将表面视为在每个点处在多个方向上反射(和折射)光。

(图源:https://blog.csdn.net/qq_35312463/article/details/108055143)

从表面反射出的光的行为很好理解,那么,从表面折射的光会发生什么变化? 这取决于对象本身的特性:

  • 对于金属,折射光会立刻被吸收 - 能量被自由电子立即吸收。
  • 对于非金属(也称为电介质或绝缘体),一旦光在其内部折射,就表现为常规的参与介质,表现出吸收和散射两种行为。

(图源:https://blog.csdn.net/qq_35312463/article/details/108055143)

上图是在金属中,所有折射的光能立即被自由电子吸收。

(图源:https://blog.csdn.net/qq_35312463/article/details/108055143)

上图在非金属中,折射的光会进行散射,直到从表面重新射出,就像光照向塑料材质上,能看到光传进物体一样,如下图,光透进兔子头部位再从表面射出的效果。

本篇文章介绍了物理材质、光线作用以及相关物理现象,下一篇将着重介绍光线与物体表面作用的BxDF之间的关系。

参考链接:

离线渲染|Physically Based Shading at Disney:Disney principled BRDF - 知乎

【PBR系列一】PBR知识体系_非金属的f0-CSDN博客

技术美术知识学习_04:PBR的个人理解_npr流程与pbr流程区别-CSDN博客


  关注Mapmost,持续更新GIS、三维美术、计算机技术干货

Mapmost是一套以三维地图和时空计算为特色的数字孪生底座平台,包含了空间数据管理工具(Studio)、应用开发工具(SDK)、应用创作工具(Alpha)。平台能力已覆盖城市时空数据的集成、多源数据资源的发布管理,以及数字孪生应用开发工具链,满足企业开发者用户快速搭建数字孪生场景的切实需求,助力实现行业领先。

欢迎进入官网体验使用:Mapmost——让人与机器联合创作成为新常态

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

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

相关文章

python爬取每日天气情况

python爬取每日天气情况 一、项目简介二、完整代码一、项目简介 本次爬取的目标数据来源于天气网,数据所在的页面如下图所示,本次任务较为简单,按照正常操作流程操作即可,即抓包分析数据接口,发送请求获取数据,解析数据并持久化存储。发送请求使用requests库,解析数据使…

CMake的原理与使用方法

一.为什么需要CMake,什么是CMake 1.由于各种make工具遵循不同的规范和标准,所执行的Makefile格式也不同,例如 GNU Make ,QT 的 qmake ,微软的 MS nmake,BSD Make(pmake),…

【3GPP IAB】NR IAB推荐架构

1 概述 3GPP所有提交给RAN-3 #99的IAB多跳设计都可以用五个架构参考图来表示。这些参考图的不同之处是需要对接口进行修改,或者需要额外的功能,例如完成多跳转发。这五个体系结构被分为两个体系结构组。这些架构的主要特点可以概括如下: 架构组1:由架构1…

java期末突击

目录 1. 快速入门 2. 类 3. 成员方法 4. 构造器 5. 单例模式 6. 继承 7. 抽象类 8. 多线程(Thread与Runnable) 1. 快速入门 public class Hello {public static void main(String[] args){System.out.println("Hello,World&q…

从头开始构建GPT标记器

从头开始构建GPT标记器 对于GPT Tokenizer,论文《Language Models are Unsupervised Multitask Learners》中介绍了一种字节级编码作为LLM的标记化机制: The vocabulary is expanded to 50,257. We also increase the context size from 512 to 1024 to…

C# 代码配置的艺术

文章目录 1、代码配置的定义及其在软件工程中的作用2、C# 代码配置的基本概念和工具3、代码配置的实践步骤4、实现代码配置使用属性(Properties)使用配置文件(Config Files)使用依赖注入(Dependency Injection&#xf…

跨境电商如何有效做好店铺账号管理?

跨境电商有效做好店铺账号管理至关重要,类似亚马逊、Temu、TikTok、ebay跨境电商账号涉及多个方面,包括多个账户的安全性、合规性、操作效率等。以下是一些我自己实操的策略和实践,希望能够帮助大家更好地管理跨境电商店铺账号。 一、哪些行为…

Spring Boot 整合 spring-boot-starter-mail 实现邮件发送和账户激活

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

单片机串口接收负数的处理方法

dp80中有很多外设处理相关的都是有符号数据。 如dpm计算的结果,插入dpm后有时候会得到0xFFFFFFFE-2(从调试界面也可以看到)。

【深度密码】神经网络算法在机器学习中的前沿探索

目录 🚝前言 🚍什么是机器学习 1. 基本概念 2. 类型 3. 关键算法 4. 应用领域 5. 工作流程 🚋什么是神经网络 基本结构 🚂神经网络的工作原理 前向传播(Forward Propagation): 损失函…

RT-DETR:端到端的实时Transformer检测模型(目标检测+跟踪)

博主一直一来做的都是基于Transformer的目标检测领域,相较于基于卷积的目标检测方法,如YOLO等,其检测速度一直为人诟病。 终于,RT-DETR横空出世,在取得高精度的同时,检测速度也大幅提升。 那么RT-DETR是如…

前端 CSS 经典:3D Hover Effect 效果

前言&#xff1a;有趣的 3D Hover Effect 效果&#xff0c;通过 js 监听鼠标移动&#xff0c;动态赋值 rotateX&#xff0c;rotateY 的旋转度来实现。 效果图&#xff1a; 代码实现&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta …

基于鲲鹏服务器搭建简单的开源论坛系统(LAMP)实践分享

LAMPLinux apache mysql( mariadb) PHP 结合利用华为云弹性负载均衡ELB弹性伸缩AS服务 优点&#xff1a; 将访问流量自动分发到多台云服务器&#xff0c;扩展应用系统对外的服务能力&#xff0c;实现更高水平的应用容错&#xff1b; 根据不同的业务、访问需求和预设策略&…

flask-slqalchemy使用详解

目录 1、flask-sqlalchemy 1.1、flask_sqlalchemy 与sqlalchemy 的关系 1.1.1、 基本定义与用途 1.2、flask_sqlalchemy 的使用 1.2.1、安装相关的库 1.2.2、项目准备 1.2.3、创建ORM模型 1.2.3.1、使用db.create_all()创建表的示例 1.2.3.2、创建多表关联ORM模型 1.…

【ETAS CP AUTOSAR基础软件】EcuM模块详解

文章包含了AUTOSAR基础软件&#xff08;BSW&#xff09;中EcuM模块相关的内容详解。本文从AUTOSAR规范解析&#xff0c;ISOLAR-AB配置以及模块相关代码分析三个维度来帮读者清晰的认识和了解EcuM。文中涉及的SOLAR-AB配置以及模块相关代码都是依托于ETAS提供的工具链来配置与生…

语音群呼之语音导航的应用

在数字化时代&#xff0c;语音群呼技术已成为企业、组织和个人高效沟通的重要工具。语音群呼不仅能够快速地将信息传递给目标群体&#xff0c;而且通过语音导航功能&#xff0c;还能确保信息传达的准确性和用户体验的优质性。本文将深入探讨语音群呼的语音导航功能&#xff0c;…

【数据结构与算法】算法优化、时间复杂度、空间复杂度

文章目录 一、什么是复杂度&#xff1f;二、大O表示法三、时间复杂度计算四、常见复杂度的比较五、算法优化的核心方法论六、常见算法复杂度五、总结 一、什么是复杂度&#xff1f; 复杂度是衡量代码运行效率的重要的度量因素。 而复杂度主要就是指时间复杂度和空间复杂度。 …

算法思想总结:哈希表

一、哈希表剖析 1、哈希表底层&#xff1a;通过对C的学习&#xff0c;我们知道STL中哈希表底层是用的链地址法封装的开散列。 2、哈希表作用&#xff1a;存储数据的容器&#xff0c;插入、删除、搜索的时间复杂度都是O&#xff08;1&#xff09;&#xff0c;无序。 3、什么时…

低功耗蓝牙模块在便携式医疗设备上的应用前景

随着科技的不断发展&#xff0c;医疗设备的便携性和智能化已经成为了一种趋势。在这个背景下&#xff0c;低功耗蓝牙模块(Bluetooth Low Energy,简称BLE)作为一种先进的无线通信技术&#xff0c;正逐渐在便携式医疗设备中发挥着越来越重要的作用。本文美迅物联网MesoonRF将探讨…

TiKV学习5:TiDB SQL执行流程

目录 1. DML语句读流程概要 2. DML语句写流程概要 3. DDL 流程概要 4. SQL的Parse和Compile 5. 读取的执行 6. 写入的执行 7. DDL的执行 8. 小结 1. DML语句读流程概要 TiDB Server接收sql并处理&#xff0c;TiKV负责持久化数据&#xff0c;PD提供TSO和Region的数据字典…