GetNumMappingRules

Introduced

1.0

Description

Returns the number of rules in a connection or value mapping template, or in a clip value map.

Scripting Syntax

GetNumMappingRules( MappingTemplate, [Value] )

Parameters

Parameter

Type

Description

MappingTemplate

String

Mapping template or a clip value map. The value map of a clip is named "<clipname>.actionclip".

Value [out]

Long

Number of rules.

Return Value

Returns the number of rules as a Long.

Examples

VBScript Example

'
' This example illustrates various mapping template commands,
' for both connection and value mapping templates -- in particular
' how to create them and look at the data contained in them.
'
NewScene , False

' Create some objects for our example.
set oParent = CreatePrim( "Sphere", "MeshSurface", "Parent" )
set oChild = CreatePrim( "Cone", "MeshSurface", "Child", oParent )
posParams = "/kine.local.posx,kine.local.posy,kine.local.posz"

' Animate the sphere moving horizontally and the
' cone (child) moving down.
SetPositionKey oParent, 1, -5, 0, 0
SetPositionKey oParent, 50, 5, 0, 0
SetPositionKey oChild, 1, 0, 0, 0
SetPositionKey oChild, 50, 0, -2, 0
' Store an Action of this animation (on both objects).
set oSource = StoreAction( , oParent & "," & oChild & posParams, 2, _
          "Fun", True, 1, 50 )

' We want to map the animation to another "character", so we will
' use a connection mapping template.  CreateConnectionMap can look
' at identical hierarchies and automatically build an appropriate
' map.  (or you could build it yourself manually or using scripting)
' Here we'll build a hierarchy and use the auto-matching capability...
set oParent2 = CreatePrim( "Cube", "MeshSurface", "Top" )
set oChild2 = CreatePrim( "Cylinder", "MeshSurface", "Bottom", oParent2 )
' Translate it so we can demonstrate value mapping templates.
Translate oParent2, 2, 5, 0, siAbsolute, siView, siObj, siXYZ
Translate oChild2, 2, -5, 0, siAbsolute, siView, siObj, siXYZ

' Instantiate a clip driving the objects on which the animation was
' originally authored, for comparison.
set oClip = AddClip( "Scene_Root", oSource, , , 1, "Original" )

' Now create the connection map so we can apply the original animation
' on the other hierarchy.  Also, create a value map which will build
' offset expressions using the pose differences between the objects.
CreateConnectionMap oParent2, oParent, oCnxMap
CreateValueMap oParent2, oParent, 3, 1, False, oValMap

' Instantiate a clip which uses the connection map to remap to the
' second set of objects.  Also use the value map to create a clip
' effect with the appropriate offset for the second hierarchy.
set oClip = AddClip( "Scene_Root", oSource, , , 1, "Remapped", oCnxMap, oValMap )

' Let's take a look at the connection and value mapping templates
' that were created and used.
DumpTemplateInfo oCnxMap
DumpTemplateInfo oValMap
' Finally, a clip itself can be treated as a (value) mapping template.
' Let's look at one...
DumpTemplateInfo oClip & ".actionclip"


'==================================================
' Helper method to key an object somewhere at a given frame.
'==================================================
sub SetPositionKey( in_oObj, in_frame, in_posX, in_posY, in_posZ )
   Translate in_oObj, in_posX, in_posY, in_posZ, siAbsolute, siParent, siObj, siXYZ
   SaveKey in_oObj & posParams, in_frame
end sub

'==================================================
' Helper method to dump some mapping template info.
'==================================================
sub DumpTemplateInfo( in_Templ )
   ' Get the actual object referenced by name in the argument.
   set oTempl = GetValue( in_Templ )
   msg = "Template: " & oTempl.fullname & Chr(10)
   numRules = GetNumMappingRules( in_Templ )
   if oTempl.type = "actionclip" then
       msg = msg & "(Clip acting as value map)" & Chr(10)
       bSupportsActive = true
   else
       bSupportsActive = false
   end if
   for i = 1 to numRules
       GetMappingRule in_Templ, i, param, expr, active
       msg = msg & Chr(9) & "Rule " & i & ": "
       if bSupportsActive then
          if active then
              msg = msg & "( active ) "
          else
              msg = msg & "(inactive) "
          end if
       end if
       msg = msg & param & " -> " & expr & Chr(10)
   next
   LogMessage msg 
end sub

' Running this script should log the following:
' ---------------------------------------------
'INFO : "Template: Mixer.MappingTemplate
'  Rule 1: Parent -> Top
'  Rule 2: Child -> Bottom
'"
'INFO : "Template: Mixer.ValueMappingTemplate
'  Rule 1: Top.kine.local.posx -> this + -3.000000
'  Rule 2: Top.kine.local.posy -> this + 5.000000
'  Rule 3: Top.kine.local.posz -> 
'  Rule 4: Bottom.kine.local.posx -> 
'  Rule 5: Bottom.kine.local.posy -> this + -8.000000
'  Rule 6: Bottom.kine.local.posz -> 
'"
'INFO : "Template: Mixer.Mixer_Anim_Track1.Remapped.actionclip
'(Clip acting as value map)
'  Rule 1: ( active ) Top.kine.local.posx -> this+-3.000000
'  Rule 2: ( active ) Top.kine.local.posy -> this+5.000000
'  Rule 3: ( active ) Top.kine.local.posz -> 
'  Rule 4: ( active ) Bottom.kine.local.posx -> 
'  Rule 5: ( active ) Bottom.kine.local.posy -> this+-8.000000
'  Rule 6: ( active ) Bottom.kine.local.posz -> 
'"

See Also

AddMappingRule

CreateConnectionMap

CreateValueMap

DeleteMappingRule

GetMappingRule

SetMappingRule

 

 



Autodesk Softimage v7.5