-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGLData.cpp
More file actions
129 lines (110 loc) · 3.23 KB
/
GLData.cpp
File metadata and controls
129 lines (110 loc) · 3.23 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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include "GLData.h"
#include <iostream>
#include <fstream>
//-----------------------------------------------------------------------------
GLData::GLData()
{
}
//-----------------------------------------------------------------------------
GLData::GLData(const GLData &i_glData)
{
setGLData(i_glData);
}
//-----------------------------------------------------------------------------
void GLData::setGLData(const GLData &i_glData)
{
m_indices.resize(i_glData.m_indices.size());
for(unsigned int i=0; i<i_glData.m_indices.size(); ++i)
{
m_indices[i] = i_glData.m_indices[i];
}
m_normals.resize(i_glData.m_normals.size());
for(unsigned int i=0; i<i_glData.m_normals.size(); ++i)
{
m_normals[i] = i_glData.m_normals[i];
}
m_vertices.resize(i_glData.m_vertices.size());
for(unsigned int i=0; i<i_glData.m_vertices.size(); ++i)
{
m_vertices[i] = i_glData.m_vertices[i];
}
}
//-----------------------------------------------------------------------------
unsigned int GLData::addVertex(const gmtl::Vec3f &i_vertex)
{
m_vertices.push_back(i_vertex[0]);
m_vertices.push_back(i_vertex[1]);
m_vertices.push_back(i_vertex[2]);
return (m_vertices.size()/3-1);
}
//-----------------------------------------------------------------------------
gmtl::Vec3f GLData::getVertex(unsigned int i_index)
{
return gmtl::Vec3f(m_vertices[i_index/3 ],
m_vertices[i_index/3+1],
m_vertices[i_index/3+2]);
}
//-----------------------------------------------------------------------------
void GLData::exportToObj(
std::string i_name)
{
std::cout << "No of Vertices: " << m_vertices.size()/3 << "\n";
gmtl::Vec3f offset;
std::ofstream myfile;
const std::string extension = ".obj";
if (i_name.find(extension)!=std::string::npos)
{
std::size_t pos = i_name.find_last_of(extension);
if (pos!=i_name.size()-1)
{
i_name+=extension;
}
}
else
{
i_name+=extension;
}
myfile.open(i_name.c_str());
if (myfile.is_open())
{
int vsize = m_vertices.size();
int nsize = m_normals.size();
int isize = m_indices.size();
for(int i=0; i<vsize; i+=3)
{
myfile << "v "<< m_vertices[i ] - offset[0]
<< " " << m_vertices[i+1] - offset[1]
<< " " << m_vertices[i+2] - offset[2] << "\n";
}
myfile <<"\n\n";
for(int i=0; i<nsize; i+=3)
{
myfile <<"vn "<< m_normals[i]<<" "<< m_normals[i+1]
<< " "<< m_normals[i+2] << "\n";
}
myfile <<"\n\n";
for(int i=0; i<isize; i+=3)
{
int x = (int)m_indices[i];
int y = (int)m_indices[i+1];
int z = (int)m_indices[i+2];
if(x!=y && y!=z && x!=z)
{
x++;y++;z++;
myfile << "f "<< y <<
"//" << y <<
" "<< x <<
"//" << x <<
" " << z <<
"//" << z <<
"\n";
}
}
myfile.close();
std::cout << "File \"" << i_name << "\" saved\n";
}
}
//-----------------------------------------------------------------------------
GLData::~GLData()
{
}