Textures renamer script

  • 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.
    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

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


  • 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
    # 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) :
            shader = shader.GetNext()
    # Main function
    def main() :
        mats = doc.GetActiveMaterials()
        # Iterate over selected material
        for mat in mats:
    # Execute main()
    if __name__=='__main__':

    If you have any question please let me know! :)

  • 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" :)

Log in to reply