Vega Prime核心功能模块介绍

Vega Prime具有典型面向对象特点,其核心功能模块都是以类的形式定义的,并存在一定的继承关系,对基本功能进行扩充。

vp***表示vp模块中的函数和类,这一层完全可以由Lynx Prime来操作完成;

vs***表示vsg模块中的函数和类,是vp的关键核心;

vr***表示render层,是硬件接口层,可以理解为对OpenGL或DirectX的封装层;

vu***表示一些内存管理、辅助、数学、工具类,对vega prime的其它功能进行了完善。

1、内核vpKernel

vpKernel继承于服务管理类(vsServiceMgr,继承关系如下图1所示),负责帧循环和管理各种服务。同时,内核创建一个遍历更新(vsTraversalUpdate)实例并控制它的执行。这个遍历一旦被内核的更新方法(vpKernel::update)触发,就会访问所有用内核注册登记的场景对象,自然就可以更新场景中所有对象的参数。内核提供了明确的API来操作它管理的场景(vpScene)。当观察者定位自己的通道(channel)时,内核也会通过消息机制提供控制。除此之外,内核还负责把相应的配置信息和帧循环控制信息发送给各个模块(vpModules)。另外,内核还要负责发布帧号和模拟仿真时间。

图1

vpKernel功能函数表1

函数原型 功能描述
instance() 创建内核实例
define(const char* configFile) 通过文件定义
configure() 配置
beginFrame() 开始帧循环
breakFrameLoop() 暂停帧循环
endFrame() 终止帧循环
getActualFrameRate() 获取确切帧率
getBeginFrameTime() 获取帧开始时间
getDesiredFrameRate() 获取期望的帧率
getFrameNumber() 获取帧号
setDesiredFrameRate(double rate) 设置期望的帧率
setFrameRateLimiter(FrameRateLimiter *ctrl) 设置帧率的限制
setFrameRateLimiterEnable(bool bEnable) 使帧率限制设置有效
setPriority(vuThread::Priority pri) 设置线程优先级
setProcessor(int cpu) 设置处理器数目
update(void) 更新数据

2、窗口vpWindow

vpWindow定义了基本窗口以及消息处理机制,提供了一条具体配置帧缓冲区和输入处理的途径。通过内核实例配置:vpKernel::instance()->configure(),为窗口设置默认的键盘函数、鼠标函数、改变形状函数和关闭函数。当然用户也可以在内核实例配置之后创建窗口。

图2

vpWindow功能函数表2

函数原型 功能描述
addChannel(vpChannel* chan,int loc=-1) 添加通道
getChannel(int loc) 获取通道
setFullScreenEnable(bool bFullScreen) 设置窗口全屏
setInputEnable(bool bInput) 设置运行输入
setKeyboardFunc(KeyboardFunc userFunc,void *data = NULL) 设置键盘处理函数
setMouseFunc(MouseFunc userFunc,void* data = NULL) 设置鼠标处理函数
setOrigin(int left,int bottom) 设置窗口的位置
setParent(Window win) 设置窗口的父载体
setReshapeFunc(ReshapeFunc userFunc,void *data=NULL) 设置形状变化处理函数
setSwapInterval(int interval) 设置交换间隔
updateStress(double frameRate) 更新帧速率
KEY_1,KEY_a,KEY_RIGHT 键盘键标示
MESSAGE_KEY_DOWN,MESSAGE_MOUSE_LEFT_DOWN 鼠标键标示
getOrigin(int *left,int *bottom) 获取窗口原始位置

3、通道vpChannel

pChannel定义了观察世界的视点,控制视点内地绘制区域,允许通过设置具体参数来控制从视点触发形成的可视化椎体和剪切面。一个通道只能附加于一个窗体上。

图3

vpChannel功能函数表3

函数原型 功能描述
setCullFunc(CullFunc f) 设置剪切函数
setCullMask(unit mask) 设置剪切掩码
setCullThreadPriority(vuThread::Priority) 设置剪切线程优先级

setCullThreadProcessor(int cpu)

设置剪切线程cpu数目
getViewMatrix() 获取视点矩阵
setDrawArea(double l,double r,double b,double t) 设置绘制区域
setDrawBuffer(DrawBuffer buffer) 设置绘画缓冲
setDrawFunc(DrawFunc f) 设置绘画函数
setLODFilter(vsLODFilterBase*) 设置LOD过滤器
setLODTransitionRangeScale(double scale) 设置LOD转换范围
setLODVisibilityRangleScale(double scale) 设置LOD可视范围
setLogicalPipelineId(int logicalPipelineId) 设置逻辑管道
setNearFar(float nr,float fr) 设置视截面远近
setFrustumAsymmetric(float l,float r,float b,float t) 设置不对称椎体
setLightPointComputeAsynchronousEnable(bool enable) 设置允许不对称光点
setLightPointThreadPriority(vuThread::Priority pri) 设置光点线程优先级
setLightPointThreadProcessor(int cpu) 设置光点线程cpu数目

4、场景vpScene

场景是所有节点的容器,是一个场景图形的根节点,也是剪切遍历和更新遍历的起始点。从观察者(vpObserver)的角度出发,通过某个通道(vpChannel),在某个窗口(vpWindow)中就可以看到某个场景(vpScene)。其它物体对象(vpObject)都是位于某个场景中呈现在观察者的视截体中。

图4

vpScene功能函数表4

函数原型 功能描述
addChild(vsNode* child,int loc=-1) 添加子节点
begin_child(),end_child() 列举子节点
begin_parent(),end_parent() 列举父节点
get_iterator_child(int loc) 获取子节点
get_iterator_parent(int loc) 获取父节点
getChild(int loc) 获取子节点
getNumChildren() 获取子节点数目

insert_child(vsNode* child,const_iterator_child it,

unit mask=vsNode::DIRTY_UP_AALL)

插入子节点
push_back_child(vsNode* child,unit mask=vsNode::DIRTY_UP_ALL) 添加子节点到子节点列表的后面
removeChild(vsNode* child) 移除子节点

replace_child(vsNode* child,const_iterator_child it,

bool reparent,unit mask=vsNode::DIRTY_UP_ALL)

替换子节点
addSubscriber(Event event,SubScriber *subscriber) 添加订阅者

5、观察者vpObserver

vpObserver是一个具有位置特征的摄像机,用于定位、管理、渲染一系列通道。同时,观察者负责发布参数对象“视点”,如果在一个应用中存在多个观察着对象,最近一个被更新的观察者将负责发布参数对象“视点”。内核是通过附加在窗口上的通道对场景中的对象进行绘制渲染的,不同观察者通过不同的通道会看到场景中不同的视图。

图5

vpObserver功能函数表5

函数原型 功能描述
addAttachment(Attachment *attr) 添加附属物
addChannel(vpChannel *chan,int loc=-1) 添加通道
begin_attachment(),end_attachment() 列举附属物
begin_channel(),end_channel() 列举通道
erase_attachment(Attachment *attr) 删除附属物
erase_channel(const_iterator_channel it) 删除通道
getTranslate(double *x,double *y,double *z) 获取观察者位置
getRotate(double *h,double *p,double *r) 获取观察者旋转状态
setLookAt(const vpPositionable *target) 设置目标观察物
setLookFrom(const vpPositionable *pos) 设置观察点

setPosition(double p0,double p1,double p2,

const vpCoordConverter *from = NULL)

设置观察者位置
setRotate(double h,double p,double r,bool incr=false) 设置观察者旋转状态
setScene(const vpScene* scene) 设置场景
setStrategy(Strategy* strategy) 设置策略

6、对象vpObject

vpObject是渲染的最基本单元数据,是几何体与材质的集合。对象采用引用计数机制,当对象被附加到场景中时自动加1,当对象被移除时自动减1,当引用计数为0时,对象将被删除。

图6

vpObject功能函数表6

函数原型 功能描述
addAttribute(Attribute* attr) 添加属性

addChild(vsNode* child,int loc=-1,unit

mask=vsNode::DIRTY_UP_ALL)

添加子节点
begin_attribute(),end_attribute() 列举属性
begin_child(),end_child() 列举子节点
begin_geometry(),end_geometry() 列举几何体
begin_named(),end_named() 列举名称
begin_parent(),end_parent() 列举父节点
begin_state(),end_state() 列举状态
begin_texture(),end_texture() 列举材质
copyFromSource() 拷贝
find_named(const char* name,int occurrence=0) 根据名字查找
setScale(double x,double y,double z,bool incr=false) 设置缩放比例
setTranslate(double x,double y,double z,bool incr=false) 设置位置
setRotate(double h,double p,double r,bool incr=false) 设置旋转状态

7、自由度vsDOF

vpDOF定义了一个节点,为场景中的图形提供一种转换矩阵,典型应用于关节模型中。自由度确切地封装了两个矩阵,第一个矩阵是相对于父节点的本地单元矩阵,第二个是相对于本地矩阵的转换矩阵。该节点提供了API来定义本地坐标和相对于本地坐标的转换,包括:X、Y、Z上的位移,H、P、R上的旋转,沿X、Y、Z上的缩放因子。

图7

vsDOF功能函数表7

函数原型 功能描述
begin_child(),end_child() 列举子节点
begin_parent(),end_parent() 列举父节点

push_back_child(vsNode* child,unit

mask=vsNode::DIRTY_UP_ALL)

添加子节点到子节点列表后面
COMPONENT_ROTATE_H 朝向旋转限制
EVENT_ISECT 碰撞事件
update(vsTraversalUpdate* trav) 更新遍历
setRotateH(double h,bool incr=false)
设置x轴上的旋转因子

setRotateP(double p,bool incr=false)  
setRotateR(double r,bool incr=false)  
setScaleX(double x,bool incr=false)  
setScaleY(double y,bool incr=false)  
setScaleZ(double z,bool incr=false)  

setTranslateX(double x,bool incr=false)

 
setTranslateY(double y,bool incr=false)  
setTranslateZ(double z,bool incr=false) 设置z轴上的位移
setTranslate(double x,double y,double z,bool incr=fase) 同时设置(x,y,z)

8、转换vpTransform

vpTransform为场景中的图形提供了转换,封装了一个转换矩阵并提供了操作方法。转换重载了节点的所有遍历函数,同时也相应地修改了遍历矩阵堆栈。vpTransform继承于vsTransform和vpPositionable,这样可以使转换能够定位一个独立的坐标系统,并且不同于父场景中的坐标系统。

图8

vpTransform功能函数表8

函数原型 功能描述
begin_child(),end_child() 列举子节点
begin_parent(),end_parent() 列举父节点

push_back_child(vsNode* child,unit

mask=vsNode::DIRTY_UP_ALL)

添加子节点到子节点列表后面
update(vsTraversalUpdate* trav) 更新遍历
setRotateH(double h,bool incr=false)
设置x轴上的旋转因子

setRotateP(double p,bool incr=false)  
setRotateR(double r,bool incr=false)  
setScaleX(double x,bool incr=false)  
setScaleY(double y,bool incr=false)  
setScaleZ(double z,bool incr=false)  

setTranslateX(double x,bool incr=false)

 
setTranslateY(double y,bool incr=false)  
setTranslateZ(double z,bool incr=false) 设置z轴上的位移
setTranslate(double x,double y,double z,bool incr=fase) 同时设置(x,y,z)

9、运动模式vpMotion

pMotion定义了一种运动方式,本质上就是一种位置策略,通过使用标准的输入设备,定义了相应的能够很好地执行定义好的位置驱动方法。vpMotion是一个抽象的基类,包含的运动模式有:驾驶模式(vpMotionDrive)、飞行模式(vpMotionFly)、游戏模式(vpMotionGame)、旋转模式(vpMotionSpin)、链条模式(vpMotionTether)、固定链条模式(vpMotionTetherFixed)、链条跟随模式(vpMotionTetherFollow)、链接旋转模式(vpMotionTetherSpin)、不明飞行物模式(vpMotionUFO)、行走模式(vpMotionWalk)等。

图9

vpMotion功能函数表9

函数原型 功能描述
getInput() 获取输入
getKeyboard() 获取键盘输入
getMouse() 获取鼠标
getName() 获取名称
getNextStrategy() 获取下一个策略
setInput(vpInput *input) 设置输入
setKeyboard(vpInputKeyboard* keyboard) 设置输入键盘
setMouse(vpInputMouse* mous) 设置鼠标
setName(const char* name,bool hash=true) 设置名称
setNextStrategy(Strategy *nextStrategy) 设置下一个策略
getUserDataList(void) 获取用户数据列表

10、碰撞vpIsector

vpIsector负责维护和管理用于碰撞检测的相交线段,并提供了一种数据结构和一组方法来查询碰撞结果。

图10

vpIsector功能函数表10

函数原型 功能描述
getEnable() 获取碰撞检测有效性
getHit() 获取碰撞
getHitGeometry() 获取碰撞几何体
getHitMatrix(vuMatrix<double>* matrix) 获取碰撞矩阵
getHitNode(const char* name=NULL,int occurence=0) 获取碰撞节点
getHitNormal(vuVec3<float>* normal) 获取碰撞法线
getHitObject() 获取碰撞物体
getHitPoint(vuVec3<double>* point) 获取碰撞点
getTarget() 获取碰撞目标
setStrategy(Strategy* strategy) 设置碰撞策略
setEnable(bool bEnable) 设置碰撞检测有效
setIsectMask(unsigned int imask) 设置碰撞掩码
setTarget(const vsNode* target) 设置碰撞目标
setTranslate(double x,double y,double z,bool incr=false) 设置位置
时间: 2024-10-05 03:36:19

Vega Prime核心功能模块介绍的相关文章

智点财务软件的功能模块介绍

智点财务软件由多个功能模块构成,包括:总账.工资管理.固定资产.资产负债表.损益表等.各模块间相对独立,各自具有完善和系统的功能,又有机地结合为一体. 智点财务软件是一个企业经营管理平台,用以解决不同满足各级管理者对信息化的不同要求:为高层经营管理者提供大量收益与风险的决策信息,辅助企业制定长远发展战略:为中层管理人员提供企业各个运作层面的运作状况,帮助做到各种事件的监控.发现.分析.解决.反馈等处理流程,帮助做到投入产出最优配比:为基层管理人员提供便利的作业环境,易用的操作方式实现工作岗位.工

jeesite功能模块介绍

   1.文档介绍 最近开始接触jeesite平台,很多资料已经以树形的方式,列出了jeesite的功能模块名称. 这里对模块做简单的描述,在以后的开发中,可以结合业务需求来使用这些模块.(这里为自己的理解,不正确的地方请多多指正) javaBeanValidator :利用注解的方式,在javabean代码内部,利用注解实现校验.(参考网址:http://www.th7.cn/Program/java/201511/689536.shtml)

12 HBase核心功能模块。

Hadoop 框架包含两个核心组件: HDFS 和 MapReduce 其中 HDFS                是文件存储系统,负责数据存储: MapReduce     是计算框架,负责数据计算 Hbase 数据库核心组件4个. 客户端Client.协调服务模块ZooKeeper. 主节点HMaster 和 Region节点 HRegionServer. CLient                是整个Hbase系统的入口.使用者通过客户端操作 HBase.客户端使用 Hbase 的

dubbo 各功能模块介绍及配置方式

基于sping和dubbo.properties的配置实现方式: ================================================================= 注册中心参考手册 <dubbo:registry/> 注册中心配置:配置类:com.alibaba.dubbo.config.RegistryConfig说明:如果有多个不同的注册中心,可以声明多个<dubbo:registry>标签,并在<dubbo:service>或&l

opencv模块介绍

opencv主要模块介绍: [calib3d]——其实就是就是Calibration(校准)加3D这两个词的组合缩写.这个模块主要是相机校准和三维重建相关的内容.基本的多视角几何算法,单个立体摄像头标定,物体姿态估计,立体相似性算法,3D信息的重建等等.[contrib]——也就是Contributed/Experimental Stuf的缩写, 该模块包含了一些最近添加的不太稳定的可选功能,不用去多管.2.4.8里的这个模块有新型人脸识别,立体匹配,人工视网膜模型等技术. [core]——核心

vega prime简介

Vega和Vega Prime不是同一款软件,前者是经典的渲染软件,后者是精华的渲染软件,都是MPI的视景仿真渲染工具. Vega是什么 Multigen VEGA 是MultiGen-Paradigm公司最主要的工业软件环境,用于实时视觉模拟.虚拟现实和普通视觉应用.Vega将先进的模拟功能和易用工具相结合,对于复杂的应用,能够提供便捷的创建.编辑和驱动工具.Vega能显著地提高工作效率,同时大幅度减少源代码开发时间. Paradigm还提供和Vega紧密结合的特殊应用模块,这些模块使Vega

IIS7 常用模块介绍说明

1.1.0   IIS常用的功能模块介绍: 1)         静态内容:可发布静态 Web 文件格式,比如 HTML 页面和图像文件. 2)         默认文档:允许您配置当用户未在 URL 中指定文件时供 Web 服务器返回的默认文件. 3)         目录浏览:允许用户查看 Web 服务器上的目录的内容.当用户未在 URL 中指定文件以及禁用或未配置默认文档时,使用“目录浏览”在目录中提供自动生成的所有目录和文件的列表.建议将该功能禁用. 4)         HTTP错误:

Nginx 功能模块

一.Nginx 核心功能模块 (1) Nginx 核心功能模块负责 Nginx 的全局应用,主要对应主配置文件的 Main 区块和 Events 区块(2) Nginx 核心功能模块官网:http://nginx.org/en/docs/ngx_core_module.html 二.Nginx http 模块 Nginx http 功能模块 模块说明 ngx_http_core_module 包括一些核心的 http 参数配置,对应 Nginx 的配置为 HTTP 区块部分 ngx_http_a

嵌入式系统图形库GUI核心模块介绍

本文转载自:http://blog.csdn.net/xteda/article/details/6575278 (作者 冯青华 信庭嵌入式工作室(www.xteda.com)- CEO Blog:http://blog.csdn.net/fqheda )                                 <转载请注名来路> Technorati 标签: GUI 模块介绍 --------------------------------------------我是分割线-----