Wednesday, May 6, 2015
Monday, March 4, 2013
Sunday, March 3, 2013
Saturday, March 2, 2013
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. )
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 |
- Tutorial 1 - Minimum
The minimum code to compile a real library program. - Tutorial 2 - Basic
A ball bouncing on the floor. - Tutorial 3 - Actor
Learn how to use the actor. Actor is the users character. - Tutorial 4 - Audio
Learn how to make a sound. - Tutorial 5 - Scripts
Learn how to gain access to the library from scripts.
initDevices.lua, items.lua, scene.lua, world.lua, update1.lua, update2.lua
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
Friday, January 25, 2013
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
Ορισμός της σύνταξης των εντολών της γλώσσα δέσμης ενεργειών για αυτήν την βιβλιοθήκη.
Alpha Release Build 19
H Real Library είναι ένα σύνολο κλάσεων και συναρτήσεων για την γλώσσα C++ για λύσεις σε εφαρμογές εικονικής πραγματικότητας.
Μπορείτε να κατεβάσετε την Alpha Release στην σελίδα Download.
Σύντομα θα υπάρχουν παραδείγματα ή κάποιο tutorial για το πως να την χρησιμοποιήσετε!!!
Monday, January 21, 2013
Havok's Visual Debugger
Τι είναι ο Visual Debugger
Η εφαρμογή
Η εφαρμογή τρέχει σε Microsoft Windows XP/Vista/7. Βασίζεται στην τεχνολογία Direct3D, αλλά μπορεί να χρησιμοποιείσει και OpenGL εάν χρειαστεί. Η κύρια διαφορά μεταξύ αυτών των δύο είναι πως με το Direct3D υπάρχει όριο στις 65000 κορυφές τριγώνων ανά περιοχή προσωρινής αποθήκευσης (vertices per buffer), άρα μεγάλα αντικείμενα μπορεί να το περάσουν και να υπάρχει αστάθεια στην απεικόνηση. Από προεπιλογή ο VDB πρώτα θα προσπαθήσει να χρησιμοποιείσει DX 9.0c, έπειτα DX 8.1, και τέλος OpenGL.
Το 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.