3dsmaxman Napisano 9 Marzec 2005 Napisano 9 Marzec 2005 mam taki oto problem w MaxScript: chce stworzyc skrypt tworzacy walec (w ramach cwiczenia); stworzylem tablice wierzcholkow z wierzcholkami - wszystko jest OK; nastepnie sprobowalem w petli potworzyc podstawe (tu trzeba odwrocic kolejnosc tworzenia scianek, by wszystkow wyszlo), wiec napisalem taki kod: append face_array [1,2,13] for j = seg to 3 do append face_array [1,j,j-1] a efekt? - nie udalo mi sie utworzyc scianek (za wyjatkiem pierwszej, poza petla dopiero gdy robielm to recznie - scianka po sciance udalo mi sie utworzyc podstawe w czym tkwi blad? czy jest to moj blad, czy MaxScripta?
VGT Napisano 9 Marzec 2005 Napisano 9 Marzec 2005 Jak dla mnie trochę za mało informacji, aby stwierdzić, gdzie jest błąd. Podstawa ma jak widzę 12 segmentów wiec dlaczego petla leci tylko do 3. Nie wiadomo także od jakiej wartosci petla sie zaczyna, gdyz nie ma w tym fragmencie informacji, jaka wartosc przyjmuje zmienna 'seg'. Czy powstaje tylko ta jedna ścianka, czy obiekt wogóle się nie tworzy? Jeśli to drugie, to maxscript listener wywalił błąd, którego odczytanie może coś wyjaśnić. Trzymając się założeń (12 segmentów, co daje 13 vertexów. Nr 1 to środek, nr 2-13 obwód rozmieszczone przeciwnie do ruchu wskazówek zegara) takie coś u mnie zadziałało: append face_array [1,2,13] for j = 3 to 13 do append face_array [1,j,j-1] A skoro już i tak to napisałem, to tutaj masz cały skrypt na zrobienie podstawy o dowolnym promieniu i ilosci segmentów: vert_array = #() face_array = #() segmenty = 12.0 promien = 10.0 append vert_array [0,0,0] for i = 1 to segmenty do ( append vert_array [sin((360/segmenty)*i)*promien,cos((360/segmenty)*i)*promien,0] ) append face_array [1,segmenty+1,2] for i = 1 to segmenty-1 do ( append face_array [1,i+1,i+2] ) nowy = mesh vertices:vert_array faces:face_array Może przeanalizowanie tego rozjaśni nieco sytuację.
3dsmaxman Napisano 10 Marzec 2005 Autor Napisano 10 Marzec 2005 tzn. u mnie 'seg' to zmienna okrslajaca ilosc scianek w podstawie+1, czyli w moim przypadku 13; a dlatego leci w ten sposob, bo podstawa ma byc widoczna od dolu, a nie od gory; jak robie gore, to wszystko jest OK
VGT Napisano 10 Marzec 2005 Napisano 10 Marzec 2005 Czyli twoja petla ma sie wykonywac od 13 do 3. Zakres ten sam co u mnie, jedynie problem w tym, że sie nie wykonuje. Wpisz sobie w nowym skrypcie raz pierwsza, raz druga instrukcje i zobacz co pokazuje maxscript listener: for i = 3 to 13 do print i for i = 13 to 3 print i Druga petla sie nie wykona ani razu, gdyż domyślnie krok dla petli for wynosi 1. Wiec pelna wersja tej instrukcji wyglada tak: for i = 13 to 3 by -1 print i Natomiast jeśli chodzi o to, aby face były skierowane do góry, lub do dołu, to nie zależy to od tego jak wykonujesz tą petle, a od tego jak dobierasz vertexy dla scianek: append face_array [1,j,j-1] append face_array [1,j-1,j] Jedna instrukcja skieruje normalne face'ow w dół, druga w górę, niezależnie od tego jak bedzie leciała petla for.
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ę