Nirvan Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Hej, robie sobie ten edytor animacji szkieletowej i potrzebuję czegoś w stylu tablicy 3D w kazdej kosci. Musi to działać mniej więcej tak: kazda kosc ma tablice key[ i, j, k ] gdzie i to id animacji, j - nr keya, k - typ zmiennej np frame, angle, scale. Zrobilem juz pelno funkcji do przesowania/wstawiania keyow itp ale zobaczylem wczoraj ze GM nie wspiera tablic 3D. Wiem że są jakieś obejścia ale ponoć nie optymalne. Da się to może jakoś zrobić żeby działało szybciej? (Nie chce wykorzystywać funkcji gma np ds_list itp) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Natknąłem się na parę implementacji tablic 3D. Ale szczerze powiedziawszy lepiej je olać bo mocno spowalniają. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 to co ja mam począć :D jak zrobi sie inaczej to moze byc bardzo nie intuicyjne. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ALT Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Znalazłem takie coś o na yoyogames: GML // First dimension cube[0, 0] = 1; cube[0, 1] = 2; cube[0, 2] = 3; // Second dimension cube[1, 0] = 4; cube[1, 1] = 5; cube[1, 2] = 6; cube[2, 0] = 7; cube[2, 1] = 8; cube[2, 2] = 9; cube[3, 0] = 10; cube[3, 1] = 11; cube[3, 2] = 12; // Third dimension cube[4, 0] = "0,0,0"; cube[4, 1] = "0,0,1"; cube[4, 2] = "0,0,2"; cube[5, 0] = "0,1,0"; cube[5, 1] = "0,1,1"; cube[5, 2] = "0,1,2"; cube[6, 0] = "0,2,0"; cube[6, 1] = "0,2,1"; cube[6, 2] = "0,2,2"; cube[7, 0] = "1,0,0"; cube[7, 1] = "1,0,1"; cube[7, 2] = "1,0,2"; cube[8, 0] = "1,1,0"; cube[8, 1] = "1,1,1"; // midpoint cube[8, 2] = "1,1,2"; cube[9, 0] = "1,2,0"; cube[9, 1] = "1,2,1"; cube[9, 2] = "1,2,2"; cube[10, 0] = "2,0,0"; cube[10, 1] = "2,0,1"; cube[10, 2] = "2,0,2"; cube[11, 0] = "2,1,0"; cube[11, 1] = "2,1,1"; cube[11, 2] = "2,1,2"; cube[12, 0] = "2,2,0"; cube[12, 1] = "2,2,1"; cube[12, 2] = "2,2,2"; http://gmc.yoyogames.com/index.php?showtopic=571988 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 On tam zagnieżdża jedną tablicę w drugą. Tutaj też można tak spróbować np animID[ i, key[j, k] ] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 Fajnie jakby dalo sie tak jak napisalem huder, ale czy to nie bedzie zwykla tablica 2D? bo key[j,k] bedzie przybieral zmienne np 1,2,3 i wtedy animID[0, 1||2||3] to nie to chyba. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 A czemu nie zrobisz tego na 3 1D? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 Lubię zwięzły zapis, nie zastanawiałem się jak by to moglo tak wyglądać. Musi byc rozpoznawane id animacji potem do tej animacji rozpoznawane rozne keye a w keyach rozne zmienne animId[0] key[0] variables[0] ... na 1d nie da rady tego zrobic Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Ale na 2D tak. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 że naimID[i, j]; i key[j, k] i powiedzmy ze w animacji 0 zerowy key jest w klatce 2 a drugi key w 10 animID[0, 0] key[0, 0] = 2; key[1, 0] = 10 ale jak zapisac to zeby animID tez bylo brane pod uwagę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Może zagnieżdżaj struktury? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 Nie wiedzialem ze sa w gmie To najprostsza droga by była Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Uzjel Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Gnysek gdzieś pokazywał jak to fajnie można obsługiwać. Może napisz do niego. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 odpisal mi ze dostep do zmiennych w obiektach ma sie nawet po dezaktywacji i ze to jedyna droga ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jakim Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Jeżeli wymiary tablicy są ustalone, to można łatwo rzutować adresy na jednowymiarową tablicę i odwrotnie. Przyjmijmy oznaczenia: w,h,z - rozmiary tablicy adres3D -> adres1D [i,j,k] -> [i+j*w+k*w*h] adres1D -> adres3D -> [Mod[i, w],Floor[Mod[i, w*h]/w], Floor[i/(w*h)]] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 rozmiary nie beda ustalone z góry, muszą być swobodne. Może zamiast tych obiektów powstawiać tablice 2d ds map? Chyba z nimi najsprawniej by było Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 tablica[z]=ds_grid_create(x,y) Najprzyjemniejszy sposób jaki znam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 chyba z ds listami lepiej bo moge chyba sobie okreslic zmienna np "frame" i wtedy lepiej wszystko widze Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 ds_listy to tablice 1D z możliwością sortowania Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 sory ds_map pomylilo mi sie ale nie moge odczytac wartosci bo np dam ds_list_add( key, "frame", 0) to odczytywanie poprzez ds_list_find_value jak dla mnie to jakos wolno dziala edit: chociaz moze nie tak strasznie, ale z 4x wolniej niz zwykle przypisywanie wartosci zmiennej Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 ds_mapy ogólnie są wolne, z tych struktur najszybsze są listy i grid. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 tylko czy w gridzie mozna zmieniac wielkosc kiedy sie chce? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Nie da rady. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nirvan Opublikowano 25 Maja 2013 Autor Udostępnij Opublikowano 25 Maja 2013 no wlasnie :( bo y to by byly keye a x to klatki angle itd i by height musiałby się zmieniać co dodanie keya nowa linijka Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Maximal Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Ależ gridy jak najbardziej można dynamicznie powiększać! GML ds_grid_resize(index, w, h); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 25 Maja 2013 Udostępnij Opublikowano 25 Maja 2013 Teraz to mnie zaskoczyłeś : O tyle razy ich używam i nie zauważyłem tej funkcji. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
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ę