乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      3dTiles 數(shù)據(jù)規(guī)范詳解[2] Tileset與Tile

       小世界的野孩子 2021-11-20

      轉(zhuǎn)載請聲明出處:全網(wǎng)@秋意正寒 https://www.cnblogs.com/onsummer/p/13128682.html

      一、一個(gè)簡單的3dTiles數(shù)據(jù)示例

      上圖是一份 3dTiles數(shù)據(jù)集在文件夾內(nèi)的樣子,層層打開可得以下特點(diǎn):

      • 入口文件是 tileset.json

      • 各級瓦片用文件夾(目錄)來組織

      3dTiles 數(shù)據(jù)目前的具體文件實(shí)現(xiàn),是一些零散的文件。

      數(shù)據(jù)集的名稱與所在文件夾的名稱并無關(guān)系,數(shù)據(jù)集的名稱寫在入口文件中。

      3dTiles至少有一個(gè) tileset.json 文件,作為整個(gè)數(shù)據(jù)集的入口。它是一個(gè) json 文件,描述了整個(gè)三維瓦片數(shù)據(jù)集,它記錄的是上一節(jié)提及的“邏輯信息”,還包括一些其他的元數(shù)據(jù)。而“屬性信息”、“嵌入的gltf模型” 則位于各個(gè)二進(jìn)制瓦片文件中,這些二進(jìn)制文件則由 tileset.json 中的瓦片中的 uri 來引用。

      瓦片是什么?

      瓦片,屋頂上的瓦片。古時(shí)候,蓋房子,屋頂不能一次澆筑完工,也沒有特定的“屋頂”零件,所以只好一片片瓦片蓋上去(我瞎掰的)。

      瓦片切割了三維數(shù)據(jù),允許三維數(shù)據(jù)進(jìn)行細(xì)分。我們都知道網(wǎng)速是有限的,在加載超大規(guī)模的三維模型數(shù)據(jù)時(shí),不可能把一個(gè)模型全部下載下來再渲染,那樣等待的時(shí)間太慢了,但是一點(diǎn)一點(diǎn)出現(xiàn),視野范圍外的“瓦片”則干脆就不下載、渲染,性能、視覺都有提高。這就是瓦片的設(shè)計(jì)優(yōu)點(diǎn)。

      傳統(tǒng)的二維地圖瓦片,叫做 WMTS 或 TMS,這個(gè) "T" 就是 Tile 的意思。

      現(xiàn)在,你只要知道,3dTiles就是把空間進(jìn)行切塊,每個(gè)塊叫做 “tile”,也即瓦片。至于怎么切的——待會介紹 tileset.json 時(shí),會隆重介紹樹結(jié)構(gòu)。

      瓦片只有兩種情況:葉子瓦片,非葉子瓦片。根瓦片也是非葉子瓦片。非葉子瓦片和葉子瓦片有什么區(qū)別呢?主要就是葉子瓦片不會再有孩子了(樹結(jié)構(gòu)的知識哈,不懂的建議去學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)中的樹)。

      瓦片包含什么內(nèi)容呢?本篇稍微靠后再仔細(xì)了解瓦片。

      現(xiàn)在,我們先認(rèn)識一下,描述整個(gè) 3dTiles 數(shù)據(jù)集的入口文件,也叫做三維瓦片數(shù)據(jù)集 —— tileset.json:

      二、Tileset——(三維)瓦片數(shù)據(jù)集

      通常,一個(gè)三維瓦片數(shù)據(jù)集(之后簡稱:一個(gè)3dtiles數(shù)據(jù))的入口就是那個(gè)”tileset.json“,至于這個(gè)文件的名稱可不可以改,暫時(shí)未作測試。

      現(xiàn)在,我們先來研究研究 這個(gè)入口文件記錄了哪些信息,拿一份最簡單的 3dtiles數(shù)據(jù)來舉例,該數(shù)據(jù)只有一個(gè)根瓦片(root),根瓦片再無子瓦片。

      root對象中有一個(gè)content,內(nèi)有uri屬性,其就記錄了根瓦片的二進(jìn)制數(shù)據(jù)文件的URL,這個(gè)URL是個(gè)相對路徑,相對于 tileset.json 文件。

      ① 頂級屬性概覽

      通過上面介紹,3dTiles數(shù)據(jù)的入口文件是一個(gè)名叫 tileset.json 的文件,而通常來說,這個(gè)json必須存在以下幾個(gè)頂級對象:

      • asset

      • root

      • geometricError

      由于本人學(xué)識有限,目前不太清楚 geometricError 的精確含義,只知道這個(gè)數(shù)值的大小能控制 LOD 的顯示隱藏,且這個(gè)數(shù)值父級瓦片一定比子級瓦片大。

      asset 對象,記錄了整個(gè)數(shù)據(jù)集的聲明和歸屬數(shù)據(jù),類似于數(shù)據(jù)聲明,能在此寫入 versiontilesetVersion 等屬性,當(dāng)然也可以像上方的例子一樣,寫入生成工具、gltf朝向等信息。

      root 對象,即這個(gè)數(shù)據(jù)集的根瓦片,每個(gè)3dTiles數(shù)據(jù)集必須有一個(gè) root 對象。

      至于 tileset.json 中其他的頂級對象,請查閱官方文檔:點(diǎn)我

      ② root瓦片及其children

      樹結(jié)構(gòu)對于三維空間數(shù)據(jù)的組織有很大的優(yōu)勢。3dTiles在空間上允許數(shù)據(jù)集使用如下幾種樹結(jié)構(gòu):

      • 四叉樹

      • 八叉樹

      • KD樹

      • 格網(wǎng)結(jié)構(gòu)

      四叉樹允許使用傳統(tǒng)的均勻四叉樹,也允許使用松散四叉樹等變種(例如,允許子節(jié)點(diǎn),即子瓦片允許存在空間范圍重疊)。

      上圖為兩個(gè)子瓦片在空間上存在部分重疊,照顧到了建筑物不可能嚴(yán)格切分的特點(diǎn)。

      四叉樹對在高度上不太好切分的數(shù)據(jù)比較適合,而如果追求極致的空間分割和分級(例如點(diǎn)云數(shù)據(jù)),那么八叉樹更合適。

      八叉樹也允許使用各種變種。

      kd樹比較難理解,在此不作展開,這也是一種有趣的空間結(jié)構(gòu)分割的數(shù)據(jù)結(jié)構(gòu)。

      格網(wǎng)結(jié)構(gòu)的樹允許瓦片存在多個(gè)子瓦片:

      通常出現(xiàn)在傾斜攝影數(shù)據(jù)上,但是這會導(dǎo)致網(wǎng)絡(luò)請求過多的問題。

      ③ 坐標(biāo)系統(tǒng)

      我們可以用簡單的兩位數(shù)、三位數(shù):經(jīng)緯度,還有一個(gè)高度來標(biāo)識地球表面附近的任何一個(gè)點(diǎn)。經(jīng)緯度的范圍不超過三位數(shù),而用米作單位的空間直角坐標(biāo)系來描繪地球,數(shù)字太大,不好記憶。

      在GIS中,WGS84就是一個(gè)用經(jīng)緯度來標(biāo)識空間坐標(biāo)的“地理坐標(biāo)系,Geographic Coordinate System”。

      由于歷史上對地球測量的技術(shù)不同,科學(xué)家制造了多個(gè)長半軸短半軸不太一樣的“橢球”,來模擬地球的形狀。目前,最具代表性的就是兩個(gè)以地球質(zhì)心為中心的橢球體:

      • WGS84橢球體

      • 中國國家2000橢球體(即CGCS2000)

      基于橢球體,我們允許有多種不同的坐標(biāo)系定義,WGS84坐標(biāo)系其實(shí)并不太嚴(yán)謹(jǐn)?;赪GS84橢球(長短半軸等信息自行查詢哈),可以使用球面坐標(biāo)度量,即經(jīng)緯度,還有一個(gè)從質(zhì)心射向橢球面上的點(diǎn)的“橢球高度”射線,來記錄第三維高度數(shù)據(jù)。

      介紹了那么多,3dTiles其實(shí)采用的是WGS84橢球,但是并未采用經(jīng)緯度記錄數(shù)據(jù):因?yàn)橄鄬τ诰?xì)三維模型來說,經(jīng)緯度不足以提供足夠精確的空間分割(要照顧圖形顯示問題)。所以,同樣是那個(gè)形狀,3dTiles使用了同一個(gè)WGS84橢球,但是更方便計(jì)算的坐標(biāo):空間直角坐標(biāo)。

      用經(jīng)緯度記錄數(shù)據(jù)的WGS84坐標(biāo)系,WKID是4326,用地心為坐標(biāo)原點(diǎn)的空間直角坐標(biāo)來記錄數(shù)據(jù)的坐標(biāo)系,WKID是4979.

      3dTiles 用的就是4979坐標(biāo)系。

      三、Tile——構(gòu)成3dtiles的成員:瓦片

      通常,瓦片對象會引用一個(gè)二進(jìn)制的瓦片數(shù)據(jù)文件(也有例外,往下拉一點(diǎn)會說):

      在1.0 版本的規(guī)范中,瓦片所引用的二進(jìn)制的瓦片數(shù)據(jù)文件,有四種類型:

      類型英文名稱文件后綴名
      批量三維模型Batch 3D Modelb3dm
      實(shí)例三維模型Instance 3D Modeli3dm
      點(diǎn)云PointCloudpnts
      復(fù)合模型Componentcmpt

      這些不同的瓦片對應(yīng)了些什么數(shù)據(jù)呢?本篇只貼一張各種數(shù)據(jù)類型的截圖和信息對比表:

      瓦片類型對應(yīng)實(shí)際數(shù)據(jù)
      b3dm傳統(tǒng)三維建模數(shù)據(jù)、BIM數(shù)據(jù)、傾斜攝影數(shù)據(jù)
      i3dm一個(gè)模型多次渲染的數(shù)據(jù),燈塔、樹木、椅子等
      pnts點(diǎn)云數(shù)據(jù)
      cmpt前三種數(shù)據(jù)的復(fù)合(允許一個(gè)cmpt文件內(nèi)嵌多個(gè)其他類型的瓦片)

      關(guān)于這些二進(jìn)制瓦片數(shù)據(jù)文件的數(shù)據(jù)結(jié)構(gòu)如何,下一篇開始會詳細(xì)展開。

      現(xiàn)在,我們關(guān)注一下,瓦片對象的職能,也就是,它記錄了啥信息:

      這是一個(gè)children下的第一個(gè)瓦片,觀察不難得知,與root瓦片其實(shí)在屬性上長得一模一樣。

      瓦片對象都有如下屬性:

      • boundingVolume:空間范圍框,允許有box、sphere、region三種范圍框,但是只能定義一種

      • geometricError:幾何誤差

      • content:瓦片內(nèi)容,uri屬性引用二進(jìn)制瓦片數(shù)據(jù)文件。

      • 其他屬性:viewerRequestVolume、transform

      沒錯(cuò),瓦片對象記錄的就是瓦片的元數(shù)據(jù),真正瓦片的本體數(shù)據(jù)在content所引用的二進(jìn)制文件中。

      瓦片還可以再引用 3dTiles 數(shù)據(jù)集!

      我一再強(qiáng)調(diào)3dTiles十分靈活。

      Tile不僅僅可以在其uri屬性中引用 諸如 .b3dm、.i3dm.pnts等二進(jìn)制瓦片數(shù)據(jù)文件,還可以再引用一個(gè) 3dTiles!

      這是一份從osgb傾斜攝影數(shù)據(jù)轉(zhuǎn)換而來的3dtiles數(shù)據(jù),清晰可見在root瓦片的第一個(gè)child瓦片中,引用了另外一個(gè)json文件。這證明了兩件事:

      • 3dTiles的文件名可以不是tileset.json

      • 3dTiles允許套娃

      原則上,只要被引用的子一級3dtiles 不循環(huán)引用父級3dtiles,那么就OK(規(guī)范如是說)。

      它真的很靈活!


      下一節(jié)將展示二進(jìn)制瓦片文件中的至關(guān)重要的一部分:兩大數(shù)據(jù)表。

        本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多