Monday, March 4, 2013

Sunday, March 3, 2013

Saturday, March 2, 2013

Real Library - Demo Application



Alpha Release Build 20

Real Library SDK is a C++ toolbox that can create virtual reality worlds. It is powered by some thirdparty libraries as illustrated in the image below.





You can download the Alpha Release version in Download page.


Also there are some tutorials for how to use it in tutorial page.

See the doxygen for yourself. ( The doxygen is in greek but will soon be translated. )

New tutorials

5 new tutorials added.


Updated namespace layer



Friday, March 1, 2013

Basic use of library



//#pragma comment( linker, "/subsystem:windows /ENTRY:mainCRTStartup" )// Make console window stay closed.

#include <RealLibrary.h>

#pragma comment( lib, "Real Library.lib" )

using namespace real;
using namespace real::core;
using namespace real::input;
using namespace real::graphics;
using namespace real::physics;
using namespace real::audio;
using namespace real::script;
using namespace real::bind;
using namespace real::base;

//int HK_CALL main( int argc, const char** argv )
int main( int argc, const char** argv )
{
       // Bind scripts.
       bindReal( SCRIPTDEVICE.getState() );
      
       // Initialize scene
       SCRIPTDEVICE.runScript( "myScriptPath.lua" );// SOS here put your own Lua script!!!!!!!!
      
       // Simulation loop.
       while( GRAPHICSDEVICE.isRunning() )// Exit loop if graphicsdevice is not running.
       {
              if ( GRAPHICSDEVICE.isWindowActive() )// Check if window is active in order to pause devices.
              {
                     // Update devices.
                     ACTOR.update();// it holds the camera so camera is also updated.
                     APPLICATION.update();// Update application logic.
                     INPUTDEVICE.update();// Check for user input.
                     PHYSICSDEVICE.update();// Do a simulation step.
                     GRAPHICSDEVICE.render();// Render scene.              
              }
              else
                     GRAPHICSDEVICE.yield();
       }
}

Thursday, February 21, 2013

New Facebook page

Created new facebook page.

New sourceforge page

Created new Sourceforge page.

Νέο tutorial

Προστέθηκε ένα νέο tutorial

Θα το βρείτε εδώ.

Επίπεδα βιβλιοθήκης


Η βιβλιοθήκη είναι στα πρώτα στάδια σχεδιασμού της και δεν παρέχονται ακόμα tutorials. Το κυρίως κομμάτι της ειναι το base namespace όπου συγκεντρώνει όλη την λειτουργικότητα της. Με το bind namespace μπορείς να κάνεις ότι και με το base αλλά με εντολές δέσμης ενεργειών Lua.

Friday, January 25, 2013

API reference manual

Το API reference manual πλεον είναι διαθέσιμο.

UML diagram

UML diagram

Wednesday, January 23, 2013

Σώμα σταθερής δομής - Rigid Body

Σώμα σταθερής δομής ( rigid body ) θα ονομάζουμε όποιο αντικείμενο είναι δημιούργημα του physics κομματιού της βιβλιοθήκης Real Library. Στην ουσία είναι το εσωτερικό μοντέλο ενός τρισδιάστατου αντικειμένου – μοντέλο φυσικής.

Γενικά σε άλλες εφαρμογές ή βιβλιοθήκες φυσικής υπάρχουν και τα μη σταθερής δομής ( soft boby ). Στην Real Library μόνο σταθερής δομής δημιουργούνται. Η διαφορά τους είναι πως στα σταθερής δομής η γεωμετρία του μοντέλου δεν αλλάζει εάν για παράγειγμα γίνει μία σφοδρή σύγκρουση. Επίσης δεν σπάνε όπως τα αντικείμενα του πραγματικού κόσμου. Τα μη σταθερής δομής μπορούν να παραμορφωθούν ή να σπάσουν ακόμα και με ελάχιστες δυνάμεις να δρούν πάνω τους.
Αποφασίσαμε να μην συμπεριλάβουμε τα σώματα μη σταθερής δομής καθώς απαιτούν μεγαλύτερη επεξεργαστική ισχύ από τα σώματα σταθερής δομής και επίσης ούτε η Havok Physics and Animation, που είναι η ενσωματωμένη βιβλιοθήκη για την φυσική, τα υποστηρίζει προς το παρόν.

Κομμάτια βιβλιοθήκης

Σκελετός


H Real Library χωρίζεται σε 8 χώρους ονομάτων ( namespaces ) κάτω από το βασικό χώρο ονόματος real το οποίο συμπεριλαμβάνει όλη την λειτουργία της βιβλιοθήκης. Κάθε κομμάτι ασχολείται με διαφορετικές λειτουργίες και είναι υπεύθυνο για αυτήν. 

·         core
Κορμός της βιβλιοθήκης.

·         input
Λειτουργίες από είσοδο χρήστη.

·         graphics
Απεικόνιση γραφικών στην οθόνη.

·         physics
Εφαρμογή νόμων κλασσικής μηχανικής.

·         audio
Αναπαραγωγή ήχων από την συσκευή ήχου/ηχεία.

·         script
Ενσωμάτωση δυνατότητας εκτέλεσης από γλώσσα δέσμης ενεργειών.

·         bind
Ορισμός της σύνταξης των εντολών της γλώσσα δέσμης ενεργειών για αυτήν την βιβλιοθήκη.

·         base
Συγχώνευση όλων των επιμέρους κομματιών κάτω από μία διεπαφή.


Λειτουργία


Στο κομμάτι core λαμβάνουν χώρα όλες οι βασικές αλλά σημαντικές λειτουργίες της βιβλιοθήκης.  Σκεφτείτε το σαν τον κορμό της βιβλιοθήκης από όπου όλα τα υπόλοιπα στοιχεία της αντλούν στοιχεία για την λειτουργία τους. Λειτουργεί σαν οδηγός τους στο πως θα επικοινωνήσουν μεταξύ τους και πως θα συμπεριφερθούν.
Στα κομμάτια audio και graphics όπως είναι αντιληπτό λαμβάνουν χώρα οι λειτουργίες αναπαραγωγής ήχου και απεικόνησης γραφικών και είναι ανεξάρτητα το ένα από το άλλο.
Στο κομμάτι physics λαμβάνει χώρα η εξομοίωση της φυσικής σύμφωνα με τους νόμους της κλασσικής μηχανικής και ο έλεγχος συγκρούσεων μεταξύ των επιμέρους σωμάτων σταθερής δομής (rigidbodies).
Στο κομμάτι input γίνεται ο έλεγχος των εισόδων του χρήστη από της συσκευές εισόδου ( πληκτρολόγιο, ποντίκι ).
Στο κομμάτι script ενσωματώνεται η δυνατότητα να εκτελούνται σενάρια (scripts) της γλώσσας δέσμης ενεργειών από την Real Library. Ενώ το κομμάτι bind ορίζει την σύνταξη των εντολών κλήσης κλάσεων και συναρτήσεων της Real Library από σενάρια της γλώσσας δέσμης ενεργειών. Η Real Library είναι γραμμένη σε C++. Στην ουσία αυτά τα δύο κομμάτια επιτρέπουν την αμφίδρομη επικοινωνία μεταξύ C++ και Lua. Αν και φαίνεται ότι και τα δύο κομμάτια ασχολούνται με το ίδιο πράγμα στην ουσία η διαφορά είναι ότι στο script επιτυγχάνεται η επικοινωνία ενώ στο bind επιτυγχάνεται ο ορισμός νέων εντολών Lua.
Τέλος το κομμάτι base είναι υπεύθυνο να συνδιάσει όλα τα προηγούμενα κομμάτια κάτω από μία κοινή διεπαφή την οποία θα χρησιμοποιήσει ο χρήστης για να δημιουργήσει εφαρμογές. Είναι εκείνο το κομμάτι που τον ενδιαφέρει περισσότερο κυρίως αφού όλα τα υπόλοιπα είναι κατά κάποιο τρόπο ποιο εσωτερικά στοιχεία.

Ενσωματωμένες βιβλιοθήκες


Δημιουργία


Για να δημιουργηθεί ένας εικονικό τρισδιάστατο περιβάλλον σε υπολογιστή το οποίο να περιλαμβάνει γραφική απεικόνιση, ήχο και να υπάρχουν κανόνες εξομοίωσης φυσικής έπρεπε εμπλέξεις πολλές διαφορετικές βιβλιοθήκες. Η Real Library βασίζεται σε τέτοιες βιβλιοθήκες τις οποίες έχει ενσωματώσει και συνδυάσει κάτω από μία κοινή διεπαφή προγραμματισμού εφαρμογών (API). Κάθε μία από αυτές τις βιβλιοθήκες έχει τυλιχθεί ( wrap ). Έχει δημιουργηθεί δηλαδή μία διεπαφή που υλοποιείται από μια κλάση στην περίπτωση μας, η οποία ελέγχει τον τρόπο που επικοινωνεί με τα υπόλοιπα στοιχεία της Real Library.

Τα πλεονεκτήματα αυτού του τρόπου είναι ότι υπάρχει μια συνοχή στον πυρήνα της Real Library. Εάν βρεθεί κάποια καλύτερη βιβλιοθήκη από κάποια από τις ενσωματωμένες βιβλιοθήκες τότε πολύ εύκολα μπορεί να αντικατασταθεί χωρίς να υπάρχει αλλαγή στον τρόπο που θα συνεργάζεται με τις υπόλοιπες ενσωματωμένες.
Για παράδειγμα πριν ολοκληρωθεί η Alpha έκδοση της βιβλιοθήκης αντικαταστάθηκε η βιβλιοθήκη Bullet Physics engine με την Havok Physics and Animation.

Θα μπορούσε να υπάρχει επιλογή κατά την μεταγλώττιση της βιβλιοθήκης η οποία να χρησιμοποιεί την μία ή την άλλη. Δεν θεωρήθηκε όμως αναγκαίο.

Διεπαφή προγραμματισμού εφαρμογών


Στις γλώσσες αντικειμενοστραφούς προγραμματισμού, διεπαφή προγραμματισμού εφαρμογών ή application programming interface (API), συνήθως είναι η περιγραφή ενός συνόλου ορισμών κλάσεων και συναρτήσεων με συγκεκριμένη συμπεριφορά. Αυτή η αφηρημένη έννοια συνδέεται με την πρακτική εφαρμογή που παρέχεται από όλες τις δημόσιες μεθόδους των κλάσεων και επιπλέον στοιχεία προγραμματισμού που είναι διαθέσιμα όπως συναρτήσεις, μεταβλητές, απαριθμητές κα. Βέβαια υπάρχουν και στοιχεία εσωτερικά όπως κλάσεις που χρησιμοποιούνται μόνο από άλλες συγκεκριμένες κλάσεις κι όχι από τον χρήστη. Το API σε αυτήν την περίπτωση μπορεί να θεωρηθεί σαν το σύνολο των στοιχείων προγραμματισμού που είναι διαθέσιμα στον τελικό χρήστη. Αυτό σημαίνει ότι το API περιγράφει τον τρόπο με τον οποίο ο χρήστης αλληλεπιδρά με τα αντικείμενα που είναι διαθέσιμα.
Συνήθως το API είναι συγγενές με μια βιβλιοθήκη. Τότε περιγράφει την συμπεριφορά της βιβλιοθήκης καθώς η ίδια η βιβλιοθήκη είναι η πραγματική υλοποίηση αυτής της συμπεριφοράς. Ένα API μπορεί να παρέχει πολλές πολλαπλές υλοποιήσεις διαφορετικών βιβλιοθηκών οι οποίες μοιράζονται μια κοινή διεπαφή. 

Ενσωματωμένες βιβλιοθήκες


Η Real Library ονομάζει ενσωματωμένη βιβλιοθήκη κάθε βιβλιοθήκη κατασκευασμένη από τρίτους και έχει συμπεριληφθεί και χρησιμοποιηθεί σε αυτήν.
Σε αυτήν την έκδοση της χρησιμοποιεί τις εξής βιβλιοθήκες.

  • Irrlicht lightning fast realtime 3D engine
    Απεικόνιση γραφικών στην οθόνη.

  • Irrklang high level 3D audio engine / API
    Αναπαραγωγή ήχων από την συσκευή ήχου/ηχεία.

  • Havok Physics and Animation
    Εφαρμογή των νόμων της κλασσικής μηχανικής στο εικονικό περιβάλλον.

  • Lua
    Ενσωμάτωση δυνατότητας εκτέλεσης από γλώσσα δέσμης ενεργειών.

  • LuaBind
    Ορισμός της σύνταξης των εντολών της γλώσσα δέσμης ενεργειών για αυτήν την βιβλιοθήκη.
Επίσης χρησιμοποιεί την Boost Library αλλά όχι με τον τρόπο που αναφέρθηκε παραπάνω. Η LuaBind εξαρτάται από την Boost κι η Real Engine από την LuaBind.

Alpha Release Build 19

H Real Library είναι ένα σύνολο κλάσεων και συναρτήσεων για την γλώσσα C++ για λύσεις σε εφαρμογές εικονικής πραγματικότητας.

Μπορείτε να κατεβάσετε την Alpha Release στην σελίδα Download.

Σύντομα θα υπάρχουν παραδείγματα ή κάποιο tutorial για το πως να την χρησιμοποιήσετε!!!

Monday, January 21, 2013

Havok's Visual Debugger

Τι είναι ο Visual Debugger

Το Visual Debugger είναι ένα εργαλείο που δημιούργησε η εταιρεία Havok για το πακέτο βιβλιοθηκών Havok Physics and Animation. O Visual Debugger συνδέεται από έναν υπολογιστή ο οποίος λειτουργεί ως πελάτης κατευθείαν με την εφαρμογή που τρέχει σε έναν υπολογιστή που λειτουργεί ως σέρβερ. Εμφανίζει σε πραγματικό χρόνο την εξομοίωσης φυσικής της ενεργής εφαρμογής, με τρισδιάστατα γραφικά, η οποία εμπλέκει την Havok Physics and Animation. Αυτή η τρισδιάστατη γραφική αναπαράσταση μπορεί να θεαθεί σε πραγματικό χρόνο ή να  αποθηκευτεί σε αρχείο για μελλοντική ανάλυση. Η αποθήκευση σε αρχείο μπορεί να χρησιμοποιηθεί για να μελετηθεί από οποιονδήποτε χωρίς να χρειάζεται να ξανατρέξει η εφαρμογή. Η ικανότητα να βλέπεις το κομμάτι της φυσικής ανεξάρτητα από το κομμάτι των γραφικών μιάς εφαρμογής κάνει ευκολότερη την εύρεση και επίλυση προβλημάτων μεταξύ του προγραμματιστικού και του σχεδιαστικού μέρους. Επιπλέον ο Visual Debugger προσφέρει στατιστικά στοιχεία, τα οποία μπορούν να καταγραφούν, για χρόνους απόκρισης και για κατανομή ελεύθερης μνήμης της εφαρμογής. Ο Visual Debugger έχει υλοποιηθεί σύμφωνα με το μοντέλο πελάτη/εξυπηρετητή.  Σε ένα τοπικό δίκτυο μπορείται να έχετε πολλούς πελάτες Visual Debugger ταυτόχρονα.

Η εφαρμογή

Visual Debugger
Πρόγραμμα που χρησιμοποιεί το Havok Physics and Animation












Η εφαρμογή τρέχει σε Microsoft Windows XP/Vista/7. Βασίζεται στην τεχνολογία Direct3D, αλλά μπορεί να χρησιμοποιείσει και OpenGL εάν χρειαστεί. Η κύρια διαφορά μεταξύ αυτών των δύο είναι πως με το Direct3D υπάρχει όριο στις 65000 κορυφές τριγώνων ανά περιοχή προσωρινής αποθήκευσης (vertices per buffer), άρα μεγάλα αντικείμενα μπορεί να το περάσουν και να υπάρχει αστάθεια στην απεικόνηση. Από προεπιλογή ο VDB πρώτα θα προσπαθήσει να χρησιμοποιείσει DX 9.0c, έπειτα DX 8.1, και τέλος OpenGL.

Το περιβάλλον χρήστη είναι  πλήρως εξατομικεύσιμο και έχει αρκετά μέρη όπως παράθυρο θέασης γραφικών, μενού επιλογών, ρυθμιζόμενη γραμμή εργαλείων και ρυθμιζόμενης προσκόλλησης παράθυρα για απεικόνηση μηνυμάτων κονσόλας και στατιστικών πληροφοριών. Όλα τα αντικείμενα των μενού είναι πλήρως εξατομικεύσιμα από το μενού επιλογών Tools->Customize και τα κλειδιά που ελέγχουν την κίνηση από το μενού Edit->User Keys. Η ταχύτητα της κίνησης επίσης από Edit->Movement Speeds.