前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Bullet中创建中心不在原点的碰撞体

Bullet中创建中心不在原点的碰撞体

作者头像
逍遥剑客
发布2018-05-23 16:59:14
9330
发布2018-05-23 16:59:14
举报

从Havok换到Bullet后, 最大的不适应就是各种btCollisionShape默认是以中心为齐的

举个栗子:

Box只有extent, 没有center. 那么创建质心不在原点的Box碰撞体就会有种蛋蛋的忧伤

在生成Ragdoll时, 更奇葩的btCapsuleShape竟然中心也是在原点, 这让我如何把碰撞体对齐到Bone的LocalSpace啊? 这不仅是忧伤了, 还疼!

后来被逼成了使用btMultiSphereShape代替, 用两个蛋形定义Capsule的两端

今天回来重构时, 手贱google了一下, 原来还有个btCompoundShape!  所以, 上面的问题都变成了:

   btCollisionShape* boxShape = new btBoxShape(btVector3(2.f,2.f, 2.0f));
   btCompoundShape* compound = new btCompoundShape();
   btTransform localTrans;
   localTrans.setIdentity();
   //localTrans effectively shifts the center of mass with respect to the chassis
   localTrans.setOrigin(btVector3(0,0,1));
   compound->addChildShape(localTrans,boxShape);

缺文档的苦逼开源库, 跟Havok里教材一样详细的文档没法比啊

怪不得PhysX成了市场占有率第一的物理引擎, 看来不是没有道理的

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2014年05月17日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档