Skip to content

Commit cf78dd8

Browse files
committed
Initial commit.
0 parents  commit cf78dd8

File tree

7 files changed

+685
-0
lines changed

7 files changed

+685
-0
lines changed

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
tinyobjloader
2+
=============
3+
4+
Tiny but poweful single file wavefront obj loader written in C++. no dependency except for C++ STL.

cornell_box.mtl

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
newmtl white
2+
Ka 0 0 0
3+
Kd 1 1 1
4+
Ks 0 0 0
5+
6+
newmtl red
7+
Ka 0 0 0
8+
Kd 1 0 0
9+
Ks 0 0 0
10+
11+
newmtl green
12+
Ka 0 0 0
13+
Kd 0 1 0
14+
Ks 0 0 0
15+
16+
newmtl blue
17+
Ka 0 0 0
18+
Kd 0 0 1
19+
Ks 0 0 0
20+
21+
newmtl light
22+
Ka 20 20 20
23+
Kd 1 1 1
24+
Ks 0 0 0

cornell_box.obj

Lines changed: 145 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,145 @@
1+
# cornell_box.obj and cornell_box.mtl are grabbed from Intel's embree project.
2+
# original cornell box data
3+
# comment
4+
5+
# empty line including some space
6+
7+
8+
mtllib cornell_box.mtl
9+
10+
o floor
11+
usemtl white
12+
v 552.8 0.0 0.0
13+
v 0.0 0.0 0.0
14+
v 0.0 0.0 559.2
15+
v 549.6 0.0 559.2
16+
17+
v 130.0 0.0 65.0
18+
v 82.0 0.0 225.0
19+
v 240.0 0.0 272.0
20+
v 290.0 0.0 114.0
21+
22+
v 423.0 0.0 247.0
23+
v 265.0 0.0 296.0
24+
v 314.0 0.0 456.0
25+
v 472.0 0.0 406.0
26+
27+
f 1 2 3 4
28+
f 8 7 6 5
29+
f 12 11 10 9
30+
31+
o light
32+
usemtl light
33+
v 343.0 548.0 227.0
34+
v 343.0 548.0 332.0
35+
v 213.0 548.0 332.0
36+
v 213.0 548.0 227.0
37+
#f -4 -3 -2 -1
38+
39+
o ceiling
40+
usemtl white
41+
v 556.0 548.8 0.0
42+
v 556.0 548.8 559.2
43+
v 0.0 548.8 559.2
44+
v 0.0 548.8 0.0
45+
f -4 -3 -2 -1
46+
47+
o back_wall
48+
usemtl white
49+
v 549.6 0.0 559.2
50+
v 0.0 0.0 559.2
51+
v 0.0 548.8 559.2
52+
v 556.0 548.8 559.2
53+
f -4 -3 -2 -1
54+
55+
o front_wall
56+
usemtl blue
57+
v 549.6 0.0 0
58+
v 0.0 0.0 0
59+
v 0.0 548.8 0
60+
v 556.0 548.8 0
61+
#f -1 -2 -3 -4
62+
63+
o green_wall
64+
usemtl green
65+
v 0.0 0.0 559.2
66+
v 0.0 0.0 0.0
67+
v 0.0 548.8 0.0
68+
v 0.0 548.8 559.2
69+
f -4 -3 -2 -1
70+
71+
o red_wall
72+
usemtl red
73+
v 552.8 0.0 0.0
74+
v 549.6 0.0 559.2
75+
v 556.0 548.8 559.2
76+
v 556.0 548.8 0.0
77+
f -4 -3 -2 -1
78+
79+
o short_block
80+
usemtl white
81+
82+
v 130.0 165.0 65.0
83+
v 82.0 165.0 225.0
84+
v 240.0 165.0 272.0
85+
v 290.0 165.0 114.0
86+
f -4 -3 -2 -1
87+
88+
v 290.0 0.0 114.0
89+
v 290.0 165.0 114.0
90+
v 240.0 165.0 272.0
91+
v 240.0 0.0 272.0
92+
f -4 -3 -2 -1
93+
94+
v 130.0 0.0 65.0
95+
v 130.0 165.0 65.0
96+
v 290.0 165.0 114.0
97+
v 290.0 0.0 114.0
98+
f -4 -3 -2 -1
99+
100+
v 82.0 0.0 225.0
101+
v 82.0 165.0 225.0
102+
v 130.0 165.0 65.0
103+
v 130.0 0.0 65.0
104+
f -4 -3 -2 -1
105+
106+
v 240.0 0.0 272.0
107+
v 240.0 165.0 272.0
108+
v 82.0 165.0 225.0
109+
v 82.0 0.0 225.0
110+
f -4 -3 -2 -1
111+
112+
o tall_block
113+
usemtl white
114+
115+
v 423.0 330.0 247.0
116+
v 265.0 330.0 296.0
117+
v 314.0 330.0 456.0
118+
v 472.0 330.0 406.0
119+
f -4 -3 -2 -1
120+
121+
usemtl white
122+
v 423.0 0.0 247.0
123+
v 423.0 330.0 247.0
124+
v 472.0 330.0 406.0
125+
v 472.0 0.0 406.0
126+
f -4 -3 -2 -1
127+
128+
v 472.0 0.0 406.0
129+
v 472.0 330.0 406.0
130+
v 314.0 330.0 456.0
131+
v 314.0 0.0 456.0
132+
f -4 -3 -2 -1
133+
134+
v 314.0 0.0 456.0
135+
v 314.0 330.0 456.0
136+
v 265.0 330.0 296.0
137+
v 265.0 0.0 296.0
138+
f -4 -3 -2 -1
139+
140+
v 265.0 0.0 296.0
141+
v 265.0 330.0 296.0
142+
v 423.0 330.0 247.0
143+
v 423.0 0.0 247.0
144+
f -4 -3 -2 -1
145+

premake4.lua

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
lib_sources = {
2+
"tiny_obj_loader.cc"
3+
}
4+
5+
sources = {
6+
"test.cc",
7+
}
8+
9+
-- premake4.lua
10+
solution "TinyObjLoaderSolution"
11+
configurations { "Release", "Debug" }
12+
13+
if (os.is("windows")) then
14+
platforms { "x32", "x64" }
15+
else
16+
platforms { "native", "x32", "x64" }
17+
end
18+
19+
-- A project defines one build target
20+
project "tinyobjloader"
21+
kind "ConsoleApp"
22+
language "C++"
23+
files { lib_sources, sources }
24+
25+
configuration "Debug"
26+
defines { "DEBUG" } -- -DDEBUG
27+
flags { "Symbols" }
28+
targetname "test_tinyobjloader_debug"
29+
30+
configuration "Release"
31+
-- defines { "NDEBUG" } -- -NDEBUG
32+
flags { "Symbols", "Optimize" }
33+
targetname "test_tinyobjloader"

test.cc

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#include "tiny_obj_loader.h"
2+
3+
#include <cassert>
4+
#include <iostream>
5+
6+
int
7+
main(
8+
int argc,
9+
char **argv)
10+
{
11+
std::string inputfile = "cornell_box.obj";
12+
std::vector<tinyobj::shape_t> shapes;
13+
14+
if (argc > 1) {
15+
inputfile = std::string(argv[1]);
16+
}
17+
18+
std::string err = tinyobj::LoadObj(shapes, inputfile.c_str());
19+
20+
if (!err.empty()) {
21+
std::cerr << err << std::endl;
22+
}
23+
24+
std::cout << "# of shapes : " << shapes.size() << std::endl;
25+
26+
for (size_t i = 0; i < shapes.size(); i++) {
27+
printf("shape[%ld].name = %s\n", i, shapes[i].name.c_str());
28+
printf("shape[%ld].indices: %ld\n", i, shapes[i].mesh.indices.size());
29+
assert((shapes[i].mesh.indices.size() % 3) == 0);
30+
for (size_t f = 0; f < shapes[i].mesh.indices.size(); f++) {
31+
printf(" idx[%ld] = %d\n", f, shapes[i].mesh.indices[f]);
32+
}
33+
34+
printf("shape[%ld].vertices: %ld\n", i, shapes[i].mesh.positions.size());
35+
assert((shapes[i].mesh.positions.size() % 3) == 0);
36+
for (size_t v = 0; v < shapes[i].mesh.positions.size() / 3; v++) {
37+
printf(" v[%ld] = (%f, %f, %f)\n", v,
38+
shapes[i].mesh.positions[3*v+0],
39+
shapes[i].mesh.positions[3*v+1],
40+
shapes[i].mesh.positions[3*v+2]);
41+
}
42+
}
43+
44+
return 0;
45+
}

0 commit comments

Comments
 (0)