Trovate l'esempio nella cartella /examples di Irrlicht. Se avete seguito il primo tutorial dovreste essere in grado di eseguirlo e di vedere il risultato sullo schermo. Diamo uno sguardo al codice C++, senza soffermarci troppo sui particolari, per capire bene la struttura di una scena 3D. La prima cosa importante che viene creata è una IrrlichtDevice:
|
IrrlichtDevice *device = createDevice(EDT_SOFTWARE, dimension2d(640, 480), 16, false, false, false, 0); |
IrrlichtDevice è una classe. Per chi non lo sapesse, una classe definisce il tipo di un Oggetto, e quindi le azioni che esso può compiere. Ad esempio un oggetto di tipo Uomo può camminare, correre, parlare… Si possono creare tanti oggetti dello stesso tipo, dando un nome a ciascuno per distinguerli, così come esistono tanti uomini ciascuno con un nome diverso. Una volta creato l'oggetto di tipo IrrlichtDevice, partendo da questo possiamo creare la nostra scena. E' un po' la radice da cui derivano tutti gli altri oggetti Irrlicht. Possiamo dare un nome qualsiasi all'oggetto creato; qui si chiama device ma avremmo potuto chiamarlo anche pincopalla. L'asterisco significa che ciò che chiamiamo device non è l'oggetto in sè ma è un puntatore, ovvero un riferimento all'indirizzo in memoria in cui si trova l'oggetto. Non preoccupiamoci troppo di quell'asterisco e dei puntatori; immaginatelo come un "segnalibro" che usiamo ogni volta per ritrovare la nostra device.
La nostra IrrlichtDevice viene creata tramite una funzione, createDevice. La funzione crea l'oggetto e il puntatore (o riferimento) viene memorizzato in device. Notate come le classi inizino sempre con la maiuscola: IrrlichtDevice. Invece le funzioni iniziano sempre con una minuscola: createDevice. Questa è una convenzione comunemente seguita da tutti i programmatori per facilitare la lettura del codice. Così, se qualcosa inizia con la maiuscola sapete già che si tratta di una classe.
La funzione accetta tra le parentesi vari parametri, tra cui possiamo capire che viene utilizzato un driver software (EDT_SOFTWARE) e una grandezza della finestra di 640×480 pixel. Gli altri parametri sono più o meno misteriosi. Se siete curiosi potete dare un'occhiata al sito ufficiale http://irrlicht.sourceforge.net dove, nella sezione API, vengono descritte minuziosamente le funzioni e le classi di Irrlicht. Apriremo anche su IrrlichtItalia una sezione riguardante le funzioni e le classi che man mano impareremo ad utilizzare, per cui non dimenticate di dare spesso uno sguardo al sito oltre che al forum !
Ok, abbiamo capito che il nostro oggetto IrrlichtDevice è indispensabile e ne abbiamo creato uno. E ora? L'oggetto IrrlichtDevice contiene al suo interno altri tre oggetti fondamentali: IVideoDriver, ISceneManager e IGUIEnvironment. Ognuno di questi oggetti fornisce delle funzioni che ci permettono di manipolare la scena. Il Video Driver si occupa della visualizzazione della scena; lo Scene Manager riguarda la struttura della scena: quanti oggetti ci sono, e in che relazione sono tra di loro… IGUIEnvironment si occupa dell'interfaccia utente (GUI: Graphical User Interface). In parole povere, il nostro programma è uno spettacolo dove IrrlichtDevice è il produttore, e IVideoDriver, ISceneManager, IGUIEnvironment sono dei collaboratori ed ognuno si occupa di cose diverse. Le righe seguenti
|
IVideoDriver* driver = device->getVideoDriver(); ISceneManager* smgr = device->getSceneManager(); IGUIEnvironment* guienv = device->getGUIEnvironment(); |
servono a dare un nome ad ogni collaboratore, per poterci rivolgere a loro direttamente. Se ci occorrerà una mano dallo Scene Manager, potremo dirgli semplicemente:
| smgr->faiQualcosa(); |
invece di chiamare il produttore ogni volta e dirgli: "Hey, device, chiama lo Scene Manager e digli di fare qualcosa!"
| device->getSceneManager()->faiQualcosa(); |
E' sempre meglio sapere i nomi dei collaboratori, no? Soprattutto perchè dovremo utilizzarli spessissimo.
Interessantissimo! Specie x uno che del C++ ha solo una spolverata, e dopo più di un lustro di Qbasic, e anni di Visual, si trova a sentir parlar di puntatori…
:)
Bene così!
J
Grande vi ringrazio tutti, mi sono serviti tantissimo!!!
D
benissimo , davvero quello che cercavo! Grazie!
Si, carino, mi sembra più un tutorial sul C++ pero’.
La mia vuole essere una critica costruttiva e non sminuire il vostro lavoro. Se ci parlaste invece dei parametri di createDevice e del loro significato forse sarebbe meglio. Oppure su come gestire una mesh. Poi come ultima osservazione, ma Irrlicht non puo’ essere usato anche con .NET ?
grazie per l’attenzione.
Ciao,
Questo tutorial era partito come una introduzione ad Irrlicht per chi non ha mai utilizzato il c++. Per un tutorial molto più dettagliato su irrlicht dai un’occhiata a quello scritto da Blizzard, va molto in profondità e descrive tutti i parametri di createDevice. Lo trovi a questo indirizzo http://www.gameprog.it/?id=1049&action=search2, ma c’e’ il link anche in questa sezione sul sito di irrlichtItalia http://irrlichtitalia.altervista.org/start/articoli-e-tutorial/.
Per quanto riguarda il .NET la risposta è affermativa, purtroppo non abbiamo ancora avuto occasione di parlarne ma puoi dare un’occhiata sul sito ufficiale a questo indirizzo
http://irrlicht.sourceforge.net/docu.net/index.html
è spiegato tutto quanto.
Se vuoi una mano siamo tutti quanti disponibili sul forum
ciao!
Anche se a scuola in C++ ho fatto qualcosa con gli oggetti , i tuoi esempi sono di gran lunga più chieri di ore & ore di lezione col prof.
Continua cosi.
P.S.
Bello anche il forum..!!
Salve a tutti!!!
è da poco che sto cercando di entrare nel mondo della grafica 3D, questa guida è interessantissima, ma potreste aiutarmi, per favore,nel capire qualcosina in piu sugli oggetti (ne sarei molto grado se qualcuno mi fornirebbe una guida)
SPERO DI CONTARE SU DI VOI, nn so piu come fare
@AlfryOnline
gli oggetti non riguardano la grafica 3D, bensì si tratta di un concetto relativo alla programmazione: a questo link trovi una guida alla programmazione ad oggetti (OOP)
http://programmazione.html.it/guide/leggi/38/guida-programmazione-orientata-agli-oggetti/
se vuoi fare domande precise posta sul forum, oppure aggiungimi pure al tuo msn, trovi il mio contatto sempre sul forum (sono webmaster). ciao!
Per me che sto cominciando con C++ e Irrlicht questo tutorial è pura Illuminazione!
ma con questi codici dovrebbe uscire qualcosa?
il codice è quello dell’esempio che trovi scaricando irrlicht nella cartella /examples. Oltre al codice devi avere anche il modello di sydney. E’ lo stesso esempio che trovi sul sito ufficiale nel tutorial numero 1: http://irrlicht.sourceforge.net/tut001.html . Quello che “esce” è ciò che vedi nello screenshot all’indirizzo che ti ho dato sopra.