# XML export script # Copyright (C) The Pixel Farm Ltd. 2016-2020 import pfpy import math def pfExportName(): return 'XML Camera' def pfExportExtension(): return 'xml' def pfExportSupport(): return ('cameras', 'multiCamera') def pfExportSystem(): return ('right', 'y') def main(): fobj= open(pfpy.getExportFilename(), 'w') pfpy.setExportCoordinateSystem('right', 'y') fobj.write('\n') fobj.write('\n\n'); for j in range(0, pfpy.getNumCameras()): cam= pfpy.getCameraRef(j) if cam.getExport(): fobj.write('\n') fobj.write('right\n') fobj.write('y\n') fobj.write('xyz\n') clip= pfpy.getClipRef(j) firstKey= clip.getInPoint() lastKey= clip.getOutPoint() numFrames= 1+lastKey-firstKey fps= clip.getFrameRate() asp= clip.getPixelAspect() xsize= clip.getFrameWidth() ysize= clip.getFrameHeight() footageName= clip.getFilename('all') if not clip.isMovieFile(): wild= clip.getFilename('num') else: wild= ''; footageName= clip.getFilename('dir')+clip.getFilename('file')+clip.getFilename('sep')+wild+'.'+clip.getFilename('ext') hfb= cam.getSensorWidth('mm') vfb= cam.getSensorHeight('mm') asp= cam.getPixelAspect(); fobj.write('%g'%asp+'\n') fobj.write('%g'%hfb+' %g'%vfb+' mm\n') fobj.write('%d'%xsize+' %d'%ysize+'\n') for i in range(firstKey, lastKey+1): v= cam.getTranslation(i) q= cam.getQuaternionRotation(i) r= cam.getEulerRotation(i, 'xyz') hfov= cam.getHorizontalFOV(i, 'deg') vfov= cam.getVerticalFOV(i, 'deg') focal= cam.getFocalLength(i, 'mm') fobj.write('%g'%v[0]+' %g'%v[1]+' %g'%v[2]+'\n') fobj.write('%g'%r[0]+' %g'%r[1]+' %g'%r[2]+'\n') fobj.write('%g'%focal+' mm\n') fobj.write('\n') fobj.write('\n') fobj.close()