0

我只想知道如何将多个代理添加到我的 Maya 场景中的引用文件。

场景:我们选择包含“_v001”的对象:

select -r "*_v001";

我们创建函数来为每个引用的文件添加代理:

global proc proxyAddition() {

    string $selectionList[] = `ls -sl`;

    if(size($selectionList)) {

        string $object = $selectionList[0];
        string $currentRN = `referenceQuery -rfn $object`;
        string $currentFilePath = `referenceQuery -filename $object`;
        string $currentNamespace = `referenceQuery -namespace $object`;

        if(endsWith($currentRN, "v001RN") == 1) {

            string $newRN = `substitute "v001RN" $currentRN "v002"`;
            string $newFilePath = `substitute "v001" $currentFilePath "v002"`;
            string $newNamespace = `substitute "v001" $currentNamespace "v002"`;
            proxyAdd $currentRN $newFilePath "HD";
            print "Opération effectuée avec succès.";
        }
    } else {
        warning "Aucun objet de type v001 dans la scène.";
    }
}
proxyAddition;

我想要的是在每个引用的文件中找到字符串“v001”并将其更改为“v002”(对于proxyName、命名空间和文件路径)。

谢谢你。

4

1 回答 1

1

最后我成功完成了它:

select -r "*_v001:*";

global proc proxyAddition() {

    string $selectionList[] = `ls -sl -type "mesh"`;

    if(size($selectionList)) {

        for($object in $selectionList) {

            string $currentRN = `referenceQuery -rfn $object`;
            string $currentFilePath = `referenceQuery -filename $object`;
            string $currentNamespace = `referenceQuery -namespace $object`;

            if(endsWith($currentRN, "v001RN") == 1) {

                string $newRN = `substitute "v001RN" $currentRN "v002"`;
                string $newFilePath = `substitute "v001" $currentFilePath "v002"`;
                string $newNamespace = `substitute "v001" $currentNamespace "v002"`;
                proxyAdd $currentRN $newFilePath "HD";
                print "Opération effectuée avec succès.";               
            }
        }
    } else {
        warning "Aucun objet de type v001 dans la scène.";
    }
}
proxyAddition;

该脚本选择名称包含“_v001”的对象,然后对其进行过滤以仅保留网格对象。之后,我们使用 referenceQuery 方法来存储我们当前的引用变量。然后我们将包含“v001”字符串值的变量替换为新变量中的“v002”。这个替代方法用于我们当前引用对象的文件路径、命名空间和 ReferenceNode。使用这些新变量,我们可以使用“proxyAdd”添加我们的新代理/代理。

仅当您在同一文件夹中有参考文件时,此过程才有效。如果不是这种情况,请使用带有更多选项的文件路径变量的替代方法。您还可以通过您自己的值更改“v001”和“v002”,以区分您的参考文件版本。

“HD”参数用于参考文件的 proxyTag。

于 2013-10-28T20:58:18.627 回答