diff --git a/README.md b/README.md
index 7350ed12..0bee0251 100644
--- a/README.md
+++ b/README.md
@@ -63,7 +63,7 @@ See the link below for further details.
## Change Log
|Version|Release Date|Change Log|
|---|---|---|
-|4.1|2016.11.XX|[1] **Add feature**
- Copy/Paste UV Coordinates (Among same objects)
- Texture Lock
- Mirror UV
- World Scale UV
- Unwrap Constraint
[2] Improve feature - Pack UV (with same UV island packing)
(1) Add option: Allowable center/size deviation option
[3] Fixed bug|
+|4.1|2016.11.13|[1] **Add feature**
- Copy/Paste UV Coordinates (Among same objects)
- Texture Lock
- Mirror UV
- World Scale UV
- Unwrap Constraint
[2] Improve feature - Pack UV (with same UV island packing)
(1) Add option: Allowable center/size deviation option
[3] Fixed bug|
|4.0|2016.5.14|[1] Rename this add-on
[2] **Add feature**
- Manipulate UV with Bounding Box in UV Editor
- Move UV from 3D View
- Texture Projection
- Pack UV (with same UV island packing)
[3] Improve feature - Copy/Paste UV
(1) N to M copy/paste UV
(2) Copy/Paste UV by selection sequence between specified UV maps
[4] Optimization/Refactoring
[5] Fixed bugs|
|3.2|2015.6.20|Improve feature
- Transfer UV
(1) Copy/Paste to multiple meshes
(2) Partially copy/paste UV|
|3.1|2015.6.17|Improve feature
- Transfer UV
(1) Improve algorithm|
diff --git a/uv_magic_uv/__init__.py b/uv_magic_uv/__init__.py
index 603b1bec..e13e11eb 100644
--- a/uv_magic_uv/__init__.py
+++ b/uv_magic_uv/__init__.py
@@ -21,7 +21,7 @@
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
bl_info = {
diff --git a/uv_magic_uv/muv_common.py b/uv_magic_uv/muv_common.py
index 32c3fea7..83df3671 100644
--- a/uv_magic_uv/muv_common.py
+++ b/uv_magic_uv/muv_common.py
@@ -21,7 +21,7 @@
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
import bpy
@@ -81,4 +81,3 @@ def get_space(area_type, region_type, space_type):
break
return (area, region, space)
-
diff --git a/uv_magic_uv/muv_cpuv_ops.py b/uv_magic_uv/muv_cpuv_ops.py
index 7a91ac4e..7804a665 100644
--- a/uv_magic_uv/muv_cpuv_ops.py
+++ b/uv_magic_uv/muv_cpuv_ops.py
@@ -21,7 +21,7 @@
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
import bpy
diff --git a/uv_magic_uv/muv_cpuv_selseq_ops.py b/uv_magic_uv/muv_cpuv_selseq_ops.py
index 2c9afba8..2453578f 100644
--- a/uv_magic_uv/muv_cpuv_selseq_ops.py
+++ b/uv_magic_uv/muv_cpuv_selseq_ops.py
@@ -18,11 +18,10 @@
#
# ##### END GPL LICENSE BLOCK #####
-
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
import bpy
@@ -40,7 +39,7 @@ class MUV_CPUVSelSeqCopyUV(bpy.types.Operator):
bl_label = "Copy UV (Selection Sequence) (Operation)"
bl_description = "Copy UV data by selection sequence (Operation)"
bl_options = {'REGISTER', 'UNDO'}
-
+
uv_map = bpy.props.StringProperty(options={'HIDDEN'})
def execute(self, context):
@@ -56,7 +55,7 @@ def execute(self, context):
bm = bmesh.from_edit_mesh(obj.data)
if muv_common.check_version(2, 73, 0) >= 0:
bm.faces.ensure_lookup_table()
-
+
# get UV layer
if self.uv_map == "":
if not bm.loops.layers.uv:
@@ -164,7 +163,7 @@ def execute(self, context):
uv_layer = bm.loops.layers.uv.verify()
else:
uv_layer = bm.loops.layers.uv[self.uv_map]
-
+
# get selected face
dest_uvs = []
dest_pin_uvs = []
@@ -186,7 +185,7 @@ def execute(self, context):
"(src:%d, dest:%d)" %
(len(props.src_uvs), len(dest_uvs)))
return {'CANCELLED'}
-
+
# paste
for i, idx in enumerate(dest_face_indices):
suv = None
@@ -247,4 +246,3 @@ def draw(self, context):
layout.operator(
MUV_CPUVSelSeqPasteUV.bl_idname,
text=m, icon="PLUGIN").uv_map = m
-
diff --git a/uv_magic_uv/muv_fliprot_ops.py b/uv_magic_uv/muv_fliprot_ops.py
index b83957a0..9c9cc544 100644
--- a/uv_magic_uv/muv_fliprot_ops.py
+++ b/uv_magic_uv/muv_fliprot_ops.py
@@ -18,11 +18,10 @@
#
# ##### END GPL LICENSE BLOCK #####
-
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.0"
-__date__ = "14 May 2016"
+__date__ = "13 Nov 2016"
import bpy
@@ -58,13 +57,13 @@ def execute(self, context):
bm = bmesh.from_edit_mesh(obj.data)
if muv_common.check_version(2, 73, 0) >= 0:
bm.faces.ensure_lookup_table()
-
+
# get UV layer
if not bm.loops.layers.uv:
self.report({'WARNING'}, "Object must have more than one UV map")
return {'CANCELLED'}
uv_layer = bm.loops.layers.uv.verify()
-
+
# get selected face
dest_uvs = []
dest_pin_uvs = []
@@ -104,4 +103,3 @@ def execute(self, context):
bmesh.update_edit_mesh(obj.data)
return {'FINISHED'}
-
diff --git a/uv_magic_uv/muv_menu.py b/uv_magic_uv/muv_menu.py
index e12b4821..22d62d29 100644
--- a/uv_magic_uv/muv_menu.py
+++ b/uv_magic_uv/muv_menu.py
@@ -21,7 +21,7 @@
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
import bpy
diff --git a/uv_magic_uv/muv_mirroruv_ops.py b/uv_magic_uv/muv_mirroruv_ops.py
index 67763419..cf63b164 100644
--- a/uv_magic_uv/muv_mirroruv_ops.py
+++ b/uv_magic_uv/muv_mirroruv_ops.py
@@ -21,7 +21,7 @@
__author__ = "Keith (Wahooney) Boshoff, Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
import bpy
diff --git a/uv_magic_uv/muv_mvuv_ops.py b/uv_magic_uv/muv_mvuv_ops.py
index 879a04d2..cda11649 100644
--- a/uv_magic_uv/muv_mvuv_ops.py
+++ b/uv_magic_uv/muv_mvuv_ops.py
@@ -1,7 +1,27 @@
+#
+
+# ##### 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 #####
+
__author__ = "kgeogeo, mem, Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
import bpy
@@ -17,7 +37,7 @@ class MUV_MVUV(bpy.types.Operator):
bl_idname = "view3d.muv_mvuv"
bl_label = "Move the UV from View3D"
bl_options = {'REGISTER', 'UNDO'}
-
+
__topology_dict = []
__prev_mouse = Vector((0.0, 0.0))
__offset_uv = Vector((0.0, 0.0))
@@ -59,8 +79,8 @@ def __find_uv(self, context):
diff = uva - va
first = False
- return topology_dict, uvs
-
+ return topology_dict, uvs
+
@classmethod
def poll(cls, context):
return (context.edit_object)
@@ -112,7 +132,7 @@ def modal(self, context, event):
if event.type == cancel_btn and event.value == 'PRESS':
for (fidx, vidx), uv in zip(self.__topology_dict, self.__ini_uvs):
bm.faces[fidx].loops[vidx][active_uv].uv = uv
- return {'FINISHED'}
+ return {'FINISHED'}
# confirmed
if event.type == confirm_btn and event.value == 'PRESS':
return {'FINISHED'}
@@ -123,6 +143,5 @@ def execute(self, context):
self.__first_time = True
self.__running = True
context.window_manager.modal_handler_add(self)
- self.__topology_dict, self.__ini_uvs = self.__find_uv(context)
- return {'RUNNING_MODAL'}
-
+ self.__topology_dict, self.__ini_uvs = self.__find_uv(context)
+ return {'RUNNING_MODAL'}
diff --git a/uv_magic_uv/muv_packuv_ops.py b/uv_magic_uv/muv_packuv_ops.py
index 6eff064e..a91a1a6a 100644
--- a/uv_magic_uv/muv_packuv_ops.py
+++ b/uv_magic_uv/muv_packuv_ops.py
@@ -21,7 +21,7 @@
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
import bpy
diff --git a/uv_magic_uv/muv_preferences.py b/uv_magic_uv/muv_preferences.py
index 6f3c35d9..0a955538 100644
--- a/uv_magic_uv/muv_preferences.py
+++ b/uv_magic_uv/muv_preferences.py
@@ -18,11 +18,10 @@
#
# ##### END GPL LICENSE BLOCK #####
-
__author__ = "Nutti "
__status__ = "production"
-__version__ = "4.0"
-__date__ = "14 May 2016"
+__version__ = "4.1"
+__date__ = "13 Nov 2016"
import bpy
@@ -48,4 +47,3 @@ def draw(self, context):
layout = self.layout
layout.prop(self, "enable_uvbb")
layout.prop(self, "enable_texproj")
-
diff --git a/uv_magic_uv/muv_props.py b/uv_magic_uv/muv_props.py
index e8dbdd62..a4582be2 100644
--- a/uv_magic_uv/muv_props.py
+++ b/uv_magic_uv/muv_props.py
@@ -21,7 +21,8 @@
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
+
import bpy
from bpy.props import FloatProperty, EnumProperty, BoolProperty
@@ -142,4 +143,3 @@ def clear_props(scene):
del scene.muv_texproj_tex_magnitude
del scene.muv_texproj_tex_image
del scene.muv_texproj_tex_transparency
-
diff --git a/uv_magic_uv/muv_texlock_ops.py b/uv_magic_uv/muv_texlock_ops.py
index 03738b06..6a2a2e8d 100644
--- a/uv_magic_uv/muv_texlock_ops.py
+++ b/uv_magic_uv/muv_texlock_ops.py
@@ -21,7 +21,7 @@
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
import bpy
@@ -433,4 +433,3 @@ def execute(self, context):
bpy.ops.uv.muv_texlock_updater()
return {'FINISHED'}
-
diff --git a/uv_magic_uv/muv_texproj_ops.py b/uv_magic_uv/muv_texproj_ops.py
index 209117aa..689155f2 100644
--- a/uv_magic_uv/muv_texproj_ops.py
+++ b/uv_magic_uv/muv_texproj_ops.py
@@ -20,8 +20,8 @@
__author__ = "Nutti "
__status__ = "production"
-__version__ = "4.0"
-__date__ = "14 May 2016"
+__version__ = "4.1"
+__date__ = "13 Nov 2016"
import bpy
@@ -47,12 +47,12 @@ def get_canvas(context, magnitude):
PAD_Y = 20
width = context.region.width
height = context.region.height
-
+
center_x = width * 0.5
center_y = height * 0.5
len_x = (width - PAD_X * 2.0) * magnitude
len_y = (height - PAD_Y * 2.0) * magnitude
-
+
x0 = int(center_x - len_x * 0.5)
y0 = int(center_y - len_y * 0.5)
x1 = int(center_x + len_x * 0.5)
@@ -72,7 +72,7 @@ def rect_to_rect2(rect):
def region_to_canvas(region, rg_vec, canvas):
"""
Convert screen region to canvas
- """
+ """
cv_rect = rect_to_rect2(canvas)
cv_vec = mathutils.Vector()
@@ -87,30 +87,30 @@ class MUV_TexProjRenderer(bpy.types.Operator):
Operation class: Render selected texture
No operation (only rendering texture)
"""
-
+
bl_idname = "uv.muv_texproj_renderer"
bl_description = "Render selected texture"
bl_label = "Texture renderer"
__handle = None
-
+
@staticmethod
def handle_add(self, context):
MUV_TexProjRenderer.__handle = bpy.types.SpaceView3D.draw_handler_add(
MUV_TexProjRenderer.draw_texture,
(self, context), 'WINDOW', 'POST_PIXEL')
-
+
@staticmethod
def handle_remove(self, context):
if MUV_TexProjRenderer.__handle is not None:
bpy.types.SpaceView3D.draw_handler_remove(
MUV_TexProjRenderer.__handle, 'WINDOW')
MUV_TexProjRenderer.__handle = None
-
+
@staticmethod
def draw_texture(self, context):
sc = context.scene
-
+
# no textures are selected
if sc.muv_texproj_tex_image == "None":
return
@@ -140,7 +140,7 @@ def draw_texture(self, context):
bgl.GL_TEXTURE_2D, bgl.GL_TEXTURE_MAG_FILTER, bgl.GL_LINEAR)
bgl.glTexEnvi(
bgl.GL_TEXTURE_ENV, bgl.GL_TEXTURE_ENV_MODE, bgl.GL_MODULATE)
-
+
# render texture
bgl.glBegin(bgl.GL_QUADS)
bgl.glColor4f(1.0, 1.0, 1.0, sc.muv_texproj_tex_transparency)
@@ -154,7 +154,7 @@ class MUV_TexProjStart(bpy.types.Operator):
"""
Operation class: Start Texture Projection
"""
-
+
bl_idname = "uv.muv_texproj_start"
bl_label = "Start Texture Projection"
bl_description = "Start Texture Projection"
@@ -175,7 +175,7 @@ class MUV_TexProjStop(bpy.types.Operator):
"""
Operation class: Stop Texture Projection
"""
-
+
bl_idname = "uv.muv_texproj_stop"
bl_label = "Stop Texture Projection"
bl_description = "Stop Texture Projection"
@@ -196,7 +196,7 @@ class MUV_TexProjProject(bpy.types.Operator):
"""
Operation class: Project texture
"""
-
+
bl_idname = "uv.muv_texproj_project"
bl_label = "Project Texture"
bl_description = "Project Texture"
@@ -210,7 +210,7 @@ def execute(self, context):
return {'CANCELLED'}
area, region, space = muv_common.get_space(
'VIEW_3D', 'WINDOW', 'VIEW_3D')
-
+
# get faces to be texture projected
obj = context.active_object
world_mat = obj.matrix_world
@@ -263,7 +263,7 @@ class OBJECT_PT_TP(bpy.types.Panel):
bl_description = "Texture Projection Menu"
bl_space_type = "VIEW_3D"
bl_region_type = "UI"
-
+
def draw(self, context):
prefs = context.user_preferences.addons["uv_magic_uv"].preferences
if prefs.enable_texproj is False:
@@ -281,4 +281,3 @@ def draw(self, context):
layout.prop(sc, "muv_texproj_tex_magnitude", text="Magnitude")
layout.prop(sc, "muv_texproj_tex_transparency", text="Transparency")
layout.operator(MUV_TexProjProject.bl_idname, text="Project")
-
diff --git a/uv_magic_uv/muv_transuv_ops.py b/uv_magic_uv/muv_transuv_ops.py
index 11d573a3..f8453466 100644
--- a/uv_magic_uv/muv_transuv_ops.py
+++ b/uv_magic_uv/muv_transuv_ops.py
@@ -21,7 +21,8 @@
__author__ = "Nutti , Mifth, MaxRobinot"
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
+
import bpy
import bmesh
@@ -127,7 +128,7 @@ def execute(self, context):
if i > 0 and i % 2 != 0:
sel_faces = [all_sel_faces[i - 1], all_sel_faces[i]]
active_face = all_sel_faces[i]
-
+
# parse all faces according to selection history
active_face_nor = active_face.normal.copy()
if self.invert_normals:
@@ -340,4 +341,3 @@ def get_other_verts_edges(face, vert1, vert2, first_edge, uv_layer):
break
return [face_verts, face_edges, face_loops]
-
diff --git a/uv_magic_uv/muv_unwrapconst_ops.py b/uv_magic_uv/muv_unwrapconst_ops.py
index 64754c65..aff34a9f 100644
--- a/uv_magic_uv/muv_unwrapconst_ops.py
+++ b/uv_magic_uv/muv_unwrapconst_ops.py
@@ -19,7 +19,8 @@
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
+
import bpy
import bmesh
diff --git a/uv_magic_uv/muv_uvbb_ops.py b/uv_magic_uv/muv_uvbb_ops.py
index be362239..26186bb5 100644
--- a/uv_magic_uv/muv_uvbb_ops.py
+++ b/uv_magic_uv/muv_uvbb_ops.py
@@ -21,7 +21,7 @@
__author__ = "Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
import bpy
@@ -259,7 +259,7 @@ class MUV_UVBBCmdExecuter():
def __init__(self):
self.__cmd_list = []
self.__cmd_list_redo = []
-
+
def execute(self, begin=0, end=-1):
"""
create matrix from history
@@ -270,7 +270,7 @@ def execute(self, begin=0, end=-1):
if begin <= i and (end == -1 or i <= end):
mat = cmd.to_matrix() * mat
return mat
-
+
def undo_size(self):
"""
get history size
@@ -319,7 +319,7 @@ def push(self, cmd):
class MUV_UVBBRenderer(bpy.types.Operator):
"""
- Operation class: Render UV bounding box
+ Operation class: Render UV bounding box
"""
bl_idname = "uv.muv_uvbb_renderer"
@@ -459,7 +459,7 @@ class MUV_UVBBStateTranslating(MUV_UVBBStateBase):
"""
Custom class: Translating state
"""
-
+
__cmd_exec = None
def __init__(self, cmd_exec, mouse_view, ctrl_points):
@@ -777,4 +777,3 @@ def draw(self, context):
layout.prop(sc, "muv_uvbb_cp_size", text="Size")
layout.prop(sc, "muv_uvbb_cp_react_size", text="React Size")
layout.prop(sc, "muv_uvbb_uniform_scaling", text="Uniform Scaling")
-
diff --git a/uv_magic_uv/muv_wsuv_ops.py b/uv_magic_uv/muv_wsuv_ops.py
index a645cff0..31185399 100644
--- a/uv_magic_uv/muv_wsuv_ops.py
+++ b/uv_magic_uv/muv_wsuv_ops.py
@@ -21,7 +21,8 @@
__author__ = "McBuff, Nutti "
__status__ = "production"
__version__ = "4.1"
-__date__ = "XX XXX 2016"
+__date__ = "13 Nov 2016"
+
import bpy
import bmesh