问题六十八:Phong反射模型的C++实现

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

1 Phong反射模型


这一章节,我们将实现Phong反射模型。


环境光的部分:先不解释,后面来填这个坑;

 

漫反射光和高光反射光部分:

入射光(光源)的辐射率;

入射光和表面法向量的夹角的余弦值;

可以理解为漫反射的BRDF;

可以理解为高光反射的BRDF;

 

2 程序的结构


首先定义一个图形(比如,球);然后给球设置材质;材质的物理属性决定了其对应的反射模型;各种反射模型则需要用到其对应的BRDF值。

逆向来看,则是:BRDF设置给反射模型;反射模型设置给材质;材质设置给图形。


2.1 BRDF

漫反射的BRDF:



高光反射的BRDF:


 

2.2 BRDF设置给反射模型



2.3反射模型设置给材质

这个主要体现在材质的着色成员方法中。


 

2.4材质设置给图形

在初始化的build()中:



3 对此测试图形


Blinn-Phong反射模型:ka = 0.25;kd = 0.75; ks = 0.1; exp = 10;

 

Blinn-Phong反射模型:ka = 0.00;kd = 0.75; ks = 0.1; exp = 10;


 

Blinn-Phong反射模型:ka = 0.25;kd = 0.5; ks = 0.1; exp = 10;

 

Blinn-Phong反射模型:ka = 0.25;kd = 0.25; ks = 0.1; exp = 10;

 

Blinn-Phong反射模型:ka = 0.1;kd = 0.25; ks = 0.1; exp = 10;

 

Blinn-Phong反射模型:ka = 0.1;kd = 0.25; ks = 0.25; exp = 10;

 

Blinn-Phong反射模型:ka = 0.1;kd = 0.25; ks = 0.5; exp = 10;

 

Blinn-Phong反射模型:ka = 0.1;kd = 0.5; ks = 0.25; exp = 10;


ka = 0.1;kd = 0.5; ks = 0.25; exp = 20;


 

4 其他说明

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

 

Referrance

[1]. Kevin Suffern, Ray Tracing from the GroundUp, A K Peters Ltd, 2007.

 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值