Napisano 21 Lipiec 200519 l Witam, Nie mam specjalnego doswiadczenia z maxscriptem, ale zastanawialem sie, czy mozliwa jest realizacja swego rodzaju wizualizacji, a mianowicie wygladac by to mialo tak: Powiedzmy, ze mam zestaw plikow, w kazdym mam tablice punktow. Chcialbym, aby skrypt wykonal animacje polegajaca na wczytywaniu punktow z kolejnych plikow (kazdy dla innego kroku czasowego) i rozpinaniu powierzchni opisywanej punktami. Co wiecej, czy mozliwe jest wczytywanie koloru punktow z pliku (powiedzmy wartosc danego punktu o wsp. x i y odpowiada w jakis sposob kolorowi) a nastepnie interpolowanie koloru pomiedzy wczytanymi punktami na powierzchni. Z gory dziekuje za odpowiedz
Napisano 21 Lipiec 200519 l Jesli punkty nie sa rozmieszczone chaotycznie, to nie jest to skomplikowane. W najprostszym przypadku moznaby nawet stworzyc plane'a o liczbie vertexow odpowiadajacej liczbie punktow w pliku. Potem wystarczyloby wczytywac wysokosci punktow z kolejnych plikow. Co do koloru to moznaby dane przerobic na bitmape i zmapowac ja na obiekt a max sam juz sobie to zinterpoluje albo przypisac kolory do poszczegolnych vertexow i wtedy rowniez max wyliczy interpolacje.
Napisano 21 Sierpień 200519 l Hei, z calą pewnościa taką wizualizacje mozna zrobic! Odnosnie interpolacji koloru to nie mam nic podręką, ale za to mam wczytywanie danych: Ważny jest format! Dla tego przykladu (była to animacja planet) kazdy wiersz to były dane dla danej klatki, a wartosci róznych parametrów oddzielone średnikami. 1. FORMAT Przykład jednej linii, gdzie najpierw była klatka, następnie pozycja,prędkość i radius i może jeszcze coś... 22;-4.75169;53.1899;...tu rzędy cyfr i średniów...;8.22006;0.0; 2. EXPORT Najperw exportowalem, potem obrabialem potem importowalem, wiec po kolei Export: on B_Export pressed do ( Export_nazwa = GetSaveFileName types:"Plik textowy (*.txt)|*.txt|Dowolny typ|*.*|" if (Export_nazwa != undefined) then ( Export_plik = createfile Export_nazwa for ex=1 to List_Planet_Count do ( format("%;%;%;%;") Planety[ex].Nazwa Planety[ex].PozX Planety[ex].PozY Planety[ex].PozZ to:Export_plik format("%;%;%;%;%;\n") Planety[ex].Masa Planety[ex].Srednica Planety[ex].VoX Planety[ex].VoY Planety[ex].VoZ to:Export_plik ) close Export_plik ) ) 2. IMPORT z pliQ Czyli to o co biega on B_Import pressed do ( Import_nazwa = GetOpenFileName types:"Plik textowy *.txt|*.txt|Dowolny typ|*.*|" format("%\n") Import_nazwa if (Import_nazwa != undefined) then ( Import_plik = openFile Import_nazwa if (Import_plik != undefined) then ( LiniaIN = readLine Import_plik LiniaArray = filterString LiniaIN ";" KlatekIN = LiniaArray[1] KulekIN = LiniaArray[2] KuleINnazwy = execute LiniaArray[3] KuleNodeArray=#() for j=1 to KuleINnazwy.count do ( nodetmp = execute ("$"+ KuleINnazwy[j] as string) if nodetmp == undefined then ( nodetmp = sphere radius:22 name:(KuleINnazwy[j] as string) nodetmp.wireColor = ( (color 190 170 50 ) + (random -30 60) ) ) append KuleNodeArray nodetmp ) LiniaIN = readLine Import_plik LiniaArray = filterString LiniaIN ";" for k=1 to KulekIN as integer do ( if KuleNodeArray[k] != undefined then ( KuleNodeArray[k].radius = LiniaArray[k] as float ) ) animate on ( while not eof Import_plik do ( LiniaIN = readLine Import_plik LiniaArray=filterString LiniaIN ";" at time ((LiniaArray[1]as integer) as time) ( for i=1 to (KulekIN as integer) do ( KuleNodeArray.pos.x = LiniaArray[(i-1)*3+1] as float KuleNodeArray.pos.y = LiniaArray[(i-1)*3+2] as float KuleNodeArray.pos.z = LiniaArray[(i-1)*3+3] as float ) ) ) )--animate off close Import_plik )--- Import_plik != undefined then FIN )--- import nazwa != undefined then FIN ) To jest wersja dla jednego pliku w którym w liniach są wypisane dane, ale można w pętli zrobić wczytanie z serii plików, jeżeli są nazwami jakoś usystematyzowane! Nie wiem czy pytanie jest nadal aktualne (bo to post z przed miesiąca), wiec nie bede tego obrabial, kopiuje żywcem. Dla zwiekszenia czytelnosci by przydało się nad tym posiedzieć, jeśli zajdzie taka potrzeba mogę to przeedytowac. Pytania (lub prośby) wraz z listem motywacyjnym ;) słać na [email protected]
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto