Acid_19 Napisano 28 Lipiec 2006 Napisano 28 Lipiec 2006 Nigdy nie bawilem sie w skryptowanie w maxie i dlatego prosze kogos o pomoc. Chodzi o napisanie skryptu wypisujacego np do pliku txt nazw wszystkich elementow sceny wraz z jego rozmiarami. Chodzi mi o zapis w stylu: NAZWA_ELEMENTU [tab][tab] LENGTH [tab] WIDTH [tab] HEIGHT Ze swojej strony dodam, ze wszystkie elementy to BOXy. Wydaje mi sie, ze skrypt ten to nie jest jakis kosmicznie trudny problem programistyczny, jednak za duzo czasu zabralaby mi nauka składni w celu napisania jednego skryptu. Prosiłbym równiez o ewentualne wskazowki co do sposobu "odpalenia" skryptu w scenie. Uzywam maxa 6. Pozdrawiam i z góry dziekuje
Acid_19 Napisano 30 Lipiec 2006 Autor Napisano 30 Lipiec 2006 Na forum http://www.3dbuzz.com uzytkownik Mobeen napisał mi taki kod, ktory dziala: fName = (GetSaveFilename caption:"Select output filename... " types:"Text file only (*.txt)|*.txt|") if(fName!=undefined) do ( fp = openfile fName mode:"wt" --This gets all scene boxes allBoxes = (for g in geometry where classof g == Box collect g) --Iterates over all boxes for b in allBoxes do ( format "%\t\t\t%\t%\t%\n" b.name b.length b.width b.height to:fp ) close fp ) messagebox "Done..." Mam nadzieje, ze moze komus sie przyda
FireBullet Napisano 9 Kwiecień 2008 Napisano 9 Kwiecień 2008 Witam. Potrzebowalbym skrypt, ktory wypisze do pliku pozycje i rotacje wszystkich elementow na scenie. Nie znam jezyka skryptowego 3dsmax'a, a potrzebuje tylko to :) Czy ktos posiada taki skrypt, lub bylby w stanie zmodyfikowac powyzszy o interesujaca mnie funkcjonalnosc? Pisze w tym temacie, gdyz wydaje mi sie, iz przerobienie powyzszego skryptu rozwiazaloby problem (tak, aby wypisywal nie rozmiary, a pozycje i rotacje i nie tylko Box'ow, ale wszystkich elementow na scenie).
CgBartosz Napisano 10 Kwiecień 2008 Napisano 10 Kwiecień 2008 fName = (GetSaveFilename caption:"Select output filename... " types:"Text file only (*.txt)|*.txt|") if(fName!=undefined) do ( fp = openfile fName mode:"wt" allBoxes = (for g in objects collect g) for b in allBoxes do ( format "%\t\t\t%\t%\t%\n" b.name b.position b.rotation b.scale to:fp ) close fp ) messagebox "Done..."
FireBullet Napisano 15 Kwiecień 2008 Napisano 15 Kwiecień 2008 CgBartosz, bardzo dziekuje! Oszczedzi mi to sporo nudnej pracy :) Przy okazji chcialbym zapytac, jak przeliczyc kwaterniony na stopnie(lub radiany :) ) obrotu wzgledem osi x, y, z? (np. z zachowaniem tej kolejnosci, choc to dla mnie nie ma znaczenia)
lechoo Napisano 16 Kwiecień 2008 Napisano 16 Kwiecień 2008 Mozna tak: eulerRot = $.rotation as eulerAngles eulerRot.x --obrot wzgledem osi x, analogicznie dla pozostalych osi
FireBullet Napisano 16 Kwiecień 2008 Napisano 16 Kwiecień 2008 lechoo, bardzo dziekuje, dokladnie o to mi chodzilo :)
FireBullet Napisano 22 Czerwiec 2008 Napisano 22 Czerwiec 2008 Po pewnym czasie problem do mnie wrocil... :) Czy moglbym prosic, aby ktos rozbudowal powyzszy skrypt autorstwa CgBartosz w taki sposob, aby do pliku byly wypisywane pozycje i obroty kazdego elementu na scenie w kazdej klatce animacji? (W zasadzie w momencie wykonywania skryptu na scenie i tak bedzie tylko 1 obiekt). Chcialbym, aby w pliku pojawily sie te dane w postaci: [nr_klatki] [pozycja_x] [pozycja_y] [pozycja_z] [analogicznie jak pozycje tak i obroty] Od czasu mojego poprzedniego pytania minelo sporo czasu, faktem jest ze przez taki okres moglem sie juz zaznajomic z jezykiem skryptowym, ale nie sadzilem ze jeszcze kiedys bede z niego korzystal... :)
lechoo Napisano 22 Czerwiec 2008 Napisano 22 Czerwiec 2008 To bedzie tak: fName = (GetSaveFilename caption:"Select output filename... " types:"Text file only (*.txt)|*.txt|") if(fName!=undefined) do ( fp = openfile fName mode:"wt" allBoxes = (for g in objects collect g) for t in animationRange.start to animationRange.end do ( for b in allBoxes do at time t ( local rot = b.rotation as eulerangles format "[%][%][%][%][%][%][%]\n" (t.frame as integer) b.pos.x b.pos.y b.pos.z rot.x rot.y rot.z to:fp ) ) close fp ) 1
FireBullet Napisano 22 Czerwiec 2008 Napisano 22 Czerwiec 2008 Blyskawiczna odpowiedz :) lechoo, bardzo Ci dziekuje, kolejny juz raz :)
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ę