Artists workflow should be no different. This is what I found to be universal between all rendering engines. If you follow this one general ruleā¦1 File = 1 Import. Donāt combo group things into the import file (ie FBX). You will have troubles later. Also means donāt use Blender/External materials or packing textures in the export file. Keep everything separate in one folder. This is also easy to FreeFileSync to a NAS drive or team share. Side note, never have more than 65,535 verts in one 3D asset import (all engines are still 16bit vertex arraysā¦for good reason). With the 1 File = 1 Import you can check for this much easier then only need to fix one file.
(ie D:\Engine Prep\Insects\Spiders)
I agree that Unity has some nice cheats because of how it stores the actual files then when saving the .meta file picks that up and adjusts the internal file. You should steer away from this since it is mostly Unity specific. Move towards a more universal approach.
When ready for engine import copy the file types the engine can use.
(ie D:\Engine Ready\Insects\Spiders)
Two different thoughts on folder systems. There are benefits to both systems so there is no right answer. I have used both and I prefer the 2nd.
::-----------------------::
Bethesda approach (some others also use this style):
Replace Data with Content for Flax. Same thing.
Data>Materials> All Materials are in these sub folders. (ie Materials>Spiders)
Data>Meshes> All Meshes are in these sub folders. (ie Meshes>Spiders)
Data>Textures> All Textures are in these sub folders. (ie Textures>Spiders)
Content>Prefabs>Spiders (ie use these for dragging into and/or script spawns)
ā¦similar for Audio, Scriptsā¦etc.
Benefit is work well for texture sharing and keeps file types logical.
Drawback is that linking up various items in engine takes A LOT more clicking. Flaxās Content Manager with how the folder system works (in actual practice) does not work well with this. The folders auto expand far too easily and then too much scrolling. Once the asset is linked in though it does not change. So only some additional mouse work during asset linking and set up.
::-----------------------::
Explicit Asset Hierarchy (My preferred workflow):
Content>Insects>Spiders>SpiderSkeleton
Content>Insects>Spiders>Animations (only if the spiders all have the same skeleton)
Content>Insects>Spiders>Sounds (only if the spiders all have the same audio files)
Content>Insects>Spiders>SpiderA (material, mesh, texture, animations, audio are all in this one folder)
Content>Insects>Spiders>SpiderB (same)
Content>Insects>Spiders>SpiderC (same)
Benefit is this makes the artist workflow much easier and keeping track of art assets is much better.
Drawback is that you will end up with identical textures (typically) for some things. Does not happen a lot but sharing textures with this method is much hard to keep track of as the project gets larger. Sounds are similar in that larger spiders could have deeper or slightly modified audio using Audacity. Easy work to change with a filter then export for a different sounding spider.
::-----------------------::
Order of Exporting then Importing Skeletal/Bone Meshes for animations.
Import the Textures and set up the Materials:
Content>Insects>Spiders>SpiderA
- Textures, Diffuse and other PBR if necessary (ie SpiderA_DF)
- Textures, Normals (ie SpiderA_NM). Make sure you know what Normals format you are using and stay with it. Most Normals are in OpenGL. If making from GIMP or xNormal they will be in OpenGL. Flax and Unreal use DirectX and need the Green Channel Inverted. Flax v1.9 has this option now and seems to be working. There is a material function for Flax I made and posted here on the forums that you should make and use as a back up.
- PNG for either RGB and RGBA
- Content>Insects>Spiders>SpiderA> SpiderA_MM (Master Material). Materials in Flax are enjoyable to make. Mostly Keep It Simple Stupid but you can do all sorts of cool things similar to Unreal. Far easier to make than Unity.
- Content>Insects>Spiders>SpiderA> SpiderA_MI (Material Instance. Tie this to the Spider). You can make a number of Spider varieties by adding more MI and changing the DF (ColorMap) (ie SpiderA1_MI). The Sky is the limit. Flax handles this with ease.
Import the Meshes:
- Content>Insects>SpidersSkeleton Spider_SK.fbx <= Spider Skeletal Mesh FBX. gLTF still has issues. Obviously this only applies to models than have bones.
- Content>Insects>SpiderA > SpiderA_SK.fbx <= Spider A will use the above Spider_SK skeleton.
- Content>Insects>SpiderA > SpiderA_SM.fbx <= This would be for a Spider that does not have any animations. SK = Skeletal Mesh SM = Static Mesh
All imported assets are more like UE4/5. The asset is converted by the importer as a .flax (Flax Asset). This is very similar to the .uasset. It is the entire file. Unity has meta data and keeps a duplicate of the Raw file and then an internally formatted asset that Unity syncs with the .meta file. This breaks a lot but Unity has a nifty tool to rebuild these. Does a nice job. So Flax does not need this meta data. What you see is what it really is.
When you need to edit something and make changes. Change it in Engine Prepā¦same procedure but delete the file in Flax then import and link back up where needed. Obviously needing an update on something like a base skeleton will mess up the entire chain that depends upon it. Sometimes it happensā¦with lots of grumbling. Wellā¦sheeeeeeet. Why did I not think of that?!
Rinse and Repeat the above for anythingā¦Door, Wall, Chair, Table, Appleā¦same same same. Also makes for super easy testing to make sure your imports and objects are working.
::-----------------------::
Textures.
I use GIMP 2.10 for everything. 98% of normal maps are excellent as well with the old 2.8 normal map filter plugin (free). There is one included in 2.10 but it is not quite as good. Same with the PS normal map plugin. It is actually terrible. xNormal makes excellent maps so I use that for 3D assets requiring normal maps from actual 3D art (ie character bodies, high rez baked normals etc.).
GIMP has excellent PNG exports of the .xcf files. Even at compression level 9 the results are amazing. There are no artifacts with both RGB and RGBA. GIMP automatically adds the Alpha channel if adding the Alpha to any of the layers when exporting. PNG is lossless (like TGA) and saves a lot of disk space (unlike TGA, PSD). PSD is both a texture file as well as a layered file format. You should not use them directly importing. Also GIMP xcf files have no trouble with enormous file sizes. Great for texture libraries. PSD is only good for 2GB then needs PSB(?) for the larger files. And it really struggles to use them. I have not used PS since 2019 so it may be better now.
::-----------------------::
Now you can try out the animations to see how the mesh is deforming (with Blendshapes/Morph Targets) with your textures and normals. If looks goodā¦next!
::-----------------------::
Flax imports PNG (both RGB and RGBA) very cleanly to the internal DirectX format. JPG also does well but it has quality losses when changing texture scaling. For about the same file size why not use PNG.
::-----------------------::
I hope that helps explain some things. If you want to dig into more exact details give me a PM and we can discuss. I am happy to help. Been down this same path a few times now in a number of engines.
Cheers
O.