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 _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_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 _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_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_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)