3.基础光照

从宏观上讲渲染包含了两大部分:决定一个像素的可见性,决定一个像素的光照计算

而光照模型就是用于决定在一个像素上决定怎样的渲染光照计算。

一、我们是如何看到这个世界的

1.光源

实时渲染中,我们通常把光源当成一个没有体积的点,用l来表示它的方向

辐照度:量化光的方法,一个光源发出了多少光

在计算光照模型时,我们需要知道一个物体的辐照度

对于平行光辐照度通过计算垂直于l的单位时间内穿过的能量来得到。

但物体表面往往时和l不垂直的,那么

如何计算辐照度:光源方向l和法线n之间的夹角的余弦值

注意:这里的默认方向的模都为1

辐照度和照射到物体表面时光线之间的距离\frac{d}{\cos \theta }成反比,因此辐照度与\cos \theta成正比。

\cos \theta可以使用光源方向l和表面法线n的点积得到。这也是用点积来计算辐照度的由来。

2.吸收和散射

光线由光源发射出来后,会与物体相交,相交的结果有两种:散射和吸收

散射:只改变方向,不改变颜色和密度

吸收:只改变密度和颜色,但不改变光线的方向

散射后的两种方向:

  • 1.散射到物体内部,这种现象被称为折射或投射
  • 2.散射到外部,这种现象被称为反射

对于不透明物体,折射进入物体内部的光线还会继续与内部的颗粒进行交互。其中一些光线最后会重新发射出物体表面,而另一些则被物体吸收。那些从物体表面重新发射出的光线将具有和入射光线不同的方向分布和颜色。

为了区分两种不同的散射,光照模型中用了两种不同的部分来计算:

  • 高光反射:表示物体表面是如何反射光线的
  • 漫反射:表示有多少光线会被折射、吸收和散射出表面

出射度:根据入射光线的数量和方向,计算出出射光线的数量和方向

辐照度和出射度之间是满足线性关系的,而他们之间的比值就是材质的漫反射和高光反射属性

3.着色

定义:着色(shading)是指根据材质属性(如漫反射属性等)、光源信息(如光源方向、辐照度等),使用一个等式去计算沿着某一个观察方向的出射度的过程。

我们把这个等式称为光照模型。不同的光照模型有不同的目的。

如:一些用于描述粗糙的物体表面,一些用于描述金属表面

4.BRDF光照模型

通俗的来讲,当给定入射光线的方向和辐照度后,BRDF可以给出在某个出射方向上的能量分布。

本章涉及的BRDF是对真实场景进行理想化和简化后的模型,并不能真实的反应物体与光线的交互。这写光照模型被称为经验模型。

图形学第一定律:如果它看起来是对的,那么它就是对的。

 二、标准光照模型

1975年,著名学者裴祥风提出了标准光照模型背后的基本理念。标准光照模型只关心直接光照,也就是那些直接从光源发射出来照射到物体表面后,经过物体表面的一次反射直接进入摄像机的光线。

该方法将光线分为4部分:

自发光(emissive)c_{emissive}。用于表述当给定一个方向时,一个表面本身会向该方向发射出多少辐射度。注意,如果没有使用全局光照技术,这些自发光是并不会真的照亮周围物体的,而是它本身看起来更亮了而已。

高光反射(specular)c_{specular}。用于描述当光线从光源照射到模型表面时,该表面会在完全镜面反射方向散射多少辐射量。

漫反射(diffuse)c_{diffuse}。用于描述当光线从光源照射到模型表面时,该表面会向每个方向散射多少辐射量。

环境光(ambient)c_{ambient}。用于描述其他所有间接光照。

1.环境光

间接光照是指,光线通常会在多个物体间反射,最后进入摄像机,也就是说,光线在进入摄像机前,经过了不只一次光照。

在标准光照模型中,使用了一种被称为环境光的部分来近似模拟间接光照。环境光的计算非常简单,它是一个全局变量,即场景中的所有物体都使用这个环境光。

c_{ambient}=\delta _{ambient}

2.自发光

自发光也可以直接由光源发射进摄像机,而不需要经过任何物体的反射。标准光照模型使用自发光来计算这个部分的贡献度。其计算很简答,直接使用该材质的自发光颜色

c_{emissive}=m_{emissive}

通常在实时渲染中,自发光表面并不会照亮周围表面,这个物体并不会被当成一个光源。

只有引入全局光照系统后才可以模拟这类自发光物体对周围环境的影响

3.漫反射

漫反射用于对那些被物体表面随机散射到各个方向的辐射度进行建模。

漫反射中视角不重要,入射光线角度很重要

兰伯特定律:反射光线的强度与表面法线和光源方向之间的夹角的余弦值成正比。

c_{diffuse}=(c_{light\cdot m_{diffuse}})max(0,n\cdot l)

m_{diffuse} 材质的漫反射颜色

c_{light} 光源颜色

防止物体被从后面来的光源照亮,所以将负值截去

4.高光反射

用于计算沿着完全镜面防溺水方向被反射的光线,这可以让物体看起来是有光泽的,如金属材质

需要知道的变量:法线方向、视角方向、光源方向、反射方向等

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

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

相关文章

远程服务器上,再次配笔记1、2、11、12相同的深度学习和gcc环境

文章目录 参考文献 创建环境在(zgp_m3dm)中安装会显示zgp_m3dm_main环境中的情况满足(base) ~/zgp/M3DM-repetition conda deactivate 再次安装如果服务器本身不能联网,需下载pysocks包以设置反向代理(具体可参考之前的笔记10): 再…

简易版本的QFD质量屋

比如餐馆要考虑什么因素最重要,这里列出好吃,快速,便宜三类问题,然后设置上图的权重, 然后设置9,3,1三类因子,9比如是最重要的,3,1,依次没那么重要…

[vue2项目]vue2+supermap[mapboxgl]+天地图之地图的初始化

Supermap参考教程 天地图 一、安装 1、终端:npm install supermap/vue-iclient-mapboxgl 2、在package.json文件的dependencies查看supermap/vue-iclient-mapboxgl依赖是否安装成功。 3、在mian.js全局引入 import VueiClient from supermap/vue-iclient-mapboxgl; Vue.use(…

stm32和nrf24L01病房呼叫系统的实现

stm32和nrf24L01病房呼叫系统的实现 文章目录 stm32和nrf24L01病房呼叫系统的实现第一章 项目背景与意义第一节 病房呼叫系统的现状1.技术现状2.存在的问题 第二节 STM32F1、nRF24L01、OLED技术介绍1.STM32F1技术介绍2.nRF24L01技术介绍3.OLED技术介绍 第三节 项目目标与预期成…

牛客网刷题 | BC106 K形图案

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 描述 KiKi学习了循环&am…

Java 基础面试300题 (201-230)

Java 基础面试300题 &#xff08;201-230&#xff09; 201.下面代码片段的输出是什么&#xff1f; Predicate<Integer> numberChecker (num)–> num > 20; int input 10; System.out.println(input” greater than 20–”numberChecker.test(input)); //Line 1…

perl: URI::rtsp 是用来处理RTSP协议的的URI的模块。

在Perl中&#xff0c;URI::rtsp 是用来处理RTSP&#xff08;Real Time Streaming Protocol&#xff0c;实时流协议&#xff09;的URI的模块。 以下是一些使用 URI::rtsp 的方法&#xff1a; 1.创建一个RTSP URI use URI::rtsp;my $uri URI::rtsp->new("rtsp://user…

WPS部分快捷操作汇总

记录一些个人常用的WPS快捷操作 一、去除文档中所有的超链接&#xff1a; 1、用WPS打开文档&#xff1b; 2、用Ctrla全选&#xff0c;或者点击上方的【选择】-【全选】&#xff0c;选中文档全部内容&#xff1b; 3、按CTRLSHIFTF9组合键&#xff0c;即可一次性将取文档中所有…

AI学习指南机器学习篇-线性回归统计推断

AI学习指南机器学习篇-线性回归统计推断 在机器学习领域&#xff0c;线性回归模型是最为常见且基础的模型之一。而统计推断则是为了更好地理解数据背后的规律而产生的一门重要学科。本文将探讨线性回归模型与统计推断的关系&#xff0c;重点讨论参数估计的置信区间和假设检验。…

Linux的程序管理2:设置优先级,程序的查看与处理---ps命令详解与kill,killall,top,renice,nice搭配使用管理linux

前言 程序的管理除了前文说到的前后台执行&#xff0c;离线执行。还包括下面几个方面&#xff1a; 1&#xff1a;如何找到最耗费系统资源的程序&#xff1f; &#xff08;使用top命令找到PID然后排查原因&#xff09; 2&#xff1a;设置程序的优先级&#xff0c;让其被执行的概…

Leetcode 第 397 场周赛题解

Leetcode 第 397 场周赛题解 Leetcode 第 397 场周赛题解题目1&#xff1a;3146. 两个字符串的排列差思路代码复杂度分析 题目2&#xff1a;思路代码复杂度分析 题目3&#xff1a;3148. 矩阵中的最大得分思路代码复杂度分析 题目4&#xff1a;3149. 找出分数最低的排列思路代码…

“论软件的可靠性评价”必过范文,突击2024软考高项论文

论文部分 摘要 2023年03月&#xff0c;我参与了某艺术品公司线上拍卖管理平台的研发。该项目的目标是建立一个互联网在线拍卖平台&#xff0c;用户可以通过手机或PC浏览器进入拍卖平台&#xff0c;对喜欢的拍品进行参拍出价。平台提供了在线支付、在线出价、保证金管理、拍品…

php fpdf使用记录

使用composer安装fpdf > composer require setasign/fpdf简单创建一个pdf文件并输出下载 //fpdf版本&#xff1a;&quot;setasign/fpdf&quot;: &quot;^1.8&quot;, // 创建PDF实例 $pdf new \FPDF();// 设置文档信息 $pdf->SetAuthor(Your Name); $pdf-…

深入解析力扣171题:Excel表列序号(进制转换法详解及模拟面试问答)

在本篇文章中&#xff0c;我们将详细解读力扣第171题“Excel表列序号”。通过学习本篇文章&#xff0c;读者将掌握如何使用多种方法来解决这一问题&#xff0c;并了解相关的复杂度分析和模拟面试问答。每种方法都将配以详细的解释和ASCII图解&#xff0c;以便于理解。 问题描述…

Android开机动画的结束过程BootAnimation(基于Android10.0.0-r41)

文章目录 Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) Android 开机动画的结束过程BootAnimation(基于Android10.0.0-r41) 路径frameworks/base/cmds/bootanimation/bootanimation_main.cpp init进程把我们的BootAnimation的二进制文件拉起来了&#xf…

iOS开发中的sceneDidEnterBackground和applicationDidEnterBackground

在 iOS 应用开发中&#xff0c;sceneDidEnterBackground 和 applicationDidEnterBackground 是两个不同的生命周期方法&#xff0c;它们分别属于 UISceneDelegate 和 UIApplicationDelegate&#xff0c;用于处理应用程序或场景进入后台时的逻辑。以下是它们的区别和用法&#x…

字符串和字节串

字符串和字节串 在 Python 中,字符串(String)和字节串(Byte String)是两种不同的数据类型。 字符串(String) 字符串是一种文本数据类型,它可以包含 Unicode 字符。Python 的字符串是使用 Unicode 编码的,可以包含任何语言的字符。 例如: s = "hello" …

YOLOv5改进 | 添加注意力篇 | 利用YOLOv10提出的PSA注意力机制助力YOLOv5有效涨点(附代码 + 详细修改教程)

一、本文介绍 本文给大家带来的改进机制是YOLOv10提出的PSA注意力机制&#xff0c;自注意力在各种视觉任务中得到了广泛应用&#xff0c;因为它具有显著的全局建模能力。然而&#xff0c;自注意力机制表现出较高的计算复杂度和内存占用。为了解决这个问题&#xff0c;鉴于注意…

一个可以自动生成随机区组试验的excel VBA小程序

在作物品种区域试验时&#xff0c;通常会采用随机区组试验设计&#xff0c;特制作了一个可以自动生成随机区组试验的小程序。excel参数界面如下&#xff1a; 参数含义如下&#xff1a; 1、生成新表的名称&#xff1a;程序将新建表格&#xff0c;用于生成随机区组试验。若此处为…

2024年3月电子学会Python编程等级考试(四级)真题题库

2024年3月青少年软件编程Python等级考试&#xff08;四级&#xff09;真题试卷 题目总数&#xff1a;38 总分数&#xff1a;100 选择题 第 1 题 单选题 运行如下Python代码&#xff0c;若输入整数3&#xff0c;则最终输出的结果为&#xff1f;&#xff08; &#xff…