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