T-111.210 Studio 4 luento 1: kurssin järjestelyt k-2006 tietokonegrafiikan perusteita 20.1.2006 Tassu Takala 1
Kurssin tavoitteet ohjelmoitavan tietokonegrafiikan alkeet grafiikan soveltaminen luovalla tavalla lisäksi erillisiä grafiikkaa sivuavia aiheita (oman valinnan mukaan) Grafiikka on on kivaa!! 20.1.2006 Tassu Takala 2
Computer graphics & interactive systems image processing mainstream graphics animation interaction photographs high dynamic range imaging (HDRI) simulated painting tools image editing & stitching filtering, warping morphing algorithmic generation noise functions L-systems genetic algorithms diffusion patterns texture mapping image-based rendering (IBR), light-field mapping 3D design CAD 3D scanning mesh generation geometric modeling motion control algorithmic motion kinematics rigid body dynamics particle simulation flocking behavior human models artificial life multimodality motion capture input techniques motion tracker image recognition speech recognition biosensors data glove & other wearables tactile devices 2D design non-photorealistic rendering (NPR) compositing & effects lighting & materials (realistic) rendering radiation science (eg. BDRF) reflection/refraction, translucency surface structure global illumination (ray tracing, radiosity) occlusion culling audio source sound rendering haptic rendering virtual reality immersive display real-time feedback interactive motion audio & haptics audio color separation reproduction & correction printing dithering & display hardware HRTF 20.1.2006 Tassu Takala loudspeaker array 3 programmable GPU algorithm optimization
Luennot Kurssin alussa kaksi luentoa (20.1. ja 27.1.) grafiikan alkeet: kuinka koodaan kuvan piirtämisen? animaatio: kuinka ohjelmoin liikkuvan (ajasta riippuvan) tapahtuman? vuorovaikutus: kuinka graafisen käyttöliittymän komponentteja käsitellään? Myöhemmin myös: 3D-grafiikka: kuinka mallinnan kolmiulotteisia muotoja ja katselen niitä virtuaalisella kameralla? video ja ääni: kuinka jatkuvia signaaleja käsitellään digitaalisesti? 20.1.2006 Tassu Takala 4
Harjoitustehtävät 0. Työvälineeseen (Processing) tutustuminen 1. Graafinen taide esim. geometriset ornamenttikuviot opittavaa: geometrinen ajattelu, symmetria, käyrät, rekursio, kieliopit, epälineaariset muunnokset, animaatio 2. Informaation visualisointi esim. www-verkoston esittäminen opittavaa: verkkoteoriaa, diagrammit ja glyyfit, algoritminen layout, interaktio, tilaa säästävät esitystavat 3. Kuvan manipulointi esim. kuvaefektejä videolla opittavaa: kuvan kaappaus ja suodatus (vrt. Photoshop), hahmontunnistus, soluautomaatit, partikkelianimaatio 4. 3D-mallinnus esim. yksinkertainen pelidemo opittavaa: objektiajattelu, geometriset transformaatiot, hierarkkiset mallit, renderointi (kameraparametrit, valaistus), virtuaalitodellisuus 20.1.2006 Tassu Takala 5
OLO-työskentely esitehtävä 0-harjoitus : jokainen tekee erikseen ryhmät 5-7 henkeä, vakituinen tutori, viikottaiset kokoontumiset tehtävät neljä ryhmätehtävää kullekin noin 2 viikkoa: avaus - välikatsaus - purku tulokset esseitä tehtävään liittyvistä aiheista toimiva ohjelma, joka demonstroi opittuja asioita työnjako ryhmässä jokaiselle sekä kirjallista työtä että koodausta lopuksi yhteinen palauteluento tutorit: Janne Janne Käki Käki (pääassistentti) (pääassistentti) Markus Markus Berg Berg Vesa Vesa Luusua Luusua Pekka Pekka Ryynänen Ryynänen 20.1.2006 Tassu Takala 6
demoja!! luento 1, aiheita tietokonegrafiikka tarkoitus, rajaus tieteenalana sovelluskohteita Processing yksinkertaistettu ympäristö tuottaa JAVA-koodia grafiikan perusteita laitteisto, arkkitehtuuri koordinaatisto, canvas piirtoprimitiivit: piste (pikseli), viiva, käyrä, suorakaide, ympyrä, monikulmio värit: RGB ja HSV teksti: kirjasimet, välistys ohjelman perusrakenne nämä pääasiassa processingreferenssisivujen avulla! 20.1.2006 Tassu Takala 7
Processing-esittely, osa I (ks. Help/Reference) Setting size() background() Environment width height 2D Primitives point() line() rect(), rectmode() triangle() quad() ellipse(), ellipsemode() curve() bezier() Attributes stroke() nostroke() fill() nofill() strokeweight() Vertex models beginshape() endshape() vertex() curvevertex() beziervertex() Color colormode() Demot (ks. Open/Examples...) coordinates points_lines shape_primitives curve_primitives vertices simple_curves demo: rgb_cube 20.1.2006 Tassu Takala 8