def _nutate_sub(start_frame, stop_frame, angle=15.0, spiral=0, loop=1, offset=0, phase=0, shift=math.pi/2.0, _self=cmd): cmd = _self angle = float(angle) spiral = int(spiral) loop = int(loop) fps = float(cmd.get('movie_fps')) duration = (stop_frame - start_frame)/fps n_frame = int(round(fps * duration)) if n_frame > 0: for index in range(0,n_frame): if spiral>0: sp_angle = angle*float(index+1)/n_frame elif spiral<0: sp_angle = angle*(1.0 - float(index+1)/n_frame) else: sp_angle = angle ang_cur = math.pi*phase/180.0 + (2*math.pi*index)/n_frame x_rot = sp_angle * math.sin(ang_cur)/2 y_rot = sp_angle * math.sin(ang_cur+shift)/2 cmd.turn('x',x_rot) cmd.turn('y',y_rot) cmd.mview('store',start_frame+index,freeze=1) cmd.turn('y',-y_rot) cmd.turn('x',-x_rot)
def _nutate_sub(start_frame, stop_frame, angle=15.0, spiral=0, loop=1, offset=0, phase=0, shift=math.pi / 2.0, _self=cmd): cmd = _self angle = float(angle) spiral = int(spiral) loop = int(loop) fps = float(cmd.get('movie_fps')) duration = (stop_frame - start_frame) / fps n_frame = int(round(fps * duration)) if n_frame > 0: for index in range(0, n_frame): if spiral > 0: sp_angle = angle * float(index + 1) / n_frame elif spiral < 0: sp_angle = angle * (1.0 - float(index + 1) / n_frame) else: sp_angle = angle ang_cur = math.pi * phase / 180.0 + (2 * math.pi * index) / n_frame x_rot = sp_angle * math.sin(ang_cur) / 2 y_rot = sp_angle * math.sin(ang_cur + shift) / 2 cmd.turn('x', x_rot) cmd.turn('y', y_rot) cmd.mview('store', start_frame + index, freeze=1) cmd.turn('y', -y_rot) cmd.turn('x', -x_rot)
def add_nutate(duration=8.0, angle=30.0, spiral=0, loop=1, offset=0, phase=0, shift=math.pi / 2.0, start=0, _self=cmd): cmd = _self if not start: start = cmd.get_movie_length() + 1 duration = float(duration) angle = float(angle) spiral = int(spiral) loop = int(loop) fps = float(cmd.get('movie_fps')) n_frame = int(round(fps * duration)) if n_frame > 0: cmd.mset("1 x%d" % n_frame, start, freeze=1) for index in range(0, n_frame): if spiral > 0: sp_angle = angle * float(index + 1) / n_frame elif spiral < 0: sp_angle = angle * (1.0 - float(index + 1) / n_frame) else: sp_angle = angle ang_cur = math.pi * phase / 180.0 + (2 * math.pi * index) / n_frame x_rot = sp_angle * math.sin(ang_cur) / 2 y_rot = sp_angle * math.sin(ang_cur + shift) / 2 cmd.turn('x', x_rot) cmd.turn('y', y_rot) cmd.mview('store', start + index, freeze=1) cmd.turn('y', -y_rot) cmd.turn('x', -x_rot)
def add_nutate(duration=8.0, angle=30.0, spiral=0, loop=1, offset=0, phase=0, shift=math.pi/2.0, start=0, _self=cmd): cmd = _self if not start: start = cmd.get_movie_length()+1 duration = float(duration) angle = float(angle) spiral = int(spiral) loop = int(loop) fps = float(cmd.get('movie_fps')) n_frame = int(round(fps * duration)) if n_frame > 0: cmd.mset("1 x%d"%n_frame,start,freeze=1) for index in range(0,n_frame): if spiral>0: sp_angle = angle*float(index+1)/n_frame elif spiral<0: sp_angle = angle*(1.0 - float(index+1)/n_frame) else: sp_angle = angle ang_cur = math.pi*phase/180.0 + (2*math.pi*index)/n_frame x_rot = sp_angle * math.sin(ang_cur)/2 y_rot = sp_angle * math.sin(ang_cur+shift)/2 cmd.turn('x',x_rot) cmd.turn('y',y_rot) cmd.mview('store',start+index,freeze=1) cmd.turn('y',-y_rot) cmd.turn('x',-x_rot)
def _rock(mode, axis, first, last, period, pause, _self=cmd): cmd = _self n_frame = last - first + 1 angle = cmd.get_setting_float('sweep_angle') if (period * 1.5) < pause: n_cyc = int(round(pause / period)) frame_list = [] for cyc in range(n_cyc): frame_list.extend([ (first + ((1 + 4 * cyc) * n_frame) / (4 * n_cyc)), (first + ((3 + 4 * cyc) * n_frame) / (4 * n_cyc)) ]) else: frame_list = [first + n_frame / 4, first + (3 * n_frame) / 4] if 1 or mode: direction = 0 for frame in frame_list: if not direction: cmd.turn(axis, angle / 2.0) cmd.mview("store", frame, power=-1, freeze=1) direction = -1 else: cmd.turn(axis, direction * angle) cmd.mview("store", frame, power=-1, freeze=1) direction = -direction cmd.turn(axis, direction * angle / 2.0) cmd.mview("store", last, power=-1, freeze=1) cmd.mview("interpolate", first, last)
def _rock(mode,axis,first,last,period,pause,_self=cmd): cmd = _self n_frame = last - first + 1 angle = cmd.get_setting_float('sweep_angle') if (period * 1.5) < pause: n_cyc = int(round(pause / period)) frame_list = [] for cyc in range(n_cyc): frame_list.extend( [(first + ((1+4*cyc)*n_frame)/(4*n_cyc)), (first + ((3+4*cyc)*n_frame)/(4*n_cyc))] ) else: frame_list = [ first+n_frame/4, first+(3*n_frame)/4 ] if 1 or mode: direction = 0 for frame in frame_list: if not direction: cmd.turn(axis,angle/2.0) cmd.mview("store",frame,power=-1,freeze=1) direction = -1 else: cmd.turn(axis, direction * angle) cmd.mview("store",frame,power=-1,freeze=1) direction = -direction cmd.turn(axis,direction * angle/2.0) cmd.mview("store",last,power=-1,freeze=1) cmd.mview("interpolate",first,last)
def add_rock(duration=8.0, angle=30.0, loop=1, axis='y', start=0, _self=cmd): cmd = _self if not start: start = cmd.get_movie_length() + 1 duration = float(duration) angle = float(angle) loop = int(loop) fps = float(cmd.get('movie_fps')) n_frame = int(round(fps * duration)) if n_frame > 0: cmd.mset("1 x%d" % n_frame, start, freeze=1) cmd.turn(axis, angle / 2.0) cmd.mview("store", start + n_frame / 4, power=-1, freeze=1) cmd.turn(axis, -angle) cmd.mview("store", start + (3 * n_frame) / 4, power=-1, freeze=1) if loop and (start == 1): cmd.mview("interpolate", wrap=1) else: cmd.mview("interpolate") cmd.frame(start)
def add_rock(duration=8.0,angle=30.0,loop=1,axis='y',start=0,_self=cmd): cmd = _self if not start: start = cmd.get_movie_length()+1 duration = float(duration) angle=float(angle) loop=int(loop) fps = float(cmd.get('movie_fps')) n_frame = int(round(fps * duration)) if n_frame > 0: cmd.mset("1 x%d"%n_frame,start,freeze=1) cmd.turn(axis,angle/2.0) cmd.mview("store",start+n_frame/4,power=-1,freeze=1) cmd.turn(axis,-angle) cmd.mview("store",start+(3*n_frame)/4,power=-1,freeze=1) if loop and (start == 1): cmd.mview("interpolate",wrap=1) else: cmd.mview("interpolate") cmd.frame(start)
def add_scenes(names=None, pause=8.0, cut=0.0, loop=1, rock=-1, period=8.0, animate=-1, start=0, _self=cmd): cmd = _self if not start: start = cmd.get_movie_length() + 1 animate = float(animate) pause = float(pause) period = float(period) if period > pause: period = pause rock = int(rock) if animate < 0: animate = float(cmd.get("scene_animation_duration")) if names == None: names = cmd.get_scene_list() elif cmd.is_str(names): names = cmd.safe_alpha_list_eval(names) n_scene = len(names) duration = n_scene * (pause + animate) fps = float(cmd.get('movie_fps')) n_frame = int(round(fps * duration)) if not loop: act_n_frame = int(round(fps * (duration - animate))) else: act_n_frame = n_frame if rock < 0: sweep_mode = int(cmd.get('sweep_mode')) elif rock: sweep_mode = rock - 1 else: sweep_mode = 0 if n_frame > 0: cmd.mset("1 x%d" % act_n_frame, start, freeze=1) cnt = 0 for scene in names: frame = start + int((cnt * n_frame) / n_scene) cmd.mview("store", frame, scene=scene, freeze=1) if rock: cmd.mview("interpolate", cut=cut, wrap=0) sweep_first = frame + 1 sweep_last = start + int(pause * fps + (cnt * n_frame) / n_scene) - 1 if sweep_last > act_n_frame: sweep_last = act_n_frame n_sweep_frame = sweep_last - sweep_first + 1 if n_sweep_frame > 0: if sweep_mode == 1: # x-axis rock _rock(sweep_mode, 'x', sweep_first, sweep_last, period, pause, _self=_self) elif sweep_mode < 3: # y-axis rock _rock(sweep_mode, 'y', sweep_first, sweep_last, period, pause, _self=_self) elif sweep_mode == 3: _nutate(sweep_mode, sweep_first, sweep_last, period, pause, _self=_self) frame = start + int(pause * fps + (cnt * n_frame) / n_scene) if frame <= act_n_frame: if sweep_mode != 3: cmd.mview("store", frame, scene=scene, freeze=1) cnt = cnt + 1 cmd.mview("interpolate", cut=cut, wrap=loop) if rock: cmd.mview("smooth") cmd.frame(start)
def add_state_loop(factor=1, pause=2.0, first=-1, last=-1, loop=1, start=0, _self=cmd): cmd = _self if not start: start = cmd.get_movie_length() + 1 loop = int(loop) fps = float(cmd.get('movie_fps')) n_state = cmd.count_states() duration = (pause) + (factor * n_state) / fps n_frame = int(round(fps * duration)) if n_frame > 0: cmd.mset("1 x%d" % n_frame, start, freeze=1) cmd.mview("store", start, state=1, freeze=1) cmd.mview("store", start + (n_frame * pause * 0.5) / duration, state=1, freeze=1) cmd.mview("store", start + n_state * factor + (n_frame * pause * 0.5) / duration, state=n_state, freeze=1) cmd.mview("store", start + n_frame - 1, state=n_state, freeze=1) if loop and (start == 1): cmd.mview("interpolate", wrap=1) else: cmd.mview("interpolate") cmd.frame(start)
def add_roll(duration=12.0, loop=1, axis='y', start=0, _self=cmd): cmd = _self if not start: start = cmd.get_movie_length() + 1 duration = float(duration) fps = float(cmd.get('movie_fps')) n_frame = int(round(fps * duration)) if n_frame > 0: cmd.mset("1 x%d" % n_frame, start, freeze=1) cmd.mview("store", start, power=1, freeze=1) cmd.turn(axis, 120) cmd.mview("store", start + n_frame / 3, power=1, freeze=1) cmd.turn(axis, 120) cmd.mview("store", start + (2 * n_frame) / 3, power=1, freeze=1) if loop: if (start == 1): cmd.mview("interpolate", wrap=1) cmd.turn(axis, 120) cmd.mview("store", start + n_frame - 1, power=1, freeze=1) cmd.turn(axis, 120) else: adjustment = 360.0 / n_frame cmd.turn(axis, 120 - adjustment) cmd.mview("store", start + n_frame - 1, power=1, freeze=1) cmd.mview("interpolate") cmd.turn(axis, adjustment) else: cmd.turn(axis, 120) cmd.mview("store", start + n_frame - 1, power=1, freeze=1) cmd.mview("interpolate") cmd.frame(start)
def add_scenes(names=None, pause=8.0, cut=0.0, loop=1, rock=-1, period=8.0, animate=-1, start=0, _self=cmd): cmd = _self if not start: start = cmd.get_movie_length()+1 animate = float(animate) pause = float(pause) period = float(period) if period>pause: period = pause rock = int(rock) if animate<0: animate = float(cmd.get("scene_animation_duration")) if names == None: names = cmd.get_scene_list() elif cmd.is_str(names): names = cmd.safe_alpha_list_eval(names) n_scene = len(names) duration = n_scene*(pause+animate) fps = float(cmd.get('movie_fps')) n_frame = int(round(fps * duration)) if not loop: act_n_frame = int(round(fps * (duration - animate))) else: act_n_frame = n_frame if rock<0: sweep_mode = int(cmd.get('sweep_mode')) elif rock: sweep_mode = rock - 1 else: sweep_mode = 0 if n_frame > 0: cmd.mset("1 x%d"%act_n_frame,start,freeze=1) cnt = 0 for scene in names: frame = start+int((cnt*n_frame)/n_scene) cmd.mview("store",frame,scene=scene,freeze=1) if rock: cmd.mview("interpolate",cut=cut,wrap=0) sweep_first = frame + 1 sweep_last = start + int(pause*fps+(cnt*n_frame)/n_scene) - 1 if sweep_last > act_n_frame: sweep_last = act_n_frame n_sweep_frame = sweep_last - sweep_first + 1 if n_sweep_frame > 0: if sweep_mode==1: # x-axis rock _rock(sweep_mode, 'x', sweep_first, sweep_last, period, pause, _self=_self) elif sweep_mode<3: # y-axis rock _rock(sweep_mode, 'y', sweep_first, sweep_last, period, pause, _self=_self) elif sweep_mode == 3: _nutate(sweep_mode, sweep_first, sweep_last, period, pause, _self=_self) frame = start+int(pause*fps+(cnt*n_frame)/n_scene) if frame <= act_n_frame: if sweep_mode!=3: cmd.mview("store",frame,scene=scene,freeze=1) cnt = cnt + 1 cmd.mview("interpolate",cut=cut,wrap=loop) if rock: cmd.mview("smooth") cmd.frame(start)
def add_state_loop(factor=1,pause=2.0,first=-1,last=-1,loop=1,start=0,_self=cmd): cmd = _self if not start: start = cmd.get_movie_length() + 1 loop = int(loop) fps = float(cmd.get('movie_fps')) n_state = cmd.count_states() duration = (pause) + (factor * n_state) / fps n_frame = int(round(fps * duration)) if n_frame > 0: cmd.mset("1 x%d"%n_frame, start, freeze=1) cmd.mview("store",start, state=1, freeze=1) cmd.mview("store",start + (n_frame * pause * 0.5) / duration, state=1, freeze=1) cmd.mview("store",start + n_state * factor + (n_frame * pause * 0.5) / duration, state=n_state, freeze=1) cmd.mview("store",start + n_frame-1, state=n_state, freeze=1) if loop and (start == 1): cmd.mview("interpolate",wrap=1) else: cmd.mview("interpolate") cmd.frame(start)
def add_roll(duration=12.0,loop=1,axis='y',start=0,_self=cmd): cmd = _self if not start: start = cmd.get_movie_length()+1 duration = float(duration) fps = float(cmd.get('movie_fps')) n_frame = int(round(fps * duration)) if n_frame > 0: cmd.mset("1 x%d"%n_frame,start,freeze=1) cmd.mview("store",start,power=1,freeze=1) cmd.turn(axis,120) cmd.mview("store",start+n_frame/3,power=1,freeze=1) cmd.turn(axis,120) cmd.mview("store",start+(2*n_frame)/3,power=1,freeze=1) if loop: if (start == 1): cmd.mview("interpolate",wrap=1) cmd.turn(axis,120) cmd.mview("store",start+n_frame-1,power=1,freeze=1) cmd.turn(axis,120) else: adjustment = 360.0/n_frame cmd.turn(axis,120 - adjustment) cmd.mview("store",start+n_frame-1,power=1,freeze=1) cmd.mview("interpolate") cmd.turn(axis,adjustment) else: cmd.turn(axis,120) cmd.mview("store",start+n_frame-1,power=1,freeze=1) cmd.mview("interpolate") cmd.frame(start)