Script per assegnare un unico ID a più materiali
Moderatori: Arkimed, natas, visualtricks, cappellaiomatto
-
- Advertising
Script per assegnare un unico ID a più materiali
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.
Grazie e buona giornata!
- masterzone
- Site Admin
- Messaggi: 10362
- Iscritto il: ven set 17, 2004 5:34 pm
- Località: Verona
Re: Script per assegnare un unico ID a più materiali
Re: Script per assegnare un unico ID a più materiali
si effettivamente ho provato a cercarlo in internet sotto forma di script o anche plugin ma ad oggi niente...
- visualtricks
- Moderatore
- Messaggi: 3562
- Iscritto il: gio set 23, 2004 5:13 pm
- Località: Pistoia
Re: Script per assegnare un unico ID a più materiali
Codice: Seleziona tutto
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()
- Allegati
-
- QuickMatID.py.zip
- (510 Byte) Scaricato 82 volte
Re: Script per assegnare un unico ID a più materiali
Ho provato a modificare leggermente lo script per adattarlo ma non so se sono riuscito a compilarlo in maniera decente... che dici?
import c4d
from c4d import gui
#Welcome to the world of Python
def main():
mats = doc.GetMaterials() #tutti i materiali
if not mats:
gui.MessageDialog('Select some materials')
return
doc.StartUndo()
for mat in mats:
doc.AddUndo(c4d.UNDOTYPE_CHANGE,mat)
mat[c4d.VRAYMATERIAL_ID] = 0
mat[c4d.VRAYSTDMATERIAL_ID] = 0
mat[c4d.VRAYMDLMATERIALS_ID] = 0
mat[c4d.VRAYALHAIRMATERIAL_ID] = 0
mat[c4d.VRAYALSURFACEMATERIAL_ID] = 0
mat[c4d.VRAYSTOCHASTICFLAKESMATERIAL_ID] = 0
mat[c4d.VRAYSKINMATERIAL_ID] = 0
mat[c4d.VRAYHAIRMATERIAL_ID] = 0
mat[c4d.VRAYCARPAINTMATERIAL_ID] = 0
mat[c4d.VRAYFASTSSS2MATERIAL_ID] = 0
mat[c4d.VRAYMTLOSL_ID] = 0
mat[c4d.VRAYVRMATMATERIAL_ID] = 0
doc.EndUndo()
c4d.EventAdd()
if __name__=='__main__':
main()
-
- Advertising
FOLLOW US