Vega Prime入门教程08:模块
Vega Prime入门教程索引:Vega Prime入门教程索引
本部分以VP安装目录下的dll为基础,介绍各个模块的功能和效果。
VSG函数
VSG(Vega Scene Graph)是Vega Prime的基础框架,属于最底层。
模块 | 说明 |
---|---|
vsgc | XML库,函数以vc开头 |
vsgi | Image图片处理库,支持5551/bmp/gif/ico/jpc/jpg/pcx/png/ppm/raw8/raw16/raw32/sgi/tga/tiff |
vsgn | Node节点加载器,支持加载batch/builder/flt/nsf/speedtree/star/txp/vsb模型 |
vsgr | Render渲染库,函数以vr开头 |
vsgs | Scene场景,函数以vs开头 |
vsgsh | Shader Loader,着色器加载器 |
vsgt | Texture,纹理 |
vsgu | Utility工具,函数以vu开头 |
vsgvt | Virtual Texture,虚拟纹理 |
VP模块
VP函数直接继承自对应的VSG函数。
声音(Audio)模块
该模块主要给模型提供声音,比如直升机飞行时螺旋桨的声音、汽车行驶时发动机的声音。
API
- Sound Listener 音量,就是控制声音大小
- Sound Spatial 立体音,3D音,声音会因为距离听者的远近而产生不同的效果
- Sound Ambient 环境音,背景音,声音不会因为距离听者的远近而有不同效果,比如视频里面的BGM,你离视频的远近是立体音
效果
带内部建筑(BWI)模块
BWI,Building With Interiors,室内建筑,即内部包含子建筑的建筑模型。
此控件是个属性,用于标识此模型为BWI模型。
至于如何建BWI模型,详见:还没有
API
- BWIAttribute 属性值,有它就表示此模型是带子建筑模型。
用法
创建实例并添加到工程树里面。
效果
摄像头(Camera)模块
镜头,摄像头,滤镜,它给画面本身提供特效
API
- Camera 摄像头
- CameraCompositeEffect 此API是依附于Camera的,也就是说这两个一般一起出现。
用法
位于Observer之下。
效果
通用数据库(CDB)模块
说明
CDB
CDB, Common Database,通用数据库,数据库中包含一个地区的全部地形数据和建筑模型。可以被Vega Prime/Terra Vista/STAGE等软件使用。
它包含多个纹理、模型数据,需要
LADBM
来进行管理,需要虚拟纹理
进行技术支持显示。LADBM
LADBM,Large Aread Database Management。是一个专门用于处理、分析和管理大范围地理数据的软件模块或组件。这种模块可能集成在更大的地理信息系统或数据管理平台中,以支持对地理数据的有效管理和利用。
将多层次的地理数据以数据库的形式管理。
虚拟纹理
虚拟纹理(Virtual Texture,VT)是一种以时间换空间的纹理流送技术,它最大的好处在于能够让我们使用多种高分辨率纹理,而不像传统流送一样受到内存和带宽限制。
传统流送(Mipmap Streaming)在需要使用某个纹理时,会一次性将对应mip的整个纹理全部加载到GPU内存中,即使使用这个纹理的对象只会被看到一小部分,这样的做法有时会造成很大的流送冗余。而虚拟纹理(Virtual Texture)通过预先将纹理划分为更小的区块,在流送纹理时先分析看到的对象,只流送能看见的那部分纹理,以最大限度地去除流送冗余,节省出更多的内存空间来。
由于纹理流送的方式发生了改变,能够使用的理论(虚拟)内存成数量级增长。
简单来说,虚拟纹理只会加载你会看到的部分纹理
虚拟纹理是LADBM和CDB的技术基础。
API
- CDBAutoConfig CDB数据库位置、场景、观察者
- CDBGlobals 阈值、缩放控制
- CDBLADBMPagingCenter 视图中心控制
- CDBLADBMPagingStrategyPoint 调用中心CDBLADBMPagingCenter以显示
- CDBVTCenterCompute 计算虚拟纹理的可视中心
- CDBVTHyperTexture 虚拟纹理设置
- CDBVTTechniqueRaster 属性设置
- LADBMGeometryGridDataset 几何网格数据库
- LADBMGeometryGridDatasetTXP
- LADBMIsectorLOSP
- LADBMPagingCenter 页面中心
- LADBMPagingStrategyPoint 页面策略点
- LADBMVTCenterCompute 当前页面中心点计算器
- VTCenterIsector 中心区域
- VTHyperTexture 超级纹理
- VTHyperTextureMaterial 超级纹理材质
- VTTechniqueAnalyze
- VTTechniqueBumpMapDOT3
- VTTechniqueBumpMapDOT3HyperTexture
- VTTechniqueDefault
- VTTechniqueHyperTexture
- VTTechniqueRaster
- VTTechniqueShader
- VTVirtualTextureDataset 纹理数据库
- VTVirtualTextureMgr 虚拟纹理管理器
演示
CDB需要LADBM来管理,需要VT来显示,这三个是一套使用的。
使用Vega Prime入门教程15.03:CDB安装安装配置使用CDB。
运行效果:Vega Prime入门教程15.04:CDB测试
演示视频
坐标系(Coord)模块
Vega Prime使用的坐标系系统。同时提供坐标系转换功能
API
- CoordConverter,坐标系转换
- CoordConverter_GeoRefMatrix
- CoordConverter_GeoRefVec3
- CoordSys
- CoordSysAutoConfig,通过指定文件配置坐标系
- CoordSysEllipsoid,坐标系类型,默认球形,还有WG48
- CoordSysProjectACEA,投影方式
- CoordSysProjectLCC,投影方式
- CoordSysProjectMPIFlatEarth,投影方式
- CoordSysProjectStereographic,投影方式
- CoordSysProjectTrapezoidal,投影方式
- CoordSysProjectUTM,投影方式
人体(DIGUY)模块
Mak DI-Guy软件介绍详见:DI-Guy软件介绍。
vpdiguy模块就是Vega Prime官方提供的集成接口,用于方便调用。
缺点是限定了版本,VP22.0对应版本是13.2。
API
- DiguyCharacter 人物模型
- DiguyScenario 场景
- DiguySettings 设置
使用
场景在上,人物依附于场景。
效果
需要安装指定版本的DI-GUY,以及对应授权。
实体(Entity)模块
vpEntity(实体)是vpObject(一般情况下加载模型的对象)的一个更复杂的版本。它在API级别上使用,并提供了与vpObject相比的额外功能。附加功能包括模型属性、铰接的部分操作支持、基于模型模板的模型创建和代理支持。在vpEntity上下文中,proxy(代理)是指在同步/异步加载期间操作模型组件的过程,其中对模型组件的所有操作请求都会被记住并应用于模型,而不管它何时出现在场景中。这个API的主要内部用户之一是vpSim模块,也被称为Sim适配器插件。Vega Prime通信层(DIS/HLA/CIGI)对任何需要实体操作的东西调用这个API。
API
- EntityModelTemplate,实体模型,需设置模型路径等等参数。
- Entity,实体属性,依赖于实体模型
用法
创建实例到工程树中。
示例
待补充
环境(Env)模块
vpEnv模块定义了Vega Prime的环境。环境可以控制基本的大气效果,如照明和雾,也可以作为其他更复杂的环境效果的管理者。
支持的环境效果包括:
- 太阳,myEnvSun
- 月亮,myEnvMoon
- 星星
- 天空和地平线
- 云朵
- 雨
- 雪
- 风
API
- Env 环境父对象
- EnvCloud3D 三维云朵 依附于EnvCloudLayer2D
- EnvCloudLayer2D
- EnvCloudLayer3D
- EnvCloudVolume 卷积云
- EnvMoon 月亮
- EnvRain 雨
- EnvSkyDome 天空
- EnvSnow 雪
- EnvStars 星星
- EnvSun 太阳
- EnvWind 风
- EnvWindLayer 风层
- EnvWindVolume 龙卷风
用法
创建一个Env实例,所有效果依附于这个实例。
默认情况下工程包含部分实例。
演示
直接使用默认工程预览就可以查看了。
特效(FX)模块
两个模型运动时产生的效果。比如说,投一个石子到河面,河面会泛起涟漪。
API
- FxBlade 直升飞机螺旋桨旋转效果
- FxConstantLengthLine
- FxConstantTensionLine
- FxFlightRibbon
- FxLaser 激光
- FxMissileTrail 导弹尾迹
- FxParticleSystem 粒子系统
- FxDebris 碎片
- FxExplosion 爆炸
- FxExplosion2
- FxExplosion3
- FxFire 燃烧
- FxFlak 炮火
- FxFlash 闪光
- FxFlame 火焰
- FxIlluminanceFlare 在IR视图中显示爆炸效果
- FxSmokeBall
- FxRotorDust 灰尘
- FxRotorDustOwnship
- FxSmoke 烟雾
- FxSmokeBall
- FxSplash 泼洒
- FxRotorWash 直升机螺旋桨旋转和地形组合效果
使用
依附于场景和观察者
演示
光照(LightLobe)模块
模拟灯泡、汽车灯光。
API
- Light 位置 方向
- LightLobeControl 通道 启用
- LightLobeProjected 投影方式
用法
位于场景中
演示
海洋(Marine)模块
创建可以实时模拟真实的海洋、湖、海岸线的水面。
API
- MarineBreakingWaves
- MarineFxBowWaveAngled 海面效果
- MarineFxBowWaveLevel 海面效果
- MarineFxGeometricWake 海面效果
- MarineFxHullWake 海面效果
- MarineFxObserverSeaSpray 海面效果
- MarineGlobals
- MarineOceanFixedLocation 海洋
- MarineOceanObserverCenterd 海洋
- MarineOceanOcclusion 海洋
- MarineOceanSurfZone 海洋
- MarineOceanTechnique 海洋
- MarineShipMotionStrategy 船移动策略
- MarineWaveGeneratorFFT 水面波纹生成算法
- MarineWaveGeneratorFFTUserSpectrum 水面波纹生成算法
- MarineWaveGeneratorGerstner 水面波纹生成算法
使用
海洋在上,生成波浪,波浪与船形成特效。
演示
路径(Path)模块
场景和模型运动方式
API
- MotionDOFOscillator
- MotionDriver 车辆行驶
- MotionFly
- MotionGame
- MotionOscillator
- MotionSpin 绕球移动
- MotionTetherFixed
- MotionTetherFollow
- MotionTetherSpin
- MotionUFO VP的默认运动方式,就和UFO一样,以观察者为中心看向四面八方。场景是个球,观察者位于球心。
- MotionViewer 默认场景不动,鼠标点击以UFO方式移动
- MotionWalk 点击一次动一下
- MotionWarp 只能操作x/y方向
用法
给Observer设置运动方式。
演示
默认的UFO方式
Driver方式移动
路径(Path)模块
三维模型指定移动路径。
API
- PathFinder 路径属性
- PathFinderCardinalSpline 曲线路径属性
- PathFinderHermiteSpline 曲线路径属性
- PathFinderKochanekBartelSpline 曲线路径属性
- PathFinderLinear 线型路径属性
- PathKinematicState 运动状态
- PathLookAtState 观察点状态
- PathNavigator 路径导航器
- PathSetSelector 点集选择器
- PathWay 路径
- PathWayPointSet 点集
- PathWayPointSet_WayPoint 点集中的每个点
用法
- PathWayPointSet_WayPoint是PathWayPointSet的子对象
- PathWayPointSet是PathSetSelector的子对象
- state/spline是pathway的子对象
- PathWay是PathNavigator的子对象
效果
这个飞机的运动轨迹就是由vpPath指定的。
遮盖(Overlay)模块
在原有画面上再添加一个画面,这个画面中可以是文字、模型等。
API
- Overlay2DImage 遮盖中图片
- Overlay2DLineStrip 遮盖中线段
- Oberlay2dText 遮盖中文字
- OverlayPointToPoint 遮盖中连接两个对象的线
用法
创建一个实例。
设置实例的父对象通道。
如果遮盖有模型,还需要设置模型的父对象为遮盖
效果
阴影(Shadow)模块
三维模型在阳光之下会在地面、地形上形成黑色的阴影,此模块就是模拟这种效果。
API
- ShadowDynamicShadows 动态阴影
- ShadowPlanar
平面阴影,直接把模型压扁上色的阴影,有个问题就是,如果遇到不是平面,就会穿模。
有部分阴影是在斜面土地下面。
用法
静态阴影就是创建实例,然后设置模型和太阳。
动态阴影要设置通道、光源
效果
环境(SilverLining SDK)模块
详见:SilverLining Sky & 3D Clouds SDK
既然SilverLining本身是SDK,那么Vega Prime的SilverLining模块很有可能是在此SDK基础上开发的。
SilverLining SDK只提供了Sky和Cloud,同样的,vpsilverlining也只提供了天空和云彩。
和vpEnv
模块不同,后者还提供了太阳、月亮、时间等等。
API
- SilverliningCloudLayer 云层
- SilverliningSettings 设置
- SilverliningSky 天空
用法
创建实例并添加到myEnv中
效果
仿真适配器(SIM)模块
SIM 适配器(Adapter)是Vega Prime用于发送和接收DIS/HLA/CIGI或自定义协议信息到或者从其他程序的插件。其他应用程序必须是DIS-/HLA-/CIGI-兼容的,如Presagis STAGE。如果创建了自定义连接,则其他应用程序必须能够与该连接进行通信。发送和接收的信息可以用于模拟车辆,查看拥有众多玩家的战场,或允许人工智能与人类玩家进行互动。
API
所有的API都是基于CIGI/DIS/HLS的。
使用
创建一个实例到工程树中
测试
这个适配器最主要的是提供了CIGI通信的功能。
打开示例acf文件
从host收端口是8015,发给host端口是8014,设置版本为4.0
给Host仿真器设置参数
连接状态
这个只是表示端口监听成功,不代表连接成功。
打开Vega Prime程序,连接成功
可以正常收到Vega Prime程序发来的信息
树木(SpeedTree)模块
Vega Prime集成了SpeedTree模块并提供统一的接口以便使用。
API
- SpeedGrassControl 草地控制
- SpeedGrassObject 草地对象
- SpeedTreeControl 树木控制
用法
- SpeedTreeControl直接创建一个实例到工程树就可以了。
- SpeedGrassControl只需要创建一个实例到工程树就可以使用了。
- SpeedGrassObject需要设置实例的父子对象。
效果
日志(Stat)模块
记录运行数据到本地文件
API
- StatLogger 日志配置
用法
直接新建一个示例到工程树中就可以使用了。
效果
点击预览运行程序,会在当前目录生成运行日志
日志内容包括每一帧的运行时间、绘图时间、交换缓冲区时间等,可以用来进行性能优化。
仪表(VAPS XT)模块
用于显示仪表,原本Vega Prime有自己的仪表模块,后来通过插件的方式使用GL Studio,在收购了VAPS XT软件后就以VAPS XT作为仪表控件。
现在VAPS XT也不属于Presagis了。
API
- VAPSXTRendering 渲染设置模块,显示相关设置,比如显示位置
- VAPSXT 配置VAPS XT相关设置,如dll位置、nCom配置、资源配置
效果
效果操作可以查看Vega Prime入门教程09.01:调用VAPS XT DLL
红外(IR)模块
Ondulus IR的VP接口。
说明
- 此模块需要安装Ondulus IR软件才会有
- 此模块(22版)包含Ondulus IR/NVG/LLLTV三个传感器
API
- OndulusIR 父节点,有且只有一个
- OndulusIRAtmosphere 红外环境
- OndulusIRAttribute 属性
- OndulusIRChannel 红外传感器所在的通道。
- OndulusIRFXAttribute 特效属性
- OndulusIRHotSpot 热源,篝火之类的。
- OndulusIRLightSource 光源
- OndulusIRMarineAttribute 属性
用法
输入(Input)模块
键盘、鼠标等输入设备驱动。
说明
Vega Prime的输入只能在运行时,所以输入测试只能把工程编译为程序。
用法
新建一个类继承vpApp
然后重写onKeyInput(vrWindow::Key key, int mod)
函数,内部就是
1 |
|
通过接口获取界面对象以修改数值。
录屏
Vega Prime录屏就是通过键盘实现的。
创建一个类myApp,继承vpApp,重写键盘事件
1 |
|
就是自定义一个按键,然后将其映射为F8。
LP模块
LP是VP的图像化开发工具,界面部分应该是基于Qt。VP的库要比LP丰富,毕竟不是所有的功能都可以图形化。
基于LP的界面开发详见Vega Prime入门教程13.04:模块界面


lp模块 | vp模块 | 功能 | 说明 |
---|---|---|---|
gcf | GUI Configuration File | ||
audio | audio | 音频 | |
bwi | buildings with interiors 有内饰的建筑 | ||
camera | camera | 摄像头、记录仪 | |
cdb | cdb | 通用数据库 | |
coordsys | coordsys | 坐标系统 | |
dbm | Database Management 数据库管理器 | ||
diguy | diguy | 专业人员仿真器 | |
entity | entity | 实体 | |
env | env | 环境 太阳、云朵、闪电、月亮 | |
fx | fx | 特效 | |
input_trackd | VR设备输入 | ||
input | 标准输入 鼠标、键盘 | ||
ladbm | ladbm | 大范围数据库 | |
lightlobe | lightlobe | 光照模拟 | |
marine | marine | 海洋模拟 | |
motion | motion | 运动模拟 | |
overlay | overlay | 遮盖 | |
path | 路径 | ||
rtp | Runtime Publisher 使用LADBM把CDB发布出去 | ||
shadow | shadow | 阴影模拟 | |
silverlining | silverlining | 支持Silverlining云朵和天空模块 | |
sim | sim | SIM适配器 VP用来收发CIGI/DIS/HLA信息 | |
simhlapresagisfom | simhlapresagisfom | sim hla presagis fom, | |
speedtree | speedtree | 加载SpeedTree树木模型 | |
stat | stat | 数据统计模块 | |
test | test | 测试 | |
vapsxt | vapsxt | 加载VAPS XT仪表 | |
vt | vt | 加载虚拟纹理 |
交流群
群主是《Vega Prime实时三维虚拟现实开发技术》和《Vega Prime虚拟现实开发技术》的作者王孝平。