Skip to content
Snippets Groups Projects
__init__.py 96.2 KiB
Newer Older
  • Learn to ignore specific revisions
  •     se_n2: FloatProperty(name = "Cross manipulator",
    
                        description = "Manipulates the shape of the cross-section",
                        default = 1.0, min = 0.01, max = 100.0,
                        update=prop_update_superellipsoid)
    
        se_edit: EnumProperty(items=[("NOTHING", "Nothing", ""),
    
                                    ("NGONS", "N-Gons", ""),
                                    ("TRIANGLES", "Triangles", "")],
                        name="Fill up and down",
                        description="",
                        default='TRIANGLES',
                        update=prop_update_superellipsoid)
    #############Used for loft and Superellipsoid, etc.
    
        curveshape: EnumProperty(
    
                name="Povray Shape Type",
                items=(("birail", "Birail", ""),
                       ("cairo", "Cairo", ""),
                       ("lathe", "Lathe", ""),
                       ("loft", "Loft", ""),
                       ("prism", "Prism", ""),
                       ("sphere_sweep", "Sphere Sweep", ""),
                       ("sor", "Surface of Revolution", "")),
                default="sphere_sweep")
    
    #############Supertorus
        def prop_update_supertorus(self, context):
            bpy.ops.pov.supertorus_update()
    
        st_major_radius: FloatProperty(
    
                name="Major radius",
                description="Major radius",
                min=0.00, max=100.00, default=1.0,
                update=prop_update_supertorus)
    
    
        st_minor_radius: FloatProperty(
    
                name="Minor radius",
                description="Minor radius",
                min=0.00, max=100.00, default=0.25,
                update=prop_update_supertorus)
    
    
        st_ring: FloatProperty(
    
                name="Ring",
                description="Ring manipulator",
                min=0.0001, max=100.00, default=1.00,
                update=prop_update_supertorus)
    
    
        st_cross: FloatProperty(
    
                name="Cross",
                description="Cross manipulator",
                min=0.0001, max=100.00, default=1.00,
                update=prop_update_supertorus)
    
    
        st_accuracy: FloatProperty(
    
                name="Accuracy",
                description="Supertorus accuracy",
                min=0.00001, max=1.00, default=0.001)
    
    
        st_max_gradient: FloatProperty(
    
                name="Gradient",
                description="Max gradient",
                min=0.0001, max=100.00, default=10.00,
                update=prop_update_supertorus)
    
        st_R: FloatProperty(name = "big radius",
    
                          description = "The radius inside the tube",
                          default = 1.0, min = 0.01, max = 100.0,
                          update=prop_update_supertorus)
    
        st_r: FloatProperty(name = "small radius",
    
                          description = "The radius of the tube",
                          default = 0.3, min = 0.01, max = 100.0,
                          update=prop_update_supertorus)
    
        st_u: IntProperty(name = "U-segments",
    
                        description = "radial segmentation",
                        default = 16, min = 3, max = 265,
                        update=prop_update_supertorus)
    
        st_v: IntProperty(name = "V-segments",
    
                        description = "lateral segmentation",
                        default = 8, min = 3, max = 265,
                        update=prop_update_supertorus)
    
        st_n1: FloatProperty(name = "Ring manipulator",
    
                          description = "Manipulates the shape of the Ring",
                          default = 1.0, min = 0.01, max = 100.0,
                          update=prop_update_supertorus)
    
        st_n2: FloatProperty(name = "Cross manipulator",
    
                          description = "Manipulates the shape of the cross-section",
                          default = 1.0, min = 0.01, max = 100.0,
                          update=prop_update_supertorus)
    
        st_ie: BoolProperty(name = "Use Int.+Ext. radii",
    
                          description = "Use internal and external radii",
                          default = False,
                          update=prop_update_supertorus)
    
        st_edit: BoolProperty(name="",
    
                            description="",
                            default=False,
                            options={'HIDDEN'},
                            update=prop_update_supertorus)
    
    ########################Loft
    
        loft_n: IntProperty(name = "Segments",
    
                        description = "Vertical segments",
                        default = 16, min = 3, max = 720)
    
        loft_rings_bottom: IntProperty(name = "Bottom",
    
                        description = "Bottom rings",
                        default = 5, min = 2, max = 100)
    
        loft_rings_side: IntProperty(name = "Side",
    
                        description = "Side rings",
                        default = 10, min = 2, max = 100)
    
        loft_thick: FloatProperty(name = "Thickness",
    
                          description = "Manipulates the shape of the Ring",
                          default = 0.3, min = 0.01, max = 1.0)
    
        loft_r: FloatProperty(name = "Radius",
    
                          description = "Radius",
                          default = 1, min = 0.01, max = 10)
    
        loft_height: FloatProperty(name = "Height",
    
                          description = "Manipulates the shape of the Ring",
    
                          default = 2, min = 0.01, max = 10.0)
    
    ###################Prism
    
        prism_n: IntProperty(name = "Sides",
    
                        description = "Number of sides",
                        default = 5, min = 3, max = 720)
    
        prism_r: FloatProperty(name = "Radius",
    
                        description = "Radius",
                        default = 1.0)
    
    ##################Isosurface
    
        iso_function_text: StringProperty(name="Function Text",maxlen=1024)#,update=iso_props_update_callback)
    
    ##################PolygonToCircle
    
        polytocircle_resolution: IntProperty(name = "Resolution",
    
                        description = "",
                        default = 3, min = 0, max = 256)
    
        polytocircle_ngon: IntProperty(name = "NGon",
    
                        description = "",
                        min = 3, max = 64,default = 5)
    
        polytocircle_ngonR: FloatProperty(name = "NGon Radius",
    
                        description = "",
                        default = 0.3)
    
        polytocircle_circleR: FloatProperty(name = "Circle Radius",
    
                        description = "",
                        default = 1.0)
    
    
    ###############################################################################
    # Modifiers POV properties.
    ###############################################################################
    #class RenderPovSettingsModifier(PropertyGroup):
    
        boolean_mod: EnumProperty(
    
                name="Operation",
                description="Choose the type of calculation for Boolean modifier",
                items=(("BMESH", "Use the BMesh Boolean Solver", ""),
                       ("CARVE", "Use the Carve Boolean Solver", ""),
                       ("POV", "Use Pov-Ray Constructive Solid Geometry", "")),
                default="BMESH")
    
    #################Avogadro
        # filename_ext = ".png"
    
        # filter_glob = StringProperty(
                # default="*.exr;*.gif;*.hdr;*.iff;*.jpeg;*.jpg;*.pgm;*.png;*.pot;*.ppm;*.sys;*.tga;*.tiff;*.EXR;*.GIF;*.HDR;*.IFF;*.JPEG;*.JPG;*.PGM;*.PNG;*.POT;*.PPM;*.SYS;*.TGA;*.TIFF",
                # options={'HIDDEN'},
                # )
    
    ###############################################################################
    # Camera POV properties.
    ###############################################################################
    
    class RenderPovSettingsCamera(PropertyGroup):
    
        dof_enable: BoolProperty(
    
                name="Depth Of Field", description="EnablePOV-Ray Depth Of Field ",
    
        dof_aperture: FloatProperty(
    
                name="Aperture",
    
                description="Similar to a real camera's aperture effect over focal blur (though not "
    
                            "in physical units and independent of focal length). "
    
                min=0.01, max=1.00, default=0.50)
    
        dof_samples_min: IntProperty(
    
                name="Samples Min", description="Minimum number of rays to use for each pixel",
    
        dof_samples_max: IntProperty(
    
                name="Samples Max", description="Maximum number of rays to use for each pixel",
    
        dof_variance: IntProperty(
    
                name="Variance",
    
                description="Minimum threshold (fractional value) for adaptive DOF sampling (up "
                            "increases quality and render time). The value for the variance should "
    
                            "be in the range of the smallest displayable color difference",
    
                min=1, max=100000, soft_max=10000, default=8192)
    
        dof_confidence: FloatProperty(
    
                name="Confidence",
    
                description="Probability to reach the real color value. Larger confidence values "
    
                            "will lead to more samples, slower traces and better images",
    
                min=0.01, max=0.99, default=0.20)
    
        normal_enable: BoolProperty(name="Perturbated Camera", default=False)
        cam_normal: FloatProperty(name="Normal Strength", min=0.0, max=1.0, default=0.0)
        normal_patterns: EnumProperty(
    
                items=(('agate', "Agate", ""), ('boxed', "Boxed", ""), ('bumps', "Bumps", ""), ('cells', "Cells", ""),
    
                       ('crackle', "Crackle", ""),('dents', "Dents", ""),
                       ('granite', "Granite", ""),
                       ('leopard', "Leopard", ""),
    
                       ('marble', "Marble", ""), ('onion', "Onion", ""), ('pavement', "Pavement", ""), ('planar', "Planar", ""),
    
                       ('quilted', "Quilted", ""), ('ripples', "Ripples", ""),  ('radial', "Radial", ""),
    
                       ('spherical', "Spherical", ""),('spiral1', "Spiral1", ""), ('spiral2', "Spiral2", ""), ('spotted', "Spotted", ""),
    
                       ('square', "Square", ""),('tiling', "Tiling", ""),
                       ('waves', "Waves", ""), ('wood', "Wood", ""),('wrinkles', "Wrinkles", "")),
                default='agate')
    
        turbulence: FloatProperty(name="Turbulence", min=0.0, max=100.0, default=0.1)
        scale: FloatProperty(name="Scale", min=0.0,default=1.0)
    
        ##################################CustomPOV Code############################
    
        replacement_text: StringProperty(
    
                description="Type the declared name in custom POV code or an external .inc "
    
    ###############################################################################
    # World POV properties.
    ###############################################################################
    class RenderPovSettingsWorld(PropertyGroup):
        use_sky_blend: BoolProperty(
                name="Blend Sky", description="Render background with natural progression from horizon to zenith",
                default=False)
        use_sky_paper: BoolProperty(
                name="Blend Sky", description="Flatten blend or texture coordinates",
                default=False)
        use_sky_real: BoolProperty(
                name="Blend Sky", description="Render background with a real horizon, relative to the camera angle",
                default=False)
                
        horizon_color: FloatVectorProperty(
                name="Horizon Color",
                description="Color at the horizon",
                precision=4, step=0.01, min=0, soft_max=1,
                default=(0.0, 0.0, 0.0), options={'ANIMATABLE'}, subtype='COLOR',
        )
        zenith_color: FloatVectorProperty(
                name="Zenith Color",
                description="Color at the zenith",
                precision=4, step=0.01, min=0, soft_max=1,
                default=(0.0, 0.0, 0.0), options={'ANIMATABLE'}, subtype='COLOR',
        )
        ambient_color: FloatVectorProperty(
                name="Ambient Color",
                description="Ambient color of the world",
                precision=4, step=0.01, min=0, soft_max=1,
                default=(0.0, 0.0, 0.0), options={'ANIMATABLE'}, subtype='COLOR',
        )
    '''
    class WORLD_PT_POV_world(WorldButtonsPanel, Panel):
        bl_label = "World"
        #COMPAT_ENGINES = {'BLENDER_RENDER'}
    
        def draw(self, context):
            layout = self.layout
    
            world = context.world
    
            row = layout.row()
            row.prop(world, "use_sky_paper")
            row.prop(world, "use_sky_blend")
            row.prop(world, "use_sky_real")
    
            row = layout.row()
            row.column().prop(world, "horizon_color")
            col = row.column()
            col.prop(world, "zenith_color")
            col.active = world.use_sky_blend
            row.column().prop(world, "ambient_color")
    
            row = layout.row()
            row.prop(world, "exposure")
            row.prop(world, "color_range")
    '''
    
    ###############################################################################
    # Text POV properties.
    ###############################################################################
    
    class RenderPovSettingsText(PropertyGroup):
    
        custom_code: EnumProperty(
    
                description="rendered source: Both adds text at the "
                            "top of the exported POV-Ray file",
                items=(("3dview", "View", ""),
                       ("text", "Text", ""),
                       ("both", "Both", "")),
                default="text")
    
    Luca Bonavita's avatar
    Luca Bonavita committed
    
    
    ###############################################################################
    # Povray Preferences.
    ###############################################################################
    class PovrayPreferences(AddonPreferences):
        bl_idname = __name__
    
    
        branch_feature_set_povray: EnumProperty(
    
                    description="Choose between official (POV-Ray) or (UberPOV) "
                                "development branch features to write in the pov file",
                    items= (('povray', 'Official POV-Ray', '','PLUGIN', 0),
                            ('uberpov', 'Unofficial UberPOV', '', 'PLUGIN', 1)),
    
        filepath_povray: StringProperty(
    
                    description="Path to renderer executable",
                    subtype='FILE_PATH',
                    )
    
        docpath_povray: StringProperty(
    
                    name="Includes Location",
                    description="Path to Insert Menu files",
                    subtype='FILE_PATH',
    
        def draw(self, context):
            layout = self.layout
    
            layout.prop(self, "branch_feature_set_povray")
    
            layout.prop(self, "filepath_povray")
    
        #bpy.utils.register_module(__name__) #DEPRECATED Now imported from bpy.utils import register_class
        
        render.register()
        ui.register()
        primitives.register()
        nodes.register()
        
        register_class(PovrayPreferences)
        register_class(RenderPovSettingsCamera)
        register_class(RenderPovSettingsWorld)
        register_class(RenderPovSettingsMaterial)
        register_class(RenderPovSettingsObject)
        register_class(RenderPovSettingsScene)
        register_class(RenderPovSettingsText)
        register_class(RenderPovSettingsTexture)
        '''    
            bpy.types.VIEW3D_MT_add.prepend(ui.menu_func_add)
            bpy.types.TOPBAR_MT_file_import.append(ui.menu_func_import)
            bpy.types.TEXT_MT_templates.append(ui.menu_func_templates)
            bpy.types.RENDER_PT_povray_radiosity.prepend(ui.rad_panel_func)
            bpy.types.LIGHT_PT_POV_light.prepend(ui.light_panel_func)
            bpy.types.WORLD_PT_world.prepend(ui.world_panel_func)
            # was used for parametric objects but made the other addon unreachable on
            # unregister for other tools to use created a user action call instead
            #addon_utils.enable("add_mesh_extra_objects", default_set=False, persistent=True)
    
            #bpy.types.TEXTURE_PT_context_texture.prepend(TEXTURE_PT_povray_type)
        '''
    
        bpy.types.NODE_HT_header.append(ui.menu_func_nodes)
    
        nodeitems_utils.register_node_categories("POVRAYNODES", node_categories)
    
        bpy.types.Scene.pov = PointerProperty(type=RenderPovSettingsScene)
    
        #bpy.types.Modifier.pov = PointerProperty(type=RenderPovSettingsModifier)
    
        bpy.types.Material.pov = PointerProperty(type=RenderPovSettingsMaterial)
        bpy.types.Texture.pov = PointerProperty(type=RenderPovSettingsTexture)
        bpy.types.Object.pov = PointerProperty(type=RenderPovSettingsObject)
        bpy.types.Camera.pov = PointerProperty(type=RenderPovSettingsCamera)
    
        bpy.types.World.pov = PointerProperty(type=RenderPovSettingsWorld)
    
        bpy.types.Text.pov = PointerProperty(type=RenderPovSettingsText)
    
    def unregister():
        del bpy.types.Scene.pov
        del bpy.types.Material.pov
    
        #del bpy.types.Modifier.pov
    
        del bpy.types.Texture.pov
        del bpy.types.Object.pov
        del bpy.types.Camera.pov
    
        del bpy.types.World.pov    
    
        nodeitems_utils.unregister_node_categories("POVRAYNODES")
        bpy.types.NODE_HT_header.remove(ui.menu_func_nodes)
    
        #bpy.types.TEXTURE_PT_context_texture.remove(TEXTURE_PT_povray_type)
    
        #addon_utils.disable("add_mesh_extra_objects", default_set=False)
    
        bpy.types.WORLD_PT_POV_world.remove(ui.world_panel_func)
    
        bpy.types.LIGHT_PT_POV_light.remove(ui.light_panel_func)
    
        bpy.types.RENDER_PT_povray_radiosity.remove(ui.rad_panel_func)
    
        bpy.types.TEXT_MT_templates.remove(ui.menu_func_templates)
    
        bpy.types.TOPBAR_MT_file_import.remove(ui.menu_func_import)
        bpy.types.VIEW3D_MT_add.remove(ui.menu_func_add)
    
        '''
        #bpy.utils.unregister_module(__name__)
    
    Luca Bonavita's avatar
    Luca Bonavita committed
    if __name__ == "__main__":
        register()