[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [33263] trunk/blender/release/scripts/op/ uvcalc_smart_project.py: bugfix [#24871] Unwrapping with Smart Project give a bad result.

Campbell Barton ideasman42 at gmail.com
Tue Nov 23 17:10:20 CET 2010


Revision: 33263
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=33263
Author:   campbellbarton
Date:     2010-11-23 17:10:20 +0100 (Tue, 23 Nov 2010)

Log Message:
-----------
bugfix [#24871] Unwrapping with Smart Project give a bad result.

Modified Paths:
--------------
    trunk/blender/release/scripts/op/uvcalc_smart_project.py

Modified: trunk/blender/release/scripts/op/uvcalc_smart_project.py
===================================================================
--- trunk/blender/release/scripts/op/uvcalc_smart_project.py	2010-11-23 16:07:51 UTC (rev 33262)
+++ trunk/blender/release/scripts/op/uvcalc_smart_project.py	2010-11-23 16:10:20 UTC (rev 33263)
@@ -776,18 +776,14 @@
 
 
 
-def VectoMat(vec):
-    a3 = vec.__copy__().normalize()
+def VectoQuat(vec):
+    vec = vec.copy().normalize()
+    if abs(vec.x) > 0.5:
+        return vec.to_track_quat('Z', 'X')
+    else:
+        return vec.to_track_quat('Z', 'Y')
 
-    up = Vector((0.0, 0.0, 1.0))
-    if abs(a3.dot(up)) == 1.0:
-        up = Vector((0.0, 1.0, 0.0))
 
-    a1 = a3.cross(up).normalize()
-    a2 = a3.cross(a1)
-    return Matrix([a1[0], a1[1], a1[2]], [a2[0], a2[1], a2[2]], [a3[0], a3[1], a3[2]])
-
-
 class thickface(object):
     __slost__= 'v', 'uv', 'no', 'area', 'edge_keys'
     def __init__(self, face, uvface, mesh_verts):
@@ -1048,14 +1044,14 @@
                 continue
 
             # Make a projection matrix from a unit length vector.
-            MatProj = VectoMat(projectVecs[i])
+            MatQuat = VectoQuat(projectVecs[i])
 
             # Get the faces UV's from the projected vertex.
             for f in faceProjectionGroupList[i]:
                 f_uv = f.uv
                 for j, v in enumerate(f.v):
                     # XXX - note, between mathutils in 2.4 and 2.5 the order changed.
-                    f_uv[j][:] = (v.co * MatProj)[:2]
+                    f_uv[j][:] = (v.co * MatQuat)[:2]
 
 
         if USER_SHARE_SPACE:





More information about the Bf-blender-cvs mailing list