Bake your game model like you normally would.
Once baked, go to the texture set settings, click the + and add a User 0 channel.
At default, User0 is greyscale. Click the gear icon on the right and switch it to sRGB8. This allows User0 to use color.
User0 is a custom channel that allows you to add more texture types than default. We use User0 for our colorization mask using pure RGBCMY color values.
Adding a User0 Channel to your Painter file
RGBCMY colorization mask example.
It is generally a good idea to keep separate materials in their own folders and use a custom mask to select the regions for each. You can do this manually by using the face/shell/Element selector, hand painting, or using a color selection mask with your baked ID mask.
Colorization colors are generally masked by the type of materials used on an asset. This way each material on the asset can accept a similar default color value in engine.
To add colorization regions to specific materials, activate User0 in the very bottom layer of your material and select your colorization color. This way, everything within that mask you made for the material is also colorized. Just be sure no other layers within the material have User0 activated.
Red User0 added into the base metal layer of the TEK METAL material folder.
Blue User0 added to the emissive material
Custom cyan and green color masks to maximize the regions used, and to add more value variation across materials such as metal.
If the amount of different materials you use on an asset does not equal 6 total, you can further customize the mask by adding fills with a User0 channel that can be used to mask specific regions even further. The rule of thumb is never have less than 4 color regions if possible. 6 is preferred and is the max number of colorization regions for a single asset.
You can use multiple RGBCMY values across the same material to give further customization options and value breakup on the asset’s default base color in engine.
Yellow and red touching, red and magenta touching, but yellow and magenta do not touch. Emissives packed into their own corner also can help negate any emissive bleeding across shells.
If you can, think ahead to how you will texture and colorize an asset. Try to split up regions by UV seams. If your color regions are split by UV islands, any color can be next to any color. If they are on the same island, there is a possible issue of color overlap, which causes a visible white seam between regions when colorized in engine.
Always keep emissive areas split onto their own UV shells. This is doubly important for emissives because it helps keep borders of emissives sharp when textures mip down in engine.
If regions exist on the same UV shells, follow this guide. This is extremely useful for creatures, characters, and any asset with lots of information baked into normal maps with fewer UV shells.
Black values in a colorization mask dictate what is not colorizable.
This can be used to exclude regions of an asset that should not be colorized
Add wear to color masks to give it a ragged or worn appearance when colorized.
Black overlayed on a region with a low opacity will reduce the color power of the area. This is useful for adding slight value variation within a color region, allowing things like edgewear or scratches to not be fully colorized, allowing them to stand out more.
Painter colorization mask with black scratches and edgewear
Engine result of the Painter colorization mask with black scratches and edgewear
Due to how the colorization material works in engine, all colorized assets need to have a completely desaturated and lightened base color texture. This is because color injected onto the asset use an overlay blending style that darkens base values. If an asset looks correct in painter, it is generally too dark for Ark and values will not be PBR accurate. This is why we use a filter on top of the layer stack that lightens, desaturates, and boosts contrast of base colors before we export textures.
fter being lightened and desaturated, base colors can look too flat, so using contrast luminosity or a levels to increase contrast of the base color values helps it to look closer to the original values once in engine.
HSL Perceptive desaturation and lighten value example
Default authored base color.
Contrast luminosity value example
Base color with filter and ready for export.
Sometimes assets have dirt, rust, dust, and other types of grunge added on top of the base materials layers to make the asset feel more used and a part of the world. Colorization reduces color variation across an entire asset because it overlays a solid colors over a greyscale base color map.
A workaround is to brighten the whole asset, but then keep a separate desaturation filter UNDER your grunge material folder in the layer stack. This is to keep your grunge colors true and separate from the colorization region colors.
Example of the grunge mask lightened but not desaturated - Painter
Example of the grunge mask lightened but not desaturated - Engine
Slight color in the base color can throw off true color dyes when colorizing an asset. It is important to use grunge color sparingly and to make sure that the main color for the given region is true to the color selected in the material.
The basic exported texture maps for a prop:
Base Color
A - Emissive
Layered
R - Metalness
G - Roughness
B - Ambient Occlusion
Normal
Colorized Mask
Export naming conventions in Painter