1
0
Fork 0

- make it faster by reloading rather than erasing the image every time

(this also fixes a bug that wouldn't update a changed texture in 3D view)
- better progress bar
This commit is contained in:
mfranz 2008-03-03 18:06:57 +00:00
parent cad1df2f58
commit 7a6376021a

View file

@ -37,7 +37,8 @@ MARGIN = 10 # px
GAP = 10 # px GAP = 10 # px
import Blender, math, random import Blender
from random import randint as rand
class Abort(Exception): class Abort(Exception):
@ -67,7 +68,7 @@ def pack():
boxes = [] boxes = []
meshes = {} unique_meshes = {}
BIG = 1<<30 BIG = 1<<30
Blender.Window.DrawProgressBar(0.0, "packing") Blender.Window.DrawProgressBar(0.0, "packing")
@ -78,10 +79,10 @@ def pack():
mesh = o.getData(mesh = 1) mesh = o.getData(mesh = 1)
if not mesh.faceUV: if not mesh.faceUV:
continue continue
if mesh.name in meshes: if mesh.name in unique_meshes:
#print "dropping duplicate mesh", mesh.name, "of object", o.name #print "dropping duplicate mesh", mesh.name, "of object", o.name
continue continue
meshes[mesh.name] = True unique_meshes[mesh.name] = True
print "\tobject '%s'" % o.name print "\tobject '%s'" % o.name
xmin = ymin = BIG xmin = ymin = BIG
@ -107,8 +108,11 @@ def pack():
yscale = (1.0 - 2.0 * margin[1]) / boxmax yscale = (1.0 - 2.0 * margin[1]) / boxmax
Blender.Window.DrawProgressBar(0.2, "Erasing texture") Blender.Window.DrawProgressBar(0.2, "Erasing texture")
drawrect(0, 0, 1, 1) # erase texture image.reload()
for box in boxes: #drawrect(0, 0, 1, 1) # erase texture
for i, box in enumerate(boxes):
Blender.Window.DrawProgressBar(i * 0.8 / len(boxes), "Drawing")
xmin = ymin = BIG xmin = ymin = BIG
xmax = ymax = -BIG xmax = ymax = -BIG
for f in box[6].faces: for f in box[6].faces:
@ -121,8 +125,7 @@ def pack():
ymin = min(ymin, p[1]) ymin = min(ymin, p[1])
ymax = max(ymax, p[1]) ymax = max(ymax, p[1])
drawrect(xmin, ymin, xmax, ymax, (random.randint(128, 255), random.randint(128, 255), drawrect(xmin, ymin, xmax, ymax, (rand(128, 255), rand(128, 255), rand(128, 255), 255))
random.randint(128, 255), 255))
box[6].update() box[6].update()
Blender.Window.RedrawAll() Blender.Window.RedrawAll()