dimaxion Napisano 12 Luty 2016 Napisano 12 Luty 2016 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
Kroopson Napisano 12 Luty 2016 Napisano 12 Luty 2016 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.
Dynamico Napisano 12 Luty 2016 Napisano 12 Luty 2016 (edytowane) 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 2016 przez Dynamico
bolekcg Napisano 12 Luty 2016 Napisano 12 Luty 2016 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.
dimaxion Napisano 12 Luty 2016 Autor Napisano 12 Luty 2016 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!
Dynamico Napisano 12 Luty 2016 Napisano 12 Luty 2016 "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ć :-)
dimaxion Napisano 16 Luty 2016 Autor Napisano 16 Luty 2016 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ść.
dimaxion Napisano 16 Luty 2016 Autor Napisano 16 Luty 2016 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
dimaxion Napisano 16 Luty 2016 Autor Napisano 16 Luty 2016 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...
zio_mal Napisano 16 Luty 2016 Napisano 16 Luty 2016 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().
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ę