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

Function write_faces

src/IO/OBJWriter.cpp:40–72  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

38 }
39
40 void write_faces(std::ofstream& fout,
41 const VectorI& faces,
42 const size_t vertex_per_face,
43 const VectorI& uv_indices=VectorI::Zero(0)) {
44 if (vertex_per_face != 3 && vertex_per_face != 4) {
45 std::stringstream err_msg;
46 err_msg << "OBJ format does not support non-triangle non-quad face with "
47 << vertex_per_face << " vertices." << std::endl;
48 throw RuntimeError(err_msg.str());
49 }
50 const size_t num_faces = faces.size() / vertex_per_face;
51 const size_t num_uvs = uv_indices.size() / 2;
52 if (num_uvs == 0) {
53 for (size_t i=0; i<num_faces; i++) {
54 const auto& f = faces.segment(i*vertex_per_face, vertex_per_face);
55 fout << "f";
56 for (size_t j=0; j<vertex_per_face; j++) {
57 fout << " " << f[j] + 1;
58 }
59 fout << std::endl;
60 }
61 } else {
62 for (size_t i=0; i<num_faces; i++) {
63 const auto& f = faces.segment(i*vertex_per_face, vertex_per_face);
64 const auto& uv = uv_indices.segment(i*vertex_per_face, vertex_per_face);
65 fout << "f ";
66 for (size_t j=0; j<vertex_per_face; j++) {
67 fout << f[j] + 1 << "/" << uv[j] + 1 << " ";
68 }
69 fout << std::endl;
70 }
71 }
72 }
73}
74
75void OBJWriter::with_attribute(const std::string& attr_name) {

Callers 3

writeMethod · 0.85
write_meshMethod · 0.85
writeMethod · 0.85

Calls 3

RuntimeErrorClass · 0.85
strMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected