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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-04-09 16:54:13 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-04-10 15:49:49 +0400
commitf93bc7693a530632455d3ec7acc4bce54a1f85bc (patch)
treed0e067438cbc547875b3cb77e53904c5ea2a537d /release/scripts/startup/bl_operators/uvcalc_smart_project.py
parent19e627cab34a04a3d01b2e3a868b7bf91d56e8f9 (diff)
Backport revisions for the 2.70a releasev2.70a
d2660a0, 6e99fb0, 58c22d8, 83f2012 + ff21f6a, a7ed1db. cc6b106 7997e38, 9d4b54b, efb48fc, 3fc293c, 29f359c, 77c1d17, 92a539e, c626462, f48828b, 6452d9f, 765d077, 74518b2, af16d46, 8da4936, 6babbf5, f0106d2, f88776b, ee72cba, 467596d, e21a7b3, eed3974, 71a2ff1, ccf9afd, 44d6c68, 30fdfc3, b69809c, b0a8e4c, bd57ec6, 3b0832d, 2a25676, 3977b76, fb25a86, 9bbb30b, 51abc2b, 0ebade5, 2c0e32f, 3deaf7d, ea01b24, c61eb64, f3db038, a6fb670, eedde31, b66a954, 7ff123c, f5b79df, 7148c97, 54a8753, fcaa018, 4c73001, 7a21330, 07578be, e9a64e2, fd3de8b, ae792e9, b7712a7 + 3600622, d9557d0, 6d973b8, 688257d, 4acb57a, 95ac6bc, Also backported openmp changes to sculpt making it so number of real CPU cores is used as a number of threads here.
Diffstat (limited to 'release/scripts/startup/bl_operators/uvcalc_smart_project.py')
-rw-r--r--release/scripts/startup/bl_operators/uvcalc_smart_project.py23
1 files changed, 17 insertions, 6 deletions
diff --git a/release/scripts/startup/bl_operators/uvcalc_smart_project.py b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
index 70df5a9df21..1a8bd44e846 100644
--- a/release/scripts/startup/bl_operators/uvcalc_smart_project.py
+++ b/release/scripts/startup/bl_operators/uvcalc_smart_project.py
@@ -232,17 +232,28 @@ def islandIntersectUvIsland(source, target, SourceOffset):
return 0 # NO INTERSECTION
+def rotate_uvs(uv_points, angle):
+
+ if angle != 0.0:
+ mat = Matrix.Rotation(angle, 2)
+ for uv in uv_points:
+ uv[:] = mat * uv
+
+
def optiRotateUvIsland(faces):
uv_points = [uv for f in faces for uv in f.uv]
angle = geometry.box_fit_2d(uv_points)
if angle != 0.0:
- mat = Matrix.Rotation(angle, 2)
- i = 0 # count the serialized uv/vectors
- for f in faces:
- for j, k in enumerate(range(i, len(f.v) + i)):
- f.uv[j][:] = mat * uv_points[k]
- i += len(f.v)
+ rotate_uvs(uv_points, angle)
+
+ # orient them vertically (could be an option)
+ minx, miny, maxx, maxy = boundsIsland(faces)
+ w, h = maxx - minx, maxy - miny
+ if h < w:
+ from math import pi
+ angle = pi / 2.0
+ rotate_uvs(uv_points, angle)
# Takes an island list and tries to find concave, hollow areas to pack smaller islands into.