Jump to content

Wizualizacje fizyczne


slate
 Share

Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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]

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

We are using cookies. Read about our Privacy Policy