说明

  btCompoundShape可用于创建不规则的复杂几何体,碰撞体由多个基础几何体组成,如球体,六面体等。即btCompoundShape是由多个基础的碰撞体组合成的碰撞体。

  btCompoundShape内的子碰撞体可以动态地添加、删除和修改。

使用

btCompoundShape对象的创建

btCompoundShape* compound = new btCompoundShape();
btCollisionShape* sphereShape = new btSphereShape(radius);
btTransform localTrans;
localTrans.setIdentity();
localTrans.setOrigin(relPosition);
compound->addChildShape(localTrans, sphereShape);//添加子碰撞体 btTransform startTransform;
startTransform.setIdentity(); btScalar mass(1.);
btVector3 localInertia(, , );
compound->calculateLocalInertia(mass, localInertia); startTransform.setOrigin(btVector3(0., 10., 0.));//位置 btDefaultMotionState* myMotionState = new btDefaultMotionState(startTransform);
btRigidBody::btRigidBodyConstructionInfo rbInfo(mass, myMotionState, compound, localInertia);
btRigidBody* body = new btRigidBody(rbInfo); dynamicsWorld->addRigidBody(body);

获取碰撞体

btCollisionObject* obj = dynamicsWorld->getCollisionObjectArray()[i];//i为btCompoundShape对象的索引
btRigidBody* body = btRigidBody::upcast(obj); btCompoundShape* compound = (btCompoundShape*)body->getCollisionShape();

常用方法

子几何体数量:

  compound->getNumChildShapes()

子几何体变换:

  compound->getChildTransform(idx)  //idx为子几何体索引

获取子几何体:

  btCollisionShape * childShape = compound->getChildShape(index);

添加几何体:

  btCollisionShape* sphereShape = new btSphereShape(5);
  btTransform localTrans;
  localTrans.setIdentity();
  localTrans.setOrigin(btVector3(0, 20, 0));
  compound->addChildShape(localTrans, sphereShape);

移除几何体:

  compound->removeChildShapeByIndex(idx);

实例

流固耦合模拟

(流体与刚体交互模拟)

    

  • 流体采用SPH算法,刚体使用Bullet计算。刚体由粒子组成,使用btCompoundShape实现,用于计算流体对刚体的作用力

【Bullet引擎】复杂碰撞体 —— btCompoundShape的更多相关文章

  1. [原]Unity3D深入浅出 - 物理引擎之碰撞体(Colliders)

    通常Colliders会与Rigidbody一起使用,没有添加碰撞体的刚体会彼此相互穿过. 常用碰撞体有以下几种: Box Collider:盒子碰撞体,是一个立方体外形的碰撞体,可调整为不同大小的长 ...

  2. 【Bullet引擎】Bullet物理引擎简单说明

    说明 Bullet是一款开源的物理模拟计算引擎,包括刚体.柔体.弹性体等,是世界三大物理模拟引擎之一(包括Havok和PhysX),被广泛应用于游戏开发(GTA5等)和电影(2012等)制作中. Bu ...

  3. unity3d中 刚体(Rigidbody) 碰撞体(Collider) 触发器(Is Trigger)

      刚体(Rigidbody)的官方(摘自Unity3d的官方指导书<Unity4.x从入门到精通>)解释如下: Rigidbody(刚体)组件可使游戏对象在物理系统的控制下来运动,刚体可 ...

  4. 胶囊碰撞体(CapsuleCollider)

    胶囊碰撞体 (Capsule Collider) 胶囊碰撞体 (Capsule Collider) 由两个半球体与一个圆柱体相连接而构成.它与胶囊 (Capsule) 基元形状相同.   一堆胶囊碰撞 ...

  5. UE4创建空白关卡并添加碰撞体

    让我们接着上次继续学习UE4引擎,今天我们学习下怎样创建空白的关卡以及添加碰撞物体. 一. 创建空白关卡 1) 点击文件 -> 新建关卡(或者按快捷键Ctrl+N). 2) 你可以选择Defau ...

  6. UE4新手编程之创建空白关卡和添加碰撞体

    让我们接着上次继续学习UE4引擎,今天我们学习下怎样创建空白的关卡以及添加碰撞物体. 一. 创建空白关卡 1) 点击文件 -> 新建关卡(或者按快捷键Ctrl+N). 2) 你可以选择Defau ...

  7. 【Unity】11.4 车轮碰撞体(Wheel Collider)

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 车轮碰撞体 (Wheel Collider)专门用于创建汽车或其他移动交通工具. 车轮碰撞体是一种针对地面车辆的特殊碰撞 ...

  8. 【Unity】11.3 基本碰撞体(箱体、球形、胶囊、网格)

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 碰撞组件(Collider) 是另一种必须随刚体 (Rigidbody) 添加的组件,以便允许它和其他组件发生碰撞.或者 ...

  9. 【Unity】第11章 第三人称角色控制器和碰撞体

    分类:Unity.C#.VS2015 创建日期:2016-05-02 一.简介 第三人称视角控制器涉及的相关概念有: 1.刚体(Rigidbody). 2.碰撞体(Collider).包括球体碰撞体( ...

随机推荐

  1. js提取JSON数据中需要的那部分数据

    var data =[ { name: "程咬金",sex:"1",age:26 }, { name: "程才",sex:"0&q ...

  2. 自动将本地文件保存到GitHub

    前言 只有光头才能变强. 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 这篇文章主要讲讲如何自动将本地文件保存到GitH ...

  3. cogs 615. 韩国明星 STL map

    615. 韩国明星 ★★   输入文件:star.in   输出文件:star.out   简单对比时间限制:2 s   内存限制:128 MB [问题描述] 在LazyCat同学的影响下,Roby同 ...

  4. .net core2.2上传文件总结

    总结一下.net core的上传文件操作,这里主要分上传到本地的也就是MVC的,另一种是上传到WebAPi的. 一.Web端 1.新建一个.net core mvc项目 2.这里的版本是.net co ...

  5. 在Vue+element 开发中报: The template root requires exactly one elemen 错的解决和原因

    一.我正准备使用Vue + Element进行新的项目开发,然后在进行添加下一个组件时报错  二.解决及原因: 原来template中只允许模板里存在一个根节点,在 template 中添加一个 &l ...

  6. git 控制版本

    git:版本控制工具 1.进入想要进行版本控制项目的文件夹内 2.右击->Git Bash Here 3.初始化 git init 会多出一个.git隐藏文件夹 4.查看文件状体 git sta ...

  7. Frameworks.Entity.Core 4

    Project.Core\Frameworks.Entity.Core\Commons\ 1 AutoMapperExtension.cs AutoMapper扩展方法 2枚举类型扩展方法EnumEx ...

  8. P2869 [USACO07DEC]美食的食草动物Gourmet Grazers

    P2869 [USACO07DEC]美食的食草动物Gourmet Grazers 题目:约翰的奶牛对食物越来越挑剔了.现在,商店有M 份牧草可供出售,奶牛食量很大,每份牧草仅能供一头奶牛食用.第i 份 ...

  9. 快速构建第三方api应用

    1.使用框架和扩展 详细请看composer.json "php": "^7.1.3", "laravel-admin-ext/config" ...

  10. php--->php打印格式化

    php打印格式化 当我们PHP调试的时候,用var_dump 或 print_r打印json数据或array数组时,html页面没有换行显示,看到的内容一大堆,不好定位.输出前添加html的pre标签 ...