2

我有 7 个镜头,每个镜头有 2 个或 3 个 Alembic 文件,每个 Alembic 大约有 20 个几何图形。

由于我需要在新的 Alembic 中导出完整的 3D 场景,我需要重命名所有ReadGeo节点以便在其他软件(如 Maya)中易于阅读。

为此,我想将 AlembicScenegraph中的几何名称命名为,ReadGeo但我不知道如何Geo使用 Python 找到名称。我从这段代码开始:

def AlembicRename():
    for s in nuke.allNodes("ReadGeo2"):
        GeoName = # don't know how to find this
        s['name'].setValue(GeoName)

AlembicRename()

知道如何找到Geometry名称吗?

谢谢你。

4

2 回答 2

1

要在 NUKE 中访问 ABC 的 Scenegraph 层次结构,您应该尝试以下代码:

import nuke

# 'ReadGeo2' – node's class 
nuke.createNode('ReadGeo2', 'file { /Users/swift/Desktop/scene.abc }') 

def alembicRename():
    # 'ReadGeo18' – node's name in graph 
    for s in nuke.allNodes('ReadGeo18'):
        sceneView = s['scene_view']
        hierarchy = sceneView.getAllItems()
        print hierarchy

alembicRename()

# Result: ['/root/polySphere/polySphereShape']

要了解如何使用 Python 从字符串中提取子字符串,请阅读这篇文章。提取过程后,您可以为您的节点分配(polySphere例如)名称。ReadGeo并且不要忘记:有一个 Python 的列表只包含零索引。

s['name'].setValue(hierarchy[0])

在此处输入图像描述

于 2018-08-11T17:11:39.063 回答
-1

解决了

myReadGeoNode['scene_view'].getSelectedItems()
于 2018-08-12T08:04:00.793 回答