Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Creating Seamless UV maps (fails?) #1

Open
paul0noah opened this issue Mar 30, 2023 · 2 comments
Open

Creating Seamless UV maps (fails?) #1

paul0noah opened this issue Mar 30, 2023 · 2 comments

Comments

@paul0noah
Copy link

Hi Kenshi,

First and foremost thanks a lot for providing this implementation!

I wanted to use this method to create a seamless uv-map for a 3D mesh. I came up with the following procedure:

  1. Use the same mesh for A-orig.obj and B-orig.obj. I used this shape:
    A-orig.obj.zip

  2. Define some landmarks with your landmark picker while ensuring in a post-processing step (manual editing of landmarks.txt) that all landmarks are identical on both shapes. I picked the following landmarks:
    landmarks.txt

  3. Running the seamlesssurfmap implementation as follows: ./seamlesssurfmap --num-iter=10

Unfortunately results do not look very "seamless":
Screenshot 2023-03-30 at 16 30 14

For creating the texture map i used the vertex and face information stored in A-disk-refined.obj while i assigned each vertex of A-disk-refined.obj a uv-coordinate by using the vertex information stored in A-gmap.obj.

I know this is the unofficial implementation but results look far different from what i expected from the paper. Do you have any suggestions where I made a mistake or how i can improve the results?

Thanks a lot!

Paul

@kenshi84
Copy link
Owner

kenshi84 commented Apr 3, 2023

Hi Paul,

Thank you for trying out my implementation, I'm very happy that it's useful to someone:)

Sorry but I have to point out that you're misunderstanding what the seamless maps are. If you try to paste a checkerboard pattern onto any genus-0 surface, there will necessarily be some visible seams somewhere, no matter what UV parameterization method is used.

The typical UV checkerboard pattern visualizations used in those cross-parameterization (or inter-surface mapping) papers use the simple method of projecting the mesh to a 2D image plane from a certain viewpoint and using the resulting 2D coordinates as the UVs (thus, the checkerboard looks nice from near that chosen viewpoint while it looks stretched in the "side" views). The map is "seamless" in that the checkerboard pattern transferred from A to B does not exhibit any visible seams (although the mapping itself involves seams; cf. "seam transformation" in the original paper).

I've pushed a small code (that I already had previously without committing) that generates UVs using the above-mentioned method, as well as an additional functionality to output B-with-A-uv.obj when A-orig.obj contains UV data.

f4f4eb4

Below is a screenshot using your data: on the left is A with its original UV, on the right is B with UV transferred from A. Their cut graphs are also shown in green (notice the difference around the left arm).

Screen Shot 2023-04-03 at 11 15 15

ssm-test.zip

If your interest is only to texture a single surface (as opposed to the "cross-parameterization" or "inter-surface mapping" scenario) without visible seams, perhaps techniques like this https://hal.science/inria-00547713/ are more suitable.

@paul0noah
Copy link
Author

Hi Kenshi,

thanks for the reply. I already was very curios how it actually could work... so its no suprise that it doesnt work as i hoped it would.

Yes we are using the same procedure right now but our problem is that we want to display shapes in different poses where this whole pipeline breaks...

Nevertheless, thanks a lot for your help! I will leave this issue open so that others can see what is possible and what is not possible with the seamless framework :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants