btRigidBody类主要用于刚体数据的计算。

在模拟刚体动画过程中,可以使用btRigidBody类获取所保存的刚体对象,进而控制刚体对象的旋转和位移。进行刚体模拟计算需要经常用到此类。

API:http://bulletphysics.org/Bullet/BulletFull/classbtRigidBody.html

创建刚体对象

    btCollisionShape* colShape = new btBoxShape(btVector3(, , ));//创建一个基本几何体
/// Create Dynamic Objects
btTransform startTransform;
startTransform.setIdentity();
btScalar mass(.f);
//rigidbody is dynamic if and only if mass is non zero, otherwise static
bool isDynamic = (mass != .f); btVector3 localInertia(, , );
if (isDynamic)
colShape->calculateLocalInertia(mass, localInertia); startTransform.setOrigin(btVector3(, , ));//刚体初始位置 //using motionstate is recommended, it provides interpolation capabilities, and only synchronizes 'active' objects
btDefaultMotionState* myMotionState = new btDefaultMotionState(startTransform);
btRigidBody::btRigidBodyConstructionInfo rbInfo(mass, myMotionState, colShape, localInertia);
btRigidBody* body = new btRigidBody(rbInfo); dynamicsWorld->addRigidBody(body);

从场景中获取刚体对象

  btCollisionObject* obj = dynamicsWorld->getCollisionObjectArray()[i];//i为场景中刚体对象的索引
  btRigidBody* body = btRigidBody::upcast(obj);

常用方法:

刚体质心坐标:  

  body->getCenterOfMassPosition();

获取刚体四元数:   

  btQuaternion qua = body->getOrientation();

刚体旋转矩阵:

  btTransform trans;
  body->getMotionState()->getWorldTransform(trans);
  btMatrix3x3 matrix33 = trans.getBasis();

向刚体添加外力:

  body->applyCentralForce(btVector3(2, 1, 0));

向刚体添加转矩:

  body->applyTorque(btVector3(0, 30, 0));

设置刚体变换:

  btTransform trans;
  trans.setIdentity();
  trans.setOrigin(body->getCenterOfMassPosition() - dx);
  body->setCenterOfMassTransform(trans);

刚体对象

 

最新文章

  1. 迷你MVVM框架avalon在兼容旧式IE做的努力
  2. ios基础操作
  3. HtmlAgilityPack解析器在WP8.1下报错,不仅如此,社交化分享也报错。
  4. 【61测试】【dp】【二分】【前缀和】【树剖】
  5. Object-C Categories和Protocols
  6. ThinkPHP 学习笔记 ( 四 ) 数据库操作之关联模型 ( RelationMondel ) 和高级模型 ( AdvModel )
  7. WEKA使用教程(界面工具的用法)
  8. C#高级功能(二)LINQ 和Enumerable类
  9. cocos2d-x Animation
  10. eclipse通过classpath variable引用类库
  11. 2015第23周一SVN插件安装
  12. centos7下关闭sshd的tcp6
  13. JS 作用域(执行环境)与作用链---JS 学习笔记(二)
  14. python机器可读数据-json
  15. Spark数据倾斜及解决方案
  16. PL/SQL学习笔记之循环语句
  17. uoj #49. 【UR #3】铀仓库
  18. 【Win】Clso QR Tool 二维码小工具
  19. Code Signal_练习题_arrayMaxConsecutiveSum
  20. github如何添加新的分支

热门文章

  1. lldb调试器知多少
  2. 1、Vue 实战-入门篇
  3. HTML中使用Vue+Dhtmlxgantt制作任务进度图
  4. 数学基础系列(六)----特征值分解和奇异值分解(SVD)
  5. Python第一个请求接口
  6. 支撑京东小程序的开发框架 「Taro」
  7. golang 服务大量 CLOSE_WAIT 故障排查
  8. 关于PDF阅读器
  9. doT 这个模板 是怎么实现的?(1)
  10. 《即时消息技术剖析与实战》学习笔记8——IM系统如何保证长连接的可用性:心跳机制