ayon-core/pype/plugins/houdini/publish/extract_alembic.py
2019-01-28 20:31:55 +01:00

43 lines
1.2 KiB
Python

import os
import pyblish.api
import colorbleed.api
class ExtractAlembic(colorbleed.api.Extractor):
order = pyblish.api.ExtractorOrder
label = "Extract Alembic"
hosts = ["houdini"]
families = ["colorbleed.pointcache", "colorbleed.camera"]
def process(self, instance):
import hou
ropnode = instance[0]
# Get the filename from the filename parameter
output = ropnode.evalParm("filename")
staging_dir = os.path.dirname(output)
instance.data["stagingDir"] = staging_dir
file_name = os.path.basename(output)
# We run the render
self.log.info("Writing alembic '%s' to '%s'" % (file_name,
staging_dir))
try:
ropnode.render()
except hou.Error as exc:
# The hou.Error is not inherited from a Python Exception class,
# so we explicitly capture the houdini error, otherwise pyblish
# will remain hanging.
import traceback
traceback.print_exc()
raise RuntimeError("Render failed: {0}".format(exc))
if "files" not in instance.data:
instance.data["files"] = []
instance.data["files"].append(file_name)