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

从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成了市场占有率第一的物理引擎, 看来不是没有道理的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值