Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

IrrLicht 3D Game Engine,- A review (by me :P )

Îåêßíçóå áðü ôï ìÝëïò PsySpooky. Τελευταία δημοσίευση από το μέλος PsySpooky στις 06-06-2007, 20:19. Υπάρχουν 0 απαντήσεις.
Ταξινόμηση Δημοσιεύσεων: Προηγούμενο Επόμενο
  •  06-06-2007, 20:19 32683

    IrrLicht 3D Game Engine,- A review (by me :P )

    H IrrLicht Engine είναι μια engine 3d γραφικών ,
    είναι open source και έχει γραφτεί αποκλιστικά σε C++.
    To κυριότερο είναι open source και cross platform :).

    Υποστιρίζει
    • Direct3D (εκδόσεις 8.1 κ9.0)
    • OpenGL(έκδοση 2.0)
    • IrrLicht Engine software renderer
    • Apfelbaum Software Renderer
    • null device

    καιii απο πλατφόρμες.. χαχα τι να πρωτογράψω :) :

    • Windows 98, ME, NT 4, 2000, XP, XP64
    • Linux
    • MacOS
    • Sun Solaris/SPARC


    Υποστιρίζει επείσης textures όπως:

    • Adobe Photoshop (.psd)
    • JPEG File Interchange Format (.jpg)
    • Portable Network Graphics (.png)
    • Truevision Targa (.tga)
    • Windows Bitmap (.bmp)
    • Zsoft Paintbrush (.pcx)


    και mesh αρχεία όπως:

    • 3D Studio meshes (.3ds)
    • B3D files (.b3d)
    • Alias Wavefront Maya (.obj)
    • Cartography shop 4 (.csm)
    • COLLADA (.xml, .dae)
    • DeleD (.dmf)
    • FSRad oct (.oct)
    • Irrlicht scenes (.irr)**
    • Microsoft DirectX (.x) (binary & text)
    • Milkshape (.ms3d)
    • My3DTools 3 (.my3D)
    • OGRE meshes (.mesh)
    • Pulsar LMTools (.lmts)
    • Quake 3 levels (.bsp)
    • Quake 2 models (.md2)



    Και αφού σας έδειξα τις ιδιότιτες της IrrLicht, ώρα για ένα απλό παράδηγμα hello world!


    στην περίπτωση μου ,γράφω με visual c++ 2005,
    αλλά μπορείτε να γράψετε και εσείς με την IrrLicht χρισιμοποιώντας ό,τι IDE προτιμάτε,
    αρκή να το ρυθμίσετε να δουλεύει με την IrrLicht.


    Ηello World! παράδειγμα:


    //αρχικά κάνουμε include την IrrLicht.
    #include <irrlicht.h>




    Η IrrLicht έχει 5name spaces:

    using namespace core;
    using namespace scene;
    using namespace video;
    using namespace io;
    using namespace gui;




    αλλά με ένα μόνο namespace περιλαμβάνουμε στο πρόγραμμα τα υπόλοιπα 5.


    //to namespace pou perilamvanei ola ta alla 5
    using namespace irr;




    linking στην library της IrrLicht.


    #pragma comment(lib, "Irrlicht.lib")



    αρχή

    int main()
    {


    τώρα, για να δημιουργίσουμε την engine χρισιμοποιούμε την μέθοδο 'createDevice()' η οποία έχει 7παράμετρους:


    • deviceType: ο τύπος συσκευών, μπορεί να είναι Null, software engine, Direct3D 9, Direct3D 8 ή OpenGL
    • στο παράδηγμα θα χρισιμοποιήσω Direct3D 9, δηλαδή θα το δηλώσω με EDT_DIRECT3D, μπορείτε να χρισιμοποιήσετε ό,τι άλλο θέλετε π.χ
    • EDT_SOFTWARE, EDT_NULL, EDT_DIRECT3D9, EDT_DIRECT3D8, EDT_OPENGL.
    • windowSize: το μέγεθος του παραθήρου.. στο παράδηγμα θα χρισιμοποιήσω 640x480
    • bits: αριθμός bits όταν το πρόγραμμα/παιχνίδι τρέχει σε full screen.. η παράμετρος θα είναι 16 ή 32αν το πρόγραμμα παιχνίδι δεν τρέχει σε full screen η παράμετρος bits αγνοήτε.
    • fullscreen: true για να τρέχει το πρόγραμμα σε full screen, false για το αντίθετο...
    • sencilbuffer: Specifies if we want to use the stencil buffer for drawing shadows. (auto einai copy paste:P)
    • vsync: Specifies if we want to have vsync enabled. This is only useful in full screen mode.( ka auto copy paste einai! :P :P)
    • eventReceiver: An object to receive events. We do not want to use this parameter here, and set it to 0.(dyskoli i metafrasei re paidia.... :) )



    γράφουμε το όνομα που θέλουμε να έχει το παράθυρο μας π.χ:


    device->setWindowCaption(L"Hello World! - Irrlicht Engine Demo");


    καλούμε το video driver, scene manager και το gui enviroment

    IVideoDriver* driver = device->getVideoDriver();
    ISceneManager* smgr = device->getSceneManager();
    IGUIEnvironment* guienv = device->getGUIEnvironment();




    βάζουμε κείμενο στο στην πάνο αριστερή γωνία του προγράμματος και στην κάτω δεξιά.

    guienv->addStaticText(L"Hello World! This is the Irrlicht Software engine!",
    rect<int>(10,10,200,22), true);



    τώρα φορτόνουμε κάτι ενδιαφέρον στο πρόγραμμα, π.χ ένα αρχείο mesh Quake 2 (.md2)
    IAnimatedMesh* mesh = smgr->getMesh("../../media/sydney.md2");
    IAnimatedMeshSceneNode* node = smgr->addAnimatedMeshSceneNode( mesh );



    τώρα βάζουμε την παράμετρο του φώς σε false γιατί δεν έχουμε δυναμικό φώς στην σκηνή και το mesh αρχείο θα φένετε τελείως μαύρο.
    βάζουμε επείσης το animation να τρέχει 0-310 fps.
    και τελικά φορτόνουμε το texture του.

    if (node)
    {
    node->setMaterialFlag(EMF_LIGHTING, false);
    node->setFrameLoop(0, 310);
    node->setMaterialTexture( 0, driver->getTexture("../../media/sydney.bmp") );
    }



    τώρα για να βλέπουμε την σκηνή βάζουμε μια κάμερα στη θέση (0, 10, -40).

    smgr->addCameraSceneNode(0, vector3df(0,30,-40), vector3df(0,5,0));

     
    ok τώρα που τα σετάραμε όλα ας τα εμφανίσουμε στην οθόνη!

    while(device->run())
    {
    driver->beginScene(true, true, SColor(255,100,101,140));

    smgr->drawAll();
    guienv->drawAll();

    driver->endScene();
    }



    και τέλος κλείνουμε το πρόγραμμα ρίχνοντας την μηχανή για έξοδο.


    device->drop();
    return 0;
    }



    .
    Eλπίζω το άρθρο να σας φανεί ενδιαφέρον αν όχι εκπαιδευτικό :P.
    Ξεκίνησα να δουλεύω με την ΙrrLicht πριν λίγες μέρες, αφότου πείρα ένα mail που με ήθελε κάπιος να μπώ στο project του για ένα 3D παιχνίδι...

    • Αρθρογραφία :P
    IrrLicht Homepage
    και τα λίγα πράγματα που ξέρω έγω πάνω στην IrrLicht

    p.s αυτό το άρθρο το έγραψα εγώ και το έστειλα για δημοσίευση στον κατάλογο άρθρα στο www.coder.gr
    κάποιοι απο εσάς πιθανόν να είστε και στο coder.gr μέλος.
    απλά το σιμιώνω για να μην ακουστεί οτι δεν είμαι ο συγραφέας του άρθρου :P

    p.s2  αυτό είναι το πρώτο μου άρθρο.. για αυτό respect :)


    CC Calculator -newest version: 1.6-

    Επισκευθήτε το blog μου :)

Προβολή Τροφοδοσίας RSS με μορφή XML
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems