1 / 28

Vega prime 基本应用

Vega prime 基本应用. 制作人:** 2006.7.15. 主要内容如下:. Vega prime 概述 Lynx prime 的基本应用 几个常用的 Vega prime 类 Vega prime 工作流程. 1. Vega prime 概述. 概念:简单的说 Vega prime (以后简称 VP )是用于虚拟现实,实时视景仿真的 一个实时三维驱动工具包。 在这个工具包中,包含了一个重要的编辑器 Lynx prime( 以后简称 LP) ,它为 VP 提供一个 人机交互界面 。. Vega prime 的系统结构:. VP 实时应用的组成.

takara
Download Presentation

Vega prime 基本应用

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 prime 基本应用 制作人:** 2006.7.15

  2. 主要内容如下: • Vega prime 概述 • Lynx prime 的基本应用 • 几个常用的 Vega prime类 • Vega prime 工作流程

  3. 1. Vega prime 概述 • 概念:简单的说Vega prime(以后简称VP)是用于虚拟现实,实时视景仿真的一个实时三维驱动工具包。 • 在这个工具包中,包含了一个重要的编辑器Lynx prime(以后简称LP),它为VP提供一个人机交互界面 。

  4. Vega prime 的系统结构:

  5. VP实时应用的组成 • 应用程序 • 应用配置文件 • 模型包

  6. 应用程序 应用程序控制场景,模型在场景中的移动,和场景中其它大量的动态模型。实时应用程序包括汽车驾驶,动态模型的飞行,碰撞检测,和特殊效果,如爆炸。

  7. 应用配置文件 应用配置文件包含了VP应用在初始化和运行时所需的一切信息。通过编译不同的ACF文件,一个VP能够生成不同种类的应用。ACF文件为扩展Mark-up语言(XML)格式。 你可以使用VP编辑器LP来开发一个ACF,然后您可以使用VP API动态地改变应用中模型运动。对于实时应用来说,ACF不是必要的,但它可以将改动信息进行译码,记录在.cpp程序中,这样可以为您节省大量的时间。

  8. 模型包 一般使用MulitGen Creator和ModelBuilder 3D,以OpenFlight的格式(.flt)来创建实时3D应用中所有独立的模型。

  9. 2.Lynx prime 的基本应用 LP是一个编辑器,用于增加不同种类的模型,为模型定义参数。这些参数都存贮于应用配置文件(ACF)中的一个模型结构内,例如观察者的位置,模型及它们在场景中的位置,在场景中的移动,光线,环境效果,及目标硬件平台。ACF文件包含了VP在初始化和运行时所需的信息。

  10. LP的界面构成 LynX Prime用户界面包括四个部分:实例树形显示区(Instance Tree View),用户操作区(GUI View),应用程序区(API View),和工具条(Toolbar)和目录区(Menus)。所有这些区域将显示同一选定的对象的信息,但是这些信息是以不同格式进行安排的。你可以在一个或多个工作区进行操作来定义ACF。

  11. GUI View:用户操作区在用户界面中显示ACF模型及相关的参数,操作起来十分方便。 Instance Tree View:实例树形显示区显示目前正在操作的ACF文件和文件中包含的所有模型。 API View:API区显示选定的模型的所有可能的变量。 Toolbar:L P工具条包括所有操作模型及属性的快捷按钮 。

  12. 下面通过一个简单的实例来认识一 下LP的基本操作。

  13. 3.几个常用的 Vega prime类 • VpApp类 vpApp类用来定义一个典型的VP应用的框架。它在vpApp.h中被定义了。所有子方法(member methods)都被内嵌了。使用者可以拷贝和修改vpApp类。 vpApp的主体封装了VP应用中经常用到的vpKernel的功能。vpApp类控制实时功能(包括定义ACF、配置仿真类、仿真循环、更新和退出)。

  14. Methods: • vpApp() • initializeModule(const char *) • beginFrame() • breakFrameLoop() • configure() • define(const char*) • endFrame() • getFrameNumber() • getKernel() • isConfigured() • run() • unconfigure() • update()

  15. Methods Inherited from vuMemBase • getRef() • getSizeAllocated() • getSizeRequested() • ref() • unref()

  16. vpKernel 类 VpKernel类是vsServiceMgr类的衍生类. 核心功能包括帧循环的控制和vsServices的管理。VP 程序中的定义,配置,帧循环等是在vpKernel类中定义的。

  17. Methods • instance() • configure() • define(const char*) • isConfigured • unconfigure() • update()

  18. vpPipeline类 vpPipeline类管理窗口和硬件图象管道之间的映射。

  19. 一些常用的方法: 在窗口中加入新窗口: vpPipeline::addWindow() 删除窗口: vpPipeline::removeWindow() 与之密切关联的类还有vpWindow, vpChannel

  20. 4.Vega prime 基本工作流程 • 初始化 • 定义 • 配置 • 仿真循环 • 关闭

  21. 初始化 vp::initialize执行如下任务: 检查license是否正确 初始化静态变量(static variables)和单例类(singleton classes) 初始化内存分配(memory allocator) 初始化渲染库(rendering library) 初始化场景(scene graph) 初始化ACF剥析程序(ACF parser) 初始化模块界面(module interface) 初始化内核(kernel classes)

  22. 定义语句 类实例可通过代码创建或通过传递ACF文件给vpKernel::define方法 (或vpApp::define, 若 vpApp已经使用)。 ACF文件中的类实例将在VP解析文件时自动创建。

  23. 配 置 配置从ACF中分解而来,同时将不同的类关联起来。例如,它将系统中定义的pipeline添加给服务管理器,并且为每个类配置相关的联系。 configure功能是相互的,通过unconfigure可以将应用配置返回到configure前的状态。 configure方法经常被用户反复运用。 configure ()例子 //configure my app app->configure();

  24. 仿真循环(帧循环) 仿真循环包括一个函数调用: void vpApp::run() run()执行主要的仿真循环。这个功能会持续呼叫beginFrame(),接下来是endFrame()用来结束循环,当然还可以在循环过程中用breakFrameLoop()来结束循环。接着这项功能会呼叫unconfigure()。

  25. 关闭 退出VP vp::shutdown(); vp::shutdown执行如下任务: 释放被kernel classes分配的内存 结束各模块以释放它们在应用中所占用的内存 终止多线程 将licenses返回给license server

  26. #include <vpApp.h> int main(int argc, char *argv[]) { //初始化VP vp::initialize(argc, argv); //创建 vpApp实例 vpApp *app = new vpApp; //载入 acf 文件 if (argc <= 1) app->define("simple.acf"); else app->define(argv[1]);

  27. // 配置应用 app->configure(); // 帧循环 app->run(); //取消引用 app->unref(); // 关闭,退出VP vp::shutdown(); return 0; }

  28. 本讲完! 谢谢各位!请多多指教。

More Related