CN105931279B - 一种三维模型数据压缩方法及系统 - Google Patents
一种三维模型数据压缩方法及系统 Download PDFInfo
- Publication number
- CN105931279B CN105931279B CN201610240410.2A CN201610240410A CN105931279B CN 105931279 B CN105931279 B CN 105931279B CN 201610240410 A CN201610240410 A CN 201610240410A CN 105931279 B CN105931279 B CN 105931279B
- Authority
- CN
- China
- Prior art keywords
- low
- bit data
- figures
- data
- coordinate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T9/00—Image coding
- G06T9/005—Statistical coding, e.g. Huffman, run length coding
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Computer Graphics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明具体涉及一种三维模型数据压缩方法及系统,该方法包括:将待压缩三维模型数据中各浮点型的顶点坐标拆分为高八位数据和低二十四位数据;分别将所述高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;将待压缩三维模型数据中的第一个索引值作为基准值,计算除第N个索引值外相对于第N‑1个索引值的偏移量,其中,所述索引值为整数型,第N个索引值相对于第N‑1个索引值的偏移量=第N个索引值‑第N‑1个索引值,N≥2;对经过上述步骤处理后的待压缩三维模型数据进行LZMA编码。通过本发明提供的技术方案,能提高三维模型数据的压缩率。
Description
技术领域
本发明涉及数据压缩技术领域,具体涉及一种三维模型数据压缩方法及系统。
背景技术
2015年10月,万维网联盟(World Wide Web Consortium,W3C)推出html5标准,其中涵盖了webgl。Webgl是浏览器端的图形渲染接口,通常在PC端开发三维程序使用的三维模型数据是从本地读取的,而在浏览器端使用的三维模型数据则需要借助网络传输,由于这些三维模型数据量比较大,且网络传输并不像从本地读取那么快,所以必须对这些数据进行压缩传输。
目前常用的三维模型数据格式为obj格式,而obj格式中的数据是以字符串的方式排列,相对占用存储空间较大,压缩后的数据文件仍然较大,这样的数据文件压缩后通过网络传输,传输速率仍然较慢。
发明内容
有鉴于此,本发明的目的在于克服现有技术的不足,提供一种三维模型数据压缩方法及系统,实现提高三维模型数据的压缩率。
为实现以上目的,本发明采用如下技术方案:
一种三维模型数据压缩方法,包括:
步骤S1、将待压缩三维模型数据中各浮点型的顶点坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该顶点坐标的八位指数位,所述低二十四位数据包括该顶点坐标的一位符号位和二十三位尾数部分;
步骤S2、分别将所述高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
步骤S3、将待压缩三维模型数据中的第一个索引值作为基准值,计算除第N个索引值外相对于第N-1个索引值的偏移量,其中,所述索引值为整数型,第N个索引值相对于第N-1个索引值的偏移量=第N个索引值-第N-1个索引值,N≥2;
步骤S4、对经过步骤S1~S3处理后的待压缩三维模型数据进行LZMA编码。
优选地,所述步骤S1之前还包括步骤S0:将待压缩三维模型数据中各顶点坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列。
优选地,所述步骤S0还包括:
将待压缩三维模型数据中各法向量坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列;
所述步骤S1还包括:
将待压缩三维模型数据中各浮点型的法向量坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该法向量坐标的符号位和指数位,所述低二十四位数据包括该法向量坐标的尾数部分。
优选地,所述步骤S0还包括:
将待压缩三维模型数据中各贴图坐标的X坐标值、Y轴坐标值按所述预设顺序进行排列;
所述步骤S1还包括:
将待压缩三维模型数据中各浮点型的贴图坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该贴图坐标的符号位和指数位,所述低二十四位数据包括该贴图坐标的尾数部分。
优选地,所述步骤S2具体包括:
分别将各顶点坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各法向量坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各贴图坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
所述预设顺序具体为:各顶点坐标的高八位数据、各法向量坐标的高八位数据、各贴图坐标的高八位数据、各顶点坐标的低二十四位数据、各法向量坐标的低二十四位数据和各贴图坐标的低二十四位数据。
一种三维模型数据压缩系统,包括:
拆分单元,用于将待压缩三维模型数据中各浮点型的顶点坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该顶点坐标的八位指数位,所述低二十四位数据包括该顶点坐标的一位符号位和二十三位尾数部分;
排序单元,用于分别将所述高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
计算单元,用于将待压缩三维模型数据中的第一个索引值作为基准值,计算除第N个索引值外相对于第N-1个索引值的偏移量,其中,所述索引值为整数型,第N个索引值相对于第N-1个索引值的偏移量=第N个索引值-第N-1个索引值,N≥2;
编码单元,用于对经过所述拆分单元、排序单元和计算单元处理后的待压缩三维模型数据进行LZMA编码。
优选地,所述排序单元还用于:
将待压缩三维模型数据中各顶点坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列。
优选地,所述步排序单元还用于:
将待压缩三维模型数据中各法向量坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列;
所述拆分单元还用于:
将待压缩三维模型数据中各浮点型的法向量坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该法向量坐标的符号位和指数位,所述低二十四位数据包括该法向量坐标的尾数部分。
优选地,所述排序单元还用于:
将待压缩三维模型数据中各贴图坐标的X坐标值、Y轴坐标值按所述预设顺序进行排列;
所述拆分单元还用于:
将待压缩三维模型数据中各浮点型的贴图坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该贴图坐标的符号位和指数位,所述低二十四位数据包括该贴图坐标的尾数部分。
优选地,所述排序单元具体用于:
分别将各顶点坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各法向量坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各贴图坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
所述预设顺序具体为:各顶点坐标的高八位数据、各法向量坐标的高八位数据、各贴图坐标的高八位数据、各顶点坐标的低二十四位数据、各法向量坐标的低二十四位数据和各贴图坐标的低二十四位数据。
本发明采用以上技术方案,至少具备以下有益效果:
1、因为LZMA编码是一种基于字典的、“滑动窗”的无损压缩算法,LZMA算法包含一个动态窗口和一个预读缓冲器,在动态窗口中寻找与预读缓冲器中最匹配的字符串,记录这个匹配到的字符串到当前字符的距离和匹配到的字符串的长度,并和它的下一个字符一起作为结果输出。而本发明提供的这种三维模型数据压缩方法和系统,通过将待压缩三维模型数据中的各坐标数据拆分成高八位数据和低二十四位数据,高八位数据包括符号位和指数位,低二十四位数据包括尾数部分,而各坐标的高八位数据很多都是相同的,各坐标的低二十四位数据很多也是相同的,因此,坐标数据拆分后,相当于增加了待压缩三维模型数据中各数据的相似比例,提高了LZMA编码的压缩比例。
2、由于本发明提供的这种三维模型数据压缩方法和系统,分别将高八位数据和低二十四位数据按预设顺序进行排列,相当于是将近似的数据尽可能排在一起,提高了LZMA编码的压缩速率。
附图说明
图1为本发明一实施例提供的一种三维模型数据压缩方法的流程示意图;
图2为本发明另一实施例提供的一种三维模型数据压缩系统的示意框图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
参见图1,本发明一实施例提供的一种三维模型数据压缩方法,包括:
步骤S1、将待压缩三维模型数据中各浮点型的顶点坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该顶点坐标的八位指数位,所述低二十四位数据包括该顶点坐标的一位符号位和二十三位尾数部分;
步骤S2、分别将所述高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
步骤S3、将待压缩三维模型数据中的第一个索引值作为基准值,计算除第N个索引值外相对于第N-1个索引值的偏移量,其中,所述索引值为整数型,第N个索引值相对于第N-1个索引值的偏移量=第N个索引值-第N-1个索引值,N≥2;
步骤S4、对经过步骤S1~S3处理后的待压缩三维模型数据进行LZMA编码。
其中步骤S1具体为:将待压缩三维模型数据中各浮点型的顶点坐标拆分为X轴坐标值的高八位数据、X轴坐标值的低二十四位数据、Y轴坐标值的高八位数据、Y轴坐标值的低二十四位数据、Z轴坐标值的高八位数据和Z轴坐标值的低二十四位数据,其中,所述高八位数据包括符号位和指数位,所述低二十四位数据包括尾数部分;
步骤S2具体为:按预设顺序(例如:X轴坐标值的高八位数据、Y轴坐标值的高八位数据、Z轴坐标值的高八位数据、X轴坐标值的低二十四位数据、Y轴坐标值的低二十四位数据和Z轴坐标值的低二十四位数据),将各顶点坐标的高八位数据和低二十四位数据分别进行排列并存储排序后的高八位数据和低二十四位数据。
为了便于理解本发明提供的这种三维模型数据压缩方法,现举例如下:
假设原三维模型数据中各顶点坐标的排列顺序为:
x1、y1、z1、x2、y2、z2……xn、yn、zn,其中,xn表示第n个顶点坐标的X轴坐标值,yn表示第n个顶点坐标的Y轴坐标值,zn表示第n个顶点坐标的Z轴坐标值,n≥3。
本发明提供的将各顶点坐标拆分为高八位数据和低二十四位数据后的排
列顺序包括但不限于以下所列的五种情况:
第一种:
x1的高八位数据、x2的高八位数据、x3的高八位数据……xn的高八位数据,
y1的高八位数据、y2的高八位数据、y3的高八位数据……yn的高八位数据,
z1的高八位数据、z2的高八位数据、z3的高八位数据……zn的高八位数据;
x1的低二十四位数据、x2的低二十四位数据、x3的低二十四位数据……xn的低二十四位数据,
y1的低二十四位数据、y2的低二十四位数据、y3的低二十四位数据……yn的低二十四位数据,
z1的低二十四位数据、z2的低二十四位数据、z3的低二十四位数据……zn的低二十四位数据。
第二种:
y1的高八位数据、y2的高八位数据、y3的高八位数据……yn的高八位数据,
x1的高八位数据、x2的高八位数据、x3的高八位数据……xn的高八位数据,
z1的高八位数据、z2的高八位数据、z3的高八位数据……zn的高八位数据;
y1的低二十四位数据、y2的低二十四位数据、y3的低二十四位数据……yn的低二十四位数据,
x1的低二十四位数据、x2的低二十四位数据、x3的低二十四位数据……xn的低二十四位数据,
z1的低二十四位数据、z2的低二十四位数据、z3的低二十四位数据……zn的低二十四位数据。
第三种:
z1的高八位数据、z2的高八位数据、z3的高八位数据……zn的高八位数据;
y1的高八位数据、y2的高八位数据、y3的高八位数据……yn的高八位数据,
x1的高八位数据、x2的高八位数据、x3的高八位数据……xn的高八位数据,
z1的低二十四位数据、z2的低二十四位数据、z3的低二十四位数据……zn的低二十四位数据,
y1的低二十四位数据、y2的低二十四位数据、y3的低二十四位数据……yn的低二十四位数据,
x1的低二十四位数据、x2的低二十四位数据、x3的低二十四位数据……xn的低二十四位数据。
第四种:
x1的高八位数据、y1的高八位数据、z1的高八位数据、
x2的高八位数据、y2的高八位数据、z2的高八位数据、
x3的高八位数据、y3的高八位数据、z3的高八位数据、
………………
xn的高八位数据、yn的高八位数据、zn的高八位数据;
x1的低二十四位数据、y1的低二十四位数据、z1的低二十四位数据、
x2的低二十四位数据、y2的低二十四位数据、z2的低二十四位数据、
x3的低二十四位数据、y3的低二十四位数据、z3的低二十四位数据、
………………
xn的低二十四位数据、yn的低二十四位数据、zn的低二十四位数据。
第五种:
z1的高八位数据、x1的高八位数据、y1的高八位数据、
z2的高八位数据、x2的高八位数据、y2的高八位数据、
z3的高八位数据、x3的高八位数据、y3的高八位数据、
………………
zn的高八位数据、xn的高八位数据、yn的高八位数据;
z1的低二十四位数据、x1的低二十四位数据、y1的低二十四位数据、
z2的低二十四位数据、x2的低二十四位数据、y2的低二十四位数据、
z3的低二十四位数据、x3的低二十四位数据、y3的低二十四位数据、
………………
zn的低二十四位数据、xn的低二十四位数据、yn的低二十四位数据。
需要说明的是,以上所列的顶点坐标的五种排列情况只是为了便于理解本发明提供的这种三维数据压缩方法而给出的一种具体示例,并不限定本发明的顶点坐标只有上述的五种排列情况,任何将拆分后的顶点坐标高八位数据排列在一起,低二十四位数据排列在一起的排列方式都属于本发明的保护范围。
各顶点坐标拆分后,按如下表一所列方式进行存储:
数据类型 | 数据名称长度 | 名称数据段 | 数据内容长度 | 内容数据段 |
表一
其中,“数据类型”占4位,用于标识存储的数据内容的数据类型,比如标识存储的数据类型为32为浮点型数据;
“名称数据段”用于标识存储的数据名称,比如标识存储的为顶点坐标的高8位数据;
“数据名称长度”占4位,用于标识存储的“名称数据段”的长度,取值范围0~128;
“内容数据段”用于标识存储的数据内容,比如标识存储的为顶点坐标的高8位数据-24;
“数据内容长度”用于存储“内容数据段”的长度,如果“内容数据段”内存储的内容数据为浮点型数据,则用4字节表示“数据内容长度”,“数据内容长度”等于“内容数据段”所占位数*4。
其中,“数据内容长度”具体表示方法如下:
每个字节取最后1位作为结束标识位,结束标识位为1,表示再取后面一个字节,直到结束标识位为0,把之前取得的数累计表示为“内容数据段”的长度。
举例:1111 1111,1011 1110
第一个数最后一位为1,结束标识位为1表示再取后面一个字节,10111110结束标识位为0,表示结束,那么“数据内容长度”的实际值就是:
第一个数的高7位+第二个数的高7位1111111+1011111,即:11111111011111。
可以理解的是,因为LZMA编码是一种基于字典的、“滑动窗”的无损压缩算法,LZMA算法包含一个动态窗口和一个预读缓冲器,在动态窗口中寻找与预读缓冲器中最匹配的字符串,记录这个匹配到的字符串到当前字符的距离和匹配到的字符串的长度,并和它的下一个字符一起作为结果输出。而本发明提供的这种三维模型数据压缩方法,通过将待压缩三维模型数据中的各坐标数据拆分成高八位数据和低二十四位数据,高八位数据包括符号位和指数位,低二十四位数据包括尾数部分,而各坐标的高八位数据很多都是相同的,各坐标的低二十四位数据很多也是相同的,因此,坐标数据拆分后,相当于增加了待压缩三维模型数据中各数据的相似比例,提高了LZMA编码的压缩比例。
另外、由于本发明提供的这种三维模型数据压缩方法,分别将高八位数据和低二十四位数据按预设顺序进行排列,相当于是将近似的数据尽可能排在一起,提高了LZMA编码的压缩速率。
优选地,所述步骤S1之前还包括步骤S0:将待压缩三维模型数据中各顶点坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列。
可以理解的是,本发明提供的这种三维模型数据压缩方法,采用先排序再拆分的方法,可以提高后续将拆分后的高八位数据和低二十四位数据分别按预设顺序进行排列的速度。例如,如果拆分后想得到上述第一种排列顺序,可以在拆分前,先将各顶点坐标按x1、y1、z1、x2、y2、z2……xn、yn、zn的顺序进行排列;如果拆分后想得到上述第二种排列顺序,可以在拆分前,先将各顶点坐标按y1、x1、z1、y2、x2、z2……yn、xn、zn的顺序进行排列;如果拆分后想得到上述第三种排列顺序,可以在拆分前,先将各顶点坐标按z1、y1、x1、z2、y2、x2……zn、yn、xn的顺序进行排列。
优选地,所述步骤S0还包括附图中未示出的:
将待压缩三维模型数据中各法向量坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列;
所述步骤S1还包括附图中未示出的:
将待压缩三维模型数据中各浮点型的法向量坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该法向量坐标的符号位和指数位,所述低二十四位数据包括该法向量坐标的尾数部分。
可以理解的是,将各顶点坐标拆分为高八位数据和低二十四位数据的同时,将各法向量坐标拆分为高八位数据和低二十四位数据,相当于进一步增加了待压缩三维模型数据中各数据的相似比例,进一步提高了LZMA编码的压缩比例。
优选地,所述步骤S0还包括附图中未示出的:
将待压缩三维模型数据中各贴图坐标的X坐标值、Y轴坐标值按所述预设顺序进行排列;
所述步骤S1还包括附图中未示出的:
将待压缩三维模型数据中各浮点型的贴图坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该贴图坐标的符号位和指数位,所述低二十四位数据包括该贴图坐标的尾数部分。
可以理解的是,将各顶点坐标、法向量坐标拆分为高八位数据和低二十四位数据的同时,将各贴图坐标拆分为高八位数据和低二十四位数据,相当于进一步增加了待压缩三维模型数据中各数据的相似比例,进一步提高了LZMA编码的压缩比例。
优选地,所述步骤S2具体包括:
分别将各顶点坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各法向量坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各贴图坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
所述预设顺序具体为:各顶点坐标的高八位数据、各法向量坐标的高八位数据、各贴图坐标的高八位数据、各顶点坐标的低二十四位数据、各法向量坐标的低二十四位数据和各贴图坐标的低二十四位数据。
例如,假设原三维模型数据中各顶点坐标的排列顺序为:
x1、y1、z1、x2、y2、z2……xn、yn、zn;其中,xn表示第n个顶点坐标的X轴坐标值,yn表示第n个顶点坐标的Y轴坐标值,zn表示第n个顶点坐标的Z轴坐标值。
原三维模型数据中各法向量坐标的排列顺序为:
vx1、vy1、vz1、vx2、vy2、vz2、vx3、vy3、vz3……vxn、vyn、vzn;其中,vxn表示第n个法向量坐标的X轴坐标值,vyn表示第n个法向量坐标的Y轴坐标值,vzn表示第n个法向量坐标的Z轴坐标值。
原三维模型数据中贴图坐标的排列顺序为:
Tx1、Ty1、Tx2、Ty2、Tx3、Ty3……Txn、Tyn;其中,Txn表示第n个贴图坐标的X轴坐标值,Tyn表示第n个贴图坐标的Y轴坐标值。
所述预设顺序具体为:各顶点坐标的高八位数据、各法向量坐标的高八位数据、各贴图坐标的高八位数据、各顶点坐标的低二十四位数据、各法向量坐标的低二十四位数据和各贴图坐标的低二十四位数据,包括但不限于以下所列这种排列顺序:
x1的高八位数据、x2的高八位数据、x3的高八位数据……xn的高八位数据,
y1的高八位数据、y2的高八位数据、y3的高八位数据……yn的高八位数据,
z1的高八位数据、z2的高八位数据、z3的高八位数据……zn的高八位数据;
vx1的高八位数据、vx2的高八位数据、vx3的高八位数据……vxn的高八位数据,
vy1的高八位数据、vy2的高八位数据、vy3的高八位数据……vyn的高八位数据,
vz1的高八位数据、vz2的高八位数据、vz3的高八位数据……vzn的高八位数据;
Tx1的高八位数据、Tx2的高八位数据、Tx3的高八位数据……Txn的高八位数据,
Ty1的高八位数据、Ty2的高八位数据、Ty3的高八位数据……Tyn的高八位数据;
x1的低二十四位数据、x2的低二十四位数据、x3的低二十四位数据……xn的低二十四位数据,
y1的低二十四位数据、y2的低二十四位数据、y3的低二十四位数据……yn的低二十四位数据,
z1的低二十四位数据、z2的低二十四位数据、z3的低二十四位数据……zn的低二十四位数据;
vx1的低二十四位数据、vx2的低二十四位数据、vx3的低二十四位数据……vxn的低二十四位数据,
vy1的低二十四位数据、vy2的低二十四位数据、vy3的低二十四位数据……vyn的低二十四位数据,
vz1的低二十四位数据、vz2的低二十四位数据、vz3的低二十四位数据……vzn的低二十四位数据;
Tx1的低二十四位数据、Tx2的低二十四位数据、Tx3的低二十四位数据……Txn的低二十四位数据,
Ty1的低二十四位数据、Ty2的低二十四位数据、Ty3的低二十四位数据……Tyn的低二十四位数据。
另外,一种三维模型数据压缩系统100,包括:
拆分单元101,用于将待压缩三维模型数据中各浮点型的顶点坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该顶点坐标的八位指数位,所述低二十四位数据包括该顶点坐标的一位符号位和二十三位尾数部分;
排序单元102,用于分别将所述高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
计算单元103,用于将待压缩三维模型数据中的第一个索引值作为基准值,计算除第N个索引值外相对于第N-1个索引值的偏移量,其中,所述索引值为整数型,第N个索引值相对于第N-1个索引值的偏移量=第N个索引值-第N-1个索引值,N≥2;
编码单元104,用于对经过所述拆分单元、排序单元和计算单元处理后的待压缩三维模型数据进行LZMA编码。
由上述技术方案可知,本发明提供的这种三维模型数据压缩系统,拆分单元通过将待压缩三维模型数据中的各坐标数据拆分成高八位数据和低二十四位数据,高八位数据包括符号位和指数位,低二十四位数据包括尾数部分,而各坐标的高八位数据很多都是相同的,各坐标的低二十四位数据很多也是相同的,因此,坐标数据拆分后,相当于增加了待压缩三维模型数据中各数据的相似比例,提高了LZMA编码的压缩比例。
另外、由于本发明提供的这种三维模型数据压缩系统,排序单元分别将高八位数据和低二十四位数据按预设顺序进行排列,相当于是将近似的数据尽可能排在一起,提高了LZMA编码的压缩速率。
优选地,所述排序单元102还用于:
将待压缩三维模型数据中各顶点坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列。
优选地,所述排序单元102还用于:
将待压缩三维模型数据中各法向量坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列;
所述拆分单元101还用于:
将待压缩三维模型数据中各浮点型的法向量坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该法向量坐标的符号位和指数位,所述低二十四位数据包括该法向量坐标的尾数部分。
优选地,所述排序单元102还用于:
将待压缩三维模型数据中各贴图坐标的X坐标值、Y轴坐标值按所述预设顺序进行排列;
所述拆分单元101还用于:
将待压缩三维模型数据中各浮点型的贴图坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该贴图坐标的符号位和指数位,所述低二十四位数据包括该贴图坐标的尾数部分。
优选地,所述排序单元102具体用于:
分别将各顶点坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各法向量坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各贴图坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
所述预设顺序具体为:各顶点坐标的高八位数据、各法向量坐标的高八位数据、各贴图坐标的高八位数据、各顶点坐标的低二十四位数据、各法向量坐标的低二十四位数据和各贴图坐标的低二十四位数据。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性。
Claims (10)
1.一种三维模型数据压缩方法,其特征在于,包括:
步骤S1、将待压缩三维模型数据中各浮点型的顶点坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该顶点坐标的八位指数位,所述低二十四位数据包括该顶点坐标的一位第一符号位和二十三位尾数部分;
步骤S2、分别将所述高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
步骤S3、将待压缩三维模型数据中的第一个索引值作为基准值,计算除第N个索引值外相对于第N-1个索引值的偏移量,其中,所述索引值为整数型,第N个索引值相对于第N-1个索引值的偏移量=第N个索引值-第N-1个索引值,N≥2;
步骤S4、对经过步骤S1~S3处理后的待压缩三维模型数据进行LZMA编码。
2.根据权利要求1所述的三维模型数据压缩方法,其特征在于,所述步骤S1之前还包括步骤S0:将待压缩三维模型数据中各顶点坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列。
3.根据权利要求2所述的三维模型数据压缩方法,其特征在于,所述步骤S0还包括:
将待压缩三维模型数据中各法向量坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列;
所述步骤S1还包括:
将待压缩三维模型数据中各浮点型的法向量坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该法向量坐标的第二符号位和指数位,所述低二十四位数据包括该法向量坐标的尾数部分。
4.根据权利要求3所述的三维模型数据压缩方法,其特征在于,所述步骤S0还包括:
将待压缩三维模型数据中各贴图坐标的X坐标值、Y轴坐标值按所述预设顺序进行排列;
所述步骤S1还包括:
将待压缩三维模型数据中各浮点型的贴图坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该贴图坐标的第三符号位和指数位,所述低二十四位数据包括该贴图坐标的尾数部分。
5.根据权利要求4所述的三维模型数据压缩方法,其特征在于,所述步骤S2具体包括:
分别将各顶点坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各法向量坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各贴图坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
所述预设顺序具体为:各顶点坐标的高八位数据、各法向量坐标的高八位数据、各贴图坐标的高八位数据、各顶点坐标的低二十四位数据、各法向量坐标的低二十四位数据和各贴图坐标的低二十四位数据。
6.一种三维模型数据压缩系统,其特征在于,包括:
拆分单元,用于将待压缩三维模型数据中各浮点型的顶点坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该顶点坐标的八位指数位,所述低二十四位数据包括该顶点坐标的一位第一符号位和二十三位尾数部分;
排序单元,用于分别将所述高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
计算单元,用于将待压缩三维模型数据中的第一个索引值作为基准值,计算除第N个索引值外相对于第N-1个索引值的偏移量,其中,所述索引值为整数型,第N个索引值相对于第N-1个索引值的偏移量=第N个索引值-第N-1个索引值,N≥2;
编码单元,用于对经过所述拆分单元、排序单元和计算单元处理后的待压缩三维模型数据进行LZMA编码。
7.根据权利要求6所述的三维模型数据压缩系统,其特征在于,所述排序单元还用于:
将待压缩三维模型数据中各顶点坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列。
8.根据权利要求7所述的三维模型数据压缩系统,其特征在于,所述排序单元还用于:
将待压缩三维模型数据中各法向量坐标的X坐标值、Y轴坐标值和Z轴坐标值按所述预设顺序进行排列;
所述拆分单元还用于:
将待压缩三维模型数据中各浮点型的法向量坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该法向量坐标的第二符号位和指数位,所述低二十四位数据包括该法向量坐标的尾数部分。
9.根据权利要求8所述的三维模型数据压缩系统,其特征在于,所述排序单元还用于:
将待压缩三维模型数据中各贴图坐标的X坐标值、Y轴坐标值按所述预设顺序进行排列;
所述拆分单元还用于:
将待压缩三维模型数据中各浮点型的贴图坐标拆分为高八位数据和低二十四位数据,其中所述高八位数据包括该贴图坐标的第三符号位和指数位,所述低二十四位数据包括该贴图坐标的尾数部分。
10.根据权利要求9所述的三维模型数据压缩系统,其特征在于,所述排序单元具体用于:
分别将各顶点坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各法向量坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;分别将各贴图坐标的高八位数据和低二十四位数据按预设顺序进行排列并存储排序后的高八位数据和低二十四位数据;
所述预设顺序具体为:各顶点坐标的高八位数据、各法向量坐标的高八位数据、各贴图坐标的高八位数据、各顶点坐标的低二十四位数据、各法向量坐标的低二十四位数据和各贴图坐标的低二十四位数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610240410.2A CN105931279B (zh) | 2016-04-18 | 2016-04-18 | 一种三维模型数据压缩方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610240410.2A CN105931279B (zh) | 2016-04-18 | 2016-04-18 | 一种三维模型数据压缩方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105931279A CN105931279A (zh) | 2016-09-07 |
CN105931279B true CN105931279B (zh) | 2019-01-29 |
Family
ID=56838394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610240410.2A Active CN105931279B (zh) | 2016-04-18 | 2016-04-18 | 一种三维模型数据压缩方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105931279B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108122189B (zh) * | 2016-11-29 | 2021-11-30 | 三星电子株式会社 | 硬件中的顶点属性压缩和解压缩 |
CN111324587B (zh) * | 2018-12-14 | 2024-09-20 | 北京京东尚科信息技术有限公司 | Obj文件的数据的压缩方法、解析方法以及系统 |
CN111324678B (zh) * | 2018-12-14 | 2024-05-17 | 北京京东尚科信息技术有限公司 | 数据处理方法、装置和计算机可读存储介质 |
CN115222930B (zh) * | 2022-09-02 | 2022-11-29 | 四川蜀天信息技术有限公司 | 一种基于WebGL的3D模型的编排组合的方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102255873A (zh) * | 2010-05-21 | 2011-11-23 | 南京师范大学 | 基于有序点集像素无损压缩的矢量数据高效传输方法 |
WO2015087217A1 (en) * | 2013-12-12 | 2015-06-18 | Koninklijke Philips N.V. | Real-time fusion of anatomical ultrasound information and radiation delivery information for radiation therapies |
-
2016
- 2016-04-18 CN CN201610240410.2A patent/CN105931279B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102255873A (zh) * | 2010-05-21 | 2011-11-23 | 南京师范大学 | 基于有序点集像素无损压缩的矢量数据高效传输方法 |
WO2015087217A1 (en) * | 2013-12-12 | 2015-06-18 | Koninklijke Philips N.V. | Real-time fusion of anatomical ultrasound information and radiation delivery information for radiation therapies |
Non-Patent Citations (1)
Title |
---|
结合压缩编码的图像选择加密研究;屈晋宇;《中国优秀硕士学位论文全文数据库 信息科技辑》;20150115;第I138-81页 |
Also Published As
Publication number | Publication date |
---|---|
CN105931279A (zh) | 2016-09-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105931279B (zh) | 一种三维模型数据压缩方法及系统 | |
US11625883B2 (en) | Random accessible lossless parameter data compression for tile based 3D computer graphics systems | |
CN103326732B (zh) | 压缩数据的方法、解压数据的方法、编码器和解码器 | |
CN101271463B (zh) | 版式文件的结构处理方法和系统 | |
CN102457283B (zh) | 一种数据压缩、解压缩方法及设备 | |
CN100447812C (zh) | 一种文档数字水印嵌入方法 | |
CN102292748A (zh) | 基于区块的3d计算机图形系统中的多级显示控制列表 | |
CN111339599B (zh) | 一种bim模型到gis模型的转换方法 | |
CN115497107B (zh) | 一种基于笔画和部首分解的零样本汉字识别方法 | |
CN103353866A (zh) | 一种支持xna技术的三维模型文件格式转换方法 | |
CN103975593B (zh) | 基于三维模型压缩而生成重复性结构发现的比特流的方法和设备 | |
CN103746705A (zh) | 一种压缩矢量数据的方法 | |
CN105719321A (zh) | 一种压缩纹理的方法及装置 | |
CN109872402B (zh) | 3d模型处理方法、装置、计算机设备和存储介质 | |
CN111428509B (zh) | 一种基于拉丁字母的维吾尔语处理方法和系统 | |
CN109376120A (zh) | 一种内存优化的数据文件格式转化方法、装置及存储介质 | |
CN103489268A (zh) | 一种用于pos平台的阿拉伯语显示方法 | |
CN105653506A (zh) | 一种基于字符编码转换的gpu内文本处理的方法及装置 | |
CN103729864A (zh) | 一种三维模型的压缩存储方法及系统 | |
Li et al. | A human-computer interactive dynamic description method for Jiaguwen characters | |
CN110021349B (zh) | 基因数据的编码方法 | |
CN103138766A (zh) | 数据压缩与解压缩的方法及装置 | |
CN115718726A (zh) | 一种用于bim模型数据的轻量化、加密存储方法 | |
CN113570496A (zh) | 一种波形数据高速缓存回显方法 | |
CN114140569B (zh) | 一种三维场景序列化压缩方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |