mirror of
https://github.com/stevenrobertson/cuburn.git
synced 2025-04-21 00:51:31 -04:00
Update main.py to support new stuff.
This commit is contained in:
parent
e7cb39b456
commit
356d2713d1
48
main.py
48
main.py
@ -23,7 +23,7 @@ import numpy as np
|
||||
import pycuda.driver as cuda
|
||||
|
||||
from cuburn import render, filters, output
|
||||
from cuburn.genome import convert, use
|
||||
from cuburn.genome import convert, use, db
|
||||
|
||||
profiles = {
|
||||
'1080p': dict(width=1920, height=1080),
|
||||
@ -40,21 +40,28 @@ def save(out):
|
||||
def main(args, prof):
|
||||
import pycuda.autoinit
|
||||
|
||||
gnm_str = args.flame.read()
|
||||
if '<' in gnm_str[:10]:
|
||||
gdb = db.open(args.genomedb)
|
||||
if os.path.isfile(args.flame) and (args.flame.endswith('.flam3') or
|
||||
args.flame.endswith('.flame')):
|
||||
with open(args.flame) as fp:
|
||||
gnm_str = fp.read()
|
||||
flames = convert.XMLGenomeParser.parse(gnm_str)
|
||||
if len(flames) != 1:
|
||||
warnings.warn('%d flames in file, only using one.' % len(flames))
|
||||
gnm = convert.convert_flame(flames[0])
|
||||
gnm = convert.flam3_to_node(flames[0])
|
||||
else:
|
||||
gnm = json.loads(gnm_str)
|
||||
gnm = gdb.open(args.flame)
|
||||
|
||||
if gnm['type'] == 'node':
|
||||
gnm = convert.node_to_anim(gnm, half=args.half)
|
||||
elif gnm['type'] == 'edge':
|
||||
gnm = convert.edge_to_anim(gdb, gnm)
|
||||
assert gnm['type'] == 'animation', 'Unrecognized genome type.'
|
||||
|
||||
gprof, times = use.wrap_genome(prof, gnm)
|
||||
rmgr = render.RenderManager()
|
||||
|
||||
basename = os.path.basename(args.flame.name).rsplit('.', 1)[0] + '_'
|
||||
if args.flame.name == '-':
|
||||
basename = ''
|
||||
basename = os.path.basename(args.flame).rsplit('.', 1)[0] + '_'
|
||||
if args.name is not None:
|
||||
basename = args.name
|
||||
prefix = os.path.join(args.dir, basename)
|
||||
@ -130,8 +137,8 @@ def main(args, prof):
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(description='Render fractal flames.')
|
||||
|
||||
parser.add_argument('flame', metavar='FILE', type=argparse.FileType(),
|
||||
help="Path to genome file ('-' for stdin)")
|
||||
parser.add_argument('flame', metavar='ID', type=str,
|
||||
help="Filename or flame ID of genome to render")
|
||||
parser.add_argument('-g', action='store_true', dest='gfx',
|
||||
help="Show output in OpenGL window")
|
||||
parser.add_argument('-n', metavar='NAME', type=str, dest='name',
|
||||
@ -144,6 +151,9 @@ if __name__ == "__main__":
|
||||
help="Don't overwrite output files that are newer than the input")
|
||||
parser.add_argument('--pause', action='store_true',
|
||||
help="Don't close the preview window after rendering is finished")
|
||||
parser.add_argument('--genomedb', '-d', metavar='PATH', type=str,
|
||||
help="Path to genome database (file or directory, default '.')",
|
||||
default='.')
|
||||
|
||||
parser.add_argument('--sync', action='store_true', dest='sync',
|
||||
help='Use synchronous launches whenever possible')
|
||||
@ -159,6 +169,8 @@ if __name__ == "__main__":
|
||||
prof.add_argument('-p', dest='prof', choices=profiles.keys(),
|
||||
default='preview', help='Set profile, specifying defaults for all '
|
||||
'options below. (default: "preview")')
|
||||
prof.add_argument('--pfile', type=argparse.FileType(), metavar='PROFILE',
|
||||
help='Set profile using a JSON file, overriding -p.')
|
||||
prof.add_argument('--skip', dest='skip', metavar='N', type=int,
|
||||
help="Skip N frames between each rendered frame")
|
||||
prof.add_argument('--quality', type=int, metavar='SPP',
|
||||
@ -168,11 +180,23 @@ if __name__ == "__main__":
|
||||
prof.add_argument('--width', type=int, metavar='PX')
|
||||
prof.add_argument('--height', type=int, metavar='PX')
|
||||
|
||||
node = parser.add_argument_group('Node options')
|
||||
node.add_argument('--half', action='store_true',
|
||||
help='Use a half-loop when rendering a node.')
|
||||
node.add_argument('--still', action='store_true',
|
||||
help='Override start, end, and temporal frame width to render one '
|
||||
'frame without motion blur. (Works on edges too)')
|
||||
|
||||
args = parser.parse_args()
|
||||
prof = dict(profiles[args.prof])
|
||||
for k in prof:
|
||||
if args.pfile:
|
||||
prof = json.load(open(args.pfile))
|
||||
for k in ['duration', 'skip', 'quality', 'fps']:
|
||||
if getattr(args, k) is not None:
|
||||
prof[k] = getattr(args, k)
|
||||
prof['duration'] = args.duration
|
||||
if args.still:
|
||||
args.start = 0
|
||||
args.end = 1
|
||||
prof['frame_width'] = 0
|
||||
|
||||
main(args, prof)
|
||||
|
Loading…
Reference in New Issue
Block a user