MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / extract_data

Function extract_data

tools/Boolean/Carve/CarveEngine.cpp:58–84  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

56 }
57
58 void extract_data(CarveMeshPtr mesh, MatrixFr& vertices, MatrixIr& faces) {
59 typedef CarveMesh::vertex_t CarveVertex;
60 const size_t num_vertices = mesh->vertex_storage.size();
61 vertices.resize(num_vertices, 3);
62 for (size_t i=0; i<num_vertices; i++) {
63 const auto& v = mesh->vertex_storage[i];
64 vertices(i,0) = v.v.x;
65 vertices(i,1) = v.v.y;
66 vertices(i,2) = v.v.z;
67 }
68
69 const size_t num_faces = mesh->faceEnd() - mesh->faceBegin();
70 faces.resize(num_faces, 3);
71 for (auto itr=mesh->faceBegin(); itr != mesh->faceEnd(); itr++) {
72 std::vector<CarveVertex* > vts;
73 (*itr)->getVertices(vts);
74 assert(vts.size() == 3);
75
76 // WARNING:
77 // Here is my guess on how to extract vertex index.
78 // Carve's documentation is not clear on how to do this.
79 const size_t fid = itr - mesh->faceBegin();
80 faces(fid, 0) = vts[0] - &mesh->vertex_storage[0];
81 faces(fid, 1) = vts[1] - &mesh->vertex_storage[0];
82 faces(fid, 2) = vts[2] - &mesh->vertex_storage[0];
83 }
84 }
85}
86using namespace CarveEngineHelper;
87

Callers 4

compute_unionMethod · 0.85
compute_intersectionMethod · 0.85
compute_differenceMethod · 0.85

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected