论文部分内容阅读
摘要:本文主要介绍了计算机图形学辅助教学网站的开发过程,核心论述了三维图形在Web环境下实时交互的实现。针对图形学三维知识的教学难点,为了实现Web环境下实时互动的三维教学演示,本课题采用了Java的Applet嵌入网页中,同时通过JOGL(Java Bindings for OpenGL)来实现Applet中的三维图形的绘制,并通过数字签名技术绕过Applet的安全机制,来达到可交互的目的。
关键词:教学网站;三维图形;JOGL;Applet
中图分类号:TP391.41 文献标识码:A 文章编号:1007-9599 (2012) 17-0000-02
1 前言
1.1 课题的目的及意义
《计算机图形学》是计算机学科中比较抽象,难懂的一门专业基础课。按照普通的教学模式,学生不易接受。如能结合《计算机图形学》辅助教学网站来教学,使用动画和演示程序则能生动、直观地揭示计算机图形学算法的精髓和本质,由于实现了算法的可视化,使学生的理论思维与形象思维有机的统一起來,有利于提高教学效果。
2 相关技术简介
Web环境下的三维图形交互技术是本课题的难点,本课题通过对以下相关技术的研究和使用克服了这一难点。主要包括Java中Applet以及JOGL技术,JOGL即是Java的OpenGL绑定。
在面向对象的语言中,Java是一种真正的面向对象的编程语言。为了在Java中使用OpenGL,出现了许多新的想通过友好的Java API来使用OpenGL的尝试,如Java 3D,OpenGL for Java Technology等,其中有一种称为Java对于OpenGL的绑定的技术,得到了Sun公司和SGI公司的支持,是目前的一种比较令人满意的在Java中使用OpenGL的技术[1]。
3 网站建设总体设计
3.1 网站制作流程与总体规划
网站的制作流程如下:
第一步:网站定位。
第二步:依据需求分析对网站结构进行总体规划。
第三步:划分各功能模块。
第四步:制定网站建设规则和标准。
第五步:选择开发需要的软硬件环境。
第六步:构建网站。
第七步:网站的测试。
第八步:网站的发布与维护管理。
由于本课题的重点是WEB下三维图形的交互,因此建站环节不做详解
4 网站详细设计
本章重点介绍教学演示模块的详细设计。
根据需求分析和概要设计,当点击演示子目录时,显示内容分别如图4-1、4-2所示。其中,图4-2为演示子目录中的鼠标交互结果图。
在介绍各个演示的算法实现前,首先介绍一下三维图形的显示流程。如图4-3所示。
基于三维图形显示原理图,我们设计出本模块的六个演示(几何变换、投影变换、光照、材质、纹理、雾化)及算法。首先要实现演示的主程序框架,即JOGL下的特殊的Applet框架。同时该演示运行界面主要包括三个窗口:世界坐标系窗口、屏幕坐标系窗口、命令行窗口。因此,我们需要分别实现这三个窗口,然后通过主框架的调用,完成演示的实现。
4.1 主程序的框架实现:
(1)Java下的Applet框架
Applet框架的主要功能是创建一个显示窗口,并整体控制程序的生命周期,同时负责调用三个子窗口的监听器,主要分为四个部分:
①init( )方法:初始化程序,主要完成一些Applet构造方法不能完成的工作。
②start( )方法:启动程序,初始化后,重入等都将自动调用。
③stop( )方法:停止程序,用于停止消耗系统资源。
④destroy( )方法:销毁程序,浏览器关闭时自动调用,以清除所用资源。
(2)JOGL下的Applet框架
JOGL中的Applet框架与Java下的Applet框架相同,包括上面四个部分,但是在各部分中需要添加自己的实现代码。
4.2 命令行窗口
该窗口功能的实现主要通过定义一个监听器类CommandWindow来完成。
该部分主要显示该演示所需的关键代码及随时更新其中可变的坐标参数。
4.3 屏幕坐标系窗口
该窗口功能的实现主要通过定义一个监听器类ScreenWindow来完成。
该部分主要显示绘制出来的三维物体模型,同时还包含两种用户交互。
4.4 世界坐标系窗口
该窗口功能的实现主要通过定义一个监听器类WorldWindow来完成。
该部分主要显示视点,世界坐标系,视景体,以及在世界坐标系下看到的三维物体模型。
上边详细讲述了演示中三个窗口的相应处理,下面我们以几何变换为例来详细介绍演示的实现过程。
该演示的类名称为TransformationApplet,其主框架实现同上。
各窗口的主要处理如下:
(1)命令行窗口
本窗口中除了前面提到的数据结构,还要用到的数据结构为:
①定义视点
public static float eye[] = { 0.0f, 0.0f, 2.0f };//定义视点的位置
public static float at[] = { 0.0f, 0.0f, 0.0f };//定义物体的位置
public static float up[] = { 0.0f, 1.0f, 0.0f };//定义向上的向量
②定义矩阵
projection:投影矩阵,公有静态数组;
modelview:几何矩阵,公有静态数组;
inverse:转置矩阵,公有静态数组;
③定义标志性变量
public static boolean swapped = false;//判断是否交换平移和旋转的位置
(2)屏幕坐标系窗口
该窗口继承前边提到的全部监视器。
数据结构:
public static boolean flag = false;//判断是否在该窗口进行交互控制
基本函数:public void Judge(float update,int selection)
功能:更新变量值。
(3)世界坐标系窗口
该窗口继承前边提到的事件监视器。
数据结构:
public static boolean flag = false;//判断是否在该窗口进行交互控制
本窗口的绘制以及用户交互的实现过程为:
在事件监听器中,窗口重绘操作的处理不同。窗口绘制操作的CommandDisplay()函数代码有所不同。
上面主要介绍几何变换演示的主要实现过程,其它的演示的实现过程类似,只是具体代码有些不同,本文不再详述。
5 小结
本章重点介绍了教学演示中的演示的实现过程,至此,完成了本网站的建设。
参考文献:
[1]Andrew Davison.Pro Java 6 3D Game Development: Java 3D, JOGL, JInput and JOAL API.Apress,2007.
关键词:教学网站;三维图形;JOGL;Applet
中图分类号:TP391.41 文献标识码:A 文章编号:1007-9599 (2012) 17-0000-02
1 前言
1.1 课题的目的及意义
《计算机图形学》是计算机学科中比较抽象,难懂的一门专业基础课。按照普通的教学模式,学生不易接受。如能结合《计算机图形学》辅助教学网站来教学,使用动画和演示程序则能生动、直观地揭示计算机图形学算法的精髓和本质,由于实现了算法的可视化,使学生的理论思维与形象思维有机的统一起來,有利于提高教学效果。
2 相关技术简介
Web环境下的三维图形交互技术是本课题的难点,本课题通过对以下相关技术的研究和使用克服了这一难点。主要包括Java中Applet以及JOGL技术,JOGL即是Java的OpenGL绑定。
在面向对象的语言中,Java是一种真正的面向对象的编程语言。为了在Java中使用OpenGL,出现了许多新的想通过友好的Java API来使用OpenGL的尝试,如Java 3D,OpenGL for Java Technology等,其中有一种称为Java对于OpenGL的绑定的技术,得到了Sun公司和SGI公司的支持,是目前的一种比较令人满意的在Java中使用OpenGL的技术[1]。
3 网站建设总体设计
3.1 网站制作流程与总体规划
网站的制作流程如下:
第一步:网站定位。
第二步:依据需求分析对网站结构进行总体规划。
第三步:划分各功能模块。
第四步:制定网站建设规则和标准。
第五步:选择开发需要的软硬件环境。
第六步:构建网站。
第七步:网站的测试。
第八步:网站的发布与维护管理。
由于本课题的重点是WEB下三维图形的交互,因此建站环节不做详解
4 网站详细设计
本章重点介绍教学演示模块的详细设计。
根据需求分析和概要设计,当点击演示子目录时,显示内容分别如图4-1、4-2所示。其中,图4-2为演示子目录中的鼠标交互结果图。
在介绍各个演示的算法实现前,首先介绍一下三维图形的显示流程。如图4-3所示。
基于三维图形显示原理图,我们设计出本模块的六个演示(几何变换、投影变换、光照、材质、纹理、雾化)及算法。首先要实现演示的主程序框架,即JOGL下的特殊的Applet框架。同时该演示运行界面主要包括三个窗口:世界坐标系窗口、屏幕坐标系窗口、命令行窗口。因此,我们需要分别实现这三个窗口,然后通过主框架的调用,完成演示的实现。
4.1 主程序的框架实现:
(1)Java下的Applet框架
Applet框架的主要功能是创建一个显示窗口,并整体控制程序的生命周期,同时负责调用三个子窗口的监听器,主要分为四个部分:
①init( )方法:初始化程序,主要完成一些Applet构造方法不能完成的工作。
②start( )方法:启动程序,初始化后,重入等都将自动调用。
③stop( )方法:停止程序,用于停止消耗系统资源。
④destroy( )方法:销毁程序,浏览器关闭时自动调用,以清除所用资源。
(2)JOGL下的Applet框架
JOGL中的Applet框架与Java下的Applet框架相同,包括上面四个部分,但是在各部分中需要添加自己的实现代码。
4.2 命令行窗口
该窗口功能的实现主要通过定义一个监听器类CommandWindow来完成。
该部分主要显示该演示所需的关键代码及随时更新其中可变的坐标参数。
4.3 屏幕坐标系窗口
该窗口功能的实现主要通过定义一个监听器类ScreenWindow来完成。
该部分主要显示绘制出来的三维物体模型,同时还包含两种用户交互。
4.4 世界坐标系窗口
该窗口功能的实现主要通过定义一个监听器类WorldWindow来完成。
该部分主要显示视点,世界坐标系,视景体,以及在世界坐标系下看到的三维物体模型。
上边详细讲述了演示中三个窗口的相应处理,下面我们以几何变换为例来详细介绍演示的实现过程。
该演示的类名称为TransformationApplet,其主框架实现同上。
各窗口的主要处理如下:
(1)命令行窗口
本窗口中除了前面提到的数据结构,还要用到的数据结构为:
①定义视点
public static float eye[] = { 0.0f, 0.0f, 2.0f };//定义视点的位置
public static float at[] = { 0.0f, 0.0f, 0.0f };//定义物体的位置
public static float up[] = { 0.0f, 1.0f, 0.0f };//定义向上的向量
②定义矩阵
projection:投影矩阵,公有静态数组;
modelview:几何矩阵,公有静态数组;
inverse:转置矩阵,公有静态数组;
③定义标志性变量
public static boolean swapped = false;//判断是否交换平移和旋转的位置
(2)屏幕坐标系窗口
该窗口继承前边提到的全部监视器。
数据结构:
public static boolean flag = false;//判断是否在该窗口进行交互控制
基本函数:public void Judge(float update,int selection)
功能:更新变量值。
(3)世界坐标系窗口
该窗口继承前边提到的事件监视器。
数据结构:
public static boolean flag = false;//判断是否在该窗口进行交互控制
本窗口的绘制以及用户交互的实现过程为:
在事件监听器中,窗口重绘操作的处理不同。窗口绘制操作的CommandDisplay()函数代码有所不同。
上面主要介绍几何变换演示的主要实现过程,其它的演示的实现过程类似,只是具体代码有些不同,本文不再详述。
5 小结
本章重点介绍了教学演示中的演示的实现过程,至此,完成了本网站的建设。
参考文献:
[1]Andrew Davison.Pro Java 6 3D Game Development: Java 3D, JOGL, JInput and JOAL API.Apress,2007.