您的位置:首页 > 编程语言

vega编程中文资料

2005-09-20 23:07 274 查看
1、通用API函数:
Vega通用API函数能操作大多数的Vega类和对象(注意不是全部)。
1.1 Vega结构类:
Vega的结构类列表列出了Vega中可用类实例的类型,你能看到它们中的大多数都是Lynx面版中的对象。
当用户建立了一个Vega类实例的时候,也就提供了一个指向类结构的指针,MPI提供了函数去操纵这些结构元素,
因此用户不必了解它的数据结构,虽然这个数据结果对用户是透明的。当MPI改变了这个数据结构时,用户原有的
程序代码没有必要跟着改变,所有的数据类型都在vg.h中定义。
VGTYPE_CHAN VGTYPE_MOTION
VGTYPE_WINDOW VGTYPE_GFX
VGTYPE_OBSERV VGTYPE_ENV
VGTYPE_SCENE VGTYPE_ ISECTOR
VGTYPE_ SYSTEM VGTYPE_VOL
VGTYPE_ OBJECT VGTYPE_LIGHT
VGTYPE_DBM VGTYPE_FOG
VGTYPE_PLAYER VGTYPE_ENVFX
VGTYPE_IODEV VGTYPE_POS VGTYPE_TFLOD
1.2 隐藏的Vega结构类:
以下的结构类列表列出的是不能通过Lynx进行操作的类类型,通过这些隐藏类的指针和API函数用户可以建立更
强大、更易控制、更灵活的应用程序,但这些功能是不能仅仅通过图形用户界面的设置来获得的。
VGTYPE_PART VGTYPE_DATASET
VGTYPE_CLASSDEF VGTYPE_CTAB
VGTYPE_DLIST VGTYPE_EVENT
VGTYPE_IOMAP VGTYPE_MCODE
VGTYPE_LIST

2 Vega的术语、函数构词法、
Vega函数名字是混合实例的,如vgChanWin。MPI效仿performer格式命名函数和对象属性。函数以动-名词格式命名,
以下大家都知道,我不列了。
构词法就列几个例子大家看看吧:
vgSrcAssoc(source,association)
vgAddSrcAssoc(source,association)
vgRemSrcAssoc(source,association)
vgGetSrcAssoc(source,association)

3、Vega通用函数(1)
vgGetType 返回Vega类的类型;
vgName 命名一个Vega类的对象;
vgGetName 拷贝引用类对象的字符串名到用户字符数组;
vgGetNameLen 获得列出对象名的长度;
vgDelete 删除指定的类对象;
vgUpdate 更新类对象,许多Vega类对象都需要周期性的更新以保持其值的有效性,大多数对象通过vgSync
和vgFrame每帧更新,但系统之外创建的对象则需要周期性的更新;
vgProp 设置Vega类对象的属性;
vgGetProp 获得当前Vega类对象的属性;
vgCopy 拷贝源对象到目标对象,排斥对象名、对象关联和设置的回调;
举例:
//返回Vega类的类型
Type=vgGetType(Class);
if (Type=VGTYPE_OBJECT)
print ("found an object" ;
else
print ("found something else" ;

//创建和命名一个对象
myObject=vgNewObject();
vgName(myObject,"egghead" ;

//删除指定的类对象
myPlayer=vgFindPlyr("Drive Car" ;
vgDelete(myPlayer);

//vgProp等
vgMotion *myMotionModel;
float mmType;
myMotionModel=vgFindMot("mm" ; //ADF定义了mm
mmType=vgGetProp(myMM,VGMOT_MODEL);
switch(mmType)
{
case VGMOT_DRIVE:
vgProp(myMM,VGMOT_MODEL,VGMOT_DRIVE);
break;
case VGMOT_SPIN:
vgProp(myMM,VGMOT_MODEL,VGMOT_SPIN);
break;
case VGMOT_WARP:
vgProp(myMM,VGMOT_MODEL,VGMOT_WARP);
break;
case VGMOT_UF
vgProp(myMM,VGMOT_MODEL,VGMOT_UFO);
break;
case VGMOT_USER1:
vgProp(myMM,VGMOT_MODEL,VGMOT_USER1);
break;
}
4、Vega通用函数(2)
vgPrint 以标准格式打印Vega实例信息(可以自定义),主要用于调试;
vgUserData 赋予一个指针到一些实例的用户自定义数据;
vgGetUserData 获得用户数据的指针;
vgWriteADF 以ADF格式打印一个实例的信息;
vgAddFunc 对Vega实例增加一个回调;
vgDelFunc 对Vega实例移去一个回调;
这里就不举例了。

5、Vega通用函数回调
VGCOMMON_POS 放置回调时调用;
VGCOMMON_DELETE 删出回调前调用;
VGCOMMON_COPY 复制回调前调用;
VGCOMMON_STATE 回调状态改变时调用;
VGCOMMON_PRINT 类打印时调用;
VGCOMMON_NEW 类实例化前调用;
VGCOMMON_POSTUPDATE 回调更新后调用;
举个例子:
void PositionCallback(vgCommon*,void*); //函数原形
vgMotion *myMM; //声明变量
myMM=vgGetMot(0); //获得运动模型的指针
vgAddFunc(myMM,VGCOMMON_POS,PositionCallBack,0)
//在运动模式上对每个位置事件设置一个回调函数
void PositionCallBack(vgCommon *myMM,void *udata);
{
vgPosition *currentPosition;
currentPosition=vgGetPos(myMM);
vgPrint(currentPosition);
} //回调函数结束

6、Vega位置函数
Vega位置函数(vgPos)用于操纵位置和方向,可以是单精度数值、双精度数值、单精度矩阵、双精度矩阵。
vgNewPos
vgPosVec 定义位置和方向;
vgGetPosVec 获得矢量信息;
vgDelPos 删除一个位置值;
vgCopyPos 复制一个位置值;
vgGetPosDtype 获得一个储存于vgPostion句柄中的数据的数据类型;
vgPosVecD/vgGetPosVecD 设置/获取double型数值位置;
vgPosMat/vgGetPosMat 以4*4矩阵格式定义/释放位置和方向信息;
vgPosMatD/vgGetPosMatD 以双精度数值4*4矩阵格式定义/释放位置和方向信息;
vgPosTime 时间—位置函数,当位置需要进行以内插值替换等操作时可以使用;
vgGetPosTime 获取双精度时间—位置信息;
vgSubPos 计算2个不同位置对象的不同点,结果以单精度储存,只对X,Y,Z进行操作;
vgSubPosD 计算2个不同位置对象的不同点,结果以双精度储存,只对X,Y,Z进行操作;
vgPos 在世界坐标系中以CPos类定位一个对象;
vgGetPos 获取一个对象的位置并将其拷贝到vgPosition结构中;
vgGetWCSPos 返回世界坐标系的位置值;

举个例子:
vgObject *object;
vgPostion *myPos;
float X,Y,Z,H,P,R;

object=vgFindObj("egg");
myPos=vgNewPos();
vgGetPos(object,myPos);
vgGetPosVec(myPos,&X,&Y,&Z,&H,&P,&R);
X+=100;
R+=10;
vgPosVec(myPos,X,Y,Z,H,P,R);
vgPos(object,myPos);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: