本發(fā)明涉及一種壓縮算法,具體是一種基于浮點數(shù)情況的web3d數(shù)據(jù)壓縮算法。
背景技術(shù):
數(shù)據(jù)壓縮是指在不丟失有用信息的前提下,縮減數(shù)據(jù)量以減少存儲空間,提高其傳輸、存儲和處理效率,或按照一定的算法對數(shù)據(jù)進行重新組織,減少數(shù)據(jù)的冗余和存儲的空間的一種技術(shù)方法。
在計算機科學和信息論中,數(shù)據(jù)壓縮或者源編碼是按照特定的編碼機制用比未經(jīng)編碼少的數(shù)據(jù)位元(或者其它信息相關(guān)的單位)表示信息的過程。一種流行的壓縮實例是許多計算機都在使用的zip文件格式,它不僅僅提供了壓縮的功能,而且還作為歸檔工具(archiver)使用,能夠?qū)⒃S多文件存儲到同一個文件中。
zip,是一個計算機文件的壓縮的算法,發(fā)明者為菲利普·卡茲(philkatz)),他于1989年1月公布了該格式的資料。zip通常使用后綴名".zip",它的mime格式為application/zip。zip是一個字節(jié)為一個單位,相同字節(jié)要大于3字節(jié)才會記錄dis,zip是距離+長度來表示。
技術(shù)實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于浮點數(shù)情況的web3d數(shù)據(jù)壓縮算法,以解決上述背景技術(shù)中提出的問題。
為實現(xiàn)上述目的,本發(fā)明提供如下技術(shù)方案:
一種基于浮點數(shù)情況的web3d數(shù)據(jù)壓縮算法,包括以下步驟:
(1)將3d格式文件導入到web3d平臺編輯器中;
(2)編輯器內(nèi)部自動將其3d格式的數(shù)據(jù)提取出來;
(3)webgl浮點數(shù)占4字節(jié)32位,壓縮區(qū)域取32kb;
(4)從0開始在32kb范圍內(nèi)查找相同數(shù)據(jù),依次遞增;
(5)如有相同,則記錄當前數(shù)據(jù)和上一個數(shù)據(jù)的之間的距離dis,如果沒有重復,則記錄tiger;
(6)遍歷后得到dis數(shù)據(jù)塊,再對dis數(shù)據(jù)塊做霍夫曼編碼,即按照出現(xiàn)最多最短;
(7)最后再對數(shù)據(jù)碼表,dis碼表和tiger再次做霍夫曼編碼;
(8)解壓,取得碼表,按照霍夫曼還原出元數(shù)據(jù)碼表和dis塊,在用霍夫曼解碼出所有原數(shù)據(jù)進行3d渲染。
作為本發(fā)明進一步的方案:步驟(2)中所述數(shù)據(jù)包括頂點、法線、面、uv和動畫。
與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果是:本發(fā)明比autodesk輕量化瀏覽使用的壓縮方式壓縮比率高,比zip壓縮力度大,本發(fā)明是4字節(jié)為一個單位,省去長度,因為規(guī)定了4字節(jié),節(jié)省了長度的編碼。
具體實施方式
下面將結(jié)合本發(fā)明實施例,對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
本發(fā)明實施例中,一種基于浮點數(shù)情況的web3d數(shù)據(jù)壓縮算法,包括以下步驟:
(1)將3d格式文件導入到web3d平臺編輯器中;
(2)編輯器內(nèi)部自動將其3d格式的數(shù)據(jù)(頂點、法線、面、uv、動畫)提取出來;
(3)webgl浮點數(shù)一般占4字節(jié)(32位),我們壓縮區(qū)域取32kb;
(4)從0開始在32kb范圍內(nèi)查找相同數(shù)據(jù),依次遞增;
(5)如有相同,則記錄當前數(shù)據(jù)和上一個數(shù)據(jù)的之間的距離dis,如果沒有重復,則記錄tiger(未命中);
(6)遍歷后得到dis數(shù)據(jù)塊,再對dis數(shù)據(jù)塊做霍夫曼編碼,即按照出現(xiàn)最多最短;
(7)最后再對數(shù)據(jù)碼表,dis碼表和tiger再次做霍夫曼編碼;
(8)解壓,取得碼表,按照霍夫曼還原出元數(shù)據(jù)碼表和dis塊,在用霍夫曼解碼出所有原數(shù)據(jù)進行3d渲染。
本發(fā)明比autodesk輕量化瀏覽使用的壓縮方式壓縮比率高,比zip壓縮力度大,本發(fā)明是4字節(jié)為一個單位,省去長度,因為規(guī)定了4字節(jié),節(jié)省了長度的編碼。
對于本領(lǐng)域技術(shù)人員而言,顯然本發(fā)明不限于上述示范性實施例的細節(jié),而且在不背離本發(fā)明的精神或基本特征的情況下,能夠以其他的具體形式實現(xiàn)本發(fā)明。因此,無論從哪一點來看,均應將實施例看作是示范性的,而且是非限制性的,本發(fā)明的范圍由所附權(quán)利要求而不是上述說明限定,因此旨在將落在權(quán)利要求的等同要件的含義和范圍內(nèi)的所有變化囊括在本發(fā)明內(nèi)。
此外,應當理解,雖然本說明書按照實施方式加以描述,但并非每個實施方式僅包含一個獨立的技術(shù)方案,說明書的這種敘述方式僅僅是為清楚起見,本領(lǐng)域技術(shù)人員應當將說明書作為一個整體,各實施例中的技術(shù)方案也可以經(jīng)適當組合,形成本領(lǐng)域技術(shù)人員可以理解的其他實施方式。