在使用大量蒙特卡罗样本进行路径追踪的所有简单算法中,跟踪算法的路径部分随机选择返回当前表面的发射值并继续追踪来自该表面半球的另一条射线(对于幻灯片中的示例here)。像这样:
TracePath(p, d) returns (r,g,b) [and calls itself recursively]:
Trace ray (p, d) to find nearest intersection p’
Select with probability (say) 50%:
Emitted:
return 2 * (Le_red, Le_green, Le_blue) // 2 = 1/(50%)
Reflected:
generate ray in random direction d’
return 2 * fr(d ->d’) * (n dot d’) * TracePath(p’, d’)
这只是一种使用俄罗斯轮盘赌终止路径同时保持不偏不倚的方式吗?当然,将所有射线路径的发射和反射特性统计在一起并使用俄罗斯轮盘来决定是否继续跟踪更有意义。
这是一个后续问题:为什么我所看到的这些算法中的一些(如“基于物理的渲染技术”一书)只计算一次发射,而不是考虑所有的发射属性在一个对象?渲染方程基本上是
L_o = L_e + integral of (light exiting other surfaces in to the hemisphere of this surface)
这似乎计算了这个L_o和所有其他L_o的积分中的自发属性,所以算法应该遵循。
答案 0 :(得分:4)
实际上,单次发射与反射计算有点过于简单化。为了回答第一个问题,硬币翻转用于终止光线,但它会导致更大的偏差。第二个问题有点复杂......
在Shirley, Wang and Zimmerman TOG 94的摘要中,作者简要总结了蒙特卡罗抽样的益处和复杂性:
在分布射线追踪器中,直接照明的关键部分 计算是阴影射线测试的采样策略。蒙特 卡罗与重要性抽样的整合用于实现这一点 计算。重要性抽样涉及设计 特定于被积函数的概率密度函数 生成数值求积的采样点。可能性 提供了密度函数,有助于直接照明 从各种简单形状的灯具计算。一种方法 在一组灯具上定义概率密度函数是 提出允许进行直接照明计算 无论灯具数量多少,都可以使用一个样品。
如果我们开始剖析那个摘要,这里有一些重点:
当渲染更多视觉真实感时,必须根据曲面bidirectional reflectance distribution function对两组反射的可见光线和光照计算光线进行采样和加权。
请注意,这是一种引导式采样方法,与原始问题的“随机方向生成光线”方法明显不同,因为它是:
更准确:链接PDF中的图片与PDF处理有点不同。图10是原始图像的合理表示 - 请注意,您有时会看到缺少明亮的斑点伪影(如原始演示文稿的图5所示)。
明显更快:正如原始演示文稿所述,未经指导的蒙特卡罗采样可能需要很长时间才能收敛。更多采样光线=更多计算=更多时间。
答案 1 :(得分:1)
阅读幻灯片后(感谢您发帖),我会尽我所能修改答案。
可能不同地处理发射和反射的属性,因为反射路径以发射路径不同的方式(至少对于光谱表面)依赖于入射路径。算法是否采用贝叶斯方法并使用关于入射角的先验信息作为预测反射角的先验信息?或者这是Feynman整合所有路径以提出概率?如果不深入研究理论的细节,就很难说清楚。
我之前的黑体评论非常不正确。我看到幻灯片谈论(R,G,B)组件;黑体发射率集成在所有波长上。
这是一个后续问题:为什么我会使用其中的一些算法 看(就像书中的'基于物理的渲染技术') 只计算一次排放,而不是考虑所有的 对象的自发属性?渲染方程是 基本上
L_o = L_e +积分(光从其他表面进入 这个表面的半球)
表面的单个发射率将假设波长或方向上没有函数关系。我不知道渲染照片般逼真的图像有多重要。
发布的内容肯定令人印象深刻。我想知道如果考虑到你所考虑的复杂性,他们会有多么不同?
感谢您发贴一个不错的问题 - 我正在投票。我考虑过这种问题已经有很长一段时间了。我希望我能提供更多帮助。
答案 2 :(得分:1)