リファレンス ファイルのロック(Lock)オプションからアトリビュートを除外するために、使用できる MEL プロシージャが提供されています。たとえば、特定の個別のアトリビュート、または指定されたノード タイプのアトリビュートすべてを除外できます。詳細に除外する必要がある場合は、特定のノードのみ個別のアトリビュートを除外したり、特定のノードのすべてのアトリビュートを除外したりできます。
これらの MEL プロシージャは Maya インストール ディレクトリの scripts¥others フォルダにあります。 以降のセクションでは、これらのプロシージャの使用方法について説明します。
MEL スクリプトのソースと一般的な MEL プロシージャ操作の詳細については、「MEL とエクスプレッション」を参照してください。
この例は、ファイル リファレンスのロック操作から除外するアトリビュートを指定するための、ユーザ独自の MEL プロシージャを作成する方法を示しています。 この例の MEL プロシージャは Maya で配布されるプロシージャと同じものです。
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] が連続していることを確認します。
MEL ファイルに Maya で配布される既定のファイルとまったく同じ名前を付けると、次回の Maya の起動時にはロック オプションはこのカスタマイズされた新しいスクリプトを使用してファイル リファレンスをロックします。
ロック操作で特定のノードから個別のアトリビュートを除外するには、wantContextualLockReferencedAttribute と shouldLockReferencedAttribute を作成する必要があります。
wantContextualLockReferencedAttribute を 1 に設定し、shouldLockReferencedAttribute で除外ロジックを指定して 0 に設定します。
この除外は、上記の getLockReferenceExcludedAttributes() で指定したアトリビュート タイプの除外項目の最上位で機能します。つまり、getLockReferenceExcludedAttributes() で指定されたアトリビュートが最初に除外され、shouldLockReferencedAttribute で指定されたアトリビュートがその次に除外されます。
ノードのフル パスが必要になります。さらにノードが DAG の場合は、ネームスペースとフル DAG パスを含める必要があります。
以下に例を示します。こここに 3 つのシーンがあります。A.ma、B.ma、C.ma、および C.ma は B.ma を参照し、B.ma は A.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;
}
}
Maya に付属の既定のファイルと同じ名前を MEL ファイルに付けると、次回の Maya の起動時にはロック(Lock) オプションはこのカスタマイズされた新しいスクリプトを使用してファイル リファレンスをロックします。
この例は、ノード タイプごとに除外するアトリビュートを指定するための、ユーザ独自の MEL プロシージャを作成する方法を示しています。 この例の MEL プロシージャは Maya で配布されるプロシージャと同じものです。
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] が連続していることを確認します。
Maya に付属の既定のファイルと同じ名前を MEL ファイルに付けると、次回の Maya の起動時にはロック(Lock) オプションはこのカスタマイズされた新しいスクリプトを使用してファイル リファレンスをロックします。
通常のノード タイプのアトリビュートを除外するだけでなく、ロック操作から除外する必要のある特定のノードを指定するカスタム ロジックを追加することもできます。たとえば、リファレンス ノードのサブセットのトランスフォームとシェイプ ノードのロックを解除するとします。
この特定のノードのアトリビュートすべてを除外するには、wantContextualLockReferencedNode と shouldLockReferencedNode の 2 つの MEL プロシージャを作成する必要があります。
この除外は、上記の getLockReferenceExcludedNodeTypes() で指定したノード タイプの除外項目の最上位で機能します。つまり、getLockReferenceExcludedNodeTypes() で指定されたアトリビュートが最初に除外され、shouldLockReferencedNode で指定されたアトリビュートがその次に除外されます。
ノードのフル パスが必要になります。さらにノードが DAG の場合は、ネームスペースとフル DAG パスを含める必要があります。
以下に例を示します。こここに 3 つのシーンがあります。A.ma、B.ma、C.ma、および C.ma は B.ma を参照し、B.ma は A.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;
}
}
Maya に付属の既定のファイルと同じ名前を MEL ファイルに付けると、次回の Maya の起動時にはロック(Lock) オプションはこのカスタマイズされた新しいスクリプトを使用してファイル リファレンスをロックします。