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

Method finalize_normals

src/IO/OBJParser.cpp:549–582  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

547}
548
549void OBJParser::finalize_normals() {
550 if (m_normals.size() != m_faces.size() || m_corner_normals.size() == 0)
551 return;
552
553 bool bad_normal = false;
554 const size_t num_corner_normals = m_corner_normals.size();
555 for (const auto& n : m_normals) {
556 if (n.size() != m_vertex_per_face) {
557 std::cerr << "Normal and face type mismatch." << std::endl;
558 bad_normal = true;
559 break;
560 }
561 if (n.minCoeff() < 0 || n.maxCoeff() >= num_corner_normals) {
562 std::cerr << "Normalindex out of bound: <" << n.transpose()
563 << "> exceeds " << num_corner_normals << "."
564 << std::endl;
565 bad_normal = true;
566 break;
567 }
568 }
569
570 if (bad_normal) {
571 m_normals.clear();
572 return;
573 }
574
575 NormalVector normals;
576 for (const auto& n : m_normals) {
577 for (size_t i=0; i<m_vertex_per_face; i++) {
578 normals.emplace_back(m_corner_normals[n[i]]);
579 }
580 }
581 std::swap(normals, m_corner_normals);
582}
583
584void OBJParser::finalize_parameters() {
585 if (m_parameters.empty()) return;

Callers

nothing calls this directly

Calls 2

sizeMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected