1

我的目标是导出根节点、所有子节点以及重新创建资产所需的所有内容(例如,材质),但不包括任何无关的内容(例如,用于演示资产的照明设备,但这在逻辑上不属于资产,并且也不是资产根节点的子节点)。

举个简单的例子,假设场景包含一个球体和一个立方体。DAG 中两者都不是另一个的孩子。如果我传入球体的根节点,则只有球体应该出现在导出中。如果我选择多维数据集的根节点,则应该只出现多维数据集。

我认为我的选择逻辑不正确,但我可以在脚本编辑器中看到正在选择正确的节点(而不是其他节点)。

但是,无论我传入哪个根节点,都会导出整个场景(球体和立方体)。是否有我必须从中删除的条件exportSelected,或者我必须添加其他条件?

import pymel.core as core

core.select(clear=True)
core.select(root, hierarchy=True)  # selects node hierarchy as expected
core.select(root, allDependencyNodes=True, add=True)  # selects textures
# (although it selects unrelated textures too)
core.system.exportSelected(target_path, shader=True, preserveReferences=True)
# but this exports the whole scene,
# including nodes that were not selected by the lines above
4

1 回答 1

0

会发生这种情况,因为如果东西以某种方式连接,它也会导出它,比如说,你想导出一个网格,你只选择网格,但该网格是变形器的输入,你很可能会导出整个变形堆栈。如果你想避免这种情况,你需要禁用一些行为。如果您检查导出选择的选项,您将看到有一个名为:“包括这些输入”的字段。这些标志反映在 pymel 命令中,尝试将它们设置为 false 并使用组合进行一些操作,直到找到正确的组合。 http://download.autodesk.com/us/maya/2011help/PyMel/generated/functions/pymel.core.system/pymel.core.system.exportSelected.html

此外,根据您正在谈论的资产类型,问题变得更加棘手,如果只是静态网格,或装备,或其他东西。

于 2016-02-18T15:04:41.993 回答