v1.0
接続または値のマッピング テンプレート、またはクリップの値マップの規則数を戻します。
oLong = GetNumMappingRules( MappingTemplate, [Value] ); |
規則の数をLongとして戻します。
パラメータ | タイプ | 説明 |
---|---|---|
MappingTemplate | 文字列 |
マッピング テンプレートまたはクリップの値マップ。 クリップの値マップは、「 |
Value | Long | 規則の数。 |
' ' 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 -> '" |