From 59c3510a0219fe726e52816e4d1ff20015455794 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Wed, 22 Feb 2023 11:26:06 +0100 Subject: [PATCH 1/8] don't add opacity to layers info --- openpype/hosts/tvpaint/api/lib.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/tvpaint/api/lib.py b/openpype/hosts/tvpaint/api/lib.py index 312a211d49..a0cf761870 100644 --- a/openpype/hosts/tvpaint/api/lib.py +++ b/openpype/hosts/tvpaint/api/lib.py @@ -50,7 +50,8 @@ def parse_layers_data(data): "group_id": int(group_id), "visible": visible == "ON", "position": int(position), - "opacity": int(opacity), + # Opacity from 'tv_layerinfo' is always set to '0' so it's unusable + # "opacity": int(opacity), "name": name, "type": layer_type, "frame_start": int(frame_start), From 0f8a9c58a758fda407d777232112b7723d0e4332 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Wed, 22 Feb 2023 11:26:22 +0100 Subject: [PATCH 2/8] added is_current information to layers info --- openpype/hosts/tvpaint/api/lib.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/openpype/hosts/tvpaint/api/lib.py b/openpype/hosts/tvpaint/api/lib.py index a0cf761870..49846d7f29 100644 --- a/openpype/hosts/tvpaint/api/lib.py +++ b/openpype/hosts/tvpaint/api/lib.py @@ -43,7 +43,7 @@ def parse_layers_data(data): layer_id, group_id, visible, position, opacity, name, layer_type, frame_start, frame_end, prelighttable, postlighttable, - selected, editable, sencil_state + selected, editable, sencil_state, is_current ) = layer_raw.split("|") layer = { "layer_id": int(layer_id), @@ -60,7 +60,8 @@ def parse_layers_data(data): "postlighttable": postlighttable == "1", "selected": selected == "1", "editable": editable == "1", - "sencil_state": sencil_state + "sencil_state": sencil_state, + "is_current": is_current == "1" } layers.append(layer) return layers @@ -88,15 +89,17 @@ def get_layers_data_george_script(output_filepath, layer_ids=None): " selected editable sencilState" ), # Check if layer ID match `tv_LayerCurrentID` + "is_current=0", "IF CMP(current_layer_id, layer_id)==1", # - mark layer as selected if layer id match to current layer id + "is_current=1", "selected=1", "END", # Prepare line with data separated by "|" ( "line = layer_id'|'group_id'|'visible'|'position'|'opacity'|'" "name'|'type'|'startFrame'|'endFrame'|'prelighttable'|'" - "postlighttable'|'selected'|'editable'|'sencilState" + "postlighttable'|'selected'|'editable'|'sencilState'|'is_current" ), # Write data to output file "tv_writetextfile \"strict\" \"append\" '\"'output_path'\"' line", From 80151ca8800ca3fdcbcdebc092f27f6277201aff Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Wed, 22 Feb 2023 11:39:50 +0100 Subject: [PATCH 3/8] disable review on render layer/pass by default --- openpype/settings/defaults/project_settings/tvpaint.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/openpype/settings/defaults/project_settings/tvpaint.json b/openpype/settings/defaults/project_settings/tvpaint.json index e06a67a254..9173a8c3d5 100644 --- a/openpype/settings/defaults/project_settings/tvpaint.json +++ b/openpype/settings/defaults/project_settings/tvpaint.json @@ -31,13 +31,13 @@ "default_variants": [] }, "create_render_layer": { - "mark_for_review": true, + "mark_for_review": false, "default_pass_name": "beauty", "default_variant": "Main", "default_variants": [] }, "create_render_pass": { - "mark_for_review": true, + "mark_for_review": false, "default_variant": "Main", "default_variants": [] }, From abc36c8357e0773e35b5c312663d80ac3afbbfb1 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Wed, 22 Feb 2023 12:08:08 +0100 Subject: [PATCH 4/8] fix detailed descriptions --- openpype/hosts/tvpaint/plugins/create/create_render.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/openpype/hosts/tvpaint/plugins/create/create_render.py b/openpype/hosts/tvpaint/plugins/create/create_render.py index 7e85977b11..d996c06818 100644 --- a/openpype/hosts/tvpaint/plugins/create/create_render.py +++ b/openpype/hosts/tvpaint/plugins/create/create_render.py @@ -66,7 +66,7 @@ RENDER_LAYER_DETAILED_DESCRIPTIONS = ( Be aware Render Layer is not TVPaint layer. All TVPaint layers in the scene with the color group id are rendered in the -beauty pass. To create sub passes use Render Layer creator which is +beauty pass. To create sub passes use Render Pass creator which is dependent on existence of render layer instance. The group can represent an asset (tree) or different part of scene that consist @@ -82,8 +82,8 @@ could be Render Layer which has 'Arm', 'Head' and 'Body' as Render Passes. RENDER_PASS_DETAILED_DESCRIPTIONS = ( """Render Pass is sub part of Render Layer. -Render Pass can consist of one or more TVPaint layers. Render Layers must -belong to a Render Layer. Marker TVPaint layers will change it's group color +Render Pass can consist of one or more TVPaint layers. Render Pass must +belong to a Render Layer. Marked TVPaint layers will change it's group color to match group color of Render Layer. """ ) From 79a40902e0a16518097240dd8bffd19c90fecbdd Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Thu, 23 Feb 2023 14:49:02 +0100 Subject: [PATCH 5/8] Better error message --- openpype/hosts/tvpaint/plugins/create/create_render.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/tvpaint/plugins/create/create_render.py b/openpype/hosts/tvpaint/plugins/create/create_render.py index d996c06818..563d16f847 100644 --- a/openpype/hosts/tvpaint/plugins/create/create_render.py +++ b/openpype/hosts/tvpaint/plugins/create/create_render.py @@ -461,7 +461,10 @@ class CreateRenderPass(TVPaintCreator): "render_layer_instance_id" ) if not render_layer_instance_id: - raise CreatorError("Missing RenderLayer instance") + raise CreatorError(( + "You cannot create a Render Pass without a Render Layer." + " Please select one first" + )) render_layer_instance = self.create_context.instances_by_id.get( render_layer_instance_id From ba792f648b6aeea6299a5137afd23de4dc677a3f Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Thu, 23 Feb 2023 14:52:30 +0100 Subject: [PATCH 6/8] use 'list_instances' instead of existing instances --- .../hosts/tvpaint/plugins/create/create_render.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/openpype/hosts/tvpaint/plugins/create/create_render.py b/openpype/hosts/tvpaint/plugins/create/create_render.py index 563d16f847..6a3788cc08 100644 --- a/openpype/hosts/tvpaint/plugins/create/create_render.py +++ b/openpype/hosts/tvpaint/plugins/create/create_render.py @@ -601,13 +601,16 @@ class CreateRenderPass(TVPaintCreator): ] def get_pre_create_attr_defs(self): + # Find available Render Layers + # - instances are created after creators reset + current_instances = self.host.list_instances() render_layers = [ { - "value": instance.id, - "label": instance.label + "value": instance["instance_id"], + "label": instance["subset"] } - for instance in self.create_context.instances - if instance.creator_identifier == CreateRenderlayer.identifier + for instance in current_instances + if instance["creator_identifier"] == CreateRenderlayer.identifier ] if not render_layers: render_layers.append({"value": None, "label": "N/A"}) From 8218e18edf352d377c901197ecf9408988e974e2 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Thu, 23 Feb 2023 14:52:53 +0100 Subject: [PATCH 7/8] added label with hint for artist --- openpype/hosts/tvpaint/plugins/create/create_render.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/openpype/hosts/tvpaint/plugins/create/create_render.py b/openpype/hosts/tvpaint/plugins/create/create_render.py index 6a3788cc08..d356a07687 100644 --- a/openpype/hosts/tvpaint/plugins/create/create_render.py +++ b/openpype/hosts/tvpaint/plugins/create/create_render.py @@ -41,6 +41,7 @@ from openpype.client import get_asset_by_name from openpype.lib import ( prepare_template_data, AbstractAttrDef, + UILabelDef, UISeparatorDef, EnumDef, TextDef, @@ -621,6 +622,9 @@ class CreateRenderPass(TVPaintCreator): label="Render Layer", items=render_layers ), + UILabelDef( + "NOTE: Try to hit refresh if you don't see a Render Layer" + ), BoolDef( "mark_for_review", label="Review", From 227f1402fe03590b4350124db0a3894335967c04 Mon Sep 17 00:00:00 2001 From: Jakub Trllo Date: Thu, 23 Feb 2023 14:57:34 +0100 Subject: [PATCH 8/8] change how instance attributes are filled --- .../tvpaint/plugins/create/create_render.py | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/openpype/hosts/tvpaint/plugins/create/create_render.py b/openpype/hosts/tvpaint/plugins/create/create_render.py index d356a07687..9711024c79 100644 --- a/openpype/hosts/tvpaint/plugins/create/create_render.py +++ b/openpype/hosts/tvpaint/plugins/create/create_render.py @@ -633,7 +633,34 @@ class CreateRenderPass(TVPaintCreator): ] def get_instance_attr_defs(self): - return self.get_pre_create_attr_defs() + # Find available Render Layers + current_instances = self.create_context.instances + render_layers = [ + { + "value": instance.id, + "label": instance.label + } + for instance in current_instances + if instance.creator_identifier == CreateRenderlayer.identifier + ] + if not render_layers: + render_layers.append({"value": None, "label": "N/A"}) + + return [ + EnumDef( + "render_layer_instance_id", + label="Render Layer", + items=render_layers + ), + UILabelDef( + "NOTE: Try to hit refresh if you don't see a Render Layer" + ), + BoolDef( + "mark_for_review", + label="Review", + default=self.mark_for_review + ) + ] class TVPaintAutoDetectRenderCreator(TVPaintCreator):