Thank you for reaching out to us and solving your own question :). To give a bit of background information, parameters can be composed in Cinema 4D. The simplest example is a parameter of type
c4d.Vector. You can access the relative position of an object like this:
Vector(0, 0, 0)
But as users might want to access and animate the components of that vector individually, the vector is dealt with and represented as a parameter actually as a set of sub-channels, one for each of its components.
This is why
DescId are composed out of up to three
DescLevel. To access the component of a vector you need two
And while you might not be able to deal with the enclosing parameter, you might be able to deal with its subchannels. The input and output ports of an
RSColorAbs Redshift node are of type
RsColorAlpha, a parameter type that is composed of a
Vector and a
float, so it is effectively a four-component vector. This parameter type is not exposed to the Python API, so the API has no clue what to do with it. But it can deal with the subchannels.
# Python has no clue about that parameter type at REDSHIFT_SHADER_RSMATHABSCOLOR_INPUT.
Traceback (most recent call last):
File "console", line 1, in <module>
AttributeError: Parameter value not accessible (object unknown in Python)
# But we can access the subchannels which are standard types. This is a two DescLevel access
Vector(0, 0, 0)
# We can even reach into the subchannels of a subchannel, here for example to access the red
# component of the RGBA vector tuple that is represented by the type RsColorAlpha.
>>> RSColorAbs[c4d.REDSHIFT_SHADER_RSMATHABSCOLOR_INPUT,c4d.REDSHIFT_COLORALPHA_COLOR, c4d.VECTOR_X]