[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1198] contrib/py/scripts/addons/ render_clay.py: == Clay Render ==

Fabio Russo ruesp83 at libero.it
Thu Nov 25 13:37:40 CET 2010


Revision: 1198
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-extensions&revision=1198
Author:   ruesp83
Date:     2010-11-25 13:37:40 +0100 (Thu, 25 Nov 2010)

Log Message:
-----------
== Clay Render ==
Bug: Memory Overload resolved
Feature: When you disable addons the clay material is removed

Modified Paths:
--------------
    contrib/py/scripts/addons/render_clay.py

Modified: contrib/py/scripts/addons/render_clay.py
===================================================================
--- contrib/py/scripts/addons/render_clay.py	2010-11-24 16:26:31 UTC (rev 1197)
+++ contrib/py/scripts/addons/render_clay.py	2010-11-25 12:37:40 UTC (rev 1198)
@@ -21,8 +21,9 @@
 bl_addon_info = {
     "name": "Clay Render",
     "author": "Fabio Russo <ruesp83 at libero.it>",
-    "version": (0, 5),
+    "version": (0, 7),
     "blender": (2, 5, 5),
+    "api": 33112,
     "location": "Render > Clay Render",
     "description": "This script, applies a temporary material to all objects"\
         " of the scene.",
@@ -33,82 +34,76 @@
     "category": "Render"}
 
 import bpy
-
 from bpy.props import BoolProperty
 
 
-bpy.types.Scene.Clay = BoolProperty(
-    name='Clay Render',
-    description='Use Clay Render',
-    default=False)
-
-
-def search():
-    mats = bpy.data.materials
-    Find = False
-    id = None
-    for m in mats:
-        if m.name == "Clay_Render":
-            id = m
-            Find = True
-            break
+def create_mat():
+    id = bpy.data.materials.new("Clay_Render")
+    #diffuse
+    id.diffuse_shader = "OREN_NAYAR"
+    id.diffuse_color = 0.800, 0.741, 0.536
+    id.diffuse_intensity = 1
+    id.roughness = 0.909
+    #specular
+    id.specular_shader = "COOKTORR"
+    id.specular_color = 1, 1, 1
+    id.specular_hardness = 10
+    id.specular_intensity = 0.115
     return id
 
 
-def create_mat():
-    id = search()
-    if id == None:
-        id = bpy.data.materials.new("Clay_Render")
-        #diffuse
-        id.diffuse_shader = "OREN_NAYAR"
-        id.diffuse_color = 0.800, 0.741, 0.536
-        id.diffuse_intensity = 1
-        id.roughness = 0.909
-        #specular
-        id.specular_shader = "COOKTORR"
-        id.specular_color = 1, 1, 1
-        id.specular_hardness = 10
-        id.specular_intensity = 0.115
+class CheckClay(bpy.types.Operator):
+    bl_idname = "render.clay"
+    bl_label = "Clay Render"
 
+    def execute(self, context):
+        global im
+        if bpy.types.Scene.Clay:
+            context.scene.render.layers.active.material_override = im
+            bpy.types.Scene.Clay = False
+        else:
+            context.scene.render.layers.active.material_override = None
+            bpy.types.Scene.Clay = True
+        return {'FINISHED'}
 
+
 def draw_clay(self, context):
-        layout = self.layout
-        sd = context.scene
-        rnd = context.scene.render
-        rnl = rnd.layers.active
+    global im
+    ok_clay = not bpy.types.Scene.Clay
 
-        create_mat()
+    rnd = context.scene.render
+    rnl = rnd.layers.active
+    if im == None:
+        im = create_mat()
 
-        split = layout.split()
-        col = split.column()
+    split = self.layout.split()
+    col = split.column()
+    col.operator(CheckClay.bl_idname, emboss=False, icon='CHECKBOX_HLT' \
+    if ok_clay else 'CHECKBOX_DEHLT')
+    col = split.column()
+    col.prop(im, "diffuse_color", text="")
+    self.layout.separator()
 
-        col.prop(sd, "Clay",)
 
-        col = split.column()
-
-        id = search()
-        col.prop(id, "diffuse_color", text="")
-        self.layout.separator()
-        App_Clay = context.scene.Clay
-        if App_Clay:
-            rnl.material_override = id
-            col.active = True
-        else:
-            rnl.material_override = None
-            col.active = False
-
-
 def register():
+    global im
+    bpy.types.Scene.Clay = BoolProperty(
+    name='Clay Render',
+    description='Use Clay Render',
+    default=False)
+    im = None
     bpy.types.RENDER_PT_render.prepend(draw_clay)
-    pass
 
 
 def unregister():
+    global im
     rnd = bpy.context.scene.render
     rnl = rnd.layers.active
     rnl.material_override = None
+    bpy.data.materials.remove(im)
+    del bpy.types.Scene.Clay
     bpy.types.RENDER_PT_render.remove(draw_clay)
-    pass
 
+
 if __name__ == "__main__":
     register()




More information about the Bf-extensions-cvs mailing list