Mesh generation to everybody
Add cylinder mesh generation Mesh generation can be used by everyone Mesh generation also gives vertex normals for convenience
This commit is contained in:
@ -19,44 +19,46 @@
|
||||
#ifndef SOFT_BODY_H
|
||||
#define SOFT_BODY_H
|
||||
|
||||
#include <testbed/framework/sphere_mesh.h>
|
||||
#include <bounce/meshgen/sphere_mesh.h>
|
||||
|
||||
struct b3SphereClothMesh : public b3ClothMesh
|
||||
struct b3QClothMesh : public b3ClothMesh
|
||||
{
|
||||
b3StackArray<b3Vec3, 256> sphereVertices;
|
||||
b3StackArray<b3ClothMeshTriangle, 256> sphereTriangles;
|
||||
b3ClothMeshMesh sphereMesh;
|
||||
b3ClothMeshMesh qMesh;
|
||||
|
||||
b3SphereClothMesh()
|
||||
~b3QClothMesh()
|
||||
{
|
||||
free(vertices);
|
||||
free(triangles);
|
||||
}
|
||||
|
||||
b3QClothMesh()
|
||||
{
|
||||
smMesh mesh;
|
||||
smCreateMesh(mesh, 2);
|
||||
|
||||
sphereVertices.Resize(mesh.vertexCount);
|
||||
vertexCount = mesh.vertexCount;
|
||||
vertices = (b3Vec3*) malloc(vertexCount * sizeof(b3Vec3));
|
||||
for (u32 i = 0; i < mesh.vertexCount; ++i)
|
||||
{
|
||||
sphereVertices[i] = mesh.vertices[i];
|
||||
vertices[i] = mesh.vertices[i];
|
||||
}
|
||||
|
||||
sphereTriangles.Resize(mesh.indexCount / 3);
|
||||
for (u32 i = 0; i < mesh.indexCount / 3; ++i)
|
||||
triangleCount = mesh.indexCount / 3;
|
||||
triangles = (b3ClothMeshTriangle*) malloc(triangleCount * sizeof(b3ClothMeshTriangle));
|
||||
for (u32 i = 0; i < triangleCount; ++i)
|
||||
{
|
||||
sphereTriangles[i].v1 = mesh.indices[3 * i + 0];
|
||||
sphereTriangles[i].v2 = mesh.indices[3 * i + 1];
|
||||
sphereTriangles[i].v3 = mesh.indices[3 * i + 2];
|
||||
triangles[i].v1 = mesh.indices[3 * i + 0];
|
||||
triangles[i].v2 = mesh.indices[3 * i + 1];
|
||||
triangles[i].v3 = mesh.indices[3 * i + 2];
|
||||
}
|
||||
|
||||
sphereMesh.startTriangle = 0;
|
||||
sphereMesh.triangleCount = sphereTriangles.Count();
|
||||
sphereMesh.startVertex = 0;
|
||||
sphereMesh.vertexCount = sphereVertices.Count();
|
||||
qMesh.startTriangle = 0;
|
||||
qMesh.triangleCount = triangleCount;
|
||||
qMesh.startVertex = 0;
|
||||
qMesh.vertexCount = vertexCount;
|
||||
|
||||
vertexCount = sphereVertices.Count();
|
||||
vertices = sphereVertices.Begin();
|
||||
triangleCount = sphereTriangles.Count();
|
||||
triangles = sphereTriangles.Begin();
|
||||
meshCount = 1;
|
||||
meshes = &sphereMesh;
|
||||
meshes = &qMesh;
|
||||
sewingLineCount = 0;
|
||||
sewingLines = nullptr;
|
||||
}
|
||||
@ -270,7 +272,7 @@ public:
|
||||
return new SoftBody();
|
||||
}
|
||||
|
||||
b3SphereClothMesh m_mesh;
|
||||
b3QClothMesh m_mesh;
|
||||
b3Cloth* m_cloth;
|
||||
b3ClothDragger* m_clothDragger;
|
||||
};
|
||||
|
Reference in New Issue
Block a user