Strange behavior Layer Shader

On 09/09/2013 at 01:48, xxxxxxxx wrote:

Because you cannot add images to a layer in for example the luminance channel, I defined a default material with a layer with 3 images in the luminance channel.
For test purposes I print out the names and the file names of the images.
However, when I change the sequence (the order) of the images in the layer, when printing the sequence (the order) does not seemed to be changed.
Am I missing something here?

import c4d
#Welcome to the world of Python
  
def main() :
  
    mat1 = doc.SearchMaterial("MatPython")
    shd = mat1[c4d.MATERIAL_LUMINANCE_SHADER]
  
    lshd1 = shd.GetDown()
    print "lshd1 naam filenaam:",lshd1[c4d.ID_BASELIST_NAME], lshd1[c4d.BITMAPSHADER_FILENAME]
    lshd2 = lshd1.GetNext()
    print "lshd2 naam filenaam:",lshd2[c4d.ID_BASELIST_NAME], lshd2[c4d.BITMAPSHADER_FILENAME]
    lshd3 = lshd2.GetNext()
    print "lshd3 naam filenaam:",lshd3[c4d.ID_BASELIST_NAME], lshd3[c4d.BITMAPSHADER_FILENAME]
  
  
if __name__=='__main__':
    main()

On 09/09/2013 at 01:54, xxxxxxxx wrote:

Update:
I change the sequence (the order) manually, so I see the changed sequence (order) in the material, but not when I run the script.  Then the sequence (order)does not seem to be changed?
Here a more simpler script, printing all image names + files under the layer in the luminance channel.

import c4d
#Welcome to the world of Python
  
  
def main() :
    mat1 = doc.SearchMaterial("MatPython")
    shd = mat1[c4d.MATERIAL_LUMINANCE_SHADER]
  
    lshd = shd.GetDown()
    while lshd is not None:
        print "lshd naam filenaam:",lshd[c4d.ID_BASELIST_NAME], lshd[c4d.BITMAPSHADER_FILENAME]
        lshd = lshd.GetNext()
  
if __name__=='__main__':
    main()

On 10/09/2013 at 04:32, xxxxxxxx wrote:

Any suggestions: program error, c4d error?

On 11/09/2013 at 06:15, xxxxxxxx wrote:

Anyone?
It is getting very frustrating?
What I see is not what I get!?

On 11/09/2013 at 09:37, xxxxxxxx wrote:

Hi Pim,

sorry I did not have the time to look at your topic until now. As I mentioned in your other posting, after I corrected myself,

Originally posted by xxxxxxxx

That you can not add new shaders or re-order them is also not possible with C++ (or at least not ovbious from the documentation).

The order in the shader hierarchy does not represent the order in the layer shader. I can not tell you why this is the case, but it's been this way forever. Not even the C++ API (seems to) offer(s) the ability to reorder the shaders. I can ask the developers about the C++ API if you want, maybe there is something undocumented. But since you are using Python, you are limited in that anyway.

Best regards,
-Niklas

On 11/09/2013 at 11:05, xxxxxxxx wrote:

Ok, thanks.
The keyword is "not possible to re-order".