计算机图形学教学软件是针对本科生教学实践需求设计的一系列用于演示图形学基本概念与算法,帮助学生理解基本知识,方便学生上机实践的系列软件。该软件系列包含演示软件和编程环境两部分。 为了加深学生对基本概念的理解,我们设计了一系列演示软件来演示诸如Bezier曲线,B样条曲线,Phong光照模型,光线跟踪,网格简化等基本图形学知识点。学生可以利用这些软件来动态的调节这些基本算法中的关键参数并观察结果。通过亲自动手实验,学生们能够更加清楚深刻的理解这些关键参数在算法中的意义和作用。这些软件使得基本概念不是局限于枯燥的公式,而是通过直观的方式表现出来,增加了学生的学习积极性和对知识理解的水平。编程环境部分为学生提供了进行编程时间的平台。我们提供了一个基本的编程平台,把非核心算法部分提供给学生,减少学生们处理琐碎细节的时间而专注于核心算法本身。 计算机图形学教学系列软件通过演示部分和编程环境部分的相互结合,不但使得课程本身更加有趣和易于理解,而且方便学生亲自动手实践。该系列软件是我们本科生图形学课程的重要组成部分。

演示软件

Bezier Curve

     Beizer曲线是1962年法国雷诺汽车公司的P.E. Bezier够早的一种以逼近为基础的参数曲线和曲面的设计方法,并用这个方法完成了一个称为UNISURE的去西安和曲面设计系统。该方法是最广泛应用的参数曲线表示方法之一。 本程序通过演示Bezier曲线的构造、升阶、降阶等加深学生对Beizer曲线及其基本升阶降阶算法的认识和理解。

    点击这里下载Bezier曲线演示程序详细文档。 点击这里下载相关程序。

Bezier曲线及其控制顶点
Bezier曲线递推构造过程演示
Bezier曲线升阶
Bezier曲线降阶

图1:Bezier曲线编辑软件

B Spline

    Beizer曲线或曲面有诸多优越性,但有两点不足:其一是Bezier曲线不能做局部修改;其二是Bezier曲线的拼接比较复杂。1972年,Gordon,Riesenfeld等人提出了B样条方法,在保留Bezier方法全部优点的同时,克服了Bezier曲线的弱点。本程序通过演示B样条曲线的构造、曲线上特定点的计算,节点插入等加深学生对B样条曲线及其基本操作的认识和理解。

     点击这里下载详细文档。 点击这里下载相关程序。

图2.1:B样条曲线及其控制顶点
图2.2:B样条曲线控制顶点的调整
图2.3:De Boor算法计算特定参数对应的B样条点
图2.4:节点插入

图2:B样条曲线编辑软件

Phong Demo

     光照模型是真实感图形渲染的基础,从1967年Wylie等人第一次在显示物体的时候加进光照效果后,该领域迅速的发展。简单的光照模型模拟物体表面对光的反射作用,它只考虑物体对直接光照的反射作用,而物体间的反射光只用环境光统一表示。Phong模型就是这样一种模型。 Phong光照模型可以表述为:由物体表面上一点P反射到视点的光强I为环境光的反射光强I_e、理想漫反射光强I_d和镜面反射光I_s的总和,即:

I=I_a K_a+I_p K_d (L·N)+I_p K_s (R·V)^n

    点击这里下载Phong模型演示程序详细文档。 点击这里下载相关程序。

图3:Phong模型演示程序

网格简化程序示例

    网格是几何模型的基本表示方法,网格模型表示和处理是图形学中的重要课题。这里我们提供了网格简化软件的源代码及结果图:

图4:网格简化的输入(左)和结果(右)示例

光线跟踪演示程序

    光线跟踪是图形学渲染中的基本问题,本软件演示了光线跟踪的基本概念和方法。点击这里下载源码和资源,对应的效果图如下。

图5:光线跟踪示例程序结果

图6:光线跟踪结果视频

编程环境

光线跟踪算法编程环境

    本编程环境已经实现了大部分繁琐的工作。要求学生完成以下核心算法的编写

    1. 实现Scene::ComputeLocalColor函数,完成计算局部光强功能
    2. 实现Scene : : TracingOneRay函数,完成光线与场景求交,调用ComputeLocalColor计算局部光照,递归计算反射、折射光强。

     点击这里下载详细文档。 点击这里下载相关程序。

图7:一组示例结果