本书是《实时三维视景仿真软件VeSa丛书》的第二册。该书以vega3.5用户手册为基础,系统讲述VeSa全部基本类的程序设计。全书共分14章,在简要介绍Vega软件包的使用及其程序接口之后,着重介绍Ve9a基本类的特性、功能及编程方法,包括系统、窗口、通道、图形状态、观察者、数据库、场景运动体、环境、环境效果、雾模型、光照、体、相交矢量、运动模型、路径、导航器和输入设备。还介绍了分布式VeSa仿真、扩展及编写用户专用模块和LynX插件的方法。本书围绕Vega最主要的基本类,讲述其特点、功能及编程方法:内容力求全面、实用,并附有大量的程序实例帮助读者理解:在讲述程序设计的同时还系统叙述了涉及到真实感图形生成的一些基本概念。
本书可供从事图形图像处理、虚拟现实仿真技术、科学计算可视化以及动画研究设计的技术人员和大专院校的师生参考。
第一章Vega简介
1.1Vega的基本概念
1.1.1什么是Vega
1.1.2Vega的API函数和库
1.1.3什么是Lynx
1.2场景图形管理
1.3产品模块
1.4本书特点
1.4.1如何建立一个应用程序
1.4.2代码
1.4.3参数和属性值
1.5Unix特点
第二章应用程序接口
2.1Vega类
2,2APl结构
2.3Vega的类管理和类删除方法
2.4VgBase
2.5vgCommon
2.5.1vgName
2.5.2vgGetNameLen
2.5.3vgGetName
2.5.4vgGetType
2.5.5vgCopy
2.5.6vgDelete
2.5.7vgProp
2.5.8vgGetProp
2.5.9vgAttrList
2.5.10vgUpdate
2.5.11vgUserData
2.5.12vgGetUserData
2.5.13vgAddFunc
2.5.14vgDelFunc
2.5.15vgSnapshot
2.5.16vgDetach/vgReattach
2.5.17vgAddClassFunc
2.5.18vgDelClassFunc
2.5.19vgPrint
2.5.20vgWriteADF
2.5.21vgAddClass
2.5.22vgGetClass
2.5.23vgGetNumClass
2.5.24vgRemClass
2.5.25vgCommon函数概述
2。6vgCPos
2.6.1vgPos
2,6.2vgGetPos
2.6.3vgGetWCSPos
2.6.4vgCPos参数计算
2.6.5vgGetPosCalcVec
2.6.6vgGetPosCalcMat
2.6,7vgGetPosCalc
2.6.8vgCPos函数概述
2.7回调函数
2.7.1vgCommon
2.7.2类回调
2.8用户定义的类
第三章系统、窗口、通道和图形状态
3.1建立一个应用程序
3.2Vega应用程序的主循环
3.3系统属性
3.3.1错误处理
3.3.2帧管理
3.3.3多线程控制
3.3.4系统回调
3.3.5退出系统
3.3.6时间
3.3.7模块的可用性
3.3.8事件管理
3.4多窗口系统
3.4.1窗口外观
3.4.2窗口操作和位面
3.4.3非控制台应用程序下的Vega窗口
3.4.4基于WinMain应用程序中的Vega窗口
3.4.5基于MFC的Vega窗口应用程序
3.4.6窗口线程控制
3.4.7键盘和鼠标的输入输出
3.4.8帧缓冲区的因素
3.5通道
3.5.1通道位置
3.5.2通道投影视图
3.5.3通道属性
3.5.4通道的回调函数
3.5.5颜色表
3.5.6状态表
3.5.7转换
3.5.8通道选择
3.5.9通道选择线程
3.5.10通道光点线程
3.5.11动态视频分辨率
3.6定制的统计表
3.6.1vgStat函数的功能
3.6.2vgStat函数的属性
3.7图形状态
3.7.1图形状态的控制
3.7.2细节等级(LOD)的淡入淡出控制
3.8回调函数/小结
3.8.1vgChannel
3.8.2vgSystem
第四章观察者
4.1属性
4.1.1状态
4.1.2通道
4.1.3位置
4.1.4静态
4.1.5动态
4.1.6限定
4.1.7限定:跟随
4.1.8限定:旋转
4.1.9限定:固定值
4.1.10导航器
4.1.11HMD输入
4.1.12场景
4.1.13环境
4.1.14图形状态
4.1.15相交矢量
4.1.16查询
4.1.17体
4.1.18装载管理
4.1.19立体效果
4.2回调函数
4.3指南
第五章数据库
5.1数据集
5.1.1纹理参数
5.1.2声音波形
5.1.3数据集回调
5.2纹理
5.2.1可分页纹理
5.2.2包含纹理的可分页几何体
5.2.3用户安装的装载器
5.2.4纹理回调
5.3虚拟纹理
5.3.1Vega剪贴对象物模块
5.3.2应用程序接口
5.3.3初始化Vesa剪贴对象物模块
5.3.4创建剪贴对象物
5.3.5剪贴对象物属性
5.3.6LADBM支持
5.3.7虚拟数据库的问题
5.3.8样例代码和应用程序定义文件
5.3.9后处理问题
5.4对象物
5.5部件
5.6场景
5.7颜色表
5.8数据库管理
5.8.1Dbm属性
5.8.2Dbm形状
5.8.3Dbm坐标系变换
5.8.4Dbm形状与计算的依赖关系
5.8.5程序实例
5.9显示列表
5.9.1编辑显示列表
5.9.2通道附件
5.9.3体显示列表
5.9.4程序样例
5.10回调函数
5.10.1vgObject
5.10.2vgPart
5.10.3vgScene
5.11状态表
第六章场景运动体
6.1场景运动体属性
6.2把类事件附着到场景运动体中
6.3场景运动体定位规则
6.3.1附着运动模型的场景运动体
6.3.2附着导航器的场景运动体
6.3.3场景运动体的参考坐标系
6.4对象物附着和对象物偏移
6.5场景运动体的体
6.6附着场景运动体的相交矢量
6.7回调函数
第七章环境、环境效果、雾模型和光照
7.1环境
7.1.1环境属性
7.1.2环境能见度
7.1.3环境颜色控制
7.1.4加入类事件
7.1.5样例
7.2雾模型
7.2.1雾模型的类
7.2.2雾模型颜色和属性
7.2.3样条雾表的配置
7.3环境效果
7.3.1环境效果的颜色和属性
7.3.2云
7.3.3地表雾
7.3.4风暴
7.3.5星际模型
7.3.6日月的着色
7.3.7背景画面
7.4光源
7.4.1光源类型
7.4.2光照模型
7.4.3光源属性
7.4.4光源衰减
7.4.5光源颜色
7.4.6放置光源
第八章体和相交矢量
8.1体
8.2相交矢量
8.2.1Z、HAT、Tripod、LOS、Bump、XYZPR、V01ume的方法
8.2.2VGIS—Z方法
8.2.3VGIS_HAT方法
8.2.4VGIS_ZPR方法
8,2.5VGIS_TRIPOD方法
8.2.6VGIS—LOS方法
8.2.7VGIS-BUMP方法
8.2.8VGIS_XYZPR方法
8.2.9VGIS—VOLUME方法
8.3高级篇
8.3.1查找并取回额外的相交矢量结果
8.3.2坐标系
8.3.3相交矢量处理
8.3.4修改pfSegSet模式
8.4回调函数
第九章运动模型、路径和导航器
9.1背景
9.2使用输入设备作为运动模型
9.3执行用户定义的运动模型
9.3.1复位事件
9.3.2更新事件
9.4运动模型的处理
9.5路径
9.5.1建立和询问路径
9.5.2文件和路径的辅助函数
9.6导航器
9.6.1vgNavigator(基本类)功能
9.6.2标记和标记表
9.6.3vgSplineNavigator功能
9.6.4用vgSplineNavigator函数标记事件和数
9.6.5属性
9.7选取
9.7.1属性
9.7.2vgPickerAPI
第十章输人设备
10.1背景
10.2使用vgmev类
10.3输入设备的属性
10.4从—个设备中读取数据
10.5高级篇
第十一章扩展Vega
11.1用户自定义类
11.2建立用户自己的Vega产品模块
11.2.1模块结构
11.2.2回调
11.2.3增加用户数据并定义到ADF中
11.2.4模块定义
11.2.5LynxGUI配置文件
11.3创建Lynx插件
11.4从ADF中读取用户数据
11.5指南
11.5.1关键宇配置更改
11.5.2GUI配置更改
11.5.3Lynx插件
11.5.4模块
第十二章字体
12.1矢量字体
12.1.1字体大小
12.1.2放置字符
12.1.3着色字符串
12.2位图字体
12.2.1装载字体
12.2.2选择字体
12.2.3绘制字体
第十三章分布式Vega
13.1介绍
13.2概述
13.2.1硬件需求
13.2.2系统结构
13.2.3系统初始化
13.2.4自动开启从设备
13.3建立应用程序
13.4应用程序接口
13.4.1初始化
13.4.2数据交换
13.4.3属性
13。5LyFnX面板
13.6例子
13.6.1应用程序
13.6.2A1)P文件
13.7解决方案
13.8注意
13.9已知的问题
第十四章回调函数表
虚拟现实(VirtualReality,VR)技术自诞生以来,就在航空航天、军事、核工业以及其它行业中发挥着不可替代的作用,与多媒体、网络并称为三大前景最好的计算机技术。在我国,随着虚拟现实技术的蓬勃发展,已有越来越多的科研单位和企业投入了虚拟现实技术的研究和产品的开发,它们包括仿真建模、计算机辅助设计与制造、可视化计算、各种模拟驾驶培训、遥控机器人、数据和模型可视化、娱乐和艺术、城市设计与规划以及远程操作等方面。这一方兴来艾的计算机技术必将产生巨大的生产力,让人们的工作和生活更加轻松,更加富有色彩。
虚拟现实技术是一种高度逼真的模拟人在自然环境中视、听、动等行为的人机交互技术。该技术利用计算机产生逼真的三维视觉、听觉、触觉甚至味觉等感官世界。虚拟现实技术的突出特征是“沉浸”和“交互”。它要求计算机所创造的虚拟环境能使用户具有全身心的参与感和体验感。
虚拟现实技术在我国毕竟还是一门较新的领域,从事这门学科研究的科研人员已经不能只局限于从事最底层的开发工作,大量世界领先级产品,其性能的优越性和产品的先进程度远远超过自己开发这些模块的功能。因此,掌握这类软件的性能并对其进行二次开发显得尤为重要。无论对程序员还是非程序员,Vega都是一套理想的实用工具。因为它无需花费大量时间和精力去编程,适合仿真软件开发人员集中精力只解决特殊领域内的问题。
Vega是美国Multigen-Paradigm公司推出的先进的软件环境,主要用于虚拟现实技术中的实时视景仿真,声音仿真以及科学计算可视化等领域,支持快速复杂的视觉仿真程序,为用户提供一种处理复杂仿真事件的便捷手段。
本书是为从事图形图像处理、虚拟现实技术、科学计算可视化以及动画研究设计的技术人员编写的,是《实时三维视景仿真软件Vgea丛书》的第二册,系统讲述了Vega全部基本类的程序设计。全书共分14章,并附大量程序实例,具体内容如下:
第一章 简要介绍Vega软件包;
第二章 介绍Vega应用程序的接口技术、Vega类、API结构以及Vega基本类函数的性质、调用方法及功能;
第三章 主要讲述系统、窗口、通道和图形状态类的特性、编程方法以及操作过程,包括如何建立一个应用程序、系统属性、运行环境以及函数的功能、用途及使用方法;
第四章 主要讲述观察者类的特性、编程方法以及操作过程,包括观察者的属性、各函数的功能、用途及使用方法;
第五章 主要讲述Vega各种数据库的含义、特点、编程方法以及如何应用数据库,包括对虚拟纹理的介绍、数据集的概念、场景图形数据库的管理、颜色表、显示列表、状态表等;
第六章 主要讲述场景运动体类的特性、编程方法以及操作过程,包括场景运动体的属性、定位规则、各函数的功能、用途及使用方法;
第七章 主要讲述环境、环境效果、雾模型和光照类的特性、编程方法以及操作过程,介绍这4种类的属性、特点以及函数调用方法等;
第八章 主要讲述体和相交矢量类的特性、编程方法以及操作过程,介绍体的概念、如何使用相交矢量进行碰撞检测的方法以及函数的调用方法;
第九章 主要讲述运动模型、路径和导航器类的特性、编程方法以及操作过程,介绍运动模型的属性、对运动模型的控制、如何建立一条路径并用导航器浏览场景的方法和程序设计;
第十章 主要讲述输入设备类的属性、编程方法以及如何通过输入设备操纵运动模型的方法和操作过程;
第十一章 主要介绍对Vega进行扩展、定义用户专用的类、建立用户专用的Vega模块、创建LynX插件以及从ADF中读取用户数据的方法;
第十二章 介绍VeZa使用的字体;
第十三章 主要介绍分布式的Vega仿真,包括分布式Vega仿真的概念、编程方法及程序接口;
第十四章 用表格的形式归纳了VeZa常用的回调函数应用要点。
本书由北方交通大学机械与电子控制工程学院高级工程师龚卓蓉编译。在本书的编撰过程中,得到了北方交通大学计算机与信息技术学院院长阮秋琦教授的大力支持,并为本书作总序;北方交通大学机械与电子控制工程学院院长、教育部工程图学教学指导委员会委员朱衡君教授担任本书的主审;在此过程中也得到了王谅儒教授、王良技术总监等专家的帮助。在此特向这些多年来一直从事虚拟现实以及仿真工作的专家们表示衷心的感谢!
由于作者水平有限,时间仓促,书中的错误和疏漏在所难免,恳请读者批评指正。
编 者
2001年11月