Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- VertexType vertex;
- Vector3 tangent;
- Vector3 bitangent;
- for (int i = 0; i < mesh.second.vertices.size(); i++)
- {
- vertex.positon = mesh.second.vertices[i];
- vertex.normal = mesh.second.normals[i];
- vertex.texture = mesh.second.uvs[i];
- //Calculate tangent and bitangent
- if (i == 0 || i % 3 == 0)
- {
- Vector3 p0 = mesh.second.vertices[i];
- Vector3 p1 = mesh.second.vertices[i + 1];
- Vector3 p2 = mesh.second.vertices[i + 2];
- Vector2 uv0 = vertex.texture = mesh.second.uvs[i];
- Vector2 uv1 = vertex.texture = mesh.second.uvs[i + 1];
- Vector2 uv2 = vertex.texture = mesh.second.uvs[i + 2];
- Vector3 dv1 = p1 - p0;
- Vector3 dv2 = p2 - p0;
- Vector2 duv1 = uv1 - uv0;
- Vector2 duv2 = uv2 - uv0;
- float r = 1.0f / (duv1.x * duv2.y - duv1.y * duv2.x);
- tangent = (dv1 * duv2.y - dv2 * duv1.y)*r;
- bitangent = (dv2 * duv1.x - dv1 * duv2.x)*r;
- }
- vertex.tangent = tangent;
- vertex.bitangent = bitangent;
- vertices.push_back(vertex);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement