Beginning with LCv4.2, Automation supports the creation of custom paint materials which can be applied to cars, fixtures, and engine parts. These materials also support the Exporter, including exporting to BeamNG.
Overview
A Custom Paint mod is a collection of files, of which a Custom Paint
file is the parent.
The Custom Paint
file contains the settings and applicable options for the Custom Paint, as well as a reference to the paint material.
The custom paint material itself is a Material in UE4, which is set up in a specific way. Material variables can have an editable_
prefix in the name if you want the player to have access to it in the custom paint settings in-game. Variables and parameters also need to be input into the export user data
, contained within the material, for them to export correctly. Materials will not export correctly at all without this export user data
.
Workflow
- In UE4:
- Set up a mod.
- Create and fill out a
Custom Paint
file. - Create your Custom Paint material.
- Assign variables to the export user data.
- In the Automation Workshop Publishing Tool:
- Set up a workshop item.
- Share your mod.
Create your Custom Paint mod
Create A New Mod
After setting up the modding SDK from Here, create a new blank mod:
Create A Custom Paint File
In your mod content folder, right-click and add a new Custom Paint
file. This is the file the game uses to load the paint into the UI.
Open the Custom Paint file. It has a few parameters:
- Name - This will be the name of the paint as it will appear in-game.
- Material Instance - This is the actual paint itself. The material instance defines how the paint looks, what parameters are available, and how it looks when exported.
- GUID - This is an unique identifier for this custom paint. It is a random value. This is how the paint is stored and saved by the game.
- Family GUID - As above, this is an unique identifier. This one is currently un-used, but could in the future be used for storing what paints are part of the same family, if you decide to make several.
Create A Material
Right-click the content browser again, and create a new Material.
This is the actual shader: it defines how the paint looks.
Open the material. UE4 uses standard PBR Metallic-Roughness workflows. What this means is you define a material by giving it:
- a colour (0,0,0 - 1,1,1)
- telling it how rough it is (0 - 1, 0 being shiny)
- how metallic it is (0 - 1, 0 being plastic)
as well as a few additional things that help optimise parts of the rendering process, such as:
- a Normal map (this defines surface detail that would be too fine or complicated to be geometry)
- an Ambient Occlusion map (this helps darken and reduce reflections and specular highlighting on parts of the geometry that should be darker than usual, and which the lighting model cannot properly calculate)
- Opacity/Opacity Mask
- etc..
Material Requirements
Opacity
All Custom Paint materials must be set to Masked
, unless it is a transparent material.
Two nodes should be a part of the Opacity or Opacity Mask input. If your material does not have any transparent or masked info, these two nodes are still required.
If your material does have opacity information, simply add these two nodes at the end with a multiply:
Parameter Names
For parameters to appear in-game in the UI for the player to customize, it must have the editable_
prefix. Only Vector and Scalar parameters will appear in the UI. Vector parameters will always appear as a Colour Picker, and Scalar parameters will mostly always appear as a Slider. If a Scalar parameter also has the _Bool
suffix, it will instead appear as an Enable/Disable switch. A Vector parameter cannot have the _Bool
suffix.
Example parameters:
Note how in-game the Burn Colour
parameter isn't visible, and the Burned
parameter is an Enable/Disable toggle. This is because the Burn Colour parameter did not have the editable_
prefix, and the Burned parameter had the _Bool
suffix. Also note how the Scalar parameter appears as a slider, and the Vector parameter appears as a colour picker.
Export Material User Data
Export Material User Data main page
From the details panel of the material, expand the Material category, and from the Asset User Data array, add an Export Material User Data. This is where the values and parameters for the material are stored for the exporter. The exporter can only see the parameter names in the export user data. The exporter cannot know the layout of the parameters in the material, and cannot, therefore, know how to use those parameters. The export user data exists to simplify the parameters down to a known layout, such that the exporter can then line those values up with what the BeamNG material system uses, as well as other potential exporter plugins.
Note that the export user data only has access to a limited subset of behaviors for materials, and cannot do a lot of the fancy things that the UE4 material editor is capable of. It should, however, still be sufficient for most basic and intermediate-level materials.
Once you have fed your parameters into the export user data, your material should now export correctly.
Helper Functions For Materials
The following nodes and material functions will help you to make materials easier: