Open jonmdev opened 6 months ago
Managed to get the correct code. It is:
let triMeshVerts = new Float32Array(9);
triMeshVerts[0] = -9; triMeshVerts[1] = 0; triMeshVerts[2] = 9;
triMeshVerts[3] = 9; triMeshVerts[4] = 0; triMeshVerts[5] = 9;
triMeshVerts[6] = 0; triMeshVerts[7] = 0; triMeshVerts[8] = -9;
let triMeshIndices = new Uint32Array(3);
triMeshIndices[0] = 0;
triMeshIndices[1] = 1;
triMeshIndices[2] = 2;
let groundColliderDesc = RAPIER.ColliderDesc.trimesh(triMeshVerts,triMeshIndices).setTranslation(0,0,0);
This is not intuitive how the indices work. I suggest adding an example like this to the documentation for illustration.
An example could also be given for a quad with reused verts like:
let triMeshVerts = new Float32Array(9);
triMeshVerts[0] = -2; triMeshVerts[1] = 0; triMeshVerts[2] = -2; //vert1
triMeshVerts[3] = -2; triMeshVerts[4] = 0; triMeshVerts[5] = 2; //vert2
triMeshVerts[6] = 2; triMeshVerts[7] = 0; triMeshVerts[8] = 2; //vert3
triMeshVerts[9] = 2; triMeshVerts[10] = 0; triMeshVerts[11] = -2; //vert4
let triMeshIndices = new Uint32Array(3);
triMeshIndices[0] = 0; triMeshIndices[1] = 1; triMeshIndices[2] = 2; //triangle 1
triMeshIndices[3] = 0; triMeshIndices[4] = 3; triMeshIndices[5] = 2; //triangle 2
let groundColliderDesc = RAPIER.ColliderDesc.trimesh(triMeshVerts,triMeshIndices).setTranslation(0,0,0);
If that is in fact correct.
Based on the minimal documentation we have, if I want to create a TriMesh floor made of a single triangle, this should I think look like this:
However, objects fall right through this. Is there some other step that needs to be done or is this function broken?
By contrast, if I make a triangle with the same points it works properly and stops objects from going through it:
Thanks for any help.