cuburn/helpers/xfsearch.py

55 lines
1.6 KiB
Python
Raw Permalink Normal View History

2012-03-16 23:34:02 -04:00
#!/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
2012-07-05 02:04:46 -04:00
from os.path import abspath, join, dirname
sys.path.insert(0, abspath(join(dirname(__file__), '..')))
2012-03-16 23:34:02 -04:00
2012-06-01 01:50:34 -04:00
from cuburn import genome, profile, render
2012-03-16 23:34:02 -04:00
from main import save
def main(gnm_path, time):
2012-07-05 02:04:46 -04:00
gdb = genome.db.connect('.')
gnm, basename = gdb.get_anim(gnm_path)
2012-03-16 23:34:02 -04:00
rmgr = render.RenderManager()
def go(gj, name):
2012-06-01 01:50:34 -04:00
gprof = profile.wrap(profile.BUILTIN['720p'], gj)
2013-01-07 01:01:54 -05:00
name = 'out/%s_%s_%04d' % (name, basename, time * 10000)
rdr = render.Renderer(gnm, gprof)
evt, buf = rmgr.queue_frame(rdr, gnm, gprof, time)
evt.synchronize()
save(rdr.out, name, buf)
print 'Saved', name, evt.time()
2012-03-16 23:34:02 -04:00
for i in gnm['xforms']:
xf = gnm['xforms'].pop(i)
go(gnm, 'noxf_' + i)
gnm['xforms'][i] = xf
2012-07-05 02:04:46 -04:00
if 'final_xform' in gnm:
xf = gnm.pop('final_xform')
go(gnm, 'noxf_final')
gnm['final_xform'] = xf
2012-03-16 23:34:02 -04:00
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]))