update from stable

This commit is contained in:
Campbell Barton 2007-09-08 12:09:51 +00:00
parent f5f18044df
commit 64019f709b

@ -48,11 +48,8 @@ Usage
import Blender as B import Blender as B
import BPyMathutils import BPyMathutils
# reload(BPyMathutils) import bpy
import BPyRender import BPyRender
reload(BPyRender)
import boxpack2d
# reload(boxpack2d) # for developing.
from Blender.Scene import Render from Blender.Scene import Render
import os import os
@ -60,11 +57,11 @@ Vector= B.Mathutils.Vector
def alpha_mat(image): def alpha_mat(image):
# returns a material useable for # returns a material useable for
mtl= B.Material.New() mtl= bpy.data.materials.new()
mtl.mode |= (B.Material.Modes.SHADELESS | B.Material.Modes.ZTRANSP | B.Material.Modes.FULLOSA ) mtl.mode |= (B.Material.Modes.SHADELESS | B.Material.Modes.ZTRANSP | B.Material.Modes.FULLOSA )
mtl.alpha= 0.0 # so image sets the alpha mtl.alpha= 0.0 # so image sets the alpha
tex= B.Texture.New() tex= bpy.data.textures.new()
tex.type= B.Texture.Types.IMAGE tex.type= B.Texture.Types.IMAGE
image.antialias = True image.antialias = True
tex.setImageFlags('InterPol', 'UseAlpha') tex.setImageFlags('InterPol', 'UseAlpha')
@ -126,7 +123,7 @@ def save_billboard(PREF_IMAGE_PATH):
camera_matrix= BPyMathutils.plane2mat(plane) camera_matrix= BPyMathutils.plane2mat(plane)
tmp_path= '%s_%d' % (PREF_IMAGE_PATH, i) tmp_path= '%s_%d' % (PREF_IMAGE_PATH, i)
img= BPyRender.imageFromObjectsOrtho(ob_sel, tmp_path, PREF_TILE_RES.val, PREF_TILE_RES.val, PREF_AA.val, PREF_ALPHA.val, camera_matrix) img= BPyRender.imageFromObjectsOrtho(ob_sel, tmp_path, PREF_TILE_RES.val, PREF_TILE_RES.val, PREF_AA.val, PREF_ALPHA.val, camera_matrix)
# img.reload() img.reload()
#img.pack() # se we can keep overwriting the path #img.pack() # se we can keep overwriting the path
#img.filename= "" #img.filename= ""
@ -143,24 +140,25 @@ def save_billboard(PREF_IMAGE_PATH):
h= ((plane[1]-plane[2]).length + (plane[3]-plane[0]).length)/2 h= ((plane[1]-plane[2]).length + (plane[3]-plane[0]).length)/2
face_data.append( (f, img, rot90) ) face_data.append( (f, img, rot90) )
boxes2Pack.append( (i, h, w) ) boxes2Pack.append( [0.0,0.0,h, w, i] )
if PREF_IMG_PACK.val: if PREF_IMG_PACK.val:
# pack the quads into a square # pack the quads into a square
packWidth, packHeight = B.Geometry.BoxPack2D(boxes2Pack)
packWidth, packHeight, packedLs = boxpack2d.boxPackIter(boxes2Pack)
render_obs= [] render_obs= []
# Add geometry to the mesh # Add geometry to the mesh
for box in packedLs: for box in boxes2Pack:
i= box[0] i= box[4]
orig_f, img, rot90= face_data[i] orig_f, img, rot90= face_data[i]
# New Mesh and Object # New Mesh and Object
render_mat= alpha_mat(img) render_mat= alpha_mat(img)
render_me= B.Mesh.New() render_me= bpy.data.meshes.new()
render_ob= B.Object.New('Mesh') render_ob= B.Object.New('Mesh')
render_me.materials= [render_mat] render_me.materials= [render_mat]
render_ob.link(render_me) render_ob.link(render_me)
@ -168,10 +166,10 @@ def save_billboard(PREF_IMAGE_PATH):
render_obs.append(render_ob) render_obs.append(render_ob)
# Add verts clockwise from the bottom left. # Add verts clockwise from the bottom left.
_x= box[1] / packWidth _x= box[0] / packWidth
_y= box[2] / packHeight _y= box[1] / packHeight
_w= box[3] / packWidth _w= box[2] / packWidth
_h= box[4] / packHeight _h= box[3] / packHeight
render_me.verts.extend([\ render_me.verts.extend([\
@ -224,12 +222,11 @@ def save_billboard(PREF_IMAGE_PATH):
def main(): def main():
scn= B.Scene.GetCurrent() scn= bpy.data.scenes.active
ob_sel= list(scn.objects.context) ob_sel= list(scn.objects.context)
PREF_KEEP_ASPECT= False PREF_KEEP_ASPECT= False
# Error Checking # Error Checking
if len(ob_sel) < 2: if len(ob_sel) < 2:
B.Draw.PupMenu("Error%t|Select 2 mesh objects") B.Draw.PupMenu("Error%t|Select 2 mesh objects")
@ -257,8 +254,6 @@ def main():
return return
# Get user input # Get user input
block = [\ block = [\
'Image Pixel Size',\ 'Image Pixel Size',\