|
|
|
@ -1,8 +1,38 @@ |
|
|
|
#include <iostream> |
|
|
|
#include <array> |
|
|
|
|
|
|
|
|
|
|
|
#include <solve.h> |
|
|
|
|
|
|
|
#include <fstream> |
|
|
|
#include <string> |
|
|
|
#include <filesystem> |
|
|
|
|
|
|
|
void write_obj(const polymesh_t& mesh, std::string filename = "output.obj") { |
|
|
|
std::ofstream obj(filename); |
|
|
|
if (!obj) return; |
|
|
|
|
|
|
|
// write in vertices
|
|
|
|
for (uint32_t i = 0; i < mesh.num_vertices; ++i) { |
|
|
|
const auto& v = mesh.vertices[i]; |
|
|
|
obj << "v " << v.x << " " << v.y << " " << v.z << "\n"; |
|
|
|
} |
|
|
|
|
|
|
|
// write in faces
|
|
|
|
uint32_t idx = 0; |
|
|
|
for (uint32_t i = 0; i < mesh.num_faces; ++i) { |
|
|
|
obj << "f"; |
|
|
|
for (uint32_t j = 0; j < mesh.vertex_counts[i]; ++j) { |
|
|
|
// OBJ is 1-indexed
|
|
|
|
obj << " " << (mesh.faces[idx++] + 1); |
|
|
|
} |
|
|
|
obj << "\n"; |
|
|
|
} |
|
|
|
std::cout << "OBJ file written to: " << std::filesystem::absolute(filename) << std::endl; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int main() |
|
|
|
{ |
|
|
|
auto primitive_data_center = create_primitive_data_center(); |
|
|
|
@ -29,6 +59,7 @@ int main() |
|
|
|
auto solver = create_solver(baked_blobtree, settings); |
|
|
|
|
|
|
|
auto result = generate_polymesh(solver); |
|
|
|
write_obj(result.mesh, "output.obj"); |
|
|
|
print_statistics(solver); |
|
|
|
|
|
|
|
destroy_solver(solver); |
|
|
|
|