-
Notifications
You must be signed in to change notification settings - Fork 358
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Standard Surface to glTF PBR Translation Graph #1064
Standard Surface to glTF PBR Translation Graph #1064
Conversation
This proposal looks promising, thanks @roblesch and @ashwinbhat. My sense is that we'd want this translation pathway to reach the same level of visual parity as the existing graph from Standard Surface to UsdPreviewSurface before moving forward. Running a few local tests with materials such as standard_surface_plastic.mtlx and standard_surface_copper.mtlx, it doesn't look like we're quite hitting that level of parity yet. As one example, there isn't yet any handling for coat attenuation in the new translation graph, so the copper material loses all of its metal coloration when translated to gltf_pbr. Additionally, there seems to be an issue with the handling of dielectric specular that shows up as a loss of highlights when translating the plastic material to gltf_pbr. |
Hi @jstone-lucasfilm, thank you for the feedback and for your suggestions on further improvements! Here's the current results with the most recent push - Standard surface on the left, glTF pbr on the right. |
This looks excellent, thanks @roblesch! One additional change that I would recommend is to add default values for each input in the new A good example to test this with is |
I've added default input values. Thank you for the continued input @jstone-lucasfilm! |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great to me, and thanks for this contribution, @roblesch!
…tion#1064) This PR introduces a simple nodegraph for mapping standard_surface.mtlx material documents to gltf_pbr.mtlx material documents. It was implemented as part of my Summer '22 internship with Autodesk as part of a larger Standard Surface => glTF export workflow.
This PR introduces a simple nodegraph for mapping standard_surface.mtlx material documents to gltf_pbr.mtlx material documents. It was implemented as part of my Summer '22 internship with Autodesk as part of a larger Standard Surface => glTF export workflow.
The parameters supported by this translation are simply passed through, or multiplied in the case of weighted colors.
Translation
We map properties as follows - items in the glTF PBR column are outputs, items in the Standard Surface column are inputs.
Further work
Transmission
Our mapping of transmission (Standard Surface specular transmission) to transmission (glTF KHR_materials_transmission) covers only the transmission weight. Better approximation of Standard Surface's transmission behavior should be possible via the KHR_materials_volume properties which are supported by the gltf_pbr.mtlx node definition.
Coat
We map Standard Surface's coating to KHR_materials_clearcoat. KHR clearcoat does not support coat color; this behavior can be approximated by mixing incoming base color and coat color, but was not sufficiently explored in the course of this work and is omitted on this PR.
Thin film
Standard Surface's specular transmission supports a thin film behavior that may be mappable to KHR_materials_iridescence, but this extension is not supported by the current implementation of the gltf_pbr node definition.
Other behaviors
Any behaviors not listed on this PR were not explored and are not supported by this implementation of the translation nodegraph.
Other work
Other work implemented for this workflow includes pipelines for translating test materials to native *.gltf and rendering test scenes, there is some discussion on ASWF slack in materialx-gltf about where it may live.