-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathObjLoader.h
More file actions
75 lines (73 loc) · 3.24 KB
/
ObjLoader.h
File metadata and controls
75 lines (73 loc) · 3.24 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#ifndef OBJ_LOADER
#define OBJ_LOADER
#include<vector>
#include<string>
#include <d3d9.h>
#include <d3dx9.h>
using namespace std;
//struktura koqto loadera she polzva za zapazvane na vertexite
struct v{
double x,y,z,w;
v()
{
w = 1;
}
};
//struktura koqto loadera she polzva za zapazvane na texture vectorite
struct vt{
double u,v,w;
vt()
{
w = 0;
}
};
//struktura koqto loadera she polzva za zapazvane na vruzkite mejdu vertexite, texturite i normalnite vectori
//face-a ne pazi samiq vertex ili normalen vector a pazi poredniq mu nomer vuv faila (nqkakuv index)
struct face{
int* vertices;//ukazatel kum masiv ot vertexi za daden face(vruzkata mejdu trite neshta)
int number_of_vertices;//kolko sa vertexite
int* textures;//ukazatel kum masiv ot texturi za daden face
int number_of_textures;//kolko sa texturite
int* normals;//ukazatel kum masiv ot normalni vektori za daden face
int number_of_normals;//kolko sa normalnite vektori
face()//konstruktor
{
number_of_vertices = 3;//poneje napravih nabliudenieto che nay chesto edin face se definira ot tri vertexa tova e default stoinostta
vertices = new int[number_of_vertices];//zadelqme pamet za masiva
//sushtoto kato gore
number_of_textures = 3;
textures = new int[number_of_textures];
number_of_normals = 3;
normals = new int[number_of_normals];
}
~face()//destruktor
{
delete[] vertices;//osvobojdavane pametta zadelena za zapazvane na vertexite
delete[] textures;
delete[] normals;
}
};
class ObjLoader{//class za loadvane na obekti ot .obj fail
private:
vector<v*> vv;//vector ot ukazateli kum vertexi
vector<vt*> vvt;//vector ot ukazateli kum texture vectori
vector<face*> faces;//vector ot ukazateli kum face-ove
vector<D3DVECTOR*> normals;//vector ot normalni vectori
void load_vv(char**, int);//loadva po daden dvumeren masiv na vseki red na koito ima po edin red ot textoviq fail vertexite
void load_vvt(char**, int);//loadva po daden dvumeren masiv na vseki red na koito ima po edin red ot textoviq fail texture vectorite
void load_faces(char**, int);//loadva po daden dvumeren masiv na vseki red na koito ima po edin red ot textoviq fail face-ovete
void load_normals(char**, int);//loadva po daden dvumeren masiv na vseki red na koito ima po edin red ot textoviq fail normalnite vectori
char* trim_whitespace(char*);//premahva whitespaceovete i tabulaciite v nachaloto i v kraq na daden simvolen niz
int rows;//pazi broq na prochetenite ot .obj fail redove
char** result;//pazi prochetenoto sudurjanie ot .obj faila
public:
ObjLoader();//konstruktor
void read_file(char*, char**&, int& );//prochita faila i zapazva vsicko procheteno v dvumeren masiv vseki red na koito e red ot faila
void split(char*, char**&, int&, char);//razdelq daden simvolen niz na mnojestvo ot simvolni nizove po daden simvol
void load_model(char*);//loadva model ot fail
vector<v*> get_vv();//vrushta vectora ot vertexi
vector<vt*> get_vvt();//vrushta vectora ot texture vectori
vector<face*> get_faces();//vrushta vectora ot faceove
vector<D3DVECTOR*> get_normals();//vrushta vectora ot normalni vectori
};
#endif // OBJ_LOADER