附录B:Intra3D 2.0 软件说明书
B.1 Intra3D是什么?
Intra3D是基于OpenGL与Windows 9x/NT的交互式三维图形软件开发工具,可用于快速开发PC平台的交互式3D应用程序。其核心是集成了场景数据结构、图形对象、3D交互算法和3D用户界面的C++类库与COM对象库,支持Visual C++、Visual Basic、Delphi等语言的应用编程。Intra3D是免费软件,2.0标准版约25兆,其核心库7万多行C++代码全部公开。
Intra3D 的核心是可复用的软构件库:C++类库与COM库。两个库各有60余个程序模块,分4层设计,如图1所示。其中高层构件可以引用低层构件,但低层构件不能引用高层构件。Intra3D构件库的层次结构具有良好的可扩展性,用户可以方便地修改Intra3D的内核以适应不同的需求。
4、绘制与交互层
1、基础对象与函数层
3、场景图与节点层
2、图形对象层
B.2 主要功能与程序模块
B.2.1 基础对象与函数层
(1)定义了用于对象引用计数的内存管理基类;
(2)矢量、矩阵与四元组运算,鼠标跟踪球算法;
(3)点阵字体与三维矢量字体输出,常用于数据可视化图形的数据标注;
(4)图像输入输出以及纹理映射,支持BMP、GIF、JPEG、SGI、TGA等图像格式;
(5)常用几何图元的绘制,如锥、柱、球、环等,并支持Sweep形体,螺旋体的绘制;
(6)提供450余种材质,在第四层中可以交互式编辑这些材质。
B.2.2 图形对象层
图形对象能将数据转化为几何模型并可以绘制出来。图形对象的开发与应用问题密切相关,用户可以使用继承方法扩充新的图形对象,而不会影响到其它三层的构件。Intra3D 2.0提供了三类图形对象:(1)多边形模型对象有Model3DS与ModelOBJ;(2)数值图形对象有 ColumnChart3D, RibbonChart3D, LineChart2D 和BartChar2D;(3)常用几何对象有BoxObject、ConeObject、CylinderObject、SphereObject、 TorusObject、 TubeObject与SwaptObject等。
B.2.3场景图与节点层
场景的图(Scene Graph)是个有向无环图,主要节点有:
(1)SceneNode是所有节点的基类。在SceneNode中定义了局部坐标系以及相应的图形变换,使得场景中的所有节点均能以同样的操作方式实现三维交互。
(2)相机节点(CameraNode)支持平行投影与透视投影,支持多个相机切换。
(3)光源节点分为平行光源节点(DirLightNode)、点光源节点(PointLightNode)和锥光源节点(SpotLightNode)。
(4)形体节点(ShapeNode)用于引用图形对象,并处理图形对象的三维交互。
(5)GroupNode用于组合各个节点使之构成一个场景。
B.2.4绘制与交互层
该层的主要构件的有:场景视窗SceneView,OpenGL简单视察Window3D,以及用于编辑3D属性的对话。
SceneView构件封装了交互式绘制场景的所有细节,如消息处理、场景节点的遍历绘制、多重采样消锯齿、鼠标交互等。SceneView为开发者提供简洁的编程接口,可以快速创建交互式3D应用程序框架。
Window3D构件用于创建对话框中的3D视窗,比SceneView构件简洁。
Intra3D定制了众多的对话框用于编辑属性,常用的有:颜色编辑、字体编辑、材质编辑、材质库选择、光源编辑等对话。
B.2.5 C++类与COM对象列表
B.3 配置说明
B.3.1 计算机硬件配置
(1)CPU主频不低于200MHz;
(2)内存不低于64M;
(3)显示卡支持800*600真彩色;
(4)安装Intra3D 2.0标准版软件需占用25M硬盘空间。
B.3.2 目录结构
Intra3D 2.0 标准版软件分Doc、Book、Examples、Data、Source、Lib目录。可使用向导程序Tutor.exe快速了解Intra3D 2.0的目录结构,如图2所示。
图2 向导程序Tutor.exe
一、Doc 目录
该目录下存放Intra3D 2.0 所有文档,可用Word阅读。其中:
(1)Manual.doc 为软件说明书;
(2)Intra3D-DLL.doc 为C++类库手册;
(3)Intra3D-COM.doc 为COM库手册;
(4)Autor.doc 为开发者简介。
二、Book 目录
该目录下存放OpenGL编程必备的参考书《OpenGL Programming Guide》(用IE 浏览),以及本书作者著的《交互式三维图形技术与程序设计》的原稿(用Word阅读)。
三、Examples 目录
该目录下存放3D应用示例程序,分为 Visual C++ 版本与Visual Basic 版本(各有4个示例程序)。Visual C++ 版本的示例程序用Intra3D C++ 类库编写。Visual Basic 版本的示例程序用Intra3D COM库编写。
四、Data 目录
该目录下存放应用示例程序的数据,其中:
(1)Image 子目录下存放 BMP, GIF, JPEG, SGI, TGA 格式的图像,用于纹理映射。
(2)Chart 子目录下存放数值图形的数据。
(3)ModelOBJ 子目录下存放 Wavefront 公司的 .obj 模型。
(4)Model3DS-BMF子目录下存放 Autodesk 公司的 .3ds 模型,以及用于浏览 .3ds 模型的程序 View3DS.exe。View3DS.exe 能将 .3ds 模型转化为格式更加简单的.bmf模型。Intra3D 2.0 提供绘制 .bmf 模型的程序(不直接绘制.3ds 模型)。
五、Source 目录
该目录下存放C++类库与COM库的源程序,其中:
(1)Intra3D-DLL子目录下存放C++类库的源程序,有60余个程序模块,3万余行代码。Release 版本的类库文件为Intra3D.dll与Intra3D.lib。Debug版本的类库文件为Intra3D_d.dll与Intra3D_d.lib。
(2)Intra3D-COM子目录下存放COM类库的源程序,程序模块基本上与C++类库对应。所有COM接口的定义见Intra3D.idl 。Release 版本的COM库文件为 Intra3D.ocx与Intra3D.tlb。
(3)OpenGL-COM 子目录下存放OpenGL的COM库源程序。这是为了方便于 Visual Basic 调用OpenGL函数,而将OpenGL的一些常用函数组成相应的COM接口。COM接口的定义见OpenGL.idl 。Release版本的COM库文件为 OpenGL.ocx。
(4)OpenglWindow-COM子目录下存放用于创建简单OpenGL窗口的控件,该控件一般用于制作含有三维图形的对话。COM接口的定义见OpenglWindow.idl 。Release版本的COM库文件为 OglWindow.ocx。
上述(2)(3)(4)的源程序共有4万行C++代码。
六、Lib 目录
该目录下存放C++类库与COM库的最终文件,即Intra3D.dll、Intra3D.lib;Intra3D_d.dll、Intra3D_d.lib;Intra3D.ocx、OglWindow.ocx、OpenGL.ocx。Intra3D 2.0的安装程序将自动注册 .dll 与 .ocx 文件,并复制到Windows的System目录下。
B.4 用户常见疑问与答复
B.4.1 既然有了OpenGL,为什么还要使用Intra3D来开发三维图形应用程序?
OpenGL是国际上公认的3D图形工业标准,它不仅加速了3D应用程序的开发,而且使应用程序可移植性更好。随着OpenGL在Unix与PC平台的广泛应用,越来越多的3D应用程序采用OpenGL作为支撑库。OpenGL提供了数百个库函数,可方便地绘制具有真实感的3D图形。但是在开发交互式3D应用程序方面,OpenGL存在明显的不足:(1)OpenGL与窗口系统无关,不提供任何交互手段,必须由程序员自己编写所有的交互功能。(2)OpenGL 编程接口(API)是低级的C函数,不提供可重用(Reuse)的对象库或者应用程序框架,开发效率不高。
对于一个完整的交互式3D应用程序,图形的绘制只是一部分内容。Intra3D集成了场景数据结构、图形对象、3D交互算法和3D用户界面,弥补了OpenGL的不足,可以快速地开发高质量的交互式3D应用程序。
B.4.2 Intra3D与Open Inventor的区别?
Open Inventor是著名的商业软件,在Unix与PC平台得到了广泛的应用,被誉为是交互式3D软件开发工具的“事实标准”。Intra3D是作者博士毕业设计的阶段性作品,在功能与质量上均不及Open Inventor。主要的不同点:
(1)体系结构不同。Open Inventor是围绕Scene Graph开发的,可称大而全。Intra3D分四层设计,每层少而精,扩展灵活。
(2)Intra3D提供C++类库与COM库,支持Visual C++、Visual Basic、Delphi等语言的应用编程。Open Inventor是从SGI的IRIS Inventor发展而来的,由于需求背景不同,Open Inventor不具备Intra3D这种特征。
(3)Intra3D是个免费软件,所有源代码向用户开放。由于Intra3D是分层设计的,用户可以方便地修改内核以适应不同的需求。Open Inventor是商业软件,不免费、不公开源代码。
B.4.3 Intra3D与AutoCAD、3DS软件有什么区别?
面向的用户不同。
AutoCAD、3DS是一个可执行的3D应用软件。用户可方便地直接用于设计三维图形或动画等任务。用户购买AutoCAD、3DS软件后,仅拥有使用权,不拥有版权。
Intra3D不是一个可执行的3D应用软件,它的用户是程序员。必须经过程序员二次开发才能变成一个应用软件。应用软件的版权属于其开发者,与Intra3D的版权无关。
B.4.4 目前国内有无与Intra3D 2.0相似的三维图形软件开发工具?
一般地,从事计算机图形学相关工作的机构都有内部使用的3D软件开发工具。目前作者尚未在国内发现与Intra3D 2.0相似的、免费的交互式三维图形软件开发工具。用户可以从Internet获取更多不同用途的3D软件开发工具,见
B.4.5 Intra3D 2.0有什么缺点
Intra3D软件是作者在学校里开发出来的,它存在两大缺点:一是需求不明确,使软件内容泛而不深;二是没有条件进行用户测试,程序存在错误。作者把软件的源程序公开,免费赠送,目的是希望用户能选取一些有价值的程序。同时对作者提出批评与建议,以便于改进软件。