您的位置:首页 > 其它

导入3DS模型生成Bullet物理世界

2010-07-18 11:01 218 查看
用GLUT+Opengl做了一个场景漫游的小Demo,在网上找的“诛仙的”的场景模型和“仙剑4“的人物模型,又看了下3DS文件模式的结构,没有深入研究,在网上找了读3DS模型的代码直接使用了。然后因为没有碰撞检测,感觉很差,只能给人物的坐标直接赋Y值,让它“站”在地上,还有各种“穿墙”的超现实。

于是开始看物理引擎这块, 也不知道哪个好,就在网上看别人意见了,下了Bullet的源码,编译。中文资料几乎没有,英文的文档看的也不是很明白。干脆硬着头皮看Demo了,知其然而不知其所以然的比葫芦画瓢。

在场景中画几个BOX,然后用一个BOX去碰一个BOX没有问题了。又想到我的模型是外部3DS文件导入的,如何去确定这个复杂场景的碰撞边界?在QQ群里经一位大哥指点,知道了Bullet还有btBvhTriangleMeshShape这个东西,只能怪自己看Demo看的不全。

一般研究后,明白了咋用,于是我在读场景模型的时候,将模型的顶点和顶点索引数据提取出来,用来生成构建btBvhTriangleMeshShape所需要的btTriangleIndexVertexArray,再将btBvhTriangleMeshShape实例当作“GroundShap”加入到 dynamicsWorld 中。

编译,改错,编译...运行,成功!这下也明白了可以在建模的时候,把模型的包围盒可以用简单模型表示出来,用来读取生成物理模型。



一个新的问题是:当我的角色进入室内后,屋顶挡住了视线,看不到室内场景和角色。如何去根据场景,动态更新视点的位置?比如说角色进入室内后,将视点放在室内房顶的一角,可以看到整个室内?

还有:角色在移动时候的动画怎么做?现在是一个静态的模型在“生硬”的移动。

纯属一个菜鸟在闭门造车,如果哪位大哥有较好的方法或方向,还请指点!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: