#!/usr/bin/env python
import sys
from yt.mods import *
import yt.extensions.volume_rendering as vr
import yt.extensions.image_writer as iw
import yt.amr_utils as au
import time
fn = sys.argv[1]
pf = load(fn)
dd = pf.h.all_data()
mi, ma = na.log10(dd.quantities["Extrema"]("Density")[0])
mi += 1.0 ; ma -= 0.5 # To allow a bit of room at the edges
hv = vr.HomogenizedVolume(source = dd, pf = pf, fields=["Density"],
log_fields=[True])
if not os.path.exists(fn+'.bricks'):
hv.initialize_source()
hv.store_bricks(fn+'.bricks')
else:
hv.load_bricks(fn+'.bricks')
tf = vr.ColorTransferFunction((mi, ma))
tf.add_layers(4, w=0.02)
c = na.array([0.5,0.5,0.5])
L = na.array([1., 0.0, 0.0])
W = 0.1
N = 512
cam = vr.Camera(c, L, W, (N,N),
transfer_function = tf, pf = pf, volume = hv)
fn = "%s_image.png" % pf
cam.zoom(1.0)
vals = cam.snapshot()
norm = vals.std()*4.0
iw.write_bitmap(vals, fn, vals.std()*4.0)
# for i in range(0,20):
# L = na.array([na.sin(2*na.pi*i/20.), na.cos(2*na.pi*i/20.), 1.0])
# print L
# L = na.array([1., 1., 1.0])
# cam = vr.Camera(c, L, W, (N,N),
# transfer_function = tf, pf = pf, volume = hv)
# cam.zoom(1.0)
# vals = cam.snapshot()
# fn = "%s_%04i_image.png" % (pf, i)
# iw.write_bitmap(vals, fn, norm)
# print "WROTE", fn, cam