07.08.2002
Bez detekcie kolízie sa nezaobíde žiadna hra. Ja som použil detekciu kolízie zo stránok www.gametutorials.com kde je táto oblasť dobre vysvetlená. Program využíva detekciu kolízie medzi polygonom (štvorcom) a guľou. V prípade, že nastane kolízia, pozícia kamery sa posunie tak, aby guľa bola mimo polygónu.
zdrojové texty (bez jpeg.lib) a program – 230kB
03.08.2002
Projekcia textúry na objekty v scéne je zaujímavý efekt. Týmto spôsobom sa dá docieliť zaujímavé osvetlenie scény, napríklad použitím svetla prechádzajúceho cez farebná sklá.
zdrojové texty (bez jpeg.lib) a program – 245kB
26.07.2002
Sphere mapping je spôsob implementácie environment mapping-u. Environment mapping je mapovanie okolia na zrkadlové predmety, ktoré sa nachádzaju v ňom. Základné dve spôsoby sú sphere mapping a cube mapping.
Základom sphere mapping-u je spheremap textúra, ktorá zobrazuje zrkadlovú guľu sfotenú rovnobežnými lúčmy. Textúra obsahuje informáciu o farbe prostredia pre každý smer.
Cube mapping používa naraz 6 – textúr pre každú stenu kocky. V OpenGL je podporovaný ako rozšírenie GL_EXT(NV)_texture_cube_map.
zdrojové texty (bez jpeg.lib) a program – 342kB
17.07.2002
Radial blur – radiálne rozmazanie objektu. Robí sa to jednoducho, vykreslíme objekt do textúry a textúru potom vykreslíme viackrát rôzne rostiahnutú na celú obrazovku.
V prípade že budeme rozťahovať iba v smere horizontálnom, alebo vertikálnom dostaneme rozmazanie v danom smere.
zdrojové texty a program – 77kB
09.07.2002
Motion blur – rozmazanie rýchleho pohybu. Na rozdiel od kamery kde sa rýchlo pohybujúce objekty rozmazavajú je každý obrázok vykreslený v počítačovej grafike (OpenGL) ostrý, čo spôsobuje pocit nespojitého pohybu aj pri vyššom fps ako majú kamery. Rozmazanie pohybu sa v OpenGL dá docieliť použitím akumulačného buffera, ale ten nie je hardwarovo podporovaný na večšine grafických kariet. Ako náhrada sa dá použiť kreslenie do textúry.
zdrojové texty (bez jpeg.lib) a program – 80kB
06.07.2002
Tiene na steny nanášam pomocou light-mapy. Pri vytváraní light-máp využívam kreslenie do textúry. Pre každú stenu vytváram light-mapu tak, že kameru presuniem do pozície svetla a vykreslím objekty vrhajúce tien tmavou farbou. V prípade viacerých svetiel, vykreslím pre každú pozíciu svetla objekty pomocou blendingu. Aby som mohol pouzit blending tak objekty vykreslujem 2*: prvý krát iba do z-buffra a druhý krát s nastavením glDepthFunc(GL_EQUAL ).
Tento spôsob sa dá použiť iba pre tiene vrhajúce sa na rovinné plochy. Výhoda, že pridávaním objektov a svetiel sa rýchlosť veľmi neznižuje. Nevýhoda každá plocha vyžaduje dalšiu light-mapu, a to spomaľuje výrazne (Voodoo3 2000).
zdrojové texty (bez jpeg.lib) a program – 222kB
03.07.2002
Vytváranie textúr počas behu programu z obrazovky je zaujímavá technika, ktorá umožňuje vytvárať rôzne efekty: napr. motion blur, radiar blur,…
Funguje to jednoducho: použitím glCopyTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 0, 0, size, size, 0); skopírujeme dáta z obrazovky do textúry. Má to však nevýhodu je to pomalé, na mojej Voodoo3 2000 kopíruje jednú textúru 110 ms .
zdrojové texty a program – 93kB
26.06.2002
Súbory s príponov dxf je možné vytvárať, alebo exportovať z rôznych programov. Najčastejšie však z AutoCad-u, prípadne CADKEY (môj prípad). Načítavam iba štvorcové plochy – dáta zo sekcií 3DFACE. Aby som mohol používať viac textúr v jednom súbore používam pre každú textúru iný level, pričom v popise levelu je názov textúry.
zdrojové texty (bez jpeg.lib) a program – 220kB
26.06.2002
Súbory 3ds je možné vyexportovať v 3ds max. V súboroch sa ukladajú aj textúrové koordinácie a názvy textúr. Normálové vektory po bodoch sa neukladajú preto ich treba vypočítať pri načítavaní objektu.
zdrojové texty (bez jpeg.lib) a program – 410kB
02.06.2002
Bump-mapping je spôsob ako zobraziť malé štrbinky a kopčeky na prevažne rovinných plochách.
Orginálny bump-mapping je taký, v ktorom sa podľa výškovej textúry moduluje normála.
Emboss bump-mapping je spôsob ako urobiť bump-mapping na sučasných (rok 2004) grafických kartách.
Používajú sa dve textúry jedna základná a druhá výšková. Z výškovej sa urobia dve textúry jedna o polovičnom jase a druhá negovaná taktiež s polovičným jasom. Obidve sa sčítajú pričom sú navzájom posunuté. Tým vzniknú svetlejšie a tmavšie miesta, ktoré simulujú svetlo a tieň. Ostatné miesta sú sivé (127,127,127). Nakoniec sa ešte vynásobí 2* so základnou textúrov. Podľa toho akým spôsobom sa toto vykoná rozoznávame bump-mapping 3,2,1 – pass (priebehoví).
3-pass – ide na každom hardware, vyžaduje sčítavací a násobiaci(2*) blending.
2-pass – ide na graf. kartách, ktoré majú multitexturing. Sčítanie sa urobí v jednom kroku a násobenie v druhom.
1-pass – využíva operátor ADDSIGNED2X, ale má horšiu kvalitu farieb
Ja používam 3-pass a 2-pass bump-mapping. V programe sú 4 ukážky: vysvetlenie, bump-mapping s bodovým svetlom, bludisko(miesnosť so bump-mapping stenami) a planeta mars so bump-mappingom.
zdrojové texty (bez jpeg.lib) a program – 700kB