reading / changing vertex color


I’m in the process of understanding python code in Blender 2.5 and I’m sorry if this question has an obvious answer. I’ve spent hours searching the net and poking in the Blender console, browsing through object properties and stuff with no avail.

How can I get a vertex’ current color, how can I change it?

Thank you.


vertices can have one vertex colour per face…

you access the face then the vertex colours for the vertices of that face…

here’s a quick example for inverting vertex colours on a selection:

    from Blender import Mesh, Object
    for ob in Object.GetSelected():
        if ob.getType() == 'Mesh':
            me = ob.getData(mesh=1)
            for f in me.faces:

                if f.sel:
                    for c in f.col:

                        c.r = 255 - c.r
                        c.g = 255 - c.g
                        c.b = 255 - c.b

Thanks! I had no idea vertex colours were part of the face.

Nevertheless, why do I get: “Import Error : no Module named Blender” for line 1?

Also, in the console, I can’t find the “col” property in faces:

>>> dir([0].col)
Traceback (most recent call last):
File “<console>”, line 1, in <module>
AttributeError: ‘MeshFace’ object has no attribute ‘col’

>>> dir([0])
[‘BoolProperty’, ‘CollectionProperty’, ‘EnumProperty’, ‘FloatProperty’, ‘IntProperty’, ‘PointerProperty’, ‘StringProperty’, ‘dict’, ‘doc’, ‘module’, ‘weakref’, ‘area’, ‘bl_rna’, ‘edge_keys’, ‘hidden’, ‘id_data’, ‘index’, ‘material_index’, ‘normal’, ‘rna_type’, ‘selected’, ‘smooth’, ‘verts’, ‘verts_raw’]

BTW, I’m usin 2.5 first alpha.



Ahh, there is no Blender module in 2.5!

hoe about:

import bpy

for ob in bpy.context.selected_editable_objects:
    if ob.type =='MESH':
        me =
        for f in me.faces:
                if f.sel:
                         for c in f.col:
                             c.r = 255 - c.r
                             c.g = 255 - c.g
                             c.b = 255 - c.b

…as for the other issue, it may not be do-able yet or it may be accessed from the mesh itself;
not sure!


"AttributeError: ‘MeshFace’ object has no attribute ‘col’.

Perhaps this is not yet accessible from python?

Thanks again.


Hi, the following code may be helpful. It assigns a colour to all the currently selected verts of a specific mesh…

import bpy
import random

def colourVertex(object, vertex, colour, layer=0):
    """vertex of type MeshVertex, colour a 3-tuple, layer the vertex color layer (must exist)"""
    # get (faceindex,vertindex) for each vert
    fv_pairs = []
    for f in
            fv_pairs.append((f.index, list(f.verts).index(vertex.index)))
        except ValueError:

    # finally assign colour to the appropriate fields in vertex_colors
    for (f,v) in fv_pairs:
        mesh_colour =[layer].data[f]
        c = {0:mesh_colour.color1,1:mesh_colour.color2,2:mesh_colour.color3,3:mesh_colour.color4}[v]
        for i in range(3):
          c[i] = colour[i]

obj =["Mesh"]
for v in
    if v.selected: