Skip to content
This repository has been archived by the owner on Sep 20, 2024. It is now read-only.

Commit

Permalink
Merge pull request #4128 from pypeclub/feature/blender-extract_alembi…
Browse files Browse the repository at this point in the history
…c_animation

Blender: Extract Alembic Animations
  • Loading branch information
LiborBatek authored Dec 2, 2022
2 parents 814b91d + 36effdc commit c56a84e
Showing 1 changed file with 72 additions and 0 deletions.
72 changes: 72 additions & 0 deletions openpype/hosts/blender/plugins/publish/extract_abc_animation.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
import os

import bpy

from openpype.pipeline import publish
from openpype.hosts.blender.api import plugin


class ExtractAnimationABC(publish.Extractor):
"""Extract as ABC."""

label = "Extract Animation ABC"
hosts = ["blender"]
families = ["animation"]
optional = True

def process(self, instance):
# Define extract output file path
stagingdir = self.staging_dir(instance)
filename = f"{instance.name}.abc"
filepath = os.path.join(stagingdir, filename)

context = bpy.context

# Perform extraction
self.log.info("Performing extraction..")

plugin.deselect_all()

selected = []
asset_group = None

objects = []
for obj in instance:
if isinstance(obj, bpy.types.Collection):
for child in obj.all_objects:
objects.append(child)
for obj in objects:
children = [o for o in bpy.data.objects if o.parent == obj]
for child in children:
objects.append(child)

for obj in objects:
obj.select_set(True)
selected.append(obj)

context = plugin.create_blender_context(
active=asset_group, selected=selected)

# We export the abc
bpy.ops.wm.alembic_export(
context,
filepath=filepath,
selected=True,
flatten=False
)

plugin.deselect_all()

if "representations" not in instance.data:
instance.data["representations"] = []

representation = {
'name': 'abc',
'ext': 'abc',
'files': filename,
"stagingDir": stagingdir,
}
instance.data["representations"].append(representation)

self.log.info("Extracted instance '%s' to: %s",
instance.name, representation)

0 comments on commit c56a84e

Please sign in to comment.