Luokkakaavio.lähettäminen näytönohjaimelle on tällöinturhan hidasta. Avuksi tulee tekniikka,jossa etukäteen karsitaan piirrettävienasioiden joukosta pois ne, jotka ovatkokonaan näkökentän ulkopuolella. Hierarkkinennäkymäverkko auttaa tässä,sillä jos kokonainen ryhmä jää näkökentänulkopuolelle, ei ryhmän sisältämiäasioita tarvitse käsitellä erikseen. (Puuttuu.)AnimaatiotUseimmissa grafiikkamoottoreissa ontuki myös animaatioille. Yksinkertaisimmillaanon kyse esineiden liikuttelusta.Fysiikkaa sisältävissä peleissä pelimaailmansisäiset animaatiot lasketaan yleensäfysiikkamoottorilla, mutta se ei kuulutämän artikkelin aihepiiriin. Peleissä voidaantarvita myös yksinkertaisempia animaatioita,esimerkiksi käyttöliittymässä.Jos esine lähtee yhtäkkiä liikkeelletäydellä nopeudella ja pysähtyy kuinseinään, liike näyttää luonnottomalta.Päätepisteitä voi pehmentää sopivallainterpolaatiofunktiolla. Tähän käy esimerkiksikuutiollinen polynomi 3x² – 2x³.Pidemmät liikkeet voi olla tarpeen jakaakiihdytykseen, tasaiseen liikkeeseen jahidastukseen.Liikkeen ei tarvitse olla suoraviivaista.Useasta viivasegmentistä koostuvamurtoviiva on seuraava luonnollinen askel,mutta suunnan äkillinen muuttuminenei näytä hyvältä. Pehmeiden liikeratojenmäärittelyssä hyvin yleinen työkaluovat Bezier-käyrät (engl. Bezier curve,Bezier spline). Ne ovat ikään kuin murtoviivoja,joissa jokaiselle pisteelle on annettusijainnin lisäksi tangentti. Segmentiton väännetty mutkalle niin, että niidenpäät sopivat tangentteihin. Bezier-käyrienmäärittely ja hienosäätö on käsin työlästä,joten apuna kannattaa käyttää 3Dmallinnusohjelmaa.(Puuttuu.)Animaatioon voi sisältyä myös pyörivääliikettä, tai se voi koostua pelkästäänsiitä. Tässä kannattaa käyttää kvaternioita,koska niiden interpolointiominaisuudetovat ylivoimaiset. Matriiseillakinhomma onnistuu, mutta interpolaatiotuottaa vääristymiä, jotka on erikseenkompensoitava.Elävien olentojen animointiin käytetäänusein luurankoja (engl. skeletalusing namespace SkrolliGL;Engine engine;ResourceManager res_mgr;res_mgr.load_directory("data");Camera camera;engine.set_camera(&camera);camera.set_position(10, -11, 4);camera.look_at(0, 0, 2);camera.set_depth_range(0.1, 100);engine.set_sky_color(0.397, 0.625, 0.748)engine.set_sun_direction(-0.8, -0.7, 1.3);Group scene;engine.set_scene_root(&scene);Instance ground(res_mgr.get("ground.obj"));scene.add(ground);Instance house(res_mgr.get("house.obj"));house.set_matrix(Matrix::translation(2, 0, 0));scene.add(house);while(engine.next_frame()) ;Listaus 1.animation). Mallille tehdään virtuaalinenluuranko ja kulmapisteet yhdistetään yhteentai useampaan luuhun. Jokaisellaluulla on oma matriisinsa, jota muuntelemallasaadaan mallin muoto muuttumaan.Erilaisilla rajoitteilla voidaan varmistaaluiden pysyminen luonnollisessaasennossa. (Puuttuu.)EsimerkkitoteutusEsimerkkitoteutus Skrolli-moottorista onosoitteesta http://www.skrolli.fi/2014.1/.Se on sellaisenaan toimiva, joskin rajoittunut3D-grafiikkamoottori, jota voikäyttää myös pohjana oman moottorinkehitykselle. Koodi on lisensoitu CreativeCommons CC0 -lisenssillä, joten sitävoi käyttää, muokata ja levittää täysinvapaasti.Listauksessa 1 on esimerkki siitä, miltämoottoria käyttävä ohjelma näyttää.Kirjoittajan tavoittaa Ircnetistä nimimerkillätdb kanavilta #skrolli ja #opengl.fi. Vastaanmielelläni OpenGL:ää koskeviin kysymyksiin.Kuvakaappaus esimerkkiohjelmasta.50 2014.1
Pikseligrafiikkaa:C64 multicolorVaikka Commodore 64:lle onkin kehitetty myösedistyneempiä näyttötiloja, on perinteinen moniväritilaedelleen monien taiteilijoiden suosiossa. Seuraavassamuutamia poimintoja viime vuosilta.Ville-Matias HeikkiläKulttuuriC64:n moniväritila:• Näyttöalue jakautuu 40 × 25 soluun,kussakin 4 × 8 pikseliä.• Kussakin solussa saa käyttää neljääeri väriä, jotka valitaan kiinteästä16:n värin paletista. Yksi väreistä(yleensä musta) on sama kaikissasoluissa.• Paletti:Yazoo: African Night.Arsenic: Dreamlands Gate.Oys: Frog, Landscape and a Lot of Clouds.Yazoo: Graveyard.Oys: Ladybird.Mermaid: What’s With All The Hate.51