Q86:镜面反射(Mirror Reflection)

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

 

86.1 光照模型

 

在考虑“间接光照”的情况下,间接光照可能来自撞击点上半球的任意方向,如下图所示:



 

86.2 镜面反射(Mirror Reflection)

 

一般情况,求解“式子86.2”的间接光照的反射模型是非常复杂的。但是,我们现在考虑的是特殊情况:镜面反射。




86.3 连续的镜面反射

 

如果场景中有多个“反射材质”的物体,镜面反射将会连续下去。如下图:


 

86.4 镜面反射的反射光线在场景中的各种情形

 

镜面反射的反射光线离开撞击点之后,在场景中可能遇到如下四种情形:

 


86.5 C++代码实现

 










 

86.6 测试图形

 


 

图形中包含两个物体:

1,上方的hand skeleton,非反射材质;

2,下方的绿色平面,反射材质。

 

接下来,我们主要是调节下方平面的反射材质的参数,来看看生成图形的效果。

 

直接光照参数,影响的是平面本身的效果。间接光照参数,影响的是平面反射的hand skeleton像的效果。

 

86.6.1 调节直接光照参数

 

平面的直接光照参数:ka=0.4;kd=0.8;cd(0.5,1,0.5);ks=0.5,exp=50;

平面的间接光照参数:kr=0.75;cr(1,1,1);

 

平面的直接光照参数:ka=0.4;kd=0.8;cd(0.5,1,0.5);ks=0.0,exp=50;

平面的间接光照参数:kr=0.75;cr(1,1,1);

(由于exp=50较大,所以高光部分的光线较少,所以关掉高光对图形整体的影响不明显)

 

平面的直接光照参数:ka=0.4;kd=0.0;cd(0.5,1,0.5);ks=0.0,exp=50;

平面的间接光照参数:kr=0.75;cr(1,1,1);

(再关掉“漫射光”)

 

平面的直接光照参数:ka=0.0;kd=0.0;cd(0.5,1,0.5);ks=0.0,exp=50;

平面的间接光照参数:kr=0.75;cr(1,1,1);

(再关掉“环境光”)


 

平面的直接光照参数:ka=0.0;kd=0.8;cd(0.5,1,0.5);ks=0.0,exp=50;

平面的间接光照参数:kr=0.75;cr(1,1,1);

(只开“漫射光”)

 

平面的直接光照参数:ka=0.0;kd=0.0;cd(0.5,1,0.5);ks=0.5,exp=50;

平面的间接光照参数:kr=0.75;cr(1,1,1);

(只开“高光”。由于exp=50较大,所以高光部分的光线较少。开与不开,好像没什么影响)

 

平面的直接光照参数:ka=0.0;kd=0.0;cd(0.5,1,0.5);ks=0.5,exp=1

平面的间接光照参数:kr=0.75;cr(1,1,1);

(之前的高光部分太少,看不出效果。接下来,将高光部分调大,看看效果)

(注意:下方平面是绿色的,之所以看到的是“灰白色”,是因为看到的只是高光)

 

86.6.2 调节间接光照参数

关掉了所有的直接光照参数,所以看不到平面本身。

 

平面的直接光照参数:ka=0.0;kd=0.0;cd(0.5,1,0.5);ks=0.0,exp=50;

平面的间接光照参数:kr=0.75;cr0.5,1,0.5

 

平面的直接光照参数:ka=0.0;kd=0.0;cd(0.5,1,0.5);ks=0.0,exp=50;

平面的间接光照参数:kr=0.75;cr0.0,0.0,1.0

 

平面的直接光照参数:ka=0.0;kd=0.0;cd(0.5,1,0.5);ks=0.0,exp=50;

平面的间接光照参数:kr=0.75;cr0.5,0.5,1.0

 

86.7 其他说明

 

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

 

Referrance

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

 

86.8 补充测试图形

 

交换下方平面和上方hand skeleton的材质。

Hand Skeleton

平面的直接光照参数:ka=0.4;kd=0.8;cd(0.5,1,0.5);ks=0.5,exp=50;

平面的间接光照参数:kr=0.75;cr(1,1,1);

Plane:

ka=0.4;kd=0.8;cd(1.0,0.2,0.0);ks=0.5,exp=50;



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值