Extrait de code PyAlembic

La documentation

La première étape avant de commencer à utiliser PyAlembic est de lire l’introduction et les exemples de la documention.

Parcourir la hiérarchie.

import alembic


def walk(obj):

    for child in obj.children:

        yield child

        for sub_child in walk(child):

            yield sub_child


arch = alembic.Abc.IArchive("/path/to/my.abc")

root = arch.getTop()

for obj in walk(root):

    print(obj.getFullName())

Ici, root est le IObject (car on utilise un IArchive) à la racine de l’archive. Il a un nom vide. L’interface des IObject est disponible ici.

Filtrer par type d’objet

Ce code permet de filtrer un objet Alembic suivant son type ; IPolyMesh, ICamera, IXform, ILight, ICurves, etc.

Il utilise La fonction walk() vu précédement.

flag = alembic.Abc.WrapExistingFlag.kWrapExisting


for obj in walk(root):

    header = obj.getHeader()

    if alembic.AbcGeom.IXform.matches(header):

        xform = alembic.AbcGeom.IXform(obj, flag)

        # Fait des trucs avec xform...

    elif alembic.AbcGeom.IPolyMesh.matches(header):

        poly = alembic.AbcGeom.IPolyMesh(obj, flag)

        # Fait des trucs avec poly...

    elif alembic.AbcGeom.ICamera.matches(header):

        cam = alembic.AbcGeom.ICamera(obj, flag)

        # Fait des trucs avec cam...

    elif alembic.AbcGeom.ICurves.matches(header):

        curves = alembic.AbcGeom.ICurves(obj, flag)

        # Fait des trucs avec curves...

    elif alembic.AbcGeom.ILight.matches(header):

        light = alembic.AbcGeom.ILight(obj, flag)

        # Fait des trucs avec light...

    # etc.

Dernière mise à jour : jeu. 07 janvier 2021