Skip to content
Snippets Groups Projects
Commit dbcad37b authored by Fabio Russo's avatar Fabio Russo
Browse files

== Clay Render ==

Bug: Memory Overload resolved
Feature: When you disable addons the clay material is removed
parent 91fc6f07
Branches
Tags
No related merge requests found
...@@ -21,8 +21,9 @@ ...@@ -21,8 +21,9 @@
bl_addon_info = { bl_addon_info = {
"name": "Clay Render", "name": "Clay Render",
"author": "Fabio Russo <ruesp83@libero.it>", "author": "Fabio Russo <ruesp83@libero.it>",
"version": (0, 5), "version": (0, 7),
"blender": (2, 5, 5), "blender": (2, 5, 5),
"api": 33112,
"location": "Render > Clay Render", "location": "Render > Clay Render",
"description": "This script, applies a temporary material to all objects"\ "description": "This script, applies a temporary material to all objects"\
" of the scene.", " of the scene.",
...@@ -33,82 +34,76 @@ bl_addon_info = { ...@@ -33,82 +34,76 @@ bl_addon_info = {
"category": "Render"} "category": "Render"}
import bpy import bpy
from bpy.props import BoolProperty from bpy.props import BoolProperty
bpy.types.Scene.Clay = BoolProperty( def create_mat():
name='Clay Render', id = bpy.data.materials.new("Clay_Render")
description='Use Clay Render', #diffuse
default=False) id.diffuse_shader = "OREN_NAYAR"
id.diffuse_color = 0.800, 0.741, 0.536
id.diffuse_intensity = 1
def search(): id.roughness = 0.909
mats = bpy.data.materials #specular
Find = False id.specular_shader = "COOKTORR"
id = None id.specular_color = 1, 1, 1
for m in mats: id.specular_hardness = 10
if m.name == "Clay_Render": id.specular_intensity = 0.115
id = m
Find = True
break
return id return id
def create_mat(): class CheckClay(bpy.types.Operator):
id = search() bl_idname = "render.clay"
if id == None: bl_label = "Clay Render"
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
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() split = self.layout.split()
col.prop(id, "diffuse_color", text="") col = split.column()
self.layout.separator() col.operator(CheckClay.bl_idname, emboss=False, icon='CHECKBOX_HLT' \
App_Clay = context.scene.Clay if ok_clay else 'CHECKBOX_DEHLT')
if App_Clay: col = split.column()
rnl.material_override = id col.prop(im, "diffuse_color", text="")
col.active = True self.layout.separator()
else:
rnl.material_override = None
col.active = False
def register(): 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) bpy.types.RENDER_PT_render.prepend(draw_clay)
pass
def unregister(): def unregister():
global im
rnd = bpy.context.scene.render rnd = bpy.context.scene.render
rnl = rnd.layers.active rnl = rnd.layers.active
rnl.material_override = None rnl.material_override = None
bpy.data.materials.remove(im)
del bpy.types.Scene.Clay
bpy.types.RENDER_PT_render.remove(draw_clay) bpy.types.RENDER_PT_render.remove(draw_clay)
pass
if __name__ == "__main__": if __name__ == "__main__":
register() register()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment