cuburn/helpers/xfsearch.py
2012-03-16 20:51:50 -07:00

50 lines
1.4 KiB
Python

#!/usr/bin/python2
"""
Render multiple versions of a genome, disabling each xform and variation in
turn, for use in debugging.
"""
import os, sys, json, scipy, pycuda.autoinit
import numpy as np
from copy import deepcopy
sys.path.insert(0, '.')
from cuburn import genome, render
prof = dict(fps=24, width=1280, height=720, quality=2500, skip=0, duration=30)
from main import save
def main(gnm_path, time):
basename = os.path.basename(gnm_path).rsplit('.', 1)[0]
rmgr = render.RenderManager()
def go(gj, name):
gnm = genome.Genome(gj)
gnm.set_profile(prof)
rt = [('out/%s_%s_%04d.jpg' % (name, basename, time * 10000), time)]
for out in rmgr.render(gnm, rt, 1280, 720):
save(out)
gnm = json.load(open(gnm_path))
for i in gnm['xforms']:
xf = gnm['xforms'].pop(i)
go(gnm, 'noxf_' + i)
gnm['xforms'][i] = xf
vars = set([v for g in gnm['xforms'].values() for v in g['variations']])
for v in vars:
g2 = deepcopy(gnm)
for x in g2['xforms'].values():
x['variations'].pop(v, None)
if not x['variations']:
x['variations']['linear'] = {'weight': 1}
go(g2, 'novar_' + v)
if __name__ == "__main__":
if len(sys.argv) != 3:
sys.exit('Usage: progname gnmpath render_time_01')
main(sys.argv[1], float(sys.argv[2]))