Modeling points
Create your objects ina logical hirarchy for easy arrangement and selecting
Avoid using auto unwrap or smart unwrap algorithms when unwrapping objects that dont consist of 45 angles only
Keep your material count in mind, each material casses a draw call, an instruction from the CPU to the GPU on what to render. This can become a performance bottleneck, because the GPU has to wait for the CPU till it sends the calls There is some head room for using multiple materials to get more resolution out of your textures. But keep it mind and use just enough, not more than you need. If you find yourself having a single material for something small like a watch or somehting, recosnsider packing mutliple objects onto one material
Keep your scale in mind. Objects must have a certain unit. For Units its best to use meters, which is also Blender default Unit. Use a human model of about 1.80m to 2m when modeling. This will ensure correct proportions and consistent scale of all your objects in the scene. NOTE: You COULD scale objects afterwards, but then you will surely get TEXEL DENSITY INCONSITENCIES, which leads to some textures being very blurry and some very crisp, which is much less preferable than having a lower, but consistent texel density in a scene
Texel Density, see this PDF which explains everything you need to know
Use this amazing free addon to utilize all tools necessarily to remove manual fiddling and too much eyeballing only when messign with TD
Give your Rig a proper hirarchy of child parent relationships. That means having a root bone which will be used for offset animation.
Consistent Bone Roll of your bones will ensure that your deformation angles are correct. Blender has some tools for this to aling your bone roll to either local or world axis which you can choose. Some manual alignement still be necessary
Use proper names for your meshes like "cabinet_main" and "cabinet_sidebords" or use increments "cardboard_0001 ... cardboard_0009" etc.
For Baking, name your high poly meshes and low poly meshes with a suffix. This will ensure that you can bake cleany in your baker without unwanted normalmap and AO map intersection errors. Name your highpolys like this "cardboard_high" and your low polys likethis "cardboard_low". This will tell the baker which objects belong together and should be baked together.
Keep your poly count in mind. Only use as much polys as you need to describe a surface well. This depends on the level of quality you want to have and also on how many objects you have planned to display simultaniously. When using a high poly for baking, it makes sense to have the hp sweet and round, but the low poly could be a bit lower because its normals will be overwritten anyway onto the texture
Always make sure you apply your transformations in blender
Rigging
It is beneficial to rig animated parts, even if they are non organic. It is much easier to parent your models parts to specific bones and transfrom them than it is to fiddle with the objects itself. It also makes those bones available in Units for furthe manipulation. It also seperates an objects hirarchy from the rig hirarchy, which enables us to deal with a much less complex hirarchy of bones rather than a lot more complex hirarchy of objects and sub objects
set a reasonable object origin
keep the amount of uv seams as low as possible, just enough to have your uv shells undistorted. keep in mind , each seam wil createduplactes of the verts they are on
If not using a normalmap that will overwrite the normals of the objects on a per pixel basis thru a texture, make sure you have set up your hard and soft edges orderly, so that you have no "dirty" shading going on on the model and the faces look clean.
Never triangulate your model before it is ready for export to production. Always use a non destructive method of triangulation like blenders triangulate modifer(needs to be always on top) and dont triangulate your topology flow for internal editing.
Transformations and Origin
Shading
Polycount
Hirarchy and order
Material Count and draw calls
UV Mapping
Texel Density
Triangulation
Triangulation is also important for baking, because it determines the vertex order. See Baking for further Info
For baking results to be consistent, the baker needs to know your vertex order. You can achieve a fixed and consistent vertex order if you yourself, not the target app, triangulate your model before export from your 3d package into the target app. Otherwise, most target app, like Unity, will triangulate your model for you, using their in house algorithms. That means that your verte x order will be inconsistent and your baked maps will get screwed, resulting in distorted or unclean normalmaps and other maps
PBR/Standard Shader - Texture Inputs
Baking
Texturing and shader inputs
Albedo/Base Color
This map is different from the last gen color map called "Diffuse". It is called Albedo or Base Color couse it optimally should not contain baked in lighting. In modern shaders, when using PBR like in Unitys standard shader, there is an extra pass for the Ambient Occlusion to dynamically take place depending on the indirect lighting in the scene. That means instead of taking the drawback of having shadows on an object even if it is lit, we instead use the ambient occlusion input to get subtle self shadowing on objects, but not bake or paint that into the AO. (Rule of thumb here is: "let the lighting do its work") Emphasizing edges and cravises in you Base Color texture is ok and can enhance the objects readability, but putting greyscale AO simply on top of your Albedo map should be avoided. Instead, you should only use it as a mask and introduce some Hue shift as well to keep a clean Base Color map.
Metallic
This one simple at first glance and will stay simple for objects that are supposed to look new and are made of plane, unaltered or painted metal. It is a greyscale map representing float values. White means the surface is metallic. Black means the surface is a non metal surface. Painted metal is also a non metal surface and should not contain any metallic values. With weathered and used objects , with some wear and tear, scratches and crevices will reveal some of the metal underneath, which would mean that the metallic map should be grey orr white, wherever some of that metal reveals. NOTE that when using the metallic workflow, as opposed to specualr/glossiness workflow, all non non metallic surfaces have a hard coded specular value of 0.04 in them, as this is appropriate for most non metallic surfaces in the real world. This makes them metallic workflow much simpler to stay in the bounds of creating physiically accurate results, but is also a bit limiting artistically, as it prohibits setting a surfaces specualr value directly. There are certain surfaces, especially cloithing like silk, where metallic values can be used to mimic the specualr effect. With silk, a value of about 0.5 metalness would be fine for example.
Roughness/Glossiness
Roughness is a greyscale map which consists of greyscale float values. Each float value determines how much reflection of the environment contributes to the final render result. A total reflecting surface ´like mirror or water, would have about 0 roughness. The more roughness, the more diffues the objects highlight gets and reflection get less appearent. Glossiness, the map unity uses, is simply the invert of roughness. It should be noted that roughness is a crucial map to get right for realism. Because every object in reality has some sort of reflection, every object has some king of glossiness(or lack of rouighness) to it. And even very new objects wont look ral if there is no breakup in the surface glossiness, even if it is very subtle. Subtlty is king when authoring roughness/glossmaps. Best PRactice is to not have a glossiness feast. A good rule of thumb is that most surfaces outside of metal or water or mirror, have a roughness value of about.0.75-1 , or a gloss value of 0-0.35 . By closely observing the surfaces of the real world, and looking at reference, you can get a better graps of how to author roughness/glossines maps. But utilising roughness artistically should also not be forgotten, It is always advisable to break your surfaces roughness up and make those breakups not looking too procedural or obviously tiling. Roughness/Glossmaps take a good amount of time to author depending on the quality you are going for, cause it is such a crucial factor.
Normalmap
The Normalmap consisst of vectors coded as RGB values and interpreted by the shader on a per pixel or per texel basis. Therefore it is possible to capture high poly surface detail and projekt(bake) it onto the low polys texture, making the low poly look closely to the high poly. This is a common techniwue for performance to reduce vertex count. It is also most curcial for the final detailed look of your model. Baking errors in normalmaps can destroy quality and should be avoided. Most texture authoring softwares nowadays offer the option to paint out your normal map errors. However, this provides very difficult, because the human eye does not really know how to interpret rgb vectors into the surface normal they represent. So a clean bake should be alsways the starting point. Even when it means to do a lot of rebakes, adjusting your low poly geo better to the hp or adjust your baking cage. It will be always worth it on the long run.
Height Map
The Height map is a greyscale represantation of the highs and lows of your High poly. It is also called a displacement map. It is mostly used in tessalation. However, because tessalation creates additional geometry on the shader side, it is not very performance friendly. Therefore, there is also an option which fakes this kind of depht without the cost of extra geometry. It is calles parallax mapping and is what unity has implemented when You use unitys height map slot.
Ambient Occlusion
Even with a sophisticated shading model like PBR, there is still no way to capture the small cracks and crevices which sallow light which is very important to mimic how complexity of real lighting works. Lighting systems, also in Unity, can only take the bare geometry of the model into account when dropping shadows. It wont cover the small crevices in a model which are simulated via a normal map. Thats where AMbient Occlusion or short AO comes inhandy. It bakes the cracks and crevices, the small areas where light gets occluded and can be applied to make your model look muc hbetter and more realistic. It is a hack, but a pretty important one. Getting good AO will enhance your model quite a bit. But too dark and unrealistic looking ao on the other hand, can make it look dirty and low quality. Rule of thumb for PBR: Have your AO mostly in the corners and crevices, avoid large scale or gradient AO
Cavity and Curvature Maps
Maps that describe convexity and concavity of a model. Can be used as masks in your texturing authoting software, but are not included oin the final product.
See this guide on baking perfect normalmpas, it will tell you everythign you need to know
Look for this points when buying a model:
Make sure the model does not come triangulated. If it does, make sure it looks good and you wont ever need to alter it.
Look at the vertex count of the model. A high vertex count will most likely introduce time consuming retopology and baking as well as uv mapping work. Depending on the complexity of the model, this can vary from 2-3 daysto weeks. Models consisting only of a closed outer shell, like a car for example, without inner parts that need to be seen, will be much quicker to retopologize. But is always one walk through the pipeline, and with further unforseen model implication, time can pile up additonally.
If possible, look at models that can be inspected in a webgl viewer, like Sketchfab for example. While this will not guarantee a good quality model, you can at least preview it. It also helps to preview the animation to avoid having to tweak or remake them to get somehting decent
Unfortunately there is no way to inspect the hirarchy of a model beforehand.
Look at what maps are included. Is this model Diffuse only with painted lighting? Are there all the maps needed to use in Unitys standard shader? Is there even also a Unity package for easy import maybe? As we use Unities standard shader most of the time, , without the maps: metallic and GLossines and AO, a lot of the performance it takes to render goes unutiliesed , if we just leave this map slots emtpy. Also, leaving those empty will almost never give a visually interesting result. Excecpt for very even and clean surfaces. But even then, a non textured slot will always tend to look cheap or worst case inaccuarte.
Texture Resolution- if them odel comes with really big textures (8k or 16k) make sure to resize them before use in engine. They take long time to import and change compression settings.
Keep in mind that auto-retopology not get satisfying and clean results most of the time. It also tend to brake the models geometry and will of course loose its UVs, which would have to remade.
File Formats
Rigging is the process of weighting or parenting geometry or whole objects to bones.
Tangent space discontinuity
Triangulation prevents you from being able to : reuse parts of the model properly, re- uv map parts of a model properly and also makes all the edge loops of the model uneditable
Texture Compression