razvoj igrica
DESCRIPTION
Razvoj igrica. Danijel Pobi, dipl. Ing. Računarstva. Računalna grafika. Vid i prikaz slike na ekranu Vid, FPS, hardware, CPU, GPU, GPGPU Osnovni elementi Pixel Tekstura Voxel Koordinatni sustav Vertex Poligon Elementi scene Koordinatni sustav Gledište Svijetla - PowerPoint PPT PresentationTRANSCRIPT
Računalna grafika
Vid i prikaz slike na ekranu Vid, FPS, hardware, CPU, GPU, GPGPU
Osnovni elementi Pixel Tekstura Voxel Koordinatni sustav Vertex Poligon
Elementi scene Koordinatni sustav Gledište Svijetla Statična i dinamička geometrija Kompozicija scene
VidLjudsko oko• Pretvara svjetlost u živćane
impulse• Percepcija slike, tj. slika koju
vidimo je stvar mozga i živćanog sustava
• Statični kontrast 100 : 1• Dinamički kontrast 1 000
000 : 1• Boja vidljiva od 400 do 700
nm
VidKonstrast• Kontrast je razlika u
osvjetljenosti i/ili boji koju možemo razlikovati u vidnom polju
• Ljudsko oko je osjetljivije na promjene konstrasta nego promjene osvjetljenja
• Statički kontrast• Dinamički kontrast
(Dynamic range) je maksimalna vrijednost kontrasta
VidOsvjetljenost• Atribut vizualne percepcije
u kojem izvor emitira ili reflektira svjetlost
• Ovisi o kontekstu i individualnoj percepciji
• Koordinata u HSL i HSV kolor sustavu (cilindrični koordinatni sustavi reprezentativni pomoću točaka RGB kolor modela)
• HSL - hue, saturation and lite
• HSV (HSB) – hue, saturation, value (brightness)
VidRBG• RGB – red, green, blue• aditivan model ili model
zbrajanja, jer zbrajanjem vrijednosti osnovnih boja dobivamo ostale
• model nastao za elektroničke uređaje zbog lakoće rada
• Prošireni model: RBGA (red, blue, green, alpha)
• Još jedan korišten model boja je CMYK (cyan, magenta, yellow, K crna) je subrtaktivan model jer se ostale boje dobivaju oduzimanjem od osnovnih
VidVideo
Kvaliteta slike ovisi o kalibraciji, tj. namještanju kontrasta, osvjetljenja i boja
Kvaliteta videa ovisi o kvaliteti slike i o brzini izmjene slika
FPS (frames per second) PAL (25), NTSC (30), SECAM analogni
prijenos, danas se koristi PAL 60 CRT, LCD, Plazma, LED Osvježavanje (danas min standard 60Hz) Odaziv slike (15, 12, 8, 5, 2 ms)
Procesor• CPU = central processing
unit• AMD, Intel, ARM, IBM,...• Karakteristike koje pratimo:
• Arhitektura• Brzina• Broj jezgri
Grafička kartica• Generira slike koje se šalju na
izlaz za prikaz na izlaznom uređaju (monitor, projektor, itd)
• AMD, Nvidia, intel?, PoverVR, Qualcom,...
• Sastoji se od:• GPU (Stream processor,
CUDA, EU)• VRAM (DDR, DDR2,
DDR3, GDDR5)• Karakteristike koje pratimo:
• Arhitektura (DX, OpenGL,SM,...)
• Brzina GPU i RAM• Output• ...• Akustika i hlađenje
Grafički sustavgrafički cjevovod• Geometrijski sustav radi
operacije na vrhovima• Prije rađeno na CPU, danas
Vertex Shader na GPU• Rasterski sustav računa sve
potrebne boje, teksture, dubinu, efekte, AA, AF, itd
• Pixel Shader danas obavlja ovu fazu
• Prikazni sustav prijenosi sliku iz prikazne memorije na izlaznu jedinicu
• Prije pojave programibilnih Shader-a i općenito GPU programa dok se sve izvršavalo na CPU-u, ovo je jedino bilo važno i mjerilo se kao Fill Rate
Hardware
CPU GPU
Velika brzina (~4 GHz)
malo jezgri, 1 do 16 mala paralelizacija linearni pristup Core 2 Quad Extreme
~0.04 TFLOPS ‘08 i7-3960X ~0.13
TFLOPS
Manja brzina (~1 GHz)
Mnogo jezgri, 80 do <4k
velika paralelizacija Vektorski pristup HD 2900 ~0.4
TFLOPS ‘08 HD 7970 ~4 TFLOPS
‘13
Programiranje
Standardne aplikacije – CPU Igrice, video – GPU GPGPU (general processing graphics
processing unit) Zbog svoje velike mogućnosti
paralelizacije GPU preuzima računanje na sebe
Pogodno za velike skupove paralelnih podataka i instrukcija
OpenCL, DirectCompute
Osnovni grafički elementi
Točka, Pravac, ravnina, krivulje, koordinatni sustav
Transformacije translatacija skaliranje rotacija
Vertex (vrh) Poligon Tekstura
Geometrija
Točka (x,y,z) Pravac
Definiran pomoću dvije točke f(T1,T2)
Ravnina Definira se pomoću 3 točke normala + Točka
Transformacije = linearni operatori Translacija = pomicanje Rotacija = vrtnja oko nekog pravca Skaliranje = povećavanje ili smanjenje
Precrtavanje geometrije u termine računalne grafike
Točka = Vertex
Pravac = linija
Ravnina = poligon
Zašto je poligon u grafici uglavnom trokut?Jer jedino trokut zadan s 3 vrha (točke) je
sigurno u ravnini
Tekstura
Najjednostavnije rečeno, obična slika koju priljepimo na poligon ili točku
Način „ljepljenja” tekstura ili boja na poligone i/ili objekte zove se mapiranje
Elementi scene
Scena je skup objekata koji se vizualiziraju
Kompozicija scene Pravljenje scene i način upravljanja scenom
Koordinatni sustav Svijetlo Gledište i kamera Geometrija
statična dinamična
Koordinatni sustav
• Prostorne koordinate
• X – vodoravno• Y – okomito• Z – dubina• Vrste sustava:
• Desni• Lijevi
Svijetlo
• Potrebno je da bi nešto bilo vidljivo• Ovisno o svijetlu i njegovim svojstvima možemo
stvoriti razne efekte• Nekoliko vrsta svijetla
• Točkasti (gubi intenziter s obzirom na udaljenost)• Paralelni ili direkcijski (negubi intenzitet s udaljenosti)• Reflektor (spotlight) (ovisno o točki fokusa gubi
intenzitet)• Svojstva svijetla
• Difuzno• Spekularno• Ambientno• Radirajuće ili emisivno
Gledište i kamera• Gledište je 2D kvadrat koji
definira površinu iscrtavanja na koji se 3D scena projektira
• Frustrum je 3D prostor iz kojeg se projeciraju objekti i prostora gledanja kamere na projekcijski prostor
• Gledište se definira pomoću kamere, tj. kamera je definirana parametrima gledišta
Geometrija• U ovom kontekstu
geometrija su svi objekti koji međusobno interaktiraju i/ili se nalaze u sceni
• Svi objekti su geomertijski prikazani, na njima odrešujemo njihovo ponašanje, animacije, pokrete, fiziku itd.
• Glavna podjela:• Statična• Dinamička
Ogre3D
OGRE = Object Oriented graphics rendering engine, tj. obijektnoi orijentirani grafički sustav za iscrtavanje
Samo sustav za iscrtavanje jer nema direktno implementirane ostale funkcionalnosti poput sustava za mrežnu komunikaciju, zvuka i sl.
Open Source, što znači da je besplatno za korištenje i javno raspoloživ cijeli izvorni kod
C++ glavni jezik (postoje wraperi za C#, Python, Ruby, Java...)
www.ogre3d.org
Ogre, neke značajke
Puna podrška za OpenGL (puni i ES) i DirectX Nije vezan za jedan OS Jednostavno integrirat u bilo koju aplikaciju Moćan skriptni sustav Podrška za Cg, HLSL i GLSL Podžan širok niz formata slika i tekstura Podržani nivoi detalja na razini materijala Optimiziran binarni mesh format za modele Exporteri postoje za većinu alata za modeliranje Skeletalna, pose i vertex animacija Podrška za sklopovski ili programski ubrzan skining Napredni čestični sustav Prozirnosti I brojne druge značajke...
Korištenje Ogre-a
Inicijalizacija Incijalizacija root objekta plugins.cfg ogre.cfg (postavke iscrtavanja) definicija kamere i gledišta frameListener i početak iscrtavanja
Upravljanje scenom Skripte materijala Animacije
Graf Scene• Graf scene je hijerarhija
scene• Posebno je optimiziran za
iscrtavanje, on se brine da se neradi s objektima koji ne ulaze u frustrum
• U njega, tj. na njega se dodaju svi objekti
• Reprezentiran je SceneManager abstraktnim sučeljem
• Nekoliko vrsta:• Generic• Interior• Exterior• Octree• .....
ObjektiEntity class• Entitet je objekt unutar
scene• Nasljeđena klasa je
MovableObject• Sastoji se od
• mesha• materijala• kostura
• Stvara se pomoću SceneManager klase
• mesh file je optimizirana mreža poligona
• materijal file je skripta koja sadrži informacije o mapiranju tekstura, boja, efekata itd.
• skeleton file sadrži definiciju kostura objekta i kako eventualnih animacija
Kod stvaranja scene:
void createScene(void) { // Postavljanje ambijentnog svijetla mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5));
// Stvarnje točkastog svijetla Light* l = mSceneMgr->createLight("MainLight"); l->setPosition(20,80,50);
// Učitavanje mesha Entity *ent = mSceneMgr->createEntity("head", "ogrehead.mesh");
// Postavi materijal učitan iz Example.material ent->setMaterialName("Examples/EnvMappedRustySteel");
// Dodavanje entiteta na čvor mSceneMgr->getRootSceneNode()->createChildSceneNode()->attachObject(ent); }
Skripte
Skriptni jezici su se inicijalno koristili samo za male ponavljajuće zadatke
Skripta nije program!!! Primjeri JavaScript, Shell Script Skripte se ne kompajliraju, nego tako kako su
napisane se direktno izvode Interpretni jezici se također mogu smatrati skriptama
(Python) jer se kod direktno izvodi bez kompajliranja Lagano se debugiraju Da nešta nevalja se može vidjeti tek tokom izvođenja Kod nekih skriptnih interpretera, kad nešta nevalja
zanemaruje se taj dio, a ostatak normalno izvodi Parametarske i programske
Skripte u Ogre-u
Ovdje govorimo o parametarskim skriptama Material skripte Particle skripte Terrain skripte Prednosti:
nemoramo rekompajlirati program za svaku izmjenu nekog efekta ili materijala
omogućava jako veliku logičku kategoriazaciju lagano odvojiti dizajnerski i vizualni posao kodiranja
Nedostaci: više IO operacija (zanemarivo) ?
Drugi alati
Koriste se za nadopunjavanje i olakšavanje izrade sadržaja
Služe za prijenos sadržaja iz programa za modeliranje u format koji je čitljiv Ogre-u
Malo službenih alata, ali veliki niz neslužbenih Alias|Wavefront, oFusion, OgreMax
Alati za stvaranje digitalnog sadržaja Particle Editor, Mesh Viewer, ATI RenderMonkey
Službeni dodaci COLADA, Paging Scene Manager, Streaming Video
Biblioteke za izračun fizike OgreODE, NxOgre, OgreNewt,...
Skriptni jezici u raznim fazama stabilnosti i završenosti PyOgre, OgreDotNet, Ogre4J,...
Grupe alata
Generatori skripta Particle editori Terain editori Material editori Shader editori i generatori efekata (ATI Render Monkey, Cg skript
editori, ...) 3D alati (3DStudio Max, Maya, Blender,...)
Modeliranje Animiranje
2D alati (Photoshop, Fireworks, Corel Draw,...) Rad na teksturama Mapiranja (heightmap, bumpmap,...)
Export-Import Koriste se za prebacivanje iz jednog formata u drugi Važnost zbog optimiziranosti formata kako za hardware, tako za
softwer