Houdini local render and publish existing frames error

Hi

Publishing USD Render with Houdini and my Render target set to Local machine rendering or Use existing frames (local), is returning this error:

Traceback (most recent call last):
  File "C:\Users\User\AppData\Local\Ynput\AYON\dependency_packages\ayon_2502101448_windows.zip\dependencies\pyblish\plugin.py", line 528, in __explicit_process
    runner(*args)
  File "C:\Users\User\AppData\Local\Ynput\AYON\addons\core_1.4.0\ayon_core\plugins\publish\validate_unique_subsets.py", line 84, in process
    raise PublishXmlValidationError(self, msg,
ayon_core.pipeline.publish.publish_plugins.PublishXmlValidationError: Instance product names ['/sequences/056/0610 > render3d_layoutMain'] are not unique. Please remove or rename duplicates.

This the only product that is being published.

Farm publish works.

@mustafa_jafar I have tried your suggestion

you may be missing <_{Aov}> in product name profile in ayon+settings://core/tools/creator/product_name_profiles . mine is {product[type]}{Task[name]}{Variant}<_{Aov}>

but still have the same error.

Can you save a flattened USD file from your scene? Feel free to include ONLY the Render Settings and Products prims which I believe are in /Render?

That way, we can investigate what’s going on.
And perhaps show the settings you’ve set on the USD Render ROP? (Do you have overridden file output path there? etc.)

Furthermore, if a publish fails. It’s good to share a Publish JSON report from the publisher UI. Bottom left is button from which you can save the file and share here. Please do double check whether the exported file does not have any confidential data you may be worried about.

Not sure what the rules are for sending files here (and I can’t upload .usd here), so I will send you the file on discord, hope that’s okay.
The scene is pretty much just a pig head for testing, domelight, camera and karmarendersettings.

Here are the settings from the USD Render, basically all default, only getting the final node from stage for render

I can reproduce this case with usda file:

#usda 1.0
(
    doc = """Generated from Composed Stage of root layer 


Generated from Composed Stage of root layer 
"""
    endTimeCode = 1001
    framesPerSecond = 24
    metersPerUnit = 1
    renderSettingsPrimPath = "/Render/rendersettings"
    startTimeCode = 1001
    timeCodesPerSecond = 24
    upAxis = "Y"
)

def Scope "Render"
{
    def Scope "Products"
    {
        def Scope "Vars"
        {
            def RenderVar "Depth" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "float"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "float"
                string driver:parameters:aov:husk:channel_prefix = "z"
                string driver:parameters:aov:karma:filter = '["minmax",{"mode":"zmin"}]'
                custom bool driver:parameters:aov:multiSampled = 0
                custom string driver:parameters:aov:name = "depth"
                uniform string sourceName = "ray:hitPz"
                uniform token sourceType = "raw"
            }

            def RenderVar "CombinedDiffuse" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "combineddiffuse"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "combineddiffuse"
                uniform string sourceName = "C<RD>.*L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "DirectDiffuse" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "directdiffuse"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "directdiffuse"
                uniform string sourceName = "C<RD>L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "IndirectDiffuse" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "indirectdiffuse"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "indirectdiffuse"
                uniform string sourceName = "C<RD>.+L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "CombinedGlossyReflection" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "combinedglossyreflection"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "combinedglossyreflection"
                uniform string sourceName = "C<RG>.*L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "DirectGlossyReflection" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "directglossyreflection"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "directglossyreflection"
                uniform string sourceName = "C<RG>L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "IndirectGlossyReflection" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "indirectglossyreflection"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "indirectglossyreflection"
                uniform string sourceName = "C<RG>.+L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "GlossyTransmission" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "glossytransmission"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "glossytransmission"
                uniform string sourceName = "C<TG>.*L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "CombinedVolume" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "combinedvolume"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "combinedvolume"
                uniform string sourceName = "CV.*L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "DirectVolume" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "directvolume"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "directvolume"
                uniform string sourceName = "CVL"
                uniform token sourceType = "lpe"
            }

            def RenderVar "IndirectVolume" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "indirectvolume"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "indirectvolume"
                uniform string sourceName = "CV.+L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "sss" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3h"
                string driver:parameters:aov:husk:channel_prefix = "sss"
                string driver:parameters:aov:husk:output_colorspace = None
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "sss"
                uniform string sourceName = "C<TD>.*L"
                uniform token sourceType = "lpe"
            }

            def RenderVar "Beauty" (
                apiSchemas = ["KarmaRenderVarAPI"]
            )
            {
                uniform token dataType = "color4f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color4h"
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 1
                custom string driver:parameters:aov:name = "C"
                uniform string sourceName = "C.*[LO]"
                uniform token sourceType = "lpe"
            }

            def RenderVar "CryptoObject" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3f"
                string driver:parameters:aov:husk:channel_prefix = "CryptoObject"
                string driver:parameters:aov:husk:output_colorspace = ""
                bool driver:parameters:aov:karma:cryptomatte = 1
                int driver:parameters:aov:karma:cryptomatterank = 6
                string driver:parameters:aov:karma:cryptomattesidecar = ""
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 0
                custom string driver:parameters:aov:name = "CryptoObject"
                uniform string sourceName = "__name"
                uniform token sourceType = "primvar"
            }

            def RenderVar "CryptoMaterial" (
                apiSchemas = ["KarmaRenderVarAPI", "HuskRenderVarAPI"]
            )
            {
                uniform token dataType = "color3f"
                custom int driver:parameters:aov:clearValue = 0
                custom token driver:parameters:aov:format = "color3f"
                string driver:parameters:aov:husk:channel_prefix = "CryptoMaterial"
                string driver:parameters:aov:husk:output_colorspace = ""
                bool driver:parameters:aov:karma:cryptomatte = 1
                int driver:parameters:aov:karma:cryptomatterank = 6
                string driver:parameters:aov:karma:cryptomattesidecar = ""
                string driver:parameters:aov:karma:filter = '["ubox",{}]'
                custom bool driver:parameters:aov:multiSampled = 0
                custom string driver:parameters:aov:name = "CryptoMaterial"
                uniform string sourceName = "__materialname"
                uniform token sourceType = "primvar"
            }
        }

        def RenderProduct "renderproduct" (
            apiSchemas = ["HuskRenderProductAPI"]
        )
        {
            string driver:parameters:husk:artist = ""
            string driver:parameters:husk:comment = ""
            string driver:parameters:husk:hostname = ""
            string driver:parameters:husk:OpenEXR:compression = "dwab"
            int driver:parameters:husk:OpenEXR:dwa_compression = 85
            rel orderedVars = [
                </Render/Products/Vars/Beauty>,
                </Render/Products/Vars/CombinedDiffuse>,
                </Render/Products/Vars/CombinedGlossyReflection>,
                </Render/Products/Vars/CombinedVolume>,
                </Render/Products/Vars/CryptoMaterial>,
                </Render/Products/Vars/CryptoObject>,
                </Render/Products/Vars/Depth>,
                </Render/Products/Vars/DirectDiffuse>,
                </Render/Products/Vars/DirectGlossyReflection>,
                </Render/Products/Vars/DirectVolume>,
                </Render/Products/Vars/GlossyTransmission>,
                </Render/Products/Vars/IndirectDiffuse>,
                </Render/Products/Vars/IndirectGlossyReflection>,
                </Render/Products/Vars/IndirectVolume>,
                </Render/Products/Vars/sss>,
            ]
            token productName.timeSamples = {
                1001: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1001.exr",
                1002: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1002.exr",
                1003: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1003.exr",
                1004: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1004.exr",
                1005: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1005.exr",
                1006: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1006.exr",
                1007: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1007.exr",
                1008: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1008.exr",
                1009: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1009.exr",
                1010: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1010.exr",
                1011: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1011.exr",
                1012: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1012.exr",
                1013: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1013.exr",
                1014: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1014.exr",
                1015: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1015.exr",
                1016: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1016.exr",
                1017: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1017.exr",
                1018: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1018.exr",
                1019: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1019.exr",
                1020: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1020.exr",
                1021: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1021.exr",
                1022: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1022.exr",
                1023: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1023.exr",
                1024: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1024.exr",
                1025: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1025.exr",
                1026: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1026.exr",
                1027: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1027.exr",
                1028: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1028.exr",
                1029: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1029.exr",
                1030: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1030.exr",
                1031: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1031.exr",
                1032: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1032.exr",
                1033: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1033.exr",
                1034: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1034.exr",
                1035: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1035.exr",
                1036: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1036.exr",
                1037: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1037.exr",
                1038: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1038.exr",
                1039: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1039.exr",
                1040: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1040.exr",
                1041: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1041.exr",
                1042: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1042.exr",
                1043: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1043.exr",
                1044: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1044.exr",
                1045: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1045.exr",
                1046: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1046.exr",
                1047: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1047.exr",
                1048: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1048.exr",
                1049: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1049.exr",
                1050: "Z:/Turbulence/work/sequences/test/t01/3d_layout/render/karmarendersettings.xpu.1050.exr",
            }
            uniform token productType = "raster"
        }
    }

    def RenderSettings "rendersettings" (
        apiSchemas = ["KarmaRenderSettingsAPI"]
    )
    {
        uniform token aspectRatioConformPolicy = "expandAperture"
        rel camera = </AYON_CONTAINERS/t01_cameraMain_CON/camera_baked/plateMain_1_1_001>
        uniform float4 dataWindowNDC = (0, 0, 1, 1)
        uniform bool disableDepthOfField = 0
        uniform bool disableMotionBlur = 0
        uniform token[] includedPurposes = ["default", "render"]
        bool karma:global:abortmissingtexture = 0
        bool karma:global:abortnogpudevice = 1
        bool karma:global:autoraybias = 1
        token karma:global:bucketorder = "Middle"
        int karma:global:bucketsize = 32
        float karma:global:cacheratio = 0.25
        int karma:global:cachesize = 1000
        float karma:global:colorlimit = 10
        float karma:global:colorlimitindirect = 10
        bool karma:global:colorlimitindlinked = 1
        bool karma:global:constrainmaxrough = 1
        token karma:global:convergence_mode = "Variance"
        float karma:global:dicingqualityscale = 1
        string karma:global:diffusecomponents = "diffuse"
        custom bool karma:global:enable_dof = 0
        custom string karma:global:engine = "xpu"
        string karma:global:exportcomponents = "diffuse reflect coat refract volume sss"
        bool karma:global:guiding_enable = 0
        int karma:global:guiding_samples = 0
        string karma:global:imagefilter = "[]"
        token karma:global:imagemode = "Progressive"
        token karma:global:light_sampling_mode = "Light Tree"
        float karma:global:light_sampling_quality = 1
        float karma:global:offscreenquality = 0.1
        int karma:global:pathtracedsamples = 128
        string karma:global:pixelfilter = "gauss"
        float karma:global:pixelfiltersize = 2
        string karma:global:pixeloracle = '["variance", {"variance": 0.01, "plane": "C", "minrays": 3, "ociomode": 0, "ociodisplay": "sRGB - Display", "ocioview": "Un-tone-mapped", "ociocolorspace": "default"}]'
        float karma:global:raybias = 0.001
        string karma:global:refractcomponents = "refract"
        int karma:global:russianroulette_cutoff = 2
        int karma:global:samplesperpixel = 9
        int karma:global:screendoorlimit = 4
        string karma:global:ssscomponents = "sss"
        bool karma:global:usecacheratio = 1
        string karma:global:volumecomponents = "volume"
        custom token karma:object:blurstyle = "Rotation Blur"
        custom bool karma:object:causticsenable = 0
        custom float karma:object:causticsroughnessclamp = 0.2
        custom token karma:object:cull_backface = "Off"
        custom int karma:object:curve_basis = 0
        custom token karma:object:curve_style = "Rounded Curves"
        custom float karma:object:diffuselimit = 1
        custom float karma:object:diffusequality = 1
        custom int karma:object:geosamples = 2
        custom int karma:object:instance_samples = 2
        custom token karma:object:instance_vblur = "Velocity Blur"
        custom bool karma:object:mblur = 1
        custom token karma:object:point_style = "Spheres"
        custom float karma:object:reflectlimit = 4
        custom float karma:object:reflectquality = 1
        custom float karma:object:refractlimit = 4
        custom float karma:object:refractquality = 1
        custom bool karma:object:samplesfromstage = 1
        custom float karma:object:ssslimit = 0
        custom float karma:object:sssquality = 1
        custom int karma:object:varianceaa_maxsamples = 9
        custom int karma:object:varianceaa_minsamples = 1
        custom float karma:object:varianceaa_thresh = 0.01
        custom token karma:object:vblur = "Velocity Blur"
        custom float karma:object:volumelimit = 3
        custom float karma:object:volumequality = 1
        custom float karma:object:volumesteprate = 0.25
        custom float karma:object:volumevblurscale = 1
        custom int karma:object:xformsamples = 2
        uniform token[] materialBindingPurposes = ["full", "allPurpose"]
        uniform float pixelAspectRatio = 1
        rel products = </Render/Products/renderproduct>
        uniform int2 resolution = (4600, 2426)
    }
}
  1. Save this as .usda on disk
  2. Sublayer it into Houdini
  3. Create a USD Render ROP instance as “Local render”

If I create USD Render ROP as local render instance, during publishing it generates an extra render instance in CollectLocalRenderInstances.

@mustafa_jafar can you take a further look when you have some time - this seems to be a bug. Either the current instance should be disabled, or it should create a new instance with the exact same target product (but instead update the current instance peraps?)

Another approach is to set current instance to instance.data["publish"] = False but I’m not sure if there are other validators or plug-ins that still need to trigger on the ‘original’ instance being collected from?

image

Another approach to fix this is here to add another check:

            # Ignore instances not integrating/publishing
            if not instance.data.get('integrate', True):
                continue

Because one may argue that if an instance is not integrating we might not actually care about the product to be unique since it’s not part of the resulting publish?

@antirotor @iLLiCiT thoughts?

Just for reference, the local publishing logic generates a render instance for each render product even if you have one render product resulting in the original instance + run time instances for each render product.
This expecting an aov_identifier to differentiate the run time instances.

s@ayon:aov_identifier = "Beauty";

The error you were seeing above happens because the aov_identifier was defaulting to "" empty string which resulted in the same instance name {product[type]}{Task[name]}{Variant}. therefore, adding an aov_identifier fixes the issue.

However, this logic is buggy bacuse the original instance should be completely ignored.

I did a quick test with one of @BigRoy suggestions where I added

        instance.data["publish"] = False

after this line. which worked.

I just want to mention that even though this may ‘workaround’ the issue faced here it’s not the right solution. You are rendering multilayer EXR and hence I wouldn’t refer to it as a “Beauty” aov. The value being "" is correct in the fact that "" is what we’re using to identify the “masterlayer” which is not an AOV.

I’d also say that most likely this is not the right fix - or may have unexpected consequences. It will essentially mean that this publish instance, will NOT trigger in ANY plug-ins whatsoever. As such, if you happen to have a validator that targets render family… it will not trigger anymore because you’ve now disabled the instance that had the render and usdrender family. Since the local render instance only has ["render.local.hou", "review"].

I think the best fix is:

  • Either do not create a new instance here.
  • Or ignore instances with instance.data["integrate"] = False in this particular product name uniqueness validator.
  • Or perhaps the new instance should also gain the source families ["usdrender", "render"]? Yet because this instance has only a subset of the original instance’s data I’m pretty sure that’s not what we’d really want either.

I’d prefer this one as it’s much cleaner. I’ll try this one and if it’s a simple fix, I’ll create a PR.

Amazing, thank you both so much!

I think you’ll mostly be battling the families then too - since now you’ll likely still be swapping/adding families, but at the same time you can’t disable integrate=False because you do want to integrate local instance - but good luck!