ZBrushCentral

Decimation Master: Keep UVs results in mesh seams

Hi,

I’m testing a high poly to low poly workflow. I take a high poly mesh (2 million polys) and generate UV, Normal, Displacement, and Texture maps. Then I duplicate the tool, delete its lower subdivisions, and pass it through Decimation Master. Before entering Decimation Master, I check the mesh for any glitches or seams- it looks great (proper quads). In Decimation Master, I check Keep UVs and I also keep my Polypaint. Once I decimate, I notice a seam of vertices that looks ugly and needlessly increases my polycount. Is there a setting or workaround for decimating and keeping the uv & polypaint data without generating this ugly seam?

Any advice would be greatly appreciated. Thanks,

Ana

Before decimating:

After decimating:

Attachments

beforeDecimation.jpg

afterDecimation.jpg

Your running edge is probably where a UV seam was.

Hi,

The running edge is definitely from a UV seam because I checked “Keep UVs” in Decimation Master. I’m still trying to get around this issue of not being able to apply maps from my high-resolution mesh to my decimated copy, here is what I’ve tried this time:

  • I make a copy of my high-res mesh with UV, Normal, Displacement, and Texture maps
    high-res_mesh_with_TextureMap.jpg

  • I delete the copy’s maps, lower subdivision levels, and Decimate it
    decimated_mesh.jpg

  • I copy the high-res mesh’s UV map
    high_res_mesh_UVmap.jpg

  • And paste it to the decimated mesh, but this is what happens
    decimated_mesh_UVmap.jpg

  • If I apply the high-res mesh’s Texture map to the decimated mesh, it looks like this because the UVs are messed up
    decimated_mesh_with_TextureMap.jpg

Any ideas on what is going on here or what kind of workflow would allow me to create a decimated mesh from a high-resolution mesh and preserve my high-resolution texture map or polypaint data? The decimated mesh works great for me because I do not need to animate the final but I need a low polycount, and I find that Decimation Master gives me lower polycounts with better detail than does ZRemesher.

Are you copying and pasting the UVs between meshes? This is not what you’d want to do, especially since the vertex order is completely different between the two meshes.

If you decimate a model while preserving UVs, then it does just that. It will have the same UVs tht you need as soon as its created. The edges of a UV island are preserved like in your example while the rest of the mesh gets decimated. Don’t worry about the topology looking ugly; anything decimation master produces will look ugly from a topological standpoint as its very purpose is to preserve the appearance of the surface while getting the lowest triangle count that it can. That’s the tradeoff with that method, and it’s a good one since the wireframe doesn’t matter here (only the shaded surface). If you require cleaner topology, then there are other retopology tools and methods available that are designed with that in mind. And don’t worry about it needlessly adding to the polygon count; it isn’t needless because those edges are required in order to preserve the original UV island shapes, and an extra 5k vertices aren’t going to cause zbrush any trouble.

Hi Cyrid,

I read up a little more on UVs and see what you mean about the different vertex orders. I’m still kind of new to 3D, sorry.

Even though you get ugly topology out of Decimation Master, it doesn’t matter to me that I have tris. My goal is a static mesh with a very low polycount for webGL that still looks halfway decent, so that’s why I was using Decimation Master instead of ZRemesher. But the “ugly” part is that I have a visual seam from where the UV borders are being preserved:
Maya_seam.jpg
^^ this is how my final render would look… you can plainly see the seam.
ZBrush_wireframe.jpg
^^ this is the wireframe of the seam.

Is there another workflow that would allow me to create a low-poly mesh from a high-poly mesh with polypaint data? Otherwise, it seems like a lot of work to have to go in and clean up the seam manually because I need this workflow for hundreds of objects. I was considering just exporting the lowest subdivision level of my high-poly mesh, but using Decimation Master to get the same low polycount results in much more detail… and I’m going to end up with tris for the final webGL export anyway. If possible, it would be great to use Decimation Master for the final.

That particular issue looks like its the result of your smoothing groups / vertex normals (or whatever the equivalent Maya terminology is). Adjusting those settings would make pretty quick work out of it in Maya; unfortunately its not the 3d program I use so I wouldn’t be able to list the specific steps involved.

Is there another workflow that would allow me to create a low-poly mesh from a high-poly mesh with polypaint data? Otherwise, it seems like a lot of work to have to go in and clean up the seam manually because I need this workflow for hundreds of objects.

Polypaint can be projected between different meshes (tool: subtool: project all), so as long as you work on a duplicate subtool then it shouldn’t need to be preserved during the retopology stage. Depending on what you’re doing with these models shader-wise, the lowest subdivision level or a zremesh pass should quickly get you a cleaner mesh, with the rest of the detail being recreated through the texture maps.

This also means you could also use decimation master without needing UVs. Under the preferences you can have it use and keep polypaint data, which would preserve the vertices necessary to maintain the same quality of vertex colors. You could also scrap polypaint and UVs altogether. Just decimate a duplicate subtool, give that result a brand new set of UVs, and either project the polypaint over or use something like xnormal to convert it to a map.

As for wireframe cleanliness, triangles themselves aren’t the problem for a realtime asset; but long super thin ones can be. They wind up being so small that they contain few pixels (especially when 10-20 could be fighting for the same pixel in places), which can lead to hits in the fill rate.

Projecting the polypaint data alone worked!! Thank you so much, I didn’t realize you could just project polypaint.