worked a little on OBJ parsing
This commit is contained in:
parent
009894ca3b
commit
0872b425b1
@ -13,7 +13,7 @@ void BasicModule::render(Camera* myCamera)
|
||||
shader->bind();
|
||||
bindModule();
|
||||
for(Entity* e : entities)
|
||||
e->draw(myCamera->getViewMatrix(), myCamera->getProjectionMatrix());
|
||||
e->draw(myCamera->getViewMatrix(), myCamera->getProjectionMatrix(), NULL);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1822,77 +1822,61 @@ usemtl steel
|
||||
s 0
|
||||
f 3/1/1 1/2/2 2/3/3
|
||||
g Triangle Tool 20
|
||||
usemtl steel
|
||||
f 2/4/4 4/5/5 5/6/6
|
||||
f 2/7/7 5/8/8 3/9/9
|
||||
g Triangle Tool 21
|
||||
usemtl steel
|
||||
f 8/10/10 6/11/11 7/12/12
|
||||
f 4/13/13 6/14/14 8/15/15
|
||||
f 4/16/16 8/17/17 9/18/18
|
||||
f 4/19/19 9/20/20 5/21/21
|
||||
g Triangle Tool 22
|
||||
usemtl steel
|
||||
f 10/22/22 9/23/23 8/24/24
|
||||
f 8/25/25 7/26/26 11/27/27
|
||||
f 8/28/28 11/29/29 10/30/30
|
||||
g Triangle Tool 19 - Mirror
|
||||
usemtl steel
|
||||
f 3/31/31 12/32/32 1/33/33
|
||||
g Triangle Tool 20 - Mirror
|
||||
usemtl steel
|
||||
f 12/34/34 5/35/35 13/36/36
|
||||
f 12/37/37 3/38/38 5/39/39
|
||||
g Triangle Tool 21 - Mirror
|
||||
usemtl steel
|
||||
f 16/40/40 15/41/41 14/42/42
|
||||
f 13/43/43 16/44/44 14/45/45
|
||||
f 13/46/46 9/47/47 16/48/48
|
||||
f 13/49/49 5/50/50 9/51/51
|
||||
g Triangle Tool 22 - Mirror
|
||||
usemtl steel
|
||||
f 10/52/52 16/53/53 9/54/54
|
||||
f 16/55/55 11/56/56 15/57/57
|
||||
f 16/58/58 10/59/59 11/60/60
|
||||
g Triangle Tool 19 - Mirror
|
||||
usemtl steel
|
||||
s 1
|
||||
f 17/61/61 2/62/62 1/63/63
|
||||
g Triangle Tool 20 - Mirror
|
||||
usemtl steel
|
||||
f 2/64/64 18/65/65 4/66/66
|
||||
f 2/67/67 17/68/68 18/69/69
|
||||
g Triangle Tool 21 - Mirror
|
||||
usemtl steel
|
||||
f 20/70/70 19/71/71 6/72/72
|
||||
f 4/73/73 20/74/74 6/75/75
|
||||
f 4/76/76 21/77/77 20/78/78
|
||||
f 4/79/79 18/80/80 21/81/81
|
||||
g Triangle Tool 22 - Mirror
|
||||
usemtl steel
|
||||
f 22/82/82 20/83/83 21/84/84
|
||||
f 20/85/85 23/86/86 19/87/87
|
||||
f 20/88/88 22/89/89 23/90/90
|
||||
g Triangle Tool 19 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 17/91/91 1/92/92 12/93/93
|
||||
g Triangle Tool 20 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 12/94/94 24/95/95 18/96/96
|
||||
f 12/97/97 18/98/98 17/99/99
|
||||
g Triangle Tool 21 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 26/100/100 14/101/101 25/102/102
|
||||
f 24/103/103 14/104/104 26/105/105
|
||||
f 24/106/106 26/107/107 21/108/108
|
||||
f 24/109/109 21/110/110 18/111/111
|
||||
g Triangle Tool 22 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 22/112/112 21/113/113 26/114/114
|
||||
f 26/115/115 25/116/116 23/117/117
|
||||
f 26/118/118 23/119/119 22/120/120
|
||||
g Triangle Tool 23
|
||||
usemtl steel
|
||||
s 2
|
||||
f 29/121/121 28/122/122 27/123/123
|
||||
f 30/124/124 29/125/125 27/126/126
|
||||
@ -1900,138 +1884,107 @@ f 30/127/127 27/128/128 6/129/129
|
||||
f 6/130/130 19/131/131 31/132/132
|
||||
f 31/133/133 30/134/134 6/135/135
|
||||
g Triangle Tool 24
|
||||
usemtl steel
|
||||
f 29/136/136 32/137/137 33/138/138
|
||||
f 29/139/139 33/140/140 28/141/141
|
||||
g Triangle Tool 25
|
||||
usemtl steel
|
||||
f 32/142/142 29/143/143 30/144/144
|
||||
f 34/145/145 32/146/146 30/147/147
|
||||
g Triangle Tool 26
|
||||
usemtl steel
|
||||
f 34/148/148 30/149/149 31/150/150
|
||||
f 35/151/151 34/152/152 31/153/153
|
||||
g Triangle Tool 28
|
||||
usemtl steel
|
||||
f 31/154/154 19/155/155 23/156/156
|
||||
f 36/157/157 31/158/158 23/159/159
|
||||
g Triangle Tool 29
|
||||
usemtl steel
|
||||
f 37/160/160 35/161/161 31/162/162
|
||||
f 36/163/163 37/164/164 31/165/165
|
||||
g Triangle Tool 33
|
||||
usemtl steel
|
||||
f 33/166/166 32/167/167 38/168/168
|
||||
g Triangle Tool 34
|
||||
usemtl steel
|
||||
f 38/169/169 32/170/170 34/171/171
|
||||
f 39/172/172 38/173/173 34/174/174
|
||||
f 39/175/175 34/176/176 35/177/177
|
||||
f 39/178/178 35/179/179 37/180/180
|
||||
g Triangle Tool 23 - Mirror
|
||||
usemtl steel
|
||||
f 42/181/181 27/182/182 28/183/183
|
||||
f 43/184/184 27/185/185 42/186/186
|
||||
f 43/187/187 6/188/188 27/189/189
|
||||
f 6/190/190 44/191/191 40/192/192
|
||||
f 44/193/193 6/194/194 43/195/195
|
||||
g Triangle Tool 24 - Mirror
|
||||
usemtl steel
|
||||
f 42/196/196 33/197/197 45/198/198
|
||||
f 42/199/199 28/200/200 33/201/201
|
||||
g Triangle Tool 25 - Mirror
|
||||
usemtl steel
|
||||
f 45/202/202 43/203/203 42/204/204
|
||||
f 46/205/205 43/206/206 45/207/207
|
||||
g Triangle Tool 26 - Mirror
|
||||
usemtl steel
|
||||
f 46/208/208 44/209/209 43/210/210
|
||||
f 47/211/211 44/212/212 46/213/213
|
||||
g Triangle Tool 28 - Mirror
|
||||
usemtl steel
|
||||
f 44/214/214 41/215/215 40/216/216
|
||||
f 48/217/217 41/218/218 44/219/219
|
||||
g Triangle Tool 29 - Mirror
|
||||
usemtl steel
|
||||
f 49/220/220 44/221/221 47/222/222
|
||||
f 48/223/223 44/224/224 49/225/225
|
||||
g Triangle Tool 33 - Mirror
|
||||
usemtl steel
|
||||
f 33/226/226 38/227/227 45/228/228
|
||||
g Triangle Tool 34 - Mirror
|
||||
usemtl steel
|
||||
f 38/229/229 46/230/230 45/231/231
|
||||
f 39/232/232 46/233/233 38/234/234
|
||||
f 39/235/235 47/236/236 46/237/237
|
||||
f 39/238/238 49/239/239 47/240/240
|
||||
g Triangle Tool 23 - Mirror
|
||||
usemtl steel
|
||||
f 53/241/241 51/242/242 52/243/243
|
||||
f 54/244/244 51/245/245 53/246/246
|
||||
f 54/247/247 14/248/248 51/249/249
|
||||
f 14/250/250 55/251/251 50/252/252
|
||||
f 55/253/253 14/254/254 54/255/255
|
||||
g Triangle Tool 24 - Mirror
|
||||
usemtl steel
|
||||
f 53/256/256 57/257/257 56/258/258
|
||||
f 53/259/259 52/260/260 57/261/261
|
||||
g Triangle Tool 25 - Mirror
|
||||
usemtl steel
|
||||
f 56/262/262 54/263/263 53/264/264
|
||||
f 58/265/265 54/266/266 56/267/267
|
||||
g Triangle Tool 26 - Mirror
|
||||
usemtl steel
|
||||
f 58/268/268 55/269/269 54/270/270
|
||||
f 59/271/271 55/272/272 58/273/273
|
||||
g Triangle Tool 28 - Mirror
|
||||
usemtl steel
|
||||
f 55/274/274 23/275/275 50/276/276
|
||||
f 36/277/277 23/278/278 55/279/279
|
||||
g Triangle Tool 29 - Mirror
|
||||
usemtl steel
|
||||
f 37/280/280 55/281/281 59/282/282
|
||||
f 36/283/283 55/284/284 37/285/285
|
||||
g Triangle Tool 33 - Mirror
|
||||
usemtl steel
|
||||
f 57/286/286 60/287/287 56/288/288
|
||||
g Triangle Tool 34 - Mirror
|
||||
usemtl steel
|
||||
f 60/289/289 58/290/290 56/291/291
|
||||
f 39/292/292 58/293/293 60/294/294
|
||||
f 39/295/295 59/296/296 58/297/297
|
||||
f 39/298/298 37/299/299 59/300/300
|
||||
g Triangle Tool 23 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 62/301/301 52/302/302 51/303/303
|
||||
f 63/304/304 62/305/305 51/306/306
|
||||
f 63/307/307 51/308/308 14/309/309
|
||||
f 14/310/310 61/311/311 64/312/312
|
||||
f 64/313/313 63/314/314 14/315/315
|
||||
g Triangle Tool 24 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 62/316/316 65/317/317 57/318/318
|
||||
f 62/319/319 57/320/320 52/321/321
|
||||
g Triangle Tool 25 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 65/322/322 62/323/323 63/324/324
|
||||
f 66/325/325 65/326/326 63/327/327
|
||||
g Triangle Tool 26 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 66/328/328 63/329/329 64/330/330
|
||||
f 67/331/331 66/332/332 64/333/333
|
||||
g Triangle Tool 28 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 64/334/334 61/335/335 41/336/336
|
||||
f 48/337/337 64/338/338 41/339/339
|
||||
g Triangle Tool 29 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 49/340/340 67/341/341 64/342/342
|
||||
f 48/343/343 49/344/344 64/345/345
|
||||
g Triangle Tool 33 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 57/346/346 65/347/347 60/348/348
|
||||
g Triangle Tool 34 - Mirror - Mirror
|
||||
usemtl steel
|
||||
f 60/349/349 65/350/350 66/351/351
|
||||
f 39/352/352 60/353/353 66/354/354
|
||||
f 39/355/355 66/356/356 67/357/357
|
||||
@ -2187,40 +2140,28 @@ f 137/784/784 139/785/785 151/786/786
|
||||
f 139/787/787 150/788/788 151/789/789
|
||||
f 139/790/790 138/791/791 150/792/792
|
||||
g Triangle Tool 3
|
||||
usemtl steel
|
||||
f 152/793/793 144/794/794 140/795/795
|
||||
g Triangle Tool 4
|
||||
usemtl steel
|
||||
f 152/796/796 145/797/797 144/798/798
|
||||
g Triangle Tool 5
|
||||
usemtl steel
|
||||
f 152/799/799 147/800/800 145/801/801
|
||||
g Triangle Tool 6
|
||||
usemtl steel
|
||||
f 152/802/802 150/803/803 147/804/804
|
||||
g Triangle Tool 7
|
||||
usemtl steel
|
||||
f 152/805/805 140/806/806 141/807/807
|
||||
g Triangle Tool 8
|
||||
usemtl steel
|
||||
f 152/808/808 151/809/809 150/810/810
|
||||
g Triangle Tool 9
|
||||
usemtl steel
|
||||
f 152/811/811 149/812/812 151/813/813
|
||||
g Triangle Tool 10
|
||||
usemtl steel
|
||||
f 152/814/814 148/815/815 149/816/816
|
||||
g Triangle Tool 11
|
||||
usemtl steel
|
||||
f 146/817/817 148/818/818 152/819/819
|
||||
g Triangle Tool 12
|
||||
usemtl steel
|
||||
f 152/820/820 143/821/821 146/822/822
|
||||
g Triangle Tool 13
|
||||
usemtl steel
|
||||
f 142/823/823 143/824/824 152/825/825
|
||||
g Triangle Tool 14
|
||||
usemtl steel
|
||||
f 152/826/826 141/827/827 142/828/828
|
||||
|
||||
g
|
@ -11,9 +11,10 @@ Entity::Entity(Entity* myParent, Mesh* myMesh, Material* myMat) : mesh(myMesh),
|
||||
myParent->addChild(this);
|
||||
}
|
||||
|
||||
void Entity::draw(const glm::mat4 viewMatrix, const glm::mat4 projectionMatrix)
|
||||
void Entity::draw(const glm::mat4 viewMatrix, const glm::mat4 projectionMatrix, const glm::mat4* parentMatrix)
|
||||
{
|
||||
glm::mat4 modelViewMatrix = viewMatrix * modelMatrix;
|
||||
glm::mat4 worldMatrix = parentMatrix == NULL ? modelMatrix : modelMatrix * *parentMatrix;
|
||||
glm::mat4 modelViewMatrix = viewMatrix * worldMatrix;
|
||||
glm::mat4 mvp = projectionMatrix * modelViewMatrix;
|
||||
glm::mat4 normalMatrix = glm::transpose(glm::inverse(modelViewMatrix));
|
||||
mat->bindAttributes();
|
||||
@ -23,6 +24,8 @@ void Entity::draw(const glm::mat4 viewMatrix, const glm::mat4 projectionMatrix)
|
||||
shader->bindMatrix(shader->getLocation("normalMatrix"), normalMatrix);
|
||||
shader->bindMatrix(shader->getLocation("MVP"), mvp);
|
||||
mesh->draw();
|
||||
for(Entity* e : children)
|
||||
e->draw(viewMatrix, projectionMatrix, &worldMatrix);
|
||||
}
|
||||
|
||||
glm::mat4* Entity::getTransform()
|
||||
|
2
entity.h
2
entity.h
@ -21,7 +21,7 @@ public:
|
||||
* NULL Material is acceptable for this constructor
|
||||
*/
|
||||
Entity(Entity* myParent, Mesh* myMesh, Material* myMat);
|
||||
virtual void draw(const glm::mat4 viewMatrix, const glm::mat4 projectionMatrix);
|
||||
virtual void draw(const glm::mat4 viewMatrix, const glm::mat4 projectionMatrix, const glm::mat4* parentMatrix);
|
||||
glm::mat4* getTransform();
|
||||
Shader* getShader();
|
||||
Material* getMaterial();
|
||||
|
85
utils.cpp
85
utils.cpp
@ -14,21 +14,98 @@ std::string Utils::fileToString(const std::string &filename)
|
||||
return in.readAll().toStdString();
|
||||
}
|
||||
|
||||
void Utils::loadOBJ(const std::string &filename)
|
||||
{
|
||||
// loadOBJ
|
||||
// mtllib -> loadMTL
|
||||
// g -> resourcebase.addMesh(new Mesh())
|
||||
// -> resourcebase.addEntity(new Entity())
|
||||
// end -> resourcebase.addEntity(new Entity())
|
||||
|
||||
std::vector<glm::vec3> pos;
|
||||
std::vector<glm::vec3> norm;
|
||||
std::vector<glm::vec2> tex;
|
||||
QString line;
|
||||
QStringList list;
|
||||
QFile f(QString(filename.c_str()));
|
||||
if(!f.open(QFile::ReadOnly | QFile::Text))
|
||||
return NULL;
|
||||
QTextStream in(&f);
|
||||
|
||||
line = in.readLine();
|
||||
while(!line.isNull())
|
||||
{
|
||||
if(line.isEmpty())
|
||||
{
|
||||
line = in.readLine();
|
||||
continue;
|
||||
}
|
||||
switch(line.at(0).toLatin1())
|
||||
{
|
||||
case 'v':
|
||||
//vertex attribute
|
||||
list = line.split(QChar(' '));
|
||||
switch(line.at(1).toLatin1())
|
||||
{
|
||||
case ' ':
|
||||
// vertex position
|
||||
pos.push_back(glm::vec3(list[1].toFloat(), list[2].toFloat(), list[3].toFloat()));
|
||||
break;
|
||||
case 't':
|
||||
// texCoord
|
||||
tex.push_back(glm::vec2(list[1].toFloat(), list[2].toFloat()));
|
||||
break;
|
||||
case 'n':
|
||||
// normal
|
||||
norm.push_back(glm::vec3(list[1].toFloat(), list[2].toFloat(), list[3].toFloat()));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 'f':
|
||||
// face
|
||||
|
||||
break;
|
||||
case 'u':
|
||||
// usemtl
|
||||
break;
|
||||
default:
|
||||
case 'm':
|
||||
// mtllib
|
||||
|
||||
break;
|
||||
default:
|
||||
case '#':
|
||||
// comment
|
||||
break;
|
||||
}
|
||||
line = in.readLine();
|
||||
}
|
||||
f.close();
|
||||
}
|
||||
|
||||
void Utils::loadMTL(const std::string &filename)
|
||||
{
|
||||
// loadMTL
|
||||
// newmtl -> resourcebase.addMaterial(new Material())
|
||||
|
||||
}
|
||||
|
||||
Mesh* Utils::loadOBJ(const std::string &filename)
|
||||
{
|
||||
Mesh* mesh = new Mesh();
|
||||
std::vector<glm::vec3> pos;
|
||||
std::vector<glm::vec3> norm;
|
||||
std::vector<glm::vec2> tex;
|
||||
QFile f(QString(filename.c_str()));
|
||||
if(!f.open(QFile::ReadOnly | QFile::Text))
|
||||
return NULL;
|
||||
QTextStream in(&f);
|
||||
QString line;
|
||||
QStringList list;
|
||||
QStringList faceList;
|
||||
Mesh::Vertex v;
|
||||
int nb_vertices = 0;
|
||||
QFile f(QString(filename.c_str()));
|
||||
if(!f.open(QFile::ReadOnly | QFile::Text))
|
||||
return NULL;
|
||||
QTextStream in(&f);
|
||||
|
||||
line = in.readLine();
|
||||
while(!line.isNull())
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user