首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

请问一个关于bullet物理引擎的有关问题

2012-12-24 
请教一个关于bullet物理引擎的问题我正在写一个格斗游戏的demo,关于碰撞检测部分,我想用bullet来完成.但是

请教一个关于bullet物理引擎的问题
我正在写一个格斗游戏的demo,关于碰撞检测部分,我想用bullet来完成.但是在实际做的时候,有几下面几点疑问,希望有大大能指点一下!谢谢!!
1.我用的人物模型是md2模型,我在初始化的时候,是不是要利用bullet库,创建对应我的md2模型里的物体出来,即我的md2里有多少个三角形,则就要用bullet创建出多少个三角形,然后再在每次切换动作的时候,再改变这些三角形?
2.如果第一点是对的,是不是利用bullet做碰撞检测的时候,就利用创建好的三角形,与其他模型的三角形,利用bullet库的函数判断有没有相交?
3.不知道bullet里的哪个函数是进行aabb算法判断的?
希望有相关经验的大大指教一二啊!冰天雪地裸奔跪求指点(别bs我。。)

[最优解释]
没有用过什么bullet
一般的碰撞检测都自己写

1.如果使用bounding box的话,模型运动的时候,bounding box当然要跟着一起变化。

2.一般都要使用bounding box这类的东西,如果检测模型的每个三角形是否相交的话,效率太低了。

3.没有用过,楼主可以看一下帮助文件嘛

[其他解释]
哦哦!那我有点点明白了,模型运动的时候,我物理的那层的三角形也要跟着动,至于是不是每个三角形都检测,可以通过AABB或OBB这类算法来优化是吗?

第三点我就不问了。。原来bullet不是很出名。。

那么,我还要判断是左手,右手、头部、左脚、右脚等位置被打中的话,是否还要记录下每一帧这些部位的三角形是哪一个?

楼上的大哥一看就是个牛人,再指点一下我啦!我很能叼的!(对不起,我文明用语了。。只是有人回复一时比较激动)
[其他解释]
不用判断是哪一个部分的三角形,比如,要判断左右手,脚什么的,可以用多个bounding box,
两只手,两只脚,身体,头都可以分别用一个bounding box,这些bounding box的大小可以不一样,这样碰撞检测就能更精确一些

这样的话,只要判断这些bounding box是否相交,就可以判断是角色的那个部分发生了碰撞。
[其他解释]
是不是像格斗游戏这种游戏 ,对每个人物都要创建两个模型,一个是实际的人物模型,包含纹理及每帧动画,还要创建一个包围盒模型,这两个模型是同步变化的,然后我每次判断碰撞时,先判断包围盒模型里的需要判断的盒子,如果发现相交了,再进一步判断人物模型里的三角形是否相交?

如果上面是对的话,还有一点,就是我用的是opengl es,没有多边形,我这个包围盒该怎么整呢。。因为我的模型都是用md2文件存储的,都是三角形,要表示一个矩形包围盒需要多边形形式的2倍哦,数量不是问题,关键是要把这些三角形还原成一个包围盒的4个顶点比较麻烦。。

不知道我的理解对不对。。
[其他解释]
如果使用了包围盒,只要包围盒相交了,就说明发生了碰撞,不用再进行判断是那个三角形了

当然,包围盒需要自己添加。比如一只手,不管它有多少个多边形组成的,它的包围盒就只有8个顶点而已。所以判断相交的时候,不是判断哪些模型上的三角形相交没有,而是指判断这这些盒子相交没有
[其他解释]
哦,包围盒需要自己添加?这大概是怎样添加呢?是在做模型的MAYA里弄的吗?就是导出一个没有纹理,只有包围盒的模型文件,并且这个模型文件与带有纹理的模型文件拥有一样的动作序列帧,每次人物动作变化时,这个包围盒模型也要跟着变化动作,是这样吗?

我还没做,但是我在考虑,如果要判断得更精细,是不是可以在判断包围盒相交后,再进行相应部位的三角形判断,虽然这样做很麻烦,我就怕老板不满意碰撞检测的效果,唉,赚几分钱不易啊。。
[其他解释]
当然可以maya里添加了。
然后把应用于角色的变换,比如位置的变化,方向等等,同时应用与包围盒就可以了。

如果还要做的精确的话,可以增加包围盒的个数,比如手掌,手臂,甚至手指也添加包围和就可以了
[其他解释]
我好像明白你的意思了,你的意思是,动态生成当前手臂部分的包围盒,即两个矩形面,形成一个包围盒,再进行碰撞检测?
[其他解释]
是这个意思
但是,不用动态生成啊,可以事先就把包围盒做好,然后角色的动作不是用矩阵来实现的吗
比如变换矩阵,吧这个矩阵同时也用于包围盒,那么人动的时候,包围盒就跟着动了
[其他解释]
已经明白了!!谢谢了啊!这两天都耗在这事上,终于明白原来是这么弄的!
[其他解释]
你好,请问你在bullet中是怎么给加进去的模型添加纹理的?

热点排行