Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Recent
    • Tags
    • Users
    • Login

    Strange behavior Layer Shader

    Scheduled Pinned Locked Moved PYTHON Development
    6 Posts 0 Posters 431 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H Offline
      Helper
      last edited by

      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()
      
      1 Reply Last reply Reply Quote 0
      • H Offline
        Helper
        last edited by

        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()
        
        1 Reply Last reply Reply Quote 0
        • H Offline
          Helper
          last edited by

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

          Any suggestions: program error, c4d error?

          1 Reply Last reply Reply Quote 0
          • H Offline
            Helper
            last edited by

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

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

            1 Reply Last reply Reply Quote 0
            • H Offline
              Helper
              last edited by

              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

              1 Reply Last reply Reply Quote 0
              • H Offline
                Helper
                last edited by

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

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

                1 Reply Last reply Reply Quote 0
                • First post
                  Last post