ClipContainer.Tracks
 
 
 

ClipContainer.Tracks

Description

Returns a TrackCollection containing each Track object in the container.

C# Syntax

// get accessor
TrackCollection rtn = ClipContainer.Tracks;

Examples

Python Example

#
# This example demonstrates how to create tracks and retrieve all tracks 
# recursively under the ClipContainer using ClipContainer.Tracks.
# 
# The following hierarchy will be created:
#
# Mixer
#       |
#   +-Track (an animation track)
#   |   |
#   |   +-CompoundClip
#   |          |
#   |          +-Track4 (an animation track)
#   |
#   +-Track1 (an animation track)
#   |
#   +-Track2 (a shape track)
#   |
#   +-Track3 (an audio track)
#
#
Application.NewScene( None, False )
oRoot = Application.ActiveSceneRoot
oCube = oRoot.AddGeometry("Cube", "MeshSurface")        
# Creating the first animation source
sParams = "cube.kine.local.posx,cube.kine.local.posy,cube.kine.local.posz"
oSource = Application.StoreAction(oRoot, sParams, 1, "StoredStaticPose", 1, 1, 5, 0, 0)
# Creating the first clip
oClip = Application.AddClip(oRoot, oSource)     
Application.LogMessage("First created clip " + oClip.FullName )
Application.LogMessage("First created Track " + oClip.Parent.FullName )
oCube.Parameters("posx").Value  =  3.0
# Creating the second animation source
oSource2 = Application.StoreAction(oRoot, sParams, 1, "StoredStaticPose", 1, 7, 9, 0, 0)
# Creating the second clip
oClip2 = Application.AddClip(oRoot, oSource2)   
Application.LogMessage("Second created Clip " + oClip2.FullName)
Application.LogMessage("Second created Track " + oClip2.Parent.FullName)
# Adding a shape track
oMixer = oRoot.Mixer
oShapeTrack = Application.AddTrack(oRoot, oMixer, 1)
Application.LogMessage("Third created Track " + oShapeTrack.FullName )
# Adding an audio track
oAudioTrack = Application.AddTrack(oRoot, oMixer, 2)            
Application.LogMessage("Fourth created Track " + oAudioTrack.FullName)
# Creating a compound clip from the clips created earlier
# This implicitly creates a track for the nested clip
myClips = [oClip, oClip2]
oCompound = Application.CreateCompound(oRoot, myClips)
def FindTracksRecursively(in_oClipContainer):
        "This method returns an XSICollection containing the tracks which are nested under a ClipContainer"
        oReturnValue = XSIFactory.CreateActiveXObject("XSI.Collection")
        # First lets get the tracks which are directly under the container.
        oTracks = in_oClipContainer.Tracks
        for i in range(oTracks.Count):
                oReturnValue.Add(oTracks(i))
                oClips = oTracks(i).Clips
                for j in range(oClips.Count):
                        if Application.ClassName(oClips(j)) == "CompoundClip" :
                                oTracks2 = oClips(j).Tracks
                                for k in range(oTracks2.Count):
                                        oReturnValue.Add(oTracks2(k))
        return oReturnValue
# Now retrieving all tracks recursively.
Application.LogMessage(FindTracksRecursively.__doc__)
oAllTracks = FindTracksRecursively(oRoot.Mixer)
Application.LogMessage("The resulting complete track list is the following: ")
for i in range(oAllTracks.Count):
        Application.LogMessage(oAllTracks(i).FullName)
# Output of the above script:
#INFO : First created clip Mixer.Mixer_Anim_Track.StoredStaticPose_Clip
#INFO : First created Track Mixer.Mixer_Anim_Track
#
#INFO : Second created Clip Mixer.Mixer_Anim_Track1.StoredStaticPose1_Clip
#INFO : Second created Track Mixer.Mixer_Anim_Track1
#
#INFO : Third created Track Mixer.Mixer_Shape_Track
#
#INFO : Fourth created Track Mixer.Mixer_Audio_Track
#
#INFO : This method returns an XSICollection containing the tracks which are nested under a ClipContainer
#INFO : The resulting complete track list is the following: 
#INFO : Mixer.Mixer_Anim_Track
#INFO : Mixer.Mixer_Anim_Track1
#INFO : Mixer.Mixer_Shape_Track
#INFO : Mixer.Mixer_Audio_Track