Sei sulla pagina 1di 3

[Tutorial] Analisi dell'esempio "HelloWorld" - 2

Pagina 1 di 3

Irrlicht Italia Forum


Benvenuto! Effettua l'accesso oppure registrati.
Sempre Accedi

Discussioni sull'engine 3D open source Irrlicht

Ricerca

Inserisci il nome utente, la password e la durata della sessione.

News: E' online il forum di Irrlicht Italia con tutti i contenuti della precedente versione ma con una nuova piattaforma, stato sostituito il phpBB2 con il nuovo SMF2

Indice

Aiuto

Ricerca

Accedi

Registrati

Irrlicht Italia Forum Irrlicht Italia Irrlicht [Tutorial] Analisi dell'esempio "HelloWorld" - 2

precedente successivo Pagine: [1]


STAMPA

Autore webmaster
Amministratore Nuovo arrivato Post: 1226

Topic: [Tutorial] Analisi dell'esempio "HelloWorld" - 2 (Letto 812


[Tutorial] Analisi dell'esempio "HelloWorld" - 2
il: Gennaio 15, 2006, 10:08:27 am

Ricapitolando la prima parte del tutorial, abbiamo creato il nostro indispensabile oggetto IrrlichtDevice e lo abbiamo chiamato device. Poi abbiamo assegnato i nomi ai collaboratori: driver, smgr, guienv. guienv, di tipo IGUIEnvironment, si occupa dell'interfaccia utente; possiamo quindi utilizzarlo per aggiungere un'etichetta di testo non facente parte della scena 3D. Utilizzando il linguaggio televisivo, il testo aggiunto dal guienv viene visualizzato in sovraimpressione.
Codice: [Seleziona] guienv->addStaticText(L"Hello World! This is the Irrlicht Software engine!", rect<int>(10,10,200,22), true);

I numeri 10,10 e 200,22 sono le coordinate x e y dell'angolo in alto a sinistra e in basso a destra del rettangolo in cui il testo viene visualizzato. Potete provare a cambiare queste coordinate, ed osservare cosa succede. Veniamo ora al "nocciolo" dell'esempio. Abbiamo gi a disposizione il nostro modello 3D animato, sydney.md2. Per caricarlo, dobbiamo creare un oggetto di tipo IAnimatedMesh. Una volta creato, dobbiamo aggiungerlo alla scena; la scena 3D composta da nodi, e ciascun nodo contiene un oggetto: che sia la telecamera, che sia la luce, che sia un modello 3D (cio una mesh). Chi si occupa di tutto ci? Ma naturalmente lo Scene Manager: nel nostro caso, lo abbiamo chiamato smgr. Quindi, creiamo prima IAnimatedMesh inserendo il modello sydney:
Codice: [Seleziona] IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");

L'oggetto si chiama mesh. Anche qui, avremmo potuto chiamarlo sydney, modello, oppure pincopalla. Dobbiamo ora creare un oggetto di tipo IAnimatedMeshSceneNode, ovvero un tipo di nodo capace di contenere una mesh animata.
Codice: [Seleziona] IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );

http://forum.irrlicht.it/index.php/topic,10.msg17.html

18/11/2011

[Tutorial] Analisi dell'esempio "HelloWorld" - 2

Pagina 2 di 3

La precedente istruzione crea il nodo con la nostra mesh (sydney) e lo inserisce nella scena. Seguono poi tre istruzioni che impostano alcuni parametri del nodo:
Codice: [Seleziona] if (node) { node->setMaterialFlag(EMF_LIGHTING, false); node->setFrameLoop(0, 310); node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") }

L'istruzione condizionale if(node) serve per essere certi di operare su un nodo che stato effettivamente creato. Se infatti per qualche motivo la creazione del nodo non va a buon fine (per mancanza di memoria, ad esempio), le istruzioni contenute nel blocco if causerebbero un crash, interrompendo il programma. Ecco a cosa servono le tre istruzioni: 1 - LA LUCE La scena 3D normalmente ha un tipo di illuminazione dinamico: ci significa che potete vedere qualcosa solo se aggiungete un oggetto luminoso che appunto faccia luce. Se non c' nessuna luce, apparir tutto buio, come nella notte dei tempi. In questo esempio non abbiamo ancora aggiunto alcun tipo di luce, quindi se vogliamo vedere qualcosa dobbiamo disabilitare l'illuminazione dinamica. 2 - L'ANIMAZIONE L'animazione di Sydney bel pi lunga di quel che vediamo nell'esempio. Infatti la seconda istruzione serve per limitare l'animazione dal fotogramma 0 al 310, ma se siete curiosi di vedere l'animazione per intero potete benissimo commentare l'istruzione inserendo davanti un doppio slash //. 3 - LA TEXTURE La texture non altro che la "pelle" di Sydney: si tratta di un'immagine bidimensionale applicata al modello 3D. Potete tranquillamente caricarla in un qualsiasi programma di grafica (Gimp, Photoshop, Paint Shop Pro, MSPaint) e modificarla a piacere. Si tratta infatti di una comune bitmap (.bmp). Anche qui, potete commentare la riga per vedere com' sydney senza alcuna texture. Manca ancora una cosa importantissima: la telecamera (o camera). La sua posizione definisce il punto di vista in cui verr visualizzata la scena: si definisce prima la posizione della camera e poi la posizione verso cui rivolta utilizzando le coordinate x,y e z.
Codice: [Seleziona] smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));

Come al solito, si occupa di questo lo Scene Manager visto che anche la camera fa parte della scena 3D. Notate che abbiamo creato un nodo di tipo CameraSceneNode, ma non gli abbiamo assegnato un nome come invece abbiamo fatto in precedenza. Questo perch, in questo esempio, non abbiamo pi bisogno di riferirci alla camera. In progetti pi ampi e complessi probabilmente avremo bisogno di spostarla, quindi dovremo per forza assegnarle un nome. Abbiamo ora creato tutto ci che serve per visualizzare la scena: occorre solo disegnarla sullo schermo. Il ciclo che segue viene interrotto solo quando si chiude la finestra dell'applicazione, o con la X in alto a destra oppure premendo ALT+F4.
Codice: [Seleziona] while(device->run()) { driver->beginScene(true, true, SColor(0,200,200,200));

http://forum.irrlicht.it/index.php/topic,10.msg17.html

18/11/2011

[Tutorial] Analisi dell'esempio "HelloWorld" - 2

Pagina 3 di 3

smgr->drawAll(); guienv->drawAll(); driver->endScene(); }

Abbiamo dunque esplorato le istruzioni fondamentali di questo primo esempio. Potete provare a cambiare alcuni parametri, come il punto di vista della camera, le coordinate del testo statico, i fotogrammi di animazione di sydney. Per problemi, dubbi, domande, postate sul forum. A presto per il prossimo tutorial! :ciao:
Connesso

Bellaz89
Nuovo arrivato Post: 650

Domanda
Risposta #1 il: Gennaio 20, 2006, 03:46:35 pm

Per la luce dov' che posso trovare tutte le flag & relative descrizioni?? :? Ho controllato sul .chm guida di irrlicht ma non le ho trovate :scared:
Connesso seeeee vi piacerebbe?

webmaster
Amministratore Nuovo arrivato Post: 1226

[Tutorial] Analisi dell'esempio "HelloWorld" - 2


Risposta #2 il: Gennaio 20, 2006, 08:07:36 pm

se ti riferisci al flag
Codice: [Seleziona] node->setMaterialFlag(EMF_LIGHTING, false);

in realt si tratta di una propriet del materiale della mesh: qui trovi tutti i flag relativi al materiale. http://irrlicht.sourceforge.net/docu/namespaceirr_1_1video.html#a117 in uno dei prossimi tutorial vedremo anche come creare una fonte di luce e tutte le propriet per impostarla al meglio! :ciao:
Connesso

Pagine: [1]

STAMPA

precedente successivo
Irrlicht Italia Forum Irrlicht Italia Irrlicht [Tutorial] Analisi dell'esempio "HelloWorld" - 2

Vai a: => Irrlicht

vai

SMF 2.0.1 | SMF 2011, Simple Machines XHTML RSS WAP2

http://forum.irrlicht.it/index.php/topic,10.msg17.html

18/11/2011