You can loop over every vertex after initializing different arrays for each of your vertex color layers. You can parse the init data from a file (eg .csv) with python but this is not covered in this answer. import bpy import bmesh obj = bpy.context.selected_objects[0] # Get the currently selected object vertex_colors = obj.data.vertex_colors while vertex_colors: vertex_colors.remove(vertex_colors[0]) # Remove all vertex color layers form the mesh data bm = bmesh.new() # Create new bmesh object bm.from_mesh(obj.data) # Init the bmesh with the current mesh verts_count = len(bm.verts) # Get the number of vertices in the mesh # Not obligatory, I just use this to populate the vertex color layers) # This dictionary will map each vertex color layer name to the data for each vertex data_layers = { 'Temperature': # vertex color layer name 1 [ (1, 0, 0, 1), # Color of vertex index 0 (0, 1, 0, 1), # Color of vertex index 1 (0, 0, 1, 1), # Color of vertex index 2 (1, 1, 1, 1), # Color of vertex index 3... ], 'Velocity': # vertex color layer name 2 [(i / verts_count, i / verts_count, i / verts_count, 1) for i in range(verts_count)], 'Salinity': # vertex color layer name 3 [(i / verts_count, 1 - (i / verts_count), 0.5, 1) for i in range(verts_count)], } color_layers = {} for layer_name in data_layers: # Create the vertex color layers and store them in a dictionary for easy access by name color_layers[layer_name] = bm.loops.layers.color.new(layer_name) for layer_name, layer in color_layers.items(): # Loop over each vertex color layer for v in bm.verts: # Loop over every vertex for loop in v.link_loops: # Loop over every loop of this vertex (the corners of the faces in which this vertex exists) try: loop[layer] = data_layers[layer_name][v.index] # Get the value from the init dictionary except IndexError: loop[layer] = (1, 0, 1, 1) # Set a placeholder (magenta) value if the mapping array is not long enough bm.to_mesh(obj.data) # Give the data back to the actual mesh Then to acces the vertex colors in your material, use the vertex color node : [![enter image description here][1]][1] Note that the "Temperature" layer was initialized with only 4 values, so only a few vertices in the right eye got colored and the rest of the vertices got mapped to a magenta color. Also note that you can store 4 values in each of the 4 channels of your color. Example with the 'Velocity' vertex color layer used before : [![enter image description here][2]][2] [1]: https://i.sstatic.net/MrE1Z.gif [2]: https://i.sstatic.net/3LL7f.png