three.js - bullet/ammo.js 中的刚体(形状)来自 three.js 中的网格

标签 three.js physics bulletphysics ammo.js

我将 bullet/ammo.js 与 three.js 一起使用。我有一个 3d 网格,我想使用精确的形状与软体进行碰撞检测。有没有一种方法可以从网格(在 three.js 中)创建 3d 刚体(在 bullet 中)?

举个例子: http://kidzinski.com/miamisura/lazy3d/ (请稍等片刻以下载 3d 模型)。我有一 block 布落在 3d body 上,我需要模拟这 block 布与 body 的碰撞。

我是这些框架的新手,如果我从根本上误解了某些东西,我深表歉意。

最佳答案

看起来您可以做一些工作来将任意 Three.js 网格变成 Bullet 凹面网格。这是由 Physi.js 支持的,它是将 Three.js 直接链接到 ammo.js 的即插即用解决方案。我个人不建议使用该项目 (Physi.js),但您可以查看源代码以了解它们如何实现凹面网格。

首先,他们遍历几何以在 these lines of physi.js 上创建“三角形”数据对象的自定义列表。

for ( i = 0; i < geometry.faces.length; i++ ) {
    face = geometry.faces[i];
    if ( face instanceof THREE.Face3) {
        triangles.push([
            ...

然后将这些三角形传递给 Ammo.js 以生成 new Ammo.btBvhTriangleMeshShape on these lines :

for ( i = 0; i < description.triangles.length; i++ ) {
    ...
    triangle_mesh.addTriangle( _vec3_1, _vec3_2, _vec3_3, true );
}

...

shape = new Ammo.btBvhTriangleMeshShape( triangle_mesh, true, true );

这应该是构建您自己的 Ammo.js 自定义网格的良好起点。

关于three.js - bullet/ammo.js 中的刚体(形状)来自 three.js 中的网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39441459/

相关文章:

ios - SpriteKit 自定义节点边界

java - Libgdx 子弹显示碰撞对象

bullet - 将 btSoftBodyHelpers::CreateFromTriMesh 与 trimesh 一起使用

bullet - 有没有人有关于如何使用 Bullet Physics/jBullet 进行 voronoi 粉碎的示例/教程?

math - Three.js 精准地形碰撞

c++ - 如何在OpenGL中将汽车朝轮胎方向移动

javascript - 根据鼠标指针放大对象

java - 尝试制作一个简单的落球程序

javascript - Three.js - 如何在指定图层上获取 THREE.ArrowHelper?

javascript - 根据所选对象更新 dat.gui