diff options
Diffstat (limited to 'render_povray/texturing_properties.py')
-rwxr-xr-x | render_povray/texturing_properties.py | 1137 |
1 files changed, 1137 insertions, 0 deletions
diff --git a/render_povray/texturing_properties.py b/render_povray/texturing_properties.py new file mode 100755 index 00000000..bb89ee02 --- /dev/null +++ b/render_povray/texturing_properties.py @@ -0,0 +1,1137 @@ +# ##### BEGIN GPL LICENSE BLOCK ##### +# +# 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 ##### + +# <pep8 compliant> +"""Declare texturing properties controllable in UI.""" + +import bpy +from bpy.utils import register_class, unregister_class +from bpy.types import PropertyGroup +from bpy.props import ( + FloatVectorProperty, + StringProperty, + BoolProperty, + IntProperty, + FloatProperty, + EnumProperty, + PointerProperty, + CollectionProperty, +) + +from .shading_properties import active_texture_name_from_uilist, active_texture_name_from_search + +############################################################################### +# Texture slots (Material context) exported as POV texture properties. +############################################################################### +class MaterialTextureSlot(PropertyGroup): + """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",) + + # Adding a "real" texture datablock as property is not possible + # (or at least not easy through a dynamically populated EnumProperty). + # That's why we'll use a prop_search() UILayout function in texturing_gui.py. + # So we'll assign the name of the needed texture datablock to the below StringProperty. + texture: StringProperty(update=active_texture_name_from_uilist) + # and use another temporary StringProperty to change the linked data + texture_search: StringProperty( + name="", update=active_texture_name_from_search, description="Browse Texture to be linked" + ) + + alpha_factor: FloatProperty( + name="Alpha", description="Amount texture affects alpha", default=1.0 + ) + + ambient_factor: FloatProperty( + name="", description="Amount texture affects ambient", default=1.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=1.0 + ) + + diffuse_color_factor: FloatProperty( + name="", description="Amount texture affects diffuse color", default=1.0 + ) + + diffuse_factor: FloatProperty( + name="", description="Amount texture affects diffuse reflectivity", default=1.0 + ) + + displacement_factor: FloatProperty( + name="", description="Amount texture displaces the surface", default=0.2 + ) + + emission_color_factor: FloatProperty( + name="", description="Amount texture affects emission color", default=1.0 + ) + + emission_factor: FloatProperty( + name="", description="Amount texture affects emission", default=1.0 + ) + + emit_factor: FloatProperty(name="", description="Amount texture affects emission", default=1.0) + + hardness_factor: FloatProperty( + name="", description="Amount texture affects hardness", default=1.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=1.0 + ) + + normal_factor: FloatProperty( + name="", description="Amount texture affects normal values", default=1.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=1.0 + ) + + reflection_color_factor: FloatProperty( + name="", description="Amount texture affects color of out-scattered light", default=1.0 + ) + + reflection_factor: FloatProperty( + name="", description="Amount texture affects brightness of out-scattered light", default=1.0 + ) + + scattering_factor: FloatProperty( + name="", description="Amount texture affects scattering", default=1.0 + ) + + specular_color_factor: FloatProperty( + name="", description="Amount texture affects specular color", default=1.0 + ) + + specular_factor: FloatProperty( + name="", description="Amount texture affects specular reflectivity", default=1.0 + ) + + offset: FloatVectorProperty( + name="Offset", + description=("Fine tune of the texture mapping X, Y and Z locations "), + precision=4, + step=0.1, + soft_min=-100.0, + soft_max=100.0, + default=(0.0, 0.0, 0.0), + options={"ANIMATABLE"}, + subtype="TRANSLATION", + ) + + scale: FloatVectorProperty( + name="Size", + subtype="XYZ", + size=3, + description="Set scaling for the texture’s X, Y and Z sizes ", + precision=4, + step=0.1, + soft_min=-100.0, + soft_max=100.0, + default=(1.0, 1.0, 1.0), + options={"ANIMATABLE"}, + ) + + 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=1.0 + ) + + transmission_color_factor: FloatProperty( + name="", + description="Amount texture affects result color after light has been scattered/absorbed", + default=1.0, + ) + + use: BoolProperty(name="", description="Enable this material texture slot", 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_interpolation: BoolProperty( + name="", description="Interpolates pixels using selected filter ", 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=True, + ) + + 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( + name="Coordinates", + description="Texture coordinates used to map the texture onto the background", + items=( + ("VIEW", "View", "Use view vector for the texture coordinates"), + ( + "GLOBAL", + "Global", + "Use global coordinates for the texture coordinates (interior mist)", + ), + ( + "ANGMAP", + "AngMap", + "Use 360 degree angular coordinates, e.g. for spherical light probes", + ), + ("SPHERE", "Sphere", "For 360 degree panorama sky, spherical mapped, only top half"), + ("EQUIRECT", "Equirectangular", "For 360 degree panorama sky, equirectangular mapping"), + ("TUBE", "Tube", "For 360 degree panorama sky, cylindrical mapped, only top half"), + ("OBJECT", "Object", "Use linked object’s coordinates for texture coordinates"), + ), + default="VIEW", + ) + + use_map_blend: BoolProperty( + name="Blend Map", description="Affect the color progression of the background", default=True + ) + + use_map_horizon: BoolProperty( + name="Horizon Map", description="Affect the color of the horizon", default=False + ) + + use_map_zenith_down: BoolProperty( + name="", description="Affect the color of the zenith below", default=False + ) + + use_map_zenith_up: BoolProperty( + name="Zenith Up Map", description="Affect the color of the zenith above", default=False + ) + + zenith_down_factor: FloatProperty( + name="Zenith Down", + description="Amount texture affects color of the zenith below", + soft_min=0.0, + soft_max=1.0, + default=1.0, + ) + + zenith_up_factor: FloatProperty( + name="Zenith Up", + description="Amount texture affects color of the zenith above", + soft_min=0.0, + soft_max=1.0, + default=1.0, + ) + + +############################################################################### +# Texture slots (World context) exported as POV texture properties. +############################################################################### +class WorldTextureSlot(PropertyGroup): + """Declare world texture slot level properties for UI and translated to POV.""" + + bl_idname = ("pov_texture_slots",) + bl_description = ("Texture_slots from Blender-2.79",) + + # Adding a "real" texture datablock as property is not possible + # (or at least not easy through a dynamically populated EnumProperty). + # That's why we'll use a prop_search() UILayout function in ui.py. + # So we'll assign the name of the needed texture datablock to the below StringProperty. + texture: StringProperty(update=active_texture_name_from_uilist) + # and use another temporary StringProperty to change the linked data + texture_search: StringProperty( + name="", update=active_texture_name_from_search, description="Browse Texture to be linked" + ) + + 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="", + ) + + offset: FloatVectorProperty( + name="Offset", + description=("Fine tune of the texture mapping X, Y and Z locations "), + precision=4, + step=0.1, + soft_min=-100.0, + soft_max=100.0, + default=(0.0, 0.0, 0.0), + options={"ANIMATABLE"}, + subtype="TRANSLATION", + ) + + scale: FloatVectorProperty( + name="Size", + subtype="XYZ", + size=3, + description="Set scaling for the texture’s X, Y and Z sizes ", + precision=4, + step=0.1, + soft_min=-100.0, + soft_max=100.0, + default=(1.0, 1.0, 1.0), + options={"ANIMATABLE"}, + ) + + texture_coords: EnumProperty( + name="Coordinates", + description="Texture coordinates used to map the texture onto the background", + items=( + ("VIEW", "View", "Use view vector for the texture coordinates"), + ( + "GLOBAL", + "Global", + "Use global coordinates for the texture coordinates (interior mist)", + ), + ( + "ANGMAP", + "AngMap", + "Use 360 degree angular coordinates, e.g. for spherical light probes", + ), + ("SPHERE", "Sphere", "For 360 degree panorama sky, spherical mapped, only top half"), + ("EQUIRECT", "Equirectangular", "For 360 degree panorama sky, equirectangular mapping"), + ("TUBE", "Tube", "For 360 degree panorama sky, cylindrical mapped, only top half"), + ("OBJECT", "Object", "Use linked object’s coordinates for texture coordinates"), + ), + default="VIEW", + ) + + use_map_blend: BoolProperty( + name="Blend Map", description="Affect the color progression of the background", default=True + ) + + use_map_horizon: BoolProperty( + name="Horizon Map", description="Affect the color of the horizon", default=False + ) + + use_map_zenith_down: BoolProperty( + name="", description="Affect the color of the zenith below", default=False + ) + + use_map_zenith_up: BoolProperty( + name="Zenith Up Map", description="Affect the color of the zenith above", default=False + ) + + zenith_down_factor: FloatProperty( + name="Zenith Down", + description="Amount texture affects color of the zenith below", + soft_min=0.0, + soft_max=1.0, + default=1.0, + ) + + zenith_up_factor: FloatProperty( + name="Zenith Up", + description="Amount texture affects color of the zenith above", + soft_min=0.0, + soft_max=1.0, + default=1.0, + ) + + +############################################################################### +# Space properties from removed former Blender Internal +############################################################################### + +# added below at superclass level so as to be available in World, Material, +# and Light, for texture slots use + +bpy.types.ID.use_limited_texture_context = BoolProperty( + name="", + description="Use the limited version of texture user (for ‘old shading’ mode)", + default=True, +) +bpy.types.ID.texture_context = EnumProperty( + name="Texture context", + description="Type of texture data to display and edit", + items=( + ("MATERIAL", "", "Show material textures", "MATERIAL", 0), # "Show material textures" + ("WORLD", "", "Show world textures", "WORLD", 1), # "Show world textures" + ("LIGHT", "", "Show lamp textures", "LIGHT", 2), # "Show lamp textures" + ("PARTICLES", "", "Show particles textures", "PARTICLES", 3), # "Show particles textures" + ("LINESTYLE", "", "Show linestyle textures", "LINE_DATA", 4), # "Show linestyle textures" + ("OTHER", "", "Show other data textures", "TEXTURE_DATA", 5), # "Show other data textures" + ), + default="MATERIAL", +) +# bpy.types.ID.active_texture_index = IntProperty( +# name = "Index for texture_slots", +# default = 0, +# ) + + +############################################################################### +# Texture POV properties. +############################################################################### + + +class RenderPovSettingsTexture(PropertyGroup): + """Declare texture level properties controllable in UI and translated to POV.""" + + # former Space properties from removed Blender Internal + active_texture_index: IntProperty(name="Index for texture_slots", min=0, max=17, default=0) + + use_limited_texture_context: BoolProperty( + name="", + description="Use the limited version of texture user (for ‘old shading’ mode)", + default=True, + ) + + texture_context: EnumProperty( + name="Texture context", + description="Type of texture data to display and edit", + items=( + ("MATERIAL", "", "Show material textures", "MATERIAL", 0), # "Show material textures" + ("WORLD", "", "Show world textures", "WORLD", 1), # "Show world textures" + ("LAMP", "", "Show lamp textures", "LIGHT", 2), # "Show lamp textures" + ( + "PARTICLES", + "", + "Show particles textures", + "PARTICLES", + 3, + ), # "Show particles textures" + ( + "LINESTYLE", + "", + "Show linestyle textures", + "LINE_DATA", + 4, + ), # "Show linestyle textures" + ( + "OTHER", + "", + "Show other data textures", + "TEXTURE_DATA", + 5, + ), # "Show other data textures" + ), + default="MATERIAL", + ) + + # Custom texture gamma + tex_gamma_enable: BoolProperty( + name="Enable custom texture gamma", + description="Notify some custom gamma for which texture has been precorrected " + "without the file format carrying it and only if it differs from your " + "OS expected standard (see pov doc)", + default=False, + ) + + tex_gamma_value: FloatProperty( + name="Custom texture gamma", + description="value for which the file was issued e.g. a Raw photo is gamma 1.0", + min=0.45, + max=5.00, + soft_min=1.00, + soft_max=2.50, + default=1.00, + ) + + ##################################CustomPOV Code############################ + # commented out below if we wanted custom pov code in texture only, inside exported material: + # replacement_text = StringProperty( + # name="Declared name:", + # description="Type the declared name in custom POV code or an external .inc " + # "it points at. pigment {} expected", + # default="") + + tex_pattern_type: EnumProperty( + name="Texture_Type", + description="Choose between Blender or POV parameters to specify texture", + items=( + ("agate", "Agate", "", "PLUGIN", 0), + ("aoi", "Aoi", "", "PLUGIN", 1), + ("average", "Average", "", "PLUGIN", 2), + ("boxed", "Boxed", "", "PLUGIN", 3), + ("bozo", "Bozo", "", "PLUGIN", 4), + ("bumps", "Bumps", "", "PLUGIN", 5), + ("cells", "Cells", "", "PLUGIN", 6), + ("crackle", "Crackle", "", "PLUGIN", 7), + ("cubic", "Cubic", "", "PLUGIN", 8), + ("cylindrical", "Cylindrical", "", "PLUGIN", 9), + ("density_file", "Density", "(.df3)", "PLUGIN", 10), + ("dents", "Dents", "", "PLUGIN", 11), + ("fractal", "Fractal", "", "PLUGIN", 12), + ("function", "Function", "", "PLUGIN", 13), + ("gradient", "Gradient", "", "PLUGIN", 14), + ("granite", "Granite", "", "PLUGIN", 15), + ("image_pattern", "Image pattern", "", "PLUGIN", 16), + ("leopard", "Leopard", "", "PLUGIN", 17), + ("marble", "Marble", "", "PLUGIN", 18), + ("onion", "Onion", "", "PLUGIN", 19), + ("pigment_pattern", "pigment pattern", "", "PLUGIN", 20), + ("planar", "Planar", "", "PLUGIN", 21), + ("quilted", "Quilted", "", "PLUGIN", 22), + ("radial", "Radial", "", "PLUGIN", 23), + ("ripples", "Ripples", "", "PLUGIN", 24), + ("slope", "Slope", "", "PLUGIN", 25), + ("spherical", "Spherical", "", "PLUGIN", 26), + ("spiral1", "Spiral1", "", "PLUGIN", 27), + ("spiral2", "Spiral2", "", "PLUGIN", 28), + ("spotted", "Spotted", "", "PLUGIN", 29), + ("waves", "Waves", "", "PLUGIN", 30), + ("wood", "Wood", "", "PLUGIN", 31), + ("wrinkles", "Wrinkles", "", "PLUGIN", 32), + ("brick", "Brick", "", "PLUGIN", 33), + ("checker", "Checker", "", "PLUGIN", 34), + ("hexagon", "Hexagon", "", "PLUGIN", 35), + ("object", "Mesh", "", "PLUGIN", 36), + ("emulator", "Blender Type Emulator", "", "SCRIPTPLUGINS", 37), + ), + default="emulator", + ) + + magnet_style: EnumProperty( + name="Magnet style", + description="magnet or julia", + items=(("mandel", "Mandelbrot", ""), ("julia", "Julia", "")), + default="julia", + ) + + magnet_type: IntProperty(name="Magnet_type", description="1 or 2", min=1, max=2, default=2) + + warp_types: EnumProperty( + name="Warp Types", + description="Select the type of warp", + items=( + ("PLANAR", "Planar", ""), + ("CUBIC", "Cubic", ""), + ("SPHERICAL", "Spherical", ""), + ("TOROIDAL", "Toroidal", ""), + ("CYLINDRICAL", "Cylindrical", ""), + ("NONE", "None", "No indentation"), + ), + default="NONE", + ) + + warp_orientation: EnumProperty( + name="Warp Orientation", + description="Select the orientation of warp", + items=(("x", "X", ""), ("y", "Y", ""), ("z", "Z", "")), + default="y", + ) + + wave_type: EnumProperty( + name="Waves type", + description="Select the type of waves", + items=( + ("ramp", "Ramp", ""), + ("sine", "Sine", ""), + ("scallop", "Scallop", ""), + ("cubic", "Cubic", ""), + ("poly", "Poly", ""), + ("triangle", "Triangle", ""), + ), + default="ramp", + ) + + gen_noise: IntProperty( + name="Noise Generators", description="Noise Generators", min=1, max=3, default=1 + ) + + warp_dist_exp: FloatProperty( + name="Distance exponent", description="Distance exponent", min=0.0, max=100.0, default=1.0 + ) + + warp_tor_major_radius: FloatProperty( + name="Major radius", + description="Torus is distance from major radius", + min=0.0, + max=5.0, + default=1.0, + ) + + warp_turbulence_x: FloatProperty( + name="Turbulence X", description="Turbulence X", min=0.0, max=5.0, default=0.0 + ) + + warp_turbulence_y: FloatProperty( + name="Turbulence Y", description="Turbulence Y", min=0.0, max=5.0, default=0.0 + ) + + warp_turbulence_z: FloatProperty( + name="Turbulence Z", description="Turbulence Z", min=0.0, max=5.0, default=0.0 + ) + + modifier_octaves: IntProperty( + name="Turbulence octaves", description="Turbulence octaves", min=1, max=10, default=1 + ) + + modifier_lambda: FloatProperty( + name="Turbulence lambda", description="Turbulence lambda", min=0.0, max=5.0, default=1.00 + ) + + modifier_omega: FloatProperty( + name="Turbulence omega", description="Turbulence omega", min=0.0, max=10.0, default=1.00 + ) + + modifier_phase: FloatProperty( + name="Phase", + description="The phase value causes the map entries to be shifted so that the map " + "starts and ends at a different place", + min=0.0, + max=2.0, + default=0.0, + ) + + modifier_frequency: FloatProperty( + name="Frequency", + description="The frequency keyword adjusts the number of times that a color map " + "repeats over one cycle of a pattern", + min=0.0, + max=25.0, + default=2.0, + ) + + modifier_turbulence: FloatProperty( + name="Turbulence", description="Turbulence", min=0.0, max=5.0, default=2.0 + ) + + modifier_numbers: IntProperty(name="Numbers", description="Numbers", min=1, max=27, default=2) + + modifier_control0: IntProperty( + name="Control0", description="Control0", min=0, max=100, default=1 + ) + + modifier_control1: IntProperty( + name="Control1", description="Control1", min=0, max=100, default=1 + ) + + brick_size_x: FloatProperty( + name="Brick size x", description="", min=0.0000, max=1.0000, default=0.2500 + ) + + brick_size_y: FloatProperty( + name="Brick size y", description="", min=0.0000, max=1.0000, default=0.0525 + ) + + brick_size_z: FloatProperty( + name="Brick size z", description="", min=0.0000, max=1.0000, default=0.1250 + ) + + brick_mortar: FloatProperty( + name="Mortar", description="Mortar", min=0.000, max=1.500, default=0.01 + ) + + julia_complex_1: FloatProperty( + name="Julia Complex 1", description="", min=0.000, max=1.500, default=0.360 + ) + + julia_complex_2: FloatProperty( + name="Julia Complex 2", description="", min=0.000, max=1.500, default=0.250 + ) + + f_iter: IntProperty(name="Fractal Iteration", description="", min=0, max=100, default=20) + + f_exponent: IntProperty(name="Fractal Exponent", description="", min=2, max=33, default=2) + + f_ior: IntProperty(name="Fractal Interior", description="", min=1, max=6, default=1) + + f_ior_fac: FloatProperty( + name="Fractal Interior Factor", description="", min=0.0, max=10.0, default=1.0 + ) + + f_eor: IntProperty(name="Fractal Exterior", description="", min=1, max=8, default=1) + + f_eor_fac: FloatProperty( + name="Fractal Exterior Factor", description="", min=0.0, max=10.0, default=1.0 + ) + + grad_orient_x: IntProperty( + name="Gradient orientation X", description="", min=0, max=1, default=0 + ) + + grad_orient_y: IntProperty( + name="Gradient orientation Y", description="", min=0, max=1, default=1 + ) + + grad_orient_z: IntProperty( + name="Gradient orientation Z", description="", min=0, max=1, default=0 + ) + + pave_sides: EnumProperty( + name="Pavement sides", + description="", + items=(("3", "3", ""), ("4", "4", ""), ("6", "6", "")), + default="3", + ) + + pave_pat_2: IntProperty( + name="Pavement pattern 2", description="maximum: 2", min=1, max=2, default=2 + ) + + pave_pat_3: IntProperty( + name="Pavement pattern 3", description="maximum: 3", min=1, max=3, default=3 + ) + + pave_pat_4: IntProperty( + name="Pavement pattern 4", description="maximum: 4", min=1, max=4, default=4 + ) + + pave_pat_5: IntProperty( + name="Pavement pattern 5", description="maximum: 5", min=1, max=5, default=5 + ) + + pave_pat_7: IntProperty( + name="Pavement pattern 7", description="maximum: 7", min=1, max=7, default=7 + ) + + pave_pat_12: IntProperty( + name="Pavement pattern 12", description="maximum: 12", min=1, max=12, default=12 + ) + + pave_pat_22: IntProperty( + name="Pavement pattern 22", description="maximum: 22", min=1, max=22, default=22 + ) + + pave_pat_35: IntProperty( + name="Pavement pattern 35", description="maximum: 35", min=1, max=35, default=35 + ) + + pave_tiles: IntProperty( + name="Pavement tiles", + description="If sides = 6, maximum tiles 5!!!", + min=1, + max=6, + default=1, + ) + + pave_form: IntProperty(name="Pavement form", description="", min=0, max=4, default=0) + + #########FUNCTIONS############################################################################# + #########FUNCTIONS############################################################################# + + func_list: EnumProperty( + name="Functions", + description="Select the function for create pattern", + items=( + ("NONE", "None", "No indentation"), + ("f_algbr_cyl1", "Algbr cyl1", ""), + ("f_algbr_cyl2", "Algbr cyl2", ""), + ("f_algbr_cyl3", "Algbr cyl3", ""), + ("f_algbr_cyl4", "Algbr cyl4", ""), + ("f_bicorn", "Bicorn", ""), + ("f_bifolia", "Bifolia", ""), + ("f_blob", "Blob", ""), + ("f_blob2", "Blob2", ""), + ("f_boy_surface", "Boy surface", ""), + ("f_comma", "Comma", ""), + ("f_cross_ellipsoids", "Cross ellipsoids", ""), + ("f_crossed_trough", "Crossed trough", ""), + ("f_cubic_saddle", "Cubic saddle", ""), + ("f_cushion", "Cushion", ""), + ("f_devils_curve", "Devils curve", ""), + ("f_devils_curve_2d", "Devils curve 2d", ""), + ("f_dupin_cyclid", "Dupin cyclid", ""), + ("f_ellipsoid", "Ellipsoid", ""), + ("f_enneper", "Enneper", ""), + ("f_flange_cover", "Flange cover", ""), + ("f_folium_surface", "Folium surface", ""), + ("f_folium_surface_2d", "Folium surface 2d", ""), + ("f_glob", "Glob", ""), + ("f_heart", "Heart", ""), + ("f_helical_torus", "Helical torus", ""), + ("f_helix1", "Helix1", ""), + ("f_helix2", "Helix2", ""), + ("f_hex_x", "Hex x", ""), + ("f_hex_y", "Hex y", ""), + ("f_hetero_mf", "Hetero mf", ""), + ("f_hunt_surface", "Hunt surface", ""), + ("f_hyperbolic_torus", "Hyperbolic torus", ""), + ("f_isect_ellipsoids", "Isect ellipsoids", ""), + ("f_kampyle_of_eudoxus", "Kampyle of eudoxus", ""), + ("f_kampyle_of_eudoxus_2d", "Kampyle of eudoxus 2d", ""), + ("f_klein_bottle", "Klein bottle", ""), + ("f_kummer_surface_v1", "Kummer surface v1", ""), + ("f_kummer_surface_v2", "Kummer surface v2", ""), + ("f_lemniscate_of_gerono", "Lemniscate of gerono", ""), + ("f_lemniscate_of_gerono_2d", "Lemniscate of gerono 2d", ""), + ("f_mesh1", "Mesh1", ""), + ("f_mitre", "Mitre", ""), + ("f_nodal_cubic", "Nodal cubic", ""), + ("f_noise3d", "Noise3d", ""), + ("f_noise_generator", "Noise generator", ""), + ("f_odd", "Odd", ""), + ("f_ovals_of_cassini", "Ovals of cassini", ""), + ("f_paraboloid", "Paraboloid", ""), + ("f_parabolic_torus", "Parabolic torus", ""), + ("f_ph", "Ph", ""), + ("f_pillow", "Pillow", ""), + ("f_piriform", "Piriform", ""), + ("f_piriform_2d", "Piriform 2d", ""), + ("f_poly4", "Poly4", ""), + ("f_polytubes", "Polytubes", ""), + ("f_quantum", "Quantum", ""), + ("f_quartic_paraboloid", "Quartic paraboloid", ""), + ("f_quartic_saddle", "Quartic saddle", ""), + ("f_quartic_cylinder", "Quartic cylinder", ""), + ("f_r", "R", ""), + ("f_ridge", "Ridge", ""), + ("f_ridged_mf", "Ridged mf", ""), + ("f_rounded_box", "Rounded box", ""), + ("f_sphere", "Sphere", ""), + ("f_spikes", "Spikes", ""), + ("f_spikes_2d", "Spikes 2d", ""), + ("f_spiral", "Spiral", ""), + ("f_steiners_roman", "Steiners roman", ""), + ("f_strophoid", "Strophoid", ""), + ("f_strophoid_2d", "Strophoid 2d", ""), + ("f_superellipsoid", "Superellipsoid", ""), + ("f_th", "Th", ""), + ("f_torus", "Torus", ""), + ("f_torus2", "Torus2", ""), + ("f_torus_gumdrop", "Torus gumdrop", ""), + ("f_umbrella", "Umbrella", ""), + ("f_witch_of_agnesi", "Witch of agnesi", ""), + ("f_witch_of_agnesi_2d", "Witch of agnesi 2d", ""), + ), + default="NONE", + ) + + func_x: FloatProperty(name="FX", description="", min=0.0, max=25.0, default=1.0) + + func_plus_x: EnumProperty( + name="Func plus x", + description="", + items=(("NONE", "None", ""), ("increase", "*", ""), ("plus", "+", "")), + default="NONE", + ) + + func_y: FloatProperty(name="FY", description="", min=0.0, max=25.0, default=1.0) + + func_plus_y: EnumProperty( + name="Func plus y", + description="", + items=(("NONE", "None", ""), ("increase", "*", ""), ("plus", "+", "")), + default="NONE", + ) + + func_z: FloatProperty(name="FZ", description="", min=0.0, max=25.0, default=1.0) + + func_plus_z: EnumProperty( + name="Func plus z", + description="", + items=(("NONE", "None", ""), ("increase", "*", ""), ("plus", "+", "")), + default="NONE", + ) + + func_P0: FloatProperty(name="P0", description="", min=0.0, max=25.0, default=1.0) + + func_P1: FloatProperty(name="P1", description="", min=0.0, max=25.0, default=1.0) + + func_P2: FloatProperty(name="P2", description="", min=0.0, max=25.0, default=1.0) + + func_P3: FloatProperty(name="P3", description="", min=0.0, max=25.0, default=1.0) + + func_P4: FloatProperty(name="P4", description="", min=0.0, max=25.0, default=1.0) + + func_P5: FloatProperty(name="P5", description="", min=0.0, max=25.0, default=1.0) + + func_P6: FloatProperty(name="P6", description="", min=0.0, max=25.0, default=1.0) + + func_P7: FloatProperty(name="P7", description="", min=0.0, max=25.0, default=1.0) + + func_P8: FloatProperty(name="P8", description="", min=0.0, max=25.0, default=1.0) + + func_P9: FloatProperty(name="P9", description="", min=0.0, max=25.0, default=1.0) + + ######################################### + tex_rot_x: FloatProperty(name="Rotate X", description="", min=-180.0, max=180.0, default=0.0) + + tex_rot_y: FloatProperty(name="Rotate Y", description="", min=-180.0, max=180.0, default=0.0) + + tex_rot_z: FloatProperty(name="Rotate Z", description="", min=-180.0, max=180.0, default=0.0) + + tex_mov_x: FloatProperty( + name="Move X", description="", min=-100000.0, max=100000.0, default=0.0 + ) + + tex_mov_y: FloatProperty( + name="Move Y", description="", min=-100000.0, max=100000.0, default=0.0 + ) + + tex_mov_z: FloatProperty( + name="Move Z", description="", min=-100000.0, max=100000.0, default=0.0 + ) + + tex_scale_x: FloatProperty(name="Scale X", description="", min=0.0, max=10000.0, default=1.0) + + tex_scale_y: FloatProperty(name="Scale Y", description="", min=0.0, max=10000.0, default=1.0) + + tex_scale_z: FloatProperty(name="Scale Z", description="", min=0.0, max=10000.0, default=1.0) + + +classes = (MaterialTextureSlot, WorldTextureSlot, RenderPovSettingsTexture) + + +def register(): + for cls in classes: + register_class(cls) + + bpy.types.Material.pov_texture_slots = CollectionProperty(type=MaterialTextureSlot) + bpy.types.World.pov_texture_slots = CollectionProperty(type=WorldTextureSlot) + bpy.types.Texture.pov = PointerProperty(type=RenderPovSettingsTexture) + + +def unregister(): + del bpy.types.Texture.pov + del bpy.types.World.pov_texture_slots + del bpy.types.Material.pov_texture_slots + + for cls in reversed(classes): + unregister_class(cls) |