[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [4712] contrib/py/scripts/addons/btrace : Added cycles support for color blender

Campbell Barton ideasman42 at gmail.com
Tue Sep 3 05:30:38 CEST 2013


Note, you can likely shortcut this...

r, g, b = mat_color[0], mat_color[1], mat_color[2]
Diffuse_BSDF.inputs[0].default_value = [r, g, b, 1]

with this...

Diffuse_BSDF.inputs[0].default_value = mat_color[0:3] + (1.0,)

assuming mat_color is a Color/Vector/rna_array/tuple.

On Sat, Aug 31, 2013 at 10:32 AM, Scott Wood <scott at thewooddesign.com> wrote:
> Revision: 4712
>           http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=4712
> Author:   crazycourier
> Date:     2013-08-31 00:32:33 +0000 (Sat, 31 Aug 2013)
> Log Message:
> -----------
> Added cycles support for color blender
>
> Modified Paths:
> --------------
>     contrib/py/scripts/addons/btrace/__init__.py
>     contrib/py/scripts/addons/btrace/bTrace.py
>
> Modified: contrib/py/scripts/addons/btrace/__init__.py
> ===================================================================
> --- contrib/py/scripts/addons/btrace/__init__.py        2013-08-30 20:40:57 UTC (rev 4711)
> +++ contrib/py/scripts/addons/btrace/__init__.py        2013-08-31 00:32:33 UTC (rev 4712)
> @@ -20,13 +20,12 @@
>      "name": "Btrace",
>      "author": "liero, crazycourier, Atom, Meta-Androcto, MacKracken",
>      "version": (1, 1, ),
> -    "blender": (2, 62, 0),
> +    "blender": (2, 68, 0),
>      "location": "View3D > Tools",
>      "description": "Tools for converting/animating objects/particles into curves",
>      "warning": "Still under development, bug reports appreciated",
> -    "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/Scripts/Curve/Btrace",
> -    "tracker_url": "https://projects.blender.org/tracker/index.php?"\
> -        "func=detail&aid=29563",
> +    "wiki_url": "",
> +    "tracker_url": "http://projects.blender.org/tracker/?func=detail&atid=468&aid=29563&group_id=153",
>      "category": "Add Curve"
>      }
>
>
> Modified: contrib/py/scripts/addons/btrace/bTrace.py
> ===================================================================
> --- contrib/py/scripts/addons/btrace/bTrace.py  2013-08-30 20:40:57 UTC (rev 4711)
> +++ contrib/py/scripts/addons/btrace/bTrace.py  2013-08-31 00:32:33 UTC (rev 4712)
> @@ -20,7 +20,7 @@
>      "name": "Btrace",
>      "author": "liero, crazycourier, Atom, Meta-Androcto, MacKracken",
>      "version": (1, 1, ),
> -    "blender": (2, 62, 0),
> +    "blender": (2, 68, 0),
>      "location": "View3D > Tools",
>      "description": "Tools for converting/animating objects/particles into curves",
>      "warning": "Still under development, bug reports appreciated",
> @@ -1213,11 +1213,6 @@
>  ###################################################################
>
>  def addtracemat(matobj):
> -    # Need to add cycles or BI render material options
> -    # if engine == 'CYCLES':
> -        # Add cycles mat
> -    # if engine == 'BLENDER_RENDER':
> -        # Add blender interal mat
>      matslots = bpy.context.object.data.materials.items()  # Check if a material exists, skip if it does
>      if len(matslots) < 1:  # Make sure there is only one material slot
>          engine = bpy.context.scene.render.engine
> @@ -1248,8 +1243,17 @@
>                  mat_color = Btrace.trace_mat_color
>              # mat_color = Btrace.trace_mat_color
>              TraceMat = bpy.data.materials.new('TraceMat')
> -            TraceMat.diffuse_color = mat_color
> -            TraceMat.specular_intensity = 0.5
> +            # add cycles or BI render material options
> +            if engine == 'CYCLES':
> +                TraceMat.use_nodes = True
> +                Diffuse_BSDF = TraceMat.node_tree.nodes['Diffuse BSDF']
> +                r, g, b = mat_color[0], mat_color[1], mat_color[2]
> +                Diffuse_BSDF.inputs[0].default_value = [r, g, b, 1]
> +                TraceMat.diffuse_color = mat_color
> +            else:
> +                TraceMat.diffuse_color = mat_color
> +                TraceMat.specular_intensity = 0.5
> +            # Add material to object
>              matobj.materials.append(bpy.data.materials.get(TraceMat.name))
>
>          else:  # Run color blender operator
> @@ -1281,49 +1285,102 @@
>          greenblueColors = [Btrace.greenblueColor1, Btrace.greenblueColor2, Btrace.greenblueColor3]
>
>          colorList = Btrace.mmColors
> +        engine = bpy.context.scene.render.engine
>
>          # Go through each selected object and run the operator
>          for i in colorObjects:
>              theObj = i
>              # Check to see if object has materials
>              checkMaterials = len(theObj.data.materials)
> -            if checkMaterials == 0:
> -                # Add a material
> +            if engine == 'CYCLES':
>                  materialName = "colorblendMaterial"
>                  madMat = bpy.data.materials.new(materialName)
> -                theObj.data.materials.append(madMat)
> -            else:
> -                pass # pass since we have what we need
> +                madMat.use_nodes = True
> +                if checkMaterials == 0:
> +                    theObj.data.materials.append(madMat)
> +                else:
> +                    theObj.material_slots[0].material = madMat
> +            else: # This is internal
> +                if checkMaterials == 0:
> +                    # Add a material
> +                    materialName = "colorblendMaterial"
> +                    madMat = bpy.data.materials.new(materialName)
> +                    theObj.data.materials.append(madMat)
> +                else:
> +                    pass # pass since we have what we need
> +                # assign the first material of the object to "mat"
> +                madMat = theObj.data.materials[0]
>
> -            # assign the first material of the object to "mat"
> -            mat = theObj.data.materials[0]
>
>              # Numbers of frames to skip between keyframes
>              skip = Btrace.mmSkip
>
> +
>              # Random material function
>              def colorblenderRandom():
> -                for crazyNumber in range(3):
> -                    mat.diffuse_color[crazyNumber] = random.random()
> +                randomRGB = (random.random(), random.random(), random.random())
> +                if engine == 'CYCLES':
> +                    Diffuse_BSDF = madMat.node_tree.nodes['Diffuse BSDF']
> +                    mat_color = randomRGB
> +                    r, g, b = mat_color[0], mat_color[1], mat_color[2]
> +                    Diffuse_BSDF.inputs[0].default_value = [r, g, b, 1]
> +                    madMat.diffuse_color = mat_color
> +                else:
> +                    madMat.diffuse_color = randomRGB
>
>              def colorblenderCustom():
> -                mat.diffuse_color = random.choice(customColors)
> +                if engine == 'CYCLES':
> +                    Diffuse_BSDF = madMat.node_tree.nodes['Diffuse BSDF']
> +                    mat_color = random.choice(customColors)
> +                    r, g, b = mat_color[0], mat_color[1], mat_color[2]
> +                    Diffuse_BSDF.inputs[0].default_value = [r, g, b, 1]
> +                    madMat.diffuse_color = mat_color
> +                else:
> +                    madMat.diffuse_color = random.choice(customColors)
>
>              # Black and white color
>              def colorblenderBW():
> -                mat.diffuse_color = random.choice(bwColors)
> +                if engine == 'CYCLES':
> +                    Diffuse_BSDF = madMat.node_tree.nodes['Diffuse BSDF']
> +                    mat_color = random.choice(bwColors)
> +                    r, g, b = mat_color[0], mat_color[1], mat_color[2]
> +                    Diffuse_BSDF.inputs[0].default_value = [r, g, b, 1]
> +                    madMat.diffuse_color = mat_color
> +                else:
> +                    madMat.diffuse_color = random.choice(bwColors)
>
>              # Bright colors
>              def colorblenderBright():
> -                mat.diffuse_color = random.choice(brightColors)
> +                if engine == 'CYCLES':
> +                    Diffuse_BSDF = madMat.node_tree.nodes['Diffuse BSDF']
> +                    mat_color = random.choice(brightColors)
> +                    r, g, b = mat_color[0], mat_color[1], mat_color[2]
> +                    Diffuse_BSDF.inputs[0].default_value = [r, g, b, 1]
> +                    madMat.diffuse_color = mat_color
> +                else:
> +                    madMat.diffuse_color = random.choice(brightColors)
>
>              # Earth Tones
>              def colorblenderEarth():
> -                mat.diffuse_color = random.choice(earthColors)
> +                if engine == 'CYCLES':
> +                    Diffuse_BSDF = madMat.node_tree.nodes['Diffuse BSDF']
> +                    mat_color = random.choice(earthColors)
> +                    r, g, b = mat_color[0], mat_color[1], mat_color[2]
> +                    Diffuse_BSDF.inputs[0].default_value = [r, g, b, 1]
> +                    madMat.diffuse_color = mat_color
> +                else:
> +                    madMat.diffuse_color = random.choice(earthColors)
>
>              # Green to Blue Tones
>              def colorblenderGreenBlue():
> -                mat.diffuse_color = random.choice(greenblueColors)
> +                if engine == 'CYCLES':
> +                    Diffuse_BSDF = madMat.node_tree.nodes['Diffuse BSDF']
> +                    mat_color = random.choice(greenblueColors)
> +                    r, g, b = mat_color[0], mat_color[1], mat_color[2]
> +                    Diffuse_BSDF.inputs[0].default_value = [r, g, b, 1]
> +                    madMat.diffuse_color = mat_color
> +                else:
> +                    madMat.diffuse_color = random.choice(greenblueColors)
>
>              # define frame start/end variables
>              scn = bpy.context.scene
> @@ -1351,7 +1408,11 @@
>                      pass
>
>                  # Add keyframe to material
> -                mat.keyframe_insert('diffuse_color')
> +                if engine == 'CYCLES':
> +                    madMat.node_tree.nodes['Diffuse BSDF'].inputs[0].keyframe_insert('default_value')
> +                    madMat.keyframe_insert('diffuse_color') # not sure if this is need, it's viewport color only
> +                else:
> +                    madMat.keyframe_insert('diffuse_color')
>
>                  # Increase frame number
>                  start += skip
>
> _______________________________________________
> Bf-extensions-cvs mailing list
> Bf-extensions-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-extensions-cvs



-- 
- Campbell


More information about the Bf-extensions-cvs mailing list