关于射线追踪算法的几个问题:
它得到第一个与射线相交的物体。
(如果没有交叉口,它就会熄灭)
然后,如果对象是反射的,它会递归地发送一条反射射线,并计算它的颜色。
如果物体是透明的,它会递归地发送一条折射射线,并计算它的颜色。
最后一行是什么?:
return shade(reflactColor, refractColor,p,obj)它是通过对reflectColor和refractColor的平均值或类似的东西来计算颜色吗?
2.影子射线在哪里?这不是算法的一部分吗?
3.最后一件事..。为什么我们需要递归的呢?

发布于 2014-07-03 17:20:08
你似乎对算法有很好的掌握。
最后一行看起来像是在计算反射色和折射色的某种加权组合。
此外,你是正确的,阴影射线跟踪不包括在你在你的帖子附加的基本算法。然而,它是很容易添加到拍摄光线到光源,并确定是否有一个交叉的对象,你击中的光。如果有,那么光线就会被遮挡,物体就不应该在这一点上被点燃。
要解释递归,你可以想到一对镜子对着对方。你会得到无限镜像效应(在现实生活中)。如果你不反射并且只投射一次反射/折射射线,你的虚拟镜子(或者一般的反射面)只会反射其他物体,而不是其他物体的反射。(因此,没有无限的镜像效应。*()
https://stackoverflow.com/questions/24559578
复制相似问题