1 / 45

Vega 二次开发技术介绍

Vega 二次开发技术介绍. Vega 介绍. Vega 是什么 ? Vega 能干什么? Vega 的构成 Vega 的二次开发. Vega 是什么 ?. Vega 是软件 MultiGen 的一部分。 虚拟现实软件 MultiGen 由两部分组成: 1 、 Creator 2 、 Vega. Vega 能干什么?. Creator 用来建立三维模型 Vega 的作用: 将三维模型渲染成场景 在场景上浏览、查询 实例演示. Vega 的构成. Lynx 软件 多种动态联接库( DLL )、 函数库( Lib ) 应用程序接口( API ).

Download Presentation

Vega 二次开发技术介绍

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Vega二次开发技术介绍 1

  2. Vega介绍 • Vega是什么? • Vega能干什么? • Vega的构成 • Vega的二次开发 1

  3. Vega是什么? Vega是软件MultiGen的一部分。 虚拟现实软件MultiGen由两部分组成: 1、Creator 2、Vega 1

  4. Vega能干什么? Creator用来建立三维模型 Vega的作用: • 将三维模型渲染成场景 • 在场景上浏览、查询 • 实例演示 1

  5. Vega的构成 • Lynx软件 • 多种动态联接库(DLL)、 函数库(Lib) • 应用程序接口(API) 1

  6. Vega各个组成部分的作用 • DLL、Lib的作用 • Lynx软件的作用 • API的作用 1

  7. DLL、Lib的作用 • Vega内核 • 完成所有具体的工作 • 函数之间通过自动的相互调用构成Vega内部工作机制 1

  8. Vega内核以“类”的形式组织 • 类:封装了函数和数据的集合 • 不必了解类的“内幕”,只要使用类的函数就可以使用类的数据,操作类 • Vega “类”与之类似:通过函数对类设置参数,以控制操作;通过函数从类中获取参数,以得到信息 1

  9. 结论一 Vega应用程序所要做的工作就是给一些必要的类设置或获取必要的参数 1

  10. Lynx软件的作用 • 图形用户界面软件 (运行Lynx软件,显示界面) • 以图形界面的形式,供用户设置环境、操作参数 • 定义、生成和预览Vega应用程序 • 参数设置结果生成、存储在ADF文件 1

  11. API的作用 • 二次开发应用程序接口 • 编程实现参数设置 • 可在程序运行过程中,改变运行参数和操作方式 • 本次课程内容只涉及二次开发,似乎只与API有关,与Lynx无关,实际并非如此。 1

  12. Vega基本类 • 基本的类包括:System, Graphics States, Windows, Channels, Observers, Motion Models, Scenes, Paths, Objects, Database Manager, Players, Environments, Environment Effects, Lights, Isecors, Volumes, Color Table, Input Devices, Pathing, Navigators。 关于各类的作用请看讲义 1

  13. 关于Vega类的说明 • 类内一些参数是必设项,必须设置 • 类与类之间存在着关联,必须正确建立这些关联关系 • 二次开发编程必须用语句实现每一种关联关系 • Lynx可以自动建立这些关联关系 1

  14. 关于Lynx软件的进一步说明 • Lynx软件首先用缺省值为每一个类设置参数 • Lynx软件自动建立各类之间的关联关系 • 用户使用Lynx软件实际上是对缺省值进行修改,以实现特定的目标 1

  15. 利用Lynx软件进行二次开发 • 用Lynx软件建立一个最简单的ADF文件,各类参数已自动设置(缺省值),各类之间的关联已自动建立 • 只需要编程实现对少量特定参数的设置或修改,就可以实现特定的目标 1

  16. 结论二 用Lynx软件建立ADF文件,并用ADF文件设置系统,可以使我们将精力集中在特定的问题上,大大减少编程工作量 1

  17. 编程的有关问题 • Vega三种应用程序模型: 经典模型,主程序为main(); 标准的Windows应用程序,主程序为WinMain(); 基于MFC的Windows应用程序。 • main() 简单直观,以main()形式的应用程序为例来介绍Vega的二次开发技术。 • Visual C编辑器的设置(请学员设置,方法见讲义) 1

  18. Vega应用程序模式 vgInitSys(); 初始化系统 vgDefineSys( “myapp.adf” ); 定义系统 vgConfigSys(); 设置系统 while( 1 ) { 实时循环体 vgSyncFrame(); 循环同步控制 vgFrame(); 调用内部函数 } 1

  19. Vega应用程序说明 • 应用程序前半部分设置系统 • 循环体是实现场景动画浏览的程序部分 • 一般在循环体前设置各个类的参数,根据需要少量参数可在循环体内设置 1

  20. 编制你的第一个Vega应用程序 • 用VC建立一个工作组 • 输入并修改程序 • 选一个ADF文件加入程序 • 编译运行程序 1

  21. 用Lynx建立一个基本的ADF文件 • 打开Lynx界面 • 鼠标右键单击类面板 • 窗口“Active Modules” 中,清除除第一项“Vega”之外的所有选项 • 存储,得到一个ADF文件 • 用“记事本”打开该文件,显示其内容 1

  22. 应用环境的设置 • 设置环境三步曲 vgInitSys() vgDefineSys( “myapp.adf” ) vgConfigSys() • ADF文件的作用 一般用来设置我们所不关心的类 特定的类最好重新设置 1

  23. vgCommon类 • 它是一个公共类,提供一些各类都能使用的操作 • 常用的类有: 命名、获取命名:vgName,vgGetName 属性设置、属性修改:vgProc,vgGetProc 定位、获取定位:vgPos,vgGetPos • 其它类(用到时介绍) 1

  24. vgWindow类 • Vega应用程序必须至少有一个窗口 • 函数vgNewWin创建一个窗口 • 函数vgGetWin获取一个已创建的窗口 • 函数vgWinSize设置窗口大小 • 函数vgWinLabel设置窗口标题 • 窗口部分属性的设置和获取可用函数vgProp和vgGetProp实现 • 窗口由vgConfigSys函数打开,窗口设置必须在vgConfigSys函数之前 1

  25. 结论三 • Window类参数的设置必须在系统设置函数vgConfigSys() 之前进行 • Channel类由于与Window类的紧密联系,其参数的设置也必须在系统设置函数vgConfigSys() 之前进行 • Vega其它类参数的设置可以在其被使用前进行 1

  26. vgChannel类介绍 • 频道是窗口上的一个矩形区域,矩形区域中显示的是一个视点看到的部分场景 • 场景不是直接显示在窗口上,而是显示在窗口上的频道中 • 一个窗口可以关联多个频道,一个频道只能和一个视点关联 • 频道设置可以在窗口创建后、频道使用前的时候进行 1

  27. vgChannel类应用 • 函数vgNewChan创建一个频道 • 函数vgGetChan获取一个已创建的频道 • 函数vgChanWin建立频道与窗口的联系 • 函数vgChanViewport设置频道在窗口中的位置 1

  28. vgObserver类介绍 • 观测者是观看场景的眼睛 • 显示在频道中的景象是与频道相关联的Observer的观看结果 • 影响观看结果的因素有Observer的位置和方位 • Observer的位置是视点在场景坐标系中的坐标值(x,y,z) • Observer的方位由(h,p,r)确定 1

  29. 视点坐标系 • 与场景坐标系的关系 场景坐标系是固定坐标系、永久坐标系,视点坐标系是临时坐标系 • 场景坐标系是右手螺旋坐标系,它的原点就是视点,场景坐标系y轴方向就是视线方向 • (h,p,r)决定视点方位, h是水平旋转角(绕z轴) (逆时针为正), p是以视线为轴的旋转角(绕y轴) (顺时针为正), r是俯仰角(绕x轴) (顺时针为正) 1

  30. Z z’ x’ o’ Y y’ X O 1

  31. vgObserver类应用 • Observer与频道关系密切,必须建立与频道的关联关系 1

  32. 三维模型的引入 • 创建一个数据集 • 用模型文件名命名该数据集 • 调入数据集 • 创建一个object • 定位object • 建立数据集与object的关联 • 通过激活object实例来激活三维模型场景 • 将object投入到场景中 1

  33. 结论四 三维模型的引入要通过以下步骤 1、通过数据集读入模型文件 2、通过数据集与object的关联将整个模型变成一个object 3、通过对该object有关属性的改变实现对模型的定位、激活 4、 object只有投入到场景中才能使用 1

  34. vgMotion类 • 规定和管理各种运动模式 • Vega提供了四类运动模式:simple, complex, direct和user defined • 前三类为规定的运动模式,共十一种 • 规定的运动模式的设置 • 规定的运动模式的限制 1

  35. user defined运动模式 • Vega为用户定义运动模式的实现提供了一套内部机制 • 内部机制包括:运动模式数据自动传递,运动模式实现函数的自动调用 1

  36. user defined模式的建立方式 • 定义一个运动模式数据结构变量,为该变量申请空间 • 定义一个运动模式实现函数 • 用一个标识符来代表该运动模式函数(注册) • 依次将运动模式数据结构变量、运动模式函数标识符与运动模式实例挂钩 1

  37. 结论五 Vega运动模式的内部机制极大地简化了用户建立自定义运动模式的工作,使用户可将精力集中在运动模式实现函数的实现上 1

  38. 运动模式实现函数思路 • 接收传递数据 • 用键盘改变视点坐标或方位数据 • 用新数据设置运动模式(视点) 1

  39. vgPicker类介绍 • Picker类用来在场景中选取目标和对象 • 选取方法是用鼠标点击场景中的目标 • 目标有两类 房屋等人造几何体 地形点 1

  40. vgPicker类应用 • 创建一个Picker类实例 • 设置必要的属性 • 建立Picker类与场景、频道的关联关系 1

  41. 点击目标,查询信息 • Picker类提供了一个函数 vgPerformPickProcessing 用来实现在场景中的点击 • Picker类提供了不同的函数从Picker提取不同的信息 • GIS中常用的信息:目标、高程信息 1

  42. 总结 • Vega内核以类的形式组织,使Vega编程的任务成为设置有关类的参数 • 用Lynx完成一个最简单的ADF文件,并用这个文件设置系统,完成大部分类参数的设置,我们只需编程完成特定类少数参数的设置 • Window类、Channel类参数的设置必须在系统设置函数vgConfigSys() 之前进行 • Vega应用程序模式就是:参数设置部分加循环体部分 1

  43. 总结 • 三维模型文件是以Object的形式调入的,经历了文件  数据集(DS)  Object,最后投入场景(Scenes)的过程 • Observer与Motion关联在一起,通过对Motion的控制实现对Observer的运动控制 • Vega为user defined模式设置了内部机制,自定义函数调用模式相对固定,依据该模式,我们只需考虑如何实现自定义运动函数 1

  44. 参考书 1、《Vega程序设计》龚卓蓉编译 北京:国防工业出版社,2002 2、《LynX图形界面》龚卓蓉主编 北京:国防工业出版社,2002 3、《Vega Programmer’s Guide》 Vega软件电子文档 4、《Lynx User’s Guide》 Vega软件电子文档 1

  45. 加强联系 • 欢迎学员今后与我保持联系,继续探讨有关问题,联系邮件地址:yuzifan@hotmail.com 1

More Related