计算机图形学编程练习6:简单阴影的绘制
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机图形学编程练习6:简单阴影的绘制
简单阴影的绘制
在绘制真实感三维场景时,阴影为场景中各对象之间的空间位置关系提供了许多视觉线索。
从物理的角度看,有光源才会产生阴影。
如果任何光源都不能照射到空间中的某一点,那么位于那个点的观察者就不能看到任何光源,因此那个点就位于阴影之中。
如果光源是理想点光源,那么生成的阴影为硬阴影(hard shadows);如果光源是面光源或体光源,那么完全被遮挡的区域称为本影区(umbra),部分被遮挡的区域称为半影区(penumbra),所生成的阴影称为软阴影(soft shadows),参见下图:
图1:软阴影示意图图2:硬阴影图3:软阴影
本次练习,要求实现理想点光源的简单阴影:即假设阴影落在某一平面上。
实现这类阴影的一个简单方法是利用设置合理投影矩阵,在投影平面上绘制阴影多边形,具体的原理参见书本的5.10节。
作业要求
●本次练习的主要学习目标:
▪投影矩阵的设置;
▪简单阴影的绘制。
●在上一次编程练习(即计算机图形学编程练习5)的基础上,实现本次作业的具体要求:
▪增加场景缩放功能,即通过按下键盘上的上、下方向键分别实现场景的放大、缩小功能,要求利用设置视景体来实现;
▪绘制简单阴影,假设理想点光源的位置在(0.0, 5.0, 0.0),阴影的投影平面为:y = -3.0,具体的请绘制一个矩形,4个顶点坐标分别为:(-8.0, -3.0, 8.0), (8.0, -3.0, 8.0), (8.0,-3.0, -8.0), (-8.0, -3.0, -8.0),投影平面矩形的颜色设置为(216,216,216),阴影多边形的颜色设置为:(116, 116, 116)。