razvoj igrica

33
RAZVOJ IGRICA Danijel Pobi, dipl. Ing. Računarstva

Upload: dempster-maximiliano

Post on 01-Jan-2016

41 views

Category:

Documents


3 download

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 Presentation

TRANSCRIPT

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 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

Program u GPU-u

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

Dodatne biblioteke

Sve može biti implementirano na razini OS-a, ali i u tom slučaju se moraju koristiti određene biblioteke ili API-i

Zvuk OpenAL

IO OIS u OgreSDK paketu STL IOstream Boost.IO

Mreža Boost.Asio ACE