ZBrushCentral

Issue with the smoothUV feature

I’ve been going crazy for a few days chasing down UV issues between software. I just couldn’t understand why each time I took a mesh out of Zbrush I’d get unique UVs. After much testing I think all of my issues are down to the way the Smooth UV feature interacts with the user changing Subdivisions.

The issue is this: If you have SmoothUV ON then each time you go up and down the subdivs it constantly resmooths your UVs … a cumulative effect rather than absolute.

Here’s my steps (see the attached image for examples):

1 - Bring in a mesh from Maya.
2 - When I Subdivide I see that my UVs require smoothing so I hit smooth UV button up at SDiv 4 and hit ReUV.
3 - Nice and straight. Turn off Suv.
4 - Now whenever you travel up and turn the subdivs and realise you’ll see that they once again distort. Ok, no problem … no I hit Suv and ReUV again and the UVs develop a wobble
5 - It seems each press of the ReUV button causes a further cumulative smooth, with the wobble growing worse.
6 - Ok, lets try again but this time keep Suv turned on when I travel up and down the subdivs, again this is the same … each trip up and down causes a further smoothing added to the last.

So my question is, what exactly is happening and why ? … and how should I get round it ? I think for now I’ll try sending my post Zbrush subdivision lvl1 mesh into UVlayout. Relax the UVs and then reimport it. Essentially bypassing Zbrush UV smoothing altogether.

Disclaimer: most poly modellers would look at my mesh and say just add more support loops. Which is fair, however I think this extreme case has unearthed something I hadn’t realised about the way Zbrush smooths UVs.

Attachments

zbrush_subdivs.jpg

I’m surprised this isn’t getting more attention. ZBrush’s inability to keep smoothing consistent between other programs is THE biggest problem I have with it.

Sure there’s the store morph target/copy UVs option, but only having one morph target means you either have to pick between keeping your base mesh or using the morph brush further down the line, and importing 100’s of objects and copying UVs isn’t practical.

Please Pixologic…can we finally have a ZBrush that subdivides like the other 3d programs out there?

It’s also that lowering and upping subdivs seems to constantly mess with UVs even if you have the smooth UV button off. I think but I can’t be sure that UVs are stored at each subdiv level, and from my tests it seems that if I have a set of UVs at the level 1, then perform a smooth up at level 6 using reUV then I can get things fairly straight … however if I go back down to level 1 and up again my UVs distort … as though it’s adding the smooth again and again even if I have the button turned off.

It’s very hard to see what ZBrush is doing behind the scenes … and I’ve struggled to find detailed information on what that SmoothUV button is doing.

i’m also surprised that few people are talking about it. Especially in the era of 3D painting apps where it’s useful to export the high poly for painting. I could find one thread on this forum which talked about how ZBrush handles UV border edges: http://www.cgfeedback.com/cgfeedback/showthread.php?t=4397

For what it’s worth I decided to go around the problem by applying the displacement map to my mesh in Maya to create a new high res mesh and then paint on that in Mari … that way I’m getting a perfect one to one line up with the UVs between the high and low.

Bencowellthomas, can you post the geometry of a example? I have not been able to reproduce the fact that it incrementally increases the problem. Here it only does once.

Dave_w, I suppose you know you can store morph targets as obj and load them when needed. I understand it is a convoluted solution.

Absolutely … dropbox link here: https://www.dropbox.com/s/ezossn7htlpimnw/Mangled.ZTL?dl=0

Obviously the issue is worse around seams, and this model is unwrapped to show that … but that’s always going to be the case with hard surface work which is where I’ve noticed it. There will always be some visible seams with hard surface models.

To recreate the effect yourself try starting with the base subtool, subdivide a few times with smooth off and start sculpting.

Now map a checker to it and go back down the subdivs to level 1, copy over the uv’s from the original subtool and now go back up the subdivs. You should see fairly clean uvs but still with a distinct wobble. To fix this try turning smooth on and pressing ReUV. It’ll straighten in some places but distort in others. If you turn smooth off and go back down to level 1 and up to the top again you’ll see that the UV smooth has doubled and compounded (even though it was turned off).

You can see the same effect by repeatedly hitting reUV with smooth on … it’s not an absolute calculation but seems to be more like a relax.

It seems that once you have tried to smooth the UV’s you’ve no option but to reset them entirely before changing subdivision levels. With smooth on or off … once a smooth has been added it’ll compound and warp each time you go up and down the subdivs.

zbrush_smoothing.jpg

I tried to reproduce it and it does what you say. As soon you go to lower sub and return to high the UVs change

Anyway some observations:
If you use turbo smooth or opensub in Max with the model the UV deformation looks identical when Zbrush is subdivided (before returning to the lower sub).

If you collapse the stack in Max it will keep the same exact UVs deformation. But opening the UV editor shows that the UVs has the same subdivision than the new geometry, this mean higher and more resistant to deformations. This happens also if you don’t collapse and use the Uvs editor in the top of the stack. Max gets his accuracy subdividing UVs.

If you do something similar in Zbrush, subdivide and then delete the lower subdivisions before doing anything else you get identical results. Higher subdivision of UVs and stable UVs.

But if you don’t delete the subdivisions the difference with Max is that even you have subdivided you are working with original UVs resolution and with more tendency to deformations than when Max works with subdivided UVs.

I don’t say there is no problem there. Simply I was trying to understand it better to see possible workarounds. Perhaps Zbrush dynamically subdivides the Uvs when you move between subdivisions but I can not test that and in any case use a lower UVs subdivision that has been already deformed when Max keeps the original until it is collapsed.

If you Subdivide, delete lower subs, and then reconstruct it won’t solve the problem because Zbrush will reconstruct also the lower resolution UVs, and therefore his vulnerability to deformations.

I have hit this problem before when trying to do things as a interface (icons etc) using geometry as panels to distribute the icons. As soon you subdivide the bitmap of the icons becomes evidently deformed. And the only solution for me was to delete the lower subdivisions, at least the the first 1 or 2 as after than the deformations are not noticeable.

That’s an interesting idea about deleting the lower subdivs … I’ll try that and see what the issues would be.

This all arose for me as I was trying to extract the high res from Zbrush. I wanted to use this mesh to paint on in Mari, I’d then project the textures onto the low mesh in Maya and hopefully see a 1-1 line up. This didn’t work out however and no matter what I did I couldn’t get nice clean UVs at both the low and high levels … certainly not that matched up.

If Zbrush added opensubdiv smoothing even if only for the UVs then this problem could be fixed, as long as they offered the same boundary smoothing options as Maya and the other software. But as you mentioned elsewhere the way Zbrush is architect-ed may mean this is not be possible.

Currently I’ve decided to give up for now and go with recreating a high level mesh in Maya using the displacement maps … I can then paint on this in Mari and get a very accurate line up.