Skocz do zawartości

Exportowanie do OBJ, zawieszanie się skryptu


Orangegraphics

Rekomendowane odpowiedzi

Witam, męczę się z tym problemem już pół dnia.

 

muszę wyeksportować ponad 200 plików do formatu OBJ. każdy model ma tekstury swoje więc potrzebuje opcji map export>convert bitmaps i extended map-params.

 

a właśnie przy nich nie działa mi skrypt batch exporter

 

http://ypuechweb.free.fr/batch_exporter.html

 

z którego zawsze korzystam w takich sytuacjach. działą zawsze, dla każdego innego formatu, dla OBJ też, tylko jak zaznacze opcje w map export to się zacina po pierwszym pliku.

 

więc pomyślałem że spróbuje sam napisać skrypt. mam coś takiego:

 

Dir = #("C:\\Source\\")



MaxFiles = #()

For d in Dir do Join MaxFiles (getFiles (d + "*.max"))



for f in MaxFiles do 

(

LoadMAXFile f ;

-- SaveMaxFile f;

ExportFile ("C:\\destination\\" + getFilenameFile (MaxFileName) + ".obj") #noPrompt  ;

-- Cleanup file and viewports
--resetMaxFile f #noPrompt

)

 

działa dla innych rozszerzeń, tylko dla OBJ się zacina po 1 pliku.

 

resetmaxfile który jest zakomentowany nic nie pomaga.

 

jakieś sugestie? podpowiedzi? nie chce 200 plików ręcznie exportować;/

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 11
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

odpal ponizszy kod i napisz co przy bledzie jest napisane w messageboxie

fn BatchExport sourceFolders OutputFolder = (

   if (maxVersion())[1] > 12000 do (
       theINI = objexp.getIniName()

       setIniSetting theINI "General" "UseLogging" "0"
       setIniSetting theINI "Material" "ConvertBitmaps" "1"
       setIniSetting theINI "Material" "ExtendedParams" "1"
   )

   MaxFiles = #()
   For sourceFolder in sourceFolders do Join MaxFiles (getFiles (sourceFolder + "*.max"))
   for f in MaxFiles do  (
   LoadMAXFile f 
   if (maxVersion())[1] > 12000 then (
       ExportFile ( OutputFolder + getFilenameFile (MaxFileName) + ".obj") #noPrompt using:ObjExp  
   )else(
       ExportFile ( OutputFolder + getFilenameFile (MaxFileName) + ".obj") #noPrompt 
   )
   freescenebitmaps()
   gc()
   )
)
try(
   BatchExport #("C:\\Source\\") "C:\\destination\\"
)catch(
   messagebox (getCurrentException() )
)

Edytowane przez CgBartosz
Odnośnik do komentarza
Udostępnij na innych stronach

jeszcze mozna tak sprobowac:

 

fn BatchExport sourceFolders OutputFolder = (

   if (maxVersion())[1] > 12000 do (
       theINI = objexp.getIniName()

       setIniSetting theINI "General" "UseLogging" "0"
       setIniSetting theINI "Material" "ConvertBitmaps" "1"
       setIniSetting theINI "Material" "ExtendedParams" "1"
   )

   MaxFiles = #()
   For sourceFolder in sourceFolders do Join MaxFiles (getFiles (sourceFolder + "*.max"))
   for f in MaxFiles do  (
   LoadMAXFile f 
   tempFile = (OutputFolder+"tmp.max")
   saveNodes (geometry as array) tempFile quiet:true
   resetMaxfile #noprompt
   LoadMAXFile tempFile
   if (maxVersion())[1] > 12000 then (
       ExportFile ( OutputFolder + getFilenameFile (MaxFileName) + ".obj") #noPrompt using:ObjExp  
   )else(
       ExportFile ( OutputFolder + getFilenameFile (MaxFileName) + ".obj") #noPrompt 
   )
   freescenebitmaps()
   gc()
   )
)
try(
   BatchExport #("C:\\Source\\") "C:\\destination\\"
)catch(
   messagebox (getCurrentException() )
)

Odnośnik do komentarza
Udostępnij na innych stronach

Sprawdz to jesli nie pomogly inne metody.

Troche przekombinowane ale moze pomoze.

 

fn BatchExport sourceFolders OutputFolder = (

   if (maxVersion())[1] > 11000 do (
       theINI = objexp.getIniName()

       setIniSetting theINI "General" "UseLogging" "0"
       setIniSetting theINI "Material" "ConvertBitmaps" "1"
       setIniSetting theINI "Material" "ExtendedParams" "1"
   )

   MaxFiles = #()
   For sourceFolder in sourceFolders do Join MaxFiles (getFiles (sourceFolder + "*.max"))
   for f in MaxFiles do  (
   LoadMAXFile f 
   inputFileName = getfilenamefile  MaxFileName
   tempFile = (OutputFolder+"tmp.max")
   saveNodes (geometry as array) tempFile quiet:true
   resetMaxfile #noprompt
   LoadMAXFile tempFile

   outputSubfolder = OutputFolder + inputFileName + "/"
   try (makedir outputSubfolder ) catch (messagebox (getCurrentException()))

   command = ""
   command += "ExportFile "
   command += "\"" + (outputSubfolder + inputFileName + ".obj") + "\""
   command += " #noPrompt"

   if (maxVersion())[1] > 11000 do command += " using:ObjExp"

   execute command

   gc()
   )
)
try(
   BatchExport #("C:/Source/") "C:/destination/"
)catch(
   messagebox (getCurrentException() )
)

Edytowane przez CgBartosz
  • Like 1
Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności