1

我正在研究具有漫反射的光线追踪器(每次反射有 64 或 128 个样本)。

例如,一种材料可能具有 75% 的反射率,这意味着反射光线需要偏离“完美”反射 25%。

我一直试图通过计算反射光线的右和上矢量并使用百分比将所有三个相乘以组合成一个偏离矢量来解决这个问题。

right = cross(intersectionNormal, ray)
up = cross(right, ray)
ray' = (ray * w) + (up * u) + (right * v)

我似乎无法正确计算。我尝试根据球坐标(围绕完美反射以随机角度随机倾斜)为每个组件生成乘数,但我的数学无法正常工作。结果永远不会看起来像半漫反射。他们看起来不对。我正在使用 Random.NextDouble() 在材料的反射率范围内获取随机球坐标。

给定一个介于 1.0(完美)和 0.0(漫反射)之间的反射率、一个相交法线和一条完美反射光线,我将如何通过反射率百分比来偏离它?

4

1 回答 1

0

从你试图实现的目标来看,在我看来,“右”和“上”不应取决于入射光线的方向,而应与法线形成正交基础。所以你会选择up = cross(right, intersectionNormal).

但是,与其滚动你自己,我建议只使用 Blinn / Phong 之类的标准反射模型之一,其中指数几乎可以满足您希望反射率参数执行的操作。

于 2013-10-07T09:31:09.417 回答