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