Add UI for secondary outputs in tk-multi-publish (Alembic)

I have integrated

  1. Artist needs to add custom Start and End frame for the Alembic export. Need to add 2 textboxes for the same.
  2. Need an option for export camera.

Please guide, the right files with some snippets if possible.



Hi Ankur

Welcome to the forums, thanks for your question!

  1. You would need to take over the tk-maya publish plugin, and implement your own behaviour to replace these lines

  2. For handling cameras, I would check out our pipeline tutorial. That should guide you through the steps needed.


Hey Philip,
Thanks a lot. The pipeline tutorial link seems very handy.
For custom frame ranges, the lines pointer you provided is something I figured out.
Please let know if there is a way to expose two fields in Publish UI (older) , so they are pre-filled with timeSlider endpoints but user can still enter custom values so the caching can happen for an extended range.

Kindly, guide. Thanks again.


Ah I missed the UI part of you question originally sorry about that.
I would check out this topic which contains an example of a custom publish plugin UI:


Also this video walks through setting up a custom publish plugin UI for farm submission, which you might find helpful.

1 Like

Hi Philip, Thanks a lot for all your guidance. Really appreciate !
I am facing another issue here.

  1. Is there a way to pre-collapse all the items esp. the mesh as it seems cluttered
  2. Is there a way to group all meshes under a heading (and still have the ability to check individual item) and have the global first and last frame as settings for that, as it is not required to set these input ranges per mesh / item.
  1. You can set the expanded property on the item during collection, to set it’s state.

  2. I’m not sure that there is a way to achieve what you’re after exactly here. Custom plugin UIs are capable of handling multiple selection, ie if you select more than one of the same type of plugin. But as for having a header control, not really.
    Alternatively, It might be possible to collect a separate parent item that represents all of the meshes, and then collect the individual ones as children, but you would need to do some inspection during publish time to check the parent state. And I guess the parent item wouldn’t actually want to perform a publish. Something like:

    scene_item [Item] >
        Publish to Shotgun [Plugin]
        Alembic Scene [Item] >
            control plugin [Plugin] # contains the start and end frame controls but this plugin doesn't actually publish anything
            pSphere1 [Item]>
                publish alembic # handles the actual alembic publishing.

    The control plugin would set the start and end frames on the item’s properties (perhaps during validation) so that the publish alembic plugins could retrieve that value from their item’s parent item parameters, during publish, and then chose whether to use the parent items setting or the current item’s setting value.
    I have not tried doing this, so I don’t know if you would run into any hurdles.