【Bullet引擎】刚体类 —— btRigidBody
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了【Bullet引擎】刚体类 —— btRigidBody,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2043字,纯文字阅读大概需要3分钟。
内容图文
![【Bullet引擎】刚体类 —— btRigidBody](/upload/InfoBanner/zyjiaocheng/500/5bc2cfd185d0429f8ae923960aa0ff31.jpg)
在模拟刚体动画过程中,可以使用btRigidBody类获取所保存的刚体对象,进而控制刚体对象的旋转和位移。进行刚体模拟计算需要经常用到此类。
API:http://bulletphysics.org/Bullet/BulletFull/classbtRigidBody.html
创建刚体对象
btCollisionShape* colShape = new btBoxShape(btVector3(5, 5, 5));//创建一个基本几何体
/// Create Dynamic Objects
btTransform startTransform;
startTransform.setIdentity();
btScalar mass(1.f);
//rigidbody is dynamic if and only if mass is non zero, otherwise static
bool isDynamic = (mass != 0.f);
btVector3 localInertia(0, 0, 0);
if (isDynamic)
colShape->calculateLocalInertia(mass, localInertia);
startTransform.setOrigin(btVector3(2, 10, 0));//刚体初始位置
//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);
刚体对象
【Bullet引擎】刚体类 —— btRigidBody
标签:nio tco str ast start identity mic lin orm
本文系统来源:https://www.cnblogs.com/esCharacter/p/8490434.html
内容总结
以上是互联网集市为您收集整理的【Bullet引擎】刚体类 —— btRigidBody全部内容,希望文章能够帮你解决【Bullet引擎】刚体类 —— btRigidBody所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。