Átlátszóság, csipkézettség, köd

Slides:



Advertisements
Hasonló előadás
Oktatásszervezési változások. Mintatantervi változások.
Advertisements

Stacionárius és instacionárius áramlás
OpenGL 2. gyakorlat Hapák József
L ÁTHATÓSÁG MEGHATÁROZÁSA tavaszi félév.
Színformátumok és színmodellek
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
OpenGL Szirmay-Kalos László In theory, there is no difference
3D képszintézis fizikai alapmodellje
GPGPU labor I. OpenGL, Cg.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
GRAFIKUS PRIMITÍVEK KITÖLTÉSE
Változó expozíciós idejű képek fúziója
Grafika a programban Készítette: Pető László. Bevezetés Valójában nem a célobjektumra rajzolunk, hanem annak festővászon területére (canvas). Csak olyan.
Transzformációk kucg.korea.ac.kr.
1. A digitális fényképezőgép felépítése
3. Vetületi ábrázolások számítási eljárásai
PTE PMMK Matematika Tanszék dr. Klincsik Mihály Matematika III. előadások MINB083, MILB083 Gépész és Villamosmérnök szak BSc képzés 2007/2008. őszi félév.
Bekezdésformázás Nevem: Berkes András Speciális kategória
,,Én így tanítanám az informatikát”
Webszerkesztés Stíluslapok (CSS).
Microsoft Access Vezérlőelemek.
CSS.
Számítógépes grafika 3. gyakorlat.
3. Vetületi ábrázolások számítási eljárásai
Számítógépes Grafika Megvilágítás Programtervező informatikus (esti)‏
Turbo Pascal 11..
Önálló laboratórium Képek szegmentálása textúra analízis segítségével
Prezentáció a prezentációról
Biológiai anyagok súrlódása
Előadó Karancsi Zoltán.  Egyszínű ecset  SolidColorBrush  Színátmenetes ecset  LinearGradientBrush  RadialGradientBrush.
Transzformációk egymás után alkalmazása ismétlés
Rendering pipeline Ogre3D
Dplusz projekt 1 Dplusz projekt Készítők: Kerti Ágnes, Cseri Orsolya Eszter Konzulens: Vámossy.
OpenGL 4 shaderek, GLSL Valasek Gábor
Web-grafika II (SVG) 3. gyakorlat Kereszty Gábor.
Web-grafika II (SVG) 1. gyakorlat
2.2. Az egyenes és a sík egyenlete
Az NVU webszerkesztő program
Bevezetés a számítógépi grafikába 2. Paraméteres görbék Paraméteres görbe: 2D-ben: paraméter: általában: kikötések: legyen folytonos legyen folytonosan.
Funkciós blokkok A funkciós blokkok áttekintése Az alkalmazás előnyei.
Táblázatkezelés KÉPLETEK.
Táblázatok.
Gazdasági informatikus - Szövegszerkesztés 1 Bekezdések formázása 3.
Máté: Orvosi képfeldolgozás12. előadás1 Három dimenziós adatok megjelenítése Metszeti képek transzverzális, frontális, szagittális, ferde. Felület síkba.
Számítógépes Grafika OpenGL 4 shaderek, GLSL. OpenGL 4 A következő programozható fázisok vannak a 4.x-es OpenGL-ben: Vertex shader Tesselation control.
A Mozilla magyar nyelvű szerkesztőjének használata
Képszerkesztés magas fokon
1 OpenGL grafikus rendszer Dr. Nehéz Károly egyetemi adjunktus Miskolci Egyetem Alkalmazott Informatikai Tanszék.
Informatika Oktató: Bock Ádám. Prezentáció készítés PowerPoint program segítségével.
A képszerkesztési eljárások gyakorlata Microsoft Picture Manager 3. témakör:
Testmodellezés Készítette: Esztergályos Gusztáv. Témák  Felületek megadásának matematikai alapja  Poligonokkal határolt felületek  explicit reprezentáció.
Hegesztési folyamatok és jelenségek véges-elemes modellezése Pogonyi Tibor Hallgatói tudományos és szakmai műhelyek fejlesztése a Dunaújvárosi.
Framebuffer.
Stacionárius és instacionárius áramlás
A grafikus hardware programozása
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Klasszikus szabályozás elmélet
Vizualizáció és képszintézis
Stacionárius és instacionárius áramlás
OpenGL megjelenítési listák
Árnyékszerkesztés alapjai
Neumann János Informatikai Kar
Görbék, felületek.
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Építőelemek 4-7. foglalkozás: építőelemek létrehozása, kihúzás, vetítés, forgatás, lekerekítés, élletörés.
CONNECTRA rendszer bevezetése
Képszerkesztés magas fokon
2. A számító- gépes grafika eszközei
Adatfeldolgozási ismeretek 15. ML osztály részére 2017.
Nagy Attila1,2, Rovó László1, Kiss József Géza1
Előadás másolata:

Átlátszóság, csipkézettség, köd

A tanult témakörök összefoglalása Geometria megadása és kirajzolása Geometria transzformálása, vetítése A teljesítmény növelése érdekében megjelenítési listák alkalmazása Fények és anyagtulajdonságok megadása

Miről lesz szó? Átlátszó színek megadásával (transculent) átlátszó felületek képezése Poligonok és vonalak csipkézettség mentesítése (antialiasing) Légköri hatások (atmospheric effects) megadása pl. köd (fog)

Blending (keverés) Közvetlenül azelőtt történik, amikor a pixelek a szín-bufferbe íródnak. ‘Blending’ nélkül az új színértékek felülírják a régieket. ‘Blending’ segítségével szabályozhatjuk, milyen mértékben kombinálódjon a tárolt szín az új színnel. Color-index módban a blending funkció nem használható

Blending A legtermészetesebb megközelítés szerint az RGB-reprezentálja a színt, az alpha érték pedig az átlátszóságot. Forrás és cél faktorok: A bejövő szín (forrás) kombinálódik a tárolt pixellel (cél) forrás és cél faktorok segítségével a következőképpen: (RsSr+RdDr , GsSg+GdDg, BsSb+BdDb, AsSa+AdDa) , ahol: (Sr,Sg,Sb,Sa) forrás faktor (Dr,Dg,Db,Da) cél faktor (Rs,Gs,Bs,As) forrás (bejövő) szín (Rd,Gd,Bd,Ad) cél (tárolt) szín

Blending glBlendFunc(GLenum sfactor, GLenum dfactor) – segítségével adható meg a forrás és cél faktorok generálási szabálya: konstans melyik faktor? Blend faktor GL_ZERO forrás, cél (0,0,0,0) GL_ONE (1,1,1,1) GL_DST_COLOR cél (Rd,Gd,Bd,Ad) GL_SRC_COLOR forrás (Rs,Gs,Bs,As)

Alapértelmezett beállítás: glBlendfunc(GL_ONE, GL_ZERO); Milyen hatást vált ez ki? (RsSr+RdDr , GsSg+GdDg, BsSb+BdDb, AsSa+AdDa) => (Rs 1+Rd 0 , Gs 1+Gd 0, Bs 1+ Bd 0, As 1+Ad 0). A forrás eredeti értékén marad, a cél pedig nullázódik, ami az új érték felülírását jelenti. Bekapcsolás – kikapcsolás: glEnable(GL_BLEND), glDisable(GL_BLEND)

konstans melyik faktor? Blend faktor GL_ONE_MINUS_DST_COLOR forrás (1,1,1,1) - (Rd, Gd, Bd, Ad) GL_ONE_MINUS_SRC_COLOR cél (1,1,1,1) - (Rs, Gs, Bs, As) GL_SRC_ALPHA forrás,cél (As,As,As,As) GL_DST_ALPHA forrás, cél (Ad,Ad,Ad,Ad) GL_ONE_MINUS_SRC_ALPHA (1,1,1,1) – (As,As,As,As) GL_ONE_MINUS_DST_ALPHA (1,1,1,1) – (Ad,Ad,Ad,Ad) GL_SRC_ALPHA_SATURATE source (f,f,f,1); f = min(As,1-Ad)

Blending Nem minden a táblázatban felsorolt értékek kombinációjának van értelme! Példák: Két kép ‘összemosása’ 50-50%-ban. forrás faktor: GL_ONE, majd első kép kirajzolása, cél faktor: GL_SRC_ALPHA, majd a második kép kirajzolása alpha = 0.5-el. (RsSr+RdDr , GsSg+GdDg, BsSb+BdDb, AsSa+AdDa) => (Rs 1+Rd 0.5 , Gs 1+Gd 0.5, Bs 1+ Bd 0.5, As 1+Ad 0.5).

Blending Három kép ‘összemosása’ egyenlő mértékben. forrás faktor: GL_SRC_ALPHA cél faktor: GL_ONE alpha = 0.333. (ez biztosítja az egyenlő mértéket) Majd rajzold ki mind a három fázist! (RsSr+RdDr , GsSg+GdDg, BsSb+BdDb, AsSa+AdDa) => (Rs 0.333+Rd 1, Gs 0.333+Gd 1, Bs 0.333+ Bd 1, As 0.333+Ad 1).

Blending Paint program ‘brush’ funkciója, amely a képhez az ecset színét 10%-ban hozzáadja a képhez. forrás faktor: GL_SRC_ALPHA alpha = 0.1. (ez biztosítja a 10%-ot) az ecset kirajzolása cél faktor: GL_ONE_MINUS_SRC_ALPHA (RsSr+RdDr , GsSg+GdDg, BsSb+BdDb, AsSa+AdDa) => (Rs 0.1+Rd (1-Rs 0.1) , Gs 0.1+Gd (1-Gs 0.1), Bs 0.1+Bd (1-Bs 0.1), As 0.1+Ad (1-As 0.1)). Az ecset ‘belseje’ felé haladva az alpha érték növelhető!

Példa (2D) alpha.c példa alapján megfigyelhető a átlátszó takarás. t-billentyűvel váltható, melyik háromszög legyen felül

Példa (2D) void init() { glEnable (GL_BLEND); glBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glShadeModel (GL_FLAT); glClearColor (0.0, 0.0, 0.0, 0.0); } (RsSr+RdDr , GsSg+GdDg, BsSb+BdDb, AsSa+AdDa) => (Rs 0.75+Rd (1-Rs 0.75) , Gs 0.75+Gd (1-Gs 0.75), Bs 0.75+Bd (1-Bs 0.75), As 0.75+Ad (1-As 0.75)). Az első háromszög kirajzolásakor a Rd,Gd,Bd,Ad értékek nullázva vannak. A második esetén az új szín 75%-ban érvényesül

3D Blending A blending hatása függ a poligonok kirajzolási sorrendjétől, térbeli elrendezésétől Hogyan működött a mélység-buffer? Mi lehet a probléma ha mélység buffert a ‘blending’ funkcióval együttesen alkalmazzuk?

3D Blending Megoldás: Depth-buffering bekapcsolása, de csak olvashatóvá tétele. (read-only) Nem átlátszó tárgyak kirajzolása először (opaque). Normál z-buffer működés mellett. A z értékek levédése (read-only z-buffer) Az átlátszó tárgyak kirajzolása. Az átlátszatlan tárgyak mögé eső részek nem lesznek kirajzolva. Az átlátszatlan tárgyak elé eső poligonok viszont nem írják felül a z-buffert!

gömb az átlátszó kockában (alpha3D.cpp) Példa gömb az átlátszó kockában (alpha3D.cpp)

Feladat ok A kocka átlátszóság-értékének módosítása. alpha3d.cpp kódjának módosítása úgy, hogy a kocka keringjen a gömb körül! Megoldás: (egyik lehetséges) glPushMatrix(); glRotatef (fRoty, 0.0, 1.0, 0.0); glTranslatef(1.5,0,0); glPushMatrix (); glMaterialfv(GL_FRONT, GL_EMISSION, mat_emission); glMaterialfv(GL_FRONT, GL_DIFFUSE, mat_transparent); glEnable (GL_BLEND); glDepthMask (GL_FALSE); glBlendFunc (GL_SRC_ALPHA, GL_ONE); glCallList (cubeList); glDepthMask (GL_TRUE); glDisable (GL_BLEND); glPopMatrix (); glPopMatrix();

Csipkézettség mentesítés (antialiasing)

Csipkézettség mentesítés (antialiasing) glHint(GLenum target, GLenum hint); hint paraméter: GL_FASTEST, GL_NICEST, GL_DONT_CARE target paraméter: GL_PERSPECTIVE_CORRECTION_HINT GL_POINT_SMOOTH_HINT GL_LINE_SMOOTH_HINT GL_POLIGON_SMOOTH_HINT GL_FOG_HINT

Csipkézettség mentesítés (antialiasing) Pontok és vonalak esetén glEnable(), glDisable(), GL_POINT_SMOOTH, GL_LINE_SMOOTH A ‘blending’ is szerepet kap a csipkézettség csökkentésében: Az OpenGL egy vonal kirajzolásakor ‘coverage’ értékeket számol és alpha értékként menti le. Blending funkció segítségével eltérő (halványabb) színt rendelhetünk a coverage értékekhez.

Coverage (fedés) glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) beállítás biztosítja a csipkézettség-mentesítő hatást. A hatás akkor jobban megfigyelhető, ha magasabb alpha értéket állítunk be.

Példa (anti.cpp) Feladat: Kapcsoljuk ki a glEnable(GL_LINE_SMOOTH)-t Kapcsoljuk ki a glEnable (GL_BLEND);-t Változtassuk meg a vonalvastagságot! A fenti három kombinációi Próbáljuk ki: glBlendFunc (GL_SRC_ALPHA, GL_ONE); -al Mit tapasztalunk? Ujjgyakorlat: forogjon az ikozaéder automatikusan! Használjuk fel a következő függvényeket: glutInitDisplayMode (GLUT_DOUBLE….); glutIdleFunc(display); glutSwapBuffers(); {fRot += 0.00001; glRotatef(fRot,0.0,1.0,1.0);}

Poligonok csipkézettségmentesítése (antialiasing poligons) Poligonok esetén is hasonlók a teendők: Blending funkció bekapcsolása, glEnable(GL_BLEND); Poligon smooth funkció bekapcsolása, glEnable(GL_POLIGON_SMOOTH); Mélységbuffer kikapcsolása, glDisable (GL_DEPTH_TEST);

Poligonok csipkézettségmentesítése (antialiasing poligons) Blending művelet: GL_SRC_ALPHA_SATURATION (forrás) GL_ONE (cél) A kialakuló szín a cél szín és a skálázott forrásszín összege. (mivel a cél GL_ONE.) A skálázási faktor: vagy a forrás alpha érték, vagy (1-cél) alpha érték. A nagy alpha értékkel bejövő pixelek kevéssé hatnak a végleges színre. (1-alpha miatt) A poligonok szélső pixeleinek színe keveredhet a később rajzolt (egy másik él, érintkező él) színével. GL_SRC_ALPHA_SATURATE source (f,f,f,1); f = min(As,1-Ad)

Poligon antialiasing - aapoly.cpp Példa Poligon antialiasing - aapoly.cpp

Feladatok aapoly.cpp adjunk a kódhoz automatikus forgást! (dupla-bufferelés, IdleFunc, kis szögelfordulás-növekmény) Az init() paramétereit változtassunk meg! Hagyjuk bekapcsolva a z-buffert a blendingel együtt!

Élethű rendelerés köd alkalmazásával

Köd A valóságban nincsenek a felületek között éles átmenetek Szinte minden felület-felület érintkezés kicsi lekerekítéssel rendelkezik Az OpenGL ‘köd’ egy gyűjtőfogalom Segítségével ködfátyol, homály, füst, szürkület szimulálható A ködszín megadásával, a nézőponttól távoli tárgyak fokozatosan a ködszínbe halványulnak

Köd OpenGL köd használata egyszerű glEnable(GL_FOG); glFog*() a tulajdonságokat kontrolálja GL_EXP GL_EXP2 GL_LINEAR glHint(GL_FOG_HINT); a minőségre van hatással

Köd glFog{if}{v}(GLenum pname, TYPE param) pname: GL_FOG_MODE param: GL_EXP (alapértelmezett), GL_EXP2, GL_LINEAR pname: GL_FOG_DENSITY, GL_FOG_START, GL_FOG_END param: a ködegyenletek paraméterei pname: GL_FOG_COLOR, param: színvektor pname: GL_FOG_INDEX

Ködegyenletek A pixel színértéke a következő képlet alapján számítható: Ci: a eredeti szín Cf: a ködszín

Köd