Skocz do zawartości

Featured Replies

Napisano

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ć;/

  • Odpowiedzi 11
  • Wyświetleń 2,4k
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

batch_exporter i twoj skrypt dzialaja u mnie bez zarzutow (max 2009). Czy plik na ktorym zacina sie skrypt da sie wyeksportowac "recznie"?

Zacinanie sie skryptu oznacza ze zawiesza sie czy konczy dzialanie?

Napisano
  • Autor

bez zarzutów...

 

u mnie zawsze na drugim pliku się zawiesza. zmieniłeś wpierw manualnie na jednym pliku do wyeksportowania opcje map exporter o których pisałem?

Napisano
  • Autor

albo loading ślepe albo standardowy dialog crasha maxowego

 

wywala się przy

 

LoadMAXFile f ; po exporcie pierwszego pliku w którym ustawie map export

Napisano

loading ślepe?

Ktorego maxa uzywasz? Recznie scena sie exportuje? Probowales wykonac exportfile dla pojedynczego pliku? Tego na ktorym zacina sie skrypt?

Napisano

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

Napisano

To enigmatyczny komunikat :) Zdaza sie ze w takich przypadkach pomaga restart maxa. Duze objectosciowo sa te sceny ? 200Mb ? 500 ?

Edytowane przez CgBartosz

Napisano

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() )
)

Napisano

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

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

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności