Solved create a material with a set texture?

I had a doubt, I wanted to place an established texture on the material created, but I don't know how, since the textures part is not a simple link type data in itself, but if I link directly where the link of the image is born is a bitmap but I don't know how it relates to the material.

import c4d

def main():
    mat = c4d.BaseList2D(c4d.Mmaterial)
    doc.StartUndo()
    doc.AddUndo(c4d.UNDOTYPE_NEW, mat)
    doc.InsertMaterial(mat)
    mat[c4d.MATERIAL_USE_REFLECTION] = False
    #mat[c4d.MATERIAL_COLOR_SHADER] ?
    #Bitmap[c4d.BITMAPSHADER_INTERPOLATION]?
    #Bitmap[c4d.BITMAPSHADER_FILENAME]?
    doc.EndUndo()
    c4d.EventAdd()

# Execute main()
if __name__=='__main__':
    main()

Hi,

The code below will show you how to do that. You must instantiate and insert a Xbitmap shader in your material. In that shader, you can define the texture path.

import c4d

def main():
    texturePath = "C:\\texture.jpg"
    
    # Creates the new material
    mat = c4d.BaseList2D(c4d.Mmaterial)
    # Start the undo stack
    doc.StartUndo()
    doc.AddUndo(c4d.UNDOTYPE_NEW, mat)
    # Insezrt the material into the document
    doc.InsertMaterial(mat)
    mat[c4d.MATERIAL_USE_REFLECTION] = False
    
    # Create a new bitmap Shader.
    bitmapShader = c4d.BaseShader(c4d.Xbitmap)
    # Define the filename for the bitmap shader
    bitmapShader[c4d.BITMAPSHADER_FILENAME] = texturePath
    
    # Set the material color paratemer.
    mat[c4d.MATERIAL_COLOR_SHADER] = bitmapShader
    
    # Insert the shader in the material's shader list
    mat.InsertShader(bitmapShader)

    # End the undo stack
    doc.EndUndo()
    
    # Pushes an update event to Cinema 4D
    c4d.EventAdd()

# Execute main()
if __name__=='__main__':
    main()

Cheers,
Manuel

MAXON SDK Specialist

MAXON Registered Developer

Hi,

The code below will show you how to do that. You must instantiate and insert a Xbitmap shader in your material. In that shader, you can define the texture path.

import c4d

def main():
    texturePath = "C:\\texture.jpg"
    
    # Creates the new material
    mat = c4d.BaseList2D(c4d.Mmaterial)
    # Start the undo stack
    doc.StartUndo()
    doc.AddUndo(c4d.UNDOTYPE_NEW, mat)
    # Insezrt the material into the document
    doc.InsertMaterial(mat)
    mat[c4d.MATERIAL_USE_REFLECTION] = False
    
    # Create a new bitmap Shader.
    bitmapShader = c4d.BaseShader(c4d.Xbitmap)
    # Define the filename for the bitmap shader
    bitmapShader[c4d.BITMAPSHADER_FILENAME] = texturePath
    
    # Set the material color paratemer.
    mat[c4d.MATERIAL_COLOR_SHADER] = bitmapShader
    
    # Insert the shader in the material's shader list
    mat.InsertShader(bitmapShader)

    # End the undo stack
    doc.EndUndo()
    
    # Pushes an update event to Cinema 4D
    c4d.EventAdd()

# Execute main()
if __name__=='__main__':
    main()

Cheers,
Manuel

MAXON SDK Specialist

MAXON Registered Developer

Hi.
Oh I understand, thanks for your answer, it has helped me a lot.