diff options
Diffstat (limited to 'release/ui/buttons_material.py')
-rw-r--r-- | release/ui/buttons_material.py | 371 |
1 files changed, 107 insertions, 264 deletions
diff --git a/release/ui/buttons_material.py b/release/ui/buttons_material.py index dc11731d7a9..b971a678926 100644 --- a/release/ui/buttons_material.py +++ b/release/ui/buttons_material.py @@ -2,22 +2,24 @@ import bpy class MaterialButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' + __space_type__ = "PROPERTIES" + __region_type__ = "WINDOW" __context__ = "material" # COMPAT_ENGINES must be defined in each subclass, external engines can add themselves here def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (engine in self.COMPAT_ENGINES) + return (context.material) and (context.scene.render_data.engine in self.COMPAT_ENGINES) class MATERIAL_PT_preview(MaterialButtonsPanel): __label__ = "Preview" COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) def draw(self, context): - self.layout.template_preview(context.material) + layout = self.layout + + mat = context.material + + layout.template_preview(mat) class MATERIAL_PT_context_material(MaterialButtonsPanel): __show_header__ = False @@ -27,8 +29,7 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): # An exception, dont call the parent poll func because # this manages materials for all engine types - engine = context.scene.render_data.engine - return (context.object) and (engine in self.COMPAT_ENGINES) + return (context.object) and (context.scene.render_data.engine in self.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -44,10 +45,10 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel): row.template_list(ob, "materials", ob, "active_material_index", rows=2) col = row.column(align=True) - col.itemO("object.material_slot_add", icon='ICON_ZOOMIN', text="") - col.itemO("object.material_slot_remove", icon='ICON_ZOOMOUT', text="") + col.itemO("object.material_slot_add", icon="ICON_ZOOMIN", text="") + col.itemO("object.material_slot_remove", icon="ICON_ZOOMOUT", text="") - if ob.mode == 'EDIT': + if context.edit_object: row = layout.row(align=True) row.itemO("object.material_slot_assign", text="Assign") row.itemO("object.material_slot_select", text="Select") @@ -72,36 +73,34 @@ class MATERIAL_PT_shading(MaterialButtonsPanel): __label__ = "Shading" COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in self.COMPAT_ENGINES) - def draw(self, context): layout = self.layout mat = context.material + ob = context.object + slot = context.material_slot + space = context.space_data - if mat.type in ('SURFACE', 'WIRE'): - split = layout.split() + if mat: + + if mat.type in ('SURFACE', 'WIRE', 'VOLUME'): + split = layout.split() - col = split.column() - sub = col.column() - sub.active = not mat.shadeless - sub.itemR(mat, "emit") - sub.itemR(mat, "ambient") - sub = col.column() - sub.itemR(mat, "translucency") + col = split.column() + col.active = not mat.shadeless + col.itemR(mat, "ambient") + col.itemR(mat, "emit") + col.itemR(mat, "translucency") - col = split.column() - col.itemR(mat, "shadeless") - sub = col.column() - sub.active = not mat.shadeless - sub.itemR(mat, "tangent_shading") - sub.itemR(mat, "cubic") + col = split.column() + col.itemR(mat, "shadeless") + sub = col.column() + sub.active = not mat.shadeless + sub.itemR(mat, "tangent_shading") + sub.itemR(mat, "cubic") - elif mat.type == 'HALO': - layout.itemR(mat, "alpha") + elif mat.type == 'HALO': + layout.itemR(mat, "alpha") class MATERIAL_PT_strand(MaterialButtonsPanel): __label__ = "Strand" @@ -110,8 +109,7 @@ class MATERIAL_PT_strand(MaterialButtonsPanel): def poll(self, context): mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in self.COMPAT_ENGINES) + return mat and (mat.type in ('SURFACE', 'WIRE')) and (context.scene.render_data.engine in self.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -121,22 +119,20 @@ class MATERIAL_PT_strand(MaterialButtonsPanel): split = layout.split() - col = split.column(align=True) + col = split.column() col.itemL(text="Size:") - col.itemR(tan, "root_size", text="Root") - col.itemR(tan, "tip_size", text="Tip") + col.itemR(tan, "start_size", text="Root") + col.itemR(tan, "end_size", text="Tip") col.itemR(tan, "min_size", text="Minimum") col.itemR(tan, "blender_units") sub = col.column() sub.active = (not mat.shadeless) sub.itemR(tan, "tangent_shading") - col.itemR(tan, "shape") col = split.column() - col.itemL(text="Shading:") + col.itemR(tan, "shape") col.itemR(tan, "width_fade") col.itemR(tan, "uv_layer") - col.itemS() sub = col.column() sub.active = (not mat.shadeless) sub.itemR(tan, "surface_diffuse") @@ -151,7 +147,8 @@ class MATERIAL_PT_physics(MaterialButtonsPanel): def draw(self, context): layout = self.layout - phys = context.material.physics + mat = context.material + phys = mat.physics split = layout.split() @@ -169,11 +166,6 @@ class MATERIAL_PT_options(MaterialButtonsPanel): __label__ = "Options" COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in self.COMPAT_ENGINES) - def draw(self, context): layout = self.layout @@ -208,11 +200,6 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel): __label__ = "Shadow" __default_closed__ = True COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) - - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -223,7 +210,7 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel): col = split.column() col.itemR(mat, "shadows", text="Receive") - col.itemR(mat, "receive_transparent_shadows", text="Receive Transparent") + col.itemR(mat, "transparent_shadows", text="Receive Transparent") col.itemR(mat, "only_shadow", text="Shadows Only") col.itemR(mat, "cast_shadows_only", text="Cast Only") col.itemR(mat, "shadow_casting_alpha", text="Casting Alpha") @@ -237,6 +224,7 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel): sub = col.column() sub.active = (not mat.ray_shadow_bias) sub.itemR(mat, "shadow_ray_bias", text="Ray Bias") + class MATERIAL_PT_diffuse(MaterialButtonsPanel): __label__ = "Diffuse" @@ -244,8 +232,7 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel): def poll(self, context): mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + return mat and (mat.type != 'HALO') and (context.scene.render_data.engine in self.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -258,7 +245,7 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel): col.itemR(mat, "diffuse_color", text="") sub = col.column() sub.active = (not mat.shadeless) - sub.itemR(mat, "diffuse_intensity", text="Intensity") + sub.itemR(mat, "diffuse_reflection", text="Intensity") col = split.column() col.active = (not mat.shadeless) @@ -291,15 +278,15 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel): split = row.split(percentage=0.3) split.itemL(text="Blend:") split.itemR(mat, "diffuse_ramp_blend", text="") - + + class MATERIAL_PT_specular(MaterialButtonsPanel): __label__ = "Specular" COMPAT_ENGINES = set(['BLENDER_RENDER', 'BLENDER_GAME']) def poll(self, context): mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + return mat and (mat.type != 'HALO') and (context.scene.render_data.engine in self.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -312,7 +299,7 @@ class MATERIAL_PT_specular(MaterialButtonsPanel): col = split.column() col.itemR(mat, "specular_color", text="") - col.itemR(mat, "specular_intensity", text="Intensity") + col.itemR(mat, "specular_reflection", text="Intensity") col = split.column() col.itemR(mat, "specular_shader", text="") @@ -351,15 +338,13 @@ class MATERIAL_PT_sss(MaterialButtonsPanel): def poll(self, context): mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + return mat and (mat.type in ('SURFACE', 'WIRE')) and (context.scene.render_data.engine in self.COMPAT_ENGINES) def draw_header(self, context): + layout = self.layout sss = context.material.subsurface_scattering - mat = context.material - - self.layout.active = (not mat.shadeless) - self.layout.itemR(sss, "enabled", text="") + + layout.itemR(sss, "enabled", text="") def draw(self, context): layout = self.layout @@ -372,22 +357,21 @@ class MATERIAL_PT_sss(MaterialButtonsPanel): split = layout.split() split.active = (not mat.shadeless) - col = split.column() - col.itemR(sss, "ior") - col.itemR(sss, "scale") + col = split.column(align=True) col.itemR(sss, "color", text="") - col.itemR(sss, "radius", text="RGB Radius") + col.itemL(text="Blend:") + col.itemR(sss, "color_factor", text="Color") + col.itemR(sss, "texture_factor", text="Texture") + col.itemL(text="Scattering Weight:") + col.itemR(sss, "front") + col.itemR(sss, "back") col = split.column() sub = col.column(align=True) - sub.itemL(text="Blend:") - sub.itemR(sss, "color_factor", text="Color") - sub.itemR(sss, "texture_factor", text="Texture") - sub.itemL(text="Scattering Weight:") - sub.itemR(sss, "front") - sub.itemR(sss, "back") - col.itemS() - col.itemR(sss, "error_tolerance", text="Error") + sub.itemR(sss, "ior") + sub.itemR(sss, "scale") + col.itemR(sss, "radius", text="RGB Radius") + col.itemR(sss, "error_tolerance") class MATERIAL_PT_mirror(MaterialButtonsPanel): __label__ = "Mirror" @@ -396,13 +380,14 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel): def poll(self, context): mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + return mat and (mat.type in ('SURFACE', 'WIRE')) and (context.scene.render_data.engine in self.COMPAT_ENGINES) - def draw_header(self, context): + def draw_header(self, context): + layout = self.layout + raym = context.material.raytrace_mirror - self.layout.itemR(raym, "enabled", text="") + layout.itemR(raym, "enabled", text="") def draw(self, context): layout = self.layout @@ -415,35 +400,31 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel): split = layout.split() col = split.column() - col.itemR(raym, "reflect_factor") + col.itemR(raym, "reflect", text="Reflectivity") col.itemR(mat, "mirror_color", text="") - - col = split.column() - col.itemR(raym, "fresnel") + col.itemL(text="Fresnel:") + col.itemR(raym, "fresnel", text="Amount") sub = col.column() sub.active = raym.fresnel > 0 sub.itemR(raym, "fresnel_factor", text="Blend") - - split = layout.split() - - col = split.column() col.itemS() - col.itemR(raym, "distance", text="Max Dist") - col.itemR(raym, "depth") col.itemS() sub = col.split(percentage=0.4) sub.itemL(text="Fade To:") sub.itemR(raym, "fade_to", text="") col = split.column() + col.itemR(raym, "depth") + col.itemR(raym, "distance", text="Max Dist") col.itemL(text="Gloss:") - col.itemR(raym, "gloss_factor", text="Amount") + col.itemR(raym, "gloss", text="Amount") sub = col.column() - sub.active = raym.gloss_factor < 1.0 + sub.active = raym.gloss < 1 sub.itemR(raym, "gloss_threshold", text="Threshold") sub.itemR(raym, "gloss_samples", text="Samples") sub.itemR(raym, "gloss_anisotropic", text="Anisotropic") - + + class MATERIAL_PT_transp(MaterialButtonsPanel): __label__= "Transparency" __default_closed__ = True @@ -451,12 +432,13 @@ class MATERIAL_PT_transp(MaterialButtonsPanel): def poll(self, context): mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in self.COMPAT_ENGINES) + return mat and (mat.type in ('SURFACE', 'WIRE')) and (context.scene.render_data.engine in self.COMPAT_ENGINES) - def draw_header(self, context): + def draw_header(self, context): + layout = self.layout + mat = context.material - self.layout.itemR(mat, "transparency", text="") + layout.itemR(mat, "transparency", text="") def draw(self, context): layout = self.layout @@ -464,29 +446,32 @@ class MATERIAL_PT_transp(MaterialButtonsPanel): mat = context.material rayt = context.material.raytrace_transparency - row = layout.row() - row.active = mat.transparency and (not mat.shadeless) + row= layout.row() row.itemR(mat, "transparency_method", expand=True) + row.active = mat.transparency and (not mat.shadeless) split = layout.split() col = split.column() - col.itemR(mat, "alpha") + col.itemL(text="Transparency:") + row = col.row() + row.itemR(mat, "alpha") + row.active = mat.transparency row = col.row() - row.active = mat.transparency and (not mat.shadeless) row.itemR(mat, "specular_alpha", text="Specular") - + row.active = mat.transparency and (not mat.shadeless) + col = split.column() - col.active = (not mat.shadeless) - col.itemR(rayt, "fresnel") + col.active = mat.transparency and (not mat.shadeless) + col.itemL(text="Fresnel:") + col.itemR(rayt, "fresnel", text="Amount") sub = col.column() sub.active = rayt.fresnel > 0 sub.itemR(rayt, "fresnel_factor", text="Blend") if mat.transparency_method == 'RAYTRACE': - layout.itemS() split = layout.split() - split.active = mat.transparency + split.active = mat.transparency and (not mat.shadeless) col = split.column() col.itemR(rayt, "ior") @@ -497,20 +482,19 @@ class MATERIAL_PT_transp(MaterialButtonsPanel): col = split.column() col.itemL(text="Gloss:") - col.itemR(rayt, "gloss_factor", text="Amount") + col.itemR(rayt, "gloss", text="Amount") sub = col.column() - sub.active = rayt.gloss_factor < 1.0 + sub.active = rayt.gloss < 1 sub.itemR(rayt, "gloss_threshold", text="Threshold") sub.itemR(rayt, "gloss_samples", text="Samples") - + class MATERIAL_PT_halo(MaterialButtonsPanel): __label__= "Halo" COMPAT_ENGINES = set(['BLENDER_RENDER']) def poll(self, context): mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type == 'HALO') and (engine in self.COMPAT_ENGINES) + return mat and (mat.type == 'HALO') and (context.scene.render_data.engine in self.COMPAT_ENGINES) def draw(self, context): layout = self.layout @@ -526,8 +510,8 @@ class MATERIAL_PT_halo(MaterialButtonsPanel): col.itemR(halo, "hardness") col.itemR(halo, "add") col.itemL(text="Options:") - col.itemR(halo, "texture") - col.itemR(halo, "vertex_normal") + col.itemR(halo, "use_texture", text="Texture") + col.itemR(halo, "use_vertex_normal", text="Vertex Normal") col.itemR(halo, "xalpha") col.itemR(halo, "shaded") col.itemR(halo, "soft") @@ -538,52 +522,24 @@ class MATERIAL_PT_halo(MaterialButtonsPanel): sub.active = halo.ring sub.itemR(halo, "rings") sub.itemR(mat, "mirror_color", text="") - col.itemS() col.itemR(halo, "lines") sub = col.column() sub.active = halo.lines sub.itemR(halo, "line_number", text="Lines") sub.itemR(mat, "specular_color", text="") - col.itemS() col.itemR(halo, "star") sub = col.column() sub.active = halo.star sub.itemR(halo, "star_tips") - -class MATERIAL_PT_flare(MaterialButtonsPanel): - __label__= "Flare" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type == 'HALO') and (engine in self.COMPAT_ENGINES) - - def draw_header(self, context): - layout = self.layout - - mat = context.material - halo = mat.halo - layout.itemR(halo, "flare_mode", text="") - - def draw(self, context): - layout = self.layout - - mat = context.material - halo = mat.halo + col.itemR(halo, "flare_mode") + sub = col.column() + sub.active = halo.flare_mode + sub.itemR(halo, "flare_size", text="Size") + sub.itemR(halo, "flare_subsize", text="Subsize") + sub.itemR(halo, "flare_boost", text="Boost") + sub.itemR(halo, "flare_seed", text="Seed") + sub.itemR(halo, "flares_sub", text="Sub") - layout.active = halo.flare_mode - - split = layout.split() - - col = split.column() - col.itemR(halo, "flare_size", text="Size") - col.itemR(halo, "flare_boost", text="Boost") - col.itemR(halo, "flare_seed", text="Seed") - col = split.column() - col.itemR(halo, "flares_sub", text="Subflares") - col.itemR(halo, "flare_subsize", text="Subsize") - bpy.types.register(MATERIAL_PT_context_material) bpy.types.register(MATERIAL_PT_preview) bpy.types.register(MATERIAL_PT_diffuse) @@ -593,121 +549,8 @@ bpy.types.register(MATERIAL_PT_transp) bpy.types.register(MATERIAL_PT_mirror) bpy.types.register(MATERIAL_PT_sss) bpy.types.register(MATERIAL_PT_halo) -bpy.types.register(MATERIAL_PT_flare) bpy.types.register(MATERIAL_PT_physics) bpy.types.register(MATERIAL_PT_strand) bpy.types.register(MATERIAL_PT_options) bpy.types.register(MATERIAL_PT_shadow) -# Volumetrics -class VolumeButtonsPanel(bpy.types.Panel): - __space_type__ = 'PROPERTIES' - __region_type__ = 'WINDOW' - __context__ = "material" - - def poll(self, context): - mat = context.material - engine = context.scene.render_data.engine - return mat and (mat.type == 'VOLUME') and (engine in self.COMPAT_ENGINES) - -class MATERIAL_PT_volume_shading(VolumeButtonsPanel): - __label__ = "Shading" - __default_closed__ = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - mat = context.material - vol = context.material.volume - - row = layout.row() - row.itemR(vol, "density") - row.itemR(vol, "scattering") - - split = layout.split() - - col = split.column() - col.itemR(vol, "absorption") - col.itemR(vol, "absorption_color", text="") - - col = split.column() - col.itemR(vol, "emission") - col.itemR(vol, "emission_color", text="") - -class MATERIAL_PT_volume_scattering(VolumeButtonsPanel): - __label__ = "Scattering" - __default_closed__ = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - vol = context.material.volume - - split = layout.split() - - col = split.column() - col.itemR(vol, "scattering_mode", text="") - if vol.scattering_mode == 'SINGLE_SCATTERING': - col.itemR(vol, "light_cache") - sub = col.column() - sub.active = vol.light_cache - sub.itemR(vol, "cache_resolution") - elif vol.scattering_mode in ('MULTIPLE_SCATTERING', 'SINGLE_PLUS_MULTIPLE_SCATTERING'): - col.itemR(vol, "cache_resolution") - - col = col.column(align=True) - col.itemR(vol, "ms_diffusion") - col.itemR(vol, "ms_spread") - col.itemR(vol, "ms_intensity") - - col = split.column() - # col.itemL(text="Anisotropic Scattering:") - col.itemR(vol, "phase_function", text="") - if vol.phase_function in ('SCHLICK', 'HENYEY-GREENSTEIN'): - col.itemR(vol, "asymmetry") - -class MATERIAL_PT_volume_transp(VolumeButtonsPanel): - __label__= "Transparency" - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - mat = context.material - rayt = context.material.raytrace_transparency - - row= layout.row() - row.itemR(mat, "transparency_method", expand=True) - row.active = mat.transparency and (not mat.shadeless) - -class MATERIAL_PT_volume_integration(VolumeButtonsPanel): - __label__ = "Integration" - __default_closed__ = False - COMPAT_ENGINES = set(['BLENDER_RENDER']) - - def draw(self, context): - layout = self.layout - - mat = context.material - vol = context.material.volume - - split = layout.split() - - col = split.column() - col.itemL(text="Step Calculation:") - col.itemR(vol, "step_calculation", text="") - col = col.column(align=True) - col.itemR(vol, "step_size") - col.itemR(vol, "shading_step_size") - - col = split.column() - col.itemL() - col.itemR(vol, "depth_cutoff") - col.itemR(vol, "density_scale") - -bpy.types.register(MATERIAL_PT_volume_shading) -bpy.types.register(MATERIAL_PT_volume_scattering) -bpy.types.register(MATERIAL_PT_volume_transp) -bpy.types.register(MATERIAL_PT_volume_integration) |