Ήρθε η ώρα να πω τις σκέψεις μου για το unlimited reality technology. Παντού στο internet συζητούνε για αυτό και γενικώς η στάση του κόσμου ήταν περισσότερο αρνητική. Ένας λόγος είναι και το στυλ του δημιουργού όπως το παρουσιάζει. Extreme hype του στυλ τάχα μου βρήκαμε το άγιο δισκοπότηρο και θα ακυρώσουμε όλη τη γενιά των πολυγονικών γραφικών και του 3d hardware acceleration, ρηχή παρουσιάση που σε σημεία κάνει να γελάει όποιον ξέρει κάτι παρά πάνω από graphics algorithms, γενικά προσπαθεί να τραβήξει τα βλέμματα πάνω του μπας και τον προσέξουν και πάρει καμιά χρηματοδήτηση (πήρε από την κυβέρνηση της Αυστραλίας τελικά). Αυτό γενικώς είναι το στυλ που κάνει πολύ κόσμο να είναι σνομπ και αρνητικός και να νομίζει ότι πρόκειται για scam.
Εγώ προσωπικά πιστεύω πως είναι αληθινό. Αν και γέλασα και εγώ με κάποιες ορολογίες και επεξηγήσεις στις παρουσιάσεις του προσωπικά δεν με νοιάζει. Ίσως και να θέλω να πιστέψω γιατί μου αρέσουν πολύ οι εναλακτικές τεχνολογίες 3d που δεν συνηθίζουμε να βλέπουμε παρά μόνο σε demos, όπως voxels, raytracing, κλπ. Θα ήθελα να το δω. Εγώ το βλέπω περισσότερο σαν demo και όχι σαν κάτι που θα μπορούσε εύκολα να χρησιμοποιηθεί σε παιχνίδια. Αναφέρθηκε το πρόβλημα του animation και όντως είναι ένα δύσκολο (ίσως άλυτο ακόμα) πρόβλημα στον τομέα των voxels. Τουλάχιστον το animation με τα παλιά keyframing tools που δουλεύει καλύτερα με πολυγωνικούς χαρακτήρες. Ίσως ένα 3d sprite από voxels να μπορείς να το περιστρέψεις ή να το κάνεις scale αλλά πως θα εφαρμόσεις sceletal animation πάνω του; Αυτά τα voxels συνήθως για να optimαριστούν είναι αποθηκευμένα σε στατικά δέντρα ώστε να μην χρειάζεται να περάσεις από όλον τον αριθμό των voxels καθώς αποφασίζεις τι χρώμα θα βάψεις το επόμενο pixel. Δύσκολο να κάνεις animation που αλλοιώνει αυτή τη δενδροδομή.
Και για να πω και κάτι που ξέχασα, από όσο νομίζω η engine δεν βασίζεται σε voxels αλλά σε κάτι παραπλήσιο. 3D Point clouds. Απλώς αυτό με το animation και ότι έχω πει ενδέχεται να είναι πρόβλημα και για αυτή τη μορφή δεδομένων. Λοιπόν, ενώ τα voxels είναι σαν 3d μόρια ας πούμε στοιχισμένα σε ένα grid, τα 3d point clouds είναι 3d μόρια/σημεία με πιο άτακτη διάταξη. Αυτά είναι δεδομένα που συνήθως διαβάζονται από 3d scanners. Παρατηρείστε το αγαλματίδιο του ελέφαντα στο video. Σε μια σκηνή δείχνει πολλά πυκνά 3d dots σε όλη την επιφάνεια του αγάλματος. Αυτά είναι τα point clouds. Μια διαφορά με τα voxels είναι ότι τα τελευταία θα είχαν 3d δεδομένα και εντώς της επιφάνειας του αγάλματος, δηλαδή θα μπορούς να το έσκαβες και να έβρισκες και άλλη ύλη. Αυτό ίσως να γίνεται και με τα 3d point clouds βέβαια αλλά δεν χρειάζεται εσωτερικά σημεία για να λειτουργήσουν. Λοιπόν για να αποφύγουμε παρεξηγήσεις, παίζει στην τελευταία παρουσίαση να μίλησε για voxels, αλλά μπορεί να το έκανε για το hype, επειδή είναι πιο catchy word, αν και δεν αποκλείεται αυτή η engine να μπορούσε να συνδιάσει και τα δύο. Αλλά στην παλιότερη παρουσίαση του και σε κάποια forum συζητήσεων είχε μιλήσει για point clouds rendering.
Συγκεκριμένα είχε μάλιστα αναφερθεί πως η engine του βγάζει 20fps σε 1024*768 και μάλιστα με CPU rendering. Αρχικά δεν είχε σκοπό να χρησιμοποιήσει 3d acceleration. Τώρα σκέφτονται βέβαια πως να υποστηρίξουν OpenCL ή Cuda. Αν βγάζει τόσα με CPU rendering θα είναι ενδιαφέρον τι μπορεί να γίνει με χρήση της παραλληλίας. Είναι εντυπωσιακό πως αυτή η λεπτομέρια τρέχει σε CPU αλλά πιστεύω πως είναι εφικτό. Να σημειώσω πως η τεχνολογία δεν είναι καινούρια, point cloud rendering μελετούν τόσα χρόνια πανεπιστήμια, απλώς δεν τόλμισαν να τα αγγίξουν οι game developers γιατί μια χαρά και όμορφα έκανες και τη δουλειά σου με πολύγωνα (Οπότε πολλοί λένε πως το hype είναι άκυρο, δεν ανακάλυψε ο τύπος κάτι καινούριο, απλώς κανένας δεν ασχολήθηκε σοβαρά για εμπορικές εφαρμογές).
Λοιπόν, όταν βλέπεις τόσα δισεκατομύρια σημεία λες, μα πως είναι δυνατόν, ακόμα και η GPU θα ζοριζόταν να τα περιστρέψει όλα αυτά. Θα πω με λίγα λόγια τι γίνεται, από ότι άκουσα και από τον ίδιο το δημιουργό σε ένα forum, είναι και γνωστή τεχνική και στα voxels. Έχοντας κατασκευάσει δενδροδιαγράμματα με όλα αυτά τα δεδομένα από πριν, μπορείς για το κάθε pixel που θα γράψεις να κάνεις κάποιου είδους search στην δενδροδομή και να περάσεις μόνο από ελάχιστο αριθμό σημείων από τα δισεκατομύρια για να αποφανθείς πως όντως εκείνο το pixel είναι πιο κοντά στην τάδε ομάδα σημείων που ορίζουν μια επιφάνεια οπότε θα το βάψουμε αναλόγως. Έτσι το καταλαβαίνω όπως το είχε εξηγήσει. Υπάρχει σχετικά αντίστοιχη τεχνική και στα voxels για να μειώνεις το ψάξιμο για το αν μια ακτίνα χτύπησε κάποιο μη κενό voxel. Τώρα πως ακριβώς δεν ξέρω γιατί με point cloud rendering δεν έχω ασχοληθεί.
Όσον αφορά το που χωράνε όλα αυτά τα σημεία, θα θέλαμε terrabytes λένε, όντως. Αλλά αν προσέξετε όλες οι παρουσιάσεις του κάνουν instancing τα ίδια objects που είναι όλα alligned κάθετα μεταξύ τους. Δηλαδή, βλέπεις τα ίδια αντικείμενα επαναλαμβανόμενα πάρα πολλές φορές και στοιχισμένα να κοιτάνε στην ίδια γωνία. Εκείνη η παρουσίαση με τα πυραμιδοτά αγάλματα ας πούμε, έχουν αποθηκευμένα μια φορά τα σημεία ενός αγάλματος και τα υπόλοιπα αναφέρονται στα ίδια σημεία ξανά και ξανά. Πολλοί κοροϊδεύουν και λένε μούφες unlimited technology. Πως γίνεται unlimited αφού θα χρειαζόταν και unlimited memory. Αυτά πολύ απλά είναι κομμάτια του hype.
Το θέμα είναι πως φαίνεται εφικτό, και σε CPU, απλώς είναι ένα μεγάλο ερώτημα αν αυτό θα έχει εφαρμογή σήμερα. Ίσως σε τίποτα 3d platform retro games με νέα αισθητική. Λέγαμα πως δεν είναι εφικτό το skeletal animation, αλλά είναι εφικτό να έχεις ας πούμε ένα τέρας όπου θα φτιάχνεται από διαφορετικά κομμάτια από point cloud data, για κάθε χέρι, πόδι, κλπ και αυτά θα μπορούν ανεξάρτητα να κάνουν rotate. Θυμάστε κάτι τελικούς στα castlevania games σε GBA/NDS που φαινόταν ότι χρησιμοποιούσε τις hardware zoom/rotate δυνατότητες για να περιστρέψει ξεχωριστά μέλη του σώματος που ήταν ξεχωριστά sprites. Εεε εδώ θα είναι σαν 3d sprites. Δεν ξέρω βέβαια αν θα φαίνεται τόσο καλό, για retro game με 3d pixel αισθητική ίσως να είναι. Αυτό θα ήθελα να το δω. Προσωπικά δεν με νοιάζει να δω παιχνίδια τύπου FPS με αυτήν την τεχνολογία αλλά κάτι διαφορετικό (RTS μπορεί επίσης, νομίζω είχαν χρησιμοποιηθεί μικρά voxel based units σε κάποιο red alert, επίσης δείτε
που μου θυμίζει RTS οπτική).
Ένα πράγμα που θα μας πείσει πάλι είναι ένα realtime tech demo και λένε πως ετοιμάζεται. Πολλοί δύσπιστοι περιμένουν για αυτό. Θα μπορούσαν τα βίντεο να μην είναι 20fps αλλά 20spf (seconds per frame

και να αναπαράγουν τα frames αργότερα σε μια "κανονική" ταχύτητα. Binary or it didn't happened as they say
Ααα όσον αφορά τις γενιές στα γραφικά. Εγώ μπορώ να ξεχωρίσω στα 3d τέσσερις διαφορετικές σχολές. Πολύγωνα, raytracing, voxels και point cloud rendering. Τώρα ποια είναι πρώτη και ποιά 8η;;; Μάλλον δεν παίζει. Πρακτικά περάσαμε από τα 2d στα 3d polygons και τα voxels παίζανε κάπου ενδιάμεσα για ελάχιστες εξαιρέσεις (Θυμάστε το Outcast; Ή πολύ παλαιότερα το Commanche

. Μετά επικρατήσαν περίσσότερο τα πολύγωνα με τις 3d κάρτες και τα άλλα ξεχαστήκαν μέχρι να έρθουν στο προσκήνιο με της σημερινές κάρτες και τις shader capabilities. Και πάλι βέβαια από πίσω παραμένουν λόγω σκεπτικισμού αλλά και επειδή ακόμα το software τα καταφέρνει πολύ καλύτερα με τα πολύγωνα. Επίσης πολλοί λένε πως το μέλλον δεν θα είναι απαραίτητα μια από αυτές τις τεχνολογίες αλλά η συγχώνευση τους. Υπάρχουν και υπήρχαν engines που συνδιάζουν voxel objects με πολυγωνικά τοπία. Όπως και διάφορα εφφέ που γίνονται καλύτερα με voxels σε limited space (π.χ. fluid dynamics smoke effects). Υπάρχουν περιπτώσεις που π.χ. raytracing μπορεί να χρησιμοποιηθεί για να επιταχύνει κάποιον αλγόριθμο σε polygon space. Είναι όλες τους ενδιαφέρουσες τεχνικές που βοηθάνε η καθεμία τους με τον τρόπο της στην ανάλογη περίπτωση.
Αυτά τα ολίγα. Άμα είπα καμιά βλακεία διορθώστε με
