From 28ace5313c3826f619fa2f65bae6c2d9ab28a501 Mon Sep 17 00:00:00 2001 From: MustafaJafar Date: Thu, 15 Feb 2024 17:44:16 +0200 Subject: [PATCH] Use full staging path in houdini create settings --- .../plugins/create/create_alembic_camera.py | 7 +- .../plugins/create/create_arnold_ass.py | 9 +- .../plugins/create/create_arnold_rop.py | 14 +-- .../houdini/plugins/create/create_bgeo.py | 7 +- .../plugins/create/create_composite.py | 9 +- .../houdini/plugins/create/create_hda.py | 9 +- .../plugins/create/create_karma_rop.py | 19 ++- .../plugins/create/create_mantra_ifd.py | 7 +- .../plugins/create/create_mantra_rop.py | 13 +- .../plugins/create/create_pointcache.py | 7 +- .../plugins/create/create_redshift_proxy.py | 5 +- .../plugins/create/create_redshift_rop.py | 14 +-- .../houdini/plugins/create/create_review.py | 7 +- .../plugins/create/create_staticmesh.py | 7 +- .../houdini/plugins/create/create_usd.py | 7 +- .../plugins/create/create_vbd_cache.py | 7 +- .../houdini/plugins/create/create_vray_rop.py | 21 ++-- .../houdini/server/settings/create.py | 113 +++++++++++++----- 18 files changed, 161 insertions(+), 121 deletions(-) diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_alembic_camera.py b/client/ayon_core/hosts/houdini/plugins/create/create_alembic_camera.py index c6cf5664f8..61d903e875 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_alembic_camera.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_alembic_camera.py @@ -13,7 +13,7 @@ class CreateAlembicCamera(plugin.HoudiniCreator): label = "Camera (Abc)" family = "camera" icon = "camera" - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.abc" def create(self, subset_name, instance_data, pre_create_data): import hou @@ -28,9 +28,8 @@ class CreateAlembicCamera(plugin.HoudiniCreator): instance_node = hou.node(instance.get("instance_node")) - filepath = "{root}/{subset}/{subset}.abc".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms = { diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_arnold_ass.py b/client/ayon_core/hosts/houdini/plugins/create/create_arnold_ass.py index e3a052812f..265f591513 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_arnold_ass.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_arnold_ass.py @@ -16,7 +16,7 @@ class CreateArnoldAss(plugin.HoudiniCreator): # however calling HoudiniCreator.create() # will override it by the value in the project settings ext = ".ass" - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.{ext}" def create(self, subset_name, instance_data, pre_create_data): import hou @@ -40,10 +40,9 @@ class CreateArnoldAss(plugin.HoudiniCreator): parm_template_group.hideFolder("Properties", True) instance_node.setParmTemplateGroup(parm_template_group) - filepath = "{root}/{subset}/{subset}.$F4{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name, - ext=self.ext + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset + ext=self.ext.lstrip(".") ) parms = { diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_arnold_rop.py b/client/ayon_core/hosts/houdini/plugins/create/create_arnold_rop.py index 0d8e95f852..50a3bafa41 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_arnold_rop.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_arnold_rop.py @@ -9,7 +9,8 @@ class CreateArnoldRop(plugin.HoudiniCreator): label = "Arnold ROP" family = "arnold_rop" icon = "magic" - staging_dir = "$HIP/ayon" + render_staging_dir = "$HIP/ayon/{product_name}/render/{product_name}.$F4.{ext}" + ass_dir = "$HIP/ayon/{product_name}/ass/{product_name}.$F4.{ext}" # Default extension ext = "exr" @@ -38,9 +39,8 @@ class CreateArnoldRop(plugin.HoudiniCreator): ext = pre_create_data.get("image_format") - filepath = "{root}/{subset}/{subset}.$F4.{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name, + filepath = self.render_staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset ext=ext ) @@ -54,9 +54,9 @@ class CreateArnoldRop(plugin.HoudiniCreator): } if pre_create_data.get("export_job"): - ass_filepath = "{root}/{subset}/ass/{subset}.$F4.ass".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + ass_filepath = self.ass_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset + ext="ass" ) parms["ar_ass_export_enable"] = 1 diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_bgeo.py b/client/ayon_core/hosts/houdini/plugins/create/create_bgeo.py index 163dc266c1..57c71fe9ec 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_bgeo.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_bgeo.py @@ -12,7 +12,7 @@ class CreateBGEO(plugin.HoudiniCreator): label = "PointCache (Bgeo)" family = "pointcache" icon = "gears" - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.$F4.{ext}" def create(self, subset_name, instance_data, pre_create_data): @@ -30,9 +30,8 @@ class CreateBGEO(plugin.HoudiniCreator): instance_node = hou.node(instance.get("instance_node")) - filepath = "{root}/{subset}/{subset}.$F4.{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name, + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset ext=pre_create_data.get("bgeo_type") or "bgeo.sc" ) diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_composite.py b/client/ayon_core/hosts/houdini/plugins/create/create_composite.py index 902071634b..c76acdf58e 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_composite.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_composite.py @@ -13,8 +13,8 @@ class CreateCompositeSequence(plugin.HoudiniCreator): label = "Composite (Image Sequence)" family = "imagesequence" icon = "gears" - staging_dir = "$HIP/ayon" - ext = ".exr" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.$F4.{ext}" + ext = "exr" def create(self, subset_name, instance_data, pre_create_data): import hou # noqa @@ -29,9 +29,8 @@ class CreateCompositeSequence(plugin.HoudiniCreator): instance_node = hou.node(instance.get("instance_node")) - filepath = "{root}/{subset}/{subset}.$F4{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name, + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset ext=self.ext ) diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_hda.py b/client/ayon_core/hosts/houdini/plugins/create/create_hda.py index ce72a9458e..97347f432a 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_hda.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_hda.py @@ -16,7 +16,8 @@ class CreateHDA(plugin.HoudiniCreator): family = "hda" icon = "gears" maintain_selection = False - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.{ext}" + ext = "hda" def _check_existing(self, asset_name, subset_name): # type: (str) -> bool @@ -60,9 +61,9 @@ class CreateHDA(plugin.HoudiniCreator): # for consistency I'm using {subset} as it's # the same key used in other creators - filepath = "{root}/{subset}/{subset}.hda".format( - root=hou.text.expandString(self.staging_dir), - subset=node_name + filepath = self.staging_dir.format( + product_name=node_name, + ext=self.ext ) hda_node = to_hda.createDigitalAsset( diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_karma_rop.py b/client/ayon_core/hosts/houdini/plugins/create/create_karma_rop.py index b9db6d33b5..a00b48a7e0 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_karma_rop.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_karma_rop.py @@ -11,7 +11,9 @@ class CreateKarmaROP(plugin.HoudiniCreator): label = "Karma ROP" family = "karma_rop" icon = "magic" - staging_dir = "$HIP/ayon" + render_staging_dir = "$HIP/ayon/{product_name}/render/{product_name}.$F4.{ext}" + checkpoint_dir = "$HIP/ayon/{product_name}/checkpoint/{product_name}.$F4.checkpoint" + usd_dir = "$HIP/ayon/{product_name}/usd/{product_name}_$RENDERID" def create(self, subset_name, instance_data, pre_create_data): import hou # noqa @@ -32,20 +34,17 @@ class CreateKarmaROP(plugin.HoudiniCreator): ext = pre_create_data.get("image_format") - filepath = "{root}/{subset}/{subset}.$F4.{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name, + filepath = self.render_staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset ext=ext ) - checkpoint = "{root}/{subset}/checkpoint/{subset}.$F4.checkpoint".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + checkpoint = self.checkpoint_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) - usd_directory = "{root}/{subset}/usd_render/{subset}_$RENDERID".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + usd_directory = self.usd_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms = { diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_mantra_ifd.py b/client/ayon_core/hosts/houdini/plugins/create/create_mantra_ifd.py index e0ca6d1220..ad74ad0fb0 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_mantra_ifd.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_mantra_ifd.py @@ -11,7 +11,7 @@ class CreateMantraIFD(plugin.HoudiniCreator): label = "Mantra IFD" family = "mantraifd" icon = "gears" - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.$F4.ifd" def create(self, subset_name, instance_data, pre_create_data): import hou @@ -27,9 +27,8 @@ class CreateMantraIFD(plugin.HoudiniCreator): instance_node = hou.node(instance.get("instance_node")) - filepath = "{root}/{subset}/{subset}.$F4.ifd".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms = { diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_mantra_rop.py b/client/ayon_core/hosts/houdini/plugins/create/create_mantra_rop.py index 994f6efa70..4c41020eed 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_mantra_rop.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_mantra_rop.py @@ -11,7 +11,8 @@ class CreateMantraROP(plugin.HoudiniCreator): label = "Mantra ROP" family = "mantra_rop" icon = "magic" - staging_dir = "$HIP/ayon" + render_staging_dir = "$HIP/ayon/{product_name}/render/{product_name}.$F4.{ext}", + ifd_dir = "$HIP/ayon/{product_name}/ifd/{product_name}.$F4.ifd" # Default to split export and render jobs export_job = True @@ -35,9 +36,8 @@ class CreateMantraROP(plugin.HoudiniCreator): ext = pre_create_data.get("image_format") - filepath = "{root}/{subset}/{subset}.$F4.{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name, + filepath = self.render_staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset ext=ext ) @@ -49,9 +49,8 @@ class CreateMantraROP(plugin.HoudiniCreator): } if pre_create_data.get("export_job"): - ifd_filepath = "{root}/{subset}/ifd/{subset}.$F4.ifd".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + ifd_filepath = self.ifd_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms["soho_outputmode"] = 1 diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_pointcache.py b/client/ayon_core/hosts/houdini/plugins/create/create_pointcache.py index 4441bdc5dd..b7c1df6bed 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_pointcache.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_pointcache.py @@ -13,7 +13,7 @@ class CreatePointCache(plugin.HoudiniCreator): label = "PointCache (Abc)" family = "pointcache" icon = "gears" - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.abc" def create(self, subset_name, instance_data, pre_create_data): instance_data.pop("active", None) @@ -29,9 +29,8 @@ class CreatePointCache(plugin.HoudiniCreator): instance_node = hou.node(instance.get("instance_node")) - filepath = "{root}/{subset}/{subset}.abc".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms = { diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_redshift_proxy.py b/client/ayon_core/hosts/houdini/plugins/create/create_redshift_proxy.py index 8de3f79dd1..0e307ae53f 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_redshift_proxy.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_redshift_proxy.py @@ -37,9 +37,8 @@ class CreateRedshiftProxy(plugin.HoudiniCreator): instance_node = hou.node(instance.get("instance_node")) - filepath = "{root}/{subset}/{subset}.$F4.rs".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms = { diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_redshift_rop.py b/client/ayon_core/hosts/houdini/plugins/create/create_redshift_rop.py index 89355c2386..f33caec5a2 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_redshift_rop.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_redshift_rop.py @@ -14,7 +14,8 @@ class CreateRedshiftROP(plugin.HoudiniCreator): family = "redshift_rop" icon = "magic" ext = "exr" - staging_dir = "$HIP/ayon" + render_staging_dir = "$HIP/ayon/{product_name}/render/{product_name}.$AOV.$F4.{ext}" + rs_dir = "$HIP/ayon/{product_name}/rs/{product_name}.$F4.rs" # Default to split export and render jobs split_render = True @@ -58,10 +59,8 @@ class CreateRedshiftROP(plugin.HoudiniCreator): ext = pre_create_data.get("image_format") - filepath = "{root}/{subset}/{subset}.${aov}.$F4.{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name, - aov="AOV", + filepath = self.render_staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset ext=ext ) @@ -85,9 +84,8 @@ class CreateRedshiftROP(plugin.HoudiniCreator): camera = node.path() parms["RS_renderCamera"] = camera or "" - rs_filepath = "{root}/{subset}/rs/{subset}.$F4.rs".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + rs_filepath = self.rs_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms["RS_archive_file"] = rs_filepath diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_review.py b/client/ayon_core/hosts/houdini/plugins/create/create_review.py index a816391368..ab579fe6a6 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_review.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_review.py @@ -14,7 +14,7 @@ class CreateReview(plugin.HoudiniCreator): label = "Review" family = "review" icon = "video-camera" - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.$F4.{ext}" def create(self, subset_name, instance_data, pre_create_data): @@ -32,9 +32,8 @@ class CreateReview(plugin.HoudiniCreator): frame_range = hou.playbar.frameRange() - filepath = "{root}/{subset}/{subset}.$F4.{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset="`chs(\"subset\")`", # keep dynamic link to subset + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset ext=pre_create_data.get("image_format", "png") ) diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_staticmesh.py b/client/ayon_core/hosts/houdini/plugins/create/create_staticmesh.py index 61501dfe08..c13b8a339b 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_staticmesh.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_staticmesh.py @@ -15,7 +15,7 @@ class CreateStaticMesh(plugin.HoudiniCreator): icon = "fa5s.cubes" default_variants = ["Main"] - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.fbx" def create(self, subset_name, instance_data, pre_create_data): @@ -30,9 +30,8 @@ class CreateStaticMesh(plugin.HoudiniCreator): instance_node = hou.node(instance.get("instance_node")) # prepare parms - filepath = "{root}/{subset}/{subset}.fbx".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms = { diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_usd.py b/client/ayon_core/hosts/houdini/plugins/create/create_usd.py index 3d3e4ca173..69e8688ae2 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_usd.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_usd.py @@ -13,7 +13,7 @@ class CreateUSD(plugin.HoudiniCreator): family = "usd" icon = "gears" enabled = False - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.usd" def create(self, subset_name, instance_data, pre_create_data): @@ -27,9 +27,8 @@ class CreateUSD(plugin.HoudiniCreator): instance_node = hou.node(instance.get("instance_node")) - filepath = "{root}/{subset}/{subset}.usd".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms = { diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_vbd_cache.py b/client/ayon_core/hosts/houdini/plugins/create/create_vbd_cache.py index 488d28ca68..f883489574 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_vbd_cache.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_vbd_cache.py @@ -14,7 +14,7 @@ class CreateVDBCache(plugin.HoudiniCreator): label = "VDB Cache" family = "vdbcache" icon = "cloud" - staging_dir = "$HIP/ayon" + staging_dir = "$HIP/ayon/{product_name}/{product_name}.$F4.vdb" def create(self, subset_name, instance_data, pre_create_data): import hou @@ -31,9 +31,8 @@ class CreateVDBCache(plugin.HoudiniCreator): instance_node = hou.node(instance.get("instance_node")) - filepath = "{root}/{subset}/{subset}.$F4.vdb".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + filepath = self.staging_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) parms = { diff --git a/client/ayon_core/hosts/houdini/plugins/create/create_vray_rop.py b/client/ayon_core/hosts/houdini/plugins/create/create_vray_rop.py index 47a3af8412..84f268b920 100644 --- a/client/ayon_core/hosts/houdini/plugins/create/create_vray_rop.py +++ b/client/ayon_core/hosts/houdini/plugins/create/create_vray_rop.py @@ -15,7 +15,8 @@ class CreateVrayROP(plugin.HoudiniCreator): family = "vray_rop" icon = "magic" ext = "exr" - staging_dir = "$HIP/ayon" + render_staging_dir = "$HIP/ayon/{product_name}/render/{product_name}.$AOV.$F4.{ext}", + vrscene_dir = "$HIP/ayon/{product_name}/vrscene/{product_name}.$F4.vrscene" # Default to split export and render jobs export_job = True @@ -58,9 +59,8 @@ class CreateVrayROP(plugin.HoudiniCreator): if pre_create_data.get("export_job"): - scene_filepath = "{root}/{subset}/vrscene/{subset}.$F4.vrscene".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name + scene_filepath = self.vrscene_dir.format( + product_name="`chs(\"subset\")`" # keep dynamic link to subset ) # Setting render_export_mode to "2" because that's for # "Export only" ("1" is for "Export & Render") @@ -82,10 +82,8 @@ class CreateVrayROP(plugin.HoudiniCreator): instance_data["RenderElement"] = pre_create_data.get("render_element_enabled") # noqa if pre_create_data.get("render_element_enabled", True): # Vray has its own tag for AOV file output - filepath = "{root}/{subset}/{subset}.${aov}.$F4.{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name, - aov="AOV", + filepath = self.render_staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset ext=ext ) @@ -103,11 +101,10 @@ class CreateVrayROP(plugin.HoudiniCreator): }) else: - filepath = "{root}/{subset}/{subset}.$F4.{ext}".format( - root=hou.text.expandString(self.staging_dir), - subset=subset_name, + filepath = self.render_staging_dir.format( + product_name="`chs(\"subset\")`", # keep dynamic link to subset ext=ext - ) + ).replace(".$AOV", "") parms.update({ "use_render_channels": 0, diff --git a/server_addon/houdini/server/settings/create.py b/server_addon/houdini/server/settings/create.py index 2b5ab237e3..136e2c5f45 100644 --- a/server_addon/houdini/server/settings/create.py +++ b/server_addon/houdini/server/settings/create.py @@ -8,7 +8,7 @@ class CreatorModel(BaseSettingsModel): title="Default Products", default_factory=list, ) - staging_dir: str = SettingsField(title="Staging Dir") + staging_dir: str = SettingsField(title="Staging Directory") class CreateArnoldAssModel(BaseSettingsModel): @@ -18,7 +18,58 @@ class CreateArnoldAssModel(BaseSettingsModel): default_factory=list, ) ext: str = SettingsField(Title="Extension") - staging_dir: str = SettingsField(title="Staging Dir") + staging_dir: str = SettingsField(title="Staging Directory") + + +class CreateArnoldRopModel(BaseSettingsModel): + enabled: bool = SettingsField(title="Enabled") + default_variants: list[str] = SettingsField( + title="Default Products", + default_factory=list, + ) + render_staging_dir: str = SettingsField(title="Render Staging Directory") + ass_dir: str = SettingsField(title="Ass Directory") + + +class CreateKarmaROPModel(BaseSettingsModel): + enabled: bool = SettingsField(title="Enabled") + default_variants: list[str] = SettingsField( + title="Default Products", + default_factory=list, + ) + render_staging_dir: str = SettingsField(title="Render Staging Directory") + checkpoint_dir: str = SettingsField(title="Checkpoint Directory") + usd_dir: str = SettingsField(title="USD Directory") + + +class CreateMantraROPModel(BaseSettingsModel): + enabled: bool = SettingsField(title="Enabled") + default_variants: list[str] = SettingsField( + title="Default Products", + default_factory=list, + ) + render_staging_dir: str = SettingsField(title="Render Staging Directory") + ifd_dir: str = SettingsField(title="IFD Directory") + + +class CreateRedshiftROPModel(BaseSettingsModel): + enabled: bool = SettingsField(title="Enabled") + default_variants: list[str] = SettingsField( + title="Default Products", + default_factory=list, + ) + render_staging_dir: str = SettingsField(title="Render Staging Directory") + rs_dir: str = SettingsField(title="RS Directory") + + +class CreateVrayROPModel(BaseSettingsModel): + enabled: bool = SettingsField(title="Enabled") + default_variants: list[str] = SettingsField( + title="Default Products", + default_factory=list, + ) + render_staging_dir: str = SettingsField(title="Render Staging Directory") + vrscene_dir: str = SettingsField(title="VRay scene Directory") class CreateStaticMeshModel(BaseSettingsModel): @@ -32,7 +83,7 @@ class CreateStaticMeshModel(BaseSettingsModel): default_factory=list, title="Collision Prefixes" ) - staging_dir: str = SettingsField(title="Staging Dir") + staging_dir: str = SettingsField(title="Staging Directory") class CreatePluginsModel(BaseSettingsModel): @@ -42,8 +93,8 @@ class CreatePluginsModel(BaseSettingsModel): CreateArnoldAss: CreateArnoldAssModel = SettingsField( default_factory=CreateArnoldAssModel, title="Create Arnold Ass") - CreateArnoldRop: CreatorModel = SettingsField( - default_factory=CreatorModel, + CreateArnoldRop: CreateArnoldRopModel = SettingsField( + default_factory=CreateArnoldRopModel, title="Create Arnold ROP") CreateCompositeSequence: CreatorModel = SettingsField( default_factory=CreatorModel, @@ -51,14 +102,14 @@ class CreatePluginsModel(BaseSettingsModel): CreateHDA: CreatorModel = SettingsField( default_factory=CreatorModel, title="Create Houdini Digital Asset") - CreateKarmaROP: CreatorModel = SettingsField( - default_factory=CreatorModel, + CreateKarmaROP: CreateKarmaROPModel = SettingsField( + default_factory=CreateKarmaROPModel, title="Create Karma ROP") CreateMantraIFD: CreatorModel = SettingsField( default_factory=CreatorModel, title="Create Mantra IFD") - CreateMantraROP: CreatorModel = SettingsField( - default_factory=CreatorModel, + CreateMantraROP: CreateMantraROPModel = SettingsField( + default_factory=CreateMantraROPModel, title="Create Mantra ROP") CreatePointCache: CreatorModel = SettingsField( default_factory=CreatorModel, @@ -88,8 +139,8 @@ class CreatePluginsModel(BaseSettingsModel): CreateVDBCache: CreatorModel = SettingsField( default_factory=CreatorModel, title="Create VDB Cache") - CreateVrayROP: CreatorModel = SettingsField( - default_factory=CreatorModel, + CreateVrayROP: CreateVrayROPModel = SettingsField( + default_factory=CreateVrayROPModel, title="Create VRay ROP") @@ -97,68 +148,73 @@ DEFAULT_HOUDINI_CREATE_SETTINGS = { "CreateAlembicCamera": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.abc" }, "CreateArnoldAss": { "enabled": True, "default_variants": ["Main"], "ext": ".ass", - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.$F4.{ext}" }, "CreateArnoldRop": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "render_staging_dir": "$HIP/ayon/{product_name}/render/{product_name}.$F4.{ext}", + "ass_dir": "$HIP/ayon/{product_name}/ass/{product_name}.$F4.{ext}" }, "CreateCompositeSequence": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.$F4.{ext}" }, "CreateHDA": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.{ext}" }, "CreateKarmaROP": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "render_staging_dir": "$HIP/ayon/{product_name}/render/{product_name}.$F4.{ext}", + "checkpoint_dir": "$HIP/ayon/{product_name}/checkpoint/{product_name}.$F4.checkpoint", + "usd_dir": "$HIP/ayon/{product_name}/usd/{product_name}_$RENDERID" }, "CreateMantraIFD": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.$F4.ifd" }, "CreateMantraROP": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "render_staging_dir": "$HIP/ayon/{product_name}/render/{product_name}.$F4.{ext}", + "ifd_dir": "$HIP/ayon/{product_name}/ifd/{product_name}.$F4.ifd" }, "CreatePointCache": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.abc" }, "CreateBGEO": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.$F4.{ext}" }, "CreateRedshiftProxy": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.$F4.rs" }, "CreateRedshiftROP": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "render_staging_dir": "$HIP/ayon/{product_name}/render/{product_name}.$AOV.$F4.{ext}", + "rs_dir": "$HIP/ayon/{product_name}/rs/{product_name}.$F4.rs" }, "CreateReview": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.$F4.{ext}" }, "CreateStaticMesh": { "enabled": True, @@ -172,12 +228,12 @@ DEFAULT_HOUDINI_CREATE_SETTINGS = { "USP", "UCX" ], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.fbx" }, "CreateUSD": { "enabled": False, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.usd" }, "CreateUSDRender": { "enabled": False, @@ -187,11 +243,12 @@ DEFAULT_HOUDINI_CREATE_SETTINGS = { "CreateVDBCache": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "staging_dir": "$HIP/ayon/{product_name}/{product_name}.$F4.vdb" }, "CreateVrayROP": { "enabled": True, "default_variants": ["Main"], - "staging_dir": "$HIP/ayon" + "render_staging_dir": "$HIP/ayon/{product_name}/render/{product_name}.$AOV.$F4.{ext}", + "vrscene_dir": "$HIP/ayon/{product_name}/vrscene/{product_name}.$F4.vrscene" }, }