Počítačová grafika 1
Príklady odovzdávajte svojmu cvičiacemu na cvičeniach do konca skuskoveho.
Pre študentov používajúcich Borland C++ Builder, som pripravil funkčný projekt s GLUT, ktorý si môžete stiahnuť.
Tento Builderovský projekt je upravena verzia lekcie 2 z NeHe, kde nájdete aj dalšie užitočné tutoriály o OpenGL.
Príklad 1
Úlohou je implementovať jednoduchý 2D editor pomocou OpenGL a GLUT knižníc. Funkcionalita (interakcia) bude nasledovná:
- Klávesou ‚c’ sa bude prepínať aktuálna farba, na výber budú 4 farby (čierna, červená, zelená, modrá). Názov aktuálnej farby sa bude vykreslovať do okna.
- Klávesou ‘v’ sa vzmaže okno a vynuluje sa lomená čiara.
- Klávesou ‘m’ sa bude prepínať aktuálny mód kreslenia, na výber sú kreslenie lomenej čiary, kruznice, elipsy a kreslenie orezávacieho okna. Názov aktuálneho módu sa bude vykreslovať do okna.
- Ľavé tlačítko myši pridáva body, ktoré dokopy tvoria uzavretú lomenú čiaru (v poradí, v akom sú zadávané) alebo sa bude ťahaním myši zadávať orezávací obdĺžnik. Úsečky tejto lomenej čiary, kruznice a elipsy budú vykreslené pomocou Bresenhamovho algoritmu na rasterizáciu. Na orezávanie úsečiek sa použije Cohen-Sutherlandov algoritmus.
- Pravým tlačítkom myši sa vyplní oblasť ohraničená zadanou lomenou čiarou a aktuálnou polohou kurzora semienkovým vypĺňaním. Na vyplnenie sa použije aktuálna farba.
Príklad 2
Implementujte jednoduchý 3D prehliadač jednoduchých geometrických objektov (guľa, kocka, valec, kúžeľ, ihlan). Prehliadač musí obsahovať tieto funkcie:
- Objekty bude možné do scény pridávať a odoberať. Objekty v scéne sa budú vyberať (selektovať) cyklicky klávesom ‘s’. Aktuálne vybraný objekt bude ohraničený svojim bounding boxom.
- Rotovanie objektu. Vybraný objekt sa bude otáčať okolo svojej vertikálnej osi, klávesom ‘x’ proti smeru hodinových ručičiek, klávesom ‘z’ v smere hodinových ručičiek.
- Škálovanie objektu. Vybraný objekt sa bude zväčšovať klávesom ‘+‘, zmenšovať klávesom ‘-’.
- Posúvanie objektu. Objekt sa bude posúvať v smere x-ovej osi klávesami ‘←’ a ‘→’, v smere z-ovej osi klávesami ‘↑’ a ‘↓’ a v smere y-osi klávesami ‘q’ a ‘v’.
- Horizontálne otáčanie kamery. Referenčný bod kamery, t.j. bod na ktorý sa kamera pozerá, bude stred súradnicovej sústavy. Horizontálnym pohybom myši doprava a doľava pri stlačenom ľavom tlačítku sa bude kamera horizontálne otáčať okolo stredu scény.
- Vertikálne otáčanie kamery. Vertikálnym pohybom myši hore a dole pri stlačenom ľavom tlačítku sa bude kamera vertikálne otáčať okolo stredu scény.
- Posúvanie (približovanie a vzďaľovanie) kamery. Vertikálnym pohybom myši hore a dole pri stlačenom pravom tlačítku sa bude kamera približovať a vzďaľovať od stredu scény
- Klávesom ‘p’ sa bude meniť typ premietania k dispozícii bude stredové a rovnobežné premietanie.
- RGB farebný model bude vizuálne reprezentovaný trojuholníkom v pravom dolnom rohu obrazovky. Vrcholy trojuholníka budú zložky farebného modelu. Farba aktuálne vybraného objektu sa bude meniť kliknutím myši do trojuholníka, pričom aktuálna farba bude v trojuholníku vyznačená krížikom.
- V pravom hornom rohu budú vypísané aktuálne informácie ako napr. typ objektu, typ premietania, farba vybraného objektu (RGB zložky).
Bonus
- dorobte do druheho prikladu torus
- dorobte do druheho prikladu mobiov pas
- urobte editor podobny ako v druhom priklade, ale namiesto objektov tam bude editovatelna bezierova plocha. nech je tam aj aspon jedno svetlo koli tienovaniu plochy.