Hey @Mr. T!
Yes, it is possible. There are several ways of doing so.
The first one is to use operators to assign materials to shapes inside a procedural. This workflow can be applied to any Arnold procedural.
You can use the SelectOperator menu on the USD procedural https://docs.arnoldrenderer.com/display/A5AF3DSUG/USD#USD-SelectOperator and a Set Parameter operator https://docs.arnoldrenderer.com/display/A5AF3DSUG/Set+Parameter to override the shader.
The second one is to use USD's composition features to change the exported scene without changing the file itself. You can create an "usda" file like this and load it in the procedural instead of the original one.
#usda 1.0
(
subLayers = [
@original.usd@
]
)
over "MyShape" {
rel material:binding = </materials/material>
}
def Scope "materials" {
def Material "material"
{
token outputs:arnold:surface.connect = </materials/material/standard_surface.outputs:surface>
def Shader "standard_surface"
{
uniform token info:id = "arnold:standard_surface"
token outputs:surface
}
}
}