记住哦,本站网址是:http://www.7139.com
梦幻网络
导航图标
您现在的位置: 梦幻网络 >> 技术学院 >> 程序设计 >> C C语言 >> 正文

DOF指南

来源:互联网 收集:梦幻网络 本站网址:www.7139.com 点击数: 【字体:减小 增大

如果我们要在vega中打开一扇门,怎样实现比较简单呢?
DOF节点在Creator中可以方便的被创建,也可以使用Local-DOF菜单下的DOF Viewer命令进行交互式的查看,关于如何创建DOF并设置相应的约束条件就不详细讲了,可以参考相应的帮助文档,或者Creator的中文书,如果有的话。 考虑在虚拟场景中有个可以被打开和关闭的门,要在Vega中实现交互控制该门的闭合,怎么办?对了,很简单,DOF!在Creator中创建一个名为“door”的DOF节点,将门部分的模型,通常是个体节点放置到该节点下,用Set Local命令将DOF原点放置到门轴上,设置其绕门轴的旋转约束,比如绕Z轴,从0到120度。 注意,虽然可以在Creator中使用DOF Viewer查看其运动状态,但是在Vega中它是不会自动开关的,必须通过相应的API函数来控制,下面是一个简单的开门程序,举一反三,实现开/关门:#include #include static void OpenTheDoor(void);intmain(int argc, char **argv){ vgWindow *win; if (argc != 2) { printf("Usage: %s", argv[0]); exit(-1); } vgInitSys(); vgDefineSys(argv[1]); vgConfigSys(); win = vgGetWin(0); while (1) { vgSyncFrame(); vgFrame(); switch (vgGetWinKey(win)) { //按下空格键开门 case ' ': OpenTheDoor(); break; default: break; } }}voidOpenTheDoor(){ vgObject *obj; vgPart *door; vgPosition *pos; int i; float x, y, z, h, p, r; obj = vgGetObj(0); door = vgFindPart(obj, "door", NULL); //获取DOF pos = vgNewPos(); vgGetPos(door, pos); vgGetPosVec(pos, &x, &y, &z, &h, &p, &r); for (i=0; i<120; i++) { h += 1; vgPosVec(pos, x, y, z, h, p, r); vgPos(door, pos); vgSyncFrame(); vgFrame(); } vgDelete(pos);}(完)计算机基础教程网


Google
【更新时间:2006-7-12 17:42:56】【打印此文】【关闭窗口
搜索