So I’ve got pyblish initially integrated into our pipeline. Here’s a few things I’ve discovered/implemented. Interested in hearing any thoughts or feedback, since I’m keen to follow the intended usage as much as possible.
- I’ve combined several collection plugins to minimize the number of collectors that appear in the UI, since I got feedback from users that it felt like too much. So I’ve a general system level one, which collects things like user and date, and then a general application level one, which collects things like workspace and Maya units.
- At the end of the publish I have an integrator which writes a json file of the context.data dictionary (minus “results”), and saves it basically as the metadata for the publish. Super easy just to have anything add to that dictionary and it’s accessible as publish metadata. Yay!
- I’ve wrapped the ui launcher in order to control which plugins are loaded, in order to have different collectors for different departments/publish types. I know to some extent this can be accomplished with families, but I’m not sure they would fully support the required logic. Two examples:
- Modelling want to prep and publish a super clean, flat scene, so they don’t have any sets or attributes in the scene which identify it as a modelling scene, and basically want to run the publish on assemblies. So that collector is very broad and would overlap with more specific collectors for other asset types. (This could also be fixed by adjusting the modelling workflow but I’m not ready for that battle yet.)
- Puppets and other assets have a node which identifies them as an asset, but they also contain other assets. A generalized asset collector would return them all, but when publishing puppets, I never want to publish it’s child assets, so unless there’s a place for this sort of logic, controlling which collectors are loaded seemed like the most straightforward solution.