Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'mesh_looptools.py')
-rw-r--r--mesh_looptools.py14
1 files changed, 11 insertions, 3 deletions
diff --git a/mesh_looptools.py b/mesh_looptools.py
index 41c1be0a..90c914cd 100644
--- a/mesh_looptools.py
+++ b/mesh_looptools.py
@@ -19,7 +19,7 @@
bl_info = {
"name": "LoopTools",
"author": "Bart Crouch",
- "version": (4, 6, 7),
+ "version": (4, 6, 9),
"blender": (2, 80, 0),
"location": "View3D > Sidebar > Edit Tab / Edit Mode Context Menu",
"warning": "",
@@ -290,8 +290,10 @@ def calculate_plane(bm_mod, loop, method="best_fit", object=False):
for i in range(itermax):
vec = vec2
vec2 = mat @ vec
- if vec2.length != 0:
- vec2 /= vec2.length
+ # Calculate length with double precision to avoid problems with `inf`
+ vec2_length = math.sqrt(vec2[0] ** 2 + vec2[1] ** 2 + vec2[2] ** 2)
+ if vec2_length != 0:
+ vec2 /= vec2_length
if vec2 == vec:
break
if vec2.length == 0:
@@ -536,6 +538,10 @@ def get_derived_bmesh(object, bm):
for mod in object.modifiers:
if mod.type != 'MIRROR':
mod.show_viewport = False
+ #leave the merge points untouched
+ if mod.type == 'MIRROR':
+ merge = mod.use_mirror_merge
+ mod.use_mirror_merge = False
# get derived mesh
bm_mod = bmesh.new()
depsgraph = bpy.context.evaluated_depsgraph_get()
@@ -546,6 +552,8 @@ def get_derived_bmesh(object, bm):
# re-enable other modifiers
for mod_name in show_viewport:
object.modifiers[mod_name].show_viewport = True
+ if mod.type == 'MIRROR':
+ mod.use_mirror_merge = merge
# no mirror modifiers, so no derived mesh necessary
else:
derived = False