Atlas Creator that packs geo and textures simulaneously?

   3417   3   2
User Avatar
Member
34 posts
Joined: Oct. 2018
Offline
Hey!
I hope this is the right place to get in touch with the game dev toolset team.

I have a feature suggestion - something I need all the time as game developer and though this could be handled perfectly with Houdini!

Would be cool to have a node where you can plug in multiple FBX files (or any other geo with UVs), add their corresponding textures (albedo, roughness - but maybe not limited to the standard textures) and bake everything onto a texture atlas.

Same thing like the UVLayout node does, but not only layout the UVs but also the textures according to their UV shells.
The output would be newly packed UVs + modified textures for each object.

I hope i got the idea across (English is not my native language).
Basically a texture atlas creator that also packs the individual UVs.

Could this be of interest?
Thanks,
Ron
User Avatar
Staff
197 posts
Joined: July 2015
Offline
Hi Ron!

First of all, thank you for taking your time to share some ideas with us!
Like you said, we currently do not have a solution that does exactly what you describe in that way.. But we do have a solution to achieve the same effect using some of our other tools.

If you merge multiple pieces of geometry together, their UV are overlapping.. Which is what you'd like to solve. So to fix that you would run that through the UV Layout node. This should ensure your UVs are no longer overlapping, but your textures would not match anymore. This is where tool nr 2 comes in. With our baking tools you can either bake high poly geometry to low-poly geometry, or simply do something called “texture-reprojection”. This transfers texture data from one mesh to another based on proximity. (Therefore generating a new texture for you) Your low-poly would be the mesh with your UVs run through UV-Layout, and the High Resolution mesh would be the originals.

UV Layout - http://www.sidefx.com/docs/houdini/nodes/sop/uvlayout.html [www.sidefx.com]
Baker - https://vimeo.com/244246886 [vimeo.com]

If you have a specific reason why you'd like to composite the textures together rather than doing a layout of your UVs please do let us know.

Paul
Paul Ambrosiussen
Technical Artist, Freelance
twitter.com/ambrosiussen_p
User Avatar
Member
34 posts
Joined: Oct. 2018
Offline
Hi Paul!

Fantastic! I'll give it a shot right away.

I'm packing UVs in Houdini already.
My problem was that I'd like to texture the assets before I pack them to get them into the engine quickly.

Later when optimizing I need to repack stuff.
Plus, sometimes I wanna change what objects go onto which atlas during production.

Your solution saves me a lot of time!
Thanks!
User Avatar
Member
34 posts
Joined: Nov. 2016
Offline
Ambrosiussen
Hi Ron!

First of all, thank you for taking your time to share some ideas with us!
Like you said, we currently do not have a solution that does exactly what you describe in that way.. But we do have a solution to achieve the same effect using some of our other tools.

If you merge multiple pieces of geometry together, their UV are overlapping.. Which is what you'd like to solve. So to fix that you would run that through the UV Layout node. This should ensure your UVs are no longer overlapping, but your textures would not match anymore. This is where tool nr 2 comes in. With our baking tools you can either bake high poly geometry to low-poly geometry, or simply do something called “texture-reprojection”. This transfers texture data from one mesh to another based on proximity. (Therefore generating a new texture for you) Your low-poly would be the mesh with your UVs run through UV-Layout, and the High Resolution mesh would be the originals.

UV Layout - http://www.sidefx.com/docs/houdini/nodes/sop/uvlayout.html [www.sidefx.com]
Baker - https://vimeo.com/244246886 [vimeo.com]

If you have a specific reason why you'd like to composite the textures together rather than doing a layout of your UVs please do let us know.

Paul

The drawback to this method is that you would cause wasted texture space on anything in the scene that was a duplicate. For instance, say you have a game level with duplicated props (boxes, shovels, barrels, etc etc) and even buildings that share tiling textures. If you repack the UV's on the merged mesh and transfer texture data you've essentially made all actors unique textures meaning you will lose a ton of texture space on your atlas.

The alternative would be everything is merged and in the process of merging any actors sharing the same material would have their UV's repositioned together into the correct section of the resulting atlas.

This second option is the most useful in many cases for game development, especially for optimizing levels for VR and Oculus Quest or mobile games. This is something I'm currently exploring. It would be tricky to use Mosaic COP since I cant see any way to keep track of meta data to know which texture went where and how to properly match the UV's. It also doesnt work with different size textures which isnt great either. I guess the best solution would be a python approach to atlasing the textures?

The current approach we are looking into for working with mobile and on VR titles would be to input dozens of meshes, have them combined into a single merged mesh, atlas the textures associated with the assets, and correctly line up the merged meshes' uv data to the new texture atlas layout.
Edited by TheProgg - Aug. 9, 2019 19:35:39
  • Quick Links