GAMES-图形学系列笔记-二十-

69 阅读1小时+

GAMES 图形学系列笔记(二十)

GAMES101-现代计算机图形学入门-闫令琪 - P14:Lecture 14 Ray Tracing 2 - GAMES-Webinar - BV1X7411F744

亲爱的同学们,大家好,欢迎来到我们的第14讲啊,今天我们讲第二部分光线追踪的第二部分,然后如果时间呃还有的话呢,咱们就把这个呃剩下来的这个辐射度量学给说一说,然后呢呃在这个课程之前。

咱们还是有几件事情嗯,先给大家说一下,一个是呢有同学反映到说这个呃重新提交的这个作业,那我们什么时候批改,什么时候给大家反馈分数呢,这个我们正在积极的这个处理这件事情,这个我现在正在安排啊。

大家稍安勿躁好吧,最后肯定还是会有这个呃这个批改分数的没问题啊,好然后呢这个因为这个星期啊,这受美国的这个新冠疫情影响,然后gtc呃,gtc呢这个我简单给大家说一下啊。

是这个由这个英伟达公司呃组织的一个叫做gpu technology conference,这主要是他组织一个会,这个会呢原本是这个线下的,大家是一起这个这个参加这个会啊,非常热闹。

然后但是由于这个疫情呢,这个嗯gtc这个会议呢变成了线上,然后线上呢他就不会不断会公开这个这个新的技术啊,当然这个现在呢gtc目前公开了两个和这个嗯渲染相关的一些技术吧,然后这里说给大家啊。

一个是doss,还记得吗,super emply对吧啊,然后这块就是相当于是嗯他在做什么呢,这个技术相当于是在做,比如说你去呃光栅化生成一个很小的图,比如说720p的图。

然后它可以把这个图给拉大变成4k的图,并且还不损失这个呃太多说的性能,并且还能让结果看上去不模糊,还还是非常这个的,就是就是非常清晰的结果,那自然就就很好对吧。

就相当于免费得到一个这个4k的这个这个画面呃,非常不错,然后在这里呢我说一下这个技术的主要研发人员叫做刘诗秋,他呢前他他是这个曾经可能是我的师弟哈,我当年我老板给他发offer。

但是他最后还是决定去梅利亚工作啊,呃超级大神,然后他做了这个这个工作呢,呃最近推出二点,而而且他写了一个专栏文章,在知乎里面,大家没事可以看一看啊,然后关于技术方面呢是这样,就是有一个这个嗯gtc上嗯。

应该是这周吧就会发布这个已经录好的一个视频,然后关于这个dlss的技术,我再跟大家说什么时候放出来了,好吧啊,这是一个技术,另外一个技术呢这个gtc,然后它这个呃又有另外一个技术叫做rtx全局光照啊。

rtx gi啊,那这个技术呢目前来说我们还没跟大家说这个关于全局光照的事情,虽然我们一直在提这个事情对吧,然后具体这个到底怎么回事呃,然后为什么我们要放在离线渲染里面来讲,然后它难在哪里。

然后为什么说这个今年大家把它给搬到这个实时渲染里面,然后得到一个非常好的结果对吧,然后像这块咱们之后学了之后的两三节课吧,差不多就应该能理解说这个啊这个实时嗯实时光线追踪。

或者说这个实时的全局光照到底有多么难,然后大家写作业的时候,大家会发现,如果让大家实现离线的嗯,这个全局光照都会花很长很长的时间,然后这是如何做到实时的对吧,都是非常不错的技术啊。

就是这些嗯图形学有一个好处,就是说这个工业界和学术界都在同步的推进嗯,可能关注点各不相同,但是在这两个方面各有各自的这个前沿的这一方面的研究,所以都很有意思,好吧嗯。

简单给大家说一说这个gtc目前我听到的一些这个有有意思的事情,好吧,之后再再再看有没有后续的跟进或者更新啊,那么这是一个嗯通过这两个事情呢,我感觉到说这个最近啊由于这个rtx技术的发展。

然后有很多啊原本是离线的这些算法,然后渐渐的都能够被搬到这个实时的里面来,当然要经过各种各样的改进,然后嗯中间肯定有各种各样的这个需要攻克的问题对,然后但是这应该是一个大势所趋。

就是说之后的这个实时的这些呃,这这这就是应用吧,或者说游戏或者什么就说会更多的用到现在的这些这个离线的技术,当然就会让这个结果变得更好,没问题,但是大家就会问以前的这些这些我们说实时渲染这些东西。

光栅化这些我们教了这么长时间,这个会不会被取代呀,嗯以我个人的感觉是5年之内是不可能的哈,就是说甚至在5年之后,嗯就是说嗯当这个嗯比如实时光线追踪全面的这个普及开来之后。

我仍然会觉得这个光栅化本身有它的价值,然后肯定在很多其他的领域会有这个嗯非常普遍的英语,所以这点呢我倒是不担心啊这么一个意思哦,然后呢这个挡住了一点哈,就是说从这节课开始之后的课可就不容易了,好吧。

这个这可是大家自找的,哈哈哈哈哈,大家想听这个之后的这些这些内容,稍微现代一些的这个生成这个嗯更具有真实感的图像的一些方法对吧,但是话又说回来,这个我本来其实就准备说的没有问题啊。

这个算是现代计算机图形学我们肯定需要接触的一些内容好吧,那今天这个课前咱们说这么些事情好,然后呢咱们从上节课这边开始啊,嗯我们上节课说了什么对吧,我们说光线追踪基本的做法,那从为什么要做光线追踪开始。

然后我们提到有各种各样的方法,我们可以去做光线投射,然后呢waited对吧,turner waited这个大神,然后来提出了一个这个呃这种递归的光线追踪的方向盘,然后光线在任何一个地方都可能发生弹射。

然后弹射之后,然后在它的任何一个焦点都要去算它的这个这个着色,然后最后加回来加到一个这个像素上,那它就是这么一个原理,然后呢这个我们又提到说光线和物体怎么样求教,这是最基础的内容。

说我如果不知道这个怎么算,我怎么知道光线在场景中如何弹射呢对吧,那么嗯我们提到了几个事情,一个是光线和这个影视的表面怎么样去求教对吧,和各种各样的形状。

然后特别的我们提到和这个三角形的球角这块是嗯相当于是最重要的,因为我们这个整个一个图形学里面用到特别多的三角形,所以光线和三角形求角非常重要,然后嗯这块我们提到了,然后我们就提到说。

那我实际在做光线整个场景求交的时候,我是不是真的能光线和每个三角形都求一次交点,再取最近的呢,那是不可能的对吧,因为三角形数量实在是太多了,那怎么办呢,我们上节课引入了一个办法。

嗯叫ex is aligned bounding box,然后从这个逻辑出发,其实咱们不理解成一个盒子,只是理解成各种各样不同的这个相对的平板对吧。

然后对三维情况就是x y z3 个轴上分别有这个一对这个相对的平板,然后我们说根据这个概念怎么样去做光线和a a b b的求交,然后这是这个嗯我们上节课讲的一个相对较难的话题啊。

大家这个呃一样花点时间去了解他,然后把这个这个逻辑想清楚就没有问题,那么上节课我们说到光线和这个a b b求交了呢,咱们假设说现在咱们知道了,那咱们怎么用利用这个光线和这个盒子求交。

那么这就是咱们这节课要提的内容,那么我们会介绍两个概念,另外一种是这个空间划分好,那么嗯在这个之后咱们看时间啊,如果有时间的话,咱们会这个嗯继续说这个这个呃辐射度量学相关的内容叫radiometry。

然后啊这个待会再给大家介绍好吧,那咱们就从这个光线和a a b b求交这里开始,那么现在大家想吧,假如说场景非常复杂,我要去用这个光线啊,和这个场景中这个呃任何一个物体,我想去求教,那么现在来说啊。

就是说我们已经知道,那我先跟这些盒子求教,那我先做这么一个判断,然后如果我认为光线和这个盒子求教非常快,然后呢我这个嗯嗯就是说啊就是说如果呃盒子里面啊有物体,那我先和盒子求交。

然后再考虑是不是要用光线和这个物体求交,那么对于这里就是直接应用这么一个思想,什么意思呢,就是说我先找到这么一个场景,大家看到啊,这里有个场景,当然了,这里画的这幅图呢,能当然更好对吧,这个没有关系。

就整个一个场景呢,呃这确实是一个对的贸易合,没错吧,就是说我在这个做任何光线追踪之前啊,咱们说的是在做光线追踪之前,所以相当于是对场景的一个预处理,预先处理啊,把这个盒子给分成一堆格子。

这里看到的大家二维的场景呢,就是二维的格子了,就是大家看到一个小方块对吧,那么呃划分成格子之后,我们做一个什么操作呢,我们判定啊这些哪些格子里面可能有物体,也就是说格子和物体与物体相交的这些格子。

咱们都把它给标记成某一个类型,这里呢就简单涂成灰色对吧,然后我们说这个和物体相交呢,其实是说这个和物体的表面是否相交啊,我们说的这个并不考虑他这个内部什么对吧,大家知道这个几何上我们表示都是物体的表面。

它内部是空的,而时的咱们不管对吧,然后所以说这个格子咱不涂,就是道理就在这儿啊,那这里呢是有一个地方涂的不对哈,这个右上角这一块,其实这个地方当然也应该涂成这个呃这个颜色的没问题啊。

那嗯这里呢咱们就把这个场景的预处理的解决掉了,那么预处理之后我就知道啊,这在这个场景里面有一些格子呃,中间可能有物体,其他格子都不可能有物体,那么我现在就可以做光线追踪,怎么做呢,那我光线啊。

大家看到这里有一条光线,从左左边这个地方出发,然后大概往右上角去啊,然后他会他会率先和第一个这个这个盒子相交对吧,然后发现这个盒子是有交点不错,可是这个盒子里面没东东西啊。

所以说不用做任何与这个实际物体相交这么一个操作,那当然这里呢我们是假设光线和这个盒子求教是非常快的,光线和实际物体求教是非常慢的啊,咱们这么假设,那这样的话就是说大家会看到这个光线啊,在往这走。

往这个方向走的过程中,它会相交到这么些格子对吧,然后这个格子这个格子,然后然后呢比如说他走到这个格子的时候,走到这个格子的时候,嗯,大家会发现哦这个格子呃光线和它有交点嗯,而且这个格子里面有物体唉。

这就说明什么呢,这就说明光线有可能与这个格子内的物体有焦点,没错吧,那么这个时候呃就会做一个光线与物体的球交,发现啊没交点,没交点呢,没事儿对吧,这个逻辑上说得通的光线与这个盒子相交。

并不意味着光线一定要和这个物体盒子里的物体强调对吧,然后呢呃这个盒子同样判断呃,你和盒子有交点,但是嗯这个和物体没交点呃这个也是一样判断,然后当你考虑到这么一个这个呃格子的时候。

你就会发现哦光线与这个盒子相交,那我判定光线是否和这个盒子里的物体相交呢,诶我发现是和这个物体相交诶,那我就找到了一个交点,那同样道理,我们继续这个光线,然后我们就可以这个找到所有的焦点。

那如果说我们想找到第一个焦点,那么到这儿就可以停了对吧,找到了一个焦点了,也也已经是最近的了行那那这个问题就得到了解决,也就是说啊我只需要做若干次这个光线与盒子的求交对吧。

然后呢我可以避免我这个光线和这个场景中的所有物体求教,当然了,这里大家不要抬杠哈,这个是示意图,这当然就画了五个这个圆圈,就和五个圆圈求教,多简单啊对吧,这个咱不能这么理解啊。

就是说这个我们始终认为啊光线和盒子求教呃是一个很容易的事情,那么这里可能有同学会问这么一个问题啊,就是说我怎么知道这个光线从左边进来啊,会打到这个格子,那他下一次会打到哪个格子对吧。

我怎么知道他下次就是再继续往右这个右上这个传播的过程中,它会打到哪个格子,难道我得每个格子都判断一遍吗,不需要,这里呢简单给大家提供一个最最最最简单的思路啊,这个当然肯定不会是这么做的啊。

最最简单的思路是这样的,这个时候光线往右上方打,那么它当前在某一个格子,那么他下一个打到的格子要么在他这个这个右边,要么在它上面买对吧,所以只有这两种可能我就判定和这两个格子是否有交点,不就完了吗。

然后再取最近的,我就可以把这个光线往右或者往上移动一个格子,那这样走就对了,那么我说这个算法吧其实是有道理的,为什么,这就是在我们的光栅画里面,其实没有提了一个话题,叫做如何光栅画一条线。

这个我们之前说我知道如何光栅画一个三角形,对不对,那如果说我要画一条线怎么办,我在屏幕上画一条线怎么办,这个线可不存在什么内外对吧,然后那这样的话这个线会占据哪些不同的这个像素呢,对不对。

然后这个道理就是就是说啊这个大家如果读这个相关的书,就比如说咱们那本古书啊,这里面就会有就是光线就就如何光栅化一个一条直线,这里和这个光线如何在三维空间,在二维这个平面内啊,找这个格子。

而是完全一样的道理,那么在三维情况下,同样也是这个有一定的算法能够直接告诉你啊,告诉你光线在格子的某一个位置,并且往哪个方向去,然后它的下一个格子是谁,这个是可以得到的好吧,那咱们这里不多说。

那么道理呢,其实就是说啊我多做一些这个光线与盒子求交对吧,当然我不想多做光线与这个物体求交,那没问题对吧,那么这个时候呢自然而然就会有一个这个事情,他会问说我把这个空间划分成格子。

那么我们现在先来看一个最简单的情况,那我假设说啊,我把这个整个一个空间划分成一个1x1x1的格子,那也就是说我基本跟不画格子一模一样对吧,然后呢这是一个极端,那另一个极端大家可想而知啊。

这个时候是格子太稀疏了,那如果格子太密集了,怎么办,那格子太密集,就意味着你得做好多好多次光线与格子的求教,对不对,那这样的话是不是这个效率就下来了对吧,所以中间呢一定得有一个平衡,然后正常情况下呢。

这个人们发现了一些这个启发式的算法,说白了就是找到了一些这个这个在实际中呃,这个效果不错的数是什么呢,大家去找说这个我要把这个空间划分成多少个格子,然后这个这个格子的数量啊。

应该是这个嗯这个这个某一个常数乘以这个场景中物体的数量啊,这个常数正常,大家试出来这个耳机这个没有什么意义啊,就基本上来说大家知道这里有一个平衡在里面,就是说呢就是说格子不能太稀疏,也不能太密集。

这就对了对吧,然后呢呃当然这并不是大家在实际中这个采用的方法对吧,因为大家会看到这里,毕竟这个光线还是要走过他所相交的所有格子还是挺费的对吧,那么呃我们回到这个格子这个这个解法上来。

那什么时候效果会比较好呢,那那咱们看这个例子,这个例子里面啊,大家就单看这个离地面一段距离的这么这么一个例子,大家会发现啊,在这个场景里面,基本上来说各个地方都有一些几何的这些物体对吧,而这种情况下。

它这个格子的这个这个效果就比较好,我们可以期望比如说经过几个格子就会达到一个什么样的物体对吧,这是一个意思,然后我们看另外一个情况,对于这个场景来说就不是的,这个场景咱们这个这个之前提过这个嗯。

一点点对吧,然后就是说这个格子反映的是什么问题,这个格子反映的是大家看整个一个场景啊,就是说呃有各种各样的数目啊,什么东西,但是这次咱们不看,这次咱们看的是什么呢,咱们看的是场景中空的地方。

什么什么空的地方呢,比如这个楼,这个楼它是一个这个四面都有这个墙对吧,中间围出来一个整个空的地方,虽然有树啊,有这些东西,那比如说大家看这个整个这么一个区域啊,这个可不都是空气嘛对吧。

那这这块就是非常非常空的地方啊,整个这些地方也是非常空的地方,就这个场景啊,会会存在一个什么问题,就是这里说的问题,所谓teapot in a stadium problem是什么意思。

就是说在一个运动场里面的运动场,就是各种球场都非常大对吧,那中间放了一个这个茶壶,那这样的话大家你想你要把这个这个运动场,我给切成空间中的一个这个格子,但我得多少个格子,我得走多少格子。

我才能达到这个场景的中间,找到这个和这个茶壶的这么一个焦点对吧,这就是说啊场景呃它在这个不同的这个这个位置呃,像这种出现这种这种大规模的集中这种情况,然后大规模的空白,来解决问题对吧,那当然了。

这是最早期大家的一个简单尝试啊,然后就是说其实其实直到今天在某些的这些应用上啊,这个格子这些方法仍然是挺好用的,特别是在一些这个gpu实现的一些算法上,好吧嗯咱们这里给大家说到。

就是说为什么还要提这个技术,是因为这个技术在某些情况下确实挺好用好吧,叫做空间划分好吧,然后这个空间划分到底是什么意思呢,那其实就是基于咱们这个刚才这个格子啊,它的不足之处,那我们想一想啊。

这个格子它这个比如说它的大小各处都是相同的对吧,但事实上来说,我们觉得这个格子在指在这些稀疏的地方,是不是不需要用这么这么多格子,你比如说在整个一大块全是这个空气的,这这种情况下。

我用一个大一点的格子不就完了吗,干嘛要用那么多的小格子呢对吧,然后在这个物体它这个分布的比较密集的地方,我多用一些格子是不是就ok了,用一些更小的格子对吧,这这这样一个想法就非常合理。

那么这个空间划分呢其实就是说的就是这么一个道理,那咱们看几个例子啊,这个空间划分,这是这并不是说从这个图形学上产生了一个问题啊,这个问题很早很早就有呃,然后呢在计算几何上大家有各种各样的研究啊。

图形学呢作为一个应用,然后它这个应用了各种各样的空间划分结构,大家看到三种,这个给大家举个例子哈,这个所谓ocr左边啊,这个呃说说是叫ocitory啊,然后就大家正常连读就念成ocitr。

然后kd tree和这个bsp锤,然后哎这都是什么意思呢,这个大家直接看这些图就非常明确了,比如说咱们看左边的这个orchestr,这个orrin呢呃它是中文名字叫做八叉树,八叉树太好理解了对吧。

大家学过二叉树呢,八叉树不就是一个节点,它有八个子节点嘛对吧,然后他为什么八个子节点呢对吧,怎么想这么一个问题,其实他做了一件什么事儿,他是把整个一个场景啊,为什么是切成八份,因为它是空间中的一个对吧。

一个一个这个立方体,类似一块豆腐对吧,我横着竖着这个这个,然后在这个前后这么切这么一刀,然后三刀下去,那就是八块,那么这里呢简单是画成了这个二维的情况,那当然我切了两刀刀,最后变成四块对吧。

然后也就是说啊这个这个八叉树它在二维情况下其实是个四叉树对吧,如果是个线段情况下,它就是个二叉树,道理是一样的,就相当于我把这个空间啊切成,咱们就以这个这个呃平面上来看啊,切成四块。

然后呢我对于每一个子节点,我再把它切成四块,然后然后就是说这里呢只给大家画了这个左上角切成四块,事实上来说啊,这些地方都需要切成四块好,然后然后这个这个右下这块也是,然后到什么时候呢。

比如说咱们可以定一个规则,什么时候不切了,比如说我可以切出一个,咱们以这个右下角为例哈,咱们再切成四块之后,我会发现诶这三其中有三块它都和任何物体都不相交,那这三块我就没必要继续往下切下去了对吧。

就保留这么大就可以了对吧,然后呢,那如果像这边是这个呢,往下切,我发现我切了已经够小的了,然后下面还是有那么几个物体,那就差不多咱们停下来就好了,就是说啊这个呃停下来什么时候停下来。

这是取决于各种各样不同的标准,但是有东西这个这个当你这个划分到某一个格子,它是空的,或者说里面有足够这个数量的物体,足够少数量的物体,那就差不多可以停下来了,对不对,然后并且把它组织成了一个数据结构。

那么这里呢八叉树一个最直观的理解方式,但是呢人们不喜欢用这个八叉树呃,什么意思呢,就是说这个刚才咱们也说了,在这个平面情况下,八叉树其实是四叉树对吧,然后在三维空间中它是八叉树。

那要是维度再高一点怎么办,那比如说四维或者其他的维度嗯对吧,然后那就变成二的多少次方的这个这个差的数对吧,那这样的话显然并不好,那怎么办呢,人们就发明了一种这个办法,然后能让这个这个呃这个空间得到划分。

并且呢它和维度也没关系啊,那这当然非常好,这就是大家发明的叫做kd tree,就是这个意思,那么所谓这个kd trade是做了什么事情呢,和这个这个八叉树啊,我几乎完全相同。

只不过只不过每一次他找到了一个这个这个格子,它总是沿着某一个轴把它给砍开,就砍一刀,把它砍成两个,永远是这么做,那大家来看哈,这个整个这么一个空间,它是一个呃方形诶,我砍一刀这个水平的啊。

然后呢形成了上下两块,对不对,然后上下这两块呢,我再分别这个数值的砍一刀对吧,然后呢咱们就比如说就看上面这块呃,我竖直的看一道,然后呢这个左边这个右边,然后我再这个继续做下去,然后水平的砍一刀。

然后呢这个这个左边的这个上和下呃,我在各自这个竖直的就这么砍一刀下来,那那整个这个这个空间就被划分成这个类似二叉树的结构对吧,每一个节点它都都是只有只有这两个差,它只会这个被分成两个区域。

并且从我刚才描述的这个过程中啊,大家应该是不是看到这个这个叫什么来着,就是说这个这个嗯有一点嗯我说的一个细节上的一个事情啊,就是说呃为什么一开始我在第一个格子这里啊,就算是水平的做那个划分。

然后形成了这两个格子竖直的做一次划分,然后他们再形成了两个格子,我又水平的做了一次划分,然后之后呢再形成两个字,再做数值的划分,大家会发现它是交替的对吧,而我水平的划分形成了两个节点。

唉这两个点再在同一层上,我都用数值的来划分,然后呢在这个在他们的下一层,我再用水平的来划分,而这样一来呢,我就可以保证这个空间啊,那要不然我一直沿着x划分,一直水平能看出来对吧,这就变得越来越窄。

越来越窄,那肯定是不好的对吧,那所以说我们用这种方式呃,那么在三维情况下怎么办呢,那就是每一层我分别沿着x分成两个,然后下一层给的l y,然后再下一层沿着z。

然后再回来x y z x y z不断这么循环,那这样一来他就会发现哎,最后我当然是把这个这个空间分成了这么些这个不同的部分,并且这个嗯嗯仍然这个怎么说呢,保持了一个二叉树的一个性质,那所以它就非常好。

那这个就是我们说的这个kd tra的原理,那么同样道理,这里呢还有很多不同的这些划分方法,比如大家看到这里的这个bsp数,这个b s b数呢,这个它这个是对空间的一个二分的方法啊。

然后那么它的划分的方法其实也很简单,就是每一次呢我选一个方向,我去把这个这个呃节点给砍开,比如说像这里啊,这里先选这么一个斜着的方向,然后对于左上和右下呢,我们再选这个这么两个不同的方向。

然后这个不同的这个空间我再选不同的方向,那么它和kd tree的区别就在于它不是横平竖直的看的对吧,那我们之前说我们教大家这个aa bb对吧,a a b b的好处就是说我是非常好计算,它是横平竖直的。

xyz分别都是平行的对吧,那那这样的话,那也就是说bsp锤,那当然在这方面上赶不上这个kp税,所以这就是为什么咱们这节课呃,主要给大家介绍的就是这个kd锤这个意思,并且bsp税还有一个问题。

就是说它在维度高的时候,仍然仍然是有一个不好计算的这个这个这个情况,而且会越来越不好计算,为什么呢,因为大家现在看到一个二维的一个这个格子,我需要砍开,我用一条一条线就行了,那如果是三维的格子。

我想把它砍成两半怎么办呀,我得用一个平面,对不对,那如果是四维的或者更高维的,我们就需要需要用一个所谓超平面,那当然会越来越复杂啊,然后当然这个kd是税,这是最简单的对吧。

每一次我沿着x或者y或者z拆成两份,两份就可以了,那大家问高维怎么办呢,比如说四位x y z w就这样说对吧,那这个一直这么循环往复对吧,所以没问题好,那么这就是这个基本原理,那咱们实际看一个例子啊。

就是说我们说这个kd tree同样它的构造是在我做光线追踪之前,咱们把这个事情先先明确下来,给你一个场景,先建立k地税,我们再考虑如何与光网线求交好吗,那么这里呢就是就是咱们看一看这个呃这个例子。

那首先呢咱们看整个一个这个场景,最大的这个盒子,然后呢我们先假设呃,我们一开始沿着这个竖直的方向把它给分成两部分,一个是蓝的,一个是绿的,没问题啊,然后诶对于这两块咱们说清楚啊,对于刚才那个蓝的。

就是左边这块和右边这块,咱们都需要把它给砍开啊,这个我说清楚,然后只不过这里呢给大家这个这个介绍这个这个例子呢,然后咱们用这个其中一半,然后来给大家做解释啊,也就是说这个蓝色要如法炮制。

然后继续往后面做这个空间划分啊,然后我们看到这个右边这一部分呢分成两块上下的两块,然后呢我们如果在看这个右下的这块,当然还是一个道理,右上也要分啊,只不过没换啊。

右下咱们再分成这个用竖的把它分成左右两块对吧,形成三和这个这个地区也就是四和五的这个这个呃并集对吧,然后这个地区我们再考虑它是在这一层,让我的水平能把它分开,分成四和五三,当然也要分开啊。

就是说呃我们这里画的是这么一个这个这个呃,每一次我就考虑一个格子应该如何往下划分,但是都要划分啊,那么它就会最后形成一棵树,很简单对吧,那么嗯这就是它这个这个实际过程中如何去操作,那么我们想象一下啊。

就是说如果我把一个整个一个空间划分成了,那么我其实呢在这些中间节点的a b c和d我只需要记录好,它会被划分成呃其他的什么样的格子长什么样对吧,我只需要在叶子节点,只需要在它的叶子节点。

就是我决定不再划分的这些地方,我来实际存储它的这个嗯就是三角形啊,或者什么,就是说和这些和这些地方相交的这么一个和这些格子相交的几何形体,都存在这个叶子节点上,好吧,那就是这么个意思,那咱们总结一下。

就是说啊咱们这个如果要设计一种数据结构,那咱们就是说对于任何一个这个节点,然后我都应该知道它是它当前是应该沿着哪一个轴去这个呃划分,那我当然知道,如果它就生成了这个子节点之后。

那当然就会变成他的下一个对吧好,然后就是当前节点沿着哪一个轴划分,然后并且这个划分在哪儿,咱们之前给大家的例子一直都是划分在中间,其实谁也没规定,一定得划分在正中间对吧。

然后我可以这个随便定义一个没有问题,然后这中间就有各种各样的技巧,怎么样定义是最好的做法,画在中间是不是最对的对吧,就是好像大家做二分查找一样,这个谁也没告诉你,一定得在正中间做这个二分查找。

然后但是嗯对吧,大家都这么做,但是你也可以这个不画的重点嘛,对吧好,然后呢对于中间节点来说,一定有它的这个子节点,子节点咱们刚才说清楚了,既然只划分一次,也就是说一定是两个子节点,没没问题啊。

然后这个呃我们说一下呃,实际的物体或者三角形,咱们不存在中间节点上,只存在这个这个叶子节点上,好吧,那这样一来整个一个这个数就算建成了,那刚才呢咱们是说这个呃叫什么呢。

就是说这个呃一个这个kd tree啊,他是怎么样建立的对吧,我们我们刚才说他是在这个之前,在我们做光线追踪之前,那么咱们可以看看这个结构将如何,那咱们看一看,现在实际上来说呢。

咱们假设有一个光线从左上到右下对吧,那从左上到右下,那我就就做这么一个判断啊,首先他能看到的哦,然后他判定一下是否和a有交点,没问题,他发现有交点对吧。

那也就是说嗯嗯那这条光线就有可能和这个和这个盒子的左边和右边,这两个子节点都有可能有交集,所以他说他也应该继续看下去,那然后呢这个大家看到啊,这里是发现有焦点没问题,然后这就说明这个他需要考虑呃。

和这个最大最大的外面这个盒子所在节点,要考虑它的子节点是不是也有交点,那他会发现哦,它在这里呢和这个呃和这个左边这一块儿,也也就是说这个1号这个区域,蓝色这个区域啊也有焦点。

他找到了tmt max嘛对吧,然后呃这里有焦点嗯,但是这里呢咱们假设说这个数就长这样哈,就是说假如说我到这个一这个地方,我真的不划分了,但是一是一个叶子节点,那那咱们就听着表示说啊。

那这个时候我这条光线应该和这个叶子节点里面的所有的这些物体,都要求交了对吧,没问题,然后如果这这就是这里哈,咱们把这个说清楚,左边这个区域按理来说应该是要继续划分的,但是在这里咱们认为它不继续划分。

因为我们给大家的这个例子来说,就是这么这么画的一个很很y的一个这个kd锤,然后这个这这里这个左边这个蓝色区域就认为是叶子节点了哈啊,ok那这样的话,那它就会和叶子节点里面所有的物体求交好,然后同样道理。

我刚才说啊,整个这个光线和最外面这个盒子有交点,那它势必要和两个两个这个这个子节点都要判定一下是不是有交点,没问题哈,然后那它同样要跟这个右边这么一个区域也要求焦点,他会发现哦,右边也有交点,好没问题。

那么怎么办呢,这个时候就意味着这个b会分出二和c这两个区域来,就意味着光线既然和b相交,那就有可能和二相交,和c也相交,那这两个区域都得派那行,那咱们现在呢就是说再判一下这个二这个区域。

这个区域发现还是有交点好,没问题,但是二这里仍然我们认为啊,假设它不再往下分了,它是一个这个叶子节点,那我就要和这个叶子节点里面的所有的物体求交好,没问题,那么呃这里呢我们再看嗯。

它和这个上面这个判定了交点之后,还要和这个右边这个判定焦点对吧,然后呃和和和这下面这个判定焦点啊,然后发现同样一个焦点没问题,那也就是说啊光线和c这么一个一个节点有交点。

那也就是说他必须得判定c的这个两个子节点是否有交点,那么同样道理啊,继续判定和这个三呃有交点,发现在这里,那而且30页的节点就要和这个三里面的所有物体就交,然后呢这个和左边的这个这个d同样道理啊。

再怎么回到这个这个上面来,和左边这个这个d这个区域同样应该去这个求教,直到你这个求交到这个这个呃所有的这个和他们相交的叶子节点对吧,那么在这里呢。

这个五也就是对应这个粉红色区域和这个光线是没有任何交点的,所以说光线没有必要判定和这个五里面的所有的这些嗯,三角形是否有交点好,那么这就是实际这个我们如何去利用这个kd tra。

大家会发现其实道理很简单,如果光线和某一个这个格子对吧,没有焦点,那什么都不用做,那如果光光线和某一个盒子有交点,那我就知道光线和它的两个子节点可能都有交点,所以都判一下,直到什么时候呢。

直到说光线打到这个叶子节点,那么什么都不用做,那么如果说达到叶子节点,并且光线和叶子节点有交点呢,那就是光线和这个叶子节点里面的所有物体都要求这个交点啊,那就是这么回事了,那也就是说啊,咱们想象一下。

如果这个这个呃光线啊,这个光线,当然这这个里面呢它和很多东西都有交点,如果这条光线往右边偏了那么一点点啊,往右边偏了一点点,那这样一来呢我就会知道哦,这个光线和这个蓝色的这个整个一块都没有交点。

那不管这个蓝色里面有多么多的物体,不管这个蓝色的区域下面有多少个子节点,什么我都不用再看了,就等于一下就可以排除掉好多好多不同的这个这个三角形,因为什么,那光线怎么可能和里面的东西有交点呢对吧。

所以道理就在这儿,那通过这个这个呃kd税的这个这个建立,咱们就可以用一个类似这种二分查找的方法,找到这个光线和什么样的物体有交点好吧,那当然了,如果要求最近的焦点,那咱们就一直这个这个求出所有的焦点。

并且记录永远记录最近的这个好吧,那这里就是这么做的一个呃这个这个简单办法哈,然后唉最后会找到这么一个焦点,那然后咱们进入下面一个这个话题哈,嗯就是说啊空间划分,这是一种方法。

然后呢通过这种kd trip的这种空间划分,我们可以找到一个交给,那么呃现在呢有一个事情给大家说一下啊,有的同学会问到这个事情啊,说我怎么我我我我怎么这个呃,我们不是说我们对这个对这个场景做这种划分吗。

然后划分出来这些格子,然后这些格子这个到底和哪些物体相交对吧,比如说我们知道这个粉红色的格子和这个圆圈就相交对吧,这这些我怎么判定这些很难排的真的,然后就是说我们一直没说这个事情。

就是因为对于这个kd tree它有一个明确的问题,问题是什么呢,如果对于这个场景来说,这个场景全是三角形构成的,那么你通过空间划分的方式,势必产生一个问题,就是说啊嗯我给你一个节点啊。

我得知道它和哪些三角形有有交集,这是一个非常非常难的事情,很不容易写对哈,这个算法是有的,但是你很难判定一个三角形是否和这个和这个嗯这个框有交集,或者和一个这个的立方体也有交集,为为什么呢。

你比如说大家可以想一个简单的办法,那比如说嗯三角形是不是只要有一个顶点在这个嗯,在这个盒子里挑两个就算相交了,呃是没错,但是有时候会出现三角形的三个丁点都不在一个盒子里,但它们却是相交的,怎么怎么办呢。

很简单,你想象一个这个平面中的一个三角形,然后有一个很小的这个盒子是插进去,这这可不就是说对于这种情况来说有交点,但是呃这个就说这个这个三角形一定会这个被会被这个盒子表示对吧,这个这个盒子肯定会表示哦。

它和这个三角形有交集,所以说他一定会把这个三角形放在这个盒子呃,所表示的这些物体里面去,那这这个交集就非常难判断对吧,所以说这就是为什么说这个嗯就是反正在最近的10年之内吧。

就是渐渐的大家就再也不用这个kd吹了,这是其中一个原因,它不太好写,它需要涉及到这么一个问题,你要真有一个三角形,我怎么才能把这个这个这个三角形和一个aa bb是否有交点,这么一个事情给做对好吧。

很难啊,没问题,那么这是一个事情要给大家说的另外一个问题是这样,就是说啊大家比如说看这么一个圆圈啊,这个圆圈它其实和很多不同的这个呃这个a a b b啊,它都有交集。

比如说它和这个大的这个这个这个框对吧,然后这个小的框也是右边这个橙色的这个框它肯定是有交集的,那这个物体同样又和这个粉红色和这个左下角这这么个颜色嗯,有这个颜色有点奇怪,左边应该是这个应该是紫色啊。

右下应该是粉红啊,也就是说这个圆圈它可能和不同的盒子都有交集,那如果这几个盒子咱们都认为对应345对吧,都是叶子节点,那么我在三这个这个节点里面,我要存这个物体,我在四这个节点,也就是这个节点哈。

它和它和和这个物体有相关对吧,那也就是说四里面我也要存一个这个物体,五里面同样这个五对应这么一个区域啊,它和这个圆圈也有相交,那就说明五里面我也要存这个物体,那就说明什么问题啊。

就是说一个物体有可能出现在不同的,或者说多个这个叶子节点里面,当然是有道理的,因为一个物体它确实有可能和很多不同的这个这个呃节点相交嘛对吧,那没问题,那就是说这么一来的话,就是说它有这么一个性质。

其实并不怎么好对吧,人们不希望这样,人们希望说我一个物体,最后我就在一个叶子节点里面多好,我干嘛要这个把它这个考虑到几个节节点里面,都有这么一个物体这么一个性质对吧,所以从这个角度上来说。

kdj在这一点上并不直观,那么我们现在已经提到这么两个问题了对吧,一个是物体可能存在于多个不同的格子里,然后呢另外一个说kd税的建立并不简单,需要考虑三角形与这个呃这个盒子的求教对吧。

我要我要把这两个事情做对,很难,那么怎么办呢,人们就发现了啊,于是我有另外一种办法,同样呢也可以做划分,但这次的划分咱们不是从空间做起,咱们是从物体做起。

这就是我们要给大家介绍的所谓object partition,我们通过物体来划分,叫bounding volume hierarchy,这个结构得到了非常非常广泛的应用,在图形学里面,现在几乎来说了。

大家做各种各样不同的,不管是实时的这个光线追踪还是离线的这些结构,嗯,大家基本上用的都是这么一种结构,因为他解决了刚才这个kd税的两个问题好吧,怎么解决了,咱们看一眼好吧,那么同样道理。

这个一开始给你一个场景,这是一样的,那么这个b v h是怎么运作的呢,呃咱们可以看一看啊,这个b v h我刚才说了,它划分的不是空间,它是把物体分成两个部分,比如说这里大家看到啊。

那肯定根节点它就对应一个这么一个方框,然后呢我把这些物体也就是说啊这个方框里的所有三角形诶,我把三角形分成两部分,有分成左边一部分和右边一部分,至于这个左右怎么定义,咱们再待会儿再说啊,就是说无论如何。

你可以想一种办法,把这个这个这个一个盒,一个盒子里面的所有三角形组织成两部分,组织成两部分之后怎么办呢,那么大家就会看到啊,这里把这些三角形分成蓝的和黄的两部分,形成了这么两个节点好,那没问题。

那然后同样道理,咱们继续划分划分谁,还是划分这个这个呃物体啊,比如说咱们以刚才的那个蓝色节点为例,现在呢咱们又把它分成两对三角形,对应这个蓝色的和这个绿色的,当然这个黄色的我们同样也往下划分啊。

然后就是说划分到什么时候为止呢,那当然也是划分到,比如说嗯一个节点里最多只有五个三角形,那就差不多咱们就不再划分了,可以没问题对吧,那然后这个划分呢同样道理也可以用类似kd tree的方法。

比如说我在某一层诶,我是按照左右划分,然后再看下一层,我就按照上下来划分,那么它的一个这个和这个kd税的这个区别,咱们就这就说清楚了,对不对,ttree呢,我不管怎么样,拿到一个节点,先把它分成两半。

再考虑这两个这个节点和和这些物体的这种相交情况对吧,然后呢这里a b v h呢做的事情是说我把物体呃里面分成两堆,我分别在重新求它的这个这个呃呃bounding box对吧。

那么这里看到了这个b v h里面的,这样就明确的可以看到它的一个性质了,什么性质呢,物体一个物体只可能出现在这个一个格子里面,没有问题吧,呃就比如说这个大家看这个绿色三角形。

但它却不在这个蓝色的这个格子里啊,没问题啊,就是说他解决了kd是这么一个问题,并且啊咱们通过刚才的过程来看,a把三角形分成两堆呃,挺好做的,就取它们最小的x最最最大的是最小y最大y z然后z对吧。

这这就是说我完全不涉及到数三角形和这个保温和求交的,对不对,所以省去了这么一个问题,非常好,那咱们不用判这个事情诶,那当然大家很喜欢对吧,那么就是说啊这个bvh避免了kd吹的这种问题。

就是说呃一个一个呃几何结构会出现在多个不同的格子呃,叶叶子节点里啊,然后嗯但b v h引起了一个问题,什么问题呢,就是说啊b v h它对空间的划分其实并不是这个严格的划分开,就是这个意思。

也就是说啊这些不同的这些呃所谓bounding box啊,这个它可以相交的对吧,我原本说这个绿色的这个这个呃,蓝色的这个这个稍微大一点的这个格子还是长这样,然后我把它分成两部分之后。

那有可能相较也没什么问题对吧,我们这个就是说啊我们把物体反正组织成这种形式,只要说我不是说把这一堆三角形啊,咱们说比如说我认为这个大的这个绿色三角形也是蓝色的啊,然后我认为这个左边这个蓝色的三角形。

它是绿色,就等于是说我这个划分画的不好,对不对,就是说我要想把这些不同的几何,然后给给用一个很好的方式划分,我觉得尽可能的让他们的这个这个之间的这个所谓重叠啊变得少。

就是说大家看到这种方式其实画的不错的对吧,但其实来说,比如说这个黄色三角形,你也可以把它给画画给左边这个区域对吧,然后就是说关于怎么划分很有讲究,这就是为什么说这个bbh这一方面。

这个有很多很多不同的研究在做这个事情好吧,诶那这样一来,那关于b v h和td税,咱们就说说清楚了对吧,咱们在这个同样可以看一些这个实际的这些做法,咱们刚才说的时候其实没有继续继续讲哈。

咱们比如说再继续看左边这个蓝色的这个框啊,左边蓝色的这个框我们还可以继续分,比如说把它分成上下两个部分啊,然后这个把物体分成两堆,诶,然后我就可以得到这两个部分对吧。

然后就是说我这个过程可以继续进行下去,指导说我这个嗯表示我每一个这个叶子节点里面,这个三角形数量都已经比较少了,就差不多了好吧,那咱们可以总结一下怎么做的呢,这么一种方式把它拆成两个部分。

那这个这个过程就可以无限这么递归下去呃,那么什么时候停下来呢,正常情况下我觉得当叶子节点里面,正常情况下只要有足够少的三角形就够了,那么同样我们把这个物体实际的物体记录在叶子节点里。

那么其他的部分都用来做这个家族结构的判断好,那么这里就是bbh怎么做的好,那么这里呢刚才其实已经给大家提到了,说我实际上如何去划分一个节点对吧,然后就是说啊啊那我肯定也是要选一个维度去划分。

我每一次呢我选择一个不同的维度,我这次取x下次呢我就用y,然后呢呃有一些其他的一些技巧,比如说这里的一个技巧很简单,就是说啊当我发现啊,比如说我的所有场景,就是整个一个场景啊,都在一个长条里面。

都在一个长条里面,那我划分了之后,其实两个节点还挺长条的对吧,那我应该还是按照这样这样数值吧,来给这个看开对吧,也就是说人们发现啊,为了让这些这个三角形嗯,每一次就是说给我任何一个节点,我什么都不管。

我就只沿着它最长的那一个轴把它分成两半诶,这其实是一个挺好的做法对吧,他就让这个让这个最长的这个轴变短,通过这种方式来保证这个之后通过划分,xyz也都差不多长度对吧,哎这是一个不错的办法。

然后呢当然也有很多其他各种各样不同的这个这个做法哈,然后咱们这里呢在这里呢再给大家说另外一个,这个人们发现出来的技巧什么呢,就是说我我一个这个节点里面啊,现在我知道他要怎么样去沿着某一个轴去划分了啊。

比如说这个都在一个长条里,然后我沿着这个这个轴的某一个位置,把它不是沿着某个位置啊,就是说我怎么把这个呃这个节点里面的所有这些物体分成两半,然后并且我再分分别来求呢。

那么人们发现了一个简单办法是如何把物体分成两半呢,我取中间的那个物体,所谓中间的这个指的是这么个意思,就是说啊咱们假设说有1163角形,从左到右,然后一直这么排着。

然后从一到到n那咱们就找这个它的中位数,也就是d d2 分之n个三角形对吧,你比如说啊这个嗯这n个三角形它有好多三角形都挤在左边,只有一个三角形挤在在在右边对吧,像这种情况下。

他找到的是一个中间的这个三角形啊,就是就是说这样可以保证一个什么事情呢,就是当你把这个三角形呃,呃这个分成两部分之后,这两部分的三角形数量差不多这么个意思,这个三角形数量差不多呢。

那关于这个事情我就不再多说了啊,数据结构里面经常大家会说这个事情我要保证这个数平衡,然后让他的这个两边的这个叫什么呃,深度尽可能差不多,那咱们既然是把物体分成两半,那我每一次左右两边都用相同数量的物体。

那这个数可不是能更平衡吧,更平衡就意味着最大的深度小啊,就意味着我平均的这个这个搜索的次数是小啊对吧,这里不再多说啊,数据结构大家上过都应该明白,那么就是说我是这个把这个物体呃找到它的d呃。

这个二分之n个啊,假如说有n个的话好,那么这里呢大家就想这肯定涉及到一个排序问题对吧,我假设我已经决定了要沿着某一个轴去这个嗯把三角形给考虑进去,那怎么办呢,我把这些所有的三角形都取它的重心。

因为三角形它本身有大小嘛,咱们假设说就取三角形的重心,然后呢三角形的这个这个重心呢,然后它的这个呃比如说我要沿x轴,我就沿x轴做排排一个序啊,然后呢排个序之后,那我就知道他的这个中间的那个在哪里了。

然后这个把这所有三角形给分成两个部分,当然是可以的,但是呢这个过程中啊,就是说呃你其实如果只要找一个中位数的话啊,这个是不需要排序的哈,这里就是说嗯简单给大家提一下吧,就是说既然这个课是一般应用嘛。

咱们刚才说数据结构让这棵树尽可能平衡,咱们现在再说一说算法,说你这个怎么样把这个嗯一个一个序列吧对吧,你有一系列的数对吧,你要快速的找出它的中位数,这个算法是时间复杂度是多少的呢。

那如果你要把这个把这个所有的这些呃物体啊,呃呃不是所有这些数啊都排个序,那就上来就是n log n对不对,然后呢你再取中间的那个就是它的下标是中间那个没问题,肯定是可以的。

所以n log n你肯定能够找到它的终点,但事实上来说你是不需要的,就是说啊对于这么一个问题,咱们简单简单这个总结一下啊,嗯这不要总结一下,这算是这个给大家说一说一个更更更通用的这个算法。

给你任意一列数无序的啊,然后说你要找到它第n大的数,然后这个这个呃这个n说的不好,di大的数吧好吧,然后就是说你要找它最大的数呢,就是第一大的数,然后你要找它的中间数的这这个中位数。

那就是d2 分之n大的数没问题吧,然后就是说啊呃这个通用的说法就是说给你一系列无序的数,然后呢你要找他的d i大的数,这个问题是可以在o n时间内解决的,而且这个算法呢叫做快速划分算法。

这个算法是受这个快速排序的启发,只不过呢它只对对这个呃你划分出来的两边的这个某一边进行操作,那咱们这里说到这儿就不用再多说了,好吧,之后想了解这个算法的同学们,自己随便去找一找这个各种各样的资料就好了。

也就是说啊我们回到这个话题上来啊,人们发现了这两个比较聪明的做法,第一我永远沿着最长的轴把它分成两部分,第二我分成两部分,一定保证说两边的这个三角形数都基本差不多,好吧好。

那么这里呢给大家这个这个就说到这么一个这个这个概念上哦,我说错了哈,快速选择,快速选择不是快速划分了,快速划分是快速排序中间的一个部分啊,ok没问题,就是说啊这个这个一定是有n n的算法的。

这个不是欺骗大家啊,然后大家在这个作业中会实现这个事情啊,就是bbh这个我要这个呃把它给分成两块,然后要找它的中位数,这个大家随便啊,可以可以排序啊,没有任何问题。

而且c加本身有标准库是可以直接调用它的排序的,挺方便的啊,然后就是说嗯没有什么必要说这个一定要我要实现这个on的算法,就是这个意思好吧,哎这里说到这儿啊,算是多说一句。

我们之前也说这个课没事给大家多说一些这个对吧,这个这个相关的一些内容,然后这个呃对有兴趣多研究一点,这是好事情啊,那同样道理啊,咱们刚才说这个嗯bbh是要不断做划分,然后划分到什么什么情况。

我刚才说和kd税基本差不多划分到当这个呃某一个节点呃,如果它里面只有比如说五个这个三角形小于等于五吧,然后我就不再划分了,那就差不多了对吧,就是这个意思好,那么就是说呃这么一来呢,那有同学问说。

如果场景是动态的怎么办呀,那物体动了一下怎么办呀,然后加了一些新物体怎么办呀,对呀这种情况下你知道没办法,是得重新去计算一个新的这个bh好吧好,那么没问题。

那这样的话呢这个呃继续咱们这个把这个bbh给说明白好吧,然后b a h的存储,咱们刚才说这个k d税的数据结构,那b v a h同样道理,然后和它的这些这个子节点的指针,然后一直到叶子节点。

我们才实际存它实际的这个这些物体嗯,行没问题,ok那这样一来呢,那b v h就算是做好了,那咱们总结一下算法哈,就是说咱们之前说的怎么样去这个呃去做这个光线和bb h的求交,咱们不再赘述。

刚才的那个实际的过程啊,咱们直接给出这个伪代码嗯,就是这个和ktree并没有本质区别啊,怎么用它这个方法是完全一样的,好吧啊,比如说你要判定这个光线和整个一个这个bh的,比如说根节点在这个裘江。

我要找到和它这个节点里面的这些物体的最近的这个焦点怎么办呢,那如果这个光线和这个整个这个bh节点都呃不想交,那就什么也不这个不会发生对吧,那就是后面的内容了哈,就是说如果和和这个节点相交。

我就知道那有两种可能,第一这个节点本身就是叶子节点,那最简单,那这种情况下,就是说我就需要光线和这个叶子节点里面的所有物体都要求求个角,但对于这个物体来说啊,你们就是三角形啊,然后返回最近的那一个。

那呃剩下的情况呢就是这个这个光线和这个节点求交,并且这个节点呢又不是叶子节点,那怎么办呢,它是中间节点,那逻辑上告诉我们,那光线可能和它的这个节点的两个子节点都有可能有交点。

那么我分别求出他俩的交点对吧,然后呢我再返回最近的那个,那当然是一个递归算法了,大家看到intersect在自己调用intersect,挺简单的逻辑啊,然后就是说通过这种方法。

那最后我自然而然就可以把这个呃把这个问题解决掉啊,好吧行啊,没问题啊,好那这里呢b v h那就是这么做的,那咱们之前说啊呃kd税是对空间的划分,然后呢这个我们说bbh是对物体的划分。

那这个空间划分呢和物体划分这个区别咱们就看得出来了,比如说呢kd tra我们刚才其实都已经说了对吧,总结一下,然后就是说我划分的是空间,并且呢这个空间和空间之间,它肯定是就是说任何的节点之间。

他肯定不会有交集,我们把空间划分开了嘛,但是会有一些物体,比如像这个大三角形,他有可能又在左边,又在右边,那没办法,他就是得又在左边,又在右边对吧,他因为和左边右边都有交点吗,那bbh我划分的是物体。

我把物体分成两部分之后,没问题对吧,不耽误,然后呢这个呃就是说呃在实际的这个过程中啊,就是说必备句得到了非常广泛的应用,也就是因为它的这个实现容易,那么这就是这么回事,然后咱们这个目前来说呢。

好那咱们到这里嗯等于是呃光线追踪怎么样,这个算光线与三角形求交呃,我们已经这个知道,我们都说明白了,那这样一来光线和场景的求交就可以在很快的时间内完成好吧。

这就算是这个整个的所谓witted风格光线追踪应该讲的内容,那咱们之后就要讲什么了呢,就是说要开始说一说这个辐射度量学,就是这个意思,还说我为什么说讲这个光线追踪怎么讲,这讲突然讲到辐射度量学呢。

咱们之后很快就会给大家这个介绍这个事情,在这之前先给大家说一说这个事情啊,就是说目前涉及到新课呃,我考虑了一下,就是从这个时间上来考虑,就是说加两节课的内容,其实时间上也非常紧张,所以说呢呃我打算这样。

我打算这个这个从现在开始,我就这么做了,好吧啊,就是就就就这么解决,然后没办法,咱们这客容量实在太有限了,这个这个不容易啊,这个这个算是大家这个这个嗯对吧,对我支持啊。

那咱们今天把辐射度量学稍微多说那么一点点啊,好嗯,然后呢呃这里当然大家看到这个广告的,这我非常自豪啊,这个事情就是说嗯从这里开始,应该就是国内的图形学课不会覆盖的内容,就是说从从这儿开始的话。

就是说我们讲完了wait风格光线追踪之后,剩下来的更高级的光线追踪的方法,然后这里国内不会提,然后咱们呢把这个这个呃这一块儿尽量能够说明白,对于这这个课程本身呢也是一个新话题。

就是说我这门课呢涉及到说是要给这个三学期制的学校上课,就是英文课啊,然后所以说本来客容量就小,所以说可能讲不到这里,所以说这里算是新的这个呃内容,然后就是无论从这节这个课程上来说。

或者说从整个的这个图形学教育的角度上来说,是新的啊,挺好我也很开心啊,那咱们从这里开始说,那那自然而然有同学要问了对吧,咱们说光线追踪,说着说着开始说辐射度量学,所谓radiom对吧,这是什么意思对吧。

那咱们要先把这个问题了解清楚,那就是说啊我们提辐射度量学为什么要提呢对吧,然后得有些这个动机对吧,那咱们看啊,有一些这个事情其实大家之前已经观察到了,比如什么呢。

比如说啊咱们在这个这个呃第三次作业里面对吧,好像是之前才做过,说我们把这个布林冯这个模型写出来,课上咱们也说了对吧,这不林风模型,它这个涉及到一些光照怎么样去做,其中有一个概念。

有一个概念说这个这个光的强度,咱们之前定义它的所谓intensity对吧,然后定义一个i对吧,还记得这个这个这个概念吧,比如说咱们定义这个i是等于几的,i等于十,假如说啊这个代码里面到底给的是多少。

我忘了,咱们假如说l等于十好,那l等于十是是什么对吧,l等于是是是什么东西,十十个,对不对,这不合理对吧,这个光源等于等于十什么呢对吧,我们也不知道他肯定得有个单位,他肯定得有自己的物理意义。

就是这么一个意思,而之前在我们的布林防的这个模型里面,我们把它极大地简化掉了,它就是一个数,那肯定是不对的对吧,那么这是一个方面,另一方面从大家这个已经做了的这个嗯,就是有同学正在做吧对吧。

然后之后算是夹子结构对吧,算是这些作业我们做的是什么呢,就是这个wait风格的光线追踪,那咱们看这个vt的生成这幅图来说,有没有同学会觉得他是真实的,我其实很怀疑这个事情对吧,这是不可能的。

大家一看就知道这个非常假的嘛对吧,这个看上去看上去这个这肯定不是真实存在中的一个场景,因为我们中间做了很多很多各种各样不同简化,大家还记得吗,比如说这里哈大家能看到这个高光。

就意味着说我们做了这个缝shading,对不不不,这个不灵缝的模型做了这个着色对吧,但是如果说是这样的话,那就意味着说我一根光线打进来之后,它应该会反射到一定的区域里,而不是沿着这个完整的这个就呃。

就是说不是沿着完美的镜像方向去对吧,但我们又假设它的反射是这个沿着完美的是镜像方向去对吧,然后折射同样道理也是这么这么回事,就是它能量损失多少,每一次折射不知道没算过对吧。

然后这个可以我自己随便定义一个什么量,这也不对,没错吧,然后就是说嗯并且啊咱们这个回到这个模型上来,这个不灵,从咱们从一开始就在说它有很多不对的地方,虽然有很多地方听上去很有道理是吧。

咱们分析什么这个能量衰减啊,或者干什么很有道理,但是呃它确实在从从一定上角度角度上来说,你想一想单位都没有,怎么可能对呢对吧,所以从这个角度上来说,那咱们回到这个呃辐射度量学的角度上。

我们为什么要学这个,是因为辐射度量学就是一个精准的给我们这个这个实际的这个呃光的,一系列物理量的一个方法,好吧,就是说我们把这个光精确地定义出来,精确地描述出来,然后并且说这个这是涉及到什么呃。

我们刚才说到光源啊,材质啊,呃对吧,光线的传播方法,咱们也精确的把它给做出来,只有这样我们才能最后得到这个最正确的结果,那这里呢就是说我们为什么要去学这个辐射度量学。

而整个一套路径追踪的体系就是之后很快要给大家说的,可以大家可以理解成是所谓高级的这个嗯这个光线追踪,而不是这个wait的风格光线追踪好吧,那都是建立在这个基础上的,所以咱们学啊,道理就在这儿。

那这里就是说为什么啊,那这个到底说我们会学些什么内容呢,对吧,那就是这里就是说啊这个辐射度量学,它表示的是说这个嗯就是说如何去描述这个这个光照,就是这么个意思好吧。

然后它定义了一系列的方法和一系列的这个这个单位,然后呢这个它能给我们光各种各样不同的属性,然后给我们属性,这里呢多说一句,是表示在这个空间中的属性啊,然后咱不说这个光线在时间中的属性。

并且还有一点辐射度量学,仍然是基于这个这个几何光学来做的,就是说我们认为光线还是直线传播,然后就是它没有什么波动性,什么这这些性质啊,咱们不说,那么它定义了这个光光照的若干属性。

咱们这里呢呃我简单停一下,是这么回事,我很努力的在找他们的这个中文翻译,我发现中文翻译的非常混乱,然后就是说就是说这个你用各种各样量的,这个这个这种这种介绍方法都有。

所以说我决定在这里呢这几个概念咱们之后不再说中文了,然后说中文的话,其实我也记不住,然后我基本上用的时候也是就直接用这几个英文的概念说什么呢,主要是这个radiant flux,intensity。

irradiance和radiance,这都是什么东西对吧,那把这个事情搞明白对吧,肯定是物理量了,所以这个辐射度量学其实相当于在五在物理上一个准确的定义,这个光照的一个方法,好吧。

说这些还是挺空虚的对吧,然后但是到这里呢简单给大家介绍一下,这是作为我个人算是这个告诉大家一下,说我个人如果我要学一些什么东西啊,我会怎么去学呃,就是这么一个意思,就是大家会看到啊,这里有这么几个概念。

如果我要去学一个什么东西,我肯定会按照这么一个顺序来,就是说呢我会先问说我们为什么要去学这个东西,然后我们学的是什么,就这个东西是什么,最后最后才会去解决我们要怎么样。

这个就是说这个东西到底是怎么样运作的对吧,然后它的具体的一些方法,这个是整个一套思路,我觉得是一个比较合理的一套思路啊,咱们比如说这个辐射度量学对吧,咱们先说咱们为什么要研究它。

根据这个现在已有的这么一些问题对吧,先先搞明白咱们为什么要用到它,然后它到底在说些什么,然后最后才是说我们如何去用它对吧,然后这个号呢是最不重要的事情,就是说这个这是我这么理解的啊。

就比如说咱们学下来这门课之后最容易忘的其实就是这块,就是还有这一块就具体怎么样做各种各样的东西,嗯,我们这个不希望去做这个呃光线和每个三角形求角,对大家看出来是一个这样的这种树形结构对吧。

然后说我们怎么样去建立这棵树,怎么样用这个数,那都是最最最最次要的问题,好吧,那咱们通过这种办法能够把这些问题这个给了解明白好,那咱们现在就开始来研究这个how这么一个事情,就是说到底是怎么回事。

这个辐射度量学叫radiometry好吧,那么这几个概念又都是什么,那咱们从前面两个概念开始好吧,我们会说这个所谓radiant energy and flux,然后这这这是什么好吧。

那咱们这个尽量能够把这个事情说清楚啊,在这之前先说一下,所有这些量都有明确的物理概念,咱们希望把这个这些这些概念啊和这个真实生活,咱们把它给对应起来,这样好理解好吧,那首先呢最简单先定义第一个量。

所谓radiant energy,然后这个radiant energy是什么东西呢,你这一看energy嘛,能量嘛对吧,然后就是说它是这个这个电磁辐射的能量,那也就是能量,但是知道这些学过物理对吧。

能量是能量用什么来表示对吧,它是用一个单位叫做焦耳这么一个东西来表示这个能量是什么对吧,大家理解成比如说它这个还是一样太阳能板哈,然后大家这个这个在太阳照射它的时候,它会发热,对不对。

然后他会把这个转化成电能,然后这个存下来呃,道理就在这儿,就是说啊这些这些呃就是光源辐射出来的东西,它肯定永远是能量对吧,然后呢首先我们先用能量的去描述它对吧,这是一个好。

然后呢这个呃咱们再定义下一个概念,然后呢就是所谓radiant flux,然后这个flux呢然后人们又经常叫它power啊,这两个是一个概念,就是说呃还是一样啊,这里咱们就不用中文来说了,但是有一点啊。

就是说通常有时候人们也管它叫能量啊,但事实上它不是能量,然后然后它是什么,咱们看啊,就是说这个是能量什么呢,能量这个emitted reflect,transmitted received,这不管啊。

这是也就是说定义这个能量能量什么energy per unit time是单位时间的能量,好吧,单位时间的能量呢是什么意思对吧,就是说给你一个单位的能量,你去除以它的单位时间,大家学过物理。

知道如果我这么做的话,我得到的东西其实是这个功率对吧,没错吧,然后就是说这个这个单位时间内就是产生吧,或者说什么样的能量,这当然就是功率了对吧对吧,就是就是就是这么一个意思。

然后功率的安慰就是w不是w啊,就是就是瓦特,然后缩写上w,然后特别的说一点,就是说我们为什么要研究这么一个单位时间内的能量,或者说功率这个这个概念。

然后呢呃也就是说对应在光学上管管它叫做radiant flux或者power,然后就是说为什么要研究它呢,是因为很简单,就是说如果还是以太阳能为例的话,你照的时间越长的能量可不是越多吗。

那如果我要分析的这个能量来说,我肯定要固定某一个某一个短时间对吧,那所以说在这个光学的这个这个研究中间啊,呃几乎是这样,在咱们整个的这一套这个辐射度度量,这个呃这一套体系中。

大家考虑的都是单位时间的性质好吧,就是说那不管怎么样,你照的时间越长,他肯定就会这个这个越热对吧,物体就是就是这样的,然后呢那我们考虑某一个单位时间,这是有道理的好吧。

那也就是说我们研究的是这么一个问题,就是它的所谓功率就是flex power啊,然后嗯这个在光学中间呢,呃我们要想描述一个物体的功率呃,其实是还是有另外一个单位的,叫做这个缩写成lm,叫做刘明呃。

这个这个说白了其实说明什么呢,说明了比如说一个光源它有多么亮啊,就是就是这个意思就是说啊定义这些是物理上的事情,要理解这些咱们可以对应到生活中去,咱们可以用不同的这个这个能量的灯泡对吧,就是不能量啊。

不同功率的灯泡对吧,然后呢当然比如说我们用个60瓦,60瓦的灯,那肯定不如80瓦的灯来的亮对吧,然后呢就是说就是呃道理就在这对吧,然后就是说我们定义这个功率是有道理的,当然这个灯开的时间越长。

耗费的电费越高对吧,那这个就是咱们上面说的这个能量的意思对吧,然后这个所以说呢这个功率呃,这个这个在这里呢我们就定义它是flux或者power,咱们通常用这个大写的法语来表示啊。

然后就是这么一个定义就表示了这个光的亮度,好吧,这个好理解啊,给你一个灯泡,它有多亮啊,ok那么这个flux这个概念还可以从另外一个角度上来来定义,就是什么呢,就是说我给你单位的时间,我们知道光线传播。

其实光线在辐射各种光子,那如果说我有一个某一个平面,比如大家看到这里啊,这里有一个平面,如果我认为这个平面是一种感光的一种什么东西啊,给你单位的时间,通过它的这个光子的数量。

我们就认为这个就是它的flux,就这个道理其实也很好理解的对吧,然后就这个这个呃一个灯泡它看上去更亮,是因为它单它单位时间内辐射出更多的光子,没问题啊,那也就是说这个这是另外一个这个物理上的。

这样这样一个实际对它的一个定义哈,咱们这里简单给大家说一下,当然那咱们回到刚才这个flax或者说power上面,其实就是定义这个啊所谓灯泡的亮度啊,好。

那咱们现在呢这个知道了这个energy和这个呃power这么两个不同的,这个概念之后呢,咱们现在就可以来研究这个其他的嗯这些呃物理量,比如说咱们这里会介绍什么呢。

就是说这个光源会辐射出来各种各样不同的能量,对不对,我们如何去定义这些东西对吧,然后呢我们还要定义说这个在任何一个这个物体表面,它会接收到多少能量对吧,这也是我们要定义的一个问题。

然后呢以及说这个光线的传播过程中,它的能量应该应该用什么样的方法来定义,这就是说啊我们这个对这些话题都是非常感兴趣的,当然当然对应着他们呢都有不同的物理量,那咱们从这个开始对吧,第一个开始嗯。

一个光源它往四面八方都有可能辐射能量,那么我会定义一个方向性的,这个跟能量相关的概念就叫做radiant intensity,有时候人们就直接说intensity啊,然后呢这个呃光源呃。

这个这个一个物体表面它接收到多少这个光的能量,这块也是有有这个呃概念的,叫做irradiance好吧,然后呢这个光线在传播中,然后它应该如何去度量它的这个能量是什么东西。

我们用的是这个radiance这么一个概念,那咱们从第一个开始说啊,争取都把它说明白,咱们今天是这样哈,尽量能把前两个给给解决掉,然后后面一个就不再不再多说了,嗯这大概就是时间估计哈,很快啊很快。

那咱们先说第一个这个概念,然后这个呃什么呢,就是说说这个所谓intensity好吧,然后所以所以我们每一次引入一个新的量,都要和之前的量去做一个对比,它是怎么回事哈,radiant intensity。

他在说什么呢,他在说的东西啊,就是叫做呃叫做什么呢,看定义power per unit,大家知道刚才我们才定义功率对吧,flux或者power它指的是那个功率,就是灯泡有多亮对吧,就这个概念。

那power per unit,这是什么东西对吧,这我知道怎么翻译叫立体角啊,这个没什么悬念,然后呢就是说这个这个立体角是什么对吧,通过这个这个定义来说没什么问题啊,就是它的能量去除以立体角。

当然都都考虑单位的话,就是就是differential能量除以differential的这个立体角啊,ential power哈,这个意思哦,然后呢它的单位自然就是说它的这个power的单位就是瓦对吧。

然后除以立体角的单位s2 啊,然后这个同样道理,这个功率也可以用留名的方式来来定义对吧,这个是不同的,这个是在光学上还是在这个这个这个叫什么热血上,这些不同的这些单位啊,那表示同一个量。

而且它其实是这个这个单位一个复合单位出来之后,也就是告诉我们,intensity本身也有一个单位,它定义成流明除以这个立体角,然后定义得出来的这个这个单位缩写成cd叫做canada,是这么一个单位。

而且它还是标准单位制中的这个单位,当然这个单位啊多给大家说一说,这个没什么没什么这个问题啊,就是说嗯不管怎么样,它的定义啊,就是所谓power呃,就是每一个单位立体角上的power。

那咱们现在就只剩一个问题呢,就什么是立体角对吧,哈哈就是这个意思,那咱们来看所谓立体讲嗯,我们知道啊,在这个呃物理或者说数学上啊,咱们如何定义一个角对吧,我们之前说我们可以用多少度来定义这个角。

当然这个定义呢并不是多么这个,这个就是说在在科学上并不是那么常用啊,那人们更常用的定义是用弧度来定义一个角对吧,怎么定义这一个角度,比如说这个c塔是多少呢,很简单,我们认为啊这个角从一个圆心出发。

往往某一个角度张开一个一个角度哈,然后这个这个它会对应达到一个这个圆的一个诶弧长上面,诶这个这个圆弧上让它对应一段弧长,就是说一个角呢它总会对应一个圆的一个弧长。

这里l然后并且这个圆呢它可以是一个呃怎么说任意的半径,它的半径是二,那么我定义这个角度,那就是这个弧长除以这个半径对吧,这是非常简单的事情,那当然大家会发现这个嗯怎么说呢,如果我这个圆放大或者缩小。

那不影响这个角度,为什么呢,因为这样的话弧长和半径会同步的放大缩小,那这个定义就说明这个角度挺合理的对吧,没问题好,那这个弧长除以半径啊,这是这是角度的定义,然后呢我们知道整个一个圆角度是多少呢。

自然就是说我这个弧长总共就是这个圆的周长,再除以它的半径,那么就得到二派对吧,所以整个一个圆对应的角角度或者弧度吧,弧度就是二派弧度对吧,好,那没问题,那同样道理。

立体角其实就是说这个角度在三维空间中的一个延伸好吧,那这个是什么意思呢,就是说啊在三维空间中,我们去这个呃这个找某一个呃球好吧,没有某一个球,然后从这个球出发。

然后形成某一个这个这个这个嗯有一定大小的一个锥哈,以形成一个锥,然后这个锥呢会打到这个球面上,然后会对应球面上的一个面积好吧,然后这个立体角很好定义,这个这个定义呢就是这个球面上的这个这个面积a去除。

以它的这个呃这个半径的平方来,这里呢其实相当于是对这个这个角度这个弧度制的,在空间中的一个延伸,这弧度制原本不是弧长除以半径的,那这个这个就是整个一个球,它对应多少立体角呢。

这个立体角你是可以把它给积分出来的,我们知道球面面积是四派r2 平方,那这样一来除以二平方,那整个一个球就是四派的这个这个立体角好吧,然后他也有单位叫stradi好吧,然后这就是立体角的定义。

说白了就是空间中的一个这个角有多大啊,就是这么一个意思好呃,那么比如说啊嗯这个大家平常会定义一个所谓单位立体角,那单位立体角是什么意思呢,它从刚才我们这个定义上来看啊,这个我说是立体角呃。

某一个这个面积除以它的这个半径对吧,那对于一个单位这个立体角,那我们就找一个单位的,就是一个一个挺小的一个这个呃范围挺小的一个这个这个面积,那么我们现在可以定义一个这个方形的面积。

然后这个方形的面积是多少呢,那咱们可以这个首先在球面上定义一个方向,大家知道我们可以通过c大y的方式来定义,那么theta是什么呢,就这个方向离这个z轴,它形成了一个夹角theta。

然后fine呢相当于它绕着z轴旋转形成了一个角啊,所以说这个通过这两个两个角度,我就可以定义唯一的一个球面上的一个方向,那么就是说啊我这个这个我们可以看,如果我取一个这个单位面积,这个单位面积怎么算。

我认为它是一个矩形的话啊,然后这个单位面积对对于呃这这两条边来说,我们应该算出来它这个两条边呃,这个就是就是这条横着边和这条竖着边,他们的这个长度各是多少好吧。

然后呢我我觉得这里面呢我们这个这个再画起来就会越来越复杂了,然后呢我们会会其实会发现啊,其实会发现这个横着的这条边,其实相当于是这个这个defi这么一个长度,然后呢这个竖着的这条呃,呃这这条边。

然后它其实是应该是r sin theta的这么一个长度好吧,然后就是说我们通过这种方式,然后定义出来这个这个小方块的这个程度啊,这个这个面积,那它就应该是这个叫什么来着。

这个哦说起来是这个def只能定义这个角度对,还得还得这个算出它的实际的程度哈,这里暂时不给大家多说了啊,就是说算一个单位的这个这个小的面积是多少,在一个球上面。

如果我知道他的这个方向是这个c和y表示它就会是这么一个成绩啊,然后这个单位面积算出来了之后,你会发现它是r平方乘以sin c的dc的defi,那么根据这个立体角的定义,就是说这里的计算并不重要哈。

立体角的定义是重要的,就是说它是用这个单位的面积除以它的r平方,那很简单,这个立体角得出来的结果就是sin c的dc的d法,那也就是说啊我们在一个球面上,如果任意一个方向。

我拿这个这个呃就是c大f表示的话,我就可以这个简单的算出来它这个对应的这个所谓differential solid,两个,或者说叫单位立体角,或者说叫微分立体角,然后这个概念呢是之后肯定是要用的好吧。

那嗯这里呢就是说对于整个一个球来说,整个一个球来说,如果我要把它所有的方向对应的单位立体要给激起来,然后这个积分得到的结果就应该是四派,就是整个一个球对应的立体角。

那么这里呢自然就是涉及到这个这个物理和数学相相对,这块东西多一点哈,然后就是说关于这块要怎么计算,这里我不知道大家还记得不记得,就是说这块呢因为我们之前这个课程给大家补充了线性代数的知识。

然后这个微积分这块就没在没太多说哈,就是说关于这个例题讲怎么样去在整个球面上积分出来,是四派这么一个概念,咱们就先放在这,然后这里呢他就直接可以利用这个概念。

就可以这个这个嗯先去把这个例题讲这个搞明白好吧,所以单位立体角的是是sin thetdc大d fi这个结论指导就足够用,好吧好,ok,然后呢。

这个嗯嗯就是说在这个这个就整个一套这个呃所谓呃辐射度量里面啊,如果我们表示一个三维空间中的一个方向,我们通常就会用一个omega来表示它的方向。

然后我们知道这个omega可以用theta和fire的方式来定义它的位置,并且可以通过这个呃这个sc在dc的d fi来算出它的一个单位立体呃,他的这个所谓ential微分立体角啊,或者单位立体角是多少。

然后那咱们用这个概念之后可以解释很多问题,那么咱们先把立体角的这个概念放在这儿好吧,就是说怎么做,这是和稍微麻烦一点,但是它的定义挺简单的,就是一个面积除以它的距离平方对吧,呃这个嗯所以说这样一来呢。

我们可以利用这个立体角,我们再回到刚才所说的所谓intensity这么一个问题上来好吧,那么我们说啊这个呃我们定义一个这个点光源,我们可以定义,比如它就是一个灯泡对吧。

我们刚才可以定义它的flux或者是它的这个呃power对吧,它同一个概念用这个多少瓦来定义对吧,这就是这个光源它本身的亮度,那么现在我们再回头看这个intensity的定义,其实就是它这么一个光源。

它在任何一个方向上的亮度没问题吧,他总共的这个这个亮度是是这个flux或者power,我们要除以它对应的单位立体角,也就相当于我从任何一个方向上看过去,对应着它的亮度。

那么这里就是这个这个他们对应的关系了,那么我既然说这个呃这个i intensity是用def除以这个domega对吧,来定义的这么一个概念,那我们自然反过来积分。

我把这个所有这个方向上单位立体角the intensity积分起来,一定还可以得到power,所以没问题,ok然后这样一来呢,这样一来我就可以通过这个式子得出,那么非常简单。

这里就是就是说任何一个方向上对应的intensity就是它的power除以四派,那也就是说我们可以得到方向上对应的所谓的强度,ok那这就是intensity,好吧,那看来行吧,从时间的角度上来说。

我觉得已经已经这个荒唐的不行了,那这个嗯这样吧,那咱们就把这这一个这个实际的例子看明白就好了吧,那这是什么意思呢,大家实际上看一个这个灯泡啊,然后啊其实现在大家当下课没什么问题啊,简单给他多说一点。

这算是生活小知识啊,这个嗯大家看这个灯泡啊,他写的是l e d灯,然后是60瓦,然后呢这个这个实际上来说啊,如果大家实际上买过这个led灯,大家就知道哈,他们所称的这个多少瓦。

实际上是相当于它这个和这个白炽灯相比,它相当于多少瓦的这个白炽灯,然后它实际上它的这个这个叫什么呃,它的能量开销其实很低的,就是这个意思,就是说比如说对于这个灯来说。

它实际上它的这个它的这个耗能就是实实际上是11晚,ok所以但是它很亮,就是这个意思好吧,然后呢就是说它它对应到这个这个嗯,就是它看上去像是60瓦的白炽灯,就是说的这个意思啊,那么行。

那咱们还回到这个灯泡上来,那它实际上是1瓦的啊,没问题,然后呢这里它这个灯泡自己的规格写清楚了,815流明对吧,这就是就是说它这个叫什么来着,他的这个就是对应这个11瓦啊。

这一回是它的power和这个flax啊,然后如果我认为这个这个呃灯,它往四面八方辐射出来的这个能量是一样的话,那我可以算任意一个方向,它的intensity是多少,那很简单对吧。

那就是815流明是它的这个flux,或者说是呃这个叫做power啊,然后我除以四拍,然然后撕拍立体角吧,然后我知道刘明除以立体角得到的结果就是candy的,然后是815÷4派得到65。

65对应的就是它这个这个就是65candl,就是对应它在某一个方向上,它的intensity是多少,那也就是说这样一来,咱们就等于是把这个那这个各种不同的量,这就算是联系起来了。

那咱们回到刚才我们定义能量,我们又定义flux和这个power是一回事,然后就是定义它的功率对吧,就是灯泡有多亮,我们又引入了一个概念,是方向性的强度,考虑这个单位立体角。

然后为了解释这个咱们引入立体角的概念哈,立体角这块说的稍微仓促一些,时间有限,然后这块如果大家想看推导的话,就把那个式子理解清楚就好,不想看推导的话没任何问题,距离也就是这个叫什么。

就是一个球面上的一个这个这个嗯面积除以这个呃半径的平方,就是这么一个定义,很简单,相当于是这个简单的角度的一个延伸,这就表示在球面上张开了多大的角度,就是这个意思好那行到此为止,那咱们算是这个呃。

今天这任务算是圆满完成了,那这个另外一个咱们留到下节课再说吧好吧,然后简单预告一下,下节课开始可是越来越难啊,这个是没问题,就是说这块如果要弄对的话,就是说中间涉及到各种各样不同的亮光学。

这些量就要花很长时间,没什么问题,就是如果大家觉得这块稍微难一点,很正常,没问题,稍微多花一点点时间应该就能弄明白,并且呢实际在做这个我们做这个路径追踪的时候,嗯,其实有很多概念不需要理解到这么透彻。

就是说这个咱们只需要知道它的定义是怎么样就可以了,好吧,咱们今天这个就说到这儿好吧。

时间已经非常晚了,感谢大家啊,这个嗯之后那我再想办法看看之后的课程这个怎么样安排,尽量咱们能不拖沓就不拖沓好吧,ok那这个今天说到这儿,咱们把时间交还给技术秘书同学。

然后各位同学这个赶紧吃午饭吧,啊ok行啊,这个大家也辛苦啊,不只是我ok行呃,大家加油。

GAMES101-现代计算机图形学入门-闫令琪 - P15:Lecture 15 Ray Tracing 3 - GAMES-Webinar - BV1X7411F744

那那今天呃咱们这个大家可以看到光线追踪第三部分,咱们开始说光线传播和这个全局光照啊,啊没问题,那咱们这个呃这就开始在课程之前还是说几件事情,一个是我们的作业五,然后目前这个240份作业提交挺好的啊。

然后这个因为大家刚刚接触这个光线追踪这一块,然后写这个作业我肯定涉及上手问题对吧,然后不错啊,嗯然后呢我们之后的两次作业简单说一下呃,作业六作业七,咱们刚刚说过对吧,b自己写一个一个作业期新作业。

关于这个这个路径追踪这块,当然路径追踪这块呢,咱们这个呃在下节课就会给大家讲完,然后呃算法什么的应该都有,所以说这个不用特别担心啊,新作业而已,那么这之后的两次作业呢,考虑到大家的这个工作量对吧。

然后把这个作业现在变成了嗯1。5个星期一次,也就是说嗯嗯作业六和作业期大家都有更多的时间来完成,那当然作业八相对容易,一个星期就够了哈,然后这就是我们的八次小作业,目前安排很快乐啊,这就是作业。

然后呢我们的课程网站稍微更新了一下,然后整个课时现在变成了22节啊,而且多了这个作业期,就是刚才跟大家说的这个好吧,呃这是这个,然后呢嗯咱们还有一些其他的这些内容,嗯就是嗯首先呢给大家解释一下。

呃这是因为呢嗯我们的嗯games 101这门课,它其实是从我这边的cs 180这个课的,嗯,嗯怎么说呢,就是从这个课改过来的,而我之前cs 180呢这个课的安排是一个小时到1。25个小时。

所以说正常情况下一个小时本来就讲不完,然后呢我主要想是说把它变成中文之后,按说中文利索一些对吧,然后应该能讲得比较快,一小时应该可以讲完,后来事实证明我这个想法膨胀了,这不太对啊。

就是说是有可能出现这个讲不完的情况,所以说会出现在一小时到一小时15分钟之内这个浮动的情况啊,所以是呃是因为有这么一个情况,所以才会涉及到说课程内容总是显得这个长一些啊,就是大概有这么个安排。

那呃我是尽量讲快一点啊,这样好,然后呢我注意到呃,课程的bbs上面有很多同学问各种各样关于作业的这些问题,非常好,没问题,大家互相帮助一下也是对的,然后说一下对吧好啊。

那么我个人这边呢倒是更鼓励大家问一些关于不清楚的这些概念啊,或者是这个嗯比如说课程中间出现一些什么问题,什么样的理解,然后这些东西啊我个人来说我更关注这些问题,如果我可以看到的话。

然后到时候及时给大家解答好吧,呃这是这个事儿啊,好然后呢有同学会问这个事情,就是说关于我提到的呃,实施现场这个这门这门课程,这门课程呢这和学校协商,这个确实没办法得是内部的这个直播。

所以直播过程肯定是不可以拿到外部去,这是一个嗯,也就是说暂时是不能这个同步给大家直播哈,也不也不可能有办法能够录下来,然后拿出去,但是呢我现在这么想啊,我和games这边和这个刘丽芳老师也都在联系。

然后说也许可以在咱们经过了下一门课之后,然后再给大家在这个暑假的时间呃,给大家说一说这个呃用中文哈,把把这门实时渲染的课呃再说一说,然后实时渲染本身呢我也经过这一个学期。

然后也可以再把这门课再改的好一点啊,应该是没问题啊,那至于说这个对吧,我提到说我们这门课之后会有另外一门课对吧,呃另外一门课是谁开呢,会讲什么呢,当然是一位超级大神啊,然后这这个呢呃暂时先不给大家说啊。

先这样大家想一想好,那么呃嘿嘿啊,我们这个课呢还有大概三星期多对吧,挺好的,然后我们这个争取顺利表说完,那这就是这一节课,我们主要给大家这个课前啊,说一说这些内容啊,那咱们这就可以进入到呃今天的新课。

当然同样道理,今天的课也同样不会简单,但是我希望咱们能够把这个事情说清楚,好吧好啊,那么嗯上节课或者说上两节课,咱们都说了什么呢,咱们提到了光线追踪怎么做的对吧,光线如何和这个物体求教和三角形求角。

和一般的物体求教,和a a b b求教,并且呢如何用a a b b对空间进行划分,要么是直接空间划分,要么通过物体划分对吧,我们说kd tree的方法或者是b类h的方法。

然后特别的我们提到说对于一个树形结构,呃主要说这个内容,然后最后我们有点时间说了一下这个辐射度量学,然后我们说目的是干什么呢,是为了理解咱们这两节课的内容对吧,我们要说清楚这个路径追踪这块是怎么回事。

蒙特卡洛积分怎么回事,我们得把这一套呃准确的物理定义被定义好,我们才能准确地解除光线真正传播了之后,它的样子对吧好,那么我们上节课提到这个呃这这块radiometry这块呢,这节课再把这个结束掉。

嗯在这之后我们就已经有办法可以引入复杂的光线传播的理论了,然后我们会讲到反射方程和渲染方程,然后之后会提到全局光照,然后如果我们有时间的话,我们再讲一讲这个简单的概率论,因为下节课开始我们需要用到。

那这就是这节课的基本安排,好啊,没问题啊,嗯好的,那这样一来呢,呃我们从什么开始呢,我们从上节课讲到的一些简单概念开始啊,一点也不简单啊,就是说这个上节课提到的一些概念吧,首先咱们讲到能量对吧。

能量不管是什么样的呃,这个光源呃,他们总是在不断的辐射出来的能量,而这个能量我们之前提到说,基本上啊在图形学里面我们不嗯很少用这个概念啊,为什么很少用呢,是因为我们知道说如果我这个太阳能板。

它接收的这个能量,光照时间越长对吧,它吸收能量就越多,所以正常我们为了分析一些能量什么的问题啊,我们都考虑是这个单位时间的能量,这就是为什么我们引入的所谓radiant flux或者叫power。

就power这个这个词用的更多吧,我这么觉得,然后power呢,其实我们对应到这个灯泡上,咱们上节课对应了一下对吧,就是灯泡的功率,功率就是这个做的功,也就是能量单位时间内的能量对吧。

那这个事情我们就之后就一直这么用,那如果我这节课里面我会提到能量啊,提到这个或者说我这个无意中说到energy,其实我指的都是power啊,就是因为我们图形学里面就基本不用这个实际的能量。

用的这各种各样的能量考虑都是单位时间啊,那咱们就不管这个power也管叫能量,也知道我说的是这个意思,就好好,那么这是power,然后呢我们提到一个概念叫intensity对吧。

所以intensity是什么呢,很简单就是在一个立体角上的能量,那我们说嗯在这个过程中就要引入立体角这么一个概念,我们说立体角怎么定义呢,很简单就是它在空间中的这个面积去除以他的这个在呃相应的球呃。

就是距离球星的这个距离平方啊对吧,然后当然这个面积呢咱们上节课讲的有点仓促,这个面积等于是正对着这个这个嗯球星也就是从从什么呢,从球星往这个物体看过去,然后他会和这个单位球会交出一个面。

而这个面积去除以单位球的距离平方,也就是一的平方,而这个面积我们就可以认为是嗯立体角,所以这里呢给大家另外一个定义吧,就是说不管是任何一个物体,我们把它投影到一个单位球上。

就是相当于把它这个往单位球的球星去连线了,然后在单位球上它会框出一个范围内来,这个这个范围就是它的立体角好吧,因为单位求r等于一嘛,咱们刚才说了好吧,然后这就是立体角的定义,那说白了立体角是什么呢。

就是空间中的一个角度对吧,比如大家考虑一个追这个追张开的多大对吧,那么怎么怎么描述它呢,就用一个立体角好,那呃我们说intensity呢就是这个呃单位立体角上的能量,嗯好嗯。

那这就是上节课咱们提到的一些内容,好啊哦有同学问说能量是这个一直比如物体一直接受照,然后为什么它的颜色没有一直发生变化对吧,因为他一直照射,它一直能量也在往外辐射,那所以就是这么一个道理。

当然对于一些特殊的材质,比如说这些荧光的这些东西,它就得考虑这个问题了对吧,那咱们暂时不考虑这个问题的话,就考虑任何时候都是瞬时的一些呃这种这种现象,好吧啊,ok那这是为什么我们不考虑时间行。

那咱们上节课提到这些概念哈,上节课还有一个讲的仓促的地方,在这个呃这个微分例题讲呃对吧,这个微分立体角我们说是什么意思呢,就是说啊任意空间中的一个方向,我们知道我们学过数学或者物理,任任何的一种方式。

我们都知道这个任意空间中一个方向,我都可以这个把它投影到所谓球面坐标系下,然后我用一个c一个file就可以表示它这个方向,那seer什么意思呢,就是这个方向和向上方向的夹角对吧。

就是大家看到这里就类似于这个方向向上方向和任意一个方向,它之间的夹角叫塞塔,然后呢他fly是什么意思呢,fi就是等于它绕着这个向上方向应该转多少度啊,这个就是就是呃这个five这个角,那就有这么两个角。

我就可以确定空间中的一个方向,那么现在这个微分立体角说的很简单,就是我这两个角都各自变化那么一点点,比如c大我变化dc塔,诶,这个fi呢我变化defi啊,defi啊,大家看到这么一个小的区域。

这个defi dc它就是这个区域,然后呢,呃对应的方向在球面上肯定会框出一个小的这个这个方框来对吧,那这个方框它对应的立体角是多少啊,那我们就管这个立体角叫做微分立体角,就是一个极小的立体角。

就这么个概念啊啊那这个立体角等于多少呢,那自然根据它的定义来对吧,它是这个这两这两个边,我们把它求出来,然后求出来之后呢,这就是它的面积的乘积,就是它面积对吧,乘积是面积,然后除以距离的半径的平方。

就是r平方,就可以得到这个微分立体角,那么有一点我们直接看这个结论,那微分立体角大家发现啊,c他变化那么一点点,φ变化那么一点点,但是我形成的这个微分立体角却不是简单的这个c,它的变化乘以y的变化诶。

它前面还有一个sin theta,也就是说它跟它实际的theta的位置是有关系的啊,也就是说啊当这个这个方向靠近这个极点的这个方向的时候,和这个方向靠近赤道的情况下。

虽然说我的theta可以变化一个同样的范围,但这个对应的立体角的变化是不一样的啊,也就是这告诉我们,这里多说一句,是这个意思好,那么所谓这个微分例题讲,说白了就是这个意思呃。

theta和fine各变化一点点,然后它会引起多大的立体角的变化,就是这么个立体角好吧,那么微分例题讲这个呃,之后我们会用得到,那今天我们就继续这个话题啊,我们从什么开始呢。

从一个新概念开始叫做irradiance好吧,那么irradiance是什么,那咱们就首先来看它的定义对吧,那么irradiance大家看这里啊,就是所谓power per unit area。

对后面什么东西,这些这些这些销售的东西就不用看了对吧,这个power per unit area是什么呢,那我们知道power我们之前定义过power,不就是这个这个fine吗。

per unit area,那就是说它对应多大的面积,我就除以多大的面积,那如果我有一个微小的一个面积,这个面积上面有一个微小的能量,那么用这个微小能量垂直微小的面积。

那不就是power per unit area吗,那所以说我们通过这种方式,我们就可以定义一个叫做irradiance的量,最重要的事情就是要和之前其他不同的概念做区分,那跟谁区分呢。

跟这个intensity咱们区分一下,intensity是什么呢,大家还记得吧,就是每一个立体角上对应的能量,那这里定义的是什么呢,这定义每一个面积上对对应的能量没问题啊,两个不同的概念。

那么大家看到这也一样,有它的这个单位对吧,这个瓦特除以平方米,这是这个标准单位制,当然这个流明也是标准单位制,除以这个平方米,它自己还有一个这个这种单位的技法叫拉克斯,当然这个我们不需要管太多啊。

知道它的定义就行了,什么power per unit area,但这里呢多说一句什么unit area,得是和这个power就是所谓你这个入射的这个光线啊相垂直的这个方向。

就是这个才算是这个这个接收到的这个范围大小,唉就是说如果是不垂直的情况下,那这个时候得把它给变成这个投影过的垂直的方向,就是这么个意思,就是说你这个面呀要必须和你这个光光线垂直这个才行,如果他歪了一点。

那会他他得到了这个能量,它就不再是这么多,那说到这里呢,大家会觉得呃非常熟悉,为什么呢,是因为咱们之前提到过这个话题,在什么地方提到的呢,那大家肯定这个也能回想的起来。

我们是在这个呃不离冯这么一个呃着色模型里面,我们在这个defuse部分,在漫反射部分提到有一个叫lambers cos and law,对不对,那cos i love说的是什么呢,说我有一束平行的光。

然后打到一个这个单位的这个这个这个呃面上啊,如果是垂直的,那把这个比如说大家看到这六根光线全部都接收到了对吧,那如果说这个面歪一点,那那它其实只能接收到三根光线,那如果说他这个歪了一个某一个角度对吧。

某一个角度,那它接收到多少呢,接收到的能量乘以cos c的,那么咱们现在反过来呢,我们就可以把这个问题真正的给理解清楚对吧,那是怎么回事呢,正是因为我们定义所谓irradiance。

定义的是必须得是垂直于这个光线的这个这个这个面积,或者投影到垂直方向上的面积,那才算是我们要的面积是吧,那那那也就是说呃其他情况下,那那不能算,那所以说呢呃像这种情况,虽然呢你这个面积还这个。

比如说这个长度还是一,你投影过之后,它其实只有这个这个呃一小部分,就是这个意思对吧,然后就只有一半这个角度上啊,正好一半,那通用的一些情况下,这有一个cos c的,就是就是正确的意思好吧。

那那就是说它是这么一种定义方法好,那就是说当当呃这个面如果说这个不垂直这这些物体的时候,它接收到呃和不垂直光线的时候,接收到能量要变小好,那没问题,道理是一样的,那不管怎么样哈。

咱们回到刚才的定义上来看,就是说我们平常不会提这个就是垂直的或者是投影的面积啊,那但是我们说的是这个意思,就是说啊呃就是说能量就是power punit area,然后我们其实这背后都指的是这个嗯。

就是说嗯在这个投影的这个这个呃区域或者说面积上好吧,那这里暂时没有写cos theta,那么这里就是呃关于它的理解,以及我们这些前提到这个概念对吧,说我为什么地球上不同地方有冬天有夏天呢。

那是因为啊这个阳光和不同区域它的夹角是不一样的对吧,然后然后就是说如果阳光始终垂直于某一个区域,诶,那他接受能量就多,然后如果它这个阳光不垂直,那它接收能量就少,那没问题。

那这个radiance呢就是power punit area,就是这么个意思呢,好那么我们之前还有一个概念,也可以通过这种方式来把它给得到一个正确的解读,什么呢,就是说光线,我们说这个光呢。

比如一个点光源,然后它在传播的过程中,它有一个r平方的衰减,大家还记得这个事情对吧,就是说我们写这个呃布林冯这个着色模型的时候对吧,就是我们提到说这个点到达呃,就是这个点光源辐射出的能量。

到达这个着色点和这个着色点本身就是吸收,这都有能量损失,那到达这一点其实也可以通过irradiance来解释,怎么解释呢,我们这样解释,就是说我们认为啊我们可以定义点光源的power没问题对吧。

这个fine对吧,然后就是点关功率嘛对,然后呢他往这个周围,我们认为它往各个方向都是均等的辐射出能量的,那么呢我们之前所说的理解是说把能量分布在这个壳上对吧,然后他当然壳越大,它每一个地方分布的越少。

那么同样道理,那我们直接用这个irradiance来分析是不是更简单,就是什么呢,irradiance怎么定义呢,是是单位的面积上对吧,接收到的能量,那它能量是f那这个对于这个中间的这个圈来说。

假如说半径是一,那就是spa平方,这个fire除以spa平方呃,就就得到这个这个地方的irradiance好,那就是这个面积上单位面积接受的能量,但离远了呢,那就是离远了的一个单位面积接收到的能量。

那我说总共能量是fine,然后呢整个的面积是四派r平方向传播的是一个实际的r,那那这里呢对比这个在单位距离上的这个能量,那自然就是按二平方衰减对吧,那所以说我们这里可以得到一个更准确的这个理解。

谁在衰减并不是intensity的衰减,intensity这个词在这里就不对了,没错吧,就只有irradiance,它是在衰减,intensity并没有。

大家还记得intensity的概念是说这个单位立体角上的能量,那我在传播的过程中,如果我画一个椎哈,这个追越传播越大,你会发现传播到这个地方,它对应一个比较小的这个面积。

这个远处传播到远处对应的比较大的面积,但立体角始终没变,所以说intensity其实是没有变的,irradiance才是在衰减好吧,那这样一来咱们可以把这个很多事情就给解释对了。

这也就是我们这个辐射度量学,我们为什么要学它,对吧好,那我们说了irradiance之后,再说一个重要概念叫做radiance,而这两个又不一样啊,这个一下引入不少概念的。

那么radiance又是什么呢,那大家可以看到这个radiance呢,我们发明它是是是为了描述这个光线这么一些属性,就好像说我们要研究光在一条线上的传播过程中,它会有一个什么样的属性。

说白了就是这么一个意思对吧,然后那大家可以想象说诶我既然提到光线,又提到他传播中带的能量,那这个是不是就要和我之后说的这个路路径追踪,正确的这个所谓正确的光线追踪时间方法有关系,是就是这么回事。

这就是为什么说radiance是一个非常非常重要的概念,通常和光线在一块讲好,那咱们看看啊,radiance是干什么的呢,vance定义大家直接就看就可以看得明白嗯,radiance是什么呢。

是呃power,然后这中间又不用看了对吧,power per union,per projected unit area,这就有意思了,他这个是是什么呢,是说power在在在单位立体角。

并且在单位的面积上有多少,那说起来意思就是说我这个power我要做两次微分,一次是跟立体角相关,一次是和这个投影过的呃,投影过来的这个这个立体角度有关系,呃投不是投影过来的这个呃面积有关系对吧。

它是两次的微分,一个是单位立体角,一个是单位投影面积,诶,那这样就是说我可以把它写成这么一种形式对吧,那那些看起来就变得越来越复杂了,原本说我这个power power什么。

还是一个对我们说intensity是power power sangle,我们说irradiance是power per jan area,然后呢这里是radiance。

是power persuit on the angle project area,嗯那所以说它更复杂,那怎么理解呢,大家看这里哈,就是说就是说我们考虑一个呃单位面积,然后他可能有一个朝向对吧。

它和这个光不一定是正好朝向对吧,我们说投影面积吧,就是这个道理诶,有一个这个呃单位的一个一个一个一个微小的一个面板,然后呢从某个从某个这个呃呃方向上啊。

然后他从这个面然后往这个方向上再辐射出某一些能量诶,这个听上去很有道理的对吧,就是说我确定一定的这个区这个区域,然后呢它会往某一个确定的这个方向呃,也就是这里的一个立体角d,我们应该去辐射能量。

哎这个这个听上去是是确实是对的,因为什么呢,比如说这个面他可能往各个方向都会辐射能量对吧,那我们要研究这个面往一个方向辐射能量会怎么样对吧,是一第二,那这个面本身它的大小有关系对吧,它这个这个面本身大。

那它这个往各个方向辐射的东西就多,那这个面本身小辐射的就少,那所以说我们考虑一个某一个确定的微小的面和某一个确定的方向,那么这两个都在一块考虑,那这里大家就会发现诶这里就好像和光线很有关系了对吧。

这个光线呢肯定也是从某一个很小的这个表面被辐射出,然后它会往不同的方向去这个辐射,那所以我们通过这种方式来定义它,好,那没问题,咱们回到定义上来啊。

这个power produangle for project unit area,好,那么咱们这里呢可以继续往下去理解,那么radiance这里越理解呢,就会发现它和之前的概念就越有关系。

比如说大家看这里对吧,这个概念咱们刚刚说它是微分两次诶,但是呢我们刚才说irradiance就是power project unit area呃,然后他和这个radiance差距不远。

intensity是power perslide,angle和radiance离得也并不远对吧,那我们可以通过这个他们两个的定义以及radiance自己的定义。

我们可以把radiance和前面两个量联系起来,怎么说,就是说radiance我可以理解成以radiance personally的angle对吧,因为ance本已经这个按照这个这个这个这个面积。

已经相当于除以了一个面积,然后我再出一个soliano,那可不就是radiance嘛对吧,那所以radiance同样道理我也可以理解成是intensity,per project unite area。

没问题哈,这这两个量分别都是说这个我进行一次的微分,然后radiance是两次,那我把另外一次做了就就可以了,但是呢这么做虽然简单,但是它给了我们很多的启示,比如说我们看第一条,我把主播。

就比如说啊我们看这个irradiance,irradiance是什么呢,是什么呢,就是说这一点这个这个这个小的这个da对吧,收到的能量对吧,然后然后这个irradiance呢。

就是说这个能量我要往某一个这个solid某一个方向去扶手,然后就是说我这个能量本身可能会辐射到各个不同的地方,但这个能量往这个方向去辐射,会辐射出多大的强度来诶,这跟我们刚才那个解是一样的对吧。

就是说我们刚才说这个就是说这这一个小的这个这个面积上,然后他接受的能量往某个方向辐射,诶这里我们就就就可以解释这么一个问题,然后呢反过来道理是一样的,就是我们可以理解成什么呢。

理解成是就是说我从一个一个方向,然后打到一个这个这个小的面上面去对吧,然后这个到达这个面的时候,然后他应该会是有一些能量,然后这个能量是什么,这个能量就是irradiance对吧。

然后这个irradiance本身呢,如果我考虑来自这个环境中四面八方不同的方向的能量,那我自然可以得到说我这个da总共收到了多少能量,但我现在考虑说我就考虑从某个方向进来的能量。

被这个这个da收到了多少,那这个概念就是所谓的radiance对吧,那所以radiance跟radiance的区别就在于是否有方向性,能,说白了就是这个意思对,那也就是说我考虑从一个方向过来。

并且被dna收到的能量好,那这里就是incident radiance,就是我们考虑入射过来的,那么刚才其实已经提到了哈,就是说关于这个呃一个一个面发出去的能量诶,也是可以这种类似理解是什么呢。

我们就考虑说这一个小的面,这个小的面呢,然后如果我考虑这个呃它的intensity,他这是什么意思呢,就是说这个这个这个很小的面,它会往各个不同的方向去这个发出能量。

然后呢就我们知道intensity怎么定义的呢,intensity是每一个立体角上的能量是多少,那我们现在就看它往这一个确定的第omega这个立体角上去,它是有多少的intensity。

诶这里我们就我就可以通过这种方式来解释,就是这个da呢它它是往某一个方向辐射出去的能量,然后然后我们用intensity的这个方式来解释,那也就是说啊,我们现在等于是把这几个概念放在一块儿去去这个理解。

这样的话也体会他们的不同,也体会说这个我们用两种不同的方式来解释,radiance到底能给我们什么样的物理意义,好吧,那也就是说啊我们一个说的是这个呃入射进来。

那这个我们用的是就是所谓从单位某一个方向啊,它的周围接收到的能量是多少呃,那我们这个用irradiance和radiance的关系可以解释,那如果一个小的面辐射出去,往哪个不同的方向去诶。

我们可以用这个呃这个呃intensive方式来解释,确定这个intensity是五王哪个不同的立体角区好,那这样一来就是不管怎么样吧,就是说把这个radiance啊,我们要这个考虑成两个部分。

一个是一个很小的面,一个是一个很小的范围好吧,不管是这个进来还是离开啊,这个都是一样的好,那么关于这个呃概念,我们就把它放在一块儿了,那么这里呢尤其要讲到一点,这个这个概念比较重要。

就是说这个irradiance和radiance这两者用得非常多啊,然后就是说我们为什么同行学上,我们这个花这个这个呃大力气去试图去理解这个事情呢,那咱咱们这个很快就可以看得到。

说我们为什么要定义他们俩之间的关系,那我们现在看看它到底什么关系好吧,那irradiance是什么呢,irradiance其实就是说我这个da他收到的所有的能量对吧。

不是不是这个相当于power po unit area嘛对吧,就是某一个小范围他收到的能量是多少,哎那就可以,那么这样呢嗯就是说对于radiance来说,它又定义的是什么呢。

他说的就是说啊我还是看一个很小的这个范围,他会收到不同的能量,但我就考虑他从某一个方向进来,然后能让dna收到的能量诶,也就是说irradiance我们刚才其实提到了对吧。

radiance无非就是在irradiance上增加了一个方向性,那咱们可以把这个式子写出来,写出来什么呢,写出来就是说啊我我这一个小的范围,然后他收到的这个能量呃,然后我这当然可以写成一个这个呃。

就是这个ering的形式,我也可以把它写成这个radiance的形式,就是说它从某一个方向进来对吧,某个方向它的radiance是这个l,然后还有这个面积本身它有一个朝向cos theta。

然后乘以cos theta,然后考虑这个立体角,就是说从这个立体角地欧米伽来的立体角度,所有的能量诶,我是可以通过呃这个嗯通过这种方式诶,把erradiance和radiance联系起来。

然后我可以把这个式子整理一下,整理一下怎么做呢,我两边分别积分,两边分别积分之后得到的结果就更好理解了,那就是就是我们刚才说的意思啊,这个e p什么呢,这个p点就是它在这个点他所收到的所有能量。

就是嗯从每个方向过来的能量,把它积分起来,所谓积分就是求和道理是一样的好吧,这个这个这个很好理解对吧,从这个呃da收到能量,那自然就是说da从每一个可能的这个方向或者立体角进来的能量,求和加起来。

那就是这么简,那这样一来呢,我们就把irradiance和radiance联系起来了,好吧,那当然了,这这块内容相对比较麻烦哈,然后就是说这块特别涉及到概念刚刚介绍,然后这个这个就得需要这么理解。

这个还得回去,比如说大家在之后再好好体会一下这是怎么回事,但是不管怎么样吧,就是irradiance和radiance,这中间差的是方向性,这点就够用了,咱们之后就可以看到这个怎么来定义它。

那咱们之后就是立刻要给大家介绍的这个概念,就叫做b2 df,用的正是这么一个概念好吧,那咱们看看是什么,br df是什么呢。

叫做by directional reflectance distribution function,那么说的就是双向反射分布函数,这个非常非常复杂的一个这个概念啊,他当然他有自己明确的物理定义。

然后他叫这么个名字,那咱们看看看它到底是干什么的对吧,那咱们还是沿用刚才的这个思路,刚才我们说这个呃irradiance是什么呀,是是来自四面八方的这个radiance,咱把它记起来对吧,就那么回事。

那现在我们试图用这种方法来理解一下反射到底是什么,那那咱们想象一下反射,那当然是咱们讲,比如说有一根光线打到一个镜子,然后它会这个反射到某一个方向去,哎如果这个光线打到某一个这个漫反射物体。

它会往四面八方都会去对吧,那我得有一个函数得能描述它的这么一种性质,那这个性质怎么描述呢,那我就描述成诶,我从某个方向进来,并且反射到某个方面上去。

这部分能量应该是多少诶那我觉得如果有一个函数能够定义这个概念,那就不错,那也这也正是b2 df做的事情,他会告诉你有多少能量,如果从某个方向进来,它会往不同的方向去怎么样去分散。

就是说不同的反射方向上会分布多少能量好吧,然后那我们这是这个从对反射的理解,我们来说这个b2 df到底是什么意思,那咱们马上在正式来说,但在这之前我们先想象一下说这个反射到底是怎么回事。

为什么有反射这么一个概念对吧,那我这个光进来之后,我打到一个物体,然后呢呃它它就这个被弹走了,改变一下方向对吧,这是一种理解,另外一种理解,我们也可以把它理解成什么呢。

理解成说啊光线达到了某一个物体表面被吸收了,被吸收了,然后吸收了之后再从这个物体表面再把这部分能量给发出去,这当然是可以的,经过一个中间过程,对不对,我们这么理解,那如果我们能这么理解的话。

那这样的话我们就可以用我们所学的irradiance和radiance的知识,来解释反射,那么大家看,那么这个这个反射呢,首先我们得有一个这个光线达到这个物体上的某一个位置上面去对吧。

我们就假设说从某一个这个立体角,然后呃进来某一个这个能量,然后然后这个达到一个小的表面叫做da好吧,那么我们看从欧米伽还来的radiance啊,就是就是l对吧,radiance,然后它会达到这个da上。

那我们说这个radiance它本身这个这个考虑的是什么呢,考虑的是这个呃能量,嗯嗯就是每每立体角每单位面积对吧,那如果我现在就限制好这个单位面积,它收到多少来自于这个立体角度能量好。

然后呃会被这个这个小的这个范围所吸收,然后吸收了多少,我再把它原样的这个发出去,然后相当于入射的radiance会在这里转化成能量,也就是power,然后这个power又会辐射到另外一个方向去。

就是这里的这个这个出去的这个radiance,所以我们通过这个能量呢,我们可以把这个radiance啊,这个入射和出色的给联系起来,那咱们现在看对于这个小的块儿来说,它接收到多少能量呢。

就是说我们单考虑从某一个方向来,他接收到多少能量呢,那自然就是说考虑某一个方向,它的立体角,它的radiance,然后这个他们把它撑起来之后,我就可以得到这个这块接收到的这个以radiance是多少。

没问题啊,就是说这irradiance这里,然后这个嗯它会被转化成这个radiance再出去,然后就是说这个这就是这部分这个反射出去是有,是这个到底是怎么来的啊,是这个意思,那现在就有这么一个问题了哈。

就是说我对于这么一个小块儿,我知道他从某一个方向接收到了某些能量,然后我知道他要把能量都给辐射到四面八方去,那我不知道他往这个方向辐射出去是有多少能量,那么我们现在就定义一个这个一个函数。

专门来描述这么一个概念,就是说啊我考虑单位呃,就是微小面积da,从某一个微小立体角dm一个i接收到的irradiance,然后会如何被分配到这个各个不同的立体角上去,然后这里其实就是一个什么呢。

一个比例就是说啊我对于任何一个出射方向,我算出来它的这个这个radiance,然后我就除以这么一个小块儿接收到的radiance,这就是b2 d df的定义。

他会告诉我们这个这个表面如何把一个方向的收集到的能量,反射到另一个方向去,那大家看到正是这么一个比例啊,就是说这个小块收到的redients我们是可以算的,刚才已经说了。

然后呢就是它会辐射到各个方向都会有,至于它是漫反射的还是镜面反射呢,它它就是会有一个这个往各个不同方向上这个分配的一个问题,那么这个b2 tf就是定义如何去分配好,那咱们这个通过这个b2 df呢。

我这个定义我们可以把这个嗯这个小块对吧,收到的这个redients,我们刚才一直在考虑这个问题,然后我们不是说反射是两部分嘛,第一这个入射光会让这个dna有一个呃收到一个irradiance。

那我们就是说入射光的radiance,然后乘以这个呃它对应这个方向来的立体角,那就是入射光在它对应的这个立体角上,然后给这个da它的dience是多少好。

那么就等于把这个这个啊irradiance和radiance刚才的关系呃,把它给展开就会变成这么一个式子,好啊,那行那是这么回事,这就是一个b2 df它的正经的定义哈。

它就相当于是呃任何一个出色方向上的这个呃嗯radiance的微观,然后除以一个是这个叫什么呢,就是在入射点上,然后它的一个以radiance的规范,这是为什么用radiance除以以radiance。

道理就在这儿,就是刚才咱们分析的这么一个事情,当然这个过程会很复杂啊,然后嗯这块儿也就是为什么整个理解正确呃,radiosity这块不太容易好吧,然后但不管怎么样吧,就是说b r d f这个定义。

这是它的算是数学或者物理上的定义,但我们的理解其实好理解对吧,就是说啊我从一个方向进来,达到了某个物体之后,我我往这个不同的位置上,在不同的方向上去反射,然后它的能量分布相当于这个意思对吧。

那如果说它是镜面的,那我就不知道哦,它反射出去的这个方向上分布了所有能量,其他的方向,那只要不是镜面反射方向,都会有任何能量对吧,这就是镜面反射,他就会告诉我好,那我这个进来的这部分能量会被均等的分到。

分到这个呃各个不同的这个出去的这个方向上对吧,它就会定义这么一个事情好,那么b2 df讲到这里呢,就是说我们如果忽略它的这个推导部分啊,就是说它的概念其实就是描述了光线和物体是如何作用的。

那正是因为他们这么这么一个概念啊,他会决定说这个嗯物体不同的材质到底是怎么回事,因为就是b r d f这么一个像它定义了不同的材质,是这么个意思对吧,然后那行这个材质部分呢,或者说b2 df部分呢。

我们之后会再再给大家说,但是不管怎么样,到目前为止哈,然后这个概念就应应应该已经很清晰了,是什么意思呢,哎因为b2 df告诉我们的是哦,我从某一个方向上考虑它的入手啊。

然后这个它往某一个方向反射出去会是什么样的结果,那么我现在如果我盯着整个某一个反射出去的方向啊,然后呢我认为我看到了这个点呃,某一个这个着色点吧,它可以接受来自四面八方不同的这个光照。

那我们就考虑对于每一个入射方向啊,对于某每一个入射方向,那是不是都会对应这个入射方向着色点和出射方向这么一个b2 df,b2 df会告诉我它从某个方向进来的光反射到出射方向有多强诶。

那我就把每一个方向上的这个呃这个入射的光的强度,也就是它的radiance乘以b2 df乘以cos c的,这是他的之前的这个定义,然后呢我们把这个把每一个方向上,它对这个出射方向的贡献都给加起来是吧。

都给加起来,那我们就可以得到这个就是说这个点在所有可能的入射光下,最后反射到这个方向上,看过去是什么样的了吗,诶大家可以发现这个我们渐渐地就从这个这个物理概念的定义啊。

我们就可以总结出来一些这个真正的光线传播的规律了,像这里就是在考虑这个问题,所谓反射方程定义的是什么呢,定义的是说任何一个着色点,它在这个各个各种不同的这种光照环境下。

然后呢我们就考虑它是任何一个输入的这个方向,就是光照的进入方向,然后对我一个观测的方向,也就是出色的方向的一个贡献,我们把这个所有的这个入射入射的方向的贡献都给加起来。

那么自然就可以得到这个呃他最后应该长什么样,诶对吧,这个听上去很有道理,他这是就是一个怎么说呢,就是一个很通用的这种解释方法对吧,那这样一来大家可以看到它就是一个嗯我从某个方向看某一个着色点。

它其实就是一个积分,这个积积分考虑的就是任何一个不同的方向,我们一个i我去找寻找这个所有不同的这个方向,然后考虑它的呃radiance到这一点对吧,然后并且radiance进来了之后呢。

然后他会经过b2 df,然后会会被变成这个这个出色的radiance对吧,然后这样一来就没问题了,或者是什么呢,或者大家把这后面这这块这三项啊。

这个入射的radiance乘以cos a c乘以d那个i就变成了这一个小块,这个dna它收到的e radiance,那么它的radiance乘以b2 df,那就会变成出色的radiance。

然后再把它积分起来,那就对了,好,那所以说各种不同的理解,都是建立在这个大家对之前这几个概念的定义上面的,这么这个这个熟悉程度好吧,就是说嗯这么一来,不管怎么样推导,这就算完成了,然后这个反射方程。

这直接就告诉我们,对于任何一种着色模型,我们定义它的b2 df知道是什么就可以了,然后它的光线传播就是这么简单的来做,好吧啊,没问题,然后这就是反射方程,那咱们说提到反射方程之后。

我们就要提另外一个概念叫做渲染方程对吧,然后渲染方程之前我们先提一下有一个困难哈,什么呢,就是说啊这个反射方程告诉我们一个呃事情什么事情啊,就是说我要从某个点观察某个方向啊,观察某一个着色点。

那我得考虑它这个能够到达这个着色点的所有的光线对吧,可是这个能能够到达这个着色点的所有的光线,可不只是光源能够到达这么个点,如果我这里有其他的什么物体啊,比如这个着色点,其他的物体也会这个被光所照亮。

也会反射光,也就是说从其他的物体也有可能会有光被反射到这么一个点上去,然后也就是说我考虑的入射的所谓radiance啊,可不止来自于光源,也可能是经过一次反射之后,别人反射出去的这个呃这个radi诶。

那这个事情越想就越变得递归了对吧,那就是说我任意一个面,这他接收到光源的照射啊,它会反射出去呃一些radiance,那这些radiance又可以用来被照亮其他的面,对不对。

那也就是说这就是我们之前提到的,说光线在这个场景中可不止弹射一次,就是道理就在这儿对吧,任何出色的radiance都有可能作为其他的点的入射的radiance,所以它本身呢是一个唉这么一个呃怎么说呢。

叫做递归的一个定义方式,没错吧,就是说如果我只考虑光线就弹射一次,那自然就是说我这里的入射的光线,那只能是光源对吧,那如果说光线不止弹射弹射一次,那什么都有可能。

那咱们在之后对这个呃渲染方程的这个理解上啊,我们在再进一步理解,那咱们现在就直接先把这个问题放在这儿,我们知道好,它是一个递归的问题,有点麻烦,但是在这之前我们先做一个通用化是什么呢。

就是说啊我们要从这个反射方程,我们推出一个更加通用的东西,叫做渲染方程,嗯,是这样哈,在这个早期的这个中文翻译里面啊,rendering被翻译成绘制,所以呢早期这个渲染方程会被称为绘制方程这一回事啊。

一回事,那咱们刚才说这个反射方程考虑从任意一个方向来的能量,然后经过b2 df反射到了这个出色能量上去对吧,可能记起来,那么有一点啊,我们忽略了那什么呢,就是说如果这个物体自己会发光对吧。

那他怎么反射光,我清楚了,如果这个物体自己会发光怎么办呢,那很简单,咱们把这个发到光加上是不是就可以了呢,对答案就是没有问题,那在大家看这个框里面的,这里就是叫做渲染方程,说白了就是这个这个物体啊。

我们看到一个点,它往某一个方向出色的光,由两部分构成,第一它自己产生的,它自己这个发射出去的对吧,它可以从一个点往一个方向去发射出一个这个readings,第二通过别人这个这个过来的这个反射过来的。

或者说其他光源照亮的这些这些入射的这些这个radiance,导致它经过b2 df反射之后往这个方向去的radiance,那也就是说这这个这radiance分成两类,一类是自己发光的,一类是反射别人来的。

那这个就是很完备的一个定义了,没问题吧,就是说所有的一个这个都是嗯,就是说所有的光线传播都可以用这么一个简单的公式来总结,那也就是说这这个叫做渲染方程,然后这个渲染方程呢这里嗯就是呃这样吧,先说一下。

就是说这个渲染方程里面啊,我们会还是一样,跟之前那个呃不林缝着色模型一样,我们都假设所有方向都都朝外,都朝外,那就是说嗯嗯这个比如说欧米伽i,我们分明知道他是从别的地方打到这一点的对吧。

但是我们其实写作a还是写作向外,然后呢就是说我们考虑所有可能的这个入射来的方向,那就等于是从这一个球星往整个半球上这个各个不同的方向上去,那就是这个d omegi,那这个半球的定义就写作呃。

这个omega加号或者是这个h平方啊,都表示半球呃,当然这个半球的概念大家还记得吧,就是说为什么要用半球啊,就是说如果这个入射光线啊,注射光,比如有一个平面在这儿,它是反向向上的,冲着上面的。

那如果有一根光线从底一下打到他,这是不可能的,如果我们考虑这个呃反射的话,这种情况是不可能的,而这种情况下我们就会认为说这个贡献是零,这就是为什么以前我们这cos theta上面要加一个零哈。

max cos theta 0还记得吗对吧,我们忽略另外一半,就让我们认为下半球贡献过来的光肯定是零好吧,然后这里呢还有一个事情,就是说我们把在渲染方程里面啊,我们把之前那个cos theta。

我们直接给写成了这个呃法线n点乘入射方向一样的哈,这就是cos c的没有问题,然后就是说啊这样一来呢好,那就等于说我们通过一个方程就可以描述所有的光线传播,就是这么一个道理。

那就是说这就是我们之前定义各种各样不同的量对吧,然后各种各样不同的操作理解,然后非常麻烦,然后最终会推出这么一个结果来啊,但是最后发现这个是没有问题的,对的。

然后呃the rendering equation呢本身是当年很早期的时候呃,这个呃一个叫做卡基亚的人,然后他这个做出来的,然后非常非常厉害,然后就是说这一个渲染方程基本上是现现代图形学的基础。

可以这么说,然后就是说所有的光线传播都在试图解决这么一个这个问题啊,当然这话说的不对哈,就是所有的这个限制在物体表面上的光线传播,都在都是满足这么一个这个这个呃渲染方程的好吧,然后下面一步。

那自然就是说我们知道渲染方程,然后要怎么解,好吧对吧,那这个呢我们下一节课会来讲这个事情,嗯,然后嗯就是说嗯在这里呢,我们可以继续去说对于这个渲染方程的理解方式啊,我们马上就会说在这之前先多说一句。

这个当时我就说发明是渲染方程的嗯这个人,然后他写的这个论文的名字就叫the rendering equation啊,从这个角度上来看,就是现在来说大家很少能见到学术论文有这么短的名字。

然后就是说这个名字越短,事情越大对吧,这个事情是这个嗯这个这个世界上普世的一个道理哈,呃没问题啊,这个非常好,the rendering equation好啊。

然后呢到目前为止咱们就要试图去理解这个渲染方程了啊,那么在这里就是如果大家还沉浸在之前这个推导里面啊,现在已经没有必要了,就是说我们现在可以通过这个概念性的方法来理解它的,就是说呃我们有一个一个点呃。

我们看到的这某一个方向上,它的readings,那肯定是他自己辐射的readings,加上它反射的readings,就这么理解就对了对吧,反射的原因呢,它可以从任意一个不同的方向反射到这个方向上去。

只要我们能定义这个b2 df,告诉我如何从一个方向反射到另一个方向,就ok那行行没问题啊,这样的理解就会比较容易方便大家理解,说这个render equation呢到底是怎么来的。

那咱们先来看一看啊,就是说啊我们首先从这个反射方程上来看,假设说我们有一个点光源,那么反射方程式就是说我看这么一个点啊,我看这这,么一个点,然后我会看到多强的能量,那自然就是它反射过来的能量。

就是li从某一个方向呃,这个注射进来,并且经过b2 df反射到这个方向上去嗯,然后当然要考虑cos的,然后这部分能量是多少啊,就到这里已经是在反射方程的基础上加了一项了,加了一项这个自己的发光效好。

那么这里是对于一个点光源的简单情况对吧,那我们刚才说嗯这个这几个概念分别就是反射的光,就是自己发的光,到余弦好啊,这一,个点光源非常好理解,那现在假设说我们有好多点光源怎么办。

那自然就是说我把每一个点光源照亮这一个点,然后呃反射到我的我的观测方向上,诶它这个能量多少,把它加起来就可以了,那当然大家在生活中可以看到这个性质对吧,你开的灯越多,那当然就越亮。

这个事情是就是光线传播的一个叫做线性的性质啊,这个非常好的,我们可以把它加起来好,那没问题,现在我们更进一步怎么办,然后就是说啊我先考虑的是这不是点光源吗,那如果我有个面光源怎么办对吧,如果有个面。

光源,那我们理解是面光源可不就是一堆点光源的集合吗,那如果我可以把以前的一堆点光源加起来,点光源贡献啊加起来,道理是一样的对吧,那也就是说我就积分这个面光源所占据的立体角,然后考虑它所有覆盖的方向。

从这个方向来的radiance经过b2 df反射过去应该是什么样的,这个radiance出去对吧,唉这样一来就等于是我把这个面光源考虑进去了,对面光源这里用的思想就是呃面光源它其实就是点光源的大集合。

对,吧好然后所以之前求和变成了积分好,那么现在呢是这么回事,我们考虑说这个都还是光源,对不对,但是我们刚才说了,这个照亮到这一个点,它的radiance可不一定就是光源直接发出来的radi。

它有可能是其他物体反射来的radiance,那怎么办呢,那如果我有一些其他的一些什么物体也没有关系,那我们就考虑说这些物体它们反射出去呃,并且是正好会照亮这个x呃的这个这个radius是多少。

那同样我考虑这个物体覆盖的立体角,然后他过来的radiance是多少,就是从x prime到x对吧,这东西是多少,那其实我,就等于是把这个反射的物体或者反射面就给当成是光源了。

这样的话它们没有什么区别对吧,我光源也是辐射出radiance,然后我的这个反射面也是反射出radiance,对对对,那对于这一点来说,它是一样的,来来做这个渲染方程。

但是到目前为止我们其实就已经知道了,好我这一点它往某一个方向上辐射出去的,radiance,它是依赖于其他的点辐射出去的radiance的,也就是说这个就是我们刚才所说的这个递归过程对吧。

那么我们这么理解的话,有一个什么。

好处呢就是说我们可以把它写成一个简单形式,在这之前啊,这就是当年这个渲染方程,它对应的这张图啊,当时渲染方程可以支持光线弹射多次,然后我们就可以看到,而这里可以看到一些这个反射或者阴影之类的东西啊。

应该是反射啊,没问题,就是说当时这个跨时代的一个一个一个这个发明吧。

这么说好,那我们刚才说啊,就是说我们把这个问题理解成递归的,有一个什么好处呢,是说啊我从某一个点我看向呃,我从某个方向看向一个点,我不知道我看到的是两面是多少,我不知道,需要解对吧。

那从其他的物体反射到这一点的readings,我自然也不知道,我也需要解,那其他的项目其实都知道都知道什么呢,知道任何一个物体它是怎么发光的对吧,我可以提前定义光源,那我可以定义这个物体不同的材质对吧。

各种就是说这个物体是defence的呀,还是glossy呀,specular啊对吧,我这些都可以定义好,那也就是说对于这个式子来说,大家看这边有有有这么些像有这么一些像里面不知道的。

就是说各个物体反射出去的呃,或者说各个点吧呃反射出去的呃,radiance是多少,好,那没问题,那在数学上,呢就会这个有一些简单的简,这个怎么说呢,表达方式可以把这个复杂的这个式子给写的稍微明白一点啊。

就是就是这么一个情况,所以我们可以通过一种简化的方式把这个式子写出来,就是说啊我这l l不就是相当于我在两个不同的位置呃,辐射出去的这个这个radiance嘛,那我两个不同位置我就用uv。

然后辐射出去这个呃这个radiance呢我就用l吧,那就是l u等于什么呢,等于e就相当于发出来的能量在,就是就是说我看的这个这个所谓着色点,它自己发出来的能量加上从其他的这个,物体的表面。

然后通过b2 df把这个从其他物体的这个这个反射,也可以反射到这来的这个radius反射到这个呃位置上,反射到我们当前看的这个设定point的位置上。

然后这个会有会有多大的这个呃能量反射到我们观察的方向上,而这里方向所有方向都已经忽略掉了,好吧,那就相当于是我们把这个式子通过了一个数学的简写,把它写成这么一个积分啊,然后变成这么一个积分。

这是干什么的,当然这个这个中间这个过程有很多省略哈,就是为什么可以这么写啊,ok那嗯就是说我们现在,是试图要去理解这个这个渲染方程到底怎么回事,我们才会做这种简写的啊,然后不管怎么样啊。

这里就是一个简写的渲染方程,甚至呢我们还可以更进一步再把它简写一下,简写成什么呢,我们把这个b2 d f啊,连着积分什么东西,我们都把它写成一个这个某种这个操作或者叫算子,这个在数学上有严格定义的啊。

但是在这里咱们就直接说了啊,就是说写成什么呢,我也不管什么uv了啊,我就是就是说我对于所有的这个物体,它辐射出来的所有的能量,然后我把它写成说这个是等。

于是这个光源所有的光源辐射出来的能量加上这个什么呢,加上这些辐射出来的能量,被反射之后的能量对吧,这样想,那咱们可以这么写,就是说对应上面这个式子来说啊,我们把这个积分写成乘积形式,写成k乘l。

然后呢这左边写成l等于这个e加kl,所以现在就等于是我是一个呃,咱们回到前面这个式子哈,整个渲染方程其实说白了就是说我们把它简化成一个简写的形式,就是这个l是我们要算的东西,等于e发辐射出的呢。

就是说这个光源本身发出能量加上k乘以l就是,相当于这个反射这个k我们可以理解成是反射操作符,可以把这个辐射出来的能量反射掉哦,那就是这些了,那我们写成这个形式要干什么对吧。

我们这个这个这个这个写写写这么一个一个一个式子干什么,然后就是说首先来说这么写是对的啊,就是说中间这个大家觉得难,是因为这种你忽略了太多东西,就是说到底我们为什么怎么可能能把一个积分给写成一个。

这个这个乘积形式是吧,就是说不管怎么样,他这块就是说肯定是可以这么写,我们这么写呢,方便能理解,怎么理解呢,那咱们看一看,就是说l等于e加kl,我们要解l对不对。

说白了就是说我们这么写呃的目的最终是为了解渲染方程,也就是得到我观测出来,就是说任意一个方向看,看到这个场景,然后我呢看到什么,那这就是他最最终出来的这个这个l是什么对吧,然后我要解的就是l。

而这个l是一个递归定义的,l等于一加k l那这个怎么办呢,我怎么把这个l解出来呢,唉大家会发现啊,我可以通过数学上的一个变化,我认为数学非常变换怎么做呢,就相当于把这个kl移到左边去,我把l给合。

在一块,那我知道l那就等于i乘以ii就是identity,就是这个就是这个单位矩阵对吧,然后我可以写成i减kl等于一诶,然后怎么办呢,我再把这个一呃这个i减k啊给移到右边去,给它移到右边。

就相当于是用e是除以i减k,那就等于l诶,那我发现这样的话,唉我其实就可以解除l了对吧,哎我把这个i减k,然后这个求一个逆就可以就可以这个解除l,但是这里就是说啊写成这么一种算子的形式。

它的聪明的地方聪明的地方在于什么呢,再者说这个算子本身啊,它是这个它同样有这,种类似什么呢,类似泰勒展开的这种性质是什么呢,比如说大家想象哈,比如给你一个函数,比如说呃这个就对应这个函数吧。

如果咱们写成一减x然后分之一哎,我们是可以通过开了展开,把它写成什么呢,把它写成一加x加x平方加x3 次方,就这么展开唉,然后我们发现这个a减k这个求逆他们虽然是矩阵,但它也有这样的性质。

它可以写成i加上k加上k平方加k3 次方一直加上去,唉然后我们再把这个外面乘的这个e移项一下都给乘进去,然后就是说我们做了各种各样不,同的操作提这个算词,最后其实就是为了得到这么一个形式。

就是说中间困难一些,但是这个形式最后挺简单的,l等于e加上k e加上k平方e我们说刚才k是干什么的,k是反射操作符,对不对,然后就是相当于是我们可以把我们最后看到的这部分能量诶。

就是我看到最后一张图分解成分解成什么呢,分解成哦,我直接看到光源会看到什么,加上我这个光源辐射出来的能量,经过一次反射之后,我会看到什么,再加上光源辐射出的能量,经过两次反射之后会看到什么。

然后多次反射,也可以,那这就是自然而然是对于一个这个光线传播的,这个这个所谓弹射次数的一种分解,那如果光线一次都不弹射,直接打到人的眼睛里,这就是我直接看到光源,如果光线弹射一次。

我看到的东西就是这个直接光照对吧,光源达到一个什么物体,然后打到你的眼睛,然后如果光线弹射两次,我们看到的东西就叫做间接光照,当然三次四次更多了,那就是就是更多的这个这个间接光照,那么间接光照。

比如说光线弹射两次,什么是,反射啊,比如说咱们看一个镜子哈,嗯假如从眼睛出发,打到镜子弹射一次,再打到它反射出来的物体又弹射一次,再连上光源,弹射两次呢,这里就是说反射本身也就是一种间接光照。

哎这没问题,也就是相当于是啊我们通过我这种分析啊,相当于是把这个呃渲染方程拆成这么多项诶,我们自然而然就可以就可以得到一个说,我对这个不同的这个呃弹射次数的一个分解,那么在这里呢就是为什么要这么说。

是因为这么说就可以给大家介绍一个概念,叫什么呢,就是说我们的呃全局光照的概念,那我们刚才说光线弹射一次得到的结果叫直接光照,光线弹射两次得到结果叫间接光照,那么光线弹射这个叫什么呢。

就是所有不同的光线弹射次数全部加起来,这个得到的结果就叫做全局光照,那就是说啊全局光照不是等于间接光照啊,而是这个直接和间接光照的集合,好吧,这么小好,那么另外一个角度上来理解这么一个这个这个式子哈。

呃怎么看呢,就是说我们看这个光栅画可以做什么对吧,我们之前说,光栅化可以干什么呢,可以说把物体投影到这个这个屏屏幕上,然后我知道这个光这个光源的位置,我可以作所为着色,那着色我做的是什么。

就是这个直接光照,那当然我光源自己我可以直接投影到这个屏幕上来,对如果我可以看得到光源的话,那也就是说我这个呃光栅化能够告诉我们的光线传播的内容,其实就只有这个零次和一次的弹射。

那后面的部分就是光栅化比较难做的,我也,不是不可能啊,也不是不可能,就是说可以做的,然后嗯但是比较麻烦的内容,就是说这就是说我们另外一个理由说,为什么我们要用这个光线追踪的方法,然后来解决光线传播问题。

因为它可以很容易地做后面的部分就是间接光照的这一部分好,那么这就是对这个这个渲染方程的一个理解方式哈,就是说呃它中间的这个最那个部分就是最困难的部分吧,就是说把这个写成算子形式。

把这个光线传播啊写成算子形式,并且通过这一个数学的方法让它展开,然后就是得到这么一个结,果那咱们这个经过这个复杂的这个这个呃数学部分吧。

咱们看一看这个一些稍微直观一点的例子,然后呢这里大家看到的是诶,我得把我移动一下。

稍等哈,好,我们回到好啊。

没问题,那这里大家看到的是什么呢,看到的就是直接光照,就是不管你光源是什么样的,就是你光源直接能够达到的地方,那就是有颜色的,你打不到的地方就是黑的,比如说你现在站在一个走廊下面。

这个光呢他肯定沿直线传播,它一定不可能打到右上方这么一个区域,那么就是说直接光照能告,诉我这么结果结果,那么如果我把这个一次间接呃,这个对没错没错,一次间接光照,也就是这个光弹射两次部分引起的间接光照。

加入这个直接光照之后,我就会发现哦,这个p点现在它就变得亮了,我就可以看得到它了对吧,没有问题,也就是说我们刚才看到的是直接光照,现在是直接光照加上这个间接光照,ok然后呢那我们还可以让光线弹射更多次。

比如说这个光线再多弹射一次,也就是说我考虑光线在场景中弹射三次,这里two bounce global ination,意思就是说我考虑这个这个两次更多的啊间,接光照,也就是说我会考虑光线弹射一次。

两次和三次,然后总共的这个呃全局光照的效果,那我可以看到这里变得更亮,没问题啊,然后那我可以再再加上若干次对吧,呃再加上两次,总共五次弹射啊,然后它的这个全局光照是长这样更亮了。

然后这个p点现在清晰可见,而且有一点啊,我回去一点回去一点,然后大家会看到这个怎么回事,注意到这个灯没有对吧,那如果说我这个考虑这个光线总共弹射三次啊,然后这个灯这块看起来是完完全全是黑的。

这里当然是应该是会有个玻璃哈,然后如果我考虑光线,它是四次,这个光这个就不再是黑的了,怎么回事啊,如果有同学问问这么个问题,很简单啊,这个呢就是说呃嗯就是说这个光线啊,如果弹射只弹射三次的话。

它这个只够从你的这个这个摄像机进入到这个物体里面,它出不来,就是它得经过若干次这个这个弹射,它才能够出来,很简单,你想象一个玻璃球至少得弹射两次才能出这个玻璃球对吧,这个道理就是这样。

如果说他的这个玻璃本身是双层的,那就是说经过两次弹射才只能进去,再经过两次弹射才能出来,对,吧这样讲就是说这里是有道理的哈,就是说不是说突然亮了,这出现了一个问题啊,没有这个问题好。

那么这里呢就会发现四次它就更亮,那如果八次它就更亮,但是就是说啊没有那么明显了,大家可能会发现对吧,没有这么明显了,然后呢如果16次他又亮了一点点,但是又是一样没有那么明显的对吧。

那这样一来就是说啊啊我现在问这么一个问题哈,如果我真的能做无限次数光线的弹射,最后的得到的结果会是什么一种可能性,a它会收敛到某一种亮度之后,就不是不会再出现特,别剧烈的变化,基本上就是这么一个亮度了。

二是这个这个这个呃它会一直变量一直变量,一直到最后出现类似于镜这个叫什么呢,就是就是说你的呃就是胶卷上出现的这种过曝的效果,就是最后变成全白啊,就是说这两个结果哪一个才是真正可能出现的情况呢,对吧。

像呃这个时候我相信大家应该都知道应该是a对吧,这是肯定的,而且因为我们实验这个基本已经看到了对吧,从八次到16次基本已经没什么变化了,再往上面去应该就不会再有变化对吧,那从另外一个角度上去。

理解这个自然界也没有这个事情发生,对不对,大家看到所有的这个自然界中所有东西都是全局光照对吧,都是全局光照,那么那么大家也没有见到说会出现说我一直照就会变得越来越亮,这种情况,然后对吧会出现这种情况。

那么呃就是说自然界也是告诉我们,最后这个全局光照一定会收敛到某一个这个亮度呃,会有这么一个情况,然后为什么会这样呢,咱们之后再学这个路径追踪的时候,然后也会把这个问题解决掉,对另外一个有同学反映的对。

这是能量守恒的道理,就是说能量,可是不可能一直增加的,当然了,我刚才提到这么一个事情的时候啊,同时也可以解释另外一件事情,我说如果是相机的话,你对着一个场景一直这个保证它的这个这个就是快门是开的。

然后会出现什么现象现象,这一定会出现这个最后出现过曝的现象,对不对,然后这个没问题,这反映了什么呢,这反映了咱们一开始定义这个辐射度量学的时候,说我们要考虑能量,考虑单位时间,其实是有道理的对吧。

然后就是说我如果一直按着快门,然后就是说让它一直曝光,然后就会越来越亮,越来,越亮这个是对的,没有问题,因为它积累的能量时间是越来越长越来越长的好吧,这这是两个事情啊,就是说好啊,那这样一来呢。

就是说我们把这个相当于全局光照的概念,这就引入了好吧,那么之后的问题就是怎么样去解这个全局光照的问题,那么这一节课我稍微给大家提一些,最最最最简单的这个这个基础知识吧,很快就可以说完。

然后嗯下一节课咱们说正式去想办法去解这么一个呃,全局光照的这么一个方程,或者说就是解这个渲染方程怎么做对吧,然后我们会发现哦这个路,径追踪其实就是一种在解这个全局光照,或者说嗯渲染方程的一种方式。

那咱们今天这个给大家说一点什么,说的就是这个简单的这个概率论回顾好吧,然后为什么要用概率啊,这个是因为下节课我们就需要用到这个知识啊,然后咱们看一看吧,这个概率论很简单的对吧,概率论说的都是随机变量。

然后随机变量是什么对吧,随机变量就是一个这个呃可能取很多值的一个数对吧,然后随机变量呢它的这个分布又是什么呢,是说这个随机变量啊,可以这个取某些值也有一个大的概率,取另外一些值呢有一个小的概率对吧。

然后这个没问题,然后这就是这个这个随机变量的意思,那咱们举个例子啊,比如大家看一个这个骰子,一个骰子六个面对吧,然后这123456点,然后正常大家认为这个骰子的这个就是你摇骰子的话出现的呃。

任何一个面向上的概率都是相等的对吧,也就是说出现这个一在上面,或者说出现六在上面都是一样的,概率都是1/6对吧,然后就是说呃这是一个最简单的这个这个随机变量,和它的这个概率分布的概念好吧。

就这个随机变量,可以取123456,并且它们出现的几率都是1/6对吧啊,这个简单,然后呢那我们说提了随机变量之后,那肯定就要提这个概率啊对吧,那么随机变量可以取不同的值。

并且呢它会以不同的概率去取不同的值,比如大家看右边这个例子对吧,这就比如说有四个不同的值吧,然后1234这个随机变量取这个二这么一个数字,它的概率就挺大的,然后它比这个取一的概率也要高出一倍来对吧啊。

这个挺简单的好吧,那么没问题嗯,这样一来呢,就是说我们总结一下这个随机变量,和它的概率之间要满足一个什么样的属性,首先呢概率肯定都是这个非负的,然后然后就是要么顶多不出现吧对吧,不会出现负的。

并且呢我们刚才说为什么骰子这个摇出来,这每一个面都是1/6啊,因为所有的概率,所有的可能性你都把它加起来等于一对吧,那所有的概率加起来得是一,那不可能更容易了,那就是说对于概率来说。

咱们知道这些差不多了啊,然后嗯这个骰子咱们刚才说每一个都是1/6对吧好,那咱们继续就是说啊对于这个随机变量来说啊,呃还有一个重,要的这个呃概念叫做期望啊,然后这期望是什么呢。

期望其实就是说我不断去取这个随机变量,然后我然后求他们的平均,这个就是就是期望对吧,这是我们这个课上这么理解,没有任何问题啊,然后就是说呃这是什么意思呢,就是说啊我取任何一个值都有一定的概率。

然后那么我问这个我如果我就取一次,我期望我就是说希望能够取到某一个什么值,就是这么一个意思,那咱们看现在的这个情况啊,就是说呃对于这四个不同的这个选择,每个选择呢都有都有一个这个值。

后每个选择都都对应一个概率叫做p i那么它的期望怎么算呢,很简单,然后把这个所有的这个这个这几个不同的选择啊,全加起来就可以了,那这就是这个变呃,这个嗯期望的意义好吧,然后这是一个很简单的事情对吧。

然后比如说啊咱们咱们看一看,对于一个这个还是一个骰子,一个骰子呢它可以取123456对吧,也就是说它的值可以是123456,然后呢它的概率是多少呢,它的每一个值的取值的概率都是1/6,所以它的值。

123456分别乘以1/6,加起来就得到这么一个东西,然后期望是3。5,非常正确的事情,因为123456嘛,中间的值正好是3。5,这就是他的期望对吧,那我们说这个事情是为了说什么呢。

是为了引入我们后面的一个概念,而这个概念呢就相对麻烦一些,就是我们说在连续情况下,我们如何去描述变量和它的分布,那这个其实概率论上也会涉及这个事情对吧,就是大家如果学过的话,会没有任何难度,怎么说呢。

就是说啊我们刚才说一个这个随机变量,它的取值可以是,一些离散的只是说一些一些固定的这些值,但现在呢我们说这个变量可以取,比如说这里啊,大家看这么一个呃分布啊,我可以取-3~3里面的所有的值好吧。

然后呢取任何一个变量的概率是什么呢,这里说清楚,就是说啊这个取任何一个变量的概率是说呃呃任何一个位置哈,任何一个位置它周围取一个很小的这个这个微元,然后呢然后我这个取这么他呃怎么说呢。

就是说呃这个值它周围的这一段儿,然后如果往往上连线,我会连出一个类似梯形的东西来,也就是说嗯就是说这,一段在这个曲线下形成的这么一个面积,这个叫做概率,对应到这个前面的概念是什么呢。

就是这个就是这个不同的这个条形,它的面积就是大家可以想象这个条越来越多越来越多,然后它就会变成一个这个每取一个值,它都有一个很小很小的范围,但对应一个很细很细的一个一个一个调上去啊。

就是说我们看这么一个函数,这么一个函数,它本身它的这个y的这个坐标就是它的纵坐标并不表示大概率,而是什么呢,而是说你任何一个点取它周围一定的,比如说任何一个点叫x周,围我取一个dx。

然后我往上连它的左边接右边界往上连线,形成一个区域,这个区域里面的面积,这个才叫这个概率,那么这条曲线叫什么呢,这条曲线就叫做概率密度函数。

叫做probability distribution function,简称pdf,那这个pdf这个概念非常非常重要,在在咱们这个呃之后的这个蒙特卡洛积分里面啊,很快就要用到这么一个概念。

就是说我有一个随机变量,然后呢这个随机变量可以取一些连续的值,并且它取的概率密度是符合这个这个px的好,那么这个概率密度满足一,个什么性质呢,咱们回顾刚才这个呃离散的随机变量。

所有概率加起来等于等于一对吧,那同样道理给你一个概率密度函数,那所有可能的取值,然后它对应的这个概率呢就是整个一个这个概率密度函数,它下方形成的面积,然后这个就是说把概率密度函数按照完二次积分起来。

结果等于一,就是说呃原本是求和等于一,现在是积分等于一,ok然后呢就是说嗯他的随机变量的一个期望怎么算,我们记得刚才这个离散的随机变量,它的期望怎么算呢,就是任何一个取值乘以它的这个概,率。

然后把加起来求和,那现在呢同样道理,任何一个取值x乘以它的概率密度,并且把它积分起来,就可以得到它的期望,哎所以这个概率是一样的,没什么问题啊,挺简单的这个这个课程啊。

然后这个算是把概率论之前这块连续的这个随机变量,也也也这个分析一下,那么这个时候再多说一句,就是说我们刚才考虑的是一个变量,他的这个这个分布对吧,以及它的期望,那么如果我现在考虑一个函数函数呢。

它本身这个它是一个随机变量的函数,就是这个随机变量满足一定的这个pdf就,是概率密度,然后呢它这个我有一个另外一个这个函数y它是x的一个函数,那么我现在问这个y他的这个期望是多少呢。

哎这里就是其实就是求这个函数fx的一个期望,很简单,只要是求期望,不管是什么,我就把这个这个值啊fx诶去乘以它的概率密度,并且积起来就这么回事,嗯那也就是说啊呃如果你有一个随机变量的函数。

那么我也可以可以算出这个函数得到的值,它的这个这个呃他的期望是多少,好,那就没问题了,那就等于说哦我可以找一个这个随机变量,并且任意对它进,行操作,只要它是一个函数。

然后呢呃我最终我就可以得到最后得到的结果,他的期望是多少,哎咱们说这个是为了做什么呢,是为了做之后的这个哈哈这个这个嗯蒙特卡洛积分,那咱们今天我觉得就说到这里就可以了。

就是说最简单的这个概率论的一些内容,然后我们回顾一下啊,就是说今天说了什么,今天从辐射度量学开始说,非常这个困难哈,嗯嗯辐射度量学首先引入了一些概念。

特别重要的概念是以radiance和radiance,并且咱们分析了说这个这些概念和之前的这些比如intensity,他们这些概念,是怎么样联系在一起的。

特别的是说irradiance和radiance,它们两个之间的关系,能够告诉我们这个物体是如何这个反射不同的光的对吧,然后呢从这个概念开始,我们就可以呃写出这个这个定义反射的一个函数叫b2 df。

并且呢我们可以把这个反射出来向某个方向去的光,我们可以写成是这个考虑所有入射到这个呃入射点上的这个光,然后经过反射,然后形成了一个这个出射光,然后这么一个积分对吧。

然后渐渐的我们就通过这种方式可以定义出来反反射方程,并且再加上这个呃更通用的,这个能量产生的这一项对吧,然后我们就可以得到渲染方程,然后我们又提了说渲染方程怎么样去理解。

通过算子的方式可以把它给展开成不同的这个光线,这个经过反射的次数,然后通过这么一个这个不同次数的展开呢,我们就可以理解到说嗯,这个呃我可以把光线的传播拆成这个不同次数的光线传播。

比如说零次就是光纤直接看到光源一次就是直接光照两次或者更多,就是间接光照,直接和间接就是全广场,那么这就是基本上来说我们这节课的主要内容,当然这个概率论呢,这块咱们下节课立刻就会用到。

下面就是怎么样通过概率的方法去解这么一个渲染方程,真正能够得到这个这个最后我们看上去能够得到一个正确的渲染结果,好,那没问题嗯,同样道理啊,这节课还是相当困难的。

然后就是说之后如果大家这个愿意这个更多的去理解,这这个还得花点时间去看好吧,然后下节课相对来说嗯怎么说呢,就是说呃就已经开始脱离这个我们说的这些物理的这些概念去了,更多的就在这个统计学上。

就是如何去做这个嗯这个对一个函数的积分呃进行求,解进行数值上的求解,我们要提蒙特卡洛积分,这也就是说啊,为什么渲染这个领域会比较困难,是因为它涉及的实在是太多各方面的知识,然后这个没有办法好吧。

然后就是说啊这一块呢这个我觉得只要这么按部就班,这么进展下来应该没有问题,下节课咱们就会讲路径追踪好吧,ok那没问题,这样一来,今天咱们就把时间再交还给技术秘书同学,然后啊ok哦是这样哈。

就是说我看到经常会有同学在这个之后去这个这个课后啊,或者中间会问些问题啊,有时候我来不及回答,像这些我,都希望大家能够在这个论坛里面去啊,就是说清楚好吧,然后这样的话我到时候能看到。

就给大家这个呃解释一下啊。

没问题好,然后那今天就到这儿吧,啊感谢各位同学啊。

ok好啊。

GAMES101-现代计算机图形学入门-闫令琪 - P16:Lecture 16 Ray Tracing 4 - GAMES-Webinar - BV1X7411F744

好这个课前给大家打个广告哈,这个hello,大家好啊,唉呀这是这么回事,大家应该在这个games的这个网站上,已经看到广告了对吧,这个是我的小伙伴,然后这个这个嗯这个孙琦教授啊,刚刚加入这个nyu。

然后大家可以看一看,好吧嗯ok啊,然后呢这个呃森崎教授和我一块儿啊,我们两个就是我们的战队的创始人,大家看右下角这个,这是我们人生第一次吃鸡,就是就是我们两人双排这个pop g啊,嘿嘿可以吧。

嗯没问题啊,然后这个今天这课真不容易啊,前面这个两天之前呃,事情挺多的,然后没忙得过来,然后这个这个这个深表歉意哈,然后昨天正好赶上这个,这个这个当年活动对吧,然后所以说咱们就拖到今天好,大家好。

咱们现在开始正式给大家啊,讲今天的这个内容好吗,然后今天是我们retracing部分的,最后呃一讲啊,然后讲完之后,然后retracing这部分就完成了,那么这一讲呢,自然是这个把前面咱们学的融会贯通。

然后可以做一个这个这个真实的这个嗯,渲染的方法就叫做蒙特卡洛嗯,路径追踪啊,这个是今天的主要内容好,那么今天咱们这就正式开始,在课前我们先宣布几件事情,一个是呢有同学反映前面这这这一节课哈。

就是上一节课呃,有点难啊,没问题,其实来说呢要说难,我倒是觉得没有多难,主要是大家不熟悉,前面说了这个概念之后,后面立刻就要用对吧,然后如果说概念这个定义,什么东西没有记住的话,什么errings啊。

radiance啊对吧,然后这个就比较容易搞混,但说白了其实就是对反射的一个这个嗯,基于物理的解释,就这么一个意思对吧,然后为什么要这么做,咱们之前就说了,是为了正确的得到光线传播的方式。

那咱们这一节课接着这个逻辑,那就是正确的实现这么一个,这个光线传播的方式,也就是正确的解除这个所谓的呃渲染方程,好吧,然后呃另外一点呢是确实这个图形学呢,我们这个呃也是需要用到这么一个概念吧,就这么说。

就是说以前的图形学,这个嗯不聚焦这个这个概念,是,因为这个嗯,只要不涉及到现代化的这些,这个渲染方式啊,其实用不着,但是我们既然这门课啊,就是说的是现代图形学入门对吧,然后这个既然要说这块。

咱们就把这个理论给说明白啊,这就是这块儿的道理,那咱们继续啊,关于这个大作业啊,很多这个同学来信这个咨询哈,就是说什么时候会啊,把这个大罪想法放出来,这个我们现在很快就呃,现在正在这个积极的制作中啊。

很快就会把这个想法给整理给大家,然后当然之前我们说过对吧,欢迎大家提出自己的想法,然后自己想做什么啊,没有任何问题,好吧好,那么呃今天这节课啊,大家可以看到我改了这个两个不同的描述。

第一呢我一开始觉得这个铺垫差不多了,应该挺容易,后来想想算了,然后这个应该算正常,然后现在我觉得你多少有点难,但是我觉得哈,应该比上节课要稍微容易一些,然后嗯在这个之后。

在这节课之后嗯就会变得容易很多啊,然后咱们基本上来说,这门课最难最难可能就到此为止好吧,那这是呃今天呢几个说的事情啊,那么上节课我们说了什么呢,上节课我们说了一个嗯呃这叫什么来着,辐射度量学。

对辐射度量学,radiometry对吧,本人说明白这个各种各样不同的概念,然后呢,我们说我们如何利用这个radiance和radiance,去解释反射问题,然后从反射呢。

我们就推出了一个可以描述这个能量,如何从一个方向,然后达到一个小的这个呃着色点上,然后再反射到另外一个方向上去对吧,然后这个定义呢,我们用到的东西叫做b2 df,从b2 df呢。

我们就可以这个进一步推出一个,叫做这个反射方程,或者嗯更进一步考虑到这个发光下,然后我们推出渲染方程,也就是得到正确的光线的传播方式没问题,然后呢嗯我们之后就紧接着说,我们如何去理解渲染方程对吧。

我们可以把它理解成一个递归的积分,但是我们也通过这个所谓算子的方式,可以把这个渲染方程呢,展开成这个不同的项对吧,然后嗯每一个项可以表示一一个嗯,就是说固定次数的光线传播的类型,也就是说。

我们可以把光线传播拆成零次弹射,也就是光线直接进入眼镜,那就是光源自己,然后一次弹射,那就是直接光照呃,那两次及多次,我们就认为这是间接光照,那么直接光照和间接光照加起来,就产生了全局光照这么一个概念。

好吧,这就是这个上节课主要的内容,然后当然我们顺便说了一下,然后概率论,当然我们这里用到的概率论相对简单哈,基本上大家知道什么的,这个连续型随机变量,然后它可以取不同的值对吧。

然后还可以按照一个这个所谓,概率密度函数也是pdf,然后一个各种不同的概率密度,取到不同的值啊,来咱们这儿,待会儿还会说一下,今天呢我们先把上节课,这个这个最重要的两个概念,然后开始我们说蒙特卡罗积分。

然后我们再说这个呃路径追踪啊,然后这是一系列的这个这个想法,然后咱们现在就开始看上节课呢,最重要的最重要,最重要最重要的内容就是渲染方程对吧,因为渲染方程呢描述了光线的传播方式,那么我们考虑任何一个点。

我们看到的它的这个radiance,或者咱们理解上看到的颜色吧,那自然就是它发出来的光,对不对,他自己发出来的光,加上它反射来的光对吧,那它从哪儿反射来的光呢,它可以从这个四面八方反射来的光。

所以说它这个可以从这个空间中的,任何一个方向,也就是这个米a i从任何一个方向过来,会有光,然后这个b r d f会告诉他,诶这个任何一个方向过来,反射到我的观测方向,就是这个米卡a到米卡o。

是有多大的能量对吧,然后把这个考虑进来,那么这个渲染方程非常好解释对吧,还是我刚才说的,我们看到一个着色里面的光,自然就是他自己发出的光,加,加上他从四面八方反射到我们,观察方向上的光,所以其实来说啊。

这个式子来说非常的这个嗯怎么怎么说呢,直观对吧,这个正是我们这个理解上的,这个我们如何看到的,看到物体对吧好,那这里就是渲染方程,那咱们今天自然而然就是要解决,这个渲染方程的计算问题,好吧好。

就是我们之前说呃关于概率的一些事情,然后在渲染里面呢,我们更多考虑的是连续性随机变量,那么离散的咱不说了好吧,那么呃离散型连续型的随机变量哈,我们说有个x啊,它是有随机变量。

然后呢他符合某一种概率密度的分布,然然后就是说我们看这里啊,这里这个有一个这样的曲线,然后这个曲线说明什么呢,这个曲线说明啊我任取一个呃,诶我任取一个随机变量x,然后呢。

这个x它的概率密度都符合这么一种分布,也就是说啊,比如说我取100次,这个x可能得有84,这x呢都集中在-11之间,因为这块概率密度大对吧,然后可能只有个两三次,集中在这个23之间对吧。

所以这个概率密度函数或者叫tdf,然后这是一个非常重要的概念,它就好像是离散型随机变量的概率,一个道理好吧,那么行,这个变量自己和它的概率密度函数好,那行没问题嗯,那概率密度函数。

说明了这个满足哪些条件呢,概率密度函数首先它得是正的,然后它呢积分起来是一,大家知道积分什么概念啊,积分就是相当于是考虑它的这个曲线下方,覆盖的整体面积是一,那这个道理很好理解,所有的概率都积积起来。

那就是所有的概率就是一对吧,然后我们又提到说,我们如何算一个变量的期望,然后这个期望呢,其实不管是离散的还是随机的,道理很简单,就是把它的值乘以它的概率或者概率密度,然后加起来或者积起来对吧。

在这个连续的情况下,就是说我们取任何一个这个x,这是它的它的值,然后呢在这个它的概率密度是px,然后我们把它这个乘起来记起来,这就是它的这个期望对吧,然后嗯这这为什么要提到这个呢。

是因为咱们下面一个话题,很快就需要用到这么多知识,那咱们来看我们现在呢要给他讲,给大家讲一个的积分方法,这个积分方法呢叫做蒙特卡罗积分,有时有有时候也是说是蒙特卡洛啊,中文无所谓。

嗯咱们就说蒙特卡洛积分,那蒙特卡洛积分,首先呢咱们了解一下这个,对不对,就是说嗯我们刚才一直在说呃,有一个这个这个呃随机变量对吧,然后他满足什么样的概率,那自然而然这个蒙特卡洛是要用到这个。

但是首先来说蒙特卡洛,他自己是为了解决什么问题,它是要解一个定积分,首先咱们把这个问题呃这个描述清楚,我们要干什么,给任何一个函数,然后你想算它的定积分从a到b,比如说给你的函数是fx。

它长这样这么一条曲线,我要算它的定积分,从a到b,那大家知道这定积分什么概念啊,定积分不,就是说这个这个函数,下面围的这个面积对吧,说白了就是说最后积出来是一个数,那咱们把这个事情说清楚呃。

就是说啊我们说的是定积分,就是说如果你有一个函数叫y等于x平方,好吧,然后呢你可以算不定积分,你可以把它算出来是1/3 x3 次方,加上一个常数,然后呢我这个这个通过不定积分,然后求他在这个a和b的值。

然后相减就可以解除这个积分是多少对吧,这是以前我们这个这个这个微积分上面,学的这个积分方法对吧,但是咱们这里说清楚,就是说我们现在呢,就是说假设这个函数比较复杂,比较复杂。

这个函数就是就像现在描述的这样啊,他不好解析的基础来明白了,就是说这样一来呢,就是说你写不出这个解析式,那这个积分怎么做呢,那我们就说这是一种数值方法,我最关心的就是嗯,这个积分出来的最后的值是多少。

我就要那最后一个数就是这么个意思好吧,咱们把这个事情说清楚,就是说我们不希望把这个什么解析式,算出来,我们不是解不定积分好吧,解的是定积分,最后就是一个数,那么怎么做呢对吧。

那这里就是说我们用这个蒙特卡罗的方法,然后蒙特卡罗他怎么做啊,很简单,咱们在讲蒙特卡罗之前,我们先回忆一下啊,咱们这微积分课上,其实提过一个所谓黎曼积分的概念是吧,不知道大家还记得不。

然后所谓黎曼积分什么意思啊,非常简单,咱们比如说这个a和b之间,然后每一份呢我取它的中间这个位置,中间的x啊,找到它对应的y,然后呢,我就认为每一份都是一个微小的,这个长方形。

然后我就可以把这个整个一个这个曲线啊,这个分解成这个呃,这就是整个这么一个这个曲线,下方的面积啊,分解成呃各个不同的小的正方形,长方形的面积之和对吧,那个是所谓黎曼积分,那么这里蒙特卡洛积分呢。

是另外一种积分方法,那咱们说他是怎么做的呢,很简单,它是考虑一种随机的采样的方法,怎么做呢,很简单,比如说啊他在a和b之间,我这我们可以随便取一个这个某一个数啊,比如说这取这个数呢。

然后我们可以找到它的这个对应的fx,也就是它的y值是多少对吧,然后我假设说啊,这整个一个这个曲线就是一个长方形,然后长方形它的高度,就是刚才我取的这个值,它对应的这个位置的高度,然后它的宽度就是a和b。

也就是说我用这么一个长方形的一个大小,呃,或者说面积来近似这么一个曲线下,围出来的这么一个面积,那我自然可以把这个过程,重复多做很多次对吧,我在a和b之间我采样了很多次,然后我每一次呢。

然后我网上这个找到它对应的,这个fx的位置诶,然后我就算出了一个这个长方形的,这么一个面积,那么我说啊我我踩上一次对吧,然后当然得到的结果可能不准,但是我我采用非常多次非常多次,然后就是说这个呃。

我每一次呢用的这个这个长方形,面积各不相同,然后我把这些长方形的面积我给平起来,那可不就能得到一个这个,相对准确的结果了嘛,对吧,那蒙特卡罗积分它的道理就在这儿,就是相当于啊在积分域内不断去采样。

然后这个呃,然后假设这个你采样采到的这个,这个x对应的y是多少,那整个函数你就假设它就是一个平的,然后是一个这个呃长方形,然后咱们把所有长方形的这个面积加起来,求平均没问题。

那啊这这就是说这个直观上的解释啊,那如何这个真正的去定义这么一个,蒙特卡罗积分的这么一个过程呢,那咱们先把这个问题说清楚,首先呢我们要解决的并积分fx从a到b嗯,最后值是多少,我就要一个数对。

那么他怎么做呢,他就是说啊在这个嗯你的积分域x嘛对吧,在a和b之间,我随机采一个这个变量或者说位置,那我们刚才知道这个,我们可以定义任何一种这个这个pdf对吧,概率密度函数,随便你用什么样的这个。

概率密度去采样对吧,这个嗯蒙特卡罗积分告诉我们的,就是这个积分呢可以近四成,近四成这个呃fx除以px,他们求和,然后或者说他们的平均好吧,然后就是说呃什么意思呢,咱们举一个最简单的例子啊。

咱们回头还会来看这个式子,那么我们举个最简单的例子,还是刚才的这个例子,如果说啊我想用一个最简单的办法,我在a a到b之间,那这样的话就说明我采样用的所谓pdf。

大家来看我采样用的pdf应该是各处相同的,所以它应该是一个常数,我们写作c,那么我们知道pdf在积分域上积分起来,那么这个pdf就可以解出来是等于多少呢,就是b减a分之一,那这个道理也好理解对吧。

就是说我这个这个pdf在a到b之间,积分是一pdf就是常数,那说明他的这个对应的形状,是一个类似矩形的形状,然后它的高度乘以这个b减a,肯定得等于一,那它的高度自然就是e减a1 ,除以b减a对吧。

那也就是说,那么我这样采样的这个pdf是一个常数,是b减a分之一好,那么我们现在用蒙特卡洛积分的方法,来算啊,蒙特卡洛积分需要算什么呢,需要知道这个fx和px对吧,那我随机采样。

然后呢呃蒙特卡洛积分说哦,我只要算fx fx除以px,他们的平均值就好了,那fx呃是多少,f x i它该多少是多少,那么p x i是多少,永远都是一除以b减a,那fx除以p x就等于fx乘以b减a咯。

那咱们把b减a拿出去,就是就是这么回事,那么这里就和咱们刚才的直观的想象,非常一致,什么呢,我随便取一个这个x啊,然后找到它的高度,然后找到它的高度乘以它整个的宽度,b减a啊。

然后这样就是一个这个矩形的这个大小,对吧,然后我把这些所有这些这些采样,它对应的这些各不相同大小的矩形,然后我把它面积加起来,这个除以n也就是求平均得到的结果,就是就是是对的对吧,是一个呃。

是一个对这个呃这个这个定积分的一个呃,估计没有问题好,那这样的话就说明啊,蒙特卡罗积分它有一种特殊的情况,这个采样的好吧,那么这个从一个更通用的角度上来说,就是说不管我对随机变量怎么样去采样啊。

我只要有一个这个满足的pdf,然后我采样出来的这个x,我用fx除以p x求平均,就可以得到对这个定积分的这个近似,好吧,唉这样一来啊,我们就可以得到呃任何一个积分,大家来看。

我对这里fx可没有任何要求啊对吧,然后就是说我这fx呢也许它比较好,这个这个解析的写出来对吧,然后也许说这个它比较困难,但是没有关系,蒙特卡洛积分我要做的事情,现在总结起来。

我只需要在积分域内以一个pdf采样,采样出来之后,这个样本它对应的这个fx是多少,对应的这个概概率密度p x是多少,两位除求平均就完了,就这么简单,任何的积分都可以这么做好吧。

然后这这是一个极其简单的这个,这个这个结论哈,然后嗯它好用在哪里好用再说啊,这个我们只需要对嗯a和b之间吧,就或者说这个积分域之间,然后我们只要能够以一种方式采样,我只需要知道我这种采样。

它对应的pdf是多少就可以了好吧,那么这里呢给大家说几点要注意的事情,第一呢这可想而知,对不对,如果我有一个样本,然后呢,我这样得出来的,这个这个估计它就非常近似,他有可能和这个最后的结果差的比较远。

对不对,然后就就比如说还是刚才那条曲线嘛,如果我就随便踩一个x,那它对应的高度它有可能任意的高度,我得到的结果就不准,那如果我取100个对吧,我取1万个,那这样他们平均起来。

结果就越来越接近他的真实的结果,那就说明啊这个n越大得到的结果越准,对不对,这是没有问题的好,那么诶这里有同学问说,为什么这个b减a没有了呢对吧,然后是因为什么啊,是因为刚才咱们说这个这个b减a。

是怎么来的对吧,得到的pdf是b减a分之一对吧,然后那个这也就是这个p值,永远是这个b减a分之一,那么这个f去除以b减a分之一,就等于b减a拿到外面去了对吧,是这个意思,也就是说啊,我们在这样考虑这个。

考虑这个积分的时候啊,对这也是蒙特卡罗的一个好处,我们不用关心它的积积分率是多少,因为它的积分率是多少,其实已经在这个pdf里面体现出来的,就是这么个意思啊,就是这么呃这这么回事。

然后大家再对照一下这个概念,然后我们这个一比较就知道了,那么还是总结起来啊,最重要就是说这个函数值,我任何一个点采样的,我得知道,另外一点是我采用它的这个概率密度,我得知道好吧,然后那这是一点。

第二点呢就是说蒙特卡洛积分有一个要求,当然这个要求很显而易见,对不对,首先我对这个对这个积分呃,它的积分域它是定义在x上的积分对吧,然后我不能随便找另外一个变量,比如说这个我这个采样一个z啊。

然后我这个用这个z来做这个这个这个,蒙塔卡罗的积分的近似,那是不对的,就是说我只能说我在这个x上积分,那我就一定得采样x,当然这个太简单了,但是肯定是这样吧,咱们还是想刚才这个这个曲线嘛。

那我肯定得在x上面这个放这些样本,对不对,然后如果其他的变量和x没有关系呢,肯定就这样,蒙特卡洛就不成立对吧,那我为什么要说这么一个简单的一个,一个邀请呢,咱们待会儿会看到好吧。

然后就是说啊就是说呃还是一样,莫兰卡罗积分,只需要在这个它的积分的积分率上,然后以一定的pdf进行采样,然后对每个样本算fx除px,然后平均起来就好行了,那这么一来,蒙特卡洛积分就已经差不多明白了好吧。

目的就是说去解一个呃这个定积分,我要一个值好,那么这就是蒙特卡洛积分,ok那么在讲完蒙特卡洛积分之后,咱们就已经有足够的知识储备,来做这个路径追踪了好吧,那这是头一次正式的引入这么一个概念。

叫pass tracing,那大家肯定是首先就会把这个概念,和另外一个概念立刻联系起来,ray tracing对吗对吧,我们之前上节课给大家讲的这个retracing,大家还记得全名吗对吧。

waited style retracing,那么和这个pass string有什么不同呢,那咱们从这里开始好吧,首先呢我们已经学过了,waited style retracing对吧。

waited style retracing做了什么事情呢,这个这个很简单哈,他就是个不断的去弹射光线对吧,在任何一次弹射的位置都和光源连一条线,大家还记得是这么做的对吧,那么它是怎么弹射光线呢。

咱们把这个事情给总结起来好,那有两种情况,第一,当你一个这个光线达到了一个这个所谓,specular的物体上,也就是说这个光滑的这些物体是玻璃啊,这些东西对吧,这种情况会发生什么呢。

它会沿着镜面方向反射,或者是沿着这个这个折射方向去折射对吧,这是一,第二呢,如果你这条光线达到了这个所谓,漫反射的物体,那这条光线就停了,它就不再往前走了,对不对。

这就是我们说的waited style retracing,他在做的事情,但是呢,我我们现在回过头来,来思考这么一个问题啊,这这两个事情真的对吗对吧,那那那我们就是说啊,可以给大家看一看一些例子。

这个不一定是对的,那也就是说啊,我们要提出这个所谓past tracing,就是路径追踪,正是为了解决,说之前这个waited style retracing啊,里面很多这个非基于物理的。

或者说是不正确的一些方111些问题,咱们逐步的把它给改禁掉,然后来,然后来产生我们的所谓路径追踪的算法,是这个意思好,那么我们来看一下啊,这个we did style嗯,光线追踪。

那它到底是这个做了什么措施对吧,第一呢就是这一个,大家可以看到这里有两个茶壶啊,然后左边这个呢就更像镜子,对不对,然后右边呢就更像这种正常的这种,这种金属,然后它是类似于一种磨砂的,这么一个感觉哈。

就是这个意思,那么这里呢给大家定义一下这个概念,就是说对于镜子这种反射,我们认为这种材质叫做嗯这个specular啊,或者叫pure specular,是这个意思,就是说它完全镜面,就这个意思。

你一根光线打过去,一定沿着这个这个呃这个镜面反射方向去,这就是为什么这个壶身上啊映出了这个嗯,它周围的环境光的样子对吧,没问题,然后呢,右边这种呢稍微有一点这个镜面的感觉,但是它它又有点糊。

这种东西呢我们就管它叫做loss的材质,就是它没有那么光滑,它它多少也光滑,它能够产生高光对吧,没问题的,可以看到高光对吧,然后但是它没有镜面那么光滑,这种叫glossy,那么我们现在问这么一个问题。

wait down retracing,他这个这个这个,如果说我在任何一条光线啊,打到这个糊的时候,然后它沿镜面反射,那它是不是只对这个镜面的材质是对的,而对于glc的材质,它是不是就不对,没错吧。

因为你这个这样想啊,他为什么看上去是糊的呢,就是因为你光线,比如说你的这个眼睛啊,然后往这个往这个壶身上去,打出一条光线来,然后它应该是会被反射到这个它的镜面,反射周围的一小片区域对吧。

它多少有点粗糙程度,所以按说啊,你不能说就是所有的这个光线,达到这种specular的物体上,它都会这个这个嗯就是glc的物体上,它也会沿着这个specular的这个方向去走,对吧,这是不对的。

所以说嗯这一点呢就是它的问题一,然后另外呢这里给大家这个说一下啊,这个这个模型是非常这个重要,或者说非常有名的一个模型吧,这个模型叫做utah teapot,这是最早在这个犹他大学然后产生的。

然后大家都在用啊,然后图形学里面这个这个茶壶,这个用得非常多,这个就是源于这么一个模型啊,you time tpot好,然后呢那咱们现在来说另外一个问题啊,就是我们刚才已经说了。

waited style这个retracing,它对于glc的材质,如果还是认为我的反射光是研制静电,方方式反应方向反射是不对的,好,那咱们现在来看第二个问题。

第二个问题是什么呢,就是说啊哎waited style retracing,说什么事情啊,我一根光线打到defuse的物体上,我就停了,然后我直接做他的这个这个协定,对不对。

我从来不把它往后面去继续继续去打,但是不对的,大家想象一下,我一根光线打到漫反射物体,为什么叫漫反射,射到各个不同的方向上去,对不对,那所以说漫反射这个你慢慢慢慢是物体啊,因为一根光线打到它之后。

它仍然还是会反射的,它仅仅是会反射到不同的方向上去而已,对吧,那这里我不考虑不考虑,就意味着这个,比如说这个漫反射物体和漫反射物体,它们之间的这些光线你就都考虑不到,然后咱们看这么两个例子。

这两个例子呢自然都是用pastry得出来的,然后限制了是这个直接光照还是全局光照,那咱们可以看到一个很明显的现象啊,这个场景只有一个光源,这个光源呢在最上面,在上面的话,按说他的光只能往下打,对不对。

那所以说它的天花板肯定是黑的,如果是直接光照的话,它肯定是黑的,但是呢我们知道这个光线啊,其实可以弹射很多次,那比如说我打到这个地板之后,这地板又会反射到天花板上,然后再打到我们的眼睛里。

我就会看到天花板上是亮的,哎,所以说这里右边这个全局全局光照的现象,诶这个才是我希望看到的结果,而还有一个明显的一个特点在哪里呢,在这里大家看到我的鼠标这个位置啊,诶为什么这个面是红的呢。

诶大家可以可以想象哈,对于直接光照,这个面显然是接触不到光源的,所以是黑的,但是呢比如有一些这个光的这个传播啊,比如说这个光打到这个红墙之后,然后又被反射到这个面,然后又打到我们的眼睛。

这是肯定是存在的,对不对,那所以说这就说明了一个问题,就说明啊我们这个光线达到defe时候,绝对不应该就停住,而是应该真正的让它往四面八方都去散射,开对吧。

那这也就是说waited style retracing,做不来的一个事情,那么呢这里再停下来给大家讲两个事情啊,第一我们说的这种现象,所谓这个红颜色的这个这个面上啊,慢慢热面,然后这个呃不就是说。

原本应该是这个接触不到光的漫反射面,然后他却反射出了另外一个漫反射面,上面的颜色啊,这种红颜色,这就好像说这个这个嗯,这个这个红色的面啊,它的颜色诶,跑到了这个呃黑色的这个面上对吧,好像是这么一个意思。

所以人们形象地把这称为这种现象,称为color bleading,所以bleed就是流血啊,就好像流血一样,然后这种不同的颜色,它会这个呃流到它这个面外面去啊,这个概念,然后大家看这个绿色也一样啊。

绿色大家如果看这个面的话是可以看到哦,它也会反射出这个绿色的这个这个颜色好,所以color bleeding效果是肯定是一种,这个全局光照内的一个一个效果好吧,这是一。

然后第二这个模型是一个非常有名的模型,叫做这个corner box,然后康纳box呢,就是康奈尔大学,他们做出来的一个一个东西,但这个模型呢它是真实存在的,就是说它真的有一个实体的box。

就是它里面放了两个这个小的,待会儿给大家看啊,就是说这个模型是真实存在的,然后它的这个3d的模型也是存在的,然后他们两个非常非常像,然后咱们之后再说好吧,然后嗯,这个模型被广泛的用来测试。

各种各样不同的所谓全局光照效果,为什么,因为太明显了,没有全局光照,天花板就是黑的好吧,然后这个全局光照又挺难,因为完全这个场景,然后呃这是这么一个场景,那所以说呢,我非常希望国内什么时候能诞生一些。

这个这个各种各样的模型,然后以国内的大学命名对吧,那就非常厉害了啊,那当然了,这是后话啊啊行,那么我们回到这个问题上来啊,我们为什么要说pass tracing。

那是因为waited style retracing有问题。

那咱们paration就要解决它对吧,那咱们怎么解决,那首先啊,我们意识到waited style reacing是错的,那么谁是对的,咱们上一节课,说到这个这个各种各样的辐射度量学。

正是为了提供这么一个标准,就是说我们知道谁是对的,谁是对的呢,渲染方程是对的,因为它与它是完完全全按照这个物理量,然后推导出来的,它的概念到底是什么对吧,他就是说告诉我们看到的这个物体呃。

这是从某一个点我看到的光对吧,它是要么自己发出来的,要么是从四面八方反射来的对吧,所以它是对的,那咱们如果要正确的算出来,这个我看到一个这个物体或者一个点啊,它的这个光是多少,那自然而然。

我们就需要正确地解除这个渲染方程,那咱们从现在开始啊,我就不在这个这个正式的说这些,各种各样的物理量了,比如说这个呃所谓radiance啊,或者什么对吧,我们最后计算出来的肯定是radiance。

我们就直接拿光啊,能量啊,这种这这种,这随便说这种这种方式来说好吧,然后嗯我们来看哈,我们为了解这个渲染方程,然后看一下这个渲染方程本身的结构,首先呢它是一个积分对吧,他这个不考虑这个发光像的话。

还有右边这一部分很明显是一个积分对吧,我要考虑来自于四面八方的光照,那我就要考虑这个整个对这个半球的积分,对,那么呃另外一点呢,我积分的时候呢,我还会看到这个,从另外的一些方向进来的光线。

这些光线有可能是直接的光照,也有可能是其他物体反热量的观众,我们不做区分对吧,那也就是说啊,这个问题其实是一个递归的问题,那我为了算这一个呃,我我从另外一个点到达这个点,它的光照是什么。

那我就得算另外一个点,它的这个在那,在那一个点又要解它的渲染方程,对不对,所以他说他本身就是一个递归的定义,那么这是两个最最严重的问题好吧,然后嗯我们现在来挨个儿解决它,那么如果我要。

我要解决这个第一个问题的话,首先啊我要解的是一个积分,我要的是这个积分最后的一个值,那这个事情听起来是不是非常呃,这个熟悉对吧,因为咱们这个课前刚刚讲过这么一个概念,用什么方法能够这个把一个这个积分。

通过数值方法把它给计算出来呢对吧,那大家肯定立刻就可以想到啊,不管是一个多么复杂的积分,只要它是积分,我觉得定积分对吧,我就肯定可以用蒙特卡罗方法来做,那么这就是说我们首先采用蒙特卡罗方法。

来试图解这个渲染方程,那这就是我们的出发点好吧,那咱们来看嗯,首先呢我们为了解这个渲染方程,它可能非常复杂对吧,它又又有多次这个这个弹射,咱们先不考虑这么复杂,我们先考虑一个简单情况啊。

这个简单情况大家可以看到,这里是我这个灵魂手绘啊,这个我自己画的考虑这么一个简单场景哈,简单场景,然后我们就考虑这一个像素,或者说一个着色点,就考虑这一个点,我考虑这一个点,它的直接光照是什么。

我们把这个说清楚啊,对于这个场景来说,有可能有其他的这个物体会挡住光对吧,然后呢对于这个场景来说,它有一个相对较大的这个面光源啊,然后这个场景咱们把它说清楚,然后呢我们这个考虑各不同的方向啊。

就是说我们这个渲染方程里面呢,它涉及到说我的观测方向,那就是说从这个呃着色点到这个这个呃,摄像机它的方向欧米伽o对吧,然后他各个方向进来的这个光,呃层面上的好吧,然后呃。

呃这个我ω个i就表示了各个不同的这个,入射的方向,当然了,这个渲染方程里面啊,这个我们考虑的都是嗯怎么说呢,就是说所有的方向还是都考虑向y好吧,这个跟之前我们做这个不灵风,是完全一样的。

然后就是说这个虽然我知道啊,光线到这一点,它方向肯定是从光到这一点,但我们都认为啊,是从这个呃着色点出发往外打,狼人概念上的事情啊,只要知道有这个事情就可以好啊,这一个点它的直接光照是什么。

这就是我们要解决的问题,好那咱们来看啊,对于这个点来说,它的直接光照这个点咱们假设它不发光啊,然后这个嗯他的直接光照的结果,那自然都来自于四面八方的入射的这个光,这个这这四面八方入射的这个光照的强度。

对吧,那么呃从这里开始呢,然后我们也去忽略这个嗯,就是渲染方程里面的这个发光项,然后我们就不再区分什么,渲染方程和反射方程了,反正你就差一个发光发光下,咱们就以这个反射方程,这样我这样写好吧。

然后呢我还是这个把它说成这个渲染方程,是大家知道就好好吧,那么对于刚才一个着色点来说,它的呃,这个呃就是最后我看到他的这个radiance啊,对吧,看到的光就是四面八方来的光,然后合并二df作用了之后。

反射到我们的观察方向上去对吧,任何一种米a i反射到欧米伽o,然后我我把这个整个一个这个球面积,分起来就可以了,好那这就是我们要解决的这个问题,然后我们既然说了是直接光照,直接光照说明什么呢。

直接光照说明了,说这个这个li也就是说四面八方进来的光,就只有可能是光源自己带的对吧,那不可能是其他东西反射过来的,我已经限定了是直接光照对吧,那也就是说如果说啊,嗯这个来自于某一个方向,它是光源诶。

那它这个li就对应了这个光源,那个那个v位置的这个呃li是多少,那如果说呃从某个方向过来,然后嗯这个并不是光源,那就是零,直接就是零,因为我们要考虑的就是就是直接光照对吧,不考虑多次反射,那么行。

那咱们现在回头来看啊,这个式子看起来很复杂,但其实它就是一个积分,它就是在半球上,在不同的方向上的一个积分,那咱们就可以用这个蒙特卡罗方法,来解对吧,那我我们刚才说蒙特卡罗方法来解,怎么解呀。

那就是说啊在这个半球上对吧,我不是考虑它的在半球上面的积分嘛,也就是不同方向上的积分,然后我在不同方向上采样,也就是说我随机选一个方向对吧,然后随机选一个方向,那就是我的随机变量。

那个这个这个就是随机变量,那么它对应的fx和pdf都是多少,这就是我们要算的事情好吧,那咱们来看一看啊,就是说我们考虑这个着色点,假如说叫p点,然后呢,然后他的这个radiance,从这一点反射到这个。

这个camera的radiance是多少,那咱们要算这个积分,那么算这个积分呢,我们回忆一下这个蒙特卡洛积分,为了算一个积分,我在积分域上进行采样,得到一个样本x然后呢我对于这个x来说。

我算他的fx除以pdf x对吧,然后求平均就好了对吧,那那说白了就是就是这么个意思,就是说我们完全可以把它给迁移到,咱们现在要做的这个事情上了,我们要解这个函数怎么办呢,这个函数里面我被积函数是谁。

就fx是谁,现在fx是谁呢,就是里面的所有东西,那里面的所有东西,就是这个呃,这个呃和这个b2 df和这个东西对吧,那谁是pdf,那pdf,那自然涉及到说,我们如和对积分域进行采样。

那在这里就是如何对半球进行采样,这里呢给大家一个最简单的采样方法呃,我认为我采用到任何一个,这个在半球上的方向,任何一个方向的概率密度是相同的啊,那相同的,那咱们就可以把这个这一个pdf给解出来。

这个pdf不管你的方向是什么,它是个常数,它是二派分之一,为什么是二派分之一呢,这个就不用说了对吧,因为我们已经知道,比如球面的面积是四排,那半球面的面积是二排,那么这个这个整个半球。

对应的立体角是二排,然后呢,这个呢它的这个这个这个呃,那他的这个pdf在所有立体角上,积分起来的是一,那pdf自然就是1÷2派了对吧,那所以说这样一来就没有问题,那那咱们来看啊。

我们要用蒙特卡罗方法来解这么一个积分,现在我知道fx是多少诶,px我也知道是多少了,那这说明什么,那这就说明我们已经可以把它给写成一个,这个蒙特卡罗这个这样一种呃积分的方式,也就是说我不断地进行采样。

我每一次呢取这个一个omega诶,在这个半球方向上,我取一个入射方向欧米伽i,然后呢我这个对应的fx,我就把这个这个算出来没问题,不管它多复杂呗,反正我知道了,我们应该l了嘛,我把这些量都给得到对吧。

然后就是从这个方向上来的光,然后乘以这个b2 df,也就是b2 df,从这个入射方向给它,扭到这个这个出射方向上的这个b2 df,然后加上这个cos的衰减,没问题啊,这就是fx,那么pdfx是多少呢。

这个呃对吧,就是常数1/200好,这样一来呢,咱们就可以这个呃,把这么一个积分给变成一个简单的求和,或者求平均数对吧,那这个非常简单的,咱们这个嗯,从这个式子我们可以看出什么来,我们可以看出到此为止。

我们就已经有一个算法了,已经可以算出来任何一个着色点,它的出色的radiance是多少,怎么说呢,那就是说我们可以把这个所谓嗯,对这个着色点p,然后这个它的这个出射方向我们要o。

然后这个我我要算他四面八方的这些,这个呃光源呃,对他的这个点的直接光照的贡献诶,我就可以写成一个算法了,哎那咱们看一看啊,对照着这个式子,咱们可以把一个所谓着色,这个算法给写出来,怎么写呢。

我在任何一个点对吧,任何一个点p,然后考虑它往我们干o出来啊,这就是我要算的l o对吧,然后我在在这个着色点,往这个往这个半球上啊,发出n个不同的方向,我我去选n个不同的这个这个方向吧,采样嘛对吧。

然后呃按照某一种pdf来,那么我一开始先把这个最后的结果,初始化出来,对然后是零零,然后呢对于我任何一个选中的方向啊,现在求科室里面了哈,任何一个选中的方向,然后呢我就是说我考虑说从这个p点。

然后往这个方向去连出一条光线来,然后我连出一条光线来,这个呃我我我就可以看到呃,这里这是这么回事啊,就是说哦有同学反映,这里概念上有一个冲突,比如说pdf啊,是的pdf这里用p不合理哈啊行吧。

就是说这里是p点啊,涉及到着色点,它肯定都是p点,涉及到pdf,就是我要除以一个什么什么什么东西,呃这个是pdf,这个之后我想办法稍微改一下吧好吧,但是没有关系啊,就是说我们现在考虑的就是这个积分。

怎么解出来的,就是说我现在已经随机选了一个方向了,好现在我往这个方向上去打出一根光线的,那如果说这根光线打到了光源,那么我就把这个整个一个这个,求和式写出来,大家可以看到哈,整个一个求和是达到光源。

我自然知道光源的li是多少,光源辐射出多少,这个这个radiance对吧,然后b r d f也知道了,因为我入射方向,出射方向我都知道了,br df肯定知道了,那cos也知道,没问题。

而这样的话呢就是说这个呃呃好,这样的话我就等于是啊,我把这个式子就已经写进去了对吧,然后这个呃到此为止结束就就就就就完了,没问题啊,这个真的是到此为止,这就结束,这就是pass tracy好吧。

然后然后但是啊这里这里别忘了,这个我们考虑的简单情况啊,就是考虑直直接光照是什么什么情况对吧,然后呃这就是为什么说啊,我们这个光线如果达到了一个这个光源诶,我们要把它的这个光源。

对这个从那个方向到这个着色点,它的贡献算出来,如果打到不是光明,咱不问根本不问,我们只考虑直接光照对吧,那这里就结束了,非常非常简单对吧,直接应用这个蒙特卡洛积分,然后呃我们可以看一下啊。

就是说我们作为这个直接直接光照,这一部分就是这么简单做完,但是我们可以更进一步怎么做呢,就是说我们要引入间接光照对吧,就是说我们这肯定,最后要解决的是全局光照的问题,直接光照好做,比如说你看啊。

这里我们打出一根光线达到了一个点,然后如果说这个它往四面八方去,他正好它采用了一个采样到一个方向光呃,这个不一个这个呃面光源对吧,然,后那样的话它是有贡献的,然后如果说它采用到的这个嗯。

达到了其他物体啊,就是说我选一个方向,这个弱者方向达到了其他物体诶,那这个时候我应该怎么考虑对吧,我们之前是不考虑,那现在来说啊,如果从这个p点我随便选一个入射方向,然后打到了q点,那我知道哈。

这个q点其实是有办法,把这个光反射到p点的,那我们说这个渲染方程原本说的,什么意思啊,就是说这个我从观察点看到这个p点的光,它其实是说这个呃任何方向过来的。

这个radiance我可没说一定得是这个这个光,源的rains或者反射出来的readings,咱们不区别对吧,那也就是说从q点到p点来说,我们也可以认为哈,就是说这个呃从q点到p点的radiance。

然后这里呢就好像是q也是一个光源一样,也会照亮这个p点对吧,那这个咱们之前这个上节课讲这个呃,这个渲染方程的时候,我们提过这个事情的意见对吧,因为呃我们认为反射面反射过来的,当然也是radiance。

为什么要和光源辐射出来的radiance,区分对待呢对吧,那我只要算出来从q点反射到p点,反射出来多少radiance不就行了嘛对吧,那么从q点到p点那反射出,了多少radiance呢。

这个时候我们就类比一下,这就好像是我们在p点去观察q点,然后算q点的直接光照一样,对不对,这个这个如果说我在这里啊,放一个这个相机诶,我我看向这个q点,然后这个时候这有一个这个光源诶。

我知道这个直接光照怎么算,那也就是说这个q点反射到p点的这个呃,radiance可不就相当于是在q点,我算出的直接光照是多少吧对吧,那这一点咱们看明白之后,就可以简单的在这个呃,我们刚才这个简单算法上。

加上这个一个这个分支,然后我们立刻就可以得到一个支,持全局光照的这个路径追踪算法了,哎怎么做的呢,咱们看啊,这里这个蓝色字,这是新加的新加的是什么啊,就是还是回到刚才这个p点上啊。

p点我随机往各个方向去打,如果打到打到光源好,没问题,我们该怎么计算,怎么计算,那如果说我达到的不是光源,怎么办,达到的是一个物体,那我们就考虑这个物体对应这个点q点,它反射过来的这个能量是多少。

或者说他的radius是多少,那这是多少,也就是在q点的所谓直接光照对吧,在q点以负i负w i方向看过去,它的直接光照为什么副w,我们知道从p点我往外选了一条方向,这是他入手的方向是欧米伽i对吧。

往外走的那那自然而然从q点来说,它就是负ei,往往这个负面来去的对吧,那行没问题,那就是说嗯,这里就相当于是,我们把这个q点的直接光照的结果,作为这个呃p点,它的这个呃过来的这个这个光照对吧。

那么这样一来呢,我们就写出了一个递归的算法,哎大家看到了这个着色,我给这个p点着色,涉及到我要如如何给q点着色对吧,哎这就递归了,非常不错,那这样一来的话呢,我们这个所,有问题解决,为什么呢。

因为我采样的pdf可没变,比如我往四面八方采,至于它达到的是光源还是物体,没有关系没有关系对吧,然后只不过它影响的就是说这个li,达到光源呢,它就是li嗯对吧,光源对应的readings。

那如果说我打到的是物体q,那就是物体q的直接光照来就行了,那这个问题就此是否就解决了呢,ok诶挡挡到了一点哈,我问的是这个这个现在是否就这个解决了,大家会会会这个觉得这个这不挺对的嘛,对吧。

这那么问题在哪儿呢对吧,大家有没有同学可,以可以这个现在就已经发现问题对吧,那这个咱们现在就开始给大家说哈,至少我觉得有两个问题,第一咱们来看,第一呢是说以这种方式来打出各种各样的,这个不同的光线对吧。

然后我又递归的来算,这样会爆炸,什么会爆炸,光线的数量会爆炸,诶怎么会这样呢,我们来想一想啊,这个情况第一个问题,那么我们有一根光线对吧,打到这个物体上,这是最早的情况,这么说啊。

就是说我考虑这个p点啊,它的直接光照是多少,然后我往四面八方打出了n根光线,假如说打出100根光线,n等,于100好吧,那这100根光线是不是都有可能,达到第二个物体对吧,达到另外其他什么物体对吧。

那么在另外其他物体上,我又要算它直接光照,那这100个每一个我再发出100个光线来,唉然后然后这这不对啊,这样的话不是等于100个变1万个,然后这样的话,这个这1万个我又打到了1万个不同的点。

然后我这每一个点又打出100根光线了,这不就变成了100万个吗对吧,那这就非常非常严重啊,就是说我这样做的话,我这个光线弹射的,比如说两次之后我就已经承受不住了,这,这个数量是绝对不可以这个接受的对吧。

然后然后这样的话那肯定有问题对吧,有问题,那咱们怎么解决对吧,因为我们知道我们这么做,就是说打出n跟光线来,然后他棒死多少次,那么最后产生的这个这个数量级啊,光线的数量级,那就是n的呃,这还得了。

那是一个指数的东西,指数的东西会爆炸对吧,我们知道这么一个事情,然后现在那那么我们肯定不希望他爆炸,怎么办呢,那回头来我问大家这么一个问题啊,key observation,就是说什么时候对吧。

这个n等于几的时候,我这指,数这样这样算才不会爆炸对吧,也就是说我原本说我在一个点上,我要我要往外打出这100根光线,这样的话,这个这样两三次它之后就会爆炸了,这个数量,那么什么时候才不会呢。

只有一个情况,只有一个情况,那就是n等于一的时候,因为n等于一的时候,一的多少次方,它还是一对吧,it所以说呢这就告诉我们说诶,我在任何一个着色点,我打出很多条光线,是不是不太好。

那如果我只打出一条光线,没什么问题对吧,这个n不就是我蒙特卡罗这个积分里面,算出来的这个这个呃需要需,要采样的这个次数,这个n谁也没说这个这个多大多小,我们之前说了对吧,n大了的话。

它是这个这个噪声小对吧,然后n小的话顶多噪声大,它还是对的,没问题,那也就是说,我们可以用一根光线来解决这个问题,那咱们稍微修改一下,我们刚才的这个算法变得更简单了,因为现在没有for循环对吧。

我要对任何一点进行着色,那我就随机往一个方向去采样,才让一个这个欧米i对吧,然后同样呢我往这一个方向,我打出一根一根光线了,如果这一个光线是打到了这个光源,那么我就这个,把它算出来。

把这一个这个这个样本的贡献算出来,然后最后求平均除以n啊,前面的那个除以n没了,因为现在除以一对吧,唉也就是说这就是他的这个这个得出来,蒙特卡洛积分得出来的结果没问题,那如果说这根光线达到一个物体。

那同样道理,我就在另外一个物体q上面,然后我在做这个着色诶,没问题,那这样一来呢,大家就会发现这个问题简单多了,当然大家这个早早就已经想到了对吧,那我n等于一,这是一个多么多么这个这个。

noisy的结果呀,对吧,那那那对吧,那怎么解决呢,对,吧那咱们这是后话,在这之前对吧,先给大家说一说,到此为止,这个道理,就是就是说我用n等于一,来做蒙特卡洛积分,这个就叫做路径追踪好吧。

然后然后呢这个如果我用的n不等于一,其实这是一个历史遗留问题,很很少有人在提这个概念了,分布式光线追踪,这个就是n不等于一,那就真的会出现爆炸,就一个变十个,十个变100个,100个变一件,就是这样。

就是说嗯对于路径追踪来说,就是n等于一,我们就管它叫路径追踪好吧,然后那为什么叫路径追踪,咱们看这张图也就可以看得,出来啊啊,当然这里同时也解决了这么一个问题,大家说这个我用n等于一。

这个结果造成非常大呀对吧,没问题,肯定的肯定造成非常大,但是咱们想一想,最后呢我们要的是一个像素,最后它的这个整个的这个呃,就是它的readings是多少,那穿过一个像素,可以有很多不同的所谓路径。

就是这个意思,大家可以看到这个红色的,表示一条这个光线的路径,然后蓝色表示一条,然后这个这个黑色的表示一条对吧,然后就是说这些所有的这些路径,都会穿过这个一个像素,然后这个像素最后它的readings。

是多少是这些路径求平均,对不对,那我只要用足够多的pass,是不是就可以了对吧,这样想,那这样的话就是说啊,嗯大家可以看到另外一点,我们都说为什么要管它叫pass,是因为他现在已经是就是说诶。

一个方向打出去之后,打到一个点上,然后这个点上它只会往一个方向去反射,对吧,它随机选一个方向去,它不再是一项产生一数对吧,那那那就太多了,所以它形成了一条连接,你的这个试点和这个光源的一个所谓路径。

对吧,这个就是所谓为什么叫路径追踪,就pass stration,就n等于一对吧,那么现,在啊我们既然提到这个事情,我们就顺便把这个regeneration,这个事情说清楚对吧。

我们最后是为了渲染一张图,然后呢我肯定是说我对于这个每一个像素,我要发出一系列的光线,然后在任何一个达到的点上,我要把它的这个着色的结果,给这个求平均算出来好,那没问题,那就是说呃这个怎么做呢。

那很简单,我的这个呃摄像机位置在哪儿对吧,摄像机位置,然后我要往哪一个像素去,打出很多不同的光线,那怎么做呢,在像素内啊,在这个像素里面,的位置,然后呢我们从这个嗯呃对。

对于我的任何一个这个选取的位置吧,然后我从嗯呃是连,或者说这个摄像机的位置,连一根光线,连到这个这个呃样本的位置上去,而这形成了一条光线了对吧,形成一条光线,如果我这条光线达到了这个场景中的,某个位置。

那么就要算这一点的着色,然后这样的话呢,就是说这个嗯我就可以算出来这一点了,着色看着方向啊,就是说这个嗯原本是从camera到这个样本,这么一个方向,现在应该反过来对吧,然后在这个达到了这一点算着色。

它的出色方向应,该是反过来从sample到这个camera这个方向好,那没问题,那这这里呢,其实大家看,这这里也算是一个这个蒙特卡洛积分哦,就相当于是我不是随机的,对这个呃。

像素里面取了很多不同的这个样本,产生了很多不同的pass对吧,然后就是说这些pass的最后贡献,我的这个呃除以n把它给算出来对吧,然后这个很简单,那每一个这个像素,我肯定这都这么做不就够了吗,然后呢。

我每一次我打到了这个任何一个着色点,我都用随机选一个方向往外面走好,那这样的话呢,我们就把这个所谓reination和这个着色,就联系起来对吧,诶那这样一来,这个所谓问题一咱们就得到了解决。

那么问题二呢,我刚才已经问了哈,就是说这个刚才那个算法啊,呃到目前为止对了吗,还没对,因为什么呢,因为它有一个严重的问题,因为他有严重的问题,大家看这里,我已经给他标出来了哈,问题已经标在这里了。

为什么呢,它是递归的,它递归怎么就有问题呢,是因为递归得有两个条件,第一呢,你要把一个问题可以转移到另外一个问题,没问题,现在原本是这个p点着色,变成了q点着色没问题,另外一个条件他得能停,的对吧。

那要不然的话这样想,这个这个算法是永远一直在往下进行对吧,因为他永远没有停的地方,我从来没有判断在什么时候,我应该直接return对吧,那也就是说这里就这就产生了一个问题,这个算法永远不会停对吧。

那这个算法不会停,那那那那那到底这个说明什么问题对吧。

呃因为肯定会有同学问这么一个问题,那在真实的世界里面,那个光线本身它的弹射次数它也不会停吧,没错吧,那就是说这种情况下怎么办呢,对吧,呃比如说如果我限制这个光源呃,这个光它弹射次数最多只。

能等于某一个次数比三次,那我得到这张图大家还记得吧,那比如说我这个我在限制说这个光,这个弹射可以是17次,那这样的话得到这张图,那么说如果我提前把这个这个这个光啊,限制在某一个这个弹射次数上。

这是不对的,为什么呢,因为这样做的话就是损失的能量啊,就是多次咱这个这个弹射的能量,你就没考虑,比如说我们回到三次啊,来对比这两张图,这是三次,然后诶这17次大家可以看到,比如说这个左边这个柱子上。

这块就非常明显,我把鼠标停在这儿啊,咱们再切回一,次三次啊,然后这是17次,17次到底够不够呢,还不一定呢对吧,就是说但超过十几次我都不考虑了,那肯定它还会损失能量,最后还是能量,这个应该能量会多一点。

哎那也就是说真实情况下,它的光就是应该弹射无数次,那我我在计算机里面,我不能这个这个模拟它弹射无数次,但如果中间砍下来就会面临这么一个问题,它能量又会损失,那这个时候应该怎么办对吧。

这不是一个两难的境界境地嘛对吧,那怎么办呢,这个时候这就是人们这个聪明的地方啊,人们引入了一种方法。

这种,方法叫做俄罗斯轮盘赌,叫russian roulette,ok然后这个也简称r2 啊,就是这个意思好,那俄罗斯轮盘赌是什么呢,大家看这个这个图看的非常明确啊,这个在看一些这西部片啊。

或者干什么都会接触到这个概念,这个就是说啊,你这你有一把左轮手枪,大家知道左轮手枪正常情况弹容量六发,然后呢在里面放入若干数量的子弹,然后把这个这个弹匣一转,那这个时候你就不知道你下一发打出来。

它到底有子弹,没子弹对吧,那这种情况下,然后他们这个就会有人对着自己开枪,或者说轮流对着对方,开枪啊,就这种情况对吧,然后这种情况呢就会说这个这个看人运气,然后什么运气哈,就是说咱们先看这个例子。

比如说啊我们在左轮里面装两枚子弹,那么你的生存概率就是4÷6对吧,这四发是空的嘛,是这个生存概率啊,4÷6就是2/3,那这个概率有一个概率啊,能生存,那就是说啊呃有一定的概率你可以生存。

那另外一减p的概率,你这个呃那那就是另外情况对吧,也就是这么个情况,那所以说呢这个这个俄罗斯轮盘赌,说的就是这么一个概念,那等一下,那这个俄罗斯,轮盘赌跟我刚才要解了,这个这个这个光弹射的多少次。

这有什么关系有关系,就是说啊我们引入了这样一个概念,就是说我们用这个俄罗斯轮盘赌的一,个方法,来决定一定的概率去停止,这个继续往下去追踪,就是说我我考虑说我什么时候往下追踪,这我不是永远往下这个考虑。

这个追踪我在一定条件下会停下来,就是这么一个概念,那咱们来看看啊,首先呢我们最后得到的这个整个,一个这个积分的结果,我要算出来是一个这个嗯呃某一个着色点,它的出色的radiance,它的结果是l o对。

吧是这个结果,那我不希望算错,我希望把中间给停掉,但我期望最后结果还是l那没问题,那怎么做的呢,那就是说啊俄罗斯轮盘赌的方法我随机呃,不是叫随机了,我自己给自己定一个概率,这概率我自己说了算啊。

提前定好也没问题,动态生成也没问题,就是说假设有这么一个概率,那么以一定的概率p,然后我们往往这个某一个方向打一条光线,对吧,然后然后呢,我们最后得到的一定的结果之后,我再把它这个除以这个概率。

这就是它的返回值诶,咱们先不说为什么啊,然后就是说这,个以另外的一部分概率,就是说在一减p的概率内,我就不打这招光线,那不打光线得到结果自然是零,对不对,那么这个时候就是俄罗斯轮盘赌的,这个庙的地方啊。

为什么呢,是因为这里你仍然可以期望,最后得到的结果是l o,为什么呢,咱们回忆一下,这是一个超级简单的,取两个值的离散型随机变量,离散型随机变量的这个这个期望怎么算,概率乘以值加起来没错吧。

那么以概率p得到的结果是lo除以p a,概率乘以值,然后以概率一减p得到的结果是零诶,然后这个一减p乘以零,加起来这就是期望,那也就是说我把这个期望写出来之后,大家会发现诶p乘以l o除以p。

那可不就得了,结果就是l o吗,右边结果就是零,那也就是说我通过这种方式啊,我以一定的概率,我有时候往外打一根光线对吧,然后我有时候不打光线,只不过我打光线的时候得到的值,我最后除以p诶。

我得到了期望的结果就是这个正确的结果,没有任何问题对吧,只不过说这既然是个期望对吧,它是有可能是有噪声的,但最后结果肯定是对的对吧,然后这就是这个这个用这个呃俄罗斯轮,盘赌的一个思想啊。

那咱们把它总结到代码上去,要改的地方极少是什么呢,我不知道考虑任何一点的着色吗,我要么往外拔一根光线对吧,考虑它着色,然后我要么我这个,要么我不打这个光线对吧,那么这个时候呢就是说我随机选一个概率。

这个这个russian roulette概率pr当然0~1,然后呢我如何让它以一定的概率往外打,以这个概率往外打,那这个时候就是这个数,这个我们在计算机上实现的一个方法。

首先呢我随机在01里面取一个这个数,诶,01里面取一个数coc啊,那这个可c如,果大于这个p r2 ,然后就意味着它的这个不能生存对吧,比如说是pr,我认为是0。8的,就是说以0。

8的概率往外打赢光线,那如果我产生这个随机数啊,在0~0点八之间,那我该产生的光线那大于0。8,那就不是,那另外再次说一下,在图形学里面,我们极少说这些等于啊这些边界条件。

比如说这里大家要真说大于等于会怎么样,没没任何关系啊,随便用没关系好,那么这里呢就是说诶我我们这种情况下,我就认为他没存活下来对吧,我不应该往外打一顿光线对吧,然后那那我,其他情况都正常打光线。

只不过呢最后返回的结果,我去除以这个生存的概率就好了对吧,这样一来这个就没问题了,这样一来,这个用这个russian letter的方法对吧,那我这个算法肯定会停下来对吧。

只不过以概率的方式会停下来对吧,而且大家其实可以算一个概率对吧,这个概率非常简单对吧,每一次弹射的时候,我都有p的概率生存下来,那么我期望会弹射多少次,这个留给大家太简单了o那没问题行,那这样一来呢。

那么到此为止,首先啊我在这里,先下这个结论,这已经是一个正确的这个pass string的方法了。

好吧,就是说这这里我确定这个绝对不会有问题,但是它有一个这个小小小问题啊,这并不是说他算法错哈,还有一个问题在哪儿呢,它并不是多么这个这个这个高效,好比如说这里这么个场景,然后这个场景上面这个是光源啊。

中间这个遮挡物,大家知道,这打下来应该会有这个呃阴影对吧,而且阴影是软硬,因为是对应这个对应这个面光源的嘛对吧,那么这个我如果用的这个采样率少啊,这里引入一个概念叫samples per pixel。

大家可以理,解成sample就是多少个pass,就是说一个像素我打出多少根pass,咱们之前不是说是这么做的吗,但打多少根呢,呃这个就是s p p samples perfecal好吧。

那如果我是s p p小,但是得到结果会这个noise嗯,然后呢如果我s p p高,那最后得到的结果就非常干净,对,没没任何问题对吧,然后这肯定是这么回事,那我们现在想这个算法呢。

目前来说它并不是这个多么高效对吧,我们看到这个,我希望这个low s p p情况下,效果也会好对吧,那我们想办法来提高它。

那么问题在哪呢,这个,时候要大家看我的这个灵魂手绘啊,行那么问题在哪儿,咱们看这么一个例子,其实就能看明白,比如说啊呃这个我考虑的都是同一个点,因为这个场景呢它会发生一些变化。

它有时候这个这个光源呢它有大的有小的,好吧,这个光源的大小可以有不同的大小,那这样的话呢我在这个着色点,我往外打这个多少根光线啊,然后就是说如果如果这里我嗯,对于左边这个场景来说,可能我在这着色点。

我打五根光线往外诶,我就可以碰到一个这个光源,对于这个情况我往外打了500万之后,可,能说有一个光线诶碰到了这个光源,然后呢这个对于这种情况,这个这个这种light非常小的情况下。

我可能说我在这个点我得打出5万根光线,我才能达到这个这个光源对吧,那这也就说明什么呢,打得到打不到光能源,这个我们之前这个算法可是看运气的对吧,就是说我们只是在这边,这个这个着色点上啊。

这往外各个不同的方向去打这个光线而已,对吧,那这个看完全看运气,那那就是说光源大好,说光源小不行,那就是这么回事,那就是每五根光线或者500根或者5万根,才会有一根,达到了这个光源。

所以说有很多的光线怎么样浪费掉的,就是因为就是这个原因对吧,那就是说我为什么浪费掉呢,是因为我们在着色点啊,这个采样的对吧,然后然后这样就会造成这个浪费,这种现象对吧,那那自然就是说。

我们不希望出现这种浪费现象,那怎么办呢,那我在这一个点,那么这个大家可以想象一下啊,就是说是不是有别的采样方法对吧,这样想蒙特卡罗方法咱们刚才说了对吧,我pdf我我自己说了算的,只要说。

我可以找到一个好的这个pdf,然后我我以那种pdf来采样,我可能采样的效果,就比这个这个往四面八方这样才要好对吧,因为蒙特卡罗方法从来也没说,这个质量采样,它可以用任何的,那咱们说呃。

怎么才是完全不浪费这个光线的,采样方法的,那自然就是说,如果我可以直接在光源上面采样,那就不管光源有多大,我采样样本都分布在这个光源的表面上,诶,这样的话,那就所有的这些光线都不用浪费了对吧。

那这里呢稍微开始难一点点啊,但是这里我是这,么我是这么理解哈,就是说如果你这个微积分这一块学的,没什么太大这个问题,然后后面又没忘,那这点应该很好理解的事情啊,那咱们想一想是怎么回事啊,就是说我现在。

假如说我我对于这个这个着色点哈,用,我在这个光源上进行采样,好吧,哎这个光源呢它本身它有一个朝向啊,这个是n prime啊,然后呢,它这个可以和这个呃着色点连线起来,会产生两个角,一个是这个c大角。

这是这个这个连线和这个嗯,所谓这个着色点这块的法线的夹角,然后,呢这个连线它和这个光源,它的法线也会有一个夹角,c到c到呃,prime好吧,然后呢咱们把这个这个先说清楚啊,这整个场景它长得这么样。

然后呢我们现在想采样这个光源,那我采样光源很简单呀,我在光源上光源不是二维的嘛,理解成一个框好吧,那我用的pdf是多少,pdf是这个呃a分之一对吧,假设说这个光源的面积是a哎,那为什么。

是因为这个现在我在光源上采样呢,对于这个光源的面积,把pdf记起来得等于,一嘛对吧,pdf肯定是一除以a那没问题,但是啊那我们采样在哪儿采样呢,在光源上采样,但是这个渲染方程可不是定义在光源上的。

渲染方程,它是一个积分,它这个积分是定义在这个立体角上的,它是定义在这个这个半球上的,哎那也就是说现在存在这个问题啊,咱们回到之前蒙特卡罗,这个时候我之前讲蒙特卡罗的时候,不是提到一个概念吗。

蒙特卡罗要求什么呀,要求说我积分在一个积分域上,比如说我在x上积分,没问题对那现在这个不对,现在说,我采样对光学源是这个在光源的,这个在面积上采样诶,但是我积分是在这个立体角上积分诶。

那这个是不是就不对了,那是蒙特卡罗就不能用对吧,那我想让蒙特卡罗才能够生效,那怎么办呀,那我采样已经是在光源上采样了,那我现在就是说,我得把这个渲染方程写成在光源上的积分,没问题吧。

这是逻辑上的这个事情,然后咱们后面就会说怎么写对吧,那么这个刚才就是这么说的啊,摩登考虑要求在x上采样,在x上积分,现在我们在光源上采样,那就得把渲染方程写成对光源上的,一个微表面的这个呃面积。

进行一个一个微分的面积进行积分好吧,那就是说我们能不能说,把这个把这个渲染方程稍微改写一下,使得它是对这个da的一个积分,而不是对d有敏感的一个积分的,答案是可以的,没任何问题对吧。

然后就是说我们只需要知道什么,只需要知道d omega跟da的关系就可以了,那这样想啊,比如说这个我积分任何积分fx dx,我把dx换成d y,那我只要知道dx和d y,它两个之间关系就好了。

那么这里同样道理对吧,我原本积分在d欧米伽,现在我要把它改成d d,a诶那那我自然要知道他们俩之间的关系,那咱们就要看物理情况对吧,那da是什么,dna是一个在这个光源上的一个小的表面。

那dio ega是什么呢,dio ea,就是就是这个呃这个这个小的表面啊,它投影到这个嗯这个单位球上面,它的立体角是多少对吧,这是这是为什么呢,这是因为我们之前不是,定义过这个立体角吗,立体角是是什么。

是相当于面积是除以那个距离平方嘛,但是也可以理解成是是这个把这个面积,任何一个面积投影到这个单位语言的,单对单位球的表面上,然后这个对应的,面积,然后直接除以一的平方,因为单位求的这个半径是一嘛。

所以相当于是这个投影的面积,这就是这个立体角,那这就简单了,把这个da往这个单位球上面有投影,投影出来的这个面积算出来,这就是立体角,那立体角是什么呢,那首先da,它的朝向不一定是朝着这个这个呃。

着色点上的,然后那如果他是这个完全是这个垂直的,这个桌子得像这样,那就整个面积都会投上去诶,那如果说他是这个,比如说这个斜着对着这个这个着色点,那它投影面积其实相对较小对吧,所以它的投影就是。

首先它这个正面面对着这个着色点,它的这个面积是多少,就是da乘以cos与c的,先把它先把这个da啊先给歪过来对吧,让它能够垂直于这个方向,然后呢我除以这个他们俩距离平方就好了,就就就这么简单。

然后然后这样的话,就算出来这个立体角是多少对吧,那那行,那这个这个反映了什么问题呢,这个式子这个式子就把d omega和da联系起来,哎然后这个式子呢咱们再进一步之前,先把这个事情说明白。

然后呢首先我要把这个光源给转向,朝向这个着色点啊,用到一个cos theta,这个theater是theta,prime是这个seat啊,大家看清楚,是这个连线和这个这个呃所谓这个光面积,光光源。

它自己的这个发现,它的这个夹角的余弦好吧,然后这两个点之间的距离就是x prime减x啊,它的距离的平方,这里其实就是,或者说大家也可以按照这个呃,立体角的定义来嘛,先把这个这个角先把这个面给转向。

朝向这个这个中心嘛,然后再除以它的这个呃,这个距离平方就好了,对,那这里就是这个嗯,这个立体角和dna之间的关系,那么更进一步,我们就可以把这个渲染方程重写对吧,怎么重写呢,再简单不过了。

不是说d omegi和这个这个dna是有关系的,嘛对吧,那咱们就把这个这个第五名,i i给用刚才的式子,刚才什么式子呢,这个式子给给写成这个dna的形式,那现在这个积分就变得很简单,为什么呢。

因为他现在这个积分就是对这个da的积分,就是对这个光源上的面积的积分诶,然后这里呢大家会看到呃,我把这个原本抄进去之后,诶,两个cos in,然后除以这个距离平方诶,这样的话其实就是什么呢。

其实就是简单的一个在微积分上的一个,变量替换,那咱们把这个这个具体的内容啊,咱们不用理,解嗯嗯就是说啊这这个嗯怎么说呢,嗯最直观的这个理解,那就是说我原本的这个积分,是在一个空间上的对吧。

现在我要把它在另外一个空间上积分,改变积分域,这个方法就是这个两个积分域之间,如何联系起来的问题,好,那现在这个呃,渲染方程已经写成对光源的一个积分了,那这个时候问题就变得无比简单,为什么呢。

因为我对光源进行采样,然后我对光源进行积分好,那么这个这个时候积分起来,我们的fx是谁呢,用蒙特卡罗来说对吧,积分被积函数是谁呢,中间的这些东西就是,所有这些对吧,那概率是多少呢,概率就是一除以a啊。

就是相当于我们之前,呃概率是艺术类哎,那行两者相除,那可不就能得到这个这个,莫纳卡罗积分的结果了嘛对吧,那这样一来咱们就可以避免这么一个问题,之前,我们相当于是这个盲目的在这个呃,着色脸上。

然后往各个不同的方向去采样,达到这个光源,达不到光源,这个要要要要要随缘的对吧,是这个意思,但现在我们就直接对这个光源进行采样,那么现在我们就可以把之前的算法,稍微改一改,对,吧稍微改一改,怎么说呢。

就是说啊我如果要考虑这一点的这个呃,最后着色的结果对吧,我看到了着色的结果,那肯定来源于两部分,第一来源于光源的贡献对吧,这一部分我对光源采样来解答,第二来自于其他所有非光源的贡献。

那这部分我还用之前的方法来做,那并且呢,我刚才说,我们既然是说这个来自于光源的,这部分贡献啊,这这这部分贡献,直接可以通过我们刚才说的,采样光源的方法来算,那对于这部分来说是不需要用这个呃。

这个俄罗斯轮盘赌的,因为它这就是直接光照,就,是这个这个呃,这个光源对这一点的贡献对吧,那只有说它涉及到更多次弹射,那才会涉及到俄罗斯轮盘赌,所以我们把这个风险传播啊拆成两部分。

第一光源直接对这一个点的贡献,第二所有其他非光源对这一点的贡献好,那咱们把这两部分分别写出来,写出来是什么呢,就是这样,那大家可以看到,我怎么样对光光源进行采样呢,那我就知道这个采样光源的。

这个pdf是一除以a,然后呢,我对这个嗯,改写了之后的这个这个渲染方程对吧,因为我在,某一个积分域上采样对吧,我在光源采样,我就得在光源上积分,大家看到这个熟悉的两个cos对吧,和一个距离平方在这里。

然后这就是我刚刚才把里面的这个fx,抄出来,fx除以p x算出来了,这就是光源对这一点进行了贡献,那其他的贡献对吧,我算不算其他的贡献,在这里引入这个呃,俄罗斯轮盘赌,就是说啊,我我考虑说。

发出一条光线来,那如果说他通过了俄罗斯轮盘赌测试,那我就发出一条光线来,然后诶这里考虑的光照,那就是间接光照,的没问题,然后这样的话呢这个间接光照,如果说我这个从这一点,然后往四面八方打出一条光线。

打到一个这个另外一个点q,然后这个点q我必须确认它不再是光源,然后我才会把它的这个这个贡献加进来,否则的话呢,我之前光源对这个着色点,贡献已经算出来了嘛,那这里就是一个自然的。

直接光照和间接光照的这个拆分方式了,对吧,大家这样想对吧,我任何一个点,然后他接收到的这个能量,他肯定要么是光源给他的这个能量,就直接光照,要么是其他反射物给他的能量,然后这,是间接光照。

然后间接光照用了这个russian rate,但是间接光照仍然是期望上,得到这个正确的间接光照,那没问题了,那很简单,这样一来,我们把这两个这个部分就给都给拆开了,对吧,那这样一来,我们会发现这个采样。

这个光源是是一套算法对吧,这用到的是这个改写了的这个呃,就是对光源进行积分的这个呃,render equation对吧,那么这个对于这个,我真正对这个不同方向来采样,达到其他东西间接光照。

那我这个就是对这个不同的方向进行采样,那我要用的这个渲染方程的版本,它也得是在这个不,同的方向上进行积分的,也就是原始的这么一个版本诶,这个别搞错就行,就是说我在什么这个呃领域积分。

我就是在什么领域做这个采样,这两个人要一致啊,一致就会对,这样一来呢,我们这个问题就已经算是写清楚了,对吧,哎好那这样一来,所有问题基本到此为止就得以解决,还有其中的一个一个小问题,什么问题,就是说啊。

我们刚才对这个光源进行采样对吧,然后然后其实还是有一个问题,其实还是有一个问题的,什么问题呢,我我对光源进行采样之后,我就考虑说他对这一点的贡,献,我这是假设这个光源,中间是完完全全不会被挡到。

才会才能够算这部分贡献,对不对,那如果说像这种情况,这个有一个蓝色的这个物体,这个物体正好在这个光源和着色点之间,我们是不是得判一下,这个光源是否能够贡献到这个点对吧,那怎么贡献怎怎么判断呢。

怎么判断呢,那很简单啊,就是说我们考虑说这个这个这个点p,然后到这个点x prime,就是相当于我们在这个光源上采样,采的这个点吧,哎取一个连线,取一个连线,然后我从这个p点打一根光线,往这个方向打。

看他中间有,没有达到一些什么其他物体,这不就行了嘛对吧,这样一来,我们就知道这个直接光照是不是这个呃,被挡到对吧,然后如果说它不被挡到,我才把这个直接光照这个计算出来,那如果挡道呢自然就是零,那没问题。

这就是说,我们最后最后再做这么一点点修改,那问题就可以解决了对吧,到此为止,我可以放心大胆地得出结论,到此为止,路径追踪就这么写完了,那么路径追踪的代码长不长,就刚才刚才那一页哈。

上面那页大家应该还记得,就就就就这么点,基本就这么点啊,其他部分基本上是,相当于是retracing啊,这部分和其他东西都共用一些东西,就是说它这个啊路径追踪,无非就是这么一回事。

但是就是说如果你不明白的话,你比如说除以这个距离平方干嘛呀,处理除以这个什么呃,这个a分之一干什么,然后这个p r r是什么东西对吧,那咱们把这个事情说明白就差不多了,那这样一来的话呢。

咱们这个呃路径追踪这块儿说不完,那么还遗留了很多问题啊,点光源怎么办对吧,我看看有同学也问这个事情,点光源怎么办,很难对吧,然后这个啊我们这里就暂时不说好吧,就是说,对于路径追踪来说。

点光源真的不好处理,然后然后这个点光源想把它给做对,是得这个这个怎么说呢,就是说你得万分的小心,然后算出来它的对点光源,比如采样的概率啊,然后以及说这个哈哈嗯,反正就是说很多很多不同的东西吧。

但也就是说如果真的需要一个点光源的,场景里面的话,就把它给这个做成一个很小的面积光源,我也是这么建议的好吧,然后嗯这里可以,ok那么还有一些这个这个在日之后啊。

我们说一说um一些所谓side notes的,不是多么重要的一些一些小的一些东西啊,我能想到的一个事情,首先呢这个pass嗯不容易啊,不容易,就是说如果你想把它给写对,那那这个是非常有挑战性的事情。

然后为什么呢,因为咱们刚才一路过来,涉及到这个辐射度量学物理,然后涉及到蒙特卡洛积分概率,然后又涉及到这个这个积分的,这个变量替换,然后这是微积分,然后要把代码写对,你还得掌握这个正确的实现。

这个嗯计算几何呀,这一系列的这些算法对吧,写代码,然后把它给这个综合在一块,这就是为什么来说呢,这个有点难啊,ok然后但是没有关系,就是说你这个,就是如果说这这这节课中间。

大家会发现用到各种各样的东西嘛,如果说大家不熟,回去正好利用这个机会,把这个各种各样的这个涉及到的知识啊,这个这个正好查漏补缺,补一补,我觉得非常好,可以让大家对这些不同的这些方向啊。

呃也也多少加深一些理解,这个是我的一个这个想法哈,然后另外呢就是说对于这个路径追踪来说,它是否还能被称作这个入门,有同学会问这个事情,我们说了这么难的话题了,对吧啊,那自然而然咱们就认为说这这块吧。

相对来说确实,不不是那么入门啊,稍微这个进阶一点点,但是为什么要提呢,因为咱们这个课是现代图形,计算机图形学,然后就是说我希望把现代化的东西,把真正现在咱们这个工业界。

而学术界要再用在研究的东西带给大家,这个这个算是这个所谓introduction呢,是这么一个意思,给大家介绍一下,现代化的图形学都在干什么,这样的话大家可以学到一些,这个这个更接近前沿的知识嘛对吧。

然后呢,呃这个学这个这个pass stration,是非常非常有用的,除了你之前这个掌握这些知识。

能掌握得更这个这个精通一点,另,外如果你对比这两张图,你就知道这学pass string有多么有用,为什么呢,因为pass trating对不对,是几乎百分之百正确的一个算法,ok然后大家可以看左边。

我刚才说corner box它是真实存在的,左边是一张照片,右边是我们用pass tracing,就是就是这个我们这节课上给大家讲的,pass tracing。

然后算global elimination就可以算出来的结果,大家会发现几乎一模一样,对不对,哎也就是说嘛,这个呃我们呃pass tracing,可以做到一种真实感,什么真实感,照片及真实感。

所谓photo realistic,这就是一个这个这个里程碑式的东西啊,它和之前的waiting style retracing就绝对不,一样对吧,然后这里呢这个就有同学质疑说,这是不是真的呀。

真是左边真是照片,右边真是这个呃pass是的,这个网站就在这啊,大家自己访问,之前各种各样不同的知识,又可以提高自己写代码能力,就可以生成这么这个这个真实的漂亮的图,这个。

所以我说学这个pass stration,一定是非常有意义的一件事情嘛,就是这个意思对吧好那没问题啊。

这里简单给大家说一下啊,好吧,不过也就要结束了哈,然后这里这个嗯我就说完吧,嗯就是说,啊,嗯直到今天还有人在用这个recreation,这么一个概念,那么咱们怎么去区分呢,咱们这样想啊。

就是说我我这里简单给大家总结一下啊,之前或者很很早期,以前或者大家学这个早期的同一学课程,学到的所谓retracing这么一个概念啊,呃更多咱们就是指这个waited style racing,好。

这点咱们先确认,就是以前说racing就是waited style,然后现在说retracing不不一定是这样的,现在说retracing呢,我自己这个简单的一个理解,就是说。

把它理解成是所有光线传播方法,的一个大集合,这就叫reaction,什么呢,咱们刚才说的pass racing,它就属于retracing,然后呢还,有各种各样神奇的方法,而这里给大家说一说。

这个表示这个这个绝对不止pass facing啊,就是说比如说单向的pass trating,双向的pass tracing,然后以及光子映射,以及说这个所谓mtropoli光线传输。

然后这都是什么意思,然后以及一些更复杂的一些东西,这个这个结合了这方法的,比如结合了双向双向,这个追踪和这个光子映射的,这个方法叫vcm,然后结合了所有方法的这些东西叫u p bp,然后这些。

就就是这个学术界在研究的东西了,每一样都比paon要难不少,句好吧,所以说从这个角度上来说,这些东西这些不同,的光线传播方法,就是最后我要求出一张渲染这张图对吧,我要让它渲染的比爬的时间内还快。

就要有更好的这个光线传播方法,那就是这些方法的大集合,都把它管它叫retracy,现在我们说啊怎么生成一张图呢,要么光栅画rozation,光线追踪好吧,但我们可指的并不是说。

这个早期的waited style吹醒,那咱们把这个事情说明白好呃,当然个人理解哈,我没有强大的说,我能定义说这个渲染中间的概念,这这这这不可能啊,这个大家听一听意思就差不多了啊,ok然后呢。

这个我们有一些话题在这里没说啊,咱,们这个简单给大家说一下吧,啊其实这样哈,大家这个已经完全可以,当这节课就差不多了啊,然后我只是给大家提一下这个嗯,这几个事情一个是什么呢,我们说我们对这个这个半球。

说着容易怎么做呀,对不对,怎么样去对一个函数进行采样对吧,然后以及说更通用的话题,我给你任何一个函数,你你怎么样去采样它对吧,就这么一个事情,这是采样理论怎么做,我们没有说这块是给大家的作业呢提供了。

这块这个就是说呃,你直接调用,这一块我们没有说有兴趣的同学继续研究,没问题啊,然后另外一点这个蒙特卡罗积分,我们不是说它可以,对吧,我我只要说我能够以一定的pdf,我来生成一系列的随机数对吧。

就可以这么说,我选择什么样的pdf是最好的,而我们现在说的可是最简单的,所以pdf在各个不同位置是一个常数对吧,那那选什就是说通用来说,我们应该选什么样的pdf呢,这,个理论叫做重要性采样理论是一个呃。

呃这个嗯就是pass tracing上,正常情况大家会提,然后咱们这节课,这不给大家提了一个概念哈,就是说怎么样,这个针对性的对某一种形状的函数,进行最好的采样方法,对这个这是最好的。

这是一个叫做important sembling的东西,那么有同学问说,我这用各种各样的随机数对吧,我随机数这c加加有有一套随机数,对我可以生成各种各样不同随机数,随机数会不会有质量之分。

会不会有好有坏,哎是不是都满足,随机数,所有随机数,都是一样的,然后就是说都满足一定的这个同样的性质,并不是有很多随机数,不只能够保证说,他们之间的这个距离也可以控制的很好。

就是说不会出现随机数扎堆的现象,也不会出现随机数,这个相对离得太远的情况,而这种随机数序列叫做low discrepancy,序列,这块我是不知道怎么翻译了,就这么说了哈,这是说说了。

这这就是说涉及到这些问题,有兴趣大家都可以继续去查啊,然后我给大家把这些问题都给都给好吧,然后呢说我现在嗯我可以采样这个半球,对吧,我在着色点我可以往不同方向去采样诶,我也可以采用这个光源诶。

我能不能把这两种不同的采样方法,给结合起来,使得它的效果会更好对吧,诶这个时候就会涉及到一个理论,叫做multiple importance sambly,简称m i s,这是一个这反正学术界。

这个也是相当前沿的一个,这个研究的这个这个热点好吧,然后把不同的这个采样方法结合起来,使得最后的结果,这个肯定不会比任何一种方法差,这是这是目前大家能够做到的一个事情,好吧。

然后呢就是说这个我们刚才说啊,我们要对一个像素打出很,多不同的光线对吧,而不同这不不不不同的pass啊,不同的路径,这些路径的radiance最后把它平均起来对吧,然后诶。

为什么平均起来就是这个像素的这个,radiance对吧,就是说就是说这个这个像素,到底代表着什么呢,这里就是说涉及到一个所谓pia,reconstruction filter的概念,就是说我是不是。

就是说把这些简单平均起来,会不会加个全呀对吧,比如像素中心的这个这个pass贡献多一点,两边的少一点对吧,这块儿怎么理解,这就涉及到pixel reaction builder啊,这是一个最后。

然后你的一个这个像素里面,radiance我算出来了对吧,我们回到,正确的物理概念是平均的,这个呃所有pass平均的radiance诶,可是我最后看到的图是一张图啊,图最后是颜色诶。

我最后算出来radiance是不是有颜色,不是不是哈,而且他们两个不是线性对应的,就是说我要把reading换算成颜色,中间得经过一个过程,叫做叫做伽马校正,然后这个东西是怎么回事,大家研究去好吧。

然后还涉及到不同的这个所谓曲线,对于说这个所谓high dynamia dynamic range,像这种图,然后这是什么意思,hd 2图是什么意思,然后这个曲线是什么颜色空间是什么。

咱们之后多少会提一点,但这是咱们这门,课没提到的事情,那么最后我们再回到这么一个问题上来,那么还有同学在重新问,这1111个事情对吧,所说这个路径追踪,到底还算不算introductory。

那么考虑到还有这么些问题,那这回给大家的回答是,即便是他rating,到现在算是比较复杂的一个话题,但仍然它绝对是一个intractor级别的事情,所以说最后给大家一个这个怎么说呢。

这算是这个和大家一起分享的一个事情,fear the science,好吧,就是什么呢,敬畏科学啊,没问题,所以说这样一想确实有很多东西啊,咱们这个到现在理解的都不是特别清楚,对吧。

然后即便是咱们把这个pass stration,这节课说完了,你看还有这么些问题,我们根本就没有提对吧,以及说怎么回事呢,我自己一个真实的体会,就是我这个我我这么学下来。

rendering算是学了多少年了呢,算是我从大二开始学这个大二下啊,就算大二吧,3年5年6年7年嗯,所以快10年了哈,我学这个rendering整个这块学了快10年,我的最大的感受就是学到现在。

我什么都不会,基本就是这样好吧,然后就每一次看到这个各种各样不同的,这些突破,就会觉得非常神奇啊,然后就会觉得这个现在即便是研究到,现在然后这个pathy就单讲这一块,然后整个的render这块。

确实是博大精深的东西太多了,所以说经纬科学是对的啊,好吧,那这就给大家算是呃分享到这儿啊,真的哈我认识发自内心的感觉,我学到现在什么都不会啊,ok那这个这个这个这个啊行吧。

然后大家这个这这这节课也相对较难,然后我这个之前保证它绝对保证的啊,到此为止,难的地方绝对都已经过去了,后面的几节会非常容易,然后这个嗯这个这块pass string呢,大家多花点时间回头多看一看。

这是对的好,吧,没问题好,那这就是这个嗯咱们这节课了哈,嗯之后然后如果大家还有什么其他问题,欢迎这个邮件或者是这个bbs啊。

然后嗯,咱们今天就把时间交还给技术秘书同学。

然后好,谢谢大家啊,咱们下节课再见啊。

GAMES101-现代计算机图形学入门-闫令琪 - P17:Lecture 17 Materials and Appearances - GAMES-Webinar - BV1X7411F744

今天开始给大家讲这个新话题,咱们的retracing部分就算是圆满结束好吧,然后这之后就不会再有困难的事情了,大家可以看到这块呢我们说什么呢,我们说这个材质与外观,然后这里呢花两个课时来说。

这节课简单说一说这个基本的一些东西啊,然后这个嗯咱们下节课再说一说复杂的一些,这个时代这个前沿的一些东西,嗯,这节课呢要求嗯要能明白,然后下节课的话稍微听一听。

嗯表示知道这个现在大家都在做什么就差不多了好吧,那么在课前还是一样,咱们说几个事情,第一呢啊作业六目前来说这个82分提交非常好啊,然后记得咱们这个作业61。5个星期啊,不需要现在提交,应该是到周五吧。

我如果没记错的话啊,应该是到周五,然后作业期也是好吧,那么作业期呢就是关于这个pass tracing这一块,然后现在这已经我们这边制作差不多了,然后基本上是按照咱们上节课的这个课件里面提供的伪代码。

然后大家照这么做应该就没有问题好吧,然后呢这个咱们这周五应该是没有意外的话啊,然后上一个作业提交,这次作业在这个发布,那么嗯另外一个大家关心的事情,然后就是嗯大作业对吧,大作业做些什么,然后这个很快啊。

我们也在这个积极的准备中,当然大家已经可以自己着手去思考一些这些这些方面的,这个这个自己想做的一些东西了好吧,然后至于具体要求啊,或者别的什么东西,然后之后很快就会放给大家。

有可能这周可能是要不最晚是下周二吧,差不多好吧,那这么个安排,那么今天啊这是按照之前这个保证的这个事情啊,从今天开始,这些复杂的这些课基本上就没了。

后面几节课应该相对轻松啊,好那咱们这就开始今天的正式内容,今天咱们讲什么呢,今天没有任何一个大纲啊,今天所有的内容都是围绕着这个嗯所谓材质的外观来这个描述的好吧,那材质本来和外观它其实就是一回事对吧。

有不同的材质,然后在某些光照下,它会就会表示出不同的外观,所以说这个外观呢算是这个光线和材质共同作用的结果,那所以说我们要研究的其实是各种各样不同的这种光照呃,与这个不同的材质是这个之间的这种作用方式。

这算是我们这个最主要的研究话题好吧,那咱们先看看这个自然界中啊,自然界中这种材质这个成千上万对吧,有可能会更多可以看到这种日出这种这种或者日落啊这种现象,然后这些海浪大家看到海浪有什么现象呢。

这个可以看透过去,对不对,然后大家知道这深海跟浅海含盐度不一样,就是各种各样的这种也会影响到这个海浪的颜色对吧,然后像这里这里呢有一束光透到这一个洞穴里面。

这个洞穴里面呢你就会看到这个有一个这个类似光洙的东西哈,然后这个是怎么回事对吧,然后这些都是这个材质这方面的内容嗯,特别的对于这个光柱来说吧,咱们举个例子哈,就是说我们看到东西大家都知道。

这一定是因为有光纤到达了人的眼睛,那如果我在这个点看到东西,那就一定得是在这个点上有一个光到达了我们的眼镜,那这个光既然是平常是直线传播的,它往往下面打他为什么在这个中间它会被我们看到,这是不对的对吧。

也就是说肯定得有光线,会不会被这个这个重新导向到另外一个方向上去,这个概念我们管它叫散射啊,然后这这块儿,然后呢咱们看这个中间这个例子可以看到这个头发对吧,这个很艺术感的头发,然后这头发呢有明显的现象。

在这个周围这一圈啊,它这个透光性非常的强对吧,正常情况下人们的头发都应该是这样的,没有问题,然后这个是怎么回事,就是投票和光线到底是如何作用的对吧,特别是成百上千跟头发,咱们刚刚讲过这个这个什么呢。

呃全局光照对吧,那从一个面弹射到另外一个面,这光线要经过一次弹射,那我如果从一根头发弹到一根头发,那这样的话我得弹射多少次才能出得来对吧,这有很多问题啊,材质和这个光影传播是紧密结合的。

那就这么一个意思,那咱们看这个不对吧,这个布料为什么大家一看就知道是不,然后呢它又不是这个这个这个这个金属是吧,这这这这就很奇怪,为什么我们一眼看上去就知道它是布呢对吧。

那肯定是因为它在外观上表现出来一些布的独特独特属性,它和金属就不一样,那自然就是这个布的材质和金属的材质不一样造成的,那么我们再看这个左下角这个蝴蝶啊,大家知道这个蝴蝶的翅膀都是由各种各样的鳞片组成的。

对不对,然后为什么各种各样不同的鳞片堆在一块儿,然后它就可以显示出不同的颜色,如果大家小时候看过10万个,为什么对吧,说这些鳞片啊,很多都是他们自己是没有颜色的,然后呢他为什么叠起来之后。

这个就会显示出各种各样不同的颜色呢,这个就很神奇对吧,以及这边这边大家看到彩虹现象,事实上如果你仔细看,这是双彩虹现象对吧,就是说为什么我们会看到彩虹,以及为什么说我们能够看到双彩虹。

然后为什么更多的高阶的这种彩虹我们就看不到对吧,然后这些都是我们要研究的问题,然后从这个角度上来说,我们看到了什么,我们看到这个光线传播啊,它和这个材质它确实光光线是不是光线。

它们两个之间的关系是是紧密联系起来的,所以我们在研究材质的时候啊,其实更多地表示了就是光线如何与材质进行作用,那就印证了我们这种说法对吧,那右边这个更更加复杂了对吧,就右边这个是这个寿司这些东西对吧。

然后嗯这边如果说有这个光线打到这些什么鱼肉啊,这些东西上面那这些就更复杂了,这鱼肉多少能显示出来一些透明的这种感觉对吧,但是他又不它又不是完全透明,它就是出现这种这种这个很神奇的这些这些现象。

就光打进去之后会变成一大片,然后再出来这种呢我们管它叫次表面散射,然后这节课这节课不会给大家说,下节课再给大家说,就是说关于很多这种类似的这种现象啊。

就是说很多都是说我们这个嗯通过对这个光线的传播的研究,来研究这个自然界这种各种各样不同的材质,那么这里给大家多说一句哈,就是说这个材质这个东西,然后反映在咱们的这个渲染器里面对吧,它肯定也是有的。

那么自然界中的材质何止成千上万,对不对,但是我们现在就是说我个人啊见过最成熟的渲染器,那就是这个维塔数码的这个蒙多快渲染器,应该是世界上最强的渲染器了,然后它支持多少种多少种材质呢,40种啊,40种。

然后这个和这个自然界中的才是数量,那肯定是没有办法比的对吧,那为什么他们还可以做出这种非常非常惊人的这种,这种超级真实的画面呢,呃那当然中间肯定有一大部分工作是这个归功于这个呃,非常厉害的美工的对吧。

然后有这些只是这些美工们这个记忆是出神入化了,这早在当年这种材质啊,基本只有这什么不连缝这种材质的时候,然后大家就可以通过这个美工啊,用各种各样的纹理啊,用各种各样的贴图啊。

贴出各种各样的这种不同的感觉啊,也就是说这块嗯非物理的方法,这个美工们是非常厉害的,或者说艺术家们是非常非常厉害的,这点啊还是得敬畏科学啊,这个也是科学,没问题啊,咱们只是从一个方面在试图解释问题。

好啊,ok那咱们现在回到这个材质的问题上来啊,那么在图形学中什么是材质,这个是我们关心的问题对吧,自然界中我们先看到了,没问题,那我们刚才也说了,那自然就是光线与这个不同材质的这种作用。

把它给这个描述出来,那就是不同材质,那咱们看这个嗯嗯目前这个例子哈,咱们看到左边这个图嗯,这是一个很明显三维空间中的网格模型,而且是四边形模型对吧,然后这个这个大家反正现在接触这个接触了不少了对吧。

那么右边两个是什么,右边两个就是这一副这一个相同的模型啊,我们渲染出来的不同结果对吧,那么这个呃为什么会渲染出不同的结果呢,那自然是因为我们可以给这个不同的部件指定不同的材质。

比如说大家可以看到很明显的是盘子的颜色对吧,都是这种陶制的对吧,然后大家为什么看到它是陶制的呢,因为它有些明显的现象,一个是它本身有一定的这个高光嗯,或或者说不叫高光吧。

就是说它的这个反射镜面反射挺明显的,在镜面反射背后呢,他又有这个这个漫反射,而事实上他就是这样的这种这种陶陶的东西啊,大家知道这个怎么做的对吧,烧这种陶土,陶土烧完之后者成型啊,或者怎么样。

这个咱们不关心,但最后有一个工序要在上面上一个东西叫做you,没问题吧,然后这又是什么呢,就是一种氢气哈,这种清晰意思就是说它本身作为一层覆盖在这个这个材质上面。

那首先它能够反射出来一部分这个已镜面方式反射出来一部分能量,然后呢光线总归能进去,还跟这层底下的这种真正陶土,这些跟这个呃漫漫射材质作用诶,那也就是说等他再反射反射出来,那就形成了又有一个这个镜面反射。

又有一个漫反射的东西,哎真是很神奇对吧,然后嗯当然我们可以这么指定,然后呢这个咖啡这块本身啊,这个黑咖啡还是卡布奇诺对吧,这个这个呃讲究还是挺多的,当然我相信对于这个艺术家来说,他应该是直接往上贴了。

不涂啊,然后但是不管怎么样,大家看到这个渲染是非常不错的,那所以说呢在图形学里面,我们是指定不同的这个呃不同的这个物体,然后它有各种不同的材质,然后我们这个知道他们是如何和这个光线作用之后。

我们就可以把它渲染的很对,没有问题,因为我们知道pass tracing啊,这些东西都是本身就是对的,可以呃相信那咱们就是说把这个材质描述清楚就可以了,那么现在我多问一句对吧。

那这个材质既然可以这个这个描述的这么好,那我们又知道在光线传播里面,这个呃the rendering equation对吧,渲染方程它本身是严格正确的东西,那它一定在这个渲染方程中描述了某一种材质对吧。

咱们之前课上其实提过对吧,那么我现在多问一句,在这个渲染方程中,哪一项是跟材质有关的呢,它的材质是什么样子呢对吧,我们知道有这个入射光对吧,有b2 df对吧,有cos对吧。

然后还有发这个自己发的这个光对吧,那么哪一项是决定它材质的呢对吧,那这里这个我相信大家都可以直接回答得出来,这就是b2 df对吧,为什么呢,因为b r d f直接决定了光如何被反射嘛,那所谓材质来说。

咱们不说这些这个空间中各种各样不同材质,咱们就说这个表面,那么表面它的材质是什么,无非就是它反射不同的光的方式,对不对,就是这个意思,那谁定义反射b2 df。

所以说我们这个最重要的一个内容就是关于材质的,最重要的内容就是材质等于b2 df好,那么我们这么说是有根据的,咱们之前给大家看过一个呃这个例子对吧,就是说这个材质是什么呢。

这个才是之前大家的这个已经能够回答了对吧,任何一个光线打到任何一个点上,然后它会被这个居民的分散到各个不同的方向上去,那当然这就是漫反射材质。

大家刚才呃呃呃这之前也见过这样对吧,然后说漫反射材质呢,我们可以定义它在任何一个点上,它还可以有一个不同的漫反射系数,嗯,虽然都是漫反射对吧,它各个点它这个光被吸收的部分不同。

所以会显示出不同的颜色对那这个是漫反射。

那同样道理,那咱们还可以定义其他各种各样不同的这种反射方式,在这之前呢,咱们先把这个漫反射这一块儿啊,先给说对,为什么呢,因为咱们之前提到这个吸收这个这个事情啊,呃我们是怎么定义这个漫反射系数的对吧。

我们是在布林逢模型里面定义这个漫反射系数的,我们说啊这个光线多少,这个当时我们用的概念还是intensity对吧,多少intensity到达,然后吸收,然后呢我们再给它一个颜色。

然后这个颜色在0~1里面,然后这个也就是说它会被吸收多少对吧,如果rgb 3个通道各不相同,那就会引入颜色,那就是这样了,那当时这个是一个经验性的定义,现在呢咱们可以把这个漫反射系数给定义对。

怎么定义呢,咱们想这么一个情况,就是左边这幅图啊,左边这幅图呢,首先我们先说清楚这个材质是漫反射,那就意味着说任何的光线进来从哪个方向进来,然后它都一定会被反射,那咱们现在人为地做这么一个场景。

我认为啊空间中从任何一个方向进来的这个光,它的radiance都是一样的,也就是说它进来的光也是所谓uniform的,那它反射出来的光,由于它是这个defuse,他也肯定得是uniform的。

那这有什么好处呢,如果我们这么假设,我们就可以利用一个东西叫做能量守恒,所以能量守恒,那意思就是说如果这个点啊它不发光,ok啊不好意思,如果这个点它不发光,那么它又不吸收广。

那也就意味着说我所有的这个光呃,进来多少,那就得反射出去多少,那我们考虑能量,能量进来的光的能量拿什么表示啊,是这一个这个着色点周围的一个小的区域。

它收到的能量也就是power per unit area,这是什么呀,这是irradiance对吧,那也就是说我进来多少irradiance出去就得是多少,irradiance一模一样,如果不吸收。

如果这个物体是白的啊,不吸收光好,那咱们这么假设之后,然后这样有一个什么好处,是因为我们刚才不仅假设了说这个入射跟这个叫什么来着,就是说这个材质是devs啊,那这样想啊,入社和出色的radi是相等的。

并且他们两个都是r都是这个radiance都是uniform的,那就意味着入射光的radius和出射光的radiance也得是一样的好吧,那这就是我们的一个一个观察,那有这一个观察之后。

那咱们就可以直接用这个呃这个呃渲染方程啊,然后因为没有这个自己发光下,那是什么呢,我认为啊这个入射光我们看i从任何一个方向来,它经过漫反射漫反射,也就是说b2 df是个常数啊,然后经过漫反射之后。

它会被反射到欧米伽o上面去对吧,那这个这第一个这个式子写出来,这就是渲染方程,那这个渲染方程咱们可以这个简化一下对吧,为什么呢,因为我假设入射的radiance是常数。

然后b2 df就是debus也是常数,所以拿出去这两项拿出去之后,发现他就是对这个半球上一个cosin函数的积分,那么我们知道半球上直接对半球的这个立体角积分得出来是二派对吧,大家可以自己试一试。

对半球上一个cos theta的积分积出来是派啊,然后这个这个是挺简单的事情啊,记出来是派之后,我们刚才说什么来着,我们说假设这个呃这个呃能量守恒对吧,能量守恒我们得出来结论是什么呢。

入射的radiance得等于出色的radiance,那所以l i得等于l o那得出什么结论,得出b2 df得等于派分之一,没错吧,那我们说派分之一的时候,永远是π分之一。

这个时候就是完全不吸收能量的b2 df,所以大家发现什么,这不是一啊,这是派分之一,这才是对的,然后呢我们可以定义一个所谓反射率这么一个概念叫lb的,然后b逗呢这个可以是一个单通道的,是一个优势。

也可以是三个数,rgb,也可以是这个光谱都可以,就是说lb逗呢我们定义一个反射率,它在0~1之间,那这样的话就是说我们可以引入不同颜色的b2 df,那这个b2 df的值就是lb都除以派好吧。

这就是说我们一个正确的defuse的bdf是多少,好吧,这样我们就说清楚了啊,所以它是从零到1%的啊,不是这个0~1好,那咱们把这个device这块说明白,那我们刚才说啊,呃材质当然还可以有更多的种类。

对不对,然后比如说这种这种是什么呢,这种入射光一根这个打到一个这个物体上,然后反射出去一个方向对吧,咱们之前也看过这个例子,这个说明的是什么呢,说明的就是说它很像镜面反射,但是呢它又不是完全的镜子。

它比镜子要粗糙一些。

正常情况下,这就是我们所说的这个所谓抛光了的金属,就是这个意思,我之前给大家提到过这个概念,说这个古代大家拿什么照镜子呀,拿铜镜对吧,这个铜镜呢大家就是说这个在上面打磨的足够光滑,但是足够光滑的。

它和这个现代的镜子也没法比对吧,基本上来说就达到跟左边一样,这种稍微有点模糊,但是你能看出来它反射的这种这种项目好吧,这种材质我们管它叫glossy啊,就是多少有一点镜面,但是没那么精面。

这种叫glossy好,然后呢这个不同的这个材质呢,它反射出来的这个性质也不相同,比如有一些金属呢像铜,它看起来就是发紫发红对吧,这个意思,然后如果是鲤鱼,它就发白,就是这种感觉。

然后它就会有这么一些区别,但是大家可以看到这个地方怎么会有一个什么尖儿。

这是怎么回事对吧,马上给大家解释这个话题好,那么这个是我们说的这个glossy的这个这个呃物体,然后呢嗯对于这种材质,这是什么,大家可以看啊,比如说这里进的这一根光线打到这里。

然后呢他有一部分能量沿着镜面反射出去了,有一部分能量呢它它进去进到这个物体这个这个这里面去了,诶反而发生了一个现象,叫折射对吧,有反射有折射,而且都挺光滑的对吧,这种东西是什么呢,那大家可想而知对吧。

非常简单的这个就是呃这种材质是什么对吧,就是玻璃或者水对吧。

然后大家可以可以想象我们平常见到的正是如此,比如说左边我们可以认为是一个玻璃球,当然他这用的是水的性质差不多,这个大家可以看到有一部分能量被反射呃,正因为被反射。

所以你才能看到那边反射出来的这个环境光嘛对吧,然后呢这个这个左边就是这么回事了,就是说有光还会进去,这是为什么你能看到里面的这个灰色的这个球的这个这个圆球对吧,那么更有意思的是什么呢,是右边这一部分。

右边这个地方它有意思在哪儿呢,它是它是因为这个你这个反射出去的这个能量归反射啊,这块不管我,我我们关心的是这个折射的能量,哎就是说我首先我看到它有颜色,为什么它有颜色呢,呃然后我们看到能量。

这个就不不就是说这个颜色从哪来对吧,颜色是在这个玻璃的是球壳内对吧,在这玻璃球壳内来,那就说明什么呢,那就说明这个光啊,它在这个折射的这个折折射光在玻璃里面传播的时候,它会被部分吸收对。

因为它也不是完全吸收,完全吸收就没有光出来,那就变成黑的了对吧,它会部分吸收,有一些能量会被吸收,然后有一部分还继续往前传播着,那能量一杯吸收,我们就知道这个时候这个光线就来了对吧。

那这样一来呢就说我们就可以解释这个呃各种各样不同类型的材质,对吧好,然后然后这里就是说我们对于这个反射和折射。

那对于反射和折射呢,咱们还可以研究更深入一点点哈,然后大家都知道啊,这个这个物理上咱们这个学的再清楚不过了对吧,反射定律,反射定律就是说什么呢,所以对于这个镜面的这个物体啊,如果你反射。

然后有一个入射入射方向,有一个法线方向对吧,然后呢这个出色的这个方向一定是这个呃,怎么说呢,就是说出射和入射它们的正中间一定得是这个反射方向对吧,或者说出射角等于入射角对吧。

然后然后就是说这里这个实验做的非常明白,从45度入手,然后可以看到45度出手对吧,呃然后这个呢我们就可以通过这个定律,我们可以写出反射的公式来呃,为什么呢,咱们可以看啊。

反射的公式有两种不同的不同的理解方式哈,怎么怎么理解呢,一个是说我就直接用这种反射的这个这个定律来嗯,怎么说呢,就是说我的这个入射光的方向和出射光的方向,那他们两个的正中间方向一定得是法线方向。

我们利用利用这么一个性质哈,那这样的话我们就可以利用这个平行四边形法则,把这个欧米伽i啊,跟我ωo这两个加起来加起来之后,它一定得得沿着这个n方向对吧,沿着这个n方向,那么它的这个长度是多少呢。

那长度是多少呢,那我们知道它一半的长度是这个红颜色的长度对吧,上面这部分跟这部分一样,然后一半的长度是红颜色长度,红颜色长度是什么呢,是这个入射方向投影到拔线方向的长度,那我们知道这个投影怎么投对吧。

一个点击就可以得出这个这个入射方向和入射方向和这个法线方向,它的点击呃,这就是这个红颜色的长度两倍,红颜色长度就是这个长度,然后这个呃法线方向它是沿着这个法线方向的,那我们得出出热光加入射光等于这些。

那咱们要想呃给定入射光和法线,那我们就把入射光挪到右边去,出射光方向就可以算出来,对不对,那也就是说算这个呢非常简单对吧,那还有一个更简单的这个解决方式啊,那就是说我们把这些呃。

这些角度给投影到一个这个局部的坐标系上面去,这个怎么怎么说呢,就是说啊你认为说这个任何一个方向它和法线的夹角,这个叫做仰角哈,然后这个呃当然这个不是从这个这个水平方向来的,它是从这个竖直方向开始记。

就是说这个c他呢咱们以这个c大o为为例哈,c大等于零,就意味着它是沿着反向方向,c大等于90度,它是意味着是平着往右边去啊,是这个意思,这个theta是这么一个角度,然后另外一个角度我们定义什么呢。

定义一个fi角度,这个发育角度是什么呢,我们规定比如说在某一个平面上啊,我们应该i我们a o和n它们在某一个平面上,这个认为是这个φ等于零,那如果这个平面它绕着这个n它一直在转诶。

这个就是就是说引起的一个角度叫方位角,叫塞塔,然后我们通过这种方式呢,可以把任何的这个角度拆成c塔跟f,但事实上来说,咱们之前在那个在立体讲上这块,其实大家这个也就见到了对吧,这块其实已经用的比较多了。

基本上来说任何一个这个角度我们都可以这么拆啊,然后这样的话呢我们可以看到,如果我们对于这个左边这个场景啊,咱们从上往下看,从上往下看,看到的就是这样这么一张图,然后呢我们这个入射方向假设还是朝外的哈。

入射方向跟反射方向,他们两个在方位角上的朝向正好是相反的,你会发现这么一个一个这个神奇的事情对吧,那么在这个角度上相反,其实就是加上一个派对吧,然后我们知道这所有的这些角度都是按二派来循环的。

所以说我们这个出色的这个这个five,或者方位角和入射的方位角的关系是什么呢,就是入射方位角加上一个派或者减上一个派都是一样的,然后这个对这个二派求魔。

我们就可以求到这个呃这个出射角的这个f那初始角的c塔,那再简单不过了对吧,这个是反射定律,直接说了呀,c它必须一样,theta肯定得等于c大i那有sa有fi,那么入射方向而出射方向我自然就可以算得出来。

没问题吧,那这样一来呢,就是说不同的方法来算这个角度非常简单啊,这块儿没什么问题啊,然后我想了想啊,这里应该是嗯我想想哈,这里应该有一点哈,就是说我们之前在提布林逢模型的时候啊。

我们说这个布林音缝和缝他们两个区别是什么呢,就是说我们要考虑这个所谓half vector,他们这个omega看o的中间方向和n它俩是不是足够接近对吧,我们不考虑什么呢,我们不考虑说是反射光和出射光。

是不是就是镜面反射光和出射方向是不是一致对吧,那个是为什么呢,就是因为大家看啊算这个反射的这个毕竟不是很简单,它得算一个点称对吧,然后还得有这个这个加法什么东西的。

然后这个算这块肯定是不如你直接算这个两个这个half vector简单,只要加起来normalize就可以了,对吧好嗯,这块是多提一句啊,那么反射方向咱们可以这么算,然后反射方向算的对了呢。

自然而然就可以得到这么一个这个这个情况啊,就是说我们任何一个光线从呃试点出发达到任何一个位置,比如像这里啊这里,然后他正好反射出去,应该这个情况下是正好反射到了某一个这个这个光源哈。

然后就会看到这么个效果,然后镜面函数写对了之后呢,肯定这样这样就是对的,但是有一点哈,咱们这节课里面给大家忽略了一个事情,那大家想所有的反射可不是都能拿b2 df来描述嘛对吧。

那么这个镜面反射那肯定也能够拿一个b2 df来描述,那么这个b r d f的值是多少,他这个就很就很麻烦了好吧,这里涉及到一个这个这个嗯呃所谓delta函数这么一个概念哈。

在这里我们这个就不给大家多说了啊,就是说他呃b r d f我们理解成是在一个固定了入射方向之后啊,在出射方向上应该是一个分布对吧,然后它现在的分布就集中在镜面方向上,一个方向镜面反射方向上。

所以说写出正确的b2 df没有那么容易,然后折射上更是如此啊,那咱们这里是算是多说一句,有兴趣的同学们自己推导一下是吧,然后那我们现在开始来说这个折射啊,那么折射是另外一个现象,大家这个见得多了对吧。

然后这个铅笔在这个水中会显得发生了折断,然后这个呃这个折射光通过了一个某一个什么物体之后啊,它会发生在这个路径上的平移对吧,然后以及说一束光线平行光经过了棱镜之后。

它会被折射成这个呃呃会会因为它的各个不同的这个波长,有不同的折射率,被分解成不同的这个光线对吧,然后有不同颜色的光线,那这些都是折射现象啊,然后这里说清楚一点啊。

咱们这个折射现象在这个光的这个所谓色散这么一个呃这个现象中,仍然是采用这个几何光学的形式来描述这个折射啊,并没有什么什么涉及到波啊或者什么东西的,并没有。

仍然还是认为他是这个这个啊几何光学光沿直线传播传播,只不过啊它有不同的折射率,不同的波长,不同折射率,那么这右下,角这幅图呢这个现象大家看到的是什么呢。

这个现象呢在图形学中我们管它叫做cost stics,costcs,在国内有一个翻译非常不合适,叫做焦散啊,胶是聚焦的,焦散是散射的散,然后这个呃我认为不合适。

是因为这个看到costx永远的原因是因为聚焦,而不是因为这个散射,所以从这个角度上来说,我们就管它叫costics,这个costx怎么形成的,是光线打到这个海水的表面,但是这个海水表面凹凸不平的对吧。

然后就就是说肯定它这个这个光线会往不同的方向去折射,那么对于这个这个海底的某一个点来说,它,势必呃应该是有几率就是几率接收到来自于不同方向上,然后打过来的光都正好打到这个位置上去。

那这种情况就好像拿放大镜把光给聚在一块,那这块就显得特别亮对吧,那就是说这种情况下,就在某些地方呢,它正好会形成这么一些条状的这些东西,哎这个就就非常有意思。

当然这一块呢对于渲染来说是一个灾难性的这个这个这个这个考验哈,就是对于这个我们教的pass tracy是不适合这么做的,咱们下节课给大家多说好吧,好,咱们回到反射折射什么的事情上来啊,折射现象非常。

多对吧,折射呢怎么给定这个折射入射方向和这个法线怎么算这个折射方向呢,这也是有办法的对吧,这个定律呢叫做这个斯内尔定律,然后又叫折射定律对吧,这个大家之前这个肯定也是学过的啊,这边稍微挡了一点哈。

折射定律说了什么事情啊,首先这个折射和反射一样,都会发生在这个入射方向和这个呃法线形成的平面内,然后呢咱们就可以针对这个平面来看,那么他说了一件什么事呢,如果我们定义这两个夹角啊。

分别是这个呃注射和法线以及折射和反向的反向延长线,它,们之间的夹角分别是c塔x c大t也是入射角和折射角啊,他满足什么关系呢,那就是入射角的正弦啊,然后和这个折射角的正弦。

他们之间满足一个这个折射率相乘相等这么一个关系,那什么意思呢,就是说不同的材质我们可以规定它有不同的材呃,不同的这个折射率,然后呢我们认为这个水比如说1。4或者这这种折射率啊。

然后这个折射率呢就是就是说我们承载它对应的这个入射入射角啊,这这折射角啊就是在这个在这个材质内的这个角,它的正,弦得到的结果永远是相等的,哎这就非常好,这说明什么呢,这说明有这个折射率啊。

我就可以算出c的诶对吧,因为我们刚才说的c加fi分解还是还是存在的,然后这个theta呢这个这个入射角知道,那么这折射角c塔就可以算出来,那我们刚才说theta跟fine是不是都一样,算对吧。

然后呃然后这个在的话,我们我们这个跟反射一模一样,这块儿这块儿就是说嗯大家可以看到,如果我从上往下看它的这个方位角度来说,这个无论是折射还是反射,它的这个方位角的朝向,它都是这个和他们就是。

折射光啊和入射光相反,然后反射光的入射光也是相反对吧,哎这样的话就不错好吧,那这样一来的话折射我们也可以算出折射方向的对吧,然后呢我们刚才说的折射率这么一个概念,然后空气基本也是一水呢,差不多算是1。

333啊,我刚才说错了哈,我以为是1。4,然后这个玻璃它就更大一点诶,然后大家发现这个钻石是非常可怕的,这个钻石是2。42,这个折射率折射率就非常高,那折射率非常高,就意味着这里这个光啊进来之后。

它会被折射的非常厉害,就是折射的非常小对吧,这个折射角就非常小,然后呢以及它折射率非常高,它就会体现出各种各样不同的这个这个呃波长的光,它会被这个折射的这个不同程度就会就会被这个这个钻石体现出来。

这就是为什么我们看钻石的时候,就会觉得他这个闪闪发光啊,这个它会有各种各样的这个不同颜色,五颜六色啊,呃原理就在这儿啊,就是因为它折射率非常高,好那么这是折射率,那么我们刚才说啊对吧。

这个有了这个折射定律或者4。2定律,那这之后呢我们是不是就可以把这个嗯,这个折角给算出来对吧,给定这个入射光和法线,那这个太好算了,这剩下的这个这直接我们就可以写出来这个式子的。

只不过是写这个式子的时候呢,我们不是算算折射角,而是我们要算它的这个折射角的余弦,为什么要这样算,大家很快就会知道说我们为什么要这么算,那折射角的余弦自然是一减正弦平方开根号对吧,那正弦呢等于什么呢。

把这个呃左边这部分呃,把这个折折射的这个嗯被折射到的这个这个戒指里面的折射率啊,拿左边去,然后这边我们会发现可以展开变成这,么一个式子变成这么一个式子,然后这里呢大家就会发现一个现象,什么呢。

就是说啊我们要算出来一个夹角的,不管是多大的夹角吧,然后我只要求余弦,我肯定能算出来一个有意义的实数对吧,是这个意思,那如果说我这个公式这个这个得不到这么一个有意义的石柱,那就意味着折射不可能发生。

哎这个事情就很神奇对吧,为什么呢,大家可以看到这个式子确实有可能在某些情况下啊,它是没有什么,是在实数上是没有什么意义的,什么情况下呢,因为很明显大家看到一个根号,根号,在什么情况下是没有意义的呢。

那就是在这个根号内部的这些东西小于零的情况下,是是不是没有意义的对吧,那我们想一想啊,在这个根号里面这么一串数它要小于零,那是不是得保证右边这一项它得是大于一,有可能大于一,没错吧。

那右边这项有可能大于一,那这个我们知道这一减cos平方怎么也不可能大于一,那如果要大于一,只有可能是这个比例大于一,那这个比例大于一反映了什么呢,反映了说这个这个呃一塔i呃。

大于一塔t也就是说啊我们得出了一个什么结论呢,在这,个e太i大于一大t的情况下,也就是说当我们的入射的这个戒指啊,就是从某个戒指来啊,折射到某个戒这戒指去啊,入射的戒指和折射的戒指,那入射的介质。

如果它的这个折射率是大于折射的介质,折折折射的这个介质的折射率的诶,这种情况下就有可能会出现没有折射这么一个现象,而这个现象大家很熟悉,这个就叫做全反射现象,对不对,这里我们就是说简单的推导了一下。

这个这个这个全反射现象发生的条件,那我们说啊啊只有说在入射的介质是一个更密的介质上对吧,才会出现这种情况,其实情况嗯从这个呃空气到水里是不可能的。

因为空气里面一大i一定小于水的一台t这个比例绝对不可能的,ie对吧,那只有可能说反过来反过来什么呢,那咱们来看这么一个现象,这个现象叫做这个snail's window或者叫snails circle。

他是什么意思呢,就是说人在水底对吧,人在水底往各个不同的方向去看,我们可以看到嗯,这个只能看到一个这个锥形的一个区域,这是在水底拍了一张照片,大家可以看到在这个追星我们可以看得见诶,在这个追星之外。

我们什么也看不见,为什,么看不见呢,大家可以看左边示意图,因为如果我从这个点,然后我往这边发射光线呃,呃发射一条光线到到这边的时候呢,它的折射角就已经达到90度了,所以基本上往平的方向去了。

如果这个角度再大一点,它就会直接所有能量都会反射反射到池子底下,那当然光源来自于上面啊对啊,所以说到底下我就看不见了,如果我认为光线就弹射一次的话啊。

那这样的话就是说我们只有一个很小的区域是可以看得到的,那这个区域是多大呢,这个还有人算出来这个角度啊,97。2度,然后所以说这个还是很有意思的一个事情啊,就是说全反射现象很容易发生,为什么要提这个事情。

是因为这个嗯嗯在之前大家做这个光线追踪的时候啊,其实大家就应该遇到这个现象了,但是没有遇到是怎么回事呢,是因为大家在这个trace一个这个球的时候啊,这个trace球的时候球是有一个很好的对称性质。

就是你折射进来的光一定可以被折射出去,这个是没问题的好吧,然后这些自己大家可以画一画,它就会发现这个在球上啊,或者在圆上这种折射他这个呃它的这个入射点和出,射点有一个很明显的对称性质。

然后嗯这样的话可以保证你折射光一定可以出来,但是你比如说大家想象一下,如果大家在做这个retracing,做一个这个呃兔子好吧,有一个兔子,然后这个它各种各样复杂的形状,那是光线可以穿进去。

假如是玻璃兔子啊,光线穿进去之后,它有可能就是在内部会发生全反射,然后这个这块是需要检验的,没问题啊,说这块就是说我们为了把这个光线追踪做对很多这个物理现象,所以都是都是需要考虑的,好吧啊。

同样道理回到我们刚才的话题上来啊,我们说这,个折射肯定也得对应一种b2 df,但是呢这里这个我们说b2 df这二是什么意思呢,是反射对吧,它表示的是反射,那折射它显然不是反射,那它应该叫什么呢。

它应该叫b t d f对吧,然后这个t表示的是transmit,是指这个折射的意思对吧,然后就是说呃这个这个呃b pdf和b2 df其实统称起来,我们可以管它叫bs d f,就是s表示散射。

就是这个不管是反射还是折射啊,我们都认为是一种散射对吧,呃被这个嗯某个光线,某方向光线被散射到其他方向上去了,叫b s d f,所以之后大家见到,b s d f其实是一种统称啊。

b r d f加b t d f,平常情况下呢,如果大家直接说b2 df也基本上也是这个意思吧,很少有人是严格意义上区分这个反射和折射好,那就这个意思了,那咱们呢现在再来提另外一个事情啊。

就是说关于反射跟折射这一块,有好多这个各种各样不同的这种这种这种性质啊,有趣的性质,这个给大家讲的一个性质呢是叫做什么呢,叫做非念,而像这个菲涅尔项目是干什么的呢,哎大家可以看到啊。

这个呃我们有这么一个例子,我们可以看看这三个不同的情,况这是什么呢,这是一本书啊,这是一个书桌,首先抵着墙放,然后呢这个书就是竖着这么放,就是就是靠着墙,然后他和这个周二有垂直啊。

然后咱们可以以不同的这个视角啊,看过去,看过去之后我会发现有一个神奇的问题,什么问题呢,就是说如果我是垂直往下看,这个时候我几乎看不到什么反射,那如果我几乎是凭着这么这么往前看。

然后我会发现这个桌子反射出来这个这个呃书反射都特别明显,对不对,会有这么一个情况唉,也就是说啊有多少光被反射,其实这个是有讲究的,就是,说这个是和你的这个入射光有关系的,你这个入射光进来之后。

和它的法线的角度决定了有多少能量被反射对吧,那我们为什么要提这个话题啊,是因为咱们刚才说这个这个有有有光呢,达到这个这个呃物体某个表面啊对吧,然后它会有一部分能量反射,有一部分能量折射,那到底是多少。

那通过菲涅尔向我们就可以来解释到底有多少能量发生了反射,有多少能量发生了折射,对吧好,那我们刚才说啊,一个基本的观察是这样的,就是说啊嗯在我这个角度入射的角度哈,如果一根光线。

入射角度它和法线几乎是平着的,那么就认为大量的能量会被反射掉,呃那这里这张图我们可以看得明白,比如说咱们就只看这个红线,马上再说别的哈,先看这个红线来说,这就是这个菲涅尔想告诉我们的。

如果说啊一根光几乎和这个物体表面完全平了,那它就会完全被反射掉,那如果说这个这个光呢和这个物体是垂直着的对吧,呃那这样的话呢这个呃嗯就是更多能量会直接穿过去,就是会发生折射,反射的能量就非常少。

智力才大家看到低于5%对吧,就这个意思,那么这里,呢有几个事情说一下,一个呢是这块儿啊,这个嗯另外两条线表示的是什么呢,表示的是一种所谓的极化性质,这个呢和光线的这个波动性有关。

就是光线啊它其实是沿沿着各个不同方向,它有震动的,然后这个极化就是说它只沿着某一个方向震动,s和p呢是两个不同的方向的这个这个极化或者说震动,然后就是说正常我们认为光呢这个s方向也有p方向也有。

基本就是s和p方向的这个平均,所以咱们平常不用管这个这个呃极化现象,目前也没有什么渲染器真的在考虑这个,这个极化了的光它们是个什么样的情况好吧,然后就是就是这么回事,那么呃这里我们就只看这个红线就行了。

那么这是一第二要跟要跟大家讲的事情,就是这么回事,如果说大家坐车子啊,不管是做什么车子有玻璃窗的,然后呢你这个你可以完全观察到这个现象,什么现象呢,你如果对着窗子看,就是垂直的窗子看。

你是可以看到外面没问题,可是如果你看前面几排的人的窗户,然后你会发现你基本上看到的反射出来的这个司机啊,或者是这个车子前面的东西,哎,为什么呢,是因为你,看前面那几个人,这几排的人的窗户。

你这个这个视角这个方向基本上来说是这个这个几乎跟这个玻璃平行,或者说跟反应垂直对吧,那这种大量的反射会发生,你就会看到反射的东西,就好像那是镜子对吧,垂直的时候你就不是诶,所以说很多东西可以这么解释。

那是菲尼尔像呢说的就是这么一个意思,哎哎呀哎呀,不好意思啊,嗯是这么回事,我刚才不知道说到了什么,这个触发了,嘿siri嘿嘿真是心好吧,这个可以啊,嗯当然了,这里呢只是一条曲线。

它是反映了对这个某一个材质它的折,射率是1。5的一种这个呃绝缘体啊,这他是这么一个情况,但是我们既然提到这儿哈,就是说绝缘体是一种这个呃嗯有着某一种特定的这个飞鸟尔像,那么对于这个呃叫什么呢。

就是导体对于导体来说,它又是另外一种飞鸟而下,咱们回回回到这个话题啊,我们刚才说什么来着,说这个对于金属来说啊,金属来说它的这个菲尼尔像就和这个绝缘体就不太一样对吧,导体的这个菲涅尔像。

即使是在你垂直看着过去的情况下,它也是这个反射很多的诶,那这就反映了一个问题啊,什么问,题呢那就是说这个嗯我们为什么这个照镜子,我们用的是这个这个银质的镜子对吧,或者说我们用的是这个铜质的镜子。

是因为这个这个他们在任何情况下反射率都挺高的对吧,都有大量的能量被反射,这样我们可以看清自己,你很难见到谁去这个这个叫什么,去把一个玻璃擦得非常亮,然后当镜子对吧,这是不可能的。

因为玻璃是呃是这个叫什么绝缘体对吧,那所以绝缘体和导体它又有这个区别,然后呢这个我们刚才说这条曲线啊,它这个是先降再升,这个也很也很神奇对吧,也就,是说有很多这个很神奇的各种各样的这个这个现象发生。

然后对于不同的金属肯定也各不相同对吧,那么菲涅尔向到底应该怎么算呢,那答案是如果我想很准确的把它算出来,公式就已经有了这个非常非常非常复杂的这个公式,就是用来算这个菲涅尔项目是什么呢。

就告诉你有多少能量,这个会被反射出啊,就是一个0~1之间的数,有多少能量会被反射,这里算是什么呢,大家看到s和p熟悉吧,刚刚讲过,这就是极化,两个不同的极化会告诉你两个不同的这个呃反射率,然后呢我。

们平常考虑不极化的光,那我们就让就是把这两个反射率给这个平均起来就好了对吧,这是我们平常的考虑,然后这个这个大家来看哈,不管它计算多么复杂,它一定得跟入射光的这个这个和法线的夹角有关系。

也得跟这个材质有关系,就是介质啊,就是说你这个入入射的戒指和折射的这个介质有关系,所以肯定跟这个n1 n2 ,就是我们之前说的一带一和一带二有关,也得跟c大i有关系,注射光有关系对吧,哎这样想就行了。

没有任何必要去知道它,但是呢人们通常会觉得这个算,起来太麻烦了,怎么做呢,所以有一个这个呃简单的简化方法叫什么呢,叫十ex approximation,然后他做了个什么事情呢,很简单。

你这个曲线我就认为它是从某一条某一个地方这个开始,然后呢长到这个90度的时候能长到一对吧,从一开始这个0度的时候,它是某一个值涨到90度,长到一就跟那个绝缘体一样,对于导体来说。

我也不考虑它下降再上升了,我就考虑他从比如说90%,我要上升到这个百分之百对吧,但都是这么一条曲线,这么一条曲线我拟合出一个曲线感就好了吧,那我认,为它的基准反射率也就是相当于在0度的时候的反射率。

垂直入射的反射率是和他们两个的折射率有关系的,然后这么算出来,然后呢我考虑它和这个它这条曲线要上升,上升到90度的时候,正好得等于e,大家看到啊,90度cos等于零,这这一项等于1-20。

然后加起来就等于一诶,很对的啊,然后就是说嗯在0度的时候等于二零,在90度的时候等于一好,那这样的话它不管是对导体还是这个绝缘体哎,他都可以这个近似的非常好。

那所以说ex proximation得到了非常非常广泛的应用,在,这个图形学里面啊,就是只要不是说对这个材质的追求非常非常高,就是说正常情况下它是一个不错的近似好,那么讲到这里呢,这个呃折射率哦。

有同学反映说导体的折射率是负数,说的太对了,没有任何问题,我这里没没这个这个叫什么,详细展开说这个事情啊,就是说导体的折射率,你正常情况下不仅要一个n还要一个k,其实相当于是这两个数。

或者你理解成它是一个负数,然后就是说这个没有那么容易,但是就是说正常情况下我们实现起来还是不是这么复杂的好吧,那这里说,到这那么为什么要提这个所谓菲涅尔像呢。

就是说我们这里要引入一个真正的基于物理的材质,这种材质叫做微表面材质或者叫微表面模型好,那么这个微表面模型是什么意思呢,就是说我们先考虑一下啊,到底是到底是怎么回事,什么要提出这么一种模型呢。

对这里呢我们就先看这么一个这个这个卫星图啊,相当于是这应该是宇航员在某个空间站拍的这个图啊,然后嗯这个图在看什么,据他们的这个这个这个文章来说啊,这里看到的是这里有一个高光,而且这个高光是发生在。

澳大利亚啊,是这个意思,然后这个高光怎么来的哈,大家可以看到这上面,这应该是这个这个能够反映出太阳应该是在某一个方向上啊,然后观察点在这边,然后我们看向这个地方去,我们可以看到有一个高光。

然后这个高光呢这个呃大家可以看到呃,挺完美的对吧,就好像说我们在渲染一个这个球面一样,然后得到一个相对完美的高光,然后这个就很神奇了,不对对吧,大家觉得不对不对,在哪儿不对。

在这个我们感觉这个这个地球它的这个表面上来说,它又有山,又有一些建筑物啊,有,些树啊,这些东西完全看不到,我看到的就是一个平面,对不对,然后我看到就是这个平面上会产生一些高光。

这个高光看起来还有一定的粗糙程度,对它不像这个镜子对吧,诶那这就说明什么呢,这就说明从远处看啊,从远处看我看不到各种各样不同的细节,就是像这些这个树啊,人啊动物啊,在这个这个角度我绝对是看不见的。

我能看到的是什么呢,我能看到的是整个一个这个表面,我如果认为它是瓶子,它应该有一定的粗糙程度对吧,然后这里其实还可以这么解释,这个看到了,如果是,澳大利亚我信了哈,就是说如果真的是澳大利亚的话。

大家知道澳大利亚的地形,这个呃正中间有一大片全是沙漠对吧,沙漠这个东西呢,你就可以理解成是一些这个这个呃,某一些这种高低起伏的这么一些分布对吧,你虽然从远处你看不到这么些分布,你认为它是平的。

但它其实可以把光导到不同的这个方向上去对吧,那也就是说这个沙漠从远处上看,看过去来说,就好像是一个平面,然后它本身可以以一定的所谓粗糙程度来反射的这个光,那么我们提这个微表面模型啊,其实就是。

基于这么一种假设,只要当我离得足够远,我们看向一个物体的时候啊,很多这种微小的东西我们看不到,我们看到的是他们最终形成了一个对表面的一个作用,对这个对这个光的最终形成了一个这个这个总体的一个效应。

是这个意思,那么微表面模型呢说的就是这个意思,那咱们来看看所谓微表面模型呢,它做了一个这么一个事情,它假设物体的表面是粗糙的,没问题,但是我会假设说呢,我这个从远处看呃,我看到的基本上就是平的一个表面。

没问题啊,就是这个就跟我们刚才看这,个卫星的图一样,只是相对的对吧,从远处看东西是平的,然后从近处看,我们确实能看得到这个一个一个的小的这个微表面,micro的这个这个层级对吧。

从这个远处看叫macro的层级,看到的是平等,那么这个微表面模型假设这么一个事情啊,首先我从远处看看到的是一个平面,并且是粗糙的好吧,就是就是这个意思,所谓粗糙就是它的所谓它的材质看上去是粗糙的。

没问题,那么如这个从近处看过去,我可以看到凹凸不平的表面,并且每一个这种小的这个表面的微圆,我认为它都是一个这个,这个完完全全镜面反射的一个这个物体,但是之前学过物理,其实也解释。

也是这么解释这个漫反射物体的对吧,什么是漫反射,它可以把这个光反射到四面八方去,那为什么呢,那是因为你可以认为所有的微表面它都是像一个很小的三角,微小的镜子,他说这些镜子超级小超级多。

然后在这各部规则啊,最后形成的这个分布,所以其实大家不知不觉中啊,再用这个微表面模型,那么总结起来就,是微表面模型,认为从远处看看到的是这个呃,看到的是材质或者是外观,从近处看看到的是几何。

这个概念其实是非常重要的,一直在现在的图形学的研究中,还在用这个概念啊,就是说如果如果我从这个近处看,我可以看到不同的几何,在我把镜头拉远的情况下,不同的几何会消失,并且会变成材质,就是这个意思。

所以本质上来说材质和几何是有一定的关系的,好那咱们回到这个微表面模型上来啊,大家这个在这个理解清楚,就是说每一个微表面我认为它都是一个微小的镜面,好吧,然后呢它这个微小的镜面。

每一个呢它都有自己的朝向对吧,然后每一个微表面有自己的法线,就这么个意思好,那么我们研究这个干什么呢,正是因为我们可以研究这些微表面,它们本身法线形成了一个分布,这是什么意思呢。

比如说啊咱们看这个表面看起来挺平的对吧,就意味着这些微表面,其实他们分布这个法线基本上来说差的也都不太远对吧,像这样基本都是朝上的,就是这个意思,所以如果我们把它的分布给画出来。

它其实基本上来说他们的法线会集中在这,个这个嗯这个宏观的表面的这个法线,它的周围这一圈对吧,离得非常近,差得不远,把这个分布画出来,哎这样的材质它就对应就是所谓glossy的材质。

那大家肯定会说这个那镜面,那肯定就是说这个所有的微表面朝向都是沿着这个宏观表面上对吧,他这个理想情况是的就是这么回事好吧,那么另外一种情况,那大家可想而知对吧,那如果表面粗糙,什么叫粗糙呢。

粗糙就意味着所有微表面它可能会沿着不同的方向对吧,它是这个朝向是往各个不同的这个方向上去对吧,它往各个不同的,方向上去,那就意味着它在方向上散非常开,如果说我要把它给画出来的话,它的分布哈。

然后那就离这个中心它可能离得非常远,都会有它的分布的值,这种情况下,这个微表面它它这个就会形成一个所谓这个defuse的这种材质,就是慢慢这个材质,那也就是说什么呢,也就是说通过这个微表面模型。

我们可以把这个表面的粗糙程度啊,用什么来表示,用这个微表面的法线分布来表示,对不对,它的法线分布集中,那这就是glossic,它的法线分布分得开,这就是这个漫反射,所以说微表面模型正是利。

用了这么一个思想怎么做的呢,大家可以看到这个右边哈,呃下下面哈,这个微表面模型它本身只是一个b2 df,对不对,b2 df考虑入射方向,出射方向对不对,然后b2 df呢首先他考虑了一个非念而降。

这个菲涅尔想告诉我们说啊,对这个根据我不同的入射方向有不同不少这个就叫叫什么来着,就是说不同呃这个程度的这个反射对吧,也就是说如果说我的观察方向,我入手方向和这个法线几乎是平等的,大量能量被反射对吧。

如果垂直就少量能量飞跃而下对吧,先把能量做对,那么,下面一步我们先忽略中间啊,先下面一步我们考虑它的这个法线分布,对它的法线分布,我可以用某一个分布来表示。

然后这个分布呢表示了它在这个任何一个给定方向上,它的这个呃分布的值是多少对吧,它可能是这个集中在中间的,那么这里呢我我会发现我又用到了这个概念叫half vector。

这have vector是干什么的呢,这个大家还记得对吧,给定这个入射方向,出射方向,我现在要问有多少这个这个所所谓微表面啊,有多少微表面能够把入射方向的光反,射到出射方向上去,我问这么一个问题对吧。

那那那这个是怎么怎么来理解呢,就是说啊,只有当这个微表面,它的这个法线方向和你这个half vector所谓中间方向完全一致的时候,这样的微表面才能把入射方向反射到注射方向上去,那否则的话。

因为它是完全是镜子嘛,还记得吧对吧,微表面我们都认为是完全的镜子,那只有它这个在法线方向沿这个中间方向才有这种反射的可能性,那么我现在就问在我所有的这个分布里面,有多少微表面。

它的法线方向是沿着这个方向去的呢,那自然就,是对这个呃这个这个呃法电分布诶,往这个方向上的这个分布的值进行一个查询啊,这个这个这样理解就没有问题了,好吧。

就是说你只要能够理解说什么样的微表面才能把入射反射到出色对吧,就可以了,那这就是它的这个法线分布这一块,那么这里中间一块叫什么呢,叫shadow in masking term,这一块又叫几何项啊。

然后就是写成g那么这项表示的是什么呢,这项其实表示的意思是这么回事,大家可以想象一下啊,就是说我这些微表面啊,它本身它既然是这个排在这个物体表面上去的,那有可,能他们本身会发生互相遮挡,有这么一个情况。

你比如说啊我有一束光从左边打到右边这么一个这个这个微表面上啊,一个一束光从左边它非常非常斜着啊,他和这个和这个这个呃发现非常垂直呃,像呃像这种情况下,然后几乎和面都是平的了。

那么左边这些面很有可能就会挡住右边这些面,那就有很多就是右边有很多这些面接触不到光对吧,那也就是说他们会发生自己给自己的投影阴影对吧,反过来道理一样,如果说你从另外一个角度看过去,就是说光是一个方向啊。

你这观察,方向也是一样,你从另外一个角度看过去,也有可能说诶我这个有一部分因为遮挡,我看不到这些这些微表面哎,那也就是说嗯在这种情况下,我们会发现这个有一些微表面啊,失去了它们的作用对吧。

然后也就是说原本我算出来是某一些反射的能量,但其实没反射那么多能量,有一些被挡住了对吧,也就是说这个shadow in masking考虑的就是这么一个现象,那么我现在多说一句。

什么情况下比较容易发生这个这种自遮挡,自投影这种现象呢,那就是说我的光线几乎是平的,打到这个表面上的情,况我们给它起一个名字,这种入射方向我们叫grazing angle。

就是所谓grazing angle,就是几乎和面平着进来啊,这种就是说啊,无论是光线方向还是观察方向,只要他们接近这个grazing angle,那这种情况下这个shadow masking。

shadow in masking就容易发生,那也就是说如果没有这一项,我们可以想象,如果去渲染一个球,那么在他的球的这个边界上,我们知道这个我们打过去一根光线,它几乎是brazing angle对吧。

然后这种情况下它边界的时候会特别亮,然后呢如果我用了这个shadow mask边界的就没,有那么亮,好吧,那这么说,那么这三项都非常有道理对吧,呃这个菲尼尔像表示总共有多少能量被反射,然后能量。

那么到底这个是怎么反射的,决定性的这个这个性质就是它的法线分布到底是集中开始发散,然后咱们为什么要查询法线分布上这个往这么一个方向上去,confect方向我们也讲清楚了。

那么后面这些剩下的呢就是为了这个各种各样推导的时候,中间涉及到的各种各样的变换,他们的这个所谓结构变是什么东西,都是怎么算,的这块就不给大家多说,那么这个微表面模型就这三项最重要,好吧,咱们说明白。

然后呢微表面模型咱们为什么要提,因为它太强大,强大到什么地步,大家可以看到这么几个这个例子。

大家可以看到这是一个用autodesk fusion这个360这个渲染出来的图,这个摩托啊,然后这个非常非常的这个高质量,大家可以看到这个它可以表示各种各样本邮箱啊,这块仪表盘啊,这块对吧。

然后仪表盘显然是这个defuse的了对吧,呃外面这个玻璃呢显然它是玻璃这种材质了对吧,然后这个金属这块和这这个,嗯非常光滑的金属,就近似于这个镜面了哈。

然后就是说非常厉害,但他还可以不止表示说这些金属这些东西,就是说微表面模型可以描述的东西特别特别的多,大家看到这个皮的这个这个上面这个表示这也非常非常的好,但是它应用一些凹凸贴图什么的对吧。

大家可以看得清楚对吧,然后就是说这这块关于这个皮子上面这些表现,他表示也非常好,然后因为什么呢,因为这个微表面模型它就是基于物理的,对不对,那这个做的真的是,非常好,那当然它还可以做什么呢。

它甚至还可以表示这个不是皮子这些东西啊,像这些这个木头,它也同样可以表示对吧,像这些这个微表面模型,它本身可以描述的东西实在是太多,当然这里跟大家多说一句啊,描述这个木头需要更复杂一点的。

基于这个呃微表面模型之上,还要再研究出来一些新的东西,才能描述这个木头的这个这个呃这个感觉哈,就是它如何和光线进行作用,但是不管怎么样,这是微表面模型,它的一个这个非常非常厉害的地方,好吧。

那为什么要提,这就是所谓state,of the art,这就是大家现在在用的这个这个模型,然后这个模型基本上来说现在是只具有统治力的吧,这么说就在各种各样的电影里面啊,如果大家提到所谓pb 2。

也就是physically based rendering,呃,或者是shading,他们大家就一定会使用这个微表面模型,当然微表面模型有自己的问题,比如说他的diffuse,像这个这个很少。

就是有时候这个呃人们需要在上面额外的加入一些这个呃,漫反射的东西,然后当然这样就不是基于物理了对吧,然后就是有很多各种各样的这个这个呃做法,那么这里,呢再给大家多说一句,就是所谓这个微表面模型呢。

这是一个统称啊,统称有很多不同的微表面模型,比如说cook torrence模型,比如说word模型,就有很多各种各样不同的模型,但都遵守这个呃微表面这一套好吧。

然后这个呢咱们下节课也会稍微给大家再多说一些,这个这些各种各样不同的这个微表面模型好,那么呃当然这非常厉害,那咱们下一个话题给大家多说一点,就是这个嗯什么呢,另外一种区分材质的方式。

我们刚才其实已经在用这个概念了啊。

咱们看这幅图,这个图是在干什么呢,这个,图是一个电梯间的内部啊,咱们把这个事说清楚,电梯间的内部,那么电梯间正常大家都知道是四面,几乎全是金属对吧,那金属的话是平面对吧,然后呢这样的话。

如果说我有这个头顶上有一些小灯,而电梯间就是这样的对吧,一些小灯它会打到这个金属的表面上去,它会形成高光,那是肯定的对吧,那新生高光大家说这个我们学过高光呢,这高光可不是出来应该是一个圆或者一个椭圆嘛。

那怎么会得出来会是这么一些这个这个神奇的这些,直接一条一条的这种现,象咱们先不考虑多次这个反射,就考虑一次,就考虑直接光照,这种情况下,这个为什么会看到这种现象呢,那如果有同学仔细看这个这个材质的话。

大家会会看出来一些问题对吧,那首先肯定是因为材质,因为因为说这里面就是看到不同的外观,就是因为不同材质嘛,咱们从一开始就在说,那么这个材质到底发生了什么,难道它不是金属吗,它是的。

但是它有一个什么问题呢,它是一个被磨过的金属,大家如果仔细看,从这个图上都可以看得出来,它是沿着这个向下方向上下方向啊,它是这,个这个这个这个往往一个方向磨过的金属,所以如果从微型微表面的结构上来看。

你会看到说哦它基本上来说从上到下它是一条沟,一条沟一条沟,这样这样形成的一个金属表面,它不是一个平滑的哎,这种情况它就会造成这个非常非常奇怪的,这个或者说看起来很很不错的这个这个嗯叫什么呢。

就是奇形怪状的高光啊,这个这个非常有意思,那这个怎么怎么回事啊,这就是我们要给大家说的呃,区分材质的这个一类的方法,什么呢,就是我们把材质分成两类,一类叫做各向同性材质,一类叫做各项异性材质。

就所谓iso tropic是各项同性,an isotropic是各项异性,那么从这个意义上来说,大家第二次接触这个概念了对吧,咱们一开始在说这个各项异性过滤对吧,我们提过这个事情对吧。

这个各项异性过滤是什么意思来着,我们不是说这个它可以支持这个这个长方形的查询对吧,然后就是说不一定要求正方形,那么同样道理啊,这个各项同性各项异性其实这个在图形学里面,这个基本体会的意思是一样的。

所谓各项同性就是我们认为它的微表面并不存在一定的方向性或者方,向性很弱这个意思啊,然后比如说啊咱们看这个这个物体的表面,然后但是呢如果我们显示它的这个法线的分布,我们会发现哦,就是说它没有一定的方向性。

那么对于刚才电梯间,很明显水平和竖直方向完全不一样,对不对,那如果说找一个这个这个物体的面的法线,然后这个呃不是找一个,就是把这个整成一个面,它的法线分布画出来,你会发现法线分布也是具有明确的方向。

性对吧,这就说明从微表面的方向性,我们就可以看出这个材质它是属于各项同性还是各项异性,而且各项异性呢它会有各种各样不同的神奇的性质。

好吧,那就是这个意思,那各项异性呢,我们这个呃这个具体上来说反映在b2 df上是怎么回事,那也就是说b2 df原本是两个方向的函数对吧,c大对吧,c大呃不set down fc到c的fi这个输入方向。

c大r fr是输出方向,哎,这是整个的b2 df,如果这个b2 df它不满足说在方位角上旋转,然后得到的还是相同的b2 df,我们就管它叫做这,个各项异性的材质,什么叫在方位角上旋转,很简单啊。

大家假设说是这样哈,就是说我我现在这个有个平面,然后我的入射角和方跟出射角是这样的啊,这这样一个这个这个这配置啊,现在就假设是这样,然后呢如果我是这么旋转,你会发现啊,这个入射角和出射角的这个方向啊。

它们的相对的方向几乎没有变化对吧,只是说他们的方位角都在都在进行着旋转,也就是说如果我认为我这么旋转这两个这个弱热点方呃,和入射的这个方向和出射方向的话,如果我旋转之后,我看到的是相,同的b2 df。

那它就是iso topic,就是各项同性,如果说他们不止和相对的方位角有关,还跟绝对的方位角有关,那也就是说这个b2 df就是各项异性的,那这是从b2 df的角度上来考虑,这个从微表面也可以考虑。

从b r d f也可以考虑,没问题,那这样的话咱们看两个例子啊,这个球很显然左边这个球大家看到这个高光很熟悉各项同性,然后这个高光形成了一个圈,看看非常神奇对吧,然后这个这块儿就是各项异性。

那么对于这个门把手来说,大家可以发现啊,他异性的地方还不一样,它是,一溜一溜的拥有各自不同的各项异性属性对吧,可以看到这么一个性质,然后这个cd上也可以这么理解吧。

但是正常情况cd我们会认为它是另外的一些性质来解释啊,咱们这个不多说啊,各项异性从b2 df角的角度解释。

就是这个意思和方位角,绝对方位角有关好,那么大家可以看到在生活中啊,有很多各项异性的材质几乎是人造的哈,就是说这个大家可以看到这个锅的底对吧,这个锅的底大家很明显,这个这个自己应该都观察过。

很明显大家知道他是怎么被刷的对吧,肯定是绕着,这个连心这一圈一圈一圈这样被刷的诶,正是因为他这么一刷,使得它任何一个地方有这个呃这个这个所谓的各项异性,你就会看出这种辐射状的高光对吧,这就非常有意思。

那左边这里呢大家看到这个这个这块形成了一个竖条的这个高光,那这个跟这块就不一样对吧,那所以说就是说我们通过它这个这个长成什么样子,我们其实还可以推断说他的这个嗯,嗯实际的这个微表面的分布是什么样的对吧。

知道他们怎么被刷的,那总之呢就是这么个意思,当然这里仍然是一个渲染的,图啊这个vr简单给大家多说一句,商用渲染器啊,在这个和各种各样的这些建模软件,像什么3d s max呀,玛雅都有一些联系。

然后就是说得到广泛的应用还是不错的哈,然后虽然有人比他好,ok那么这个嗯各向异性的材质啊,那咱们还可以再看一个这个例子哈,就是说各项异性材质,我们这里提一个这个尼龙,这个尼龙怎么回事呢,大家可以看到啊。

就是说对于不同的这个布料来说啊,布料基本来说都是织在一块儿的哈,那这个大家看到正常的尼龙的织法很简单,一根压一根,水平竖直,啊各各有呃一根,然后这么无限延伸下去,那这个看起来已经没什么太多方向性了。

所以说它基本上来说我们说它是这个呃各项异性,其实完全是说他的这个水平和数值是一样的,但是它的对角线上是不太一样的,比如说往这个方向对吧,斜着的这不一样,这块不一样。

也就是反映出来之后分布它更像一个正方形,而不像是一个圆形啊,刚才大家看到这个例子,但它已经很接近这个各项同性了啊,这么个意思好,那么我们再看这个例子,这个是什么呢,这个叫velvet,所谓天鹅绒。

天鹅绒呢它有,一个这个这个很神奇的现象啊,天鹅绒他这个它其实咱们根本不应该把它当成是表面,为什么呢,因为它的这个底下织物,它那底底层哈,在底层上面它会有各种各样的这个一一条一条这个伸出去的。

这个这个呃fiber哈,就是这个意思,就一根一根的这些植物,它会伸出去,所以它其实形成了一个这个体积,它并不是说定义在一个表面上,但如果我们认为是在这个表面上。

那么我们就考虑他这个不同的这些一根一根的这个这个纤维啊,它往各个不同的方向上去,我认为可以认为是这个各项同性,但是呢我们认为它是各项异性,是为什么呢,是因为诶大家应该都玩过这个对吧,这个我非常喜欢呃。

什么呢,就是说你可以把这些天鹅绒啊,它的这个表面,把这些这种这些纤维啊给拨到一边去,那拨到一边去,你可能就是人为的造出了一些这个各项异性的效果嘛,对不对,也就是说啊你其实可以通过自己来设计微表面。

然后来改变这个他们的各项同性或者各项异性,从而改变他们的材质,从而改变他他们最后的外观,对不对,那所以说啊这个所有事情都可以这么解释的对吧,那非常好,那么嗯到这里呢,咱们差不多已经把这个材质这部分呃。

算是就基本材质啊,算说差不多了,那咱们现在回头把这个b2 df的一些性质总结起来,刚才咱们说了这么些对吧,然后嗯今天我们就把这个性质说完吧,然后后面涉及到这个b r d f的哦,哎这样这样再再再再看吧。

再看吧啊我先这个我先想办法把这个说完好吧,那么b2 df的属性我们回头来总结它,是因为我们现在已经见过了各种各样不同材质,然后现在差不多,也对b2 df的理解算是更深刻。

首先呢最简单的材质b2 df的值永远是非负的,它表示了一个这个能量的分布,对不对,那不可能说出现了什么负能量什么,当然我希望这样真出现了,这样只是巨大的研究机会了。

然后这是一个另外一个bdf的所谓线性性质,就是linuity,这太好理解了,这个线性性质是什么呢,咱们之前老早就在用,就是我们说布林防模型的时候,我们是不是分成三块。

分成diffuse和这个spllar和什么这个ambient,我们分别把它算出来了之后,也就是说这个bdf,本身我可以拆成很多块,把这很多块呢分别拿去做这个光线传播,然后我再把各个块加起来。

得到的结果跟我用整个b2 df做光线传播一模一样,没问题啊,就是说它的线性性质好,那这都好理解,那后面稍微麻烦一点呢,是这个b r d f的这个可逆性啊,我们之前说光路的可逆性对吧。

说这个我们把这个一一条光路,它的这个所有的这个方向都给反过来,仍然是一条这个嗯合理的光路,没有问题,就是光线还是会这么传播,然后呢b r d f的这个嗯所谓这个可逆性啊,更更好理解,很简。

单就是你交换这个入射方向和出射方向的角色,你得到的这个b r d f的值一定是一样的,那也就是说你的b r d f你给它一个入射方向,一个出射方向,现在你把入射方向出射方向调换,调换之后。

你会得到我严格意义上数字也完全一样的b2 df的值,这是它的这个基于物理的定义的一个好事情啊,就是说这个中间不会涉及到任何的转换,这两个是一模一样的,就是嗯b r d f啊,这个意思,那么另外一个性质。

其实咱们刚才已经在用了哈,就是我们刚才说这个在算这个入射光和,出射光算那个defuse对吧,是是应该是多少,我们考虑能量守恒,所谓能量守恒,就是说b r d f的存在,绝对不可能让能量更能量变多。

就是这个意思对吧,当然会有吸收,那么就是说如果是完全反射它的能量,也也就是原来的所有的入射的能量,然后如果说他是这个呃,就是说有部分被吸收,那它的能量就会比原来的小。

那这里呢就是简单的把这个入射的这个能量li换成了一啊,那这个积起来小于等于一,没有问题好,那这个我嗯能,量守恒这个挺重要的,因为如果不满足这个能量守恒呢,呃会出现一个问题。

就是你在做pass string的时候,咱们之前问过这个问题对吧,说这个经过了无限次的光线弹射之后,最后能量会收敛还是会爆炸,大家都会说收敛收敛是因为什么,收敛就是因为b2 df的能量嗯。

这个energy conservation静止啊,如果说不满足这个性质的话,你要稍微多一点,最后社会爆炸好吧,这是这个b rdf的性质,然后呢我们刚才提到了b r d f有两种各项同性,各项异性。

那么刚才说各项同性的话,就意味着指这个b2 df的值啊,只和这个呃相对的方位角有关,也就是跟这两个方位角的差值在二减fi有关,唉这样一来的话,它有什么好处呢,我可以写成这个形式对吧,写成这个形式。

大家立刻就会发现原本四维的b2 df对吧,和f各两个嘛,四维的b2 df如果是各项同性材质,其实它就是三维的诶,这样的话整个维度就降低了一个,这是非常好的。

然后呢更好的事情是所有的b2 d f不管它是各项同性,各项异性,它总归得有这个性质吧,得有这个嗯叫什么来着,就是就是呃可逆性吧对吧,那可逆性就意味着说如,果我交换他这个到i跟呃,不不不。

这个这个入射光和出热光的这个角色对吧,他们两个得到的结果应该是一样的,那也就是说它们的相对的这个方位角其实还不用考虑正负,就是这个意思,他们的方位角就是谁比谁大多少,这个是没有关系的对吧。

这个是从对称性上推出来的,这样的话我们就可以把它写成这个后面的这个方位角之差,再加个绝对值,我们不用考虑谁大谁小对吧,这挺好的,那这个性质好在哪儿,好在说我们后面要这个嗯给大家讲这个下一个话题的时候。

会需要呃,就,是关于b2 df测量与储存,那这样吧,嗯是这样,我现在想法是下节课的内容啊相对较多,然后这节课如果我花再花三五分钟把这个什么,把这个b2 df的测量讲完,这节课就不用再多说了。

这样下节课我们就有机会给大家多说,那个就是关于这个局部的坐标系tb n这块怎么算这块事情,因为我原本想安排的这节课,然后这个又有点多哈,这个行吧,那我就干脆把这个测量b2 df讲完啊,非常快啊。

这个就是b r d f呢,我们可以用各种各样不同的模型去描述对吧,但各种各样的模型才,仅仅是说我基于物理的一种描述或者近似,那什么才是真正的b2 df,只有说测出的b2 df才是对的,b2 df。

那走吧,那这样想,那么我们为什么要测比二df呢,那如果说我之前的模型足够准,是不是就可以了呢,那显然是以前的模型并不足够准,大家可以看到啊,这个就是对于菲涅尔项目来说。

然后如果说我们真的通过某些物理方法,我们可以测出一些非内尔向,我们会发现诶,这个绿线和这条红线好像和我的这个这个是ek proximation,或者说我们之前那些理论上的那些曲线,看起来好像完全。

不一样对吧,也就是说实际上来说这个菲尼尔像非常复杂,好像这个不是我们用那种简单公式可以描述的,那这样一来的话,这个是不是就是说我之前那个模型是不是就不太准对吧,但是确实是这么回事。

也就是物理上有很多得出来的结论啊,这些都是这个有很多简化的和实际的这个嗯这个结论还是不太一样,所以说有很多情况下需要去做测量,这一第二呢如果我可以测量,我是不是就可以不推一些模型了。

我直接用我测的数据对吧,这是非常好的,那所以说这是很有道理的,那么,我们需要去做b2 df的测量,那b2 df测量怎么算对吧,咱们想一想这个b r d f是什么,它不就是两个方向的一个函数吗。

一个入射方向,一个出射方向对吧,那如果我盯着一个着色点看啊,就比如说我现在给你一个样本,我就盯着他某个点看,那我改变它的这个入射方向,就是我我找一个灯往从四面八方来照它。

然后呢我再拿一个这个这个这个相机,我从四面八方去拍它,那这样的话是不是我就可以覆盖这个整个b2 df,它的所有可能的输入方向,可能的输出方向,对没错吧,这样一,来我们就可以做这个测量呃。

这个当然理论一些,但事实上来说它就是这么做的,大家可以看到这是一个仪器啊,这个仪器有名字叫gameal reflect tometer,名字超级长啊,然后对于这个这个特定的这个仪器呢。

它在一个球面上旋转,马上给大家解释,它又叫做spherical gantry,然后这是一个真实存在的机器,我用这个机器做过的论文啊,然后这个是在这个我的老板的这个学校ucsd啊,然后嗯现在仍然还在。

然后这是一个巨大的机器啊,这个不是照片上显示这么小,它直径得有个2米3米那样,然后就是说他能干什么,它是一个这个机械,它有两个爪子,一个爪子呢可以抓一个相机,另外一个爪子可以抓一个光源。

然后呢他把这个样本放在这个正中间,就放在他的所谓球星上,这两个爪子呢可以让这个相机和这个这个这个光源啊,而且呢它这个非常大,而且又非常精确,它可以精确到0。1度这种这种级别啊。

然后他就是和我们刚才说的这个这个测量方法完全一样,给定入射出射对吧好,那没问题好啊,ok这样的话呢呃我们就可以直接得到一个非常简单的算法,我们去枚举所有的出射方向,然后把这个光源放上去。

我们去枚举所有的这个这个出射方向,我们把这个相机放上去,没关系,然后我们测一下它的这个得出来的结果的radiance是多少,这不就是b r d f吗,不就是四维的吗。

但是大家想象一下四维这个操作可非常这个费事啊,比如说刚才那个机器,你固定了你的这个摄像机之后,你的整个的这个叫什么呃,唉这个这个这个这个光源哈,你不走一遍这个这个球面才能覆盖所有光源的方向。

那你下回换一下,你的这个相机的方向,你就得把这个光源在整个球面上再走一遍,下面再换一个相机方向,这还得了,这是四四维,对不对,二维成二维这个东西我们之前说过。

这叫curse of dimensionality,诶坏了,我们说过没,但没关系啊,反正就是说维度往上一涨,数据量立刻就上去,就是这个意思,那么怎么才能这个解决这个问题呢,之前我们提到一个这个事情。

如果我们认为我们测的b2 df是各项同性的,那么它其实是只有三维的对吧,我们就可以把这个四维降到三维哎,然后呢如果我们就用这个这个b r d f的这,个肯定性,我们只考虑相对方位角的话。

又可以砍掉一半的测量对吧,然后就是这么回事,然后我们可以设计更好的一些思路,我比如说我不用这么把这个呃球面上所有这些点,对这些这些方向对我都可采样的,我只用采样若干不同方向,我剩下的东西我可以猜出来诶。

这个是可以的,现在也是时下的热门啊,就是说关于b2 df的一系列的更聪明的测量,然后就是说呃这是这是一个方向,然后呢当然有各种各样不同的这些,类型在这里时间所限啊,这可是不给大家多说了啊。

然后嗯就是说我们测量出b2 df之后啊,肯定是要把它给这个嗯怎么说呢,肯定要把这个b2 df给存起来,表示起来对吧,我之后还要用对吧,那我要把它给表示出来,或者说存下来,那肯定涉及到大量的存储,对不对。

那这个怎么办,对不对,然后这就是就是各种各样不同的这个呃,测量b2 df之后的存储要求对吧,然后这个呃也一样,同样不给大家多说了啊,关于这块这个存储的事情,也有大量的这种这种压缩呀。

然后这种这种方面的研,究也有说用什么神经网络来做压缩,然后也是算是一个比较热门的话题,对于b2 df来说好吧,那么这里呢给大家介绍一个很有名的bdf的库,这个库是什么呢。

就是叫做moral database啊,这个m e r l叫三菱电子实验室啊,这是当时和mit在一块这个合作的项目,然后这个非常非常有名,然后这个项目呢就是说他做了一个什么事情。

他是测量了这个很多不同的这些材质,而这些材质它们假设都是这个各项同性的,当然后来他们又改进加了一些各项异性啊,咱们就先从这一点版本说,就是说他,们这个各项同性的材质。

我们知道各项同性材质b2 df 3维我只能测这个呃,两个c带和方位角的这个绝对值,方位角相对方位角的绝对值就好了对吧,那这样一来呢,他就取了90x90x180这么多次。

这个测量就每一个材质做那么多次测量,你算一算,这是超大的数啊,然后就是说这样一来,然后他就可以把这些材质都给表示出来,并且把最后的结果存到一个三维的数组里面去,好没问题,那是当然了。

大家可以看到它如果不做压缩的话,那是一个多么大的这个这个存储对,吧然后这个没问题啊,然后这个就是今天的这个所有话题了,差不多到此为止,咱们今天这个任务完成,下节课呢给大家讲这个更复杂的嗯,这个嗯材质啊。

光线传播方法就是最新的一些内容吧,然后大家这个下节课就是当这个对这个听一听,然后这个看看大家现在都是在做什么就好了好吧,然后那现在是这样,如果说呃有同学有问题,那我现在可以这个这个回答一下。

那要是嗯没有的话,咱们现在就可以当这个下课了好吧,没问题嗯,我看一下哈,有有同学说这个哦这块物理模拟哦,我,明白了是这样哈,就是说我们讲完了材质这一块之后,这节课和下节课讲完了之后。

我们就开始来讲这个呃动画这一块的内容,哦,哦不对,中间还有一个这个涉及到这个广场啊,以及颜色这一块的知识,然后这块也是图形学里面得有的东西,然后我们还有最后两节课来说这个呃这个呃物理模拟这块。

然后物理模拟呢这边算是开个头,也就是这个呃嗯怎么说呢,就是就是就是嗯完全的入门的内容吧,几乎说一说这是什么欧拉视角,拉拉格朗日视角之类的东西,然后呃时下的m p m,然后。

之后呢就会紧接着接到下一门课啊,我之前说过,有位大神要给大家讲这个物理仿真,然后以及怎么样在他的渲染器上来来做这个这个这个物理仿真啊,之后就算是接上了啊,大概是这么个安排法嗯,ok那其他呢我想一想哈。

嗯多讲一讲学术界最新的东西,我尽量哈就是新的东西说起来会更难一些,但是至少rendering这块讲到这里差不多算是入门的这个东西,下节课吧,下节课可能会多多讲一些这些,好吧啊,漫反射的。

以radiance为什么不用距离平方反比,不可能啊,肯定是要用的这块,这个不知道,什么情况好吧,然后有同学问积分为什么是一好吧,这些讲起来就稍微麻烦一点啊,这个嗯这样吧,这之后大家还是还是那样吧。

还是发到这个这个呃呃bbs里面,然后我看看助教同学们能不能这个给大家回答一下,这个ok好,那那咱们今天就到这吧好吧。

这个感谢大家啊,那咱们把时间在嗯交还给技术秘书同学嗯。