I continue tonight trying to understand UV mapping, specifically UV mapping in Gladius.
I have been working with a pyramid (square bottom and four trangles), whose faces can be defined as:
var mesh =
{
// ...
faces: [
[3, 2, 1, 0],
[0, 1, 4],
[1, 2, 4],
[2, 3, 4],
[3, 0, 4]
],
uv: [
[ [0, 1], [1, 1], [1, 0], [0, 0] ],
[ [0, 1], [1, 1], [1, 0], [0, 0] ],
[ [0, 1], [1, 1], [1, 0], [0, 0] ],
[ [0, 1], [1, 1], [1, 0], [0, 0] ],
[ [0, 1], [1, 1], [1, 0], [0, 0] ]
],
// ...
};
I am not sure about the UV mappings for the triangles. Obviously, triangles have three sides, so how do those UV mappings work? My guess would be that, if I had a square image:Then mapping it into a triangle should squish two top corners together in the vertex of the triangle while the other two corners of the square occupy the other corners of the triangle.
When I update the material to use my graphic:
return {
textures: {
color: '/images/rygb.png'
},
opacity: 1.0
};
The result is:
Hunh. So it seems that my hypothesis was wrong. The UV mapper only uses the first three corners to map. If the UV coordinates work out like:
Then I ought to be able to get the red, green, and blue corners with:
uv: [
[ [0, 1], [1, 1], [1, 0], [0, 0] ],
[ [1, 0], [0, 0], [0, 1] ],
[ [1, 0], [0, 0], [0, 1] ],
[ [1, 0], [0, 0], [0, 1] ],
[ [1, 0], [0, 0], [0, 1] ]
],
And, that is exactly what I see:I wonder how that maps into hexagons or more complicated shapes. I will have to pick back up with that tomorrow.
Day #409
No comments:
Post a Comment