Hi Guys!
For a while now I've been figuring out the best free (or extremely cheap) way to UV map my low-poly projects for optimal UV texture space efficiency (with minimal human interaction) - I'd like to share with you my pipeline and hopefully there are certain elements which can be implemented in future Zephyr updates.
I'll use one of my latest builds as a example: Mr Cre'ep (https://skfb.ly/6zW7B)
I decimated the high poly scan in Meshlab and re-imported to Zephyr for re-projection. When generating the UV map, Zephyr only utilizes 32.38% UV co-ordinate space. This is a very low amount, and not particularly efficient.
To pack the UV map more efficiently, I take the decimated model into Blender and follow these steps:Using this pipeline, the coverage of the UV texture space is improved by approx 100% (in this example case - it varies) - in my opinion, this is a significant margin. - My question: Is it possible to implement any of the steps above into Zephyr to improve the native results, increasing the coverage, reducing the islands, and improving the overall efficiency of the maps.
Here is the comparison of results - Zephyr > Custom
Zephyr: 779 Islands & 32.38% coverage
Custom: 170 Islands & 69.34% coverage
---------------------
Also I just noticed that the Zephyr edge padding is quite extreme and un-necessary - With my texture map (re-projected from 1mio version to low poly through xNormal) the edge-padding is set to 32px - more than enough to cover any seams created by MIP map scaling (at least in my use-case - Sketchfab)
------------
Links:
https://github.com/vilemduha/blender...seam_unwrap.py
https://github.com/amb/blender-scrip...ter/uv_area.py
https://gumroad.com/l/UVShotPacker (I could have sworn there was a github for this too but can't find it now)
*Disclaimer - I don't know how to code - I just know what works for me - This pipeline is useful for LOW poly models and probably not efficient for anything over 32k - At least with the plugins built how they are, and only using single threaded processes.
Anyway I hope this is helpful - please ask any questions!
For a while now I've been figuring out the best free (or extremely cheap) way to UV map my low-poly projects for optimal UV texture space efficiency (with minimal human interaction) - I'd like to share with you my pipeline and hopefully there are certain elements which can be implemented in future Zephyr updates.
I'll use one of my latest builds as a example: Mr Cre'ep (https://skfb.ly/6zW7B)
I decimated the high poly scan in Meshlab and re-imported to Zephyr for re-projection. When generating the UV map, Zephyr only utilizes 32.38% UV co-ordinate space. This is a very low amount, and not particularly efficient.
To pack the UV map more efficiently, I take the decimated model into Blender and follow these steps:Using this pipeline, the coverage of the UV texture space is improved by approx 100% (in this example case - it varies) - in my opinion, this is a significant margin. - My question: Is it possible to implement any of the steps above into Zephyr to improve the native results, increasing the coverage, reducing the islands, and improving the overall efficiency of the maps.
Here is the comparison of results - Zephyr > Custom
Zephyr: 779 Islands & 32.38% coverage
Custom: 170 Islands & 69.34% coverage
---------------------
Also I just noticed that the Zephyr edge padding is quite extreme and un-necessary - With my texture map (re-projected from 1mio version to low poly through xNormal) the edge-padding is set to 32px - more than enough to cover any seams created by MIP map scaling (at least in my use-case - Sketchfab)
------------
Links:
https://github.com/vilemduha/blender...seam_unwrap.py
https://github.com/amb/blender-scrip...ter/uv_area.py
https://gumroad.com/l/UVShotPacker (I could have sworn there was a github for this too but can't find it now)
*Disclaimer - I don't know how to code - I just know what works for me - This pipeline is useful for LOW poly models and probably not efficient for anything over 32k - At least with the plugins built how they are, and only using single threaded processes.
Anyway I hope this is helpful - please ask any questions!
Comment