gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 02:20:21 25 4
gpt4 key购买 nike

我将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com