alembic GPU cache and V-Ray

Hello,

I’m messing around with GPU Caches in Maya and trying to figure out how viable they are for a V-Ray-centric pipeline. I can see that they’re officially supported as a geometry type, but is there support for exporting V-Ray materials as part of the GPU cache? If not, is there another way to deal with material assignments for multiple meshes under a single cache? Are there other undocumented limitations I don’t know about? There seems to be very little information out there about the format in general.

Thanks!

For some reason it’s a little-used feature with V-Ray so far, so there’s definitely some parts lacking in such a pipeline. We can do anything that you need as far as the materal assignments go - the most simple I guess is just a file with a list of Alembic paths and the name of the corresponding materials. Would that work for you?

Best regards,
Vlado

there is an interesting open source project for arnold goin on…
would be a possible solution the get the same running for vray…

I haven’t had the time yet, but we would like to start using alembic files for vray proxies. Just like how you can switch out the proxy representation to show whole mesh or a bbox, I would ideally like to somehow switch out the representation into a gpucache right from the vrayproxy node. Does this make sense?

I know that there is this project for Arnold; however I’m interested in how *you* would like things to work :slight_smile: I’ve no idea if what was done for Arnold is best for most users - perhaps there are better ways to go about it.

Best regards,
Vlado

The closest thing I can think of would be if V-Ray could load GPU caches in similarly to proxies… if a VRayMeshMtl with hooks to the original materials could be applied to the proxy, then we could render the GPU cache with all the original materials correctly applied. Is this possible?

wouldnt that possible with scene assembly nodes…
there is an option which version to use for rendering…

Actually V-Ray already renders GPU caches as proxies. We can allow the adding of a VRayMeshMtl to it, however you’ll have to set up the material assignments manually - I don’t think they are written in the .abc file… or are they?

Best regards,
Vlado

Maya has an option to write material assignments to a GPU cache, but it only supports Phong and Lambert materials for some reason, making it functionally worthless. I’m not entirely sure how it handles these assignments… could be a custom string attribute added to the .abc or something?

Alembic has some very basic material schema, but it seems designed to support different renderers in theory. The difficulty is that the host application is doing the export and this schema doesn’t support shading network. It must be a single material. We can probably store both in Alembic and FBX, a VRay specific string that contains vrscene or vrmat. But it’s a matter of more research and work.

I’ve started messing with using gpu cache as standin for alembic proxies, you can display them in full resolution but the alembic proxy are the ones that actually get rendered. The gpu cache is simply parented under the ablembic proxy and with skip rendering turn on, and the alembic proxy with stand in turn on (still shows as a 1 cm box though). The shaders are attached through the shape slots on the vrmesh mtl node (you definitely need to script this part, our setup allow material assigned to both abc and abc proxy). Works pretty good so far.

Maybe my previous question got lost in translation… but would it somehow be possible to make a vray proxy represented as gpucache?

I see that there’s a viewport override attribute, which can read another vrmesh/abc. Perhaps add a checkbox to translate this into a gpucache rather than the full abc?

We’ll be looking into that soon.

Best regards,
Vlado

one thing I noticed with Maya’s gpu cache is it always load the entire abc in memory. Id’d be nice for Vray to only load the cache for current frame if possible, otherwise it’l put your machine into swap when loading large abc files.

Yes, we already have an option to cache the geometry or not.

Hi,

Have there been any developments on this front?

I am looking for a good workflow of utilising GPU Cache’s and rendering through V-Ray as if it were a proxy. I need to be able to render and control multiple shaders in the caches / proxies.

V-Ray proxy works great until I need to see a full viewport representation of the model.

When compared to using a GPU Cache, system ram is far less consumed.

I’d love to find a solution that allows the best of both worlds. Off loading the Proxy display to the GPU would be perfect.


One of the nightlies made great improvement in using alembic as vray proxy, you can also specify a separate proxy file for display. It seems just as fast as gpu cache now.

There’s now a new Maya bug causes me not able to use my custom gpu/vray ablemic proxy combo. Basically if you reference a gpu cache node the hypershade/graph editor will turn blank.

Hm, I can’t reproduce this hypershade issue. Can you make a simple example?

The issue is with Maya referencing Maya’s gpu node, not VRay proxy. We’ve already reported it to Autodesk.

If you want to try, just reference a Maya gpu node, open hypershade or graph editor, it’ll turn blank.