Three.js 缓冲几何体的完整外壳形状
我正试图用Ammo.js为我的缓冲几何体创建一个“弹药形状”。我正在使用“Ammo.btconverxhullshape”,但对象已关闭。你能帮我吗 “原件” “关闭”Three.js 缓冲几何体的完整外壳形状,three.js,ammo.js,Three.js,Ammo.js,我正试图用Ammo.js为我的缓冲几何体创建一个“弹药形状”。我正在使用“Ammo.btconverxhullshape”,但对象已关闭。你能帮我吗 “原件” “关闭” 函数criarConvexHullPhysicsShape(几何){ var coords=geometry.attributes.position.array; var tempBtVec3_1=新弹药。btVector3(0,0,0); var shape=新弹药。btconverxhullshape(); 对于(变量i=0
函数criarConvexHullPhysicsShape(几何){
var coords=geometry.attributes.position.array;
var tempBtVec3_1=新弹药。btVector3(0,0,0);
var shape=新弹药。btconverxhullshape();
对于(变量i=0,il=coords.length;i=(il-3));
形状.添加点(tempBtVec3_1,最后一个);
}
返回形状;
}
编辑:我找到了这个解决方案,我的朋友,谢谢Mugen强>
function createTriangleShapeByGeometry(geometry) {
var mesh = new Ammo.btTriangleMesh(true, true);
var vertices = geometry.vertices;
for (var i = 0; i < geometry.faces.length; i++) {
var face = geometry.faces[i];
if (face instanceof THREE.Face3) {
mesh.addTriangle(
new Ammo.btVector3(vertices[face.a].x, vertices[face.a].y, vertices[face.a].z),
new Ammo.btVector3(vertices[face.b].x, vertices[face.b].y, vertices[face.b].z),
new Ammo.btVector3(vertices[face.c].x, vertices[face.c].y, vertices[face.c].z),
false
);
} else if (face instanceof THREE.Face4) {
mesh.addTriangle(
new Ammo.btVector3(vertices[face.a].x, vertices[face.a].y, vertices[face.a].z),
new Ammo.btVector3(vertices[face.b].x, vertices[face.b].y, vertices[face.b].z),
new Ammo.btVector3(vertices[face.d].x, vertices[face.d].y, vertices[face.d].z),
false
);
mesh.addTriangle(
new Ammo.btVector3(vertices[face.b].x, vertices[face.b].y, vertices[face.b].z),
new Ammo.btVector3(vertices[face.c].x, vertices[face.c].y, vertices[face.c].z),
new Ammo.btVector3(vertices[face.d].x, vertices[face.d].y, vertices[face.d].z),
false
);
}
}
var shape = new Ammo.btBvhTriangleMeshShape(mesh, true, true);
return shape;
}
函数createTriangleShapeByGeometry(几何){
var mesh=新弹药。btTriangleMesh(真,真);
var顶点=geometry.vertices;
对于(变量i=0;i
与任何其他边界体积一样,凸面外壳始终是闭合的。因此,恐怕您要查找的是不可能的。与任何其他边界体积一样,凸面外壳始终是闭合的。因此,恐怕您要找的是不可能的。Blender 2.8有一个刚体形状类型“Mesh”的选项,可以工作!它存在于3js/ammo.js中吗?我不知道。也许最好直接在ammo.js
repo上问这个问题,因为它与three.js
无关。Blender 2.8有一个刚体形状类型“Mesh”的选项,可以工作!它存在于3js/ammo.js中吗?我不知道。也许最好直接在ammo.js
repo上问这个问题,因为它与three.js
无关。
function createTriangleShapeByGeometry(geometry) {
var mesh = new Ammo.btTriangleMesh(true, true);
var vertices = geometry.vertices;
for (var i = 0; i < geometry.faces.length; i++) {
var face = geometry.faces[i];
if (face instanceof THREE.Face3) {
mesh.addTriangle(
new Ammo.btVector3(vertices[face.a].x, vertices[face.a].y, vertices[face.a].z),
new Ammo.btVector3(vertices[face.b].x, vertices[face.b].y, vertices[face.b].z),
new Ammo.btVector3(vertices[face.c].x, vertices[face.c].y, vertices[face.c].z),
false
);
} else if (face instanceof THREE.Face4) {
mesh.addTriangle(
new Ammo.btVector3(vertices[face.a].x, vertices[face.a].y, vertices[face.a].z),
new Ammo.btVector3(vertices[face.b].x, vertices[face.b].y, vertices[face.b].z),
new Ammo.btVector3(vertices[face.d].x, vertices[face.d].y, vertices[face.d].z),
false
);
mesh.addTriangle(
new Ammo.btVector3(vertices[face.b].x, vertices[face.b].y, vertices[face.b].z),
new Ammo.btVector3(vertices[face.c].x, vertices[face.c].y, vertices[face.c].z),
new Ammo.btVector3(vertices[face.d].x, vertices[face.d].y, vertices[face.d].z),
false
);
}
}
var shape = new Ammo.btBvhTriangleMeshShape(mesh, true, true);
return shape;
}