1
$\begingroup$

There're two ways to unwrap a genus-0 mesh such as a sphere.

One is to make a full sphere from an unwrapped half sphere applied with mirror modifier. It will output similar uv layout as below image. By checking in the exported .obj, you'll find the amount of uvs equal the amount of vertices. But the two verts selected in image below have two different uvs with the same value.enter image description here enter image description here

One is to make a seam then 'Unwrap', which will lead to the number of uvs is larger than the amount of vertices. Each uv coord is unique, no repeated values.

enter image description here

Is it possible to unwrap a genus-0 mesh so each vert has one and only unique uv? Unique means there're no repeated uv coord values, it's not unique if the ith vt and jth vt have the same coord values. For example, can we unwrap the sphere and manually merge the uvs for the same vert on the seam in the uv map?

One solution I can think of is to manually move the uvs to the same uv space, then remove the duplicated uv coords manually in text editor like below, one vert is overlapping all. enter image description here

$\endgroup$
  • $\begingroup$ How did you know that the v 1 2 3 represent a uv coord? I check the obj definition which indicate that v stand-for vertices coord and vt stand for uv values. $\endgroup$ – Hikariztw Nov 17 at 5:57
  • $\begingroup$ And I think it is totally possible to unwrap using only one uv per vertices (depend on how the data is interpreted). You can try project from view, which always give you a merged uv coord. And after export to obj file, the vt amount should meet the v numbers. $\endgroup$ – Hikariztw Nov 17 at 6:04
  • $\begingroup$ Also keep an eye on f. eg. A cube face:f 8/5/6 4/13/6 2/14/6 6/7/6. the element indicate which vt values to use in a face and vertices. So it doesn't to store duplicated data. $\endgroup$ – Hikariztw Nov 17 at 6:08
  • $\begingroup$ @Hikariztw Woops, I got the wrong screenshot. Let me update it $\endgroup$ – June Wang Nov 17 at 6:15
  • $\begingroup$ @Hikariztw Project from view will give me one uv per vert, but the half the vertices will share the same uv coord values with the other half. i.e. the uvs for (-1.5, 1,5, 3.0) and (1.5, 1,5, 3.0) are both (0.88, 0.30). What I'm looking for is that each vertex has a unique uv coord $\endgroup$ – June Wang Nov 17 at 6:30
1
$\begingroup$

≫ I want the uv to represent vertices too, so each vert has a unique uv.

If the word "represent" is to identify which vertex is it, then it is doable.

A cube is almost the same thing to a UV sphere(g-0). You can project from view to make all uv shared by all edges and faces connect to it.

enter image description here

So we get 6 uv values only? No.

Actually, we still have 24 uv values inside Blender data. Those connected and shared vertices uv move together in Blender by default. You can even move the individual uv by adjust the selection option.

enter image description here

An uv map is depend on the topology of face. So there should be the same amount of uv tuples to represent a texture coordinate. In a cube, 4 for a face, and 6 face: 4×6=24 uv tuples. You can share the uv values, but you can't ignore that the uv query times should still be 24 to mapping the texture space.

$\endgroup$
  • $\begingroup$ Technically 100% right. I just thought he does not like seams and expressed his desire to get rid of them in a complex way. But if its the uniqueness alone is whats important, than this works perfectly ;) $\endgroup$ – Gerald Degeneve Nov 17 at 11:07
  • $\begingroup$ Yes, project from view indeed seems to be a solution. You actually get 8 uvs when export it into .obj, I do not know where 24 come from tho.Thanks $\endgroup$ – June Wang Nov 17 at 12:38
  • $\begingroup$ @JuneWang From how blender treat those data in python. When export to obj, those connect and shared vertices were combined automatically to single data record. $\endgroup$ – Hikariztw Nov 17 at 13:43
3
$\begingroup$

No.

Unwrap. Meaning peeling the surface off of a solid and laying it out flat on the ground.

If your requirement is that there are no duplicated texture coordinates at all, it would mean that you are trying to peel an orange without cutting its skin. Even if you manage to "beam off" the skin in one piece you end up with a hollow shell that you cannot lay out flat on the ground without the front and back sharing the same area.

And the moment you cut it you get seams and therefore more uvs than vertices. if you merge them again later you once more end up in the situation described above.

This is true for all solids, not just genus-0 ones like a sphere.

$\endgroup$
  • $\begingroup$ Solids have no holes/knots are also genus-0. Okay, looks like this overlapping situation is inevitable. Thanks. $\endgroup$ – June Wang Nov 17 at 9:25
  • $\begingroup$ It's possible to have each vertex with a unique UV, but not every interpolated surface point. $\endgroup$ – Robin Betts Nov 17 at 10:58
  • $\begingroup$ @RobinBetts What's the difference? $\endgroup$ – June Wang Nov 17 at 12:30
  • $\begingroup$ @June e.g. trivially, you could project from view the front half of a sphere, move its UVs out of the way, and then project the back half. No two verts would have the same UV, but the faces stretched between them would overlap. $\endgroup$ – Robin Betts Nov 17 at 14:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.