PDA

Voir la version complète : Changer automatiquement l'extension .png dans les chemins de textures



NiKo
02/03/2016, 19h23
Hello...

Qui peut me faire gagner du temps sur un truc à la noix: j'ai 80 persos 3D avec des textures png très lourdes. Je vais donc lancer un script dans toshop pour les convertir toutes en jgp.
Par contre comment je peux faire dans c4d pour éviter d'aller à la mano changer le .png des chemins de texture en .jpg ? Mania fois 2 en plus pour la map de couleur et de bump!

Merci d'avance au généreux souscripteur de solution intelligente... :-)

valkaari
02/03/2016, 20h25
t'as pas le texture manager de la R... heu .... je sais plus combien T.T

oli_d
02/03/2016, 21h26
import c4d, os

EXT_SRCE = '.png'
EXT_MODIF = '.jpg'


def main():
doc.StartUndo()
mat = doc.GetFirstMaterial()

while mat :
change = False
shd = mat.GetFirstShader()
while shd:
if shd.CheckType(c4d.Xbitmap):
fn = shd[c4d.BITMAPSHADER_FILENAME]
if fn:
f,ext = os.path.splitext(fn)
if ext == EXT_SRCE:
doc.AddUndo(c4d.UNDOTYPE_CHANGE,mat)
shd[c4d.BITMAPSHADER_FILENAME] = f+EXT_MODIF
change = True

shd = shd.GetNext()
if change :
mat.Message(c4d.MSG_UPDATE)
mat.Update(True, True)


mat = mat.GetNext()
doc.EndUndo()


if __name__=='__main__':
main()


Testes ce script fait à la va vite. Tu changes juste en cas de besoin dans le code la valeur EXT_SRCE pour l'extension source et EXT_MODIF pour l'extension qui remplacera. J'ai même mis un Undo. Attention ça agit sur absolument tous les shaders bitmap de tous les matériaux du document, donc ça peut faire des dégats !!

NiKo
02/03/2016, 21h29
Val: Gnnn?

Oli: oki... Cool. La machine est en calcul compliqué, dès qu'elle a fini je teste... Merci ;-)

lenogre
03/03/2016, 08h30
Je ne sais pas si c'est une bonne idée de remplacer des png par des jpg :
1/ Le png te permet d'avoir une couche alpha
2/ C4D décompresse les jpg pour les utiliser et ça prend du temps (c'est que Fluffy affirme régulièrement et je veux bien le croire). Je pense qu'utiliser VRay n'y change rien.

valkaari
03/03/2016, 08h41
il y a un gestionnaire de texture dans cinema4D sorti il y a quelques version. Il permet de remplacer des textures mais aussi de changer une partie de nom ou d'extension. De retrouver les chemins.



on le trouve dans le menu texture -> gestionnaire de texture de la palette de matériaux.

(et après vérification il est arrivé avec la R15)

oli_d
03/03/2016, 09h23
Je la connaissait pas celle là, merci Val !

Bon ben mon script peut rejoindre le fond de la corbeille ...

valkaari
03/03/2016, 10h18
Pas pour ceux qui serait avant la r15. (et qui ont python, j'me souviens plus depuis quand il est là celui là)('tain cte mémoire xD)

Niko a encore son profil en R12 mais je sais plus s'il est à jour ou pas dans ses versions.

NiKo
04/03/2016, 07h14
SUper! Ben tu vois je connaissais pas cette manip!

Merci Val!
Merci aussi Oli_d!

Conversion effectuée en deux secondes! Cool! :-)