diff --git a/render_clay.py b/render_clay.py index 3f046af87d940f955054093463e1566faf8a5618..f781ffcafb3fdeb6335ea6c099863c72e06f3df7 100644 --- a/render_clay.py +++ b/render_clay.py @@ -21,8 +21,9 @@ bl_addon_info = { "name": "Clay Render", "author": "Fabio Russo <ruesp83@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 @@ bl_addon_info = { "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 - - create_mat() - - split = layout.split() - col = split.column() - col.prop(sd, "Clay",) +def draw_clay(self, context): + global im + ok_clay = not bpy.types.Scene.Clay - col = split.column() + rnd = context.scene.render + rnl = rnd.layers.active + if im == None: + im = create_mat() - 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 + 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() 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()