The base idea is simple: we need the artist to be able to see the result of the maya/usd conversion and to make edits if needed.
In our current pipeline the converted layer isn’t inserted in the layer stack, but we publish it right away. This way, the artist doesn’t have direct control over it, so it’s hard to take full advantage of usd features. Also, it’s hard for them to understand the relationship between the maya data and the opinions they’re authoring in usd.
In our next pipeline, still in development, after the conversion we are building the layer stack in the maya scene, so the artist can check whether their edits are correct and won’t destroy the usd composition, or if those changes will show correctly in the layer stack. They can then make the needed changes and go back and forth between maya and usd before publishing.
The problem is in managing those converted usd layers. We could write those to disk, but the problem comes with managing the different users and variants, linked to the correct maya file. There are high chances of error, both in overwriting files, deleting files, or keeping useless usd files. It could become a file hell and our company management asked us to avoid it
The best solution would be to keep the layer anonymous, without writing it anywhere until it’s published. The problem here is that with the 2GB limit, the converted layer could be truncated when the file is saved. We ask the user to save before publish, so it will will be truncated for sure. (The artists could potentially convert a whole creature with millions of vertices)
We then tried with Bifrost, but we’re having high performance issues when creating all the nodes needed to convert the hierarchy to bifrost nodes. To make it procedural we’d need some kind of data to be passed to bifrost (ideally a dictionary), but we can’t set dictionaries as maya attributes.
I’m currently investigating in converting some string to a bifrost object, so that could be our solution. But at the end, bifrost still is less performant then maya-usd in the conversion, because it keeps evaluating everything whenever there is a change in the original Maya data.
The other solution I had in mind was to save the converted layer as a pickled object inside the fileInfo data, so to bypass the 2GB limit. And then make the maya viewport or maya hydra read that layer and display it to the artist.
In that case, could I force your scene delegate to manage my object too?