Paste #958

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/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