AddTransition
 
 
 

AddTransition

Introduced

v1.0

Description

Creates a transition between two clips. A transition curve is associated with this transition (the default curve is linear, but this can be edited after creation).

Scripting Syntax

oReturn = AddTransition( [From], [To], [Type], [Name] );

Return Value

Returns the transition (a Transition object).

Parameters

Parameter Type Description
From String The source clip from which to transition.

Default Value: Current selection, if empty: pick session

To String The target clip to which to transition.

Default Value: Current selection, if empty: pick session

Type Integer The type of transition to create.

Default Value: 0

Possible Values:

Description:

0 Standard transition.
1 Cardinal transition.
2 Bridge transition.
Name String Name of the transition.

Examples

VBScript Example

' This example creates a simple 2-bone skeleton and puts it in a model.
' Then it duplicates the model so we can compare Standard versus Cardinal
' transitions.  Next it makes three poses for the first model.  Finally,
' it applies these source clips onto both models and uses Standard
' transitions for the first model and Cardinals for the second.  Cardinal
' transitions require at least four consecutive clips in a row, and they
' give a smoother interpolation than Standard.  It ends by plotting the
' effector position to a curve, to illustrate the difference.
' Create the skeleton for our example.
set oSkelRoot = Create2DSkeleton( 0, 4, 0, 0, 0, 0, , , , , oBone1, oEff )
oBone2 = AppendBone( oEff, 4, 0, 0 )
' Put the skeleton in its own model, pretend it's a "character".
CreateModel oSkelRoot, "Standard", , oModel
' Because AppendBone just returns a string, not the object,
' we prepend the model name onto the front (now that it's inside one).
oBone2 = oModel & "." & oBone2
' Duplicate the model in Branch mode ("B:" indicates branch), rename
' the new model "Cardinal" (the first model is called "Standard").
set oOtherModel = Duplicate( "B:" & oModel, 1 )
SetValue oOtherModel & ".name", "Cardinal"
' The model is the first member of the collection returned by Duplicate.
oOtherModel = oOtherModel(0)
' Take a few "snapshot" poses.  For this example, we translate the
' effector (IK), but capture the values of the bone rotations (FK)
' for later use in the mixer.
rotParams = "/kine.local.rotx,kine.local.roty,kine.local.rotz"
paramStr = oBone1 & "," & oBone2 & rotParams
dim oPoses(5)
posCoords = Array( Array(4,0,0), Array(0,2,0), Array(-1,-3,0), _
                        Array(0,-3.5,0), Array(1,-1,0), Array(4,0,0) )
for i = 0 to 5
        SnapshotPose oModel, oEff, oPoses(i), _
                        posCoords(i)(0), posCoords(i)(1), posCoords(i)(2), paramStr
next
' Create tracks for the clips (one track in each model).
dim oTracks(1), oClips(5,1)
set oTracks(0) = AddTrack( oModel, , 0 )
set oTracks(1) = AddTrack( oOtherModel, , 0 )
' Now go through and instantiate the sources into single-frame clips on
' the two mixers.  For the first mixer we will add standard transitions
' between each pair of consecutive clips.  For the second one, we
' will add Cardinal transitions.
for i = 0 to 5
        set oClips(i,0) = AddClip( oModel, oPoses((i)), , oTracks(0), i * 19 + 1 )
        set oClips(i,1) = AddClip( oOtherModel, oPoses((i)), , oTracks(1), i * 19 + 1 )
        if i > 0 then
                AddTransition oClips(i-1,0), oClips(i,0), 0     ' Standard
                AddTransition oClips(i-1,1), oClips(i,1), 1     ' Cardinal
        end if
next
' Just offset the two models so we can see them separately.
SetValue oModel & ".kine.local.posx", -5
SetValue oOtherModel & ".kine.local.posx", 5
' Get the second effector's full name by prepending the
' second model's name to the first effector's "simple" name.
oEff1 = oOtherModel & "." & oEff.name
' Finally, plot the effector positions to compare the paths.
PlotCurve oEff & "," & oEff1, , 1, 96, 1
'==================================================
' Helper method to create a snapshot Action for the chain.
'==================================================
sub SnapshotPose( in_oModel, in_oEff, io_oPose, in_X, in_Y,in_Z, in_paramStr )
        Translate in_oEff, in_X, in_Y, in_Z, siAbsolute, siView, siObj, siXYZ
        Refresh ' needed because StoreAction just looks at current values.
        set io_oPose = StoreAction( in_oModel, in_paramStr, 1, , True, 1, 1 )
end sub

See Also

AddBridgeTransition Transition