import Blender
from Blender.Mathutils import *
import os,math,struct,shutil
from Blender.Scene import Render
from Blender import Draw
import blenvis

scn=Blender.Scene.GetCurrent()
objs=Blender.Object.Get()

w=800.0
h=600.0
aspect=w/h
cnt=0

if not os.path.exists("/tmp/blen"): os.mkdir("/tmp/blen")

f=file('/tmp/blen/scale_and_translation','wb')
f.write(struct.pack('6f',2,2,2,-1.0,0,-1.0));
f.close()

context=scn.getRenderingContext()
Render.EnableDispWin()
#context.sFrame=1
#context.eFrame=1
context.sizeX=int(w)
context.sizeY=int(h)
context.renderwinSize=100
context.enableRGBAColor()
context.imageType=Render.PNG
print context


for o in objs:
    if o.type=='Lamp':
        print 'Lamp Matrix:'
        for i in xrange(1,7):
            Blender.Set('curframe',i)
            mat =  o.getMatrix()
            v = Vector([0,0,1,0])*mat
            v.y = -v.y
            print v
        
        
    if o.type=='Camera':
        cam=o.getData()
        mat=o.getMatrix()
        m=mat.copy()

        # Write out the calibration info.
        str = blenvis.cameraToCalib(o, w, h)
        cfile=file('/tmp/blen_%04d/calib.clb'%cnt,'wb')
        cfile.write(str)
        cfile.close()
        
        # print 'x:',-tan*f*aspect+w/2,'y:',tan*f+h/2
	#print intr
	#print cam.lens
        
        scn.setCurrentCamera(o)
        Blender.Redraw()
	
        pth='/tmp/blen_%04d'%cnt
        if not os.path.isdir(pth): os.mkdir(pth)
	
        context.renderPath=pth+'/image-'
        context.renderAnim()
        
        shutil.copy(pth+'/image-0001.png','/tmp/blen/image-%04d.png'%cnt)
        cnt+=1;
		
Render.CloseRenderWindow()
