Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string line;
- std::vector<glm::vec3> vert;
- std::vector<GLushort> elt;
- std::vector<glm::vec3> norm;
- while (getline(in, line))
- {
- if (line.substr(0,2) == "v ")
- {
- istringstream s(line.substr(2));
- glm::vec3 v;
- s >> v.x; s >> v.y; s >> v.z;
- vert.push_back(v);
- }
- else if (line.substr(0,2) == "f ")
- {
- istringstream s(line.substr(2));
- GLushort a,b,c;
- s >> a; s >> b; s >> c;
- a--; b--; c--;
- elt.push_back(a); elt.push_back(b); elt.push_back(c);
- }
- } norm.resize(vert.size(), glm::vec3(0.0, 0.0, 0.0));
- const int eltSize = elt.size();
- for (int i = 0; i < eltSize; i+=3)
- {
- GLushort ia = elt[i];
- GLushort ib = elt[i+1];
- GLushort ic = elt[i+2];
- if(ia > eltSize || ib > eltSize || ic > eltSize) break;
- glm::vec3 normal = glm::normalize(glm::cross(
- glm::vec3(vert[ib]) - glm::vec3(vert[ia]),
- glm::vec3(vert[ic]) - glm::vec3(vert[ia])));
- norm[ia] = norm[ib] = norm[ic] = normal;
- }
- 2:08 vertices = vert;
- normals = norm;
- elements = elt;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement