Napisano 12 Luty 20169 l 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
Napisano 12 Luty 20169 l 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.
Napisano 12 Luty 20169 l 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 12 Luty 20169 l przez Dynamico
Napisano 12 Luty 20169 l 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.
Napisano 12 Luty 20169 l Autor 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!
Napisano 12 Luty 20169 l "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ć :-)
Napisano 16 Luty 20169 l Autor 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ść.
Napisano 16 Luty 20169 l Autor 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
Napisano 16 Luty 20169 l Autor dodam jeszcze co dzieje się u mnie. Po zastosowaniu skryptu pojawia się 20 boxów o współrzędnych [0,0,0]. Czyli nie ma przesunięcia, obrotu ani skali...
Napisano 16 Luty 20169 l 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().
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto