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

太原网页设计公司是销售吗/seo教程网站优化

太原网页设计公司是销售吗,seo教程网站优化,深圳网站建设服务商万创网,ftp下载wordpress1.前言 想要得到一个漂亮准确的场景渲染效果,不只需要物理正确的全局照明算法,也要了解现实中各种物体的表面外观和在图形学中的模拟方式。而物体的外观和材质其实就是同一个意思,不同的材质在光照下就会表现出不同的外观,所以外观…

1.前言

        想要得到一个漂亮准确的场景渲染效果,不只需要物理正确的全局照明算法,也要了解现实中各种物体的表面外观和在图形学中的模拟方式。而物体的外观和材质其实就是同一个意思,不同的材质在光照下就会表现出不同的外观,所以外观是光线和材质共同作用的结果。

        在自然界中有成千上万的材质表现,因此本文就介绍一下现实中存在的各种类型的材质以及内在的原理。

2.什么是材质

        在自然界中的光线与材质共同作用表现出不同的外观,那么在图形学中材质表示什么呢?

        材质就是光线在物体表面的反射方式,而无论什么材质,必定满足物理正确的渲染方程,那么渲染方程中和光的反射有关的是哪个呢?

        只有BRDF一项和光的反射方式有关,因此材质其实就是BRDF

3.材质分类

3.1 漫反射材质

        漫反射材质(Diffuse / Lambertian Material)是比较常见的一种材质,往往出现在粗糙的表面,例如木材等。

        对于漫反射材质,任何方向的入射光线照射到表面时,都会向半球方向均匀反射。如下图所示。

        假设物体表面是白色的,不发光也不吸收光,且入射的光都是大小相同且方向均匀的。那么根据能量守恒,所有反射出去的光线的能量(Irradiance)等于所有入射光线能量(Irradiance),并且反射的光也是大小相同且方向均匀的。

        那么,就可以把这个渲染方程写出来。

        这里入射的Radiance是常数,BRDF(Diffuse)也是常数,这两项就可以拿出去,整个式子就变成了对半球上一个cosθ的积分,积分出来是π

        那么整个式子就变成了 Lo=πfrLi ,又因为能量守恒,入射的Radiance等于出射的Radiance,所以 Li=Lo ,因此 fr=1/π

        这时候就是完全不吸收能量的BRDF,这里定义一个反射率albedo(ρ)的概念,这个值可以是一个一维标量,也可以是RGB等三维标量,让反射率albedo在0到1之间,这样就可以引入不同颜色的BRDF,BRDF的值就是albedo / π,取值范围是[0, 1/π]

3.2 镜面反射材质

        有完美反射的镜面反射材质(Ideal reflective material),在现实中不多见,例如镜子等。

        对于镜面反射材质,入射光线照射到表面后,会沿反射方向反射,入射光线与面法线的夹角等于反射光线与面法线的夹角。如下图所示。

        反射方向计算相对容易,如下图所示,已知入射光ωi、入射角θi、法线方向n,求反射光ωo

       根据向量的平行四边形法则,入射光ωi加反射光ωo的结果为入射光在法线方向的投影的2倍,投影可直接点乘求得,因此可得。

3.3 光泽反射材质

        光泽反射材质(Glossy material)也比较常见,介于漫反射与镜面反射之间,看起来比镜面反射模糊,例如抛光金属、铜镜等。

        对于光泽反射材质,入射光线照射到表面时,会沿反射方向的一定范围内反射。如下图所示。

3.4 折射材质

        折射材质(Refractive material)也比较多见,例如水、玻璃等。

        折射材质往往也有部分反射,光线在穿过两种透明介质之间的平面时,部分能量会折射入物体内部,其余的能量会反射出去。如下图所示。

        在折射时入射角θi与折射角θt的关系与平面两侧透明介质的折射率有关,当光线从折射率小的透明物体(例如空气)射入折射率大的透明物体(例如水)中时,折射角会小于入射角,如下图所示。

       折射定律(Snell’s Law)满足公式如下。其中nint分别代表平面两边透明介质的折射率(IOR),如上图所示上半部分为ni,下半部分为nt

        通过折射定律可以算出折射角度。

        根据三角函数的关系如下。

        结合折射定律公式,推导出折射角的余弦值cosθt如下。

        注意,这里是有求平方根操作的,而当根号内小于0时求平方根是无意义的,那么根号内会有小于0的情况吗?

        显然,当ni/nt大于1,并且θi的比较大时,可能会出现求折射角无意义的情况,也就是全反射现象(Total Internal Reflection)。如下图所示。

        就是当入射介质的折射率大于折射介质的折射率,这样就有可能出现没有折射的全反射现象。下面举个现实中的例子。

        当人在水底往各个方向去看,只能看到一个锥形的区域。如下图所示。

        常见物体的折射率如下。

        对于折射来说BRDF(Bidirectional Reflectance Distribution Function,双向反射分布函数 )自然就不适用了,折射适用于BTDF(Bidirectional Transmittance Distribution Function,双向透射分布函数 ),两者可以统称为BSDF(Bidirectional Scattering Distribution Function,双向散射分布函数)。

3.5 菲涅尔反射

        菲涅尔反射(Fresnel Reflection)是现实中很常见的现象。入射光线与平面的夹角除了影响折射的效果以外,也影响反射的效果,如下图所示。

        从图中可以看出,桌面的反射效果和视线与桌面的夹角有关,视线越平行桌面,桌面的反射效果越强,书的倒影越清晰;视线越垂直桌面,桌面的反射效果越弱,书的倒影越模糊。

        简单来说,就是物体的反射率其实与观察角度有关,对于绝缘体来说观察角度与法线夹角越大,反射的程度就越高,如下图中的红线。

        而导体则与绝缘体不同,他的反射率与夹角呈如下关系。

        金属的菲涅尔反射现象确实不明显,从哪个视角观察反射效果都比较清晰。

        对于任意一个物体的精确反射率的计算公式如下。

        这里考虑了两个极化,然后再求平均,公式的推理过程暂时不必深究,只要知道,物体的反射率和入射角度、入射空间的折射率、物体的折射率有关就可以了,通过该公式就能得出正确的反射率。

        对于精确的算法来说,计算量是非常大的,因此有人提出了个简单的算法,大幅降低计算量来得到比较近似的效果,如下所示。

3.6 微平面材质

        所谓微平面材质(Microfacet Material)就是当从远处看物体表面时,看不到物体细节,看到的是最终表面对光形成总体的效果。如下图所示。

        说到微平面材质就不得不提微平面理论(Microfacets Theory),微平面理论就是从微观的角度去分析,认为任意物体的表面都是由许许多多的更小的镜面所组成,并且每个微小的平面都有自己的法线方向。

        当这些微小的镜面的法线分布较为集中一致(从数学上看它们的方差较小)的时候,从宏观角度来看,物体的表面会显得比较光滑,镜面反射比较明显;反之,当这些微小镜面的法线方向分布较为杂乱的时候,物体的表面则会显得相对粗糙,漫反射比较明显。如下图所示。

        而根据微平面理论和BRDF,也就可以推导出微平面BRDF(Microfacet BRDF)。

        微平面BRDF首先考虑菲涅尔反射F(i, h),然后考虑法线分布D(h),这里又用到了半程向量h(入射方向与观察方向的中间向量hDir),只有当微表面的法线方向在半程向量周围一个限定的范围之内时,才能将光反射出去。

        中间那一项G(i, o, h)是考虑微表面之间的光线遮挡,比如当光线接近平行平面的时候,入射光线可能无法照射到一些微平面,这种情况称为Shadowing(如下图左),或者反射光线无法正常到达人眼,称为Masking(如下图右)。也就是当光线越接近平行物体表面的时候,这一项越容易发生。

        微平面材质可以描述各种各样物体表面,比如金属、木质、橡胶等。

3.7 各向同性/各向异性材质

        一些金属表面,往往会进行一些磨砂处理,在表面形成沿一定方向的划痕(如上图所示),也就是微表面存在明确的方向性,从而影响反射的效果,这样的材质就称其为各向异性材质(Anisotropic Materials);反之微表面不存在一定的方向性或者方向性很微弱的材质就称为各向同性材质(Isotropic Materials)。材质就可分为这两类。如下图所示。

        从BRDF上考虑:BRDF原来是两个方向的函数θi、φi是输入方向,θr、φr是输出方向。如果BRDF满足在方位角上旋转,得到的还是相同的BRDF(沿一个方位角θφ的中心旋转,相对位置不变),就称为各向同性;如果相对位置改变,BRDF改变,则称为各向异性

        对于各向同性材质,BRDF只和相对的方位角有关,即φr-φi,因此原来四维的BRDF,就可以写成三维的。

        所有的BRDF,由于具有可逆性(交换入射方向和出射方向,得到的BRDF的值相同),因此相对方位角不用考虑正负,因此也可以写成方位角之差的绝对值,不用考虑大小或者正负关系。

4.BRDF的性质

        1.BRDF是非负的(Non-negativity),表示了能量的分布。

        2.BRDF是线性的(Linearity),可以拆分和叠加。

        3.BRDF是可逆的(Reciprocity principle),调换入射方向和出射方向依然成立。

        4.BRDF满足能量守恒(Energy conservation),入射能量等于反射能量(存在能量吸收的情况时,入射能量大于反射能量)。

相关文章:

计算机图形学入门24:材质与外观

1.前言 想要得到一个漂亮准确的场景渲染效果,不只需要物理正确的全局照明算法,也要了解现实中各种物体的表面外观和在图形学中的模拟方式。而物体的外观和材质其实就是同一个意思,不同的材质在光照下就会表现出不同的外观,所以外观…...

FTP、http 、tcp

HTTP VS FTP HTTP :HyperText Transfer Protocol 超文本传输协议,是基于TCP协议 FTP: File Transfer Protocol 文件传输协议, 基于TCP协议, 基于UDP协议的FTP 叫做 TFTP HTTP 协议 通过一个SOCKET连接传输依次会话数…...

【虚幻引擎】UE4初学者系列教程开发进阶实战篇——生存游戏案例

一、课程体系 1 学前必读 2 Character类相关基础 -人物移动控制 -动画蓝图 3 常见游戏机制基础 -碰撞器、触发器 -物体使用接口 -视角切换 4其他相关设计 -背包系统 -锻造系统 -物体破碎效果 -简易种植系统 -互动物体动画 5课程结语 二、UI部分 思维导图部分 实操部分 …...

认识并理解webSocket

今天逛牛客,看到有大佬分享说前端面试的时候遇到了关于webSocket的问题,一看自己都没见过这个知识点,赶紧学习一下,在此记录! WebSocket 是一种网络通信协议,提供了全双工通信渠道,即客户端和服…...

Scissor算法-从含有表型的bulkRNA数据中提取信息进而鉴别单细胞亚群

在做基础实验的时候,研究者都希望能够改变各种条件来进行对比分析,从而探索自己所感兴趣的方向。 在做数据分析的时候也是一样的,我们希望有一个数据集能够附加了很多临床信息/表型,然后二次分析者们就可以进一步挖掘。 然而现实…...

Linux-磁盘空间不足的清理步骤(详细版本)

当 Linux 服务器出现 “no space left on device” 错误时,意味着磁盘空间已满,需要采取一些措施来清理磁盘,可以根据下面步骤依次清理: 1. 检查磁盘使用情况 首先,使用 df 和 du 命令检查磁盘使用情况,找出哪些目录占用了大量空间。 可以通过如下命令来查询 df -h举例…...

go-redis源码解析:连接池原理

1. 执行命令的入口方法 redis也是通过hook执行命令,initHooks时,会将redis的hook放在第一个 通过hook调用到process方法,process方法内部再调用_process 2. 线程池初始化 redis在新建单客户端、sentinel客户端、cluster客户端等&#xff0c…...

蓝桥杯备赛攻略(怒刷5个月拿省一)

十五届蓝桥杯结束,up也在这次比赛中获得了不错的成绩,为了帮助大家在25年蓝桥杯上获得好的成绩,我将根据今年的经验写一份蓝桥杯的备赛攻略,希望能帮到大家。 参赛准备 蓝桥杯算法赛必须指定一个编程语言赛道报名,也就…...

springboot项目jar包修改数据库配置运行时异常

一、背景 我将软件成功打好jar包了,到部署的时候发现jar包中数据库配置写的有问题,不想再重新打包了,打算直接修改配置文件,结果修改配置后,再通过java -jar运行时就报错了。 二、问题描述 本地项目是springBoot项目…...

倒计时 2 周!CommunityOverCode Asia 2024 IoT Community 专题部分

CommunityOverCode 是 Apache 软件基金会(ASF)的官方全球系列大会,其前身为 ApacheCon。自 1998 年以来,在 ASF 成立之前,ApacheCon 已经吸引了各个层次的参与者,在 300 多个 Apache 项目及其不同的社区中探…...

使用OpenCV在按下Enter键时截图并保存到指定文件夹

使用OpenCV在按下Enter键时截图并保存到指定文件夹 在这篇博客中,我们将介绍如何使用OpenCV库来实现一个简单的功能:在按下Enter键时从摄像头截图并保存到指定的文件夹中。这个功能可以用于各种应用,例如监控系统、视频捕捉等。 前置条件 …...

汇川伺服 (4)FFT、机械特性、闭环、惯量、刚性、抑制振动

一、参数解释 二、FFT 三、机械特性分析 四、多级配方与对象字典 对机组网配方 对象字典 五、InoServoShop 主要是用于调试620P620N将压缩报解压后不需要安装就可以直接使用 六、InoDriveWorkShop 主要是调试660 670 810 520 等系列 惯量识别 Etune Stune 惯量比调试 大惯…...

Unity3D中使用并行的Job完成筛选类任务详解

在Unity3D开发中,处理大量数据或执行复杂计算时,性能往往成为制约因素。为了提升游戏或应用的性能,Unity提供了强大的Job System,它允许开发者利用多线程和并行计算来优化数据处理过程。本文将详细介绍如何在Unity中使用并行的Job…...

汽车信息安全--欧盟汽车法规

目录 General regulation 信息安全法规 R155《网络安全及网络安全管理系统》解析 R156《软件升级与软件升级管理系统》解析 General regulation 欧洲的汽车行业受到一系列法律法规的约束,包括 各个方面包括: 1.安全要求:《通用安全条例&a…...

@SpringBootApplication 注解

什么是 SpringBootApplication SpringBootApplication 是 Spring Boot 提供的一个核心注解,它是一个组合注解,用于简化 Spring Boot 应用程序的配置。这个注解通常标注在主类上,用于标识一个 Spring Boot 应用的入口。通过这个注解&#xff…...

java项目总结4

目录 1.正则表达式 2.爬虫 3.时间 4.包装类 5.工具类之Arrays 6.Lambda 1.正则表达式 用于验证字符串是否满足自己所需要的规则。方法:matches 注意:\在Java中有特殊涵义,是将其它的意思本来化,假设"是用来引…...

JavaScript中的数组方法总结+详解

##JavaScript中的数组方法总结详解 用来总结和学习,便于自己查找 文章目录 一、数组是什么? 二、改变原数组的api方法?          2.1 push() 在末端添加          2.2 pop&#xff0…...

环境变量Path

PATH 是一个环境变量,它在操作系统中扮演着非常重要的角色。它定义了系统在查找可执行文件时应该搜索的目录列表。当你在命令行中输入一个命令时,操作系统会按照 PATH 变量中定义的目录顺序来查找这个命令对应的可执行文件。 主要作用 查找可执行文件&a…...

基于jeecgboot-vue3的Flowable流程-集成仿钉钉流程(四)支持json和xml的显示

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、相应的界面前端代码 <template><div class"formDesign"><FlowDesign :process"process" :fields"fields" :readOnly"readOnly&quo…...

【k8s安装redis】k8s安装单机版redis实现高性能高可用

文章目录 简介一.条件及环境说明&#xff1a;二.需求说明&#xff1a;三.实现原理及说明四.详细步骤4.1.创建configmap 配置文件4.2.创建StatefulSet 配置4.3.创建service headless 配置 五.安装说明 简介 本文将根据在k8s环境中搭建【伪】单机模式的redis实例。由于共享存储的…...

Scala 数据类型

Scala 数据类型 Scala 是一种多范式的编程语言&#xff0c;它结合了面向对象和函数式编程的特点。在 Scala 中&#xff0c;数据类型是构建复杂程序的基础。本文将详细介绍 Scala 中的数据类型&#xff0c;包括其分类、特点以及使用方法。 数据类型分类 Scala 中的数据类型可…...

Java Executors类的9种创建线程池的方法及应用场景分析

在Java中&#xff0c;Executors 类提供了多种静态工厂方法来创建不同类型的线程池。在学习线程池的过程中&#xff0c;一定避不开Executors类&#xff0c;掌握这个类的使用、原理、使用场景&#xff0c;对于实际项目开发时&#xff0c;运用自如&#xff0c;以下是一些常用的方法…...

LY/T 3359-2023 耐化学腐蚀高压装饰层积板检测

耐化学腐蚀高压装饰层积板是指用酚醛树脂浸渍的层状植物纤维材料为基材&#xff0c;与涂布以丙烯酸树脂为主体的装饰纸的饰面层&#xff0c;在高温高压下层积压制而成的具有化学腐蚀功能的高压装饰层积板。 LY/T 3359-2023 耐化学腐蚀高压装饰层积板检测项目&#xff1a; 测试…...

【linux/shell】如何创建脚本函数库并在其他脚本中调用

目录 1. 创建脚本库文件 2. 修改脚本库权限&#xff0c;使脚本库可执行 3. 在其他脚本中调用脚本库 4. 使用环境变量或.bashrc 5. 使用Shellcheck 6. 编写注释及说明文档 在Shell中创建和使用脚本库通常涉及以下几个步骤&#xff1a; 1. 创建脚本库文件 脚本库通常是包…...

Instruct-GS2GS:通过用户指令编辑 GS 三维场景

Paper: Instruct-GS2GS: Editing 3D Gaussian Splats with Instructions Introduction: https://instruct-gs2gs.github.io/ Code: https://github.com/cvachha/instruct-gs2gs Instruct-GS2GS 复用了 Instruct-NeRF2NeRF 1 的架构&#xff0c;将基于 NeRF 的三维场景编辑方法迁…...

disql使用

SQL 交互式查询工具 | 达梦技术文档 进入bin目录&#xff1a;cd /opt/dmdbms/bin 启动disql&#xff1a;./disql&#xff0c;然后输入用户名、密码 sh文件直接使用disql&#xff1a; 临时添加路径到PATH环境变量&#xff1a;在当前会话中临时使用disql命令而无需每次都写完整…...

SpringBoot Mybatis-Plus 日志带参数

SpringBoot Mybatis-Plus 日志带参数 1 实现代码2 测试结果 在Spring Boot中&#xff0c;MyBatis插件机制通过拦截器&#xff08;Interceptor&#xff09;来实现。拦截器允许开发人员在执行SQL语句的各个阶段&#xff08;如SQL语句创建、参数处理、结果映射等&#xff09;插入自…...

【WebGIS平台】传统聚落建筑科普数字化建模平台

基于上述概括出建筑单体的特征部件&#xff0c;本文利用互联网、三维建模和地理信息等技术设计了基于浏览器/服务器&#xff08;B/S&#xff09;的传统聚落建筑科普数字化平台。该平台不仅实现了对传统聚落建筑风貌从基础到复杂的数字化再现&#xff0c;允许用户轻松在线构建从…...

Zookeeper分布式锁原理说明【简单易理解】

Zookeeper 非公平锁/公平锁/共享锁 。 1.zookeeper分布式锁加锁原理 如上实现方式在并发问题比较严重的情况下&#xff0c;性能会下降的比较厉害&#xff0c;主要原因是&#xff0c;所有的连接都在对同一个节点进行监听&#xff0c;当服务器检测到删除事件时&#xff0c;要通知…...

去除Win32 Tab Control控件每个选项卡上的深色对话框背景

一般情况下&#xff0c;我们是用不带边框的对话框来充当Tab Control的每个选项卡的内容的。 例如&#xff0c;主对话框IDD_TABBOX上有一个Tab Control&#xff0c;上面有两个选项卡&#xff0c;第一个选项卡用的是IDD_DIALOG1充当内容&#xff0c;第二个用的则是IDD_DIALOG2。I…...