Hi John,
We have come across this issue when exporting usd from maya-arnold and usnig them in gaffer for some of our scenes. The arnold-usd exporter seems ot be exporting string parameter types as the TfToken type whereas gaffer expects them as String type. This could possibly be due to some updates pending on the arnold-usd side. I have attached a repro that demonstrates this using a simple cellNoise shader.
The usd file was exported from maya-arnold and the result in gaffer does not match the maya-arnold output. If I re-create the shader in gaffer (the ShaderAssignment node is disabled in the repro), then the gaffer-arnold output matches the maya-arnold output. On exporting the gaffer scene and inspecting the usda file, I realized that the parameter type in the usd exported by gaffer was string (which is correct) but the one exported from arnold-usd was token.
def Shader "aiCellNoise1"
{
uniform token info:id = "arnold:cell_noise"
float inputs:density = 1
int inputs:octaves = 5
token inputs:pattern = "worley1"
vector3f inputs:scale = (0.001, 0.001, 0.001)
color3f outputs:out
}
If I use a ShaderTweak or ShaderQuery node to try overriding this parameter's value, it does not add it to the tweak node due to the type not being a valid gaffer type (I guess).
I have cross posted this on the usd list too for some way to change the type in the usd via the python api but iIs there a way to handle this on the gaffer side by auto-interpreting the token type as string so that such usd scenes work out of the box in gaffer?
Thanks,
Sachin