Skocz do zawartości

Featured Replies

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
  • Wyświetleń 1,8k
  • 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
  • Autor

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
  • Autor

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
  • Autor

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
  • Autor

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
  • Autor
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

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności