问题六十八: 着色模型(shading model)(0)——《Ray Tracing from the Ground Up》代码的移植

用ray tracing的方式来生成图形,主要是分两步:

1,几何建模。即为“光线撞击物体”,求得撞击点。

2,给撞击点着色。我们之前的做法是:根据被撞击物体的材质(材质的颜色、材质对光线的反射和折射)来设置撞击点的颜色。用到的反射、折射是:理想漫反射、理想镜面反射、理想镜面折射。至于“光源”,只是环境光(ambient light),没有特定的光源。

 

接下来,我们要做的是:

1,考虑材质的更为实际的反射、折射模型

2,考虑特定光源:平行光光源、面光源(含点光源)

 

主要参考的书籍为《Ray Tracing from the Ground Up》。所以,我们先将该部分的主要代码移植到Codeblocksproject上(纯属个人爱好,更习惯用Codeblocks)。

 

移植后的Codeblocks项目保存的文件名是“raytracegroundup_transplant1_chapter14_20170217”,网络链接如下:

http://download.csdn.net/detail/libing_zeng/9756504

 

68.0.1 代码移植后生成的图形

这个图形由两部分组成:

1,最后灰色的是一个垂直的plane;

2,35个不同颜色的球。

 

其中物体是理想漫反射模型的材质;有两部分光照:环境光(ambient light)和平行光光源。

 

68.0.2 模块图

需要学习的新的东西是:“2,给撞击点着色”。

其中又包含两大部分内容:

2.1, 材质的反射、折射模型:涉及影响反射折射光的比例及其方向的物理属性

2.2, 光照模型:涉及到达撞击点的光照的强度和方向

 

(光照的强度和方向)+(材质影响反射折射光的比例及其方向的物理属性)=(反射到相机的光的强度)

 

这里先说明一下:考虑光的频率,光就呈现不同的颜色。(频率对应颜色)


68.0.3 主要文件层级图



World:

就是“世界”,所有的物体、所有的光源、相机(眼睛)、生成图像的屏幕等等都是在World里面初始化的。可以将World

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值