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
Dernière modification par Neps ; 05/10/2015 à 22h37.
Salut,
ce code devrait fonctionner (j'ai pas trouvé tout de suite comment enregistrer en FBX, j'ai trouvé la réponse ici):
Il faut indiquer le dossier où se trouve les fichiers c4d, le script crée ensuite un dossier FBXCode PHP:
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,1026370)#Exports using the FBX exporter
c4d.documents.CloseAllDocuments()
if __name__=='__main__':
main()
au même endroitdans le dossier* avec les fichiers fbx. J'ai testé seulement avec un cube ...
*[EDIT]
[EDIT2] : voilà corrigé, mais attention cela ferme les documents ouverts
Dernière modification par oli_d ; 05/10/2015 à 20h54.
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.
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é
Merci beaucoup pour votre aide, tout fonctionne !
Bonne soirée
Neps
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?
SDK Specialist
MAXON Computer GmbH
Code PHP:
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