Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware 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
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Textures renamer script

    PYTHON Development
    0
    4
    1.3k
    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
      Helper
      last edited by

      On 02/08/2018 at 01:34, xxxxxxxx wrote:

      Hi guys
      I am completely ignorant of scripts
      I wondered if it was possible to write a script that would change the name of all the textures of a project, and relink them.
      eg:
      wood_diffuse.jpg becomes texture_001.jpg
      wood_reflect.jpg becomes texture_002.jpg
      carpet.jpg becomes texture_003.jpg
      curtain_fabric.png becomes texture_004.png
      .....
      .....
      all this with vray materials, where textures are placed in the VrayAdvBitmap shader

      thanks a lot to everyone

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

        On 02/08/2018 at 15:12, xxxxxxxx wrote:

        up

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

          On 03/08/2018 at 07:21, xxxxxxxx wrote:

          Hi Zac Davide, first of all, welcome in the PluginCafe forum.

          It's actually not necessary to bump a thread if a day has not passed.

          Regarding your question, take in consideration we can only support c4d related stuff, and give you advice about it.
          But as you may know or not, a vrayMaterial, is nothing more than a MaterialData and a VrayAdvBitmap, is a ShaderData.

          All ShaderData are part of a MaterialData. So with the following script, you will iterate over all the shader within the selected material.
          And change the texture path

          import c4d
            
          # Change the texture path to another one for a VrayAdvBitmap
          def changeTexture(shader) :
              before = "wood_diffuse"
              after = "texture_001"
            
              oldPath = shader[c4d.VRAY_BITMAPCCGAMMA_BITMAP_FILENAME] # Read the current value, again I simply drag and drop the parameter in the consoel to knwo the ID
              newPath = oldPath.replace(before, after) # Replace before value by new value
            
              doc = shader.GetDocument()
              doc.AddUndo(c4d.UNDOTYPE_CHANGE, shader)
              shader[c4d.VRAY_BITMAPCCGAMMA_BITMAP_FILENAME] = newPath # Assign the new value
            
              shader.Message(c4d.MSG_UPDATE)
            
          # Iterate a hierarchy and check if the passed is a VrayAdvBitmap shader
          def recurse_hierarchy(shader) :
              while shader:
                  # Check if it's a VrayAdvBitmap, I know the ID by drag and drop a VrayAdvancedShader into the console
                  if shader.CheckType(1037364) :
                      changeTexture(shader)
                  recurse_hierarchy(shader.GetDown())
                  shader = shader.GetNext()
            
          # Main function
          def main() :
              mats = doc.GetActiveMaterials()
            
              doc.StartUndo()
              # Iterate over selected material
              for mat in mats:
                  recurse_hierarchy(mat.GetFirstShader())
              doc.Endndo()
            
          # Execute main()
          if __name__=='__main__':
              main()
          

          If you have any question please let me know! 🙂
          Cheers,
          Maxime

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

            On 03/08/2018 at 10:12, xxxxxxxx wrote:

            thank you so much MaximeA
            I'll try it immediately, and sorry again for my "precocis bump" 🙂

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