1111#include < sstream>
1212#include < fstream>
1313
14- static void PrintInfo (const tinyobj::attrib_t &attrib, const std::vector<tinyobj::shape_t >& shapes, const std::vector<tinyobj::material_t >& materials, bool triangulate = true )
14+ static void PrintInfo (const tinyobj::attrib_t &attrib, const std::vector<tinyobj::shape_t >& shapes, const std::vector<tinyobj::material_t >& materials)
1515{
1616 std::cout << " # of vertices : " << (attrib.vertices .size () / 3 ) << std::endl;
1717 std::cout << " # of normals : " << (attrib.normals .size () / 3 ) << std::endl;
@@ -21,76 +21,54 @@ static void PrintInfo(const tinyobj::attrib_t &attrib, const std::vector<tinyobj
2121 std::cout << " # of materials : " << materials.size () << std::endl;
2222
2323 for (size_t v = 0 ; v < attrib.vertices .size () / 3 ; v++) {
24- printf (" v[%ld] = (%f, %f, %f)\n " , v ,
24+ printf (" v[%ld] = (%f, %f, %f)\n " , static_cast < long >(v) ,
2525 static_cast <const double >(attrib.vertices [3 *v+0 ]),
2626 static_cast <const double >(attrib.vertices [3 *v+1 ]),
2727 static_cast <const double >(attrib.vertices [3 *v+2 ]));
2828 }
2929
3030 for (size_t v = 0 ; v < attrib.normals .size () / 3 ; v++) {
31- printf (" n[%ld] = (%f, %f, %f)\n " , v ,
31+ printf (" n[%ld] = (%f, %f, %f)\n " , static_cast < long >(v) ,
3232 static_cast <const double >(attrib.normals [3 *v+0 ]),
3333 static_cast <const double >(attrib.normals [3 *v+1 ]),
3434 static_cast <const double >(attrib.normals [3 *v+2 ]));
3535 }
3636
3737 for (size_t v = 0 ; v < attrib.texcoords .size () / 2 ; v++) {
38- printf (" uv[%ld] = (%f, %f)\n " , v ,
38+ printf (" uv[%ld] = (%f, %f)\n " , static_cast < long >(v) ,
3939 static_cast <const double >(attrib.texcoords [2 *v+0 ]),
4040 static_cast <const double >(attrib.texcoords [2 *v+1 ]));
4141 }
4242
43+ // For each shape
4344 for (size_t i = 0 ; i < shapes.size (); i++) {
44- printf (" shape[%ld].name = %s\n " , i , shapes[i].name .c_str ());
45- printf (" Size of shape[%ld].indices: %ld \n " , i, shapes[i].mesh .indices .size ());
45+ printf (" shape[%ld].name = %s\n " , static_cast < long >(i) , shapes[i].name .c_str ());
46+ printf (" Size of shape[%ld].indices: %lu \n " , static_cast < long >(i), static_cast < unsigned long >( shapes[i].mesh .indices .size () ));
4647
47- if (triangulate)
48- {
49- printf (" Size of shape[%ld].material_ids: %ld\n " , i, shapes[i].mesh .material_ids .size ());
50- assert ((shapes[i].mesh .indices .size () % 3 ) == 0 );
51- for (size_t f = 0 ; f < shapes[i].mesh .indices .size () / 3 ; f++) {
52- tinyobj::index_t i0 = shapes[i].mesh .indices [3 *f+0 ];
53- tinyobj::index_t i1 = shapes[i].mesh .indices [3 *f+1 ];
54- tinyobj::index_t i2 = shapes[i].mesh .indices [3 *f+2 ];
55- printf (" idx[%ld] = %d/%d/%d, %d/%d/%d, %d/%d/%d. mat_id = %d\n " , f,
56- i0.vertex_index , i0.normal_index , i0.texcoord_index ,
57- i1.vertex_index , i1.normal_index , i1.texcoord_index ,
58- i2.vertex_index , i2.normal_index , i2.texcoord_index ,
59- shapes[i].mesh .material_ids [f]);
60- }
61- } else {
62- for (size_t f = 0 ; f < shapes[i].mesh .indices .size (); f++) {
63- tinyobj::index_t idx = shapes[i].mesh .indices [f];
64- printf (" idx[%ld] = %d/%d/%d\n " , f, idx.vertex_index , idx.normal_index , idx.texcoord_index );
65- }
48+ size_t index_offset = 0 ;
6649
67- printf (" Size of shape[%ld].material_ids: %ld\n " , i, shapes[i].mesh .material_ids .size ());
68- assert (shapes[i].mesh .material_ids .size () == shapes[i].mesh .num_face_vertices .size ());
69- for (size_t m = 0 ; m < shapes[i].mesh .material_ids .size (); m++) {
70- printf (" material_id[%ld] = %d\n " , m,
71- shapes[i].mesh .material_ids [m]);
72- }
50+ assert (shapes[i].mesh .num_face_vertices .size () == shapes[i].mesh .material_ids .size ());
7351
74- }
52+ printf ( " shape[%ld].num_faces: %lu \n " , static_cast < long >(i), static_cast < unsigned long >(shapes[i]. mesh . num_face_vertices . size ()));
7553
76- printf (" shape[%ld].num_faces: %ld\n " , i, shapes[i].mesh .num_face_vertices .size ());
77- for (size_t v = 0 ; v < shapes[i].mesh .num_face_vertices .size (); v++) {
78- printf (" num_face_vertices[%ld] = %ld\n " , v,
79- static_cast <long >(shapes[i].mesh .num_face_vertices [v]));
80- }
54+ // For each face
55+ for (size_t f = 0 ; f < shapes[i].mesh .num_face_vertices .size (); f++) {
56+ size_t fnum = shapes[i].mesh .num_face_vertices [f];
8157
82- // printf("shape[%ld].vertices: %ld\n", i, shapes[i].mesh.positions.size());
83- // assert((shapes[i].mesh.positions.size() % 3) == 0);
84- // for (size_t v = 0; v < shapes[i].mesh.positions.size() / 3; v++) {
85- // printf(" v[%ld] = (%f, %f, %f)\n", v,
86- // static_cast<const double>(shapes[i].mesh.positions[3*v+0]),
87- // static_cast<const double>(shapes[i].mesh.positions[3*v+1]),
88- // static_cast<const double>(shapes[i].mesh.positions[3*v+2]));
89- // }
58+ // For each vertex in the face
59+ for (size_t v = 0 ; v < fnum; v++) {
60+ tinyobj::index_t idx = shapes[i].mesh .indices [index_offset + v];
61+ printf (" face[%ld].v[%ld].idx = %d/%d/%d\n " , static_cast <long >(f), static_cast <long >(v), idx.vertex_index , idx.normal_index , idx.texcoord_index );
62+ }
9063
91- printf (" shape[%ld].num_tags: %ld\n " , i, shapes[i].mesh .tags .size ());
64+ printf (" face[%ld].material_id = %d\n " , static_cast <long >(f), shapes[i].mesh .material_ids [f]);
65+
66+ index_offset += fnum;
67+ }
68+
69+ printf (" shape[%ld].num_tags: %lu\n " , static_cast <long >(i), static_cast <unsigned long >(shapes[i].mesh .tags .size ()));
9270 for (size_t t = 0 ; t < shapes[i].mesh .tags .size (); t++) {
93- printf (" tag[%ld] = %s " , t , shapes[i].mesh .tags [t].name .c_str ());
71+ printf (" tag[%ld] = %s " , static_cast < long >(t) , shapes[i].mesh .tags [t].name .c_str ());
9472 printf (" ints: [" );
9573 for (size_t j = 0 ; j < shapes[i].mesh .tags [t].intValues .size (); ++j)
9674 {
@@ -128,7 +106,7 @@ static void PrintInfo(const tinyobj::attrib_t &attrib, const std::vector<tinyobj
128106 }
129107
130108 for (size_t i = 0 ; i < materials.size (); i++) {
131- printf (" material[%ld].name = %s\n " , i , materials[i].name .c_str ());
109+ printf (" material[%ld].name = %s\n " , static_cast < long >(i) , materials[i].name .c_str ());
132110 printf (" material.Ka = (%f, %f ,%f)\n " , static_cast <const double >(materials[i].ambient [0 ]), static_cast <const double >(materials[i].ambient [1 ]), static_cast <const double >(materials[i].ambient [2 ]));
133111 printf (" material.Kd = (%f, %f ,%f)\n " , static_cast <const double >(materials[i].diffuse [0 ]), static_cast <const double >(materials[i].diffuse [1 ]), static_cast <const double >(materials[i].diffuse [2 ]));
134112 printf (" material.Ks = (%f, %f ,%f)\n " , static_cast <const double >(materials[i].specular [0 ]), static_cast <const double >(materials[i].specular [1 ]), static_cast <const double >(materials[i].specular [2 ]));
@@ -179,7 +157,7 @@ TestLoadObj(
179157 return false ;
180158 }
181159
182- PrintInfo (attrib, shapes, materials, triangulate );
160+ PrintInfo (attrib, shapes, materials);
183161
184162 return true ;
185163}
0 commit comments