三维图形程序设计基础.DOC

PAGE 1 PAGE 2 前 言 开发交互式三维图形程序是充满乐趣和富有挑战性的工作。随着图形标准OpenGL在Unix与PC平台的广泛应用,越来越多的3D应用程序采用OpenGL作为支撑库。OpenGL提供了数百个库函数,可方便地绘制具有真实感的3D图形。但是对于一个完整的交互式3D应用程序,图形的绘制只是一部分内容。更多的工作集中在场景数据结构、3D交互算法和3D用户界面的设计中。由于OpenGL并不提供此类编程接口,因此开发交互式3D应用程序的技术难度较大。 本书全面论述了基于OpenGL与Windows的交互式三维图形技术以及程序设计。与本书配套的软件是交互式三维图形软件开发工具Intra3D 2.0。Intra3D 2.0是免费软件,可用于快速开发PC平台的交互式3D应用程序。其核心是集成了场景数据结构、3D交互算法和3D用户界面的C++类库与COM对象库,支持Visual C++、Visual Basic、Delphi等语言的应用编程。两个库各有60余个程序模块,7万多行源程序全部公开,用户可以方便地修改Intra3D的内核以适应不同的需求。 本书共分七章。前五章详细论述Intra3D 2.0核心库的开发,后两章讲述如何使用Intra3D 2.0的C++类库与COM对象库来开发应用程序。本书所有的程序、数据、文档均可在Intra3D 2.0标准版软件中找到。各章要点如下: 第一章 交互式三维图形软件开发系统。主要讲述Intra3D 2.0的设计方案和软件工程方法。Intra3D体系结构分四层设计,第一层为“基础对象与算法”, 第二层为“图形对象”, 第三层为“场景图与节点”, 第四层为“绘制与交互”。 第二章 基础对象与算法。主要讲述:用于图形变换的矢量、矩阵、四元组运算;鼠标跟踪球算法;二维点阵字体与三维矢量字体的绘制;读取BMP、GIF、JPEG、SGI与TGA格式的数字图像;常用几何图元的绘制;“对象引用计数”的内存管理技术;材质对象与纹理对象的设计。 第三章 图形对象。主要讲述三类图形对象的设计:(1)多边形模型对象,用于绘制Autodesk公司的.3ds模型以及Wavefront公司的.obj模型。(2)商业统计图形对象,用于绘制柱形图、带状图、折线图、条形图等。(3)常用几何模型对象,用于绘制长方体、锥体、圆柱体、球体、圆环体等图形。 第四章 场景的节点与数据结构。主要讲述Scene Graph与节点的概念,以及形体节点、相机节点、光源节点、组节点的设计。节点基类的设计是本章重点。 第五章 场景绘制与交互。主要讲述场景视窗SceneView、OpenGL简单视窗Window3D以及3D程序常用对话的设计。SceneView是Intra3D最复杂的程序,本章详细讲述SceneView的窗口消息处理、场景绘制与动画、三维交互以及相应ActiveX控件的开发。 第六章 用Visual C++ 编写交互式三维图形程序。讲述如何使用Viusal C++和Intra3D 2.0 C++类库来开发交互式3D应用程序。四个示例程序均取自Intra3D 2.0标准版软件。 第七章 用Visual Basic 编写交互式三维图形程序。讲述如何使用Viusal Basic和Intra3D 2.0 COM对象库来开发交互式3D应用程序。四个示例程序均取自Intra3D 2.0标准版软件。 附录A讲述OpenGL应用程序性能优化的方法。附录B为Intra3D 2.0的软件说明书。 程序员总有自己偏爱的工作,作者从本科三年级起开始编写图形程序,至今已有八年。期间设计过统计分析图形软件、图形用户界面开发系统、集成电路版图可制造性分析软件、三维图形软件开发工具等软件,现在仍乐此不疲。Intra3D早期版本曾获首届中国大学生电脑大赛软件展示一等奖。我自以为在图形软件设计方面应该比较出色了,但这种个人愿望并不等于事实。有一次,当我用一年时间完成一个近10万行代码的软件时,我内心得意表面谦虚地向一个真真的软件高手请教。他竟在十几分钟内就指出多处重大设计错误,使我目瞪口呆地意识到这个软件的价值为零。在沮丧和心痛之后,我用了半年时间温习软件设计的基础知识,学会了客观地看待软件作品,不敢再有浮夸和骄傲。 由于是讲述自己的作品,本书不免要强调Intra3D 2.0的一些优点,但读者、用户应该了解其缺点。Intra3D软件是作者在学校里闭门造车开发出来的,它存在两大缺点:一是需求不明确,使软件内容泛而不深;二是没有条件进行用户测试,程序存在错误。我把软件的源程序公开,免费赠送,目的就是希望用户能选取一些有价值的程序,同时对我提出批评与建议,使我也能不停地长进。 作者再谈谈对图形软件研发的几点感受。 一、可以选用PC机作

文档评论(0)

1亿VIP精品文档

相关文档