sissejuhatus informaatikasse arvutigraafikaarvutigraafika sünteesib pilte •piltide sünteesimisel...
TRANSCRIPT
Sissejuhatus InformaatikasseArvutigraafika
Konstantin Tretjakov, Dan Bogdanov
Kava• Milleks arvutigraafika?• Arvutigraafika põhiteemad• (Klassikaline) graafika programmeerimine• Mängude programmeerimine• Demoscene
Doom III
http://www.jazmedia.com.au
© Michał Kriukow
http://www.emezeta.com/articulos/3d-desktop
SynFace Project
http://water.usgs.gov/watuse/graphics/wuto.fact.3d.gif
http://www-vis.lbl.gov/Events/SC04/Incite1/
http://www.k2.dion.ne.jp/~t-kmr/LOVELOG_IMG/20041129fd1f6c1e.jpg
Domus.Cad 13
http://www.leon-arts.tk/
http://www.weaverling.org/atc/sim/
© Lance Cpl. Natasha S. Green
Milleks arvutigraafika?1. Meelelahutus2. Kunst3. Kasutajaliidesed4. Teadus5. Disain6. Simulaatorid
Mis on ArvutigraafikaArvutigraafika =
PiltInfo
Seotud alad:Pilditöötlus, signalitöötlus =
PiltInfo
Seotud alad:Või suvalised variatsioonid:
PiltInfoPilt
Pilt
GPU programmeerimine
Seotud alad:
Arvutigraafika sünteesib pilte• Piltide sünteesimisel on kaks põhilist
suunda: “Reaalsuse võltsimine” – kuidas sünteesida
pilte mis on reaalsusest täiesti eristamatud?
Arvutigraafika sünteesib pilte• Piltide sünteesimisel on kaks põhilist
suunda: “Reaalsuse võltsimine” – kuidas sünteesida
pilte mis on reaalsusest täiesti eristamatud? “Uue reaalsuse loomine” – kuidas sünteesida
pilte et nad rahuldaks mingeid funktsionaalseid voi esteetilisi kriteeriume
© 2000-2001 Nick Halper
http://www.cs.technion.ac.il/~irit/irit_images.html
© ToonNation
Arvutigraafika põhiteemad• Modelleerimine
Kuidas esitada objekte? Kuidas neid esitusi konstrueerida?
• Näitamine (Rendering) Kuidas objekte ekraanil ilusasti näidata?
• Animatsioon Kuidas objekte liikuma panna?
Modelleerimine• Kuidas esitada objekte?
Geomeetria – objektide kuju Fotomeetria – värvus, valgus, peegeldused,
refraktsioon.• Kuidas neid esitusi konstrueerida?
Modelleerimine• Kuidas esitada objekte?
Geomeetria – objektide kuju Fotomeetria – värvus, valgus, peegeldused,
refraktsioon.• Kuidas neid esitusi konstrueerida?
Kirjeldada käsitsi Luua interaktiivselt Skaneerida sisse Programmeerida (las kasvab ise)
Cheap 3D scanner nearing the desktop10:01 06 March 2004 Exclusive from New Scientist Print Edition Will Knight
Ever fancied taking your favourite possessions with you into the virtual world? Spiral Scratch, a start-up company in Liverpool, UK, has come up with a cheap device that generates three-dimensional computer representation of any object it scans.
© Andrea Esuli, LinSys3d
Animeerimine• Kuidas esitada liikumist?
Animeerimine• Kuidas esitada liikumist?
Kaadrite järjend Trajektooride kõverad Füüsika või muude seaduste modelleerimine
• Kuidas esitusi konstrueerida? Kirjeldada käsitsi või luua interaktiivselt Skaneerida sisse (motion capture) Programmeerida (füüsika, A-life)
© Lynn B, www.agirlsworld.com
© Brian Carpenter
© Pete Reilly
Rendering• Kuidas esitada pilti?
Rastergraafika: Pilt on pikslite massiiv p[x,y].
Vektorgraafika: Pilt on lihtsatest primitiividest (jooned, ringid, jne) koosnev asi, nii esitamegi.
3D graafika• Kuidas siis modelleeritud 3D objektide kirjelduse
järgi tekitada nende pilti?
Projitseerida objekte “kaamera tasandile”
3D graafika• Kuidas siis modelleeritud 3D objektide kirjelduse
järgi tekitada nende pilti?
Simuleerida valguse kiirte läbimist
Arvutigraafika põhiteemad• Modelleerimine
• Näitamine
• Animatsioon
Graafika programmerimine...draw_monster(bad_guy1);...
my_code.cpp
Graafika programmeerimine...draw_monster(bad_guy1);...
...draw_monster_head(..);...
...draw_triangle(..);...
Graafika programmeeriminedraw_triangle(..) { compute_position_in_3d(..); is_it_visible?(); compute_lighting_and_color(..); project_to_screen(..); draw_2d_triangle(..);}
...set_pixel(..)...
Graafika programmeeriminedraw_triangle(..) { compute_position_in_3d(..); is_it_visible?(); compute_lighting_and_color(..); project_to_screen(..); draw_2d_triangle(..);}
...set_pixel(..)...
Riistvara (G
PU)
OpenGL• OpenGL on graafika API, s.t. funktsioonide
komplekt. Ta on keelest sõltumatu.• Näiteks, kolmnurk OpenGL-iga:
glBegin(GL_TRIANGLES);glVertex2f(0, 0);glVertex2f(0, 1);glVertex2f(1, 0);
glEnd();
Kõrgema taseme APIOGRE
Mängude tegemine• ... ei ole tänapäeval enamasti “graafika
programmeerimine” (mõnede erinditega)• ... aga sellest räägib teile kohe Dan
• Kas teil on selle osa kohta küsimusi? Milleks arvutigraafika Arvutigraafika põhiteemad Graafika programmeerimine 1.0