Announcement

Collapse
No announcement yet.

Shader/Material Based Displacement ignored via VRay Proxys and ABC

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Shader/Material Based Displacement ignored via VRay Proxys and ABC

    Maya 2020.4
    Vray 5 hotfix 3 v5.00.23 from Sep 9 2021

    We're testing a workflow for lighting at the studio and hitting a bit of a road block with our desired displacement method.

    We're currently using vray proxy to import abc caches and then we are using the alembic layering options in the proxy to layer in the contributions from each department. ie UVs from Shading, Points and Normals from Animation. This works great so far.

    We're also storing the subdivision attributes in the alembics. Now when we read in the abc via the vray proxy the objects that need to be subdivided are already treated as subdivision objects at render time.
    This allows us to work without needing to maintain a separate vray subdivision set. We're very pleased to see this.

    The only issue we are having to solve is around displacement.

    We had hoped to avoid needing to maintain displacement sets where we add objects to the set and rather use displacement at a shader level to get around this.
    This helps to make things portable across DCCs like into vray for houdini.

    But the main reason for this is that we cannot selectively specify which objects inside the alembic hierarchy (in the vray proxy) get displacement. We can only add the whole vray proxy to the set.
    So the hack is to duplicate the proxy and play a game of hiding the visibilities of the objects and only adding the proxy with the objects that need both displacement and have visibility turned on to the set.
    This is really not a great solution.

    Alternatively in Maya I can hook up the displacement shader to the displacement slot of the SG (shader group) for the vray material I'm using and vray renders this fine.(Yes this not the preferred method for vray users)

    In this case we thought if we can control what's being displaced via the material then we can just have one proxy per alembic and wont need displacement sets and the game of duplicating and hiding visibilities would not be needed.
    Based on the material assignments the objects that need displacement will get it.
    In practice we are finding that although vray supports this displacement workflow for non proxies objects, assigning materials with displacement hooked up into the shader group gets ignored when using vray proxies.

    Is this a bug or the intended outcome? I know we are using an older build and wasn't sure if this was logged as an issue or not. Or maybe changed in later versions

    To replicate, create a sphere and assign a vray material.
    Now in the shader group for the material and in the displacement slot hookup the maya displacement shader.
    Use a checkerboard texture in that displacement shader, and make sure the checkerboard texture uses the red channel into the displacement shader

    This will render as expected with displacement

    Now export the sphere as .abc and import via proxy. Assign the same material as an override to the sphere in the proxy and the displacement is ignored while the other material parameters come through.


    Would appreciate some insight into this. Hopefully the above instructions are simple enough that I don't have to supply a maya file to demo the behavior.

    Regards,
    David Eschrich
    Global Head of 3d Zoic Studios




  • #2
    Hi David,

    Adding displacement to proxy sub-objects is not supported.
    You can add displacement to the entire proxy by using our VRayDisplacement set, but not to individial sub-objects. You could load the same file twice and play with visibility, as you've noted. That's the only way right now.

    The displacement shader will not work, because the material override connects to the material, and never to the shading group.
    Click image for larger version

Name:	proxy_disp.png
Views:	330
Size:	187.9 KB
ID:	1154202

    In the past, we've revisited this on several occasions and our conclusion for now is that the required change will be too complicated and it will take a lot of time. For now this is on hold on our end, but we revisit it every now and then.

    What I could suggest is giving it a try with USD.
    The latest Bifrost 2.4.0.0 gives some extended control over USD data in Maya, similar to what you can achieve with Solaris in Houdini. You can deactivate/unload prims, isolate references to a single prim from a file and modify it and so on. I can send you some examples (I don't have one on displacement, but I can send what I have and try and make one for displacement).
    This could be a lot more solid for sharing between Maya and Houdini and could work a lot better than alembics.

    Support for Bifrost 2.4.0.0 is in V-Ray 5.20.02, Bifrost 2.4.0.0 itself supports 2023 and 2022 (not sure for 2020, but this can be checked).

    Let me know what you think.
    Alex Yolov
    Product Manager
    V-Ray for Maya, Chaos Player
    www.chaos.com

    Comment


    • #3
      Hi Alex,

      Thanks for responding and confirming the workflow. That's unfortunate for us.

      We're moving our lighting out of Maya completely and plan to utilize USD in Solaris so no need for a Bifrost example. But thank you for the offer.

      USD dev work is still being done but we needed an interim solution which is why we were exploring leveraging abc layering via Vray proxies in Maya.

      Given the limitation we'll continue to push our non USD workflow with Vray for Houdini as the alternative. This way we can leverage abc layering natively and still use displacement and subdivision via shaders.
      It gives us the solution we need and want prior to USD and Solaris.


      Thank You Again.

      David Eschrich
      Global Head of 3d Zoic Studios

      Comment


      • #4
        Hi David,
        Thank you for your feedback. The displacement-proxy workflow is something that we aim to improve in future V-Ray versions.
        V-Ray for Maya dev team lead

        Comment

        Working...
        X