Buongiorno a tutti,
come da titolo vorrei sapere se fosse possibile creare uno script che possa assegnare un unico ID a dei materiali selezionati. Questo mi ritornerebbe molto utile perché in progetti complessi dove voglio utilizzare il multipass mi risulta difficile controllare/impostare gli ID di tutti i materiali, soprattutto perché se si selezionano materiali di diversa natura (displacement material, ovverride material, advanced material, ecc...) la casella dell'ID non risulta più visibile e quindi bisogna ricercare e selezionare solo i materiali advanced.
import c4d
from c4d import gui
def main():
#mats = doc.GetMaterials() #tutti i materiali
mats = doc.GetActiveMaterials() # solo materiali selezionati
if not mats:
gui.MessageDialog('Select some materials')
return
k = 1
doc.StartUndo()
for mat in mats:
name = mat.GetName()+" ID"+str(k)
print name
doc.AddUndo(c4d.UNDOTYPE_CHANGE,mat)
mat[c4d.VRAYMATERIAL_ID] = k
mat.SetName(name)
k = k+1
doc.EndUndo()
c4d.EventAdd()
if __name__=='__main__':
main()
FOLLOW US