Skip to content
Snippets Groups Projects
__init__.py 182 KiB
Newer Older
  • Learn to ignore specific revisions
  • # ##### BEGIN GPL LICENSE BLOCK #####
    
    Luca Bonavita's avatar
    Luca Bonavita committed
    #
    #  This program is free software; you can redistribute it and/or
    #  modify it under the terms of the GNU General Public License
    #  as published by the Free Software Foundation; either version 2
    #  of the License, or (at your option) any later version.
    #
    #  This program is distributed in the hope that it will be useful,
    #  but WITHOUT ANY WARRANTY; without even the implied warranty of
    #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    #  GNU General Public License for more details.
    #
    #  You should have received a copy of the GNU General Public License
    #  along with this program; if not, write to the Free Software Foundation,
    #  Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
    #
    # ##### END GPL LICENSE BLOCK #####
    
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
    """Import, export and render to POV engines.
    
    These engines can be POV-Ray or Uberpov but others too, since POV is a
    Scene Description Language. The script has been split in as few files 
    as possible :
    
    ___init__.py :
        Initialize variables
        
    update_files.py
        Update new variables to values from older API. This file needs an update.  
        
    ui.py :
        Provide property buttons for the user to set up the variables.
        
    primitives.py :
        Display some POV native primitives in 3D view for input and output.
    
    shading.py
        Translate shading properties to declared textures at the top of a pov file 
    
    nodes.py
        Translate node trees to the pov file
        
    df3.py
        Render smoke to *.df3 files
        
    render.py :
        Translate geometry and UI properties (Blender and POV native) to the POV file
        
    
    Along these essential files also coexist a few additional libraries to help make
    Blender stand up to other POV IDEs such as povwin or QTPOV.
        presets :
            Material (sss)
                apple.py ; chicken.py ; cream.py ; Ketchup.py ; marble.py ; 
                potato.py ; skim_milk.py ; skin1.py ; skin2.py ; whole_milk.py
            Radiosity
                01_Debug.py ; 02_Fast.py ; 03_Normal.py ; 04_Two_Bounces.py ; 
                05_Final.py ; 06_Outdoor_Low_Quality.py ; 07_Outdoor_High_Quality.py ;
                08_Outdoor(Sun)Light.py ; 09_Indoor_Low_Quality.py ;
                10_Indoor_High_Quality.py ;
            World
                01_Clear_Blue_Sky.py ; 02_Partly_Hazy_Sky.py ; 03_Overcast_Sky.py ;
                04_Cartoony_Sky.py ; 05_Under_Water.py ;
            Light
                01_(5400K)_Direct_Sun.py ; 02_(5400K)_High_Noon_Sun.py ;
                03_(6000K)_Daylight_Window.py ;
                04_(6000K)_2500W_HMI_(Halogen_Metal_Iodide).py ;
                05_(4000K)_100W_Metal_Halide.py ; 06_(3200K)_100W_Quartz_Halogen.py ;
                07_(2850K)_100w_Tungsten.py ; 08_(2600K)_40w_Tungsten.py ;
                09_(5000K)_75W_Full_Spectrum_Fluorescent_T12.py ;
                10_(4300K)_40W_Vintage_Fluorescent_T12.py ;
                11_(5000K)_18W_Standard_Fluorescent_T8 ;
                12_(4200K)_18W_Cool_White_Fluorescent_T8.py ;
                13_(3000K)_18W_Warm_Fluorescent_T8.py ; 
                14_(6500K)_54W_Grow_Light_Fluorescent_T5-HO.py ;
                15_(3200K)_40W_Induction_Fluorescent.py ;
                16_(2100K)_150W_High_Pressure_Sodium.py ;
                17_(1700K)_135W_Low_Pressure_Sodium.py ;
                18_(6800K)_175W_Mercury_Vapor.py ; 19_(5200K)_700W_Carbon_Arc.py ;
                20_(6500K)_15W_LED_Spot.py ; 21_(2700K)_7W_OLED_Panel.py ; 
                22_(30000K)_40W_Black_Light_Fluorescent.py ;
                23_(30000K)_40W_Black_Light_Bulb.py; 24_(1850K)_Candle.py
        templates:
            abyss.pov ; biscuit.pov ; bsp_Tango.pov ; chess2.pov ;
            cornell.pov ; diffract.pov ; diffuse_back.pov ; float5 ;
            gamma_showcase.pov ; grenadine.pov ; isocacti.pov ;
            mediasky.pov ; patio-radio.pov ; subsurface.pov ; wallstucco.pov
    """
    
    
    
        "name": "Persistence of Vision",
        "author": "Campbell Barton, "
                  "Maurice Raybaud, "
                  "Leonid Desyatkov, "
                  "Bastien Montagne, "
                  "Constantin Rahn, "
                  "Silvio Falcinelli",
    
        "version": (0, 1, 0),
    
        "blender": (2, 81, 0),
    
        "location": "Render Properties > Render Engine > Persistence of Vision",
        "description": "Persistence of Vision integration for blender",
    
    meta-androcto's avatar
    meta-androcto committed
        "wiki_url": "https://docs.blender.org/manual/en/dev/addons/"
                    "render/povray.html",
    
    Luca Bonavita's avatar
    Luca Bonavita committed
    
    
    if "bpy" in locals():
    
        import importlib
        importlib.reload(ui)
        importlib.reload(render)
    
        importlib.reload(shading)
    
        importlib.reload(update_files)
    
        from bpy.utils import register_class, unregister_class
    
        #import addon_utils # To use some other addons
    
        import nodeitems_utils #for Nodes
        from nodeitems_utils import NodeCategory, NodeItem #for Nodes
    
        from bl_operators.presets import AddPresetBase
    
        from bpy.types import (
                AddonPreferences,
                PropertyGroup,
    
                )
        from bpy.props import (
                StringProperty,
                BoolProperty,
                IntProperty,
                FloatProperty,
                FloatVectorProperty,
                EnumProperty,
                PointerProperty,
    
                )
        from . import (
                ui,
                render,
                update_files,
                )
    
    def string_strip_hyphen(name):
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
        """Remove hyphen characters from a string to avoid POV errors."""
    
        return name.replace("-", "")
    
    
    def active_texture_name_from_uilist(self,context):
        mat = context.scene.view_layers["View Layer"].objects.active.active_material
        index = mat.pov.active_texture_index
        name = mat.pov_texture_slots[index].name
        newname = mat.pov_texture_slots[index].texture
        tex = bpy.data.textures[name]
        tex.name = newname
        mat.pov_texture_slots[index].name = newname
    
    
    def active_texture_name_from_search(self,context):
        mat = context.scene.view_layers["View Layer"].objects.active.active_material
        index = mat.pov.active_texture_index
        name = mat.pov_texture_slots[index].texture_search
        try:
            tex = bpy.data.textures[name]
            mat.pov_texture_slots[index].name = name
            mat.pov_texture_slots[index].texture = name
        except:
            pass
    
    
    ###############################################################################
    # Scene POV properties.
    ###############################################################################
    
    class RenderPovSettingsScene(PropertyGroup):
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
        """Declare scene level properties controllable in UI and translated to POV."""
    
        #Linux SDL-window enable
    
        sdl_window_enable: BoolProperty(
    
                name="Enable SDL window",
                description="Enable the SDL window in Linux OS",
                default=True)
    
        # File Options
    
        text_block: StringProperty(
    
                description="Name of POV scene to use. "
    
                            "Set when clicking Run to render current text only",
                maxlen=1024)
    
        tempfiles_enable: BoolProperty(
    
                name="Enable Tempfiles",
    
                description="Enable the OS-Tempfiles. Otherwise set the path where"
                            " to save the files",
    
                default=True)
    
        pov_editor: BoolProperty(
    
                name="POV editor",
                description="Don't Close POV editor after rendering (Overridden"
    
                            " by /EXIT command)",
    
        deletefiles_enable: BoolProperty(
    
                name="Delete files",
    
                description="Delete files after rendering. "
                            "Doesn't work with the image",
    
                default=True)
    
        scene_name: StringProperty(
    
                name="Scene Name",
    
                description="Name of POV scene to create. Empty name will use "
    
                            "the name of the blend file",
    
        scene_path: StringProperty(
    
                name="Export scene path",
    
                # Bug in POV-Ray RC3
                # description="Path to directory where the exported scene "
    
                            # "(POV and INI) is created",
    
                description="Path to directory where the files are created",
    
                maxlen=1024, subtype="DIR_PATH")
    
        renderimage_path: StringProperty(
    
                name="Rendered image path",
    
                description="Full path to directory where the rendered image is "
                            "saved",
    
                maxlen=1024, subtype="DIR_PATH")
    
        list_lf_enable: BoolProperty(
    
                name="LF in lists",
    
                description="Enable line breaks in lists (vectors and indices). "
                            "Disabled: lists are exported in one line",
    
                default=True)
    
        # Not a real pov option, just to know if we should write
    
        radio_enable: BoolProperty(
    
                name="Enable Radiosity",
    
                description="Enable POV radiosity calculation",
    
        radio_display_advanced: BoolProperty(
    
                name="Advanced Options",
                description="Show advanced options",
                default=False)
    
        media_enable: BoolProperty(
    
                name="Enable Media",
    
                description="Enable POV atmospheric media",
    
                default=False)
    
        media_samples: IntProperty(
    
                description="Number of samples taken from camera to first object "
    
                            "encountered along ray path for media calculation",
    
                min=1, max=100, default=35)
    
        media_scattering_type: EnumProperty(
    
                name="Scattering Type",
                description="Scattering model",
                items=(('1', "1 Isotropic", "The simplest form of scattering because"
                                          " it is independent of direction."),
                       ('2', "2 Mie haze ", "For relatively small particles such as "
                                          "minuscule water droplets of fog, cloud "
                                          "particles, and particles responsible "
                                          "for the polluted sky. In this model the"
                                          " scattering is extremely directional in"
                                          " the forward direction i.e. the amount "
                                          "of scattered light is largest when the "
                                          "incident light is anti-parallel to the "
                                          "viewing direction (the light goes "
                                          "directly to the viewer). It is smallest"
                                          " when the incident light is parallel to"
                                          " the viewing direction. "),
                       ('3', "3 Mie murky", "Like haze but much more directional"),
                       ('4', "4 Rayleigh", "For extremely small particles such as "
                                         "molecules of the air. The amount of "
                                         "scattered light depends on the incident"
                                         " light angle. It is largest when the "
                                         "incident light is parallel or "
                                         "anti-parallel to the viewing direction "
                                         "and smallest when the incident light is "
                                         "perpendicular to viewing direction."),
                       ('5', "5 Henyey-Greenstein", "The default eccentricity value "
                                                  "of zero defines isotropic "
                                                  "scattering while positive "
                                                  "values lead to scattering in "
                                                  "the direction of the light and "
                                                  "negative values lead to "
                                                  "scattering in the opposite "
                                                  "direction of the light. Larger "
                                                  "values of e (or smaller values "
                                                  "in the negative case) increase "
                                                  "the directional property of the"
    
                                                  " scattering.")),
    
        media_diffusion_scale: FloatProperty(
    
                name="Scale", description="Scale factor of Media Diffusion Color",
                precision=12, step=0.00000001, min=0.000000001, max=1.0,
                default=(1.0))
    
        media_diffusion_color: FloatVectorProperty(
    
                name="Media Diffusion Color", description="The atmospheric media color",
    
                precision=4, step=0.01, min=0, soft_max=1,
    
                default=(0.001, 0.001, 0.001),
    
                options={'ANIMATABLE'},
    
        media_absorption_scale: FloatProperty(
    
                name="Scale", description="Scale factor of Media Absorption Color. "
                                          "use 1/depth of media volume in meters",
                precision=12, step=0.000001, min=0.000000001, max=1.0,
                default=(0.00002))
    
        media_absorption_color: FloatVectorProperty(
    
                name="Media Absorption Color", description="The atmospheric media absorption color",
                precision=4, step=0.01, min=0, soft_max=1,
                default=(0.0, 0.0, 0.0),
                options={'ANIMATABLE'},
    
                subtype='COLOR')
    
        media_eccentricity: FloatProperty(
    
                name="Media Eccenticity Factor", description="Positive values lead"
                     " to scattering in the direction of the light and negative "
                     "values lead to scattering in the opposite direction of the "
                     "light. Larger values of e (or smaller values in the negative"
                     " case) increase the directional property of the scattering.",
                precision=2, step=0.01, min=-1.0, max=1.0,
                default=(0.0),
                options={'ANIMATABLE'})
    
        baking_enable: BoolProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Enable Baking",
    
                description="Enable POV texture baking",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default=False)
    
        indentation_character: EnumProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Indentation",
                description="Select the indentation type",
    
                items=(('NONE', "None", "No indentation"),
                       ('TAB', "Tabs", "Indentation with tabs"),
                       ('SPACE', "Spaces", "Indentation with spaces")),
                default='SPACE')
    
        indentation_spaces: IntProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Quantity of spaces",
                description="The number of spaces for indentation",
    
                min=1, max=10, default=4)
    
        comments_enable: BoolProperty(
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                name="Enable Comments",
    
                description="Add comments to pov file",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default=True)
    
    
        # Real pov options
    
        command_line_switches: StringProperty(
    
                description="Command line switches consist of a + (plus) or - "
                            "(minus) sign, followed by one or more alphabetic "
                            "characters and possibly a numeric value",
    
        antialias_enable: BoolProperty(
    
                name="Anti-Alias", description="Enable Anti-Aliasing",
                default=True)
    
        antialias_method: EnumProperty(
    
                name="Method",
    
                description="AA-sampling method. Type 1 is an adaptive, "
                            "non-recursive, super-sampling method. Type 2 is an "
                            "adaptive and recursive super-sampling method. Type 3 "
                            "is a stochastic halton based super-sampling method",
    
                items=(("0", "non-recursive AA", "Type 1 Sampling in POV"),
                       ("1", "recursive AA", "Type 2 Sampling in POV"),
                       ("2", "stochastic AA", "Type 3 Sampling in POV")),
    
                default="1")
    
        antialias_confidence: FloatProperty(
    
                name="Antialias Confidence",
                description="how surely the computed color "
                            "of a given pixel is indeed"
                            "within the threshold error margin",
    
                min=0.0001, max=1.0000, default=0.9900, precision=4)
    
        antialias_depth: IntProperty(
    
                name="Antialias Depth", description="Depth of pixel for sampling",
                min=1, max=9, default=3)
    
        antialias_threshold: FloatProperty(
    
                name="Antialias Threshold", description="Tolerance for sub-pixels",
    
                min=0.0, max=1.0, soft_min=0.05, soft_max=0.5, default=0.03)
    
        jitter_enable: BoolProperty(
    
                description="Enable Jittering. Adds noise into the sampling "
                            "process (it should be avoided to use jitter in "
                            "animation)",
    
        jitter_amount: FloatProperty(
    
                name="Jitter Amount", description="Amount of jittering",
    
                min=0.0, max=1.0, soft_min=0.01, soft_max=1.0, default=1.0)
    
        antialias_gamma: FloatProperty(
    
                description="POV-Ray compares gamma-adjusted values for super "
                            "sampling. Antialias Gamma sets the Gamma before "
                            "comparison",
    
                min=0.0, max=5.0, soft_min=0.01, soft_max=2.5, default=2.5)
    
        alpha_mode: EnumProperty(
                name="Alpha",
                description="Representation of alpha information in the RGBA pixels",
                items=(("SKY", "Sky", "Transparent pixels are filled with sky color"),
                       ("TRANSPARENT", "Transparent", "Transparent, World background is transparent with premultiplied alpha")),
                default="SKY")
    
        use_shadows: BoolProperty(
                name="Shadows",
                description="Calculate shadows while rendering",
                default=True)
    
    
        max_trace_level: IntProperty(
    
                description="Number of reflections/refractions allowed on ray "
                            "path",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                min=1, max=256, default=5)
    
    
    #######NEW from Lanuhum
    
        adc_bailout_enable: BoolProperty(
    
        adc_bailout: FloatProperty(
    
                name="ADC Bailout",
                description="",
                min=0.0, max=1000.0,default=0.00392156862745, precision=3)
    
    
        ambient_light_enable: BoolProperty(
    
        ambient_light: FloatVectorProperty(
    
                name="Ambient Light",
                description="Ambient light is used to simulate the effect of inter-diffuse reflection",
    
                precision=4, step=0.01, min=0, soft_max=1,
    
                default=(1, 1, 1), options={'ANIMATABLE'}, subtype='COLOR',
        )
    
        global_settings_advanced: BoolProperty(
    
        irid_wavelength_enable: BoolProperty(
    
        irid_wavelength: FloatVectorProperty(
    
                name="Irid Wavelength",
                description=(
                    "Iridescence calculations depend upon the dominant "
                    "wavelengths of the primary colors of red, green and blue light"
                ),
    
                precision=4, step=0.01, min=0, soft_max=1,
                default=(0.25,0.18,0.14), options={'ANIMATABLE'}, subtype='COLOR')
    
    
        charset: EnumProperty(
    
                description="This allows you to specify the assumed character set of all text strings",
    
                items=(("ascii", "ASCII", ""),
                       ("utf8", "UTF-8", ""),
                       ("sys", "SYS", "")),
                default="utf8")
    
    
        max_intersections_enable: BoolProperty(
    
        max_intersections: IntProperty(
    
                description="POV-Ray uses a set of internal stacks to collect ray/object intersection points",
    
        number_of_waves_enable: BoolProperty(
    
        number_of_waves: IntProperty(
    
                description=(
                    "The waves and ripples patterns are generated by summing a series of waves, "
                    "each with a slightly different center and size"
                ),
    
        noise_generator_enable: BoolProperty(
    
        noise_generator: IntProperty(
    
                description="There are three noise generators implemented",
    
        ########################### PHOTONS #######################################
    
        photon_enable: BoolProperty(
    
                name="Photons",
                description="Enable global photons",
                default=False)
    
    
        photon_enable_count: BoolProperty(
    
                name="Spacing / Count",
                description="Enable count photons",
                default=False)
    
    
        photon_count: IntProperty(
    
                name="Count",
                description="Photons count",
                min=1, max=100000000, default=20000)
    
        photon_spacing: FloatProperty(
    
                description="Average distance between photons on surfaces. half "
                            "this get four times as many surface photons",
                min=0.001, max=1.000, default=0.005,
                soft_min=0.001, soft_max=1.000, precision=3)
    
        photon_max_trace_level: IntProperty(
    
                description="Number of reflections/refractions allowed on ray "
                            "path",
    
                min=1, max=256, default=5)
    
    
        photon_adc_bailout: FloatProperty(
    
                description="The adc_bailout for photons. Use adc_bailout = "
    
                            "0.01 / brightest_ambient_object for good results",
    
                min=0.0, max=1000.0, default=0.1,
                soft_min=0.0, soft_max=1.0, precision=3)
    
        photon_gather_min: IntProperty(
    
                name="Gather Min", description="Minimum number of photons gathered"
                                               "for each point",
    
                min=1, max=256, default=20)
    
    
        photon_gather_max: IntProperty(
    
                name="Gather Max", description="Maximum number of photons gathered for each point",
                min=1, max=256, default=100)
    
        photon_map_file_save_load: EnumProperty(
    
                name="Operation",
                description="Load or Save photon map file",
                items=(("NONE", "None", ""),
                       ("save", "Save", ""),
                       ("load", "Load", "")),
                default="NONE")
    
    
        photon_map_filename: StringProperty(
    
                name="Filename",
                description="",
                maxlen=1024)
    
    
        photon_map_dir: StringProperty(
    
                name="Directory",
                description="",
                maxlen=1024, subtype="DIR_PATH")
    
    
        photon_map_file: StringProperty(
    
                name="File",
                description="",
                maxlen=1024, subtype="FILE_PATH")
    
        #########RADIOSITY########
    
        radio_adc_bailout: FloatProperty(
    
                description="The adc_bailout for radiosity rays. Use "
    
                            "adc_bailout = 0.01 / brightest_ambient_object for good results",
    
                min=0.0, max=1000.0, soft_min=0.0, soft_max=1.0, default=0.0039, precision=4)
    
        radio_always_sample: BoolProperty(
    
                description="Only use the data from the pretrace step and not gather "
    
                            "any new samples during the final radiosity pass",
    
        radio_brightness: FloatProperty(
    
                description="Amount objects are brightened before being returned "
    
                min=0.0, max=1000.0, soft_min=0.0, soft_max=10.0, default=1.0)
    
    
        radio_count: IntProperty(
    
                description="Number of rays for each new radiosity value to be calculated "
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                min=1, max=10000, soft_max=1600, default=35)
    
        radio_error_bound: FloatProperty(
    
                description="One of the two main speed/quality tuning values, "
    
                min=0.0, max=1000.0, soft_min=0.1, soft_max=10.0, default=1.8)
    
    
        radio_gray_threshold: FloatProperty(
    
                description="One of the two main speed/quality tuning values, "
    
                min=0.0, max=1.0, soft_min=0, soft_max=1, default=0.0)
    
    
        radio_low_error_factor: FloatProperty(
    
                description="Just enough samples is slightly blotchy. Low error changes error "
    
                            "tolerance for less critical last refining pass",
    
                min=0.000001, max=1.0, soft_min=0.000001, soft_max=1.0, default=0.5)
    
        radio_media: BoolProperty(
    
                name="Media", description="Radiosity estimation can be affected by media",
    
        radio_subsurface: BoolProperty(
    
                name="Subsurface", description="Radiosity estimation can be affected by Subsurface Light Transport",
                default=False)
    
    
        radio_minimum_reuse: FloatProperty(
    
                description="Fraction of the screen width which sets the minimum radius of reuse "
    
                            "for each sample point (At values higher than 2% expect errors)",
    
                min=0.0, max=1.0, soft_min=0.1, soft_max=0.1, default=0.015, precision=3)
    
        radio_maximum_reuse: FloatProperty(
    
                name="Maximum Reuse",
                description="The maximum reuse parameter works in conjunction with, and is similar to that of minimum reuse, "
    
                            "the only difference being that it is an upper bound rather than a lower one",
    
        radio_nearest_count: IntProperty(
    
                description="Number of old ambient values blended together to "
    
                min=1, max=20, default=1)
    
        radio_normal: BoolProperty(
    
                name="Normals", description="Radiosity estimation can be affected by normals",
                default=False)
    
    
        radio_recursion_limit: IntProperty(
    
                description="how many recursion levels are used to calculate "
    
                min=1, max=20, default=1)
    
    Luca Bonavita's avatar
    Luca Bonavita committed
    
    
        radio_pretrace_start: FloatProperty(
    
                description="Fraction of the screen width which sets the size of the "
    
                            "blocks in the mosaic preview first pass",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                min=0.01, max=1.00, soft_min=0.02, soft_max=1.0, default=0.08)
    
    
        radio_pretrace_end: FloatProperty(
    
                description="Fraction of the screen width which sets the size of the blocks "
    
                min=0.000925, max=1.00, soft_min=0.01, soft_max=1.00, default=0.04, precision=3)
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
    
    
    ###############################################################################
    # Material POV properties.
    ###############################################################################
    
    class MaterialTextureSlot(PropertyGroup):
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
        """Declare material texture slot level properties for UI and translated to POV."""
    
        bl_idname="pov_texture_slots",
    
        bl_description="Texture_slots from Blender-2.79",
        
        texture : StringProperty(update=active_texture_name_from_uilist)
        texture_search : StringProperty(update=active_texture_name_from_search)
    
    
        alpha_factor: FloatProperty(
                name="Alpha",
                description="Amount texture affects alpha",
                default = 0.0)
    
        ambient_factor: FloatProperty(
                name="",
                description="Amount texture affects ambient",
                default = 0.0)
    
        bump_method: EnumProperty(
                name="",
                description="Method to use for bump mapping",
                items=(("BUMP_ORIGINAL", "Bump Original", ""),
                       ("BUMP_COMPATIBLE", "Bump Compatible", ""),
                       ("BUMP_DEFAULT", "Bump Default", ""),
                       ("BUMP_BEST_QUALITY", "Bump Best Quality", "")),
                default="BUMP_ORIGINAL")            
    
        bump_objectspace: EnumProperty(
                name="",
                description="Space to apply bump mapping in",
                items=(("BUMP_VIEWSPACE", "Bump Viewspace", ""),
                       ("BUMP_OBJECTSPACE", "Bump Objectspace", ""),
                       ("BUMP_TEXTURESPACE", "Bump Texturespace", "")),
                default="BUMP_VIEWSPACE")
    
        density_factor: FloatProperty(
                name="",
                description="Amount texture affects density",
                default = 0.0)
    
        diffuse_color_factor: FloatProperty(
                name="",
                description="Amount texture affects diffuse color",
                default = 0.0)
    
        diffuse_factor: FloatProperty(
                name="",
                description="Amount texture affects diffuse reflectivity",
                default = 0.0)
    
        displacement_factor: FloatProperty(
                name="",
                description="Amount texture displaces the surface",
                default = 0.0)
    
        emission_color_factor: FloatProperty(
                name="",
                description="Amount texture affects emission color",
                default = 0.0)
    
        emission_factor: FloatProperty(
                name="",
                description="Amount texture affects emission",
                default = 0.0)
    
        emit_factor: FloatProperty(
                name="",
                description="Amount texture affects emission",
                default = 0.0)
    
        hardness_factor: FloatProperty(
                name="",
                description="Amount texture affects hardness",
                default = 0.0)
    
        mapping: EnumProperty(
                name="",
                description="",
                items=(("FLAT", "Flat", ""),
                       ("CUBE", "Cube", ""),
                       ("TUBE", "Tube", ""),
                       ("SPHERE", "Sphere", "")),
                default="FLAT")            
    
        mapping_x: EnumProperty(
                name="",
                description="",
                items=(("NONE", "", ""),
                       ("X", "", ""),
                       ("Y", "", ""),
                       ("Z", "", "")),
                default="NONE")      
    
        mapping_y: EnumProperty(
                name="",
                description="",
                items=(("NONE", "", ""),
                       ("X", "", ""),
                       ("Y", "", ""),
                       ("Z", "", "")),
                default="NONE")   
    
        mapping_z: EnumProperty(
                name="",
                description="",
                items=(("NONE", "", ""),
                       ("X", "", ""),
                       ("Y", "", ""),
                       ("Z", "", "")),
                default="NONE")   
    
        mirror_factor: FloatProperty(
                name="",
                description="Amount texture affects mirror color",
                default = 0.0)
    
        normal_factor: FloatProperty(
                name="",
                description="Amount texture affects normal values",
                default = 0.0)
    
        normal_map_space: EnumProperty(
                name="",
                description="Sets space of normal map image",
                items=(("CAMERA", "Camera", ""),
                       ("WORLD", "World", ""),
                       ("OBJECT", "Object", ""),
                       ("TANGENT", "Tangent", "")),
                default="CAMERA") 
    
        object: StringProperty(
                name="Object",
                description="Object to use for mapping with Object texture coordinates",
                default ="")
    
        raymir_factor: FloatProperty(
                name="",
                description="Amount texture affects ray mirror",
                default = 0.0)
    
        reflection_color_factor: FloatProperty(
                name="",
                description="Amount texture affects color of out-scattered light",
                default = 0.0)
    
        reflection_factor: FloatProperty(
                name="",
                description="Amount texture affects brightness of out-scattered light",
                default = 0.0)
    
        scattering_factor: FloatProperty(
                name="",
                description="Amount texture affects scattering",
                default = 0.0)
    
        specular_color_factor: FloatProperty(
                name="",
                description="Amount texture affects specular color",
                default = 0.0)
    
        specular_factor: FloatProperty(
                name="",
                description="Amount texture affects specular reflectivity",
                default = 0.0)
    
        texture_coords: EnumProperty(
                name="",
                description="",
                items=(("GLOBAL", "Global", ""),
                       ("OBJECT", "Object", ""),
                       ("UV", "UV", ""),
                       ("ORCO", "Original Coordinates", ""),
                       ("STRAND", "Strand", ""),
                       ("STICKY", "Sticky", ""),
                       ("WINDOW", "Window", ""),
                       ("NORMAL", "Normal", ""),
                       ("REFLECTION", "Reflection", ""),
                       ("STRESS", "Stress", ""),
                       ("TANGENT", "Tangent", "")),
                default="GLOBAL")
    
        translucency_factor: FloatProperty(
                name="",
                description="Amount texture affects translucency",
                default = 0.0)
    
        transmission_color_factor: FloatProperty(
                name="",
                description="Amount texture affects result color after light has been scattered/absorbed",
                default = 0.0)
    
        use: BoolProperty(
                name="",
                description="Enable this material texture slot",
    
    Maurice Raybaud's avatar
    Maurice Raybaud committed
                default = True)
    
    
        use_from_dupli: BoolProperty(
                name="",
                description="Dupli’s instanced from verts, faces or particles, inherit texture coordinate from their parent",
                default = False)
    
        use_from_original: BoolProperty(
                name="",
                description="Dupli’s derive their object coordinates from the original objects transformation",
                default = False)
    
        use_map_alpha: BoolProperty(
                name="",
                description="Causes the texture to affect the alpha value",
                default = False)
    
        use_map_ambient: BoolProperty(
                name="",
                description="Causes the texture to affect the value of ambient",
                default = False)
    
        use_map_color_diffuse: BoolProperty(
                name="",
                description="Causes the texture to affect basic color of the material",
                default = False)
    
        use_map_color_emission: BoolProperty(
                name="",
                description="Causes the texture to affect the color of emission",
                default = False)
    
        use_map_color_reflection: BoolProperty(
                name="",
                description="Causes the texture to affect the color of scattered light",
                default = False)
    
        use_map_color_spec: BoolProperty(
                name="",
                description="Causes the texture to affect the specularity color",
                default = False)
    
        use_map_color_transmission: BoolProperty(
                name="",
                description="Causes the texture to affect the result color after other light has been scattered/absorbed",
                default = False)
    
        use_map_density: BoolProperty(
                name="",
                description="Causes the texture to affect the volume’s density",
                default = False)
    
        use_map_diffuse: BoolProperty(
                name="",
                description="Causes the texture to affect the value of the materials diffuse reflectivity",
                default = False)
    
        use_map_displacement: BoolProperty(
                name="",
                description="Let the texture displace the surface",
                default = False)
    
        use_map_emission: BoolProperty(
                name="",
                description="Causes the texture to affect the volume’s emission",
                default = False)
    
        use_map_emit: BoolProperty(
                name="",
                description="Causes the texture to affect the emit value",
                default = False)
    
        use_map_hardness: BoolProperty(
                name="",
                description="Causes the texture to affect the hardness value",
                default = False)
    
        use_map_mirror: BoolProperty(
                name="",
                description="Causes the texture to affect the mirror color",
                default = False)
    
        use_map_normal: BoolProperty(
                name="",
                description="Causes the texture to affect the rendered normal",
                default = False)
    
        use_map_raymir: BoolProperty(
                name="",
                description="Causes the texture to affect the ray-mirror value",
                default = False)
    
        use_map_reflect: BoolProperty(
                name="",
                description="Causes the texture to affect the reflected light’s brightness",
                default = False)
    
        use_map_scatter: BoolProperty(
                name="",
                description="Causes the texture to affect the volume’s scattering",
                default = False)
    
        use_map_specular: BoolProperty(
                name="",
                description="Causes the texture to affect the value of specular reflectivity",
                default = False)
    
        use_map_translucency: BoolProperty(
                name="",
                description="Causes the texture to affect the translucency value",
                default = False)
    
        use_map_warp: BoolProperty(
                name="",
                description="Let the texture warp texture coordinates of next channels",
                default = False)
    
        uv_layer: StringProperty(
                name="",
                description="UV layer to use for mapping with UV texture coordinates",
                default = "")
    
        warp_factor: FloatProperty(
                name="",
                description="Amount texture affects texture coordinates of next channels",
                default = 0.0)
        
     
    #######################################"    
        
        blend_factor: FloatProperty(
                    name="Blend",
                    description="Amount texture affects color progression of the "
                                "background",
                    soft_min=0.0, soft_max=1.0, default=1.0)
    
        horizon_factor: FloatProperty(
                    name="Horizon",
                    description="Amount texture affects color of the horizon"
                                "",
                    soft_min=0.0, soft_max=1.0, default=1.0)
    
        object: StringProperty(
                    name="Object",
                    description="Object to use for mapping with Object texture coordinates",
                    default="")
    
        texture_coords: EnumProperty(