Mech design - Blender + substance painter + unreal engine

Hi guys. Lets see if i can describe my problem in the right way.

I am modelling a simple mech in Blender, i already have the low poly finished, i plan to texture it on substance painter and export to unreal engine.

I want the upper body to be a separated mesh from the lower body, so i can make the rotation of the upper body in unreal engine in an easy way just rotating the whole mesh instead using an animation (i will include a skeleton anyways but probably it wont have much use). Same for other parts of the mesh, like the side arms.

Now, im not sure how to proceed in blender. I want to separate the whole mesh in several pieces because i want to bake normals in substance painter and ambient oclussion in each piece (so there are not errors of ray cast and weird things).

I dont know if there is a way to do the exact thing but instead of separated pieces, with separated geometry (so you have only one mesh but divided in pieces). Because that will be great, the problem is, those “pieces” need to be named so i can bake em in substance painter… thats why i need to separate em in different meshes.

Also, uvs. Should i pack all the uvs of all meshes into one single uv map? or have an uv map for each main part of the model? i want to optimize texel density but i dont want to have a dozens of uvs… im not sure how to proceed about this.

I have a lot of doubts, a little help would be really appreciated. Some of you who have experience in these 3 programs managing hard surface models could have nice tips for all this.

Thanks in advance.

You can keep everything in one mesh and still separate parts by assigning individual materials to the geometry. Substance recognizes different Texture Sets by the materials, so you can easily solo parts of the mesh.

Some pictures as an example.

Edit: As for UVs, I can’t comment in terms of the Unreal Engine, but I can say that even by separating geometry by materials, you still keep one UV map for the entire mesh.

I personally work with a lot of layers in Substance and want to keep the project file below 1GB for a snappier workflow, so I usually break up objects and UVs. I find it’s better to manage many sets of textures than it is to work on a 10GB project file that hangs the program for 30 seconds while it autosaves.

Yup, i know about the material id, i completely forgot about it and its what im going to try. Thanks for the reminder. Mostly because i want to bake pieces separatedly.

But again, i also im confusing about how to uv map it. I never tried but i suposse you can grab several meshes and uv map em at the same time, so they share the same uv map, right? thats what i wanted to do. Im really not experienced in doing things like this when it comes to uv mapping. So far i only modeled simple props and easy stuff lol.

And yes, i also think its better to have uvmaps for specific objects and several textures, the problem is , UE. The more textures you have in ue, the worst gets the performance. And if you plan to have a lot of objects in the project… it can be a pain. So i try to avoid too many textures. Thats why i wanted only a couple of three uv maps, sharing all the objects.

I’m not sure I see the problem. All meshes separated by materials are always “solo baked” so there aren’t any raycast issues because of too close or intersecting geometry.

Edit: As for a single texture for the entire mesh in UE, you might want to look up texture atlas. Blender is even shipped with a texture atlas addon.

I don’t know your level of blender knowledge so forgive me if I state the obvious :slight_smile:

very basic workflow:
Blender low poly, edit mode “U” to uv map, try “smart UV map with 3 pixel islands” click ok
go to the material tab, ensure each mesh has a separate material assigned.
“group” all meshes …edit #### only group meshes that don’t animate separately, that you want to stay in a fixed relationship, like decal textures re “star-citizen decal workflow” or now decal machine style :slight_smile:

SP: select fbx file import. Bake textures … if you have created a hi poly select the hipoly fbx file in the dialog box( you don’t need to UV map hi poly or anything in blender) select the material set for whichever mesh you want to work on…do what you want then export textures,
UE import lowpoly, import textures, place textures in the materials or create materials. done.

main points, Blender: use different materials for each object, export fbx with selected objects(ensuring you select all objects)

you can also have several UV channels per object in UE, which gives you a lot of options,

The problem was that i didnt know HOW to separate the pieces without making em separated objects for spainter to recognize em.

What is Atlas? i have it activated on addons but i dont have a clue what it is…

Already knew all of that… my blender level is not that low ^^

I know i can have several UV channels in UE, but i can only have 1 uv map in 0-1 space in spainter. There is my problem and /or confusion.

Anyways, already worked on it. The only doubt i have is that, i didnt want to rig the whole mech. I just wanted to separate the head and the body to make it far easier to animate in UE, just using rotation nodes without having to go to animate the skeleton, putting weights and so on. I mean, the body is going to be rigged of course, cuz the legs are there and the main animations are going to be the walking one and maybe a couple more. But the rest i wanted to be just managed through blueprints with just rotation nodes.

The sidearms are attached to the cockpit (or whatever) and they move parented to the cockpit (that is basically the upper part of the mesh). The cockpit rotates left-right and the sidearms rotate up and down. That movement, i really didnt want to do a rig for that, i just wanted to parent the pieces and make rotations through blueprints.

Specially when the mech starts to follow the main character, making an aim offset to make the sidearms to aim the character its too cheap and complicated in my opinion and could be done just making a rotation node in a blueprint.

But in the end, i think i will just rig the entire mesh and call it a day. And make everything with animations.

Texture atlassing is to take UVs from multiple objects and bundle them into one big universal UV layout. So instead of the game engine loading textures from multiple sources, everything is fitted onto one big texture.

The drawback is that the entire texture has to be loaded in video memory, so atlassed objects that aren’t loaded will still occupy video memory because of the atlas. But for one big object with many UVs, like your mech, I can see it would be pretty optimal.

I’ve never had any use for it myself, but I’m also not into making game assets on a large scale. But if the amount of different textures worry you, atlassing them might be something to consider.

Yeah but isnt that the same as unwrapping all the meshes at once to just one uv map? or that methods kinda “overlaps” one uv to another? (in that case i cant use it because UE dont like overlapped uvs).

In any case, having multiple textures in most cases is better, not worst. Unless its a fairly small object, its better to have the texel density as good as possible. The only problem was that s painter cant handle multiple uv maps.

Work backwards when deciding on the method to use, how big is it on screen, how many pixels will the player see during normal encounters? use lod’s for distances outside interaction areas, ie far away and extreme close ups.

Don’t worry about possible problems, planning for optimum conditions will slow you down more than applying fixes.

#texture atlas doesn’t/shouldn’t have overlapping uv’s, just calculates them all onto one map with specified margins etc same as if you were mapping one object. Useful in some cases, not all.

Yeah i plan to use a couple of lods, because the project is going to be a 2.5d side scroller, but i plan to make the camera zoom to grab the whole distance between your character and the enemy (its going to be a “boss” fight videogame or something like that). But i think that two of em will be enough. Also i will probably just use the automatic lod system of UE if i see that works right. But the model is going to be fairly low poly, i just going to bake the high poly details in s painter. But because there are so many uv islands, the texel density is going to suffer.

Im just unwrapping separatedly some parts of the model to the same uv map, will this make overlapped uvs in UE, or it will automatically detect different uv channels? (i really dont know how it works…).

Also i ended separating different main parts of the mesh into different objects to have better control of the animations, will this make things problematic or i can combine all the parts when importing to UE and everything will be ok (bones, detection of different parts of the mesh, etc)? im concerned that when importing to UE, because they are separated objects, i will need to combine em to make the whole mesh, and i will lose all bones constrains, iks, etc…


Edit: I posted a problem im having with the rig of the feet. Just in case guys you want to check it out.
Nvm, problem solved…

Just a small update.

Conclusion, the only way to do what i wanted is to divide the main mesh in several objects having each one with its own uv map. Thats the only way to work in substance painter with multiple uv maps (because obviously each object has its own uv map).

I was afraid of rigging and animation problems later on using this method, but i found out that its the method most people use…

Unreal engine doesnt support udim textures, so there is only one option and its to use a model composed by separated objects. Also in substance painter doing this i dont have any problems at all and the results are far far better ^^. There is sooooo much difference about using good texel density or not… oh my.

Had a bit of play and found a work around, not sure if it’s worth the effort though, calculations for materials vs duplicated uvs.
But it can be done, made a couple of videos explaining how. :slight_smile: