3d光子图是什么原理?3d为什么要出光子图?
在使用渲染100(邀请码1a12)渲染时会渲染光子图,光子图渲完后才会开始渲大图,比如下面这样,
那么为什么要渲光子图呢?光子图又是什么原理?今天我们就来了解下吧。
光子图的原理涉及到Vray的发光图和灯光缓存两项技术,发光图会计算场景中光线对物体表面的照射效果,而灯光缓存与此相反,是对照射物体表面的光线进行追踪和计算,两者互相配合才生成了光子图,下面我分别介绍下它们。
一、发光图
发光图通常又称为发光贴图,它会计算场景中任何物体的任意一点在光线照射下形成的效果,当光线照射到物体表面时,Vray会在发光贴图中查找与当前计算点类似的点,并从已计算的点中提取信息,根据这些信息将这些相似点进行内差值替换计算,但如果这个点与其他任何被计算过的点不同,就会重新计算并保存到内存中。
由于上述原因,发光贴图是自适应的,它会根据我们给定的参数对场景中物体边界、物体交叉部分以及阴影等重要部分进行高精度的光照计算,而在大量平坦区域低精度计算。
理论上发光贴图需要计算每个像素点的光线,然后再根据计算结果去渲染大图,但这会耗费大量时间,而实际上很多时候我们并不需要如此精确,所以一般我们会选择多个像素计算一次,而这就通过控制最小速率和最大速率来完成,这个控制有几个维度。
首先最小和最大速率中的数字代表有多少像素被一次性采样计算,0代表1个像素计算一次,-1代表4个像素计算一次,-2是16个,-3是64,-4是256,以此类推,都是4的幂函数。
其次,如果最小速率是-1,最大速率是-3,就意味着光子图会计算3次,第1次是64个像素为一组进行一次计算,第2次是16个像素进行一次计算,第3次是4个像素计算一次,然后采用算法对三次计算结果进行叠加,以达到更高精度。
最后,叠加方式比较特殊,它并不是简单的叠加计算,而是以最小速率控制场景中平坦区域的采样数量,而以最大速率控制物体的细节部分,比如边线、角落、模型转折处等比较复杂的地方。也就是说光子图渲染完成后大图会自动根据模型的复杂程度调用光子样本,比如场景里有一面墙,很平坦,上面没有其他模型,那它就会调用最小速率中采集到的样本进行渲染,而面与面的交接处,因为比较复杂,则会调用最大速率。
这也是为什么要进行多次光子图的原因,很多人觉得麻烦,认为只计算一次光子就可以了,其实这是不对的,在时间允许的情况下应该进行多次光子计算。
二、灯光缓存
灯光缓存是对灯光进行的模拟,它会在摄像机可见范围内跟踪光线的发射和衰减情况,然后把信息存储到一个三维数据结构中。它支持任何类型的灯光,可以单独完成对整个场景的GI照明,也可以配合别的贴图做二次反弹,尤其是在墙角处呈现效果会更好,层次更细腻。
灯光缓存的参数中细分值是非常重要的,它决定了有多少条来自摄像机的光线被追踪,这个值越大画面效果越好,但渲染速度也会越慢,被追踪的光线数量是细分值的平方,比如细分是300,就有300×300=90000条光线被追踪,如果是1000,就是1000×1000=1000000。
注意:由于灯光缓存计算方式特殊,所以尽量不要将材质色彩的RGB值设置为255,这样会导致追踪的光线路径过长增加渲染时间。
关于灯光缓存的详细内容也可以看下我之前的文章。
了解光子图的原理后我们就知道为什么要渲光子图了,因为渲染光子图能节省大图的渲染时间,如果大图尺寸比较大,建议先渲光子再渲大图,至于光子图的渲染时间受到什么因素影响,可以关注我后续更新哦。
如果要渲染这里我推荐网渲平台渲染100,15分钟2毛60分钟8毛渲染小图很合适,注册时填写邀请码【1a12】会有2张免费渲染券,有需要的朋友可以去试试哦。