[quote]Przy zapisywaniu wartości do pliku nie zapomnij wstawić na końcu przecinka[/quote]
W povray podczas animacji nie jest tak prosto przekazywać zmienne, a to dlatego, że animacja jest niczym innym jak sekwencyjnym wywołaniem tego samemo plku (zmienia się wtedy kilka zmiennych takich jak [b]clock frame_number[/b] etc. Jeżeli chcielibyśmy przekazać zestaw zmiennych z jednej klatki do drugiej można posłużyć się plikiem pomocniczym
Poniżej przykładowe macra, które zapisują i odczytują tablicę.
#macro mc_wczytaj_tablice(_tab, _plik)
#local _ile=dimension_size(_tab,1);
#local _in=0;
#fopen _f_plik _plik read
#while (defined(_f_plik))
#if(_in<_ile)
#read (_f_plik, _tab[_in])
#else
#read (_f_plik,_temp)
#end
 #local _in=_in+1;
 #end
 #end

 #macro mc_zapisz_tablice(_tab, _plik)
 #local _ile=dimension_size(_tab,1);
 #local _in=0;
 #fopen _f_plik _plik write
 #while (_in<_ile)
 #write (_f_plik,_tab[_in],",\n")
 #local _in=_in+1;
 #end
 #end
A teraz macro kótre jest użyte w animacji :-)
#macro mc_rd_ustawNogi(__tab, __ffps, __klatka)
#local _cykl=3*__ffps; // 3sek trwa pelen cykl
#local _pozycja=<0,0,0>;
#if (__klatka != 0 & __klatka != 1)
#fopen _fRadek "rd_tymczas.txt" read
#read (_fRadek,_pozycja,_kierunek)
#fclose _fRadek
mc_wczytaj_tablice(__tab, "rd_tab_tymczas.txt")
#else
 #local _pozycja=<-45,40,5>; // Na razie nie uzywane
 #local _kierunek=1; // 1 - lewa noga zwieksza kat, prawa mniejszaa
 // -1 - lewa nowa zmniejsza kat, prawa zmniejsza
 #end


 #local _od_udo_p=<45,0,0>; // ile do przodu sie duo wychyla
 #local _od_udo_t=<-45,0,0>; // ile do tylu się wychyla udo

 #local _de_udo= (_od_udo_p.x-_od_udo_t.x)/(_cykl/2);
 #declare __tab[43]=<__tab[43].x+(_de_udo*_kierunek),0,0>;

 #fopen _fRadek "rd_tymczas.txt" write
 #write (_fRadek,_pozycja,",",_kierunek, "\n")
 #fclose _fRadek
 mc_zapisz_tablice(__tab, "rd_tab_tymczas.txt")
 #end

 mc_rd_ustawNogi(Tablica, 24, frame_number)

Do czego to użyć..
Załóżmy, że tworzymy animację odbijające się kulki, odbija się ona od ścian i losowo rozmieszczonych boxów. kulka ma swoją prędkość i jakis kierunek.
Kierunku nie jesteśmy w stanie uzależnić ani od frame_number, ani od clock, ponieważ kulka jak w czasie ruchu natrafi na box to zmienia kierunek.. tak wiec wiemy ze możemy ją poruszyć ale kierunek jest zmienny. i aby animacja miała sens musimy pamietać jej kierunek i pozycje...
Bardzo dobry przykład znajduje się w gotowych scenach (katalog scenes) plik nazywa się bounce.pov.
Jeżeli potrzebne jest dokładniejsze wyjaśnienie wyżej wymienionych macr proszę napisać to objasnie...
Macra te będę używał w chodzącym Radku Deklu.. ale to daleka jeszcze droga... |