Переименование узлов ReadGeo с помощью Alembic SceneGraph

У меня есть 7 выстрелов с 2 или 3 файлами Alembic в каждой и около 20 геометрий на Alembic.

Поскольку мне нужно экспортировать мою полную 3D-сцену в новый Alembic, мне нужно переименовать все ReadGeo узлы должны быть легко читаемыми в другом программном обеспечении (например, Maya).

Для этого я хочу дать имя геометрии из Alembic Scenegraph к 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 Название?

Спасибо.

2 ответа

Решение

Решено с

myReadGeoNode['scene_view'].getSelectedItems()

Чтобы получить доступ к иерархии ABC Scenegraph в NUKE, вы должны попробовать этот код:

import nuke

nuke.createNode('ReadGeo', 'file {/Users/swift/Desktop/scene.abc}') 

def AlembicRename():
    for s in nuke.allNodes('ReadGeo4'):
        sceneView = s['scene_view']
        fullHierarchy = sceneView.getAllItems()
        print fullHierarchy

AlembicRename()

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

Чтобы узнать, как извлечь подстроку из строки, используя Python, прочитайте этот пост. После извлечения процесса вы можете назначить (polySphereнапример) имя к вашему ReadGeo узел. И не забывайте: есть список Python, содержащий только нулевой индекс.

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

Другие вопросы по тегам