Every mesh could theoretically have a different material without performance loss. But you can combine them to not go insane as an artist. This will also help with organization and maintenance.
Material names must be determined before the project starts
(because changing names mid-development in Substance Painter is difficult)
"vehicle_dev_name"_"material_type"Examples:
1"pickup_main"
2"pickup_interior"
_ are allowed (aka snake case)mainCab, body panels, exterior meshes, interior painted metal meshes, external roll cage, flatbed, upfits.
This material will use UV0 for normal maps.
UV1 will contain body wrap UVs.
interiorwrapVehicle skin (decals and body textures).
Uses UV1 to minimize stretching.
mechanicallightsHeadlights, taillights, blinkers, fog lights.
Contains three textures: Off, On, Broken.
engine/transmissionEngine, transmission, radiator, piping, exhaust manifold.
Created to allow reuse of engines/transmissions across vehicles.
gaugesInstrumental cluster.
Contains two textures: Lit & Unlit.
grille
(alpha channel)
Grilles, badges, 2D emblems.
Used for objects requiring transparency (e.g. bolt stickers).
glass
(alpha channel)
Windows.
Contains two material states: Broken & Unbroken.
The broken state switches dynamically when mesh bends.
lettering
(alpha channel)
wheeltireUseful tips
Remember that while texture dimensions need to stick to strict power of 2 sizes, the aspect ratio is not fixed. In many of these examples you may find yourself using a 1024x512 texture set, for example, which is advised when it would be the most efficient solution.
You should always only use the size that is necessary for what you are making to look decent. Using large textures when not necessary is one of the easiest ways to waste memory.
Texture resolutions in a set do not need to be the same. Less important or more basic textures, such as AO or some metallic maps may not need to be as high res as the base color or normal map of a texture set and can be at lower resolutions to save on memory.
vehiclename_lowbeamvehiclename_highbeamvehiclename_lowhighbeamvehiclename_signal_Rvehiclename_signal_Lvehiclename_taillightvehiclename_brakelightvehiclename_reverselightvehiclename_foglightvehiclename_gaugesExample:
This will allow independent control:
1"vehiclename_taillight_R"
2"vehiclename_taillight_L"
Example:
A taillight may have the following:
vehiclename_taillight (general taillight)vehiclename_brakelight (brake light functionality)vehiclename_reverselight (reverse light functionality)vehiclename_signal_L (left turn signal functionality)Some materials dynamically switch in-game, for example, a headlight breaking during a crash.
How it works:
Example:
vehiclename_headlight gets damaged during a crashvehiclename_headlight_dmgGlowMaps System:
We also support a system for emissive glowing textures (e.g. lights turning on/off). Dummy materials swap dynamically for different light states.
Was this article helpful?