System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本申請涉及數據壓縮應用技術,具體涉及一種alembic三維動畫緩存文件壓縮方法及裝置。
技術介紹
1、三維動畫(3d動畫)是一種使用計算機圖形學技術創建的動畫形式。它通過模擬三維空間中的物體和場景,生成具有深度感和立體感的動態圖像,廣泛應用于電影、電視、廣告、游戲、虛擬現實(vr)和增強現實(ar)等領域。
2、目前,在三維動畫的制作過程中經常使用到alembic動畫緩存文件(指的是使用alembic格式存儲的動畫數據文件)。由于alembic格式的文件能夠完整地存儲動畫解算后的每一幀動畫數據的uv、法線、頂點以及面等信息,而復雜幾何體通常擁有數十萬甚至上百萬頂點的模型,所以alembic動畫緩存文件的存儲容量都非常大,導致數據存儲極為不便。
3、盡管可以使用通用壓縮軟件(例如:zip或rar)對alembic文件進行壓縮,但壓縮效果并不理想,壓縮率通常在30%到40%之間,這意味著文件的體積仍然相對較大。此外,這些壓縮軟件并沒有與3ds?max、maya、unreal?engine等主流3d制作軟件直接集成,導致在使用過程中存在一定的不便性。
技術實現思路
1、為此,本申請提供一種alembic三維動畫緩存文件壓縮方法及裝置,以解決現有技術存在的alembic緩存文件存儲容量大、壓縮率低的問題。
2、為了實現上述目的,本申請提供如下技術方案:
3、第一方面,一種alembic三維動畫緩存文件壓縮方法,包括:
4、步驟1:
5、步驟2:解析所述alembic三維動畫緩存文件,并獲取每個幾何體的每幀緩存數據;所述每個幾何體的每幀緩存數據包括二維數據和三維數據;
6、步驟3:分別調整所述二維數據和三維數據的存儲順序;
7、步驟4:對調整存儲順序后的所述二維數據和三維數據分別保留首幀值并逐個做減法計算,得到二維差值序列和三維差值序列;
8、步驟5:將所述二維差值序列和三維差值序列分別轉換為16位精度浮點數格式,得到優化后的二維差值序列和三維差值序列;
9、步驟6:將優化后的二維差值序列和三維差值序列對齊,并在剩余空位填0,得到新的二維數據和三維數據;
10、步驟7:將新的二維數據和三維數據進行壓縮,并寫入壓縮文件。
11、作為優選,步驟2中,所述二維數據和三維數據均為32位浮點類型數據。
12、作為優選,步驟2中,所述二維數據和三維數據包括uv、法線和頂點。
13、作為優選,步驟3中,調整所述二維數據和三維數據的存儲順序時:
14、所述二維數據的存儲順序由:
15、[(u1,v1),(u2,v2),(u3,v3),...]調整為:
16、所述三維數據的存儲順序由:
17、[(x1,y1,z1),(x2,y2,z2),(x3,y3,z3),...]調整為:
18、作為優選,步驟4中,所述二維數據的減法計算公式為:
19、dun=un+1-un,
20、dvn=vn+1-vn;
21、所述三維數據的減法計算公式為:
22、dxn=xn+1-xn,
23、dyn=yn+1-yn,
24、dzn=zn+1-zn。
25、作為優選,步驟7中,將新的二維數據和三維數據進行壓縮時采用7z壓縮算法。
26、第二方面,一種alembic三維動畫緩存文件壓縮裝置,包括:
27、數據獲取模塊,用于獲取alembic三維動畫緩存文件;
28、數據解析模塊,用于解析所述alembic三維動畫緩存文件,并獲取每個幾何體的每幀緩存數據;所述每個幾何體的每幀緩存數據包括二維數據和三維數據;
29、存儲順序調整模塊,用于分別調整所述二維數據和三維數據的存儲順序;
30、減法計算模塊,用于對調整存儲順序后的所述二維數據和三維數據分別保留首幀值并逐個做減法計算,得到二維差值序列和三維差值序列;
31、浮點數轉化模塊,用于將所述二維差值序列和三維差值序列分別轉換為16位精度浮點數格式,得到優化后的二維差值序列和三維差值序列;
32、數據對齊填充模塊,用于將優化后的二維差值序列和三維差值序列對齊,并在剩余空位填0,得到新的二維數據和三維數據;
33、壓縮模塊,用于將新的二維數據和三維數據進行壓縮,并寫入壓縮文件。
34、第三方面,一種alembic三維動畫緩存文件解壓縮方法,包括:
35、步驟1:獲取alembic三維動畫緩存文件的壓縮數據;
36、步驟2:解析所述壓縮數據,并獲取每個幾何體的每幀動畫的二維壓縮數據和三維壓縮數據;
37、步驟3:將所述二維壓縮數據和三維壓縮數據進行32位對齊,并獲取二維差值序列和三維差值序列;
38、步驟4:將所述二維差值序列和三維差值序列分別做加法計算,得到二維數據和三維數據;
39、步驟5:將所述二維數據和三維數據分別進行位置變換,得到原始二維數據和原始三維數據。
40、作為優選,步驟4中,所述二維數據的加法計算公式為:
41、un+1=un+dun,
42、vn+1=vn+dvn;
43、所述三維數據的加法計算公式為:
44、xn+1=xn+dxn,
45、yn+1=yn+dyn,
46、zn+1=zn+dzn。
47、第四方面,一種alembic三維動畫緩存文件解壓縮裝置,包括:
48、壓縮數據獲取模塊,用于獲取alembic三維動畫緩存文件的壓縮數據;
49、壓縮數據解析模塊,用于解析所述壓縮數據,并獲取每個幾何體的每幀動畫的二維壓縮數據和三維壓縮數據;
50、數據對齊模塊,用于將所述二維壓縮數據和三維壓縮數據進行32位對齊,并獲取二維差值序列和三維差值序列;
51、加法計算模塊,用于將所述二維差值序列和三維差值序列分別做加法計算,得到二維數據和三維數據;
52、位置變換模塊,用于將所述二維數據和三維數據分別進行位置變換,得到原始二維數據和原始三維數據。
53、相比現有技術,本申請至少具有以下有益效果:
54、本申請提供了一種alembic三維動畫緩存文件壓縮方法及裝置,包括:獲取alembic三維動畫緩存文件,并解析alembic三維動畫緩存文件,獲取每個幾何體的每幀緩存數據的二維數據和三維數據;調整二維數據和三維數據的存儲順序;對調整存儲順序后的二維數據和三維數據分別保留首幀值并逐個做減法計算,得到二維差值序列和三維差值序列;將二維差值序列和三維差值序列分別轉換為16位精度浮點數格式,得到優化后的二維差值序列和三維差值序列;將本文檔來自技高網...
【技術保護點】
1.一種Alembic三維動畫緩存文件壓縮方法,其特征在于,包括:
2.根據權利要求1所述的Alembic三維動畫緩存文件壓縮方法,其特征在于,步驟2中,所述二維數據和三維數據均為32位浮點類型數據。
3.根據權利要求2所述的Alembic三維動畫緩存文件壓縮方法,其特征在于,步驟2中,所述二維數據和三維數據包括UV、法線和頂點。
4.根據權利要求1所述的Alembic三維動畫緩存文件壓縮方法,其特征在于,步驟3中,調整所述二維數據和三維數據的存儲順序時:
5.根據權利要求4所述的Alembic三維動畫緩存文件壓縮方法,其特征在于,步驟4中,所述二維數據的減法計算公式為:
6.根據權利要求1所述的Alembic三維動畫緩存文件壓縮方法,其特征在于,步驟7中,將新的二維數據和三維數據進行壓縮時采用7z壓縮算法。
7.一種Alembic三維動畫緩存文件壓縮裝置,其特征在于,包括:
8.一種Alembic三維動畫緩存文件解壓縮方法,其特征在于,包括:
9.根據權利要求8所述的Alembic三
10.一種Alembic三維動畫緩存文件解壓縮裝置,其特征在于,包括:
...【技術特征摘要】
1.一種alembic三維動畫緩存文件壓縮方法,其特征在于,包括:
2.根據權利要求1所述的alembic三維動畫緩存文件壓縮方法,其特征在于,步驟2中,所述二維數據和三維數據均為32位浮點類型數據。
3.根據權利要求2所述的alembic三維動畫緩存文件壓縮方法,其特征在于,步驟2中,所述二維數據和三維數據包括uv、法線和頂點。
4.根據權利要求1所述的alembic三維動畫緩存文件壓縮方法,其特征在于,步驟3中,調整所述二維數據和三維數據的存儲順序時:
5.根據權利要求4所述的alembic三維動畫緩存文件壓縮方法,其特...
【專利技術屬性】
技術研發人員:錢曉宇,于斌,孫博文,高書濤,武雪飛,趙東升,
申請(專利權)人:君藝心北京文化傳媒有限公司,
類型:發明
國別省市:
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。