- 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:
parent
cad1df2f58
commit
7a6376021a
1 changed files with 11 additions and 8 deletions
|
@ -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()
|
||||||
|
|
Loading…
Reference in a new issue