Genel Bakış #
CGeo, ağ verilerini depolamak için genişletilebilir bir dosya formatıdır. Proxy’ler uygulamak veya Corona render motorunu destekleyen uygulamalar arasında veri iletişimi sağlamak için kullanılabilir.
Bir CGeo dosyası, başlık ve veri olmak üzere iki ana bölümden oluşur. Tüm ikili veriler little-endian formatındadır.
Aşağıdaki dokümantasyonda, animasyon örneği ile animasyon anlık görüntüsü arasında ayrım yapmak önemlidir . Bir CGeo dosyasında saklanan nesne, bir dizi animasyon anlık görüntüsü olarak temsil edilir ve tek bir anlık görüntü , bir veya daha fazla animasyon örneğinden oluşur . Örnekler, anlık görüntüler arasındaki alt örnekleri temsil eder ve hareket bulanıklığı verilerini depolamak için kullanılabilir.
Genel Yerleşim Planı #
|
Bayt İndeksi |
Bayt Sayısı |
İçerik Açıklaması |
|---|
|
Bayt İndeksi |
Bayt Sayısı |
İçerik Açıklaması |
|---|---|---|
|
0 |
1 |
cgeo dosyasını gösteren ikili sihirli sayı 0x43 |
|
1 |
4 |
Aşağıda yer alan H başlığının boyutu, ikili 4 baytlık bir tamsayı olarak gösterilmiştir. |
|
5 |
H |
Başlığın insan tarafından okunabilir biçimi (aşağıdaki açıklamaya bakınız) |
|
5 + H |
Başlık tarafından belirlenir |
Veri bölümü |
Başlık #
Örnekle başlayalım:
Başlık düz metin halinde olduğundan, CGeo dosyasını bir metin düzenleyicide kolayca incelemek mümkündür. Başlık, şu biçimde saklanan verileri açıklayan özellikler içerir:
Her özellik kendi satırında olmalı ve satır ayırıcı olarak \n kullanılmalıdır. Başlık, keyfi sayıda özellik içerebilir, ancak zorunlu özellikler de vardır (aşağıda listelenmiştir). Özelliklerin yanı sıra, başlık keyfi metin de içerebilir. En azından dosyanın kaynağını belirtmek iyi bir fikirdir.
Zorunlu özelliklerin listesi #
|
İsim |
Tanım |
|---|
|
İsim |
Tanım |
|---|---|
|
“Sürüm” |
Şu anda Corona v2 için 7 adet mevcut . |
|
“Animasyon anlık görüntü sayısı” |
Veri bölümünde saklanan animasyon anlık görüntülerinin sayısı |
|
“Animasyon anlık görüntüsü başına geçen süre [mikrosaniye]” |
Adından da anlaşılacağı gibi |
|
“Animasyon zamanı başladı” |
Mikrosaniye cinsinden. Yükleme sırasında nesneyi zaman çizelgesinde doğru yere yerleştirmek için kullanılabilir. |
|
“Ölçek” |
Verilerin milimetre cinsinden saklanma ölçeği (örneğin, veriler santimetre cinsinden saklanıyorsa 10). Bilinmiyorsa 0. |
|
“Orijinal malzeme adı” |
Adından da anlaşılacağı gibi |
|
“Orijinal nesne adı” |
Adından da anlaşılacağı gibi |
|
“Sıkıştırılmış” |
{‘True’, ‘False’} değerlerinden biri olabilir. Karşılaştırma büyük/küçük harf duyarlılığı olmaksızın yapılır. ‘False’ belirtilirse, CGeo dosyasının hiçbir bölümü sıkıştırılmaz. Diğer durumlarda, veri bölümündeki tüm anlık görüntülerin bölümleri sıkıştırılır (aşağıya bakınız). Bu özellik 5. sürümde eklendi ve eksikse ‘True’ varsayılacaktır. Belgelerde herhangi bir noktada bir şeyin sıkıştırıldığı belirtiliyorsa, bu yalnızca bu özelliğin değeri ‘True’ ise geçerlidir. |
Veri Bölümü #
Veri bölümü, animasyonlu ağ anlık görüntülerinin yanı sıra sınırlayıcı kutular ve nokta bulutları gibi önceden hesaplanmış yardımcı verileri içerir. Yardımcı veriler genellikle geometri verilerinden daha az bellek alanı kaplar; bu da 3 boyutlu bir uygulamanın görüntüleme alanında bir proxy görüntülerken faydalı olabilir, çünkü diskten büyük miktarda veri okumak zorunda kalmayız. Biçim, animasyon anlık görüntü deposundaki her şeyin kendi bölümüne sahip olması şeklinde genişletilebilir. Tek zorunlu bölüm, geometri verilerini tutan bölümdür; diğer her şey eksik olabilir (ancak olmamalıdır) ve gerekirse anında hesaplanabilir. Amaç, uyumluluğu bozmadan gelecekte bölümler ekleyebilmektir.
Etiketler #
Etiketler, veri bölümündeki belirli olayları tanımlamak için kullanılır . Her etiket 4 baytlık bir tamsayıdır. Aşağıda şu anda kullanılan etiketlerin tablosu bulunmaktadır ve dokümantasyonun geri kalanında bunlara kimlik numaralarıyla atıfta bulunulacaktır.
|
Etiket Kimliği |
Etiket Değeri |
|---|
|
Etiket Kimliği |
Etiket Değeri |
|---|---|
|
TAG_ANIMATION_SNAPHOT_START |
0xA3CDEF00 |
|
TAG_ANIMATION_SNAPHOT_END |
0xFED3BA11 |
|
TAG_ANIM_TABLE_START |
0xFAD0CCA1 |
|
TAG_ANIM_TABLE_END |
0xE580AC23 |
|
TAG_BOUNDING_BOX |
0x2F89A8B5 |
|
TAG_MESH_DATA |
0x35F71EA8 |
|
TAG_MESH_VERTICES_END |
0x42C342CC |
|
TAG_MESH_NORMALS_END |
0xB00B06B0 |
|
TAG_MESH_MAP_COORDS_END |
0xCAAC04CA |
|
TAG_POINTCLOUD |
0x1387EBEB |
Düzen #
Aşağıda veri bölümünün yerleşim düzeninin açıklaması yer almaktadır.
|
Öğe |
Tanım |
|---|
|
Öğe |
Tanım |
|---|---|
|
Bayraklar |
Sıkıştırılmamış 4 baytlık bir tamsayı daha sonra açıklanacaktır. |
|
TAG_ANIM_TABLE_START |
|
|
Ofset Tablosu |
Sıkıştırılmamış ofset tablosu. Her animasyon anlık görüntüsü için bir giriş bulunur ve her giriş, dosyanın başından anlık görüntünün verilerinin başlangıcına kadar olan 8 baytlık ofsettir. |
|
TAG_ANIM_TABLE_END |
|
|
TAG_ANIMASYON_ANLIK_GÖRÜNTÜ_BAŞLANGICI |
Animasyon anlık görüntüsünün başlangıcını gösteren etiket. |
|
Bölümler |
Anlık görüntüye ait verileri içeren ayrı bölümler. Bunlar daha sonra açıklanacaktır. |
|
TAG_ANIMATION_SNAPSHOT_END |
Animasyon anlık görüntüsünün sonunu gösteren etiket. |
Lütfen (TAG_ANIMATION_SNAPSHOT_START, TAG_ANIMATION_SNAPSHOT_END) çiftinin animasyon anlık görüntüsü sayısı kadar tekrar görüneceğini unutmayın.
Bayraklar #
|
Biraz |
İsim |
Tanım |
|---|
|
Biraz |
İsim |
Tanım |
|---|---|---|
|
1 |
Topolojinin Değiştirilmesi |
Bu işaret, topolojinin anlık görüntüden anlık görüntüye değişebileceği için her animasyon anlık görüntüsünün kendi başına sıkıştırılmış olarak saklandığını gösterir. Bu işaret belirtilmezse, yalnızca ilk anlık görüntünün topolojik bilgi içermesi ve sonraki tüm anlık görüntülerin yalnızca ilk anlık görüntüden konum, normal ve doku koordinatlarının sıkıştırılmış farkları olarak saklanması beklenir. |
Bölümler #
Her anlık görüntü bir veya daha fazla bölümden oluşur ve ofset tablosunda saklanan ofset ilk bölüme işaret eder! Her bölüm 4 baytlık bir tanımlayıcı ve 8 baytlık bir bölüm boyutuyla başlar. Bölümler keyfi sırada olabilir ve gerekli olan tek bölüm geometrik verileri (TAG_MESH_DATA) içeren bölümdür. Yine de, belgelenmiş tüm bölümleri her animasyon anlık görüntüsünde saklamanız önerilir. Aşağıda, şu anda desteklenen tüm bölümlerin dokümantasyonu yer almaktadır.
Ağ Verileri – TAG_MESH_DATA #
Bu bölüm geometri verilerini içerir ve gerekli olan tek bölümdür. İlk anlık görüntü her zaman eksiksiz olarak (topoloji dahil) saklanır. İlk anlık görüntüyle aynı topolojiye sahip olan her sonraki anlık görüntü, ilk anlık görüntüden fark olarak saklanır; bu durumda daha iyi sıkıştırma beklenir. Bölümün tamamı sıkıştırılır.
Aşağıda, anlık görüntü tamamen kaydedildiğinde bölümün içeriğinin açıklaması yer almaktadır.
|
Öğe |
Tanım |
|---|
|
Öğe |
Tanım |
|---|---|
|
0x1 |
Bu, eksiksiz bir anlık görüntü olduğunu gösteren 0x1 değerinde 1 bayt. |
|
Köşe Sayısı |
4 baytlık tamsayı |
|
Normal Sayım |
4 baytlık tamsayı |
|
Harita Kanal Sayısı |
Eşleme kanalı sayısını gösteren 4 baytlık tamsayı. |
|
Üçgen Sayısı |
4 baytlık tamsayı |
|
Köşeler |
Her köşe, X, Y, Z’ye karşılık gelen 3 adet IEEE754 tek duyarlıklı kayan noktalı sayı ile temsil edilir. |
|
TAG_MESH_VERTICES_END |
|
|
Normaller |
Her normal, X, Y, Z’ye karşılık gelen 3 adet IEEE754 tek hassasiyetli kayan noktalı sayı ile temsil edilir. |
|
TAG_MESH_NORMALS_END |
|
|
Doku Koordinatları |
Tüm eşleme kanallarına ait veriler. Eşleme kanalı sayısı, Eşleme Koordinat Sayısı ile belirtilir . Her eşleme kanalının verisi, doku koordinatlarının sayısını ve ardından koordinatların kendilerini saklayan 4 baytlık bir tamsayı olarak verilir. Her koordinat, U, V ve W’ye karşılık gelen 3 adet IEEE754 tek hassasiyetli kayan noktalı sayı ile temsil edilir. |
|
TAG_MESH_MAP_COORDS_END |
|
|
Üçgen Verileri |
Aşağıda açıklanmıştır. |
Aşağıdaki tabloda, CGEO 7 ve üzeri sürümlerde (Corona v2 ve üzeri) tek bir üçgenin nasıl saklandığı açıklanmaktadır.
|
Öğe |
Tanım |
|---|
|
Öğe |
Tanım |
|---|---|
|
Köşe İndeksleri |
3 köşe indeksi. Her indeks 4 baytlık bir tamsayı olarak temsil edilir. |
|
Normal İndeksler |
3 normal indeks. Her indeks 4 baytlık bir tamsayı olarak temsil edilir. |
|
Harita Koordinatları İndeksleri |
Her eşleme kanalı için 3 indeks saklanır ve her indeks 4 baytlık bir tamsayı olarak temsil edilir. |
|
Malzeme Kimliği |
2 baytlık malzeme kimliği. |
|
Kenar Görünürlüğü |
1 baytlık bit kümesi. 0, 1, 2 bitleri AB, BC, CA kenarlarını temsil eder. Bir kenar için karşılık gelen bit ayarlandığında, kenar görünür hale gelir. |
Aşağıda, anlık görüntünün ilk görüntüden fark olarak saklandığı durumda bölümün içeriğinin açıklaması yer almaktadır.
|
Öğe |
Tanım |
|---|
|
Öğe |
Tanım |
|---|---|
|
0x0 |
0x0 değerinde 1 bayt, bunun ilk anlık görüntüden farklı olduğunu gösterir. |
|
Köşe Farklılıkları |
Her fark, X, Y, Z’ye karşılık gelen 3 adet IEEE754 tek duyarlıklı kayan noktalı sayı ile temsil edilir. |
|
TAG_MESH_VERTICES_END |
|
|
Normal Farklar |
Her fark, X, Y, Z’ye karşılık gelen 3 adet IEEE754 tek duyarlıklı kayan noktalı sayı ile temsil edilir. |
|
TAG_MESH_NORMALS_END |
|
|
Doku Koordinatı Farklılıkları |
Her fark, U, V ve W’ye karşılık gelen 3 adet IEEE754 tek hassasiyetli kayan noktalı sayı ile temsil edilir. Tüm harita kanalları için farklar daha sonra saklanır. Her kanal için fark sayısı, tamamen saklanan ilk anlık görüntü tarafından verilir. |
|
TAG_MESH_MAP_COORDS_END |
|
Sınır Kutusu – TAG_BOUNDING_BOX #
Anlık görüntünün sınırlayıcı kutusunu tanımlayan, sıkıştırılmış 6 adet IEEE754 tek duyarlıklı kayan noktalı sayı. Sıralama şu şekildedir: MinX, MinY, MinZ, MaxX, MaxY, MaxZ.
Nokta Bulutu – TAG_POINTCLOUD #
Bu bölüm, animasyon anlık görüntüsünü görüntüleme alanında görselleştirmek için kullanılabilecek nokta bulutunu içerir. Bölümün tamamı sıkıştırılmıştır ve şunları içerir:
|
Öğe |
Tanım |
|---|
|
Öğe |
Tanım |
|---|---|
|
Puan Sayısı |
Sonraki noktaların sayısını gösteren 8 baytlık işaretsiz tamsayı. |
|
Puanlar |
Her nokta, sırasıyla X, Y, Z koordinatlarına karşılık gelen 3 adet IEEE754 tek hassasiyetli kayan noktalı sayı ile temsil edilir. |
