Bon allez c'est le retour des vacances !!! Alors préparez vous à voir du python tout l'été ![Laugh](images/smilies/new_smilies/laugh.gif)
Un script qui permet de changer tout les Bitmap C4D en Bitmap Octane (ce qui permet qu'ils soient chargé en GPU)
Code:
import c4d
#-- Graphos
# visit graphos.fr
ID_C4D_BITMAP = 5833
ID_OCTANE_BITMAP = 1029508
def getLinkedData(shader):
buffer = []
bc = shader.GetDataInstance()
for i in xrange(0,len(bc)):
index = bc.GetIndexId(i)
linked = bc.GetLink(index,doc,c4d.Xbase)
if linked:
buffer.append([index,shader,linked])
return buffer
def changeTexture(id,currentShader,enfantShader):
if enfantShader.CheckType(ID_C4D_BITMAP):
currentPath = enfantShader[c4d.BITMAPSHADER_FILENAME]
enfantShader.Remove()
imageTexture = c4d.BaseShader(ID_OCTANE_BITMAP)
imageTexture[c4d.IMAGETEXTURE_FILE] = currentPath
currentShader[id] = imageTexture
currentShader.InsertShader(imageTexture)
currentShader.Message(c4d.MSG_UPDATE)
c4d.EventAdd()
def searchInShader(shader):
shaderList = getLinkedData(shader)
for i in shaderList:
changeTexture(i[0],i[1],i[2])
searchInShader(i[2])
def main():
matList = doc.GetActiveMaterials()
for mat in matList:
searchInShader(mat)
if __name__=='__main__':
main()
Bien sur ceci est récursif donc si le bitmap C4d se retrouve au fin fond de 50 color correction ou tout autre shaders octane ou bien c4d il sera quand même converti ![Smile](images/smilies/new_smilies/001_smile.gif)
Seul les layers C4D ne sont pas supporté. C'est à dire que si un bitmap c4d est en enfant d'un layer alors ce dernier ne sera pas convertit.
Il n'y a pour le moment aucun moyen de combler ce manque (peux être avec la R18 mais j'en doute ^^)
Pour l'utiliser rien de plus simple.
Allez dans le Menu => Script => Script Manager ou bien Shift + F11
Assurez vous que Python est en bleu dans la fenêtre.
File => New
Supprimez tout le code déjà pressent "import c4d...."
Collez le code du script qui est au dessus dans ce message.
Sélectionnez les materiaux dont vous voulez modifier les bitmaps
Appuyer sur Execute
Enjoy !
Si vous utilisez le node editor d'octane soyez bien en mode auto-update ou bien redémarrez le
ps : je ne suis pas responsable du non rangement des nouveau node créer (pas tapé xD))