1. Podstawy matematyczne programowania grafiki 3D

Podobne dokumenty
Geometria analityczna w przestrzeni. Kierunek. Długość. Zwrot

Elementy symetrii makroskopowej w ujęciu macierzowym.

GRUPY SYMETRII Symetria kryształu

Rozdział 9. Baza Jordana

Strukturalne elementy symetrii. Krystalograficzne grupy przestrzenne.

Przestrzeń liniowa R n.

I. Rachunek wektorowy i jego zastosowanie w fizyce.

P K. Położenie punktu na powierzchni kuli określamy w tym układzie poprzez podanie dwóch kątów (, ).

Strukturalne elementy symetrii. Krystalograficzne grupy przestrzenne.

Laboratorium grafiki komputerowej i animacji. Ćwiczenie IV - Biblioteka OpenGL - transformacje przestrzenne obiektów

Animowana grafika 3D. Opracowanie: J. Kęsik.

Ruch kulisty bryły. Kąty Eulera. Precesja regularna

Mechanika Robotów. Wojciech Lisowski. 2 Opis położenia i orientacji efektora Model geometryczny zadanie proste

Graficzne modelowanie scen 3D. Wykład 4

Postać Jordana macierzy

Rozwiazania zadań. Zadanie 1A. Zadanie 1B. Zadanie 2A

ZŁOŻONE RUCHY OSI OBROTOWYCH STEROWANYCH NUMERYCZNIE

POTENCJALNE POLE SIŁ. ,F z 2 V. x = x y, F y. , F x z F z. y F y

2 Przygotował: mgr inż. Maciej Lasota

1. REDUKCJA DOWOLNYCH UKŁADÓW SIŁ. Redukcja płaskiego układu sił

napór cieczy - wypadkowy ( hydrostatyczny )

Przykład 6.3. Uogólnione prawo Hooke a

KONWENCJA ZNAKOWANIA MOMENTÓW I WZÓR NA NAPRĘŻENIA

Wykład 1 Podstawy projektowania układów logicznych i komputerów Synteza i optymalizacja układów cyfrowych Układy logiczne

PRAWIDŁOWE ODPOWIEDZI I PUNKTACJA

,..., u x n. , 2 u x 2 1

cz.2 Dr inż. Zbigniew Szklarski Katedra Elektroniki, paw. C-1, pok.321

J. Szantyr - Wykład 4 Napór hydrostatyczny Napór hydrostatyczny na ściany płaskie

Adam Bodnar: Wytrzymałość Materiałów. Hipotezy wytężeniowe.

J. Szantyr - Wykład 7 Ruch ogólny elementu płynu

Powierzchnie stopnia drugiego

Zestaw zadań 12: Przekształcenia liniowe. Macierze przekształceń liniowych. z z + 2 2x + y. x y z. x y + 2t 2x + 3y + 5z t x + z t

Optymalizacja (w matematyce) termin optymalizacja odnosi się do problemu znalezienia ekstremum (minimum lub maksimum) zadanej funkcji celu.

Ruch kulisty bryły. Kinematyka

Transformacje obiektów 3D

PRZEKSZTAŁCENIA W PRZESTRZENI 3D czyli matematyczny zawrót głowy. Część2 :Rodzaje układów współrzędnych. Obroty i Skalowanie

RZUTOWANIE. rzutnia (ekran) obserwator

Funkcje wielu zmiennych

1. Podstawy rachunku wektorowego

Pochodna kierunkowa i gradient Równania parametryczne prostej przechodzącej przez punkt i skierowanej wzdłuż jednostkowego wektora mają postać:

Algebra z geometrią 2012/2013

Matematyka 2. Elementy analizy wektorowej cz I Pole wektorowe

2.1. ZGINANIE POPRZECZNE

ALGEBRA rok akademicki

III. LICZBY ZESPOLONE

3. Metody rozwiązywania zagadnień polowych

DryLin T System prowadnic liniowych

Zestaw zadań 12: Przekształcenia liniowe. z z + 2 2x + y. x y z. x y + 2t 2x + 3y + 5z t x + z t. x y + 2t 2x 3y + 5z t x z t

Wyznaczanie ruchliwości i koncentracji nośników prądu w półprzewodnikach metodą efektu Halla

ORGANIZACJA I ZARZĄDZANIE

Adam Bodnar: Wytrzymałość Materiałów. Ukośne zginanie 13. UKOŚNE ZGINANIE

MES W ANALIZIE SPRĘŻYSTEJ UKŁADÓW PRĘTOWYCH

x od położenia równowagi

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych

1. Krótki zarys teorii grup 1

EPR. W -1/2 =-1/2 gµ B B

Wydawnictwo Wyższej Szkoły Komunikacji i Zarządzania w Poznaniu

INSTYTUT FIZYKI WYDZIAŁ INŻYNIERII PROCESOWEJ, MATERIAŁOWEJ I FIZYKI STOSOWANEJ POLITECHNIKA CZĘSTOCHOWSKA ĆWICZENIE NR MR-2

Środek ciężkości bryły jednorodnej

BADANIE CYFROWYCH UKŁADÓW ELEKTRONICZNYCH TTL strona 1/7

Dodawanie i mnożenie liczb zespolonych są działaniami wewnętrznymi tzn., że ich wynikiem jest liczba zespolona.

Równoważne układy sił

PRAWA ZACHOWANIA Prawa zachowania najbardziej fundamentalne prawa:

σ x σ y σ z σ z, Adam Bodnar: Wytrzymałość Materiałów. Równania fizyczne.

LABORATORIUM MECHANIKI EKSPERYMENTALNEJ. Instrukcja do ćwiczenia

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie IV. Biblioteka OpenGL - transformacje przestrzenne obiektów

Funkcje pola we współrzędnych krzywoliniowych cd.

PRZESTRZEŃ WEKTOROWA (LINIOWA)

Grupa obrotów. - grupa symetrii kuli, R - wszystkie możliwe obroty o dowolne kąty wokół osi przechodzących przez środek kuli

Zastosowanie funkcji inżynierskich w arkuszach kalkulacyjnych zadania z rozwiązaniami

Belki zespolone 1. z E 1, A 1

Rozważa się dwa typy odwzorowań: 1. Parametryzacja prosta

Belki złożone i zespolone

Metody dokładne w zastosowaniu do rozwiązywania łańcuchów Markowa

GRK 2. dr Wojciech Palubicki

Teoria względności. Wykład 5: Szczególna teoria względności Katarzyna Weron. Jak zmierzyć odległość? Jak zmierzyć odległość?

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

WYKŁAD 6. MODELE OBIEKTÓW 3-D3 część Powierzchnie opisane parametrycznie. Plan wykładu: Powierzchnie opisane parametrycznie

PRZEKŁADNIE ZĘBATE CZOŁOWE ŚRUBOWE. WALCOWE (równoległe) STOŻKOWE (kątowe) ŚLIMAKOWE HIPERBOIDALNE. o zebach prostych. walcowe. o zębach.

Ćwiczenie 361 Badanie układu dwóch soczewek

Zadania z AlgebryIIr

Funkcje wielu zmiennych

Zestaw zadań 15: Funkcjonały dwuliniowe i formy kwadratowe (1) Sprawdzić, czy następujące odwzorowania ξ : R 3 R 3 R: x y. x y z. f(x)g(x)dx.

Całkowanie przez podstawianie i dwa zadania

Wektory. P. F. Góra. rok akademicki

TEORIA SPRĘŻYSTOŚCI 10

ANALIZA KONSTRUKCJI POWŁOKOWEJ. CIENKOŚCIENNY ZBIORNIK CIŚNIENIOWY

KINEMATYKA. Pojęcia podstawowe

PITAGORAS ARYSTOTELES ERATOSTENES. Wprowadzenie. O kulistości Ziemi. Starożytni postulatorzy kulistości Ziemi

Przykład 3.7. Naprężenia styczne przy zginaniu belki cienkościennej.

PODSTAWY RACHUNKU WEKTOROWEGO

Płaska fala monochromatyczna

i = [ 0] j = [ 1] k = [ 0]

Document: Exercise-03-manual /12/ :54--- page 1 of 8 INSTRUKCJA DO ĆWICZENIA NR 3. Optymalizacja wielowarstwowych płyt laminowanych

WYMAGANIA NA POSZCZEGÓLNE OCENY Z MATEMATYKI W KLASACH I - III GIMNAZJUM. Rok szkolny 2015/16

Wielokryteriowa optymalizacja liniowa (WPL)

Układy równań - Przykłady

Adam Bodnar: Wytrzymałość Materiałów. Proste zginanie

Przekształcenia geometryczne w grafice komputerowej. Marek Badura

Narzędzia kontroli wersji Subversion

Transkrypt:

Podstaw programowania gier 3D Podstaw atematki. Podstaw matematcne programowania grafiki 3D Analię agadnień dotcącch grafiki komputerowej acniem od elementów matematki niebędnch do roumienia omawianch tematów. To matematka daje podstaw do opisu trójwmiarowego świata gier, obiektów wstępującch w tworonch światach ora relacje w nich achodące. W grafice komputerowej użwa się wielu mechanimów matematcnch ponanch w skole średniej a także na wkładach algebr. Omówim astosowanie w grafice macier, wektorów, kwaternionów, jak roumieć układ współrędnch, jak posługiwać się układami współrędnch do identfikowania obiektów w świecie, ora relacji międ nimi. Ze wględu na skomplikowanie omawianch agadnień, niektóre temat omówim pobieżnie, scegółowe wjaśnienie danego agadnienia umieściliśm pr konkretnm astosowaniu.. Wektor (Vectors W grafice trójwmiarowej wektor posiadają wiele astosowań: od predstawiania kierunków po repreentacje punktów w prestreni. Wektor, jakich będiem użwać, składają się trech składowch: [ X Y Z ] się wektorami cterema składowmi [ X Y Z W ]. ożna też spotkać. Ponieważ do operacji w układie współrędnch (prestreni trójwmiarowej wstarcą nam tr składowe, dlatego W będie się równać. ożna w tm momencie adać ptanie, dlacego W ogóle ostało wspomniane o wektorach trójwmiarowch a wektorach cterowmiarowch. Jest to pewna niekonsekwencja towarsąca grafice od dłużsego casu. Tak jak wspominaliśm, wstarcą tlko tr komponent do więksości operacji, dopiero umiejscowienie wektora w tw. układie jednorodnm wmaga użcia współrędnej W. Użcie atem trójwmiarowch wektorów albo cterowmiarowch jest poostawione programiście. prjmiem, że nase wektor są trójwmiarowe, mając w pamięci, że mogą się stać cterowmiarowe pre dodanie składowej W. Łukas igas, http://www.lettique.com

Podstaw programowania gier 3D Podstaw atematki Oto lista operacji na wektorach, które będą nam potrebne: - Dodawanie wektorów (Vector Addition. Prkładow kod najduje się na listingu. CVector operator+ ( CVector& v, CVector& u return CVector( v.m_fx + u.m_fx, v.m_fy + u.m_fy, v.m_fz + u.m_fz ; Listing CVector::operator+, Źródło własne - Odejmowanie wektorów (Vector Subtraction. Prkładow kod najduje się na listingu 2. CVector operator- (CVector& v, CVector& u return CVector( v.m_fx-u.m_fx, v.m_fy-u.m_fy, v.m_fz-u.m_fz ; Listing 2 CVector::operator-, Źródło własne - Ilocn wektorow (Cross product. Prkładow kod najduje się na listingu 3. CVector veccross(cvector &v, CVector &u CVector vectmp; vectmp.m_fx v.m_fy*u.m_fz - v.m_fz*u.m_fy; vectmp.m_fy v.m_fz*u.m_fx - v.m_fx*u.m_fz; vectmp.m_fz v.m_fx*u.m_fy - v.m_fy*u.m_fx; return vectmp; Listing 3 veccross, Źródło własne - Ilocn skalarn (Dot product. Prkładow kod najduje się na listingu 4. float vecdot(cvector &v, CVector &u return (v.m_fx*u.m_fx + v.m_fy*u.m_fy + v.m_fz*u.m_fz; Listing 4 vecdot, Źródło własne Łukas igas, http://www.lettique.com 2

Podstaw programowania gier 3D Podstaw atematki - Interpolacja liniowa (Linear Interpolation, LERP. Prkładow kod najduje się na listingu 5. CVector veclerp(cvector &v, CVector &u, float ft CVector vectmp; float ftemp.f - ft; vectmp.m_fx ftemp*v.m_fx + ft*u.m_fx; vectmp.m_fy ftemp*v.m_fy + ft*u.m_fy; vectmp.m_fz ftemp*v.m_fz + ft*u.m_fz; return vectmp; Listing 5 veclerp, Źródło własne - Oblicanie długości wektora (Vector Length. Prkładow kod najduje się na listingu 6. float CVector::Length( return( (floatsqrtf(m_fx*m_fx + m_fy*m_fy + m_fz*m_fz ; Listing 6 CVector::Length, Źródło własne - Normaliacja wektora (Vector Normaliation. Prkładow kod najduje się na listingu 7. void CVector::Normalie( float flen Length(; if ( flen.f return; flen.f / flen; m_fx * flen; m_fy * flen; m_fz * flen; Listing 7 CVector::Normalie, Źródło własne Istotną kwestią jest apiswanie wektorów. Na wielu wkładach matematcnch wektor jest pionow i umiescan a macierą w operacji mnożenia macier pre wektor. W bibliotece D3D wektor jest leżąc poiom. Co a tm idie, kolejność prekstałceń się mienia. nożm wektor pre macier. Łukas igas, http://www.lettique.com 3

Podstaw programowania gier 3D Podstaw atematki.2 aciere (atri/atrices W grafice komputerowej użwa się rożnch rodajów macier. Najbardiej popularne są maciere o wmiarach 44. Dlatego ajmiem się właśnie macierami 44, 2 3 4 2 22 32 42 3 23 33 43 4 24 34 44 aciere dają nam bardo wgodn w użciu sstem do apiswania prekstałceń. Definicja - translacja. Weźm punkt [ X Y Z ] współrędnch. Chcąc presunąć punkt P o wektor T[ X Y Z ] P leżąc w pocątku układu apisujem tę operacje następująco (prjmując, że P, P, P to wektor P, a T, T, T to wektor T: + + + T T T Ta samą operacje można apisać pr pomoc macier. Zatem wkonajm operacje: T T T P P ( ( + + + 2 ( 3 ( + 2 + ( 22 + ( 32 ( + 3 + ( 23 + ( 33 w ( + 4 + ( 24 + ( 34 4 42 43 44 Łukas igas, http://www.lettique.com 4

Podstaw programowania gier 3D Podstaw atematki Jak widać, potrebna tutaj jest współrędna W. Ponieważ W i najcęściej będie będne atem możem je opuścić. ( + ( + + 2 ( 3 ( + + + 2 ( 22 ( 32 ( + + + 3 ( 23 ( 33 4 42 43 Zatem:,,,,,,,, 2 3 2 33, nastę pnie: 4 T, 42 T, T 43. 22 32 3 23 Stąd: + T + + Ostatecnie dosliśm do apisu wjściowego. Prkładow kod implementując m acier presunięcia najduje się na listingu 8. T T void Catri::Setove(float, float, float LoadIdentit(; matri[3][]; matri[3][]; matri[3][2]; Listing 8 Catri::Setove, Źródło własne Prkładowe astosowanie może bć następujące: Definicja T T T [ ] [ ] 2 - skalowanie. Weźm seścian położon w pocątku układu współrędnch, o długości krawędi równej 2. Tera mniejsam seścian o połowę, tak ab długość krawędi bła. Zatem, jeżeli mam wartości skalowania apisane w Łukas igas, http://www.lettique.com 5

Podstaw programowania gier 3D Podstaw atematki wektore S ( gdie.5 (prjmując że aktualnie prekstałcan punkt ma współrędne P, P, P a wartości skalowania to S, S, S, to: S S S A tera to samo apisujem macierą: S S S Zatem: P P Następnie oblicając: ( + + ( 2 + ( 3 ( + 2 + ( 22 + ( 32 ( + 3 + ( 23 + ( 33 4 42 43 Podstawiając wartości macier dostajem: S + S + S + cli apis, od którego acęliśm. Łukas igas, http://www.lettique.com 6

Podstaw programowania gier 3D Podstaw atematki Prkład: [ ] [ ] S S S Prkładowa implementacja skalowania najduje się na listingu 9. void Catri::SetScale(float,float,float LoadIdentit(; matri[][]; matri[][]; matri[2][2]; Listing 9 Catri::SetScale, Źródło własne Definicja 3 - obrot. Ponieważ obrot nie są tak łatwe do wobrażenia, jak presuwanie c skalowanie, atem wor podane będiem musieli na raie prjąć jako pewniki. Każd nich ostanie w rodiale poświęconm importowaniu geometrii/animacji scegółowo omówion. Definicja 4 - obrót wględem osi X. Oto wór obracając punkt o adan kąt jako parametr: θ cosθ sin + θ sin θ cos A oto macier repreentująca prekstałcenie obrotu wględem osi X: cos sin sin cos θ θ θ θ Prkład: [ ] [ ] cos sin sin cos θ θ θ θ Łukas igas, http://www.lettique.com 7

Podstaw programowania gier 3D Podstaw atematki Dowód, że pierws apis jest taki sam jak apis P P, gdie P to punkt prekstałcan P, P, P, będie analogicne do dwóch poprednich cęści poświęconch presunięciu i skalowaniu. Prkładow kod implementując obrót wględem osi X najduje się na listingu. void Catri::SetRotateX(float rad float cosa(floatcos(rad; float sina(floatsin(rad; LoadIdentit(; matri[][]cosa; matri[2][2]cosa; matri[][2]sina; matri[2][]-sina; Listing Catri::SetRotateX, Źródło własne jako parametr: Definicja 5 - obrót wględem osi Y. Oto wór obracając punkt o adan kąt cosθ + sinθ sinθ + cosθ ora jego repreentacja macierowa: cos θ sin θ sin θ cos θ Prkład: [ ] [ ] cosθ sinθ sinθ cosθ Łukas igas, http://www.lettique.com 8

Podstaw programowania gier 3D Podstaw atematki Implementacja prkładowa obrotu wględem osi Y najduje się na listingu. void Catri::SetRotateY(float rad float cosa(floatcos(rad; float sina(floatsin(rad; LoadIdentit(; matri[][]cosa; matri[2][2]cosa; matri[2][]sina; matri[][2]-sina; Listing Catri::SetRotateY, Źródło własne o adan kąt: Definicja 6 - obrót wględem osi Z. Ten wór obraca punkt wględem osi Z repreentacja macierowa: cosθ sin θ sin θ + cosθ Prkład: cos θ sin θ sin θ cos θ [ ] [ ] cosθ sinθ sinθ cosθ Prkładow kod implementując obrót wględem osi Z najduje się na listingu 2. void Catri::SetRotateZ(float rad float cosa(floatcos(rad; float sina(floatsin(rad; LoadIdentit(; matri[][]cosa; matri[][]cosa; matri[][]sina; matri[][]-sina; Listing 2 Catri::SetRotateZ, Źródło własne Łukas igas, http://www.lettique.com 9

Podstaw programowania gier 3D Podstaw atematki Omówiliśm podstawowe operacje, które można apisać pr pomoc macier. Prjmijm tera, że chcem mniejsć obiekt o [.5.5.5] wględem osi Z, a potem presunąć o wektor [.. ], obrócić o 8 stopni.. Pr astosowaniu wkłch worów uskalibśm całkiem duża licba prekstałceń. Pr prekstałcaniu punkt, pr użciu repreentacji macierowej presunięcia, obrotu c skalowania mielibśm te dużą ilość operacji. Ale jest jesce inna możliwość. Składanie prekstałceń. am następujące operacje: - T macier presunięcia, - R macier obrotu, - S macier skalowania, - P punkt do prekstałcenia. ożem łożć maciere prekstałceń w jedna macier mnożąc kolejno maciere repreentujące prekstałcenia: W S R T Po pomnożeniu punktu P pre macier W dostaniem dokładnie ten sam wnik, jakbśm punkt P najpierw pomnożli pre macier S, potem wnik pre macier R, a potem wnik obu prekstałceń pre macier T. Tera dla każdego obiektu możem prgotować jedną macier, która będie repreentować wsstkie prekstałcenia. Pamiętać należ o tm, że mnożenie macier nie jest premienne. Ilocn A i B nie równa się ilocnowi B i A. Użwając wektorów poiomch składanie macier powinno się acnać od pierwsej operacji do ostatniej. Zatem jeżeli: W S R T Tak więc najpierw wkona się skalo wanie S, potem obrót R a na końcu presunięcie T..3 Kwaternion (Quaternions Kwaternion w apisie są podobne do wektorów. Służą one do apiswania obrotu. [ ] Repreentują oś obrotu i kąt obrotu wokół osi. Zapis [ ] α ] onaca: to oś obrotu, a α to kąt obrotu. Rotację maciero wą wględem trech osi można apisać jako kwaternion i odwrotnie: rotacje apisana pr pomoc kwaternionu możem apisać jako macier. Wiele programów do edcji i animowania obiektów prestrennch użwa kwaternionów do apisu obrotów. wbraliśm repreentacje Łukas igas, http://www.lettique.com

Podstaw programowania gier 3D Podstaw atematki macierową ponieważ interpolacja obrotów pred apisaniem ich w macier jest prostsa do implementacji i roumienia niż interpolacja kwaternionów..4 Układ współrędnch W grafice komputerowej wróżnia się dwa rodaje układów współrędnch: - Lewoskrętn układ współrędnch (Left-handed Cartesian Coordinates któr predstawion jest na rsunku. - Prawoskrętn układ współrędnch (Right-handed Cartesian Coordinates któr predstawion jest na rsunku 2. Rsunek - Left-handed, Rsunek 2 - Right-handed, W więksości sstemów graficnch użwa się lewoskrętnego układu. Cli oś Z jest skierowana od obserwatora. Biblioteka D3D, którą będiem się ajmować w kolejnch rodiałach prac, użwa domślnie lewoskrętnego układu. W grafice każd obiekt ma swój własn układ współrędnch. Zawcaj umiescon jest w jego pocątku co predstawia ilustracja. Łukas igas, http://www.lettique.com

Podstaw programowania gier 3D Podstaw atematki Ilustracja - Obiekt w pocątku układu współrędnch, Źródło własne Obiekt awse obracan jest wględem pocątku układu współrędnch w którm się aktualnie najduje. Prkład obrotu najduje się na ilustracji 2. Ilustracja 2 - Obiekt w pocątku układu współrędnch po obrocie, Źródło własne Ropatrm tera prpadek kied obiekt nie najduje się w pocątku układu współrędnch co predstawia ilustracja 3. Łukas igas, http://www.lettique.com 2

Podstaw programowania gier 3D Podstaw atematki Ilustracja 3 - Obiekt presunięt wględem środka układu współrędnch, Źródło własne Stuacje po obrocie predstawia ilustracja 4. Ilustracja 4 - Obiekt obrócon wględem środka układu współrędnch, Źródło własne Kied budujem świat 3D, każd obiekt jest w pocątku swojego układu współrędnch. Ale kied umiejscowim obiekt w konkretnej prestreni to wted najdują się one w układie współrędnm tej prestreni. Dalej prestreń wra obiektami, źródłami światła, kamerami będiem nawać światem. Prkład świata predstawia ilustracja 5. Łukas igas, http://www.lettique.com 3

Podstaw programowania gier 3D Podstaw atematki Ilustracja 5 - Świat: obiekt, kamera, światło w jednm układie współrędnch, Źródło własne Ilustracja 6 Świat punktu widenia kamer, Źródło własne Łukas igas, http://www.lettique.com 4

Podstaw programowania gier 3D Podstaw atematki Następnm ważnm układem współrędnch jest układ kamer. Kamera repreentuje wida któr patr na nas świat. Pocja kamer to pocja wida. To co widi kamera anacona ielonm kolorem na ilustracji 5 widać na ilustracji 6..5 Kamera W układie współrędnch kamer, kamera obserwator, stoi dokładnie w pocątku układu współrędnch cli w punkcie (,,. Rsunek 3 predstawia układ współrędnch kamer ora ostrosłup widenia. Rsunek 3 Kamera i ostrosłup widenia, Źródło: DirectX9 SDK Kamera widi wsstko co jest awarte w ostrosłupie widenia (Viewing Frustum. Rsunek 4 predstawia kamerę ora opisuje ostrosłup widenia. Rsunek 5 opisuje matematcnie ostrosłup widenia. Łukas igas, http://www.lettique.com 5

Podstaw programowania gier 3D Podstaw atematki Rsunek 4 Kamera i ostrosłup widenia, Źródło: DirectX9 SDK Rsunek 5 atematcn opis ostrosłupa widenia, Źródło DirectX SDK Definiując kamerę podaje się także opróc pocji takie parametr jak: - aspekt, cli stosunek wsokości kamer do serokości (np. dla 6448 będie to 48/64 cli.75, - pole widenia (ang. Field of view FOV, kąt, któr widi kamera, - bliska płascna obcinania (Near clipping plane albo Front clipping plane odległość od kamer po której następuje obcięcie geometrii, Łukas igas, http://www.lettique.com 6

Podstaw programowania gier 3D Podstaw atematki - daleka płascna obcinania (Far clipping plane albo Back clipping plane odległość od kamer pred która następuje obcięcie geometrii. Definiowanie ostrosłupa widenia jest odworowaniem recwistości. Cłowiek nie widi wsstkiego, co się dieje dookoła niego. Zawcaj jest to jakaś cęść horontu np. ogranicona kątem 5 stopni. Definiowanie płascn obcinania ma na celu ustalenie dokładności obliceń wiąanch odległością obiektu od kamer. ała odległość międ płascnami obcinania to duża dokładność. Duża odległość równa się małej dokładności. Dokładniej ten aspekt omówim sobie dalej, analiując algortm najdowania widocnch powierchni..6 Prechodenie międ układami współrędnch Omówiliśm więc układ obiektu, układ świata i układ kamer, a tera powiem jak wsstkie układ raem e sobą współpracują. Jeżeli mam obiekt, któr w jego własnm układie np. w punkcie (,,, a chcem, ab w układie świata najdował się np. w punkcie (-,, i bł obrócon o 8 stopni, to musim sobie budować maciere: [ ] - T presunięcie o, - R obrót o 8 stopni, składam prekstałcenia: W R T najpierw jest obrót a potem presunięcie, inacej obiekt obróciłb się wględem innego punktu, tak jak bło pokaane na ilustracjach wceśniej. acier W prenosi nam obiekt do układu świata. To samo robim kamerą, światłami itd. Tera, kied chcem ab prenieść układ świata do układu kamer, musim odwrócić macier kamer. Zatem macier W musim pomnożć pre macier kamer K tle, że odwróconą: W W K.Invert ( acier W prenosi obiekt układu obiektu do układu kamer. Łukas igas, http://www.lettique.com 7

Podstaw programowania gier 3D Podstaw atematki.7 Układ współrędnch ekranu i układ współrędnch jednorodnch Układ współrędnch ekranu. Ponieważ monitor potrafi wświetlać tlko obra dwuwmiarow, musim nas świat rutować na płaski ekran: Rsunek 6 - Ekran monitora i okno wświetlania, Żródło DirectX SDK Jak widać na rsunku 6 któr predstawia ekran monitora (Displa Screen, miejsce w którm chcem wświetlić nas obra jest definiowane pre prostokąt (Bounding Rectangle opisane pre lew górn punkt (left top i praw doln (right bottom. W bibliotece D3D struktura definiująca obsar wświetlania nawa się Viewport. Układ współrędnch jednorodnch. Casem może się darć, że obiekt wjdie po a ostrosłup widenia. Wted musim dokonać obcięcia obiektu tak, ab mieścił się on w ostrosłupie. Biblioteki graficne awcaj użwają do tego celu układu współrędnch jednorodnch. Operacja polega na prekstałceniu ostrosłupa widenia do prostopadłościanu serokiego od do i wsokiego od do ora głębokiego na. W takim układie można prosto sprawdić, c któraś współrędna wsła poa seścian. Rsunek 7 predstawia prekstałcenie ostrosłupa widenia to układu współrędnch jednorodnch. Łukas igas, http://www.lettique.com 8

Podstaw programowania gier 3D Podstaw atematki Rsunek 7 - Ostrosłup widenia a układ współrędnch jednorodnch, Żródło DirectX SDK Wór macier repreentującej te prekstałcenie ma postać: w h Q QZ n Gdie: w ctg fov w 2 h ctg fov h 2 Q Z f Z f Z n w Z Z 2 2 n n h Vw V h Ora: - FOVw kąt widenia w poiomie, - FOVh kąt widenia w pionie, - Zf daleka płascna obcinania, - Zn bliska płascna obcinania, - Vw serokość widenia kamer (np. 64, - Vh wsokość widenia kamer (np. 48. Łukas igas, http://www.lettique.com 9