Τι είναι ένα αρχείο GLB;
Το GLB είναι η αναπαράσταση δυαδικής μορφής αρχείου τρισδιάστατων μοντέλων που είναι αποθηκευμένα στη Μορφή μετάδοσης GL (glTF). Πληροφορίες για τρισδιάστατα μοντέλα, όπως ιεραρχία κόμβων, κάμερες, υλικά, κινούμενα σχέδια και πλέγματα σε δυαδική μορφή. Αυτή η δυαδική μορφή αποθηκεύει το στοιχείο glTF (JSON, .bin και εικόνες) σε ένα δυαδικό blob. Αποφεύγει επίσης το ζήτημα της αύξησης του μεγέθους του αρχείου που συμβαίνει σε περίπτωση glTF. Η μορφή αρχείου GLB έχει ως αποτέλεσμα συμπαγή μεγέθη αρχείων, γρήγορη φόρτωση, πλήρη αναπαράσταση 3D σκηνής και επεκτασιμότητα για περαιτέρω ανάπτυξη. Η μορφή χρησιμοποιεί model/gltf-binary ως τύπο MIME.
Μορφή αρχείου GLB - Περισσότερες πληροφορίες
Οι μέθοδοι παράδοσης περιεχομένου που χρησιμοποιούνται από το glTF έχουν ως αποτέλεσμα επιπλέον επεξεργασία για την αποκωδικοποίηση των κωδικοποιημένων δυαδικών δεδομένων βάσης-64 και επίσης αυξάνει το μέγεθος του αρχείου κατά 33%. Αυτές οι μέθοδοι παράδοσης, οι οποίες συνέβαλαν στο σχηματισμό της μορφής αρχείου GLB, περιλαμβάνουν:
- Το glTF JSON δείχνει εξωτερικά δυαδικά δεδομένα (γεωμετρία, πλαίσια πλήκτρων, δέρματα) και εικόνες.
- Το glTF JSON ενσωματώνει δυαδικά δεδομένα με κωδικοποίηση base64 και εικόνες ενσωματωμένες χρησιμοποιώντας URI δεδομένων.
Το GLB ως μορφή κοντέινερ εισήχθη ως μορφή δυαδικού αρχείου για την αναπαράσταση του στοιχείου glTF σε ένα δυαδικό blob για να αποφευχθούν τα προβλήματα που προκαλούνται από το glTF. Μορφή αρχείου GLB προδιαγραφές θα πρέπει να αναφέρεται για οποιαδήποτε εφαρμογή αναγνώστη/συγγραφέα του ίδιου για την ανάπτυξη εφαρμογών .
Δομή αρχείου GLB
Η μορφή αρχείου GLB βασίζεται στο μικρό endian και η δομή του δείχνει ότι περιέχει:
- Ένα προοίμιο 12 byte, με τίτλο η κεφαλίδα.
- Ένα ή περισσότερα κομμάτια που περιέχουν περιεχόμενο JSON και δυαδικά δεδομένα.
Κεφαλίδα GLB
Η κεφαλίδα μορφής αρχείου GLB αποτελείται από τρεις εγγραφές 4 byte:
- uint32 magic - magic ισούται με 0x46546C67. Είναι ASCII string glTF και μπορεί να χρησιμοποιηθεί για την αναγνώριση δεδομένων ως Binary glTF
- Έκδοση uint32 - υποδεικνύει την έκδοση της μορφής κοντέινερ Binary glTF
- μήκος uin32 - το συνολικό μήκος του Binary glTF, συμπεριλαμβανομένης της κεφαλίδας και όλων των τμημάτων σε byte
Κομμάτια
Κάθε κομμάτι σε ένα αρχείο GLB έχει την ακόλουθη δομή:
uint32 | uint32 | ubyte[] |
---|---|---|
chunkLength | chunkType | chunkData |
chunkLength
- μήκος chunkData σε bytechunkType
- υποδεικνύει υποδεικνύει τον τύπο του κομματιούchunkData
- δυαδικό ωφέλιμο φορτίο κομματιού
όπου οι τύποι κομματιών είναι:
# | Τύπος κομματιού | ASCII | Περιγραφή | Εμφανίσεις |
---|---|---|---|---|
1. | 0x4E4F534A | JSON | Δομημένο περιεχόμενο JSON | 1 |
2. | 0x004E4942 | BIN | Δυαδική προσωρινή μνήμη | 0 ή 1 |
Η αρχή και το τέλος κάθε κομματιού πρέπει να ευθυγραμμίζονται με όριο 4 byte και για το σκοπό αυτό θα πρέπει να χρησιμοποιείται γέμιση.
Δομημένο περιεχόμενο JSON
Αυτό θα πρέπει να είναι το πρώτο κομμάτι του στοιχείου Binary glTF και επιτρέπει στην υλοποίηση να ανακτά σταδιακά πόρους από τα επόμενα κομμάτια. Αυτό παρέχει επίσης τη δυνατότητα ανάγνωσης μόνο ενός επιλεγμένου υποσυνόλου πόρων από ένα στοιχείο Binary glTF, όπως το πιο χονδροειδές LOD ενός πλέγματος. Προκειμένου να πληρούνται οι απαιτήσεις ευθυγράμμισης, αυτό το κομμάτι πρέπει να είναι γεμισμένο με χαρακτήρες διαστήματος (0x20).
Binary buffer
Αυτό το κομμάτι περιέχει το δυαδικό ωφέλιμο φορτίο για γεωμετρία, καρέ κλειδιών κινούμενων εικόνων, δέρματα και εικόνες. Θα πρέπει να είναι το δεύτερο κομμάτι του στοιχείου Binary glTF και πρέπει να είναι γεμάτο με μηδενικά στο τέλος (0x00) για να ικανοποιούνται οι απαιτήσεις ευθυγράμμισης.