Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > DOF指南
【标  题】:DOF指南
【关键字】:DOF
【来  源】:http://blog.chinaunix.net/article.php?articleId=36388&blogId=3425

DOF指南

Your Ad Here 如果我们要在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 <stdio.h>
#include <vg.h>

static void OpenTheDoor(void);

int
main(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;
}
}
}

void
OpenTheDoor()
{
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);
}
编写共享库的注意事项:【上一篇】
扩展CStatic支持颜色及热跟踪:【下一篇】
【相关文章】
  • VB.NET特性之FieldOffset特性
  • 【随机文章】
  • csdn域名500块
  • 用css实现孤形表格效果
  • FLASH与数据库通信问题
  • MyEclipse 5.0 + WebLogic 9.2 配置详解
  • sql server 2005 代理权限问题
  • Apache 支持ASP的解决方案
  • 动态规划法求0/1背包问题
  • 如何使用PHP中的正则表达式
  • [转载] 最受欢迎的网管工具集
  • 在Web应用程序中执行计划任务(多线程)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.