Skocz do zawartości

Rekomendowane odpowiedzi

Napisano

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!

  • Odpowiedzi 9
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Napisano

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

Napisano

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ąć.

Napisano

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ć...

Napisano

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.

Napisano

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ć. :)

Napisano

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!

Napisano

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

Napisano
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?

Napisano

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

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