Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./0. 3D grafika programozása OpenGL támogatással Transzformációk

Hasonló dokumentumok
3D koordináta-rendszerek

OpenGL és a mátrixok

Transzformációk. Grafikus játékok fejlesztése Szécsi László t05-transform

Transzformációk. Szécsi László

x = cos αx sin αy y = sin αx + cos αy 2. Mi a X/Y/Z tengely körüli forgatás transzformációs mátrixa 3D-ben?

Térbeli transzformációk, a tér leképezése síkra

Hajder Levente 2016/2017.

Hajder Levente 2017/2018. II. félév

Infobionika ROBOTIKA. X. Előadás. Robot manipulátorok II. Direkt és inverz kinematika. Készült a HEFOP P /1.0 projekt keretében

Tartalom. Hajder Levente 2016/2017. I. félév

Számítógépes Grafika SZIE YMÉK

Tartalom. Tartalom. Hajder Levente 2018/2019. I. félév

Grafikus csővezeték és az OpenGL függvénykönyvtár

Számítógépes geometria

Eredmények, objektumok grafikus megjelenítése 3D felületek rajzoló függvényei

Transzformációk síkon, térben

Transzformációk, amelyek n-dimenziós objektumokat kisebb dimenziós terekbe visznek át. Pl. 3D 2D

Plakátok, részecskerendszerek. Szécsi László

Számítógépes grafika

Számítási feladatok a Számítógépi geometria órához

2D képszintézis. Szirmay-Kalos László

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

Tartalom. Nevezetes affin transzformációk. Valasek Gábor 2016/2017. tavaszi félév

21. évfolyam 5. szám. Fizika InfoRmatika Kémia Alapok. Kiadó. Levélcím Cluj, C. P. 1/140

Hajder Levente 2018/2019. II. félév

Hajder Levente 2014/2015. tavaszi félév

Számítógépes Grafika mintafeladatok

Programozási nyelvek 2. előadás

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 21./0. 3D grafika programozása OpenGL támogatással A 3D API

Máté: Számítógépes grafika alapjai

Robotika. Kinematika. Magyar Attila

Valasek Gábor Informatikai Kar. 2016/2017. tavaszi félév

SZERKEZETFÖLDTANI OKTATÓPROGRAM, VETŐMENTI ELMOZDULÁSOK MODELLEZÉSÉRE. Kaczur Sándor Fintor Krisztián

Információ megjelenítés Számítógépes ábrázolás. Dr. Iványi Péter

1. Bevezetés 1. Köszönetnyilvánítás A számítógépes játékfejlesztésről 3

Tárgy. Forgóasztal. Lézer. Kamera 3D REKONSTRUKCIÓ LÉZERES LETAPOGATÁSSAL

Képfeldolgozás. 1. el adás. A képfeldolgozás m veletei. Mechatronikai mérnök szak BME, 2008

Egybevágósági transzformációk. A geometriai transzformációk olyan függvények, amelyek ponthoz pontot rendelnek hozzá.

A játékfejlesztés több területből áll. A kódolás csupán egy része a munkáknak.

Panorámakép készítése

Az ipari robotok definíciója

Lin.Alg.Zh.1 feladatok

Programfejlesztés az OpenGL segítségével (1. rész) A 3D programozás alapjai

MATLAB alapismeretek IV. Eredmények grafikus megjelenítése: vonalgrafikonok

Programozási környezetek

Tartalom Képernyő részei... 2

Láthatósági kérdések

Objektumok és osztályok. Az objektumorientált programozás alapjai. Rajzolás tollal, festés ecsettel. A koordinátarendszer

Matematika A1a Analízis

Mesh generálás. IványiPéter

Számítógépes grafika

9. SZERSZÁMOK POZÍCIONÁLÁSA

Koós Dorián 9.B INFORMATIKA

FEJLETT GRAFIKAI ALGORITMUSOK

Az egyenlőtlenség mindkét oldalát szorozzuk meg 4 16-al:

F2. OpenGL grafika. Vertex szintű művelet Raszteriz. Pixelművelet. Textúra. F2.1. ábra A megjelenítési cső

Matematika (mesterképzés)

1. Fénysugár követő és festő algoritmus (3p) fénysugárkövető módszer Festő algoritmus: 2. Fények, fény, fény az opengl-ben, anyagtulajdonság (12pt)

Termék modell. Definíció:

Infobionika ROBOTIKA. IX. Előadás. Robot manipulátorok I. Alapfogalmak. Készült a HEFOP P /1.0 projekt keretében

Lineáris leképezések. Wettl Ferenc március 9. Wettl Ferenc Lineáris leképezések március 9. 1 / 31

AxisVM rácsos tartó GEOMETRIA

VIK A2 Matematika - BOSCH, Hatvan, 3. Gyakorlati anyag. Mátrix rangja

16. tétel Egybevágósági transzformációk. Konvex sokszögek tulajdonságai, szimmetrikus sokszögek

SZAKKÖZÉPISKOLA ÉRETTSÉGI VIZSGRA FELKÉSZÍTŐ KK/12. ÉVFOLYAM

Szegedi Tudományegyetem Informatikai Tanszékcsoport tanév

Matematika tanmenet 12. osztály (heti 4 óra)

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Geometria III.

Haladó lineáris algebra

Pneumatika az ipari alkalmazásokban

1. A komplex számok ábrázolása

Máté: Számítógépes grafika alapjai

Programozás BMEKOKAA146. Dr. Bécsi Tamás 8. előadás

Vektorterek. =a gyakorlatokon megoldásra ajánlott

Virtuális Valóság. Működése és használata

Geometriai transzformációk

MATEMATIKA TANMENET. 9. osztály. 4 óra/hét. Budapest, szeptember

Komputeralgebra rendszerek

Matematika szigorlat június 17. Neptun kód:

MATEMATIKA TANMENET 9.B OSZTÁLY FIZIKA TAGOZAT HETI 6 ÓRA, ÖSSZESEN 216 ÓRA

A számítógépes grafika alapjai kurzus, vizsgatételek és tankönyvi referenciák 2014

Kérdés Lista. A Magyarországon alkalmazott rajzlapoknál mekkora az oldalak aránya?

Osztályozóvizsga és javítóvizsga témakörei Matematika 9. évfolyam

1. Mátrixösszeadás és skalárral szorzás

MATLAB alapismeretek I.

TANMENET ... Az iskola fejbélyegzője. a matematika tantárgy. tanításához a 9. a, b osztályok számára

TikZ, a L A T E X grakája

I. VEKTOROK, MÁTRIXOK

Lakóház tervezés ADT 3.3-al. Segédlet

Vonatablakon át. A szabadvezeték alakjának leírása. 1. ábra

TÉRINFORMATIKA II. Dr. Kulcsár Balázs Ph.D. adjunktus. Debreceni Egyetem Műszaki Kar Műszaki Alaptárgyi Tanszék

Direct3D pipeline. Grafikus játékok fejlesztése Szécsi László t03-pipeline

Geometriai modellezés. Szécsi László

Hajder Levente 2017/2018. II. félév

Felhasználói kézikönyv - Android kliens

Modellezési transzformáció: [r lokális,1] T M = [r világ,1] Nézeti transzformáció: [r világ,1] T v = [r képernyo,1]

Feladatok. Tervek alapján látvány terv készítése. Irodai munka Test modellezés. Létező objektum számítógépes modelljének elkészítése

Matematika osztályozó vizsga témakörei 9. évfolyam II. félév:

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Klár Gergely 2010/2011. tavaszi félév

Átírás:

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./0. 3D grafika programozása OpenGL támogatással Transzformációk

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./1. Transzformációk az OpenGL-ben Modelltranszformációk Nézet-transzformációk kamera orientálása vetítési transzformációk Animációk Leképezés a képernyőre

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./2. Kamera analógia A 3D megjelenítés egy fénykép készítéseként fogható fel (sok fénykép készítéseként!) nézeti tértartomány kamera modell állvány

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./3. Kamera analógia és transzformációk Vetítési transzformációk (projection) a kamera lencséinek beállítása Látvány transzformációk (camera) a kamera helye és orientációja által meghatározott nézeti térfogat a világkoordinátarendszerben nézeti térfogat Modell-transzformációk (modell) a modell mozgatása Kép transzformációk (viewport) a síkbeli kép nagyítása/kicsinyítése kamera állvány modell

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./4. Koordinátarendszerek és transzformációk A kép létrehozásának lépései a modellgeometria megadása világ koordináták a kamera helyzetének megadása kamera koordináták a vetítés megadása ablakkoordináták leképezés a képernyőre képernyőkoordináták Mindegyik lépés transzformációkat jelent Mindegyik transzformáció változásokat jelent a koordinátarendszerekben nézeti térfogat kamera modell állvány

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./5. Affin transzformációk A geometriai viszonyokat megőrző transzformációkat végzünk Vonalakkal, sokszögekkel, 3D primitívekkel (quadrics, pl. gömb) Affine = hasonlósági, lineáris, elsőfokú Forgatás (rotation), eltolás (translation), skálázás (scaling) Vetítés (projection) Konkatenálás (összefűzés, egymás utáni alkalmazás) https://www.cs.auckland.ac.nz/courses/compsci773s1c/lectures/imageprocessing-html/topic2.htm

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./6. Homogén koordináták Minden vertex egy oszlopvektor v x y z w w rendszerint 1.0 Minden művelet mátrixszorzás Irányok (irányított vonal szakaszok) x=0.0 értékkel reprezentálhatók https://www.cs.auckland.ac.nz/courses/compsci773s1c/lectures/imageprocessing-html/topic2.htm

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./7. 3D transzformációk Minden vertex 4x4-es mátrixokkal transzformálódik minden affin művelet mátrixszorzással valósul meg a mátrixokat oszlopfolytonosan tárolja az OpenGL a mátrixok mindig hátulról szorzottak a mátrix és vektor szorzása Mv alakú M m m m m 0 1 2 3 m m m m 4 5 6 7 m m m m 8 9 10 11 m m m m 12 13 14 15 https://www.cs.auckland.ac.nz/courses/compsci773s1c/lectures/imageprocessing-html/topic2.htm

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./8. A transzformációk megadása A transzformációkat kétféle módon adhatjuk meg mátrixokkal (glloadmatrix, glmultmatrix) transzformációs művelettel (glrotate, glortho) A programozónak nem kell emlékeznie a mátrixok értékeire nézzük meg a Red Book függelékét (Programming Guide)

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./9. A transzformációk programozása A kép létrehozása (renderelés) előtt adjuk meg a nézetet, kamera pozíciót és orientációt kamera helyének és orientációjának megadása a modell 3D geometriájának megadása Alkalmazzuk a mátrixokat beleértve a mátrix stack-et is Kombináljük, fűzzük össze a transzformációs lépéseket

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./10. Transzformációs pipeline v e r t e x tárgy szem vágás normalizált eszköz Modellnézet Mátrix Projekciós Mátrix Perspekíva Kezelés Ablak Transzf. ablak Modellnézet Modellnézet Projekció További számítások itt - anyag -> szín - árnyalási modell (flat) - sokszög renderelési mód - sokszög döfés (culling) - vágás (clipping)

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./11. Mátrix műveletek A kurrens mátrix stack megadása glmatrixmode( GL_MODELVIEW or GL_PROJECTION ) Egyéb mátrix, vagy stack műveletek glloadidentity() glpushmatrix() glpopmatrix() Ablak (viewport) Rendszerint az ablak kliens méretével egyezik Az y/x méretaránya egyezzen a projekciós transzformációnál használttal, egyébként torzul az ábra glviewport( x, y, width, height ) x, y bal alsó sarok, width, height a viewport mérete, lehetőleg egyezzen az ablak kliens méreteivel

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./12. Vetítési, projekciós transzformáció A nézési csonkagúla alakja Perspektivikus vetítés gluperspective( fovy, aspect, znear, zfar ) glfrustum( left, right, bottom, top, znear, zfar ) Merőleges (orthographic) vetítés glortho( left, right, bottom, top, znear, zfar ) gluortho2d( left, right, bottom, top ) - egy közel nulla z értékkel hívja a glortho-t http://what-when-how.com/opengl-programming-guide/projection-transformations-viewing-opengl-programming/

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./13. Vetítési transzformációk alkalmazása Merőleges vetítés glmatrixmode( GL_PROJECTION); glloadidentity(); glortho( left, right, bottom, top, znear, zfar); http://what-when-how.com/opengl-programming-guide/projection-transformations-viewing-opengl-programming/

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./14. Látvány transzformációk alkalmazása Kamera pozíció a modelltérben pozicionáljuk a kamerát és irányítsuk a tárgyra A színen történő átrepüléshez változtassuk a látványtranszformációt rajzoljuk újra a tárgyat glulookat ( szem_x, szem_y, szem_z, center_x, center_y, center_z, uniq-x, uniq_y, uniq_z) uniq vektor egyedi orientációt ad meg (a függőleges iránya) kerüljük el a hibás pozíciók megadását http://what-when-how.com/opengl-programming-guide/projection-transformations-viewing-opengl-programming/

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./15. Vetítési mintaalkalmazás, Nate Robin

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./16. Modell transzformációk A tárgy mozgatása gltranslate{fd}( x, y, z ) A tárgy forgatása tetszőleges tengely körül glrotate{fd}( angle, x, y, z ) az angle szög fokokban adandó meg Skálázás (zoomolás), tükrözés glscale{fd}( x, y, z )

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./17. Modelltranszformációs mintaalkalmazás, Nate Robin

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./18. A vetítés balkezes forgatású A vetítési transzformációk (gluperspective, glortho) balkezes koordinátarendszereket használnak znear és zfar úgy tekinthető, mint a nézési ponttól vett távolságok Minden más transzformáció koordinátarendszere jobbkezes, beleértve a renderelendő vertexeket is y z+ y balkezes x jobbkezes x z+

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./19. A transzformációk általános használata Példák a resize( ) függvényre a vetítés újrabeállítása & látványtranszformációk végrehajtása az angle szög fokokban adandó meg Rendszerint az ablak átméretezésekor hívjuk meg Regisztrálandó, mint callback függvény a glutreshapefunc() számára

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./20. Resize(): Perspektive és LookAt használata void resize( int w, int h ) { glviewport( 0, 0, (GLsizei) w, (GLsizei) h ); glmatrixmode( GL_PROJECTION ); glloadidentity(); gluperspective( 65.0, (GLfloat) w / h, 1.0, 100.0 ); glmatrixmode( GL_MODELVIEW ); glloadidentity(); glulookat( 0.0, 0.0, 5.0, 0.0, 0.0, 0.0, 0.0, 1.0, 0.0 ); }

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./21. Resize(): Perspektive és Translate használata Ugyanaz a hatás elérhető Translate-vel is: void resize( int w, int h ) { glviewport( 0, 0, (GLsizei) w, (GLsizei) h ); glmatrixmode( GL_PROJECTION ); glloadidentity(); gluperspective( 65.0, (GLfloat) w/h, 1.0, 100.0 ); glmatrixmode( GL_MODELVIEW ); glloadidentity(); gltranslatef( 0.0, 0.0, -5.0 ); } A világbeli összes objektum öt egységgel való eltávolítása (-5) magunktól ugyanaz, mint a kamerát öt egység távolságra (5) megadni.

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./22. Resize(): Ortho (1. rész) Az új aspect értékkel fogjuk módosítani a világtér határait a modelltérnél (left, right, bottom, top) az új modelltér alakjától függően. void resize( int width, int height ) { GLdouble aspect = (GLdouble) width / height; GLdouble left = -2.5, right = 2.5; GLdouble bottom = -2.5, top = 2.5; glviewport( 0, 0, (GLsizei) width, (GLsizei) height ); glmatrixmode( GL_PROJECTION ); glloadidentity(); folytatódik

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./23. Resize(): Ortho (2. rész) Az ablak új aspect értékének megfelelően kell átméretezni a modelltér méreteit (a Frustum-ot). } if ( aspect < 1.0 ) { left /= aspect; right /= aspect; } else { bottom *= aspect; top *= aspect; } glortho( left, right, bottom, top, near, far ); glmatrixmode( GL_MODELVIEW ); glloadidentity();

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./24. Modelltranszformáció láncolatok létrehozása Első probléma: hierarchikus objektumszerkezet a pozíciók függenek az előző pozícióktól példa: robotkar robotkéz; Megoldás: mozgó lokális koordinátarendszer a modelltranszformációk mozgatják a koordinátarendszert hátulról szorzó oszlopfolytonos mátrixok az OpenGL jobbról szorozza a mátrixokat.

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./25. Modelltranszformáció láncolatok létrehozása.. Második probléma: az objektumok a világkoordinátarendszer origójához képest mozognak hibaeset: az objektumom rossz origó körül forog Megoldás: rögzített koordinátarendszer a modelltranszformációkat rögzített koordinátarendszerben képzeljük el elölről szorzó oszlopfolytonos mátrixok az OpenGL jobbról szorozza a mátrixokat meg kell fordítani a műveletek sorrendjét hogy elérjük a kívánt mozgást

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./26. További vágósíkok Legalább 6 további vágósík alkalmazható (lassulás!) Jól alkalmazható belső metszetek készítéséhez A modellnézet mátrix mozgatja a vágósíkot Ax+Bx+Cz+D < 0 lesz lemetszve (coeff vektorban adva A,B,C,D) glenable( GL_CLIP_PLANEi ) glclipplane( GL_CLIP_PLANEi, GLdouble* coeff )

Alkalmazott Informatikai Tanszék SZÁMÍTÓGÉP-PROGRAMOZÁS dr.dudás László 22./27. A transzformációs átszámítás irányának megváltoztatása Képernyő adatot akarunk megtudni a világ koordinátarendszerben glgetintegerv( GL_VIEWPORT, GLint viewport[4] ) glgetdoublev( GL_MODELVIEW_MATRIX, GLdouble mvmatrix[16] ) glgetdoublev( GL_PROJECTION_MATRIX, GLdouble projmatrix[16] ) gluunproject( GLdouble winx, winy, winz, mvmatrix[16], projmatrix[16], GLint viewport[4], GLdouble *objx, *objy, *objz ) winz = 0 -> near síkba, winz = 1 far síkba számol át; interpoláció kell gluproject a világ koordinátákat számítja át a képernyő koordinátarendszerbe