思考此时可以假设将摄像机放在点观测物体的直接光照因此可以得到渲染方程的递归形式因此。的内容中添加以。蓝色部分的代码其中部分就是递归的实现注意原式中的方向是。被观测点指向摄像机而如果指向物体时此时方向是指向因此在递归中要把当作被观测点当作摄像机则传入的方向应该与此时的。方向相反即传入存在问题光线爆炸对于每一根光线如果打在。物体上又要对这根光线进行无数次遍历递归在进行了次物体折射后其时间复杂度也是随此指数型增长解决方法由上可知当为时指数不管多大结果始终为则不会产生光线爆炸的问。
题因此伪代码应该修改为注意到其中式子中的和。循环已经不再存在了因为只选择了其中一条光线即但是在每个方向上只随机选择其中一条光线而不是一束光线虽然可以解决光线爆炸问题但。是同时又会产生噪音太大的问题解决的方法就是在每。个像素中跟踪更多路径的光 阿根廷电话数据 线最后再取平均。因此再以上的伪代码的基础上再新增一个传入摄像机位置和像素区域在。像素区域内取个样本位置遍历这个样本点对于每一个样本点使其从相机位置向被观测的这个样本点射出一条光线之后对其进行取的操作注意传入的第二个变量时被。
观测点到摄像机的方向而射线是摄像机到被观。测点的方向存在问题递归终止条件伪代码中缺少了光线反射。的终止条件也就是说一条光线是可以被无数次反射的虽然这与现实中的光线反射相一致但是这会导致算法无法停止。解决方法俄罗斯轮盘赌即假设向某一个方向上有概率发射出一条。光线最终返回的结果是而当取到概率时返回的结果是。最终得到的式子是一个二项分布而其结果也就是期望值仍然。是我们所需要的结果因此在伪代码的修改也只是在中修改添加一个选取光线。的概率使设定的一个限定在中当比要大则返回代表着这根光线最终未存活该处也是终止。
|