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

Function raw_to_bsp

tools/Boolean/BSP/BSPEngine.cpp:20–49  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

18 typedef boost::shared_ptr<BSPlib::Bsp> BSPPtr;
19
20 BSPPtr raw_to_bsp(const MatrixFr& vertices, const MatrixIr& faces) {
21 const size_t num_vertices = vertices.rows();
22 const size_t num_faces = faces.rows();
23 assert(vertices.cols() == 3);
24 assert(faces.cols() == 3);
25
26 PLYmesh mesh;
27 mesh.vertices.resize(num_vertices * 3);
28 std::copy(vertices.data(), vertices.data() + num_vertices*3,
29 mesh.vertices.begin());
30
31 mesh.faces.resize(num_faces);
32 for (size_t i=0; i<num_faces; i++) {
33 mesh.faces[i] = {faces(i,0), faces(i,1), faces(i,2)};
34 }
35 BRep brep;
36 Ply2Convex(mesh, brep);
37 {
38 auto r = BSPlib::Bsp::BuildTree(brep);
39 auto convex_polys = r->GetBoundary();
40 std::vector<BSPlib::MetricPolygon> metric_polys(convex_polys.size());
41 std::transform(convex_polys.begin(), convex_polys.end(),
42 metric_polys.begin(), [](const BSPlib::ConvexPolygon& p) {
43 return BSPlib::Approximate(p); });
44 PLYmesh tmp;
45 Metric2Ply(metric_polys, tmp);
46 Write("tmp.ply", tmp);
47 }
48 return BSPlib::Bsp::BuildTree(brep);
49 }
50
51 void bsp_to_raw(const BSPPtr bsp, MatrixFr& vertices, MatrixIr& faces) {
52 const auto convex_polys = bsp->GetBoundary();

Callers 4

compute_unionMethod · 0.85
compute_intersectionMethod · 0.85
compute_differenceMethod · 0.85

Calls 4

WriteFunction · 0.50
beginMethod · 0.45
sizeMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected