mirror of
https://github.com/ynput/ayon-core.git
synced 2025-12-25 21:32:15 +01:00
63 lines
2 KiB
Python
63 lines
2 KiB
Python
import os
|
|
|
|
import avalon.maya
|
|
import pype.api
|
|
|
|
from maya import cmds
|
|
|
|
|
|
class ExtractVRayProxy(pype.api.Extractor):
|
|
"""Extract the content of the instance to a vrmesh file
|
|
|
|
Things to pay attention to:
|
|
- If animation is toggled, are the frames correct
|
|
-
|
|
"""
|
|
|
|
label = "VRay Proxy (.vrmesh)"
|
|
hosts = ["maya"]
|
|
families = ["vrayproxy"]
|
|
|
|
def process(self, instance):
|
|
|
|
staging_dir = self.staging_dir(instance)
|
|
file_name = "{}.vrmesh".format(instance.name)
|
|
file_path = os.path.join(staging_dir, file_name)
|
|
|
|
anim_on = instance.data["animation"]
|
|
if not anim_on:
|
|
# Remove animation information because it is not required for
|
|
# non-animated subsets
|
|
instance.data.pop("startFrame", None)
|
|
instance.data.pop("endFrame", None)
|
|
|
|
start_frame = 1
|
|
end_frame = 1
|
|
else:
|
|
start_frame = instance.data["startFrame"]
|
|
end_frame = instance.data["endFrame"]
|
|
|
|
vertex_colors = instance.data.get("vertexColors", False)
|
|
|
|
# Write out vrmesh file
|
|
self.log.info("Writing: '%s'" % file_path)
|
|
with avalon.maya.maintained_selection():
|
|
cmds.select(instance.data["setMembers"], noExpand=True)
|
|
cmds.vrayCreateProxy(exportType=1,
|
|
dir=staging_dir,
|
|
fname=file_name,
|
|
animOn=anim_on,
|
|
animType=3,
|
|
startFrame=start_frame,
|
|
endFrame=end_frame,
|
|
vertexColorsOn=vertex_colors,
|
|
ignoreHiddenObjects=True,
|
|
createProxyNode=False)
|
|
|
|
if "files" not in instance.data:
|
|
instance.data["files"] = list()
|
|
|
|
instance.data["files"].append(file_name)
|
|
|
|
self.log.info("Extracted instance '%s' to: %s"
|
|
% (instance.name, staging_dir))
|