ロックされたリファレンスからアトリビュートを除外

リファレンス ファイルのロック(Lock)オプションからアトリビュートを除外するために、使用できる MEL プロシージャが提供されています。たとえば、特定の個別のアトリビュート、または指定されたノード タイプのアトリビュートすべてを除外できます。詳細に除外する必要がある場合は、特定のノードのみ個別のアトリビュートを除外したり、特定のノードのすべてのアトリビュートを除外したりできます。

これらの MEL プロシージャは Maya インストール ディレクトリの scripts¥others フォルダにあります。 以降のセクションでは、これらのプロシージャの使用方法について説明します。

MEL スクリプトのソースと一般的な MEL プロシージャ操作の詳細については、「MEL とエクスプレッション」を参照してください。

個別のアトリビュートを除外する MEL プロシージャ

この例は、ファイル リファレンスのロック操作から除外するアトリビュートを指定するための、ユーザ独自の MEL プロシージャを作成する方法を示しています。 この例の MEL プロシージャは Maya で配布されるプロシージャと同じものです。

  1. 任意のテキスト エディタを使用して MEL ファイルを作成し、getLockReferenceExcludedAttributes.mel. という名前を付けます。
  2. 次のテキストをファイルに追加します。構文は正確に入力してください。
    global proc string[] getLockReferenceExcludedAttributes()
    {
    // Return a string array containing a list of attributes
    // to be skipped during locking of a referenced file. The
    // listed attributes locked state will remain the same as
    // in the referenced file.
    string $lockReferenceExcludedAttributes[];
    $lockReferenceExcludedAttributes[0] = "visibility";
    return $lockReferenceExcludedAttributes;
    }
    

    必要に応じて $lockReferenceExcludedAttributes[n] 行を追加または除去し、上記の例と同じ構文を使用して、除外するアトリビュートを指定します。 配列インデックス [n] が連続していることを確認します。

  3. MEL ファイルを保存して Maya スクリプト パスに配置します。

    MEL ファイルに Maya で配布される既定のファイルとまったく同じ名前を付けると、次回の Maya の起動時にはロック オプションはこのカスタマイズされた新しいスクリプトを使用してファイル リファレンスをロックします。

特定のノードの個別のアトリビュートを除外する MEL プロシージャ

ロック操作で特定のノードから個別のアトリビュートを除外するには、wantContextualLockReferencedAttributeshouldLockReferencedAttribute を作成する必要があります。

wantContextualLockReferencedAttribute を 1 に設定し、shouldLockReferencedAttribute で除外ロジックを指定して 0 に設定します。

注:

この除外は、上記の getLockReferenceExcludedAttributes() で指定したアトリビュート タイプの除外項目の最上位で機能します。つまり、getLockReferenceExcludedAttributes() で指定されたアトリビュートが最初に除外され、shouldLockReferencedAttribute で指定されたアトリビュートがその次に除外されます。

ノードのフル パスが必要になります。さらにノードが DAG の場合は、ネームスペースとフル DAG パスを含める必要があります。

  1. 任意のテキスト エディタを使用して MEL ファイルを作成し、getLockReferenceExcludedAttributes.mel. という名前を付けます。
  2. 次に示すように MEL プロシージャ wantContextualLockReferencedAttribute を追加し、1 が返されるように設定します。
  3. 次に示すように MEL プロシージャ shouldLockReferencedAttribute を追加し、ロック操作から除外する特定のノードのアトリビュートを指定して、0 が返されるようにプロシージャを設定します。

    以下に例を示します。こここに 3 つのシーンがあります。A.maB.maC.ma、および C.maB.ma を参照し、B.maA.ma を参照しています。

    global proc int wantContextualLockReferencedAttribute()
    {
        // By default, only attribute type lock operations are excluded.
        // Return 1 if you want Maya to call the shouldLockReferencedAttribute procedure
        return 1;
    }
    
    global proc int shouldLockReferencedAttribute(string $node, string $attr)
    {
        // Exclude transform node |C:B:A:A 's  translateY and visibility attribute from being locked
        // Return 0 to indicate that these attributes should be unlocked
        if(($node == "|C:B:A:A") && ($attr == "translateY" || $attr == "translate" || $attr == "visibility"))
        {
    
            return 0;
        }
    
        else
        {
            return 1;
        }
    }
  4. MEL ファイルを保存して Maya スクリプト パスに配置します。

    Maya に付属の既定のファイルと同じ名前を MEL ファイルに付けると、次回の Maya の起動時にはロック(Lock) オプションはこのカスタマイズされた新しいスクリプトを使用してファイル リファレンスをロックします。

ノード タイプごとにアトリビュートを除外する MEL プロシージャ

この例は、ノード タイプごとに除外するアトリビュートを指定するための、ユーザ独自の MEL プロシージャを作成する方法を示しています。 この例の MEL プロシージャは Maya で配布されるプロシージャと同じものです。

  1. 任意のテキスト エディタを使用して MEL ファイルを作成し、getLockReferenceExcludedNodeTypes.mel. という名前を付けます。
  2. 次のテキストをファイルに追加します。構文は正確に入力してください。
    global proc string[] getLockReferenceExcludedNodeTypes()
    {
    // Return a string array containing a list of node types 
    // whose attributes should be skipped during locking of a referenced file.
    string $lockReferenceExcludedNodeTypes[];
    $lockReferenceExcludedNodeTypes[0] = "lightLinker";
    $lockReferenceExcludedNodeTypes[1] = "displayLayerManager";
    $lockReferenceExcludedNodeTypes[2] = "displayLayer";
    $lockReferenceExcludedNodeTypes[3] = "renderLayerManager";
    $lockReferenceExcludedNodeTypes[4] = "renderLayer";
    return $lockReferenceExcludedNodeTypes;
    }
    

    必要に応じて $lockReferenceExcludedNodeTypes[n] 行を追加または除去し、上記の例と同じ構文を使用して、ノード タイプごとにアトリビュートを指定します。 配列インデックス [n] が連続していることを確認します。

  3. MEL ファイルを保存して Maya スクリプト パスに配置します。

    Maya に付属の既定のファイルと同じ名前を MEL ファイルに付けると、次回の Maya の起動時にはロック(Lock) オプションはこのカスタマイズされた新しいスクリプトを使用してファイル リファレンスをロックします。

特定のノードのアトリビュートすべてを除外する MEL プロシージャ

通常のノード タイプのアトリビュートを除外するだけでなく、ロック操作から除外する必要のある特定のノードを指定するカスタム ロジックを追加することもできます。たとえば、リファレンス ノードのサブセットのトランスフォームとシェイプ ノードのロックを解除するとします。

この特定のノードのアトリビュートすべてを除外するには、wantContextualLockReferencedNodeshouldLockReferencedNode の 2 つの MEL プロシージャを作成する必要があります。

注:

この除外は、上記の getLockReferenceExcludedNodeTypes() で指定したノード タイプの除外項目の最上位で機能します。つまり、getLockReferenceExcludedNodeTypes() で指定されたアトリビュートが最初に除外され、shouldLockReferencedNode で指定されたアトリビュートがその次に除外されます。

ノードのフル パスが必要になります。さらにノードが DAG の場合は、ネームスペースとフル DAG パスを含める必要があります。

  1. 任意のテキスト エディタを使用して MEL ファイルを作成し、getLockReferenceExcludedNodeTypes.mel という名前を付けます。
  2. 次に示すように MEL プロシージャ wantContextualLockReferencedNode を追加し、1 が返されるように設定します。
  3. 次に示すように MEL プロシージャ shouldLockReferencedNode を追加し、ロック操作から除外するノードを指定して、0 が返されるようにプロシージャを設定します。

    以下に例を示します。こここに 3 つのシーンがあります。A.maB.maC.ma、および C.maB.ma を参照し、B.maA.ma を参照しています。

    global proc int wantContextualLockReferencedNode()
    {
        // By default, only node type lock operations are excluded. 
        // Return 1 if you want Maya to call the shouldLockReferencedNode procedure
        return 1;
    }
    
    global proc int shouldLockReferencedNode(string $node)
    {
        // Exclude transform node "|C:B:B" and its shape node "|C:B:B|C:B:BShape" from being locked
        // Exclude shape node "|C:C|C:CShape" from being locked
        // Return 0 to indicate that these attributes should be unlocked
        if ($node == "|C:B:B" || $node == "|C:B:B|C:B:BShape" || $node == "|C:C|C:CShape")
    	{
    	    return 0;
    	}
    	else
    	{ 
    	    return 1;
    	}
    }
  4. MEL ファイルを保存して Maya スクリプト パスに配置します。

    Maya に付属の既定のファイルと同じ名前を MEL ファイルに付けると、次回の Maya の起動時にはロック(Lock) オプションはこのカスタマイズされた新しいスクリプトを使用してファイル リファレンスをロックします。

関連項目