[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [11339] trunk/blender/release/scripts/ uv_export.py: Fix for #6946 Save UV layout broken for large wire sizes
Martin Poirier
theeth at yahoo.com
Mon Jul 23 03:12:08 CEST 2007
Revision: 11339
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=11339
Author: theeth
Date: 2007-07-23 03:12:07 +0200 (Mon, 23 Jul 2007)
Log Message:
-----------
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.
Modified Paths:
--------------
trunk/blender/release/scripts/uv_export.py
Modified: trunk/blender/release/scripts/uv_export.py
===================================================================
--- trunk/blender/release/scripts/uv_export.py 2007-07-22 22:10:54 UTC (rev 11338)
+++ trunk/blender/release/scripts/uv_export.py 2007-07-23 01:12:07 UTC (rev 11339)
@@ -9,7 +9,7 @@
__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 @@
# 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 @@
step = 0
- img = Buffer(size+1,size+1)
+ img = Buffer(size,size)
if wrap:
wrapSize = size
@@ -333,15 +338,16 @@
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 @@
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
More information about the Bf-blender-cvs
mailing list