mirror of
https://github.com/ynput/ayon-core.git
synced 2026-01-01 16:34:53 +01:00
43 lines
1.2 KiB
Python
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)
|