VegaAPI(1):创建一个静态的场景

来源:互联网 发布:淘宝点了退款怎么取消 编辑:程序博客网 时间:2024/05/17 09:34
/*---------------------------------------------------------------------------------
      copyright @ (ZH)Quinn 。 未经允许请勿公开发布
 
 ----------------------------------------------------------------------------------*/

   如果使用Lynx界面编辑可以很方便地得到一个定制的应用程序定义文件(.adf文件)。但是对于一个希望走得更远的程序员而言借助这样的定制总是显得碍手碍脚。很不方便,帮助文档中说道Vega中 在 Lynx版面进行的操作都可以使用相应的API函数完成,所以纯代码的应用程序是可行的。
  
   本文并没有完全抛弃Lynx版面操作,因为对于系统定义以及窗口定义和vgConfig()之间的关系(注:帮助文档中说道,vgConfig()中完成了窗口的创建,因而有关窗口属性的操作一般放在vgConfig()之前)作者还没有弄清楚。所以使用了包含系统定义和默认窗口的.adf文件。具体操作方法如下:

  (1)定制.adf文件
       初始默认的情况,Lynx开启了全部的Vega模块(module)。在file->Active Modules...下面 选择只保留两个模块:Vega 和 Base。因为初始不必要的模块配置会降低系统初始化效率。
       默认的面板中含有以下的内容,(在控制版中点击可以看得到)按照版面的顺序罗列如下:system, graphics state,window, channel, Observer, Motion mode, Scene, Enviroment, light, InputDevices。只保留system和window,剩余的全部删掉。以channel为例,点击控制版面中的channel。注意此时Lynx界面主菜单的变化,第四个弹出式菜单变为“channel”。单击“channel”菜单,选择delete即可。其余依法炮制。
       file->save as->“empty.adf”(保存路径暂且随便)

   (2)显示一个场景要准备的元素
      大体分为两部分,第一部分显示场景的载体,可以视为“显示工具”。这个部分从大到小window, channel。第二部分场景内容相关的:scene, objects, 以及observer。准确的说observer是连接两部分的一个东东。从下面的叙述可以看得出来。
      【*】 第一部分
       window 从外观上来看这里提到的window跟VC里边的window具有一样的表现。是屏幕上的一个矩形区域,含有标题栏,窗口边框等。个人猜测底层就是使用WindowsAPI实现的。
       channel 通道 是窗口上的一个矩形区域,用来显示场景。在Vega中Channel是渲染动作的最小单元。
       一个生动的例子就是模拟汽车驾驶舱的程序,可以在一个窗口里边定义两个channel。其中一个用位于窗口的上方,并且比较小。可以来模拟驾驶舱的后视镜。
      【*】 第二部分
       object 物体 是组成场景的单元。
       scene  使物体的组合,channel里边显示的是场景的组成部分。比如一座山(object)、房子(object) 车(object)组成了一个场景。显示场景的那些部分取决于观察着(obserer)
       observer 观察着。 观察着根据一定的方式"观察"场景,决定了场景的那一部分被现实,以及如何显示。打一个比方场景相当于实际的景色,观察着相当于一个摄像机,而通道相当于胶卷。摄像机的位置、焦距、运动方式等属性决定了景色那些部分显现在胶卷上。

      To be continued...明天写的内容(这些要素的逻辑结构图,基于控制台的VegaAPI应用程序构建)
  
原创粉丝点击