Texture change python

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/10/2011 at 08:54, xxxxxxxx wrote:

Hi there,

Is there a way to change the texture in the color channel of a material using python.
Currently i'm writing a script where there is a variable on my clipboard wich is used to build up a document.
If my question isn't clear, let me know.

Much thanx in advance.
Kind regards RNE

Script so far:

from c4d import gui, bitmaps, documents
import c4d
c4d.StopAllThreads() 
c4d.StatusSetSpin()
c4d.StatusSetText("Starting script")
datanaam = c4d.GetStringFromClipboard()
c4d.CallCommand(1024314) # Clear Python Log
c4d.CallCommand(1022604) # Open Python Log

klaar maken om te renderen

doc = documents.GetActiveDocument()
rd = doc.GetActiveRenderData()

instellen van de rendersettings op basis van de texture

c4d.StatusSetText("Adjusting render settings")
currpath=''+rd.GetDataInstance()[c4d.RDATA_MULTIPASS_FILENAME]
currpath=''+doc[c4d.DOCUMENT_PATH]+'/'
rd[c4d.RDATA_MULTIPASS_SAVEIMAGE] = 1 # 1=aan 0=uit
rd[c4d.RDATA_MULTIPASS_FILENAME] = r''+currpath+"Renders/"+datanaam+'.psd'
c4d.EventAdd()

#changing the texure

klaar maken om te renderen

doc = documents.GetActiveDocument()
#save the current document as a c4d file
c4d.documents.SaveDocument(doc, currpath+"CinemaFiles/"+datanaam+".c4d", c4d.SAVEDOCUMENTFLAGS_DIALOGSALLOWED, c4d.FORMAT_C4DEXPORT)

doc = c4d.documents.GetActiveDocument()
lijst=c4d.documents.GetBatchRender()
lijst.AddFile(currpath+"CinemaFiles/"+datanaam+".c4d",0)
c4d.documents.BatchRender.Open(lijst)
c4d.StatusSetText("Added to renderlist")
c4d.documents.CloseAllDocuments()
c4d.CallCommand(465003513); # start render queue

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 26/10/2011 at 18:07, xxxxxxxx wrote:

The thought process is as follows:
-Get the material you want to change by whatever means you prefer(if Active, It's name, etc.).
-Create a new Xbitmap shader to hold your texture image.
-Tell that Xbitmap shader where to find the texture image using file paths.
-Insert that Xbitmap shader into the color channel of the material.

This example will insert the image named "myimage.jpg" from your desktop into the color channel of the currently active material:

import c4d  
import os  
  
def main() :  
  
  fn = c4d.storage.GeGetC4DPath(c4d.C4D_PATH_DESKTOP) #Gets the desktop path  
  pathToTexture = os.path.join(fn,'myimage.jpg')      #Gets the specific texture image on your desktop  
  
  mat = doc.GetActiveMaterial()                       #Assign the active material a variable  
  shdr_texture = c4d.BaseList2D(c4d.Xbitmap)          #Create a bitmap shader in memory  
  shdr_texture[c4d.BITMAPSHADER_FILENAME] = pathToTexture #Assign the path to the texture image to your shader   
  mat[c4d.MATERIAL_COLOR_SHADER]= shdr_texture        #Assign the shader to the color channel in memory only  
  mat.InsertShader(shdr_texture)                      #Insert the shader into the color channel  
  mat.Update(True, True)                              #Re-calculate the thumbnails of the material  
  
if __name__=='__main__':  
  main()

-ScottA

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 27/10/2011 at 01:50, xxxxxxxx wrote:

Big thanx ScottA

Now I can't find any documentation on how to select a material by its name.
Can you please help me out. mat = doc.GetMaterial doesn't work ?

Much thanx in advance
Kind regards RNE

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 27/10/2011 at 03:13, xxxxxxxx wrote:

Hi,

To get a material by name, there is doc.SearchMaterial(name).

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 28/10/2011 at 04:22, xxxxxxxx wrote:

Thanx a lot, this works great.