6
$\begingroup$

As shown in the screenshots, the UV map of my model fits perfectly on the texture maps I created from Substance Painter, however, there are heavy stretching of texture around the borders of my mesh (for example the highlighted faces in the first screenshot should be in black color but the end result showed heavily stretched red texture of other UV islands).

I have checked the position of the UV map and the texture but they are correctly positioned. The texture is clean, the UV is clean, but the result is messed up for some reason. Any help is appreciated.

enter image description here enter image description here

Update: Thanks for the suggestions but it seemed all of them are not the root cause of my problem here (btw I changed the normal texture to non-color data).

The main reason that leads to the stretched texture is probably the subdivision surface modifier that misplaced my seams when it is applied during the render. For example the seams that should be placed at the boundaries of the UV islands are placed elsewhere as shown in the screenshot after subdivision. Which messed up my render.

Is there any method to ensure my seams are not moved by subdivision surface modifiers? (The highlighted edge loop is my seam before and after subdivision)

enter image description here enter image description here

$\endgroup$
  • 1
    $\begingroup$ Possibly overlapping/duplicated geometry. Try hiding your model and see if anything remains. Check for and Remove Doubles in Edit mode while the whole mesh is selected incase there are duplicated vertices. $\endgroup$ – Rich Sedman Apr 4 '18 at 8:40
  • $\begingroup$ Ah yes the subsurf modifier tends to do that. Can you add creases? blender.stackexchange.com/questions/45859/… $\endgroup$ – moarorleslie Apr 11 '18 at 19:42
4
+50
$\begingroup$

The vertices, extra smoothness and all data generated by Subsurf can't really be modified further from their source mesh they are interpolated from. It's how the modifier is intended to work. But there is a checkbox for Subdivide UVs that you can disable. This should make the model linearly interpolate the UVs instead of smoothing them according to Catmull-Clark.

Subsurf options

Source mesh, UVs with linear interpolation, UVs with Catmull-Clark interpolation

The image isn't really the best when it comes to illustrating the difference in UVs, the differences are only there where the unwrap isn't perfect and I'm bad at making distorted UV unwraps. But regardless, disabling subdivide UVs should fix whatever difference in UVs is caused by Subsurf modifier.

However in the future, thinking about your workflow it's important to model first, then texture especially with hand-painted ones because they are entirely dependent on geometry. If you look at your texture you can actually see the level of detail you had during painting. You should adapt your workflow to this fact and paint the textures only after you've reached high enough definition with your model.

$\endgroup$
  • $\begingroup$ As I plan to export this model for others to use, I only plan to use subdivision surface modifier for rendering only and turn them off after that, but it seems that the problem does not lie in the workflow as regardless of the time I did the texturing process, the movement of seams after subdividing the model will still exist and leads to the stretching. $\endgroup$ – Mr.Benson Apr 12 '18 at 2:41
  • $\begingroup$ If you uncheck the "Subdivide UVs" the seams should not move even if you don't apply the modifier. Can you confirm this worked for you? Perhaps I don't understand your use case but subsurf modifier is generally not a "rendering aid", it changes the geometry a lot. If you render a preview WITH subsurf modifier on and supply the model WITHOUT the subsurf modifier people are going to notice the difference and be surprised. $\endgroup$ – kheetor Apr 12 '18 at 8:46
2
$\begingroup$

Check your holding edges in that stretched zone, that kind of distortion is typical of some out of control subdivision modifier. As the comment in your question suggested, there might be some thin faces over there.

As an over simplification:

Do: do

Don't: don't

$\endgroup$
1
$\begingroup$

Check that your normal maps is in Non-color data color space

enter image description here

$\endgroup$
1
$\begingroup$

Not sure how you made the UV map itself, the UV map can look clean but might not be the best UV solution for how you like your textures to be. work width edge seams, and make sure they can unfold in a way you like. If its not looking ok, add some more seams (or remove wrong ones) and recreate UV till it looks OK, (which usually isn't that much work inside Blender).

$\endgroup$
0
$\begingroup$

I had the same problem and found two ways to fix it:

  1. When you unwrap the mesh make sure you have the option "use Subsurf modifier" enable, by default it's off (F9 to see the options when unwrap in Blender 2.8, F6 in 2.79).

  2. Place the seams in the control loops and add holding loops (rather close) so that when you unfold the mesh (without activating the first option), the subdivision modifier does not move the geometry of the vertices so much that it stretches the texture. You have to take care of the topology and also think about the UV's. Test before painting the final texture to see if you should add more geometry.

enter image description here

$\endgroup$

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.