#pragma once #include #include #include #include #include namespace drake { namespace geometry { namespace internal { /** Reads the OBJ file with the given `filename` into a collection of data. It * includes the vertex positions, face encodings (see TinyObjToFclFaces), and * number of faces. * @param filename The name of the obj file. * @param scale Scale to coordinates. * @param triangulate Whether triangulate polygon face in .obj or not. Refer to * LoadObj function in * https://github.com/tinyobjloader/tinyobjloader/blob/master/tiny_obj_loader.h * for more details. * @return (vertices, faces, num_faces) vertices[i] is the i'th vertex in the * mesh. faces is interpreted as * * faces = { n0, v0_0,v0_1,...,v0_n0-1, * n1, v1_0,v1_1,...,v1_n1-1, * n2, v2_0,v2_1,...,v2_n2-1, * ...} * * where n_i is the number of vertices of face_i, vi_j is the index in * `vertices` for a vertex on face i. Note that the size of faces is larger than * num_faces. * */ std::tuple>, std::shared_ptr>, int> ReadObjFile(const std::string& filename, double scale, bool triangulate); } // namespace internal } // namespace geometry } // namespace drake