diff options
Diffstat (limited to 'render_povray/shading_properties.py')
-rwxr-xr-x | render_povray/shading_properties.py | 1336 |
1 files changed, 23 insertions, 1313 deletions
diff --git a/render_povray/shading_properties.py b/render_povray/shading_properties.py index bcc8944d..a1c358de 100755 --- a/render_povray/shading_properties.py +++ b/render_povray/shading_properties.py @@ -19,10 +19,7 @@ from bpy.props import ( def check_material(mat): """Check that material node tree is not empty if use node button is on""" if mat is not None: - if mat.use_nodes: - # No active node material - return not mat.node_tree - return True + return not mat.node_tree if mat.use_nodes else True return False @@ -30,28 +27,27 @@ def pov_context_tex_datablock(context): """Texture context type recreated as deprecated in blender 2.8""" idblock = context.brush - if idblock and context.scene.texture_context == 'OTHER': + if idblock and context.scene.texture_context == "OTHER": return idblock # idblock = bpy.context.active_object.active_material idblock = context.view_layer.objects.active.active_material - if idblock and context.scene.texture_context == 'MATERIAL': + if idblock and context.scene.texture_context == "MATERIAL": return idblock idblock = context.scene.world - if idblock and context.scene.texture_context == 'WORLD': + if idblock and context.scene.texture_context == "WORLD": return idblock idblock = context.light - if idblock and context.scene.texture_context == 'LIGHT': + if idblock and context.scene.texture_context == "LIGHT": return idblock - if context.particle_system and context.scene.texture_context == 'PARTICLES': + if context.particle_system and context.scene.texture_context == "PARTICLES": idblock = context.particle_system.settings - idblock = context.line_style - if idblock and context.scene.texture_context == 'LINESTYLE': + if idblock and context.scene.texture_context == "LINESTYLE": return idblock return idblock @@ -88,7 +84,7 @@ def active_texture_name_from_search(self, context): # bpy.context.tool_settings.image_paint.brush.mask_texture = tex except BaseException as e: print(e.__doc__) - print('An exception occurred: {}'.format(e)) + print("An exception occurred: {}".format(e)) def brush_texture_update(self, context): @@ -99,10 +95,9 @@ def brush_texture_update(self, context): # mat = context.view_layer.objects.active.active_material idblock = pov_context_tex_datablock(context) slot = idblock.pov_texture_slots[idblock.pov.active_texture_index] - tex = slot.texture - - if tex: + if tex := slot.texture: # Switch paint brush to active texture so slot and settings remain contextual + # bpy.ops.pov.textureslotupdate() bpy.context.tool_settings.image_paint.brush.texture = bpy.data.textures[tex] bpy.context.tool_settings.image_paint.brush.mask_texture = bpy.data.textures[tex] @@ -200,7 +195,7 @@ class RenderPovSettingsMaterial(PropertyGroup): default=1.0, precision=3, ) - + # TODO: replace by newer agnostic Material.diffuse_color and remove from pov panel diffuse_color: FloatVectorProperty( name="Diffuse color", description="Diffuse color of the material", @@ -414,7 +409,6 @@ class RenderPovSettingsMaterial(PropertyGroup): options={"ANIMATABLE"}, subtype="COLOR", ) - specular_hardness: IntProperty( name="Hardness", description="How hard (sharp) the specular reflection is", @@ -422,7 +416,7 @@ class RenderPovSettingsMaterial(PropertyGroup): max=511, default=30, ) - + # TODO: replace by newer agnostic Material.specular_intensity and remove from pov panel specular_intensity: FloatProperty( name="Intensity", description="How intense (bright) the specular reflection is", @@ -642,6 +636,7 @@ class RenderPovSettingsMaterial(PropertyGroup): default=False, ) + # TODO create interface: use_vertex_color_paint: BoolProperty( name="Vertex Color Paint", description="Replace object base color with vertex " @@ -713,12 +708,6 @@ class RenderPovSettingsMaterial(PropertyGroup): default=False, ) - mirror_metallic: BoolProperty( - name="Metallic Reflection", - description="mirror reflections get colored as diffuse (for metallic materials)", - default=False, - ) - conserve_energy: BoolProperty( name="Conserve Energy", description="Light transmitted is more correctly reduced by mirror reflections, " @@ -780,7 +769,9 @@ class RenderPovSettingsMaterial(PropertyGroup): ) fake_caustics: BoolProperty( - name="Fake Caustics", description="use only (Fast) fake refractive caustics", default=True + name="Fake Caustics", + description="use only (Fast) fake refractive caustics based on transparent shadows", + default=True ) fake_caustics_power: FloatProperty( @@ -872,7 +863,7 @@ class RenderPovSettingsMaterial(PropertyGroup): for node in tree.nodes: if node.bl_idname == "PovrayOutputNode": o += 1 - if node.bl_idname == "PovrayTextureNode": + elif node.bl_idname == "PovrayTextureNode": m += 1 if o == 1 and m == 1: default = False @@ -926,15 +917,16 @@ class RenderPovSettingsMaterial(PropertyGroup): def pigment_normal_callback(self, context): render = context.scene.pov.render # XXX comment out > remove? - items = [("pigment", "Pigment", ""), ("normal", "Normal", "")] - # XXX Find any other such traces of hgpovray experiment > remove or deploy ? - if render == "hgpovray": - items = [ + return ( + [("pigment", "Pigment", ""), ("normal", "Normal", "")] + # XXX Find any other such traces of hgpovray experiment > remove or deploy ? + if render != "hgpovray" + else [ ("pigment", "Pigment", ""), ("normal", "Normal", ""), ("modulation", "Modulation", ""), ] - return items + ) def glow_callback(self, context): scene = context.scene @@ -966,1282 +958,12 @@ class RenderPovSettingsMaterial(PropertyGroup): object_preview_bgcontrast: FloatProperty(name="Contrast", min=0.0, max=1.0, default=0.5) -class MaterialRaytraceTransparency(PropertyGroup): - """Declare transparency panel properties controllable in UI and translated to POV.""" - - depth: IntProperty( - name="Depth", - description="Maximum allowed number of light inter-refractions", - min=0, - max=32767, - default=2, - ) - - depth_max: FloatProperty( - name="Depth", - description="Maximum depth for light to travel through the " - "transparent material before becoming fully filtered (0.0 is disabled)", - min=0, - max=100, - default=0.0, - ) - - falloff: FloatProperty( - name="Falloff", - description="Falloff power for transmissivity filter effect (1.0 is linear)", - min=0.1, - max=10.0, - default=1.0, - precision=3, - ) - - filter: FloatProperty( - name="Filter", - description="Amount to blend in the material’s diffuse color in raytraced " - "transparency (simulating absorption)", - min=0.0, - max=1.0, - default=0.0, - precision=3, - ) - - fresnel: FloatProperty( - name="Fresnel", - description="Power of Fresnel for transparency (Ray or ZTransp)", - min=0.0, - max=5.0, - soft_min=0.0, - soft_max=5.0, - default=0.0, - precision=3, - ) - - fresnel_factor: FloatProperty( - name="Blend", - description="Blending factor for Fresnel", - min=0.0, - max=5.0, - soft_min=0.0, - soft_max=5.0, - default=1.250, - precision=3, - ) - - gloss_factor: FloatProperty( - name="Amount", - description="The clarity of the refraction. " - "(values < 1.0 give diffuse, blurry refractions)", - min=0.0, - max=1.0, - soft_min=0.0, - soft_max=1.0, - default=1.0, - precision=3, - ) - - gloss_samples: IntProperty( - name="Samples", - description="frequency of the noise sample used for blurry refractions", - min=0, - max=1024, - default=18, - ) - - gloss_threshold: FloatProperty( - name="Threshold", - description="Threshold for adaptive sampling (if a sample " - "contributes less than this amount [as a percentage], " - "sampling is stopped)", - min=0.0, - max=1.0, - soft_min=0.0, - soft_max=1.0, - default=0.005, - precision=3, - ) - - ior: FloatProperty( - name="IOR", - description="Sets angular index of refraction for raytraced refraction", - min=-0.0, - max=10.0, - soft_min=0.25, - soft_max=4.0, - default=1.3, - ) - - -class MaterialRaytraceMirror(PropertyGroup): - """Declare reflection panel properties controllable in UI and translated to POV.""" - - bl_description = ("Raytraced reflection settings for the Material",) - - use: BoolProperty(name="Mirror", description="Enable raytraced reflections", default=False) - - depth: IntProperty( - name="Depth", - description="Maximum allowed number of light inter-reflections", - min=0, - max=32767, - default=2, - ) - - distance: FloatProperty( - name="Max Dist", - description="Maximum distance of reflected rays " - "(reflections further than this range " - "fade to sky color or material color)", - min=0.0, - max=100000.0, - soft_min=0.0, - soft_max=10000.0, - default=0.0, - precision=3, - ) - - fade_to: EnumProperty( - items=[ - ("FADE_TO_SKY", "Fade to sky", ""), - ("FADE_TO_MATERIAL", "Fade to material color", ""), - ], - name="Fade-out Color", - description="The color that rays with no intersection within the " - "Max Distance take (material color can be best for " - "indoor scenes, sky color for outdoor)", - default="FADE_TO_SKY", - ) - - fresnel: FloatProperty( - name="Fresnel", - description="Power of Fresnel for mirror reflection", - min=0.0, - max=5.0, - soft_min=0.0, - soft_max=5.0, - default=0.0, - precision=3, - ) - - fresnel_factor: FloatProperty( - name="Blend", - description="Blending factor for Fresnel", - min=0.0, - max=5.0, - soft_min=0.0, - soft_max=5.0, - default=1.250, - precision=3, - ) - - gloss_anisotropic: FloatProperty( - name="Anisotropic", - description="The shape of the reflection, from 0.0 (circular) " - "to 1.0 (fully stretched along the tangent", - min=0.0, - max=1.0, - soft_min=0.0, - soft_max=1.0, - default=1.0, - precision=3, - ) - - gloss_factor: FloatProperty( - name="Amount", - description="The shininess of the reflection " - "(values < 1.0 give diffuse, blurry reflections)", - min=0.0, - max=1.0, - soft_min=0.0, - soft_max=1.0, - default=1.0, - precision=3, - ) - - gloss_samples: IntProperty( - name="Noise", - description="Frequency of the noise pattern bumps averaged for blurry reflections", - min=0, - max=1024, - default=18, - ) - - gloss_threshold: FloatProperty( - name="Threshold", - description="Threshold for adaptive sampling (if a sample " - "contributes less than this amount [as a percentage], " - "sampling is stopped)", - min=0.0, - max=1.0, - soft_min=0.0, - soft_max=1.0, - default=0.005, - precision=3, - ) - - mirror_color: FloatVectorProperty( - name="Mirror color", - description="Mirror color of the material", - precision=4, - step=0.01, - default=(1.0, 1.0, 1.0), - options={"ANIMATABLE"}, - subtype="COLOR", - ) - - reflect_factor: FloatProperty( - name="Reflectivity", - description="Amount of mirror reflection for raytrace", - min=0.0, - max=1.0, - soft_min=0.0, - soft_max=1.0, - default=1.0, - precision=3, - ) - - -class MaterialSubsurfaceScattering(PropertyGroup): - r"""Declare SSS/SSTL properties controllable in UI and translated to POV.""" - - bl_description = ("Subsurface scattering settings for the material",) - - use: BoolProperty( - name="Subsurface Scattering", - description="Enable diffuse subsurface scatting " "effects in a material", - default=False, - ) - - back: FloatProperty( - name="Back", - description="Back scattering weight", - min=0.0, - max=10.0, - soft_min=0.0, - soft_max=10.0, - default=1.0, - precision=3, - ) - - color: FloatVectorProperty( - name="Scattering color", - description="Scattering color", - precision=4, - step=0.01, - default=(0.604, 0.604, 0.604), - options={"ANIMATABLE"}, - subtype="COLOR", - ) - - color_factor: FloatProperty( - name="Color", - description="Blend factor for SSS colors", - min=0.0, - max=1.0, - soft_min=0.0, - soft_max=1.0, - default=1.0, - precision=3, - ) - - error_threshold: FloatProperty( - name="Error", - description="Error tolerance (low values are slower and higher quality)", - default=0.050, - precision=3, - ) - - front: FloatProperty( - name="Front", - description="Front scattering weight", - min=0.0, - max=2.0, - soft_min=0.0, - soft_max=2.0, - default=1.0, - precision=3, - ) - - ior: FloatProperty( - name="IOR", - description="Index of refraction (higher values are denser)", - min=-0.0, - max=10.0, - soft_min=0.1, - soft_max=2.0, - default=1.3, - ) - - radius: FloatVectorProperty( - name="RGB Radius", - description="Mean red/green/blue scattering path length", - precision=4, - step=0.01, - min=0.001, - default=(1.0, 1.0, 1.0), - options={"ANIMATABLE"}, - ) - - scale: FloatProperty( - name="Scale", description="Object scale factor", default=0.100, precision=3 - ) - - texture_factor: FloatProperty( - name="Texture", - description="Texture scattering blend factor", - min=0.0, - max=1.0, - soft_min=0.0, - soft_max=1.0, - default=0.0, - precision=3, - ) - - -class MaterialStrandSettings(PropertyGroup): - """Declare strand properties controllable in UI and translated to POV.""" - - bl_description = ("Strand settings for the material",) - - blend_distance: FloatProperty( - name="Distance", - description="Worldspace distance over which to blend in the surface normal", - min=0.0, - max=10.0, - soft_min=0.0, - soft_max=10.0, - default=0.0, - precision=3, - ) - - root_size: FloatProperty( - name="Root", - description="Start size of strands in pixels or Blender units", - min=0.25, - default=1.0, - precision=5, - ) - - shape: FloatProperty( - name="Shape", - description="Positive values make strands rounder, negative ones make strands spiky", - min=-0.9, - max=0.9, - default=0.0, - precision=3, - ) - - size_min: FloatProperty( - name="Minimum", - description="Minimum size of strands in pixels", - min=0.001, - max=10.0, - default=1.0, - precision=3, - ) - - tip_size: FloatProperty( - name="Tip", - description="End size of strands in pixels or Blender units", - min=0.0, - default=1.0, - precision=5, - ) - - use_blender_units: BoolProperty( - name="Blender Units", - description="Use Blender units for widths instead of pixels", - default=False, - ) - - use_surface_diffuse: BoolProperty( - name="Surface diffuse", - description="Make diffuse shading more similar to shading the surface", - default=False, - ) - - use_tangent_shading: BoolProperty( - name="Tangent Shading", - description="Use direction of strands as normal for tangent-shading", - default=True, - ) - - uv_layer: StringProperty( - name="UV Layer", - # icon="GROUP_UVS", - description="Name of UV map to override", - default="", - ) - - width_fade: FloatProperty( - name="Width Fade", - description="Transparency along the width of the strand", - min=0.0, - max=2.0, - default=0.0, - precision=3, - ) - - # halo - - # Halo settings for the material - # Type: MaterialHalo, (readonly, never None) - - # ambient - - # Amount of global ambient color the material receives - # Type: float in [0, 1], default 0.0 - - # darkness - - # Minnaert darkness - # Type: float in [0, 2], default 0.0 - - # diffuse_color - - # Diffuse color of the material - # Type: float array of 3 items in [0, inf], default (0.0, 0.0, 0.0) - - # diffuse_fresnel - - # Power of Fresnel - # Type: float in [0, 5], default 0.0 - - # diffuse_fresnel_factor - - # Blending factor of Fresnel - # Type: float in [0, 5], default 0.0 - - # diffuse_intensity - - # Amount of diffuse reflection - # Type: float in [0, 1], default 0.0 - - # diffuse_ramp - - # Color ramp used to affect diffuse shading - # Type: ColorRamp, (readonly) - - # diffuse_ramp_blend - - # Blending method of the ramp and the diffuse color - # Type: enum in [‘MIX’, ‘ADD’, ‘MULTIPLY’, ‘SUBTRACT’, ‘SCREEN’, ‘DIVIDE’, ‘DIFFERENCE’, ‘DARKEN’, ‘LIGHTEN’, ‘OVERLAY’, ‘DODGE’, ‘BURN’, ‘HUE’, ‘SATURATION’, ‘VALUE’, ‘COLOR’, ‘SOFT_LIGHT’, ‘LINEAR_LIGHT’], default ‘MIX’ - - # diffuse_ramp_factor - - # Blending factor (also uses alpha in Colorband) - # Type: float in [0, 1], default 0.0 - - # diffuse_ramp_input - - # How the ramp maps on the surface - # Type: enum in [‘SHADER’, ‘ENERGY’, ‘NORMAL’, ‘RESULT’], default ‘SHADER’ - - # diffuse_shader - - # LAMBERT Lambert, Use a Lambertian shader. - # OREN_NAYAR Oren-Nayar, Use an Oren-Nayar shader. - # TOON Toon, Use a toon shader. - # MINNAERT Minnaert, Use a Minnaert shader. - # FRESNEL Fresnel, Use a Fresnel shader. - - # Type: enum in [‘LAMBERT’, ‘OREN_NAYAR’, ‘TOON’, ‘MINNAERT’, ‘FRESNEL’], default ‘LAMBERT’ - - # diffuse_toon_size - - # Size of diffuse toon area - # Type: float in [0, 3.14], default 0.0 - - # diffuse_toon_smooth - - # Smoothness of diffuse toon area - # Type: float in [0, 1], default 0.0 - - # emit - - # Amount of light to emit - # Type: float in [0, inf], default 0.0 - - # game_settings - - # Game material settings - # Type: MaterialGameSettings, (readonly, never None) - - # halo - - # Halo settings for the material - # Type: MaterialHalo, (readonly, never None) - - # invert_z - - # Render material’s faces with an inverted Z buffer (scanline only) - # Type: boolean, default False - - # light_group - - # Limit lighting to lamps in this Group - # Type: Group - - # line_color - - # Line color used for Freestyle line rendering - # Type: float array of 4 items in [0, inf], default (0.0, 0.0, 0.0, 0.0) - - # line_priority - - # The line color of a higher priority is used at material boundaries - # Type: int in [0, 32767], default 0 - - # mirror_color - - # Mirror color of the material - # Type: float array of 3 items in [0, inf], default (0.0, 0.0, 0.0) - - # node_tree - - # Node tree for node based materials - # Type: NodeTree, (readonly) - - # offset_z - - # Give faces an artificial offset in the Z buffer for Z transparency - # Type: float in [-inf, inf], default 0.0 - - # paint_active_slot - - # Index of active texture paint slot - # Type: int in [0, 32767], default 0 - - # paint_clone_slot - - # Index of clone texture paint slot - # Type: int in [0, 32767], default 0 - - # pass_index - - # Index number for the “Material Index” render pass - # Type: int in [0, 32767], default 0 - - # physics - - # Game physics settings - # Type: MaterialPhysics, (readonly, never None) - - # preview_render_type - - # Type of preview render - - # FLAT Flat, Flat XY plane. - # SPHERE Sphere, Sphere. - # CUBE Cube, Cube. - # MONKEY Monkey, Monkey. - # HAIR Hair, Hair strands. - # SPHERE_A World Sphere, Large sphere with sky. - - # Type: enum in [‘FLAT’, ‘SPHERE’, ‘CUBE’, ‘MONKEY’, ‘HAIR’, ‘SPHERE_A’], default ‘FLAT’ - - # raytrace_mirror - - # Raytraced reflection settings for the material - # Type: MaterialRaytraceMirror, (readonly, never None) - - # raytrace_transparency - - # Raytraced transparency settings for the material - # Type: MaterialRaytraceTransparency, (readonly, never None) - - # roughness - - # Oren-Nayar Roughness - # Type: float in [0, 3.14], default 0.0 - - # shadow_buffer_bias - - # Factor to multiply shadow buffer bias with (0 is ignore) - # Type: float in [0, 10], default 0.0 - - # shadow_cast_alpha - - # Shadow casting alpha, in use for Irregular and Deep shadow buffer - # Type: float in [0.001, 1], default 0.0 - - # shadow_only_type - - # How to draw shadows - - # SHADOW_ONLY_OLD Shadow and Distance, Old shadow only method. - # SHADOW_ONLY Shadow Only, Improved shadow only method. - # SHADOW_ONLY_SHADED Shadow and Shading, Improved shadow only method which also renders lightless areas as shadows. - - # Type: enum in [‘SHADOW_ONLY_OLD’, ‘SHADOW_ONLY’, ‘SHADOW_ONLY_SHADED’], default ‘SHADOW_ONLY_OLD’ - - # shadow_ray_bias - - # Shadow raytracing bias to prevent terminator problems on shadow boundary - # Type: float in [0, 0.25], default 0.0 - - # specular_color - - # Specular color of the material - # Type: float array of 3 items in [0, inf], default (0.0, 0.0, 0.0) - - # specular_hardness - - # How hard (sharp) the specular reflection is - # Type: int in [1, 511], default 0 - - # specular_intensity - - # How intense (bright) the specular reflection is - # Type: float in [0, 1], default 0.0 - - # specular_ior - - # Specular index of refraction - # Type: float in [1, 10], default 0.0 - - # specular_ramp - - # Color ramp used to affect specular shading - # Type: ColorRamp, (readonly) - - # specular_ramp_blend - - # Blending method of the ramp and the specular color - # Type: enum in [‘MIX’, ‘ADD’, ‘MULTIPLY’, ‘SUBTRACT’, ‘SCREEN’, ‘DIVIDE’, ‘DIFFERENCE’, ‘DARKEN’, ‘LIGHTEN’, ‘OVERLAY’, ‘DODGE’, ‘BURN’, ‘HUE’, ‘SATURATION’, ‘VALUE’, ‘COLOR’, ‘SOFT_LIGHT’, ‘LINEAR_LIGHT’], default ‘MIX’ - - # specular_ramp_factor - - # Blending factor (also uses alpha in Colorband) - # Type: float in [0, 1], default 0.0 - - # specular_ramp_input - - # How the ramp maps on the surface - # Type: enum in [‘SHADER’, ‘ENERGY’, ‘NORMAL’, ‘RESULT’], default ‘SHADER’ - # specular_shader - - # COOKTORR CookTorr, Use a Cook-Torrance shader. - # PHONG Phong, Use a Phong shader. - # BLINN Blinn, Use a Blinn shader. - # TOON Toon, Use a toon shader. - # WARDISO WardIso, Use a Ward anisotropic shader. - - # Type: enum in [‘COOKTORR’, ‘PHONG’, ‘BLINN’, ‘TOON’, ‘WARDISO’], default ‘COOKTORR’ - - # specular_slope - - # The standard deviation of surface slope - # Type: float in [0, 0.4], default 0.0 - - # specular_toon_size - - # Size of specular toon area - # Type: float in [0, 1.53], default 0.0 - - # specular_toon_smooth - - # Smoothness of specular toon area - # Type: float in [0, 1], default 0.0 - - # strand - - # Strand settings for the material - # Type: MaterialStrand, (readonly, never None) - - # subsurface_scattering - - # Subsurface scattering settings for the material - # Type: MaterialSubsurfaceScattering, (readonly, never None) - - # texture_paint_images - - # Texture images used for texture painting - # Type: bpy_prop_collection of Image, (readonly) - - # texture_paint_slots - - # Texture slots defining the mapping and influence of textures - # Type: bpy_prop_collection of TexPaintSlot, (readonly) - - # texture_slots - - # Texture slots defining the mapping and influence of textures - # Type: MaterialTextureSlots bpy_prop_collection of MaterialTextureSlot, (readonly) - - # translucency - - # Amount of diffuse shading on the back side - # Type: float in [0, 1], default 0.0 - - # transparency_method - - # Method to use for rendering transparency - - # MASK Mask, Mask the background. - # Z_TRANSPARENCY Z Transparency, Use alpha buffer for transparent faces. - # RAYTRACE Raytrace, Use raytracing for transparent refraction rendering. - - # Type: enum in [‘MASK’, ‘Z_TRANSPARENCY’, ‘RAYTRACE’], default ‘MASK’ - - # type - - # Material type defining how the object is rendered - - # SURFACE Surface, Render object as a surface. - # WIRE Wire, Render the edges of faces as wires (not supported in raytracing). - # VOLUME Volume, Render object as a volume. - # HALO Halo, Render object as halo particles. - - # Type: enum in [‘SURFACE’, ‘WIRE’, ‘VOLUME’, ‘HALO’], default ‘SURFACE’ - - # use_cast_approximate - - # Allow this material to cast shadows when using approximate ambient occlusion - # Type: boolean, default False - - # use_cast_buffer_shadows - - # Allow this material to cast shadows from shadow buffer lamps - # Type: boolean, default False - - # use_cast_shadows - - # Allow this material to cast shadows - # Type: boolean, default False - - # use_cast_shadows_only - - # Make objects with this material appear invisible (not rendered), only casting shadows - # Type: boolean, default False - - # use_cubic - - # Use cubic interpolation for diffuse values, for smoother transitions - # Type: boolean, default False - - # use_diffuse_ramp - - # Toggle diffuse ramp operations - # Type: boolean, default False - - # use_face_texture - - # Replace the object’s base color with color from UV map image textures - # Type: boolean, default False - - # use_face_texture_alpha - - # Replace the object’s base alpha value with alpha from UV map image textures - # Type: boolean, default False - - # use_full_oversampling - - # Force this material to render full shading/textures for all anti-aliasing samples - # Type: boolean, default False - - # use_light_group_exclusive - - # Material uses the light group exclusively - these lamps are excluded from other scene lighting - # Type: boolean, default False - - # use_light_group_local - - # When linked in, material uses local light group with the same name - # Type: boolean, default False - - # use_mist - - # Use mist with this material (in world settings) - # Type: boolean, default False - - # use_nodes - - # Use shader nodes to render the material - # Type: boolean, default False - - # use_object_color - - # Modulate the result with a per-object color - # Type: boolean, default False - - # use_only_shadow - - # Render shadows as the material’s alpha value, making the material transparent except for shadowed areas - # Type: boolean, default False - - # use_ray_shadow_bias - - # Prevent raytraced shadow errors on surfaces with smooth shaded normals (terminator problem) - # Type: boolean, default False - - # use_raytrace - - # Include this material and geometry that uses it in raytracing calculations - # Type: boolean, default False - - # use_shadeless - - # Make this material insensitive to light or shadow - # Type: boolean, default False - - # use_shadows - - # Allow this material to receive shadows - # Type: boolean, default False - - # use_sky - - # Render this material with zero alpha, with sky background in place (scanline only) - # Type: boolean, default False - - # use_specular_ramp - - # Toggle specular ramp operations - # Type: boolean, default False - - # use_tangent_shading - - # Use the material’s tangent vector instead of the normal for shading - for anisotropic shading effects - # Type: boolean, default False - - # use_textures - - # Enable/Disable each texture - # Type: boolean array of 18 items, default (False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False, False) - - # use_transparency - - # Render material as transparent - # Type: boolean, default False - - # use_transparent_shadows - - # Allow this object to receive transparent shadows cast through other objects - # Type: boolean, default False - - # use_uv_project - - # Use to ensure UV interpolation is correct for camera projections (use with UV project modifier) - # Type: boolean, default False - - # use_vertex_color_light - - # Add vertex colors as additional lighting - # Type: boolean, default False - - # use_vertex_color_paint - - # Replace object base color with vertex colors (multiply with ‘texture face’ face assigned textures) - # Type: boolean, default False - - # volume - - # Volume settings for the material - # Type: MaterialVolume, (readonly, never None) - """ - (mat.type in {'SURFACE', 'WIRE', 'VOLUME'}) - "use_transparency") - - - - mat.use_transparency and mat.transparency_method == 'Z_TRANSPARENCY' - - - - - col.prop(mat, "use_raytrace") - col.prop(mat, "use_full_oversampling") - - sub.prop(mat, "use_sky") - - - col.prop(mat, "use_cast_shadows", text="Cast") - col.prop(mat, "use_cast_shadows_only", text="Cast Only") - col.prop(mat, "use_cast_buffer_shadows") - - sub.active = mat.use_cast_buffer_shadows - sub.prop(mat, "shadow_cast_alpha", text="Casting Alpha") - col.prop(mat, "use_cast_approximate") - - - - col.prop(mat, "diffuse_color", text="") - - sub.active = (not mat.use_shadeless) - - sub.prop(mat, "diffuse_intensity", text="Intensity") - - - col.prop(mat, "diffuse_shader", text="") - col.prop(mat, "use_diffuse_ramp", text="Ramp") - - - if mat.diffuse_shader == 'OREN_NAYAR': - col.prop(mat, "roughness") - elif mat.diffuse_shader == 'MINNAERT': - col.prop(mat, "darkness") - elif mat.diffuse_shader == 'TOON': - - row.prop(mat, "diffuse_toon_size", text="Size") - row.prop(mat, "diffuse_toon_smooth", text="Smooth") - elif mat.diffuse_shader == 'FRESNEL': - - row.prop(mat, "diffuse_fresnel", text="Fresnel") - row.prop(mat, "diffuse_fresnel_factor", text="Factor") - - if mat.use_diffuse_ramp: - - col.template_color_ramp(mat, "diffuse_ramp", expand=True) - - - - row.prop(mat, "diffuse_ramp_input", text="Input") - row.prop(mat, "diffuse_ramp_blend", text="Blend") - - col.prop(mat, "diffuse_ramp_factor", text="Factor") - - - - - col.prop(mat, "specular_color", text="") - col.prop(mat, "specular_intensity", text="Intensity") - - col.prop(mat, "specular_shader", text="") - col.prop(mat, "use_specular_ramp", text="Ramp") - - if mat.specular_shader in {'COOKTORR', 'PHONG'}: - col.prop(mat, "specular_hardness", text="Hardness") - elif mat.specular_shader == 'BLINN': - - row.prop(mat, "specular_hardness", text="Hardness") - row.prop(mat, "specular_ior", text="IOR") - elif mat.specular_shader == 'WARDISO': - col.prop(mat, "specular_slope", text="Slope") - elif mat.specular_shader == 'TOON': - - row.prop(mat, "specular_toon_size", text="Size") - row.prop(mat, "specular_toon_smooth", text="Smooth") - - if mat.use_specular_ramp: - layout.separator() - layout.template_color_ramp(mat, "specular_ramp", expand=True) - layout.separator() - - row = layout.row() - row.prop(mat, "specular_ramp_input", text="Input") - row.prop(mat, "specular_ramp_blend", text="Blend") - - layout.prop(mat, "specular_ramp_factor", text="Factor") - - - class MATERIAL_PT_shading(MaterialButtonsPanel, Panel): - bl_label = "Shading" - COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'} - - @classmethod - def poll(cls, context): - mat = context.material - engine = context.scene.render.engine - return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - - if mat.type in {'SURFACE', 'WIRE'}: - split = layout.split() - - col = split.column() - sub = col.column() - sub.active = not mat.use_shadeless - sub.prop(mat, "emit") - sub.prop(mat, "ambient") - sub = col.column() - sub.prop(mat, "translucency") - - col = split.column() - col.prop(mat, "use_shadeless") - sub = col.column() - sub.active = not mat.use_shadeless - sub.prop(mat, "use_tangent_shading") - sub.prop(mat, "use_cubic") - - - class MATERIAL_PT_transp(MaterialButtonsPanel, Panel): - bl_label = "Transparency" - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - mat = context.material - engine = context.scene.render.engine - return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES) - - def draw_header(self, context): - mat = context.material - - if simple_material(mat): - self.layout.prop(mat, "use_transparency", text="") - - def draw(self, context): - layout = self.layout - - base_mat = context.material - mat = active_node_mat(context.material) - rayt = mat.raytrace_transparency - - if simple_material(base_mat): - row = layout.row() - row.active = mat.use_transparency - row.prop(mat, "transparency_method", expand=True) - - split = layout.split() - split.active = base_mat.use_transparency - - col = split.column() - col.prop(mat, "alpha") - row = col.row() - row.active = (base_mat.transparency_method != 'MASK') and (not mat.use_shadeless) - row.prop(mat, "specular_alpha", text="Specular") - - col = split.column() - col.active = (not mat.use_shadeless) - col.prop(rayt, "fresnel") - sub = col.column() - sub.active = (rayt.fresnel > 0.0) - sub.prop(rayt, "fresnel_factor", text="Blend") - - if base_mat.transparency_method == 'RAYTRACE': - layout.separator() - split = layout.split() - split.active = base_mat.use_transparency - - col = split.column() - col.prop(rayt, "ior") - col.prop(rayt, "filter") - col.prop(rayt, "falloff") - col.prop(rayt, "depth_max") - col.prop(rayt, "depth") - - col = split.column() - col.label(text="Gloss:") - col.prop(rayt, "gloss_factor", text="Amount") - sub = col.column() - sub.active = rayt.gloss_factor < 1.0 - sub.prop(rayt, "gloss_threshold", text="Threshold") - sub.prop(rayt, "gloss_samples", text="Samples") - - - class MATERIAL_PT_mirror(MaterialButtonsPanel, Panel): - bl_label = "Mirror" - bl_options = {'DEFAULT_CLOSED'} - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - mat = context.material - engine = context.scene.render.engine - return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES) - - def draw_header(self, context): - raym = active_node_mat(context.material).raytrace_mirror - - self.layout.prop(raym, "use", text="") - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - raym = mat.raytrace_mirror - - layout.active = raym.use - - split = layout.split() - - col = split.column() - col.prop(raym, "reflect_factor") - col.prop(mat, "mirror_color", text="") - - col = split.column() - col.prop(raym, "fresnel") - sub = col.column() - sub.active = (raym.fresnel > 0.0) - sub.prop(raym, "fresnel_factor", text="Blend") - - split = layout.split() - - col = split.column() - col.separator() - col.prop(raym, "depth") - col.prop(raym, "distance", text="Max Dist") - col.separator() - sub = col.split(percentage=0.4) - sub.active = (raym.distance > 0.0) - sub.label(text="Fade To:") - sub.prop(raym, "fade_to", text="") - - col = split.column() - col.label(text="Gloss:") - col.prop(raym, "gloss_factor", text="Amount") - sub = col.column() - sub.active = (raym.gloss_factor < 1.0) - sub.prop(raym, "gloss_threshold", text="Threshold") - sub.prop(raym, "gloss_samples", text="Samples") - sub.prop(raym, "gloss_anisotropic", text="Anisotropic") - - - class MATERIAL_PT_sss(MaterialButtonsPanel, Panel): - bl_label = "Subsurface Scattering" - bl_options = {'DEFAULT_CLOSED'} - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - mat = context.material - engine = context.scene.render.engine - return check_material(mat) and (mat.type in {'SURFACE', 'WIRE'}) and (engine in cls.COMPAT_ENGINES) - - def draw_header(self, context): - mat = active_node_mat(context.material) - sss = mat.subsurface_scattering - - self.layout.active = (not mat.use_shadeless) - self.layout.prop(sss, "use", text="") - - def draw(self, context): - layout = self.layout - - mat = active_node_mat(context.material) - sss = mat.subsurface_scattering - - layout.active = (sss.use) and (not mat.use_shadeless) - - row = layout.row().split() - sub = row.row(align=True).split(align=True, percentage=0.75) - sub.menu("MATERIAL_MT_sss_presets", text=bpy.types.MATERIAL_MT_sss_presets.bl_label) - sub.operator("material.sss_preset_add", text="", icon='ZOOMIN') - sub.operator("material.sss_preset_add", text="", icon='ZOOMOUT').remove_active = True - - split = layout.split() - - col = split.column() - col.prop(sss, "ior") - col.prop(sss, "scale") - col.prop(sss, "color", text="") - col.prop(sss, "radius", text="RGB Radius", expand=True) - - col = split.column() - sub = col.column(align=True) - sub.label(text="Blend:") - sub.prop(sss, "color_factor", text="Color") - sub.prop(sss, "texture_factor", text="Texture") - sub.label(text="Scattering Weight:") - sub.prop(sss, "front") - sub.prop(sss, "back") - col.separator() - col.prop(sss, "error_threshold", text="Error") - - - class MATERIAL_PT_halo(MaterialButtonsPanel, Panel): - bl_label = "Halo" - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - mat = context.material - engine = context.scene.render.engine - return mat and (mat.type == 'HALO') and (engine in cls.COMPAT_ENGINES) - - def draw(self, context): - layout = self.layout - - mat = context.material # don't use node material - halo = mat.halo - - def number_but(layout, toggle, number, name, color): - row = layout.row(align=True) - row.prop(halo, toggle, text="") - sub = row.column(align=True) - sub.active = getattr(halo, toggle) - sub.prop(halo, number, text=name, translate=False) - if not color == "": - sub.prop(mat, color, text="") - - split = layout.split() - - col = split.column() - col.prop(mat, "alpha") - col.prop(mat, "diffuse_color", text="") - col.prop(halo, "seed") - - col = split.column() - col.prop(halo, "size") - col.prop(halo, "hardness") - col.prop(halo, "add") - - layout.label(text="Options:") - - split = layout.split() - col = split.column() - col.prop(halo, "use_texture") - col.prop(halo, "use_vertex_normal") - col.prop(halo, "use_extreme_alpha") - col.prop(halo, "use_shaded") - col.prop(halo, "use_soft") - - col = split.column() - number_but(col, "use_ring", "ring_count", iface_("Rings"), "mirror_color") - number_but(col, "use_lines", "line_count", iface_("Lines"), "specular_color") - number_but(col, "use_star", "star_tip_count", iface_("Star Tips"), "") - - - class MATERIAL_PT_flare(MaterialButtonsPanel, Panel): - bl_label = "Flare" - COMPAT_ENGINES = {'BLENDER_RENDER'} - - @classmethod - def poll(cls, context): - mat = context.material - engine = context.scene.render.engine - return mat and (mat.type == 'HALO') and (engine in cls.COMPAT_ENGINES) - - def draw_header(self, context): - halo = context.material.halo - - self.layout.prop(halo, "use_flare_mode", text="") - - def draw(self, context): - layout = self.layout - - mat = context.material # don't use node material - halo = mat.halo - - layout.active = halo.use_flare_mode - - split = layout.split() - - col = split.column() - col.prop(halo, "flare_size", text="Size") - col.prop(halo, "flare_boost", text="Boost") - col.prop(halo, "flare_seed", text="Seed") - - col = split.column() - col.prop(halo, "flare_subflare_count", text="Subflares") - col.prop(halo, "flare_subflare_size", text="Subsize") - - """ - # ------------------------------ End Old Blender Internal Props ------------------------------ # classes = ( RenderPovSettingsMaterial, - MaterialRaytraceTransparency, - MaterialRaytraceMirror, - MaterialSubsurfaceScattering, - MaterialStrandSettings, ) @@ -2250,21 +972,9 @@ def register(): register_class(cls) bpy.types.Material.pov = PointerProperty(type=RenderPovSettingsMaterial) - bpy.types.Material.pov_raytrace_transparency = PointerProperty( - type=MaterialRaytraceTransparency - ) - bpy.types.Material.pov_subsurface_scattering = PointerProperty( - type=MaterialSubsurfaceScattering - ) - bpy.types.Material.strand = PointerProperty(type=MaterialStrandSettings) - bpy.types.Material.pov_raytrace_mirror = PointerProperty(type=MaterialRaytraceMirror) def unregister(): - del bpy.types.Material.pov_subsurface_scattering - del bpy.types.Material.strand - del bpy.types.Material.pov_raytrace_mirror - del bpy.types.Material.pov_raytrace_transparency del bpy.types.Material.pov for cls in reversed(classes): |