I have a 3D triangular mesh(vertices, indices, uv coords) that I'm rendering to the screen. Let's assume that the UV mapping is one-to-one. I'm trying to find a way to find the 3D position of the point with UV coordinates equal to (0,0). I searched the internet but I only find answers that I don't find convincing.
The solution that I found:
- Find, in UV space, the triangle that contains (0,0).. let's call it T
- Calculate barycentric coordinates for (0,0) with respect to T
- interpolate the 3D positions of T's vertices using barycentric coords to get the result.
this seems wrong to me. Here's why:
Let M be the mapping between 3D space and UV space that associates UV coords for every vertex.
Let A,B and C be the vertices of T.
Let P be the origin of UV space ( P = (0,0) ).
We have P = alpha*A + beta*B + gamma*C (alpha,beta and gamma are the barycentric coords of P with respect to T).
We assumed the UV mapping to be one-to-one, so let M° be the inverse of M.
We have :
M°(P) = M°(alpha*A + beta*B + gamma*C)
The solution in question assumes that M° is linear.. if that was the case you can have:
M°(P) = alpha*M°(A) + beta*M°(B) + gamma*M°(C)
But that is not the case (correct me if I'm wrong).
So is there a way to find the 3D position of a point with specific UV coords?
Thanks in advance.