3D megjelenítési technikák

Dr. Fekete, Róbert Tamás

Dr. Antal, Ákos

Dr. Tamás, Péter

Décsei-Paróczi, Annamária

A tananyag a TÁMOP-4.1.2.A/1-11/1-2011-0042 azonosító számú „ Mechatronikai mérnök MSc tananyagfejlesztés ” projekt keretében készült. A tananyagfejlesztés az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával valósult meg.

Kézirat lezárva: 2014 március

Lektorálta: Tóth Bertalan

További közreműködő: Décsei-Paróczi Annamária

A kiadásért felel a(z): BME MOGI

Felelős szerkesztő: BME MOGI

2014


Tartalom
1. A háromdimenziós technikák pszichológiai és fiziológiai háttere
1.1. Az emberi érzékelés
1.2. Az emberi észlelés
1.3. Az emberi szem felépítése és működése
1.3.1. Az érzékelt elektromágneses sugárzás
1.3.2. Az emberi szem elhelyezkedése és a szemmozgások
1.3.3. Az emberi szem felépítése, anatómiája
1.3.4. A retina és a fotoreceptorok
1.3.5. Látási hibák
1.4. A látópálya felépítése és működése
1.4.1. A retinális ganglionsejtek, a gyűjtősejtek és a receptív mező
1.4.2. A látópálya
1.4.3. A látás további területei
1.5. A színlátás
1.5.1. A színlátás fotoreceptorai
1.5.2. Mitől függ a tárgyak színe?
1.5.3. Az emberi színlátás opponens színelmélete
1.5.4. Konstanciák a feldolgozás során
1.6. A háromdimenziós mélységészlelés
1.6.1. A Gestalt-elmélet
1.6.2. A jelzőmozzanatokról
1.6.3. Monokuláris jelzőmozzanatok
1.6.4. Binokuláris jelzőmozzanatok
1.6.5. A binokuláris diszparitás
1.7. Az emberi mélységészlelés hibái
1.8. Összefoglalás
1.9. A felkészülést segítő kérdések
1.10. A fejezet fontosabb kifejezései
Felhasznált irodalmak
2. A háromdimenziós technikák optikai és interferometriai háttere
2.1. A háromdimenziós megjelenítők - a feladat megfogalmazása
2.2. A színek
2.3. Alapfogalmak
2.3.1. Inger, észlelet és érzéklet
2.3.2. A szín, mint megnevezés
2.3.3. A tarka színek jellemzői
2.3.4. Metaméria
2.3.5. Színkeverési módok
2.3.5.1. Az additív színkeverés
2.3.5.2. A Grassmann-törvények
2.3.5.3. A szubtraktív színkeverés
2.4. A CIE-féle színmérő rendszer
2.4.1. A színmeghatározás eredeti módszere
2.4.2. Az CIE RGB-színrendszere
2.4.3. Az XYZ-színrendszer
2.4.4. Az RGB színrendszer
2.4.5. A CMY és a CMYK színrendszerek
2.4.6. A HLS színrendszer
2.4.7. Egyenletes színterek
2.4.8. Színtranszformációk
2.5. Ellenőrző kérdések:
2.6. További irodalom a szakterület tanulmányozásához
Felhasznált irodalmak
3. A 3D grafika elméleti alapjai
3.1. Grafikus tárgymodellek
3.1.1. Raszteres és vektoros leírás
3.2. Koordináta-rendszerek
3.2.1. Leggyakrabbak használt koordinátarendszerek
3.2.2. Homogén koordináták
3.3. Görbék, felületek és testek
3.3.1. Paraméteres görbemegadás
3.3.2. Folytonosság és geometriai folytonosság
3.3.3. Az elsőfokú paraméteres görbeszakasz leírása
3.3.4. Hermite-féle harmadfokú görbeszakasz
3.3.5. Bezier-féle harmadfokú görbeszakasz
3.3.6. Természetes spline
3.3.7. Catmull-Rom görbék, a kardinális spline
3.3.8. B-spline-ok
3.3.8.1. Harmadfokú B-Spline görbék
3.3.8.1.1. A harmadfokú bázisgörbék jellege
3.3.8.1.2. Közelítés harmadfokú B-spline görbével
3.3.8.2. Közelítés harmadfokú nem egyenközű B-Spline görbékkel
3.3.8.3. Interpoláció B-Spline görbékkel
3.3.8.3.1. Egyenletes időosztás
3.3.8.3.2. Osztás poligonkerület ívhossza szerint
3.3.8.3.3. Centripetális módszer
3.3.8.4. Racionális, nem egyenközű B-spline (Non-Uniform Rational B-Spline - NURBS)
3.3.9. Szabadformájú felületek
3.3.9.1. Felületek leírása háromszöghálókkal
3.3.9.2. Spline felületek
3.3.9.2.1. Harmadfokú Hermite-felületfolt
3.3.9.2.2. Harmadfokú Bezier-felületfolt
3.3.9.2.3. Felületfoltok illesztése
3.3.9.2.4. Harmadfokú B-spline felületek
3.3.10. Testek
3.3.10.1. CSG modellek
3.3.10.2. B-Rep testábrázolás
3.3.10.3. Térfogati modellek
3.4. A megjelenítő cső
3.4.1. A tér leképezése síkra
3.4.2. Window-Viewport transzformáció
3.4.3. A láthatóság
3.5. A képszintézis alapfogalmai
3.5.1. Fénysűrűség
3.5.2. Fényforrások
3.5.2.1. Pontszerű fényforrás (Point Light)
3.5.2.2. Irány (párhuzamos) fényforrás (Direction Light)
3.5.2.3. Ambiens fényforrás (Ambient Light)
3.5.2.4. Égboltfény (Sky Light)
3.5.2.5. Reflektorfény (Spot Light)
3.5.3. Anyagok, visszaverődés
3.5.3.1. A BRDF
3.5.3.2. Diffúz anyagok jellemzése
3.5.3.3. Reflexív anyagok, ideális visszaverődés
3.5.3.4. Ideális törés
3.5.3.5. Phong illuminácós modell
3.5.4. Az árnyalás modellezése
3.5.4.1. Az árnyalási egyenlet
3.5.4.2. Sugárkövetés
3.5.4.3. Inkrementális képszintézis, egyszerűsített árnyalási egyenlet
3.5.4.4. Felületek közelítő árnyalása
3.5.4.5. Fénysugarak haladása nem átlátszó térben
Irodalmak:
4. OpenGL
4.1. A Grafikus csővezeték
4.1.1. Alkalmazás
4.1.2. Vertex Shader
4.1.3. Raszterizálás
4.1.4. Fragment Shader
4.1.5. Raszterműveletek
4.1.6. Framebuffer
4.2. Az OpenGL Használata
4.2.1. Az OpenGL klasszikus inicializálása
4.2.1.1. Az OpenGL eszközkapcsolata
4.2.1.2. A használni kívánt megjelenítési kapcsolat meghatározása
4.2.1.3. A pixelformátum meghatározása
4.2.1.4. A megjelenítési kapcsolat létrehozása, kiválasztása és törlése
4.3. GLUT
4.3.1. GLUT telepítés Windows rendszerben
4.4. Adatok, konstansok és függvények az OpenGL rendszerben
4.5. Első lépések az OpenGL-ben
4.5.1. Színek megadása
4.5.2. Rajzpufferek, a pufferek előkészítése
4.5.3. Kirajzolás hagyományos módon
4.5.4. Hello OpenGL hagyományosan a C++/CLI-vel
4.5.5. Hello OpenGL a glut-tal
4.6. Rajzolás
4.6.1. Alapvető rajzelemek
4.6.2. A geometriai objektumok és megjelenítési módjaik
4.6.2.1. Pontok
4.6.2.2. Vonalak
4.6.2.3. Konvex sokszögek
4.6.2.4. Színek, interpolálás
4.6.2.5. Görbevonalú alakzatok rajzolása, tesszalláció
4.6.3. Transzformációk
4.6.3.1. Modellezési transzformációk
4.6.3.2. Vetítési transzformációk
4.6.3.3. Viewport-transzformációk
4.6.3.4. Rajzolás pixel koordinátákkal
4.6.3.5. Mátrix verem
4.6.4. Takarások kezelése - a Z-puffer
4.6.5. Animáció
4.6.5.1. Dupla pufferelés
4.6.6. A glu segédkönyvtár térbeli alapobjektumai
4.6.6.1. Szabad formájú görbék és felületek
4.6.6.2. Bezier görbék és felületek
4.6.6.3. A glu NURBS görbéi és felületei
4.6.6.4. Listák
4.6.7. Áttetsző anyagok, az RGBA színmodell használata
4.6.8. Megvilágítások
4.6.9. Anyagok
4.6.10. Árnyalások
4.6.11. Textúra
4.6.11.1. A textúra elkészítése
4.7. 3D-s objektumok
4.7.1. 3D-s objektumok megadása
4.7.2. 3D-s objektumok rajzolása
4.7.3. Objektum megvilágítása
4.7.4. Az objektum forgatása
4.7.5. Takart vonalak - hátsó lap eldobás
5. Klasszikus és Modern megjelenítési technikák
5.1. Elektromechanikus kijelzők
5.1.1. A split-flap kijelzők
5.1.2. A flip-disc kijelző
5.2. A VFD kijelzők
5.3. Csavart nematikus térvezérlésű LCD kijelzők
5.4. CRT kijelzők
5.5. A SED és FED kijelzők
5.6. Az EP (elektronikus papír) kijelzők
5.7. Az LCD / TFT kijelzők
5.8. A PDP kijelzők
5.9. A lézer kijelzők
5.10. Az OLED kijelzők
5.11. A LED kijelzők
5.12. Projektorok és a DLP / DMD technikák
5.13. Összefoglalás
5.14. A felkészülést segítő kérdések
5.15. A fejezet fontosabb kifejezései
Felhasznált irodalmak
6. A háromdimenziós megjelenítés története
6.1. A térlátásról
6.2. A háromdimenziós technikákról
6.3. A háromdimenziós filmvetítésről
6.4. Összefoglalás
6.5. Felkészülést segítő kérdések
6.6. A fejezet fontosabb kifejezései
Felhasznált irodalmak
7. Illúzión alapuló technikák, autosztereogramok
7.1. A korszerű sztereo-szétválasztásos módszerek
7.2. A Wiggle-sztereogram
7.3. Az autosztereogramok
7.4. A véletlen-pont sztereogram
8. Holográfia a háromdimenziós megjelenítésben és a méréstechnikában
8.1. A holográfia alapelvei
8.2. A holografikus felvétel
8.2.1. A vastag hologram
8.2.2. A rekonstrukció
8.2.3. A felvétel és rekonstrukció
8.2.4. Holografikus optikai elemek
8.2.5. Digitális holográfia
8.3. Hullámoptikai tárgyalásmód
8.3.1. A holografikus felvétel
8.3.2. A rekonstrukció
8.4. Holografikus interferometria
8.4.1. A holografikus interferométer
8.4.2. A kétexpozíciós holografikus interferometria technika
8.4.3. A holografikus interferogramok kiértékelése
8.5. Holografikus felvételi nyersanyagok
8.5.1. A nyersanyagok karakterisztikája
8.5.2. A nyersanyag felépítése
8.5.3. Az ezüst halogén alapú holografikus nyersanyagok kidolgozása
8.5.4. Egyéb nyersanyagok
8.5.4.1. Fotoreziszt emulzió
8.5.4.2. Termoplasztikus emulzió
8.6. Ellenőrző kérdések
Hivatkozások
9. Egyszerű és komplex optikai szűrőn alapuló, passzív sztereo technikák
9.1. Az anaglif (anaglyph) technika
9.2. Interferenciaszűrős rendszerek (Infitec)
10. Lineáris és cirkuláris polarizáción alapuló, passzív sztereo technikák
11. Szinkronizált takaráson alapuló, aktív sztereo technikák
12. A tényleges csatornajel szétválasztáson alapuló sztereo technikák
12.1. A párhuzamos nézés technikája
12.2. Kézi sztereoszkóp
12.3. Fejre illeszthető háromdimenziós kijelzők
12.4. A holovízió, mint háromdimenziós megjelenítési lehetőség
Felhasznált irodalom
13. Párhuzamos akadályokat alkalmazó autosztereo technikák
14. Volumetrikus (térbeli) háromdimenziós technikák
14.1. Statikus, volumetrikus kijelzők
14.2. Dinamikus, volumetrikus kijelzők
15. A háromdimenziós technikák alkalmazási lehetőségei
15.1. Háromdimenziós számítógépes játékok és más szoftverek
15.2. Háromdimenziós mozi
15.3. Háromdimenziós televíziózás
15.4. Háromdimenziós vizualizáció az iparban és az egészségügyben
15.5. A háromdimenziós megjelenítés alkalmazásának lehetőségei
15.6. A háromdimenziós megjelenítés távlatai
15.7. Ellenőrző kérdések a fejezethez
Felhasznált irodalmak
16. Háromdimenziós tartalmak további létrehozásának lehetőségei
16.1. A háromdimenziós technikák és a holográfia
Irodalmak
Az ábrák listája
1.1. Interdiszciplináris tudományok
1.2. Kognitív tudományok (az emberi agy fontosabb területei)
1.3. Az elektromágneses spektrum
1.4. Az elektromágneses spektrum látható tartományának kinagyítása
1.5. Az emberi látómező
1.6. Az emberi szem mozgató izmai
1.7. Az emberi szem felépítése
1.8. A retina felépítése
1.9. Akkomodációs hibák (balra: miópiás szem, jobbra: hiperópiás szem, alul: ezek korrekciói)
1.10. Receptív mezők
1.11. Látópálya és annak sérülései
1.12. Látásért felelős agyterületek
1.13. Az M sejtek és a P sejtek arányai
1.14. A retina fotoreceptorai (balra: pálcika, jobbra: csap)
1.15. A csapok és pálcikák sűrűsége a perinán (feketével: pálcikák, pirossal: csapok)
1.16. tárgyak színe
1.17. A csapok és pálcikák relatív érzékenységi görbéi
1.18. Az opponens-szín elmélet
1.19. A színkonstancia jelensége
1.20. Egy példa a Gestalt-szabályok alkalmazására (valójában a kép nem tartalmaz kockát)
1.21. A retinális nagyság (a két autó azonos képmérettel bír, mégis el tudjuk dönteni, hogy melyik van távolabb, ha rendelkezünk megfelelő priori információkkal a tárgyat illetően)
1.22. A horizont-hatás
1.23. A takarási-hatás
1.24. Perspektíva
1.25. Textúra
1.26. Az elkékülési hatás és légtávlat
1.27. A fény-árnyék játék
1.28. Akkomodáció
1.29. A mozgási parallaxis
1.30. A binokuláris parallaxis és diszparitás
1.31. A horopter és a sztereo látótér
1.32. Egy Julesz Béla féle random-dot sztereogramm
1.33. Egy rosszullétre okot adó jelenet az Avatar című filmből
2.1. A színingerek észlelésének folyamata
2.2. A metaméria jelenségének szemléltető ábrája
2.3. Az additív színkeverés
2.4. Hermann Günther Grassmann (1809-1877) [2.26.]
2.5. A szubtraktív színkeverés
2.6. A bíbor szín szubtraktív keverésének módja
2.7. A sárga szín szubtraktív keverésének módja
2.8. A kékeszöld (türkiz) szín szubtraktív keverésének módja
2.9. A vörös szín szubtraktív keverésének módja
2.10. A zöld szín szubtraktív keverésének módja
2.11. A kék szín szubtraktív keverésének módja
2.12. A színmeghatározás módszere
2.13. A CIE 1931 színmérő rendszer alap színingert megfeleltető függvényei
2.14. A CIE 1931 színmérő rendszer színingert megfeleltető függvényei
2.15. A CIE xyY színháromszög
2.16. A CIE 1931 színességi diagram
2.17. A Planck-vonal és a korrelált színhőmérséklet értelmezése
2.18. A CMY színrendszer
2.19. Példa egyenletes színtérre
2.20. A színinger különbség értelmezése a színtérben
2.21. A feladat értelmezése
2.22. A CRT monitorokon megvalósuló additív színkeverés gyakorlati kivitelezésének lehetséges módozatai
2.23. CRT monitor csatornáinak spektrális eloszlásfüggvényei [2.25.]
2.24. A feladat megoldásának menete
3.1. Vektoros A
3.2. Raszteres A
3.3. Homogén koordináták
3.4. G1 görbecsatlakozás
3.5. Nem G1 görbecsatlakozás
3.6. Nem G1 görbecsatlakozás
3.7. Az egyenes szakasz és adatai
3.8. Az egyenes szakasz súlyfüggvényei
3.9. Hermite-féle görbeszakasz
3.10. Az Hermite-féle súlyfüggvények
3.11. A harmadrendű Bezier-görbe
3.12. Spline görbe
3.13. A kardinális spline
3.14. A B-spline súlyfüggvények
3.15. A B-spline szakaszok a befoglaló téglalapban
3.16. Elfajuló B-spline szakaszok
3.17. Bezier féle felületfolt
3.18. Felületfoltok illesztése
3.19. CSG modellezés
3.20. A megjelenítési cső
3.21. Az általános axonometria
3.22. Az általános axonometria
3.23. A katonai axonometria
3.24. Centrális vetítés
3.25. A Window-Viewport transzformáció
3.26. Hátsó lap eldobás
3.27. Nem sorbarendezhető háromszögek
3.28. BSP fa
3.29. Területfelosztás (Area Dubdivision)
3.30. A területfelosztás esetei
3.31. A Z puffer és működése
3.32. A térszög
3.33. Pontszerű fényforrás
3.34. Irány fényforrás
3.35. Ambiens fényforrás
3.36. Az égboltfény
3.37. Reflektor fényforrás
3.38. A visszaverődés
3.39. Diffúz visszaverődés
3.40. Ideális visszaverődés
3.41. Fénytörés közegek határán
3.42. Phong-féle modell
3.43. Fénysugarak haladása nem átlátszó térben.
4.1. Az Open GL megjelenítési csővezeték
4.2. Háromszög raszterizálás, interpolálás
4.3. OpenGL, GLUT, és az alkalmazás helye a szoftveres veremben
4.4. Hagyományos OpenGL alkalmazás
4.5. GLUT alkalmazás
4.6. A kamera analógia
4.7. Az alakzatok
4.8. Az alakzatok
4.9. 10 pixeles zöld pont
4.10. Vonaltípusok
4.11. Háromszög láthatatlan éllel
4.12. Mintázott sokszög
4.13. GL_SMOOTH
4.14. GL_FLAT
4.15. Kör tesszeláció
4.16. Körlap
4.17. A képalkotási transzformációk sora
4.18. A gluLookAt() függvény kamera-pozíciója
4.19. A forgó téglalap
4.20. A glOrtho() leképezés
4.21. A centrális leképezés
4.22. Kör pixel koordinátákkal
4.23. A takarás kirajzolási sorrenddel
4.24. Mélység teszt algoritmus
4.25. Takarás mélység teszt algoritmussal
4.26. Dupla pufferelés
4.27. Dupla pufferelés
4.28. Forgó perspektivikus kocka
4.29. A glu elemek
4.30. A Bezier görbe
4.31. A Bezier felület
4.32. A Bezier felület
4.33. A Bezier felület
4.34. RGBA színek
4.35. Árnyalt zászló
4.36. Textúra
4.37. Vertex és index puffer
4.38. 3D-s objektum
4.39. A megvilágított 3D-s objektum
4.40. A megvilágított 3D-s objektum
4.41. glDisable(GL_CULL_FACE)
4.42. glEnable(GL_CULL_FACE)
5.1. Szabványos kijelző felbontások
5.2. A split-flap kijelző
5.3. Flip-dot kijelző
5.4. Vákuum fluoreszcens kijelző
5.5. Vákuum fluoreszcens kijelző
5.6. Csavart nematikus térvezérlésű LCD kijelző
5.7. Katódsugárcsöves képernyő
5.8. A színes televízió katódsugárcsövének felépítése
5.9. A SED és FED kijelzők vázlata (balra egy CRT kijelző látható)
5.10. Az E-papír elvi vázlata
5.11. A Gyricon működése
5.12. Színszűrős kivitel működése
5.13. E-book olvasó
5.14. Az e-ink elektroforézis technológia vázlata
5.15. LCD kijelző működése
5.16. A PDP kijelző felépítése
5.17. A PDP kijelző egy pixeljének felépítése
5.18. A lézer kivetítő felépítése
5.19. Hajlékony OLED kijelző
5.20. Egy OLED pixel felépítése
5.21. LED fal
5.22. A DMD technológia színkeverése
5.23. A DMD technológia színkeverése
5.24. A DMD pixelek felépítése
6.1. Háromdimenziós megjelenítés
6.2. Leonardo da Vinci arcképe
6.3. George Berkeley arcképe
6.4. Immanuel Kant arcképe
6.5. Hermann von Helmholtz arcképe
6.6. Rudolf Hermann Lotze arcképe
6.7. Charles Wheatstone arcképe
6.8. Wheatstone-féle sztereoszkóp
6.9. David Brewster arcképe
6.10. David Brewster posztere a kiállításon
6.11. Jules Duboscq arcképe
6.12. Brewster-féle sztereoszkóp
6.13. Oliver Wendell Holmes, Sr. arcképe
6.14. „Mexikói sztereoszkóp” képe
6.15. Julesz Béla arcképe
6.16. Julesz-féle random dot stereogram
6.17. Autosztereogram
6.18. Lumiere-fivérek
6.19. Edwin H. Land
6.20. Bwana Devil
6.21. IMAX kamera
6.22. IMAX vetítőgépek
6.23. Autosztereokopikus kijelző (PlayStation Portable)
6.24. Otthoni 3D TV
6.25. Autosztereokopikus kijelző (Nintendo)
6.26. 1800-as évekbeli festmény, amelyben egy sztereoszkóp is helyet kapott
6.27. 3d kamera egy sporteseményen
7.1. Wiggle-sztereogram
7.2. Wiggle-sztereogram
7.3. Wiggle-sztereogram
7.4. Autosztereogram (közelebb lévő tigrisek)
7.5. Autosztereogram (cápa)
7.6. Egy Julesz Béla féle random-dot sztereogram
8.1. A holografikus felvétel készítésének blokkvázlata
8.2. A hullám tulajdonságainak szemléltetése.
8.3. A hologram rekonstrukciójának blokkvázlata
8.4. A térfrekvencia fogalma
8.5. A digitális hologram készítésének blokkvázlata
8.6. A holografikus felvétel
8.7. Holografikus rekonstrukció
8.8. Holografikus interferometria
8.9. Kétexpozíciós holografikus interferometria
8.10. A kétexpozíciós holografikus interferogram készítésének blokkvázlata
8.11. A kétexpozíciós holografikus interferogram rekonstrukciójának blokkvázlata
8.12. A különböző ezüsthalogén alapú nyersanyagok spektrális érzékenysége.
8.13. Az ezüst halogén alapú nyersanyag karakterisztikája, a gamma görbe.
8.14. A 8E56 típusú, ezüsthalogén alapú holografikus nyersanyag karakterisztikája (katalógus adat)
8.15. Az ezüst halogén alapú nyersanyag felépítése.
8.16. A 8E75 típusú, ezüsthalogén alapú holografikus nyersanyag spektrális érzékenysége (katalógus adat)
8.17. Az amplitúdó hologram kidolgozásának menete
8.18. A fázis hologram kidolgozásának menete
8.19. A fotoreziszt emulzió a kidolgozás után
9.1. Anaglif kép
9.2. Anaglif szemüveg
9.3. Interferenciaszűrő-típusok
9.4. Az interferenciaszűrő működése
9.5. Interferenciaszűrő-készlet
10.1. Cirkuláris polarizációs szűrő mechanizmusa, a vetítőtől a projekciós felületig
10.2. Cirkuláris polarizációs szűrő mechanizmusa, a projekciós felülettől a szemig
11.1. Szinkronizált takaráson alapuló, aktív technika
12.1. Kézi sztereoszkóp I.
12.2. Kézi sztereoszkóp II.
12.3. Kézi sztereoszkóp III.
12.4. Fejre illeszthető háromdimenziós kijelző
14.1. Volumetrikus kijelző I.
14.2. Volumetrikus kijelző II.
14.3. Volumetrikus kijelző III.
14.4. Volumetrikus kijelző IV.
14.5. Statikus volumetrikus kijelző
14.6. Dinamikus volumetrikus kijelző
A táblázatok listája
2.1. A CIE 1931 színmérő rendszer alap színingert megfeleltető függvényei
2.2. A CIE 1931 színmérő rendszer színingert megfeleltető függvényei
2.3. A vizuális érzékelés és a színkülönbség kapcsolata
2.4. P22 típusú CRT monitorcsatornák spektrális eloszlásfüggvényei [2.25.]

1. fejezet - A háromdimenziós technikák pszichológiai és fiziológiai háttere

Mivel ez a könyv elsősorban a műszaki érdeklődésű fiataloknak íródott, fontosnak éreztük, hogy mielőtt belevágunk a mérnök hallgatóknak már megszokott technológiai fogalmak ecsetelésébe, adjunk egy átfogó bevezetést a releváns pszichológiai és fiziológiai folyamatokba, amelyek nélkülözhetetlenek a háromdimenziós élmény létrejöttéhez. Ezzel reméljük, csak közelebb visszük az Olvasót a teljes folyamat megértéséhez és felkeltjük érdeklődését az interdiszciplináris tudományok iránt.


Jelen fejezetben elsősorban azokra a nem műszaki területekre koncentrálunk, amelyek hozzájárulnak a háromdimenziós élmény létrejöttéhez. Részletezzük az emberi szem felépítését és működését, amelyen keresztül az információ megérkezik a külvilágból elektromágneses sugárzás formájában. Megismerkedünk azon agyi folyamatokkal, idegpályákkal, amelyen keresztül agyunk feldolgozza a látottakat és lehetővé teszi az információ tudatosodását. Mivel számos technika alapul a színszűrés elvén, megismerkedünk az emberi színlátás mechanizmusával. Végül a legfontosabb rész következik az emberi mélységészlelés folyamatáról, amely lehetővé teszi, hogy egyáltalán háromdimenziós élményben legyen részünk.

1.2. ábra - Kognitív tudományok (az emberi agy fontosabb területei)


A pszichológián kívül sok tudományterület foglalkozik a tudatunkkal, viselkedésünkkel. Ilyenek például a biológia, a nyelvészet, a filozófia, az orvostudományok és napjainkban egyre szélesebb körben a különböző mérnöki tudományok. Ez a kapcsolódás nem csupán a tervezett eszközök, készülékek kényelmi szempontjait érinti, hanem a teljes ember-gép kapcsolatrendszert, amelynek szerves része többek között az ember és intelligens berendezései közötti kommunikáció hatékony megvalósítása. Napjainkban egyre több olyan műszaki kutatás, mérnöki fejlesztés létezik, amelynek lételeme a pszichológia – etológia, viselkedéstudomány és a kognitív tudományok. Csak két kiemelkedő példát említve: etorobotika – etológia és mechatronika – és kognitív informatika – pszichológia és informatika. Ezért a „jövő mérnökeinek” elengedhetetlen az interdiszciplináris gondolkodás mielőbbi elsajátítása.

Jelen fejezetben beszélni fogunk az emberi érzékelés és észlelés különbségéről, az emberi szem felépítéséről és működéséről, a látópálya felépítéséről és működéséről, a színlátásról, a háromdimenziós mélységészlelésről és végül az emberi mélységészlelés hibáiról.

1.1. Az emberi érzékelés

Az emberi érzékelés az a folyamat, amely során a külvilágból érkező információk – legyenek azok szagmolekulák, szöggyorsulás értékek, nyomás a bőrön vagy éppen elektromágneses sugárzás, fény – valamely érzékszervünkön keresztül – valamely modalitásban – elérhetővé válnak a feldolgozórendszerünk számára. Tehát a külvilág fizikai jelei alakulnak át a feldolgozó rendszerünk – központi idegrendszerünk – által befogadható jelekké. Ezt nevezzünk szignál transzdukciónak, vagyis szenzoros kódolásnak. Az érzékelés egy biológiai alapfolyamat, amely csupán az érzékszerveink által végzett folyamatokat érinti. Az érzékszerveink transzdukciót végző egységei a receptorok, amelyeknek modalitásonként eltérő a felépítésük és a működésük. A receptorok a fizikai jelekből csak a számukra megfelelő – adekvát – ingereket dolgozzák fel. A feldolgozás után már ingerületről beszélünk. Az ingerületek valójában neurális impulzusok, amelyek a központi idegrendszerbe továbbítódnak akciós potenciálok formájában.

1.2. Az emberi észlelés

Az észlelési folyamat – percepció – magából az érzékelésből és a hozzá kapcsolódó kognitív feldolgozásból áll. Amikor nézünk valamit, még nem biztos, hogy látjuk is. Érzékelés történhet észlelés nélkül is, de ez fordítva nem igaz. Az észlelés során a különböző érzékleti mintázatokhoz rendeljük hozzá a külvilág eseményeit. Ha például egy meghatározott spektrumú hangot hallunk, tudjuk, hogy valószínűleg mit hallunk. Az észlelés tehát egy pszichológiai alapfolyamat, amelynek az érzékelés az előfeltétele.

1.3. Az emberi szem felépítése és működése

Ebben az alfejezetben az emberi szemről és annak számos tulajdonságáról olvashatunk. Szó lesz az érzékelhető elektromágneses sugárzásról, az emberi szem elhelyezkedéséről és a speciális szemmozgásokról, az emberi szem felépítéséről és anatómiájáról, továbbá a retináról, a fotoreceptorokról és végül a látási hibákról.

1.3.1. Az érzékelt elektromágneses sugárzás

Az emberi szem a teljes elektromágneses spektrumból hozzávetőlegesen csupán a 380 és 780 nm közötti hullámhossz-tartományt képes érzékelni. Ez a látható színtartomány az ultraibolyától, az infravörösig terjed. A Földön honos élőlények nagy része ebben a tartományban képes érzékelni a környezetéből érkező sugárzást. Ez nagy valószínűséggel annak köszönhető, hogy a 400 nm alatti sugárzást jó részét a légkör elnyeli, a 800 nm feletti sugárzás nagy része pedig áthatol a tárgyakon. Az általunk látható fény általában összetett fény, amely több, különböző frekvenciájú sugárzást tartalmaz. Ilyen fényt sugároz magából a Napunk is, amelynek spektrumára a törzsfejlődésünk során adaptálódott a látórendszerünk. Amennyiben a fény csak egy hullámhosszú, azt monokromatikus fénynek nevezzük. Léteznek továbbá úgynevezett kvázi monokromatikus sugárzások is, amelyek néhány nanométeres intervallumban tartalmaznak különböző frekvenciájú összetevőket. A nagy frekvenciájú fényhez kisebb hullámhossz érték, míg a kis frekvenciájúhoz nagyobb hullámhossz-érték tartozik.


1.4. ábra - Az elektromágneses spektrum látható tartományának kinagyítása


1.3.2. Az emberi szem elhelyezkedése és a szemmozgások

Az állatvilágban nagyon változatos látószerveket ismerhetünk meg, amelyek elhelyezkedése és felépítése nagymértékben eltér egymástól. Amíg a növényevő állatok szemei úgy helyezkednek el a fejen, hogy a lehető legnagyobb belátható teret legyenek képesek megfigyelni, addig a ragadozók szemei általában a fejük elülső részén helyezkednek el, egymáshoz közelebb, hogy képesek legyenek megbecsülni prédájuk távolságát a sikeresebb vadászat érdekében, ehhez ugyanis három dimenzióban való látásra van szükség.

Az emberi látómező
1.5. ábra - Az emberi látómező


Az emberi szem a fej elülső oldalán helyezkedik el, egymással egy síkban, és egymástól átlagosan 63 mm-es távolságban. Ezzel a látómezőnk közel 90 fokban, sztereo látást tesz lehetővé, tehát eme tartományban mindkét szemünkkel látjuk a tárgyakat, ezen kívül legfeljebb csak az egyik szemünkkel – monokuláris látómező 160 fok, binokuláris látómező 200 fok. Szemünk mozgását a szem körül elhelyezkedő – szemenként – három pár extraokuláris izom teszi lehetővé. Ezek a mozgások jellemzően nem folyamatos, pásztázó mozgások, hanem szakaszosak. Létezik egyirányú – konjunktív – szemmozgás, amely során a két szemünk egy irányba mozog, és létezik ellentétes irányú – vergens – szemmozgás, amely során szemünk a közeledő, illetve távolodó tárgyakra néz. A közvetlenül előttünk lévő tárgya történő fókuszálás a konvergens szemmozgás.

Szemünk két-féle szemmozgást képes kivitelezni. Az egyik egy szakaszos, szaggatott, gyors szemmozgás, amely például olvasáskor vagy a weboldalakon való böngészéskor aktív. A másik egy folyamatos mozgás, amely a mozgó tárgyak követéséhez nélkülözhetetlen. A szakaszos szemmozgás ugrásait szakkádoknak, a megállásait fixációnak nevezzük. A szakkádikus elnyomás következtében a gyors szemmozgások alatt nincs információ-felvétel. A később bemutatott retinális mechanizmusoknál látni fogjuk, hogy a fotoreceptoroknak folyamatos „frissítésre” van szükségük ahhoz, hogy a fixált képet érzékeljék. Ehhez nélkülözhetetlen egyfajta mikroszakkádikus mozgás, amelynek következtében a szem soha nincs teljesen nyugalomban. Amennyiben a mikroszakkádokat kiiktatnánk az észlelt tárgyak elhalványulnának és előbb-utóbb el is tűnnének a látómezőből. A követő szemmozgáskor a mozgás sebessége és iránya folyamatosan változik.


1.3.3. Az emberi szem felépítése, anatómiája

Az emberi szem anatómiáját tekintve végső soron három koncentrikus rétegből – ínhártya, érhártya, retina – két kamrából – elülső szemkamra, üvegtest – a szivárványhártyából, a pupillából és a lencséből áll. Az ínhártya a szem külső, rostos, kemény rétege. Ennek elülső része voltaképpen a szaruhártya – cornea – amelynek már nincs saját vérellátása, az elülső kamrai folyadék táplálja. Optikai szempontból a szaruhártya adja nagy részét a szem dioptriaértékének – kisebb részt ad a szemlencse. Az érhártya a szemgolyó falának közelében tapad, hajszálerei táplálják az ínhártyát. Az elülső szemkamrában található a csarnokvíz, amely a cornea táplálása a szem alakjának fenntartásában is rész vállal – az ínhártya mellett. Az üvegtest a szem tömegének közel egy-harmada. A benne lévő folyadék szintén csarnokvíz, de azzal ellentétben nem újul meg folyamatosan. A szivárványhártya a szemlencse elülső oldalára simul rá és ez adja szemünk jellegzetes színét. A közepén lévő fekete terület a pupilla, amely valójában két izomcsoport közötti kerek rés, nyílás. A pupilla mérete befolyásolja, hogy mennyi fény éri el a retinát. A szemlencse a szivárványhártya mögött helyezkedik el. Átlagosan 9 mm átmérőjű és 4 mm vastag. A szem a szemlencse segítségével képes a fokuszálásra, amelynek következtében élesen láthatunk. Ezt az élesre állítási folyamatot hívjuk akkomodációnak. A lencse alakját, illetve görbületi sugarát a ciliáris izmok segítségével változtatjuk meg. A szemlencsét a lencsefüggesztő rostok tartják a helyén megfeszített állapotban. Közelre nézéskor a ciliáris izmok megfeszülnek, és a lencsefeszítő rostok elernyednek, melynek következtében a szemlencse magától összezsugorodik, ezzel csökkentve a görbületi sugarat. Távolra nézéskor egy ellentétes folyamat játszódik le: a ciliáris izmok elernyednek, a lencsefeszítő rostok megfeszülnek, melynek következtében a szemlencse kinyúlik, ezzel növelve a görbületi sugarat. Ezért van az is, hogy ha elfáradunk a ciliáris izmok nem képesek a feszítésre, így csak „bámulunk a semmibe”, a fókuszunk a távoli célponton marad.


1.3.4. A retina és a fotoreceptorok

A látás receptorai a fotoreceptorok a retinán helyezkednek el. Ezek a receptorok a fényenergiát idegi jelekké alakítják át, majd továbbítják a közelben elhelyezkedő gyűjtősejtekből álló hálózatba. A retinán lévő fotoreceptorokhoz a fény a retinális ganglionsejteken és a gyűjtősejteken – bipoláris, amakrin és horizontális sejtek – keresztül érkezik. A retinán az éleslátás helye az úgynevezett sárgafolt vagy macula – fovea. Ahol a gyűjtősejtek idegrostjai elhagyják a retinát – vakfolt – az agy felé nincsenek fotoreceptorok.

1.8. ábra - A retina felépítése


A retinán lévő fotoreceptorok száma hozzávetőlegesen 130 millió – 120 millió pálcika és 10 millió csap. A receptorok két fő típusa a csapok és pálcikák. A pálcikák több fotont képesen elnyelni több irányból, egy ganglionsejthez több pálcika idegrostja fut be, ezért erősítésük is jobb. Elsősorban a pálcikák felelősek a mozgás és fényesség érzékeléséért. A csapok három altípusát különböztetjük meg. Léteznek rövid, közép és hosszú hullámhosszakra érzékeny csapok, amelyek ezért a látható hullámhossztartományban elhelyezkedő kék, zöld és vörös színekkel azonosíthatóak. A zöld és vörös színekre érzékeny csapok érzékenységi tartományai igen közel vannak egymáshoz, ezért érthető, hogy miért alakulhat ki vörös-zöld színtévesztés. A kék színre érzékeny csapok jóval kevesebben vannak, ezért a kék fényben kevésbé látunk élesen. Az éleslátás helyén szinte csak csapok vannak, a periférián pedig szinte csak pálcikák. Ezért a fényintenzitás és mozgásészlelésünk a periférián, míg a színdiszkriminációs képességünk a foveán a legjobb. A fotoreceptorok sűrűsége a foveán a legnagyobb.

Ha a fotoreceptorokban lévő rodopszin – opszinból és retinalból áll – elnyel egy fotont, megváltozik a fehérje szerkezete és energia szabadul fel. Ezután a sejten belül elindít egy jelátviteli kaszkádot, amely számos fehérjét megváltoztat, majd kinyílnak a receptorsejt nátriumcsatornái és depolarizálódik. A neuronális jelet a fotoreceptor ezt követően a gyűjtősejtekhez továbbítja. A bipoláris, horizontális és amakrin gyűjtősejteken keresztül az ingerület a retinális ganglionsejtekhez továbbítódik – amelyekből 1 millió darab van a retinán – majd a vakfolton keresztül elhagyja a szemet az agy felé.

A tárgyaktól a retináig eljutó fényeloszlás voltaképpen a retinális kép. A tárgyak, amelyekről több foton érkezik fényesebbek, amelyekről kevesebb foton érkezik sötétebbek a látórendszer számára. A külvilág tárgyainak elemi pontjait reprezentáló fényintenzitás-eloszlást képnek hívjuk.

1.3.5. Látási hibák

Végezetül tegyünk említést a látási hibák két alaptípusáról! A normál látású, emmetropiás szem optikai rendszere a tárgyak képét pontosan a retinára képezi le. A nagyobb sugarú lencsével rendelkező, távollátó vagyhiperópiás szem a tárgy képét a retina mögé képezi le ezért a kép nem lesz éles, nem lesz fókuszált. Mivel ez esetben a szemlencse görbületi sugarát csökkenteni, konvexitását növelni kellene, a távollátó szem korrekciója konvex – domború – szemüveggel lehetséges. A rövidlátó, miópiás szem szemlencséjének görbületi sugara kisebb, ezért a tárgy képét a retina elé képezi le. Mivel ez esetben a lencse túlzottan is konvex, a korrekció konkáv lencsével korrigálható. Így a szemlencsét elhagyó sugarak kevésbé lesznek széttartóak, és a leképezés a retinára esik.

1.9. ábra - Akkomodációs hibák (balra: miópiás szem, jobbra: hiperópiás szem, alul: ezek korrekciói)


1.4. A látópálya felépítése és működése

Ebben az alfejezetben szót ejtünk a retinális ganglionsejtekről, a gyűjtősejtekről, a receptív mezőről, magáról a látópályáról és a látás további területeiről.

1.4.1. A retinális ganglionsejtek, a gyűjtősejtek és a receptív mező

Mint azt az imént kifejtettük, a fotoreceptorok neuronális jelei a gyűjtősejteken – bipoláris, horizontális és amakrin sejtek – keresztül a retinális ganglionsejtekhez jutnak. A ganglionsejtek száma körülbelül 1 millió. Mivel minden csap és pálcika jele eljut egy ganglionsejthez, ebből következik, hogy egy ganglionsejthez átlagosan 130 darab receptor jele továbbítódik a gyűjtősejtek közvetítésével. Stephen Kuffler és munkatársai – magyar származású orvos neurológus – 1952-ben fedezte fel azt a jelenséget, hogy a ganglionsejtekhez tartozó fotoreceptorok ingerlésekor a kisebb átmérőjű fényfoltra nagyobb reakciót adott a sejt. Ebből arra következtettek, hogy a ganglionsejtekhez kapcsolódó fotoreceptorok egy kvázi kör alakú, úgynevezett receptív mezőt alkotnak, amelynek a közepén lévő receptorokat ingerelve növelhető, a perifériát ingerelve pedig csökkenthető a ganglionsejt reakciója. Amennyiben az ingerlő fényfolt mérete akkora, hogy belelóg a szélső területekbe, a ganglionsejt gátlás alá kerül, és kisebb reakciót ad, mint ha csak a receptív mező közepét ingerelnénk. Ebből az következik, hogy a retina fotoreceptorai végső soron nem egyenként adnak visszajelzést a fényerősségről, hanem receptív mezőkbe tömörülve téri integrációt végeznek. A receptív mező elmélet egyik legismertebb demonstrációját az úgynevezett Hermann-rács adja. Később születtek elméletek, melyek szerint a Hermann-rács illúziója nem csupán a retinális feldolgozás eredménye, hanem magasabb agyi folyamatok is szerepet játszanak benne. A retinális kép feldolgozásának első és legjelentősebb állomása tehát a retinális ganglionsejtek lényeges változásokat kiemelő mozzanata. Kétféle retinális ganglionsejtet különböztetünk meg. Az egyik a receptív mező közepén ingerelve fokozza az aktivitását, a másik a receptív mező szélén ingerelve fokozza az aktivitását. Ezek az úgynevezett BE központú, KI szélű és KI központú, BE szélű ganglionok. A kétféle ganglionsejt teszi lehetővé többek között a világosságnövekedés és világosságcsökkenés egymástól független kódolását.

Receptív mezők
1.10. ábra - Receptív mezők


1.4.2. A látópálya

A retina és a látókéreg között a látópálya teremt kapcsolatot. Ez végső soron axonok – idegsejtek kommunikációs nyúlványai – kötege. A retinális ganglionsejtek axonjai alkotják tehát a látóideget. A látóidegek ez után kereszteződnek – bal és jobb szem idegkötegei – a caelsma opticumnál. Az orr felőli, nasalis részük ellentétes, a halánték felőli részük azonos oldalon halad tovább. Tehát tulajdonképpen a szembe balról érkező fény – kép – az agy jobb féltekéjébe tart. Innen egy részük az agytörzsbe megy, ahol a vegetatív folyamatok segítségére lesz, másik részük pedig a hipotalamuszban lévő CGL – corpus geniculatum laterale – területen átkapcsolódik. Az átkapcsolás után az idegrostok az úgynevezett látó kisugárzást alkotva a tarkólebenybe – okcipitális lebeny – tartanak, amelyet V1 területnek nevezünk.

1.11. ábra - Látópálya és annak sérülései


1.4.3. A látás további területei

A V1 látórendszer egy úgynevezett retiotopikus reprezentációval rendelkezik, tehát a területet alkotó, egymás szomszédságában lévő neuroncsoportok a retinán is szomszédos receptorokból származnak. A V1 területen a kép további módosulása is bekövetkezik. Nevezetesen, az itt lévő neuroncsoportok képi reprezentációja során a foveáról származó információ túlreprezentálása következik be. Tehát az éleslátásunk területét „kinagyítja” a V1 terület. Ezt nevezzük agykérgi nagyításnak.

Egy másik felosztás szerint a ganglionsejteknek van egy kiterjedtebb dendritfával – gyűjtő neuronális nyúlványok – és egy kisebb dendritfával rendelkező típusa. A nagyobb receptív mezővel rendelkező ganglionsejteket M sejteknek, a kisebb receptív mezővel rendelkezőket P sejteknek hívjuk. Az M sejtek a CGL terület magnocelluláris rétegéhez, a P sejtek a CGL parvocelluláris rétegéhez kapcsolódnak. Mivel az M sejtekhez több receptor tartozik, azért a téri felbontóképességük rosszabb, mint a P sejteknek, viszont az M sejtek idői felbontóképessége sokkal jobb, mint a P sejteké, mert aktivitásuk kevesebb ideig marad fenn. Továbbá az M sejtek csak világosságot kódolnak, a P sejtek színeket is.


A V1 területről az információk agy része az egy felső részébe, a parientális lebenybe tart a dorzális területre, egy másik részük az agy alsó részébe, a temporális lebenybe tart a ventrális területre. A dorzális területre az M sejtek ingerületei tartanak, a ventrális területre a P sejtek ingerületei tartanak. Az M sejtek inkább a mozgás és a gyors idői változások lekövetéséért felelősek, a P sejtek inkább a finom részletek, a szín, a textúra reprezentálásáért.


1.5. A színlátás

Jelen fejezetben szó lesz a színlátás fotoreceptorairól (pálcikák és csapok), a tárgyak színének észleléséről, az emberi színlátás opponens színelméletéről, és a konstanciákról a feldolgozás során.

1.5.1. A színlátás fotoreceptorai

Az emberi szem retináján négy különböző spektrális érzékenységű fotoreceptor található. A pálcikáknak csupán a fényintenzitás változásának detektálásában van szerepe. A három csaptípus azonban tökéletesen alkalmas arra, hogy megfelelő feldolgozás, összehasonlítás után képes legyen differenciálni a különböző frekvenciájú sugárzásokat, fényeket. A három csaptípusunk különböző spektrális érzékenységi görbével rendelkezik, amelyeket ezért hosszú, közép és rövid hullámhosszú csapoknak vagy kék, zöld és vörös csapoknak nevezünk. A három csapot különböző energiával érkező fotonok ingerlik. Az kék, zöld és vörös csapok érzékenységi maximumai rendre 440, 545 és 575 nm hullámhosszúságú, látható sugárzásnál vannak. A közepes és hosszú hullámhosszakra érzékeny csapok érzékenységi görbéi szinte egymásba simulnak. Ebből arra is következtethetnénk, hogy az ember evolúciója alatt kisebb változások, mutációk következtében az egykori két csaptípusból lassan differenciálódott egy harmadik, mert az jobban szolgálta a túlélést. A különböző típusú csapok bármilyen fotont is nyelnek el, minden esetben ugyanolyan válaszreakciót adnak. Ezt nevezzük az univariancia elvének. A színérzékelő receptoraink meglehetősen durva színdiszkriminációs képességgel rendelkeznek, ezért sok esetben két fizikailag eltérő színt pszichológiailag azonosnak ítélünk meg. Ezeket a színeket nevezzük metamereknek.

(Amennyiben az Olvasó több információt szeretne kapni az emberi látórendszerről, a megadott szakirodalmakon kívül az Optika TÁMOP tananyagunkat ajánljuk a figyelmébe.)

1.14. ábra - A retina fotoreceptorai (balra: pálcika, jobbra: csap)


1.15. ábra - A csapok és pálcikák sűrűsége a perinán (feketével: pálcikák, pirossal: csapok)


1.5.2. Mitől függ a tárgyak színe?

Tisztában kell lennünk azzal, hogy a színek észleléséhez sok lépcsőn keresztül vezet az út. Elsődleges a fényforrás, amely valamilyen spektrumú, összetett vagy monokromatikus fényt bocsát ki magából. Ez lehet természetes – Nap – vagy mesterséges fényforrás, mint például a halogén izzószálas vagy a LED fényforrás. Ezek a fényforrások adják azokat a frekvenciájú összetevőket, amelyek a tárgyakon visszaverődnek. A tárgyak felületének színe voltaképpen egy olyan görbével írható le, amely a beeső fényforrás spektrumából valamely hullámhosszakat visszaver, más hullámhosszakat elnyel. Ha fehér tárgyra fehér fénnyel világítunk, akkor a felület minden kibocsátott fényösszetevőt visszaver. Fekete felületről akkor beszélünk, ha a felület egyetlen hullámhosszon érkező fényösszetevőt sem ver vissza. A harmadik lépcsőfok a légkör, a közeg anyaga, amelyen keresztül a fény beérkezik. A világűrben például a rövid hullámhosszú fényösszetevők is haladhatnak, de a földi légkörben ezek jó része elnyelődik. A légkör tehát elnyeli a már szemükbe visszavert fény további alkotóelemeit, ezzel a visszavert fényösszetevők keveréke ismét módosul. A következő lépcsőfok az emberi szem, pontosabban a retina fotoreceptorainak érzékenysége. Szemünk is rendelkezik tehát egy érzékenységi görbével, amely megmutatja, hogy a különböző hullámhosszú fényösszetevőkre mekkora válaszreakciót várhatunk a receptorokról. A receptorokhoz érkező összetett fény színe pedig a receptorok reakcióinak összegzése után alakul ki, és még nem is beszéltünk a magasabb agyi folyamatokról. Látható tehát, hogy egy szín érzékelése mennyi mindentől függ, fizikai és pszichológiai téren egyaránt.

tárgyak színe
1.16. ábra - tárgyak színe


1.17. ábra - A csapok és pálcikák relatív érzékenységi görbéi


1.5.3. Az emberi színlátás opponens színelmélete

A színek kognitív feldolgozásának előszobája az ellenszín-elmélet – opponens – amelynek mai formáját Dorothea Jameson és Leo Hurvich dolgozták ki 1981-ben. A modell szerint látórendszerünk a csapok jeleiből különbségeket állít elő, és ezzel határozza meg az adott színárnyalatot. A piros és a zöld csapok összevetéséből előáll egy piros-zöld különbségjel. Ez alkalmas annak eldöntésére, hogy az adott árnyalat inkább piros, vagy inkább zöld-e, esetleg azonos mértékben mindkettő. Ez után következik az egyesített piros + zöld csatornajel összehasonlítása a kék csapok jelével. Ha a kék a nagyobb intenzitású, akkor a színárnyalat kékes, ha nem, akkor sárgás lesz, esetleg azonos mértékben mindkettő. Végül a piros + zöld csatornajel összegzett intenzitása adja meg az akromatikus világosságérzetet.

Az opponens-szín elmélet
1.18. ábra - Az opponens-szín elmélet


1.5.4. Konstanciák a feldolgozás során

Feldolgozó rendszerünk rendelkezik bizonyos képességekkel, amelyek elősegítik, hogy a látórendszer által érzékelt információt különböző körülmények között is azonosnak értékeljük. Például a sárga taxit minden esetben sárgának látjuk, noha változnak a megvilágítási viszonyok, vagy az írólap világosságát mindig ugyanolyannak látjuk, pedig időközben besötétedett. Az előbbit színkonstanciának (színállandóságnak), utóbbit pedig világosság-konstanciának (világosság-állandóságnak) nevezzük. Létezik egy normálási folyamat is feldolgozás során, amikor is a látórendszerbe érkező képen túlzottan érvényesülő színtartományokat képesek vagyunk egy szintre hozni. Például naplementekor a narancssárgás fények miatt azokon a hullámhossz tartományokon (narancssárgás tartományon) a feldolgozórendszer csökkenti az érzékenységet. Azt a tényt, hogy a feldolgozórendszerünk az érzékelt területet kisebb szegmentumokra bontja, mi sem mutatja be jobban, mint a szimultán kontrasztjelenség, amelynél látható, hogy egy felület színezetét nagyban befolyásolja, hogy a szín milyen környezetben, kontextusban szerepel a képen. Sötétebb kontextusban ugyanaz a világosság világosabbnak tűnik, mint világosabb közegben. A színkontraszt ellentétes jelensége a színasszimilációs hatással, amelynél az alapszínt körülvevő színes csíkok a saját színezetük irányába tolják el az alapszín színezetét. Ezek a jelenségek a színlátás során érvényesülő magasabb agyi folyamatok jelenlétére utalnak.

1.19. ábra - A színkonstancia jelensége


1.6. A háromdimenziós mélységészlelés

A mélységészlelés tárgyalása előtt nélkülözhetetlen néhány pszichológia alapfogalmat tisztáznunk. Az ember az őt körülvevő tárgyakat valamilyen formán észleli. Ennek a folyamatnak ez első lépése a tárgyak háttértől való elkülönítése, a perceptuális szegregációja. Ezeket a folyamatokat a V1 agyterület alapozza meg. Ez a terület felelős a körvonalak detektálásáért és a tárgyak háttértől való elkülönítéséért is. A tárgyak háttértől való kelkülönítésében nagy segítséget jelent a feldolgozórendszer számára, hogy a tárgy általában a háttér előtt helyezkedik el, a háttér a tárgy mögött is folytatódik, míg a körvonal általában a tárgyhoz tartozik és nem a háttérhez, valamint a tárgy jobban hasonlít egy már látott tárgyra, mint a háttér. Tehát a látott képen lévő tárgyak mérete, szimmetriája, orientációja és ismertsége nagyban hozzájárul ahhoz, hogy el tudjuk különíteni egymástól a hátteret és a tárgyat.

A mélységészlelés – távolságészlelés – tehát azon képességünk, amellyel a körülöttünk lévő világot három dimenzióban láthatjuk. Képesen vagyunk nagy pontossággal felmérni a tárgyak távolságát, megfogni dolgokat, illetve mozogni a térben. A mélységészlelés képességét már a háromhónapos csecsemőknél ki lehet mutatni, ami azt jelenti, hogy ez biológiailag is igen fontos képességünk.

Jelen fejezetben szó lesz a Gestalt-elméletről, a monokuláris és binokuláris jelzőmozzanatokról valamint a binokuláris diszparitásról.

1.6.1. A Gestalt-elmélet

A Gestalt-elmélet szerint egy tárgy több, mint a részeinek összessége. A tárgyak felismerésében nagy szerepe van az alábbi, úgynevezett Gestalt-szabályoknak. Az adott mintázatot úgy látjuk, ahogy az a lehető legegyszerűbb. Az egymáshoz hasonlatos mintarészeket egymással csoportosítva látjuk. Az egy ívre illeszkedő részeket egy folytonos alakként értékeljük. Az egymáshoz közelebbi tárgyakat egyként kezeljük. Az együtt mozgó tárgyakat egyként kezeljük. Ha az előzőekben ismertük a tárgyak, akkor könnyebb a későbbi felismerés és a részek csoportosítása, az egész előállítása érdekében.

1.20. ábra - Egy példa a Gestalt-szabályok alkalmazására (valójában a kép nem tartalmaz kockát)


1.6.2. A jelzőmozzanatokról

A háromdimenziós mélységészlelésünk egy rendkívül összetett pszichológiai folyamat, mégis oly könnyedén használjuk a mindennapokban. Működtetése nem igényel tudatos erőfeszítést, teljesen automatikus, és mentálisan nem növeli a megterhelést. A tér és mélységészlelés azon folyamatok egyike, amely talán a leginkább rávilágít arra, hogy látásunkban csupán kis részt vállal maga a látószerv és hatalmas részt az agy. A térérzékelésben két fő jelzőmozzanat-típust különböztethetünk meg. Az egy szemmel is működő monokuláris és a két szemmel használható binokuláris jelzőmozzanatokat. Mint már utaltunk rá, az állatvilágban a növényevőknek általában a fejük két oldalán helyezkedik el a szemük, hiszen létfenntartásukhoz sokkalta fontosabb a nagy látótér, mint a mélységérzékelés. A ragadozóknak azonban fontosabb, hogy meg tudják becsülni prédájuk távolságát, így érthető, hogy az evolúció folytán a fejük elülső részére kerültek a szemek egymással egy síkban, hogy így a lehető legnagyobb binokuláris teret hozzák létre. Persze látnunk kell azt is, hogy a binokuláris látásunk csupán korlátozott távolságon belül használható hatékonyan, ezen kívül nem jobb, mint az egyszemes látás.

Az álltavilágban sok módját találhatjuk annak, hogy bizonyos fajok milyen módon érzékelik környezetüket. Gondolhatunk itt például a denevérekre, vagy a teljesen vak barlangi rákokra. De kibővíthetjük látókörünket azzal is, hogy az ember miként képes az őt körülvevő tér érzékelésére szemek nélkül - a karjait, a hangját, a kopogtatást és egyéb eszközöket igénybe véve. Számunkra azonban jelen téma kapcsán csupán a látás a fontos. Meg kell ismernünk mindazokat a folyamatokat, amelyek hozzásegítenek bennünket a térérzékeléshez.

1.6.3. Monokuláris jelzőmozzanatok

Az alábbiakban áttekintjük a monokuláris jelzőmozzanatokat, megnézzük, hogy miből tudunk következtetni a tárgyak távolságára, ha csak egy szemmel nézzük azokat. Ilyenek a tárgyak retinális nagysága és relatív retinakép mérete, a horizonthatás, a takarási hatás, a perspektíva, a textúra, az elkékülési hatás, a légtávlat, a fény-árnyék játék, az akkomodáció és a mozgási parallaxis.

A retinális nagyság: Elsődleges jelzőmozzanat, hogy a térben elhelyezkedő tárgy mekkora területet foglal el a retinán. Ebből a feldolgozórendszerünk meg tudja becsülni az észlelt tárgy távolságát, amennyiben rendelkezik priori (előzetes) információval annak tulajdonságait illetően. Ha például egy kisautót látunk magunk előtt az asztalon, akkor felismerjük, hogy kisautó és nem gondoljuk azt, hogy egy valódi gépkocsi a távolban.

A retinális nagyság (a két autó azonos képmérettel bír, mégis el tudjuk dönteni, hogy melyik van távolabb, ha rendelkezünk megfelelő priori információkkal a tárgyat illetően)
1.21. ábra - A retinális nagyság (a két autó azonos képmérettel bír, mégis el tudjuk dönteni, hogy melyik van távolabb, ha rendelkezünk megfelelő priori információkkal a tárgyat illetően)


A horizont hatás: A tárgyak távolságának becslésében az is segítség, hogy a látómezőnk horizontja fölött vagy alatt helyezkedik el. Minél feljebb van ugyanis, annál távolabbinak látjuk a tárgyat, és minél lejjebb van, annál közelebbinek.


A takarásihatás: Ha egy tárgy eltakarja egy másik tárgy bizonyos részeit, akkor arra következtetünk, hogy közelebb van hozzánk. Ez a takarás jelensége.


Perspektíva: Szintén tanult és mélyen rögzült jelenség, hogy a párhuzamosnak gondolt élek a távolban összetartanak. Ez a lineáris perspektíva, amellyel becslést tudunk adni a tárgyak egymáshoz képesti elhelyezkedésére.


Textúra: A textúrát személve észrevehetjük, hogy a közelebbi textúrákat jóval részletgazdagabbaknak találjuk, mint a távolabbi textúrákat. A részletgazdagsággal együtt természetesen a textúra elemeinek mérete is a távolsággal fordítottan arányos. Ha például egy macskaköves utat szemlélünk, láthatjuk, hogy a távolabbi kövek kisebbek és kevésbé részletgazdagok.


Az elkékülésihatás: A Nap összetett fénye a Föld légkörén áthaladva szóródik. A szóródás a kék tartományokban magasabb, így a nappali légkört kéknek látjuk. Ha egy távoli tárgy és közöttünk nagy légtömeg van, a tárgy képe elkékül. Ennek a kékülésnek a mértéke arányos a tárgy távolságával. Ezt az úgynevezett elkékülési hatást használhatjuk a távoli tárgyak, például hegyek távolságának becslésére.

Légtávlat: A távoli tárgyak nem csupán kékülnek a közbenső légtömeg miatt, hanem a kontrasztjuk is romlik, éleik elmosódnak, és színeik tompulnak. Az elkékülési hatással együtt ezt a jelenséget légtávlatnak nevezzük.

1.26. ábra - Az elkékülési hatás és légtávlat


A fény-árnyék játék: További segítség lehet egy tárgy térbeli elhelyezkedésének valamint kiterjedésének becslésére, a tárgyon feltűnő árnyék és fény viszonya, határvonala, illetve annak tranziense.


A relatív retinakép mérete: Ha látunk két tárgyak, amelyről nincsenek priori információink, illetve azonos méretűnek gondolnánk azokat, akkor a két tárgy közül azt látjuk nagyobbnak, amelyik mérete a retinánkon nagyobb.

Akkomodáció: Egy kevésbé kognitív jelzőmozzanat lehet a szemlencse akkomodációja. Ez a folyamat akkor következik be, amikor szemünkkel élesre szeretnék állni egy tárgyra valahol a térben. Ebben az esetben a szemlencse feszítőizmai úgy ernyednek el és feszülnek meg, hogy az egyik legtökéletesebb szabályozókört alkalmazva úgy állítják be a szemlencse görbületi sugarát, hogy a tárgy képe pontosan a retinára képeződjön le. Ez hasznos információ lehet a feldolgozórendszerünk számára a közelebbi – körülbelül 2 méterig bezárólag – tárgyak távolságának becslésére.

Akkomodáció
1.28. ábra - Akkomodáció


A mozgási parallaxis: Az azonos sebességgel mozgó tárgyak közül azt érzékeljük közelebbinek, amely gyorsabban halad át a látómezőnkön – a másikhoz képest. Ekkor a retinánkon egyfajta szögsebességet mérhetnénk, hiszen a retina gömbfelülethez hasonló alakú. Gondolhatunk például arra, hogy utazás közben a vonatból kitekintve a közeli fák nagyobb szögsebességgel haladnak át a retinán, mint a távoli házak. Ezt a jelenséget mozgási parallaxisnak nevezzük.


1.6.4. Binokuláris jelzőmozzanatok

Az egyik legegyszerűbb binokuláris jelzőmozzanat a konvergencia. Amikor a két szemünkkel egy 6-10 méter távolságon belüli tárgyra nézünk, látórendszerünk a két szem tengelyét igyekszik összetartóan a tárgyra fordítani. Ennek a konvergenciának a foka fontos jelzőmozzanat a tárgy távolságának becslésére. Amennyiben a két szemtengely által bezárt szög kisebb, a tárgy távolabb van, amennyiben a szög nagyobb, a tárgy közelebb van.

A másik jelzőmozzanat a binokuláris parallaxis. A parallaxis eredendően a testek egymáshoz viszonyított helyzetének változása eltérő irányokból nézve. Tegyük fel, hogy a két szemünkkel egy tárgyra nézünk a térben! Emellett megjelenik egy másik tárgy is, amely az előzőhöz viszonyítva más-más helyen bukkan fel, attól függően, hogy melyik szemünkkel nézzük. Ha a két tárgy azonos távolságban van, akkor a két szemünkkel ugyanazt az elhelyezkedést látjuk. Ha a két tárgy különböző távolságban található, akkor az egyikre nézve, és a két szemet egyenként kinyitva azt tapasztaljuk, hogy a tárgyak távolsága változik a szemeink által látott képen. Ennek a vízszintes távolságváltozásnak, az úgynevezett parallaxisnak annál nagyobb a mértéke, minél nagyobb volt a két tárgy közötti különbség. Valós helyzetben persze minden esetben valamelyik tárgyra akkomodál a szemünk, ezért a másik tárgyat nem láthatjuk tisztán. Minél nagyobb volt a távolság, annál homályosabban látjuk azt. A háromdimenziós mozifilmeken ezt nem tapasztaljuk, hiszen szemlencsénk ilyenkor minden esetben a mozivászonra akkomodál.

Binokuláris jelzőmozzanat továbbá a tárgyak nézete is. Amikor két szemünkkel nézzük a közeli tárgyakat, akkor szemeink különböző nézetekből látják azokat, és ezért a retinánkra érkező kép nem csupán parallaxist tartalmaz, hanem a tárgyak más-más oldalának képét is. Egyik szemünkkel láthatunk olyan részletet a tárgyról, amit a másik szemünkkel nem, és fordítva. Ez a két kép közötti apró különbség is hozzájárulhat a tárgyak távolságának észleléséhez.

A binokuláris parallaxis és diszparitás
1.30. ábra - A binokuláris parallaxis és diszparitás


1.6.5. A binokuláris diszparitás

A diszparitás jelentése eltérés. Eltérés a két szem retinális képe között, pontosabban a két képen lévő tárgyak távolsága között. Úgy gondolhatnánk, hogy a teret teljes egészében térben látjuk, valójában azonban a teljes tér csak egy csekély szeletét látjuk valós sztereolátással. Azt a jelenséget, hogy két szemünk retináján két kissé különböző kép keletkezik, binokuláris diszparitásnak nevezzük. Horopternek hívjuk azt a térbeli felületet, amelynek minden pontját azonos szögből látjuk a két szemünkkel. Ha rögzítünk egy pontot a térben láthatjuk, hogy a tárgytól nagyobb vagy kisebb mélységben lévő egyéb tárgyakból kettőt látunk. A fixált tárgy körül van egy mező, amelyen belül működhet a valódi sztereolátásunk, azon kívül a képek szétesnek, és kettős látás jön létre. Ezt a mezőt sztereomélységnek hívjuk. Panum 1858-ban igazolta, hogy idegrendszerünkben létezik egy, az előbbivel összefüggésbe hozható mező. Ez azért lehetséges, mert az idegrendszerünkben létrejövő szerveződés retinotopikus, azaz a retina szomszédos receptorainak ingerületei az agy szomszédos neuroncsoportjaihoz kapcsolódnak. A sztereolátásért felelős agyi terület mikroszkóp alatt is láthatóan csíkozott, a két szem által alkotott képek ugyanis az egyik és a másik szem által küldött képrészleteket felváltva tartalmazzák.

1.31. ábra - A horopter és a sztereo látótér


Julesz Béla 1960-ban felfedezte, hogy a sztereolátást nem előzi meg az tárgyak azonosítása, mint ahogy azt addig hitték. A térbeli mélységet a retinális képeken lévő tárgyak felismerése nélkül is képesek vagyunk érzékelni. Julesz ezt a felfedezést a róla elnevezett random-dot (véletlen pont) sztereopárokkal bizonyította be. A Julesz-féle sztereopár két képet tartalmaz a két szem számára, amelyet szeparáltan kell bemutatni. Az egyik képen véletlen pontokat látunk, a másik képen pedig az előző kép kicsit módosított változatát. A módosítás lényege, hogy a kívánt alakzat pontjait a diszparitás mértékével eltoljuk balra vagy jobbra, és az üresen maradt képpontokat véletlenszerűen feltöltjük. Ekkor a személőnek azonnal előbukkan a kívánt alakzat, az előzetes felismerés nélkül. A kép nagyon stabil, pásztázó szemmozgásoknál is fennmarad.

1.32. ábra - Egy Julesz Béla féle random-dot sztereogramm


1.7. Az emberi mélységészlelés hibái

Eddig áttekintettük a háromdimenziós megjelenítési technikák emberi tényezőit. Azonban nem tettünk említést arról, hogy az emberi mélységészlelés nem minden esetben működik. Vannak olyan tényezők, amelyeknek mindenképpen jól kell működniük, például a háromdimenziós filmek megfelelő észleléséhez. A különböző látáshibák, amelyek a mélységészlelést befolyásolják, nem csupán a háromdimenziós élményt veszik el az embertől, hanem a vetítés után további kellemetlen perceket, órákat is hoznak azzal, hogy émelygést, fejfájást és hányingert okoznak. Egy átlagos háromdimenziós film vetítésénél mindig akad egy-két ember a nézőtéren, aki nem látta három dimenzióban a filmet. Ez nem is meglepő, hiszen egy amerikai felmérés szerint a 18 és 38 év között lakosság 56%-a szenved valamilyen mélységészlelést érintő tünettől – a teljes lakosság hozzávetőlegesen 5-10%-át érintheti. Mi lehet az a tényező, amely nem engedi, hogy a mélységészlelési zavarokkal küzdő emberek három dimenzióban lássák a háromdimenziós filmeket? Az ő látórendszerük valamilyen oknál fogva – lehet az látószervi, de akár központi idegrendszeri zavar is – nem képes a két szemnek küldött képeket „összeolvasztani”.

Az egyik probléma, amely korlátozhatja a háromdimenziós élményt az amblyopia – lusta szem. Ebben az esetben az egyik szem sokkalta rosszabb képet érzékel – például 2-3 dioptriával rosszabb a másiknál.  Ilyenkor a látórendszer nem képes összerakni a két szem képét, vagy súlyosabb esetben „szoftveresen lekapcsolja” a rosszabbik szemet, amikor mindkét szem nyitva van, és csak a jobbik szem képéből dolgozik. Az ilyen látáshibát a tünettel rendelkezőnek nehéz észrevenni, mert már megszokta.

A jelenséget kiválóan demonstrálja a binokuláris versengés jelensége, ahol a két szemnek teljesen különböző képeket adunk, és a két szem képe gyakorlatilag „verseng” a feldolgozásért. Egyszer az egyik jelenik meg, egyszer a másik.

Egy másik ok lehet a háromdimenziós élmény hiányára a kancsalság. Ebben az esetben a két szem nem azonos irányba áll, amikor egy tárgyra fokuszál. Ilyenkor kettős látás jelentkezhet, és a háromdimenziós élmény teljes mértékben hiányozhat. További probléma lehet, ha a szemek képtelenek megfelelően egymás felé fordulni – konvergencia-elégtelenség.

Az efféle látáshibák nagy részét lehet kezelni, azonban ennek előfeltétele, hogy észrevegyék. Ebben viszont igen nagy segítséget nyújtanak a háromdimenziós mozik, ahol az ilyen aberrációkra rövid úton fény derül.

Amikor egy háromdimenziós filmet nézünk, szemünkkel a vetítővászonra – illetve a képernyőre, vagy a nyomtatott médiumra – akkomodálunk, viszont szemeink vergeciája ezzel nincs szinkronban, mint valós körülmények között. Tehát a szemlencsénk egy adott távolságra van „beállítva, míg a szemeink széttartása a háromdimenziós tartamom függvényében más-más távolságokra van hangolva. Ennek pedig sok esetben rosszullét, fejfájás, szédülés és hányinger lehet a következménye, főleg a „gyakorlatlan” szemű embereknél.

1.33. ábra - Egy rosszullétre okot adó jelenet az Avatar című filmből


1.8. Összefoglalás

Az érzékelés az a folyamat, amely során a külvilágból érkező információk valamely érzékszervünkön keresztül elérhetővé válnak a feldolgozórendszerünk számára. Az észlelési folyamat magából az érzékelésből és a hozzá kapcsolódó kognitív feldolgozásból áll.

Az emberi szem a 380 és 780 nm közötti hullámhossztartományt képes érzékelni. Az emberi szem a fej elülső oldalán helyezkedik el, egymással egy síkban és egymástól 63 mm-es távolságban. Látómezőnk közel 90 fokban sztereolátást tesz lehetővé. Szemünk mozgását a szem körül elhelyezkedő három pár extraokuláris izom teszi lehetővé. A konjunktív szemmozgás során két szemünk egy irányba mozog, vergens szemmozgás során szemünk a közeledő, illetve távolodó tárgyakra néz. Szemünk kétféle szemmozgást képes kivitelezni. Az egyik egy szakaszos, szaggatott, gyors szemmozgás, a másik egy folyamatos mozgás. A szakaszos szemmozgás ugrásait szakkádoknak, a megállásait fixációnak nevezzük. A gyors szemmozgások alatt nincs információfelvétel. A követő szemmozgáskor a mozgás sebessége és iránya folyamatosan változik. Az emberi szem három koncentrikus rétegből, két kamrából, a szivárványhártyából, a pupillából és a lencséből áll. A fotoreceptorok a retinán helyezkednek el. A retinán az éleslátás helye az úgynevezett fovea. Ahol a gyűjtősejtek idegrostjai elhagyják a retinát az agy felé, nincsenek fotoreceptorok. A retinán lévő fotoreceptorok száma 130 millió. A receptorok két fő típusa a csapok és pálcikák. A pálcikák több fotont képesen elnyelni több irányból, egy ganglionsejthez több pálcika idegrostja fut be. A csapok három altípusát különböztetjük meg. Léteznek rövid, közép és hosszú hullámhosszakra érzékeny csapok. Az éleslátás helyén szinte csak csapok vannak, a periférián szinte csak pálcikák. A fotoreceptorok neuronális jelei a gyűjtősejteken keresztül a retinális ganglionsejtekhez jutnak. A ganglionsejtek száma körülbelül 1 millió. A ganglionsejtekhez kapcsolódó fotoreceptorok egy kvázi kör alakú, úgynevezett receptív mezőt alkotnak, amelynek a közepén lévő receptorokat ingerelve növelhető, a perifériát ingerelve csökkenthető a ganglionsejt reakciója. A retina fotoreceptorai receptív mezőkbe tömörülve térbeli integrációt végeznek. A retina és a látókéreg között a látópálya teremt kapcsolatot. A retinális ganglionsejtek axonjai alkotják tehát a látóideget. A V1 látórendszer egy úgynevezett retiotopikus reprezentációval rendelkezik. A ganglionsejteknek van egy kiterjedtebb dendritfával és egy kisebb dendritfával rendelkező típusa. A nagyobb receptív mezővel rendelkező ganglionsejteket M sejteknek, a kisebb receptív mezővel rendelkezőket pedig P sejteknek hívjuk. Az M sejtek a CGL terület magnocelluláris rétegéhez, a P sejtek a CGL parvocelluláris rétegéhez kapcsolódnak. Mivel az M sejtekhez több receptor tartozik, azért a térbeli felbontóképességük rosszabb, mint a P sejteknek, viszont az M sejtek időbeli felbontóképessége sokkal jobb, mint a P sejteké, mert aktivitásuk kevesebb ideig marad fönn. Továbbá, az M sejtek csak világosságot kódolnak, míg a P sejtek színeket is. A V1 területről az információk egy része az agy felső részébe, a parientális lebenybe tart, a dorzális területre, egy másik részük pedig az agy alsó részébe, a temporális lebeny ventrális területére. A dorzális területre az M sejtek tartanak, a ventrális területre pedig a P sejtek. Az M sejtek inkább a mozgás és a gyors időbeli változások lekövetéséért felelősek, a P sejtek inkább a finom részletek, a szín, a textúra reprezentálásáért. Az emberi szem retináján négy különböző spektrális érzékenységű fotoreceptor található. A három csaptípusunk különböző spektrális érzékenységi görbével rendelkezik, amelyeket ezért hosszú, közép és rövid hullámhosszú csapoknak vagy kék, zöld és vörös csapoknak nevezünk. Látórendszerünk a csapok jeleiből különbségeket állít elő, és ezzel határozza meg az adott színárnyalatot. Feldolgozórendszerünk rendelkezik bizonyos képességekkel, amelyek elősegítik, hogy a látórendszer által érzékelt információt különböző körülmények között is azonosnak értékeljük.

A térérzékelésben két fő jelzőmozzanat típust különböztethetünk meg. Az egy szemmel is működő monokuláris és a két szemmel használható binokuláris jelzőmozzanatokat. A binokuláris látásunk csupán korlátozott távolságon belül használható hatékonyan, ezek kívül nem jobb, mint az egyszemes látás.

Elsődleges monokuláris jelzőmozzanat, hogy a térben elhelyezkedő tárgy mekkora területet foglal el a retinán. A tárgyak távolságának becslésében az is segítség, hogy a látómezőnk horizontja fölött vagy alatt helyezkedik el. Ha egy tárgy eltakarja egy másik tárgy bizonyos részeit, akkor arra következtetünk, hogy az közelebb van hozzánk. Szintén tanult, és mélyen rögzült jelenség, hogy a párhuzamosnak gondolt élek a távolban összetartanak. A textúrát személve észrevehetjük, hogy a közelebbi textúrákat jóval részletgazdagabbaknak találjuk, mint a távolabbiakat. A Nap összetett fénye a Föld légkörén áthaladva szóródik. A szóródás a kék tartományokban magasabb, így a nappali légkört kéknek látjuk. Ha egy távoli tárgy és közöttünk nagy légtömeg van, a tárgy képe elkékül. Ennek a kékülésnek a mértéke arányos a tárgy távolságával. A távoli tárgyak nem csupán kékülnek a közbenső légtömeg miatt, hanem a kontrasztjuk is romlik, éleik elmosódnak és színeik tompulnak. További segítség lehet egy tárgy térbeli elhelyezkedésének és kiterjedésének becslésére, a tárgyon feltűnő árnyék és fény viszonya, határvonala, illetve annak tranziense is. Ha látunk két tárgyat, amelyről nincsenek priori információink, illetve azonos méretűnek gondolnánk azokat, akkor a két tárgy közül azt látjuk nagyobbnak, amelyik mérete a retinánkon nagyobb. Egy kevésbé kognitív jelzőmozzanat lehet a szemlencse akkomodációja. Az azonos sebességgel mozgó tárgyak közül azt érzékeljük közelebbinek, amely gyorsabban halad át a látómezőnkön.

Az egyik legegyszerűbb binokuláris jelzőmozzanat a konvergencia. Amikor a két szemünkkel egy 6-10 méter távolságon belüli tárgyra nézünk, látórendszerünk a két szem tengelyét igyekszik összetartóan a tárgyra fordítani. Ennek a konvergenciának a foka fontos jelzőmozzanat a tárgy távolságának becslésére. A másik jelzőmozzanat a binokuláris parallaxis. Ha két szemünkkel egy tárgyra nézünk a térben, és megjelenik egy másik tárgy is, amely az előzőhöz viszonyítva más-más helyen bukkan fel, attól függően, hogy melyik szemünkkel nézzük. Ha a két tárgy azonos távolságban található, akkor a két szemünkkel ugyanazt az elhelyezkedést látjuk. Ha a két tárgy különböző távolságban van, akkor az egyikre nézve, és a két szemet egyenként kinyitva azt tapasztaljuk, hogy a tárgyak távolsága változik a szemeink által látott képen. Ennek, a vízszinten távolságváltozásnak, az úgynevezett parallaxisnak annál nagyobb a mértéke, minél nagyobb volt a két tárgy közötti különbség. Binokuláris jelzőmozzanat továbbá a tárgyak nézete is. Amikor két szemünkkel nézzük a közeli tárgyakat, akkor szemeink különböző nézetekből látják a tárgyakat, és ezért a retinánkra érkező kép nem csupán parallaxist tartalmaz, hanem a tárgyak más-más oldalának képét is.

A teljes tér csak egy csekély szeletét látjuk igazi sztereolátással. Azt a jelenséget, hogy két szemünk retináján két, kissé különböző kép keletkezik, binokuláris diszparitásnak nevezzük. Horopternek hívjuk azt a térbeli felületet, amely minden pontját azonos szögből látjuk a két szemünkkel. A fixált tárgy körül van egy mező, amelyen belül valódi sztereolátásunk működhet, azon kívül a képek szétesnek, és kettős látás jön létre.

1.9. A felkészülést segítő kérdések

  1. Mi a különbség az érzékelés és az észlelés között?

  2. Mi az a szignál transzdukció?

  3. Mik azok a receptorok?

  4. Mit jelent az adekvát inger kifejezés?

  5. Mi az a percepció?

  6. Igaz-e, hogy észlelés történhet érzékelés nélkül?

  7. Az emberi szem milyen intervallumban képes érzékelni az elektromágneses spektrumot?

  8. Igaz-e, hogy a nagyfrekvenciájú fény, nagy hullámhossz értékű is?

  9. Hozzávetőlegesen milyen szögben van térlátásunk?

  10. Milyen izmok teszik lehetővé a szem mozgását?

  11. Mi az a konjunktív szemmozgás?

  12. Mi az a vergens szemmozgás?

  13. Hogy nevezzük a közvetlenül előttünk lévő tárgya történő fókuszálást?

  14. Mikor használunk szakaszos, és mikor folytonos szemmozgást (példákkal)?

  15. Mi az a szakkádikus elnyomás?

  16. Igaz-e, hogy a fixációk alatt nincsen információfelvétel?

  17. Mi az a mikroszakkádikus mozgás?

  18. Mi történik, ha a mikroszakkádikus mozgást kiiktatjuk?

  19. Igaz-e, hogy a cornea az ínhártya része?

  20. A szaruhártya vagy a szemlencse nagyobb törőértékű?

  21. Igaz-e, hogy a csarnokvíz nem cserélődik?

  22. Igaz-e, hogy az üvegtestfolyadék nem cserélődik?

  23. Írja le a szemlencse görbületi sugarát változtató folyamatot!

  24. Hol helyezkednek el a fotoreceptorok?

  25. A fotoreceptoroktól hová tart az idegi jel?

  26. Igaz-e, hogy a retina fény felé néző oldalán helyezkednek el a ganglionsejtek?

  27. Igaz-e, hogy a fotoreceptorok sűrűsége nagyobb azon a helyen, ahol az idegek elhagyják a retinát?

  28. Hozzávetőlegesen mennyi fotoreceptor van egy emberi szemben?

  29. Igaz-e, hogy a fotoreceptorok sűrűsége a foveán a legnagyobb?

  30. Igaz-e, hogy a színtévesztés leggyakoribb típusa a vörös-kék színtévesztés?

  31. Igaz-e, hogy a retinán található fotoreceptorok között sokkal több csap van?

  32. Igaz-e, hogy a sárgafolton sokkal több csap van, mint a retina más részein?

  33. Milyen típusú csapok vannak, és milyen frekvenciatartományokban érzékenyek?

  34. Igaz-e, hogy a kékes fényben a receptorok nagy száma miatt jobban látunk?

  35. A retina mely területein érzékelünk jobban mozgásokat és fényintenzitás-változást?

  36. A retina mely területein érzékelünk jobban színeket?

  37. Átlagosan hány retinális ganglionsejtünk van?

  38. Hogyan korrigálják az emmetropiás szem aberrációját?

  39. Hogyan korrigálják az hiperópiás szem aberrációját?

  40. Hogyan korrigálják az miópiás szem aberrációját?

  41. Mi az a receptív mező?

  42. Receptív mező tekintetében milyen retinális ganglion típusokat ismer?

  43. Igaz-e, hogy a szemekbe balról érkező fénysugarak a bal agyféltekébe tartanak?

  44. Milyen szerepe van annak, hogy látási információk tartanak a vegetatív idegrendszerbe?

  45. Mi az a retiotopikus reprezentáció?

  46. Mit nevezünk agykérgi nagyításnak?

  47. Mik azok a P sejtek, és milyen tulajdonságokkal rendelkeznek?

  48. Mik azok az M sejtek, és milyen tulajdonságokkal rendelkeznek?

  49. Igaz-e, hogy a P sejtek ingerületei a dorzális területre tartanak?

  50. Mit nevezünk az univariancia elvének?

  51. Mik azok a metamerek?

  52. Mi határozza meg, hogy milyen színben látunk egy tárgyat?

  53. Fejtse ki az opponens színelméletet!

  54. Mi az a konstancia?

  55. Milyen konstancia típusokat ismer?

  56. Mi az a perceptuális szegregáció, melyik agyterület felelős érte?

  57. Mi az a mélységészlelés?

  58. Milyen Gestalt-szabályokat ismer?

  59. Miket nevezünk jelzőmozzanatoknak?

  60. Mit nevezünk monokuláris jelzőmozzanatnak?

  61. Mit nevezünk binokuláris jelzőmozzanatnak?

  62. Milyen monokuláris jelzőmozzanatokat ismer?

  63. Milyen binokuláris jelzőmozzanatokat ismer?

  64. Melyik jelzőmozzanatnak jut főszerep a háromdimenziós mozikban?

  65. A mozgási parallaxis egy binokuláris jelzőmozzanat?

  66. Mi a binokuláris parallaxis?

  67. Mi az akkomodáció?

  68. Mit jelent a szemek konvergenciája?

  69. Mi a binokuláris diszparitás?

  70. Mit nevezünk horopternek?

  71. Milyen háromdimenziós megjelenítés köthető Julesz Béla nevéhez?

  72. Mi a random-dot sztereopár?

  73. Mely esetekben fordulhat elő, hogy valaki nem képes a háromdimenziós tartalmak észlelésére?

  74. Látórendszeri aberrációval nem rendelkező személyeknél mi lehet az oka a háromdimenziós tartalmak szemlélése közbeni rosszullétnek, szédülésnek?

1.10. A fejezet fontosabb kifejezései

adekvát inger

agykérgi nagyítás

akkomodáció

amakrin sejtek

amblyopia

axon

binokuláris diszparitás

binokuláris jelzőmozzanat

binokuláris parallaxis

bipoláris sejtek

caelsma opticum

ciliáris izmok

cornea

corpus geniculatum laterale

csapok

csarnokvíz

dendritfa

depolarizálódás

dorzális terület

elülső szemkamra

emmetropiás szem

érhártya

érzékelés

észlelés

extraokuláris izom

fixáció

folytonos szemmozgás

foton

fotoreceptor

fovea

ganglionsejtek

Gestalt-szabályok

gyűjtősejtek

Hermann-rács

hiperópiás szem

hipotalamusz

horopter

horozontális sejtek

idői felbontóképesség

ínhártya

jelátviteli kaszkád

jelzőmozzanat

kamrai folyadék

konjunktív szemmozgás

konstancia

konvergens szemmozgás

lencsefüggesztő rostok

M sejtek

macula

magnocelluláris réteg

mélységészlelés

metamerek

mikroszakkádikus mozgás

miópiás szem

monokuláris jelzőmozzanat

mozgási parallaxis

nátriumcsatornák

okcipitális lebeny

opponens színelmélet

opszin

P sejtek

pálcikák

parientális lebeny

parvocelluláris réteg

percepció

perceptuális szegregáció

perspektíva

pupilla

random-dot sztereopár

receptív mező

receptor

retina

retinal

retinális kép

retiotopikus

rodopszin

sárgafolt

szakaszos szemmozgás

szakkádikus elnyomás

szakkádok

szaruhártya

szemlencse

szignál transzdukció

színdiszkriminációs képesség

szivárványhártya

temporális lebeny

téri felbontóképesség

téri integráció

univariancia

üvegtest

V1 terület

vakfolt

ventrális terület

vergens szemmozgás

Felhasznált irodalmak

[1.1.] Atkinson, R.. Pszichológia. Osiris Kiadó. Budapest . 2003.

[1.2.] Pléh, Cs.. A lélektan története. Osiris Kiadó. Budapest . 2010.

[1.3.] Bányai, É. és Varga, K.. Affektív pszichológia. Medicina Könyvkiadó. Budapest . 2013.

[1.4.] Carver, Charles S. és Scheier, Michael F.. Személyiségpszichológia. Osiris Kiadó. Budapest . 2006.

[1.5.] Cole, Michael és Cole, Sheila R.. Fejlődéslélektan. Osiris Kiadó. Budapest . 2003.

[1.6.] Csépe, V., Győri, M., és Ragó, A.. Általános pszichológia 1. Osiris Kiadó. Budapest . 2007.

[1.7.] Smith, E.R. és Mackie, Diane M.. Szociálpszichológia. Osiris Kiadó. Budapest . 2004.

2. fejezet - A háromdimenziós technikák optikai és interferometriai háttere

A háromdimenziós képalkotás alapja az emberi látásra vezethető vissza, inspirációja biológiai eredetű. Az emberi látás – és az élővilág egyedeinek jelentős része – úgynevezett binokuláris alapokon nyugszik, azaz a két szem által leképzett térrész síkbeli képeit az agy egy közös feldolgozási algoritmus segítségével együttesen értékeli, értelmezi. A legfontosabb momentum, hogy az adott objektumról a két érzékelő – adott esetben a szem –, eltérő térbeli pozíciója miatt, eltérő képeket regisztrál. A két szemmel látott két kép tehát nem pontosan ugyanolyan. Az agy e két kép közötti eltérésből számítja ki például a mélységet. Természetesen a folyamat ennél sokkal bonyolultabb, ugyanis a két eltérő kép értékelése egy összetett kognitív folyamat eredményeként hozza létre a háromdimenziós látás érzetét. A mindennapi életben ez biztosítja azt, hogy a minket körülvevő objektumokat, tárgyakat relatív pozíciójukkal tudjuk társítani, képesek vagyunk a minket körülvevő elemek relatív – bizonyos esetekben pedig akár az abszolút – pozícióját észlelni. Mindezek alapján viszont nyilvánvaló, hogy ezt a modellt alapul véve, a térhatású érzetet technikai eszközökkel egyszerűen reprodukálni tudjuk. Ha egy sík vagy görbült felületen a kódolt mélységi információkat tárolni tudjuk, akkor ezt közvetítve az agy felé, a térbeliség érzetét kelthetjük. Technikai részletnek tekinthető, hogy ennek alkalmas megvalósításához biztosítanunk kell, hogy a kódolt információk egy részét csak a bal, míg egy másik részét csak a jobb szemen keresztül jusson el az agyba. A sztereoszkópikus megjelenítők lényegében ezt az elvet valósítják meg, igen eltérő műszaki megoldások és technológiák felhasználásával.

2.1. A háromdimenziós megjelenítők - a feladat megfogalmazása

A térbeli megjelenítés lényegében az eredeti felületről érkező hullámfront, vagy a felületet helyettesítő másodlagos felületről érkező hullámfront rekonstruálását jelenti. Egy térbeli hatást keltő objektum valósághű szemlélése, körbejárása az élményen túl tudományos jelentőséggel is bír. Széleskörűen alkalmazható például a média, az orvostudomány bármely szegmensében. Futurisztikus esetben a módszer segítségével akár olyan virtuális események és térrészletek is létrehozhatók, amelyek lehetőséget nyújtanak időben és térben elválasztott pozícióváltásra, valamint térbeli manipulációkra.

E tekintetben egyre inkább előtérbe kerül – a virtualitás vonatkozásában – a számítógépes grafika, mely a felhasználó számára pillanatképeket készít a modellezett, háromdimenziós virtuális világról. Ez a pillanatkép - a generálás idejétől és helyétől függetlenül - alkalmas kimeneti eszközön – például az elektronikus számítógép megjelenítőjén – a vizuális valóság érzeteként láthatóvá tehető, megjeleníthető. A jelenség konstrukciója és szintézise szempontjából kulcsfontosságú ezen esetekben a térben található objektumok nagysága és alakja. A leképzés illetve az ábrázolás paraméterei az alkalmazott nézőponttól, és a megjelenítő felület alakjától és helyétől függenek. E technika egyik kulcsfogalma a virtuális kamera és annak pozíciója. A képgenerálási eljárások feladata, hogy a virtuális kamera nézőpontjából kétdimenziós képeket alkosson a háromdimenziós térről azzal a céllal, hogy a két kétdimenziós kép, az előbb említett bonyolult agyi mechanizmus után, a térbeliség élményévé szintetizálódjon. A grafikus eljárás műveletei többek között a képelemek összeállítása, a modell transzformáció, a látótéren kívül eső térrészek elhagyása, a nézőponti transzformáció, a képtérre történő vetítés és a megjelenítés.

A térbeli megjelenítés elméleti vizsgálata és gyakorlati megvalósítása korai eredetű, azonban elterjedése mindmáig korlátozott volt. Ennek elsődleges oka abban keresendő, hogy a generálás és a megjelenítés technikai háttere, eszközparkja szerény volt. Igazi lökést – a fokozott igény megjelenésén túl – a gyors számítástechnikai háttér és a korszerű, nagy teljesítményű és gyors optoelektronikai megjelenítési lehetőségek adtak. A felhasználók igényeinek megfelelően a fejlesztők és a gyártók arra koncentrálnak, hogy a tudományos és az ipari megvalósulásokon túlmenően, a hétköznapi élet és a kommunikáció részévé váljon a térhatású vetítés, valamint megjelenhessen az élet szinte minden területén.

2.2. A színek

A háromdimenziós megjelenítésben a színek kitüntetett szerepet töltenek be. Az élvezeti célú felhasználás esetén az igazi, mély alapcél a puszta térbeliségen túl olyan ingerek közlése a szemlélővel, amelyek a teljességen túl érzelmi hatást váltanak ki. Az élvezeti célú felhasználás mellett, a gyakorlati alkalmazások során a megfigyelt objektumról történő teljes információmennyiség megjelenítése a cél. Jelentheti ez azt, hogy a különböző látószögekből történő megfigyelés újabb információt ad, ahogy ez például a sztereo mikroszkópos megfigyelés esetén a mélységi méretek közvetett érzékeltetését jelenti. A manapság már nem igazán alkalmazott sztereo távolságmérő esetén pedig a – térbeli látás képességével rendelkező szemlélő – közvetlen, számszerűsíthető távolságadatokat tud kinyerni a berendezésből. Ha a megjelenítés során több érzékszervi hatást is ki tudunk használni, a kép teljesebbé válik. A háromdimenziós megjelenítés mellett közvetlen hatású a hang térbelisége, dinamikája, a figurális vagy éppen az életszerű hatások, képek. A lényeghez hozzátartozóan, de mélyebben fejtik ki hatásukat a színek, illetve azok tulajdonságai. Itt természetesen a színek tekintetében elsősorban nem azok meglétére vagy hiányára gondulunk. E hatás lehet technikai jellegű, amikor például az anaglif eljárás során a kiválasztott színpár, illetve a hozzájuk tartozó színszűrő pár közvetlen színdiszkriminációs hatása hozza létre a különböző látószögből készült képek szétválasztását.  A hatás lehet emocionális jellegű is, amikor például meleg vagy hideg színű környezetbe helyezve a szemlélt objektumot, annak környezetében betöltött szerepét kívánjuk módosítani. A színpreferenciák, illetve a színharmóniák megfelelő és tudatos alkalmazásával a kívánt hatás érdekében még mélyebb érzelmi szintekre tudunk hatni. A fenti néhány példából is jól látható, hogy a színekkel történő műveletek helyes alkalmazásával a teljes és kívánt hatás szempontjából komoly erőfeszítéseket tudunk tenni. Mindehhez hozzátartozik az is, hogy a generálás, a képfeldolgozás illetve az egyes transzformációk során a színekre vonatkozó ismereteinket úgy legyünk képesek alkalmazni, hogy azok torzulása nélkül jöjjön létre a várt eredmény.

Fontos tudatosítani, hogy a színekkel kapcsolatos számszerűsíthető, racionalitáson alapuló megfontolások, műveletek mögött a színhasználat pszichológiai értelmezése is igen nagy és kiemelt jelentőséggel bír. A színeket a gyakorlati alkalmazások során nemegyszer az érzelmekkel hozzuk kapcsolatba, szemben a műszaki jellegű, figurális leírással, ábrázolással, amely racionális megközelítésű, és elsősorban az intellektussal hozható kapcsolatba. Tapasztalati tény, hogy a színek kimutatható érzelmi töltettel és hatással bírnak, valamint emocionális reakciókat váltanak ki. A színek projektív értelmezésének alaphipotézise az, hogy a színre, mint ingerre adott válasz érzelmileg színezett [2.1.]. A szín tehát szubjektív érzet, amely a fizikai ingerek belső, agyi, idegrendszeri leképeződéseként jön létre. Ezt a belső leképződést, érzetet befolyásolják a szín környezete, megnevezése és egyéb emlékezeti tényezők. Ez jut érvényre a színkontraszt hatásában, azaz színingerek csoportja egészen más hatást válthat ki, mint a csoportban lévő színingerek külön-külön. Ezt a hatást fokozhatja, vagy kiegészítheti a színáthangolódás jelensége, amely során a hosszú ideig tartó színingerhatás új, megváltozott színélményt eredményezi. Ám ez a jelenség egy idő után az úgynevezett színfáradtságot váltja ki, amely a szemlélőben a színlátás érzésének csökkenését idézi elő. Látható tehát, hogy a színek megjelenítés-technikai használatával kapcsolatos megfontolásoknál egyaránt figyelembe kell venni az emberi őstapasztalatokhoz, a kulturális és az individuális hatásukhoz, jelentésekhez kapcsolódó tartalmakat is.

2.3. Alapfogalmak

Az alábbi fejezetekben áttekintjük a színingerek érzékelésével és feldolgozásával kapcsolatos alapfogalmakat.

2.3.1. Inger, észlelet és érzéklet

Nem a szemünkkel, hanem az agyunkkal látunk [2.2.]. Ez természetesen az általános értelemben vett látáson belüli színlátásra is érvényes. A színinger lényegében a látás szervébe behatoló, fizikailag meghatározott hullámhosszú elektromágneses sugárzás [2.3.] hatására keletkező inger, amely a fiziológiai jellegű észlelet formájában kerül a pszichológiai szintű, agyi feldolgozásra, és váltja ki az érzékletet. A további vizsgálódásaink szempontjából a fény e hullámhossztartományának az emberi – teljes – idegrendszeri alapú látószervére gyakorolt fizikai, fiziológiai és pszichológiai hatásaként létrejövő színérzékletet jelenti [2.4.].

A színekkel, mint fény okozta érzékletekkel és annak egyéb kapcsolataival foglalkozó tudományág a színtan, amely a jellegénél fogva szorosan összefügg a fizikával, a fiziológiával és a pszichológiával. Objektív értelemben sem az elektromágneses sugárzás kitüntetett hullámhossztartományának, sem a minket körülvevő tárgyaknak, fényforrásoknak nincs színük, csupán a szemünkkel és az agyunkkal látjuk azokat színeseknek. A színtan tehát a színérzéklet kialakulásának, számszerűsítésének és mérésének elméleti, módszertani és gyakorlati kérdéseivel foglakozik. Szintén nagy jelentőséggel bír a színek - kereskedelmi és egyéb alkalmazástechnikai vonatkozásaik miatt - tulajdonságainak valamint paramétereinek szabványosítása.

A színingerek észlelésének folyamata
2.1. ábra - A színingerek észlelésének folyamata


A továbbiakra vonatkozóan a színek osztályozásáról előrebocsátjuk, hogy a színérzet alapján nem tarka vagy semleges, illetve tarka színeket különböztetünk meg [2.5.]. A nem tarka színek csoportjába soroljuk a fehéret, szürkét, feketét, viszont a tarka színeket jelentik például a vörös, kék, sárga és ehhez hasonlók. Egy másik csoportosítás a forrásra vonatkozik, amely szerint egyes színek valódi fényforrásokból származnak, amilyenek például a Nap, a csillagok, egy viaszgyertya, egy halogén izzó, egy LED vagy egy izzólámpa. A nem önálló forrásként működő, nem világító tárgyakból származó színek az úgynevezett közvetett színek, amelyek például a testek, felületek színei. A közvetett színeket a szerint csoportosítjuk, hogy azok érzékelése reflexió vagy transzmisszió útján valósul meg, azaz visszaverten vagy átmeneti fényben szemléljük őket [2.6.].

2.3.2. A szín, mint megnevezés

A szín szót többféle értelemben is használjuk. Általában a minket körülvevő tárgyak, festékanyagok, sugárforrások megjelölésére alkalmazzuk. A fizikában a forrásból – annak típusától és jellegétől függetlenül – kilépő elektromágneses sugárzás emberi szem által érzékelhető hullámhossztartományba eső részének jellemzését jelenti.

A szakkifejezések helyes – és itt elsősorban a „szín” szó – használata a műszaki-tudományos gyakorlatban elengedhetetlen. A színes látással, és az azt létrehozó komponensekkel, illetve részben azok számszerűsítésével a színingermetrika foglalkozik, amely bevett fogalmait az MSZ 9620 számú szabvány rögzíti. Színes tárgy látványakor agyi funkciók működnek – és ahogy ezt már kifejtettük –, a pszichológia számára ezt észlelést – színészlelet – jelent, és az ehhez kapcsolódó jelenségek tárgyalása során az észlelet szó használata a helyes. Továbblépve azt is megállapíthatjuk, hogy a színészleletek okozója maga az optikai sugárzás, mely energetikai kérdéseivel a radiometria foglalkozik. Az átlagos emberi észlelő tulajdonságaira alapozva vezethetjük be a szabványosított, és a világítástechnikában széles körben használatos fotometriai fogalmakat és mennyiségeket, melyek így színingermetrikai mennyiségeknek tekinthetők. A színingermetrikai mennyiségekkel kapcsolatos vizsgálatok, számítások során meg kell jelennie az inger szónak, amely ezáltal azt jelenti, hogy színingermetrikai tárgyalásmódról van szó [2.7.]. Az elmélet és a gyakorlat szempontjából tehát különösen fontos a színészlelet és a színinger közötti fogalmi különbség, azok helyes és megfelelő helyen való használata. Így a szín kifejezést önmagában a színingermetrika területén kerülni kell, vagy ha használata indokolt, akkor azt előzetesen definiálni szükséges.

2.3.3. A tarka színek jellemzői

A tarka színeket három fontos tulajdonsággal jellemezzük, amelyek a legismertebb besorolás szerint a színezet (amelyet színárnyalatnak, színjellegnek illetve színnek is nevezünk), a telítettség és a világosság.

A színezet szempontjából megkülönböztetünk úgynevezett ős, illetve közbülső színeket, melyek az ősszínekből összetettnek látszanak. Sajátságos szempontok – általában a hasonlóság – alapján a színárnyalatok visszatérő sorozatba, úgynevezett színkörbe rendezhetők. A spektrumszínek ismert sorrendje: vörös, narancs, sárga, zöld és kék. Egy ilyen színkörben az egymással szemközt található színek úgynevezett ellentétes színek. Természetesen a színkörben található színárnyalatok száma nem véges.

A másik fontos paraméter a telítettség, amely lényegében a tarka szín fehértartalmával függ össze. Annál telítettebb egy színárnyalat, minél kevesebb fehéret tartalmaz. A fehértartalom növelésével a telítettlenség fokozható. A legtelítettebbek a spektrumszínek, a telítettségi fokozatok megkülönböztethetőségének mértéke a szem egyik fontos paramétere.

A harmadik fontos paraméter a világosság, amely energetikai vonatkozású fogalom.  Azonos spektrális energiaeloszlás esetén a szemünkbe jutó két fény közül az a világosabb, amely intenzitása nagyobb. Néhány kivételtől eltekintve megállapítható, hogy a tarka színek világossága a színérzetet viszonylag szerény mértékben befolyásolja.

2.3.4. Metaméria

Ismert tény, hogy spektrálisan eltérő színek azonos színérzetet válthatnak ki [2.8.]. Ezt a jelenséget nevezzük metamériának [2.9.], amely jellemzője, hogy két színárnyalat, egy adott megvilágításban egyformának tűnik, de más megfigyelési geometria vagy eltérő fényviszonyok esetén már különböznek [2.10.]. A metaméria a festék- és nyomdaipar komoly problémája, amely akkor lép fel, amikor a próbanyomat készítésénél fennálló fényviszonyok a felhasználásakor már nem állnak fenn. Kissé túlozva előfordulhat, hogy a műfénynél ellenőrzött próbanyomat kültéri felhasználásra kerül. A metaméria, mint hiba felléphet a szemlélő okán, mivel nincs két azonos színlátású ember. Így amit az egyik szemlélő azonosnak lát, azt egy másik ember, teljesen azonos körülmények között is eltérőnek észlelhet. Metaméria jellegű hibát okozhat a méretbeli eltérés is, ugyanis a látótér különböző részein érzékelt színek eltérőnek bizonyulhatnak. De ugyanígy különböző távolságokból vagy más látószög alatt szemlélt színek a kis területeken fellépő, eltérő fényviszonyok miatt különbözhetnek. Ez a jelenség elsősorban fémes csillogású festékek vagy hordozók, esetleg speciális bevonatok esetén fordulhat elő.

A metaméria jelenségének szemléltető ábrája
2.2. ábra - A metaméria jelenségének szemléltető ábrája


2.3.5. Színkeverési módok

A színkeverés során különböző spektrális összetételű elektromágneses sugárzásokat hozunk egymással kapcsolatba azzal a céllal, hogy újabb színeket hozzunk létre. A színkeverés két fő típusát különböztetjük meg, az additív (összeadó) és a szubtraktív (kivonó) színkeverést. Megjegyzendő, hogy a szakirodalom több fajta – nem igazán elterjedt – színkeverést is megkülönböztet [2.11.]. Párhuzamos színkeverés esetén, két vagy több szűrővel létrehozott akromatikus színinger egyidejűleg esik egy síknak ugyanarra a pontjára, és ezt látja az észlelő. Soros színkeverésnél egyetlen akromatikus fényinger két vagy több színes rétegen, egymás után halad át, az észlelő ezt is egy sík ugyanazon pontjában figyeli meg. Időbeli színkeverés esetén színingerek felváltva lépnek be a megfigyelő szemébe, de olyan frekvenciával, hogy az csak a keveréküket észleli. Foltok színkeverésekor kis alakzatokat készítünk úgy, hogy a megfigyelő nem tudja őket felbontani, így csak a színingerek keverékét látja.

2.3.5.1. Az additív színkeverés

Az additív színkeverés minden esetben színes fények keverését jelenti úgy, hogy további fény esetén világosabb fényt kapunk. Mivel az ilyen színes fények összeadódnak, összeadó színkeverésnek is nevezzük ezt az esetet. Szemléltetésének legegyszerűbb módja, ha három vetítőegység elé külön-külön sugárutakba vörös, zöld és kék üveget helyezünk, és ezeket egy fehér felületre vetítjük úgy, hogy a színes alakzatok részben fedjék egymást. Ebben az esetben az egymásra kerülő színek egy világosabb színt hoznak létre, a három szín pedig egymással keverve fehéret ad. A vörös és zöld összeadása sárgát, a vörös és kék bíbort, míg a zöld és kék türkizt eredményez. Mivel itt a sugárzások, vagyis a színek, és nem színes anyagok keverednek, az additív színkeverést optikai színkeverésnek is nevezzük. Additív színkeverés valósul meg akkor is, amikor a szem érzékelőjének ugyanazon helyét gyors időközökben, váltakozó színű fénysugarak érik, vagy a különféle színű felületrészeket a felbontóképességnél kisebb látószög alatt nézzük. Ekkor a szem a színeket már nem tudja különválasztani. A nyomdaiparban alkalmazott többszínnyomás felületén a szem nem ismeri fel a raszterpontok színét külön-külön, hanem csak a keverékszínt.

Összefoglalva, az additív, vagy más néven összeadó színkeverés elnevezése onnan származik, hogy a jelenség létrehozása szempontjából kiindulásnak tekinthető alapszínek fényenergiái összeadódnak. Az ilyen típusú színkeverés leggyakrabban tapasztalható esete például az optikai rendszerű, több vetítőegységből egy közös ernyőre történő vetítés. Ennek az esetnek feleltethető meg a színes monitor vagy televízió is, amelynél a forrásból kilépő elektronok vezérelt pályákon haladva a képcső elülső üvegfala belső felületén található speciális anyagnak ütközve színpontokat hoznak létre. Ha az additív színkeverés alapszíneinek megfelelő anyagokat gerjesztünk, akkor megfelelő elrendezés és méret esetén, kellő távolságból szemlélve, és a részleteket már nem felbontva additív keverékszínek jönnek létre a szemben. Hasonló a helyzet az autotípia (rácsfelbontásos) nyomtatásnál is, amikor az alapszínekkel nyomtatott pontok, azok közelsége miatt nem bonthatók fel az emberi szem által. Kicsit más eset, amikor a színes felületrészek gyors időbeni váltásakor,a tehetetlenség miatt jön létre az additív színkeverés. Az összeadó színkeverés mindegyik változatára jellemző, és az bennük a közös, hogy a különböző alapszínekből származó fénysugarak a szemben gyakorlatilag egy időben egy színérzékelő elemet ingerelnek.

Az additív színkeverés
2.3. ábra - Az additív színkeverés


2.3.5.2. A Grassmann-törvények

A Grassmann-törvények [2.12.] a színek additív keverésének törvényszerűségeit írják le. Kimondják,

  • hogy a színjellemzők meghatározására három független változó szükséges és elegendő,

  • hogy az additív színkeverés szempontjából a színek jellemzői számítanak, és nem azok spektrális összetétele,

  • ha a színek additív színkeverésében egy vagy több összetevőt folyamatosan változtatunk, az eredményül kapott jellemzők is folyamatosan változnak.

A Grassmann-törvények nem alkalmazhatók a perifériás, illetve a mezopos látás esetére, és akkor sem érvényesek, ha a vakítás jelensége lép fel. A jelentőségük megértése szempontjából értelmezésük különleges fontossággal bír. Az 1853-ban publikált Grassmann törvények azt jelentik a számunkra, hogy a keverékfény színét az összetevők színe szabja meg, és nem függ azok spektrális összetételétől. A gyakorlatban ez például azt jelenti, hogy a vörös és a zöld színek additív keverésével létrehozható sárga nem függ attól, hogy a létrehozó színkomponensek monokromatikusak-e, vagy sem, például keverékszínek. Minden színt három, matematikailag értelmezhető paraméterrel, a színezettel, a telítettséggel és az intenzitással lehet meghatározni. A keverés során az egyik összetevő folytonos változtatásakor a keverékszín is folytonosan változik, diszkrét lépések nélkül.

Összefoglalva és kissé más megfogalmazásban tehát a Grassmann-törvények kimondják, hogy egy szín leírásához három egymástól független adat szükséges és elégséges. A gyakorlatban ez például a színezetet, a telítettséget és a világosságot jelenti. Az adatok számára vonatkozó megkötés szerint három adat azért szükséges, mert a színlátás folyamata három különböző spektrális érzékenységű detektáló elemhez köthető. Az jellemzők kölcsönös függetlensége biztosítja, hogy azok közül kettőből matematikai módszerekkel a harmadik ne legyen meghatározható. Megjegyzendő, hogy a példaként említett világosság a három érzékelő elemtípus összegzett ingerültségi szintjét jelenti, valamint a becsapódó energia és a hozzá tartozó érzet logaritmikus összefüggést mutat. A fentebb tárgyalt metamer színek összeadó módszerrel kikevert színei szintén metamerek. Ennek gyakorlati jelentősége különösen nagy, mivel ez biztosítja, hogy például nyomtatásnál az előírtnak megfelelő színt állítsuk elő akkor is, ha a spektrális összetételek különbözőek. A keverés során a paraméterek folyamatos változtatásakor tapasztalható, az eredményül kapott színre vonatkozó jellemzők szintén folyamatosan változnak. Ennek következménye, hogy az additív színkeverésnél az egyik színből mindig el tudunk jutni egy másikba, a köztük lévő színárnyalatokon keresztül.

Hermann Günther Grassmann (1809-1877) [2.26.]
2.4. ábra - Hermann Günther Grassmann (1809-1877) [2.26.]


2.3.5.3. A szubtraktív színkeverés

A kivonó, vagy szubtraktív színkeverés esetén a fénysugár útjába kerülő színes anyagok módosítják annak spektrális összetételét. Ebben az esetben – az additive színkeveréstől eltérően – már egy meglévő fehér színből indulunk ki, és annak tulajdonságait az adott spektrális tartományban elnyelő vagy szóró eszközzel módosítjuk. Erre a célra a legtöbb esetben színszűrőket alkalmazunk, melyekre jellemző, hogy az összes színárnyalatot tartalmazó fehér fényből bizonyos hullámhossztartományokat átengednek, a többit viszont elnyelik, tehát a fehérből azokat kivonják, ez az új szín keletkezésének módja. A szubtraktív színkeverés törvényszerűségei természetesen az additív változaton alapulnak, arra vezethetők vissza.

A szubtraktív színkeverés leggyakrabban a festékek keverése, vagy azok egymásra történő nyomtatása során jön létre. A kivonó színkeverés egyik legismertebb, és szinte mindenki által megtapasztalható esete a színes film, illetve a színes fénykép keletkezése. Az alapszínek a cián, a magenta (bíborvörös) és a sárga, melyek teljes keveréke a fekete színt adja. A színhívásos elven működő színes filmek esetén a hordozóra egymás felett, az egyes additív színekre érzékeny anyaggal kevert zselatinréteget visznek fel. A fényérzékeny anyag általában valamilyen ezüsthalogén, mely az expozíció során energiát nyel el, és az érzékenységének megfelelő tartományban beérkező sugárzás hatására benne fotofizikai változások következnek be. Ennek során az ezüsthalogénben elemi ezűstcsíra gócok keletkeznek az elnyelt energiával arányos mennyiségben. Ez az úgynevezett látens kép, melyet egy színhívásnak vetnek alá, amely során az adott rétegben, a keletkezett elemi ezüstcsíra gócok mentén, az expozíció mennyiségével arányosan ezüst redukálódik ki, és a réteg érzékenységének megfelelő kiegészítő színű színezék is keletkezik. Következő lépésben az ezüstöt eltávolítva, megmarad a keletkezett színezék, amely a rajta áthaladó fehér fényből az eredeti szín kiegészítőjét hozza létre. A fenti esetben negatív filmet kapunk. A pozitív, az úgynevezett diakidolgozás esetén, az első lépés egy egyszerű redukció, amely során a rétegekben a beexponált helyeken ezüst keletkezik. Az ezüst eltávolítását követően a rétegekben az összes megmaradt ezüsthalogént beexponálják, majd ezután következik a színhívás, amely így az eredeti színeket fogja eredményezni, azaz pozitív kép keletkezik.

A szubtraktív színkeverés
2.5. ábra - A szubtraktív színkeverés


Nyomdatechnikában negyedik színként általában a feketét használják, mivel a nyomtatásban viszonylag sok a fekete színű felület. A három alapszínből történő összenyomásnál jobb minőségű a feketével történő nyomtatás. A valóságban általában nem tisztán additív vagy szubtraktív színkeveréssel magyarázhatjuk a színek keletkezését, hanem a kettő keveredésével. A nyomdatechnikában gyakran készítenek olyan színes nyomatokat, amelyek esetében az egymásra hordott festékek nem tökéletesen fedik egymást, azaz nem takarják ki az alattuk lévő színt, hanem átlátszóak.

A szubtraktív színkeverés alapkísérlete az egymás után elhelyezett – a feladatnak megfelelően megválasztott spektrális tulajdonságokkal rendelkező – színszűrőkkel vagy úgynevezett színes optikai ékekkel vitelezhető ki. Az egymás után elhelyezett szűrők esetén a fényforrás fehér fényéből az első színszűrő kivon egy részt azáltal, hogy a megfelelő rész elnyelődik. Ezután a megmaradó nyalábból a következő szűrő szintén kivon egy részt. Amennyiben ezeket, az egymást követő szűrőket sárga, bíbor és zöldeskék színűnek választjuk, akkor ezen szubtraktív alapszínek keverésével az additív színeket és a fekete színt is elő tudjuk állítani.

Például, a bíbor és zöldeskék szűrő kivonó jellegű alkalmazásával a kék additív színt kapjuk. Megjegyzendő, hogy ebben az esetben a példa nem általánosítható, mivel a kivonó szín­keverés eredménye – nem úgy, mint az összeadó színkeverés esetén – függ az egyes szubtraktív szűrők spektrális eloszlásának tulajdonságaitól. A festékiparban elterjedt festéktípusok színes részecskéi, az úgynevezett pigmentek keveredésénél, azaz a festékkeverésnél a kivonó színke­verésnek megfelelően keletkezik az eredő szín. Például fehér alap esetén sárga és kék festék keverésével nem az összeadó keverés tulajdonságainak megfelelő fehér, hanem a szubtraktív módon létrejövő zöld keletkezik. Általános szabályként fogalmazható meg, hogy az észlelt tárgyszín mindig a felület által elnyelt szín kiegészítő színe lesz.

A bíbor szín szubtraktív keverésének módja
2.6. ábra - A bíbor szín szubtraktív keverésének módja


A sárga szín szubtraktív keverésének módja
2.7. ábra - A sárga szín szubtraktív keverésének módja


A kékeszöld (türkiz) szín szubtraktív keverésének módja
2.8. ábra - A kékeszöld (türkiz) szín szubtraktív keverésének módja


A vörös szín szubtraktív keverésének módja
2.9. ábra - A vörös szín szubtraktív keverésének módja


A zöld szín szubtraktív keverésének módja
2.10. ábra - A zöld szín szubtraktív keverésének módja


A kék szín szubtraktív keverésének módja
2.11. ábra - A kék szín szubtraktív keverésének módja


2.4. A CIE-féle színmérő rendszer

A Nemzetközi Világítástechnikai Bizottság (Commission Internationale de L’Éclairage) egyik fontos feladata módszerek és mérési technológiák kidolgozása a színek egyértelmű, objektív leírására és meghatározására. A szervezet első, az additív színkeverésen alapuló trikromatikus színmérő rendszerét 1931-ben fogadta el. A CIE additív színkeverési kísérletek alapján meghatározott függvények segítségével írja le a színeket. A Grassmann-törvényekre visszavezető tapasztalatra építve, additív módon három független alapszínből bármely szín kikeverhető, azok tetszőleges megválasztásának egyetlen feltétele a függetlenségük, azaz egyik se legyen kikeverhető a másik kettő lineáris kombinációjaként.

A CIE-színrendszere minden színhez egy-egy számhármast rendel, amely a szemünkben fellehető három színérzékelő receptor meglétére vezethető vissza. Itt jegyzendő meg, hogy vannak kísérletek e három – a vörösre érzékeny protos, a zöldre érzékeny deuteros és a kékre érzékeny tritos – színreceptor viselkedésére alapozott rendszer bevezetésére is, melynek alapja a színreceptorkra ható fény által kiváltott ingerek erőssége [2.13.].

2.4.1. A színmeghatározás eredeti módszere

Az első mérésekre alapozott trikromatikus színleírás Wright [2.14.] és Guild [2.15.] nevéhez fűződik, akik egymástól függetlenül végeztek vizsgálatokat, és tettek javaslatot az eredményeik alapján. Az eredeti kísérletben a színkép monokromatikus színeit 2-fokos látószög alatt szemlélve, tizenhét megfelelőnek tekinthető színlátású személy kevert színekkel hasonlította össze 5 nm-es lépésközökben változtatva. Ez a változtatás a kevert színek fényerősségét érintette, melyeket három, 650, 530, 460 nm-es színszűrővel, 4800 K° színhőmérsékletű fényforrás mellett állítottak elő. Azok a fényerőkülönbségek, amelyek a színt, mint stimulusokat (gerjesztéseket) meghatározták, derékszögű koordináta-rendszerben ábrázolhatók, és a következő azonossággal jellemezhetők:

A kísérlet konkrét kivitelezése során zárt, fényszegény helyen elhelyezett berendezésben,  a kék, zöld és vörös fényforrások változtatható fényintenzitással világították meg egy gipsz prizma matt fehér felületét. A prizma másik oldalára az adott színmintát helyezték el. Az ép színlátású vizsgálati személy a három fényforrás segítségével a színminta színét additív módon keverte ki, azaz a fények intenzitását addig állította, amíg a két oldalon színazonosság nem tapasztalt. Mérési adatként az adott színmintához tartozó, fényforrások által kibocsátott fénysűrűség-értékeket rögzítették. Ezzel a módszerrel, tapasztalati úton minden színt kimértek. A tapasztalat az volt, hogy előfordultak színek, amelyeknél a három szín keverésével színazonosság nem volt létrehozható. Ilyen esetben azt a megoldást alkalmazták, hogy a keverendő színekből egyet átvezettek a másik oldalra, azaz rávetítették a kikeverendő színmintára. Így a túloldalra vetített színmintához tartozó érték negatív előjelű lett. Ez az eredeti minta reprodukálásánál problémát jelentett. Természetesen ez azt a problémát vetette fel, hogy ebben az RGB rendszerben lévő negatív értékek miatt, az eredeti minta színeit – tisztán additív úton – nem lehetett visszaállítani.

A színmeghatározás módszere
2.12. ábra - A színmeghatározás módszere


2.4.2. Az CIE RGB-színrendszere

Az eredeti kísérletekre alapozva a CIE által választott alapszínek a 700 nm hullámhosszúságú vörös (R), az 546,1 nm-es zöld (G) és a 435,8 nm-es kék (B) spektrumszínek lettek. Kísérletileg igazolták, hogy ha e vörös, zöld és kék alapszínek 1 : 4,5907 : 0,0601 arányban keverednek, akkor egy úgynevezett egyenlő energiájú fényforrás – azaz állandó spektrális teljesítmény-eloszlású, a 380-tól 780 nm-ig terjedő hullámhossztartományban ugyanakkora kisugárzott teljesítményű – fehér színt kapunk. Mindezek alapján az (R) = 0,176 97 lm, (G) = 0,812 40 lm és a (B) = 0,010 63 lm értékeket az alapszínek egységnyi R, G, B mennyiségeinek tekintjük. Megállapodás szerint egy egységnyi vörös, egy egységnyi zöld és egy egységnyi kék keveréke 1 lm fehéret eredményez. Ha egy megadott szín kikeveréséhez R, G, ill. B egységnyi kell az alapszínekből, akkor az eredő szín világosságára érvényes, hogy

Az együtthatók az úgynevezett trikromatikus összetevők. Az alapszínek egységei ismeretében kísérletileg meghatározhatók a spektrumszínek kikeveréséhez szükséges arányok. A színkép minden hullámhosszához három érték tartozik: r, g és b. Ilyen arányban kell az (R), (G), (B) alapszínegységeket keverni az adott hullámhosszú spektrumszín eléréséhez. Tehát a színkoordináták lehetővé teszik, hogy a színeket két dimenzióban ábrázolhatjuk úgy, hogy az egyik tengelyen például az r-et, másikon a g-t jelenítjük meg. A harmadik koordinátára érvényes, hogy

A CIE 1931 színmérő rendszer alap színingert megfeleltető függvényei
2.13. ábra - A CIE 1931 színmérő rendszer alap színingert megfeleltető függvényei


2.1. táblázat - A CIE 1931 színmérő rendszer alap színingert megfeleltető függvényei

λ

r

g

b

400

0,00963

-0,00217

0,06237

420

0,05166

-0,01665

0,52396

440

0,01476

-0,00735

0,96395

460

-0,09622

0,07095

0,78554

480

-0,23780

0,24042

0,36195

500

-0,29500

0,49060

0,10749

520

-0,14768

0,91076

0,01331

540

0,41976

1,05120

-0,01219

560

1,22830

0,93783

-0,01461

580

2,27240

0,64930

-0,00993

600

2,87170

0,30069

-0,00427

620

2,37430

0,07468

-0,00151

640

1,25430

0,00450

-0,00014

660

0,44320

-0,00263

0,00023

680

0,12086

-0,00108

0,00005

700

0,02811

-0,00026

0,00002

720

0,00652

-0,00006

0,00001


2.4.3. Az XYZ-színrendszer

Az eredeti RGB a negatív előjelek miatt gyakorlati célokra nem használható, ezért célszerű rajta egy olyan matematikai transzformációt végrehajtani, amely eredményeként a már transzformált színrendszer csak pozitív színösszetevőket tartalmaz. Ebben eltűnnek a negatív előjelek, de túltelítetté válnak a színek, azaz a valóságban nem létező, virtuális színek jönnek létre [2.16.]. A Nemzetközi Világítási Bizottság 1931-ben ezért olyan szín-összehasonlító segédfüggvények bevezetését javasolta, amelyek segítségével Wright és Guild eredményei egy olyan téren belül helyezhetők el, ahol minden érték pozitív. Ezen felül a színkoordináták nemcsak vizuális összehasonlítással, hanem azok spektrális energia-eloszlása alapján, elméleti úton is meghatározhatók. Tehát a CIE javaslata az volt, hogy az (R), (G) és (B) alapszínek helyett minden valóságos színre kizárólag pozitív koordinátákat adó alapszínek kerüljenek bevezetésre. Az új alapszíneket úgy választották meg, hogy az általuk alkotott alakzat teljesen körülzárja a spektrumvonalat és a bíborvonalat, így az r, g, b rendszer analógiájára generált x, y, z rendszerben minden valóságos szín koordinátái pozitívak.

Az alakzat kiválasztására a CIE az alábbi követelményeket állította fel [2.17.]:

  1. Az egyenlő energiájú fehér szín X, Y és Z színösszetevője legyen egymással egyenlő .

  2. Minden szín Y színösszetevője adja meg a szín világosságát.

  3. Az X, Y, Z alappontok essenek minél közelebb a spektrumvonalhoz.

  4. Az egymástól minimálisan, de szemmel észrevehetően különböző színeket ábrázoló pontok távolsága az egész színtartományban lehetőleg egyforma legyen.

  5. Azok a pontok, amelyek az r, g, b koordináta-rendszerben egy egyenes mentén fekszenek, az x, y, z rendszerben is egy egyenesre essenek.

A CIE 1931 színmérő rendszer színingert megfeleltető függvényei
2.14. ábra - A CIE 1931 színmérő rendszer színingert megfeleltető függvényei


2.2. táblázat - A CIE 1931 színmérő rendszer színingert megfeleltető függvényei

Hullámhossz

x

y

z

360

0,00013

3,92E-06

0,000606

380

0,001368

0,000039

0,00645

400

0,01431

0,000396

0,06785

420

0,13438

0,004

0,6456

440

0,34828

0,023

1,74706

460

0,2908

0,06

1,6692

480

0,09564

0,13902

0,81295

500

0,0049

0,323

0,272

520

0,06327

0,71

0,07825

540

0,2904

0,954

0,0203

560

0,5945

0,995

0,0039

580

0,9163

0,87

0,00165

600

1,0622

0,631

0,0008

620

0,85445

0,381

0,00019

640

0,4479

0,175

0,00002

660

0,1649

0,061

0

680

0,04677

0,017

0

700

0,011359

0,004102

0

720

0,002899

0,001047

0

740

0,00069

0,000249

0

760

0,000166

0,00006

0

780

4,15E-05

1,5E-05

0

800

1,03E-05

3,7E-06

0

820

2,52E-06

9,11E-07

0


Mindezek alapján a transzformációs formulák [2.18.]:

Az X, Y, Z színösszetevőkből számíthatók az x, y, z színkoordináták:

Können belátható, hogy

Az átszámítás fordított irányban is megvalósítható:

A színek kezelése, jellemzése és mérése során a rendszer jól vizsgázott, így jelenleg elfogadottnak tekinthető. Egy szín helye ebben a rendszerben az x, y színkoordinátákkal, világossága pedig az Y színösszetevővel jellemezhető. A színösszetevők a ɸ(λ) színinger-függvény ismeretében egyszerűen meghatározhatók:

Ahol

X, Y, Z

a színösszetevők,

spektrumszínek CIE színmegfeleltető függvényei,

ɸ ( λ )

a színinger-függvény,

λ

a hullámhossz,

k

egy alkalmasan választott arányossági tényező.

Ábrázolástechnikai érdekesség, hogy a CIE xyY színháromszögben meg szokták rajzolni a Planck vonalat, és a szabványos megvilágítások színpontjait (A,B,C) is

A CIE xyY színháromszög
2.15. ábra - A CIE xyY színháromszög


A CIE 1931 színességi diagram
2.16. ábra - A CIE 1931 színességi diagram


A Planck-vonal és a korrelált színhőmérséklet értelmezése
2.17. ábra - A Planck-vonal és a korrelált színhőmérséklet értelmezése


2.4.4. Az RGB színrendszer

Az RGB színrendszer a monitorok színképzése során lejátszódó jelenségekre alapozva jött létre.

A katódsugárcsöves, úgynevezett CRT monitorokban egy elektronágyú nyalábbal bombázza a foszforborítású üveglemez felületét. Az elektronnyalábot elektromágneses tér téríti ki, írányítja az ernyő megfelelő pontjába, ahol az a foszforborításba ütközik fényjelenséggel kísérve. E fényjelenség spektrális összetételét alapvetően a foszforborítás kémiai tulajdonságai határozzák meg. A színes CRT monitoroknak három alapszínük van: a vörös, a zöld és a kék (RGB). Ezek additív keverésével egyéb színek állíthatók elő. A fénysűrűség növelése az elektronok kinetikus energiájának növelésével történik. A monitor RGB komponenseivel azt határozzuk meg, hogy a vörös, zöld és kék érzetet keltő spektrumok milyen keverék hozza létre az elvárt színérzetet [2.19.].

2.4.5. A CMY és a CMYK színrendszerek

A CMY, vagy más néven a szubtraktív színrendszer alapmodellje a nyomtatás során lejátszódó színkeverés. Ebben a rendszerben azt mondjuk meg, hogy mennyi kékeszöld (Cyan), bíbor (Magenta) és sárga (Yellow) színt kell kivonni a fehérből, hogy a keverék a kívánt színérzetet keltse [2.20.], vagy a gyakorlatban mennyi ilyen festéket kell felvinni a fehér lapra a megkövetelt színérzet kiváltása céljából. A CMY színrendszer úgy származtatható RGB-ből, hogy a derékszögű koordináta-rendszerben történő ábrázolás esetén, a színek és inverzeik felcserélődnek. A koordináta-rendszer kezdőpontjában a fekete található, és az alapszínek a tengelyeken helyezkednek el. Az átalakítás összefüggései:

CMYK rendszer alkalmazását az indokolja, hogy a három alapszín csak elméletileg ad feketét, a gyakorlati kivitelezés során ez azonban csak sötétbarnának felel meg. A fekete festékanyag alkalmazásával ez a probléma orvosolható, továbbá a mély színek intenzitása fokozható. A fekete kulcsszín (Key) alkalmazása esetén az alapszíneket arányosan módosítani kell, ezért az eljárást alsószín-eltávolításnak (Undercolor Removal) is nevezzük [2.21.]:

A CMY színrendszer
2.18. ábra - A CMY színrendszer


2.4.6. A HLS színrendszer

Az RGB és CMY színrendszerek jellegükből és származtatásukból eredően fizikai megközelítést tükröznek, így nem tekinthetők igazán szemléletesnek. Közelebb áll az emberi gondolkodáshoz, ha a színt annak árnyalatával, fényességével és a telítettségével jellemezzük. Ebben a rendszerben a koordináta-tengelyeken elhelyezett testen ábrázolhatjuk a színeket úgy, hogy a főátlón lévő relatív távolságot a fényességnek (Lightness), a színárnyalatot meghatározó szöget az árnyalatnak (Hue), illetve a főátlótól a kocka széléig mért relatív távolságot pedig telítettségnek (Saturation) tekintjük. A főátlóra merőleges körökben a szürke középen helyezkedik el, arra nézve szimmetrikusan találhatók a komplementer színek, melyek keveréke a szürke (kivételes esetben fehér). A színkeverésben részt vevő sáv szélessége lényegében a telítettséget jelenti, értékének változása során a megadott szín távolabbi szomszédainak a szín kikeverésében való részvétele változik. A HSB modell a HLS modellel megegyezik, csak az L (fényesség) helyett a B (Brightness, világosság) szerepel.

2.4.7. Egyenletes színterek

A szín(inger)tér a színingerek geometriai – általában háromdimenziós térben történő – szemléltetésére szolgál, azok valamilyen elv szerint definiált skála alapján való elrendezését mutatja. A színtest a színingertér azon része, amely a felületszíneket tartalmazza. A CIE 1931 XYZ szabvány egy színteret definiál, a neki megfelelő test magában foglalja az összes, az emberi szem által látható színt. Sajnos jelentős hátránya, hogy nem egyenletesen mutatja a színeket, tehát a színváltozásokhoz tartozó geometriai távolságok nem egyeznek meg. Tehát az a színtér, melyben az X, Y és Z értékekkel jellemezzük a színpontokat, nem egyenletes. Az egyenletes – ahol az azonos méretű elmozdulások mindig ugyanakkora színváltozást eredményeznek – színingertér megvalósítására való törekvés komoly múltra tekint vissza. Az egyik, már közel egyenletes eloszlású a CIELab [2.22.] színingertér, amely az ellentétes színpárok rendszerén alapul. Benne a pirosság vagy a zöldesség mértéke kifejezhető egyetlen koordinátával, az a-val. A kékesség, illetve a sárgaság pedig egy másikkal, a b koordinátával. A harmadik koordináta az L, a szín világosságának felel meg. Az X, Y és Z trikromatikus értékeket a CIELab színinger tér L*, b* és a* derékszögű koordinátákká transzformáló egyenletek egy neutrális fehér referencia mellett a következők:

ahol X, Y, Z a színes tárgy trikromatikus értékei, és X0, Y0, Z0 a szabványos fehér trikromatikus mérőszámai úgy, hogy teljesülnek az alábbi feltételek:

A fentiek alapján minden színhez egyértelműen hozzárendelhető a színtérben egy színpont, három koordinátával megadva. A CIELab színezeti szög a színpont színezetét jellemzi:

A CIELab króma a telítettség jellemzője, a színpontnak az L* tengelytől való távolsága:

A mintákhoz tartozó színpontok egymáshoz viszonyított geometriai távolságaiból [2.2.] a minták közötti színeltérés kiszámítható. A színingerkülönbséget a színtérben értelmezett A színpont és R etalon, vagy referencia, mint vonatkoztatási színpont közötti térbeli geometriai távolsággal adjuk meg [2.23.].

Megjegyzendő, hogy a szakirodalomban az egyenletes színtérre vonatkozóan gyakran használják az érzethelyes jelzőt. A CIE ajánlásai szerint jelentőséggel bír még a CIE Luv is, melyben az u és a v értékek a CIE XYZ értékekből számíthatók [2.24.].

Példa egyenletes színtérre
2.19. ábra - Példa egyenletes színtérre


2.3. táblázat - A vizuális érzékelés és a színkülönbség kapcsolata

Szemmel érzékelhető eltérés

Nem érzékelhető

Alig észrevehető.

Észrevehető.

Jól látható

Nagy


A színinger különbség értelmezése a színtérben
2.20. ábra - A színinger különbség értelmezése a színtérben


2.4.8. Színtranszformációk

Egy színes megjelenítő, például egy katódsugaras (CRT) monitor az egyes színingereket tristimulusos módon, azaz három komponensből keveri ki. Ennek oka lehet az is, hogy az emberi szemben additív módon zajlik a színkeverés, és az ember látószerve trikromatikus felépítésű, azonban emellett technológiai okok is felsorakoztathatók, ahogy az a színes nyomtatásnál egyértelmű. Működését tekintve a megjelenítő üvegből készült homlokfelületének belső részét – mátrixos elrendezésben – különböző spektrális tulajdonságú fénypor-keverék borítja, melyet vezérelt, és megfelelően eltérített elektronsugarakkal gerjesztünk. A fénypor összetevőit úgy választották meg a spektrális tulajdonságaik alapján, hogy segítségükkel széles tartományban nyíljon lehetőség a színingerek kikeverésére. Maga a keverés additív módon történik, azaz a mátrixba rendezett felületelemek az elektronsugaras gerjesztés hatására felvillannak. Kellő távolságból szemlélve, a megfigyelő számára az egyes mátrixelemek már nem különböztethetők meg, azaz a struktúra nem oldódik fel, így csupán az additív módon kikevert eredő színinger érzékelhető. Ha a megjelenítő különböző területein kikevert színingerek vizuális különbségét kívánjuk meghatározni, akkor annak saját rendszerében megadott, az egyes csatornákra vonatkozó értékeit – melyek az elektronnyaláb vezérléséért felelős DAC (digital-to-analog converter) értékekeit jelentik –, a megjelenítőnél alkalmazott fénypor-keverék spektrális tulajdonságai ismeretében egy eszközfüggetlen rendszerbe (CIE XYZ) kell konvertálni, majd ezen értékek segítségével egyenletes színtérben (CIE L*a*b*, vagy CIE L*u*v*) a különbség (ΔE) számítható.

Példa:

Hozzunk létre katódsugaras (CRT) megjelenítőn egy-egy vörös és zöld színingerpárt úgy, hogy azok DAC értékei egységnyi különbségűek legyenek! Határozzuk meg, hogy mely színingerpár különbsége a nagyobb!

A feladat értelmezése
2.21. ábra - A feladat értelmezése


A CRT monitorokon megvalósuló additív színkeverés gyakorlati kivitelezésének lehetséges módozatai
2.22. ábra - A CRT monitorokon megvalósuló additív színkeverés gyakorlati kivitelezésének lehetséges módozatai


Megoldás:

Legyenek a beállított színingerpárok a monitor saját rendszerében R1(255;0;0), R2(254;0;0), illetve G1(0;255;0), G2(0;254;0). Az eszközfüggetlen rendszerbe történő transzformáció során szükségünk van az egyes csatornák színporkeverékei által gerjeszthető színingerek spektrális összetételére, ami spektrofotométerrel mérhető. Sajnos az estek jelentős részében ez nem áll rendelkezésre, vagy a mérés nem kivitelezhető. Ilyenkor a típusadatok alapján a konkrét megjelenítőre vonatkozó gyári adatok beszerzésére vagyunk kényszerítve. Ezek az adatok általában publikusak, ha nem is a konkrét spektrális összetétel, hanem az egyes csatornákra, illetve az azon megjeleníthető fehér színingerre vonatkozó CIE x,y,z adatok formájában.

CRT monitor csatornáinak spektrális eloszlásfüggvényei [2.25.]
2.23. ábra - CRT monitor csatornáinak spektrális eloszlásfüggvényei [2.25.]


A transzformációs mátrix elemeinek meghatározásához szükséges értékek:

xr, yr, zr

xg, yg, zg

xb, yb, zb

xw, yw, zw

Ha az Y relatív értéke egységnyi, akkor

Az így kapott transzformációs mátrix lehetővé teszi a megjelenítő RGB-értékeinek XYZ-rendszerbe történő transzformációját, amiből a vizsgált színingerek színkülönbségei már számíthatók.

2.4. táblázat - P22 típusú CRT monitorcsatornák spektrális eloszlásfüggvényei [2.25.]

λ [nm]

R [-]

G [-]

B [-]

350

0,001482

0,001853

0,003054

360

0,001

0,000721

0,004163

370

0,001463

0,001504

0,010324

380

0,002252

0,001853

0,039576

390

0,001239

0,002598

0,088732

400

0,002204

0,004565

0,15395

410

0,003694

0,006498

0,2392

420

0,006824

0,010543

0,36657

430

0,008857

0,01487

0,49183

440

0,01039

0,018469

0,56028

450

0,010311

0,022723

0,56757

460

0,009983

0,029994

0,50862

470

0,01701

0,050423

0,40776

480

0,007753

0,098658

0,29973

490

0,017824

0,18414

0,19963

500

0,011093

0,29657

0,12449

510

0,00889

0,40732

0,076118

520

0,009602

0,48465

0,047458

530

0,011918

0,49941

0,030104

540

0,13073

0,47546

0,022944

550

0,012121

0,42357

0,01441

560

0,009065

0,35649

0,010385

570

0,012248

0,26477

0,007476

580

0,010583

0,1831

0,004995

590

0,059789

0,11959

0,004827

600

0,036581

0,080627

0,003169

610

0,050166

0,052528

0,002949

620

0,15703

0,035042

0,005033

630

0,3597

0,026878

0,009306

640

0,038894

0,012863

0,001098

650

0,017038

0,007922

0,000931

660

0,011249

0,005665

0,000868

670

0,013959

0,004285

0,000884

680

0,016805

0,002249

0,000945

690

0,038109

0,002236

0,001543

700

0,07625

0,002528

0,002447

710

0,12103

0,003164

0,003097

720

0,011686

0,00094

0,000728

730

0,005578

0,00081

0,000854

740

0,002852

0,000547

0,000459

750

0,002494

0,000473

0,000394


A csatornákra vonatkozó spektrális eloszlásfüggvények alapján, a CIE 1931 színmérő rendszer színingermegfeleltető függvényei segítségével az X, Y, Z értékek számíthatók.

Az így kapott X, Y, Z értékekből az egyes csatornákra, illetve az additív színkeverés miatt a fehér színingerre vonatkozó színkoordináták szintén számíthatók:

Értékeik:

R

xr=0.64

yr=0.33

zr=0.03

G

xg=0.29

yg=0.60

zg=0.11

B

xb=0.15

yb=0.06

zb=0.79

Fehér

xn=0.312713

yn=0.329016

zn=0.3581

A transzformációs mátrix:

A vizsgált színingerek és a fehér X,Y és Z értékei:

R1

R2

G1

G2

W

X

109.863

109.3724

87.108

86.7664

242.3520

Y

56.6100

56.3880

180.2085

179.5018

255.0000

Z

5.1510

5.1308

33.0480

32.9184

277.5675

Az L­*, a* és a b* értékei:

R1

R2

G1

G2

L

54.2386

54.1466

87.3244

87.1892

a

81.3422

81.1659

-89.8741

-89.7456

b

68.1504

68.0612

79.7545

79.6501

A fenti adatok segítségével végzett színkülönbség-meghatározások alapján, a vörös színingerpár színkülönbsége 0.2180, míg a zöld páré 0.2137. Megállapítható, hogy a két vörös színinger ugyan távolabb van egymástól, de mindkét színingerpár még az érzékelhető érték alatt helyezkedik el.

A feladat megoldásának menete
2.24. ábra - A feladat megoldásának menete


2.5. Ellenőrző kérdések:

  1. Magyarázza meg példákkal az inger, az észlelet és az érzéklet fogalmakat!

  2. A metaméria következtében két színárnyalat egy megvilágításban egyformának tűnik, de más megfigyelési geometria vagy eltérő fényviszonyok esetén már különböznek. Mondjon példát a gyakorlati életből!

  3. Ismertesse és magyarázza el a Grassmann törvényeket!

  4. Ismertesse és magyarázza el az additív és a szubtraktív színkeverés szabályait, mondjon rájuk példát a mindennapi életből!

  5. Magyarázza meg az XYZ színrendszer kialakításánál a CIE által megfogalmazott követelményeket! Mi indokolta ezek előírását?

  6. Mi a szerepe a Planck-vonalnak a korrelált színhőmérséklet értelmezésében?

  7. Mi indokolja az egyenletes színterek generálását és az milyen alapokon nyugszik?

  8. Mi módon generáljuk a színterek közötti transzformációt biztosító transzformációs mátrix egyes elemeit?

2.6. További irodalom a szakterület tanulmányozásához

  • Abney, W. de W. 1914. Researches in Colour Vision and the Trichromatic Theory. London: Longmans, Green.

  • Agoston, G. A. 1987. Color Theory and Its Application in Art and Design. Berlin: Springer.

  • Balinkin, I. 1941. Measurement and designation of small color differences. Bulletin of the American Ceramical Society 20:392–402.

  • Barasch, M. 1978. Light and Color in the Italian Renaissance Theory of Art. New York: New York University Press.

  • Bäuml, K. H. 2002. Color appearance of spatial pattern: the role of increments and decrements. Vision Research 42:1627–1637.

  • Bedford, R. E., and Wyszecki, G. 1958. Wavelength discrimination for point sources. Journal of the Optical Society of America 48:129–135.

  • Berlin, B., and Kay, P. 1969. Basic Color Terms. Berkley CA: University of California Press.

  • Berns, R. S. 1993. The mathematical development of CIE TC 1-29 proposed color difference equation. Proceedings of the 7th Congress of the International Colour Association,Vol. B: C19-1–C19-4.

  • Berns, R. S., and Billmeyer, F. W. 1985. Development of the 1929 Munsell Book of Color: A historical review. Color Research and Application 10:246–250.

  • Billmeyer, F.W., and Bencuya, A. K. 1987. Interrelation of Natural Color System and the Munsell color order system. Color Research and Application 12:243–255.

  • Boynton, R. M. 1983. Ten years of research with the minimally distinct border. In J. D.

  • Mollon and L.T. Sharpe, eds., Colour vision: Physiology and Psychophysics. London: Academic Press, pp. 193–206.

  • Brewster, D. 1831. A Treatise on Optics. London: Longman, Rees.

  • Brücke, E. 1866. Die Physiologie der Farben für die Zwecke der Kunstgewerbe. Leipzig: Hirzel.

  • Burnham, R. W. 1949. Comparison of color systems with respect to uniform visual spacing. Journal of the Optical Society of America 39:387–392.

  • Cheung, M., and Rigg, B. 1986. Colour-difference ellipsoids for five CIE colour centres.

  • Color Research and Application 11:185–195.

  • CIE 1964 (U*V*W*)-System. 1963. CIE Proccedings. Vienna, Austria: Commission Internationale de l’Éclairage.

  • CIE 1976 (L*u*v*)-System. 1986. No. 15.2, Colorimetry, 2nd ed. Vienna, Austria:

  • Commission Internationale de l’Éclairage.

  • CIE 1976 (L*a*b*)-System. 1986. No. 15.2, Colorimetry, 2nd ed. Vienna, Austria: Commission Internationale de l’Éclairage.

  • CIE 1987. International lighting vocabulary, 4th ed.Vienna,Austria: Commission Internationale de l’Éclairage.

  • CIE 1990. CIE 86, 2° Spectral Luminous Efficiency Function for Photopic Vision. Vienna: Commission Internationale de l’Éclairage.

  • Cohen, J. B. 2001. Visual Color and Color Mixture. Urbana: University of Illinois Press.

  • Cui, G., Luo, M. R., Rigg, B., Roesler, G., and Witt, K. 2002. Uniform colour spaces

  • based on the DIN99 colour-difference formula. Color Research and Application 27:282–290.

  • Derefeldt, G. 1991. Colour appearance systems. In P. Gouras, ed., The Perception of Colour. Boca Raton, FL: CRC Press.

  • Derefeldt, G., and Hedin, C. E. 1987. A color atlas for graphical displays. In B. Knave and P.G.Wiedebäck, eds.,Work with Display Units 86. Amsterdam: North-Holland.

  • DIN Farbenkarte, German Standard DIN 6164. 1962. Berlin: Beuth.

  • Evans, R. M. 1974. The Perception of Color. New York:Wiley.

  • Fairchild, M. D. 1998. Color Appearance Models. Reading, MA: Addison-Wesley.

  • Fairchild, M.D., and Pirotta, E. 1991. Predicting the lightness of chromatic object colors using CIELAB. Color Research and Application 16:385–393.

  • Fechner, G. T. 1860. Elemente der Psychophysik, Vols. 1 and 2. Leipzig: Breitkopf und

  • Gage, J. 1993. Color and Culture. Boston: Little, Brown.

  • Gage, J. 1999. Color and Meaning. Berkley: University of California Press.

  • Gerstner, K. 1986. The forms of color. Cambridge: MIT Press.

  • Gilchrist, A. L., ed. 1994. Lightness, Brightness, and Transparency. Hillsdale NJ: Erlbaum.

  • Goethe, J.W. v. 1810. Zur Farbenlehre. Tübingen: Cotta.

  • Guild, J. 1931. The colorimetric properties of the spectrum. Philosophical Transactions of the Royal Society (London) A230:149–187.

  • Helmholtz, H. v. 1891.Versuch einer erweiterten Anwendung des Fechnerschen Gesetzes im Farbensystem. Zeitschrift für Psychologie und Physiologie der Sinnesorgane 2:1–30.

  • Hunt, R. W. G. 1977. The specification of colour appearance. I. Concepts and terms. Color Research and Application 2:55–68.

  • Hunter, R. S. 1942. Photoelectric Tristimulus Colorimetry with Three Filters. Circular C429. National Bureau of Standards,Washington.

  • Hurvich, L. M. 1981. Color Vision. Sunderland: Sinauer.

  • Hurvich, L. M., and Jameson,D. 1955. Some quantitative aspects of an opponent-colors theory. II. Brightness, saturation, and hue in normal and dichromatic vision. Journal of the Optical Society of America 45:602–616.

  • Jameson,D., and Hurvich, L. M. 1964.Theory of brightness and color contrast in human vision. Vision Research 4:135–154.

  • Judd,D. B. 1932. Chromaticity sensibility to stimulus differences. Journal of the Optical Society of America 22:72–108.

  • Judd, D. B. 1940. The Munsell color system. Journal of the Optical Society of America 30:574–645.

  • Judd, D. B. 1969. Ideal color space. Palette 29:25–31, 30:21–28, 31:23–29.

  • Judd, D. B., MacAdam, D. L., and Wyszecki, G. 1964. Spectral distribution of typical

  • daylight as a function of correlated color temperature. Journal of the Optical Society of America 54:1031–1040.

  • Kim, D. H., and Nobbs, J. H. 1997. New weighting functions for the weighted CIELAB colour difference formula. Proceedings 8th Congress of the International Colour Association,Vienna: CIE, pp. 446–449.

  • Krauskopf, J. 1999. Higher order color mechanisms. In K. R. Gegenfurtner and L. T. Sharpe, eds. Color vision. Cambridge: Cambridge University Press.

  • Krauskopf, J., and Gegenfurtner, K. 1992. Color discrimination and adaptation. Vision Research 32:2165–2175.

  • Kuehni, R. G. 1982. Advances in color difference formulas. Color Research and Application 7:19–23.

  • Kuehni, R. G. 2000b. A comparison of five color order systems. Color Research and Application 25:123–131.

  • Kuehni, R. G. 2001c. Color space and its divisions. Color Research and Application 26:209–222.

  • Luneburg, R. K. 1950. The metric of binocular visual space. Journal of the Optical Society of America 40:627–642.

  • MacAdam, D. L. 1935. Maximum visual efficiency of colored materials. Journal of the Optical Society of America 25:361–367.

  • MacAdam, D. L. 1942. Visual sensitivities to color differences in daylight. Journal of the Optical Society of America 32:247–274.

  • MacAdam, D. L. 1965. Specification of color differences. Acta Chromatica 1:147–156.

  • MacAdam, D. L. 1974. Uniform color scales. Journal of the Optical Society of America 64:1691–1702.

  • MacAdam, D. L. 1978. Colorimetric data for samples of OSA uniform color scales. Journal of the Optical Society of America 68:121–130.

  • MacAdam, D. L. 1981. Color Measurement. Berlin: Springer.

  • Maxwell, J. C. 1860. Theory of compound colours, and the relations of the colours of the spectrum. Proceedings Royal Society (London) 10:57–84.

  • Munsell, A. H. 1907. Atlas of the Munsell Color System. Malden, MA: Wadsworth-Howland.

  • Munsell, A. H. 1915. Atlas of the Munsell Color System, 2nd ed. Malden:Wadsworth-Howland.

  • Newton, I. 1670. The Optical Papers of Isaac Newton: Vol. 1. The Optical Lectures 1670–1672, transl. ed. A. E. Shapiro. Cambridge: Cambridge University Press, 1984.

  • Newton, I. 1704. Opticks. London: Smith and Walford.

  • Stockman, A., MacLeod, D. I. A., and Johnson, N. E. 1993. Spectral sensitivities of the human cones. Journal of the Optical Society of America A10:2491–2521.

  • Stockman, A., and Sharpe, L. T. 1998. Human cone spectral sensitivities: a progress report. Vision Research 38:3193–3206.

  • Walraven, P. L., and Bouman, M. A. 1966. Fluctuation theory of colour discrimination of normal trichromats. Vision Research 6:567–586.

  • Wright, W. D., and Pitt, F. H. G. 1934. Hue discrimination on normal colour-vision. Proceedings of the Physical Society (London) 46:459–454.

  • Wyszecki, G. 1960. Farbsysteme. Göttingen: Musterschmidt-Verlag.

  • Wyszecki, G. 1963. Proposal for a new color-difference formula. Journal of the Optical Society of America 53:1318–1319.

Felhasznált irodalmak

[2.1.] Dr. Vass, Zoltán. A rajzvizsgálat pszichodiagnosztikai alapjai, Projekció, kifejezés, mintarajzok. Flaccus Kiadó. pp.415.. 2006.

[2.2.] Lukács, Gyula. Színmérés. Műszaki Könyvkiadó. Budapest . p.11.. 1982.

[2.3.] Nemcsics, Antal. Színtan Színdinamika. Tankönyvkiadó. Budapest . p.10.. 1988.

[2.4.] Lukács, Gyula. Színmérés. Műszaki Könyvkiadó. Budapest . p.24.. 1982.

[2.5.] Hruska, Rudolf. Általános színtan és színmérés. Közgazdasági és Jogi Könyvkiadó. Budapest . p.15.. 1956.

[2.6.] Budó-Mátrai. Kísérleti Fizika III. Tankönyvkiadó. Budapest . 1977.

[2.7.] Schanda, János, Kovácsné Stahl, Ágnes, és Lukács, Gyula. A színingermetrika fogalmai. 27. Kolorisztikai Szimpózium. Tata . p.7-20.. 1999. szeptember 27-29.

[2.8.] Wyszecki, G. és Stiles, W. S.. Color Science, Concepts and Methods. Second edition. Wiley. New York . 1982.

[2.9.] Gomes, J. és Velho, L.. Color Representation: Theory and Techniques. IMPA. p.4.. 1992.

[2.10.] Schanda, J.. Colorimetry, Understanding the CIE System. John Wiley & Sons, Inc.. p.70.. 2007.

[2.11.] Cox, W.. Colour-Mixture Terminology. Color Research and Application. No. 2.. p. 93..

[2.12.] Grassmann, H.. On the theory of compound colors. p.254-264.. 1854.

[2.13.] Optika. Panem. Budapest . p.486.

[2.14.] Wright, W.D. A re-etermination of the trichromatic coefficients of the spectral colours. Trans. Opt. Soc. 30. pp. 141-161. 1928-29.

[2.15.] Guild, J.. The Colorimetric Properties of the Spectrum. Phil. Trans. Roy. Soc.. London . A 230. p. 149-187. 1931.

[2.16.] Optika. Panem. Budapest . p.487..

[2.17.] Optika. Panem. Budapest . p.488..

[2.18.] Lukács, Gyula. Színmérés. Műszaki Könyvkiadó. Budapest . p.142.. 1982.

[2.19.] Szimay-Kalos, László. Számítógépes grafika. ComputerBooks. Budapest . p.67.. 1999.

[2.20.] Szimay-Kalos, László. Számítógépes grafika. ComputerBooks. Budapest . p.67.. 1999.

[2.21.] Field, G.G.. Color and Its Reproduction. Graphics Arts Technical Foundation. pp. 320-329.. 1988.

[2.22.] Schanda, J.. Colorimetry, Understanding the CIE System. John Wiley & Sons, Inc.. p.64.. 2007.

[2.23.] Schanda, J.. Colorimetry, Understanding the CIE System. John Wiley & Sons, Inc.. p.84.. 2007.

[2.24.] Routine Test Method for Paper and Board. Instrumental Measurement of Colour. Paper technology and Industry. pp. 217-218. 1977, August.

[2.25.] A méréseket dr. Samu Krisztián bocsátotta rendelkezésemre nanométeres felbontásban, az adatokat tartalmazó táblázat csak tájékozató jellegű.

[2.26.] http://www-history.mcs.st-and.ac.uk/BigPictures/.

3. fejezet - A 3D grafika elméleti alapjai

Tartalom
3.1. Grafikus tárgymodellek
3.1.1. Raszteres és vektoros leírás
3.2. Koordináta-rendszerek
3.2.1. Leggyakrabbak használt koordinátarendszerek
3.2.2. Homogén koordináták
3.3. Görbék, felületek és testek
3.3.1. Paraméteres görbemegadás
3.3.2. Folytonosság és geometriai folytonosság
3.3.3. Az elsőfokú paraméteres görbeszakasz leírása
3.3.4. Hermite-féle harmadfokú görbeszakasz
3.3.5. Bezier-féle harmadfokú görbeszakasz
3.3.6. Természetes spline
3.3.7. Catmull-Rom görbék, a kardinális spline
3.3.8. B-spline-ok
3.3.8.1. Harmadfokú B-Spline görbék
3.3.8.1.1. A harmadfokú bázisgörbék jellege
3.3.8.1.2. Közelítés harmadfokú B-spline görbével
3.3.8.2. Közelítés harmadfokú nem egyenközű B-Spline görbékkel
3.3.8.3. Interpoláció B-Spline görbékkel
3.3.8.3.1. Egyenletes időosztás
3.3.8.3.2. Osztás poligonkerület ívhossza szerint
3.3.8.3.3. Centripetális módszer
3.3.8.4. Racionális, nem egyenközű B-spline (Non-Uniform Rational B-Spline - NURBS)
3.3.9. Szabadformájú felületek
3.3.9.1. Felületek leírása háromszöghálókkal
3.3.9.2. Spline felületek
3.3.9.2.1. Harmadfokú Hermite-felületfolt
3.3.9.2.2. Harmadfokú Bezier-felületfolt
3.3.9.2.3. Felületfoltok illesztése
3.3.9.2.4. Harmadfokú B-spline felületek
3.3.10. Testek
3.3.10.1. CSG modellek
3.3.10.2. B-Rep testábrázolás
3.3.10.3. Térfogati modellek
3.4. A megjelenítő cső
3.4.1. A tér leképezése síkra
3.4.2. Window-Viewport transzformáció
3.4.3. A láthatóság
3.5. A képszintézis alapfogalmai
3.5.1. Fénysűrűség
3.5.2. Fényforrások
3.5.2.1. Pontszerű fényforrás (Point Light)
3.5.2.2. Irány (párhuzamos) fényforrás (Direction Light)
3.5.2.3. Ambiens fényforrás (Ambient Light)
3.5.2.4. Égboltfény (Sky Light)
3.5.2.5. Reflektorfény (Spot Light)
3.5.3. Anyagok, visszaverődés
3.5.3.1. A BRDF
3.5.3.2. Diffúz anyagok jellemzése
3.5.3.3. Reflexív anyagok, ideális visszaverődés
3.5.3.4. Ideális törés
3.5.3.5. Phong illuminácós modell
3.5.4. Az árnyalás modellezése
3.5.4.1. Az árnyalási egyenlet
3.5.4.2. Sugárkövetés
3.5.4.3. Inkrementális képszintézis, egyszerűsített árnyalási egyenlet
3.5.4.4. Felületek közelítő árnyalása
3.5.4.5. Fénysugarak haladása nem átlátszó térben
Irodalmak:

A 3D grafika témája a valóság objektumainak tárolása és megjelenítése.

3.1. Grafikus tárgymodellek

Az adatok tárolási stratégiája meghatározza a megjelenítést is.

3.1.1. Raszteres és vektoros leírás

Grafika tárolására két alapvető stratégia létezik. Az egyik eset, amikor a kép olyan mintha ceruzával rajzolnánk. Ilyenkor a kép adatainak tárolása úgy történik, hogy tároljuk a kép rajzolásához szükséges vonaldarabok (vektorok) adatait, és ennek alapján megrajzolhatjuk a képet. Az ilyen tárolási módot vektoros képtárolásnak hívják. A 3.1. ábra - Vektoros A egy nagy A rajzolatát mutatja vektorosan.

Vektoros A
3.1. ábra - Vektoros A


Lehetőségünk van arra is, hogy a képet képpontokra (raszterpontokra) osszuk és minden egyes pontról tároljuk annak színét. Ezt a raszteres képet a térképhez való hasonlatossága miatt bitképnek hívjuk. A 3.2. ábra - Raszteres A egy ilyen fekete-fehér bitképét mutatja egy A betűnek.

Raszteres A
3.2. ábra - Raszteres A


3.2. Koordináta-rendszerek

A objektumok térbeli elhelyezkedésének megadásakor vonatkoztatási rendszerre, koordináta-rendszerre van szükségünk.

3.2.1. Leggyakrabbak használt koordinátarendszerek

Matematikai tanulmányainkból ismertek a Descartes féle derékszögű koordináta-rendszer, a henger és gömbi koordináta-rendszerek egyaránt.

3.2.2. Homogén koordináták

Az olyan koordináta-rendszereket nevezzük homogénnek, amelyekben a pontot azonosító, rendezett pár (hármas, négyes stb.) elemeit egy nullától különböző számmal megszorozva, ugyanazt, a pontot azonosító párt (hármast, négyest…) kapjuk [3.1.].

Ha egy síkbeli pontot szeretnénk leírni, akkor azt megtehetjük úgy, hogy a síkot kiemeljük a térbe. A z=1 lesz a sík egyenlete, és a tér pontját az [x,y,1] homogén koordinátákkal megadott ponttal jellemezzük. Világos, hogy az azonos irányú [λ*x, λ*y, λ] ugyanaz a pontot jelöli ki a síkból (3.3. ábra - Homogén koordináták)

Homogén koordináták
3.3. ábra - Homogén koordináták


Hasonlóan járhatunk el térbeli koordináták esetén a negyedik koordináta (w=1) értéket választva a tér pontjait az [x,y,z,1] homogén koordinátás forma írja le.

A homogén koordináták igazi jelentőségét az adja, hogy használatukkal az ideális térelemek (pont, egyenes, sík) is megadhatók. Például, a 3.1. ábra - Vektoros A esetén az [1,0,0] homogén koordinátákkal megadott pont az x irányú ideális pontját adja a síknak

3.3. Görbék, felületek és testek

A szabadformájú geometriai objektumok modellezéséhez foglalkoznunk kell a térgörbék és a térbeli felületek matematikai leírásával. Ezek használata megfelel a vektoros geometriai ábrázolásnak. Először a térgörbék leírását vizsgáljuk, majd ezt általánosítjuk a szabadformájú felületek leírására. A térgörbék közvetlen függvénnyel való leírása nem alkalmas tetszőleges görbe közelítő ábrázolására, mert nem tudjuk biztosítani koordinátákban megkövetelt egyértékűséget. A (3.1) közelítés esetében, amikor az x függvényében közelítjük az y és z koordinátákat, akkor nem fordulhat elő, hogy egyetlen x értékhez több (y,z) páros tartozzon, a görbe azonban visszatekeredhet oda.

(3.1)

Az implicit görbemegadás, mely egy egyenlet gyökeinek görbéjét tartalmazza (3.2), gyakorlati szempontból használhatatlan.

(3.2)

3.3.1. Paraméteres görbemegadás

A fenti megfontolások alapján a paraméteres görbemegadást használjuk. Ennek lényege, hogy egy, a koordinátáktól független paraméter-intervallumot választva, a t paraméter () függvényeként írhatjuk fel a görbe pontjainak (x,y,z) koordinátáit (3.3).

(3.3)

Gyakorlatilag tehát a térgörbét, mint egy vektor-skalár függvényt ábrázoljuk (3.4) [3.2.].

(3.4)

3.3.2. Folytonosság és geometriai folytonosság

Egy térgörbe akkor és csak akkor folytonos, ha koordinátafüggvényei folytonosak. Tehát

(3.5)

Az intervallumon folytonos függvényeket C-vel jelöljük, a felső indexben 0-val (0. derivált folytonos), az alsó indexben az intervallummal.

Egy térgörbe akkor és csak akkor folytonosan differenciálható (a felső indexben az első deriváltat 1 jelöli), ha koordinátafüggvényei folytonosan differenciálhatók (3.6). Tehát

(3.6)

Hasonlóan egy térgörbe akkor és csak akkor kétszer folytonosan differenciálható, ha a koordinátafüggvények kétszer folytonosan differenciálhatók (3.7).

(3.7)

Definiáljuk a geometriai folytonosság fogalmát!

Definíció: Két csatlakozó görbeszakaszt a csatlakozó pontban k. rendben geometriailag folytonosnak mondunk – és Gk-val jelöljük – akkor és csak akkor, ha mindkét görbeszakasznak létezik olyan paraméterezése, hogy a görbék a pont két oldalán számított paraméter szerinti i. deriváltjai (ahol ik) megegyeznek.

Ha a fenti definíciót a G1 elsőrendű folytonosságra fogalmazzuk át, akkor a következő definíciót kapjuk.

Definíció: Két folytonos (C0) görbe akkor és csak akkor folytonos geometriailag 1. rendben (G1), ha a csatlakozó pontban a két görbe érintővektora egy irányba mutat. Más szavakkal, ha f(u) és g(v) görbék csatlakoznak akkor a csatlakozási pontban f’(u) és g’(v) párhuzamosak, és skaláris szorzatuk nem negatív. (3.4. ábra - G1 görbecsatlakozás)

G1 görbecsatlakozás
3.4. ábra - G1 görbecsatlakozás


Érdemes megjegyezni, hogy elegendő csak az egyirányúságot kikötni, hiszen az egyik oldalon lineáris átparaméterezéssel a görbe „bejárásának” sebessége skálázható. A második megfogalmazásban a skaláris szorzatra való megkötés a párhuzamos, de ellenkező irányba mutató érintőket szűri ki.

Nem G1 görbecsatlakozás
3.5. ábra - Nem G1 görbecsatlakozás


A G2 másodrendű geometriai folytonosság meghatározására igaz a következő, G. Neilson nevéhez fűzhető tétel is:

Tétel: Két C1 folytonosan csatlakozó görbeszegmens akkor és csak akkor csatlakozik G2 folytonosan, ha a második derivált vektorok különbsége párhuzamos a közös érintővektorral, azaz .

Nyilvánvaló, hogy k.-rendű geometriai folytonosságból nem következik a k.-rendű matematikai folytonosság, azaz , hiszen például első rendben csak azt írtuk elő, hogy az érintők egy irányba mutatnak és nem azt, hogy egyenlők.

Fordítva sem igaz az, hogy a k. deriváltak folytonosságából következik a k. rendű geometriai folytonosság, azaz . Ennek belátásához vizsgáljunk meg egy egyszerű kétdimenziós példát! Legyen két görbénk! Az egyik a (3.8)-nak megfelelő

(3.8)

a másik (3.9)-nek felel meg.

(3.9)

Könnyen ellenőrizhető, hogy a csatlakozó függvények a t=0 időpontban folytonosan differenciálhatók (C1), azonban a (3.6. ábra - Nem G1 görbecsatlakozás) ábrán jól láthatóan geometriailag nem folytonosak.

Nem G1 görbecsatlakozás
3.6. ábra - Nem G1 görbecsatlakozás


3.3.3. Az elsőfokú paraméteres görbeszakasz leírása

Legyen adva a térben egy szakasz két végpontjával! Ekkor a szakasz belső pontjai felírhatók mint a két végpont súlyozott közepe a paramétertől függő, változó súlyokkal a (3.10) szerint. A változó súlyok biztosítják azt, hogy t=0 időpont az egyenes szakasz P0 pontját, a t=1 időpont az egyenes szakasz P1 pontját, a köztes t értékek pedig a szakasz belső pontjait azonosítják (3.7. ábra - Az egyenes szakasz és adatai).

(3.10)

Az egyenes szakasz és adatai
3.7. ábra - Az egyenes szakasz és adatai


Ilyenkor a pontkoordinátákat szorzó függvényeket súlyfüggvényeknek hívjuk (3.11).

(3.11)

Érdemes a súlyfüggvények azon tulajdonságát megfigyelni, hogy az s0(0)=1 és s0(1)=0, valamint az s1(0)=0 és s1(1)=1. (3.8. ábra - Az egyenes szakasz súlyfüggvényei)

Az egyenes szakasz súlyfüggvényei
3.8. ábra - Az egyenes szakasz súlyfüggvényei


A (3.10) egyenlet átírása

(3.12)

ugyanez koordinátánként

(3.13)

amit átírhatunk mátrixos alakra

(3.14)

azaz

(3.15)

Definició: A pontok koordinátáit tartalmazó mátrixot (3.16) a geometriát jellemző mátrixnak hívjuk

(3.16)

Definició: A t paraméter hatványait (jelen esetben csak 0 és 1) tartalmazó T vektort paramétervektornak hívjuk (3.17)

(3.17)

Definició: A súlyfüggvények együtthatóiból adódó mátrixot a közelítés bázismátrixának hívjuk (3.18).

(3.18)

A (3.15) egyenlet mátrixos formája tehát

(3.19)

Egy térgörbét legegyszerűbben törtvonalakkal ábrázolhatunk. Ha adott r0, r1, …rm térbeli ponthalmazunk, akkor választhatunk úgy paraméterpontokat, hogy a ti+1-ti=1 legyen, és ekkor a t=t-ti paraméterezéssel bármely két pont között (3.11) súlyfüggvényeivel felírhatjuk a pontokat összekötő törtvonalakat.

3.3.4. Hermite-féle harmadfokú görbeszakasz

Legyen adott két pont a térben, és mindkét pontban egy-egy vektor (3.9. ábra - Hermite-féle görbeszakasz)! Keressük azt a görbét, amelyik kezdőpontja az egyik pont (P1), végpontja a másik (P4), míg kezdőérintője (R1) és végérintője (R4)!

Hermite-féle görbeszakasz
3.9. ábra - Hermite-féle görbeszakasz


Ez az előírás koordinátánként négy adatot, négy egyenletet és ezzel egy harmadfokú görbét határoz meg. A négy adat:

;    ;

;    

(3.20)

Ha az Hermite-féle görbeszakaszt (3.19) formában szeretnénk felírni, akkor ismerjük a geometriát leíró (3X4 méretű, a pontok és a vektorok által meghatározott) mátrixot és a (4x1 méretű) paramétervektort, a 4x4 méretű bázismátrix azonban ismeretlen.

(3.21)

A bázismátrix elemeinek meghatározásához elegendő a (3.21) egyenletekből csak az koordinátákra megfogalmaznunk.

(3.22)

Írjuk át (3.22) négy egyenletét egyetlen mátrixegyenletté!

(3.23)

Azt látjuk, hogy bármely peremhelyzetet megvalósító vektor megszorozva egy mátrixszorzattal önmagát adja. Ez azt jelenti, hogy

(3.24)

ahol az egységmátrix. Így

(3.25)

Ha kiszámítjuk az inverzet, akkor azt kapjuk, hogy

(3.26)

azaz

(3.27)

Az Hermite-féle szakasz tehát:

(3.28)

Az Hermite-féle súlyfüggvények
3.10. ábra - Az Hermite-féle súlyfüggvények


Az Hermite súlyfüggvények viselkedése hasonló a lineáris szakasz súlyfüggvényeihez. Az sP1(0)=1 és az sP1(1)=0, az sP4(0)=0 és sP4(1)=1. Hasonlóan a deriváltak súlyfüggvényeire igaz, hogy és , valamint és (3.10. ábra - Az Hermite-féle súlyfüggvények).

3.3.5. Bezier-féle harmadfokú görbeszakasz

A harmadfokú Bezier-görbét a síkban négy pont határozza meg. A kezdőpont az első pont, a végső pont pedig a negyedik. A kezdő érintőt az első és második pont határozza meg, a záró érintőt a harmadik és a negyedik pont definiálja, méghozzá úgy, hogy a pontok közti vektor éppen az érintő (derivált) háromszorosa (3.11. ábra - A harmadrendű Bezier-görbe).

A harmadrendű Bezier-görbe
3.11. ábra - A harmadrendű Bezier-görbe


Gondoljunk vissza az Hermite-görbére, amely használta a két végpontot (P1 és P4), valamint a két érintőt (R1 és R4). Határozzuk meg a Hermite-féle érintőket úgy, hogy

R 1 =3 * ( P 2 -P 1 )

R 4 =3 * ( P 4 - P 3 )

(3.29)

legyen! Ekkor a fenti (3.29) egyenlet felírhatjuk az alábbi formában is:

(3.30)

azaz

(3.31)

ezért a (3.31) egyenlet jobb oldalán a mátrixot – ami áttér az Hermite tartópontokról a Bezier tartópontokra – nevezzük -nek! A (3.19) egyenlet jelöléseivel az Hermite görbére

(3.32)

Ezt viszont átírva (3.31) alapján

(3.33)

azaz

(3.34)

(3.33) és (3.34) egyenletek összevetéséből és a megfelelő mátrixok behelyettesítésével (3.26) és (3.31) egyenletekből

(3.35)

A Bezier-görbe súlyfüggvényei tehát

(3.36)

amelyek éppen a

(3.37)

binom kifejezés egyszerűsítés nélküli hatványozásából adódó tagok. Vegyük észre azonban, hogy a (3.37) egyenletben szereplő binom azonosan 1, azaz a súlyfüggvények összege 1!

(3.38)

A Bezier-görbe tehát mindenhol a Pi pontok által kifeszített térbeli (!) négyszögön belül halad, mint ahogyan azt a (3.11) ábra síkbeli esete is mutatja.

Ha a binom modellt tekintjük, akkor a Bezier-görbe a lineáris szakasz általánosítása ((1-t)+t) binom tagjai a súlyfüggvények. Ha harmadfok fölé megyünk, akkor azt mondhatjuk, hogy az

(3.39)

kifejtés tagjait tekintjük, amelyek a binom kifejtési szabályai szerint

(3.40)

Tehát az n-ed fokú Bezier-görbe súlyfüggvényei éppen az n-ed fokú Bernstein-polinomok [3.3.]. Természetesen a magasabb-fokú Bezier-szakaszt több tartóponttal jellemezhetjük.Az eddigiekben kizárólag egyszerű görbeszakaszokat vizsgáltunk. Kérdés, mit tegyünk, ha több ponton keresztül szeretnénk görbét fektetni?

3.3.6. Természetes spline

A spline-on polinom görbékből összeállított térgörbe. Térbeli pontok sorozatára fektetett egyenes szakaszok elsőfokú spline-t definiálnak. Az n-edfokú spline-ban legfeljebb n-edfokú polinomszakaszok csatlakoznak egymáshoz úgy, hogy rendszerint nemcsak a folytonosságot, hanem az n-1-szeri differenciálhatóságot is megköveteljük.

Spline görbe
3.12. ábra - Spline görbe


A magasabb fokú spline-ok közül a legelterjedtebb a harmadfokú természetes spline, hogy miért arra később fény derül. Térbeli pontokon áthaladó térgörbére (3.12. ábra - Spline görbe) koordinátánként fektethetünk spline görbét. Legyen adott a 3.12. ábra - Spline görbe szerint m darab térbeli pont! Keressük azokat a függvényeket (k=1…m), melyek olyanok, hogy a függvény a Pk-1 és Pk pontok között halad, és a görbe belső pontjaiban kétszer folytonosan differenciálható módon csatlakoznak egymáshoz.

Csak az x-koordinátára írjuk fel a közelítést, természetesen hasonlóan felírható y- és z-koordinátákra is. Adottak tehát a

(3.41)

pontok, ahol , és . Keressük azokat a

(3.42)

függvényeket, melyek teljesítik az alábbi interpolációs feltételeket

(3.43)

és

(3.44)

Azaz az összes görbe átmegy az őt megelőző indexű ponton, és az utolsó görbe az utolsó pontba fut. Illesztési feltételként megfogalmazható, hogy

(3.45)

Azaz a belső pontokban a görbeszakaszok folytonosan csatlakoznak egymáshoz. Ugyanezen pontokban előírhatjuk a t szerinti deriváltak folytonosságát is,

(3.46)

illetve a t szerinti második deriváltak folytonosan csatlakoznak egymáshoz.

(3.47)

(3.43)-(3.47) egyenletek száma m+1+3*(m-1), amiből az m darab görbe 4*m ismeretlen paraméterét szeretnénk meghatározni, ezért két további peremegyenletet is hozzáveszünk egyenleteinkhez.

(3.48)

(3.49)

azaz a görbe a két szélen 0 görbülettel távozik.

A görbe meghatározásának első lépéseként nevezzük gk ismeretlen változónak a görbületeket az illesztési pontokban!

(3.50)

és

(3.51)

Mivel harmadfokú görbéket keresünk, ezek második deriváltja lineáris

(3.52)

Ezeket kétszer integrálva, és az integrálási állandókat az illesztési feltételekből az alábbi ún. Clapeyron-egyenlet adódik [3.4.].

(3.53)

Ugyanezt a Clapeyron-egyenletrendszert ismerjük a mechanikából a koncentrált erőkkel terhelt többtámaszú tartók esetéből. Igazából nem meglepő az azonosság, hiszen a koncentrált erőkkel terhelt többtámaszú tartó nyomatéki ábrája szakaszonként lineáris (mint a görbület a spline-oknál). És erre megoldva a rugalmas szál differenciálegyenletét

(3.54)

ugyanazt a kétszeri integrálást kell végrehajtanunk, mint a spline-ok esetén. Egyébként a spline szó is innen származik a rugalmas acélszál görbevonalzót használták az angolok a hajótervezésben, és ennek a neve volt a spline.

Érdekes az alábbi Holliday nevéhez köthető tétel [3.4.].

Tétel: Legyen az adott [t0, tm] intervallumon ti i=0…m nem egybeeső monoton növő pontsorozat értelmezve! Az összes a kérdéses intervallumon kétszer folytonosan differenciálható, és a peremeken az peremfeltételt kielégítő pontok közül a pontokon átmenő harmadfokú spline függvény esetén minimális az

(3.55)

integrál.

A (3.55) integrál a második t-derivált négyzetét, a görbület négyzetével rokon adatot integrál. Azt mondhatjuk tehát, hogy az összes ilyen, a pontokon átmenő, a feltételeket teljesítő függvény közül a természetes spline „tekereg” a legkevésbé [3.5.].

Az a probléma a természetes spline-nal, hogy meg kell oldanunk egy a tartópontok számánál kettővel kisebb ismeretlent tartalmazó lineáris egyenletrendszert (3.53), ami akkor is időigényes, ha az együtthatómátrix ritka. Tetézi a bajt, hogy a spline sajátossága az is, ha bármelyik tartópont elmozdul, akkor a teljes görbe megváltozik, azaz az így megadott görbe csak lokálisan nem módosítható. Kérdés, mit kell egyszerűsítenünk az interpolációs közelítésen ahhoz, hogy lokálisan módosítható, kis számításigényű görbét kapjunk.

3.3.7. Catmull-Rom görbék, a kardinális spline

Ha pontok sorozatára úgy fektetünk interpolációs görbét, hogy a görbe átmegy a pontokon, és minden pontban a görbe érintője arányos a két szomszédos pont által meghatározott vektorral, akkor ezt a görbét kardinális spline-nak nevezzük. Ha a görbe idő szerinti paraméteres leírását tekintjük, akkor azt mondhatjuk, hogy a tk. időpontban a görbe éppen a Pk ponton halad keresztül (3.13. ábra - A kardinális spline). A görbe érintője a tk. időpontban Vk, akkor az érintőt a (3.56) egyenlet határozza meg.

(3.56)

ahol f(<1) a görbe feszítése. Ha f=0, akkor az éppen a Catmull-Rom spline [3.6.].

A kardinális spline
3.13. ábra - A kardinális spline


Ha a kardinális spline súlyfüggvényeit szeretnénk kiszámítani, ugyanúgy kell eljárnunk el, mint ahogy a Bezier-súlyfüggvények meghatározásánál tettük. Legyenek a Pi és a Pi+1 pontok körötti görbeszakasz Hermite geometriai adatai a P1, P4, R1 és R4 vektorok (az ábrán pirossal), melyek a (3.57) alapján megadhatók, mint Pi-1, Pi, Pi+1 és Pi+2 pontok függvényei

(3.57)

A (3.57) egyenletben látható mátrix éppen az Hermite-görbéről a kardinális görbére áttérő transzformáció.

(3.58)

Elvégezve a kijelölt mátrixszorzást

(3.59)

A kardinális spline paraméteres leírását a (3.60) egyenletek tartalmazzák.

(3.60)

Szokás a szélen az egyoldalas differeciával számítani az érintőt, és ilyenkor a görbe minden ponton átmegy. A kardinális spline-ok használatának előnye az, hogy nincs szükség egyenletrendszer megoldására, a görbe minden ponton átmegy. Hátránya az, hogy csak egyszer deriválhatók folytonosan.

3.3.8. B-spline-ok

Amennyiben ragaszkodunk a kétszer folytonosan differenciálható spline görbékhez, akkor azt a megkötést kell feladnunk, amely megköveteli, hogy a görbe menjen át a tartópontokon. Definiáljuk először a B-spline fogalmát! Adott fokszámú, adott simaságú, egymáshoz kapcsolódó spline görbeszakaszok egyértelműen leírhatók B-spline függvények lineáris kombinációjaként. Ez azt jelenti, hogy a B-spline-ok a spline függvények bázisaként fogható fel.

Definíció: Legyen adott m+1 darab időpont nem csökkenő sorozata!

(3.61)

n. fokú B-spline bázisfüggvényeknek nevezzük azt az m-n darab görbét, melyek az alábbi Cox-de Boor rekurzióval definiálhatók:

(3.62)

Mivel az időpontok között megengedtük az egyenlőséget, ezért előfordulhat, hogy a kijelölt művelet nem értelmezhető. Ezért kikötjük, hogy a 0/0 osztás 0-t ad eredményül.

Definíció: Legyenek adottak a P0, P1, … Pm pontok a térben és m+1 darab paraméterérték . A tartópontok által meghatározott, [t0,tm] paramétertartományon értelmezett n. fokú B-spline görbének nevezzük a (3.62) bázisfüggvényeivel definiált

(3.63)

görbét.

A B-spline definíciója alapján az adott tartópontok közül n+1 határoz meg egy n.-ed fokú B-spline görbeszakaszt. A Qi görbeszakaszok előállíthatók, mint a bj,n Cox de Boor rekurzióval meghatározott bázis B-spline-ok – mint súlyfüggvények – lineáris kombinációjával.

(3.64)

Szokás még a B-Spline görbéket azért is előnyben részesíteni, mert invariánasak az affin transzformációra. Ez más szavakkal azt jelenti, hogy ha a van egy B-spline-okkal közelített térgörbém, és azt leképezem egy síkra, akkor nem szükséges a görbe „összes” pontját síkba vetíteni, hanem elegendő csak a tartópontokat vetíteni és a síkban meghatározni a görbét [3.7.].

A B-spline görbék általános vizsgálata helyett tekintsük a harmadfokú görbék esetét!

3.3.8.1. Harmadfokú B-Spline görbék

A 3.3.6. szakasz - Természetes spline fejezetben láttuk, hogy a harmadfokú görbék kiemelt fontossággal bírnak.

3.3.8.1.1. A harmadfokú bázisgörbék jellege

Vizsgáljuk meg először az általánosan elterjedt harmadfokú B-spline-okat! A (3.14. ábra - A B-spline súlyfüggvények) ábrán világoskékkel a bj,1 tag, sötétkékkel a bj,2 tag, zölddel a bj,3 és végül pirossal a bj,4 tag(ok) láthatók.

A B-spline súlyfüggvények
3.14. ábra - A B-spline súlyfüggvények


Ha egyenközű B-spline görbéket használunk, a bázisfüggvények is egyszerűsödnek. Legyen t0=-3, t1=-2, t2=-1 és t3=0 és t4=1! Ekkor a bázisfüggvények könnyen számíthatók:

(3.65)

3.3.8.1.2. Közelítés harmadfokú B-spline görbével

A B-spline (3.66) képlete szerint a harmadfokú Qi görbeszakaszok előállíthatók, a bj,3 Cox de Boor rekurzióval meghatározott bázis B-spline-ok – mint súlyfüggvények – lineáris kombinációjával.

(3.66)

Ha (3.66) képletet n=3 értékre (harmadfokú B-Spline-okra) alkalmazzuk, és használjuk a t=t-ti helyettesítést, akkor a súlyfüggvények egy szakaszon olyanok lesznek, mint amit a 3.14. ábra - A B-spline súlyfüggvények [t3,t4] szakaszán láthatunk, illetve ha kiszámítjuk a súlyfüggvényeket, akkor a

(3.67)

kifejezéshez jutunk, azaz írhatjuk, hogy

(3.68)

ahol

(3.69)

és

(3.70)

Ha kiszámítjuk a (3.67) súlyfüggvények összegét, akkor

(3.71)

ugyanúgy, mint a Bezier splineoknál. Ez azt jelenti, hogy a B-Spline szakasz is benne halad a tartópontok által meghatározott térbeli négyszögben (3.15. ábra - A B-spline szakaszok a befoglaló téglalapban).

A B-spline szakaszok a befoglaló téglalapban
3.15. ábra - A B-spline szakaszok a befoglaló téglalapban


Vizsgáljuk meg a harmadfokú B-spline folytonossági viszonyait! Az i. ponthoz tartozó görbe

(3.72)

alakban írható. Ebből csak az x-koordinátákra felírva a csatlakozó görbék adatait (y, és z ugyanígy alakul):

(3.73)

tehát a görbe folytonos. Hasonlóan a deriváltakra azt kapjuk, hogy

(3.74)

tehát a görbe folytonosan differenciálható. A második deriváltak is egyenlők lesznek

(3.75)

A B-spline görbéket tehát tartópontjaikkal irányíthatjuk és a görbe kétszer folytonosan differenciálható módon követi a pontok helyzetét, de nem megy át rajtuk. Kérdés, hogy mi történik akkor, amikor két szomszédos pont egybeesik. A (3.71) egyenlet szerint a súlyfüggvények összege azonosan egy, tehát a görbeszakasz benne halad a befoglaló négyszögben (3.16. ábra - Elfajuló B-spline szakaszok ábra bal oldala). Ha két szomszédos tartópont egybeesik, akkor a befoglaló négyszög háromszöggé torzul. A görbe benne halad a háromszögben, és a két egybeeső pont nagyobb „súlyával” közelebb „húzza” magához a görbét (3.16. ábra - Elfajuló B-spline szakaszok középső ábra). Végül, ha a három szomszédos pont esik egybe, akkor a befoglaló négyszögek egyenes szakaszokká torzulnak, és a B-spline is két csatlakozó egyenes szakasszá torzul (3.16. ábra - Elfajuló B-spline szakaszok ábra jobb oldala).

Elfajuló B-spline szakaszok
3.16. ábra - Elfajuló B-spline szakaszok


Ha (3.67) alapján felírjuk az egyenes szakaszokra torzult első B-spline-t, akkor adódik, hogy

(3.76)

Ami valóban egy egyenes paraméteres egyenlete, azonban (3.10)-zel ellentétben a paraméterfüggvények nem lineárisak. Ez is egy példa arra, hogy a kétszer folytonosan differenciálható függvény geometriailag nem folytonos.

3.3.8.2. Közelítés harmadfokú nem egyenközű B-Spline görbékkel

Ha a (3.62) Cox de Boor rekurziót harmadfokú függvényre írjuk fel, akkor képleteink a (3.77) szerint alakulnak.

(3.77)

Ha kiszámítjuk a t0=t1=t2=t3=0, t4=t5=t6=t7=1 időosztásra a B-spline együtthatókat,

akkor b0,3(t), b1,3(t), b2,3(t) és b3,3(t) éppen a Bezier súlyfüggvények.

3.3.8.3. Interpoláció B-Spline görbékkel

A természetes spline görbének azt az előnyét elvesztettük, hogy átmegy a megadott pontokon. Szerencsére nem végleg. Az egyenletrendszer megoldását azonban nem spórolhatjuk meg. A B-spline görbékkel való interpoláció alapgondolata az, hogy ha adottak a pontok, amelyeken a B-spline görbének át kell mennie, akkor keressünk olyan tartópontokat és a hozzájuk tartozó csomópontértékeket úgy, hogy a görbe áthaladjon pontjainkon. A probléma az, hogy végtelen sok megoldás létezik.

Tegyük fel, hogy adott m+1 darab térbeli pontunk Qi i=0,1,…m! Ha ismerjük a Qi pontokhoz tartozó B-spline paraméterpontokat, akkor (3.63)-nak megfelelően felírhatjuk az n.-edfokú B-spline képletét az összes m+1 pontra. Ekkor az

(3.78)

3*(m+1) egyenletrendszer adódik, melynek 3*(m+1) ismeretlenje a Pi pontok koordinátái [3.8.].

A probléma, hogyan vegyük fel a paraméterpontokat. Erre több módszer is kínálkozik.

3.3.8.3.1. Egyenletes időosztás

A legegyszerűbb az egyenletes időosztás, amikor

(3.79)

Természetesen, hogy ez mennyire lesz hullámos, az függ a pontok elhelyezkedésétől. Ezt a módszert ritkán használják.

3.3.8.3.2. Osztás poligonkerület ívhossza szerint

Legyen a megadott pontokat egyenes szakaszokkal összekötő poligon ívhossza

(3.80)

A köztes tartópontokat a tartóponthoz vezető poligonkerület és teljes poligonkerület hányadosa határozza meg.

(3.81)

Az ívhossz módszer általában jól működik. Ha hosszú poligonélet használunk, az hullámzási problémát okozhat.

3.3.8.3.3. Centripetális módszer

Legyen egy a>0 érték! A megadott pontokat egyenes szakaszokkal összekötő poligon éleivel számítsuk ki az

(3.82)

értéket, és ezzel a paraméterosztás legyen

(3.83)

Ha a=0.5, akkor ez egy közelítése a kanyarban való haladáshoz szükséges centripetális erőnek. Az a=1 érték az ívhossz-módszerhez vezet.

3.3.8.4. Racionális, nem egyenközű B-spline (Non-Uniform Rational B-Spline - NURBS)

Az eddig megismert görbeközelítési módszerek mindegyike polinommal közelítette a koordináta-függvényeket. Ha áttérünk homogén koordinátás ábrázolásra, akkor minden pont helyett az homogén koordinátákkal definiált pontot használjuk (lásd 3.2. szakasz - Koordináta-rendszerek fejezet). Ez azt jelenti, hogy paraméteres megadáskor az

(3.84)

egyenleteket használhatjuk, ahol a w(t) minden egyes megadott paraméterpontban 1. Azaz . Ekkor az a pontkoordináták

(3.85)

ami azt jelenti, hogy racionális törtfüggvényekkel írtuk le a görbét.

3.3.9. Szabadformájú felületek

A görbékhez hasonlóan a felületeket is függvényekkel közelítjük

3.3.9.1. Felületek leírása háromszöghálókkal

Háromszöget definiálhatunk a háromszög csúcspontjaival r1, r2 és r3. Ekkor a háromszög belső pontjai leírhatók u, v koordinátákkal úgy, hogy a sarokpontok koordinátáinak súlyozott összegét számítjuk, úgy hogy a súlyok összege 1 legyen.

(3.86)

Ha egy felületet szeretnénk ábrázolni, akkor lehetőségünk van a háromszögek csúcspontjait összegyűjteni egy koordinátákat tartalmazó tömbben (3.87).

(3.87)

A felület geometriájának leírása ezek után egy olyan tömbben történhet, amely a háromszögek csúcspontjait (i,j,k) úgy tartalmazza, hogy egy háromszöghöz három, a csúcspontok tömbjére mutató indexet tartalmaz, melynek alapján a háromszög csúcspontjainak koordinátái kereshetők.

(3.88)

Ha megvilágítottan és árnyalva szeretnénk megjeleníteni a felületet, akkor szükségünk van a felület normálvektorára. A háromszög három pontja meghatározza a sík normálvektorát. Azonban így egyik háromszögről a másikra áthaladva a normálvektor nem folytonosan változik, ezért az élek kiemelődnek. Elkerülhetjük ezt a jelenséget, ha minden ponthoz egy normálvektort is tárolunk (3.89).

(3.89)

A háromszögön a konstans normálvektor helyett (3.86)-nak megfelelő, folytonosan változó normálvektort használunk.

Lehetőség van arra is, hogy anyagok tömbjét is mentsük, és minden háromszöghöz egy anyagot rendeljünk, illetve, hogy ugyanígy mintázatot is rögzítsünk a felületre.

3.3.9.2. Spline felületek

A Q(t) térgörbék leírásánál (3.19) használtuk a geometriát jellemző mátrixot, a közelítés bázismátrixát és a paramétervektort .

3.3.9.2.1. Harmadfokú Hermite-felületfolt

Próbáljunk egy felületet leírni úgy, hogy a Q(t) Hermite típusú térgörbét egy másik, független s paraméter mentén változtatjuk. Ekkor Q(s, t) kétparaméteres felület leírását kapjuk. Tegyük ezt úgy, hogy a geometriát jellemző mátrix vektorait s-től függővé tesszük.

(3.90)

A geometriát jellemző mátrix oszlopai térbeli vektorok. Ezek a vektorok előállíthatók hasonló módon, mint a görbék (3.19)-hez hasonló módon.

(3.91)

azaz

(3.92)

ebben a vektorok helyett csak azok x koordinátáit használva

(3.93)

(3.93)-t (3.92)-be helyettesítve

(3.94)

A Qy(s,t) és a Qz(s,t) görbék ugyanígy felírhatók.

3.3.9.2.2. Harmadfokú Bezier-felületfolt

A görbékhez hasonlóan, ha át kívánunk térni egyik ábrázolási módról a másikra, akkor nincs más dolgunk, mint a bázismátrixot szorozni az egyik bázisról a másikra való áttérés mátrixával. Így a Bezier-féle felületfolt Qx(s,t) leírása adódik. Az Hermite-féle bázismátrixot az x, koordinátákra -el jelölve (, és hasonlóan felírható) adódik a Bezier-felületfolt egyenlete (3.95).

(3.95)

azaz

(3.96)

A 3.17. ábra - Bezier féle felületfolt a felületfolt , , Bezier féle geometriát jellemző mátrixok koordinátáiból alkotott tartópontok láűthatók.

Bezier féle felületfolt
3.17. ábra - Bezier féle felületfolt


3.3.9.2.3. Felületfoltok illesztése

Ha két felületfoltot szeretnénk a 3.18. ábra - Felületfoltok illesztése szerint egy peremen G1 folytonosan illeszteni, akkor az A felületfolt mindegyik koordinátára vonatkozó geometriai mátrix s=1 paramétert leíró elemei (a mátrix második sora) megegyeznek a B felületfolt s=0 paraméterű élet meghatározó elemeivel (a mátrix első sora). Ez biztosítja a C1 folytonosságot. Hasonlóan a G1 folytonossághoz a B felületfolt s=0 élén a t irányú parciális deriváltak (a mátrix harmadik sora) megegyeznek az A felületfolt s=1 paraméterű élén számított t irányú deriváltak (a mátrix negyedik sora) konstanszorosával (3.18. ábra - Felületfoltok illesztése).

Felületfoltok illesztése
3.18. ábra - Felületfoltok illesztése


(3.97)

3.3.9.2.4. Harmadfokú B-spline felületek

k*n-edfokú B-spline felületnek nevezzük a tartópontok s sora és o oszlopa által meghatározott függvényt.

(3.98)

3.3.10. Testek

Testnek nevezzük a háromdimenziós tér olyan részhalmazait, amelyeknek nincsen elfajuló alacsonyabb dimenziós része (például egy síkidom) [3.6.]. Kérdés, hogyan írhatjuk le a testek geometriáját? Erre többféle lehetőségünk is van. Hozzáállhatunk a probléma megoldásához úgy, hogy egyszerű résztestekből építkezünk – leírjuk a test határait, vagy megadjuk, hol vannak a térben a testnek pontjai.

3.3.10.1. CSG modellek

A legrégebb módszer még a számítógépes grafika hőskorából származik. A CSG (Constructive Solid Geometry) elv alapgondolata, hogy vannak paraméterezhető alapgeometriáink, mint a tégla, a gömb, a (csonka)gúla, a (csonka)kúp stb. Ezeket elhelyezzük a valós tér modelljében, és ezek között logikai műveleteket végzünk (unió, metszet és különbség). A 3.19. ábra - CSG modellezés egy „fenyőfatalp” modellezését mutatja be. Két tégla uniója a kereszt, amiből egy henger kivonása modellezi a furatot.

CSG modellezés
3.19. ábra - CSG modellezés


A CSG modellezés ma is része minden CAD rendszer felhasználói felületének, még akkor is, ha már nem így modelleznek a tervező programok.

3.3.10.2. B-Rep testábrázolás

A B-Rep szó a Boundary Representation angol kifejezés rövidítése, határábrázolást jelent. Azt takarja a fogalom, hogy egy testet ábrázolhatunk felületeivel és a felületek test felé mutató normálisaival. A topológiai leírás nehezebb, de könnyen készíthető szabálytalan geometriájú, szabadformájú felületek által határolt test. A modern CAD rendszerek alkalmazzák ezt a technikát

3.3.10.3. Térfogati modellek

A térfogati modell a tér pontjaihoz hozzárendelt sűrűségfüggvény [3.6.]. Ezt alkalmazzák a méréseknél, a CT- és MRI felvételeknél. Ábrázolása rácsban (térbeli lépcsősfüggvény) történik. Ez a bitkép raszteres modelljének 3D általánosítása. A térbeli raszterpontot voxel-nek nevezzük.

3.4. A megjelenítő cső

A mai képalkotó eszközök raszteres elven működnek, ezért a megjelenítéskor is raszteres eszközön működő grafikus rendszereket vizsgálunk. A (3.20. ábra - A megjelenítési cső) ábrát tanulmányozva végigkövethetjük egy 3D-s grafikus rendszer (OpenGL) képalkotási folyamatának lehetőségeit és lépéseit. Az OpenGL hardverfüggetlen programozási felületet biztosító háromdimenziós grafikus alprogram-rendszer, melyet a Silicon Graphics Inc. [3.9.] fejlesztett ki Unix alapú hálózatban működő számítógépekre. Az OpenGL megjelenítési szabvánnyá vált és API függvényhívásait használhatjuk a Windows rendszerekben is.

Az ábra bal oldalán, a belépési ponton látható, hogy lehetőségünk van arra, hogy térbeli objektumokat leíró csúcspontjaikkal (vertex) jellemezve adjunk át megjelenítésre. Közvetlenül elérhetjük a kép pontjait is, így szükség esetén magunk is definiálhatjuk a pixeleken megjeleníteni kívánt információt. Már itt érdemes megemlíteni, hogy az alapobjektumok sorozatát listába szervezhetjük (display lista), amelyet ezek után egyetlen rajzelemként kezel a rendszer.

A megjelenítési cső
3.20. ábra - A megjelenítési cső


A csúcspontokkal jellemzett térbeli elemek esetén a számító egység feladata, hogy a függvényként megadott térgörbéket és felületeket értelmezze. A vertex-szintű műveleteket végző modul számítja a megvilágítást, az előírt geometriai transzformációkat és kép méretre vágását. Az ilyen módon előkészített kép pontjainak adatait a raszterizáló határozza meg. Akár vektoros szemléletű, szabadformájú felületmodellel is van dolgunk, a megjelenítéshez a felület egyenlete alapján a raszterizáló apró háromszögekre (3.3.9.1. szakasz - Felületek leírása háromszöghálókkal) bontja a felületeket, és ezeket jeleníti meg. A képpontokat tartalmazó kép további részletpufferekben tárolt adatok segítségével kerül a képernyőmemóriába, megjelenítésre. Ilyen részletpuffert használhatunk a takarások meghatározására (Z-puffer). A színkeverő puffer segítségével áttetsző objektumokat jeleníthetünk meg, ha a színezéskor a háttérszíneket is figyelembe vesszük. A „stencilpuffert” használhatjuk, ha egy képet úgy szeretnénk megjeleníteni, ahogyan azt egy ablakon kitekintve látjuk, amikor az ablakkeretek takarják a kép egyes részeit.

Ahogy az ábrán nyomonkövethető, az OpenGL lehetővé teszi, hogy a megjelenítésre kerülő bitképes adatok közvetlenül a raszterizáló modulhoz kerüljenek. Az OpenGL textúra-megjelenítési lehetősége azt takarja, hogy a térbeli objektumokat bitképpel mintázott anyaggal is beboríthatjuk.

Ismerkedjünk meg először a képernyőn történő megjelenítés geometriai transzformációs hátterével!

3.4.1. A tér leképezése síkra

Térbeli pontokat két alapvető módon vetíthetünk síkba, párhuzamos és centrális vetítősugarakkal.

A párhuzamos sugarakkal való vetítést axonometriának hívjuk. A vetítés matematikai modelljét úgy állíthatjuk fel, hogy az x-y-z térbeli koordináta-rendszer párhuzamosan vetített képét berajzoljuk a ξ-η koordinátarendszerrel bíró síkbeli lapra. Feltételezzük, hogy a térbeli koordináta-rendszer origójának képe a síkbeli koordináta-rendszer origója. A (3.21. ábra - Az általános axonometria) ábrán az x-y-z térbeli koordináta-rendszer képe szaggatott vonallal látszik a folytonos vonallal rajzolt ξ-η koordinátarendszerben. Jelöljük az ábra szerint a ξ-tengely és az x-tengely által bezárt szöget α-val, a ξ-tengely és az y-tengely által bezárt szöget β-val és az η-tengely és a z-tengely által bezárt szöget γ-val! Mivel az x-y-z koordináta-tengelyek nem párhuzamosak a ξ-η síkkal, a koordináta-egységek képe a síkon rövidebbnek látszik. Az x-irányú egység qx(≤1)-nek, az y-irányú qy(≤1) és a z-irányú qz(≤1) hosszúnak látszik.

Az általános axonometria
3.21. ábra - Az általános axonometria


Ha tehát egy (x, y, z) koordinátájú pontnak keressük a (ξ,η) síkbeli koordinátáját, akkor a leképezést megvalósító függvénypár az (fξ, fη) (3.99) szerint.

(3.99)

A leképezést egyszerűen felírhatjuk ha arra gondolunk, hogy az origóból indulva a koordináta-tengelyek képeivel párhuzamosan, a rövidüléseknek megfelelően haladunk x, y és z egységnyit, akkor az (x,y,z) pont (ξ,η) képébe jutunk (3.21. ábra - Az általános axonometria). Ebből következik, hogy a piros nyilal ξ és az η irányú vetületeit összegezve az alábbi (3.100) módon adódnak a koordináták.

(3.100)

Az axonometria speciális esetei az izometrikus axonometria, amikor az x-y-z koordináta-tengelyek egymással 120°-ot zárnak be, a z-tengely képe az η-tengellyel esik egybe (α=30, β=30, γ=0) és a rövidülések qx=qy=qz=1 (3.22. ábra - Az általános axonometria)

Az általános axonometria
3.22. ábra - Az általános axonometria


Másik elterjed axonometria a Cavalier-féle, vagy katonai axonometria, ahol a vízszintes y-tengely, a ξ-tengellyel esik egybe a függőleges z-tengely, az η-tengellyel esik egybe, az x-tengely pedig a másik kettővel 135°-os szöget zár be (α=45, β=0, γ=0). A rövidülések: qx=0,5, qy=qz=1.

A katonai axonometria
3.23. ábra - A katonai axonometria


Az axonometrikus leképzés adott koordináta-irányban távolságtartó. Ezért a kocka hátsó éle ugyanolyan hosszúnak látszik mint az első él. A szemünkkel azonban nem ilyen képet kapunk. A szemünk centrálisan vetít.

Centrális vetítés egy pontba érkező sugarakkal vetíti a képsíkra a térbeli pontokat. Ahhoz, hogy a centrális vetítés egyszerű képleteit megkapjuk, tegyük fel, hogy a térbeli x-y-z koordináta-rendszer pontjait az x-y síkkal párhuzamos S képsíkra vetítjük! Jelöljük a térbeli x-y-z koordináta-rendszer kezdőpontját C-vel. C lesz a vetítés centruma. Az S síkon lévő ξ-η koordináta-rendszer kezdőpontja O, legyen olyan, hogy a térbeli rendszer z-tengelyén d távolságra van C-től! A S sík ξ-η koordináta-rendszerének tengelyei párhuzamosak az x- és y-tengelyekkel (3.24. ábra - Centrális vetítés). Keressük a centrális vetítés (3.99)-nek megfelelő leképezését.

Centrális vetítés
3.24. ábra - Centrális vetítés


Az ábrán látható módon legyen az origó centrum távolság d! Legyenek egy térbeli P pont koordinátái (x,y,z) és ennek P* képe a síkon (ξ,η) koordinátákkal. P pont vetülete az x-z síkra Pxz (ennek a z-tengelytől vett távolsága éppen az x-koordináta), az y-z síkra Pyz (ennek pedig a z-tengelytől vett távolsága éppen az y-koordináta). A Pxz képe az S síkon P*ξ, és ennek a síkbeli koordinátarendszer kezdőpontjától való távolsága éppen a ξ koordináta. A Pyz képe az S síkon P*η és ennek a síkbeli koordináta-rendszer kezdőpontjától való távolsága éppen a η koordináta! Mivel COP*ξΔ hasonló CTPxzΔ-höz, így

(3.101)

azaz

(3.102)

Hasonlóan az yz síkban CTPyzΔ hasonló COPηΔ-höz, így

(3.103)

azaz

(3.104)

Ezzel létrehoztuk a (3.99) leképezést, hiszen átrendezés után

(3.105)

adódik. A (3.105) képletekkel az a probléma, hogy a leképezés nem lineáris. Lineárissá tehetjük úgy, hogy megnöveljük a dimenziószámot (kettőről háromra), bevezetve a homogén koordinátákat. Tekintsük a [x, y,z] térbeli pont helyett a négydimenziós [x, y, z, 1] pontokat. Azaz az [x, y, z, w] négydimenziós térben a w=1 háromdimenziós altérben gondolkodunk. Ebben a térben a (3.106) leképezés

(3.106)

ami lineáris, hiszen átírható a (3.107) alakra.

(3.107)

3.4.2. Window-Viewport transzformáció

Miután a térbeli objektumot leképeztük a síkra, nincs más dolgunk, mint hogy azt a képernyő méreteire skálázzuk. A leképezett kép befoglaló téglalapja (window) nem hasonló a képernyő téglalapjához (viewport). A leképezett kép lehet nagyobb és kisebb, mint a képernyő.

A Window-Viewport transzformáció
3.25. ábra - A Window-Viewport transzformáció


A (3.25. ábra - A Window-Viewport transzformáció) ábrán a leképezett kép (window) befoglaló téglalap átellenes sarkainak koordinátái a (ξ11) és (ξ22). A megjelenítő befoglaló téglalap átellenes sarkainak síkbeli koordinátái (ξ33) és (ξ44). A leképezés során többféle stratégiát is követhetünk. Készíthetünk leképezést úgy, hogy a window sarkok a viewport sarkokba kerüljenek. Ilyenkor a kép nem méretarányos, de kitölti a képernyőt. Igazíthatjuk a képet a viewport valamelyik sarkához is. A következőkben azt az esetet számítjuk ki, amelyben a leképzett modell középpontja a képernyő középpontjába kerül. A vízszintes képéleket vízszintes képélekhez, vagy függőleges képéleket függőleges képélekhez igazító skálázások közül a kisebbet (amelyik a teljes képet a megjelenítőre viszi) választjuk.

Állapítsuk meg a leképezés nagyítását! Ez a viewport és window a vízszintes oldalainak, valamint a függőleges oldalainak hányadosai közül a kisebb.

(3.108)

A leképezés lineáris, amely egy α skálázásból és egy eltolásból áll. Keressük a transzformációt a (3.109) alakban!

(3.109)

Mint azt már rögzítettük, azt az esetet számítjuk ki, amelyben a leképzett modell középpontja a képernyő középpontjába kerül. Ebből meghatározhatjuk az ismeretlen és értékeket.

(3.110)

azaz

(3.111)

3.4.3. A láthatóság

A láthatóság meghatározásának legegyszerűbb módja a hátsó lap eldobásának módszere, aminek alapkoncepciója az, hogy ha a felületet (testet) alkotó háromszögháló kifelé mutató normálisa n egy irányba mutat a ránézés irányával r (3.26. ábra - Hátsó lap eldobás), vagyis n*r>0 akkor az a háromszög nem látható.

Hátsó lap eldobás
3.26. ábra - Hátsó lap eldobás


A mélységi rendezés (Depth Sort) algoritmus lényege, hogy rendezzük a képernyőtől (leképezési sík) való távolságuk szerinti sorrendbe a kirajzolandó objektumok felületét alkotó háromszögeket, majd hátulról előre rajzoljuk ki őket. Így amit később rajzolunk ki az átfesti (takarja) a hátrébb lévő elemeket. A probléma a sorbarendezéssel van, mint ahogy azt a 3.27. ábra - Nem sorbarendezhető háromszögek mutatja.

A mélységi rendezés algoritmusa:

A Δ-kel közelített felület Δ elemeit a megjelenítési síktól mért legtávolabbi pontjuk távolsága szerint rendezzük sorba! Vizsgáljuk meg a sorrend összes háromszögpárjának (A és B) viszonyát! Az A<B sorrend helyes, ha

  1. az A Δ legtávolabbi pontja közelebb van a síkhoz, mint B Δ legközelebbi pontja. (Ez mindösszesen számok összehasonlítását jelenti.)

  2. A háromszögek befoglaló téglalapjai nem metszik egymást. (Ez kétszer három pont síkbeli koordinátáinak minimum-maximum keresését, és számok összehasonlítását jelenti.)

  3. Az A Δ vetített képe nem metszi B Δ vetített képét. (Az A Δ minden oldalára igaznak kell lennie annak, hogy a B Δ összes csúcsa és az A aktuális oldallal szemben fekvő csúcsa az oldalegyenes szembenfekvő oldalára esik)

  4. a B Δ mindhárom sarokpontja az A Δ síkja mögött helyezkedik el. (B háromszög összes csúcspontját be kell helyettesíteni A síkjának egyenletébe.)

Ha ezek egyike sem áll fenn, akkor az egyik háromszöget két részre kell vágni, és folytatni a módszert egészen addig, míg az összes háromszög sorbarendezhető.

Nem sorbarendezhető háromszögek
3.27. ábra - Nem sorbarendezhető háromszögek


A bináris térfelosztó (BSP - Binary Space Partitioning) algoritmus lényege az, hogy bármely sík három nagy halmazra osztja a tér objektumait: a sík felett lévők (az objektum összes pontja a sík normálvektorával egy irányban vagy a síkon van), a sík alatt lévők (az objektum minden pontja a normálvektorral ellentétes oldalon található) és végül azok az objektumok, amiket a sík elmetsz.

Legyen a testet reprezentáló háló egyik háromszögének síkja az első vágósík! Azokat az elemeket, amelyeket ez a sík kettévág, további háromszögekre bontjuk úgy, hogy ezek már vagy a sík alá vagy fölé kerülnek. Az eljárás rekurzív módon folytatható addig, ameddig a vizsgált halmaz egyetlen háromszögből nem áll. Ha a rekurzív vágásokat egy gráfban ábrázoljuk, akkor bináris fát kapunk, ahol a csomópontok a vágósíkok és a levelek tovább nem bontható háromszögek lesznek. A felbontás végén a leveleket (háromszögeket) hátulról előre (a 3.28. ábra - BSP fa ábrán piros nyíl) kifesthetjük, így az előbb lévő háromszög átfesti a takart elemet.

Az területfelosztásos (Area Subdivision) technika lényege az, hogy a Viewportot négy egyenlő részre bontjuk (3.29. ábra - Területfelosztás (Area Dubdivision)). A levetített háromszögek vizsgálata során megállapíthatjuk, hogy készen vagyunk a takarással, ha:

BSP fa
3.28. ábra - BSP fa


Területfelosztás (Area Dubdivision)
3.29. ábra - Területfelosztás (Area Dubdivision)


A területfelosztás esetei
3.30. ábra - A területfelosztás esetei


A takart részek eltávolításának manapság már legelterjedtebb algoritmusa a Z-puffer algoritmus. A grafikus kártyák már beépített Z-pufferrel és algoritmussal rendelkeznek, így ha megfelelő 3D-s rendszert használunk, akkor ezzel nincs gondunk. Az algoritmus lényege, hogy minden képernyőpixelhez a Z-puffer tartalmaz egy mélységi adatot. A Z-puffer tehát egy távolságlista, melynek elemei a képernyőpontokhoz tartoznak (3.31. ábra - A Z puffer és működése ábra bal oldala). Az algoritmus úgy működik, hogy mielőtt elkezdené a megjelenítést a Z-puffer minden egyes távolságadata a gyakorlati . A kép kirajzolása során minden egyes ponthoz kikereshető az aktuális távolságérték (Z-puffer érték). Ha az aktuális pont távolsága (z-koordináta) kisebb mint a Z-pufferben tárolt érték, akkor a pont kifestődik, és a Z-pufferbe a z-koordináta lesz az új, aktuális érték. Ha a z-koordináta értéke nagyobb, mint ami a Z-pufferben volt, akkor a ponttal és z-koordinátájával semmi teendő (3.31. ábra - A Z puffer és működése) jobb oldala. A Z-puffer tehát a kirajzolás során az adott képernyőpontban aktuálisan látható legközelebbi pont z távolságát tartalmazza.

A Z puffer és működése
3.31. ábra - A Z puffer és működése


3.5. A képszintézis alapfogalmai

Ha a geometriai modelleket szeretnénk megjeleníteni a számítógép képernyőjén, akkor tisztáznunk kell azokat a fogalmakat, amelyekkel nemcsak a testek geometriáját, hanem annak megvilágítását, a test felületének fényvisszaverő tulajdonságait is modellezhetjük. A modellezés érdekében részletesebben megismerkedünk a fény és a színek tulajdonságaival, a fényforrások egyszerű modellezésével, a testek anyagának fénytani viselkedésének leírásával és végül egy megvilágított térrész megjelenésének komplex modellezésével.

3.5.1. Fénysűrűség

A fluxus definíciószerűen egy adott felületen átáramló energia mennyisége, melynek mértékegysége Watt. Ha a fényáramot v vektor jellemzi, akkor az A felületen áthaladó fluxus ϕ.

(3.112)

A fénysűrűség jellemzésére azonban nem jó mérték a fluxus, mert annak mértékét a fénysugár és a felület normálvektorának iránya, valamint a felület nagysága is befolyásolja. Ahhoz, hogy kezelhető mennyiséget kapjunk, szükséges a látószög térbeli általánosítása, a térszög.

Adott ponthoz képest a térben elhelyezkedő felületdarab nagyságát jellemezhetjük az adott pont köré képzelt egységgömb egy részével, azzal a résszel, ami pontosan eltakarja a felületdarabot a középpontból nézve. Ezt számszerűsíthetjük is (3.32. ábra - A térszög). Az ábrán dA-val jelölt felületdarab normálisa és a gömb középpontjából húzott sugár bezárt szöge ϴ. Ha a felületdarab középpontja r távolságra van az egységgömb középpontjától, akkor a térszög [3.6.].

(3.113)

hiszen a dA felületdarab csak dAcosϴ nagyságot mutat a középpont felé, és a gömb felülete sugarának négyzetével (r2-tel) arányos. A térszög mértékegysége a m2/m2=1, a szteradián. A szteradián a radián térbeli általánosítása.

A térszög
3.32. ábra - A térszög


A térszöggel már definiálhatjuk a fénysűrűséget, vagy radianciát. A radiancia a fluxus a felület és a térszög szerinti vegyes deriváltja osztva a az aktuális felületdarab ϴ cosinus-ával.

(3.114)

Mértékegysége Watt/m2/sr.

3.5.2. Fényforrások

Ahhoz, hogy megvilágított objektumokat rajzoljunk először a megvilágítást kell modelleznünk.

3.5.2.1. Pontszerű fényforrás (Point Light)

A pontszerű fényforrásnek nincs kiterjedése, és minden irányban azonos fényáramot sugároz. A led fényforrások, a villanykörték a fény forrásától elég távolról vizsgálva pontszerűnek tekinthetők. Egy térben elhelyezett ponttal (xL) modellezhetjük ezeket. Legyen egy felületünk, melynek a megvilágított x pontját vizsgáljuk (3.33. ábra - Pontszerű fényforrás). Világos, hogy a pontszerű fényforrásból kiinduló energia annál kisebb hányada jut a vizsgát felületre, minél messzebb van a felület. Mivel a sugárzott energia a fényforrás középpontú gömb felületén halad keresztül, a gömb egy felületdarabjára jutó energia a gömb felületével fordított arányban csökken, a gömbfelület pedig a sugár (r) négyzetével arányos. Ha azt is figyelembe vesszük, hogy nincs igazi fényforrás, akkor azt mondhatjuk, hogy a felületre jutó energia az r=|x-xL| (3.33. ábra - Pontszerű fényforrás) sugár másodfokú polinomjával fordítottan arányos. Az x pontban a fényáram tehát

(3.115)

ahol a, b és c paraméterek megválaszthatók a modellezés során. Ha a fénysugár irányát is figyelembe vesszük, akkor azt mondhatjuk, hogy a felületi pont megvilágítása, mint vektormennyiség (I)

(3.116)

Pontszerű fényforrás
3.33. ábra - Pontszerű fényforrás


A felületdarab megvilágításának erőssége x pontban (L(x)) függ attól is, hogy a beérkező fénysugarak milyen szöget zárnak be az adott pontban értelmezett normálissal (n).

(3.117)

3.5.2.2. Irány (párhuzamos) fényforrás (Direction Light)

Ha egy nagyon távoli pontot képzelünk el (vagy egy nagyon távoli sugárzó testet, mint a Nap), akkor azt úgy modellezhetjük, hogy a megvilágított felület környékén a fényáram konstans (i). Van azonban iránya, ami nem más, mint a végtelen távoli pont iránya, amely megegyezik a beeső fénysugarak L irányvektorával. A fényáram tehát irányfüggő i(L).

(3.118)

Ezt is ábrázolhatjuk irányfüggő vektormennyiségként (a 3.34. ábra - Irány fényforrás alapján I(L), ahol I iránya megegyezik az L iránnyal, a fényáram pedig i.)

(3.119)

Az előzőkhöz hasonlóan a felületdarab megvilágítása x környékén

(3.120)

Irány fényforrás
3.34. ábra - Irány fényforrás


3.5.2.3. Ambiens fényforrás (Ambient Light)

Az ambiens fény egy olyan modellje a szórt fénnyel történő megvilágításnak, ahol minden pontot, minden irányból azonos fényárammal és színnel világítunk meg (3.35. ábra - Ambiens fényforrás).

Ambiens fényforrás
3.35. ábra - Ambiens fényforrás


Ezt a modellt arra használjuk, hogy a modellezett objektumok kapjanak egy alap megvilágítást. A felület minden pontjában a fényáram tehát állandó.

(3.121)

Ebben az esetben a pontok megvilágításának erőssége, mivel nem függ sem a helytől, sem az iránytól

(3.122)

3.5.2.4. Égboltfény (Sky Light)

Az irány fényforrás jellegzetessége a konstans fényáram, párhuzamos sugarakból álló megvilágítás, mint a napfény. Az égboltot is a napfény világítja meg, azonban felhők és épületek árnyékot vethetnek, azaz a különböző területeken más és más állandó párhuzamos fény világít (3.36. ábra - Az égboltfény).

(3.123)

Az égboltfény
3.36. ábra - Az égboltfény


Hasonlóan az irányfényhez az égboltfény is vektormennyiséggel ábrázolható I(L,x), ahol I iránya megegyezik az L iránnyal, a fényáram pedig x-től függ.

(3.124)

Az előzőkhöz hasonlóan a felületdarab megvilágítása x környékén

(3.125)

3.5.2.5. Reflektorfény (Spot Light)

A gépkocsik reflektora vagy az elemlámpák fénycsóvája modellezhető, mint egy pontszerű fényforrás (3.5.2.1. szakasz - Pontszerű fényforrás (Point Light)) fénysugarai, lehatárolva egy parabolikus vagy kúpos tükörrel. A fényforrás sugarai nem tudják megkerülni a tükröt, és a fényáram a fényforrás tengelyétől távolodva (a 3.37. ábra - Reflektor fényforrás ábrán szög) csökken

(3.126)

(3.126) egyenletben r=||x-xL||, m egész szám az a(α) a ψ–nek ablakfüggvénye (ha a szög kisebb, mint ψ, akkor a függvényérték 1, egyébként 0)

(3.127)

Reflektor fényforrás
3.37. ábra - Reflektor fényforrás


Ugyanúgy, mint a pontszerű fényforrásoknál a fényáram vektormennyiség.

(3.128)

Figyelembe véve a felületi normálist n.

(3.129)

3.5.3. Anyagok, visszaverődés

A különböző anyagok tükrözik, szétszórva visszaverik, megtörik vagy elnyelik a fénysugarakat. Az anyagok ilyen viselkedését modellezhetjük a kétirányú visszaverődés-eloszlás függvénnyel. Ennek angol rövidítése a BRDF (Bidirectional Reflection Distribution Function).

3.5.3.1. A BRDF

Ha egy felület x pontjába a tér egy ωBE irányából érkezik egy adott hullámhosszú fénysugár, akkor a felületi ωKI irányból szemlélve a két fényáram segítségével definiálhatunk egy, az ωBE, ωKI és x változóktól függő függvényt. Nicodemus definiálta [3.10.].

(3.130)

ahol az ωBE a beeső térszög, az ωKI a kilépő térszög, LBE a belépő, LKI a kilépő fényáram, n a felület normálisa a visszaverődés helyén, Θ pedig a felületi normális és a belépő fénysugár szöge (3.38. ábra - A visszaverődés).

A visszaverődés
3.38. ábra - A visszaverődés


Ha a (3.130) egyenletben átrendezünk és integrálunk, akkor azt kapjuk, hogy

(3.131)

azaz egy pontból kilépő intenzitás egy összeg. Összegezni kell a pontba belépő összes fényáram-értéket szorozva az fr BRDF értékkel és a beeső sugarak beesési merőlegessel bezárt szögének koszinuszával.

A fizikai tartalom miatt a BRDF nem negatív. A visszaverődés nem vonhat el fényt a szemlélőtől.

(3.132)

Szintén a fizikai tartalom miatt a

(3.133)

hiszen a passzív anyag nem termelhet fényt. A (3.133) egyenletben az integrál kifejezést albedónak hívjuk. Ez viszont azt jelenti, hogy a (3.133) integrandusa éppen egy eloszlásfüggvény. Innen ered a BRDF elnevezés is. Így a (3.134) kifejezés éppen azt a valószínűséget definiálja, hogy a ωBE irányból érkező sugár az ωKI irány körül térszögben távozik [3.6.]. Jelölje ωKI irány körül átmérőjű környezetét !

(3.134)

A BRDF értékére fennáll a Helmholz-féle szimmetria összefüggés [3.11.], mely azt mondja ki, hogy a BRDF kifejezésben a fénysugár iránya megváltoztatható (3.134).

(3.135)

Ha a (3.131) egyenletet egyetlen fénysugárra vizsgáljuk, eltekintünk a teljes Ω téren történő integrálástól akkor azt kapjuk, hogy

(3.136)

Ha (3.136)-ból kifejezzük a BRDF értéket, akkor az egyszerűsített, egyetlen sugárra vonatkozó BRDF értéket kapjuk.

(3.137)

Az egyszerűsített DRDF definíciót használva megvizsgáljuk a különböző diffúz, tükröződő, fénytörő és spekulárisan tükröződő anyagok tulajdonságainak modellezését.

3.5.3.2. Diffúz anyagok jellemzése

A fal például diffúz módon veri vissza a fényt. Ennek lényege, hogy a beérkező, adott hullámhosszú fénysugár esetén minden irányban egyforma fényáram távozik. Az, hogy mi mennyire látjuk a falat világosnak, az csak attól függ, hogy honnan világítjuk meg. A Lambert-törvény írja le a fal, mint diffúz felület megvilágítás hatására történő viselkedését. Legyen megvilágítva a fal ω-irányból IBE(λ) fényárammal. Bárhonnan szemlélve a felületet az IKI(λ) fényáram csak a megvilágítás irányától és az anyag hullámhossztól függő k(λ) jellemzőjétől függ.

Diffúz visszaverődés
3.39. ábra - Diffúz visszaverődés


A Lambert-törvény tehát

(3.138)

Ha a (3.138) Lambert-törvényt összevetjük a (3.136) egyszerűsített egyenlettel, akkor azt kapjuk, hogy a diffúz felületek BRDF kifejezése adott hullámhosszon csak a fény hullámhosszától függ.

(3.139)

3.5.3.3. Reflexív anyagok, ideális visszaverődés

Ha egy tükröt egy fénysugárral megvilágítunk, a tükör azt a fénysugarat úgy veri vissza, hogy a visszavert sugár benne fekszik a beeső fény és a beesési merőleges által meghatározott síkban és ugyanakkora szöget zár be a beesési merőlegessel, mint a bejövő fénysugár. A fenti viselkedést formalizálhatjuk a Lambert-törvény (3.138) megfogalmazásának megfelelően,

(3.140)

ahol a szimbólum a Kronecker-szimbólum, azaz

(3.141)

Ideális visszaverődés
3.40. ábra - Ideális visszaverődés


A (3.140) kifejezést összevetve (3.136)-tal, adódik, hogy a tükrös felület esetén a BRDF

(3.142)

A (3.142) kifejezésben a a tükröződő anyag Fresnel-együtthatója, azt adja meg, hogy a tükör a beeső fényáram hanyadrészét veri vissza [3.5.].

3.5.3.4. Ideális törés

A fénytörésről szóló Snellius-Descartes-törvény [3.12.] szerint a beeső fénysugár, a beesési merőleges és a megtört fénysugár egy síkban helyzkednek el. A merőlegesen beeső fénysugár nem törik meg. Végül a beesési szög (α) szinuszának és a törési szög (β) szinuszának aránya a közegekben mért terjedési sebességek (c1,c2) arányával egyenlő, ami megegyezik a két közeg relatív törésmutatójával (n2/n1=n2,1). Lásd 3.41. ábra - Fénytörés közegek határán.

(3.143)

Ebben az esetben a Lambert-törvényhez hasonlóan formalizálva a (3.140)-t írhatjuk, hogy

(3.144)

illetve

(3.145)

Fénytörés közegek határán
3.41. ábra - Fénytörés közegek határán


3.5.3.5. Phong illuminácós modell

A fényvisszaverő anyagok általában sem tisztán diffúz módon (3.5.4.2. szakasz - Sugárkövetés fejezet), sem tisztán reflexív módon (3.5.4.3. szakasz - Inkrementális képszintézis, egyszerűsített árnyalási egyenlet fejezet) verik vissza a fényt, hanem a kettő között valahogy. Az ilyen felületeket spekuláris felületeknek nevezzük, és a visszaverődés leírása Phong nevéhez köthető. Phong modellje szerint a visszaverődés nagy része az elméleti visszaverődés irányában és annak környezetében történik [3.12.].

(3.146)

Ahol a ψ szög az elméleti visszaverődési irány és a ránézés szöge közt mérhető szög.

Phong-féle modell
3.42. ábra - Phong-féle modell


Ennek alapján a BRDF Phong-modell esetén.

(3.147)

3.5.4. Az árnyalás modellezése

Ha az árnyalást modellezni akarjuk, nagyon nehéz feladatunk van, hiszen egy test megvilágítása függ a környezetétől, azonban a test hatással van a környezetésre is.

3.5.4.1. Az árnyalási egyenlet

Ha a BRDF (3.130) definícióját kibővítjük azzal, hogy a térben még fénykibocsátó pontok is lehetnek (LE), valamint a teljes reflexió függ a λ hullámhossztól és a t időtől, akkor a szembe érkező fényáram valamint a f BRDF akármilyen lehet a fenti modellek közül az adott pontban

(3.148)

A (3.148) egyenletet szokás árnyalási egyenletnek nevezni. Mivel az integrálegyenlet mindkét oldalán szerepel az ismeretlen L() függvény, ennek csak egyszerűsítések melletti numerikus megoldása lehetséges [3.6.]. Most csak egy egészen egyszerű közelítéssel, a sugárkövetéssel és az úgynevezett lokális illuminációval foglalkozunk.

3.5.4.2. Sugárkövetés

Ha a képernyő pixeleire egyenként, a fényforrásokból kiinduló, pixelen átmenő fénysugarak útját a fényforrásokból kiindulva az objektumok – a 3.5.4. szakasz - Az árnyalás modellezése fejezetben leírtaknak megfelelően – modelljén megtörve vagy áthaladva vizsgáljuk, azt sugárkövetéses módszernek hívjuk. Mivel egy fényforrásból is végtelen sok irányban indulhat fénysugár, ez még diszkrét közelítéssel is, követve egészen a képig, vagy a vizsgált térből való kilépésig, kizárja a valós idejű szimulációt.

A fordított sugárkövetés esetén a kép pontjainak meghatározásához a fény haladásával ellenkező irányban járhatjuk végig a fény útját, a képernyőtől a fényforrásokig haladva. Csak azokat a fénysugarakat vesszük figyelembe, amelyek a fényforráshoz érnek.

3.5.4.3. Inkrementális képszintézis, egyszerűsített árnyalási egyenlet

Sokkal egyszerűbb kifejezést kapunk, ha eltekintünk a hullámhossztól és az időtől való függéstől. Elhagyunk még a (3.148) egyenletből minden csatolást (a jobb és bal oldalon is szerepel a fényáram, illetve, hogy egy objektum megvilágítása saját visszavert fényétől is függ). Feltételezzük azt is, hogy a képen látható felületekre csak a fényforrásokból közvetlen módon érkezik fény, csak az l darab fényforrásra kell összegezni az adott felületpontba érkező fénysugarakat, és azokat az f BRDF-fel figyelembe venni. A (3.149) képletben szerepel egy úgynevezett ambiens fény, amivel a nem figyelembe vett térbeli megvilágításokat kompenzálhatjuk (LA). Ennek a felület kA-szorosát veri vissza minden irányba [3.6.].

(3.149)

3.5.4.4. Felületek közelítő árnyalása

Ha az egyszerűsített árnyalási egyenlettel is számítjuk a felület pontjainak megjelenését, akkor is a felületeknek végtelen sok pontjuk van, így ez is megoldhatatlan feladat. Ha az árnyalást csak a felületek bizonyos pontjaiban számítjuk ki, és a köztes pontban a felület színét, fényességét a kiszámított pontok alapján interpoláljuk, akkor eredményre jutunk. A Gouraud-árnyalás a felületeket háromszögekkel közelíti, és a háromszögek csúcsaiban számítja csak a pontok megjelenését. A háromszögeken belül lineáris interpolációval számítjuk a megjelenést a sarokpontok alapján.

A Phong-féle árnyalás szintén a háromszögek sarokpontjaiból indul ki, a sarokpontokban kiszámítja a normálvektort, és feltételezi, hogy a belső pontokban a normálvektor a sarokpontok normálvektorainak interpolációjából számítható.

3.5.4.5. Fénysugarak haladása nem átlátszó térben

Tegyük fel, hogy az egyenes vonalban haladó L(s) fényáram haladási irányában valós fényelnyelő közegen (például poros levegő, felhő köd) halad át, míg a szemünkhöz ér, vagy a fény egy fénykibocsátó anyagon (ilyen például a tűz) halad át, illetve más irányból érkező fényáramok is folytathatják útjukat a vizsgált irányban. Ezekben az esetekben a 3.43. ábra - Fénysugarak haladása nem átlátszó térben. szerint egy Δs útszakaszon megváltozik a fényáram, L(s+Δs) lesz.

A fény megtörhet a fényelnyelő anyagon, és a Δs útszakaszon ezt az egy egységnyi hosszon történő κos fényáram-szórási tényezővel vehetjük figyelembe, így a fényáram κos *L(s)*Δs értékkel csökken.

Ha a fénykibocsátó anyagon keresztül vezet, aminek önálló fényárama a kérdéses irányban Le, akkor ezt egységnyi hosszon κE tényezővel figyelembe véve a fényáram κE*LE*Δs értékkel nő.

Ha más irányból érkező, a fényszóró anyagon megtört fénysugár a vizsgált irányban folytatja az útját, akkor az a Δs hosszon LIS(s)* Δs értékű fényáram-növekedést okoz.

Fénysugarak haladása nem átlátszó térben.
3.43. ábra - Fénysugarak haladása nem átlátszó térben.


Ha felírjuk a fényáramot az s és az s+Δs pontokban, akkor

(3.150)

azaz, ha Δs minden határon túl csökken, akkor

(3.151)

Természetesen a (3.151) egyenlet csak akkor oldható meg egyszerűen ha LIS független L-től, és csak egyetlen irányt vizsgálunk, egyébként csak tovább bonyolítottuk a (3.149) árnyalási egyenletet.

Irodalmak:

[3.1.] Hajós , G.. Bevezetés a geometriába. Tankönyvkiadó . Budapest . 1960.

[3.2.] Szőkefalvi-Nagy , G., Geh , L., és Nagy , P.. Differenciálgeometria. Műszaki Könyvkiadó . Budapest . 1979.

[3.3.] Stoyan , G. és Takó , G.. Numerikus módszerek I.. Typotex kiadó. Budapest . 2002.

[3.4.] Bajcsay , P.. Numerikus analízis. Tankönyvkiadó . Budapest . 1978.

[3.5.] Micula, G. . „A Variational Approach to Spline Functions Theory,”. Rend. Sem. Mat. Univ. Pol. Torino. kötet 61. p. 3.. 2003.

[3.6.] Szirmay-Kalos , L., Antal , G. , és Csonka , F.. Háromdimenziós Grafika, animáció és játékfejlesztés. ComputerBooks . Budapest . 2003.

[3.7.] de Boor, C. . A Practical Guide to Splines. Springer-Verlag . München . 1978.

[3.8.] Dr. Kovács , E.. „Komputergrafika – Matematikai alapok,” [Online]. Available: http://www.inf.unideb.hu/kmitt/konvkmitt/komputergrafika_matematikai_alapok/book.xml.html.. Hozzáférés dátuma: 2013.

[3.9.] Silicon Graphics „www.sgi.com"[Online]. 2012.

[3.10.] Nicodemus, F. E. . Reflectance Nomenclature and Directional Reflectance and Emissivity. Appl. Optics. kötet 9. pp. 1474-1475.. 1970.

[3.11.] Hapke , B.. Theory of Reflectance and Emittance Spectroscopy. Cambridge: University Press. Cambridge UK . 1993.

[3.12.] Watt , A. H. és Watt , M.. Advanced Animation and Rendering Techniques: Theory and Practice. Addison-Wesley Professional . . 1992.

4. fejezet - OpenGL

Tartalom
4.1. A Grafikus csővezeték
4.1.1. Alkalmazás
4.1.2. Vertex Shader
4.1.3. Raszterizálás
4.1.4. Fragment Shader
4.1.5. Raszterműveletek
4.1.6. Framebuffer
4.2. Az OpenGL Használata
4.2.1. Az OpenGL klasszikus inicializálása
4.2.1.1. Az OpenGL eszközkapcsolata
4.2.1.2. A használni kívánt megjelenítési kapcsolat meghatározása
4.2.1.3. A pixelformátum meghatározása
4.2.1.4. A megjelenítési kapcsolat létrehozása, kiválasztása és törlése
4.3. GLUT
4.3.1. GLUT telepítés Windows rendszerben
4.4. Adatok, konstansok és függvények az OpenGL rendszerben
4.5. Első lépések az OpenGL-ben
4.5.1. Színek megadása
4.5.2. Rajzpufferek, a pufferek előkészítése
4.5.3. Kirajzolás hagyományos módon
4.5.4. Hello OpenGL hagyományosan a C++/CLI-vel
4.5.5. Hello OpenGL a glut-tal
4.6. Rajzolás
4.6.1. Alapvető rajzelemek
4.6.2. A geometriai objektumok és megjelenítési módjaik
4.6.2.1. Pontok
4.6.2.2. Vonalak
4.6.2.3. Konvex sokszögek
4.6.2.4. Színek, interpolálás
4.6.2.5. Görbevonalú alakzatok rajzolása, tesszalláció
4.6.3. Transzformációk
4.6.3.1. Modellezési transzformációk
4.6.3.2. Vetítési transzformációk
4.6.3.3. Viewport-transzformációk
4.6.3.4. Rajzolás pixel koordinátákkal
4.6.3.5. Mátrix verem
4.6.4. Takarások kezelése - a Z-puffer
4.6.5. Animáció
4.6.5.1. Dupla pufferelés
4.6.6. A glu segédkönyvtár térbeli alapobjektumai
4.6.6.1. Szabad formájú görbék és felületek
4.6.6.2. Bezier görbék és felületek
4.6.6.3. A glu NURBS görbéi és felületei
4.6.6.4. Listák
4.6.7. Áttetsző anyagok, az RGBA színmodell használata
4.6.8. Megvilágítások
4.6.9. Anyagok
4.6.10. Árnyalások
4.6.11. Textúra
4.6.11.1. A textúra elkészítése
4.7. 3D-s objektumok
4.7.1. 3D-s objektumok megadása
4.7.2. 3D-s objektumok rajzolása
4.7.3. Objektum megvilágítása
4.7.4. Az objektum forgatása
4.7.5. Takart vonalak - hátsó lap eldobás

Az OpenGL (Open Graphics Library) egy platformfüggetlen API (Application Programming Interface), amellyel a grafikus hardvert szabványos felületen keresztül lehet elérni. Az OpenGL használatával valós idejű 2D és 3D grafikát lehet létrehozni. OpenGL-t széles körben alkalmaznak, például CAD alkalmazásokban, virtuális valóság megjelenítésénél, tudományos vizualizációkban, és a videó játékokban.

Az 1981-ben alapított Silicon Graphics (SGI) 3D számítógépes grafikához gyártott hardvert, és softvert. Az általuk gyártott grafikus hardvereket az IrisGL-t (Integrated Raster Imaging System Graphical Library) nevű API-n keresztül lehetett elérni, amellyel 2D és 3D grafikát lehetett létrehozni az SGI munkaállomásain. A 90-es évek elejére az SGI lett a piacvezető a 3D grafika terén, és az IrisGL de facto szabvánnyá vált.

A többi gyártó (Sun Microsystem, Hewlett-Packard, IBM) is kezdte behozni a lemaradását a 3D grafika terén, ezért az SGI szabványosította az IrisGL-t, a grafikához nem kötődő részeket kidobta belőle, és 1992-ben kiadta az OpenGL specifikációt, amely alapján a gyártók elkészítették az OpenGL implementációjukat. A hardvergyártók eszközmeghajtókat írtak (device drivers), amellyel a saját hardverüket lehetett elérni az OpenGL API-n keresztül. A szoftvergyártók kiegészítették az operációs rendszerüket az OpenGL specifikus részekkel.

Microsoft a Windows NT 3.5-ös verzióban implementálta először az OpenGL-t, amely 1994-ben jelent meg. Az implementáció teljesen szoftveres volt, mert akkoriban még nem volt dedikált 3D grafikát számoló hardver PC-re. Ezután a Microsoft 1995-ben kiadta a saját 3D programozásra, főleg játék programozásra szánt API-ját a DirectX-et, amely csak Windows operációs rendszeren fut. A DirectX több játékprogramozással kapcsolatos API-ból áll (pl. beviteli eszköz, joystick-kezelés, hangkezelés, 2D grafika), 3D grafikát a Direct3D-n keresztül lehet programozni. A Direct3D kezdetben nehézkesen használható volt, de a Microsoft folyamatosan fejlesztett rajta, és az 5.0-s verziótól kezdve vált felhasználóbaráttá. A Microsoft úgy tartotta, hogy a komoly, „professzionális” alkalmazásokra (például CAD) való az OpenGL, ezért kezdetben csak a Windows NT vonal támogatta, a Windows 95 nem.

1996-ban adta ki az idSoftware a Quake nevű 3D-s FPS játékát, amelynek 1997-ben jelent meg egy módosított változata GLQuake néven. A GLQuake a 3D megjelenítéshez a 3D grafikus hardvert használta az OpenGL API-n keresztül. Később OpenGL alapon még több PC-s játék jelent meg, például Quake 2, Unreal, Half-Life.

Ebben az időben jelentek meg az első dedikált 3D grafikus hardverek is. Az elsők között volt a 3Dfx Interactive által gyártott Voodoo Graphics kártya. A piacon lévő többi kártyát tudásban, és teljesítményben is felülmúlta, nagy siker volt. Programozása a 3Dfx saját Glide nevű API-ján keresztül történt. Az API gyártóspecifikus volt, ezért néhány év múlva veszített a népszerűségéből. Az Nvidia 1999-ben jelentette meg a GeForce 256 kártyát, amelyet GPU-nak (Graphics Processing Unit) nevezett el. Újdonsága a T&L (Transform & Lighting) technológia volt, amely a csúcspont (vertex) transzformációk számítását a kártyán valósította meg a CPU helyett. 3Dfx sose implementálta a hardveres T&L-t, a cég hanyatlani kezdett, végül 2002-ben csődbe ment, és megvette az Nvidia. A 2000-es évekre a két fő GPU gyártó az Nvidia, és az ATI lett. Mindkét gyártó GPU-i egyaránt támogatták az OpenGL-t és a Direct3D-t is.

Az OpenGL szabványban rögzített funkciók mellett lehetőség van gyártó specifikus kiterjesztéseket (extension) is használni. Az OpenGL szabványt 1992-től az OpenGL ARB (OpenGL Architectural Review Board) nevű csoport fejlesztette az SGI vezetésével. A csoport több OpenGL érdekelt gyártóból állt, és szavazással döntöttek a fejlesztés irányáról. Például az eddig csak kiterjesztésként létező funkciókat szabványosítják, és az OpenGL egy új verziójában specifikálják. A 2006-os SIGGRAPH konferencián jelentették be, hogy az OpenGL ARB helyett a Khronos konzorcium veszi át a szabvány fejlesztését és karbantartását.

4.1. A Grafikus csővezeték

Az OpenGL segítségével egyszerű, térben elhelyezkedő 3D-s grafikus primitíveket jeleníthetünk meg a képernyőn. Ennek során megválaszthatjuk a térből síkba való leképezés módját, az objektumok színét, megvilágítását és mintázatát. A síkbeli képen többféle módon is figyelembe vehetjük azt, hogy az elemek a térbeli elhelyezkedésből következően takarják egymást.

Ha az OpenGL-t használjuk, akkor az előírt grafikus megjelenítés nem kerül azonnal a képernyőre (a képernyőkártya memóriájába), hanem bekerül egy feldolgozási sorba, a „megjelenítési csőbe”. A megjelenítési cső egyes műveleteit a 4.1. ábra - Az Open GL megjelenítési csővezeték szemlélteti.

Az Open GL megjelenítési csővezeték
4.1. ábra - Az Open GL megjelenítési csővezeték


A GPU-k csak primitíveket, azaz pontokat, vonalakat és háromszögeket tudnak nagy sebességgel megjeleníteni. A primitívek a kirajzoláshoz a grafikus csővezeték (4.1. ábra - Az Open GL megjelenítési csővezeték) különböző fázisain mennek keresztül az alkalmazás rajzolás kérésétől egészen a képernyőig.

Az OpenGL 2.0 egyik újdonsága volt, hogy a szabványban rögzítették a csővezeték programozhatóságát. Korábban a vertex shader és a fragment shader előre meghatározott műveleteket végzett el hardverből (fix-function pipeline), amelyek paraméterezhetőek voltak. Az egyre gyorsabb GPU-kal lehetővé váltak számításigényesebb feladatok valósidejű elvégzése is. Így egyéni árnyalás modellek és effektek is megvalósíthatóak, amelyeket a gyártók nem tudnak előre implementálni hardverben. A testreszabhatóságot a csővezeték programozhatóságával érték el.

4.1.1. Alkalmazás

A első ábrát (4.1. ábra - Az Open GL megjelenítési csővezeték) tanulmányozva végigkövethetjük az OpenGL képalkotási folyamatának lehetőségeit és lépéseit. Első lépésként az alkalmazás összeállítja a kirajzolandó primitív csúcspontjait (vertex), amelyek a rajzoláshoz szükséges attribútumokat tartalmazzák. Ilyen attribútum a pozíció, a szín, a textúra-koordináta vagy -koordináták, a normál vektor. Lehetőségünk van arra, hogy térbeli objektumokat leíró csúcspontjaikkal (vertex) jellemezve adjunk át megjelenítésre. Szükség esetén azonban magunk is definiálhatjuk a pixeleken megjeleníteni kívánt információt. Érdemes már itt megemlíteni, hogy az alapobjektumok sorozatát listába szervezhetjük (display lista), amelyet ezek után egyetlen rajzelemként kezel a rendszer.

4.1.2. Vertex Shader

Az alkalmazástól érkező vertexek mindegyikén lefut egy program, a vertex árnyaló (vertex shader), amelynek a feladata a vertexek képernyőre vetítése. Ez 3D grafikában rendszerint perspektivikus vetítéssel történik. A vertex shader kimenete a transzformált vertex pozíciója homogén koordinátákban kifejezve. Emellett még egyéb számításokat is végezhet, például a fényforrások alapján meghatározhatja a vertex árnyalt színét is.

4.1.3. Raszterizálás

A raszterizálás során a topológia figyelembe vételével megtörténik a vágás, azaz a képernyőből kilógó háromszögeket, vagy azok kilógó részét eldobja a rendszer. Ezután a raszterizáló a háromszöget felosztja pixel méretű fragmensekre (fragment). Egy fragmens tartalmazza a pixel framebuffer-beli címét, illetve a vertexek egyéb paramétereit, amelyet a hardver lineárisan interpolál (4.2. ábra - Háromszög raszterizálás, interpolálás).

Háromszög raszterizálás, interpolálás
4.2. ábra - Háromszög raszterizálás, interpolálás


4.1.4. Fragment Shader

A raszterizálás során előálló fragmensek mindegyikére vonatkozóan lefut egy program, a fragmens árnyaló (fragment shader), amelynek feladata a fragmens színének meghatározása. Ehhez a fragmensben lévő interpolált paramétereket is használhatja, amely alapján például textúrát mintavételezhet, vagy csak szimplán kiírja a színt. A fragmens shader kimenete az adott fragmens színe.

4.1.5. Raszterműveletek

A raszterműveletek (raster operations, ROP) feladata fragment shader-ből előálló fragmensek egyesítése a framebuffer-ben lévő pixelekkel. Ez lehet szimpla felülírás is, vagy részben átlátszó fragmensek esetén az új pixel színéhez figyelembe kell venni a framebuffer-ben lévő pixel színét is (blending). 3D esetén a takarási feladat is itt kerül megoldásra.

4.1.6. Framebuffer

A raszterműveletek kimenete a framebuffer-be kerül, amely több puffer együttese. Minimum kell egy színpuffer, amely az összes pixelt tartalmazza tipikusan RGB színtérben. Emellett lehetnek egyéb pufferek is, például mélységpuffer a takarási problémák megoldásához, vagy alkalmazástól függően akár több szín pufferbe is lehet írni egyszerre. Például a sztereó 3D megjelenítésnél külön szín- és mélységpuffere van a bal és a jobb szemnek.

Az alapértelmezett framebuffer a képernyő, azonban lehetőség van saját framebuffer-t létrehozni. Ilyenkor a pixelek nem jelennek meg a képernyőn, hanem a memóriába kerülnek, amelyet textúraként később fel lehet használni. Ezzel érdekes effekteket lehet létrehozni.

4.2. Az OpenGL Használata

Az Open GL rendszert használhatjuk klasszikus módon, illetve az egy a felhasználást könnyítő könyvtárral.

4.2.1. Az OpenGL klasszikus inicializálása

Az OpenGL rendszer API függvényeit az OpenGL32.lib, a glu32.lib, a gdi32.lib és a User32.lib könyvtárak tartalmazzák. A könyvtárakat be kell építeni programunkba (Project Properties/ Configuration Properties/ Linker/ Input/ Additional Dependencies = openGL32.lib glu32.lib gdi32.lib User32.lib $(NoInherit)) eléréséhez be kell építenünk program stdafx.h-ba a kapcsolódó deklarációs állományokat:

#include <windows.h>
#include <winuser.h>
#include <GL/gl.h>
#include <GL/glu.h>

A fenti könyvtárak és fejállományok beépítése a projektünkbe lehetővé teszi, hogy használjuk a rendszer konstansait, típusait és függvényeit.

4.2.1.1. Az OpenGL eszközkapcsolata

Az OpenGL pixeles eszközökön működik. Első lépésben definiálnunk kell, hogy mely lehetőségeit szeretnénk használni a raszteres eszköznek. Ha ezt megtettük, informálódni kell arról, hogy az aktuális konfiguráció mit támogat az igényeink közül. Az így meghatározott lehetőségek alapján OpenGL-eszközkapcsolatot építhetünk, és kezdhetjük a geometriai modellezést. Ha már nincs szükségünk az OpenGL-eszközkapcsolatra, töröljük annak adatait.

4.2.1.2. A használni kívánt megjelenítési kapcsolat meghatározása

A Windows API (Application Programming Interface) függvényei az objektumokat számokkal azonosítják. Ezeket a számokat leírónak (handle) hívjuk. Az ablakok leírója a HWND típus (Handle of WiNdoW). Hasonlóan a grafikus eszközök rajzlapjainak objektumát egy számmal azonosíthatjuk HDC típus (Handle of Device Context). Az API rajzoló függvényeket is használhatjuk ezekkel az azonosítókkal. A .NET rendszerben az objektumok Handle tulajdonsága tartalmazza a leírókat.

Az alábbi példa a HWND típusú hwnd változóba lekéri az ablakleírót, majd a GetDC() API függvénnyel lekéri az ablak rajzlapjának leíróját, és a HDC típusú m_hDC változóba helyezi.

HWND hwnd=(HWND)this->Handle.ToInt32();
HDC m_hDC = GetDC(hwnd);

PictureBox-ba is rajzolhatunk, csak akkor a PictureBox ablakleírójával kell dolgoznunk.

hwnd=(HWND)pictureBox1->Handle.ToInt32();
m_hDC = GetDC(hwnd);

4.2.1.3. A pixelformátum meghatározása

Az OpenGL használatához meg kell határozzuk, hogyan használjuk a pixeleket. A pixelformátum megadásához a PIXELFORMATDESCRIPTOR struktúrát alkalmazhatjuk. A struktúra adattagjaival előírhatjuk, miként szeretnénk használni a grafikus hardver lehetőségeit. Beállíthatjuk a takartvonalas ábrázolásra, a színezésre, a pufferek használatára vonatkozó igényeinket. A pixelformátum struktúra definíciója:

typedef struct tagPIXELFORMATDESCRIPTOR { // pfd 
    WORD  nSize;
    WORD  nVersion;
    DWORD dwFlags;
    BYTE  iPixelType;
    BYTE  cColorBits;
    BYTE  cRedBits;   
    BYTE  cRedShift;  
    BYTE  cGreenBits;  
    BYTE  cGreenShift; 
    BYTE  cBlueBits; 
    BYTE  cBlueShift;
    BYTE  cAlphaBits; 
    BYTE  cAlphaShift;
    BYTE  cAccumBits;
    BYTE  cAccumRedBits;
    BYTE  cAccumGreenBits;
    BYTE  cAccumBlueBits;
    BYTE  cAccumAlphaBits;
    BYTE  cDepthBits; 
    BYTE  cStencilBits;
    BYTE  cAuxBuffers;
    BYTE  iLayerType; 
    BYTE  bReserved;
    DWORD dwLayerMask;
    DWORD dwVisibleMask;
    DWORD dwDamageMask;
} PIXELFORMATDESCRIPTOR;

A struktúra egyes adattagjait a Windows nem használja, a támogatott adattagok az alábbiak:

nSize

A struktúra mérete sizeof(PIXELFORMATDESCRIPTOR)

nVersion

Ennek értéke 1 kell legyen.

dwFlags

A megadott konstansokat bitenkénti vagy (|) művelettel adjuk meg. Néhány jól használható beállítás:

PFD_DRAW_TO_WINDOW

Akkor használjuk a konstanst, ha azt szeretnénk, hogy ablakban jelenjen meg a rajz. Alkalmazhatjuk még a PFD_DRAW_TO_BITMAP konstanst is.

PFD_SUPPORT_OPENGL

Az OpenGL lehetőségeit használjuk, egyébként PFD_SUPPORT_GDI.

PFD_DOUBLEBUFFER

Több puffert alkalmazva a képeket cserélgethetjük (pl. animáció).

iPixelType

PFD_TYPE_RGBA

RGBA színmegadás

PFD_TYPE_COLORINDEX

Színmegadás palettaindexszel

cColorBits

Színdefiniáló bitek száma.

cAcumBits

A speciális tárolópuffer színdefiniáló bitjeinek száma.

cDepthBits

A Z-puffer bitjeinek száma.

cStencilBits

A stencilpuffer bitjeinek száma.

iLayerType

PFD_MAIN_PLANE

Rajzolás az alap fóliára.

PFD_OVERLAY_PLANE

Rajzolás a felső fóliára

PFD_UNDERLAY_PLANE

Rajzolás az alsó fóliára

Ha az adatokat a struktúrában rögzítettük, akkor a ChoosePixelFormat() függvény hívásával lekérdezhetjük a sorszámát annak a pixelformátumnak, amelyet OpenGL-eszközkapcsolatunk a igényeinkhez legjobban illeszkedőnek talál, és támogat. Ezt a sorszámot használjuk majd az OpenGL eszközkapcsolat megteremtéséhez:

int ChoosePixelFormat( HDC hdc,
CONST PIXELFORMATDESCRIPTOR * ppfd );

A hdc paraméter az eszközkapcsolat-leíró, a ppfd a formátumdefiniáló struktúrára mutató pointer. A függvény sikeres választás esetén 0-tól különböző értékkel tér vissza.

A kiválasztott pixelformátum tényleges adatai lekérdezhetők a DescribePixelFormat() függvénnyel.

int WINAPI DescribePixelFormat( HDC hdc, int iPixelFormat,
    UINT nBytes,
    LPPIXELFORMATDESCRIPTOR ppfd);

a hdc az eszközkapcsolat leíró, megadhatjuk a kiválasztott pixelformátumot iPixelFormat, az nBytes a ppfd által mutatott struktúra mérete. A visszatérési érték az adott eszközkapcsolaton használható formátumok száma.

Ha megvan a legközelebbi pixelformátum, akkor azt a

bool SetPixelFormat(HDC hdc, int iPixelFormat,
                    PIXELFORMATDESCRIPTOR * ppfd)

függvénnyel állíthatjuk be egy hDC-re. A hdc az eszközkapcsolat leíró, az iPixelFormat egész a meghatározott legközelebbi pixelformátum, a ppfd PIXELFORMATDESCRIPTOR-ra mutató pointer.

4.2.1.4. A megjelenítési kapcsolat létrehozása, kiválasztása és törlése

A

HGLRC wglCreateContext(HDC hdc);

függvény segítségével, az eszközkapcsolat-leírót felhasználva létrehozhatunk OpenGL megjelenítési kapcsolatokat (HGLRC típusú Handle of GL Rendering Context):

A

BOOL wglMakeCurrent( HDC hdc, HGLRC  hglrc);

függvénnyel, melynek paraméterei az eszköz- és megjelenítési kapcsolat, beállíthatjuk azt, hogy az esetlegesen több megjelenítési kapcsolat közül melyik legyen az aktuális. Ha sikerrel jártunk, a visszatérési érték igaz.

Az aktuális beállítások lekérdezésére a HGLRC típusú  wglGetCurrentContext() és a HDC típusú wglGetCurrentDC() függvényeket használhatjuk.

Az adott programszál megjelenítési kapcsolatának felszabadításához először meg kell szüntetnünk a kapcsolat kiválasztott állapotát, a wglMakeCurrent(0, 0); hívással, majd törölhetjük azt a

BOOL wglDeleteContext ( HGLRC hglrc);

függvénnyel, melynek visszatérési értéke a törlés sikerességét jelzi.

Az alábbi példa MySetPixelFormat() függvénye a hdc eszközkapcsolattal beállítja az m_hglrc megjelenítési kapcsolatot.

HDC m_hDC;
HWND hwnd;
HGLRC m_hglrc;
GLint MySetSetPixelFormat(HDC hdc) {
static PIXELFORMATDESCRIPTOR pfd= {
sizeof(PIXELFORMATDESCRIPTOR),// méret
        1,                    // verzió
        PFD_DRAW_TO_WINDOW |        // ablakba
        PFD_SUPPORT_OPENGL |        // OpenGL
        PFD_DOUBLEBUFFER,            // Dupla puffer
        PFD_TYPE_RGBA,            // Színmodell
        32,                    // Színmélység
        0, 0, 0, 0, 0, 0,            // Color Bits Ignored
        0,                    // Nincs alfa
        0,                    // Nincs eltolás bit
        0,                    // Nincs akkumulátorpuffer
        0, 0, 0, 0,                // Akku bitek nincsenek
        32,                    // 32Bit Z-puffer
        0,                    // Nincs stencilpuffer
        0,                    // Nincs Auxpuffer
        PFD_MAIN_PLANE,            // Rajz a fősíkra
        0,                    // Foglalt
        0, 0, 0                // Nincsenek Layer mMaszkok
    }; GLint  iPixelFormat;
    if((iPixelFormat = ChoosePixelFormat(hdc, &pfd)) == 0) {
        MessageBox::Show("ChoosePixelFormat nem OK");
        return 0;
    }
    if(SetPixelFormat(hdc, iPixelFormat, &pfd) == FALSE) {
        MessageBox::Show("SetPixelFormat nem OK ");
        return 0;
    }
    if((m_hglrc = wglCreateContext(m_hDC)) == NULL) {
        MessageBox::Show("wglCreateContext nem OK ");
        return 0;
    }
    if((wglMakeCurrent(m_hDC, m_hglrc)) == NULL) {
        MessageBox::Show("wglMakeCurrent nem OK ");
        return 0;
    }
    return 1;
}

A megjelenítési kapcsolat felépítése a Load eseményben:

private: System::Void Form1_Load(System::Object^  sender,
System::EventArgs^  e) {
hwnd=(HWND)this->Handle.ToInt32();
    m_hDC = GetDC(hwnd);
    if(m_hDC) {
        MySetPixelFormat(m_hDC);
    }
}

A megjelenítési kapcsolat megszüntetése a FormClosing eseményben:

private: System::Void Form1_FormClosing(System::Object^  sender,
            System::Windows::Forms::FormClosingEventArgs^  e) {
        wglMakeCurrent(0, 0);
        wglDeleteContext(m_hglrc);
        ReleaseDC(m_hDC);
}

4.3. GLUT

Az OpenGL ablakozó rendszer független, azaz ablak létrehozását, a felhasználói események kezelését mindig az adott platform szerint kell megvalósítani. Az OpenGL-t inicializálni kell egy létrehozott ablakban, hogy OpenGL-lel lehessen rá rajzolni. A szabvány erről nem mond semmit, hanem ablakozó-rendszer-függő kiterjesztésekkel kell ezt megtenni. Például Windows-on a Win32 API-val létrehozott ablakokon a WGL kiterjesztéssel lehet OpenGL-t inicializálni. UNIX-on, vagy Linuxon X11 felett az XGL, Mac OS X-en Carbon felett az AGL, vagy Cocoa felett az NSOpenGL API-kkal tehető ez meg.

Azonban ehhez az ablakozó rendszerek működésének bővebb ismerete szükséges. Szerencsére erre nincs szükség, mert a GLUT (OpenGL Utility Toolkit) a platformfüggő részeket elfedi, és egy egységes API-n keresztül elérhetővé teszi a szükséges funkciókat. Hátránya, hogy a GLUT tudása limitált, bonyolultabb felhasználói felületet nem lehet vele könnyen létrehozni, azonban példaprogramokhoz, animációkhoz, játékokhoz tökéletes.

OpenGL, GLUT, és az alkalmazás helye a szoftveres veremben
4.3. ábra - OpenGL, GLUT, és az alkalmazás helye a szoftveres veremben


Az elkészítendő alkalmazások közvetlenül használják majd a GLUT-ot, amely az adott platformon elérhető API-val létrehozza az ablakot, kezeli a felhasználói eseményeket. Emellett az alkalmazások használják a GLU, és a GL könyvtárak függvényeit is. Ezek az operációs rendszeren keresztül eljutnak az eszköz illesztőprogramjához, amely megszólítja a grafikus hardvert (4.3. ábra - OpenGL, GLUT, és az alkalmazás helye a szoftveres veremben). Látszik, hogy csak platform független könyvtárakat fognak használni az alkalmazások, így ugyanazt a kódot le lehet fordítani Windows-on, Linux-on, és Mac OS X-en is.

4.3.1. GLUT telepítés Windows rendszerben

A http://user.xmission.com/~nate/glut.html címről le kell tölteni a glut-3.7.6-bin.zip fájlt. A zip fájlban lévő glut32.dll-t vagy közvetlenül a GLUT-ot használó .exe fájl mellé kell rakni, vagy a c:\ Windows\ System32\ könyvtárba, így minden program meg fogja találni.

A .h és .lib fájlokat vagy egy külön könyvtárban kell elhelyezni, és így a fejlesztő környezetben külön be kell állítani a könyvtár helyét, vagy Visual Studio verziótól függően a következő helyre kell másolni:

  • Visual Studio 2005

    glut.h -> C:\ Program Files\ Microsoft Visual Studio 8\ VC\ PlatformSDK\ Include\ gl

    glut.lib -> C:\ Program Files\ Microsoft Visual Studio 8\ VC\ PlatformSDK\ Lib

  • Visual Studio 2008

    glut.h -> C:\ Program Files\ Microsoft SDKs\ Windows\ v6.0A\ Include\ gl

    glut.lib -> C:\ Program Files\ Microsoft SDKs\ Windows\ v6.0A\ Lib

  • Visual Studio 2010

    glut.h -> C:\ Program Files\ Microsoft SDKs\ Windows\ v7.0A\ Include\ gl

    glut.lib -> C:\ Program Files\ Microsoft SDKs\ Windows\ v7.0A\ Lib

4.4. Adatok, konstansok és függvények az OpenGL rendszerben

Az OpenGL függvényeinek nevében mindig találunk egy előtagot (prefix) és egy utótagot (postfix) is.

prefixNévpostfix()

Az előtag mindig a függvény felhasználási területére utal. A Windows rendszerrel való kapcsolat kiépítésére és kezelésére szolgáló függvények neve wgl előtaggal kezdődik, az alapvető OpenGL függvények előtagja mindig gl. A segédprogram-könyvtár függvényeinek előtagja pedig a glu.

Az OpenGL használata során definiálhatunk geometriai adatokat síkban, ilyen esetben a pontoknak két koordinátáját kell megadni. Térbeli modellezéskor a pontok helyzetét három koordinátájukat megadva rögzíthetjük. Komolyabb térbeli modellezéskor használnunk kell a homogén koordinátákat is (3.2.2. szakasz - Homogén koordináták fejezet), ilyenkor egy térbeli pont az (x,y,z,1) vektorral rögzíthető, azaz négy koordinátát kell megadnunk. A színek esetén alkalmazhatjuk a már ismert RGB-modellt, ahol a szín három adattal jellemezhető. Lehetőség van azonban az RGBA színmodell használatára is, amely a három alapszín keverése mellett, a negyedik α adattal a kérdéses pontban a háttérszínének hatását jellemzi. A függvények hívásakor az adatokat paraméterek segítségével adhatjuk meg. A függvények nevében szereplő utótag egy szám és egy betű, ahol a szám a függvényparamétereinek számát, a betű pedig a paraméterek típusát rögzíti. Például az i az int, az f a float és a d a double típusú paraméterekre utal. Minden az OpenGL rendszer által definiált konstans a GL_ előtaggal rendelkezik és csak nagybetűkből áll.

4.5. Első lépések az OpenGL-ben

Az OpenGL 3 dimenziós grafikus alprogramrendszer. Ahhoz, hogy megteremtett eszközkapcsolat segítségével rajzolni tudjunk, tisztában kell lennünk néhány alapfogalommal. A rendszer RGBA színeket használ az objektumok megjelenítésére, színes elemek megjelenítésére használhatjuk az OpenGL függvényeit. Az az elem jelenik meg amit valamilyen rajzrutinnal beírunk a megjelenítési pufferekbe. A rajzrutinok térbeli objektumokat képeznek le a síkra, ahhoz, hogy megjelenjenek a leképezéseket szintén rajzrutinokkal állíthatjuk be. Végül mivel az OpenGL megjelenítési csövet használ (a rajzrutinok a rajzutasításokat „bedobálják” 4.1. ábra - Az Open GL megjelenítési csővezeték bal oldali bemenetébe, gondoskodnunk kell arról, hogy megjelenjen a rajzolat a képernyőn (a cső alján).

4.5.1. Színek megadása

A GDI+-hoz hasonlóan az OpenGL rendszerben is használhatjuk az RGBA színmodellt. Ha egy objektum színét szeretnénk megadni, akkor meg kell adni a szín piros (r), zöld(g) és kék(b) és esetleg alfa(a) – az áttetszőséget szabályozó – összetevőjét. A kapcsos zárójelek között a választható típusjelölők vannak.

void glColor3{b s i f d ub us ui} (TYPE r, TYPE g, TYPE b);
void glColor4{b s i f d ub us ui} (TYPE r, TYPE g, TYPE b, TYPEa);

Mivel az egyes színek intenzitását 0 és 1 közé eső valós számokkal jellemezhetjük. Ha a függvény valós számokat használ paraméterként, mint például a

void glColor3f (GLfloat red, GLfloat green, GLfloat blue);

függvény, amelyik 3 valós argumentummal határozza meg az RGB színt. Ha az alfa színösszetevőt is szeretnénk használni akkor a

void glColor4f (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);

függvényt használhatjuk, az argumentumok közvetlen 0 és 1 közé állításával. Lehetőségünk van például arra is, hogy byte vagy int típusú adatokat használjunk az intenzitások meg­adására. A rendszer ebben az esetben is a [0,1] intervallumon képzi az intenzitást, az adott típus legnagyobb értékéhez viszonyítva a megadott argumentumot. Például, az alábbi színdefiníciók egyenértékűek.

glColor3f (1.0, 1.0, 1.0);
glColor3b (127, 127, 127);

Ha megadunk egy színt, akkor az lesz a létrehozott elemek jellemző színe.

Használhatunk egy indexet egy színpaletta adott pozíciójának kiválasztására (ha a PIXELFORMATDESCRIPTOR iPixelType adattagja PFD_TYPE_COLORINDEX) és ezzel az aktuális szín kiválasztására. Ha a színindexet szeretnénk használni, akkor a paletta indexszel adhatjuk meg a színt a

void glIndex{s i f d ub}(TYPE c);

függvénnyel.

4.5.2. Rajzpufferek, a pufferek előkészítése

Már a megjelenítési kapcsolat kialakításánál találkoztunk a színeket- és a Z-távolságokat tároló, a takarásokat és az egyéb képtároló lehetőségeket támogató segédpufferekkel. A kép megjelenítésének kezdetén célszerű ezen adatterületeket törölni. A

void glClear(GLbitfield mask);

függvényt használhatjuk az adatpufferek törlésére. A függvény mask paraméterének bitjei a különböző puffereket azonosítják. A GL_COLOR_BUFFER_BIT bit a színek törléséről, a GL_DEPTH_BUFFER_BIT a Z-puffer adatainak törléséről, a GL_ACCUM_BUFFER_BIT a akkumulátor puffer törléséről, a GL_STENCIL_BUFFER_BIT pedig a stencilpuffer törléséről gondoskodik.

Az alábbi hívás szín- és a Z-puffert egyaránt törli:

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

A pufferek törlésére használt adatokat is megadhatjuk a

void glClearColor(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
void glClearIndex(GLfloat index);
void glClearDepth(GLdouble depth);
void glClearStencil(GLint s);
void glClearAccum(GLfloat red, GLfloat green, GLfloat blue,GLfloat alpha);

függvényeket használva. Szürke hátteret készíthetünk például az alábbi hívással. (Az első három az rgb argumentum, az utolsó pedig az α, melynek értelmezésével a későbbiekben foglalkozunk.)

glClearColor( 0.8, 0.8, 0.8,1.0 );

Ha indexelt színnel törlünk, akkor a

void glClearIndex(TYPE c))

függvényt használhatjuk a szín c paraméterrel való kiválasztásával.

4.5.3. Kirajzolás hagyományos módon

Felmerül a kérdés, hogy mikor rajzoljuk meg az OpenGL rajzokat. Ha a kép statikus, akkor rajzolhatjuk a Paint vagy a Resize esemény kezelőjében. Ha folyamatosan változó képet szeretnénk megjeleníteni, akkor használhatjuk a Timer komponenst, szervezhetünk a rajzolásnak önálló programszálat is.

Mivel a megjelenítés az OpenGL-rendszerben a „megjelenítési csövön keresztül” történik, és a rajzoló és a megjelenítő gép akár különbözőek is lehetnek. A cső előtt még van egy parancssor, amibe az OpenGL gyűjti a rajzparancsokat. Ha ez megtelik, akkor rajzolja ki, így a GPU-t jobban ki tudja használni. Ha nem telik meg a sor, akkor szerepe van a kirajzolást kezdeményező

void glFlush() és
void glFinish()

függvényeknek. Az előző kezdeményezi a kirajzolást, azonban a program futása folytatódik, az utóbbi nem tér addig vissza, míg a kirajzolás be nem fejeződik.

Ha a megjelenítési kapcsolat kialakításakor több puffer használatát írtuk elő (PFD_DOUBLEBUFFER), akkor a

void SwapBuffers(HDC hdc)

függvénnyel cserélhetjük az adott eszközkapcsolat (hdc) „első” és „hátsó” adatterületét.

4.5.4. Hello OpenGL hagyományosan a C++/CLI-vel

Az alábbi példa C++/CLI form Paint eseményében töröl szürkével az ablakot.

private: System::Void Form1_Load(System::Object^  sender,
System::EventArgs^  e) {
    this->Text=”Hello OpenGL”;
    hwnd=(HWND)this->Handle.ToInt32();
    m_hDC = GetDC(hwnd);
    if(m_hDC) {
        MySetPixelFormat(m_hDC);
    }
}
private: System::Void Form1_FormClosing(System::Object^  sender,
                System::Windows::Forms::FormClosingEventArgs^ e) {
    wglMakeCurrent(0, 0);
    wglDeleteContext(m_hglrc);
}
private: System::Void Form1_Paint(System::Object^  sender,
                System::Windows::Forms::PaintEventArgs^ e) {
    glClearColor(0.5,0.5,0.5,1);
    glClear(GL_COLOR_BUFFER_BIT );
    glFinish();
}

Hagyományos OpenGL alkalmazás
4.4. ábra - Hagyományos OpenGL alkalmazás


4.5.5. Hello OpenGL a glut-tal

Első lépésként a glut.h fejléc (header) fájlt be kell építeni a forrásfájlba, és a glut32.lib fájlt hozzá kell szerkeszteni (link) a programhoz. A glut.h automatikusan beépíti a GL/gl.h és a GL/glu.h header fájlokat, a szükséges platformfüggő fejállományokkal együtt.

A GLUT használata előtt a GLUT-ot inicializálni kell a

void glutInit(int *argcp, char **argv);

függvénnyel, amelynek paraméterként meg kell adni a main-ben kapott parancssori argumentumokat tartalmazó paramétereket (argc, argv). Így lehetőség van a GLUT néhány paraméterét parancssorból is állítani. Ezután a

void glutInitWindowSize(int width, int height);

függvény az ablak szélességét és magasságát (width, height) állítja be, a

void glutInitWindowPosition(int x, int y);

pedig meghatározza a létrehozandó ablak pozícióját (x, y) lehet beállítani.

A

void glutInitDisplayMode(unsigned int mode);

függvénnyel lehet beállítani a létrehozandó ablakban lévő framebuffer tulajdonságait. A mode paraméter értékei a PIXELFORMATDESCRIPTOR adattagjainak elérését szolgálják. (a GLUT_RGBA, GLUT_INDEX a színek megadása, a GLUT_SINGLE, GLUT_DOUBLE a pufferelés módja, a GLUT_ACCUM, GLUT_ALPHA, GLUT_DEPTH, GLUT_STENCIL – a pufferek megadása stb.)

A GLUT_RGBA konstanssal jelezzük, hogy a framebuffer a színeket RGBA-ként tárolja, azaz minden pixelre jut egy vörös, zöld, kék és alfa összetevő.

A

int glutCreateWindow(char *name);

függvénnyel létrehozunk egy ablakot, amelynek feliratát argumentumként meg kell adni. Az ablak, a korábban a glutInit kezdetű függvényekkel beállított paraméterek alapján jön létre.

#include <GL/glut.h>
int main(int argc, char* argv[]){
  glutInit(&argc, argv);
  glutInitWindowSize(640, 480);
  glutInitWindowPosition(0, 0);
  glutInitDisplayMode(GLUT_RGBA);
  glutCreateWindow(”Hello OpenGL”);

Ezután be kell regisztrálni a callback függvényeket, amelyeket az ablakon történő egyes események hatására a GLUT fog meghívni. Ehhez adott prototípusú függvényekre mutató pointereket kell megadni, azaz a függvény nevét függvényhívó operátor nélkül. Végül a glutMainLoop() függvénnyel elindítjuk az eseménykezelő hurkot. Ez egy végtelen ciklus, amely folyamatosan várakozik a külső eseményekre, és meghívja a megfelelő beregisztrált függvényt. Innen a vezérlés nem fog vissza térni a main()-be. (A main() végén a return 0;-ra azért van szükség, hogy a fordító ne figyelmeztessen, hogy a visszatérési érték hiányzik).

Az OpenGL inicializálása utána az alkalmazás is végezhet incializálást, amelyet csak egyszer, a program legelején szükséges elvégezni. Ezért az eseménykezelő hurok indítása előtt meghívunk egy saját inicializáló függvényt. A tartalmát a main()-be is lehetne írni, de így áttekinthetőbb.

  glutDisplayFunc(onDisplay);
  onInit();
  glutMainLoop();

Ezután írjuk meg a hiányzó két függvényt.

void onInit()
{
  glClearColor(0.1f, 0.2f, 0.3f, 1.0f);
}
void onDisplay()
{
  glClear(GL_COLOR_BUFFER_BIT);
  glFinish();
}

Az onInit() a glClearColor() függvénnyel átállítja a színt, amellyel a színpuffert töröljük. Az onDisplay() törli a színpuffer tartalmát a korábban beállított színnel. Paraméterként több puffer azonosítóját is meg lehet adni logikai VAGY kapcsolattal, de most a szín pufferen kívül nincs más puffer, ezért csak ezt töröljük.

Az OpenGL függvényhívások asszinkron hívások, azaz rögtön visszatérnek, mielőtt a művelet ténylegesen végrehajtódott volna. A glFinish() függvénnyel azt kérjük a rendszertől, hogy a kiadott parancsokat hajtsa végre, és ezt meg is várjuk. A programot lefordítva és futtatva a 4.5. ábra - GLUT alkalmazás képét kapjuk.

Ha a megjelenítési kapcsolat kialakításakor több puffer használatát írt/uk elő (glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE)), akkor a

void glutSwapBuffers();

függvényt hívhatjuk a pufferek cseréjére.

GLUT alkalmazás
4.5. ábra - GLUT alkalmazás


A továbbiakban az egyes lehetőségek bemutatása során a példákat elsősorban GLUT rendszerben készítjük el. Egyes esetekben, ahol interaktív lehetőségeket is megvalósítunk, visszatérünk a C++/CLI rendszerhez.

4.6. Rajzolás

Az OpenGL térben (esetleg homogén koordinátákkal) definiált objektumokból készít - a képernyőn - síkbeli képet. Ahhoz, hogy a rendszer segítségével rajzot jelenítsünk meg, tisztában kell lennünk a képalkotás módszerével. Képzeljük el, hogy van egy munkaterünk, amelyben térbeli objektumokat helyezünk el! A cél az, hogy valamilyen irányból fényképet készítsünk az elhelyezett testekről és a fénykép jelenjen meg a képernyőn.

Alaphelyzetben a megjelenítési kapcsolat kialakításakor az ablak méretei határozzák meg a munkateret. A munkatér olyan, hogy a határoló tégla alaprajzát az ablak szélessége és magassága határozza meg, és a tégla magassága is megegyezik az ablak magasságával. A tér koordináta-rendszere olyan, hogy az origó a tégla közepére kerül, és a tégla szélei minden irányban 1 távolságra vannak az origótól.

A kamera az origóban helyezkedik el és negatív Z irányba „néz”. (4.6. ábra - A kamera analógia). A kép alapesetben úgy jön létre, hogy a kamera a végtelenből érkező, Z-tengely irányú, párhuzamos vetítősugarak képét rögzíti.

Az OpenGL rendszerben történő megjelenítés alapobjektumai az úgynevezett primitívek. Az alapvető primitívek a pont, a vonalszakasz, a szakaszokból alkotott vonallánc, a háromszög, a négyszög és a poligon. Ezek mellett használhatunk többféle felületi objektumot is.

A kamera analógia
4.6. ábra - A kamera analógia


4.6.1. Alapvető rajzelemek

Minden egyes primitív létrehozását a glBegin() függvény hívása kezdeményezi, és glEnd() zárja. A két függvény között definiált pontok (vertexek) határozzák meg a primitívek térbeli elhelyezkedését. A glBegin() függvény GLenum típusú mode paraméterétől függ, hogy milyen primitívet hozunk létre.

void glBegin(GLenum mode);

A mode paraméter lehetséges értékeit és azok értelmezését az alábbiakban foglaljuk össze:

GL_POINTS

A vertexek pontokat határoznak meg.

GL_LINES

Minden pár sarokpont egy vonalszakaszt határoz meg. A szakaszok nem alkotnak láncot. Ha páros n pontot adunk meg n/2 darab szakasz jön létre.

GL_LINE_STRIP

Minden pár sarokpont egy vonalszakaszt definiál. A szakaszok láncot alkotnak, n pont (n-1) darab szakaszt határoz meg.

GL_LINE_LOOP

A szakaszok zárt láncot alkotnak. Az n pont n szakaszt definiál.

GL_TRIANGLES

Minden ponthármas egy háromszöget határoz meg. A kifestett három­szögek nem alkotnak láncot. Hárommal osztható n pont esetén n/3 három­szög jön létre.

GL_TRIANGLE_STRIP

A megadott pontok egymáshoz oldalaival illeszkedő, kifestett három­szögekből álló láncot definiálnak. Ha n>3, akkor n-2 darab háromszög keletkezik.

GL_TRIANGLE_FAN

Záródó, kifestett háromszöglánc, melynek kezdőpontja közös (n>3 esetén n-2 darab háromszög).

GL_QUADS

Minden pontnégyes egy kifestett négyszöget határoz meg. A négyszögek nem alkotnak láncot. Ha n a 4 többszöröse, akkor n/4 négyszög keletkezik.

GL_QUAD_STRIP

A kifestett négyszögekből alkotott lánc, páros n esetén n/2 elemmel.

GL_POLYGON

A pontok n oldalú, kifestett poligont határoznak meg.

A csúcspontokat (vertex) a glVertexszámtípus() alakú függvényekkel adhatjuk meg a glBegin() és a glEnd() hívások között. Ha csak két koordinátát adunk meg, akkor a Z-koordináta automatikusan 0 lesz. Mivel dolgozhatunk a homogén koordinátás térben is, a rendszer automatikusan kezeli a negyedik koordinátát. Ha csak három koordinátát definiálunk, a negyedik - homogén - koordináta automatikusan az 1 értéket kapja.

Az alakzatok
4.7. ábra - Az alakzatok


Az alábbi példa téglalapot rajzol az ablakba. Azért téglalap, mert az 1 abszolút értékű koordináták a téglalap alakú ablak széleihez tartoznak. A módosított onDisplay() a következő lesz.

void onDisplay(){
  glClear(GL_COLOR_BUFFER_BIT);
  glBegin(GL_TRIANGLE_STRIP);
    glVertex2f(-0.5f, 0.5f);
    glVertex2f(0.5f, 0.5f);
    glVertex2f(-0.5f, -0.5f);
    glVertex2f(0.5f, -0.5f);
  glEnd();
  glFinish();
}

Az alakzatok
4.8. ábra - Az alakzatok


Négyszög rajzoláshoz használhattuk volna a GL_QUADS primitív típust is, de inkább GL_TRIANGLE_STRIP-et használtuk. A GL_QUADS, GL_QUAD_STRIP, GL_POLYGON OpenGL 2.0-ban még támogatott, azonban az OpenGL későbbi verzióiból kivették hatékonysági okokból.

4.6.2. A geometriai objektumok és megjelenítési módjaik

Az eddig megismertek alapján be tudjuk állítani a pixelnyi pontok, a vonalak, a kifestett poligonok és a kifestett felületek színét, megjelenítési módját.

4.6.2.1. Pontok

Pontok rajzolásakor (GL_POINTS) lehetőségünk van a pont megjelenítésének módosítására, a vonalak vastagságának és mintázatának meghatározására, a felületelemek oldalainak különböző módszerrel történő ábrázolására is.

A megjelenített pontok raszterpontban mért átmérőjét (size) állíthatjuk be a

void glPointSize (GLfloat size);

függvénnyel. Az alábbi példa az ablak közepére rajzol egy zöld 10 pixel méretű pontot

void onDisplay()
{
  glClear(GL_COLOR_BUFFER_BIT);
  glPointSize(10);
  glColor3f(0,1,0);            // a zöld szín
  glBegin(GL_POINTS);
   glVertex3f( 0, 0,0);
  glEnd();
  glFinish();
}

10 pixeles zöld pont
4.9. ábra - 10 pixeles zöld pont


4.6.2.2. Vonalak

Vonalak megjelenítésekor (GL_LINES, GL_LINE_STRIP, GL_LINE_LOOP) a vonalak pixelben mért vastagságát (width) szabályozza az alábbi függvény:

void glLineWidth (GLfloat width);

Ha a vonalmintázatok használatát engedélyezzük glEnable(GL_LINE_STIPPLE), akkor saját mintázatú vonalakat hozhatunk létre. A vonal mintázatát a

void glLineStipple (GLint factor, GLushort pattern);

függvény argumentumaival határozhatjuk meg. A 16 bites pattern paraméter nem 0 bitjei definiálják a rajzolandó pontokat. Azért, hogy a mintázat ne csak 16-pontos legyen, használhatjuk a factor paramétert, melynek hatására a pattern minden egyes bitje factor darab, egymás utáni pontot jelent a vonalon kirajzolva. Az alábbi példa vastag folyamatos és vastag szaggatott vonallal rajzolt átlót jelenít meg.

void onDisplay()
{
    glClear(GL_COLOR_BUFFER_BIT);
    glLineWidth(10);
    glColor3f(1,1,0);            // a sárga szín
    glBegin(GL_LINES);
        glVertex3f( -1,-1,0);
        glVertex3f( 1,1,0);
    glEnd();
    glColor3f(0,1,1);            // a magenta szín
    glLineStipple (5, 0x0C0F);
    glEnable(GL_LINE_STIPPLE);
    glBegin(GL_LINES);
        glVertex3f( -1,1,0);
        glVertex3f( 1,-1,0);
    glEnd();
    glDisable(GL_LINE_STIPPLE);
 glFinish();
}

Vonaltípusok
4.10. ábra - Vonaltípusok


4.6.2.3. Konvex sokszögek

Konvex poligonok (GL_TRIANGLES, GL_TRIANGLE_STRIP, GL_TRIANGLE_FAN, GL_QUADS, GL_QUAD_STRIP, GL_POLYGON) megjelenésekor a térbeli sokszögeknek (poligonok) van első és hátsó oldaluk. Alapesetben az a poligon első oldala, amely irányból nézve a pontok óramutató járásával ellentétes körüljárást adnak. A sokszögek első oldala kiválasztható a

void glFrontFace(GLenum mode);

függvénnyel – a mode paraméterben a GL_CCW az alapesetet, a GL_CW pedig az alapesettel ellentétes oldalt meghatározó argumentumok megadásával.

A sokszögek rajzolásakor dönthetünk arról, hogyan jelenjen meg az alakzat első és a hátsó oldala. Alaphelyzetben a poligonok kifestettek. A kirajzolás azonban történhet csak a sarokpontokkal, az élekkel és végül a felületek lehetnek kifestettek. A

void glPolygonMode(GLenum face, GLenum mode);

függvényt használjuk az adatok beállítására. A face paramétertől függ, hogy melyik oldalt állítjuk be (GL_FRONT, GL_BACK, GL_FRONT_AND_BACK – felső, hátsó vagy mindkettő), a mode paraméter értékei pedig megjelenítés típusát adják (GL_POINT, GL_LINE, GL_FILL).

A nem láncban (STRIP) rajzolt sokszögek éleinek láthatóságát is szabályozhatjuk, így lehetőségünk van arra, hogy a nem konvex alakzatokat konvex alakzatokból összeállítva rajzoljuk ki. Az élek láthatóságát a megelőző vertex-nél határozhatjuk meg a

void glEdgeFlag(GLboolean flag);

függvénnyel. A flag logikai paraméter megadásakor használhatjuk a GL_TRUE és a GL_FALSE konstansokat is. Az élek láthatósága a poligonban nem változik egészen a következő glEdgeFlag() függvényhívásig.

void onDisplay()
{
glClear(GL_COLOR_BUFFER_BIT);
    glLineWidth(10);
    glColor3f(1,1,1);             // a fehér szín
    glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    glBegin(GL_POLYGON);
        glEdgeFlag(GL_TRUE);
        glVertex3f(-0.5,-0.5,0);
        glEdgeFlag(GL_FALSE);
        glVertex3f(0.5,-0.5,0);
        glEdgeFlag(GL_TRUE);
        glVertex3f(0,0.5,0);
    glEnd();
glFinish();
}

Háromszög láthatatlan éllel
4.11. ábra - Háromszög láthatatlan éllel


Mintázatot is definiálhatunk a sokszögeknek a

void glPolygonStipple(const GLubyte *mask);

függvénnyel, ahol a mask tömb egy 32*32 méretű bitkép pontjainak megjelenését definiálja. Alaphelyzetben ennek értelmezése: ahol 1 van ott van poligon szín, ahol 0 ott nincs. Ezt a képet mint tapéta mintázatot használjuk. Ahhoz, hogy a mintázat megjelenjen, használnunk kell a glEnable(GL_POLYGON_STIPPLE) függvényhívást. Megszüntethetjük a mintázást a glDisable(GL_POLYGON_STIPPLE) függvényhívással. Az alábbi példa téglalapot jelenít meg véletlen mintázattal

void onDisplay()
{
    glClear(GL_COLOR_BUFFER_BIT);
    GLubyte vl[128];                 // 32*32/8
    for (int i=0 ; i<128 ; i++) {
        vl[i]=rand()%128+1;                 // stdlib.h
    }
    glColor4b(127,127,0,64);                 // sárga
    glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
    glEnable (GL_POLYGON_STIPPLE);
    glPolygonStipple (vl);
    glBegin(GL_POLYGON);
        glVertex3f( -0.6, -0.6,-0.5);
        glVertex3f( 0.6,-0.6,-0.5);
        glVertex3f(0.6,0.6,-0.5);
        glVertex3f(-0.6, 0.6,-0.5);
    glEnd();
    glDisable (GL_POLYGON_STIPPLE);
glFinish();
}

Mintázott sokszög
4.12. ábra - Mintázott sokszög


Ha megvilágítottan és árnyalva szeretnénk megjeleníteni a felületet, akkor szükségünk van a normálvektorokra. A háromszög három pontja meghatározza a sík normálvektorát. Azonban így egyik háromszögről a másikra áthaladva a normálvektor nem folytonosan változik, ezért az élek kiemelődnek. Elkerülhetjük ezt a jelenséget, ha minden ponthoz egy normálvektort is definiálunk. A később tárgyalásra kerülő árnyalt ábrázoláshoz a poligon minden sarokpontjába normálist is definiálhatunk a glNormalszámTípus() függvénnyel megadva a normális koordinátáit.

4.6.2.4. Színek, interpolálás

A glVertex() hívással hozunk létre egy vertexet, azaz bekerül a feldolgozandó vertexek közé. Az OpenGL egy nagyállapot gép, ezért a vertex attributúmait a legutoljára beállított állapot határozza meg. A glColor() függvénnyel akár vertexenként is beállíthatjuk a színeket.

void onDisplay()
{ 
  glClear(GL_COLOR_BUFFER_BIT);
  glBegin(GL_TRIANGLE_STRIP);
    glColor3f(1.0f, 0.0f, 0.0f); // vertex szín attribútum
    glVertex2f(-0.5f, 0.5f); // vertex létrehozás
    glColor3f(0.0f, 1.0f, 0.0f); // vertex szín attribútum
    glVertex2f(0.5f, 0.5f); // vertex létrehozás
    glColor3f(0.0f, 0.0f, 1.0f); // vertex szín attribútum
    glVertex2f(-0.5f, -0.5f); // vertex létrehozás
    glColor3f(1.0f, 1.0f, 0.0f); // vertex szín attribútum
    glVertex2f(0.5f, -0.5f); // vertex létrehozás
  glEnd();
  glFinish();
}

A grafikus csővezetékben a raszterizáló a létrejövő fragmenseken interpolálja a vertex attribútumokat. Ennek módja a

void glShadeModel( GLenum mode );

függvénnyel állítható. GL_SMOOTH hatására egy háromszögnél mind a három vertex attribútumai alapján interpolálja a fragmensek attribútumait (4.13. ábra - GL_SMOOTH). A GL_FLAT hatására az egész háromszög fragmensei az egyik vertex attributúmait veszik át (4.14. ábra - GL_FLAT). Ez az onInit()-ben állítható.

void onInit()
{ 
  glClearColor(0.1f, 0.2f, 0.3f, 1.0f);
  glShadeModel(GL_SMOOTH);
}

GL_SMOOTH
4.13. ábra - GL_SMOOTH


GL_FLAT
4.14. ábra - GL_FLAT


A poligonok vertexek megadásával történő rajzolása helyett téglalapok rajzolására használhatjuk a

void glRecttipus(tipus x1, tipus y1,
       tipus x2, tipus y2);

függvényeket. Az alábbi példa is egy előző ábrán (4.8. ábra - Az alakzatok) látható téglalapot rajzolja ki csak pirossal.

private: System::Void Form1_Paint(System::Object^  sender,
 System::Windows::Forms::PaintEventArgs^  e) {
glColor3f(1,0,0);             // a piros szín
glRectf(-0.6, -0.6,0.6, 0.6);
glFinish();
}

4.6.2.5. Görbevonalú alakzatok rajzolása, tesszalláció

Görbevonalú alakzatok határát úgy rajzoljuk, hogy kiszámoljuk annak pontjait, és azokat egyenessel kötjük össze. Kör esetén a kör parametrikus egyenletébe néhányszor behelyettesítünk, és így hozzájutunk a kör néhány pontjához, amelyeket a kör középpontjával összekötve háromszögek alakulnak ki (4.15. ábra - Kör tesszeláció). Egy egyenletekkel megadott alakzat háromszögekké alakítása a tesszeláció. Látszik, hogy minél többször mintavételezzük a körvonalat, annál íveltebb lesz a háromszögelt kör. Cserébe több ponton kell a GPU számoljon.

Kör tesszeláció
4.15. ábra - Kör tesszeláció


void drawCircle(float radius, int tesselation = 32)
{
  glBegin(GL_TRIANGLE_FAN);
    glColor3f(1.0f, 1.0f, 0.0f);
    glVertex3f(0.0f, 0.0f, 0.0f); // középső vertex
    glColor3f(1.0f, 0.0f, 0.0f); // köríven lévő vertexek színe
    float delta = 2.0f * static_cast<float>(M_PI) / tesselation;
    for (int i = 0; i <= tesselation; ++i)
    {
      float t = i * delta;
      glVertex3f(radius * cosf(t), radius * sinf(t), 0.0f);
    }
  glEnd();
}

A kör középpontja minden háromszögnek az egyik pontja lesz, ezért GL_TRIANGLE_FAN-ként adjuk meg a csúcspontokat. A középpontnak, és a köríven lévő pontoknak különböző színt állítunk be. Ezután a tesszeláció mértéke alapján kiszámoljuk, hogy mekkora szöget kell fordulni minden mintavételkor (delta). Majd egy for ciklussal végig mintavételezzük a kör parametrikus egyenletét. Az egyenlet itt egyszerűbb, mint a fenti képletben, mert feltételezzük, hogy a kör mindig az origóban lesz. A for ciklus összesen tesselation + 1-szer fut le. Az utolsó vertex a 2π-nél van, azaz ott, ahonnan elindultunk. Erre azért van szükség, hogy az utolsó háromszög összekösse az utolsó pontot az elsővel.

Az alábbi példa az ablak arányaihoz igazított torzított körlapot rajzol a DrawCircle() függvénnyel.

void onDisplay()
{
  glClear(GL_COLOR_BUFFER_BIT);
  drawCircle(0.50F);
  glFinish();
}

Körlap
4.16. ábra - Körlap


4.6.3. Transzformációk

Hogyan jön létre a térbeli háromdimenziós - vagy akár homogén-koordinátákkal négydimenziós – objektumok képe a képernyőn? Ahhoz, hogy egy térbeli pontot leképezzünk a képernyő egy ablakába, több geometriai transzformációt is végre kell hajtanunk. (4.17. ábra - A képalkotási transzformációk sora)

A képet alkotó objektumokat úgy helyezhetjük el a térben, hogy felépítjük a geometriát, mondjuk az origó körül, és aztán azt geometriai transzformációval a kamerához képest a megfelelő térbeli pozícióba mozgatjuk (nézeti transzformáció).

A térbeli alakzatok síkbeli ábrázolásához először síkra kell vetíteni a képet. Ha a síkba történő vetítés sugarai párhuzamosak, akkor azt axonometriának hívjuk. Ha a szem működését szeretnénk modellezni, akkor centrális vetítést kell alkalmaznunk. (vetítő transzformáció)

Ha a síkba vetített képet ténylegesen a képernyő egy ablakában szeretnénk látni, akkor alkalmaznunk kell egy téglalapot, és a téglalapba konvertáló transzformációt (Window-Viewport transzformáció).

A képalkotási transzformációk sora
4.17. ábra - A képalkotási transzformációk sora


Az OpenGL a transzformációkat homogén koordinátákkal, 4*4-es mátrixszorzással végzi úgy, hogy egyetlen modellnézeti transzformációs és egyetlen vetítési transzformációs mátrixot használ. A képet alkotó elemek mindegyik pontja a modellezési transzformációnak megfelelően elmozdul, és a vetítési transzformációnak megfelelően kerül a síkbeli képre.

(4.1)

Minden újabb transzformáció az aktuális vetítési vagy modellezési transzformációs mátrix szorzását jelenti a megadott transzformációval.

A módosítás előtt a glMatrixMode() függvénnyel kiválaszthatjuk, hogy melyik mátrixra vonatkoznak a műveletek:

void glMatrixMode(GLenum mode);

Ha a mode paraméter értéke GL_MODELVIEW, akkor modellezési-, ha GL_PROJECTION, akkor vetítési transzformációt adunk meg. (A glGet(GL_MATRIX_MODE) hívással lekérdezhetjük, hogy éppen melyik mód az aktuális). A programban rendszerint a vetítési transzformáció megelőzi a modellezési transzformációt, hiszen először a kép méreteit, a kamera jellegzetességeit kell beállítanunk, és azután megfelelő pozícióból elkészíteni a képet.

Akármilyen mátrixmódban is dolgozunk, a glLoadIdentify() hívás hatására az aktuális transzformációs mátrixunk az egységmátrix lesz, ami a helyben hagyásnak felel meg. Lehetőségünk van arra, hogy 16 darab valós számmal definiáljuk a transzformációs mátrix koordinátáit.

void glLoadMatrixd (const GLdouble *m);
void glLoadMatrixf (const GLfloat *m);

Az m paraméter double (d eset), illetve float (f eset) típusú elemeket oszlopfolytonosan (!) tartalmazó tömb mutatója.

Az aktuális mátrixot akár be is szorozhatjuk egy argumentumként megadott tömbbel a glMultMatrixf() és a glMultMatrixd() függvények segítségével.

A fenti lehetőségekkel minden geometriai transzformáció végrehajtható, azonban gyakrabban használjuk a szemléletes, geometriai jelentést hordozó transzformációkat megvalósító függvényeket.

4.6.3.1. Modellezési transzformációk

A modellezési transzformációk glMatrixMode(GL_MODELVIEW) beállítás esetén kétféle szemléletmóddal is értelmezhetők. Felfoghatjuk a transzformációkat úgy, mint a térben elhelyezett objektumok mozgatását a fix helyzetben lévő kamera előtt (modellező transzformációk), illetve úgy is, hogy a kamera pozíciója és iránya változik (nézeti transzformáció) a képalkotáskor. Célszerű azonban a kétféle gondolkodás közül az egyiket kiválasztani, és annak tükrében értelmezni a geometriai transzformációkat. Az alábbiakban mi is ezt tesszük, a transzformációkat, mint a térbeli objektumok mozgatását fogjuk fel.

A legegyszerűbb geometriai transzformáció az eltolás, melyet az argumentumok típusától függően a

void glTranslated (GLdouble x, GLdouble y, GLdouble z);
void glTranslatef (GLfloat x, GLfloat y, GLfloat z);

függvényekkel valósíthatunk meg. Mindkét függvény hívásának hatása az, hogy a homogén koordinátás modell-transzformációs mátrixot megszorozza az (x,y,z) eltolást megvalósító mátrixszal.

Térbeli origón átmenő tengely körüli forgatásnak megfelelő transzformációt eredményeznek a

void glRotated(GLdouble angle,GLdouble x,GLdouble y,GLdouble z)
void glRotatef(GLfloat angle,GLfloat x,GLfloat y,GLfloat z)

függvények. Az elforgatás tengelyvektorának irányát az (x,y,z) paraméterek, fokban mért szögét pedig az alpha paraméter határozzák meg.

Transzformációk sorozatát írhatjuk elő a segédprogramok könyvtárának - nézeti transzformációs szemléletű - gluLookAt() függvényével.

void gluLookAt(GLdouble eyex, GLdouble eyey, GLdouble eyez,
          GLdouble centerx, GLdouble centery, GLdouble centerz,
          GLdouble upx, GLdouble upy, GLdouble upz );

A függvény paraméterei a kamera pozícióját (eyex,eyey,eyez), a kamera által „meg­célzott” térbeli pontot (centerx,centery,centerz) és a kamera felső oldalának irányát (upx,upy,upz) rögzítik. A transzformáció a modelltér koordináta-rendszerét (X,Y,Z) transzformálja új pozícióba (X’,Y’,Z’)

A függvény által megvalósított transzformáció a modellmátrix transzformációs sorának végére kerül, azaz először a többi geometriai transzformáció kerül sorra.

A gluLookAt() függvény kamera-pozíciója
4.18. ábra - A gluLookAt() függvény kamera-pozíciója


Az alábbi példa sárga, térben elforgatott téglalapot rajzol. A téglalap mellé még pirossal a koordináta-tengelyeket is megrajzoltuk.

void onDisplay()
{
         glMatrixMode(GL_MODELVIEW);
         glRotatef(60,10,10,10);
         glColor3f(1,1,0);            
         glRectf(-0.6, -0.6,0.6, 0.6);
         glColor3f(1.0, 0.0, 0.0);
         glBegin(GL_LINES);
            glVertex3f( 0,0,0);    
            glVertex3f( 0.2,0,0);
            glVertex3f( 0,0,0);
            glVertex3f( 0,0.2,0);
            glVertex3f( 0,0,0);
            glVertex3f( 0,0,0.2);
         glEnd();
 glFinish();
}

A forgó téglalap
4.19. ábra - A forgó téglalap


4.6.3.2. Vetítési transzformációk

A 3.4.1. szakasz - A tér leképezése síkra fejezetben áttekintettük a tér síkba vetítésének matematikai hátterét.

A vetítési transzformációk glMatrixMode(GL_PROJECTION) beállítás segítségével módosíthatjuk az alaphelyzet (4.20. ábra - A glOrtho() leképezés) merőleges párhuzamos vetítési előírása mellett a modelltér méreteit is. Alaphelyzetben a munkatér +X, -X, +Y, -Y és –Z irányban 1 kiterjedésű. A merőleges leképezés előírása mellett, a munkatér méreteit is meghatározza az alábbi függvény:

void glOrtho (GLdouble left, GLdouble right,
              GLdouble bottom, GLdouble top,
              GLdouble near, GLdouble far );

A left és right paraméterek a téglalap alakú munkatér jobb- és bal oldalának centrumtól mért távolságát, a top és bottom paraméterek pedig a munkatér felső és alsó szélének középponttól vett távolságát definiálják. A munkatér egy első és egy hátsó vágósíkkal határolt, melyek origótól való távolságát a near és far paraméterek határozzák meg (4.20. ábra - A glOrtho() leképezés).

A párhuzamos vetítés eltér a szem képalkotási módszerétől, így képen a távolabbi objektumok mérete ugyanakkora, mint a közelebbieké. Ha a szem képalkotásához szeretnénk illeszkedni, akkor centrális vetítést kell használnunk.

Centrális leképezést valósíthatunk meg a glFrustum(), illetve a segédkönyvtár gluPerspective() függvényeinek segítségével. Mindkét függvény definiálja a munkateret és a nézeti ablakot.

A glOrtho() leképezés
4.20. ábra - A glOrtho() leképezés


A paramétereinek értelmezéséhez az 4.21. ábra - A centrális leképezés lehet segítségünkre.

void glFrustum(GLdouble left, GLdouble right,
               GLdouble bottom, GLdouble top,
               GLdouble near, GLdouble far);
void gluPerspective(GLdouble alpha, GLdouble aspect,
               GLdouble near, GLdouble far);

Az alpha értéket fokokban kell megadni, az aspect paraméter csak a nézeti ablak oldalainak arányát rögzíti (4.2).

aspect=(left+right)/(top+bottom)

(4.2)

További, a

void glSetClipPlane(GLenum plane, GLdouble *equation);

függvény segítségével definiált vágósíkok is megadhatók (GL_MAX_CLIP_PLANES darab). Az equation pointer az Ax+By+Cz+D = 0 egyenlet együtthatóit tartalmazó mátrix pointere. Lekérdezhetjük az adatokat a

void glGetClipPlane(GLenum plane, GLdouble *equation);

A vágósíkok használatát egyenként engedélyezhetjük a glEnable(GL_CLIP_PLANEi) hívással.

A centrális leképezés
4.21. ábra - A centrális leképezés


4.6.3.3. Viewport-transzformációk

A 3.4.2. szakasz - Window-Viewport transzformáció fejezetben láttuk a Window-ViewPort leképezést. Ez is programozható OpenGL-ben.

A megjelenő nézeti ablak mérete alapértelmezés szerint az ábrának otthont adó ablak teljes mérete. A glViewport() függvénnyel lehetőségünk nyílik arra, hogy az aktív területnél kisebb ablakot jelöljünk ki.

void glViewport(GLint x, GLint y,
    GLsizei width, GLsizei height);

Az x, y paraméter a nézeti ablak bal alsó sarokpontját, a width és a height a szélességet és magasságot definiálja. Mindegyik paraméterérték pixelben értendő.

4.6.3.4. Rajzolás pixel koordinátákkal

Példaként állítsuk be egy olyan vetítés-mátrixot, hogy a kirajzolandó objektumokat az ablak megszokott grafikus koordináta-rendszerében lehessen megadni! Gondot jelent azonban ha az ablakot elkezdjük méretezni kézzel, akkor az elején beállított arány már nem lesz jó. CLI-ben ez nem okoz problémát, GLUT esetén a glutReshapeFunc() függvénnyel be lehet regisztrálni egy callback függvényt, amely az ablak méretezéskor hívódik meg az ablak új méreteivel. Ez az esemény az ablak létrejöttekor is aktiválódik.

int main(int argc, char* argv[]) {
  //glutInit...
  glutDisplayFunc(onDisplay);
  glutReshapeFunc(onResize);
  onInit();
  glutMainLoop();
  return 0;
}

A bal felső sarok az origó, az X tengely jobbra, az Y tengely lefelé nő, és mindkét tengelyen 1 egység 1 pixelnek feleljen meg!

A transzformációt a gluOrtho2D() függvénnyel lehet beállítani. A Z tengely -1 és +1 közötti része lesz látható. A gluOrtho2D() azonban az aktuális mátrixot szorozza meg ezzel a transzformációs mátrix-szal, így a glLoadIdentity() függvénnyel előtte inicializálni kell a transzformációt, különben érdekes meglepetések érhetnek minket az ablak méretezéskor. Az új onResize() függvény tehát így néz ki:

void onResize(int width, int height) {
  glViewport(0, 0, width, height); // viewport állítás
  if (height == 0)
    height = 1;
  glMatrixMode(GL_PROJECTION); // projection mátrix kiválasztása
  glLoadIdentity(); // egység mátrix beállítása
  gluOrtho2D(0.0, width, height, 0.0); // transzformáció beállítása
  glMatrixMode(GL_MODELVIEW); // modelview mátrix kiválasztása
}

A kört viszont mindig az origóba rajzoljuk, amely most az ablak bal felső sarkában található. A glTranslatef() függvénnyel az aktuális mátrixhoz egy eltolás transzformációt lehet hozzáadni. Az aktuális mátrix a modelview, mert az onResize() végén erre álltunk vissza. Mivel a modelview mátrixban ott maradhat az előző transzformáció, ezért ezt is a glLoadIdentity()-vel egység mátrixba állítjuk.

void onDisplay() {
  glClear(GL_COLOR_BUFFER_BIT);
   glLoadIdentity();
  glTranslatef(100.0f, 100.0f, 0.0f);
   drawCircle(50.0f, 64);
  glFinish();
}

Így a színes kör középpontja a 100,100 pontba kerül.

Kör pixel koordinátákkal
4.22. ábra - Kör pixel koordinátákkal


4.6.3.5. Mátrix verem

A transzformációk tárolására típusonként verem áll rendelkezésünkre. Ebbe a verembe menthetjük az aktuális mátrixot a glPushMatrix() hívással, illetve az utolsónak mentett mátrix aktuálissá tehető a glPopMatrix() hívással.

4.6.4. Takarások kezelése - a Z-puffer

A nem látható elemek eltüntetésére a legegyszerűbb megoldás a hátsó lap eldobásának módszere. (3.4.3. szakasz - A láthatóság fejezet) Ennek alapkoncepciója az, hogy ha a felületet (testet) alkotó poligonháló kifelé mutató normálisa n egy irányba mutat a ránézés irányával r , n*r>0, akkor az a háromszög nem látható.

A hátsó lapok eldobásának szabályozására használható a

void glCullFace(GLenum mode);

A mode paraméter határozza meg, hogy mely poligonokat dobjuk el (GL_FRONT – az elsőket, GL_BACK – a hátsókat, vagy GL_FRONT_AND_BACK – mindkettőt). A működés beállítható a glEnable(GL_CULL_FACE) hívással, és letiltható a glDisable(GL_CULL_FACE) függvény aktiválásával. Ha hagyományos – PIXELFORMATDESCRIPTOR strukúrával inicializálunk, akkor a z-puffer az alapértelmezett (Letilthatjuk a dwFlag PFD_DEPTH_DONTCARE bitjével). GLUT használatakor a

glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH);

hívás alkalmazható.

A takart részek eltávolítására az OpenGL a manapság már legelterjedtebb algoritmust a 3.4.3. szakasz - A láthatóság fejezetben ismertetett Z-puffer algoritmust használja.

A takarás vizsgálata csak akkor történik meg, ha azt engedélyeztük. Alapállapotban nincs távolságvizsgálat, és az objektumok a rajzolás sorrendjében a képernyőre kerülnek.

A mélységi teszt a glEnable(GL_DEPTH_TEST) függvény hívásával engedélyezhető. Az engedélyezett műveletet természetesen tilthatjuk is a glDisable(GL_DEPTH_TEST) függvénnyel.

Azt is szabályozhatjuk, hogyan történjen a Z-koordináták összehasonlítása. A

void glDepthFunc (GLenum func);

függvényt többféle GLenum típusú konstanssal is hívhatjuk. Például, ha engedélyezett távolságvizsgálat esetén a GL_LESS-t használjuk argumentumként, akkor a pont csak akkor jelenik meg, ha z-koordinátája kisebb, mint az aktuálisan tárolt z-érték. A vizsgálat fordítva is történhet, ha a GL_GREATER konstanst használjuk.

Az eddigi példák alapján vizsgáljuk meg a takarást! A kör koordinátáinak z komponense 0 volt. A gluOrtho2D() olyan transzformációs mátrixot készít, hogy az objektumok a z=-1 és +1 között kerülnek a képernyőre. Kipróbálhatjuk a takarást, ha a z=0 síkra kört, a z=-1 síkra pedig négyszöget rajzolunk.

Ha először kirajzoljuk a négyszöget, és utána a kört, akkor ez biztos jó lesz. Ezt hívják „painters” algoritmusnak, amikor először a legtávolabbi objektumot rajzoljuk ki, és utána rá a többit. De az OpenGL használható 3D grafikára is, így van más módja is a takarási probléma megoldásának.

void onDisplay()
{ 
  glClear(GL_COLOR_BUFFER_BIT);
 
  // kör rajzolás
  glLoadIdentity();
  glTranslatef(100.0f, 100.0f, 0.0f);
  drawCircle(50.0f, 64);
 
  // négyszög rajzolás
  glLoadIdentity();
  glColor3f(0.0f, 1.0f, 0.0f);
  glBegin(GL_TRIANGLE_STRIP);
    glVertex3f(100.0f,  50.0f, -1.0f);
    glVertex3f(200.0f,  40.0f, -1.0f);
    glVertex3f( 90.0f, 160.0f, -1.0f);
    glVertex3f(210.0f, 140.0f, -1.0f);
   glEnd();
 
  glFinish();
}

A kört eltoljuk a (100,100) pontba. A modelview mátrix a glTranslatef() után tartalmaz egy eltolás transzformációt, így minden utána következő objektum el lesz tolva. Mivel a négyszög koordinátáit közvetlenül világ koordinátákban adjuk meg, ezért az eltolásra már nincs szükség, így a modelview mátrixot a glLoadIdentity() függvénnyel egység mátrixba állítjuk.

A takarás kirajzolási sorrenddel
4.23. ábra - A takarás kirajzolási sorrenddel


A négyszög a kör elé került, pedig mögötte kellene lennie. A takarási probléma megoldására szükség van a mélységi pufferre (depth puffer, z-puffer). A mélységi puffer tárolja minden pixelre a pixel mélységi értékét. Amikor a fragmens shader után a fragmens a raszter műveletekhez jut, a pixel framebufferbe írása előtt a rendszer összehasonlítja az új fragmens mélységi értékét a mélységi pufferben lévő értékkel. Ha az új érték kisebb, mint a régi, azaz közelebb van a kamerához, akkor a pixel felül írja a framebuffer-ben lévő pixelt. Ha nagyobb, akkor a rendszer eldobja (4.24. ábra - Mélység teszt algoritmus) a pixelt.

Mint láttuk, a glutInitDisplayMode() függvénynek meg lehet adni, hogy az RGBA típusú színpuffer (GLUT_RGBA) mellé kérünk még egy mélységi puffert (GLUT_DEPTH) is. Ezután az OpenGL-ben engedélyezni kell a mélység tesztelést a glEnable(GL_DEPTH_TEST) hívással. A glDepthFunc() függvénnyel megadhatjuk a mélységi értékek összehasonlítási módját. Ez alapértelmezetten GL_LESS, azaz a mélységi teszten csak a kisebb mélységű pixelek fognak átjutni. Végül még arra is figyelni kell, hogy a rajzolások előtt ne csak a színpuffert töröljük, hanem a mélységi puffert is.

int main(int argc, char* argv[])
{
  //glutInit...
  glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH);
  glutCreateWindow(”Hello Circle”);
  //...
}
void onInit()
{
  glClearColor(0.1f, 0.2f, 0.3f, 1.0f);
  glShadeModel(GL_SMOOTH);
  glEnable(GL_DEPTH_TEST);
}
void onDisplay()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  // kör és négyszög rajzolás
  glFinish();
}

Mélység teszt algoritmus
4.24. ábra - Mélység teszt algoritmus


Takarás mélység teszt algoritmussal
4.25. ábra - Takarás mélység teszt algoritmussal


Így az objektumok az elvártnak megfelelően takarják egymást.

4.6.5. Animáció

Az animáció két problémát is felvet. Biztosítani kell, hogy a geometria többször, villogásmentesen kerüljön a képernyőre.

A CLI-rendszerben a Timer komponens kezdeményezhet kirajzolást, és a Timer méri az eltelt időt is. A GLUT rendszerben a glutIdleFunc() regisztrál egy olyan callback függvényt, amelyet a GLUT akkor hív, ha éppen nincs semmilyen más esemény (ablakméretezés, rajzolás). Ha fizikai mozgást szeretnénk modellezni akkor a glutGet(GLUT_ELAPSED_TIME) hívással le lehet kérdezni a program indítása óta eltelt időt ezredmásodpercben.

4.6.5.1. Dupla pufferelés

Ha mindig ugyanabba a pufferbe rajzolunk, ami a képernyőn megjelenik, akkor az a kép villogását okozhatja. Az OpenGL parancsok asszinkron műveletek, így nem rögtön hajtódnak végre, először egy műveleti parancssorba kerülnek. A GPU-n lévő ütemező dönt a végrehajtás idejéről. A problémára megoldás a dupla pufferelés. Ekkor két framebuffer van, az egyik jelenik meg a képernyőn, miközben a másikba rajzolunk. A képernyőn lévő puffert front buffernek, az aktuális puffert back buffernek nevezzük. A rajzolás befejezésekor a két puffert ki kell cserélni, így a teljesen megrajzolt kép fog a felhasználónak megjelenni (4.26. ábra - Dupla pufferelés).

Dupla pufferelés
4.26. ábra - Dupla pufferelés


Hagyományos módon történő inicializálás esetén a PIXELFORMATDESCRIPTION struktúra dwFlag adattagjába be kell állítania PFD_DOUBLEBUFFER bitet, és a SwapBuffers() függvény hívásával cserélhetjük a puffereket.

GLUT esetén a dupla pufferelést a glutInitDisplayMode(GLUT_DOUBLE); függvényhívással lehet aktivizálni. A pufferek cserélését pedig a glutSwapBuffers() függvénnyel lehet kérni. A glutSwapBuffers() meghívja a glFinish() függvényt, így erre külön nincs szükség.

Példaként módosítsuk a 4.25. ábra - Takarás mélység teszt algoritmussal programját, hogy mozogjon a labda. Ehhez szükség lesz egy 2-dimenziós Vector osztályra, amellyel a vektor műveletek kényelmesen elvégezhetőek.

struct Vectorú
{
  float x, y;
  Vector(float x = 0.0f, float y = 0.0f) : x(x), y(y) {  }
  Vector& operator +=(const Vector& v) {
    x += v.x;
    y += v.y;
    return *this;
  }
} ;
Vector operator *(const float& a, const Vector& v)
{
  return Vector(a*v.x, a*v.y);
}

Ezután deklaráljunk néhány globális változót, amelyek tartalmazzák majd a labda pozícióját (position), sebességét (velocity), az ablak méretét, illetve az animációhoz szükséges utolsó frissítés idejét (lastTime).

Vector position(320.0f, 240.0f), velocity(100.0f, 100.0f);
int lastTime = 0;
float windowWidth = 640.0f, windowHeight = 480.0f;

A glutIdleFunc() függvénnyel regisztráljuk azt a callback függvényt, amelyet a GLUT fog hívni.

int main(int argc, char* argv[])
{
  //glutInit...
  glutDisplayFunc(onDisplay);
  glutReshapeFunc(onResize);
  glutIdleFunc(onIdle);
  onInit();
  glutMainLoop();
  return 0;
}
void onIdle()
{
  // idő mérés
  int now = glutGet(GLUT_ELAPSED_TIME);
  float dt = (now - lastTime) / 1000.0f;
  lastTime = now;
  // labda mozgatás
  position += dt * velocity;
  // ha a labda kiért a képernyőből
  // ...
  glutPostRedisplay();
}

A glutGet(GLUT_ELAPSED_TIME) kérdezi le a program indítása óta eltelt időt ezredmásodpercben. Ebből kivonjuk az utolsó lekérdezés idejét (lastTime), majd osztjuk 1000-el, így megkapjuk az előző onIdle() hívás óta eltelt időt másodpercben. Végül a lastTime változót frissítjük a mostani idővel.

Az eltelt idő, és a labda sebessége alapján frissítjük a labda pozícióját, majd megkérjük a rendszert, hogy frissítse az ablak tartalmát (glutPostRedisplay()). Így az alkalmazás eseménysorába bekerül az ablak újrarajzolását kiváltó esemény, és meghívódik az onDisplay() függvény. Közvetlenül is meg lehetne hívni az onDisplay()-t a glutPostRedisplay() helyett, de ez problémákhoz vezethet, ha egy bonyolult grafikánál az onDisplay() sokáig futna.

Azonban egy idő után a labda kiér a képernyőből. Ilyenkor a labdát vissza kellene rakni a képernyő közepére, majd egy véletlenszerű irányba elindítani.

// ha a labda kiért a képernyőből
if (position.x <= 0.0f || position.x >= windowWidth ||
    position.y <= 0.0f || position.y >= windowHeight)
{
  position.x = windowWidth / 2.0f;
  position.y = windowHeight / 2.0f;
  float length = 200.0f * randomFloat(0.5f, 1.0f);
  float angle = 2.0f * M_PI * randomFloat();
  velocity.x = length * cosf(angle);
  velocity.y = length * sinf(angle);
}

A randomFloat() függvény egy minimum és egy maximum érték között visszaad egy véletlen számot.

float randomFloat(float minValue = 0.0f, float maxValue = 1.0f)
{
  float randomBetween0and1 =
      static_cast<float>(rand()) / static_cast<float>(RAND_MAX);
  return minValue + randomBetween0and1 * (maxValue - minValue);
}
#define _USE_MATH_DEFINES
#include <cmath>
#include <cstdlib>
#include <ctime>
#include <GL/glut.h>
void onInit()
{
  srand(time(NULL));
  glClearColor(0.1f, 0.2f, 0.3f, 1.0f);
  glShadeModel(GL_SMOOTH);
  glEnable(GL_DEPTH_TEST);
  lastTime = glutGet(GLUT_ELAPSED_TIME);
}

Az onInit()-ben a véletlenszám generátor inicializálása, és az OpenGL működésének beállítása mellett még beállítjuk az eltelt idő számításánál használt lastTime változó kezdő értékét is.

Végül már csak a labdát kell a megfelelő helyre rajzolni, illetve az ablak átméretezésekor az ablak méreteit eltárolni a windowWidth, windowHeight változókban, hogy a következő labda indításkor is középről induljon a labda.

void onDisplay()
{
 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
 // kör rajzolás
 glLoadIdentity();
 glTranslatef(position.x, position.y, 0.0f);
 drawCircle(50.0f, 64);
 // négyszög rajzolás
 //...
 glFinish();
}
void onResize(int width, int height)
{
 windowWidth = static_cast<float>(width);
 windowHeight = static_cast<float>(height);
 glViewport(0, 0, width, height); // viewport állítás
 // ...
}

Így elértük, hogy mozogjon a képernyőn a labda. Ebből egy mozzanat látható az alábbi képernyőképen.

Dupla pufferelés
4.27. ábra - Dupla pufferelés


int main(int argc, char* argv[])
{
  glutInit(&argc, argv);
  glutInitWindowSize(640, 480);
  glutInitWindowPosition(0, 0);
  glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
  glutCreateWindow(”Hello Circle”);
  //...
}
void onDisplay()
{
  //...
  glutSwapBuffers(); // glFinish helyett
}

Az alábbi CLI példa perspektívában forgó, csúszkával nagyítható kockát rajzol. A

static GLfloat z=30;
static GLfloat aspect=1;
static GLfloat szog=0;
int meret;

globális változók a zoom érték (z) az arány (aspect) és a szög (szog), illetve az ablakméret (meret). Az átméretezés esemény beállítja a méret értékei.

private: System::Void Form1_Resize(System::Object^  sender,
                                System::EventArgs^  e) {
    meret=min(this->Width,this->Height);
    glViewport((this->Width-meret)/ 2, (this->Height-meret) / 2 ,
     meret, meret);
    Invalidate();
    Refresh();
}

Az időzítő forgat:

private: System::Void timer1_Tick(System::Object^  sender,
                            System::EventArgs^  e) {
    szog+=5;
    Invalidate();
    Refresh();
}

A csúszkával a nagyítás állítható:

private: System::Void Zoom_Scroll(System::Object^  sender,
                System::Windows::Forms::ScrollEventArgs^  e) {
    z=Zoom->Value;
    Refresh();
}

Végül minden kirajzolást a Paint esemény végez:

private: System::Void Form1_Paint(System::Object^  sender,
                System::Windows::Forms::PaintEventArgs^  e) {
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(z, 1, 1.0, 20.0);
    meret=min(this->Width,this->Height);
    glViewport((this->Width-meret) / 2, (this->Height-meret) / 2 ,
            meret, meret);
    glClearColor(0.5,0.5,0.5,1);
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0, -2.0, -15.0);
    glRotated(szog,0,1,0);
    glColor3f(1.0, 0.0, 0.0);
    glBegin(GL_POLYGON);
        glVertex3f(1.0, 1.0, 1.0);
        glVertex3f(-1.0, 1.0, 1.0);
        glVertex3f(-1.0, -1.0, 1.0);
        glVertex3f(1.0, -1.0, 1.0);
    glEnd();
    glColor3f(0, 1.0, 0.0);
    glBegin(GL_POLYGON);
        glVertex3f(1.0, 1.0, 3.0);
        glVertex3f(-1.0, 1.0, 3.0);
        glVertex3f(-1.0, -1.0, 3.0);
        glVertex3f(1.0, -1.0, 3.0);
    glEnd();
    glColor3f(0, 0.0, 1.0);
    glBegin(GL_POLYGON);
        glVertex3f(1.0, 1.0, 1.0);
        glVertex3f(1.0, 1.0, 3.0);
        glVertex3f(1.0, -1.0, 3.0);
        glVertex3f(1.0, -1.0, 1.0);
    glEnd();
    glColor3f(1.0, 1.0, 0.0);
    glBegin(GL_POLYGON);
        glVertex3f(-1.0, 1.0, 1.0);
        glVertex3f(-1.0, 1.0, 3.0);
        glVertex3f(-1.0, -1.0, 3.0);
        glVertex3f(-1.0, -1.0, 1.0);
    glEnd();
    glColor3f(1.0, 0.0, 1.0);
    glBegin(GL_POLYGON);
        glVertex3f(-1.0, 1.0, 1.0);
        glVertex3f(-1.0, 1.0, 3.0);
        glVertex3f(1.0, 1.0, 3.0);
        glVertex3f(1.0, 1.0, 1.0);
    glEnd;
    glColor3f(0.0, 1.0, 1.0);
    glBegin(GL_POLYGON);
        glVertex3f(-1.0, -1.0, 1.0);
        glVertex3f(-1.0, -1.0, 3.0);
        glVertex3f(1.0, -1.0, 3.0);
        glVertex3f(1.0, -1.0, 1.0);
    glEnd();
    glFlush();
}

Forgó perspektivikus kocka
4.28. ábra - Forgó perspektivikus kocka


4.6.6. A glu segédkönyvtár térbeli alapobjektumai

A segédkönyvtár lehetővé teszi, hogy olyan egyszerű térbeli felületeket hozzunk létre, mint a gömb, a tárcsa, a henger.

A létrehozáshoz deklarálni kell egy (GLUquadricObj típusra mutató) felületobjektum-pointert:

GLUquadricObj *quadObj;

Ezek után létrehozhatjuk az új felületobjektumot a

quadObj = gluNewQuadric ();

hívással. A felületeket az

(4.3)

egyenlet definiálja.

Az alapállapotban kifestett módon megjelenő felületek színét a már ismert színbeállítással lehet megadni. A térbeli felületeket a rendszer poligonokkal közelíti, ezért az elemek létrehozásakor meg kell adnunk a felosztások számát két független felületi irányban.

Középen lyukas lemezt hozhatunk létre az X-Y síkban az origó körül a

void gluDisk(GLUquadricObj *qobj, GLdouble innerRadius,
 GLdouble outerRadius, GLint slices, GLint loops );

függvénnyel. A függvény paraméterei a létrehozott felületobjektum (*qobj), a belső- (innerRadius) és a külső sugár (outerRadius). Megadhatjuk azt is, hogy a lemez hány cikkből (slices) és hány gyűrűből (loops) álljon.

A

void gluPartialDisk(GLUquadricObj *qobj, GLdouble innerRadius,
   GLdouble outerRadius, GLint slices,
   GLint loops,
   GLdouble startAngle, GLdouble sweepAngle);

egy fokokban megadott kezdőszög (startAngle) és a középponti szög (sweepAngle) paraméterrel jellemzett lemezcikket hoz létre.

Gömbfelületet készíthetünk az origó körül a

void gluSphere(GLUquadricObj *qobj, GLdouble radius, GLint slices, GLint stacks);

függvénnyel. A radius a sugarat a slices és a stacks a szélességi és hosszúsági körök számát határozza meg.

A

void gluCylinder(GLUquadricObj *qobj,
   GLdouble baseRadius, GLdouble topRadius,
   GLdouble height, GLint slices, GLint stacks);

függvény nevével ellentétben csonkapúpot (felfogható általánosított hengerfelületnek) készít. Az alapkör középpontja az origó, sugara a baseRadius. A +Z irányú kúp magassága height, a fedőlap sugara pedig topRadius. A slices és a stacks a felosztások száma.

Ha már nincs szükségünk a létrehozott objektumra megszüntethetjük a

void gluDeleteQuadric(quadObj);

függvény hívásával, melynek argumentuma az objektumra mutató pointer.

Gondoskodhatunk a térbeli objektumok megjelenítéséről is a felületobjektumok tulajdonságainak beállításával.

Az első és hátsó oldal szempontjából a sokszögekhez hasonló a helyzet a felületi elemek esetében. Az alábbi függvénnyel beállíthatjuk, hogy a felületi objektumnak melyik legyen az első felülete:

void gluQuadricOrientation (GLUquadricObj *qobj,
   GLenum orientation);

A paraméterként megadott orientation lehetséges értékei GLU_OUTSIDE és GLU_INSIDE lehetnek. A különböző felületi elemek esetén persze másképpen értelmezhető a külső és belső oldal.

A felületi elemeket határoló sokszögek kifestési módját a

void gluQuadricDrawStyle(GLUquadricObj *qobj, GLenum drawStyle);

függvénnyel állíthatjuk be. A gobj által mutatott elemre vonatkozó beállítások a (a drawstyle lehetséges értékei GLU_FILL - a kifestett poligonok az irányítottságot meghatározó normálvektor szerint kerülnek a képre, GLU_LINE - a felületek foltjaik határvonalával jelennek meg, GLU_SILHOUETTE - a felületfoltok határvonalai jelennek meg, ha a kapcsolódó felületfoltok nem párhuzamosak, GLU_POINT - a felület csúcspontokkal jelenik meg.

Poligonoknál is használhatunk kifestési mintázatot, amelyet a glEnable(GL_POLYGON_STIPPLE); hívással engedélyezünk, és a

void glPolygonStipple(const GLubyte *mask);

függvénnyel definiálunk. A mask paraméter egy 32*32-bites kétszínű bitkép.

Ha az előző fejezet végén a forgó kocka rajz Paint eseményében a kocka helyett gömböt, hengert, kúpot és poligont rajzolunk, kipróbálhatjuk a glu objektumok rajzolását is (4.29. ábra - A glu elemek).

private: System::Void Form1_Paint(System::Object^  sender,
System::Windows::Forms::PaintEventArgs^  e) {
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(z, 1, 1.0, 20.0);
    meret=min(this->Width,this->Height);
    glViewport((this->Width-meret) / 2, (this->Height-meret) / 2 , meret, meret);
    glClearColor(0.5,0.5,0.5,1);
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0, -1.0, -15.0);
    glRotated(szog,0,1,0);
    GLUquadricObj *quadObj_gomb;
    quadObj_gomb = gluNewQuadric ();
    glColor3f(1,0,0);
    gluQuadricDrawStyle (quadObj_gomb, GLU_LINE);
    gluSphere (quadObj_gomb, 1.5, 16, 16);       
    gluDeleteQuadric(quadObj_gomb);
    glColor3f(0,1,0);
    GLUquadricObj *quadObj_henger;
    quadObj_henger = gluNewQuadric ();
    gluQuadricDrawStyle (quadObj_henger, GLU_FILL);
    gluCylinder(quadObj_henger, 0.3, 0.0, 0.6, 15, 10);
    gluDeleteQuadric(quadObj_henger);
    glColor3f(0,0,1);
    glPushMatrix ();
    glRotatef ((GLfloat)90.0, (GLfloat)1.0, (GLfloat)0.0, (GLfloat)0.0);
    glTranslatef ((GLfloat)0.0, (GLfloat)0.0, (GLfloat)-1.0);
    GLUquadricObj *quadObj_kup;
    quadObj_kup = gluNewQuadric ();
    gluQuadricDrawStyle (quadObj_kup, GLU_FILL);
    gluCylinder (quadObj_kup, 0.3, 0.3, 0.6, 12, 2);
    gluDeleteQuadric(quadObj_kup);
    glPopMatrix ();
    glPolygonMode(GL_FRONT_AND_BACK , GL_FILL);
    glColor3f(1,1,0);
    glBegin(GL_POLYGON);
        glVertex3f(0.5, 0.5, 1.0);
        glVertex3f(-0.5, 0.5, 1.0);
        glVertex3f(-0.5, -0.5, 1.0);
        glVertex3f(0.5, -0.5, 1.0);
    glEnd();
    glFlush();
    SwapBuffers(m_hDC);
}

A glu elemek
4.29. ábra - A glu elemek


4.6.6.1. Szabad formájú görbék és felületek

Többféle görbét és felületet is használhatunk.

4.6.6.2. Bezier görbék és felületek

Az OpenGL a tartópontok által meghatározott Bezier-görbék és -felületek kiszámolt pontjainak használatát is lehetővé teszi.

A 3.3.5. szakasz - Bezier-féle harmadfokú görbeszakasz fejezetben megismertek alapján tetszőleges [u1, u2] intervallumra könnyen felírható a Bezier-görbe. Az OpenGL az alábbi függvényeket kínálja az interpoláció végzésére:

void glMap1d(GLenum target, GLdouble u1, GLdouble u2,
             GLint stride, GLint order, const GLdouble *points);
void glMap1f(GLenum target, GLfloat u1, GLfloat u2,
             GLint stride, GLint order, const GLfloat *points);

A függvények target paramétere (GL_MAP1_VERTEX_3, GL_MAP1_VERTEX_4) szabályozza, hogy 3 vagy négy dimenzióban dolgozunk. Az u1, u2 a paramétertartományt jelöli ki. A stride paraméter az egy ponthoz tartozó valós adatok számát jelzi, az order pedig a közelítő polinom fokszámát rögzíti. A pont adatokat a points mutató által jelzett tömbben kell elhelyezni.

Az így definiált görbe pontjait használhatjuk kirajzolásra a glBegin(GL_LINRSTRIP) és a glEnd() hívások között megadott pontokkal. Azonban a pontokat nem a glVertex() függvények, hanem a glEvalCoords1típus() függvényekkel kell meghatározni.

A kijelölt interpoláció alapján a görbe tetszőleges u[u1,u2] paraméterhez tartozó pontját a (glEnable(GL_MAP1_VERTEX_3), vagy a glEnable(GL_MAP1_VERTEX_4)) vagy akár a normálisát (glEnable(GL_MAP1_NORMAL)) a

void glEvalCoord1d (GLdouble u);
void glEvalCoord1f (GLfloat u);

függvényekkel számíthatjuk.

Az alábbi példában a GLUT onDisplay() függvénye egy síkbeli Bezier görbét és tartópontjait rajzolja.

void onDisplay()
{
    glClear(GL_COLOR_BUFFER_BIT );
    GLfloat ctrlpoints[4][3] = {{ -0.8, -0.8, 0.0}, { -0.4, 0.8, 0.0},
                        {0.4, -0.8, 0.0}, {0.8, 0.8, 0.0}};
    glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, (GLfloat*)&ctrlpoints[0][0]);
    glEnable(GL_MAP1_VERTEX_3);
    glColor3f(1.0, 0.0, 0.0);
    glLineWidth(2.0);
    glBegin(GL_LINE_STRIP);
    for (int i = 0; i <= 30; i++)
        glEvalCoord1f((GLfloat) i/30.0);
    glEnd();
    glPointSize(4);
    glColor3f(0.0, 1.0, 0.0);
    glBegin(GL_POINTS);
    for (int i = 0; i < 4; i++)
        glVertex3fv((GLfloat*)&ctrlpoints[i][0]);
    glEnd();
    glFinish();
}

A Bezier görbe
4.30. ábra - A Bezier görbe


A görbékhez hasonlóan járhatunk el Bezier-felületek esetén.

A két paraméteren történő interpolációhoz az alábbi függvényeket használhatjuk:

void glMap2d(GLenum target, GLdouble u1, GLdouble u2,
 GLint ustride, GLint uorder,
 GLdouble v1, GLdouble v2,
 GLint vstride, GLint vorder,
 const GLdouble *points);
void glMap2f(GLenum target, GLfloat u1, GLfloat u2,
 GLint ustride, GLint uorder,
 GLfloat v1, GLfloat v2,
 GLint vstride, GLint vorder,
 const GLfloat *points);

Hasonlóan a görbékhez, attól függően, hogy a glEnable() függvény paramétereként a GL_MAP2_VERTEX_3, GL_MAP2_VERTEX_4 vagy a GL_MAP2_NORMAL értéket adjuk meg a

void WINAPI glEvalCoord2f( GLfloat u, GLfloat v);
void WINAPI glEvalCoord2d( GLdouble u, GLdouble v);

függvényeket használhatjuk kirajzoláskor a felületi görbék csúcspontjai helyett.

Ha 4.6.6. szakasz - A glu segédkönyvtár térbeli alapobjektumai fejezetben látható (quadric elemeket forgató) példa Paint eseményét az alábbira cseréljük, akkor Bezier-felületek paramétervonalait rajzoljuk ki.

private: System::Void Form1_Paint(System::Object^  sender,
                    System::Windows::Forms::PaintEventArgs^  e) {
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(z, 1, 1.0, 20.0);
    meret=min(this->Width,this->Height);
    glViewport((this->Width-meret) / 2, (this->Height-meret) / 2 , meret, meret);
    glClearColor(0.5,0.5,0.5,1);
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0, -1.0, -15.0);
    glRotated(szog,0,1,0);
    GLfloat ctrlpoints[4][4][3] = {{{-1.5, -1.5, 4.0}, {-0.5, -1.5, 2.0},
                     {0.5, -1.5, -1.0}, {1.5, -1.5, 2.0}},
                     {{-1.5, -0.5, 1.0}, {-0.5, -0.5, 3.0},
                     {0.5, -0.5, 0.0}, {1.5, -0.5, 1.0}},
                     {{-1.5, 0.5, 4.0}, {-0.5, 0.5, 0.0},
                     {0.5, 0.5, 3.0}, {1.5, 0.5, 4.0}},
                     {{-1.5, 1.5, 2.0}, {-0.5, 1.5, 2.0},
                     {0.5, 1.5, 0.0}, {1.5, 1.5, 1.0}}
};
    glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4,0, 1, 12, 4,
           (GLfloat*)&ctrlpoints[0][0][0]);
    glEnable(GL_MAP2_VERTEX_3);
    glMapGrid2f(20, 0.0, 1.0, 20, 0.0, 1.0);
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glColor3f(1.0, 0.0, 0.0);
    glLineWidth(2);
    for (int j = 0; j <= 8; j++) {
        glBegin(GL_LINE_STRIP);
            for (int i = 0; i <= 30; i++)
                glEvalCoord2f((GLfloat)i/30.0, (GLfloat)j/8.0);
        glEnd();
        glBegin(GL_LINE_STRIP);
            for (int i = 0; i <= 30; i++)
                glEvalCoord2f((GLfloat)j/8.0, (GLfloat)i/30.0);
            glEnd();
}
    glFlush();
    SwapBuffers(m_hDC);
}

A Bezier felület
4.31. ábra - A Bezier felület


4.6.6.3. A glu NURBS görbéi és felületei

A 3.3.8.3. szakasz - Interpoláció B-Spline görbékkel és 3.3.8.4. szakasz - Racionális, nem egyenközű B-spline (Non-Uniform Rational B-Spline - NURBS) fejezetben megismert B-spline és NURBS görbék és felületek is megjeleníthetők.

A segédprogramok könyvtára a NURBS-görbék és -felületek létrehozását egyaránt támogatja. A Bezier-elemekkel ellentétben görbe-, vagy felületobjektum létrehozásakor nem kell törődnünk az interpolált pontok alapján történő megjelenítéssel. A NURBS-objektumot a

GLUnurbsObj* gluNewNurbsRenderer (void);

függvény hívásával hozhatunk létre. Ha már nincs szükség rá, az objektumot az alábbi függvénnyel törölhetjük:

void gluDeleteNurbsRenderer (GLUnurbsObj *nobj);

Ha görbét szeretnénk létrehozni, annak adatait a

void gluBeginCurve( GLUnurbs *nobj);

és a

void gluEndCurve( GLUnurbs *nobj);

a felület adatait pedig a

void gluBeginSurface( GLUnurbs *nobj);

és a

void gluEndSurface( GLUnurbs *nobj);

függvények hívásai között kell megadnunk.

NURBS-görbe adatainak megadása a

void gluNurbsCurve (GLUnurbsObj *nobj,
   GLint nknots, GLfloat *knot, GLint stride,
   GLfloat *ctlarray,
   GLint order, GLenum type);

függvénnyel történik. A paraméterek közül az nobj az objektumot azonosítja. NURBS-elemek esetén a nem egységes paraméterezést úgy valósíthatjuk meg, hogy a paraméterintervallumon a tartópontok számához a közelítés fokát hozzáadjuk, és ennek megfelelő számban nem csökkenő értékű csomópontsort hozunk létre. A knots a csomópontok számát tartalmazza a knot pedig a csomóponttömbre mutat. A stride az egy vezérlőponthoz tartozó adatok száma, míg a ctrlarray a tartópontok koordinátáit tartalmazó tömbre mutat. Az order a közelítés fokszáma +1, a type pedig a már ismert GL_MAP1_VERTEX_3 és GL_MAP1_VERTEX_4 értékek közül valamelyik.

Mivel a NURBS-felület kétparaméteres, ezért mindkét paraméterirányba meg kell adni az adatokat:

void gluNurbsSurface (GLUnurbsObj *nobj,
GLint uknot_count, GLfloat *uknot,
GLint vknot_count, GLfloat *vknot,
GLint u_stride, GLint v_stride,
GLfloat *ctlarray,
GLint uorder, GLint vorder, GLenum type);

a type pedig a már ismert GL_MAP2_VERTEX_3 és GL_MAP2_VERTEX_4 értékek közül valamelyik.

A NURBS-felületeknek nem kell négyzet topológiával rendelkezniük, levághatjuk a széleket a gluBegintTrim() és a gluEndTrim() függvények hívása között megadott zárt görbével. A gluNurbsCurve()függvény első (nobj) paramétere a létrehozott NURBS-objektumra mutató pointer A vágáshoz a gluPwlCurve() függvényt használhatjuk, amely a paramétertér pontjaival definiálja a vágást. Ilyen esetben csak a GLU_MAP1_TRIM_2, és a GLU_MAP1_TRIM_3 használható a type paraméterben.

A

void gluNurbsProperty( GLUnurbs *nobj,
             GLenum property,  GLfloat value);

függvény a NURBS megjelenítési módját szabályozza. A nobj paraméter a NURBS-t azonosítja, a property a megjelenítési beállítást tartalmazza, ha GLU_DISPLAY_MODE, akkor a value - GLU_FILL –kitöltés, GLU_OUTLINE_PATCH körvonal, GLU_OUTLINE_POLYGON – megjelenítő poligonok körvonala. Ha például a property GLU_U_STEP, vagy GLU_V_STEP, akkor a value a felosztást szabályozza (100 az alapérték).

A glu objektumok felületi normálisainak beállításával a megjelenítés minősége állítható. A

void gluQuadricNormals(GLUquadric *quadObject,GLenum normals);

függvénnyel a megadott objektumra (quadObject) beállíthatjuk az felületi normálisok megadásának módját. A normals paraméter értékei (GLU_NONE nincs normális megadva, GLU_FLAT -felületdarabonként egy normális, GLU_SMOOTH – minden vertexnél egy normális).

Az alábbi példában NURBS felületként készítünk Bezier felületet. A 4.6.2. szakasz - A geometriai objektumok és megjelenítési módjaik fejezet példájában csak a Paint eseményt cseréljük.

private: System::Void Form1_Paint(System::Object^  sender,
                    System::Windows::Forms::PaintEventArgs^  e) {
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(z, 1, 1.0, 20.0);
    meret=min(this->Width,this->Height);
    glViewport((this->Width-meret) / 2, (this->Height-meret) / 2 ,
            meret, meret);
    glClearColor(0.5,0.5,0.5,1);
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0, -1.0, -15.0);
    glRotated(szog,0,1,0);
    GLfloat ctrlpoints[4][4][3] = {{{-1.5, -1.5, 4.0}, {-0.5, -1.5, 2.0},
                        {0.5, -1.5, -1.0}, {1.5, -1.5, 2.0}},
                        {{-1.5, -0.5, 1.0}, {-0.5, -0.5, 3.0},
                        {0.5, -0.5, 0.0}, {1.5, -0.5, 1.0}},
                        {{-1.5, 0.5, 4.0}, {-0.5, 0.5, 0.0},
                        {0.5, 0.5, 3.0}, {1.5, 0.5, 4.0}},
                        {{-1.5, 1.5, 2.0}, {-0.5, 1.5, 2.0},
                        {0.5, 1.5, 0.0}, {1.5, 1.5, 1.0}}
    };
    GLfloat csp[8]={0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0};
    glColor3f(1,1,0);
    GLUnurbsObj * nurbs;
    gluNurbsProperty (nurbs, GLU_DISPLAY_MODE,GLU_OUTLINE_POLYGON);
    nurbs=gluNewNurbsRenderer();
    gluBeginSurface(nurbs);
    gluNurbsSurface(nurbs,        // az objektum
            8,csp,        // az u-irányú csomópontok
            8,csp,        // az v-irányú csomópontok
            4*3,        // két u-ir. szomszédos pont
                    // távolsága a tömbben
            3,        // két v-ir. szomszédos pont
                    // távolsága a tömbben
            (GLfloat*)&ctrlpoints[0][0][0],
            // a pontokat tároló tömb
            4,4,        // a spline fokszám+1 u,v irányban
            GL_MAP2_VERTEX_3    // háromdimenziós csúcspontok
        );
    gluEndSurface(nurbs);
    glFlush();
    SwapBuffers(m_hDC);
}

A Bezier felület
4.32. ábra - A Bezier felület


4.6.6.4. Listák

A fejezet elején, a megjelenítési cső tárgyalásakor láttuk, hogy objektumokból listát készíthetünk, amelyet aztán egyetlen objektumként jeleníthetünk meg. A lista létrehozása a

void glNewList (GLuint list, GLenum mode);

függvény hívásával történik. Az (egész típusú) list paraméter egyértelműen azonosítja a listát. A mode paraméter meghatározza, hogy a hívást követően a listaelemek (primitívek) csak hívásukkal (GL_COMPILE), vagy végrehajtva (kirajzolva) kerüljenek a listába (GL_COMPILE_AND_EXECUTE).

A listát a

void glEndList(void);

függvény hívásával zárjuk.

A lista „lejátszható” (megjeleníthető), ha a

void glCallList(GLuint list);

függvény egyetlen argumentumaként (list) a lista azonosítóját adjuk meg.

Az alábbi példában egy piros gömböt és egy sárga lemezcikket tartalmazó listát készítünk a form betöltésekor:

private: System::Void Form1_Load(System::Object^  sender,
                            System::EventArgs^  e) {
    hwnd=(HWND)this->Handle.ToInt32();
    m_hDC = GetDC(hwnd);
    if(m_hDC) {
        MySetPixelFormat(m_hDC);
    }
    GLUquadricObj *quadObj;
    glNewList(1, GL_COMPILE);
        quadObj = gluNewQuadric ();
        gluQuadricDrawStyle (quadObj, GLU_LINE);
        glColor3f(1,0,0);
        gluSphere (quadObj, .5, 16, 16);
        glColor3f(1,1,0);
        gluPartialDisk(quadObj, .3,.6,20,20,90,180);
        gluDeleteQuadric(quadObj);
    glEndList();
    gluDeleteQuadric(quadObj);
}

A Paint eseményben csak a (4.6.6. szakasz - A glu segédkönyvtár térbeli alapobjektumai fejezetben látható, a quadric elemeket forgató példának megfelelő) forgatás, a kameraállítás és a lista kirajzolása történik.

private: System::Void Form1_Paint(System::Object^ sender,
                System::Windows::Forms::PaintEventArgs^ e){
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(z, 1, 1.0, 20.0);
    meret=min(this->Width,this->Height);
    glViewport((this->Width-meret) / 2, (this->Height-meret) / 2 , meret, meret);
    glClearColor(0.5,0.5,0.5,1);
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    glTranslatef(0.0, 0.0, -15.0);
    glRotated(szog,0,1,0);
    glCallList(1);
    glFlush();
    SwapBuffers(m_hDC);
}

A Bezier felület
4.33. ábra - A Bezier felület


4.6.7. Áttetsző anyagok, az RGBA színmodell használata

Ha a megjelenítési kapcsolatban az RGBA színmodellt használjuk (PFD_TYPE_RGBA), akkor a felületek áttetsző módon jelenhetnek meg. Az OpenGL úgy készít áttetsző felületet, hogy a pont színének meghatározásakor az adott pixelen már definiált színt is figyelembe veszi.

Az áttetsző megjelenítéshez engedélyeznünk kell a már kirajzolt és a rajz színének keverését a glEnable(GL_BLEND) hívással. Letilthatjuk a glDisable(GL_BLEND) hívással.

Azt, hogy a megjelenítendő objektum színe és az adott pixelre már betöltött szín milyen módon keveredik, a

void glBlendFunc( GLenum sfactor, GLenum dfactor);

függvény paramétereivel szabályozhatjuk. Arról van szó, hogy szorzófaktorokat definiálunk színenként a megjelenítendő (forrás - source - sfactor) színkomponensekre (Sr,Sg,Sb,Sa) és a már pixelen lévő (cél - destination - dfactor) színkomponensekre (Dr,Dg,Db,Da). Ha a megjelenítendő szín (Rs,Gs,Bs,As), és a pixel már kifestett színe (Rd,Gd,Bd,Ad), akkor a végső RGBA színdefiníció az alábbi kifejezés szerint adódik:

RGBA=( Rs * Sr + Rd * Dr , Gs * Sg + Gd * Dg , Bs * Sb + Bd * Db , As * Sa + Ad * Da )

Az S és D faktorok lehetséges értékei:

GL_ZERO

(0,0,0,0)

GL_ONE

(1,1,1,1)

GL_DST_COLOR

(Rd,Gd,Bd,Ad)

GL_SRC_COLOR

(Rs,Gs,Bs,As)

GL_ONE_MINUS_DST_COLOR

(1,1,1,1) - (Rd,Gd,Bd,Ad)

GL_ONE_MINUS_SRC_COLOR

(1,1,1,1) - (Rs,Gs,Bs,As)

GL_SRC_ALPHA

(As, As, As, As)

GL_ONE_MINUS_SRC_ALPHA

(1,1,1,1) - (As, As, As, As)

GL_DST_ALPHA

(Ad, Ad, Ad, Ad)

GL_ONE_MINUS_DST_ALPHA

(1,1,1,1) - (Ad, Ad, Ad, Ad)

GL_SRC_ALPHA_SATURATE

(f, f, f, f ) ahol f=min(As , 1- Ad)

Az alábbi

void glAlphaFunc(GLenum func, GLclampf ref );

függvénnyel előírhatjuk, hogy a fenti összevetést az alpha értékek függvényében hogyan használjuk. Az első paraméter az összevetés módját (GL_NEVER - soha, GL_ALWAYS – mindig, GL_LESS – kisebb, GL_GREATER nagyobb), a második pedig a küszöbértéket szabályozza. Alapértelmezés szerint az összevetés ki van kapcsolva.

Az alábbi példában a forgó kocka színeit áttetszőnek definiáljuk. Az áttetszőséget az alpha csúszkával szabályozhatjuk. Ilyenkor a PIXELFORMATDESCRIPTOR iPixelType adattagja PFD_TYPE_RGBA kell, legyen.

private: System::Void Form1_Paint(System::Object^  sender,
                System::Windows::Forms::PaintEventArgs^  e) {
glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(z, 1, 1.0, 20.0);
    meret=min(this->Width,this->Height);
    glViewport((this->Width-meret) / 2, (this->Height-meret) / 2 , meret, meret);
    glClearColor(0.5,0.5,0.5,1);
    glEnable(GL_DEPTH_TEST);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
    glTranslatef(0.0, -2.0, -15.0);
    glRotated(szog,0,1,0);
    // A színkeverés (alpha) figyelembevétele
    glEnable (GL_BLEND);
    // Az RGBA szinmodellben a rajzolt lapok alpha faktorát használjuk
    glBlendFunc (GL_SRC_ALPHA, GL_ONE);
    // Az alpha értéket a csúszka poziciója változtatja
float alp=(float)alpha->Value/alpha->Maximum;
    glColor4f(0,0,1,alp);
    glBegin(GL_POLYGON);
        glVertex3f(1.0, 1.0, 1.0);
        glVertex3f(-1.0, 1.0, 1.0);
        glVertex3f(-1.0, -1.0, 1.0);
        glVertex3f(1.0, -1.0, 1.0);
    glEnd();
    // Az összes lapra hasonlóan
…
    glFlush();
    SwapBuffers(m_hDC);
}

RGBA színek
4.34. ábra - RGBA színek


4.6.8. Megvilágítások

A térben elhelyezett felületi objektumokat megvilágíthatjuk, illetve megadhatjuk, hogyan verik vissza a fényt.

Ha a fényforrásokat engedélyezni szeretnénk, akkor a glEnable(GL_LIGHTING) függvényhívást kell alkalmaznunk.

Legfeljebb 8 fényforrást definiálhatunk GL_LIGHT0-GL_LIGHT7-ig sorszámozva, melyek közül a GL_LIGHT0-nak kitüntetett szerepe van. A fényforrások adatait az alábbi függvényekkel állíthatjuk be:

void glLightf (GLenum light, GLenum pname,GLfloat param );
void glLighti (GLenum light, GLenum pname,GLint param );
void glLightfv (GLenum light,GLenum pname,const GLfloat *params);
void glLightiv (GLenum light,GLenum pname,const GLint *params );

Mint ismeretes azokat a függvényeket, amelyek az i típusjelzőt hordozzák nevükben int adatokkal hívjuk, míg az f típusjelző float adatokra utal. Vannak olyan fényforrás beállítások, melyeket több adat is jellemez. Ilyenkor a jellemzők tömbjét használjuk argumentumként, ha a v típusjelzőt hordozó nevű függvényt hívjuk.

A függvények light paramétere a fényforrás sorszámát. a pname paraméter pedig a fényforrás típusát, illetve a fényforrást definiáló adat típusát rögzíti.

GL_AMBIENT

Négy paraméter a környezeti szórt fény RGBA intenzitását definiálja. Az alapérték (0,0,0,1.0).

GL_DIFFUSE

Négy paraméter a sugárzó fény RGBA intenzitását adja. Az alapérték a GL_LIGHT0 esetén (1.0, 1.0, 1.0, 1.0), különben (0, 0, 0, 1.0).

GL_SPECULAR

A négy paraméter a tükröződő fény RGBA intenzitása. Az alapérték a GL_LIGHT0 esetén (1.0, 1.0,1.0, 1.0), különben (0,0, 0,1.0).

GL_POSITION

A fényforrás homogén-koordinákban megadott térbeli helye. A négy paraméter alapértéke (0, 0, 1.0, 0).

GL_SPOT_DIRECTION

A fényforrás térkoordinátákban megadott iránya. A három koordináta alap­értéke (0, 0, -1.0).

GL_SPOT_EXPONENT

A fényforrás fókuszáltsága, azaz mennyivel csökken a visszaverődés intenzitása a beesési merőlegestől távolodva. A paraméter értéke 0-128 között kell, hogy legyen. Minél nagyobb az érték, annál inkább fókuszált a fény. Az alapérték 0.

GL_SPOT_CUTOFF

A megvilágítás terjedési szöge fokokban. A paraméter alapértéke 180.

GL_CONSTANT_ATTENUATION

GL_LINEAR_ATTENUATION

GL_QUADRATIC_ATTENUATION

A fényforrás távolsággal való intenzítás-csökkenése egy másodfokú polinom reciprokaként változik.

f=1/(c+l*d+q*d2)

A megadható paraméterek: a konstans (c), a lineáris (l) és a másodfokú tag (q) együtthatója. Az alap­értékek (1, 0, 0).

A megvilágítási modell paramétereit az alábbi egész vagy valós, egyparaméteres vagy paramétervektort alkalmazó függvényekkel is beállíthatjuk:

void glLightModelf (GLenum pname, GLfloat param);
void glLightModeli (GLenum pname, GLint param);
void glLightModelfv (GLenum pname, const GLfloat *params);
void glLightModeliv (GLenum pname, const GLint *params);

A paraméterek értelmezése:

GL_LIGHT_MODEL_AMBIENT

A négy paraméter a teljes modell szórt megvilágításának [0,1.0] közti RGBA értékét definiálja. Az alapérték (0.2, 0.2, 0.2, 1.0)

GL_LIGHT_MODEL_LOCAL_VIEWER

Egyetlen egész, vagy valós paraméter szabályozza, hogyan használja a rendszer ránézési irányt. 0 esetén a ránézési irány a –Z-tengely, egyébként a kamerát és az aktuális pontot összekötő egyenes. Az alapérték 0.

GL_LIGHT_MODEL_TWO_SIDE

Egyetlen egész, vagy valós paraméter szabályozza, hogy a felületek megvilágításakor egy vagy két oldalt vegyen figyelembe a rendszer. Az alapérték 0.

Érdemes megjegyezni, hogy akár ködös képet is ké­szíthetünk a glEnable(GL_FOG) hívással. A glFogi(), glFogf(), glFogiv() és a glFogfv() függvényeket használhatjuk a köd paramétereinek beállítására.

4.6.9. Anyagok

A felületek megjelenése nemcsak a megvilágítás tulajdonságaitól függ, hanem attól is, milyen „anyagtulajdonságai” vannak a megvilágított felületeknek.

A felületek normálisának fontos szerepe van a felületek oldalainak megkülönböztetésében, illetve a visszaverődés adatainak számításakor. A felületelem definiálásakor - a glBegin() és a glEnd() között - az aktuális elem normálvektora beállítható glNormal3típus() függvényekkel a vektor három koordinátáját megadva, illetve a glNormal3típusv() függvényekkel, melyek paramétere a normálvektort tartalmazó tömb kezdőcíme.

A megjelenítéskor az anyagtulajdonságokkal rendelkező elemek színe az alábbi tényezőkből számítva keletkezik:

szín=színanyag + megvilágításkörnyezet * megvilágításanyag + fényforrások(l, n, v)

A megjelenítés színe tehát függ az anyag színétől, a környezeti megvilágítástól, és attól, hogyan veri vissza az anyag a fényforrások felől érkező fénysugarakat. A fényforrások hatásában vehetjük figyelembe, hogy azok reflektorszerűek is lehetnek, azaz a megvilágítás iránya (d), a normálvektor (n), és a fényforrást és a pontot összekötő vektor (v), valamint a nézőpontot és a pontot összekötő vektor (l) hogyan határozzák meg a fény visszaverődését. Az alábbi tájékoztató jellegű képletben a vektorok egységvektorok és a „(,)” jelzés a skaláris szorzást jelenti amennyiben a visszaverődés értelmezett.

fényforrások(l, n, v) = intenzításfényforrások *
      (v,d) * (megvilágításkörnyezet * megvilágításanyag +
      (v,n)*szórtfényforrások * szórtanyag + (v+l,n)*tükrfényforrások * tükranyag)

Az anyag reflexiós tulajdonságainak beállításához egész és valós paraméterekkel rendelkező függvényeket használhatunk:

void glMateriali (GLenum face, GLenum pname, GLint param);
void glMaterialf (GLenum face, GLenum pname, GLfloat param);

A függvények paramétereit az alábbi táblázat segítségével értelmezhetjük:

face

Megadhatjuk, hogy a felület első (GL_FRONT), hátsó (GL_BACK), vagy mindkét oldalára (GL_FRONT_AND_BACK) érvényes-e a beállítás.

pname

Az anyag reflexiós tulajdonsága:

GL_AMBIENT

azonos fényesség a felületen,

GL_DIFFUSE

minden irányban szórt fény,

GL_ AMBIENT_AND_DIFFUSE

a fenti két elem összege,

GL_SPECULAR

tükröződő anyag,

GL_SHINESS

a fényesség nem függ a megvilágítás irányától,

GL_EMISSION

világító anyag,

GL_COLOR_INDEXES

a megvilágítás színe 0-s a indexű szín a szórtat és a tükröződőt a 1-s indexű szín definiálja.

param

A megadott anyagtípus RGBA paraméterei

Pontosabb beállításokhoz többparaméteres függvényeket használhatunk, ahol a params a beállítási adatokat tartalmazó vektor kezdőcíme.

void glMaterialfv(GLenum face, GLenum pname,
const GLfloat *params);
void glMaterialiv (GLenum face, GLenum pname,
const GLint *params);

Ha a glEnable(GL_COLOR_MATERIAL) függvényt meghívjuk, akkor az anyagtulajdonságokat a színek határozzák meg. Ilyenkor szín adatai alapján az anyag reflexiós tulajdonságait a

void glColorMaterial (GLenum face, GLenum mode);

függvénnyel állíthatjuk be. A face paraméter lehetséges értékei itt is a felület kérdéses oldalát jelölik. A mode paraméter értéke pedig a GL_EMISSION, GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, vagy a GL_AMBIENT_AND_DIFFUSE értékek egyike lehet (az utolsó az alapértelmezett).

Az alábbi GLUT példa mozgó, tartópontokkal modellezett, árnyalt Bezier felületet mutat.

A mozgatáshoz szükséges adatok:

// ránézés távolsága
GLdouble tav;
// a tartópontok tömbje
GLfloat ctlpoint[4][4][3];
// a NURBS objektum
GLUnurbsObj * nurbs;

Az onInit() függvényben gondoskodunk a felület megvilágításáról és fényvisszaverés tulajdonságairól.

void onInit()
{
    glClearColor(0.1f, 0.2f, 0.3f, 1.0f);
    // A felület szórt fényre való reakciója
    GLfloat szort[4] ={0.6,0.6,0.0,1.0};
    // A felület tükröződési adatai
    GLfloat tukros[4] ={1.0,1.0,0.0,1.0};
    // A felület fényessége
    GLfloat fenyes[1] ={100.0};
    GLfloat     viszony;
    glClearDepth( 1.0 );
    glEnable(GL_DEPTH_TEST);
    // A felület fényvisszaverési adatai
    glMaterialfv(GL_FRONT,GL_DIFFUSE,szort);     // szórt fény
    glMaterialfv(GL_FRONT,GL_SPECULAR,tukros);   // tükröződés
    glMaterialfv(GL_FRONT,GL_SHININESS,fenyes);  // fényesség
    // A default megvilágítás
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);
   
    glEnable(GL_DEPTH_TEST);
   
    // A felület normálvaktorainak számítása tükröződéshez
    glEnable(GL_AUTO_NORMAL);
    glEnable(GL_NORMALIZE);
   
    // A NURBS objektum létrehozása
    nurbs=gluNewNurbsRenderer();
   
    // A mintavétel sűrüsége az arnyaláskor (pixel)
    gluNurbsProperty(nurbs,GLU_SAMPLING_TOLERANCE,25.0);
   
    // A NURB megjelenítése
    gluNurbsProperty(nurbs,GLU_DISPLAY_MODE,GLU_FILL);
   
}

Az onIdle() függvény időzít

void onIdle()
{
  // idő mérés
  int now = glutGet(GLUT_ELAPSED_TIME);
  float dt = (now - lastTime) / 1000.0f;
  if (dt>0.1)
  {
    lastTime = now;
    glutPostRedisplay();
  }
}

A kirajzolást az onDisplay() függvény végzi.

void onDisplay()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    int u,v;    // A tartópontok véletlen meghatározása
    for (u=0;u<4;u++)
      {
        for (v=0;v<4;v++)
          {
             ctlpoint[u][v][0]=2.0*((GLfloat)u-1.5);        // x
             ctlpoint[u][v][1]=2.0*((GLfloat)v-1.5);        // y
             ctlpoint[u][v][2]=3.0*rand()/(float)RAND_MAX;  // f(x,y)
          }
      }
    glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT );
    glPushMatrix();
    glTranslated(0.0, 0.0, -tav);
    glRotated(-30, 1.0, 0.0, 0.0);
    glScalef(.5,.5,.5);
    glPolygonMode(GL_FRONT_AND_BACK , GL_FILL);
    GLfloat csp[8]={0.0,0.0,0.0,0.0,1.0,1.0,1.0,1.0};
    // A NURBS felület létrehozása
    gluBeginSurface(nurbs);
      gluNurbsSurface(nurbs,          // az objektum
        8,csp,            // az u irányú csomópontok
        8,csp,            // az v irányú csomópontok
        4*3,              // két u-ir. szomszédos pont táv. a tömbben
        3,                // két v-ir. szomszédos pont táv. a tömbben
        &ctlpoint[0][0][0],     // a pontokat definiáló tömb
        4,4,                    // a spline fokszám+1 u,v irányban
        GL_MAP2_VERTEX_3        // háromdimenziós csúcspontok
        );
    gluEndSurface(nurbs);
    glPopMatrix();
    glutSwapBuffers();
}

Végül az időzítő duplán pufferelő főprogram.

int main(int argc, char* argv[])
{
    glutInit(&argc, argv);
    glutInitWindowSize(640, 480);
    glutInitWindowPosition(0, 0);
    glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE);
    glutCreateWindow("Árnyalás");
    glutIdleFunc(onIdle);
    onInit();
    glutReshapeFunc(onResize);
    glutDisplayFunc(onDisplay);
    glutMainLoop();
    return 0;
}

Árnyalt zászló
4.35. ábra - Árnyalt zászló


4.6.10. Árnyalások

A

void glShadeModel (GLenum mode);

függvénnyel a rajzolás árnyalási modelljét állíthatjuk be. A GL_SMOOTH (az alapértelmezett) normálist a vertexekben számítja a rendszer (4.35. ábra - Árnyalt zászló/a), vagy GL_FLAT az egyszerű felületdarabonként csak egy normális használatos. Ha az onInit() függvényben beállítjuk a

glShadeModel(GL_FLAT);

értéket, akkor a zászló kockássá válik (4.35. ábra - Árnyalt zászló/b).

4.6.11. Textúra

Az anyagminták (textúrák) használatának lehetőségeire vonatkozó ízelítővel zárjuk az OpenGL bemutatkozását célzó fejezetet. Az anyagminták használatának első lépése az anyagminta létrehozása. A textúra lehet egydimenziós, azonban az alapeset a kétdimenziós kép, melyet felületen szeretnénk megjeleníteni. Általában egyetlen képet használunk, és azt feszítjük rá a felületekre. Azonban arra is van lehetőségünk, hogy egyetlen képet több felbontásban is elkészítsünk, és mindig a leggazdaságosabban megjeleníthetőt használjuk (mip-map), ennek részleteivel azonban nem foglalkozunk.

4.6.11.1. A textúra elkészítése

A textúrát egy pontjaival meghatározott kép alapján készíthetjük el a

void glTexImage2D (GLenum target, GLint level, GLint components,
    GLsizei width, GLsizei height, GLint border,
    GLenum format, GLenum type, const GLvoid *pixels);

függvény segítségével. A függvény target paramétere GL_TEXTURE_2D érték kell legyen. A level paraméter a mip-map-ek számát adja meg, ha csak egy kép van, akkor értéke 0. A components paraméterben a színkomponensek számát definiálhatjuk. A kép méreteit a width, height, keretét a border paraméter tartalmazza. A format paraméter definiálja a használt színmodellt (pl. GL_RGB, GL_RGBA stb.). A type paraméter a színadatok típusát tárolja (GL_INT, GL_FLOAT stb.) és végül a pixels a pontokat definiáló színeket tartalmazó tömb kezdőcíme.

Az alábbi függvények a textúra-kép használatát szabályozzák:

void glTexParameterf(GLenum target, GLenum pname, GLfloat param);
void glTexParameteri(GLenum target, GLenum pname, GLint param);

A target paraméter értéke mindkét esetben GL_TEXTURE_2D kell, legyen. A pname paraméter nevezi meg azt a tulajdonságot, melyet a textúrára vonatkozóan be szeretnénk állítani, a param pedig a beállító értéket tartalmazza. Ha a pname értéke például a GL_TEXTURE_WRAP_S, vagy GL_TEXTURE_WRAP_T, akkor a param segítségével a különböző irányokban előírhatjuk, hogy a kép a felületre nyújtva (GL_CLAMP), vagy eredeti méretben ismétlődésekkel tölti ki a felületet (GL_REPEAT ez az alapérték). Ha a pname értéke GL_TEXTURE_MIN_FILTER vagy GL_TEXTURE_MAG_FILTER, akkor a textúraelem pixelre történő kicsinyítésének, illetve nagyításának módját írhatjuk elő. A param GL_NEAREST értéke esetén a több leképzett képpont közül a pixelhez legközelebbi pont színe a meghatározó, a GL_LINEAR (alapérték) esetben pedig a szóba kerülő pontok színe átlagolódik.

A textúra leképezés során azt, hogy a felület színe és a képpontok színe milyen módon kerül összevetésre a glTexEnvtipus() függvénnyel szabályozhatjuk:

void glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE,
GLfloat param);

Az első két paraméter a megadott konstans kell, legyen. A param paraméter GL_DECAL beállításkor a kép színe kerül a felületre, mintha matricaként rátennénk, egyébként (GL_MODULATE, GL_BLEND) a textúra keveredik a háttérszínnel. Az ilyen módon meghatározott textúra megjelenik minden olyan felületen, amely a glEnable(GL_TEXTURE_2D) beállítással jött létre.

Az alábbi programrészletben egy legfeljebb MERET*MERET nagyságú bitkép adataival töltjük fel a textúrát. A bitképek egyszerű kezelése érdekében – CLI-t használunk.

private: System::Void Form1_Load(System::Object^  sender,
                        System::EventArgs^  e) {
    hwnd=(HWND)this->Handle.ToInt32();
    m_hDC = GetDC(hwnd);
    if(m_hDC) {
        MySetPixelFormat(m_hDC);
    }
try {
        // létrehozunk egy TBitmap objektumot és abba töltjük a képet
        Bitmap ^ Bm = gcnew Bitmap("C:\\M\\Mogi.png");
        BYTE kep[MERET][MERET][3];
        // Áttöltjük a bitkép színeit a képafdat tömbbe
        for (int i=0;i<Bm->Width;i++)
            for (int j=0;j<Bm->Height;j++) {
                kep[i][j][0]=Bm->GetPixel(i,j).R;
                kep[i][j][1]=Bm->GetPixel(i,j).G;
                kep[i][j][2]=Bm->GetPixel(i,j).B;
            }
        // A kétdimenziós mintázat definíciója
        glTexImage2D(GL_TEXTURE_2D,0,
        // szintek a nagyításhoz
            3,                   // színkomponensek száma
            Bm->Height,Bm->Width,// méretek
            0,                   // a keret vastagsága
            GL_RGB,              // színformátum
            GL_UNSIGNED_BYTE,    // színadatok
            &kep                 // az adatok tömbje
        );
        // A  mindkét irányban a 0,1 paraméterekhez kapcsolódunk
        glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_CLAMP);
        glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_CLAMP);
        // A pixel textúra elemre való nagyításának,
        // kicsinyítésének módja
        glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST);
        glTexParameterf(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST);
        // A mintázat matricaként kerül a felületre takarva azt.
        glTexEnvf(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_DECAL);
        glEnable(GL_TEXTURE_2D);
        // Használat után letöröljük a bitkép objektumot
        delete Bm;
}
    catch (...) {
}
}

Textúra
4.36. ábra - Textúra


4.7. 3D-s objektumok

4.7.1. 3D-s objektumok megadása

A 3D-s objektumok megadása is csúcspont és attribútumaik segítségével történik. Ezeket kiszámolhatjuk kézzel is, mint ahogy eddig tettük, vagy egy 3D modellező programban megrajzolhatjuk az objektumokat, amelyeket betölt a programunk.

Az objektumok betöltéséhez ismerni kell az objektumot leíró fájl formátumát. Ilyen formátum pl. a szöveges Wavefront OBJ (.obj), a bináris 3D Studio (.3ds), vagy az XML alapú Collada (.dae). A fájl betöltéséhez az Open Asset Import Library (Assimp) könyvtárat fogjuk használni. Az Assimp-et C++-ban írták, sok különböző típusú formátumot képes kezelni, amelyekhez egy egységes API-n keresztül lehet hozzáférni.

Gyakran előfordul, hogy egy modell különböző háromszögeinek ugyanaz a csúcspont is a része, ilyenkor felesleges újra eltárolni a vertexet. Ehelyett egy tömbben fogjuk tárolni az összes csúcspontot, és az attribútumokat, és egy külön tömbben tároljuk a háromszögeket alkotó vertexek indexeit (4.37. ábra - Vertex és index puffer).

Vertex és index puffer
4.37. ábra - Vertex és index puffer


3D grafikánál az árnyaláshoz a pozíciók mellett meg kell adni a csúcsokban lévő normál vektorokat is. A normál vektor egy egység hosszú vektor, amely merőleges a felületre. Definiáljunk két típust: egy 3-elemű vektort, amellyel a pozíciókat és normál vektorokat tudjuk leírni, illetve egy struktúrát amely egy oldal indexeit fogja tartalmazni.

struct vec3 {
  float x, y, z;
  vec3(float x, float y, float z) : x(x), y(y), z(z) {  }
} ;
struct Face {
  unsigned int index[3];
} ;

Ezeket felhasználva készítjük el a példaprogramot! A 3D-s objektumokon is bemutatjuk az eddig megismert ábrázolásokat. Definiáljunk egy 3D-s objektumot leíró osztályt! Ez tartalmazni fogja a megfelelő puffereket, amelyeket tömb helyett a Standard Library-ben lévő std::vector generikus típusú objektumban fogunk tárolni. Ennek előnye a hagyományos tömbkezeléssel szemben, hogy a memóriát magától fel fogja szabadítani az objektum megszűnésekor. Emellett definiáljunk két metódust, az egyik betölti az objektumot, a másik kirajzolja azt.

#include <vector>
#include <assimp/Importer.hpp>
#include <assimp/scene.h>
#include <assimp/postprocess.h>
class Mesh {
  std::vector<vec3> vertexes;
  std::vector<vec3> normals;
  std::vector<Face> indexes;
public:
  void load(const char* filename);
  void render();
} ;

Írjuk meg a load() metódust, amely betöltet az Assimp-el egy 3D-s fájlt, majd ebből a szükséges attribútumokat átalakítja a saját adatszerkezetünkre. Az Assimp használatához szükség van néhány fejállományra, illetve hozzá kell szerkeszteni az assimp.lib fájlt a programhoz.

void Mesh::load(const char* filename)
{
  // mesh betöltés
  Assimp::Importer importer;
  const aiScene* pScene = importer.ReadFile(filename,
      aiProcess_Triangulate);
  if (!pScene || pScene->mNumMeshes == 0)
    return;
  // mesh
  const aiMesh* pMesh = pScene->mMeshes[0];
…

Az Assimp::Importer osztályon keresztül lehet betölteni egy fájlt, amelyre vissza ad egy const aiScene pointert. Ez az adatstruktúra tartalmazza többek között az objektumokat (mesh). Emellett tartalmazhatja a színteret is, azaz, hogy az egyes mesh-ek milyen hierarchikus viszonyban vannak egymással, és hol helyezkednek el. A ReadFile() metódusnak megadtuk az aiProcess_Triangulate flaget, amivel elérjük, hogy az Assimp a sok pontból álló poligonokat alakítsa át háromszögekké.

A példában egy .obj fájlból töltünk be egy teáskannát, és feltételezzük, hogy csak egy mesh lesz a fájlban. Ezután a saját adatszerkezetünkre alakítjuk át az aiMesh-ben lévő információt.

  // memóriafoglalás
  vertexes.reserve(pMesh->mNumVertices);
  normals.reserve(pMesh->mNumVertices);
  indexes.reserve(pMesh->mNumFaces);
  // vertexek másolása
  for (unsigned int i = 0; i < pMesh->mNumVertices; ++i)
    vertexes.push_back(vec3(
      pMesh->mVertices[i].x,
      pMesh->mVertices[i].y,
      pMesh->mVertices[i].z));
  // normálisok másolása
  for (unsigned int i = 0; i < pMesh->mNumVertices; ++i)
    normals.push_back(vec3(
      pMesh->mNormals[i].x,
      pMesh->mNormals[i].y,
      pMesh->mNormals[i].z));
  // indexek másolása
  for (unsigned int i = 0; i < pMesh->mNumFaces; ++i) {
    Face face;
    face.index[0] = pMesh->mFaces[i].mIndices[0];
    face.index[1] = pMesh->mFaces[i].mIndices[1];
    face.index[2] = pMesh->mFaces[i].mIndices[2];
    indexes.push_back(face);
  }
}

Az std::vector magától nagyobb memóriát foglal, ha betelik az előre lefoglalt terület, azonban ezt elkerülhetjük, mert tudjuk, hogy pontosan hány elem fog belekerülni. Ezután az aiMesh struktúrából átmásoljuk a számunkra érdekes részeket.

A rendereléskor végiglépkedünk az összes háromszögen, és az indexek alapján kirajzoljuk a megfelelő csúcspontokat.

void Mesh::render()
{
  glBegin(GL_TRIANGLES);
  for (std::vector<Face>::const_iterator it = indexes.begin();
       it != indexes.end();
       ++it)
  {
    for (int j = 0; j < 3; ++j)
    {
      glNormal3f(
        normals[it->index[j]].x,
        normals[it->index[j]].y,
        normals[it->index[j]].z);
      glVertex3f(
        vertexes[it->index[j]].x,
        vertexes[it->index[j]].y,
        vertexes[it->index[j]].z);
    }
  }
  glEnd();
}

4.7.2. 3D-s objektumok rajzolása

A main() függvény a szokásos módon néz ki, létrehoz egy ablakot mélység pufferrel, és dupla puffereléssel.

int main(int argc, char* argv[])
{
  glutInit(&argc, argv);
  glutInitWindowSize(640, 480);
  glutInitWindowPosition(0, 0);
  glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
  glutCreateWindow(”Hello 3D”);
  glutDisplayFunc(onDisplay);
  glutReshapeFunc(onResize);
  glutIdleFunc(onIdle);
  onInit();
  glutMainLoop();
  return 0;
}

A nemrég megírt Object osztályból hozzunk létre egy példányt globális változóként, majd az onInit()-ben töltsük be a modellt. Később forgatni fogjuk a modellt, amihez deklaráljunk még 2 globális változót!

Mesh teapot;
float angle = 0.0f; // forgatás mértéke fokokban
int lastTime = 0;
                   
void onInit()
{
  glClearColor(0.1f, 0.2f, 0.3f, 0.0f);
  glShadeModel(GL_SMOOTH);
  glEnable(GL_DEPTH_TEST);
  lastTime = glutGet(GLUT_ELAPSED_TIME);
  teapot.load(”teapot.obj”);
}

Az onResize() függvényben kezeljük az ablak átméretezését, és itt beállítunk – az eddigiekkel ellentétben – egy perspektivikus vetítést a már ismert gluPerspective() függvénnyel.

void onResize(int width, int height)
{
  glViewport(0, 0, width, height);
  if (height == 0)
    height = 1;
  double aspect = static_cast<double>(width) /
    static_cast<double>(height);
  glMatrixMode(GL_PROJECTION);
  glLoadIdentity();
  gluPerspective(60.0, aspect, 0.1, 100.0);
  glMatrixMode(GL_MODELVIEW);
}

Az onIdle() függvény a szokásos módon méri az utolsó hívás óta eltelt időt, és frissíti a forgatáshoz használt angle nevű változót.

void onIdle()
{
  // idő mérés
  int now = glutGet(GLUT_ELAPSED_TIME);
  float dt = (now - lastTime) / 1000.0f;
  lastTime = now;
  angle += 36.0 * dt;
  glutPostRedisplay();
}

Végül már csak az onDisplay()-t kell megírni.

void onDisplay()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glLoadIdentity();
  gluLookAt(
    -0.5, 2.0, 3.0,
     0.0, 0.5, 0.0,
     0.0, 1.0, 0.0
  );
  teapot.render();
  glutSwapBuffers();
}

Első lépésként töröljük a szín-, és mélységi puffer tartalmát. Ezután egységmátrixot állítunk a modelview mátrixba. Az onResize() végén a projection mátrix után újra a modelview mátrixot választottuk ki, így ezt módosítjuk.

Ezután beállítunk egy nézeti transzformációt a gluLookAt() függvénnyel, amelynek meg kell adni a kamera pozícióját (első 3 paraméter), azt, hogy melyik pontba néz (második 3 paraméter), illetve a felfele irányt (harmadik 3 paraméter). A felfele irány megadásával lehet a kamerát az optikai tengelye mentén forgatni. Majd kirajzoljuk az objektumot.

3D-s objektum
4.38. ábra - 3D-s objektum


4.7.3. Objektum megvilágítása

Habár megjelent a betöltött modell, de nem pont ezt vártuk. Igazából jól működik az OpenGL, mert ő csak a megadott háromszögeket rajzolja ki, és mivel nem adtunk meg más színt, ezért minden az alapértelmezett fehér színnel jelenik meg.

Az árnyalás a fényforrás iránya, és a normál vektorok iránya alapján történik. A normál vektorokról azt gondolja az OpenGL, hogy egység hosszúak, azonban a különböző transzformációk hatására ez változhat. Ezért a GL_NORMALIZE kapcsolóval megkérhetjük az OpenGL-t, hogy az árnyalás előtt normalizálja a normál vektorokat. Ez persze nincs ingyen, de a mai GPU-kon ez gyorsan végbemegy, ezért érdemes bekapcsolni.

void onInit()
{
  glClearColor(0.1f, 0.2f, 0.3f, 0.0f);
  glShadeModel(GL_SMOOTH);
  glEnable(GL_DEPTH_TEST);
  glEnable(GL_LIGHTING);
  glEnable(GL_LIGHT0);
  glEnable(GL_NORMALIZE);
  lastTime = glutGet(GLUT_ELAPSED_TIME);
  teapot.load(”teapot.obj”);
}

Így már azt a képet kapjuk, amelyet az előbb vártunk.

A megvilágított 3D-s objektum
4.39. ábra - A megvilágított 3D-s objektum


4.7.4. Az objektum forgatása

Az onIdle()-ben folyamatosan számoljuk a forgatási szöget, de eddig még nem használtuk sehol. Az onDisplay()-ben a gluLookAt() hívás után a glRotatef() függvénnyel beállíthatunk egy forgatás transzformációt az objektumra. Az első paramétere a forgatás mértéke fokokban, a többi 3 pedig a tengely, ami körül a forgatás történik, ami most az Y-tengely lesz.

void onDisplay()
{
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  glLoadIdentity();
  gluLookAt(
    -0.5, 2.0, 3.0,
     0.0, 0.5, 0.0,
     0.0, 1.0, 0.0
  );
  glRotatef(angle, 0.0f, 1.0f, 0.0f);
  teapot.render();
  glutSwapBuffers();
}

Az OpenGL-ben megadott transzformációkat “alulról felfelé” kell megadni a mátrixszorzás sorrendje miatt. Azaz az objektumot először forgatni fogjuk az Y tengely körül, ezután kerül be a kamera koordináta-rendszerbe. Ezt a modelview mátrix tartalmazza. Ezután a kamera koordináta-rendszerből a projection mátrix átalakítja a vertexeket normalizált eszköz koordinátákba, és megtörténik a raszterizálás.

A megvilágított 3D-s objektum
4.40. ábra - A megvilágított 3D-s objektum


4.7.5. Takart vonalak - hátsó lap eldobás

A teáskanna nagyjából tömör, így nem látjuk a hátul lévő háromszögeket. Azonban ezeket is kirajzoljuk, a depth puffer algoritmus azonban megoldja, hogy ezek ne látszódjanak. A képernyőre vetítve egy háromszöget, a vertexek megadási sorrendje meghatároz egy körül járási irányt, amely lehet az óra mutató járásával megegyező, vagy ellentétes. A háromszögeket az óra mutató járásával ellentétes irányba szokás megadni. Így az elöl lévő háromszögek ebben az irányban lesznek, a hátul lévők megfordulnak, és az óramutató járásával megegyező irányban állnak.

A glEnable(GL_CULL_FACE) hívással engedélyezhetjük, hogy a hátsó lapokat, a körül járási irány alapján, a raszterizálás előtt eldobja a rendszer (culling). A glFrontFace() függvénnyel lehet megadni, hogy az óramutató járásával ellentétes (GL_CCW), vagy megegyező irányú (GL_CW) háromszögeket kezelje elöl lévőként az OpenGL. Az onInit()-be szúrjuk be a következő sorokat:

glEnable(GL_CULL_FACE);
glFrontFace(GL_CCW);

Így ugyanazt látjuk, mint eddig. Ha megfordítjuk a körül járási irányt (glFrontFace(GL_CW)), akkor az objektum belsejét fogjuk látni.

A hátsó lap eldobás hatását másképp is meg lehet nézni. A glPolygonMode() hívással be lehet állítani, hogy az elöl és hátul lévő háromszögek hogyan legyenek raszterizálva (pontként - GL_POINT, élként - GL_LINE, kitöltéssel - GL_FILL). Az onInit()-be szúrjuk be valahova a következő sort, és próbáljuk ki a kódot glEnable(GL_CULL_FACE) hívással, és nélküle is!

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);

glDisable(GL_CULL_FACE)
4.41. ábra - glDisable(GL_CULL_FACE)


glEnable(GL_CULL_FACE)
4.42. ábra - glEnable(GL_CULL_FACE)


5. fejezet - Klasszikus és Modern megjelenítési technikák

A klasszikus és modern megjelenítő eszközöket többféleképpen lehet csoportosítani. Léteznek

  • úgynevezett elektromechanikus kijelzők,

  • csavart nematikus térvezérlésű LCD / vákuum fluoreszcens kijelzők,

  • CRT (Cathod Ray Tube) kijelzők,

  • SED / FED (Surface-conduction Electron-emitter Display  / Field-Emission Displays) kijelzők,

  • LCD (Liquid Crystal Display) / TFT (Thin Film Transistor) / kijelzők,

  • PDP kijelzők (plazma kijelzők),

  • elektronikus papír,

  • OLED (Organic Light Emitting Diode) kijelzők,

  • DLP (Digital Light Processing) eszközök (DMD - digital micromirror).

A megjelenítő eszközök rendelkeznek bizonyos tulajdonságokkal, melyek mentén összehasonlíthatók egymással. Az első és legfontosabb a maximálisan alkalmazható pixelszám, amelyet az adott megjelenítő eszköz képes produkálni. Más szavakkal az elemi képpontok száma, amely képpontokat  a megjelenítő eszköz használja. Fontos tudni, hogy egy sorban hány pixel van, és a képernyőn hány sor helyezkedik el. Fontos ismeret a pixelek címzésének módja is. A megjelenítő a képet előállíthatja raszteresen (sorról sorra) kirajzolva a képpontokat, vagy mátrixszerűen, minden pixelt külön megcímezve. További fontos tulajdonság a frissítési frekvencia, vagyis a képpontok állapotváltoztatásához szükséges minimális idő. Ehhez kapcsolódik az utóképek kérdése is. Ez azt mutatja, hogy az elemi képpont a kikapcsolása után mennyi idővel tér vissza ténylegesen nyugalmi állapotba. A kijelzőknél ezt a tulajdonságot nevezhetjük válaszidőnek is, amely idő ahhoz kell, hogy a pixel fényerejét megváltoztassuk. A kontraszt a részletgazdagságot jellemző érték, mely a legsötétebb és legvilágosabb pixel fényerejének hányadosa. A kijelzők maximális fényereje is fontos jellemző, amely CRT monitoroknál az elektronok felvillanásából, LCD monitoroknál pedig a háttérvilágításból származik. Főleg LCD monitorok fontos tulajdonsága a látószög, amely azt mutatja, hogy a monitoron megjelenő tartalom mely szögből látható még elfogadható minőségben, minőségromlás nélkül.

A kijelzők felbontásánál használatban vannak bizonyos szabványos pixelelrendezések, képarányok (5:4-től egészen a 16:9-ig, ahol a második szám a sorok száma, az első az egy sorban elhelyezkedő pixelek száma). Amíg a 4:3 képarány a régebbi CRT technológiánál volt általános, addig a szélesebb 16:9 képarány az újabb LDC és plazma kijelzőkkel terjedt el.

5.1. ábra - Szabványos kijelző felbontások


Az 1980-as évek közepétől sorra jelentek meg a színes, grafikus megjelenítők:

EGA (Enhanced Graphics Adapter, maximum 640 x 350 pixelszám, a megjeleníthető színek száma 16),

VGA (Video Graphics Array, 640 x 480 pixelszámnál a megjeleníthető színek száma 16, illetve 320 x 200 felbontás esetén 256),

SVGA (Super Video Graphics Array, maximum 800 x 600 pixelszám, a megjeleníthető színek száma 256),

XGA (Extended Graphics Array, 1024 x 768 pixelszámnál, a megjeleníthető színek száma 256, 640 x 480 pixelszámnál pedig  65536).

Az alábbi szabványos elnevezések léteznek még:

QVGA (Quarter Video Graphics Array, 320×240), QQVGA (Quarter-QVGA, 160×120), HQVGA (Half-QVGA, 240×160), WQVGA (Wide QVGA, 400×240), HVGA (Half-size VGA, 480×320), WVGA (Wide Video Graphics Array, 800×480), FWVGA (Full Wide Video Graphics Array, 854×480), DVGA (Double-size Video Graphics Array, 960×640)

WXGA (Wide Extended Graphics Array , 1280×768), XGA+ (Extended Graphics Array Plus , 1152×864), WXGA+ (1440×900), SXGA (Super Extended Graphics Array, 1280×1024), SXGA+ (Super Extended Graphics Array Plus, 1400×1050), WSXGA+ (Widescreen Super Extended Graphics Array Plus, 1680×1050), UXGA (Ultra Extended Graphics Array, 1600×1200), WUXGA (Widescreen Ultra Extended Graphics Array, 1920×1200)

QWXGA (Quad Wide Extended Graphics Array, 2048×1152), QXGA (Quad Extended Graphics Array, 2048×1536), WQXGA (Wide Quad Extended Graphics Array, 2560×1600), QSXGA (Quad Super Extended Graphics Array, 2560×2048), WQSXGA (Wide Quad Super Extended Graphics Array, 3200×2048), QUXGA (Quad Ultra Extended Graphics Array, 3200×2400), WQUXGA (Wide Quad Ultra Extended Graphics Array, 3840×2400)

HXGA (Hex Extended Graphics Array, 4096×3072), WHXGA (5120×3200), WHSXGA (6400×4096), HUXGA (6400×4800), WHUXGA (7680×4800)

HD (high-definition, 1280×720), nHD (ninth of a Full HD, 640×360), qHD (quarter of a Full HD, 960×540), FHD (Full HD, 1920×1080), QHD (Quad HD, 2560×1440), QFHD (4K) (Quad Full HD, 3840×2160), UHD (8K) (Ultra HD, 7680×4320)

A fejezet további részeiben bemutatjuk az elektronikus kijelzők néhány fő típusát. Ilyenek a Split-flap, a Flip-disc, a VFD (vákuum fluoreszcens) valamint a csavart nematikus térvezérlésű LCD kijelzők, a hagyományos katódsugárcsöves képernyők, a SED és FED felület-átvezetési kijelzők, az e-papír, a folyadékkristályos LCD / TFT, a plazma és a LASER kijelzők, továbbá az új technológiának számító OLED és LED kijelzők. Ugyancsak szót ejtünk a projektorokban alkalmazott DLP és DMD technikákról is.

5.1. Elektromechanikus kijelzők

5.1.1. A split-flap kijelzők

A split-flap kijelzőknél egy előre definiált, korlátozott mennyiségű karakterkészlet, illetve rögzített grafika áll rendelkezésre. Minden karakterhelyen van egy forgatható tengely, amelyen, mint szárnyak helyezkednek el a grafikus táblák. Minden karakterhely két „pixelből” áll. Előszeretettel használják pályaudvarokon, repülőtereken.

5.2. ábra - A split-flap kijelző


5.1.2. A flip-disc kijelző

A flip-disc vagy flip-dot kijelző a split-flap kijelző későbbi változata, amely gyakorlatilag egy pontmátrix. Ennél a kijelzőnél általában egy karaktert kevés számú „pixelből” állítanak össze, és minden „pixelt” ki-be lehet „kapcsolni” azzal, hogy egy elemet az átlója mentén kinyitnak és becsuknak, mert az elemek egyik fele világos, a másik pedig sötét.

5.3. ábra - Flip-dot kijelző


5.2. A VFD kijelzők

A VFD (vákuum fluoreszcens) kijelzőket általában kevés információt megjelenítő eszközökben használják. Ezekben az esetekben használata gazdaságos (audio- és videoeszközök, háztartási gépek). A CRT technológiához hasonlóan a vákuum fluoreszcens kijelzőknél is a foszfor elektronokkal történő gerjesztésére bekövetkező fluoreszcenciát használjuk ki. A kijelzőben az elektronok kilépnek a fém katódról, amely egy 10 μm nagyságú izzószál és egy 50 V körüli rácsfeszültség felgyorsítja őket.

A vákuum fluoreszcens kijelzők könnyen felismerhetők a rács méhsejthez hasonló alakjáról. Amikor az elektronok 100 V körül elérik az anódot, fény emittálódik. Az VFD robusztus, megbízható, nagy kontraszttal rendelkező, hosszú élettartamú eszköz. Hátránya azonban, hogy az aktív képmegjelenítő terület jóval kisebb a teljes mérethez képest, és csak igen korlátozott számú kvázi pixelt tartalmazhat.

5.4. ábra - Vákuum fluoreszcens kijelző


5.5. ábra - Vákuum fluoreszcens kijelző


5.3. Csavart nematikus térvezérlésű LCD kijelzők

A csavart nematikus térvezérlésű LCD kijelző a később részletezett LCD kijelzők táborát erősítik. Mivel azonban történetileg indokolt, és meglehetősen gyakori kijelző típusról van szó, meg kell említenünk egy korai változatát, amely nem rendelkezik saját háttérvilágítással. A kijelző alsó szegmensében elhelyezkedő fényvisszaverő anyag biztosítja a megfelelő kontrasztot. Ahogy az LCD szegmensre feszültséget kapcsolunk, ott kitakarjuk a fényvisszaverődést, és sötét felületelem jön létre. Ezeket a kijelzőket láthatjuk a kézi számológépeinken is.

5.6. ábra - Csavart nematikus térvezérlésű LCD kijelző


5.4. CRT kijelzők

A CRT (Cathode Ray Tube) – a hagyományos katódsugárcsöves kijelző az egyik legkorábbi, korszerű megjelenítő eszköz. Az első CRT kijelzőt Londonban mutatták be még 1926-ban, a feltaláló Karl Ferdinand Braun (Braun-cső, későbbi katódsugárcső) volt.

A CRT kijelző tartalmaz egy katódsugárcsövet, amelynek egyik végén egy elektronágyú található, a másig végén pedig egy foszforral bevont képernyő. Az elektronágyú által kibocsátott elektront egy elektromágneses térrel manipulálják két tengely mentén. Amikor az elektron az elülső falra felvitt foszforréteggel találkozik, gerjeszti az itt található luminofor képpontokat (melyek előállításához általában cinkvegyületeket használnak), egy pixelnyi felület felvillan, majd elhalványodik. Az ismételt ütközések következtében a pixel nem halványodik el, hanem folyamatosan világít. Az elektronágyúk így rajzolnak képernyőre a megfelelő vezérlés alapján. A katódsugárcsőben (üvegballon) vákuum van. A cső nyakában van a fűtött katód, amelyből termikus hevítés hatására elektronok lépnek ki. A kibocsátott elektronokat úgy térítik ki a manipulátortekercsek, hogy a képernyőn balról jobba, fentről lefele halad az elektronsugár nagy sebességgel, a frissítési frekvencia által jellemezve. Amikor az elektronnyaláb elérte a kép jobb alsó pontját, nagyon rövid idő alatt visszaugrik az első sor bal szélére. A sor és kép visszafutásának idejére az elektronnyalábot kioltják, így ezen idők alatt nem ír jelet a képernyőre. Tehát azt, hogy másodpercenként hányszor frissítjük a képpontokat, képfrissítési frekvenciának nevezzük, mértékegysége a Hertz. A mai monitorok 60–130 hertzesek (a shutter glasses háromdimenziós megjelenítési technikánál például fontos, hogy minimum 120 Hertz legyen ez az érték, mert így jön ki a szemenkénti 60-60 Herz).

Az első monitorok egyetlen szín árnyalatait tudták megjeleníteni, tehát monokrómok voltak. Gyakori színek voltak a fekete-fehér mellett a borostyánsárga és a zöld. A színes monitorok három alapszínnel rendelkeznek: a pirossal, a zölddel és a kékkel (additív, RGB színkeverés). Mindegyik színhez külön elektronágyú tartozik.

5.7. ábra - Katódsugárcsöves képernyő


A színes televízió katódsugárcsövének felépítése

(1. elektronágyú, 2. elektronnyalábok, 3. fókuszáló tekercsek, 4. eltérítő tekercsek, 5. anódcsatlakozó, 6. maszk a megjelenítendő kép vörös, zöld és kék részének szétválasztásához, 7. foszforréteg vörös, zöld és kék zónákkal a képernyő foszforborítású belső rétegének közelképe)

en.wikipedia.org

5.8. ábra - A színes televízió katódsugárcsövének felépítése


5.5. A SED és FED kijelzők

A SED (surface-conduction electron-emitter display) kijelző működési elve hasonló a hagyományos katódsugárcsöves kijelzőkéhez, annyi különbséggel, hogy itt a viszonylag nagy távolságban elhelyezett elektronágyú helyett, a felületen létrehozott apró, nanométer nagyságrendű szénszálakból összeállított csatornák lövik az elektronokat külön-külön az egyes képpontokra. Ez a megoldás rendkívül kedvezőnek tűnik, hiszen két technológia előnyeit egyesíti. A megjelenített kép minősége a hagyományos CRT kijelzőkhöz hasonlatos, de a megjelenítő olyan vékony maradhat, mint a jelenlegi PLAZMA és LCD panelok. A SED kijelzők lényegesen jobb képminőséggel rendelkeznek még a plazmakijelzőknél is. Az első prototípus kontrasztaránya 50 000:1, mely egy nagyságrenddel jobb, mint amire a jelenlegi legjobb LCD kijelzők vagy plazmatévék képesek a legfeljebb 10 000:1 kontrasztarányukkal. A SED kijelző válaszideje néhány milliszekundumban mérhető, ami megszüntetheti a nagyobb LCD- és plazmatévéken látható szellemképet. A kijelző élettartama is jóval nagyobb, legalább 30 ezer óra nagyságrendű, miközben fele annyi energiát fogyaszt, mint hasonló méretű PLAZMA kijelző.

A FED (field emission display - téremissziós kijelző) a leginkább a SED kijelzőkre hasonlít, csak itt minden pixelre jut egy katód. Fizikailag vékonyak lehetnek, de előállítási költségeik igen magasak, úgyhogy igen ritkák a kereskedelmi forgalomban.

5.9. ábra - A SED és FED kijelzők vázlata (balra egy CRT kijelző látható)


5.6. Az EP (elektronikus papír) kijelzők

Az e-papírt vagy elektronikus papírt a 1970-es években kezdték fejleszteni, majd több mint egy évtizedes szünet után az 1980-as évek végén újraindultak a kutatások. A létrehozását az motiválta, hogy kiváltsák a hagyományos papírra történő nyomtatást, ami a legtöbb esetben egyszeri használatot jelent. Mindezt úgy, hogy a nyomtatott anyag használatának komfort érzése megmaradjon. Az a cél, hogy a hagyományos, nyomtatott papírt kiváltsák, évtizedekre meghatározta azokat az elvárásokat, amiknek az e-papírnak meg kell felelnie, vagyis az e-papírnak minél inkább hasonlítania kell egy igazi papírra, amin nyomtatott szöveg van. Ennek alapján három fő pillére volt a fejlesztéseknek. Az e-papír hajlékony, hasonlóan, mint egy papírlap. Az e-papíron megjelenő szöveg vagy ábra hasonlóan reflektál, mint a nyomtatott papír, vagyis külső fényforrás és nem háttérvilágítás teszi láthatóvá a tartalmat. A megjelenített szöveg megtartásához nincs szükség további tápellátásra. 1974-ben Nicholas K. Sheridon Xerox PARC-nál kidolgozza a Gyricon eljárást, ami lefektette az e-papír technológia alapjait. 2004-ben a Sony piacra dobja az első e-könyv olvasóját a LIBre-t. 2006-ban Fujitsu bemutatja a 7.8”-es, színes e-papír prototípust, ami 4 szín megjelenítésére volt képes. Később szintén Japánban a Hitachi 13.1”-es, 8 szín megjelenítésére alkalmas e-papír reklámfelületeket próbált ki néhány közlekedési eszközön. 2009-ben árusítani kezdték a Fujitsu első színes e-papírral működő, hordozható eszközét,a FLEPia-t. 2012-ben a Fuji Xerox bemutatta a színszűrő nélküli, az elektroforézis elvére épülő színes e-papírt.

5.10. ábra - Az E-papír elvi vázlata


Párhuzamosan több fejlesztés is folyamatban van a különböző cégeknél, de az ezzel kapcsolatos technikai információk meglehetősen hiányosak, mert a kutatási anyagok egy részét ipari titokként kezelik. Az e-papír két fő részből áll:  az úgynevezett előlap lényegében maga a tartalommegjelenítő e-ink, míg  a másik rész a hátlap, az elektronika, ami elvégzi a tartalom létrehozását .

A Gyricon (forgókép) eljárás lényege, hogy mikrokapszulákban golyók helyezkednek el, amit olaj vesz körül, ezáltal biztosítva a szabad forgómozgást. A golyók egyik fele fekete, a másik fehér, és attól függően fordulnak el a kapszulában az alul lévő elektróda felé, hogy milyen pólusú elektromos töltést kapnak a kapszulák. Így az elektromos töltést kapó egyes mikrokapszulákban a töltésnek megfelelően a mikrogolyók fehér vagy fekete fele fordul felfelé. A szöveg előállításához egy külső egység szükséges, ami a nyomtatókhoz hasonló elven, az e-papíron a megfelelő területen, elektromos töltés segítségével létrehozta a kívánt tartalmat, ami azután meg is marad abban az állapotban. A mai e-papír fejlesztéseknél nem használják ezt a megoldást.

5.11. ábra - A Gyricon működése


Az elektroforézis jelenleg a legnagyobb teljesítőképességű, napjainkban is dinamikusan fejlődő elválasztástechnikai módszer. Erre az elvre épülő e-papír a gyártó vállalat fejlesztése, és jelenleg az e-könyv olvasóknál a legelterjedtebb és legfejlettebb monokróm technológia. A pontos technikai részletekről azonban keveset tudunk, mert a gyártó ipari titokként kezeli a részleteket. A Gyricon technológiához hasonlóan, itt szintén olajjal töltött mikrokapszulák vannak, amik nagyjából 100 mikron átmérőjűek, de egy kapszulában nem egy golyó, hanem több fekete és fehér töltéssel rendelkező ún. pigment részecskék vagy titán-dioxid szemcsék találhatók. Az első esetben a mikrokapszulák már nemcsak egy irányból, hanem alulról és felülről egyszerre kapnak ellentétes töltést, és ennek hatására a fehér részecskék az egyik irányba, a fekete részecskék pedig a másik irányba mozdulnak el az átlátszó folyadékban, így kialakítva a felületen a kívánt tartalmat. A második esetben a titán-dioxid szemcsék színezet olajban fel-le mozognak. Ha fent vannak a szemcsék, akkor világos lesz a kapszula, ha lesüllyed, akkor sötét. Ez esetben elég csak alulra tenni elektródát.

Fejlesztések történtek az elektroforézis módszerére épülő színes tartalom megjelenítésére, ahol az egyes mikrokapszulák a három alapszín alapján színszűrővel vannak ellátva, és csoportokba rendezve. Itt a három kapszula a fénykeverés elvével hozza létre a kívánt színt. Természetesen, amíg monokróm technikánál egy képalkotó alapegység az egy kapszula, a színesnél három kapszula tölti be ezt a szerepet, ami azt jelenti, hogy ugyanazon eredményhez a színes kijelzőnek háromszor jobb felbontással kell rendelkeznie. Sajnos a színes kijelzők hatásfoka és színszaturációja nem éri el a kívánt szintet. A színszűrő nélküli kapilláris elektroforézisre épülő színes papír technológiája, ahol a részecskék maguk színesek, és minden színrészecske mozgását külön kezelik.

5.12. ábra - Színszűrős kivitel működése


Az EP kijelzők előnyei:

  • Nincs háttérfény ezért napfényben is könnyen olvasható.

  • A szöveg megtartása nem igényel befektetett energiát.

  • Alacsony a fogyasztása.

  • Kontrasztosabb képet ad, mint a háttérvilágítással rendelkező kijelzők.

  • Nagy a betekintési szöge, ezért több szögből is jobban olvasható, mint a háttérvilágítással rendelkező kijelzők.

Az EP kijelzők hátrányai:

  • Sötétben kiegészítő világításra van szükség, mert nincs háttérfény.

  • Drága a színes kijelző.

  • A színes kijelzők színválasztéka igen szerény.

  • Lassú a képfrissítés, ezért videólejátszásra alkalmatlan.

Az e-papír mögött több évtizedes fejlesztés áll, és a technológia részbeni kiaknázása mindössze a 2000-es évek elején indult el, az e-könyv olvasók által. Azonban nem tekinthető úgy, hogy az e-könyv olvasókkal kapcsolatban a hosszú fejlesztési idő tervei beváltották volna az kezdeti célokat. Noha pénzügyileg az e-könyv olvasók egy fontos fejezet az e-papír fejlesztés folyamatában, de a jelenlegi felhasználás többnyire messze nem használja ki a benne rejlő lehetőségeket. Az e-papír azon képessége, hogy hajlékony és a megjelenített tartalmat megtartja energiaellátás nélkül, még nem kellően kihasznált előnyök. Annak lehetősége is fennáll, hogy a színes táblagépek olcsóságuk és gyorsaságuknál fogva, idővel átveszik ez e-könyv olvasók szerepét. Ez azonban nem befolyásolja az e-papír jövőjét, hiszen a fejlesztések messzebbre mutatnak, és később a tartalomközlő ipart forradalmasíthatja, ha az ára és a működése optimálisabb lesz. A  hétköznapi tárgyakban is megjelenhet a dinamikusan frissülő színes felület. Már ma is létezik e-papír felületet használó karkötő vagy névtábla. A további fejlődési irányt jól mutatja, hogy bár több nagy vállat is fejleszt e-papír technológiákat, mégis ezen cégek zöme szinte kizárólag a színes kijelzők kutatásába fektet pénzt.

5.13. ábra - E-book olvasó


Az e-ink elektroforézis technológia vázlata

(1. felső réteg, 2. átlátszó elektródaréteg, 3. átlátszó mikrokapszulák, 4. pozitív töltésű fehér pigmentek, 5. negatív töltésű fekete pigmentek, 6. átlátszó olaj, 7. elektródapixel-réteg, 8. alsó támaszréteg, 9. fény, 10. fehér, 11. fekete) en.wikipedia.org

5.14. ábra - Az e-ink elektroforézis technológia vázlata


5.7. Az LCD / TFT kijelzők

A folyadékkristály olyan anyag, amely a folyékony és szilárd halmazállapot között helyezkedik el, a molekulái között bizonyos fokú rendezettség figyelhető meg. Anizotrop tulajdonságú, vagyis a különböző irányultságú behatásokra (fény, elektromos és mágneses mező, mechanikai behatás stb.) másképpen viselkedik. 1888-ban Reinitzer osztrák botanikus felfedezte fel a folyadékkristályokat. 1963-ban Williams (RCA) kiderítette, hogy a fény másképpen haladt át a folyadékkristályon, amikor elektromos tér hatásának tette ki. 1968-ban Heilmeyer elkészült egy LCD prototípussal, azonban ekkor még nem voltak elég stabilak a folyadékkristályok a sorozatgyártáshoz. A University of Hull kutatói felfedeztek egy stabil folyadékkristályos anyagot (bifenil). 1973-ban a Sharp cég piacra dobta az első LCD kijelzős számológépét.

A folyadékkristályos kijelzők őse a kvarcórákban fordult elő először. Folyadékkristállyal már 1911 óta kísérleteznek, működő LCD monitor azonban az 1960-as években készült először. Az LCD monitorok minősége egyre javul, áruk csökken, de egy jó CRT monitor még mindig teltebb színeket ad.

5.15. ábra - LCD kijelző működése


A folyadékkristályos megjelenítők alapgondolata, hogy a háttérvilágítást, amely a szemünkbe jut, egy olyan folyadékkristály-réteggel korlátozzuk, amelyet szabadon tudunk ki-be kapcsolni, ezzel eltakarva vagy átengedve a fényt. Ha a folyadékkristály-réteget elektromosan gerjesztjük, a közeg polarizációs síkja elfordul, és így a már polarizált háttérvilágítást vagy átengedi a közeg túloldalán lévő, 90 fokkal (az STN, super-twisted nematic kijelzőknél ez az érték 270 fok is lehet) elforgatott újabb polarizációs szűrő, vagy sem (illetve részben átengedi). Ha egy finoman rovátkolt felülettel (iránybeállító réteg) kerülnek érintkezésbe a folyadékkristály molekulák, párhuzamosan állnak be.

Ha a folyadékkristályt két ilyen réteg közé fogjuk (amelyek egymásra merőleges orientációjúak), akkor az egyik és másik irányokba állnak be, a rétegek irányultságának megfelelően. Ha fény halad át ezen a szendvicsszerkezeten, akkor annak a polarizációs iránya is elfordul a molekulák irányultságának megfelelően. Ha a folyadékkristályra feszültséget kapcsolunk, akkor a molekulák átrendeződnek az elektromos tér irányába, így a fény változatlanul haladhat át. Tehát, ha az LCD monitorban két, belső felületén mikronméretű árkokkal ellátott átlátszó lap közé folyadékkristályos anyagot helyezünk, amely nyugalmi állapotában igazodik a belső felület által meghatározott irányhoz, a folyadékkristály csavart állapotot vesz fel. Ezt követően a kijelző első és hátsó oldalára egy-egy polarizációs szűrőt helyezünk (amelyek a fény minden irányú rezgését csak egy meghatározott síkban engedik tovább). A csavart elhelyezkedésű folyadékkristály különleges tulajdonsága, hogy a ráeső fény rezgési síkját elforgatja. Ha hátul megvilágítjuk a panelt, akkor a hátsó polarizátoron átjutó fényt a folyadékkristály elforgatja, így a fény áthalad az első szűrőn, és világos képpontot kapunk. Ha kristályokra feszültséget kapcsolunk, nem forgatják el a fényt, az eredmény pedig fekete képpont. A polarizációs szűrő elé már csak egy színszűrőt kell helyezni. Több ezer féle folyadékkristály-molekula létezik. Három fő típusuk a nematikus (szálszerű), a koleszterikus (fokozatosan fordító nematikus) és a szmektikus (szappanszerű).

Az úgynevezett passzív mátrix vezérlőnél az egyik elektróda az alsó hordozón, a másik elektróda pedig a felső hordozón helyezkedik el. Az elektromos jeleket egy időben alkalmazzák az egyik és másik vezetékekre a megfelelő időzítéssel, így kapcsolják be az egyes pixeleket.

Az úgynevezett aktív mátrix vezérlőnél egy-egy tranzisztort vagy diódát helyeznek el minden pixelre, amelyek ki-be kapcsolják azokat. Mindkét elektróda ugyanazon a hordozón helyezkedik el, mint a tranzisztormátrix vagy a diódamátrix. A vezérlőjeleket az egyik, míg a videojeleket a másik elektródákra kötik rá.

A TFT (Thin Film Transistor - vékonyfilm tranzisztor) az LCD technológián alapul. Minden egyes képpontja egy saját tranzisztorból áll, amely aktív állapotban elő tud állítani egy világító pontot. Az ilyen kijelzőket gyakran aktív-mátrixos LCD-nek is szokás nevezni. A három elektródából felépülő tranzisztor kapcsolófunkciót lát el. A vezérlőjel hatására a videojel a folyadékkristály-cellára kerül. A megoldás előnye, hogy rendkívül gyors működésű.

5.8. A PDP kijelzők

A PDP (Plazma Display Panel – plazma kijelzők) első, monokróm típusát 1964-ben a Plató Computer System készítette el, Gábor Dénes plazmával kapcsolatos kutatásai nyomán. Később, 1983-ban az IBM készített egy 19" méretű, monokróm, 1992-ben pedig a Fujitsu egy színes, 21 hüvelykes változatot. Az első plazmakijelzőt a Pioneer mutatta be 1997-ben. A gyártók jelenleg nagy erőkkel fejlesztik a minél nagyobb képátlójú kijelzőket (már a 100”-t is bőven meghaladják a legnagyobb kijelzők).

5.16. ábra - A PDP kijelző felépítése


A PDP működése az LCD-nél is egyszerűbb. A cél az, hogy a három alapszínnek megfelelő képpont fényerejét szabályozni lehessen. A PDP-nél a képpontok -  a CRT-hez hasonlóan - látható fényt sugároznak ki, ha megfelelő hullámhosszú energia éri őket. Ebben az esetben a neon és xenon gázok keverékének nagy UV-sugárzással kísért ionizációs kisülése készteti a képpont anyagát színes fény sugárzására, pont úgy, mint a neoncsövekben. Mivel minden egyes képpont egymástól függetlenül, akár folyamatos üzemben vezérelhető, a monitor a kellemetlen villogástól (frissítés miatt) mentes, akár 10 000:1 kontrasztarányú, tökéletes színekkel rendelkező képet is adhat, bármely szögből nézve. A régebbi PDP kijelzők képernyője gyakran „beégett”, ha egy adott területen folyton ugyanaz a grafikai elem jelent meg. Manapság ez már nem jellemző. A gázkisülésnek helyet adó kis cső ugyanúgy elhasználódik, mint az LCD kijelzőkben levő, egyébként cserélhető, a háttérvilágításért felelős fénycső. Az első kétezer órában erőteljes fény lassan csökkenni kezd, de az újabbak akár 60 000 órát is kibírnak.

5.17. ábra - A PDP kijelző egy pixeljének felépítése


5.9. A lézer kijelzők

A lézer (laser) kijelzők a jelenlegi hátérvilágításos kijelzőkhöz hasonlóan működnek, de a hagyományos vetítőegységekben alkalmazott nagy fényerejű lámpák helyett vörös, zöld és kék lézerfények kombinációjával állítják elő a képet. Ez a megoldás amellett, hogy kisebb helyigényű és energiafelhasználású, a lézerfény pontossága révén a színek finomabb keverését is lehetővé teszi. A lézer kijelző a fényesebb és színesebb képhez még a plazmaképernyőknél is szélesebb színtartományt kínál. A lézeres megjelenítés elterjedését a felületi lézertechnológia kifejlesztése tette lehetővé.

5.18. ábra - A lézer kivetítő felépítése


5.10. Az OLED kijelzők

Az OLED technológiáját eredetileg az Eastman-KODAK fejlesztette ki 1985-ben. Ez az úgynevezett kis molekula technológiára épülő Small Molecule OLED (SMOLED) volt. Itt a fénykibocsátó réteg kis molekulasúlyú szerves anyagból épült fel, amelyet úgynevezett vákuumporlasztásos eljárással hoztak létre. Közel ezzel egy időben egy másik technológia is fejlesztésnek indult, ez a Polymer-OLED (PLED), melynek kifejlesztője a Cambridge University (1989) volt. A fénykibocsátó réteget itt óriás, molekuláris szerkezetű polimerek alkotják, amely réteget egy egyszerű technológiával, speciális tintasugaras nyomtatási eljárással hoznak létre. Az OLED-ek első kereskedelmi megjelenése 1999-re datálódik.

Az OLED-ek (Organic Light-Emitting Diode – szerves fénykibocsátó dióda) az egyik leginkább alkalmazható, és nagy perspektívával rendelkező kijelző típus. Az OLED p-n átmenetet képező rétegekből áll, mint a LED kijelzőknél, de itt a vegyületek szervesek. Ha a feszültség nyitóirányú, fény keletkezik abban a régióban, ahol az elektronlyukak és az elektronok újraegyesülnek. Mivel a szerves anyagok érzékenyek a párára és az oxigénre, ezért tokozást alkalmaznak. Az OLED-ek önsugárzók, nagy hatékonyságúak, és kiemelkedő optikai tulajdonságokkal rendelkeznek. Nagy lehetőség ígérkezik a rugalmas hordozó alkalmazására és a tömeges gyártásra (vékony fóliák). Továbbá, a szerves anyag egyszerű nyomatatásának lehetősége, a gyártást is olcsóvá teszi. A széleskörű alkalmazási lehetőségek a monokróm, nagy területű megjelenítéstől, a többszínű, videó és grafikus megjelenítésig terjednek. Az OLED kijelzőkben olyan szerves, félvezető vegyületek találhatók, amelyek elektromos gerjesztés hatására fénykibocsátásra képesek. A kibocsátott fény erőssége és színe az alkalmazott szerves anyagtó, és az esetlegesen hozzáadott színezőanyagok tulajdonságaitól is függ. A kutatások a mind jobb tulajdonságokkal rendelkező fehér, illetve a három alapszín, a kék, a zöld és a piros fényt emittáló, szerves anyagok irányában folynak. Az egyes OLED pixelek vezérlése, hasonlóan a LCD megjelenítőkhöz, történhet passzív és aktív módon. Az aktív mátrixos megjelenítési formát főleg a folyamatos mozgókép megjelenítésére alkalmazzák, köszönhetően a képpontok gyors ki- és bekapcsolhatóságának. Ezzel szemben a passzív mátrixos OLED-kijelzők inkább szöveg megjelenítéséhez használhatók a legjobban, így ideálisan funkcionálnak műszerfali elemként, vagy az audiorendszer fejegységének kijelzőjeként. Az OLED kijelzőkből készíthető flexibilis és transzparens megjelenítő is. Az OLED kijelzők képének fényessége és tisztasága szembetűnő. A fényes kép a kijelzők magas kontrasztjának és fénysűrűségének köszönhető. Az LCD kijelzőkkel ellentétben nem igényelnek háttérvilágítást, sőt, a látószögük is jóval magasabb azokénál. Mivel a képpontok nagyon rövid időközök alatt ki-bekapcsolhatók, ezért a mozgókép megjelenítése jóval folyamatosabbnak tűnik az eddigi megoldásokhoz viszonyítva. Egy átlagos OLED kijelző közel háromszor akkora képfrissítési értékkel bír, mint amennyire egy átlagos videó zavartalan megtekintéséhez szükséges. Végül elmondható, hogy az OLED kijelzők áramfelvétele sokkal kisebb, mint az LCD vagy a PLASMA kijelzőké. Jelenleg az OLED kijelzők legnagyobb hátránya a viszonylag rövid élettartam. Ezt az értéket a fényesség mértéke határozza meg, hiszen magas fényesség esetén rövid, alacsony fényesség esetén pedig hosszú ideig képes működni a kijelző. Átlagosan, viszonylag alacsony fényerőértékek mellett körülbelül tízezer órás üzemidőről beszélhetünk. Az OLED kijelzők a legalkalmasabbak a kisebb, hordozható eszközök megjelenítőinek (mobiltelefonok, fényképezők stb.), vagy más futurisztikus termékek kijelzőihez.

Az OLED-ek előnyei:

  • Tintasugaras nyomtatáshoz hasonlóan, egyszerű technológiával lehet a szubsztrátrétegre feljuttatni, ezért olcsóbban gyárthatók, mint a folyadékkristályos vagy a plazma képernyők.

  • Hajlékony szubsztrátokra is felvihetjük, ezért megnyílik a lehetősége a hajlékony vagy akár feltekerhető kijelzők gyártásának is, sőt akár ruhába varrható kijelzőket is gyárthatunk.

  • Közvetlenül bocsátják ki a fényt, ezért nagyobb szögből láthatók, mint a folyadékkristályos technológiájú kijelzők.

  • Míg az LCD kijelzők a háttérvilágítást szűrik, addig az OLED kijelzők a közvetlen fénykibocsátás miatt alig használnak áramot a fekete vagy sötét pixelekhez.

  • Válaszidejük gyorsabb, mint az LCD kijelzőké.

Az OLED-ek hátrányai:

  • Kezdetben a legnagyobb probléma a szerves anyagok rövid élettartalma volt. Különösen a kék OLED-ek élettartalmával volt gond, mely nagyságrendre 14.000 óra volt, ami napi nyolc órás használat mellett öt évet jelent. Ezzel szemben az LCD és a LED technológiák 25.000-40.000 órát ígérnek.

  • Az egyik színkomponenst kibocsátó OLED gyorsabban veszít a fényéből, mint a többi, ezért a színvisszaadás is megváltozik hosszú távon. Ezt korrigálni lehet elektronikusan, de bonyolult vezérlőáramkörök beépítését követeli meg.

  • Az OLED technológia energiatakarékos, egy átlagos kép esetén az LCD technológia által felhasznált teljesítmény 60-80%-a is elég a meghajtásához. Bár sötét képek esetén ez még kedvezőbb, 40% körüli, azonban főleg fehér hátterű képeknél akár két-háromszorosát is fogyaszthatják a folyadékkristályos technológiájú képernyőkhöz viszonyítva.

  • Az OLED pixeleinek élettartama a használattal csökken. Ezért, ha egyes színeket vagy képpontokat sokáig azonos tartalom kijelzésére használunk, a színegyensúly vagy a fényerő megváltozhat azon a területen, a beégés jelenségét produkálva.

  • Az OLED kijelzőket károsítja, ha tartósan UV-fénynek vannak kitéve, ezért ma a legtöbb OLED kijelző UV-szűrő panellel védett.

5.19. ábra - Hajlékony OLED kijelző


5.20. ábra - Egy OLED pixel felépítése


5.11. A LED kijelzők

Az LED (light emitting diode) a legalkalmasabb a nagy területű, úgynevezett videófalak kialakítására. A LED-eknek nagy a lumineszcenciája, nagy hatékonyságúak, hosszú élettartamúak és olcsók. Kültéri berendezéseknél is jól használhatók.

A LED háttérvilágítású LCD-televíziók (néhány gyártó ezeket LED TV-nek nevezi ) a hagyományos LCD-televíziókban használt fluoreszcens fények helyett LED háttérvilágítást alkalmaznak. A LED-eknek két fajtáját alkalmazzák a LED televíziókban. Vagy dinamikus RGB LED-eket helyeznek el közvetlenül a képernyő mögé, vagy fehér oldalvilágítású élvilágító LED-eket építenek be a képernyő széleibe, amelyek egy egyedi fényelosztó panel segítségével világítják be a teljes képernyőt. Ez a háttérvilágítási technológia lehetővé teszi, hogy csökkenteni lehessen a fényerőt a képernyő adott helyein , ahol sötétebb felületre van szükség a megjelenítéshez. Ezzel a háttérvilágítással valódi feketéket és fehéreket lehet megjeleníteni magas dinamikus kontrasztaránnyal, némi részletveszteség árán, olyan témáknál, ahol apró, fényes területek jelennek meg egy sötét háttér előtt. Az oldalvilágítással ultravékony LED háttérvilágítású televíziókat lehet gyártani. A fényt egy egyedi tervezésű panel osztja el a képernyőn, amivel nagyon széles színskálát és valóban sötét feketét lehet megjeleníteni.

A LED háttérvilágítású LCD TV-k a következő főbb pontokban különböznek a CCFL (cold-cathode fluorescent lamps) háttérvilágítású LCD TV-ktől:

  • Nagyobb dinamikus kontrasztarányú képeket jelenítenek meg, mint a CCFL háttér világítású LCD TV-k.

  • Az élvilágítású LED alkalmazásával nagyon keskeny készülékeket lehet gyártani. A jelenleg kapható ilyen televíziók kevesebb, mint 2 cm vastagok.

  • Sokkalta tágabb színkorlátokkal rendelkeznek, különösen az RGB LED használatával.

  • Kisebb a környezetkárosító hatása az életciklus végén.

  • Általában 20-30%-kal kevesebb energiát fogyasztanak.

Mivel a LED-ek gyorsabban képesek ki- és bekapcsolni, valamint nagyobb a fényerejük, mint a CCFL képernyőké, nagyon magas kontrasztarányt lehet velük elérni, amivel sötétebb fekete szín és intenzívebb fényerő jeleníthető meg.

5.21. ábra - LED fal


5.12. Projektorok és a DLP / DMD technikák

A projektorokban egyaránt alkalmaznak CRT, LCD és DMD technikákat. A LCD projektorok olyan kivetítők, amelyeknél egy LCD panelen keresztül érkezik a fény a vetítési felületre, amely panel színenként korlátozza a transzmissziót. Létezik hárompaneles és egypaneles változat. A hárompaneles változatnál a három LCD panel (RGB) az egyes színösszetevőket adja. Az egypaneles változat csak egy LCD panelt tartalmaz, amin a fényforrás fényének alapszínekre bontása dikroikus tükrökkel történik, tehát nincs szükség színszűrőkre. Az LCD technikánál a hő elvezetésével és a tranzisztorok elhelyezésével küzdenek a gyártók. A CRT technikánál a vetített fényerőnek erős fizikai korlátai vannak. Ezen problémák kiküszöbölésére hozták létre a DMD technikát.

A DLP (digital light processing) digitális fény feldolgozást jelent. A DMD (digital micromirror device) pedig egy olyan DLP technológia, amely kisméretű tükröket (kapcsolókat) használ a fényutak manipulálására. Egy DMD eszközt úgy lehet leginkább elképzelni, mint egy általános PC processzort a felületén rengeteg miniatűr tükörrel (kapcsolóval). Minden fénykapcsolóhoz tartozik egy kb. 16 µm-es, négyzetalakú alumínium tükör, amely az alatta elhelyezkedő memóriacella állapotától függően két irányba verheti vissza a fényt. A tükör mozgatása elektrosztatikus tér segítségével történik, melyet a tükör és az alatta elhelyezkedő memóriacella közötti feszültségkülönbség létrehozásával érnek el. Ha a memóriacella bekapcsol, a tükör 10-12 fokban megdől, amikor kikapcsol, a tükör visszaáll alaphelyzetébe. Amennyiben csak egy rövid pillanatra gyullad ki a képpont, azt halványnak, amennyiben pedig hosszabb időre, azt világosabbnak látjuk. A színes képet egy vagy három DMD chippel kombinált forgó vagy rögzített színszűrő segítségével valósítják meg. Az egyes alapszíneknek (vörös, zöld, kék) megfelelő képek a chip felületén alakulnak ki.

5.22. ábra - A DMD technológia színkeverése


5.23. ábra - A DMD technológia színkeverése


5.24. ábra - A DMD pixelek felépítése


5.13. Összefoglalás

A klasszikus és modern megjelenítő eszközöket többféleképpen lehet csoportosítani. Léteznek elektromechanikus kijelzők, csavart nematikus térvezérlésű LCD / vákuum fluoreszcens kijelzők, CRT kijelzők, SED / FED (Surface-conduction Electron-emitter Display  / field-emission displays) kijelzők, LCD (liquid crystal display) / TFT (thin film transistor) / kijelzők, PDP kijelzők (plazma kijelzők), elektronikus papír, OLED kijelzők és DLP eszközök.

A split-flap kijelzőknél egy előre definiált, korlátozott mennyiségű karakterkészlet, illetve fix grafika áll rendelkezésre. Minden karakterhely két „pixelből” áll. A flip-disc és a  flip-dot kijelzők a split-flap kijelzők későbbi változatai, amelyek gyakorlatilag pontmátrixok. A VFD (vákuum fluoreszcens) kijelzőknél is a foszfor elektronokkal történő gerjesztésére bekövetkező fluoreszcenciát használjuk ki.

A csavart nematikus térvezérlésű LCD megjelenítők a LCD kijelzők táborát erősítik. A CRT kijelző tartalmaz egy katódsugárcsövet, amelynek egyik végén egy elektronágyú található,  a másig végén pedig egy foszforral bevont képernyő. Az elektronágyú által kibocsátott elektront egy elektromágneses térrel vezérlik két tengely mentén, majd amikor az elektron az elülső falon lévő foszforréteggel találkozik, és az itt található luminofor képpontokat (melyek előállításához általában cinkvegyületeket használnak) gerjesztve, egy pixelnyi felületen felvillan, majd elhalványodik.

A SED (surface-conduction electron-emitter display) kijelző működési elve hasonló a hagyományos katódsugárcsöves kijelzőkéhez, annyi különbséggel, hogy itt a viszonylag nagy távolságban elhelyezett elektronágyú helyett a felületen létrehozott apró, nanométer nagyságrendű szénszálakból összeállított csatornák lövik az elektronokat külön-külön az egyes képpontokra.

A FED (field emission display - téremissziós kijelző) a leginkább a SED kijelzőkre hasonlít, csak itt minden pixelre egy katód jut. Az e-papír két fő részből áll. Az úgynevezett előlap lényegében maga a tartalommegjelenítő e-ink. A másik rész, a hátlap az elektronika, ami a tartalom létrehozását generálja.

A Gyricon (forgókép) eljárás lényege, hogy mikrokapszulákban golyók helyezkednek el, amit olaj vesz körül, ezáltal biztosítva a szabad forgó mozgást. A golyók egyik fele fekete, a másik fehér, és attól függően fordulnak el a kapszulában az alul levő elektróda felé, hogy milyen pólusú elektromos töltést kapnak a kapszulák.

A folyadékkristályos megjelenítők alapgondolata, hogy a háttérvilágítást, ami a szemünkbe jut, egy olyan folyadékkristály-réteggel korlátozzuk, amelyet szabadon tudunk ki-be kapcsolni, ezzel eltakarva, vagy átengedve a fényt. A folyadékkristály-réteget elektromosan gerjesztjük, aminek hatására elfordul a közeg polarizációs síkja, és így, a már polarizált háttérvilágítást átengedi a közeg túloldalán levő 90 fokkal (az STN, super-twisted nematic kijelzőknél ez az érték 270 fok is lehet) elforgatott újabb polarizációs szűrő, vagy sem (illetve részben átengedi).

A TFT (Thin Film Transistor - vékonyfilm tranzisztor) az LCD technológián alapul. Itt minden egyes képpont egy saját tranzisztorból áll, amely aktív állapotban elő tud állítani egy világító pontot. A PDP működése az LCD-nél is egyszerűbb. A cél az, hogy a három alapszínnek megfelelő képpont fényerejét szabályozni lehessen. A PDP-nél a képpontok a CRT-hez hasonlóan látható fényt sugároznak ki, ha megfelelő hullámhosszú energia éri őket. A lézer kijelzők a jelenlegi hátérvilágításos kijelzőkhöz hasonló módon működik, de a hagyományos vetítőegységekben alkalmazott nagyfényerejű lámpák helyett vörös, zöld és kék lézerfények kombinációjával állítja elő a képet. Az OLED p-n átmenetet képező rétegekből áll, mint a LED-eknél, de itt a vegyületek szervesek. Ha a feszültség nyitóirányú, fény keletkezik abban a régióban ahol az elektronlyukak és az elektronok újraegyesülnek.

A LED háttérvilágítású LCD-televíziók (néhány gyártó ezeket LED TV-nek nevezi ), a hagyományos LCD-televíziókban használt fluoreszcens fények helyett LED háttérvilágítást alkalmaznak. A LED-eknek két fajtáját alkalmazzák a LED televíziókban. Vagy dinamikus RGB LED-ek helyeznek el közvetlenül a képernyő mögé, vagy fehér oldalvilágítású élvilágító LED-eket építenek be a képernyő széleibe, amelyek egy egyedi fényelosztó panel segítségével világítják be a teljes képernyőt. Ez a háttérvilágítási technológia lehetővé teszi, hogy a fényerőt csökkenteni lehessen a képernyő adott helyein, ahol sötétebb felületre van szükség a megjelenítéshez.

A projektorokban CRT, LCD és DMD technikákat is egyaránt alkalmaznak. A LCD projektorok olyan kivetítők, amelyeknél egy LCD panelon keresztül érkezik a fény a vetítési felületre, amely panel színenként korlátozza a transzmissziót. A DLP (digital light processing) digitális fény feldolgozást jelent. A DMD (digital micromirror device) pedig egy olyan DLP technológia, amely kisméretű tükröket (kapcsolókat) használ a fényutak manipulálására. Egy DMD eszközt úgy lehet leginkább elképzelni, mint egy általános PC processzort, a felületén rengeteg miniatűr tükörrel (kapcsolóval). Minden fénykapcsolóhoz tartozik egy kb. 16 µm-es, négyzetalakú alumínium tükör, amely az alatta elhelyezkedő memóriacella állapotától függően két irányba verheti vissza a fényt. A tükör mozgatása elektrosztatikus tér segítségével történik, amelyet a tükör és az alatta elhelyezkedő memóriacella közötti feszültségkülönbség létrehozásával érnek el. Ha a memóriacella bekapcsol, a tükör 10-12 fokban megdől, amikor kikapcsol, a tükör visszaáll alaphelyzetébe.

5.14. A felkészülést segítő kérdések

  1. Hogyan csoportosítaná a klasszikus és modern megjelenítő eszközöket?

  2. Mit jelent a megjeleníthető maximális pixelszám?

  3. Hogyan definiálná a frissítési frekvenciát LCD kijelzőknél?

  4. Milyen szabványos képarányokat ismer?

  5. Mi jellemzi az EGA és XGA jelölésű kijelzőket?

  6. Milyen elektromechanikus kijelzőket ismer?

  7. Mutassa be a split-flap kijelzők működését!

  8. Mutassa be a flip-disc kijelzők működését!

  9. Hol alkalmazzák a vákuum fluoreszcens kijelzőket általában?

  10. Mi a csavart nematikus térvezérlésű LCD kijelző működési elve?

  11. Mutassa be a katódsugárcsöves kijelzőket és működésüket!

  12. Mi a szerepe a háromdimenziós vizualizációnál a képfrissítési frekvenciának?

  13. Mi a különbség a színes és szürkeárnyalatos katódsugárcsöves technika között?

  14. Mik azok a felületátvezetési elektron-emitteres kijelzők?

  15. Mi a különbség a SED és a FED kijelzők között?

  16. Mutassa be az elektronikus papír működési elvét!

  17. Mi az a Gyricon eljárás? Mutassa be a lényegét!

  18. Mi az elektroforézis?

  19. Mik az elektronikus papír előnyei és hátrányai?

  20. Mi a különbség az LCD és a TFT kijelzők között?

  21. Mutassa be a folyadékkristályos kijelzők működési elvét!

  22. Milyen típusú folyadékkristályokat ismer? Mi jellemzi a szmektikus típust?

  23. Mi a különbség a passzív és aktív mátrixú folyadékkristályos kijelzők között?

  24. Mutassa a plazma kijelzők működési elvét!

  25. Mire használják a kijelzőkben a lézereket?

  26. Mit tud az OLED kijelzőkről?

  27. Mutassa be az OLED kijelzők alapelvét!

  28. Mik az OLED kijelzők előnyei és hátrányai?

  29. Mitől kell védeni az OLED kijelzőket és miért?

  30. Mire használják az LED-eket az folyadékkristályos kijelzőknél?

  31. Mi a különbség az LCD és a LED televíziók között?

  32. Mi az a DLP technológia?

  33. Mutassa be a DMD technológia lényegét!

  34. Mutassa be a DMD technológia két alapvető színkeverési módját!

5.15. A fejezet fontosabb kifejezései

CCFL

CRT

csavart nematikus térvezérlés

DLP

DMD

EGA

electron-emitter display

elektroforézis 

elektromechanikus kijelző

elektronikus papír

FED

fényerő

field-emission display

Flip-disc

frissítési frekvencia

Gyricon

high-definition

koleszterikus

kontraszt

LASER

LCD

luminofor

nematikus

OLED

PDP

pixelszám

plazma

QVGA

raszteres

SED

Split-flap

super-twisted nematic

surface-conduction electron-emitter display

SVGA

szmektikus

téremissziós kijelző

TFT

vákuum fluoreszcens

vékonyfilm tranzisztor

VFD

VGA

XGA

Felhasznált irodalmak

[5.1.] Atkinson, R.. Pszichológia. Osiris Kiadó. Budapest . 2003.

[5.2.] Pléh, Cs.. A lélektan története. Osiris Kiadó. Budapest . 2010.

[5.3.] Bányai, É. és Varga, K.. Affektív pszichológia. Medicina Könyvkiadó. Budapest . 2013.

[5.4.] Carver, Charles S. és Scheier, Michael F.. Személyiségpszichológia. Osiris Kiadó. Budapest . 2006.

[5.5.] Cole, Michael és Cole, Sheila R.. Fejlődéslélektan. Osiris Kiadó. Budapest . 2003.

[5.6.] Csépe, V., Győri, M., és Ragó, A.. Általános pszichológia 1. Osiris Kiadó. Budapest . 2007.

[5.7.] Smith, E.R. és Mackie, Diane M.. Szociálpszichológia. Osiris Kiadó. Budapest . 2004.

6. fejezet - A háromdimenziós megjelenítés története

Jelen fejezetben elsősorban a háromdimenziós megjelenítés története kap főszerepet. Ezen belül beszélünk a térlátás kutatásának történetéről, a technológiák kialakulásáról, továbbá szót ejtünk háromdimenziós filmezés történelméről is.

6.1. A térlátásról

A sztereoszkópia egy technika a mélység észlelésére a kétdimenziós felületen. A görög stereos (szilárd, tömör) és skopeo (nézni) szavakból áll. A módszer lényege, hogy két szemünknek különböző képet mutatunk, amiből az agyunk előállítja a háromdimenziós képet. Avagy hogyan állítsunk elő két darab kétdimenziós képből egy háromdimenziós képet?

Fontos látnunk, hogy az ilyenfajta sztereopszisnál a két kép síkja egybeesik, és a képeken látható összes tárgy azonos akkomodációt igényel a szemtől, ezért a háromdimenziós hatás nem teljesen élethű. A közel nézett tárgyaknál a távoli tárgyak a valóságban duplázódnak vizuálisan (és fordítva), de a sztereoszkópnál nem. Továbbá, a szem konvergenciája és akkomodációja sincs szinkronban, ahogyan azt már az első fejezetben említettük. Meg kell említeni a különböző háromdimenziós módszereknél előforduló, a tökéletlen szeparációból származó zavaró hatást. Végül látni kell azt is, hogy egyik, kétdimenziós képek vetítésén alapuló, technikánál sem változtat a megjelenő háromdimenziós tárgyak nézetén a fej-, illetve a szemmozgás. (A holografikus, a volumetrikus, illetve a Holovíziós technikáknál természetesen igen.)

Háromdimenziós megjelenítés
6.1. ábra - Háromdimenziós megjelenítés


Talán először Leonardo da Vinci (1452-1519) fedezte fel, hogy szemeinktől különböző távolságban elhelyezkedő tárgyak olyan képet adnak, amelyeknek különböző horizontális állásúak. Arra a következtetésre jutott, hogy ezért annyira nehéz a festőknek a mélység ábrázolása egy sima festővásznon. Közeli tárgynak egy oszlopot választott egy körkörös keresztmetszeti résszel, távoli tárgynak pedig egy sima falat. Több közeli tárgy választása közben fedezhette fel a tárgyak felületéből adódó horizontális diszparitást. Az oszlop volt az egyetlen azon kevés tárgyak közül, amelynek képe ugyanaz maradt a két szemben.

Leonardo da Vinci arcképe
6.2. ábra - Leonardo da Vinci arcképe


George Berkeley (1685-1753) filozófus és püspök ismeretelméletében részletesen szólt az emberi térlátás mechanizmusairól. 24 éves korában jelentette meg „A látás új elmélete” című munkáját, amelyben arról beszél, hogy milyen szerepe van a motoros összetevők és az érzékek közötti kapcsolatoknak a látásban valamint az észlelésben. Korának elfogadott nézete a természetes geometria volt, ahol a vonalak és szögek magyarázták a távolság észleletét. Szerinte állandó a viszony a pupillák távolodása illetve közeledése és az észlelt tárgyak távolodása illetve közeledése között. Tehát a tapintás „tanítja” a látást csökkentve vagy növelve a pupillák közötti távolságot. „Szemünknek ez a beállítása vagy forgatása együtt jár egy érzettel, s úgy tűnik nekem, ez az az érzet, amely ebben az esetben a nagyobb vagy kisebb távolság ideáját elménkbe juttatja.” (Berkeley) Ma is ez az egyik vezető látáselmélet.

George Berkeley arcképe
6.3. ábra - George Berkeley arcképe


Immanuel Kant (1724-1804), a német felvilágosodás kulcsfigurája is véleményt alkotott a térlátással kapcsolatban. Szerinte minden megismerés érzékeléssel kezdődik, de ez nem jelenti szükségszerűen azt, hogy abból is származik. A megismerőnek rendelkeznie kell bizonyos képességekkel, amelyek egyáltalán lehetővé teszik a megismerés. Ezeket nevezi priori sémáknak, amelyek nélkül egyáltalán nem is létezne megismerés. Például az idő és a tér fogalma, a matematikai és logikai igazságok, illetve az igazság vagy az okság fogalma.

Immanuel Kant arcképe
6.4. ábra - Immanuel Kant arcképe


Hermann von Helmholtz (1821-1894) az „univerzális zseni”, a német tudomány büszkesége mindenütt a természettudományos megoldásokat kereste a filozófiai rejtélyekre. A kor tudománya úgy gondolta, hogy a tér egy kiinduló szerveződés, ami az idegrendszeri struktúránkból, működésünkből ered, nem pedig platóni absztrakció. Helmholtz ezt a racionalista megközelítést kérdőjelezte meg, és egy empirikus térelméletet javasolt helyette. Azt hangsúlyozta, hogy a térészlelés tanult és elméletfüggő. Hitte, hogy amíg például a színek nem állnak tapasztalásunk és mozgásunk vezérlése alatt, addig a térészlelésünk igen (különösen a mozgásunk hatására változik). Helmholtz azt állítja, hogy a retinális jelzések és a tapintás közötti kapcsolat nagyon gyors, tudattalan következtetések alapját képezi. „Az érzékekben keletkezett érzékletek jelpéldányok tudatunk számára, és értelmünk szerepe az lesz, hogy megértse ezek jelentését.” Helmholtz tehát a retinális jelzések lokális értékét feltételezi, amit meg kell tanulnunk értelmezni. A tapasztalás rekonstruktív, a feldolgozás során valahol az agyban fel kell bomlania a geometriai elrendezésnek és rekonstrukciónak kell bekövetkeznie. Minden ingerelt helynek a retinán megfelel egy apró szemmozgás, amely az adott objektumot az éleslátás helyére vinné. (Rudolf Hermann Lotze) Tehát valamit az éleslátás pontjától jobbra vagy balra látni annyit jelent, mint tudomást venni arról a mozgásról, amely szükséges lenne ahhoz, hogy a tárgy képét az foveára vigyük (reflexmozgások elmélete). Lotze lokális jelelméletéből és saját empirikus mozgáselméletéből kiindulva Helmoholtz arra jutott, hogy mozgásaink és szemmozgásaink összekapcsolódnak a retinából származó lokális jelekkel, és így alkotja meg a teret valamint a mélységet. Úgy gondolta, a térlátás innentől kezdve puszta logikai következtetések sorozata.

Hermann von Helmholtz arcképe
6.5. ábra - Hermann von Helmholtz arcképe


Rudolf Hermann Lotze arcképe
6.6. ábra - Rudolf Hermann Lotze arcképe


6.2. A háromdimenziós technikákról

A háromdimenziós megjelenítés történetének első jeles képviselője Charles Wheatstone (1802-1875), aki már 1838-ban publikált a sztereopszisról. Megfigyelte, hogy a két szemünk horizontális pozícióinak következtében kissé eltérő képet szolgáltat az agy számára. Az agy valószínűleg a két kép apró különbségeiből állít elő egy „háromdimenzionális” képet. A külső világ tárgyai szemeink horizontális távolsága miatt eltérő képet mutatnak. Ezzel létrejön binokuláris diszparitás jelensége. Wheatstone azt állította, hogy a háromdimenziós hatás a két dimenziós képek apró eltéréseiből alakulnak ki. A két darab kétdimenziós kép szeparált bemutatásához Wheatstone feltalálta a sztereoszkópot (1832). Ez az eszköz tartalmaz két tükröt, amely 45 fokos szögben áll a felhasználó szemeihez képest (ahogy a 6.8. képen is látható) és a szerkezet két oldalán elhelyezkedő képeket vetíti a szembe. Ebből az agyunk előállítja egy valóságos háromdimenziós tárgy képét. Wheatstone ezt a szerkezetet még a fotográfia felfedezése előtt egy évvel mutatta be, ezért a képek helyett rajzokat használt.

Charles Wheatstone arcképe
6.7. ábra - Charles Wheatstone arcképe


Wheatstone-féle sztereoszkóp
6.8. ábra - Wheatstone-féle sztereoszkóp


A Viktoriánus korban (1837-1901) David Brewster (1781-1868) nevéhez kötődik a prisma sztereoszkóp (1849) felfedezése. Tévesen a közhiedelemben az él, hogy ő találta fel, de valójában egy Jules Duboscq (1817-1886) nevű műszerfejlesztő alkotása volt. Brewster csupán javasolta a lencsék sztereoszkópban való alkalmazását. Neki köszönhetően a sztereopszis nagyon népszerűvé vált. Ez, a fényképezéssel egyesítve, tízezer sztereogram elkészítését tette lehetővé. 1844-ben a Soleil & Dubosq cég támogatásával David Brewster bemutatta a sztereoszkópikus fényképekhez kifejlesztett eszközét. 1851-ben bemutatták Victoria királynő háromdimenziós fotóját a londoni világkiállításon.

David Brewster arcképe
6.9. ábra - David Brewster arcképe


David Brewster posztere a kiállításon
6.10. ábra - David Brewster posztere a kiállításon


Jules Duboscq arcképe
6.11. ábra - Jules Duboscq arcképe


Brewster-féle sztereoszkóp
6.12. ábra - Brewster-féle sztereoszkóp


1850-ben Strelisky Lipót elkészítette az első magyar sztereodagerrotípiát. 1855-ben feltalálták a kinematosztópot (animációs sztereo kamera).

Oliver Wendell Holmes, Sr. (1809-1894) 1861-ben kifejlesztett egy gazdaságosan gyártható, egyszerű, kézi sztereoszkópot, amely fából volt, két lencsét tartalmazott és egy tartót a képeknek. Csaknem egy évszázadig maradt gyártásban. Ugyan amerikai találmány volt, elsősorban mégis „Mexikói sztereoszkóp”-nak nevezték.

Oliver Wendell Holmes, Sr. arcképe
6.13. ábra - Oliver Wendell Holmes, Sr. arcképe


„Mexikói sztereoszkóp” képe
6.14. ábra - „Mexikói sztereoszkóp” képe


1960-ig a sztereopszis az emberi látás határainak és kapcsolatainak kutatásában játszott nagy szerepet. Peter Ludvig Panum, Ewald Hering, Adalbert Ames Jr. és Kenneth N. Ogle is ezt kutatta.

A hatvanas években Julesz Béla feltalálta a véletlen-pont sztereogramot (random dot stereogram). Az eddigi sztereogramokkal ellentétben, amelyekben minden kép felismerhető tárgyat tartalmazott, itt minden mutatott tárgy képe hozzávetőlegesen 10 000 kis pontról mutatott négyzetes mátrixot, és annak, hogy egy pont fekete vagy fehér 50%-os esélye volt. A képek egyikén sem voltak a tárgyak felismerhetők. A pont sztereogramon megjelenő két kép lényegében ugyanaz, kivéve azt, hogy az egyik képen a pontokból álló négyzetes terület vízszintesen eltolva szerepel, létrehozva ezzel a horizontális diszparitást. A rés, amely az eltolódás miatt jött létre, véletlenszerűen, új pontokkal lett kitöltve, eltüntetve az eltolt területet. A véletlens-pont sztereogrammok kiemelik a sztereopszis problémáját. Ez akkor jelentkezik, amikor az egyik kép, egy másik képpel párosítható, a sok azonos színű ponton keresztül. A látórendszer egyszerűen megoldja ezt a problémát, közvetlenül látjuk a mélységet az összeillesztési hibák helyett. Még az 1960-as években Horace Barlow, Colin Blakemore és Jack Pettigrew neuronokat fedeztek fel a macskák vizuális kortexében, amelyeknek külön receptív mezőjük volt a két szemben, különböző horizontális állásokban. Ez a felismerés megteremtette a sztereopszis neurális alapjait. Később David Hubel és Torsten Viesel is találtak hasonló neuronokat majmok agykérgében. Az 1980-as években Gian Poggio is talált neuronokat majmok V2 agykérgi területein, amelyek választ adtak a véletlen-pont sztereogramokon megjelenő mélység észlelésére.

6.15. ábra - Julesz Béla arcképe


6.16. ábra - Julesz-féle random dot stereogram


A 70-es években Christopher Tyler (aki Julesz Bélával dolgozott) feltalálta az autosztereogramot, egy véletlen-pont sztereogramot, ami sztereoszkóp nélkül is jól látható volt. Ez vezetett később a varázsszem képekhez, amelyek a kilencvenes években jöttek divatba. A varázsszem már nem igényelt sztereogramot, arra támaszkodott, hogy a nézők szabadon egyesítik a két szembe érkező eltérő képeket.

6.17. ábra - Autosztereogram


6.3. A háromdimenziós filmvetítésről

A filmkészítők csaknem a kezdetektől törekedtek rá, hogy filmjeiket minél látványosabbra készítsék. Ennek egyik eszköze volt, hogy a filmeket háromdimenziós kivitelben vették fel. Minden bizonnyal a legelső háromdimenziósan vetített rövidfilm a Lumiere-fivérek által megalkotott, 1903-as megjelenésű L'arrivee du train volt, amelyet anaglif  (anaglyph) technikával készítettek. A húszas években divatba jöttek a zöld-piros üvegek, amelyek lehetővé tették a sztereofilmek nézését. 1915-ben elkészült az első anaglif  mozifilm, a The Power of Love, amit 1922-ben műsorra tűztek a mozikban. Ez a film sajnos nem őrződött meg napjainkig. Laurens Hammond és William F. Cassidy 1922 végén bemutatták Teleview System nevű rendszerüket, amely a két szem számára váltogatva vetítette a képkockákat, és az ülésekhez erősített kis nézegetők a képkockákkal összhangban zárták el a fény útját az egyik, majd a másik szem előtt. A kor technológia fejlettsége sajnos nem tette lehetővé, hogy a filmkészítők gazdaságosan tudjanak jó minőségű, háromdimenziós filmeket készíteni. Továbbá közrejátszott még a nagy gazdasági világválság is abban, hogy a stúdiók elvetették a háromdimenziós filmek tömeges készítésének ötletét. 1935-ben elkészül az első színes, háromdimenziós mozifilm. Edwin H. Land a harmincas években fejlesztette ki a polarizációs technikákat, amelyek hamar begyűrűztek a filmiparba is. A filmszínházaknak ez megint csak többletkiadást jelentett, hiszen nem csupán drágább, polarizációs szűrőkkel rendelkező projektorokra, vetítőkre volt szükség, de egy úgynevezett silver screen-re is (olyan vetítő felület, amelyről visszaverődve a fény nem változtatja meg polarizációs tulajdonságait). Az első színes háromdimenziós filmet 1952-ben vetítették (Bwana Devil) a Gunzberg-féle „Natural Vision” technikával, ami szintén egy polarizációs szűrős technika volt. Ebben az időszakban ez a megoldás volt a legelterjedtebb. 1947-ben elkészül az első orosz 3D-s mozifilm, a Robinson Crusoe. Az ötvenes években a polarizált üvegek segítségével színes, háromdimenziós filmek is nézhetővé váltak.

Lumiere-fivérek
6.18. ábra - Lumiere-fivérek


Edwin H. Land
6.19. ábra - Edwin H. Land


Az ötvenes években volt a háromdimenziós filmezés első virágkora. Az amerikai háborút követő felvirágzás hozzájárult ahhoz, hogy sok filmszínház-tulajdonos fogékonnyá vált az új technikák beépítésére. Az anaglyph technikával készülő háromdimenziós képregények a gyerekek körében hódítottak teret. A Bwana Devil csak a kezdet volt, innentől kezdve csaknem tíz éven keresztül, több tucat háromdimenziós film jelent meg. 1953-bam bemutatták a House of Wax című filmet, amely szintén előkelő helyen szerepelt a nézettségi listákon. Ez volt egyébként egyben az első film, amit térhatású hanggal vetítettek a mozikban. Az ötvenes évek végére azonban a háromdimenziós filmek népszerűsége csökkent. Ez annak volt betudható, hogy az ilyen filmek vetítése sokkal drágább volt. Kettős orsót kellett alkalmazni, és rendkívül pontos szinkronizációt kellett megvalósítani. Egy kis szinkronizációs hiba is szem- vagy fejfájáshoz vezetett. A filmszínházaknak egyre kevésbé érte meg a háromdimenziós „üzletág”, hiszen nem volt elegendő a költségvetésük a drága vetítőgépek beszerzésére.

Bwana Devil
6.20. ábra - Bwana Devil


A háromdimenziós filmezés a hatvanas évek elejére gyakorlatilag megszűnt. 1961-ben bátor filmkészítők mégis igyekeztek életben tartani a 3D-ipart a Maszk című filmmel, ami alapvetően egy kétdimenziós film volt, ahol bizonyos jeleneteknél a közönség azt az utasítást kapta, hogy vegye föl a háromdimenziós szemüveget.  A háromdimenziós filmezés reneszánsza akkor kezdődött, amikor egy producer, Arch Gobler megtalálta a módját, hogy ne kelljen a filmek vetítéséhez két vetítő. A Space-Vision 3D nevű technikához csupán egy vetítőre volt szükség, mivel a filmszalag volt két részre osztva. Amennyiben a szalagokat jól gyártották, a közönségnek nem volt többé gondja a szinkronizációs problémák következtében kialakuló fejfájással. A hatvanas, hetvenes években a háromdimenziós filmezés vesztett egyébként is aprócska lendületéből, majd az évtized végére egy újabb összeomlás következett be. Ahogy a háromdimenziós technikák egyre fejlettebbek lettek, a moziknak és a filmkészítőknek egyaránt aránytalanul nagy költségeket okoztak. A közönség is vesztett érdeklődéséből, hiszen a már csaknem harminc éves, olcsó anaglyph technikát alkalmazták széles körben a mozikban.

IMAX kamera
6.21. ábra - IMAX kamera


A nyolcvanas években ismét a merész filmesek egy csoportja újra belevágott a háromdimenziós filmkészítésbe. Új, olcsóbb és impresszívebb eljárásokat fejlesztettek ki, amelynek köszönhetően rövid időn belül a háromdimenziós filmezés valóságos virágkorát élhette. A nyolcvanas évek közepére már sokkal jobb minőségű, a nézőknek nagyobb élményt nyújtó filmeket vetítettek a mozikban. Az új IMAX 3D technológia rövid időn belül ismertté vált. Nagyobb képernyőt, erősebb fényeket, olcsóbb filmeket ajánlott a nézőknek. 1986-ben Francis Ford Coppola Captain Eo című filmje Michael Jackson főszereplésével igen impozáns bemutatója volt az új technikának. A filmet voltaképpen négydimenziós filmként adták el, hiszen a Disney filmszínházban lézer fényekkel, köd effektekkel és hidraulikus székekkel is kiegészítették a háromdimenziós élményt. IMAX 3D filmek tömkelege jött ki akkortájt. Az 1986-os vancouveri expón bemutatták a Transitions című filmet, amelyet az új polarizációs technikával vetítettek. Ez fordulópontot jelentett a háromdimenziós filmezés területén. A nyolcvanas és kilencvenes években nagy teret hódított magának az új IMAX 3D technika. Számos mozi jött létre, ahol főleg ismeretterjesztő filmeket vetítettek három dimenzióban. Nagy hatással volt a háromdimenziós filmezésre a 2004-ben vetített Polar Express című, teljes műsoridős animációs film. Egyidejűleg vetítették szabványos mozikban és IMAX termekben is. Az IMAX mozik csak töredékét képezik az összes mozik számának, mégis a bevételek negyedét sikerült megszerezniük. Az összes nagy háromdimenziós cég (RealD 3d, Dolby 3d, MasterImage 3d) felhagyott a hagyományosnak számító anaglyph szemüvegek használatával, és ezentúl csak polarizációs technikával, illetve LCD shutter glasses technikával dolgoztak. A stúdiók lassan elkezdték a régebbi kétdimenziós filmjeik „háromdimenziósítását”. Habár ez a kor digitális technikájával már egyszerűnek látszott, ritkán volt sikeres próbálkozás. Az első jelentősebb film, amit háromdimenzióssá változtattak a Superman Returns volt.

IMAX vetítőgépek
6.22. ábra - IMAX vetítőgépek


A legutóbbi fellángolás elindítója kétségkívül James Cameron Avatar című filmje volt, amely valószínűleg minden idők egyik legdrágább filmje, a benne található impozáns háromdimenziós hatások és a számítógéppel segített jelenetek miatt. A film rekord bevételt is hozott. Bizonyította, hogy a közönség hajlandó magasabb összegeket is kiadni egy filmes élményért, ha biztosított a minőségi élmény. A 2010-es háromdimenziós fellángolás, egyelőre úgy tűnik, még nem fenyeget összeomlással, mint korábban megannyiszor.

2010-ben elindult a világ első, teljes adásidejében háromdimenziós tartalmakat sugárzó tévécsatornája. A dél-koreai Sky 3D side-by-side formátumban, 1920 x 1080i felbontásban sugározza műsorát. Még ugyanebben az évben a Consumer Electronics Show kiállításon a legnagyobb elektronikai gyártók bemutatták háromdimenziós televíziókészülékeik prototípusait.

Érdekes tény, hogy az első háromdimenziós eszköz megjelenésétől újra és újra „3D-robbanások” történnek, amelyek időpontjai fura módon 30 évenként követik egymást (1920, 1950, 1980, 2010). Bekövetkezik egy fellángolás, majd hanyatlás és így tovább. A legutóbbi robbanás kezdete az Avatar című filmhez köthető, amely talán az első olyan, teljes műsoridőben vetített film volt, amelyben nem a térhatás volt a legfontosabb elem, hanem maga a tartalom. Úgy is megfogalmazhatnánk, hogy az első olyan háromdimenziós film volt, amely tartalom szempontjából is értékelhető.

Úgy tűnik, hogy a legutóbbi háromdimenziós fellángolás még nem ért véget (bár lanyhulása látható). A lendület megmaradása talán azzal is magyarázható, hogy a felhasználóknak manapság már számos lehetősége van a háromdimenziós tartalmak olcsó megtekintésére és készítésére is. Rendkívül gyorsan elterjedtek a különféle otthoni 3D-képes kivetítők és televíziók, amelyek árai elérhető tartományban mozognak. Manapság (2014) a 3D TV-k árai csaknem megegyeznek a hagyományos televíziók áraival. Otthonainkban elterjedtek a különböző technikákat alkalmazó 3D TV-k (polarizációs szűrős, shutter glasses és autosztereokopikus). Megjelentek a különböző háromdimenziós tartalmakat kiszolgáló eszközök és erőforrások (például a Blue-ray disk), amelyek lehetővé teszik, hogy a 3D csaknem minden emberhez eljusson, aki élvezni szeretné. A mai háromdimenziós megjelenítési technikák még számos hibával rendelkeznek, és használatuk sem teljes mértékben komfortos. A legfontosabb kihívássá az vált, hogy a háromdimenziós tartalmakat a lehető legkevesebb életidegen eszköz használatával lehessen igénybe venni. Napjaink legdrágább készülékei az autosztereokopikus (lentikuláris vagy parallax) kijelzővel rendelkező TV-k. Az ezeken nézett adások azonban még mindig nem tökéletes minőségűek, főleg a fej mozgásakor fedezhető fel kellemetlen csíkos hatás a képernyőn. Számos, megjelenítővel rendelkező elektronikus eszközben található már háromdimenziós kijelző, amelyet szemüveg nélkül lehet használni (például Nintendo vagy mobiltelefon). Az autosztereokopikus kijelzőket jelenleg a legtöbb esetben marketing céllal használják plázában, kirakatokban és áruházakban.

6.23. ábra - Autosztereokopikus kijelző (PlayStation Portable)


6.24. ábra - Otthoni 3D TV


6.25. ábra - Autosztereokopikus kijelző (Nintendo)


A háromdimenziós technikák igen hosszú utat jártak be az utóbbi 100 évben, főleg az utóbbi évtizedben. Az út a fekete-fehér mozdulatlan dagerotipiáktól indult, és az otthonainkban megtalálható szemüveg nélkül nézhető autosztereokopikus kijelzőkig tartott. A technológia fejlődése természetesen nem áll meg, de jelen könyv történeti része idáig terjedhetett.

6.26. ábra - 1800-as évekbeli festmény, amelyben egy sztereoszkóp is helyet kapott


6.27. ábra - 3d kamera egy sporteseményen


6.4. Összefoglalás

Leonardo da Vinci (1452-1519) fedezte föl, hogy szemeinktől különböző távolságban elhelyezkedő tárgyak olyan képet adnak, amelyeknek különbözőek és horizontális állásúak. George Berkeley (1685-1753) filozófus és püspök ismeretelméletében részletesen beszélt az emberi térlátás mechanizmusairól. Immanuel Kant (1724-1804), a német felvilágosodás kulcsfigurája is véleményt alkotott a térlátással kapcsolatban. Szerinte minden megismerés az érzékeléssel kezdődik, de ez nem jelenti szükségszerűen azt, hogy abból is származik. Hermann von Helmholtz (1821-1894), az  „univerzális zseni”, a német tudomány büszkesége mindenütt a természettudományos megoldásokat kereste a filozófiai rejtélyekre. A kor tudománya úgy gondolta, hogy a tér egy kiinduló szerveződés és az idegrendszeri struktúránkból, működésünkből ered, nem pedig egy platóni absztrakció.

A háromdimenziós megjelenítés történetének első jeles képviselője Charles Wheatstone (1802-1875), aki már 1838-ban publikált a sztereopszisról. Wheatstone feltalálta a sztereoszkópot (1832). David Brewster (1781-1868) nevéhez kötődik a prisma sztereoszkóp (1849) felfedezése. 1844-ben a Soleil & Dubosq cég támogatásával David Brewster bemutatta a sztereoszkópikus fényképekhez kifejlesztett eszközét. 1850-ben Strelisky Lipót elkészítette az első magyar sztereodagerrotípiát. 1855-ben feltalálják a kinematosztópot (animációs sztereo kamera). Oliver Wendell Holmes, Sr. (1809-1894) 1861-ben kifejlesztett egy gazdaságosan gyártható, egyszerű, kézi sztereoszkópot, amely fából volt, két lencsét tartalmazott és egy tartót a képeknek. A hatvanas években Julesz Béla feltalálta a véletlen-pont sztereogramot.

Minden bizonnyal a legelső háromdimenzióban vetített rövidfilm a Lumiere-fivérek által megalkotott 1903-as megjelenésű L'arrivee du train volt, amelyet anaglif technikával készítettek. 1915-ben elkészült az első anaglif mozifilm, a The Power of Love, amit 1922-ben tűztek műsorra a mozikban. Laurens Hammond és William F. Cassidy 1922 végén bemutatták Teleview System nevű rendszerüket, amely a két szem számára váltogatva vetítette a képkockákat, és az ülésekhez erősített kis nézegetők a képkockákkal összhangban zárták el a fény útját az egyik, majd a másik szem előtt. 1935-ben elkészült el az első színes, háromdimenziós mozifilm. Edwin H. Land a harmincas években fejlesztette ki a polarizációs technikákat, amelyek hamar begyűrűztek a filmiparba is. Az első színes háromdimenziós filmet 1952-ben vetítették (Bwana Devil) a Gunzberg-féle „Natural Vision” technikával, ami egy polarizációs szűrős technika volt. 1947-ben megszületett az első orosz, háromdimenziós mozifilm, a Robinson Crusoe. Az ötvenes években volt a háromdimenziós filmezés első virágkora. Az ötvenes évek végére azonban a háromdimenziós filmek népszerűsége csökkent. A hatvanas, hetvenes években a háromdimenziós filmezés vesztett, egyébként is aprócska lendületéből, majd az évtized végére egy újabb összeomlás következett be. A nyolcvanas években merész filmesek egy csoportja újra belevágott a háromdimenziós filmkészítésbe. Az új IMAX 3D technológia rövid időn belül ismertté vált. Ez nagyobb képernyőt, erősebb fényeket, olcsóbb filmeket ajánlott a nézőknek. Az 1986-os vancouveri expón bemutatták a Transitions  című filmet, amelyet az új polarizációs technikával vetítettek. Nagy hatással volt a háromdimenziós filmezésre a 2004-ben vetített Polar Express című, teljes műsoridős animációs film. A legutóbbi fellángolás elindítója kétségkívül James Cameron Avatar című filmje volt, amely valószínűleg minden idők egyik legdrágább filmje, a benne található impozáns háromdimenziós hatások és a számítógéppel segített jelenetek miatt. 2010-ben elindul a világ első, teljes adásidejében háromdimenziós tartalmakat sugárzó tévécsatorna.

6.5. Felkészülést segítő kérdések

  1. Mi az a sztereoszkópia?

  2. A sztereoszkópiánál miért nem teljesen élethű a háromdimenziós hatás?

  3. Ki fedezte fel - vélhetően először-, hogy a szemeinktől különböző távolságban elhelyezkedő tárgyak olyan képet adnak, amelyeknek különböző horizontális állásúak?

  4. Mi „A látás új elmélete” című munka fő mondanivalója, és ki írta?

  5. Mi Immanuel Kant térlátással kapcsolatos elképzelése?

  6. Mit gondolt Hermann von Helmholtz az emberi térlátásról?

  7. Mit jelent a térlátás rekonstruktív természete?

  8. Mutassa Charles Wheatstone találmányát!

  9. Milyen találmányok kötődnek David Brewster nevéhez

  10. Mi az a kinematoszkóp, és mikor találták fel?

  11. Mit neveztek „Mexikói sztereoszkóp”-nak?

  12. Részletezze a Julesz Béla-féle véletlen-pont sztereogramot!

  13. Mi az autosztereogram?

  14. Ki készítette az első háromdimenzióban vetített rövidfilmet?

  15. Mi volt a Gunzberg-féle „Natural Vision” technika?

  16. Mikor volt a háromdimenziós filmezés első virágkora?

  17. Milyen hatásai voltak a szinkronizációs hibának?

  18. Milyen problémát oldott meg Arch Gobler?

  19. Melyik évtizedhez köthető az IMAX technika?

  20. Az 1986-os vancouveri expón bemutatták a Transitions című filmet. Milyen technikát használtak?

  21. Mikor volt a legutóbbi háromdimenziós fellángolás, és milyen filmmel kezdődött?

6.6. A fejezet fontosabb kifejezései

Adalbert Ames Jr.

akkomodáció

anaglyph

Arch Gobler

autosztereogram

Charles Wheatstone

Christopher Tyler

Colin Blakemore

David Brewster

David Hubel

Dolby 3d

Ewald Hering

George Berkeley

Gian Poggio

Gunzberg

Hermann von Helmholtz

Horace Barlow

IMAX 3D

Immanuel Kant

Jack Pettigrew

James Cameron

Julesz Béla

Kenneth N. Ogle

konvergencia

lentikuláris

Leonardo da Vinci

Lumiere-fivérek

MasterImage 3d

Mexikói sztereoszkóp

Natural Vision

Oliver Wendell Holmes, Sr.

parallax

Peter Ludvig Panum

random dot stereogram

RealD 3D

shutter glasses

silver screen

Strelisky Lipót

szinkronizáció

sztereodagerrotípia

sztereogram

sztereopszis

sztereoszkóp

sztereoszkópia

Torsten Viesel

 

Felhasznált irodalmak

[6.1.] Atkinson, R.. Pszichológia. Osiris Kiadó. Budapest . 2003.

[6.2.] Pléh, Cs.. A lélektan története. Osiris Kiadó. Budapest . 2010.

[6.3.] Bányai, É. és Varga, K.. Affektív pszichológia. Medicina Könyvkiadó. Budapest . 2013.

[6.4.] Carver, Charles S. és Scheier, Michael F.. Személyiségpszichológia. Osiris Kiadó. Budapest . 2006.

[6.5.] Cole, Michael és Cole, Sheila R.. Fejlődéslélektan. Osiris Kiadó. Budapest . 2003.

[6.6.] Csépe, V., Győri, M., és Ragó, A.. Általános pszichológia 1. Osiris Kiadó. Budapest . 2007.

[6.7.] Smith, E.R. és Mackie, Diane M.. Szociálpszichológia. Osiris Kiadó. Budapest . 2004.

7. fejezet - Illúzión alapuló technikák, autosztereogramok

A térbeli megjelenítést biztosító technológiák számtalan csoportosítása ismert, ezek közül az egyik legismertebb az alábbi:

  • volumetrikus megjelenítők,

  • autosztereó megjelenítők,

  • holografikus megjelenítők.

A másik fontos csoportosítás alapja az, hogy a térbeli hatás elérése során valóságos hullámfrontot hozunk létre, vagy csak ernyőn megjelenő képeket juttatunk az agyba. Már a tizenkilencedik század közepén ismertek voltak olyan sztereo megjelenítő berendezések, amelyekhez az ábrázolandó objektumról rajzot, vagy esetleg fényképet készítettek úgy, hogy azok a tárgyat két különböző pozícióban ábrázolták. Egy optikai berendezéssel ezeket a képeket külön-külön, azaz szétválasztva juttatták be a szembe, így az agy tulajdonképpen a tárgyat két szemmel látta, létrehozva így a térbeliség érzését. A megjelenítendő tárgyról általában az emberi szem bázistávolságára lévő pozícióból készítették a képeket. Az ilyen berendezések azonban korlátozott látómezejűek és színterűek voltak. A kép nélküli térbeli megjelenítés az újabb idők terméke. Itt általában hullámfront-rekonstrukciót valósítunk meg. Ennek tipikus példája a hologram, mely készítése során olyan eszközt hozunk létre, mely visszaállítja az ábrázolandó, valóságos tárgy felületéről visszaverődő hullámfrontot. A tárgy egyszerű szemlélése esetén, annak felületéről – a tulajdonságait hordozó –, reflektálódó hullámfrontot engedjük a szemeinkbe, ezáltal az agy képes a térbeliség érzésének létrehozására. Ha a tárgyról érkező hullámfrontot egy referenciahullámmal hozzuk kapcsolatba, akkor azok hatnak egymásra, és interferencia jelenséget hoznak létre. Ha ezt az interferencia jelenséget rögzítjük, majd ezt a referenciahullámmal hozzuk kapcsolatba, akkor gyakorlatilag az eredeti hullámfrontot kapjuk vissza. Tehát a hologram rekonstrukciója során a tárgyról érkező hullámfront helyett, annak egy mesterségesen előállított változatát bocsátjuk a megfigyelő szemébe, így biztosítva a térbeliség hatásának létrejöttét. A holografikus megjelenítők ezt a hatás érzését hivatottak létrehozni. Eszközigényük viszonylag költséges, ez széleskörű elterjedésük korlátja.

7.1. A korszerű sztereo-szétválasztásos módszerek

Az alapgondolat itt is változatlan; az agyi szinten létrejövő térbeliség érzetéhez a megfigyelést végző személy jobb, illetve bal szemébe egyazon tárgyról, tárgyrészről, vagy térrészről különböző perspektívából készült felvételeket juttatjuk. Ezáltal biztosítjuk, hogy agyi szinten létrejöjjön a térbeliség virtuális hatása. Ezekkel a módszerekkel - a legtöbb esetben - ugyanolyan fényviszonyokkal rendelkező térrészben végezzük a sztereoszkopikus látványt eredményező képi információk kódolását és dekódolását. A szakirodalom megkülönböztet szín-, polarizációs, idő- és térbeli szétválasztáson alapuló módszereket.

A passzív eljárások lényege, hogy nincs szükség a térbeliség érzésének létrehozásához aktív eszközre. E módszerek között a legrégibben alkalmazott a polarizációs elven működő háromdimenziós megjelenítő, melynek legfontosabb elemei a lineáris polarizációs szűrők. A módszer nagy előnye, hogy színhelyes látványt ad, annak ellenére, hogy a vetítéskor és a szemléléskor is szükséges polarizációs szűrők jelentős denzitása (tömöttsége) a látványt erősen fényszegénnyé teszi. Az eszköz két vetítőt tartalmaz, melyek egymásra merőleges polarizációs síkú szűrőkön keresztül vetítik ki a két különböző pozícióból készített képet. A vetítéshez egy speciális felületi kiképzésű ernyőt alkalmaznak, amely nem befolyásolja a ráeső fény polarizációs állapotát, ez ugyanis a hatás szempontjából káros lenne. A megfigyelő szintén olyan szemüvegpáron keresztül szemléli az ernyőt, amely két – egymásra szintén merőleges polarizációs síkú – szűrőt tartalmaz.  A térbeliség érzésének eléréséhez az egyik szemébe csak az egyik, míg a másik szemébe csak a másik vetítőből származó kép jut. Az alkalmasan megválasztott irányú, lineárisan polarizált fényt, a rá merőleges polarizációs síkú szűrő nem engedi át, míg a vele azonos polarizáltságú átengedi. A módszer hátránya – a fényszegénységen túl –, hogy a két optikai út nem tökéletesen választható szét, így közöttük úgynevezett áthallás jön létre. Érzékeny a módszer továbbá a megfigyelő fejének szögére is, ez még tovább fokozza az áthallás illúzióromboló hatását. Technikai nehézség ugyan, de gondosan ügyelni kell arra, hogy a vetített képek pozíció és nagyítás szempontjából illeszkedjenek, ugyanis ennek hiányában a látvány nem térbeli hatású, sőt egyenesen zavaró. Előny viszont, hogy a szem bázistávolságához képest nagyobb távolság választása a felvételek készítése során, fokozottan hat a térbeliség látványára. A távolságot minden határon túl növelve, már szinte hihetetlen térbeliségű képek állíthatók elő.

Összefoglalva tehát megállapítható, hogy a polarizáció elvére építve előállítható a térbeliség érzése. Ehhez egy polarizációs szűrőkkel ellátott szemüvegre, és szintén polarizációs szűrőkkel kiegészített optikai rendszerekkel rendelkező vetítő, vagy polarizációs megjelenítő egységekre van szükség. A szemüvegekben lévő, eltérő polarizációs síkú szűrők biztosítják az ernyőről érkező, szintén egymásra merőleges polarizáltságú képek szétválasztását. Sajnos a lineáris polarizációjú szűrők alkalmazása a térbeli megjelenítést a fej pozíciójának szempontjából rendkívül érzékennyé teszi. Jelenleg ez a módszer tekinthető a legolcsóbb, otthoni körülmények között is alkalmazható, háromdimenziós megjelenítés eszközének.

A fejezet további részeiben szó lesz a Wiggle-sztereogramról, az autosztereogramokról és a véletlen-pont sztereogramról.

7.2. A Wiggle-sztereogram

A háromdimenziós hatást illúzióval is el lehet érni. A korábbi fejezetekből láthattuk, hogy számos olyan mélységi jelzőmozzanat létezik, amelyet a háromdimenziós hatáskeltésre használhatunk.

Az alábbi, illúzión alapuló háromdimenziós hatáskeltés a wiggle (mozgó) sztereoszkópia névre hallgat. Ennél a technikánál a jobb és a bal szem számára megkívánt ingeranyagot felváltva jelenítjük meg a kijelzőn. Ennek következtében fellép az úgynevezett parallax hatás, és az agyunkban kialakul egyfajta háromdimenziós érzet a látott jeleneteket személve.

Ezeket az animációkat többnyire számítógéppel állítják elő. A módszer nagy előnye, hogy akár egy szemmel is érezhető a háromdimenziós hatás, nem kell hozzá külön szemüveg vagy szűrő. Hátránya, hogy nem közölhető a nyomtatott médiában, mivel aktív animációról van szó (hacsak nem lentikuláris autosztereogramként tesszük azt) valamint, hogy nem nyújt valóságos háromdimenziós binokuláris mélységérzetet.




7.3. Az autosztereogramok

Az autosztereogramok egyetlen képből állnak, amelyeken háromdimenziós hatás tapasztalható, ha megfelelően nézzük őket. Ez a speciális nézés teljes mértékben ellentétes a normál nézésünkkel, ezért elég nehéz előidézni. A normál nézéskor a szem akkomodációs mozgása követi a vergenciát, azaz ott látunk élesen, ahová a két szemünkkel nézünk, ahol a két szemtengely képzeletbeli vonala metszi egymást. Az autosztereogramok nézésekor viszont akkor lehet háromdimenziós élményünk, ha ezt a két mozgást külön tudjuk választani. A háromdimenziós tartalmak megjelenésekor tehát a kijelzőre kell akkomodálnunk a szemlencsénkkel, miközben a vergenciánk összetart, vagy széttart a kijelzőhöz képest, azaz a távolba nézünk vagy közelebb, mint a kijelző.

Egy autosztereogramon vízszintesen többször is ismétlődnek a minták. Az ismétlődő mintákon azonban apró különbségek fedezhetők kel, amelyeket agyunk úgy értékel, mint egyfajta paralaxist, amely a kijelző síkja előtt vagy mögött helyezkedik el. Ha kvázi párhuzamos vergenciával nézünk az autosztereogramra, akkor két, egymás melletti mintaismétlést (amelyek a szemtengelyünkbe esnek) egyként látunk. Ha egy ismétlődő minta a többi mintához képest sűrűbben helyezkedik el, akkor azt agyunk úgy értelmezi, hogy az adott mintaelem közelebb van hozzánk, mint a minta többi része. Így jelenik meg bármilyen mintaelem 3 dimenzióban az autosztereogramon.

7.4. ábra - Autosztereogram (közelebb lévő tigrisek)


7.5. ábra - Autosztereogram (cápa)


7.4. A véletlen-pont sztereogram

Julesz Béla 1960-ban felfedezte, hogy a sztereolátást nem előzi meg az tárgyak azonosítása, mint ahogy azt addig hitték. A térbeli mélységet a retinális képeken lévő tárgyak felismerése nélkül is képesek vagyunk érzékelni. Julesz ezt a felfedezést a róla elnevezett random-dot sztereopárokkal bizonyította be. A Julesz-féle sztereopár két képet tartalmaz a két szem számára, amelyeket szeparáltan kell bemutatni. Az egyik képen váletlen pontokat látunk, a másik képen pedig ez előző kép kicsit módosított változatát. A módosítás lényege, hogy a kívánt alakzat pontjait a diszparitás mértékével eltoljuk balra vagy jobbra, és az üresen maradt képpontokat véletlenszerűen feltöltjük. Ekkor a személőnek azonnal előbukkan a kívánt alakzat az előzetes felismerés nélkül. A kép nagyon stabil, és pásztázó szemmozgásoknál is fönnmarad.

7.6. ábra - Egy Julesz Béla féle random-dot sztereogram


8. fejezet - Holográfia a háromdimenziós megjelenítésben és a méréstechnikában

A holográfia a megjelenítésben és a méréstechnikában egyaránt fontos szerepet tölt be, alkalmazása elterjedt. A továbbiakban a holográfiához kapcsolódó alapfogalmakat és alkalmazásokat tárgyaljuk.

8.1. A holográfia alapelvei

Gábor Dénes által kidolgozott, és elméleti úton megalapozott módszerben eredetileg egy koherens forrásból a tárgyra érkező fényhullám szóródott, és ezt a szóródó hullámot, amely már információt hordozott a tárgy felületéről interferáltatták egy referenciahullámmal. Ez a hullám – a tárgyhullám –, amely tulajdonképpen egy külső behatás nélkül terjedő koherens nyaláb, a lényes információt tartalmazó hullámfront. A tárgyhullám, és a vele interferáló referenciahullám az a két hullámcsomag, amelyek a találkozási helyükön elhelyezett érzékelőn – amely a fejlesztések kezdeti időszakában klasszikus értelemben vett, ezüsthalogén alapú fotólemezen volt –, találkozik, és interferenciajelenséget hoz létre. A keletkező hatás az interferenciacsíkok változó elrendezésében ölt alakot.

Egy holografikus mérőelrendezés létrehozása előtt célszerű áttekinteni a jelenség megértéséhez szükséges fizikai alapokat, elsősorban a hullámoptika eszköztárát alkalmazva. Egy, a tárgypontra érkező hullám visszaverődve egy hullámfrontot alkot, mivel a diffrakció jelensége miatt a tárgy minden egyes pontja egy-egy elemi gömbhullám forrása. Ezen – a tárgy bevilágított felületéről érkező – gömbhullámok szuperpozíciója alkotja a tárgyhullámot, amely tartalmazza a forrásként szolgáló tárgy teljes képi információját. Ez a hullám két paraméterrel jellemezhető:

  • az amplitúdóval, amely a fény energetikai paramétereivel áll kapcsolatban, valamint

  • a fázissal, amely a tárgy formájáról árulkodik.

A klasszikus fotográfia esetén, amikor a fényérzékeny réteget ezüsthalogén kristályok alkotják, a felvételkor a fázisinformáció elvész.. Így a tárgyhullám nem állítható vissza teljes egészében, még refrakción alapuló, vagy egyéb speciális optikai elem alkalmazásával sem. A fázisinformáció rögzítéséhez és tárolásához szükség van egy kiegészítő hullámra, az úgynevezett referenciahullámra, mely hullámtani értelemben vett tulajdonságaiban megegyezik a tárgyat megvilágító fényforrás által keltett hullámmal, azaz vele koherens. A hullámoknak tehát koherenseknek, vagyis állandónak és korlátosnak kell lenniük. A koherens hullámok egymásra hatása a szuperpozíció elve alapján valósul meg - ez a jelenség az interferencia. A koherencia, mint jelenség jellemzésénél megkülönböztetünk térbeli és időbeli koherenciát. Térbeli koherencia alatt egy hullámfront különböző részeinek korrelációját értjük, míg az időbeli koherencia a hullám saját magával való korrelációja különböző időpillanatokban. Holografikus alkalmazás esetén a hullámnak térben és időben is koherensnek kell lennie. Mivel a kísérletekben egyetlen koherens fényforrást alkalmaznak, így a hullámok önmagukkal és egymással való koherenciája is biztosított. [8.47.]

8.2. A holografikus felvétel

Felvételkor a koherens fényforrást egy nyalábosztó vagy részben áteresztő tükör segítségével több részre osztják, és a tárgyat egy vagy több hullámfronttal világítják meg. A visszaverődő tárgyhullám egyesül a referenciahullámmal, és létrehoz egy interferencia jelenséget. [8.27.], [8.48.] Tehát a két beérkező hullám – a tárgy- és a referenciahullám - interferál, síkhullámok esetén interferenciacsíkok, sík- és gömbhullám találkozása esetén interferenciagyűrűk alakulnak ki. Ezek a csíkrendszerek általában mikrométeres nagyságrendűek, tehát összevethetők a fényforrás hullámhosszával. Statikus esetben az interferenciacsíkok alakja a kialakuláskor és a regisztrálás folyamán független az időtől, így kialakul egy diffrakciós rács [8.47.].

A holografikus felvétel készítésének blokkvázlata
8.1. ábra - A holografikus felvétel készítésének blokkvázlata


A hullám megfelel egy térben terjedő rezgésnek, ami a kiindulási pontban:

Ahol A a hullám amplitúdója, φ a hullám fázisa t=0 esetére,

a hullám körfrekvenciája. A T periódusidő alatt teszi meg a c sebességgel haladó hullám a λ hullámhossznyi távolságot, ennek reciprokjaként kapjuk meg a fázist:

A hullám tulajdonságainak szemléltetése.
8.2. ábra - A hullám tulajdonságainak szemléltetése.


Egy adott z pontban az oszcilláció:

Ahol:

A holográfiában használt lézerek fontos tulajdonsága, hogy lineárisan polarizáltak, vagyis a rezgés iránya állandó.

Az előző egyenlet Euler-féle átalakítása után:

Itt az egyenlet a valós része fontos. Mivel a hullám frekvenciája igen magas tartományba esik, ezért közvetlenül nem figyelhető meg. Mérésenként több oszcillációs periódusidőbeli átlagát kapjuk meg, így az ωt rész elhagyható. A megmaradt rész a komplex amplitúdó [8.47.]:

A hologram rekonstrukciójának blokkvázlata
8.3. ábra - A hologram rekonstrukciójának blokkvázlata


A Gábor Dénes által leírt, és a róla elnevezett Gábor-féle on-axis hologram alapelve igen egyszerű, és rendkívül látványos formában demonstrálja a holografikus hatást. Azonban – ahogy ezt már írtuk – a forrásra vonatkozó megkötés komoly problémát jelentett. A lézerek megjelenése rendkívül jó hatással volt a holográfiára, dinamikus fejlődését indította el világszerte. Leith és Upatnieks 1962-ben alkalmazták először lézeres forrással az úgynevezett off-axis hologramot [8.45.], [8.22.].

Az általuk választott megoldás egyrészt elválasztotta a valós képet a virtuális képtől, és lehetővé tette, hogy a referenciasugár és a tárgyról érkező sugarak külön legyenek kezelhetők. Így tulajdonképpen a tárgy tetszőleges irányból és oldalról meg lehetett világítva, egy alkalmasan megválasztott hullámfronttal. Az általuk javasolt elrendezésben a beeső lézernyalábot kettéosztották, és irányváltoztatásra kényszerítve ezek közül az egyiket, közvetlenül a tárgyra vetítették azt. Az érzékelő lemezen a két sugár interferenciaképe rögzült. A nagyobb hullámfrontszögek miatt, az igényelt nagy térfrekvenciához nagy felbontású holografikus filmre volt szükség, és biztosítani kellett a rezgésmentes beállítást is.

8.2.1. A vastag hologram

Az korábban alkalmazott hologramoknál a nyersanyagon a fényérzékeny réteg vastagsága nem volt számottevő, a jelenséget eredményező hullámok hullámhosszához képest. Az ilyen típusú hologramokat síkhologramoknak vagy vékony hologramoknak nevezzük. Ha az érzékelő fényérzékeny, rögzítő rétege, azaz az emulzió vastag a hullámhosszhoz képest (annak többszöröse), az interferenciacsíkok sorozata a vastagság mentén is létrejöhet. A rekonstrukció során a hullámfront visszaállítását generáló referencia-hullámfront ezeken az emulzió menti interferenciacsík-sorozatokon hatol keresztül [8.7.], [8.8.], [8.9.].

Az ilyen típusú hologramoknak, a vastag emulziónak az egyik kiemelkedő tulajdonsága, hogy képes ugyanazon fotoemulzióból többszörös holografikus látványt előállítani. Ez egyben azt is jelenti, hogy sok hologram készítése válik lehetővé ugyanazon a fényérzékeny rétegben, az ezeket előállító referencianyalábok pedig különböző szögűek lehetnek [8.54.]. A későbbi rekonstrukció során a referencianyaláb szögét változtatva, mindegyik rekonstruált hullámfront külön-külön jelenik meg, és egyenként vizsgálható. Ez az alapgondolata a holografikus mozgókép létrehozásának. Egy ilyen, vastag emulziójú, többszörös hologram rekonstrukciója során a referencianyaláb szögét megfelelő időben, megfelelő módon változtatjuk.

A holográfia mozgó filmhez hasonló alkalmazásához, például egy tükör forgásával a szinkronizált lézersugár egymás utáni impulzusai segítségével kísérelték meg, hogy a hologramok rekonstruálásával filmszerű képek sorozatát állítsák elő. Ez úgy is magyarázható, hogy a vastag hologramot vékony hologramok rendezett halmazának foghatjuk fel. Ilyenkor bármilyen eltérés a felvételkor használt referenciasugár irányától a kép elvesztéséhez vezethet. Ezt a jelenséget a szakirodalom irányszelektivitásnak nevezi. Ennek az elvnek a segítségével ugyanarra a holografikus emulzióra több hologramot lehet felvenni. A felvételkor a különböző referencianyalábok más és más irányból érik a holografikus emulziót, és ez érvényesül a rekonstrukció során is. A vastag emulziójú hologramok egy másik rendkívül fontos tulajdonsága az úgynevezett színszelektivitás, ami azt jelenti, hogy összetett (például fehér) fénnyel rekonstruálva egy vastag hologramot, a hullámfront színe megegyezik a felvételkori forrás színével. Vastag hologramot először Jurij Nyikolajevics Denisjuk (1927-2006) készített 1962-ben, felhasználva a színes fotográfiai nyersanyagok történetéből jól ismert Lippmann emulziót.

8.2.2. A rekonstrukció

Az ezüsthalogén alapú nyersanyag feldolgozásához szükséges fotokémiai eljárásokat követően lehetőség nyílik az eredeti tárgyról szóródó hullámfront visszaállítására. A holografikus lemezen rögzített interferenciakép diffraktálja a beérkező hullámfrontot, és visszaállítja az eredeti tárgyhullámot. Ilyenkor nemcsak az eredeti hullám jelenik meg, hanem más kísérő jelenségek is tapasztalhatók.

8.2.3. A felvétel és rekonstrukció

A holografikus rögzítés során nem alkalmazunk lencsés vagy tükrös leképezést. A tárgyról érkező hullámfrontot egy másik, az úgynevezett referencia-hullámfronttal interferáltatjuk, a kölcsönhatásukat így kódoljuk, és rögzítjük. Ennek feltétele, hogy mindkét hullámfront koherens legyen, ezért a gyakorlatban lézert alkalmazunk. A hologramlemez síkjában az interferenciakép kerül rögzítésre. Amikor a rekonstrukció során a hologramot a változatlan referencia-hullámfronttal megvilágítjuk, ezen az interferenciás csíkrendszeren – amely információt tartalmaz a tárgyhullámról, tehát a tárgyról – elhajlik, azaz diffraktálódik a hullámfront.

Gábor Dénes érdeme, hogy elméleti úton levezette, és kísérleti módszerekkel igazolta, hogy a rekonstrukció során diffrakcióval keletkező hullámfrontok egyike megegyezik azzal a hullámfronttal, amely felvételkor a hologramlemezre érkezett a tárgyról. Ezért a rekonstrukció során a megfigyelő érzékelőjére ugyanaz a hullámfront érkezik, mint amilyen a tárgyról érkezett volna. A hologramot szemlélve a rekonstruált kép tulajdonságai megegyeznek a valósággal úgy a perspektíva, mint a takarások tekintetében.

8.2.4. Holografikus optikai elemek

A hologramból álló optikai eszköz, amely könnyen előállítható, lencseként, tükörként, rácsként, nyalábosztóként működik. A holografikus optikai elemek készítésének alapgondolata, hogy az egyes optikai elemek speciális hullámfrontot hoznak létre. Ha ezt a hullámfrontot használjuk a hologram készítése során tárgyhullámként, akkor a rekonstrukciókor ezt a hullámfrontot újra előállíthatjuk. Tehát a hologramunk úgy fog viselkedni, mint az eredeti optikai elem.

8.2.5. Digitális holográfia

A hagyományos holografikus eljárások használatának egyik fő hátránya, hogy az exponált holografikus lemezt fotokémiai eljárással kell kidolgozni. Ehhez laboratóriumi körülmények szükségesek, és a felvételt rögzítő nyersanyag is viszonylag drága. A hagyományos holografikus nyersanyagok speciális spektrális érzékenységgel rendelkeznek, és szenzitometriai szempontból is viszonylag alacsony érzékenységűek.

E problémákra kínál alternatívát a digitális holográfia, ami azt jelenti, hogy a hologram lemez helyett általában elektronikus detektorral rögzítik a tárgyhullám és a referenciahullám által előállított interferenciaképet. A rögzített hologramra jellemző:

  • számítógépen tárolják,

  • a rekonstrukció, azaz a kép megjelenítése numerikus feldolgozás segítségével történik.

A módszer hátrányai:

  • a jelenlegi, kereskedelmi forgalomban kapható digitális kamerák felbontása jóval kisebb, mint a holografikus lemezeké,

  • a pixelméret legalább egy nagyságrenddel haladja meg a hagyományos holografikus lemez felbontását.

A térfrekvencia fogalma
8.4. ábra - A térfrekvencia fogalma


Mivel a pixelek mérete meghatározza a maximális térfrekvenciát,

  • a tárgynyaláb és a referencianyaláb csaknem azonos irányból kell, hogy a kamera félvezető lapkájára essen.

  • a rekonstruált kép felbontása jóval kisebb, mint egy hagyományos hologram által rekonstruált képé.

A digitális hologram készítésének blokkvázlata
8.5. ábra - A digitális hologram készítésének blokkvázlata


8.3. Hullámoptikai tárgyalásmód

A hologram készítésének és megjelenítésének hullámoptikai tárgyalása szempontjából két, jól elkülöníthető fázist különböztetünk meg: a holografikus felvétel készítését és a rekonstrukciót.

8.3.1. A holografikus felvétel

A holografikus felvétel
8.6. ábra - A holografikus felvétel


A (8.6. ábra - A holografikus felvétel) ábrán látható elrendezésben a koherens fényforrásból kilépő hullámok egyrészt a vizsgálandó tárgyra, másrészt a síktükörre vetülnek. A tárgyról visszaverődő – arról információt hordozó – tárgyhullámok a holografikus lemez síkjában találkoznak a síktükörről visszaverődő, úgynevezett referenciahullámokkal, és ott egy sajátságos, intenzitáseloszlást hoznak létre. Ennek fotofizikai, illetve fotokémia úton történő rögzítésével áll elő a hologram. A tárgy felületéről a holografikus lemez síkjába érkező hullám időfüggvénye:

ahol (x,y) a holografikus lemez egy pontjának koordinátája,

az amplitúdó, és

pedig a fáziseloszlás. A holografikus lemezt azonban eléri a síktükörről visszaverődő referenciahullám is, melynek időfüggvénye:

A

és a

egymással koherens hullámok, így a holografikus lemez síkjában az eredő hullám időfüggvénye a szuperpozíció elve alapján:

A lemez fotokémia kidolgozását követően, a létrejövő feketedés arányos az expozíció során a lemezt érő fényenergia eloszlásával:

Behelyettesítve:

Az egyszerűbb kezelhetőség érdekében térjünk át a trigonometrikus alakra:

Ezután

Átalakítva és rendezve

Lineáris jellegű rögzítést feltételezve – ami kissé eltér a valóságos nyersanyag tulajdonságaitól, azonban ez a közelítés a jelenség leírását nem zavarja – a holografikus lemez transzmissziója a kidolgozás után:

Vezessük be a következő jelölést:

így

Tehát ez az összefüggés írja le a hologram transzmisszió-eloszlását, tartalmazza a tárgy- és a referenciahullám amplitúdó- és fázisadatait.

8.3.2. A rekonstrukció

A 8.7. ábra - Holografikus rekonstrukció szerinti elrendezésben, a már kidolgozott holografikus lemezen, azaz a hologramon bocsátjuk keresztül a felvétel készítésénél használt referenciahullámot. Az így létrejövő hullámfront időfüggvénye:

Behelyettesítve:

Rendezve, átalakítva és exponenciális alakra hozva:

Holografikus rekonstrukció
8.7. ábra - Holografikus rekonstrukció


A fenti összefüggés első tagja egy tovahaladó, láthatatlan referenciahullámot jelöl. A második tagja egy amplitúdómodulált, és a referenciahullám fázisával megváltoztatott fáziseloszlású, és továbbhaladó hullámot jelent, mely a tárgy elhajlási képének keletkezésére utal, és a szemlélő számára láthatatlan marad. A harmadik tag az eredeti tárgyhullámmal arányos amplitúdójú hullámot jelent, amely a szemlélő számára megjeleníti a tárgy virtuális képét. Ha a rekonstrukció során lehetővé válik a keletkező hullámfrontok terjedési irány szerinti szétválasztása, akkor egyben lehetséges lesz azok független megfigyelése is. Ez azt is jelenti, hogy elő lehet állítani azt a hullámfrontot, amely eredetileg a felületről érkezett.

8.4. Holografikus interferometria

Ha a 8.8. ábra - Holografikus interferometria szerinti elrendezésben a tárgyról az A helyen hologram készül, majd áthelyezve a tárgyat a B helyre, és  róla ismét egy hologramot készítünk ugyanarra a holografikus lemezre, majd ezt kidolgozva és rekonstruálva a referenciahullámmal, előáll a holografikus interferogram. A hologramon átnéző megfigyelő a tárgy háromdimenziós képén csíkokat lát. A csíkok a tárgy A és B állapota közötti elmozdulásról, vagy deformációról szolgáltatnak információt.

Holografikus interferometria
8.8. ábra - Holografikus interferometria


8.4.1. A holografikus interferométer

A holografikus interferométer segítségével két hullámfront hasonlítható össze interfereometrikusan. Az egyik hullámfrontot a már korábban részletesen tárgyalt, rekonstruált hullámfront képezi - ennek neve referens hullámfront. A másik hullámfront, amely a referens hullámfronttal interferál, többféle módon is előállítható, és ez az előállítási mód határozza meg a holografikus interferometria technikáját.

A technikák csoportosítása:

  • Valós idejű, vagy úgynevezett real-time holografikus interferometria. Itt a referens hullámfrontot közvetlenül a felületről szóródó hullámfronttal hasonlítjuk össze interferometrikusan. Előnye, hogy folyamatosan követhető a tárgy időbeni elmozdulása és deformációja.

  • A kétexpozíciós technika azt jelenti, hogy ugyanazon a lemezen található a két felvétel, egyiket a deformáció előtt a másik pedig utána készült. A rekonstrukció során a tárgy képén megjelennek az interferenciacsíkok.

  • A sandwich technika. Itt a vizsgálandó és a referens hullámfront két különböző holografikus lemezen, azonos referenciasugárral kerül rögzítésre. Ezek szimultán rekonstrukciójával állítható elő a holografikus interferogram.

A következő részben a kétexpozíciós technikával foglalkozunk részletesebben.

8.4.2. A kétexpozíciós holografikus interferometria technika

A (8.9. ábra - Kétexpozíciós holografikus interferometria) ábrán látható elrendezés segítségével készíthető kétexpozíciós holografikus interferogram. A két hullámfront rögzítése egyazon fotólemezre, egyazon referencianyalábbal történik.

Kétexpozíciós holografikus interferometria
8.9. ábra - Kétexpozíciós holografikus interferometria


A kétexpozíciós holografikus interferogram készítésének blokkvázlata
8.10. ábra - A kétexpozíciós holografikus interferogram készítésének blokkvázlata


A fotólemez (x,y) pontjában legyen a tárgy A helyzetbeli felületéről a holografikus lemezre érkező hullámfront amplitúdója A1. Hasonlóan a tárgy B helyzetbeli felületéről érkező hullámfronté A2. Így a hullámfrontok komplex időfüggvényei

Illetve

A referencianyaláb időfüggvénye

Lineáris rögzítést és azonos expozíciós időket feltételezve, a holografikus lemez (x,y) pontjának feketedése arányos lesz a fényintenzitások összegével.

Kifejtve, áttérve a trigonometrikus jelölésekre, és elhagyva az (x,y) jelölést:

Előhívás után az optikai lemez transzmissziója:

Bevezetve:

Így

Ha ezt a lemezt a felvételkor használt referenciahullámmal rekonstruáljuk, akkor a keletkező hullámfront időfüggvénye a következő alakú lesz

Behelyettesítve τ értékét

A műveleteket elvégezve, és exponenciális alakra hozva a kifejezést

A fenti összefüggés leírja a kétexpozíciós technikával készített hologram rekonstruálása során keletkezett hullámfrontokat. Az összefüggés második tagjában felismerhető a két különböző időpontban rögzített hullámfront összege. A rekonstrukció után, ott ahol a tárgy A és B helyzete között eltérés volt, inteferenciacsíkok lesznek láthatók.

A kétexpozíciós holografikus interferometria előnyei és hátrányai a következőkben foglalhatók össze:

Előnyök:

  • Egyszerű és megbízható a holografikus interferogram elkészítése, és az interferométer kezelése.

  • A kétexpozíciós holografikus interferometria holografikus lemezének kidolgozása utáni deformációja nem jelentkezik az interferenciaképen.

Hátrányai:

  • A kétexpozíciós holografikus interferometria során keletkező interferenciakép csak a felület két állapota közötti eltérésekre vonatkozóan tartalmaz információkat.

  • A holografikus nyersanyag kidolgozása vegyszerigényes, a vegyszerek kezelésénél szigorú környezetvédelmi előírásokat kell betartani.

  • A nyersanyag felbontóképessége hatással van a méréstechnikai alkalmazhatóságra.

A kétexpozíciós holografikus interferogram rekonstrukciójának blokkvázlata
8.11. ábra - A kétexpozíciós holografikus interferogram rekonstrukciójának blokkvázlata


8.4.3. A holografikus interferogramok kiértékelése

A holografikus interferogramon megjelenő interferenciacsíkok a tárgy alakváltozásáról, illetve elmozdulásáról hordoznak információt. Ahhoz, hogy ezek az információk konkrét mérési adatokká, eredményekké válhassanak, olyan módszerekre van szükség, amelyek segítségével az interferogramok kiértékelhetők, tehát az alakváltozások és a deformációk mértéke számszerűsíthető. A gyakorlatban elsősorban a csíklokalizációs, a csíkszámlálásos, a kompenzációs és a fázistolásos módszert alkalmazzák.

8.5. Holografikus felvételi nyersanyagok

Cél a spektrálisan illesztett, nagyfelbontású és viszonylag nagy érzékenységű felvételi nyersanyag biztosítása. Erre kiválóan alkalmas az ezüsthalogén alapú emulzió (1873 Vogel).

A holografikus felvételi nyersanyagok, melyek jellemzőit a 8.12. ábra - A különböző ezüsthalogén alapú nyersanyagok spektrális érzékenysége. szemlélteti:

  1. Érzékenyítetlen ezüsthalogén (a görbe).

  2. Ortokromatikus nyersanyag (b görbe).

  3. (Szuper)Pánkromatikus nyersanyag (c görbe).

  4. Infravörös nyersanyag (d görbe).

Holografikus nyersanyag céljára elsősorban a vörös, illetve a kékeszöld tartományban érzékeny nyersanyagot alkalmaznak, a holografikus technikákban használt lézertípusok miatt.

A különböző ezüsthalogén alapú nyersanyagok spektrális érzékenysége.
8.12. ábra - A különböző ezüsthalogén alapú nyersanyagok spektrális érzékenysége.


8.5.1. A nyersanyagok karakterisztikája

A 8.13. ábra - Az ezüst halogén alapú nyersanyag karakterisztikája, a gamma görbe. függőleges tengelyén a denzitás található, amely a transzmissziós tényező reciprokának tízes alapú logaritmusa.

A vízszintes tengelyen a nyersanyaggal területegységenként közölt energiát, vagy az expozíció logaritmusát ábrázoljuk.

Az ezüst halogén alapú nyersanyag karakterisztikája, a gamma görbe.
8.13. ábra - Az ezüst halogén alapú nyersanyag karakterisztikája, a gamma görbe.


A 8E56 típusú, ezüsthalogén alapú holografikus nyersanyag karakterisztikája (katalógus adat)
8.14. ábra - A 8E56 típusú, ezüsthalogén alapú holografikus nyersanyag karakterisztikája (katalógus adat)


8.5.2. A nyersanyag felépítése

A klasszikus, ezüsthalogén alapú holografikus nyersanyag felépítése sokban hasonlít a fekete-fehér fotográfia nyersanyagéra. Felépítése a (8.15. ábra - Az ezüst halogén alapú nyersanyag felépítése.) ábrán látható.

Az ezüst halogén alapú nyersanyag felépítése.
8.15. ábra - Az ezüst halogén alapú nyersanyag felépítése.


A 8E75 típusú, ezüsthalogén alapú holografikus nyersanyag spektrális érzékenysége (katalógus adat)
8.16. ábra - A 8E75 típusú, ezüsthalogén alapú holografikus nyersanyag spektrális érzékenysége (katalógus adat)


8.5.3. Az ezüst halogén alapú holografikus nyersanyagok kidolgozása

Amplitúdó hologram készítése során egyes ezüsthalogén kristályok exponálódnak, azaz fény éri őket, míg mások nem. Az így keletkezett, úgynevezett látens képben tehát jelen vannak a még nem exponált ezüsthalogén kristályok, illetve az exponáltak, amelyekben megtalálhatók az úgynevezett elemi ezüstcsíragócok. Ezt a látens képet kell egy fotokémiai folyamatnak alávetni, amely során első lépésben egy redukciós folyamat alatt az exponált ezüsthalogén kristályokban lévő elemi ezüstcsíragócok mentén megindul a redukció. Ennek során színezüst kristályok keletkeznek. A következő lépésben a rétegben maradt, nem exponált ezüsthalogént rögzítő oldat segítségével oldható sóvá kell alakítani, ami távozik a rétegből. A mosás és szárítás után megfigyelhető, hogy a fény érte helyeken fekete ezüstkristályok találhatók, míg a többi helyen csak az átlátszó emulzió látható, így lesz a kidolgozott nyersanyag az eredeti fényviszonyok negatívja. Az ilyen holografikus nyersanyag a rajta áthaladó referenciahullám intenzitását, azaz a vele kapcsolatban álló amplitúdót változtatja, modulálja a rekonstrukció során.

Az amplitúdó hologram kidolgozásának menete
8.17. ábra - Az amplitúdó hologram kidolgozásának menete


Fázis hologram kidolgozásának első lépése teljes mértékben megegyezik az amplitúdóhologram esetén leírtakkal. A következő lépésben azonban a réteget egy halványító-rögzítő fürdőnek kell alávetni. A fürdőben a nem exponált ezüsthalogén a rögzítő oldat segítségével oldható sóvá alakul, és távozik a rétegből, míg a kiredukált ezüst a halványítás hatására átlátszó, de az emulziótól eltérő törésmutatójú anyaggá válik. Így a rétegben a megvilágítástól függően különböző törésmutatójú helyek keletkeznek, ami azt eredményezi, hogy a rekonstrukció során, az azonos fázissal belépő refrenciahullám különböző fázisokkal fog kilépni, tehát az ilyen holografikus nyersanyag a rekonstrukció során a rajta áthaladó referenciahullám fázisát változtatja, modulálja.

A fázis hologram kidolgozásának menete
8.18. ábra - A fázis hologram kidolgozásának menete


Vezessük be a hologramok jellemzésére az úgynevezett fényességet, ami a rekonstrukció során a diffraktált és a belépő hullámfrontok intenzitásának százalékos arányát jelenti! Ekkor az amplitúdó hologramok néhány százalékával szemben a fázis hologramok fényessége akár a harmincöt százalékot is elérheti.

8.5.4. Egyéb nyersanyagok

Az ezüsthalogén alapúak mellet más nyersanyagtípusok is elterjedtek, az alábbiakban ezeket ismertetjük.

8.5.4.1. Fotoreziszt emulzió

Az emulzió működésének alapja, hogy a megvilágított helyeken az úgynevezett „hívó oldatban” a réteg jobban megduzzad, mint a megvilágítatlan helyeken. Így ugyanolyan törésmutatójú, de különböző vastagságú helyek keletkeznek az emulzióban, tehát fázisrácsként viselkedik.

A fotoreziszt emulzió a kidolgozás után
8.19. ábra - A fotoreziszt emulzió a kidolgozás után


8.5.4.2. Termoplasztikus emulzió

Ebben az esetben három réteget alkalmazunk. Az üveg vagy polimer hordozón egy átlátszó, vékony SnO2 vezető réteg található. Ezt követi egy fényvezető és maga a termoplasztikus réteg. Az emulziót sötétben úgy érzékenyítik, hogy a vezető réteget földelik, a termoplasztikus réteget pedig körülbelül 15kV feszültség mellett feltöltik negatív töltésekkel. Ez a vezető rétegben pozitív töltést indukál. Az expozíció hatására a pozitív töltések a fényvezető réteg határára a negatív töltések közelébe vándorolnak. Egy rövid melegítés hatására a termoplasztikus réteg meglágyul, és felveszi a töltéseloszlás alakját. Lehűtéssel aztán rögzítik ezt az állapotot.

8.6. Ellenőrző kérdések

  1. A holográfia egy háromdimenziós képrögzítési és rekonstruálási eljárás. Magyarázza el, mit értünk ebben az esetben a képrögzítés és a képrekonstruálás alatt! Mutassa be, hogy a folyamat miben különbözik a hagyományos értelemben vett képalkotástól!

  2. Magyarázza meg, mit értünk térbeli és időbeli koherencia alatt!

  3. A koherens hullámok egymásra hatása a szuperpozíció elve alapján valósul meg. Mi ez a jelenség, mi a hatása az interferencia kialakulására?

  4. Ismertesse a holografikus felvétel és rekonstrukció folyamatát!

  5. Mi a különbség az on-axis és az off-axis holografikus elrendezés között?

  6. A holografikus optikai elemek készítésének alapgondolata, hogy az egyes optikai elemek speciális hullámfrontot állítanak elő. Ha ezt a hullámfrontot használjuk a hologram készítése során tárgyhullámként, akkor a rekonstrukció során azt újra előállíthatjuk. Mondjon példát holografikus optikai elem alkalmazására!

  7. Melyek az előnyei és a hátrányai a digitális holográfiának?

  8. Ismertesse a holografikus interferogramok típusait!

  9. Magyarázza meg az ezüsthalogén alapú holografikus nyersanyag karakterisztikáját!

  10. Az ezüsthalogén kristályok által alkotott látens kép szempontjából miben különbözik az amplitúdó és a fázis hologram?

  11. Fázis hologram esetén a rekonstrukció alatt milyen fizikai-optikai jelenség játszódik le?

  12. Ismertesse a fotoreziszt emulziót!

  13. Ismertesse a termoplasztikus emulziót!

Hivatkozások

[8.1.] Hariharan, P. Optical holography. Univ. Press. 1984.

[8.2.] Jüptner, Werner P.O.. Holography technics and applications. proc. ECO1. Hamburg . 1988.

[8.3.] Schumann, W.. Holography and deformation analysis. Springer. 1985.

[8.4.] Kreis, T.. Handbook of holographic interferometry. Wiley. 2005.

[8.5.] Schnars, Jueptner. Digital holography. Springer. 2005.

[8.6.] Nussbaum, A. és Phillips, R. A.. Modern optika mérnököknek és kutatóknak. Műszaki Könyvkiadó. Budapest . 1982.

[8.7.] Budó, Á. és Mátrai, T.. Kísérleti fizika III. Tankönyvkiadó. Budapest . 1980.

[8.8.] Optika. Panem_McGraw-Hill. Budapest . 1998.

[8.9.] Viennot, J.-Ch., Smigielski, P., és Royer, H.. Holográfia optikai alkalmazásokkal. Műszaki Könyvkiadó. Budapest . 1973.

[8.10.] Yaroslavsky, L.. Methods of Digital Holography. Springer. 1980.

[8.11.] Yaroslavsky, L.. Digital Holography and Digital Image Processing : Principles, Methods, Algorithms. Kluwer Academic Publishers. 2005.

[8.12.] Schnars, U. és Juptner, W.. Digital Holography, Digital Hologram Recording, Numerical Reconstruction, and Related Techniques. Springer Verlag. 2005.

[8.13.] Caulfield, H. J., Leith, E. N., és Denisiuk, I. N.. The Art and Science of Holography. Press Monograph. Vol. PM124. SPIE. 2004.

[8.14.] Hariharan, P.. Basics of Holography. Cambridge University Press. 2002.

[8.15.] Hariharan, P.. Optical Holography. Cambridge University Press. 1996.

[8.16.] Gyímesi, F.. Látványholográfia, holografikus méréstechnika és digitális holográfa. Magyar Tudomány. 166:(12). pp. 1517-1520.. 2005.

[8.17.] Papp, Zs. és Kornis, J.. A koherens optikai méréstechnika legújabb eredményei és hasznosítási lehetőségük a közúti közlekedésben. Innováció és fenntartható felszíni közlekedés konferencia. 2007.

[8.18.] Akaev, A. A. és Gurevich, S. B.. Holographic Memory. Allerton Press. 1997.

[8.19.] Zhumaliev, K. M. és Benton, S. A.. Practical Holography. XII. SPIE. 1998.

[8.20.] Bjelkhagen, H. I. és Caulfield, H. J.. Selected Papers on Fundamental Techniques in Holography. Milestone Series MS171. SPIE. 2001.

[8.21.] Bjelkhagen, H. I. és Thompson, B. J.. Selected Papers on Holographic Recording Materials. Milestone Series MS 130. SPIE. 1996.

[8.22.] Caulfield, H. J., Leith, E. N., és Denisiuk, I. N.. The Art and Science of Holography. Press Monograph. Vol. PM124. 2004.

[8.23.] Collings, N.. Optical Pattern Recognition: Using Holographic Techniques. Electronic Systems Engineering Series. Addison-Wesley. 1988.

[8.24.] Fomin, N. A.. Speckle Photography for Fluid Mechanics Measurements. Springer. 2005.

[8.25.] Hariharan, P.. Basics of Interferometry. Academic Press. 2006.

[8.26.] Hariharan, P.. Optical Interferometry. Academic Press. 2003.

[8.27.] Hariharan, P.. Basics of Holography. Cambridge University Press. 2002.

[8.28.] Hariharan, P.. Optical Holography. Cambridge University Press. 1996.

[8.29.] Johnston, S. F.. Hographic Visions: A history of New Science. Science and Computing Series. Oxford University Press. 2006.

[8.30.] Kasper, J. E.. The Complete Book of Holograms: How They Work and How to Make Them. John Wiley & Sons. 1987.

[8.31.] Feller, S. A. és Kreis, T.. Holographic Interferometry: Principles and Methods. Vch Pub. 1996.

[8.32.] Kuo, C. J. és Tsai, M. H.. Three-Dimensional Holographic Imaging. Wiley-Interscience. 2002.

[8.33.] Ludman, J., Caulfield, H. J., és Riccobono, J.. Holography for the New Millennium. Springer. 2002.

[8.34.] Rastogi, P. K.. Digital Speckle Pattern Interferometry & Related Techniques. John Wiley & Sons. 2001.

[8.35.] Rastogi, P. K.. Holographic Interferometry: Principles and Methods. Springer Series in Optical Sciences. Springer. 1994.

[8.36.] Saxby, G.. Practical Holography. Taylor & Francis. 2003.

[8.37.] Schnars, U. és Jueptner, W.. Digital Holography: Digital Hologram Recording, Numerical Reconstruction, and Related Techniques. Springer. 2004.

[8.38.] Sirohi, R. S.. Selected Papers on Holographic Interferometry: Applications. Milestone Series MS170. SPIE. 2001.

[8.39.] Tonomura, A.. Electron Holography. Springer Series in Optical Sciences. Springer. 1999.

[8.40.] Vest, C. M.. Holographic Interferometry. Wiley Series in Pure and Applied Optics. Wiley-Interscience. 1979.

[8.41.] Vikram, C. S., Thompson, B. J., Knight, P. L., és Miller, A.. Particle Field Holography. Cambridge Studies in Modern Optics. Cambridge University Press. 2005.

[8.42.] Hariharan, P.. Selected Papers on Interferometry. Milestone Series MS28. SPIE. 1991.

[8.43.] Hariharan, SZO és Malacara-Hernandez, D.. Selected Papers on Interference, Interferometry, and Interferometric Metrology. Milestone Series MS110/HC. Society of Photo Optical. 1995.

[8.44.] Current Research on Holography and Interferometricmethods for Measurement of Object Properties 2000-2002. SPIE. 2003.

[8.45.] Viénot, Charles. Holográfia. Gábor Dénes előszava alapján. Műszaki könyvkiadó. Budapest . 1973.

[8.46.] Schnars, U. és Jueptner, W.. Digital Holography. Springer-Verlag Berlin Heidelberg. 2005.

[8.47.] Ackermann, Gerhard K. és Eichler, Jürgen. Holography. A Practicalapproach. Wiley-Wch. 2007.

[8.48.] Unterseher, F., Hansen, J., és Schleisinger, B.. Holographyhandbook. 1982.

[8.49.] Nussbaum, A. és Phillips, R.A.. Modern optika mérnököknek és kutatóknak. Műszaki Könyvkiadó. Budapest . 1982.

[8.50.] Jenkins, F.. Optika. Panem. Budapest . 1997.

[8.51.] Cserepes, L. és Petrovai, K.. Kozmikus fizika. Egyetemi jegyzet, ELTE. Budapest . 2002.

[8.52.] Coufal, H. J., Psaltis, D., és Sincerbox, G. T.. Holographic Data Storage. Springer-Verlang. Berlin . 2000.

[8.53.] Várhegyi, Péter. Új modellek és eszközök a holografikus adattároló rendszerek kutatásában. Kézirat, BME. 2005.

[8.54.] Füzessy, Zoltán. Fotonika optikai alapjai I. Műegyetemi Kiadó. 1997.

9. fejezet - Egyszerű és komplex optikai szűrőn alapuló, passzív sztereo technikák

A passzív sztereo megjelenítők csoportjába tartozik az úgynevezett színszétválasztásos multiplex berendezés, amely a közismert anaglif eljárás kibővített változatának tekinthető. Itt az egymásra nyomtatott két egyszínű kép jól elkülöníthető spektrummal rendelkezik, és a szemlélő a látványt a kép színeinek megfelelő színű szemüvegen keresztül vizsgálja. Ha például a képet piros-kék színkombinációban nyomtatták, akkor az egyik szeme előtt lévő piros szűrőn át csak a piros képet, míg a másik szem előtt lévő kék szűrőn keresztül csak a két képet látja, így a szemeibe más és más kép kerül, ami által megvalósulhat a térbeliség élménye. A módszer legnagyobb problémája, hogy az alkalmazott festékanyagok és a szemüvegekben elhelyezett szűrők széles spektrummal rendelkeznek, emiatt a képeket nem lehet teljesen elkülöníteni - itt is fellép az áthallás jelensége, illetve a látvány nem színhelyes.

Az anaglif megjelenítők működésének alapja tehát a színszűrés. Képernyős változatának alkalmazása során a két szembe két különböző kép kerül a képernyőről. Ezek a képek szemüveg nélkül szemlélve zavarosak és egybemosottak, azonban a különböző színszűrőkön szemlélve az egyik szembe az egyik pozícióból, míg a másik szembe a másik pozícióból készült kép kerül az objektumról. A gyakorlatban általában a vörös-zöldeskék szűrő kombinációt használják. Ez a változat terjedt el a 3D-s mozikban és a szórakoztatóipar egyéb területein is. Az ilyen egyszerű, az anaglifra épülő technikák olcsók, azonban valódi színes képek megjelenítésére alkalmatlanok. Gondot okoz továbbá a spektrális sávszélességből adódó áthallás, és a az egyes szűrők transzmisszós tényezőjének különbözőségéből adódó képvilágosság-különbség is.

Az alábbiakban olyan passzív rendszerekről lesz szó, amelyeknél a csatornajeleket optikailag választják szét, megfelelő színszűrők segítségével. Bemutatjuk többek között az egyik legősibb technikát (anaglyph - anaglif) és az egyik legújabb technikát (Infitec) is.

9.1. Az anaglif (anaglyph) technika

Az anaglif technika az egyik legrégebbi háromdimenziós élmény biztosítására alkalmas eszköz. Az anaglif képek előállításának eljárását elsőként Wilhelm Rollmann fejlesztette ki 1853-ban. Az anaglif csatornajel szétválasztására alkalmas szűrők kétszínűek (általában vörös és ciánkék, vagy más komplementer színek). Kezdetben, hogy csökkentsék a passzív szemüvegek költségét, papírból gyártották azokat. A technika lényege, hogy a háromdimenziós tartalmakat két különböző nézetből, két különböző színnel jelenítik meg a két szem számára. Ez az ingeranyag a kétszínű szemüvegeken áthaladva az ábrázolt tárgyról egy kvázi színtelen, háromdimenziós képet kelt az agyban. A csatornajel szétválasztása tehát két színben történik. Az anaglif technikát elterjedten alkalmazzák, illetve alkalmazták nyomtatott formában is.

9.1. ábra - Anaglif kép


Az anaglif képek kevésbé fárasztóak a szem számára, mint az autosztereogrammok, amelyek nézéséhez gyakorlat szükséges, viszont eléggé színtelenek (természetesen a két színszűrő színeinek megfelelő árnyalatok kvázi színhelyesen jelennek meg). Ezen hátrány kiküszöbölésének módját az interferenciaszűrős rendszereknél láthatjuk.

9.2. ábra - Anaglif szemüveg


Az Infitec technika előtt számos változata létezett az anaglif technikának. A vörös-zöld és a vörö-kék változatok teljesen monokromatikusak voltak. A vörös-cián, az anachóm, a mirachóm, a trioszkóp és a magenta-cián változatok már sokkal jobb színélményt biztosítottak az eddigieknél. Az Inficolor és a ColorCode 3-D változatok pedig szinte teljes színélményt nyújtottak, még az Infitec szűrős eljárások előtt.

Az anaglif technika előnye, hogy olcsó és nem érzékeny a fejdőlésre. Hátránya viszont, hogy a színvisszaadás tekintetében gyenge a teljesítménye.

9.2. Interferenciaszűrős rendszerek (Infitec)

Az emberi szem trikromatikus elven működik - a beérkező fényt a szem érzékelői spektrálisan három tartományban érzékelik. A kék-zöld-vörös receptorok érzékenységi görbéinek maximumai rendre 450, 550 és 600 nm-es hullámhossznál vannak, és félértékszélességük – azaz a maximális érték felénél átölelt tartomány mérete – 60, 80 és 70 nm. A színkeverés alaptörvénye alapján, a szem érzékelőinek félértékszélességén belül több – keskeny spektrális szélességű – monokromatikus színkombinációból is kikeverhető az eredő szín. Ha tehát az egymásra vetített két képet eltérő monokromatikus összetevőkből állítjuk elő, és azokat a nekik megfelelő szűrőkön keresztül szétválasztva juttatjuk a jobb és a bal szembe, akkor színhelyes térhatást érhetünk el.

Sajnos a módszer nem igazán terjedt el, ugyanis az ilyen képességekkel és paraméterekkel rendelkező vetítők drágák, illetve a képek vizsgálatához alkalmazható keskeny félértékszélességű szűrők előállítása szintén bonyolult és drága.  A módszer nagy előnye viszont, hogy színhelyes képet ad.

Az interferenciaszűrős technikánál a csatornajeleket olyan speciális három- vagy 4-csatornás színszűrőkkel oldják meg, amelyeknél rendelkezésre áll a valós színek létrehozásához szükséges három RGB színkomponens. Egy hagyományos kivetítőnél a teljes színtartomány három részre bontható, ezek a kék, a zöld és a piros tartományok. Az interferenciaszűrős technikánál két projektorból vetítenek tartalmat. Ezek elé olyan szűrőket helyeznek, amelyek az előbb említett, hagyományos elrendezést képviselő három színtartományt felosztják egyenként két résztartományra. (Létezik olyan megoldás is, ahol egy projektor elé váltakozva helyeznek különböző szűrőket. Továbbá létezik 3-csatornás szétválasztás is.

Interferenciaszűrő-típusok

(Infitec EX® tanulmány)

9.3. ábra - Interferenciaszűrő-típusok


Ennél a három bázistartományt nem két, hanem három résztartományra osztják, amelyeknél egyenként a középső az egyik, míg a két szélső a másik interferenciaszűrőbe kerül. Ezzel a megoldással kiegyenlítettebb és hasonlóbb színeket képesek előállítani a két interferencia szűrőn keresztül. Létezik végül 4-csatornás szétválasztás is, ahol a résztartományok száma bázistartományonként négy. Ez tovább finomítja a konzisztenciát a két interferenciaszűrő között.)  

Az interferenciaszűrő működése

(Infitec EX® tanulmány)

9.4. ábra - Az interferenciaszűrő működése


Ebben az esetben némi színkorrekcióval elérhető, hogy a mindkét projektor képes legyen a teljes színtartomány azonos színeit reprodukálni. (A színkorrekcióra azért van szükség, mert a kettévágott színtartományok két része nem azonos intenzitású fényt enged át. Ezért például az egyik szűrő piros tartományánál a szűrő réteg transzmissziós képességét fokozni kell, mert abban a tartományban már viszonylag kicsi az alap fényforrás spektrális erőssége.)

A passzív szemüveg két lencséje is ezeknek a résztartományoknak a függvényében tartalmaz interferenciaszűrőket, amelyek így csak az aktuális szemnek szánt képet engedik át, és az anaglif technikával szemben mégis megőrzik a tényleges színeket.

Interferenciaszűrő-készlet
9.5. ábra - Interferenciaszűrő-készlet


Az Infitec 3D technológiát eredetileg a Daimler Chrysler német autógyártó cég fejlesztette ki autótervezéshez. A projekt neve hullámhossz-multiplex vizualizációs rendszer volt. 2006-ban a Dolby Laboraries segítségével létrehozták a Dolby 3D-t a háromdimenziós mozifilmekhez. 2009-ben pedig az Infitec egy új vállalkozást alapított Infitec Dualcolor3D néven.

Az interferenciaszűrős technika előnye, hogy jó a színvisszaadása és nem érzékeny a fejdőlésre. Hátránya viszont, hogy az interferenciaszűrők előállítása sokkal drágább, mint az egyszerű színszűrőké.

10. fejezet - Lineáris és cirkuláris polarizáción alapuló, passzív sztereo technikák

Napjainkban az egyik legelterjedtebb technika a polarizáció elvén működik. A háromdimenziós mozik szinte kivétel nélkül polarizációs technikát használnak, hiszen viszonylag olcsó, teljes a színvisszaadása és a cirkuláris technika még a fejdőlésre sem érzékeny.

Ezeknél a technikáknál is (hasonlóan a színszűrős és az interferenciaszűrős technikákhoz) két, egymásra lapolt tartalmat vetítenek, külön-külön a két szem számára. A tartalmakat ebben az esetben nem színszűrőkkel, hanem polarizációs szűrőkkel bontják csatornákra. Ezeket a csatornajeleket ezután a polarizációs szemüvegek jutatják el a megfelelő szembe. A folyamat közben persze biztosítani kell venni, hogy a vetítő felület ne változtasson a fény polarizációján.

A lineáris polarizációs technikánál a polarizációs szűrők önmagukban állnak a tartalom kibocsátásánál, illetve a szemüvegekben. A cirkuláris polarizációs technikánál ez a polarizációs szűrő kiegészül egy úgynevezett negyedhullám-lemezzel, és a két lemez együttesen hozza létre a cirkulárisan polarizált fényt.

10.1. ábra - Cirkuláris polarizációs szűrő mechanizmusa, a vetítőtől a projekciós felületig


10.2. ábra - Cirkuláris polarizációs szűrő mechanizmusa, a projekciós felülettől a szemig


A lineáris technika érzékeny a fej dőlésére, mert egy kismértékű dőlés is átereszti a másik szem számára küldött csatornajelet, ami szellemképhez vezet. A cirkuláris technikánál azonban indifferens a fej dőlése, hiszen a fej dőlésének következtében nem változik a negyedhullám-lemez lineáris polarizációs szűrőhöz való viszonya. Tehát a jobb- vagy balsodrású csatornajelet a szemüveg külső rétege, a negyedhullám-lemez bármely pozícióban képes befogadni, és továbbítani az alatta elhelyezkedő lineáris polarizációs szűrőhöz. Ez szintén átengedi a csatornajelet abban az esetben, ha az előtte elhelyezkedő negyedhullám-lemez a neki megfelelő sodrású jelet kapta. Ha ez nem így történik, akkor a lineáris polarizációs szűrőhöz érkező csatornajel 90 fokkal elforgatva érkezik meg, tehát nem fog áthatolni a rétegen.

Tehát a lineáris polarizációs technikánál a háromdimenziós tartalom megjelenítéséhez két képet vetítenek egymásra, azonos projekciós felületre, egymáshoz képest 90 fokkal elfogatott polarizációs szűrőkön keresztül. A projekciós felület praktikusan nem változtatja meg a már polarizált fény polarizációját. A szemüvegekben is 90 fokkal elforgatott lineáris polarizációs szűrőket helyeznek el. Ekkor a képernyőről vagy a vetítési felületről érkező csatornajelek közül csupán az fog teljes egészében áthaladni az adott szem előtt található polarizációs szűrőn, amelynek a polarizációs foka megfelel a szemüveglencse polarizációs fokával. A cirkuláris polarizációs technikánál ugyanez elmondható azzal a kiegészítéssel, hogy ebben az esetben ellentétes sodrású, cirkulárisan polarizált csatornajeleket alkalmazunk.

11. fejezet - Szinkronizált takaráson alapuló, aktív sztereo technikák

A szinkronizált takaráson alapuló, aktív technikák (Active Shutter Glasses) lényege, hogy a csatornajel szétválasztását nem szín- és polarizációs szűrőkkel valósítjuk meg, hanem aktívan beavatkozunk minden képkocka láthatóságába. Nevezetesen, a háromdimenziós tartalmat képkockáról-képkockára, egyszer az egyik szem számára, egyszer pedig a másik szem számára vetítjük. A fejen elhelyezkedő, aktív szemüveg pedig ennek megfelelően egyszer az egyik, egyszer pedig a másik szem előtt takarja ki a képet. A kitakarást a szemüvegekben elhelyezett, egyszerűsített LCD kijelzők segítségével végezzük, szinkronban a vetítővel. A szinkronizálás pedig általában egy infravörös jeladó segítségével oldjuk meg.

Szinkronizált takaráson alapuló, aktív technika
11.1. ábra - Szinkronizált takaráson alapuló, aktív technika


A szinkronizált takaráson alapuló, aktív technika nagy előnye, hogy színhelyesen képes átadni a háromdimenziós tartalmakat, és hogy nem érzékeny a fej dőlésére. Hátránya a többi technikához képest, a szemüvegben lévő többlet elektronika és a működéshez szükséges egyéb kiegészítők igen magas ára.

A shutter technológia egy időosztásos módszer, amely már közvetlenül a vetített kép generálásakor megoldja a képek szétválasztását. Ilyenkor az adott időpillanatban csak az egyik perspektíva látszik, tehát a rendszer felváltva biztosítja a képi információt a jobb illetve a bal szemnek, míg ezzel szinkronban a szemüvegben lévő vezérelhető szűrő felváltva engedi be a képet a jobb, vagy a bal szembe a vetített információ ütemezésének megfelelően. Ebben az úgynevezett aktív szemüvegben a zárszerkezet tulajdonképpen egy vékony folyadékkristályos egység, amely a vezérlés által kijelölt pillanatban lezárja a fény útját, így a kép nem jut be a szembe. A hatékony megjelenítéshez fontos, hogy a kijelző alkalmas legyen magas frekvenciájú képfrissítésre, ami a gyakorlatban a 100-110 Hz-es értéket jelenti. A megjelenítő és a szemüveg zárszerkezete közötti szinkronizációt és kommunikációt általában infravörös jellel oldják meg. Ez a módszer tipikusan a korszerű és modern megjelenítő eszközök alkalmazására épít, így leginkább a számítógépes szórakoztatóiparban alkalmazott technológia. A módszer hátrányaként említhető, hogy a szemüveg viselete nehézkes, a szinkronizációs frekvencia olykor zavarólag hathat, a belátható tér korlátozott, ezért a sok személy általi egyidejű szemlélés is korlátokba ütközhet.

12. fejezet - A tényleges csatornajel szétválasztáson alapuló sztereo technikák

12.1. A párhuzamos nézés technikája

A párhuzamos nézés technikája azt jelenti, hogy nem használunk semmiféle eszközt a háromdimenziós élmény előállításához. Ennél a technikánál két módszer áll a rendelkezésünkre, viszont mind a két esetben szükséges egy képpár, amelyen egymás mellett látható a bal és a jobb szemnek szánt kép. Az első nézési technikánál - amelyet többen tudnak kivitelezni - a képpárt fel kell tartani magunk előtt, és a távolba kell nézni annyira, hogy a két szemtengely csaknem párhuzamos legyen. A másik esetben a két szemtengelyt keresztezni kell. Első esetben a bal szemnek szánt képet balra, míg a jobb szemnek szánt képet jobbra helyezzük, viszont a második esetben a jobb szemnek szánt képet helyezzük balra és a bal szemnek szánt képet jobb oldalra. Ezt követően ellazítjuk a szemünket annyira, hogy a szemlencse akkomodációja a képsíkra álljon be. Ennek gyors eléréséhez azonban nagy gyakorlat szükséges. Vannak, akiknek ez egyáltalán nem sikerül, mert nem képesek szétválasztani a szemlencse akkomodációját a szemtengelyek konvergáló, illetve divergáló mozgásától.

12.2. Kézi sztereoszkóp

A kézi sztereoszkóp egy olyan eszköz, amelyben egy tárgyról vagy helyszínről, kicsit eltérő szögből felvett két kép foglal helyet. Az eszköz képes a bal és a jobb szemnek szánt képet a megfelelő szemnek mutatni anélkül a kellemetlenség nélkül, amivel a szemlencse akkomodációja melletti szemtengely-konvergencia, illetve -divergencia járna. Ebben a szerkezet két lencséje van a segítségünkre, amely szükségtelennél teszi a szemlencse akkomodációját, és a felhasználónak csupán bele kell néznie a sztereoszkópba.

Kézi sztereoszkóp I.
12.1. ábra - Kézi sztereoszkóp I.


Kézi sztereoszkóp II.
12.2. ábra - Kézi sztereoszkóp II.


Kézi sztereoszkóp III.
12.3. ábra - Kézi sztereoszkóp III.


12.3. Fejre illeszthető háromdimenziós kijelzők

A fejre illeszthető kijelzők alapvetően magukban hordozzák a potenciális lehetőségét annak, hogy háromdimenziós képcsatorna szétbontására használjuk őket. A szerkezetben a szemek előtt két LCD kijelző található, amelyek segítségével teszőleges képet vetíthetünk a szemeink elé. A kijelző természetesen OLED kijelző is lehet - napjainkban ez az elterjedtebb. A háromdimenziós hatáson kívül a fejre illeszthető kijelzők nagy előnye, hogy a teljes virtuális élmény kivitelezhető velük. A felhasználók a háromdimenziós élmény közben akár körbe is tudnak nézni a virtuális térben, és sétálhatnak is a virtuális környezetben. Hátrányuk azonban, hogy jelenleg hosszú távon még kellemetlen a viseletük. A fejre illeszthető kijelzők a háromdimenziós, életszerű virtuális valóság megjelenítésének egyik legteljesebb, legvalószerűbb élményt nyújtó szerkezetei. A fejre illeszthető kijelzőket elterjedten alkalmazzák a kiterjesztett valóság megjelenítésére. Ezekben az alkalmazásokban általában a valós környezetről készült felvételt, és egy ebből létrehozott virtuális objektumot, objektumokat rendezik egyazon médiaanyagba, és megjelenítik azt a kijelzőn. Ez hozzásegíti a felhasználót, hogy a háromdimenziós élményen kívül olyan segéd objektumokat lásson, amelyek a valóságban nem léteznek, csupán segítik a felhasználó tevékenységét. Az efféle alkalmazásokat leginkább a gyógyászatban, az iparban és a hadseregben használják. (A kiterjesztett valóság alkalmazások természetesen a szórakoztató elektronikai iparban is megjelentek, akár fejre illeszthető kijelzők nélkül.)

Fejre illeszthető háromdimenziós kijelző
12.4. ábra - Fejre illeszthető háromdimenziós kijelző


12.4. A holovízió, mint háromdimenziós megjelenítési lehetőség

A klasszikus értelemben vett hologramokhoz hasonlóan, a holografikus megjelenítők képesek arra, hogy tárolják, és a megjelenítés során visszaállítsák a hullámfrontban tárolt amplitúdó- és fázisinformációkat. Szerkezeti elemeiket tekintve az első kísérletek mozgó hologramok létrehozására és megjelenítésére elsősorban akuszto-optikai fénymodulátorokkal felszerelt berendezések voltak. A más utakon folyó kísérletek a különleges tulajdonságokkal rendelkező, folyadékkristályos egységeket részesítették előnyben, azonban ezek a kutatások zsákutcának bizonyultak, nem eredményeztek a gyakorlatban is használható rendszert.

A holografikus elvekre épülő tiszta holografikus technika a valós képből számítás útján nyeri ki azt az információt, amellyel - szintén számítás útján - előállítható a hologram. Ezt vezérelt lézersugár rekonstruálja. Sajnos rendkívül nagy az interferencia képek számítási igénye, viszont ezért kárpótlásul rendkívül szép és meggyőző hatásban lehet részünk.

A holografikus technológia egy másik alkalmazása során, olyan ernyőt használnak, amelynek képpontjai képesek arra, hogy különböző irányokba, különböző intenzitású és hullámhosszú fényt bocsájtsanak ki. Így könnyen belátható, hogy a térbeli látvány létrehozása csak a fénysugár vezérlésének kérdése. Ezt egy fény modulációs egység generálja, és a fenti tulajdonságokkal rendelkező ernyő, a transzformáció után, a helyes térbeli nézetet adja. E technológia előnye, hogy alkalmas a klasszikus holografikus megjelenítéshez hasonló mélységbeli információk megjelenítésére [12.1.].

Felhasznált irodalom

[12.1.] Dr. Lois, László, Daróczy, Bálint, Lustyik, Tamás, Agócs, Tibor, és Balogh, Tibor. Többnézetű videó megjelenítés és kódolás. Híradástechnika. LX. Évfolyam. 2005/9.

13. fejezet - Párhuzamos akadályokat alkalmazó autosztereo technikák

Az autosztereo megjelenítők legfőbb jellemzője, hogy speciális segédeszköz, például szemüveg használata nélkül képesek a térbeliség érzésének kialakítására. Itt is az ismert alapgondolatot alkalmazzák, miszerint a jobb és a bal szembe más és más képet juttatnak. Ezt úgy valósítják meg, hogy különböző optikai eszközöket, elemeket helyeznek, közvetlenül a képi információt hordozó ernyő elé.

A szemlélő komfortérzetét és a használhatóságot jelentősen korlátozzák a térbeliség hatásának kiváltásához szükséges eszközök, például a szemüvegek. Ezt a hiányosságot próbálják kiküszöbölni az úgynevezett autosztereoszkopikus kijelzők segítségével, amik a szemüvegek által megvalósított szétválasztást az ernyő közelébe helyezik, és azt más eszközzel biztosítják. A megjelenítők két legismertebb változata a lentikuláris és a parallax sztereo-kijelző. A lentikuláris változatot a szakirodalomban mikrolencsés rendszernek is nevezik, mert egy képpontonként vezérelhető elektronikus kijelző előtt, azonos gyújtótávolságú mikrolencsékből összeállított optikai egység helyezkedik el. Ha ezen az optikai rendszeren keresztül szemléljük a kijelzőt, a jobb és a bal szem számára eltérő képpontok válnak láthatóvá, tehát két különböző kép keletkezik, ami az agyba jutva létrehozza a sztereo hatást. A módszer hátránya, hogy érzékeny a pozícióra és a szemlélési távolságra.

A másik ismert változat a parallax sztereo megjelenítő, ami az elektronikusan vezérelhető ernyő előtt egy rácsszerkezetet tartalmaz. A rácsszerkezet a kialakítását tekintve olyan, hogy a tér különböző pontjaiban található szemgolyók számára más és más ernyőképpontokat tesz láthatóvá. A képernyő vezérlőjének az a feladatata, hogy a rácsszerkezet által elkülönített képpontokhoz különböző képeket rendeljen, így biztosítva a térbeliség élményének kialakulását.

Kihangsúlyozandó, hogy mindkét módszer kényes a szemlélési távolságra és a pozícióra. Hibás szemlélési távolság illetve pozíció esetén az egymáshoz tartozó képrészek átfedése miatt a helyes – ortoszkopikus – kép helyett a fordított – pszeudoszkopikus – kép jelenik meg, ami zavarossá teszi a látványt. A lentikuláris és a parallax sztereo-kijelzők vitathatatlan előnyei közé tartozik, hogy kijelzőkként jól vezérelhető LCD-ket alkalmaznak.

14. fejezet - Volumetrikus (térbeli) háromdimenziós technikák

A térbeli 3D megjelenítés esetén egy diffúzan reflektáló anyagra, esetleg valamilyen féligáteresztő közegre vetítenek vezérelt sugarakat nagy sebességgel, így a szem által érzékelt képek az agyban nem választódnak szét, összemosódnak és a térbeliség látszatát keltő elemekké állnak össze. A diffúziót biztosító felületekről a sugarak visszaverődnek, de egy részük át is haladhat rajtuk. Ennek megfelelően léteznek reflexiós, transzmissziós és vegyes rendszerek. Hasonlóan, a felületek is mozoghatnak vagy állhatnak, így megkülönböztethetünk álló vagy mozgó ernyős, illetve dupla vagy sokrétegű rendszereket. A volumetrikus megjelenítők egyik legnagyobb hátránya, hogy a tárgyak csak az ernyő által behatárolt térfogatban jeleníthetők meg.

A többrétegű rendszerek tulajdonképpen egy egyszerűsített változatot takarnak, ugyanis a térbeliség csupán néhány diszkrét rétegre korlátozódik. Itt általában néhány folyadékkristályos rétegre vetítenek párhuzamosnak tekinthető vetületeket, és ez adja a térbeliség érzését. E rétegek száma a legkorszerűbb rendszerekben sem haladja meg a húszat. Legnagyobb hátrányuk, hogy a megjelenített objektumokra szellemképek vetülnek, ugyanis a beérkező fénysugarak egyik rétegben sem nyelődnek el tökéletesen, hanem továbbhaladnak.

Ha egy képet gyorsan forgó felületre vetítünk, háromdimenziós képet állíthatunk elő. Nagyjából ezen az egyszerű elven alapul a térbeli megjelenítő eszközök működése. Ezek a készülékek valódi háromdimenziós, körbejárható képet jelenítenek meg. A berendezések speciális LED-es fényforrása fokonként más és más képet vetít egy megjelenítő közegbe (légnemű, folyékony vagy szilárd). Így az előttünk megjelenő kép is mindig eltérő, ha más szögből nézzük. A végeredmény egy szoborszerű, bármely irányból megtekinthető és körbejárható kép, melyhez még mélységérzet is társul.

A volumetrikus kijelzők tehát olyan megjelenítő eszközök, amelyek képesek a különféle objektumok valós térbeli reprezentálására, kijelzésére a háromdimenziós térben. A térbeli kijelzők tehát alkalmasak háromdimenziós vizualizáció létrehozására, az x-, y-, z-síkokban jól definiált régiók fény-emissziójával, fényszórásával továbbá fényáteresztésével.

Volumetrikus kijelző I.
14.1. ábra - Volumetrikus kijelző I.


Volumetrikus kijelző II.
14.2. ábra - Volumetrikus kijelző II.


Volumetrikus kijelző III.
14.3. ábra - Volumetrikus kijelző III.


Volumetrikus kijelző IV.
14.4. ábra - Volumetrikus kijelző IV.


14.1. Statikus, volumetrikus kijelzők

A statikus, volumetrikus kijelzőknél a megjelenítő berendezés nem tartalmaz olyan aktuátorokat, melyek a képtér egyes pontjainak reprezentálását dinamikusan valósítják meg. Ezekben a kijelzőkben az egyes képpontok (voxelek – volume, térbeli pixelek) reprezentálását statikus források biztosítják, állandósult üzemben, és csupán a voxelek elhelyezésénél van szerepe a mozgató mechanizmusoknak.

Ezekben a kijelzőkben az aktív elemekből egy címezhető térrészt alakítanak ki. Az elemek kikapcsolt állapotban  átláthatóak, míg bekapcsolt állapotban átláthatatlanok. Amikor a voxelek a definiált térben aktívak, akkor egy kvázi stabil és szilárd mintázatot hoznak létre a kijelző terében.

A különböző volumetrikus kijelzők más és már alapközeget használnak a kijelzési térben. Létezik gáz, folyékony és szilárd halmazállapotú alapanyag. Ezeket az alapközegeket általában lézerfénnyel gerjesztik, és ezzel az alapanyagok elektromágneses sugárzás kibocsátására ösztönzik a látható tartományban.

Más kijelzőknél normál levegőt használnak, mint alapanyag, és ezt a közeget nagyteljesítményű és jól fokuszált, impulzus üzemű lézerekkel gerjesztik. Az infravörös lézerfény fókuszpontjában a levegőből plazma jön létre, és ugyancsak fénykibocsátás tapasztalható a látható tartományban. A lézerfény fókuszpontját forgó tükrök és mozgó lencsék vezetik a kívánt térpontra, ahogy pattogó hangok kíséretében kirajzolódnak a voxelek. Ezzel a technikával nagyobb terjedelmű megjelentés is kivitelezhető – felhőkre és ködre is történhet kijelzés.

Statikus volumetrikus kijelző
14.5. ábra - Statikus volumetrikus kijelző


14.2. Dinamikus, volumetrikus kijelzők

Léteznek forgó és rezgő, dinamikus, volumetrikus kijelzők. A forgó felületű, háromdimenziós megjelenítők működési elvének alapja, hogy az emberi látás a gyorsan egymás után következő expozíciókat mozgásként érzékeli. Hozzávetőlegesen másodpercenként 20 expozíciót már mozgásnak érzékelünk. Ezt a hatást oly módon is lehet értelmezni és alkalmazni, hogy az egyes voxel konfigurációk, beállítások nagyon gyorsan követik egymást, így a teljes kép is láthatóvá tehető. Ehhez a kijelző egyszerre csak egy voxelt jelenít meg, de ezt igen gyorsan teszi. Ez az időbeli felbontás azonban nem összemérhető az előbbi 20 expozíció / másodperces felbontással. Ehhez jóval nagyobb felbontásra van szükség. A szaggatásmentes kijelzéshez a teljes voxel konfigurációt ki kell jelezni másodpercenként legalább 50-60 alkalommal. Ebben az esetben a kép a katódsugárcsöves monitorokhoz hasonlóan villogásmentes lesz.

A dinamikus, volumetrikus kijelzőknél a teljes konfiguráció szeletekre bontása is kivitelezhető. Ezek a szeletek lehetnek téglalapok, korongok vagy spirálisan kereszt-szekcionált alakúak. A felületeken megjelenített képek a felületre vetített vagy a felületre beültetett LED diódák segítségével történhet. Ezek a voxelpontok a forgással vagy rezgéssel szinkronban változhatnak, így létrehozva a változó képet.

Dinamikus volumetrikus kijelző
14.6. ábra - Dinamikus volumetrikus kijelző


15. fejezet - A háromdimenziós technikák alkalmazási lehetőségei

A háromdimenziós megjelenítési technikákat rendkívül széles körben alkalmazzák. Kezdetben és jelenleg is a legnagyobb felhasználási területe a filmipar (háromdimenziós mozi és TV). Elterjedten alkalmazzák a háromdimenziós technikákat továbbá az iparban, kutatásban és az orvostudományokban, koncerteken, sporteseményeken, videojátékokbanl, az oktatásban és újabban a YouTube-on is.

15.1. Háromdimenziós számítógépes játékok és más szoftverek

A háromdimenziós technikák talán legdinamikusabban fejlődő ágazata a háromdimenziós, számítógépes játékok és az internetes online játékok. Napjainkban már szerény összegekért bárki hozzájuthat egy háromdimenziós megjelenítő eszközhöz, és szabadon játszhat háromdimenziós játékokat, vagy használhat komolyabb háromdimenziós szoftvereket. Amíg a háromdimenziós megjelenítéssel felvértezett játékok még valóságosabbá varázsolják a felhasználók számára a virtuális valóságot, addig az esetleges háromdimenziós tervezőrendszerek felhasználóinak megkönnyítik a tervezés fáradtságos műveletét. Míg első esetben a szórakoztatás és a kikapcsolódás fokozása cél, a második esetben pedig a professzionális munkavégzés egyszerűsítése. Ami viszont közös e tevékenységekben, hogy a háromdimenziós élmény fokozza a hatékonyságot, akár pihenésről, akár munkáról van szó.

15.2. Háromdimenziós mozi

Napjainkban a háromdimenziós ipar egyik húzó ágazata a háromdimenziós mozifilmek vetítése. Az összes háromdimenziós „fellángolás”, amely a múlt évszázadokban bekövetkezett, mind a szórakoztatással függött össze és nem a tudománnyal. Ma már nincs olyan mozi, amelyben ne lenne legalább egy, háromdimenziós filmek vetítésére szolgáló terem (kivéve talán a művész mozikat). A közönség még mindig rajong a háromdimenziós tartalmakért, bár az utóbbi időben, mintha vesztett volna vonzerejéből a háromdimenziós mozizás. (Számos oka lehet ennek a kedvezőtlen trendnek.)

A mozik többségében a háromdimenziós tartalmak vetítése teljes mértékben digitálisan történik, háromdimenziós multiplexerek segítségével. A felhasználóknak cirkuláris polarizációs szűrős szemüveget kell viselniük a filmnézés közben. A tapasztalattal megerősített elmélet szerint az ilyen filmek vetítése csökkentett fényintenzitással történik. Ezek alól természetesen kivételt képez az IMAX technológia.

15.3. Háromdimenziós televíziózás

Napjainkban elterjedten használnak otthoni háromdimenziós televíziókat. Újabban bekerültek az otthonokba a szemüveg nélkül nézhető autosztereokópikus kijelzők is. Előbbieknél a felhasználóknak kellemetlenséget okozott a szemüveg viselete, és ezért csak különleges alkalmakkor ültek le megnézni egy-egy háromdimenziós filmet. Ezekben az esetekben pedig teljesen ki kellett zárni a környezet zavaró hatását, és a televízió világosságának csökkenése is zavaró lehetett. Az újabb autosztereokópikus kijelzőknél nincs fényerőesés, és a szemüvegviselettel járó kellemetlenség, azonban a tartalmak rosszabb minőségben lesznek láthatóak a kijelzőn. Világszerte sok televíziós csatorna indította el a háromdimenziós tartalmak folyamatos vetítését. Ezek a tartalmak általában nagyobb sportesemények és híresebb filmek. Természetesen létrejöttek a háromdimenziós tartalmak tárolására szolgáló eszközök is, mint például a Blu-ray disc, amelynek kapacitása jóval meghaladja egy szabványos DVD kapacitását, így alkalmas az egyébként sokkal nagyobb helyfoglalású, háromdimenziós tartalmak tárolására.

15.4. Háromdimenziós vizualizáció az iparban és az egészségügyben

A háromdimenziós megjelenítés talán legkomolyabb területe az egészségügy és az ipar. Amíg az egészségügyben a háromdimenziós megjelenítés segítségével csökkentik a valóságos beavatkozások kockázatát, addig az iparban növelik a munkavégzés hatékonyságát, illetve minimalizálják a valóságos körülmények között bekövetkező hiba kockázatát. Az egészségügyben és az iparban egyaránt fontos, hogy a felhasználók (ez esetben orvosok és mérnökök) minimalizálni tudják azt a kockázatot, amelyet a megtervezett beavatkozás, illetve a konstrukció virtuális próba nélküli megvalósítása jelentene. Fontos továbbá, hogy a távgyógyászatban (kihelyezett katonai sebészet) és a nagy távolságokra lévő kutató laboratóriumokban elhelyezett berendezéseket (VIRCA rendszer) ruházzuk fel a valóság illúziójával. Ezzel elérhetővé válik az esetleges hibák számának radikális csökkentése.

15.5. A háromdimenziós megjelenítés alkalmazásának lehetőségei

Kérdésként merülhet fel, hogy a háromdimenziós megjelenítés és vizualizálás, illetve ezek eszközei, mely kutatási és piaci területeken jelentenek új irányt a jövőbeli munkákhoz. Erre választ maga az alapjelenség adhat, ami egyértelművé teszi, hogy ez a technika az emberi látás teljes folyamatába illeszkedik, illetve azt új lehetőségekkel egészíti ki. A három dimenzióban megjelenített térbeli objektumok:

  • az ember számára könnyebben értelmezhetők,

  • részletgazdagabbak,

  • lehetőséget adnak a lényeg kiemelésére,

  • biztosítják a valós és az animált objektumok átmenettel történő, illetve átmenet nélküli kapcsolódását,

  • realisztikustól eltérő tulajdonságok hozzáadásával segítik az áttekinthetőséget,

  • fizikai értelemben vett pozícióváltás nélküli térbeli bolyongás érzését kelthetik,

  • IT (information technology) eszközök alkalmazásával lehetőséget nyújtanak a telemanipuláció valósághű megvalósítéséra,

  • a hatás tárolható, időben és térben bármikor reprodukálható.

Mindezek alapján a minőségi térhatást megvalósító eszközök hasznosak lehetnek:

  • a tudomány,

  • a kutatás,

  • az oktatás,

  • a gyógyítás

  • és a szórakoztatóipar

szinte minden területén. A rendszerek telekommunikációs támogatással alapját képezhetik a:

  • a 3D internetes fórumoknak,

  • a virtuálisan kibővített platformoknak,

  • a valósághű tervezőfelületeknek,

  • az otthoni szórakoztatásnak,

  • a rehabilitációnak,

  • az idősgondozásnak

  • és a biztonságtechnikai távfelügyeletet igénylő megoldásoknak.

15.6. A háromdimenziós megjelenítés távlatai

Napjainkban a szemüveggel kiegészített sztereó megjelenítő technológiák jelentik a technikailag megfelelő, érzet szempontjából kielégítő és zavarmentes, gazdaságilag a legelérhetőbb, leginkább felhasználható, térhatású megjelenítés megoldásait, a háromdimenziós vizualizációt. Az ilyen módon három dimenzióban megjelenített térbeli objektumok a szemlélő számára könnyen értelmezhetők, részletgazdagok, lehetőséget adnak a lényeg kiemelésére, biztosítják a valós és az animált objektumok kapcsolódását, realisztikustól eltérő tulajdonságok felruházásával segítik az átláthatóságot, valamint támogatják a pozícióváltás nélküli térbeli bolyongás érzésének kialakulását. Ezek az eszközök hasznosak lehetnek a tudományos kutatás, az oktatás, a gyógyítás és a szórakoztatóipar számos területén. Alapját képezhetik 3D internetes fórumoknak, virtuálisan kibővített platformoknak, valósághű tervezőfelületeknek. Továbbá hasznosak lehetnek az otthoni szórakoztatás, a rehabilitáció, az idősgondozás, a biztonságtechnikai távfelügyeletet igénylő megoldások területén.

Az már történeti adatokkal bizonyított tény, hogy a háromdimenziós technológia és megjelenítési forma története régre vezethető vissza. Az évek folyamán a népszerűségében és elterjedtségében időbeni periodicitás tapasztalható. A sztereoszkópok legnagyobb népszerűségüket a viktoriánus korban érték el, amit azóta sem tudtak túlszárnyalni, és sajnos a hagyományos fotográfiának igazi konkurenciát sohasem tudtak jelenteni. Ennek ellenére bizakodásra adhat okot, hogy a korszerű eszközök kényelmi szolgáltatásaikkal nagyobb szeletet tudnak kihasítani, és jelentősebb teret tudnak meghódítani a megjelenítő eszközök piacából. Ma a háromdimenziós megjelenítés a mindennapokban is alkalmazott, széles körben használt eszköz lett. Csak remélhető, hogy ezek a tágabb értelemben vett, kiegészített valóságok valamint a virtuális környezetek az emberi kapcsolatok új dimenzióit nyithatják meg, így a jövőben is fontos momentumai lesznek a kutatásoknak és a fejlesztéseknek.

15.7. Ellenőrző kérdések a fejezethez

  1. Röviden foglalja össze, hogy a térbeli megjelenítés hogyan értelmezhető az eredeti felületről érkező hullámfront, vagy a felületet helyettesítő másodlagos felületről érkező hullámfront rekonstruálása tekintetében?

  2. A képgenerálási eljárások feladata, hogy a virtuális kamera nézőpontjából egy kétdimenziós képet alkosson a háromdimenziós térről azzal a céllal, hogy a két kétdimenziós kép, egy bonyolult agyi mechanizmus után a térbeliség élményévé szintetizálódjon. Mik ennek a folyamatnak a feltételei?

  3. Értelmezze a grafikus eljárás műveleteit! Mit jelent a képelemek összeállítása, a modell transzformációja, a látótéren kívül eső térrészek elhagyása, a nézőponti transzformáció, a képtérre történő vetítés és a megjelenítés?

  4. A három dimenzióban megjelenített térbeli objektumok a szemlélő számára könnyen értelmezhetők, részletgazdagok, lehetőséget adnak a lényeg kiemelésére, biztosítják a valós és az animált objektumok kapcsolódását, realisztikustól eltérő tulajdonságok felruházásával segítik az áttekinthetőséget, támogatják a pozícióváltás nélküli térbeli bolyongás érzésének kialakulását. Ismertesse meg ezeket a folyamatokat, és jellemezze őket!

  5. Miért lehetnek hasznosak a háromdimenziós megjelenítés eszközei a tudományos kutatás, az oktatás, a gyógyítás és a szórakoztatóipar számos területén, valamint az otthoni szórakoztatás, a rehabilitáció, az idősgondozás, a biztonságtechnikai távfelügyeletet igénylő megoldások területén?

  6. Az ember – és az élővilág egyedei jelentős részének – látása úgynevezett binokuláris alapokon nyugszik, azaz a két szem által leképzett térrész síkbeli képeit az agy egy közös feldolgozási algoritmus segítségével együttesen értékeli, értelmezi. A legfontosabb momentum, hogy az adott objektumról a két érzékelő – adott esetben a két szem – eltérő térbeli pozíciója miatt, eltérő képeket regisztrál. Milyen olyan eseteket tud elképzelni, amikor valamilyen rendellenesség vagy nem teljes érzékelés miatt ezt a funkcióját az agy nem képes ellátni? Milyen hátrányokkal jár a térbeli látás hiánya a mindennapi életben?

  7. A kép nélküli térbeli megjelenítés során általában hullámfront-rekonstrukciót valósítunk meg. Ennek tipikus példája a klasszikus hologram. Ennek készítése során olyan eszközt hozunk létre, amely az ábrázolandó, valóságos tárgy felületéről reflektálódó hullámfrontot állítja vissza. A tárgy egyszerű szemlélése esetén annak felületéről – a tulajdonságait hordozó –, reflektálódó hullámfrontot engedjük a szemeinkbe, ezáltal az agy képes a térbeliség érzésének létrehozására. Milyen feltételek teljesülése szükséges a klasszikus hologram létrejöttéhez és a rekonstrukciójához? A klasszikus holografikus megjelenítés rendkívül látványos, azonban elterjedése korlátozott. Mi ennek az oka?

  8. Volumetrikus típusú térbeli megjelenítés esetén a megjelenítők egy diffúzan reflektáló anyagra, esetleg valamilyen féligáteresztő közegre vetítenek vezérelt sugarakat, nagy sebességgel, így a szem által érzékelt képek az agyban  nem választódnak szét, összemosódnak, és a térbeliség látszatát keltő elemekké állnak össze. Ismertesse, hogy melyek azok a feltételek, amelyek teljesülése nélkül nem jön létre a jelenség?

  9. Az autosztereo megjelenítők legfőbb jellemzője, hogy speciális segédeszköz, például szemüveg használata nélkül képesek a térbeliség érzésének kialakítására. Itt is az ismert alapgondolatot alkalmazzák, miszerint a jobb illetve bal szemekbe más és más képet juttatnak. Ezt úgy valósítják meg, hogy különböző optikai eszközöket, elemeket helyeznek közvetlenül a képi információt hordozó ernyő elé. Melyek ezek a speciális eszközök, hogyan jellemezhetők optikai szempontból, a paramétereik milyen hatással lehetnek a térbeliség látványára? Az autosztereo megjelenítők két legismertebb változata a lentikuláris és a parallax sztereo-kijelző. A lentikuláris változatot a szakirodalomban mikrolencsés rendszernek is nevezik, mert egy képpontonként vezérelhető elektronikus kijelző előtt azonos gyújtótávolságú mikrolencsékből összeállított optikai egység helyezkedik el. Mutassa be a sugármenetet!

  10. Autosztereo megjelenítők alkalmazásakor hibás szemlélési távolság illetve pozíció esetén az egymáshoz tartozó képrészek átfedése miatt zavaros képek keletkezhetnek. Magyarázza meg, mit jelent az ortoszkopikus és a pszeudoszkopikus látvány!

  11. Az anaglif eljárás alkalmazása esetén az egymásra nyomtatott két egyszínű kép jól elkülöníthető spektrummal rendelkezik, és a szemlélő a látványt a kép színeinek megfelelő színű szemüvegen keresztül vizsgálja. Magyarázza meg, hogy ez miként eredményezheti a térbeliség látványának kialakulását! Színszétválasztásos multiplex módszer esetén az egymásra vetített két színes képet eltérő monokromatikus összetevőkből állítjuk elő, és azokat a nekik megfelelő szűrőkön keresztül szétválasztva juttatjuk a jobb és a bal szembe, így színhelyes térhatást érhetünk el. Magyarázza meg, hogy ezt hogyan használhatjuk ki! Melyek a módszer elterjedésének korlátai?

  12. A shutter technológia egy időosztásos módszer, amely a képek szétválasztását már közvetlenül, a vetített kép generálásakor megoldja. Magyarázza el a térbeliség kialakulását e technológia alkalmazása esetén!

Felhasznált irodalmak

[15.1.] Dr. Lois, László, Daróczy, Bálint, Lustyik, Tamás, Agócs, Tibor, és Balogh, Tibor. Többnézetű videó megjelenítés és kódolás. Híradástechnika. LX. Évfolyam. 2005/9.

[15.2.] Benton, S. A.. Practical Holography. XII. SPIE. 1998.

[15.3.] Bjelkhagen, H. I. és Caulfield, H. J.. Selected Papers on Fundamental Techniques in Holography. Milestone Series MS171. SPIE. 2001.

[15.4.] Caulfield, H. J., Leith, E. N., és Denisiuk, I. N.. The Art and Science of Holography. Press Monograph SPIE. Vol. PM124.. 2004.

[15.5.] Hariharan, P.. Basics of Interferometry. Academic Press. 2006.

[15.6.] Hariharan, SZO. Optical Interferometry. Academic Press. 2003.

[15.7.] Hariharan, V. Basics of Holography. Cambridge University Press. 2002.

[15.8.] Hariharan, H. Optical Holography. Cambridge University Press. 1996.

[15.9.] Johnston, S. F.. Holographic Visions: A history of New Science. Science and Computing Series. Oxford University Press. 2006.

[15.10.] Kasper, J. E. és Feller, S. A.. The Complete Book of Holograms: How They Work and How to Make Them. John Wiley & Sons. 1987.

[15.11.] Saxby, G.. Practical Holography. Taylor & Francis. 2003.

[15.12.] Hariharan, P.. Selected Papers on Interferometry. Milestone Series MS28. SPIE. 1991.

[15.13.] Nussbaum, A. és Phillips, R.A.. Modern optika mérnököknek és kutatóknak. Műszaki Könyvkiadó. Budapest . 1982.

[15.14.] Jenkins F., Optika. Panem. Budapest. 1997.

[15.15.] Dr. Sevcsik, Fényképészet és Hefelle. MK. Budapest. 1980.

[15.16.] Antal, Ákos. Sztereomegjelenítés. Természet Világa. 141. évfolyam, 4. szám. 2010.

[15.17.] Imre, Gábor és Lőrincz, Béla. 3D – álom vagy valóság. HTE. 2009.

[15.18.] Guenther, R.. Modern Optics. J. Wiley & Sons Inc.. 1990.

[15.19.] Lang, János. Fizika Laboratóriumi Gyakorlatok. Tankönyvkiadó. Budapest . 1976.

16. fejezet - Háromdimenziós tartalmak további létrehozásának lehetőségei

Mélységérzetet keltő képtartalom sokféleképpen készíthető. Például két kamerával (az emberi szemtávolsággal egyező távolságban (63,5 mm) elhelyezve egymástól), annak érdekében, hogy két perspektívából rögzítse az eseményeket. Egy sztereoszkópikus kamerával, amelyet már megtalálhatunk a nagyobb gyártók kínálatában is. Térhatású képtartalom számítógépes animációval is megvalósítható . Végül a valós rögzítésből származó másodlagos kép beillesztésével vagy generálásával. Ez elvégezhető mind a kijelzőben, mind pedig a stúdióban lévő nagyteljesítményű számítógéppel. Ez utóbbi esetben természetesen jobb eredményre lehet számítani.

A háromdimenziós tartalom televíziós tárolására és közvetítésére is számos módszer létezik. Egyik ilyen módszer az előzetes színezés, például piros-zöld, piros-ciánkék vagy ColorCode színezéssel. Két csatorna használatával, külön adatcsatornaként, mindkettő teljes sávszélességgel. Egy képként vetítve, de nem egyesítve, például két torzított kép egymás mellett, vagy sakktáblához hasonló mintázattal, vagy váltott sorosan kivetíteni. Kiegészítő adatfolyam alkalmazásával, amely lényegében csak a második és az első kép közti különbségeket tartalmazza. Tárolás és átvitel, mint 2D-s kép mélységinformációval, amely a térbeli elhelyezkedését tartalmazza az objektumoknak 2 dimenziós képátvitele mélységinformációval.

16.1. A háromdimenziós technikák és a holográfia

A holográfia, mint háromdimenziós képrögzítési és rekonstruálási eljárás alkalmazása során, a hologramlemez segítségével a szemlélő egy ablakon keresztül látja a rögzített és rekonstruált tárgyat, a felvételi körülmények által meghatározott térrész határai között. A rögzítésen, vagy a hologram készítésén a holografikus lemez, mint rögzítőeszköz megvilágítását és exponálását értjük. A rekonstrukció pedig egy hullámfront átbocsátását jelenti a hologramlemezen. Ha a hagyományos hologram készítését egy fotofizikai folyamatnak fogjuk fel, akkor az exponálás és a rekonstrukció között egy fotokémia folyamat során, stabil formában állítjuk elő a hologramot.

A holográfia kifejezés görög eredetű, jelentése: teljes írás. Lényegében a holográfia egy kétlépcsős eljárás, amely során egy tárgyat koherens fénnyel megvilágítunk, hogy az interferenciajelenséget hozzon létre egy érzékelő közegen, ami lehet ezüsthalogén emulzió vagy más fotofizikai érzékelő, de legújabban elektronikus detektort is használhatunk. A létrejövő interferenciaképet hullámfronttal rekonstruálva újra létrehozzuk az eredeti tárgyról érkező hullámfrontot, azaz a háromdimenziós képét. A folyamat végén látható jelenség az eredetivel megegyezőnek tűnik, így a görög eredetű megnevezésnek megfelelően annak teljes háromdimenziós képe jön létre.

A holográfia megszületését Gábor Dénesnek köszönhetjük, aki 1947 és 1948 között végzett kísérleteket ezen a téren. Megállapításaival egy teljesen új tudományágat alapozott meg, és meghatározó úttörő munkát végzett. A problémát az elektronmikroszkópokhoz kapcsolódó kutatásai vetették fel, ugyanis az alkalmazott leképző elemek korlátozták a felbontóképességet, a diffrakciót. A diffrakció adta korlátok nem voltak áthághatók, a kép minősége nem volt megfelelő, új ötletre volt szükség az objektumról beszerezhető információk tárolásának vonatkozásában. A megoldás a problémára, hogy az érzékelő felületen, a fény intenzitása mellett, a fázis is rögzítésre került, mégpedig egy a tárgyról visszaverődő, valamint egy egyszerű sík- vagy gömbhullám – ami referenciahullámnak, vagy viszonyításnak tekinthető – szuperpozíciójaként. Az így elkészült képet átvilágítva a referenciahullámmal, a tárgy háromdimenziós képét lehetett megfigyelni, amely tartalmazta a tárgyról készült információt, természetesen az aberrációk kíséretében.

Tudománytörténeti tény, hogy a holográfia alapelveit először Gábor Dénes ismertette (Imperial College of Science and Technology, University of London). A találmány tulajdonképpen az elektronmikroszkóppal kapott képek felbontásának javítására szolgáló módszer volt. Az alapelveket, az elméleti megfontolásokat, a rekonstrukcióról szóló elképzeléseit Gábor Dénes 1948-ban publikálta. Ötletével akkor, elsősorban technikai korlátok miatt, nem igazán foglalkoztak, és a lézer 1960-as megjelenéséig elgondolásai csak korlátozott lehetőségek közötti laboratóriumi kísérleteknek számítottak. A szakmai elismerés azonban nem késett, hiszen 1971-ben módszeréért (holográfia) fizikai Nobel-díjat kapott.

Az így elkészült háromdimenziós rekonstruált hullámfront már kísérletileg használható volt, de szerény minőséggel. Ezen probléma megoldására 1962-ben került sor, amikor Emmeth Leith és Juris Upatnieks először alkalmazott lézert a holografikus kísérletekhez, amelynek intenzitása valamint koherenciája sokszorosa volt a Gábor Dénes által korábban alkalmazott higanyívfényű fényforrásnak. A lézeres fényforrásokkal már jó minőségű hologramok is előállíthatóvá valamint rekonstruálhatóvá váltak. A tárgyhullám fázisának mérése és kiértékelése akkor még nem volt közvetlenül lehetséges. A következő lépést, a technológia és a számítógépek jelentették a digitális holográfia irányába:

  • a számítógépek kapacitásának fejlődése lökést adott a technológia elterjedésének,

  • a fotográfiában használt film helyett digitális képrögzítő eszközökre (elsősorban CCD detektor) történő rögzítés – ugyan erős megkötésekkel –, de megvalósítható,

  • az elektronikus úton történő rögzítés segítségével a hullám intenzitása és fázisa egyaránt reprodukálható és mérhető,

  • a hatás tárolható, módosítható vagy felhasználható lett egy későbbi szimuláció során,

  • az így nyert hologramok általi mérés akár később, akár valós időben is megjeleníthető és módosítható.

Az ehhez szükséges programok egy része ingyenesen beszerezhető, kutatási célokra szabadon használható.

Bár a holográfia széles irodalommal rendelkezik a módszerek és felhasznált eszközök terén, de részben a digitális feldolgozás elterjedésének köszönhetően, újabb és újabb alkalmazási területek jelennek meg. A skála igen széles, a holográfia a méréstechnikai alkalmazásokon túlmenően, különböző tudományos és művészeti területeken is megjelenik. A méréstechnikában legelterjedtebb alkalmazási mód az úgynevezett kétexpozíciós hologram, amikor egy tárgyról két egymás utáni felvétel készül, az egyik nyugalmi, a másik pedig deformált (például mechanikai feszültség hatására bekövetkező alakváltozás utáni) állapotban. Feldolgozva a két állapot közötti különbségeket, a felületen megjelenő interferenciacsíkokból egyértelműen meghatározható és számítható a változást okozó hatás.

Az időátlagoló holografikus interferometriával egy tárgy rezgési állapotának kvalitatív mérése valósítható meg, például mérhető lesz az amplitúdója. A dombornyomott hologramokat a biztonságtechnikai és csomagolástechnikai eszközöknél használják az egyedi és hamisíthatatlan azonosítás céljából.

A számítástechnikában, a számítógépes adattárolásban és az informatikában egyre nagyobb teret hódít a holografikus adattárolás. A jelenleg alkalmazott térbeli megjelenítés érzetét keltő televíziós megjelenítők kiváltására, a jobb hatás elérése érdekében intenzíven fejlesztik – a valós térbeli hatást nyújtó – holografikus megjelenítőket.

A holográfia lehetővé teszi, hogy kétdimenziós hordozófelületen térbeli hatású műalkotást rögzítsünk. A művészetben alapvetően két területen alkalmaznak hologramokat. Egyrészt lehetővé teszik a nem mozgatható műtárgyak távoli helyeken, szállítás nélküli tanulmányozását. Másrészt a nonfigurális hologramok elsősorban emocionális hatásuk által fejtik ki hatásukat. A fenti összefoglalóból is jól érzékelhető, hogy a felhasználás nagyon széles skálán mozog, ami egyre bővül, és egyre nagyobb teret hódít.

Rendkívül fontos terület - a fentieken túl - a holografikus adattárolás, melynek célja, hogy úgynevezett holografikus memóriákat alkalmazzon digitális információk tárolására, hologramok formájában. Az információ tárolása a hagyományos rendszerekben vonal mentén, vagyis egy dimenzióban valósul meg. A megfelelő technológia alkalmazásával ezt a struktúrát helyezik el a tároló eszköz felületén. A holografikus adattárolás során az információ tárolása általában két vagy három dimenzióban történik, bizonyos formátumú kép vagy alakzat formájában. Előnye a nagy adatsűrűség, ugyanis itt a térfogatban is tárolódhat adat. A tárolt információ egységes formájában, egyszerre olvasható ki, ez szintén növeli az olvasási sebességet. Külön előny, hogy a hologram redundánsan tárolja az információt, így rendkívül nagy az adatbiztonság, nem érzékeny a sérülésekre.

Irodalmak

[16.1.] Dr. Lois, László, Daróczy, Bálint, Lustyik, Tamás, Agócs, Tibor, és Balogh, Tibor. Többnézetű videó megjelenítés és kódolás. Híradástechnika. LX. Évfolyam. 2005/9.

[16.2.] Benton, S. A.. Practical Holography. XII. SPIE. 1998.

[16.3.] Bjelkhagen, H. I. és Caulfield, H. J.. Selected Papers on Fundamental Techniques in Holography. Milestone Series MS171. SPIE. 2001.

[16.4.] Caulfield, H. J., Leith, E. N., és Denisiuk, I. N.. The Art and Science of Holography. Press Monograph SPIE. Vol. PM124.. 2004.

[16.5.] Hariharan, P.. Basics of Interferometry. Academic Press. 2006.

[16.6.] Hariharan, SZO. Optical Interferometry. Academic Press. 2003.

[16.7.] Hariharan, V. Basics of Holography. Cambridge University Press. 2002.

[16.8.] Hariharan, H. Optical Holography. Cambridge University Press. 1996.

[16.9.] Johnston, S. F.. Holographic Visions: A history of New Science. Science and Computing Series. Oxford University Press. 2006.

[16.10.] Kasper, J. E. és Feller, S. A.. The Complete Book of Holograms: How They Work and How to Make Them. John Wiley & Sons. 1987.

[16.11.] Saxby, G.. Practical Holography. Taylor & Francis. 2003.

[16.12.] Hariharan, P.. Selected Papers on Interferometry. Milestone Series MS28. SPIE. 1991.

[16.13.] Nussbaum, A. és Phillips, R.A.. Modern optika mérnököknek és kutatóknak. Műszaki Könyvkiadó. Budapest . 1982.

[16.14.] Jenkins F., Optika. Panem. Budapest. 1997.

[16.15.] Dr. Sevcsik, Fényképészet és Hefelle. MK. Budapest. 1980.

[16.16.] Antal, Ákos. Sztereomegjelenítés. Természet Világa. 141. évfolyam, 4. szám. 2010.

[16.17.] Imre, Gábor és Lőrincz, Béla. 3D – álom vagy valóság. HTE. 2009.

[16.18.] Guenther, R.. Modern Optics. J. Wiley & Sons Inc.. 1990.

[16.19.] Lang, János. Fizika Laboratóriumi Gyakorlatok. Tankönyvkiadó. Budapest . 1976.