土木在线论坛 \ 建筑设计 \ 3dmax/sketchup \ 3dmax中渲染的光子图原理,解答你对光子的所有疑问!

3dmax中渲染的光子图原理,解答你对光子的所有疑问!

发布于:2021-07-08 10:52:08 来自:建筑设计/3dmax/sketchup [复制转发]



3dmax中的光子图是什么意思?
为什么要先渲几遍光子图之后再真正渲染?
光子图文件有什么用?
一般渲几遍光子图比较好?
......

我们常常会遇到关于光子的问题,可能是渲染时卡住了,可能是不知道设置几遍光子比较好。简单来说, 光子贴图是渲染器计算渲染时,直接照明和 间接照明 光子量的总和的图像,可用来调整渲染参数。而Vray跑光子图,准确说法, 是为了节省渲染最终大图的时间 。说是加快出图的速度是不科学的,出图的速度,在相同的参数下只与计算机的处理器运算速度有关。


Vray在正式渲图前,先要计算光子(或称跑光,跑GI),这个阶段里所耗费的时间跟图的大小密切相关, 大图、小图跑光结果是一样的,但小图完成速度比大图快多了,并且光子计算完的结果是可以保存再调用的。


于是我们常常先用小图来跑光保存,避免大图在每个像素上耗更多时间渲染光子图,可直接渲染最终图像,节省下大图跑光的时间,达到缩短渲染最终大图时间的目的。

那它的具体原理是什么呢?(汉化版本叫发光图)


01


VRay的全局照明分为 首次反弹和二次反弹 ,主要是为了实现 光线跟踪

光线追踪 (Ray tracing) 是三维计算机图形学中的特殊渲染算法, 跟踪从眼睛发出的光线而不是光源发出的光线 ,通过这样一项技术生成编排好的场景的数学模型显现出来。这样得到的结果类似于光线投射与扫描线渲染方法的结果,但是这种方法有更好的光学效果,例如对于反射与折射有更准确的模拟效果,并且效率非常高,所以当追求高质量的效果时经常使用这种方法。

光线追踪 分为两种:

  • 对象顺序渲染 (object-order rendering):依次渲染每一个对象,然后更新每一个新对象对其它对象的影响。


  • 图片顺序渲染 (imageorder rendering):依次渲染像素,渲染每一个像素是考虑到每一个对象对它的影响。



光线追踪器一般来说可以很好地解决对象顺序框架难以解决的阴影和反射问题。



光线追踪的基本算法
光线跟踪器通过一次计算一个像素来工作,并且对于每个像素,基本任务是找到在该像素在图像中的位置处看到的对象。每一个像素表示摄像机“看向”的不同方向,可以看到的对象一定会和视线相交。因此,距离摄像机最近的对象是尤为重要的,因为它遮挡了后面的其它对象。 

基础的光线追踪器包含以下三个部分
  • 光线产生 (ray generation):基于摄像机的几何性质计算每一个像素的视线的原点和方向


  • 光线相交 (ray intersection):找到最近和视线相交的物体


  • 着色 (shading):基于光线相交的结果计算最近物体的颜色





02


Irradiance发光图


发光贴图的计算方式是基于发光缓存技术的,是只计算场景中某一些特定的间接照明,对附近的区域进行插值计算。

Irradiance发光贴图描述了三维空间中任意一点和全部可能照射到这一点的光线。 通常照射这个点的每条光线都是不同的,但是渲染器在渲染时对这些光线也有限制,由于被照射的点都在场景中物体的表面上,所以有一种约束叫做 表面约束 。另外一种是渲染器只考虑这个点被照射的所有光线数量而不去计算这些光线来自哪个方向。这些被计算的所有的点是一个三维空间方式的集合

当光线照射到物体表面时,VRay会在发光贴图中查找与当前计 算过的点类似的点,并从已计算过的点中提取信息,根据这些信息将这些相似的点进行内差值替换。 如果那个点与其他任何被计算过的点不同,就会被重新计算,保存发光贴图到内存中。

由于上述原因,所以发光贴图是自适应的,它会根据我们给定的参数对场景中物体的边界、物体交 叉部分以及阴影等重要的部分进行精确的全局光照计算,在大量平坦的区域进行低精度的全局光照计算。 发光贴图是VRay渲染系统的默认渲染引擎,也是参数最多的渲染引擎。

所以 发光贴图理论上是计算每个像素点的光线,然后根据计算结果再去渲染成图。 但是大多数时候这会耗费大量的时间,而很多时候我们并不需要如此精确的计算,所以有的时候我们会选择多个像素计算一次。这一点是通过引擎中的最小速率和最大速率来控制的,这个控制有几个维度。

首先 最小和最大速率中的数字代表的是多少个像素来进行采集样本 。值为0意味着每个像素采样一次,-1是四个像素进行一次采样,-2就是16个像素进行一次采样,-3是64个像素进行一次采样,-4是256个像素进行一次采样,以此类推。

如果最小速率为-1,最大速率为-3,那么就意味着光子图会计算三次,第一次为64个像素进行一次采样,第二次为16个像素进行一次采样,第三次为4个像素进行一次采样,然后三次采样用算法叠加,以得到更高的精度。

叠加 的方式这一点比较特殊,他并不是简单的进行叠加,而是说Min rate(最小比率)用来控制场景平坦区域的采样数量,Max rate (最大比率)则来控制场景中的物体细节的采样数量,如边线、角落、模型转折复杂的地方。

也就是说 光子图渲染完成之后会自动根据模型的复杂程度来调用光子样本 。什么意思呢,比如场景里有一面墙,很平坦,上面并没有什么其他的模型,那么他就会调用最小比率中采集到的样本来进行最终的成图渲染,而面与面的交接处,因为模型很复杂,他就调用最大比率采集到的样本来进行最终成图的渲染。

这也是为什么要进行多次光子的原因。很多人觉得麻烦,只计算一次光子,其实是不对的,在时间充许的情况下应该进行多次光子计算。




03


light cache


灯光缓存也使用近似来计算场景中的全局光照信息,采用了发光贴图和光子贴图的一些特点,在摄像机的可见部分内跟踪光线的发射和衰减,然后把信息存储到一个三维数据结构中,对灯光的模拟类似于光子贴图,计算范围与发光贴图的一致,仅对摄像机可见部分进行计算。 Light Cache灯光缓存是建立在追踪摄影机可见的许许多多光线路径的基础上,和发光贴图正好是相反的,是逆向的,而且它支持任何灯类型,它对灯光没有局限性。 在做预览时是很快的,它可以单独完成对整个场景的GI照明,也可以配合别的贴图做二次反弹。而且这种引擎在墙角处的效果会更好,层次会更细腻。


在Light Cache参数面板中Subdivs参数是非常重要的,它控制了Light Cache的采样,该参数值越大越能得到好的画面效果,同样渲染速度会变慢,Subdivs的意义是确定有多少条来自摄像机的路径被追踪,路径的数量是Subdivs参数的平方值如果Subdivs设置为 300 那么被追踪的路径数量就是300×300=90000条路径,如果Subdivs设置为1000的话 那么被追踪的路径数量为1000×1000=1000000条路径。

注意:由于Light Cache灯光缓存特殊的计算方式,在使用灯光缓存时,尽量不要将材质色彩的RGB值设置到255,这样会导致追踪路径过长从而增加渲染时间。



于灯光缓存的详细内容可以看 渲染卡在灯光缓存怎么办?这几个步骤教你解决



04


看到这里,我们弄明白了渲染光子图的原理和目的,而在教大家怎样进行光子贴图操作设置之前,有几点也需要给大家明确:


  • 跑光子图能节约多少时间呢?

实际上, 这个节省时间的多少是根据你的任务大小、场景设置来的 ,没有一个确定答案。具体应用场景里,如果你的渲染参数比较高,大图的尺寸也比较大,那我们建议就使用先小图跑光子图的方法。


  • 跑光子图时的参数设置?

理论上, 大图的尺寸是小图的4倍以内就可以使用 ,太大就无法保证。

比如你要出一张2000的图,你渲光子的时候,尺寸500就可以了,不会影响出图质量。

具体设置光子的细节上:还要保证场景不变(灯光、物体大小位置,角度),大图与小图的长宽比尺寸需一致,渲染的范围需一样。


  • 影响光子图渲染时间的因素?

(1)电脑配置。

配置再高的电脑,也会渲染很慢,还有反射、细分、卡住的问题;

(2)参数原因。

参数没调对,估计设置得很高,不然就是场景垃圾太多;

(3)渲染设置。

渲染设置是否匹配,不能全靠一个模板就搞定所有场景。


  • 怎么查看光子渲染时间,怎么判断光子是否卡住了?

光子图渲染一般都能很快完成, 如果我们发现渲染时间特别慢的话 ,很大程度上说明这个光子设置有问题,有可能是光子图卡住了。

比如,时间进度里,后面那个需要渲染的时间特别大,或者前后的两个时间无限的接近,但又很长时间都不进入到大图渲染。



这时候,光子图大概率是卡住了,我们需要重新检查参数设置,检查文件大小,比如模型较大的场景文件,VR设置的“动态内存极限”建议修改为3000或3000以上。另外,也可能是材质细分问题,模型精度过高会影响渲染速度,这里可以用白模进行检查。



05


那么如何在3D MAX中设置、保存、调用光子贴图?


如何设置并保存光子图


①在3D max中,打开需要渲染的场景文件,确认相机角度,调整好相关参数,按F10,弹出设置界面,调整好相关参数,比如将图的尺寸缩小在4倍以内都可以。


②在VRay渲染器设置面板里,找到全局开关,在全局开关里,勾选“不渲染最终的图像”(因为我们只是跑个光子图,不用耽搁时间去渲染最终成像)。



③找到GI设置(间接照明),然后首次引擎选择发光贴图,二次引擎选择灯光缓存。在在发光贴图中,可以选择设置发光图预设为“低”。


④在光子图里打开高级或者专家模式,在保存位置设置不删除和自动保存,然后选择保存的位置,并且命名。


⑤在灯光缓存的设置选项里设置保存的位置,找到自动保存,设置方式和步骤4的一样。


⑥设置好后,点击渲染即可,在保存的位置会发现有两个文件,这个就是设置保存的光子图。


渲染完成的光子图如何调用?


我们在上面的设置中,会发现保存后有两个文件,这是我们分别在发光贴图和灯光缓存下保存出的文件。建议在保存设置时,区分好发光图和灯光缓存,并做好备注。


①选择对应文件。

有了这两个文件以后,我们就可以渲染大图了。这里我们先要把参数调整回渲染大图时的参数。我们再到GI栏里找到发光贴图,在模式里我们选择从文件,点击下面选择发光文件,找到刚才我们保存发光图的路径,加载进来。


②加载文件。

在灯光缓存一栏中,在模式里也选择从文件,然后选择灯光缓存,找到我们刚才保存灯光缓存路径,把灯光缓存加载进去。


③最终渲染。

把这些参数都调整完成后,我们就可以点击渲图,进行最终的渲染。





渲染100云渲染插件已经帮助用户预设好常用的光子比例,不用单独渲染光子图,你在max里完成所有大图设置后,点击渲染100插件,在弹出的渲染设置中,选择调整自己需要的光子比例控制,一般建议可以设置比例为1/2、1/3这样的比例。

这样,我们就直接开始渲染最终的大图了,又可以节省相当大的一部分时间。





全部回复(0 )

只看楼主 我来说两句抢沙发
这个家伙什么也没有留下。。。

3dmax/sketchup

返回版块

5.2 万条内容 · 84 人订阅

猜你喜欢

阅读下一篇

3Dmax中UVW贴图的使用小技巧

模型贴图是3Dmax 效果图材质调节过程 中必不可少的环节,而在给模型 添加 贴图的过程中,离不开UVW贴图使用。 今天 我们 就 以长方体、球体、圆柱 等模型 为例,介绍 下 UVW贴图 在效果图制作过程中的使用方法和一些小技巧 。 1、 打开 3Dmax软件 ,点击 【创建】-【几何体】-【长方体】 ,在作图区域绘制一个长方体模型,接着分别点击

回帖成功

经验值 +10