mesh fabrication

fabricating other objects

material slots

animation and fcurves

incorporating python libraries


shape keys

animating curve bevel


UV layers



video sequence editor (VSE)

images and textures

analytic geometry

node trees


__author__ = 'thoth'

# This is an attempt to catalog all the proper strings necessary to
# create all types of nodes used in cycles shaders.  The fact that
# the argument to is different than the resulting n.type
# is a puzzle and an embarrassment.
# Most are documented at
# but a few are missing from that page and demonstrated here (NodeReroute, NodeFrame).

# See also the blender source code:
# blender/release/scripts/startup/

import bpy

def tag_from_type(ntype):
    technique from
    return str(ntype).rsplit('.')[2][:-2]
def make_node_examples(parent_frame, nodes, tags, x):
    y = 0
    for tag in tags:
        n =
        n.location = (x, y)
        n.hide = True
#        n.width_hidden=60
        n.parent = parent_frame

        y -= 60

        tag2 = tag_from_type(type(n))
        if tag != tag2: # sanity check
            print([tag, n.type, tag2])

def node_with_type(nodes, type):
    for node in nodes:
        if node.type==type:
            return node
    return None

def make_all_cycles_nodes():

    tags_input = ["ShaderNodeTexCoord",

    name = "catalog"
    mat =
    if mat is None:
        mat =

    mat.use_nodes = True

    nodes = mat.node_tree.nodes
    for node in nodes:

    fr_input ="NodeFrame")
    fr_input.label = "Input nodes"

    make_node_examples(fr_input, nodes, tags_input, x)


    fr_output ="NodeFrame")
    fr_output.label = "Output nodes"

    make_node_examples(fr_output, nodes, ['ShaderNodeOutputMaterial',
                                          'ShaderNodeOutputLamp'], x)


    fr_shaders ="NodeFrame")
    fr_shaders.label = "Shader nodes"

    make_node_examples(fr_shaders, nodes, ['ShaderNodeMixShader',
                                           'ShaderNodeVolumeScatter'], x)


    fr_textures ="NodeFrame")
    fr_textures.label = "Texture nodes"

    make_node_examples(fr_textures, nodes, ['ShaderNodeTexImage',
    ], x)

    x += 300

    fr_color ="NodeFrame")
    fr_color.label = "Color nodes"

    make_node_examples(fr_color, nodes, [
    ], x)

    x += 200

    fr_vector ="NodeFrame")
    fr_vector.label = "Vector nodes"

    make_node_examples(fr_vector, nodes, [
    ], x)

    x += 200

    fr_converter ="NodeFrame")
    fr_converter.label = "Converter nodes"

    make_node_examples(fr_converter, nodes, [
    ], x)

    x += 200

    fr_script ="NodeFrame")
    fr_script.label = "Script"

    make_node_examples(fr_script, nodes, [
    ], x)

    x += 200

    fr_layout ="NodeFrame")
    fr_layout.label = "Layout"

    make_node_examples(fr_layout, nodes, [
    ], x)


    coords = node_with_type(nodes, 'TEX_COORD')
    img = node_with_type(nodes, 'TEX_IMAGE')
    emit = node_with_type(nodes, 'EMISSION')
    out = node_with_type(nodes, 'OUTPUT_MATERIAL')['UV'], img.inputs[0])[0], emit.inputs[0])[0], out.inputs[0])

    img.image =[0]

    return mat


obj = bpy.context.active_object[0] = make_all_cycles_nodes()

Blender python API quick-start

Syntax highlighting by Pygments.