All pastes #411288 Raw Edit

autobake (rcruiz)

public text v1 · immutable
#411288 ·published 2007-03-26 22:37 UTC
rendered paste body
#!BPY

"""
Name: 'Autobake (RCRuiz)'
Blender: 243
Group: 'Object'
Tooltip: 'Genera imagenes y uvm y renderea'
""" 

__author__ = "Ramon Carlos Ruiz (RCRuiz)"

__url__ = ("http://blenderartists.org/forum/showthread.php?t=92364", "http://blenderartists.org" )
__version__ = "1.0 03/25/2007"

__bpydoc__ = """\
Copywrite to Ramon Carlos Ruiz
"""

#max size of image
height=500
width=500

import Blender
import archimap_ex
from Blender import *

H = Blender.Draw.Create(200)
W = Blender.Draw.Create(200)
pup_block = [\
	'Projection',\
	('W:', W,50,2500, 'width'),\
	('H', H,50,2500, 'height'),\
	
	]

if Blender.Draw.PupBlock("Max Image Size", pup_block):
        height=H.val
        width=W.val        
        sel=Blender.Object.GetSelected()
        maxFac=0.0
        for obj in sel:
        	if obj.getType()=='Mesh':
        		obj.sel=0
        		bnd=obj.getBoundBox()
        		v=bnd[0]
                        v=bnd[0]-bnd[6]
                        if maxFac<v.length:
                        	maxFac=v.length
        scn = Scene.GetCurrent()
        context = scn.getRenderingContext()
        cont=1
        for obj in sel:
          obj.sel=1
          print "Chequing "+obj.name+" ("+str(cont)+"/"+str(len(sel))+")"
          cont=cont+1
          if obj.getType()=='Mesh':
                bnd=obj.getBoundBox()
                v=bnd[0]
                v=bnd[0]-bnd[6]
                fac=v.length/maxFac
                mesh=obj.getData(mesh=1)
                uvnames=mesh.getUVLayerNames()
                ctr=0
                for uvn in uvnames:
                	if uvn==obj.name+".BakeInfo":
                		ctr=1		
                if ctr==0:
                	mesh.addUVLayer(obj.name+".BI")
                mesh.activeUVLayer=obj.name+".BI"
                archimap_ex.main(0)
                ctr=0
                img=None
                imgl=Image.Get()
                for im in imgl:
                	if im.getName()==obj.name+".BI":
                		img=im
                if img==None:
                	ctr=1
                	img=Image.New(obj.name+".BI",width*fac,height*fac,24)
                img.setFilename(Blender.Get("texturesdir")+obj.name+".BI")
                Blender.Main.images.active=img
                faces=mesh.faces
                for f in faces:
                        f.mode=512
                	f.image=img
                context.renderBake()
                print "Render Done!"
                img.save()
                if img.packed==1:
                	img.repack()
                else:
                	img.pack()
                	img.repack()
                obj.sel=0
                print "Pack Done!"
          print "Object Done!"
        for obj in sel:
                obj.sel=1