top of page
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

image 6.png
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

Screenshot 2026-05-29 223809.png
  • LinkedIn
  • Instagram
bottom of page