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:
authorMartin Poirier <theeth@yahoo.com>2007-07-23 05:12:07 +0400
committerMartin Poirier <theeth@yahoo.com>2007-07-23 05:12:07 +0400
commitbecc4feb5f8d3e30b5af0d6cc400a4c47e4fe163 (patch)
treec0ea59ddbf9ed55d91d22ec37ecebefb9ced2271 /release
parent3d0feeb4718e5a642778077d03eece3e53776fb9 (diff)
Fix for #6946 Save UV layout broken for large wire sizes
This also helped me pinpoint a couple of off by one errors in the UV rasterizing code. One especially noteworthy was that all UV at 1.0 (on the 0..1 scale) didn't render properly.
Diffstat (limited to 'release')
-rw-r--r--release/scripts/uv_export.py54
1 files changed, 30 insertions, 24 deletions
diff --git a/release/scripts/uv_export.py b/release/scripts/uv_export.py
index f32b5b4fc12..f73b7bc7b10 100644
--- a/release/scripts/uv_export.py
+++ b/release/scripts/uv_export.py
@@ -9,7 +9,7 @@ Tooltip: 'Export the UV face layout of the selected object to a .TGA or .SVG fil
__author__ = "Martin 'theeth' Poirier"
__url__ = ("http://www.blender.org", "http://blenderartists.org/")
-__version__ = "2.4"
+__version__ = "2.5"
__bpydoc__ = """\
This script exports the UV face layout of the selected mesh object to
@@ -96,6 +96,11 @@ Notes:<br>See change logs in scripts for a list of contributors.
# Version 2.4
# Port from NMesh to Mesh by Daniel Salazar (zanqdo)
# --------------------------
+# Version 2.5
+# Fixed some old off by one rasterizing errors (didn't render points at 1.0 in the UV scale properly).
+# Fixed wire drawing for non 1 wire size (didn't wrap or stretch properly
+# and would often raise exceptions)
+# --------------------------
FullPython = False
@@ -322,7 +327,7 @@ def UV_Export_TGA(vList, size, wsize, wrap, file):
step = 0
- img = Buffer(size+1,size+1)
+ img = Buffer(size,size)
if wrap:
wrapSize = size
@@ -333,15 +338,16 @@ def UV_Export_TGA(vList, size, wsize, wrap, file):
for f in vList:
for v in f:
x = int(v[0] * size)
- maxx = max (x, maxx)
- minx = min (x, minx)
+ maxx = max (x + wsize - 1, maxx)
+ minx = min (x - wsize + 1, minx)
y = int(v[1] * size)
- maxy = max (y, maxy)
- miny = min (y, miny)
+ maxy = max (y + wsize - 1, maxy)
+ miny = min (y - wsize + 1, miny)
wrapSize = max (maxx - minx + 1, maxy - miny + 1)
scale = float (size) / float (wrapSize)
+ max_index = size - 1 # max index of the buffer (height or width)
fnum = 0
fcnt = len (vList)
@@ -361,31 +367,31 @@ def UV_Export_TGA(vList, size, wsize, wrap, file):
if step:
try:
for t in xrange(step):
- x = int(floor((co1[0] + t*(co2[0]-co1[0])/step) * size))
- y = int(floor((co1[1] + t*(co2[1]-co1[1])/step) * size))
+ x = int(floor((co1[0] + t*(co2[0]-co1[0])/step) * max_index))
+ y = int(floor((co1[1] + t*(co2[1]-co1[1])/step) * max_index))
- if wrap:
- x = x % wrapSize
- y = y % wrapSize
- else:
- x = int ((x - minx) * scale)
- y = int ((y - miny) * scale)
-
- co = x * 1 + y * 1 * size;
-
- img[co] = 0
- if wsize > 1:
- for x in range(-1*wsize + 1,wsize):
- for y in range(-1*wsize,wsize):
- img[co + 1 * x + y * 1 * size] = 0
+ for dx in range(-1*wsize + 1, wsize):
+ if wrap:
+ wx = (x + dx) % wrapSize
+ else:
+ wx = int ((x - minx + dx) * scale)
+
+ for dy in range(-1*wsize + 1, wsize):
+ if wrap:
+ wy = (y + dy) % wrapSize
+ else:
+ wy = int ((y - miny + dy) * scale)
+
+ co = wx * 1 + wy * 1 * size
+ img[co] = 0
except OverflowError:
if not extreme_warning:
print "Skipping extremely long UV edges, check your layout for excentric values"
extreme_warning = True
for v in f:
- x = int(v[0] * size)
- y = int(v[1] * size)
+ x = int(v[0] * max_index)
+ y = int(v[1] * max_index)
if wrap:
x = x % wrapSize