- Add to PYTHONPATH
- Boot up the example scene, and publish away.
At this point, you have access to all of Magenta's plug-ins, and can start publishing. The example scene provides a good starting point.
First thing I wanted to do was to try a plug-in or two in isolation. To learn about it before trusting it with my data. The problem was, a single family was associated with 20+ plug-ins, and I had no choice but to run either all of them or none.
Distribute plug-ins amongst many families.
- The could potentially retain their all-or-nothing status; no harm in appending families rather than replacing them. They do form a coherent whole.
Document which combinations of families must be used together; like an extractor specifically tailored to a collector. These should be few, but deliberate.
Document which combinations of families are useful together, like an extra
gif output alongside geometry publishes. The should be the majority, to enable isolated use.
- A tutorial on how to publish the most simple of assets, using a contrived example
- A tutorial on how to publish a real asset, under real circumstance, based on real experience
Lastly, though things are being validated and extracted, it isn't actually being saved anywhere. There needs to be an integrator, no matter how trivial, just so people can take Magenta for a spin.
Distribution of plug-ins amongst families are using the multiple family feature of Pyblish. So, the question is, how many plug-ins should each family be associated with?
instance = context.create_instance("MyModel")
instance.data["families"] = ["magenta.uv.rigging",
In this example, a model is being published for both rigging, animation and cloth simulation. The UVs for this model are meant for use in rigging and animation, but not relevant for cfx, or other departments, such as fx and fluid simulations. If it were, those might have put additional constraints on what those UVs could look like, perhaps they could not be overlapping due to some limitation of an in-house plug-in or external vendor. But we do know it's being used for texturing, so it's likely they need to be uniform and not stretch too much. Also rigging, which suggests that the animation rig will likely have a preview texture based on the same UVs.
magenta.uv.rigging might be associated with these plug-ins.
Or, there could be an additional family for more detailed plug-ins. Such as
Or the other way around, there could be less families where each family encompasses more plug-ins.
The benefit of more families is flexibility, whereas the disadvantage is that the user will be managing more families in their plug-ins. Sometimes, a coherent working whole is desirable, especially when just starting out. Other times, absolute control and flexibility is needed.
Maybe a plug-in could support both the coherent whole, and the detail?
order = pyblish.api.ValidatorOrder
families = ["magenta.model", "magenta.rig", "magenta.uv.rigging"]
order = pyblish.api.ExtractorOrder
families = ["magenta.model", "magenta.rig", "magenta.review.gif"]
In this example, any instance of
magenta.model would implicitly be associated with both of these, but if the developer would rather only get a gif extracted, he could instead apply
magenta.review.gif in which case
ValidateUVs will never get run.
Best of both worlds?