v3.0
Matches up two clips by determining the proper PoseOffset to use to have them match at the start of the second clip.
ClipMatch( [InputObj] ); |
Parameter | Type | Description |
---|---|---|
InputObj | String |
List of exactly two clips to match up. Default Value: Current selection |
' ' Create a sphere and some paths for it to travel along. ' set newSph = CreatePrim( "Sphere", "MeshSurface" ) set crv1 = SICreateCurve( "crvlist", 3, 0 ) SIAddPointOnCurveAtEnd crv1, -15, 0, 18, False SIAddPointOnCurveAtEnd crv1, -6, 0, 5, False SIAddPointOnCurveAtEnd crv1, -6, 0, -9, False SIAddPointOnCurveAtEnd crv1, -23, 0, -14, False set crv2 = SICreateCurve( "crvlist", 3, 0 ) SIAddPointOnCurveAtEnd crv2, 25, 0, -5, False SIAddPointOnCurveAtEnd crv2, 14, 0, -4, False SIAddPointOnCurveAtEnd crv2, 5, 0, -9, False SIAddPointOnCurveAtEnd crv2, -4, 0, -10, False SIAddPointOnCurveAtEnd crv2, -11, 0, 4, False SIAddPointOnCurveAtEnd crv2, -3, 0, 10, False SIAddPointOnCurveAtEnd crv2, 7, 0, 8, False ' ' Plot Actions of it moving along those paths (then delete the paths). ' ApplyPath newSph, crv1, 1, 40, 2, True, True set act1 = PlotToAction( newSph, newSph & "/kine.local.posx,kine.local.posy,kine.local.posz,kine.local.rotx,kine.local.roty,kine.local.rotz", "plot", 1, 40, 1, 20, 3, False, 0.01 ) DeleteObj crv1 ApplyPath newSph, crv2, 1, 40, 2, True, True set act2 = PlotToAction( newSph, "sphere.kine.local.posx,sphere.kine.local.posy,sphere.kine.local.posz,sphere.kine.local.rotx,sphere.kine.local.roty,sphere.kine.local.rotz,sphere.kine.local.sclx,sphere.kine.local.scly,sphere.kine.local.sclz", "plot", 1, 40, 1, 20, 3, False, 0.01 ) DeleteObj crv2 ' ' Put the Actions on the mixer, overlapping by a number of frames. ' set trk1 = AddTrack( ActiveSceneRoot, , 0 ) set trk2 = AddTrack( ActiveSceneRoot, , 0 ) set clip1 = AddClip( ActiveSceneRoot, act1, , trk1, 20 ) set clip2 = AddClip( ActiveSceneRoot, act2, , trk2, 40 ) ' ' Apply a character tag to indicate which object's transform to examine ' when determining the appropriate pose offset. If you run ClipMatch ' non-interactively, you don't need this, you can just specify any "reference ' object" as the third-selected object. A character tag is required ' when running the command interactively. ' SelectObj newSph, , True TagObject newSph, "CenterOfGravity" ' ' Run ClipMatch command, to determine the appropriate pose offset to ' apply to the "target" object, so that the reference object has the ' same global transform at the "match time". ' ClipMatch clip1 & "," & clip2 & "," & newSph AddTransition clip1, clip2, 0 SelectObj newSph, , True |