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

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

 

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

 

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

 

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

 

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

 

 

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

 

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

 

 

纯属一个菜鸟在闭门造车,如果哪位大哥有较好的方法或方向,还请指点!

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值