【Bullet引擎】刚体类 —— btRigidBody
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);
刚体对象

【Bullet引擎】刚体类 —— btRigidBody的更多相关文章
- 【Bullet引擎】Bullet物理引擎简单说明
说明 Bullet是一款开源的物理模拟计算引擎,包括刚体.柔体.弹性体等,是世界三大物理模拟引擎之一(包括Havok和PhysX),被广泛应用于游戏开发(GTA5等)和电影(2012等)制作中. Bu ...
- 【Bullet引擎】复杂碰撞体 —— btCompoundShape
说明 API文档:http://bulletphysics.org/Bullet/BulletFull/classbtCompoundShape.html btCompoundShape可用于创建不规 ...
- 【Unity 3D】学习笔记三十六:物理引擎——刚体
物理引擎就是游戏中模拟真是的物理效果.如两个物体发生碰撞,物体自由落体等.在unity中使用的是NVIDIA的physX,它渲染的游戏画面很逼真. 刚体 刚体是一个很很中要的组件. 默认情况下,新创的 ...
- cocos2d-x 扩充引擎基类功能 引起的头文件重复包含问题的分析
c++ 头文件包含 原因的分析: c++ 头文件的循环引用是指: .h 里面的里面的头文件的相互包含的,引起的重复引用的问题.cpp 里面包含头文件是不存在重复引用的问题(因为CPP没有#ifn ...
- MVC-READ3(视图引擎主要类关系图)
- Bullet核心类介绍(Bullet 2.82 HelloWorld程序及其详解,附程序代码)
实验平台:win7,VS2010 先上结果截图: 文章最后附有生成该图的程序. 1. 刚体模拟原理 Bullet作为一个物理引擎,其任务就是刚体模拟(还有可变形体模拟).刚体模拟,就是要计算预测物体的 ...
- Bullet碰撞检测
DBVT 在bullet 引擎中是很基础且重要的一个数据结构,本质上是一个可以动态更新的AABB树. 碰撞响应的分析 约束分类:可积约束,不可积约束 ,摩擦力(见[1]第四章) 整个bullet在动力 ...
- UWP简单示例(三):快速开发2D游戏引擎
准备 IDE:VisualStudio 2015 Language:VB.NET/C# 图形API:Win2D MSDN教程:UWP游戏开发 游戏开发涉及哪些技术? 游戏开发是一门复杂的艺术,编码方面 ...
- 《割绳子》《蜡笔物理学》《Contre Jour》《顽皮鳄鱼爱洗澡》等游戏用Box2D引擎实现物理部分的方法(转)
从最热门游戏排行榜和flash游戏网站上,你能看到什么?许多2D游戏都有非常出色的物理学和美术设计.现在我们要学习那些游戏使用了什么物理学以及如何用Box2D制作它们. 除了知道是“什么”,更重要的是 ...
随机推荐
- C# 删除指定文件
using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;us ...
- Spring多数据源动态切换
title: Spring多数据源动态切换 date: 2019-11-27 categories: Java Spring tags: 数据源 typora-root-url: ...... --- ...
- Prometheus+Alertmanager+Grafana监控组件容器部署
直接上部署配置文件 docker-compose.yml version: '3' networks: monitor: driver: bridge services: prometheus: im ...
- dp - 递推
C. Multiplicity time limit per test 3 seconds memory limit per test 256 megabytes input standard inp ...
- C#中的委托是什么
1.什么是委托?(方法作另一个方法的参数)delegate void MyDel(int value); //声明委托类型和类一样,委托是用户自定义的类型,但是类是数据和方法的集合,而委托是持有 ...
- 一些触发XSS的姿势(未完待续)
本文对一些能触发XSS的方式进行记录与学习. HTML5特性向量 通过formaction属性进行XSS - 需要用户进行交互 formaction 属性规定当表单提交时处理输入控件的文件的 URL. ...
- 盘一盘Tidyverse| 筛行选列之select,玩转列操作
原文链接:https://mp.weixin.qq.com/s/ldO0rm3UM_rqlFnU3euYaA 2020年,开封 <R 数据科学>R for data science,系统学 ...
- Linux下安装Ant
前言 Apache Ant 是一个构建工具,可以将软件编译.测试.部署等步骤联系在一起完成自动化工作,比如可以利用Ant来执行Jmeter的 jmx 脚本,生成了 jtl 测试结果文件,接着再利用An ...
- [bzoj3938] [Uoj #88] Robot
Description 小 \(q\) 有 \(n\) 只机器人,一开始他把机器人放在了一条数轴上,第 \(i\) 只机器人在 \(a_i\) 的位置上静止,而自己站在原点.在这之后小 \(q\) 会 ...
- 20191211 HNOI2017模拟赛 C题
题目: 分析: 开始觉得是神仙题... 然后发现n最多有2个质因子 这说明sm呢... 学过物理的小朋友们知道,当一个物体受多个不同方向相同的力时,只有相邻力的夹角相等,受力就会平衡 于是拆扇叶相当于 ...