Q87:间接光照(Indirect Illumination)的高光反射(Glossy Reflcetion)

198 篇文章 12 订阅
195 篇文章 27 订阅

 

87.1 建立模型

 


 

接下来就是采样啦!

 

之前,我们遇到过的采样一般都是对撞击点处的上半球面进行采样,比如:


这是因为cos分布对应的夹角是光线和法向量的夹角。


但是,我们这里对应的夹角是光线和镜面反射光线r的夹角。所以,我们需要采样的半球面是这个这样子:


 

具体采样过程可以参考“ 问题七十一:环境光遮蔽(AmbientOcclusion”:

http://blog.csdn.net/libing_zeng/article/details/57639455

(只需要在建立正交基时,将原来的n换成r)

 

但是,有个问题:

有一部分采样点会落在物体表面以下。


 

针对这个问题的处理方式是:将这部分落在物体表面以下的采样点沿着表面翻转到表面以上:


 

在程序中只需做如下处理:


 

87.2 C++代码实现

 




 

87.3 测试图形

 

87.3.1 测试图形(1)

 

相关代码:






 

输出图形:

 

单像素点采样次数为1时:


 

单像素点采样次数为256时:


 

87.3.2 测试图形(2)

 

相关代码:


 

输出图形:

 

接下来测试是:改变“模糊指数”exp(其他所有参数如上方测试程序所示,并保持不变),对比输出图形的效果。

 


exp=10:


 

exp=100:

 

exp=1000:

 

exp=10000:

 

exp=100000:

 

exp=1000000:

 

对比之前的镜面反射模型的图形(之前图形是600*600,现在的图形是400*600):(当“模糊指数exp”足够大时,高光反射模型就非常接近镜面反射模型了。

 

87.4 其他说明

 

完整的代码,参考:http://download.csdn.net/detail/libing_zeng/9781791

 

Referrance

[1]. Kevin Suffern, Ray Tracing from theGround Up, A K Peters Ltd, 2007.

 

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值