Jump to content

Maxscript- relinkowanie ścieżek


kuzynsyna
 Share

Recommended Posts

Piszę skrypt w maxscripcie do relinkowania plików. Używam funkcji ATSOps.SelectFiles() do wybrania pliku i jego podmiany, tylko że tak funkcja strasznie długo działa jesli scena ma dużo plików. Jest jakiś inny sposób by relinkować? Ktoś już pisał coś podobnego i ma pomysł jak to przyspieszyć? Oto kawałek mojego kodu:

tempfiles = #()
ATSOps.Refresh()
ATSOps.GetFiles &tempfiles
ATSOps.ClearSelection()
for i = 2 to tempfiles.count do 
(
    file = tempfiles[i]
     ATSOps.SelectFiles &file
     ATSOps.RetargetSelection newfiles[i]
)

Link to comment
Share on other sites

Piszę skrypt w maxscripcie do relinkowania plików.

 

Co do powolnosci AssetTrackera, sproboj restart Maxa lub reinstalacje. Mi tez sie niemilosiernie slimaczyl jak pisalem skrypt a na innym komputerze smigal. Chyba dopiero reinstalacja pomogla (a moze to bylo wywalenie danych z "Users\mantragora\AppData\Local\Autodesk\3dsMax"?), ale nie jestem pewien bo to bylo 100 lat temu i juz nie pamietam. W kazdym badz razie po tym zabiegu zaczol smigac bez problemow.

 

Efekty widac ponizej:

 

PS. Sorry za jakosc dzwieku, dopiero jedno video pozniej obczailem jak dzwiek dobrac tak abym nie musial pluc do mikrofonu aby bylo cos slychac ;).

 

https://vimeo.com/58251975

 

PS2. I pamietaj ze AssetTracker musi byc zamkniety jak wykonujesz operacje relinkowania, bo ci max moze olac operacje. A moze trzeba bylo otworzyc okienko po wykonaniu operacji, tez juz nie pamietam. Max ma dziwne problemy ze soba wiecczasami trzeba sztuczkki stosowac. Gdzies chyba jest nawet w helpie informacja o tym :).

 

PS3. Z tego co widze w skrypcie, otwieram i zamykam okienko AssetTrackera (obie operacje po sobie od razu) i dopiero wtedy zaczynam glowna akcje skryptu. Bez tego max potrafil olac dzialanie skryptu. Chodzilo chyba glownie o to zeby przynajmniej raz otworzyc okienko AssetTrackera podczas sesji Maxa, pozniej juz chyba nie trzeba bylo ale zostawilem zeby miec pewnosc.

 

PS4. Ja tego nie zaimplementowalem w swoim skrypcie ale mozesz zrobic przeszukiwanie kilku katalogow z roznych dyskow zamiast podania jednej sciezki w ktorej moga sie znajdowac twoje pliki. Nie chodzi o rekursywne przeszukanie katalogu, tylko jak masz czesc plikow na dysku "D:", czesc na dysku sieciowym a jeszcze pare na "C:" to nie musialbys podawac nowej sciezki po zlinkowaniu czesci plikow tak jak ja to robie w video.

 

PS5. Inny sposob relinkowania to przejechac po klasach i zczytac sciezki z kazdego obiektu, wtedy mozesz bez ATSOps zabieg wykonac. Ale z tym jest wiecej zabawy no i musisz zaimplementowac dla kazdego obiektu osobno zczytanie danych, wiec jak cos niestandardowego ci sie trafi nadal musisz recznie zasuwac albo dodac do implementacji. Z ATSOps sie o to nie martwisz.

 

Przyklad:

for mat in getClassInstances BitmapTexture do
(        
   if mat.filename != undefined then ( mat.filename = @"C:\TextureMe" )
)

-- albo

for obj in lights where iskindof obj light do
(        
   if classof obj == VRayIES do ( obj.ies_file = @"C:\IESMe" )
   if classof obj == Target_Light do (obj.webFile = @"C:\TargetMe")
)

 

i to samo dla VRayProxy i co tam jeszcze zostalo.

Edited by mantragora
Link to comment
Share on other sites

Usunięcie folderu Users\mantragora\AppData\Local\Autodesk\3dsMax trochę pomogło, ale nieznacznie. Wcześniej dla sceny około 600 plików dla jednego pliku wykonywało wybór około nawet 10 sekund, teraz 3s. O otwieraniu i zamykaniu okna AssetTracker wiedziałem. Myślę o relinkowaniu po klasach, ale tym sposobem łatwo ominąć jakiś typ plików i dużo więcej bawienia z tym. Gdzieś jest jakiś spis wszystkich klas plików by nic nie pominąć?

Link to comment
Share on other sites

Gdzies w helpie sa opisane klasy ale nie pamietam gdzie. Poza tym do pluginow musisz z dokumentacji producentow tych pluginow wysuplac co i jak.

 

3 sekundy to nie jest zle. Lepiej niz jechanie samemu 600 razy.

 

Usunięcie folderu Users\mantragora\AppData\Local\Autodesk\3dsMax trochę pomogło, ale nieznacznie.

 

Wow, tez uzywasz usera o nazwie "mantragora" ;).

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy