1 / 25

Irrlicht Engine grafiikkamoottori

Janne Laukkarinen 16.4.2008 Ohjelmistotuotanto ja tietokonepelit -seminaari, kevät 2008 Helsingin Yliopisto, Tietojenkäsittelytieteen laitos. Irrlicht Engine grafiikkamoottori. Johdanto. Pelimoottoreista Irrlicht Engine Ominaisuudet .NET-versio Arkkitehtuuri Esimerkkikoodia Yhteenveto.

malise
Download Presentation

Irrlicht Engine grafiikkamoottori

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Janne Laukkarinen 16.4.2008 Ohjelmistotuotanto ja tietokonepelit -seminaari, kevät 2008 Helsingin Yliopisto, Tietojenkäsittelytieteen laitos Irrlicht Engine grafiikkamoottori

  2. Johdanto Pelimoottoreista Irrlicht Engine Ominaisuudet .NET-versio Arkkitehtuuri Esimerkkikoodia Yhteenveto

  3. Pelimoottoreista Kaupallisia pelimoottoreita: Epic Games – Unreal Engine 3 id Software – id Tech 4 (entinen Doom 3 Engine) Valve Software – Source Engine Emergent Game Technologies – Gamebryo Avoimen lähdekoodin peli/grafiikkamoottoreita: id Tech 2, id Tech 3 Crystal Space OGRE 3D Irrlicht Engine

  4. Pelimoottoreista Kaupalliset pelimoottorit eivät ole yleensä pelkkiä grafiikkamoottoreita Pelimoottori huolehtii grafiikan lisäksi muista osa-alueista: Ääni, musiikki Tekoäly, pelilogiikka Verkkoliikenne Fysiikka Kaupan päälle tulevat työkalut Karttaeditori Muun pelidatan editorit Muunnostyökalut (esim. 3ds Max-pluginit)

  5. Pelimoottoreista Irrlicht Engine (kuten OGRE 3D) on pelkkä grafiikkamoottori (renderer), eikä riitä yksin pelintekoon Voidaan yhdistää muiden ilmaisten/avoimen lähdekoodin projektien kanssa peliprojektissa Ääni: IrrKlang (ilmainen ei-kaupallisissa projekteissa) FMod (ilmainen ei-kaupallisissa projekteissa) OpenAL (LGPL) Fysiikka: Newton (ilmainen) ODE (LGPL tai BSD) Bullet (zlib)

  6. Irrlicht Engine Irrlicht = "virvatuli" Projektin aloitti Nikolaus Gebhardt vuonna 2002 Perustanut Ambiera-yrityksen Avoin lähdekoodi zlib-lisenssin alainen Uusin versio 1.4 (marraskuu 2007) Windows-, Linux- ja MacOS-alustoille

  7. Irrlicht Engine: Ominaisuudet Alustariippumattomuus Helppokäyttöisyys Tehokkuus Näkymäverkon hallinta

  8. Alustariippumattomuus Tukee Windows-, Linux- ja MacOS-alustoja Sovelluskehitintuki MS Visual Studio (6.0, .NET tai .NET Express Edition) Dev-C++, Code::Blocks ja Codewarrior Tuetut piirtorajapinnat: OpenGL (kaikilla alustoilla) DirectX 8.1 ja 9.0 (vain Windowsissa) Irrlicht Engine ohjelmistopohjainen rasteroija Apfelbaum ohjelmistopohjainen rasteroija Tuetut varjostinkielet: Pikseli- ja verteksivarjostimien versiot 1.1 – 3.0 ARB fragmentti- ja verteksiohjelmat HLSL GLSL

  9. Alustariippumattomuus Kielikytkennät: Java: JIrr, Bindenlicht (viimeinen päivitys 2005) Python: Pyrr, Venom (kehitys lopetettu) Lua: IrrLua (viimeinen päivitys 2006) Ruby: IrrRuby (viimeinen päivitys 2005) Pascal: irrPascal .NET: Irrlicht.NET (kehitys lopetettu) ja Irrlicht .NET CP Irrlicht .NET CP (Cross Platform) Mono-projektin avulla .NET-ohjelmia voi ajaa myös Linux- ja MacOS-alustoilla Kaikki .NET-kielet käytössä (C#, VB.NET, Delphi.NET) Dokumentaatio heikkoa tällä hetkellä

  10. Alustariippumattomuus Laaja tiedostoformaattituki Nopeuttaa pelinkehitystä Vähentää työvaiheita Riippumattomuus työkaluista Tuetut tekstuurien kuvaformaatit: .psd Adobe Photoshop .jpg JPEG .png Portable Network Graphics .tga Truevision Targa .bmp Windows Bitmap .pcx Zsoft Paintbrush Ei toistaiseksi tukea .dds-tekstuureille

  11. Alustariippumattomuus Tuetut 3D-malliformaatit: .3ds 3D Studio .b3d Blitz3D .obj Alias Wavefront Maya .csm Cartography shop 4 .xml, .dae COLLADA .irr Irrlicht näkymät .irrmesh Irrlicht staattiset mallit .x Microsoft DirectX (binääri ja teksti) .ms3d Milkshape .mesh OGRE-mallit .bsp Quake 3 -kentät .md2 Quake 2 -mallit Ja joitain muita

  12. Helppokäyttöisyys Kirjoitettu C++:lla ja puhtaasti oliopohjainen Hyvin suunnitellut rajapinnat API tarjoaa rajapinnat yleisesti tarvittaviin käsitteisiin Ohjelmoijan ei tarvitse osata matalan tason asioita Käytetty simulaatioiden/prototyyppien kehittämiseen "A major benefit is the well-designed interface and the ease of use of Irrlicht." – Ettlin, Büchler and Bleuler: A simulation environment for robot motion planning "The API wraps up complex concepts of computer graphics and presents the programmer with only a set of abstract classes with well-defined interfaces." – Triebel, Guthier and Effelsberg: Skype4Games "[Irrlicht] was chosen due to its very simple interface and easy to manage scene graph structure." – Wilczynski and Marasek: System for Creating Games in Augmented Environments

  13. Tehokkuus Ei ole riippuvainen monista raskaista kirjastoista Optimoitu, nopea 3D-matematiikka ja kokoelmaluokat Käyttää 16-bittisiä tekstuureja oletuksena Noin kaksinkertainen siirto/piirtonopeus Polygonien määrää ei ole rajoitettu

  14. Näkymäverkko Pelin maailmaa kutsutaan näkymäksi (Scene) Myös asetelma tai sommitelma Pelimaailman oliot ovat osa näkymää Näkymäverkko = näiden olioiden suhteet, ominaisuudet Jokaista pelimaailman oliota edustaa verkossa näkymäsolmu Verkko hierarkkinen, solmuilla voi olla lapsia

  15. Näkymäverkon hallinta Irrlichtissä lapsisolmut liikkuvat suhteessa isänsä sijaintiin Helppo esimerkiksi kiinnittää valo liikkuvaan autoon Valmiita solmutyyppejä on Irrlichtissä useita Näkymäsolmu voi olla esimerkiksi Kamera Ulkokenttä Sisäkenttä Animoitu hahmo Animoitua vettä Ulko- ja sisäkenttiä voidaan yhdistää saumattomasti Ohjelmoija voi myös luoda omat solmutyyppinsä

  16. Näkymäverkon hallinta Näkymäverkon hallinta tärkeä osa 3D-grafiikkamoottoria Tärkein tehtävä keventää rasteroijan (renderer) työtaakkaa rajaamalla sille tarjottavat oliot näkyviin tai mahdollisesti näkyviin (culling) Irrlichtin käyttämät erottelualgoritmit toimivat paremmin nykyisillä tehokkailla näytönohjaimilla

  17. Arkkitehtuuri Nimiavaruudet irr – Juuri, kaikki Irrlichtin luokat ovat tämän nimiavaruuden sisällä irr::core – Sisältää perusluokat kuten vektorit, taulukot, listat jne irr::gui – Graafisen käyttöliittymän luomiseen käytetyt luokat irr::io – Tarjoaa IO-rajapinnat: tiedostojen luku ja kirjoitus, zip- ja xml-tiedostojen käsittely, jne irr::scene – Kaikki näkymänhallintaan liittyvä: 3D-Mallien lataus, näkymäsolmut kuten kasipuut (octree) ja billboardit, jne irr::scene::quake3 – Quake 3 -mallien käsittelyyn liittyvät luokat irr::video – Sisältää videoajurin käyttöön liittyvät luokat. Kaikki 2D- ja 3D-rasterointi tapahtuu täällä

  18. Arkkitehtuuri Tärkeimmät luokat ja rajapinnat irr::IrrlichtDevice-luokka Irrlicht Enginen tärkein luokka ja moottorin juuri Luodaan ensimmäisenä ja tuhotaan viimeisenä IrrlichtDevice-olion kautta ohjelmoija pääsee käsiksi kaikkeen moottorissa irr::video::IVideoDriver-rajapinta 2D- ja 3D-rasterointi sekä tekstuurien manipulointi tapahtuu tämän rajapinnan kautta irr::scene::ISceneManager-luokka Hallitsee näkymäsolmuja, kameroita 3D-mallien lataaminen irr::scene::ISceneNode-rajapinta Kaikki näkymäsolmuina toimivat luokat toteuttavat tämän

  19. Esimerkkejä

  20. Esimerkkejä C++ -kielinen esimerkki jossa Quake 2 -formaatin 3D-malli on animoitu ruudulla (ilman taustaa tai valaistusta) #include <irrlicht.h> using namespace irr; int main() { IrrlichtDevice *device = createDevice(video::EDT_OPENGL, core::dimension2d<s32>(640,480),16,false,true,true); Edellä luodaan IrrlichtDevice-olio createDevice-funktiolla. video::IVideoDriver* driver = device->getVideoDriver(); scene::ISceneManager* scenemgr = device->getSceneManager(); Talletetaan osoittimet videoajuriin ja näkymänhallintaan.

  21. Esimerkkejä device->setWindowCaption(L"Hello World!"); Asetetaan ikkunan otsikkoteksti. scene::ISceneNode* node = scenemgr->addAnimatedMeshSceneNode( scenemgr->getMesh("quake2model.md2")); if (node) { node->setMaterialTexture(0, driver->getTexture("texture.bmp")); node->setMaterialFlag(video::EMF_LIGHTING, false); } Kun 3D-malli on ladattu, siihen lisätään tekstuuri ja asetetaan materiaalista valaistus pois päältä, sillä ilman erillistä valonlähdettä malli näyttäisi täysin pimeältä. scenemgr->addCameraSceneNodeFPS(0, 50, 100); Käyttäjä ohjaa kameraa FPS-tyyliin hiirellä ja näppäimistöllä.

  22. Esimerkkejä while(device->run()) { driver->beginScene(true, true, video::SColor(255,0,0,255)); scenemgr->drawAll(); driver->endScene(); } Piirtäminen tapahtuu while-silmukan sisällä. Kaikki pitää piirtää beginScene- ja endScene-funktioiden kutsujen välissä. Funktio beginScene tyhjentää ruudun annetulla värillä. Näkymänhallinta piirtää sisältönsä ruudulle drawAll-kutsulla. Funktiota endScene kutsumalla kaikki esitetään ruudulla. device->drop(); return 0; } Irrlichtissä create-alkuisella funktiolla luodut oliot on vapautettava drop-funktiolla.

  23. Esimerkkejä

  24. Yhteenveto Irrlicht Engine on Ilmainen ja avoin Saatavissa useammalle alustalle Integroitavissa muihin avoimiin/ilmaisiin projekteihin Käytettävissä myös muiden ohjelmointikielten kanssa Helpompi ja nopeampi oppia kuin monet muut moottorit Hyvin ja monipuolisesti dokumentoitu Oliopohjainen Tehokas ja nopea Monipuolinen ja laajennettava Yhä kehityksen alla

  25. Yhteenveto Irrlicht Engine EI ole Kokonainen pelimoottori Valmis pelinkehitysympäristö Seuraavan sukupolven pelimoottori Aina ajan tasalla OGRE 3D:hen verrattuna Irrlicht on Helpompi oppia Yksinkertaisempi rakenteeltaan, arkkitehtuuriltaan Hieman heikommin dokumentoitu Tällä hetkellä jäljessä ominaisuuksien osalta Vähemmän tunnettu/suosittu

More Related