Számítógépes Grafika 7. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.

Slides:



Advertisements
Hasonló előadás
Színformátumok és színmodellek
Advertisements

Számítógépes geometriai leíró nyelvek
A színek számítógépes ábrázolásának elve
Á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
Számítógépes grafika Szirmay-Kalos László
3D képszintézis fizikai alapmodellje
Bevezetés.  A számítógépes grafika inkrementális képszintézis algoritmusának hardver realizációja  Teljesítménykövetelmények:  Animáció: néhány nsec.
GPGPU labor I. OpenGL, Cg.
Számítógépes Grafika 6. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Prototípuskészítés Verilog nyelven Screen Saver Készítette: Mészáros Péter.
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.
A virtuális technológia alapjai Dr. Horváth László Budapesti Műszaki Főiskola Neumann János Informatikai Kar, Intelligens Mérnöki Rendszerek.
Vámossy Zoltán 2006 Gonzales-Woods, SzTE (Kató Zoltán) anyagok alapján
Számítógépes grafika OpenGL 1. gyakorlat.
Web-grafika (VRML) 4. gyakorlat Nyitrai Erika Varga Balázs alapján Kereszty Gábor.
Számítógépes Grafika 1-2. gyakorlat
DirectX a grafika laboron kívül. Mire lesz szükség Itt vannak a szükséges include és lib: iles/DXMinimalPack.zip.
Web-grafika II (SVG) 2. gyakorlat Kereszty Gábor.
Számítógépes Grafika 1. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Ma sok mindenre fény derül! (Optika)
Színes világban élünk.
Számítógépes Grafika 2. gyakorlat Programtervező informatikus (esti) 2011/2012 őszi félév.
Számítógépes grafika 3. gyakorlat.
4.7. Textúra A felület anyagszerűsége Sík-képek ráborítása a felületre
Számítógépes grafika 5. gyakorlat. Előző órán Textúrázási módok Pixel shader használata.
Számítógépes Grafika 1-2. gyakorlat Programtervező informatikus (esti)‏ 2011/2012 őszi félév.
Számítógépes Grafika Programtervező informatikus (esti)‏ Textúrázás.
Web-grafika (VRML) 1. gyakorlat Nyitrai Erika Varga Balázs.
Számítógépes Grafika Megvilágítás Programtervező informatikus (esti)‏
2008/2009 tavasz Klár Gergely  Gyakorlatok időpontjai: ◦ Szerda 10:05–11:35 ◦ Csütörtök 10:00+ε –11:30+ε  Gyakvez: ◦ Klár Gergely ◦
Fény terjedése.
Turbo Pascal 11..
Színek.
Monitorok.
Előadó Karancsi Zoltán.  Egyszínű ecset  SolidColorBrush  Színátmenetes ecset  LinearGradientBrush  RadialGradientBrush.
NEMZETI TANKÖNYVKIADÓ Panoráma sorozat
Vektorok különbsége e-x = [ex-xx ey-xy ez-xz] e e-x x szempozíció
Számítógépes grafika Bevezetés
3D képszintézis fizikai alapmodellje Szirmay-Kalos László Science is either physics or stamp collecting. Rutherford.
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
Számítógépes grafika DirectX 5. gyakorlat. Emlékeztető Háromdimenziós alapok befejezése Textúrázás.
Web-grafika II (SVG) 3. gyakorlat Kereszty Gábor.
Web-grafika II (SVG) 1. gyakorlat
Web-grafika II (SVG) 8. gyakorlat Kereszty Gábor.
Web-grafika II (SVG) 9. gyakorlat Kereszty Gábor.
Árnyalás – a felületi pontok színe A tárgyak felületi pontjainak színezése A fényviszonyok szerint.
2. gyakorlat DirectX 2007/2008 tavasz Klár Gergely
Fejlett grafikai algoritmusok Megvilágítás SZTE, 2010.
Számítógépes Grafika 6. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Grafika alapfogalmak.
Számítógépes grafika I. AUTOCAD alapok 2. előadás.
Számítógépes grafika I. AUTOCAD alapok
Számítógépes Grafika 4. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Számítógépes grafika OpenGL 5. gyakorlat.
Web-grafika (VRML) 1. gyakorlat Nyitrai Erika Varga Balázs alapján Kereszty Gábor.
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.
Web-grafika (VRML) 2. gyakorlat Nyitrai Erika Varga Balázs.
Alapfogalmak BME-VIK.
Számítógépes Grafika 3. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
Számítógépes Grafika 5. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév.
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése 6.2. Térbeli alakzatok képe 6.3. Térbeli képelemek és modell-adatszerkezetek 6.4. Képelemek.
Alapvető raszteres algoritmusok, szakasz rajzolása, DDA, MidPoint algoritmus.
A színes képek ábrázolása. A szín A szín egy érzet, amely az agy reakciója a fényre. Az elektromágneses sugárzás emberi szem által látható tartományba.
3D grafika összefoglalás
Global Illumination.
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Görbék, felületek.
6. A 3D grafika alapjai 6.1. A 3D szerelőszalag fölépítése
Előadás másolata:

Számítógépes Grafika 7. gyakorlat Programtervező informatikus (esti)‏ 2009/2010 őszi félév

Információk Gyakorlati diák:

Utasítások noFill(): –Nem lesz kitöltése a zárt alakzatoknak beginShape(MODE), endShape([CLOSE]): –Csúcspontokból (vertex) álló összetett alakzatok (shape) megjelenítése –A MODE határozza meg, miként értelmezendőek a beginShape() és endShape() hívások között definiált csúcspontok („összekötési szabály”)

Utasítások

Koordinátarendszer X Y -Z up = (0, 1, 0)

Koordinátarendszer X Y Z up = (0, -1, 0)

1. Feladat Csináljunk egy piramist háromszöglistával! Kiindulás: sti/07/PiramisAlap.zip sti/07/PiramisAlap.zip

PiramisAlap void setup() { size(400, 400, P3D);} void draw() { background(140); float dx = map(mouseX, 0, width, -PI, PI); camera(200*cos(dx), 200, 200*sin(dx), 0, 0, 0, 0, -1, 0);

PiramisAlap // X-tengely stroke(255, 0, 0); line(0, 0, 0, // honnan 50, 0, 0); // hova X Y Z

PiramisAlap // X-tengely stroke(255, 0, 0); line(0, 0, 0, // honnan 50, 0, 0); // hova // Y-tengely stroke(0, 255, 0); line(0, 0, 0, // honnan 0, 50, 0); // hova X Y Z X Y Z

PiramisAlap // X-tengely stroke(255, 0, 0); line(0, 0, 0, // honnan 50, 0, 0); // hova // Y-tengely stroke(0, 255, 0); line(0, 0, 0, // honnan 0, 50, 0); // hova // Z-tengely stroke(0, 0, 255); line(0, 0, 0, // honnan 0, 0, -50); // hova X Y Z X Y Z X Y Z

PiramisAlap noFill(); stroke(0); beginShape(TRIANGLES); vertex(-100, 0, -100); // első háromszög vertex(100, 0, -100); vertex(100, 0, 100); vertex(-100, 0, -100); // második háromszög vertex(100, 0, 100); vertex(-100, 0, 100); endShape(); }

Textúrázás Minél részletesebb a modellünk, annál több primitívből kell felépíteni Azonban egy bizonyos szint után már nem ésszerű anyagjellemzők és új csúcspontok bevezetésével növelni a részletességet Inkább 2D-s textúrák térbeli alakzatokra feszítésével próbálunk minél élethűbb képet kapni

Textúra A textúra (szövet, mintázat) szó hétköznapi értelemben egy tárgy felületének simaságát vagy durvaságát jellemzi (például fakéreg, fém stb.) Számítógépi grafikában egy 2 dimenziós színes képet nevezünk textúrának, egy pontját pedig texel-nek

Textúra koordináták megadása Processingben a vertexeknek nem csak pozíciókat, hanem textúrakoordinátákat is meg kell majd adni: vertex(x, y, z, u, v): –A textúra képünknek az (u,v) koordinátájú pontját „feszítsük rá” az adott csúcspontra

Texel leképezés

Utasítások texture(PImage): –Beállítja a paraméterben kapott képett textúrának textureMode(MODE): –Miként legyenek értelmezve a textúrakoordináták: IMAGE: a képpixeleknek megfelelően NORMALIZED: [0,1] közé benormálva

Normalizált

2. Feladat Textúrázzuk a piramisunkat! Segítségül: sti/07/PiramisTexturaAlap.zip sti/07/PiramisTexturaAlap.zip

PiramisTexturaAlap PImage img; void setup() { size(400, 400, P3D); img = loadImage( " mains/brick1.jpg"); textureMode(NORMALIZED); }

PiramisTexturaAlap void draw() {...// ugyanaz mint előbb noStroke(); beginShape(TRIANGLES); texture(img); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, -100, 1, 0); vertex( 100, 0, 100, 1, 1); vertex(-100, 0, 100, 0, 1); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, 100, 1, 1); endShape(); }

PiramisTexturaAlap void draw() {...// ugyanaz mint előbb noStroke(); beginShape(TRIANGLES); texture(img); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, -100, 1, 0); vertex( 100, 0, 100, 1, 1); vertex(-100, 0, 100, 0, 1); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, 100, 1, 1); endShape(); } X

PiramisTexturaAlap void draw() {...// ugyanaz mint előbb noStroke(); beginShape(TRIANGLES); texture(img); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, -100, 1, 0); vertex( 100, 0, 100, 1, 1); vertex(-100, 0, 100, 0, 1); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, 100, 1, 1); endShape(); } Y

PiramisTexturaAlap void draw() {...// ugyanaz mint előbb noStroke(); beginShape(TRIANGLES); texture(img); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, -100, 1, 0); vertex( 100, 0, 100, 1, 1); vertex(-100, 0, 100, 0, 1); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, 100, 1, 1); endShape(); } Z

PiramisTexturaAlap void draw() {...// ugyanaz mint előbb noStroke(); beginShape(TRIANGLES); texture(img); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, -100, 1, 0); vertex( 100, 0, 100, 1, 1); vertex(-100, 0, 100, 0, 1); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, 100, 1, 1); endShape(); } textúra u

PiramisTexturaAlap void draw() {...// ugyanaz mint előbb noStroke(); beginShape(TRIANGLES); texture(img); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, -100, 1, 0); vertex( 100, 0, 100, 1, 1); vertex(-100, 0, 100, 0, 1); vertex(-100, 0, -100, 0, 0); vertex( 100, 0, 100, 1, 1); endShape(); } textúra v

Az eredmény Ezt jelenti, hogy a P3D sebességre és nem pontosságra van optimalizálva Kétféleképpen is megoldhatjuk: –Kiadunk egy smooth() parancsot a setup()- ban –OpenGL-ben alapból jól jelenik meg a textúra

Megvilágítás A minél élethűbb megjelenítés egyik legfontosabb kérdése A fény viselkedésének minél élethűbb szimulálása Rendkívül számításigényes - több egyszerűsített modell van

Előre renderelt/valós idejű

Megvilágítás  A végső pixelszín függ:  Az objektum anyagától (material) és textúrájától az adott pontban  A fényforrások által kibocsátott fény intenzitásától és színétől

Anyagjellemzők Meghatározzák, hogy az adott felület miként veri vissza, vagy bocsájt ki fényt A különböző típusú megvilágítási formákkal szemben más és más módon viselkedhet Azt, hogy mely anyag-fény jellemzőket (és egyúttal megvilágítási modellt) vegyük figyelmbe szintén a device-nál kell beállítani SetRenderState-el

Ambiens modell Szórt megvilágítás egyszerűsített modellje Egyfajta állandó háttérmegvilágítás A fényforrás és az anyag színére van szükség: –ambientLight(v1, v2, v3) : A v1, v2, v3 a fény színkomponensei –ambient(v1, v2, v3): Az anyag viselkedését írja le szórt megvilágítással szemben

Diffúz modell Érdes felületre beeső fény vizsgálata Minél inkább eltér a fény beesési szöge a felületi normálistól, annál kisebb a fény hatása a végső szín meghatározásában

Diffúz modell Megadásához egyrészt szükség van a színekre: –A különböző fényforrások létrehozásakor a paraméterekben megadott szín a diffúz érték lesz –Alakzatok rajzolásakor pedig a fill() paraméterében szereplő érték lesz az anyag színe

Fényfoltképző „Csillanás” A nézőpont minél közelebb van az ideális visszaverődés szögéhez annál inkább csillan A szín beállítása: –lightSpecular(v1, v2, v3) megadja a fényforrás fényfoltképző színét –specular(v1, v2, v3[, alpha]) az anyag színét Hatás módosítása: –shininess(float): mennyire csillogjon

Felületi normális Az ambiens modellen kívül szükség van a felületi normálisra is A primitívek (háromszögek) csúcspontjai segítségével vektoriális szorzatokként kiszámolhatóak

Ambiens fényforrás ambientLight(v1, v2, v3, x, y, z): –Szín, pozíció (ne legyen végtelen hatás) size(100, 100, P3D); background(0); noStroke(); directionalLight(126, 126, 126, 0, 0, -1); ambientLight(102, 102, 102); translate(32, 50, 0); rotateY(PI/5); box(40); translate(60, 0, 0); sphere(30);

Pontszerű fényforrás pointLight(v1, v2, v3, x, y, z) –(v1, v2, v3) színű, (x, y, z) koordinátájú fényforrás –Minden irányban egyenlő intenzitással bocsájt ki fényt size(100, 100, P3D); background(0); noStroke(); pointLight(51, 102, 126, 35, 40, 36); translate(80, 50, 0); sphere(30);

Irányított fényforrás directionalLight(v1, v2, v3, nx, ny, nz): –(nx, ny, nz) a fénycsóvák közös iránya –„végtelen távoli fényforrás” size(100, 100, P3D); background(0); noStroke(); directionalLight(51, 102, 126, 0, -1, 0); translate(80, 50, 0); sphere(30);

Fényfoltképző fényforrás spotLight(v1, v2, v3, x, y, z, nx, ny, nz, angle, concentration) size(100, 100, P3D); background(0); noStroke(); spotLight(51, 102, 126, 80, 20, 40, -1, 0, 0, PI/2, 2); translate(20, 50, 0); sphere(30);

Fénykezelés lights(): –Bekapcsolja a megvilágítási modelleket, feltölti a szükséges paramétereket alapértelmezett értékekkel noLights(): –Kikapcsolja azokat

Színek Amikor három komponenssel adunk meg színeket kétféle értelmezés van: –RGB –HSB Választás: –colorMode(mode, range1, range2, range3, range4) mode: RGB vagy HSB rangei: a megfelelő komponens intervalluma (4=a)

Feladat + Legyen három piramis a színtéren téglákkal textúrázva Álljanak egy nagy, közös, homok textúrájú talapzaton Az egyes piramis csillogjon különböző színnel (piros, zöld, kék) A talaj ne csillogjon Egérrel lehessen körbeforogni a színtéren