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

目录

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

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

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

生成地形

生成水面

生成木头纹理

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

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

相关文章

《等保测评新视角:安全与发展的双赢之道》

在数字化转型的浪潮中,企业面临的不仅是技术革新的挑战,更有信息安全的严峻考验。等保测评,作为国家网络安全等级保护的一项重要措施,不仅为企业的安全护航,更成为推动企业高质量发展的新引擎。本文将从全新的视角&…

中航资本:光伏股,集体涨停!千亿龙头,罕见封板!

今日早盘,A股放量走强,半日成交超越万亿元。北证50指数持续放量上攻,飙升逾8%,再创前史新高,创业板指大涨逾3%,克复2200点,上证指数站上3300点。 盘面上,BC电池、固态电池、房地产、…

迁移学习|ResNet18

一、导入库 二、设置随机种子 三、数据增强和数据加载 四、加载预训练模型 五、定义损失函数和优化器 六、学习率调度器 七、训练模型 八、可视化训练过程 九、总结 1. 常见优化器概述 1.1 随机梯度下降(SGD: Stochastic Gradient Descent) 简介&…

CentOS系统Nginx的安装部署

CentOS系统Nginx的安装部署 安装包准备 在服务器上准备好nginx的安装包 nginx安装包下载地址为:https://nginx.org/en/download.html 解压 tar -zxvf nginx-1.26.1.tar.gz执行命令安装 # 第一步 cd nginx-1.26.1# 第二步 ./configure# 第三步 make# 第四步 mak…

基于RabbitMQ,Redis,Redisson,RocketMQ四种技术实现订单延时关闭功能及其相关优缺点介绍(以12306为主题)

目录 1. 延迟关闭订单 1.1 订单延时关闭功能技术选型 1.1.1 定时任务 1.1.2 RabbitMQ 1.1.3 Redis 过期监听 1.1.4 Redisson 1.1.5 RocketMQ 1.2 RocketMQ订单延时关闭发送方实现 1.3 RocketMQ订单延时关闭的消费方实现 1. 延迟关闭订单 用户发起订单后,如…

校园表白墙源码修复版

此校园表白墙源码基于thinkphp,因为时代久远有不少bug,经本人修复已去除大部分bug,添加了美化元素。 https://pan.quark.cn/s/1f9b3564c84b https://pan.baidu.com/s/1bb9vu9VV2jJoo9-GF6W3xw?pwd7293 https://caiyun.139.com/m/i?2hoTc…

Etcd 可观测最佳实践

简介 Etcd 是一个高可用的分布式键值存储系统,它提供了一个可靠的、强一致性的存储服务,用于配置管理和服务发现。它最初由 CoreOS 开发,现在由 Cloud Native Computing Foundation (CNCF) 维护。Etcd 使用 Raft 算法来实现数据的一致性&…

AI运动抽取转3D动画

用的Wonder Studio,不免费哈,也不能试了,都要钱。只能看别人的经验。 网址https://wonderdynamics.com/ 先别激动,参考别人的评论 登录后(google登录)界面如下 收费情况 视频教程 https://www.youtube.co…

【记录】VSCode|自用设置项

文章目录 1 基础配置1.1 自动保存1.2 编辑区自动换行1.3 选项卡换行1.4 空格代替制表符1.5 开启滚轮缩放 2 进阶设置2.1 选项卡不自我覆盖2.2 选项卡限制宽度2.3 选项卡组限制高度2.4 字体设置2.5 字体加粗2.6 侧边栏2.7 沉浸式代码模式 Zen Mode2.8 设置 Zen 模式的选项卡组 3…

深入了解 kotlinx-datetime:配置与使用指南

深入了解 kotlinx-datetime:配置与使用指南 在Kotlin多平台开发中,处理日期和时间是常见的需求。kotlinx-datetime库提供了强大且简洁的API来帮助开发者应对这一挑战。本文将详细介绍如何配置kotlinx-datetime库,并通过生动的示例演示其核心…

远程:HTTP基本身份验证失败。提供的密码或令牌不正确,或者您的账户启用了两步验证,您必须使用个人访问令牌而不是密码。

问题描述: remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access token insteadof a password. See http://gitlab.cnovit.com/help/topics/git/troubleshooting…

从 Hadoop 迁移到数据 Lakehouse 的架构师指南

从 Hadoop 到数据湖仓一体架构的演变代表了数据基础架构的重大飞跃。虽然 Hadoop 曾经以其强大的批处理能力统治着大数据领域,但如今的组织正在寻求更敏捷、更具成本效益和现代化的解决方案。尤其是当他们越来越多地开始实施 AI 计划时。根本没有办法让 Hadoop 为 A…

C++ 类与对象(中) 默认成员函数

我们知道在类中,有成员变量和成员函数,我们可以通过创造不同的成员函数来实现这个类不同的功能,如果我们创造一个类,却不实现它的成员函数会如何呢?这个就涉及到类中的默认成员函数的概念了。但在本文我们主要介绍以下…

【Dash】feffery_antd_components 按钮组件的应用

一、feffery_antd_componenet 中的 AntdFloatButton 和 AntdFloatButtonGroup AntdFloatButton 和 AntdFloatButtonGroup 是两个用于创建悬浮按钮和悬浮按钮组的组件。 AntdFloatButton 是单个悬浮按钮组件,它提供了多种属性来定义按钮的外观及行为。AntdFloatBut…

WebView渲染异常导致闪退解决方案

背景: App主页面使用了大量WebView容器(10个以上)显示图表信息,最新发现bugly上面出现一些关于浏览器Native Crash,如下: 经排查,是WebView渲染失败导致Crash,可以通过webView.loadUrl("chrome://cra…

Pycharm搭配miniConda(Anaconda的轻量版本)建立虚拟环境管理不同项目不同依赖

需求 pip安装的版本会在全局环境下生效,导致不用的项目使用的是同一套环境,容易出现别人的项目跑的好好的,到了自己电脑就不能跑的问题需求 1.不同的项目可以设置不同的环境,同时支持自动切换环境2.便捷,轻量化管理当前的环境 如果可以,最好有一个可视化的平台,anaconda倒是支…

图像分割-DeepLab

DeepLabV3源码链接:https://github.com/bubbliiiing/deeplabv3-plus-pytorch(打不开私信我获取) 一、简介 一般的模型如Unet一般用于医学领域,小目标,如细胞分割。 为了增大感受野(从而更好的获得全局特征…

docker 镜像详解

Docker镜像是一种轻量级、可移植的软件打包格式,它包含了运行应用程序所需的一切,是构建和分发应用程序的基础。以下是对Docker镜像的详细解释: 一、镜像的定义 镜像本质上是一个只读文件,包含了文件系统、源码、库文件、依赖、…

wordcloud 字体报错

wordcloud 字体报错 词云库报错:Only supported for TrueType fonts字体文件问题pillow版本的问题wordcloud版本问题(我的最终解决方案) 词云库报错:Only supported for TrueType fonts 字体文件问题 解决方法 写绝对路径 &…