Skocz do zawartości

MAXScript absolutny początek


dimaxion

Rekomendowane odpowiedzi

Witam, czy macie namiary na strony z tutorialami dla początkujących w tym temacie? Potrzebuję wszystkiego od samego początku. Coś już tam zacząłem, ale w tutorialach dla początkujących jest straszny bałagan. No i w większości z nich, mimo opisywania podstaw, autor zakłada, że choć w małym ułamku liznąłem programowanie.Potrzebuję naprawdę wszystkiego od początku. W poniższym ciągu nie kumam kilku rzeczy (dla jasności - wiem do czego służy, potrafię go skopiować, po części skumać i użyć, ale...): for i in 1 to selection.count do( $lid == true then ($.wirecolor = blue else ($.wirecolor = red)))Nie znam podstaw, więc nie wiem co oznacza i dlaczego jest w kwadratowym nawiasie, co oznacza "1", selection.count, dlaczego poniżej po słowie "red" jest podwójnie zamknięty nawias.Wiem, że to banalne podstawy, ale bez pomocy nie zobaczę w tych znaczkach rudych, brunetek czy blondynek.PozdrKuba

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 10
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

To może najpierw przerób jakiś inny język programowania na przykład Javascript - kilka lekcji pozwoli Ci zrozumieć co to jest zmienna, tablica, iterator. MaxScript to nie jest dobry język programowania, a już na pewno nie jest dobry na początek.

Odnośnik do komentarza
Udostępnij na innych stronach

Ja też nie jestem biegły w Max script ale może to Tobie pomoże.

 

for i in 1 to selection.count

 

wykonuj pętlę (for -> to) dla początkowej wartości zmiennej "i" równej jeden tyle razy ile jest wybranych obiektów ("selection.count")

to co się wykonuje w każdej pętli jest zawarte pomiędzy zewnętrznymi nawiasami

wartość zmiennej "i" zwiększa się o jeden po każdym wykonaniu pętli

 

for i in 1 to selection.count do

( $lid == true then

($.wirecolor = blue

else

($.wirecolor = red)

)

)

 

Nawiasów zamykających musi być tyle samo co otwierających.

Rozpisuj sobie programy umieszczając kolejne instrukcje w kolejnych wierszach. Tak lepiej zobaczysz co się dzieje.

 

($.wirecolor = red)

Umieszczenie tej instrukcji w nawiasach wydaje się zbędne

Generalnie jeżeli ciało pętli zawiera tylko jedną instrukcję, to nawiasy nie są wymagane i w tym konkretnym przypadku pełnią wyłącznie funkcję porządkową. A jak widać nawet wprowadzają nieco zamieszania. Myślę, że można by to zapisać jak poniżej i tez będzie działało.

 

for i in 1 to selection.count do

$lid == true then

$.wirecolor = blue

else

$.wirecolor = red

 

No i jeszcze dlaczego

bo "i" jest indeksem tablicy (array) zawierającej wybrane obiekty i tak się właśnie to zapisuje.

 

Popatrz na strukturę programów pisanych w C#, JavaScript itp. Odnajdziesz wiele analogii do MAXScript.

Tuturiali do MAXScript jest bardzo niewiele.

Jedyna książka jaką znalazłem to "3ds Max MAXScript Essentials" wydana przez Focal Press.

Edytowane przez Dynamico
Odnośnik do komentarza
Udostępnij na innych stronach

Yo.

 

Na spokojnie możesz obadać helpa maxowego

http://docs.autodesk.com/3DSMAX/15/ENU/MAXScript-Help/index.html?url=files/GUID-676FB825-84C1-4708-A398-993266E4D2AD.htm,topicNumber=d30e98789

 

http://docs.autodesk.com/3DSMAX/15/ENU/MAXScript-Help/index.html?url=files/GUID-676FB825-84C1-4708-A398-993266E4D2AD.htm,topicNumber=d30e98789

 

 

Odpal sobie MAXScript Listener'a zobacz co się dzieje jak klikasz poszczególne guziki ( nie wszystko jest printowane/wyświetlane, ale pewnie większość )

 

Prócz googli i odrobiny ( a może więcej niż odrobiny ;) ) chęci nie potrzeba Ci nic więcej ... .

 

http://forums.cgsociety.org/showthread.php?t=212440 //szybkie wyjaśnienie czym jest maxScript

 

Nawet maxowe forum coś ma ... http://max3d.pl/forum/threads/3374-Kurs-MAX-Script-temat-2-podsumowanie

 

No nie doradzę nic więcej. Jak z wszytkim - trzeba posiedzieć i zaczyna wychodzić ... w tydzień się tego nie nauczysz.

 

A odnośnie konkretnej odpowiedzi na Twoje pytania

for i in 1 to selection.count do( $lid == true then ($.wirecolor = blue else ($.wirecolor = red)))

-nie wiem co oznacza i ( i jest zmienną ozaczającą tutaj kolejny zaznaczony obiekt )

-i dlaczego jest w kwadratowym nawiasie ( to jest związane ze składnią języka )

-co oznacza 1 ( oznacza, że skrypt ma się wykonać dla każdego -od pierwszego do ostatniego (selection.count) zaznaczonego obiektu)

-dlaczego po słowie red jest podwójnie zamknięty nawias ( zobacz ile razy otwarłeś go wcześniej )

 

Nie pozostaje nic tylko życzyć powodzenia i wytrwałości !

Pozdro.

Odnośnik do komentarza
Udostępnij na innych stronach

dzięki stokrotne!

Jeszcze tylko kwestia zapisu"i" w "for i in 1..." - tutaj "i" nie jest ujęte w nawiasy.

Spróbuję przerobić solidny materiał z podanych przez Was języków i pewnie za jakiś czas mi się pojaśni:)

Dzięki jeszcze raz!

Odnośnik do komentarza
Udostępnij na innych stronach

"i" na początku bez nawiasów bo jest to nazwa zmiennej. Mogło by być a, b ,c, blebleble itd.

Na początku przyjmuje wartość = 1 i po każdym wykonaniu pętli zmienia wartość na kolejną - 2,3,4 i tak aż do osiągnięcia wartości równej ilości wybranych obiektów.

A teraz wewnątrz pętli ta zmienna jest wykorzystywana do określenia którym elementem tablicy zawierającej wybrane obiekty się zajmujemy.

Tak więc po kolei wybiera $[1], $[2], $[3] itd.

A nawiasy kwadratowe, bo taka jest składnia tego i nie tylko tego języka.

Napisałem żebyś rzucił okiem na inne języki programowania bo do nich akurat jest mnóstwo kursów od podstaw (w odróżnieniu od MAXScript). A instrukcje (FOR...TO, IF...THEN, ...) i składnia, czyli kiedy kropka, kiedy i jaki nawias, ma wiele analogii, a różnice z kolei bardzo szybko odkryjesz.

No i oczywiście Help do Maxa jak najbardziej, tylko najpierw trzeba wiedzieć czego szukać :-)

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za niegasnące zainteresowanie! W sumie to wszystko logiczne i wprawa to kwestia praktyki. Składnia jest jednak czymś do wkucia na pamięć... no i może w ułamku na chłopski rozum.Robię równolegle z kursem języka C pewien tutorial. Niestety nie działa to tak, jak powinno. Może znajdziecie błąda:delete objectsparentbox = undefinedfor i =0 to 19 do( nebox = Box() if parentbox != undefined then ( newbox.parent = parentbox in coordsys parent newbox.pos = [0, 0, 30] in coordsys parent newbox.scale = [0.95, 0.95, 0.95] rotX = random -10.0 10.0 rotY = random -10.0 10.0 rotZ = random -10.0 10.0 about newbox.parent rotate newbox (eulerAngles rotX rotY rotZ) ))Chodzi o wygenerowanie stosu boxów , z których każdy jest parentem następnego. Każdy jest też względem swojego parenta skalowany i obrócony o powyższą wartość.

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki za niegasnące zainteresowanie! W sumie to wszystko logiczne i wprawa to kwestia praktyki. Składnia jest jednak czymś do wkucia na pamięć... no i może w ułamku na chłopski rozum.Robię równolegle z kursem języka C pewien tutorial. Niestety nie działa to tak, jak powinno. Może znajdziecie błąda:

delete objects

 

parentbox = undefined

 

for i =0 to 19 do

(

newbox = Box()

if parentbox != undefined then

(

newbox.parent = parentbox

in coordsys parent newbox.pos = [0, 0, 30]

in coordsys parent newbox.scale = [0.95, 0.95, 0.95]

rotX = random -10.0 10.0

rotY = random -10.0 10.0

rotZ = random -10.0 10.0

about newbox.parent rotate newbox (eulerAngles rotX rotY rotZ)

)

)

 

Chodzi o wygenerowanie stosu boxów , z których każdy jest parentem następnego. Każdy jest też względem swojego parenta skalowany i obrócony o powyższą wartość.

Link:

 

Pozdr

 

Kuba

Odnośnik do komentarza
Udostępnij na innych stronach

zapomniałeś o dodaniu zmiennej parentbox = newbox

 

delete objects

 

parentbox = undefined

 

for i =0 to 19 do

(

newbox = Box()

if parentbox != undefined then

(

newbox.parent = parentbox

 

in coordsys parent newbox.scale = [0.95, 0.95, 0.95]

in coordsys parent newbox.pos = [0, 0, 30]

 

rotX = random -10.0 10.0

rotY = random -10.0 10.0

rotZ = random -10.0 10.0

about newbox.parent rotate newbox (eulerAngles rotX rotY rotZ)

)

parentbox = newbox

)

 

niezdefiniowane "parentbox" po każdej pętli nie pozwalało na wykonanie funkcji w drugim nawiasie (przesunięcie, rotację i skalę), stąd skrypt wykonywał jedynie funkcję newbox = box().

Odnośnik do komentarza
Udostępnij na innych stronach

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