Juliusz Napisano 18 Sierpień 2007 Napisano 18 Sierpień 2007 Chodzi mi o coś takiego: zaznaczam jakiś model, a skrypt by wykonywał czynności po kolei: - przesuń obiekt do punktu 0,0,0 - Export Selected jako ASE, nazwa pliku taka jak nazwa obiektu - cofnij obiekt do punktu wyjściowego Prostactwo, nie? Ew. mógłby być taki: - sklonuj obiekt - Collapse to Editable Mesh - przesuń do 0,0,0 - wyeksportuj (tak samo jak wyżej) - usuń go Czy mógłby ktoś mi doradzić, jak się do czegoś takiego zabrać? W sumie nie liczę, że mi to ktoś napisze za mnie od A do Z (choć, to nie byłoby pewnie czasochłonne dla jakiegoś eksperta...), ale jakbyście mogli wskazać jakieś podstawowe tutoriale, jak się pisze w ogóle skrypty do 3dsmaxa. Z góry dzięki!
mirach Napisano 18 Sierpień 2007 Napisano 18 Sierpień 2007 Hm, sproboj żeby max zrobił skrypt za ciebie :) Ustawiasz sobie stadium początkowe (tworzysz jakąś bryłe testową) póxniej odpalasz maxscript Listener i włanczasz Macro Recorder. Wykonujesz to co chcesz ( te operacje co pisałeś) a w okienku pokazują się komendy skryptowe. Później wystarczy że zmienisz nazwe obiektu (powiedzmy $box) na samo $ (o ile sie nie myle to oznacza aktualną selekcje) a skrypt przeciągniesz na pasek u góry maxa (tak powinno sie stworzyć buttona ze skryptu) i masz gotowe makro do odpalania. Tak mniej wiecej udaje mi sie robic proste automatyzacje, ekspertem zdecydowanie nie jestem, wiec mogłem się gdzieś pomylić, ale jak coś to odpal sobie z helpa MaxScript Reference i tam są przykładowe skrypty, powinno pomóc. pozdrawiam Mirach
Juliusz Napisano 18 Sierpień 2007 Autor Napisano 18 Sierpień 2007 Dzięki! Po cichu liczyłem, że coś takiego będzie (jak we Photoshopie), ale nie wiedziałem, że tak się to nazywa. :) Zaraz zobaczę, co się da z tego wycisnąć.
Juliusz Napisano 18 Sierpień 2007 Autor Napisano 18 Sierpień 2007 No, skrypcik już pięknie działa. Odświeżyłem swoją dawną pasję do Borland Pascala. Do szczęścia brakuje mi tylko jednego - nie wiem, jak ponownie zaznaczyć obiekt. mam coś takiego: nazwa = $.name to jest nazwa mojego aktualnie zaznaczonego obiektu, używana później do kilku rzeczy. Następnie zaznaczam inny obiekt, po czym chcę znowu zaznaczyć ten, co był. próbuję: select nazwa select $nazwa select $.nazwa ale żadna z tych komend nie chce działać. Macie jakieś pomysły? Może muszę pobrać coś innego, np. jakiś numer obiektu, żeby go później znowu zaznaczyć, bo nazwa może się przecież powtarzać... no, nic - idę dalej szukać...
t0m3k Napisano 18 Sierpień 2007 Napisano 18 Sierpień 2007 witam trzeba bylo ten watek zalozyc w dziala programming languages :) nazwa = $.name przypisze do "nazwa" wlasciwosc "name" biezacego obiektu czyli jesli jest to "Box01" to zmienna "nazwa" bedzie miesc wartosc "Box01". Jesli chcesz przypisac do zmiennej obiekt to uzyj np. obj = $ co przypisze do zmiennej "obj" obecnie zaznaczony obiekt, wtedy zeby go ponownie zaznaczyc uzyj select obj mam nadzieje ze nic nie pokopalem i jakos ci ro pomoze, pozdrawiam.
Juliusz Napisano 19 Sierpień 2007 Autor Napisano 19 Sierpień 2007 ups, nie wiedzialem, że taki dział istnieje... dzięki t0m3k - nie wpadłbym na to, że to takie proste! :) Tak przy okajzi - udało mi się obejść to mało elegancką drogą - wywoływałem funkcję Undo, która zaznaczała spowrotem poprzedni obiekt, ale nie działało to niestety jako MacroScript. I dobrze - przynajmniej teraz wiem, jak to porządnie zrobić. :)
Juliusz Napisano 19 Sierpień 2007 Autor Napisano 19 Sierpień 2007 No, więc napisałem swój pierwszy skrypt do Maxa: obiekt = $ nazwa = $.name select $darkmod* sciezka = $.name select obiekt copy $ isSelected:on name:nazwa $.position = [0,0,0] convertToMesh $ plik = "e:/doom3/darkmod/models/" + sciezka + nazwa + ".ASE" exportFile plik #noPrompt selectedOnly:true delete $ Najciekawszym trikiem jest fragment select $darkmod* sciezka = $.name Wymaga on dodatkowego obiektu, którego nazwą jest fragment ścieżki, do której ma eksportować moje modele (zawsze zaczyna się od słowa darkmod, ale dalej idzie inaczej). Dzięki temu w każdym pliku max mogę ustawić ścieżkę eksportu bez konieczności wybierania jej w oknie dialogowym. Jedno naciśnięcie klawisza, a model ląduje tam gdzie powinien... :) Dzięki chłopaki za pomoc!
t0m3k Napisano 19 Sierpień 2007 Napisano 19 Sierpień 2007 hmm... chyba powinienes uzyc petli, bedziesz wtedy mogl zaznaczyc grupe obiektow i fukcja zostanie wykonana dla kazdego z nich osobno. select $darkmod* sciezka = $.name zaznaczy wszystko z przedrostkiem "darkmod" i jesli zaznaczone bylo wiecej niz jeden obiekt naprawdopodobniej dostaniesz blad w kolejnej linijce. zeby skrypt dzialal za kazdym razem powinienes napisac cos takiego: grupa = $box* -- albo $ zeby wykonac operacje na aktualnie zaznaczonej grupie for i in grupa do -- dla kazdego obiektu w grupa ( nazwaPliku = i.name -- uzyj nazwy oryginalnego obiektu copy i isSelected:on $.position = [0,0,0] convertToMesh $ plik = "c:\\test\\" + nazwaPliku + ".3ds" exportFile plik #noPrompt selectedOnly:true delete $ )
Juliusz Napisano 20 Sierpień 2007 Autor Napisano 20 Sierpień 2007 zaznaczy wszystko z przedrostkiem "darkmod" i jesli zaznaczone bylo wiecej niz jeden obiekt naprawdopodobniej dostaniesz blad w kolejnej linijce. ale mam tylko jeden obiekt o takiej nazwie w danym pliku maxa, więc nie ma problemu. Eksport grupowy - czemu by nie. Ale nie rozumiem tej linijki: grupa = $box* -- albo $ zeby wykonac operacje na aktualnie zaznaczonej grupie czy to box to przykładowa nazwa czy to jakaś funkcja?
t0m3k Napisano 20 Sierpień 2007 Napisano 20 Sierpień 2007 $box* "*" dziala jak w dos'ie czyli zaznacz wszystko co zaczyna sie od box (box01, box02, boxik, box_duzy...) jesli wpiszesz tylko "$" to skrypt zostanie wykonany na aktualnie zaznaczonych obiektach (jesli nic nie jest zaznaczone najprwdp dostaniesz blad)
Rekomendowane odpowiedzi
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ę