【GAMES101笔记速查——Lecture 18 Advanced Topics in Rendering】

news/2024/10/25 17:24:25/

目录

1 渲染前沿

1.1 有偏vs无偏

1.2 无偏光线传播方法(Unbiased light transport methods)

1.2.1 双向路径追踪(Bidirectional path tracing,BDPT)

(1)双向路径追踪(BDPT)举例

1.2.2 Metropolis 光线传播(Metropolis light transport,MLT)

(1)Metropolis 光线传播举例 - 优点

(2)Metropolis 光线传播举例 - 缺点

1.3 有偏光线传播方法(Biased light transport methods)

1.3.1 光子映射(Photon mapping)

(1)光子映射实现方法

1.3.2 VCM:Vertex connection and merging 

1.4 实时辐射度 (Instant radiosity,IR) (VPL / many light methods)

2 材质模型前沿

2.1 非表面模型(Non-surface models)

2.1.1 散射介质(Participating media)

2.1.2 毛发/毛皮/纤维(Translucent material (BSSRDF))

(1)Kajiya-Kay模型

(2)Marschner模型

(3)动物毛发模型

动物毛发模型 - 双层圆柱模型

2.1.3 颗粒材料(Granular material)

2.2 表面模型Non-surface models

2.2.1 透光材料(Translucent material (BSSRDF))

2.2.2 布料(Cloth)

2.2.3 细节材料(非统计BRDF)(Detailed material (non-statistical BRDF))

2.3 程序化外观Procedural appearance


1 渲染前沿

1.1 有偏vs无偏

无偏的蒙特卡罗方法估计出来的估计值的期望永远不变,这就是一种“无偏的”估计。

相反,如果蒙特卡洛方法估计出的期望和最后要的值不一样,这种就是“有偏的”估计。如果此时样本量足够大,期望值收敛到正确值,那么这个叫做“一致的”。

1.2 无偏光线传播方法(Unbiased light transport methods)

1.2.1 双向路径追踪(Bidirectional path tracing,BDPT)

之前说的路径追踪是从相机产生一条路径,直到连接到光源。

现在从光源和摄像机分别出发,形成多个“半路径”,然后双向路径追踪将“半路径”的端点连接起来。

(1)双向路径追踪(BDPT)举例

可以看到,左右图片对一个像素进行32次的采样,右图使用了BDPT明显效果更好。

上面的例子也说明:当光源比较集中时,适合使用BDPT

BDPT运行很慢!

1.2.2 Metropolis 光线传播(Metropolis light transport,MLT)

马尔科夫链:根据当前的样本,可以在它周围生成一个新样本。而且可以生成以任意的函数的PDF形状为分布形状的样本。

(当采样的PDF和要积分的函数形状一致的时候,误差最小。)

也就是说,给定任何一条路径,可以生成与之相似的其他路径。

已有蓝色路线,可以通过一些扰动在周围产生红色路线。

(1)Metropolis 光线传播举例 - 优点

·MLT适合做复杂场景、无偏。

光线->水面->水底->水面

这样的路径其实很难处理。

(2)Metropolis 光线传播举例 - 缺点

·很难估计一张图的渲染时间

·局部方法,各个局部的收敛速度不一样,画面容易很脏

·无法用于渲染动画,上一帧和下一帧的抖动会很大

1.3 有偏光线传播方法(Biased light transport methods)

1.3.1 光子映射(Photon mapping)

·该方法非常适合处理复杂的SDS路径。

·能够生成 caustics 现象(由于光线的聚焦而产生的一些非常强的图案)。

(1)光子映射实现方法

光子映射有很多实现方法,这里介绍一种。

第一步:光源辐射出光子,规定光子打到diffuse物体上就停止,并记录。

第二步:从眼睛/摄像机打出“半路径”,打到diffuse物体上就停止,并记录。

第三步:计算局部的密度估计。

光子分布越集中的地方越亮,光子分布越少的地方越暗。

·现在给一个点,找它周围最近的N个光子。(经典算法问题:寻找最近的N个邻居)

·计算出这N个光子占据的面积

·计算光子密度:数量/面积

这个N取的越少,噪声越大;N取的越大,越模糊。

为什么是有偏估计?

这里的光子密度,理论上应该是计算当前一个点的密度,我们用确定大小的面积和数量来近似了。

当有足够多的光子,那么就得到正确的结果,它是“有偏的”,但是“一致的”方法。

在渲染中理解“有偏”和“一致”

有偏” = 图片有模糊

一致” = 样本无限时,图片不模糊

1.3.2 VCM:Vertex connection and merging 

VCM结合了:双向路径追踪和光子映射

双向路径追踪中,如果“半路经”没有交会到一个点上,而是挨得比较近,那么此时VCM为了不浪费这种路径,认为其中一半过来的是光子,然后使用光子映射做。

1.4 实时辐射度 (Instant radiosity,IR) (VPL / many light methods)

主要思想:已经被照亮的部分都看作是光源,可以照亮别人。

优点:很快速、适合处理漫反射物体

缺点:接缝处异常发光、不能用于glossy材质的物体

2 材质模型前沿

2.1 非表面模型(Non-surface models)

2.1.1 散射介质(Participating media)

光在行进过程中,穿越散射介质,在光通过散射介质的任何一点,它都可能(部分地)被吸收和散射。

比如光通过云,可能被冰晶分散到各个方向

也可能接收到其他光线

也有可能被吸收完:光穿不过乌云

相位函数:决定光线如何散射,散射到哪个方向去。

随机选择一个方向跳跃,随机选择一个距离直线,在每个“阴影点”,连接到光。

渲染方程只告诉我们光线与物体表面的作用,没告诉我们光线体积如何作用。这方面的数学计算需要依靠其他的工具。

上面是在影视和游戏作品中的散射介质。

巧克力等一些材质也可以被当作散射介质,尽管我们可能看不到,但一部分光线是可以穿透他们的表面,并在物体内部发生一些作用并弹出的。

2.1.2 毛发/毛皮/纤维(Translucent material (BSSRDF))

需要考虑光线和一个曲线如何作用。

(1)Kajiya-Kay模型

这种模型比较古早

如图,将头发抽象为一个圆柱

到达其上的光线会有两种反应:

1.被均匀反射

2.朝圆锥形状的区域反射

(这里可以理解为漫反射和镜面反射)

这种模型的渲染效果如下:

(2)Marschner模型

这是一个被广泛应用的模型。

如图,将头发抽象为表面有扰动的一个玻璃圆柱

到达其上的光线会有以下几种反应:

1. 朝圆锥形状的区域反射(R)

2. 穿进头发内部-再穿出头发(TT)

3. 穿进头发内部-在毛发内壁发生反射往回走-穿出头发(TRT)

渲染效果:

与单根头发作用还不够,需要考虑头发和头发之间的作用,称作多次散射,计算量就很大了。

(3)动物毛发模型

人类头发模型能不能用于描述动物毛发?

只能说:有区别

下图左边展示了人类头发模型的渲染效果,右图是专门的动物毛发模型渲染效果。

研究人员(闫神)通过研究人类毛发和动物毛发的生物学特征,发现:

动物毛发中的最内层的髓质(Medulla)占比非常大,光线进去之后更容易发生散射。

逐渐增加髓质的比例,动物毛发的质感会发生明显的变化。

有髓质和无髓质的人类毛发渲染效果也差别很大。

动物毛发模型 - 双层圆柱模型

如图,将头发抽象为表面有扰动的一个双层玻璃圆柱

到达其上的光线会有以下几种反应:

1. 朝圆锥形状的区域反射(R)

2. 穿进头发内部穿过髓质 / 没打到髓质 - 再穿出头发(TT)

3. 穿进头发内部-被髓质散射(TTs)

4. 穿进头发内部-在毛发内壁发生反射往回走-穿出头发(TRT)

5. 穿进头发内部-在毛发髓质中发生两次散射-穿出头发(TRTs)

效果展示:

2.1.3 颗粒材料(Granular material)

我们怎么描述一粒一粒的东西。

一般用到的方案是:定义一堆颗粒中每种颗粒所占的比例。

计算量非常大。

到2020年为止,颗粒材质也没有得到比较好的解决。

沙丘渲染效果:

皮克斯炫技视频中的沙子渲染:

2.2 表面模型(Non-surface models)

2.2.1 透光材料(Translucent material (BSSRDF))

透光材质的典型代表:玉石

透光Translucent:光线从某个位置进入物体,经过一些作用,再从另一个位置射出。

(透光Translucent与半透明semi-transparent是有区别的)

牛奶、人的皮肤等物体都会发生次表面散射

次表面散射可以看作是BRDF的一个延申。

BRDF:光线打到了这个点,再从这个点反射。(全过程发生在一个点上)

次表面散射BSSRDF:光线打到了这个点,但可以从其他点出去。(规定了:从哪个点xi、哪个方向进来wi;从哪个点xo、哪个方向出去wo)

人们认为次表面散射现象可以等价于物体里面有一个光源在发光。

为了物理上的真实,给光源做成对处理

用此方法用来近似次表面散射的结果。

渲染效果:

2.2.2 布料(Cloth)

布料实际上是多根纤维多次缠绕形成的。

纤维      ->       股      ->    线    ->     通过机器纺织或者手工编织

Fibers   ->      Ply    ->    Yarn   ->   通过机器纺织或者手工编织

根据各种不同的编织方式可以建模出BRDF模型。

有一些立体面料用BRDF明显无法很好地描述,比如天鹅绒。

所以更准确的方法是:把织物看作是空间中分布的体积,即当作散射介质来渲染,但计算量也更大

或者,还可以像真实的纤维一样来渲染布料,每根纤维都算。

2.2.3 细节材料(非统计BRDF)(Detailed material (non-statistical BRDF))

现今渲染器渲染出的物体有一个问题:过于完美。

真实的世界往往充满瑕疵和磨损。

图2加入了划痕、图3加入了各向异性。

细节模型可以带来更多真实感。

理论的法线分布很完美,实际上的法线分布会有扰动。

如果要求细节:物体法线分布基本符合物理规律,但会存在扰动。

法线贴图200k*200k,渲染时间很长,大概要1个月。

耗时长的原因:路径难以采样

·考虑一个针孔摄像机和一个点光源。

·认为每个微表面是一个镜面,镜面反射方向确定。

·此时就很难让针孔摄像机发出的光线反射到光源,光源发出的光线同时难以到达摄像机

改进:

·考虑一个像素覆盖多个微表面

·把这个区域的微表面法线分布,替代原本光滑的分布。

选取不同范围的微表面,显示的法线分布的特点不同。

选取不同形状特点的微表面,显示的法线分布的特点也不同。

渲染示例:

其实当物体非常小的时候,用几何光学就不完全正确了,就需要考虑衍射和干涉现象,那么就会涉及到波动光学。

几何光学和波动光学算出来的BRDF很像,但也都有各自的特点:波动光学不连续

2.3 程序化外观Procedural appearance

程序生成:用一定的方式去指导它的生成,而不需要真的去存储它的三维纹理材质。需要使用的时候动态查询即可。

噪声函数,可以得到许多不同的材质表现。

生成地形

生成水面

生成木头纹理


http://www.ppmy.cn/news/1541885.html

相关文章

基于深度学习的进化神经网络设计

基于深度学习的进化神经网络设计(Evolutionary Neural Networks, ENNs)结合了进化算法(EA)和神经网络(NN)的优点,用于自动化神经网络架构的设计和优化。通过模拟自然进化的选择、变异、交叉等过…

为何纷纷转战网络安全?零基础至精通指南,一篇文章助你全面掌握!

为什么越来越多的人转行网络安全? 目前,我国互联网已经从前期的爆发增长进入稳定发展阶段,同时每年大量计算机相关专业的毕业生进入就业赛道,导致IT行业逐渐趋于饱和状态,甚至出现裁员现象,去年很多大厂都…

使用OpenCV进行视频边缘检测:案例Python版江南style

1. 引言 本文将演示如何使用OpenCV库对视频中的每一帧进行边缘检测,并将结果保存为新的视频文件。边缘检测是一种图像处理技术,它可以帮助我们识别出图像中不同区域之间的边界。在计算机视觉领域,这项技术有着广泛的应用,比如物体…

浏览器3.8

一个使用Python和PyQt5框架实现的网页浏览器的框架。这个浏览器包含以下主要特性: 1自定义WebEngineView:这个类是QWebEngineView的子类,它添加了两个信号:pageLoaded表示网页加载完成,openLinkInNewTabSignal表示当用户点击链接时,是否应该在新标签页中打开链接。 2Main…

什么是组态软件?组态软件有哪些类型?

组态软件的定义 组态软件实际上是一种开发工具软件或开发环境,用户通过类似“搭积木”的方式来快速构建自己所需要的软件功能,而不需要编写计算机程序,这就是所谓的“组态”,有时候也称为“二次开发”,组态软件就称为“…

Docker 安装使用

1. 下载 下载地址:Index of linux/static/stable/x86_64/ 下载好后,将文件docker-18.06.3-ce.tgz用WinSCP等工具,上传到不能外网的linux系统服务器 2. 安装 解压后的文件夹docker中文件如下所示: 将docker中的全部文件&#xff…

《淘宝评论大探险:如何用API捕获消费者的心声?》

在淘宝这个浩瀚的星系中,每一件商品都是一个星球,而评论就是星球上居民的声音。作为星际探险家,我们的任务是使用最尖端的科技——API,去捕获那些遥远星球上居民的心声。今天,我们要讲述的是如何装备你的代码宇宙飞船&…

LLM之RAG实战(四十四)| rag-chatbot:支持Huggingface和Ollama任意模型的多PDF本地RAG方案

特点: 支持本地运行和Kaggle (new)运行支持Huggingface 和Ollama 的任意模型Process multiple PDF inputs.Chat with multiples languages (Coming soon).Simple UI with Gradio. 一、安装使用 1.1 Kaggle(推荐) Step1:把https…