-
Notifications
You must be signed in to change notification settings - Fork 0
/
example.py
76 lines (66 loc) · 1.95 KB
/
example.py
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# -*- coding: utf-8 -*-
"""
Created on Tue Mar 31 21:35:23 2015
@author: ibackus
"""
import pbmov
import pbmov_utils
import numpy as np
import pynbody
SimArray = pynbody.array.SimArray
#from scipy.interpolate import interp1d
import isaac
fname = 'data/wengen_test_final.std'
paramname = 'data/wengen_test_final.param'
savename = 'example.mp4'
target = np.array([ 8.70984, 9.2456 , 0. ])
vmin = 1e-8
vmax = 1e1
fps = 25
res = 720
tmax = 18
nt = int(tmax*fps)
t = np.linspace(0, tmax, nt)
# ------------------------------------------
# Set up camera positions
# ------------------------------------------
cam = []
cam.append([0,0,100])
cam.append([0,0,20])
cam.append([5,5,5])
cam.append([8,9,0])
cam.append([8.5,9.1,0])
cam.append([0,0,-100])
cam = np.array(cam)
t_cam = np.array([0,2,5,10,13,tmax])
# Tell camera to slow down by certain of the camera spots
camstop = np.array([0,0,0,1,1,0], dtype=bool)
# could also do:
# camstop = np.array([3,4])
# Now interpolate the camera locations
cam_spl = pbmov_utils.interpolate(t_cam, cam, camstop)
cameras_all = cam_spl(t)
# ------------------------------------------
# Set up target positions
# ------------------------------------------
target = []
target.append([0,0,0])
target.append([ 8.70984, 9.2456 , 0. ])
target.append([ 8.70984, 9.2456 , 0. ])
target = np.array(target)
# times for target positions
t_target = np.array([0,t_cam[1], tmax])
# now interpolate
target_spl = pbmov_utils.interpolate(t_target, target)
targets_all = target_spl(t)
# ------------------------------------------
# Set up a basic, constant camera rotation
# ------------------------------------------
camera_rots = np.linspace(0, 2*np.pi, nt)
# ------------------------------------------
# now render movie!
# ------------------------------------------
f = pynbody.load(fname, paramname=paramname)
isaac.snapshot_defaults(f)
pbmov.render_movie(f.g, cameras_all, targets_all, nt, vmin, vmax, camera_rots, \
res, fps = fps, savename=savename)