Advertisement
Guest User

Untitled

a guest
Feb 5th, 2016
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.02 KB | None | 0 0
  1. VertexType vertex;
  2. Vector3 tangent;
  3. Vector3 bitangent;
  4. for (int i = 0; i < mesh.second.vertices.size(); i++)
  5. {
  6.  
  7. vertex.positon = mesh.second.vertices[i];
  8. vertex.normal = mesh.second.normals[i];
  9. vertex.texture = mesh.second.uvs[i];
  10.  
  11. //Calculate tangent and bitangent
  12.  
  13. if (i == 0 || i % 3 == 0)
  14. {
  15. Vector3 p0 = mesh.second.vertices[i];
  16. Vector3 p1 = mesh.second.vertices[i + 1];
  17. Vector3 p2 = mesh.second.vertices[i + 2];
  18.  
  19. Vector2 uv0 = vertex.texture = mesh.second.uvs[i];
  20. Vector2 uv1 = vertex.texture = mesh.second.uvs[i + 1];
  21. Vector2 uv2 = vertex.texture = mesh.second.uvs[i + 2];
  22.  
  23. Vector3 dv1 = p1 - p0;
  24. Vector3 dv2 = p2 - p0;
  25.  
  26. Vector2 duv1 = uv1 - uv0;
  27. Vector2 duv2 = uv2 - uv0;
  28.  
  29. float r = 1.0f / (duv1.x * duv2.y - duv1.y * duv2.x);
  30. tangent = (dv1 * duv2.y - dv2 * duv1.y)*r;
  31. bitangent = (dv2 * duv1.x - dv1 * duv2.x)*r;
  32.  
  33.  
  34. }
  35. vertex.tangent = tangent;
  36. vertex.bitangent = bitangent;
  37.  
  38. vertices.push_back(vertex);
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement