Dynamic Vehicle Paint Pipeline
Pipeline Summary
This pipeline supports per-vehicle, modular, dynamic carpaint assignment
The dynamic vehicle paint pipeline was implemented in C++
Overview of system
-
Vehicle meshes are labeled with Material Slots. Instead of applying a static material to these meshes, we custom define the material type and hex color for material slots in DT_VehiclePaint
-
DT_VehiclePaint stores vehicle-specific paint configurations
-
VehicleMaterialComponent dynamically applies vehicle paint at runtime
DT_VehiclePaint
DataTable that stores paint configuration
Each row stores paint config information for a specific vehicle model
-
For each vehicle model, we can define different paints
-
For example, in the photo the vehicle has two paint defined: "everest_white_pearl", "coulis_red_pearl"
-
-
For each vehicle paint, we can define the material type (gloss, matte, etc) and the hex color for each material_slot_name
For example, for this vehicle red paint it's defined that:
MI_CarPaint_Primary : MI_CarPaint_Gloss + red
MI_CarPaint_Secondary : MI_CarPaint_Gloss + black

Dynamically applying vehicle paint
Each Vehicle has a config file locally that stores vehicle paint information.
-
For example, a white model would have "everest_white_pearl" as the paint color string
VehicleMaterialComponent calls ApplyCarPaint():
-
Reads paint color string from config file
-
Looks up the model's row in DT_VehiclePaint
-
Finds the vehicle paint color entry within the row to get per-slot paint config (SlotMaterial + SlotColor)
-
For each slot: loads the base material, creates a DMI, sets BaseColor parameter from SlotColor, and applies it to all matching meshes
Below is pseudo code that demonstrates the overall logic




