diff options
Diffstat (limited to 'uv_magic_uv/properites.py')
-rw-r--r-- | uv_magic_uv/properites.py | 745 |
1 files changed, 21 insertions, 724 deletions
diff --git a/uv_magic_uv/properites.py b/uv_magic_uv/properites.py index d882063a..60ce26eb 100644 --- a/uv_magic_uv/properites.py +++ b/uv_magic_uv/properites.py @@ -20,746 +20,43 @@ __author__ = "Nutti <nutti.metro@gmail.com>" __status__ = "production" -__version__ = "5.1" -__date__ = "24 Feb 2018" +__version__ = "5.2" +__date__ = "17 Nov 2018" -import bpy -from bpy.props import ( - FloatProperty, - EnumProperty, - BoolProperty, - FloatVectorProperty, - IntProperty -) -from mathutils import Vector -from . import common +from .utils.property_class_registry import PropertyClassRegistry -def get_loaded_texture_name(_, __): - items = [(key, key, "") for key in bpy.data.images.keys()] - items.append(("None", "None", "")) - return items +__all__ = [ + 'MUV_Properties', + 'init_props', + 'clear_props', +] # Properties used in this add-on. +# pylint: disable=W0612 class MUV_Properties(): - cpuv = None - cpuv_obj = None - cpuv_selseq = None - transuv = None - uvbb = None - texlock = None - texproj = None - texwrap = None - mvuv = None - uvinsp = None - uvsculpt = None - def __init__(self): - self.cpuv = MUV_CPUVProps() - self.cpuv_obj = MUV_CPUVProps() - self.cpuv_selseq = MUV_CPUVSelSeqProps() - self.transuv = MUV_TransUVProps() - self.uvbb = MUV_UVBBProps() - self.texlock = MUV_TexLockProps() - self.texproj = MUV_TexProjProps() - self.texwrap = MUV_TexWrapProps() - self.mvuv = MUV_MVUVProps() - self.uvinsp = MUV_UVInspProps() - self.uvsculpt = MUV_UVSculptProps() - - -class MUV_CPUVProps(): - src_uvs = [] - src_pin_uvs = [] - src_seams = [] - - -class MUV_CPUVSelSeqProps(): - src_uvs = [] - src_pin_uvs = [] - src_seams = [] - - -class MUV_TransUVProps(): - topology_copied = [] - - -class MUV_TexProjProps(): - running = False - - -class MUV_UVBBProps(): - uv_info_ini = [] - ctrl_points_ini = [] - ctrl_points = [] - running = False - - -class MUV_TexLockProps(): - verts_orig = None - intr_verts_orig = None - intr_running = False - - -class MUV_TexWrapProps(): - ref_face_index = -1 - ref_obj = None - + self.prefs = MUV_Prefs() -class MUV_MVUVProps(): - running = False - -class MUV_UVInspProps(): - display_running = False - overlapped_info = [] - flipped_info = [] - - -class MUV_UVSculptProps(): - running = False +class MUV_Prefs(): + expanded = { + "info_desc": False, + "info_loc": False, + "conf_uvsculpt": False, + "conf_uvinsp": False, + "conf_texproj": False, + "conf_uvbb": False + } def init_props(scene): scene.muv_props = MUV_Properties() - - # UV Sculpt - scene.muv_uvsculpt_enabled = BoolProperty( - name="UV Sculpt", - description="UV Sculpt is enabled", - default=False - ) - scene.muv_uvsculpt_radius = IntProperty( - name="Radius", - description="Radius of the brush", - min=1, - max=500, - default=30 - ) - scene.muv_uvsculpt_strength = FloatProperty( - name="Strength", - description="How powerful the effect of the brush when applied", - min=0.0, - max=1.0, - default=0.03, - ) - scene.muv_uvsculpt_tools = EnumProperty( - name="Tools", - description="Select Tools for the UV sculpt brushes", - items=[ - ('GRAB', "Grab", "Grab UVs"), - ('RELAX', "Relax", "Relax UVs"), - ('PINCH', "Pinch", "Pinch UVs") - ], - default='GRAB' - ) - scene.muv_uvsculpt_show_brush = BoolProperty( - name="Show Brush", - description="Show Brush", - default=True - ) - scene.muv_uvsculpt_pinch_invert = BoolProperty( - name="Invert", - description="Pinch UV to invert direction", - default=False - ) - scene.muv_uvsculpt_relax_method = EnumProperty( - name="Method", - description="Algorithm used for relaxation", - items=[ - ('HC', "HC", "Use HC method for relaxation"), - ('LAPLACIAN', "Laplacian", "Use laplacian method for relaxation") - ], - default='HC' - ) - - # Texture Wrap - scene.muv_texwrap_enabled = BoolProperty( - name="Texture Wrap", - description="Texture Wrap is enabled", - default=False - ) - scene.muv_texwrap_set_and_refer = BoolProperty( - name="Set and Refer", - description="Refer and set UV", - default=True - ) - scene.muv_texwrap_selseq = BoolProperty( - name="Selection Sequence", - description="Set UV sequentially", - default=False - ) - - # UV inspection - scene.muv_seluv_enabled = BoolProperty( - name="Select UV Enabled", - description="Select UV is enabled", - default=False - ) - scene.muv_uvinsp_enabled = BoolProperty( - name="UV Inspection Enabled", - description="UV Inspection is enabled", - default=False - ) - scene.muv_uvinsp_show_overlapped = BoolProperty( - name="Overlapped", - description="Show overlapped UVs", - default=False - ) - scene.muv_uvinsp_show_flipped = BoolProperty( - name="Flipped", - description="Show flipped UVs", - default=False - ) - scene.muv_uvinsp_show_mode = EnumProperty( - name="Mode", - description="Show mode", - items=[ - ('PART', "Part", "Show only overlapped/flipped part"), - ('FACE', "Face", "Show overlapped/flipped face") - ], - default='PART' - ) - - # Align UV - scene.muv_auv_enabled = BoolProperty( - name="Align UV Enabled", - description="Align UV is enabled", - default=False - ) - scene.muv_auv_transmission = BoolProperty( - name="Transmission", - description="Align linked UVs", - default=False - ) - scene.muv_auv_select = BoolProperty( - name="Select", - description="Select UVs which are aligned", - default=False - ) - scene.muv_auv_vertical = BoolProperty( - name="Vert-Infl (Vertical)", - description="Align vertical direction influenced " - "by mesh vertex proportion", - default=False - ) - scene.muv_auv_horizontal = BoolProperty( - name="Vert-Infl (Horizontal)", - description="Align horizontal direction influenced " - "by mesh vertex proportion", - default=False - ) - scene.muv_auv_location = EnumProperty( - name="Location", - description="Align location", - items=[ - ('LEFT_TOP', "Left/Top", "Align to Left or Top"), - ('MIDDLE', "Middle", "Align to middle"), - ('RIGHT_BOTTOM', "Right/Bottom", "Align to Right or Bottom") - ], - default='MIDDLE' - ) - - # Smooth UV - scene.muv_smuv_enabled = BoolProperty( - name="Smooth UV Enabled", - description="Smooth UV is enabled", - default=False - ) - scene.muv_smuv_transmission = BoolProperty( - name="Transmission", - description="Smooth linked UVs", - default=False - ) - scene.muv_smuv_mesh_infl = FloatProperty( - name="Mesh Influence", - description="Influence rate of mesh vertex", - min=0.0, - max=1.0, - default=0.0 - ) - scene.muv_smuv_select = BoolProperty( - name="Select", - description="Select UVs which are smoothed", - default=False - ) - - # UV Bounding Box - scene.muv_uvbb_enabled = BoolProperty( - name="UV Bounding Box Enabled", - description="UV Bounding Box is enabled", - default=False - ) - scene.muv_uvbb_uniform_scaling = BoolProperty( - name="Uniform Scaling", - description="Enable Uniform Scaling", - default=False - ) - scene.muv_uvbb_boundary = EnumProperty( - name="Boundary", - description="Boundary", - default='UV_SEL', - items=[ - ('UV', "UV", "Boundary is decided by UV"), - ('UV_SEL', "UV (Selected)", "Boundary is decided by Selected UV") - ] - ) - - # Pack UV - scene.muv_packuv_enabled = BoolProperty( - name="Pack UV Enabled", - description="Pack UV is enabled", - default=False - ) - scene.muv_packuv_allowable_center_deviation = FloatVectorProperty( - name="Allowable Center Deviation", - description="Allowable center deviation to judge same UV island", - min=0.000001, - max=0.1, - default=(0.001, 0.001), - size=2 - ) - scene.muv_packuv_allowable_size_deviation = FloatVectorProperty( - name="Allowable Size Deviation", - description="Allowable sizse deviation to judge same UV island", - min=0.000001, - max=0.1, - default=(0.001, 0.001), - size=2 - ) - - # Move UV - scene.muv_mvuv_enabled = BoolProperty( - name="Move UV Enabled", - description="Move UV is enabled", - default=False - ) - - # UVW - scene.muv_uvw_enabled = BoolProperty( - name="UVW Enabled", - description="UVW is enabled", - default=False - ) - scene.muv_uvw_assign_uvmap = BoolProperty( - name="Assign UVMap", - description="Assign UVMap when no UVmaps are available", - default=True - ) - - # Texture Projection - scene.muv_texproj_enabled = BoolProperty( - name="Texture Projection Enabled", - description="Texture Projection is enabled", - default=False - ) - scene.muv_texproj_tex_magnitude = FloatProperty( - name="Magnitude", - description="Texture Magnitude", - default=0.5, - min=0.0, - max=100.0 - ) - scene.muv_texproj_tex_image = EnumProperty( - name="Image", - description="Texture Image", - items=get_loaded_texture_name - ) - scene.muv_texproj_tex_transparency = FloatProperty( - name="Transparency", - description="Texture Transparency", - default=0.2, - min=0.0, - max=1.0 - ) - scene.muv_texproj_adjust_window = BoolProperty( - name="Adjust Window", - description="Size of renderered texture is fitted to window", - default=True - ) - scene.muv_texproj_apply_tex_aspect = BoolProperty( - name="Texture Aspect Ratio", - description="Apply Texture Aspect ratio to displayed texture", - default=True - ) - scene.muv_texproj_assign_uvmap = BoolProperty( - name="Assign UVMap", - description="Assign UVMap when no UVmaps are available", - default=True - ) - - # Texture Lock - scene.muv_texlock_enabled = BoolProperty( - name="Texture Lock Enabled", - description="Texture Lock is enabled", - default=False - ) - scene.muv_texlock_connect = BoolProperty( - name="Connect UV", - default=True - ) - - # World Scale UV - scene.muv_wsuv_enabled = BoolProperty( - name="World Scale UV Enabled", - description="World Scale UV is enabled", - default=False - ) - scene.muv_wsuv_src_mesh_area = FloatProperty( - name="Mesh Area", - description="Source Mesh Area", - default=0.0, - min=0.0 - ) - scene.muv_wsuv_src_uv_area = FloatProperty( - name="UV Area", - description="Source UV Area", - default=0.0, - min=0.0 - ) - scene.muv_wsuv_src_density = FloatProperty( - name="Density", - description="Source Texel Density", - default=0.0, - min=0.0 - ) - scene.muv_wsuv_tgt_density = FloatProperty( - name="Density", - description="Target Texel Density", - default=0.0, - min=0.0 - ) - scene.muv_wsuv_mode = EnumProperty( - name="Mode", - description="Density calculation mode", - items=[ - ('PROPORTIONAL', 'Proportional', 'Scale proportionally by mesh'), - ('SCALING', 'Scaling', 'Specify scale factor'), - ('USER', 'User', 'Specify density'), - ('CONSTANT', 'Constant', 'Constant density') - ], - default='CONSTANT' - ) - scene.muv_wsuv_scaling_factor = FloatProperty( - name="Scaling Factor", - default=1.0, - max=1000.0, - min=0.00001 - ) - scene.muv_wsuv_origin = EnumProperty( - name="Origin", - description="Aspect Origin", - items=[ - ('CENTER', 'Center', 'Center'), - ('LEFT_TOP', 'Left Top', 'Left Bottom'), - ('LEFT_CENTER', 'Left Center', 'Left Center'), - ('LEFT_BOTTOM', 'Left Bottom', 'Left Bottom'), - ('CENTER_TOP', 'Center Top', 'Center Top'), - ('CENTER_BOTTOM', 'Center Bottom', 'Center Bottom'), - ('RIGHT_TOP', 'Right Top', 'Right Top'), - ('RIGHT_CENTER', 'Right Center', 'Right Center'), - ('RIGHT_BOTTOM', 'Right Bottom', 'Right Bottom') - - ], - default='CENTER' - ) - - # Unwrap Constraint - scene.muv_unwrapconst_enabled = BoolProperty( - name="Unwrap Constraint Enabled", - description="Unwrap Constraint is enabled", - default=False - ) - scene.muv_unwrapconst_u_const = BoolProperty( - name="U-Constraint", - description="Keep UV U-axis coordinate", - default=False - ) - scene.muv_unwrapconst_v_const = BoolProperty( - name="V-Constraint", - description="Keep UV V-axis coordinate", - default=False - ) - - # Preserve UV Aspect - scene.muv_preserve_uv_enabled = BoolProperty( - name="Preserve UV Aspect Enabled", - description="Preserve UV Aspect is enabled", - default=False - ) - scene.muv_preserve_uv_tex_image = EnumProperty( - name="Image", - description="Texture Image", - items=get_loaded_texture_name - ) - scene.muv_preserve_uv_origin = EnumProperty( - name="Origin", - description="Aspect Origin", - items=[ - ('CENTER', 'Center', 'Center'), - ('LEFT_TOP', 'Left Top', 'Left Bottom'), - ('LEFT_CENTER', 'Left Center', 'Left Center'), - ('LEFT_BOTTOM', 'Left Bottom', 'Left Bottom'), - ('CENTER_TOP', 'Center Top', 'Center Top'), - ('CENTER_BOTTOM', 'Center Bottom', 'Center Bottom'), - ('RIGHT_TOP', 'Right Top', 'Right Top'), - ('RIGHT_CENTER', 'Right Center', 'Right Center'), - ('RIGHT_BOTTOM', 'Right Bottom', 'Right Bottom') - - ], - default="CENTER" - ) - - # Flip/Rotate UV - scene.muv_fliprot_enabled = BoolProperty( - name="Flip/Rotate UV Enabled", - description="Flip/Rotate UV is enabled", - default=False - ) - scene.muv_fliprot_seams = BoolProperty( - name="Seams", - description="Seams", - default=True - ) - - # Mirror UV - scene.muv_mirroruv_enabled = BoolProperty( - name="Mirror UV Enabled", - description="Mirror UV is enabled", - default=False - ) - scene.muv_mirroruv_axis = EnumProperty( - items=[ - ('X', "X", "Mirror Along X axis"), - ('Y', "Y", "Mirror Along Y axis"), - ('Z', "Z", "Mirror Along Z axis") - ], - name="Axis", - description="Mirror Axis", - default='X' - ) - - # Copy/Paste UV - scene.muv_cpuv_enabled = BoolProperty( - name="Copy/Paste UV Enabled", - description="Copy/Paste UV is enabled", - default=False - ) - scene.muv_cpuv_copy_seams = BoolProperty( - name="Copy Seams", - description="Copy Seams", - default=True - ) - scene.muv_cpuv_mode = EnumProperty( - items=[ - ('DEFAULT', "Default", "Default Mode"), - ('SEL_SEQ', "Selection Sequence", "Selection Sequence Mode") - ], - name="Copy/Paste UV Mode", - description="Copy/Paste UV Mode", - default='DEFAULT' - ) - scene.muv_cpuv_strategy = EnumProperty( - name="Strategy", - description="Paste Strategy", - items=[ - ('N_N', 'N:N', 'Number of faces must be equal to source'), - ('N_M', 'N:M', 'Number of faces must not be equal to source') - ], - default='N_M' - ) - - # Transfer UV - scene.muv_transuv_enabled = BoolProperty( - name="Transfer UV Enabled", - description="Transfer UV is enabled", - default=False - ) - scene.muv_transuv_invert_normals = BoolProperty( - name="Invert Normals", - description="Invert Normals", - default=False - ) - scene.muv_transuv_copy_seams = BoolProperty( - name="Copy Seams", - description="Copy Seams", - default=True - ) - - # Align UV Cursor - def auvc_get_cursor_loc(self): - area, _, space = common.get_space('IMAGE_EDITOR', 'WINDOW', - 'IMAGE_EDITOR') - bd_size = common.get_uvimg_editor_board_size(area) - loc = space.cursor_location - if bd_size[0] < 0.000001: - cx = 0.0 - else: - cx = loc[0] / bd_size[0] - if bd_size[1] < 0.000001: - cy = 0.0 - else: - cy = loc[1] / bd_size[1] - self['muv_auvc_cursor_loc'] = Vector((cx, cy)) - return self.get('muv_auvc_cursor_loc', (0.0, 0.0)) - - def auvc_set_cursor_loc(self, value): - self['muv_auvc_cursor_loc'] = value - area, _, space = common.get_space('IMAGE_EDITOR', 'WINDOW', - 'IMAGE_EDITOR') - bd_size = common.get_uvimg_editor_board_size(area) - cx = bd_size[0] * value[0] - cy = bd_size[1] * value[1] - space.cursor_location = Vector((cx, cy)) - - scene.muv_auvc_enabled = BoolProperty( - name="Align UV Cursor Enabled", - description="Align UV Cursor is enabled", - default=False - ) - scene.muv_auvc_cursor_loc = FloatVectorProperty( - name="UV Cursor Location", - size=2, - precision=4, - soft_min=-1.0, - soft_max=1.0, - step=1, - default=(0.000, 0.000), - get=auvc_get_cursor_loc, - set=auvc_set_cursor_loc - ) - scene.muv_auvc_align_menu = EnumProperty( - name="Align Method", - description="Align Method", - default='TEXTURE', - items=[ - ('TEXTURE', "Texture", "Align to texture"), - ('UV', "UV", "Align to UV"), - ('UV_SEL', "UV (Selected)", "Align to Selected UV") - ] - ) - - # UV Cursor Location - scene.muv_uvcloc_enabled = BoolProperty( - name="UV Cursor Location Enabled", - description="UV Cursor Location is enabled", - default=False - ) + PropertyClassRegistry.init_props(scene) def clear_props(scene): + PropertyClassRegistry.del_props(scene) del scene.muv_props - - # UV Sculpt - del scene.muv_uvsculpt_enabled - del scene.muv_uvsculpt_radius - del scene.muv_uvsculpt_strength - del scene.muv_uvsculpt_tools - del scene.muv_uvsculpt_show_brush - del scene.muv_uvsculpt_pinch_invert - del scene.muv_uvsculpt_relax_method - - # Texture Wrap - del scene.muv_texwrap_enabled - del scene.muv_texwrap_set_and_refer - del scene.muv_texwrap_selseq - - # UV Inspection - del scene.muv_seluv_enabled - del scene.muv_uvinsp_enabled - del scene.muv_uvinsp_show_overlapped - del scene.muv_uvinsp_show_flipped - del scene.muv_uvinsp_show_mode - - # Align UV - del scene.muv_auv_enabled - del scene.muv_auv_transmission - del scene.muv_auv_select - del scene.muv_auv_vertical - del scene.muv_auv_horizontal - del scene.muv_auv_location - - # Smooth UV - del scene.muv_smuv_enabled - del scene.muv_smuv_transmission - del scene.muv_smuv_mesh_infl - del scene.muv_smuv_select - - # UV Bounding Box - del scene.muv_uvbb_enabled - del scene.muv_uvbb_uniform_scaling - del scene.muv_uvbb_boundary - - # Pack UV - del scene.muv_packuv_enabled - del scene.muv_packuv_allowable_center_deviation - del scene.muv_packuv_allowable_size_deviation - - # Move UV - del scene.muv_mvuv_enabled - - # UVW - del scene.muv_uvw_enabled - del scene.muv_uvw_assign_uvmap - - # Texture Projection - del scene.muv_texproj_enabled - del scene.muv_texproj_tex_magnitude - del scene.muv_texproj_tex_image - del scene.muv_texproj_tex_transparency - del scene.muv_texproj_adjust_window - del scene.muv_texproj_apply_tex_aspect - del scene.muv_texproj_assign_uvmap - - # Texture Lock - del scene.muv_texlock_enabled - del scene.muv_texlock_connect - - # World Scale UV - del scene.muv_wsuv_enabled - del scene.muv_wsuv_src_mesh_area - del scene.muv_wsuv_src_uv_area - del scene.muv_wsuv_src_density - del scene.muv_wsuv_tgt_density - del scene.muv_wsuv_mode - del scene.muv_wsuv_scaling_factor - del scene.muv_wsuv_origin - - # Unwrap Constraint - del scene.muv_unwrapconst_enabled - del scene.muv_unwrapconst_u_const - del scene.muv_unwrapconst_v_const - - # Preserve UV Aspect - del scene.muv_preserve_uv_enabled - del scene.muv_preserve_uv_tex_image - del scene.muv_preserve_uv_origin - - # Flip/Rotate UV - del scene.muv_fliprot_enabled - del scene.muv_fliprot_seams - - # Mirror UV - del scene.muv_mirroruv_enabled - del scene.muv_mirroruv_axis - - # Copy/Paste UV - del scene.muv_cpuv_enabled - del scene.muv_cpuv_copy_seams - del scene.muv_cpuv_mode - del scene.muv_cpuv_strategy - - # Transfer UV - del scene.muv_transuv_enabled - del scene.muv_transuv_invert_normals - del scene.muv_transuv_copy_seams - - # Align UV Cursor - del scene.muv_auvc_enabled - del scene.muv_auvc_cursor_loc - del scene.muv_auvc_align_menu - - # UV Cursor Location - del scene.muv_uvcloc_enabled |