Use ID properties in cycles/nodes I am having a mesh. Every face has a ID. There is also a python dictionary where the IDs are mapped to a RGB value (or something else, which can map ID -> RGB. I am just thinking theoretically).

Now I want to have a node setup which colors the surface of the mesh dependent of the RGB value (I am also using these node groups (https://jtheninja.wordpress.com/2015/02/08/simple-pbr-v2/) because I want to see it with pbr values. Later I also want to have values for roughess and metallic for each face).

I am unsure which of the following node-types I should use for that:


Attribute Node (has output for color)
value Node (has output for floats, so I would need three value nodes and make a color-vector out of it?)
Script Node (Only for Open-Shading-Language scripts, am I right? Shouldn't help)


I need a node type which could access the ID Properties of the current object. I also need a node which also "knows" the face it is currently working and gets the face-id.

Any advice? Thanks!
You can store the face ID as a vertex color o each face then read the vertex color using the Attribute node.
This script will create a vertex color layer and store the face index as color :

import bpy

obj = bpy.context.object
obj_data = obj.data
group_name = 'face_ID'

#check for existing group with the same name
if None == obj_data.vertex_colors.get(group_name): 
    obj_data.vertex_colors.new(name=group_name)
color_map =  obj_data.vertex_colors[group_name]

#get faces' number 
count = len(obj_data.polygons)

for poly in obj_data.polygons:

    ID = poly.index / count  #for normalized results
    color = (ID, ID, ID)
    for loop_ind in poly.loop_indices:
        color_map.data[loop_ind].color = color