PDA

Voir la version complète : [RESOLU] Exportation en masse .fbx (ou script ?)



Neps
05/10/2015, 19h26
Bonjour,

En vu de créer un jeu vidéo, j'ai réalisé un environnement sous C4D et enregistré les objets (centrés) sur différents fichiers. Une centaine au final.

Il est maintenant temps de les exporter en .fbx en vu de les re-importer sous Unreal Engine.

Existe t-il un moyen d'exporter une pile de fichier en .fbx ? ou peut-être en réalisant un script ?

Merci de votre aide,
Cordialement,
Neps

oli_d
05/10/2015, 20h24
Salut,

ce code devrait fonctionner (j'ai pas trouvé tout de suite comment enregistrer en FBX, j'ai trouvé la réponse ici (http://forums.cgsociety.org/archive/index.php?t-1018629.html)):



import c4d,os
from glob import glob

def main():
path = c4d.storage.LoadDialog(title="Dossier contenant les fichiers c4d :", flags=c4d.FILESELECT_DIRECTORY)
if not path : return
dest = os.path.join(path,'FBX')
if not os.path.isdir(dest):
os.mkdir(dest)

for fn in glob(path+'/*.c4d'):
name = os.path.basename(fn)[:-3]+'fbx'
c4d.documents.LoadFile(fn)
docu = c4d.documents.GetFirstDocument()
c4d.documents.SaveDocument(docu,os.path.join(dest, name),c4d.SAVEDOCUMENTFLAGS_DONTADDTORECENTLIST,10 26370)#Exports using the FBX exporter
c4d.documents.CloseAllDocuments()

if __name__=='__main__':
main()



Il faut indiquer le dossier où se trouve les fichiers c4d, le script crée ensuite un dossier FBX au même endroit dans le dossier* avec les fichiers fbx. J'ai testé seulement avec un cube ...

*[EDIT]

[EDIT2] : voilà corrigé, mais attention cela ferme les documents ouverts

Neps
05/10/2015, 21h28
Bonsoir,

J'ai testé avec plusieurs fichiers, 10, 5 puis 1.

Un dossier est bien créé ainsi qu'un (ou plusieurs) fichier(s) en .fbx, cependant il(..) ne fait que 20octets, est vide, et C4D tourne sans fin pour l'exportation..

Merci beaucoup de votre aide.

oli_d
05/10/2015, 21h40
J'avais posté dans un premier temps un code qui ne fonctionnait pas, j'ai édité mon message après et remis un code qui fonctionnait mieux. Essaie de nouveau avec le code édité

Neps
05/10/2015, 21h57
Merci beaucoup pour votre aide, tout fonctionne !

Bonne soirée :)
Neps

gr4ph0s
06/10/2015, 02h06
Pas mal du tout ce petit script ! Je voudrais savoir quel est la signification de name = os.path.basename(fn)[:-3]+'fbx'

Surtout le [:-3] .


Après il y a un moyen par exemple si on importe un OBJ de ne pas avoir l'interface pour nous demander les options d'importations?

oli_d
06/10/2015, 04h19
import os

#Si j'ai un chemin complet pour un fichier :
fn = '/Users/machin/Documents/MANDATS/Master_archi/C4D/fichiers_polygones_MNT/secteur1.c4d'

#le nom de fichier court s'obtient:
fn_court = os.path.basename(fn)

print fn_court #donne -> secteur1.c4d

print fn_court[:-3] #donne le nom sans les 3 dernières lettres : secteur1.

#auquel j'ai rajouté l'extension 'fbx'
#ce qui donne à la suite :
print os.path.basename(fn)[:-3]+'fbx' #-> secteur1.fbx

#on aurait également pu utiliser :
nom,ext = os.path.splitext(fn_court)

print nom #-> secteur1
print ext #-> .c4d

#à la suite :
print os.path.splitext(os.path.basename(fn))[0]+'.fbx' #-> secteur1.fbx