def execute(self, operation, in_frame=None, out_frame=None, **kwargs): """ Main hook entry point :operation: String Frame operation to perform :in_frame: int in_frame for the current context (e.g. the current shot, current asset etc) :out_frame: int out_frame for the current context (e.g. the current shot, current asset etc) :returns: Depends on operation: 'set_frame_range' - Returns if the operation was succesfull 'get_frame_range' - Returns the frame range in the form (in_frame, out_frame) """ if operation == "get_frame_range": lPlayer = FBPlayerControl() current_in = lPlayer.LoopStart.GetFrame() current_out = lPlayer.LoopStop.GetFrame() return (current_in, current_out) elif operation == "set_frame_range": lPlayer = FBPlayerControl() lPlayer.LoopStart = FBTime(0, 0, 0, in_frame) lPlayer.LoopStop = FBTime(0, 0, 0, out_frame) return True
def set_frame_range(self, engine, in_frame, out_frame): if engine == "tk-maya": import pymel.core as pm # set frame ranges for plackback pm.playbackOptions(minTime=in_frame, maxTime=out_frame, animationStartTime=in_frame, animationEndTime=out_frame) # set frame ranges for rendering defaultRenderGlobals=pm.PyNode('defaultRenderGlobals') defaultRenderGlobals.startFrame.set(in_frame) defaultRenderGlobals.endFrame.set(out_frame) elif engine == "tk-nuke": import nuke # unlock locked = nuke.root()["lock_range"].value() if locked: nuke.root()["lock_range"].setValue(False) # set values nuke.root()["first_frame"].setValue(in_frame) nuke.root()["last_frame"].setValue(out_frame) # and lock again if locked: nuke.root()["lock_range"].setValue(True) elif engine == "tk-motionbuilder": from pyfbsdk import FBPlayerControl, FBTime lPlayer = FBPlayerControl() lPlayer.LoopStart = FBTime(0, 0, 0, in_frame) lPlayer.LoopStop = FBTime(0, 0, 0, out_frame) elif engine == "tk-softimage": import win32com Application = win32com.client.Dispatch('XSI.Application') Application.SetValue("PlayControl.In", in_frame) Application.SetValue("PlayControl.Out", out_frame) elif engine == "tk-houdini": import hou hou.playbar.setPlaybackRange(in_frame, out_frame) else: raise tank.TankError("Don't know how to set current frame range for engine %s!" % engine)
def set_frame_range(self, in_frame=None, out_frame=None, **kwargs): """ set_frame_range will set the frame range using `in_frame` and `out_frame` :param int in_frame: in_frame for the current context (e.g. the current shot, current asset etc) :param int out_frame: out_frame for the current context (e.g. the current shot, current asset etc) """ lPlayer = FBPlayerControl() lPlayer.LoopStart = FBTime(0, 0, 0, in_frame) lPlayer.LoopStop = FBTime(0, 0, 0, out_frame)
def set_editorial_data(self, in_frame=None, out_frame=None, frame_rate=None, **kwargs): """ set_editorial_data will set the frame range using `in_frame` and `out_frame` and the frame rate using `frame_rate` :param int in_frame: in_frame for the current context (e.g. the current shot, current asset etc) :param int out_frame: out_frame for the current context (e.g. the current shot, current asset etc) :param float frame_rate: frame_range for the current context (e.g. the current shot, current asset, or current project) """ lPlayer = FBPlayerControl() lPlayer.LoopStart = FBTime(0, 0, 0, in_frame) lPlayer.LoopStop = FBTime(0, 0, 0, out_frame)
def set_frame_range(self, engine, in_frame, out_frame): if engine == "tk-maya": import pymel.core as pm # set frame ranges for plackback pm.playbackOptions(minTime=in_frame, maxTime=out_frame, animationStartTime=in_frame, animationEndTime=out_frame) # set frame ranges for rendering defaultRenderGlobals = pm.PyNode('defaultRenderGlobals') defaultRenderGlobals.startFrame.set(in_frame) defaultRenderGlobals.endFrame.set(out_frame) elif engine == "tk-nuke": import nuke # unlock locked = nuke.root()["lock_range"].value() if locked: nuke.root()["lock_range"].setValue(False) # set values nuke.root()["first_frame"].setValue(in_frame) nuke.root()["last_frame"].setValue(out_frame) # and lock again if locked: nuke.root()["lock_range"].setValue(True) elif engine == "tk-motionbuilder": from pyfbsdk import FBPlayerControl, FBTime lPlayer = FBPlayerControl() lPlayer.LoopStart = FBTime(0, 0, 0, in_frame) lPlayer.LoopStop = FBTime(0, 0, 0, out_frame) elif engine == "tk-softimage": import win32com Application = win32com.client.Dispatch('XSI.Application') # set playback control Application.SetValue("PlayControl.In", in_frame) Application.SetValue("PlayControl.Out", out_frame) Application.SetValue("PlayControl.GlobalIn", in_frame) Application.SetValue("PlayControl.GlobalOut", out_frame) # set frame ranges for rendering Application.SetValue("Passes.RenderOptions.FrameStart", in_frame) Application.SetValue("Passes.RenderOptions.FrameEnd", out_frame) elif engine == "tk-houdini": import hou # We have to use hscript until SideFX gets around to implementing hou.setGlobalFrameRange() hou.hscript("tset `((%s-1)/$FPS)` `(%s/$FPS)`" % (in_frame, out_frame)) hou.playbar.setPlaybackRange(in_frame, out_frame) elif engine == "tk-3dsmax": from Py3dsMax import mxs mxs.animationRange = mxs.interval(in_frame, out_frame) else: raise tank.TankError( "Don't know how to set current frame range for engine %s!" % engine)
def set_frame_range(self, engine, in_frame, out_frame): if engine == "tk-maya": import pymel.core as pm # set frame ranges for plackback pm.playbackOptions(minTime=in_frame, maxTime=out_frame, animationStartTime=in_frame, animationEndTime=out_frame) # set frame ranges for rendering defaultRenderGlobals=pm.PyNode('defaultRenderGlobals') defaultRenderGlobals.startFrame.set(in_frame) defaultRenderGlobals.endFrame.set(out_frame) elif engine == "tk-nuke": import nuke # unlock locked = nuke.root()["lock_range"].value() if locked: nuke.root()["lock_range"].setValue(False) # set values nuke.root()["first_frame"].setValue(in_frame) nuke.root()["last_frame"].setValue(out_frame) # and lock again if locked: nuke.root()["lock_range"].setValue(True) elif engine == "tk-motionbuilder": from pyfbsdk import FBPlayerControl, FBTime lPlayer = FBPlayerControl() lPlayer.LoopStart = FBTime(0, 0, 0, in_frame) lPlayer.LoopStop = FBTime(0, 0, 0, out_frame) elif engine == "tk-softimage": import win32com Application = win32com.client.Dispatch('XSI.Application') # set playback control Application.SetValue("PlayControl.In", in_frame) Application.SetValue("PlayControl.Out", out_frame) Application.SetValue("PlayControl.GlobalIn", in_frame) Application.SetValue("PlayControl.GlobalOut", out_frame) # set frame ranges for rendering Application.SetValue("Passes.RenderOptions.FrameStart", in_frame) Application.SetValue("Passes.RenderOptions.FrameEnd", out_frame) elif engine == "tk-houdini": import hou # We have to use hscript until SideFX gets around to implementing hou.setGlobalFrameRange() hou.hscript("tset `((%s-1)/$FPS)` `(%s/$FPS)`" % (in_frame, out_frame)) hou.playbar.setPlaybackRange(in_frame, out_frame) elif engine == "tk-3dsmax": from Py3dsMax import mxs mxs.animationRange = mxs.interval(in_frame, out_frame) elif engine == "tk-3dsmaxplus": import MaxPlus ticks = MaxPlus.Core.EvalMAXScript("ticksperframe").GetInt() range = MaxPlus.Interval(in_frame * ticks, out_frame * ticks) MaxPlus.Animation.SetRange(range) else: raise tank.TankError("Don't know how to set current frame range for engine %s!" % engine)