PROGRAMOWANIE
WEBMASTER:
 Artyku³y
 Kursy
 Skrypty
PHP:
 Artyku³y
 Kursy
 Skrypty
VISUAL C/C++:
 Artyku³y
 Kursy
 Kody ¼ród³owe
C++ BUILDER:
 Artyku³y
 Kursy
 Komponenty
 Kody ¼ród³owe
 FAQ
DELPHI:
 Artyku³y
 Kursy
 Komponenty
 Kody ¼ród³owe
 FAQ
JAVA:
 Artyku³y
 Kursy
 Aplety
ASP:
 Artyku³y
 Kursy
 Skrypty
VISUAL BASIC:
 Artyku³y
 Kursy
 Kody ¼ród³owe
PASCAL:
 Artyku³y
 Kursy
 Kody ¼ród³owe
ASSEMBLER:
 Artyku³y
 Kursy
 Kody ¼ród³owe
O NAS [...]
 Ekipa portalu
 Reklama
REKLAMA

Pascal » Artyku³y
Efekty 3D
Aby wygodnie tworzyæ bry³y 3D trzeba skorzystaæ z trójwymiarowego uk³adu wspó³rzêdnych x, y i z. Jest tylko jeden problem: aby wy¶wietliæ obraz na ekranie potrzeba jedynie dwóch wspó³rzêdnych x i y. Istniej± jednak wzory, które pozwalaj± przekszta³ciæ wspó³rzêdne 3d na 2d tworz±c perspektywiczny efekt 3d na dwuwymiarowym ekranie.

x2d = 256 * x3d / (z3d + dist) + 160
y2d = 256 * y3d / (z3d + dist) + 100

gdzie:

x2d,y2d - wspó³rzêdne dwuwymiarowe
x3d,y3d,z3d - wpó³rzêdne trójwymiarowe
dist - odleg³o¶æ od obserwatora


przydadz± siê tak¿e wzory na obrót:

wokó³ osi OX:

Yn = y*cos(k±t) - z*sin(k±t)

Zn = y*sin(k±t) + z*cos(k±t)

wokó³ osi OY:

Xn = x*cos(k±t) - z*sin(k±t)

Zn = x*sin(k±t) + z*cos(k±t)

Wokó³ osi OZ:

Xn = x*cos(k±t) - y*sin(k±t)

Yn = x*sin(k±t) + y*cos(k±t)

Gdzie:
Xn,Yn,Zn - nowe wspó³rzêdne
x,y,z - stare wspó³rzêdne

Tworz±c animacje warto jeszcze zwróciæ uwagê na jeden fakt. Rysuj±c kolejne klatki musisz usuwaæ poprzedni obraz. "Zmazywanie" poprzedniej klatki jest równie czasoch³onne jak rysowanie nastêpnej. Jak siê z tym uporaæ? Otó¿ ja stosujê prost± metodê. Zamiast wpisywaæ dane obrazu do pamiêci karty graficznej zapisuje je gdzie¶ do pamiêci RAM. Kiedy ju¿ ca³y obraz jest w pamiêci RAM, kopiujê go do pamiêci karty, a nastêpnie czyszczê ten fragment pamiêci RAM. W ten sposób nastêpn± klatkê rysujê jakgdyby na pustym ekranie. Poni¿szy schemat powinien rozwiaæ wszelkie w±tpliwo¶ci.

pêtla:
zmieñ dane obrazu -> (to ma byæ animacja)
zapisz dane o kolorach poszczegolnych pixeli w pamiêci RAM
kopiuj zawarto¶æ RAM do pamiêci karty
wyczy¶æ zawarto¶æ RAM
powróæ do pocz±tku (i tak w kó³ko).


Adam Æwik³a
NEWSLETTER
Chcesz byæ zawsze na bie¿±co?
Zapisz siê!
WP.PL
LITERATURA
INNE [?]
Katalog WWW
Sponsor
On-Line: 5
stat4u
Wszystkie prawa zastrze¿one © 2001-2002 Programik.com