一种基于模型数据的浮点数压缩和解压缩方法与流程

文档序号:12612569阅读:1584来源:国知局

本发明涉及游戏、VR、AR等需要进行3D建模的领域,具体地说,涉及一种基于模型数据的浮点数压缩和解压缩方法。



背景技术:

在3D应用越来越广泛的今天,模型数据较大一直是限制其网络普遍应用的关键问题之一。由于3D模型数据主要由浮点数组成,所以,如何对浮点数进行压缩是解决现有问题的关键。

一般的3D建模中,需要有包含XYZ轴的位置点数据、贴图数据uv值、法线数据、副法线数据、切线数据等,基于uv的取值范围主要是0~1,法线、副法线、切线值的取值范围为-1~1,因此现有float格式中的大量字位是被浪费的。同事,uv值的精度敏感度在0.0001,因为一边贴图不会超过4096,而法线和副法线等参数因为影响的是光照强度计算,人眼对光照的感受等级还不到0.001,尤其普通黑白图片的数据范围在0~255之间,所有更是有大量的精度数据其实是被浪费的。



技术实现要素:

为了解决上述问题,本发明提供一种将数据精度定义到1~4096范围内对模型数据进行高度压缩的实用的基于模型数据的浮点数压缩和解压缩方法。

本发明的一种基于模型数据的浮点数压缩和解压缩方法,包括浮点数压缩和相应的浮点数解压缩;

其中,所述浮点数压缩包括如下步骤:

Y1、读取一个浮点数x,通过(x+1)*0.5*4096公式对浮点数x进行计算,取整得到一个整数M;

Y2、在目标数组中于之前字位数位置之后写入整数M的低12位,并将当前写入的字位数据平移12位,使其符合16位短整形和小端模式;

Y3、重复步骤Y1、Y2,直至所有浮点数压缩完成。

所述浮点数解压缩包括如下步骤:

J1、读取压缩数据;

J2、从给压缩数据中读取包含当前字位位置和后12位字符的整数,该整数符合16位短整形和小端模式,根据当前位置计算出偏移字位病读取12位整数M;

J3、通过公式M/2048-1得到一个浮点数,将该浮点数写入到解压缩缓冲中,并将当前字位位置平移12位;

J4、重复步骤J2、J3,直至所有浮点数解压结束。

采用本发明对模型数据进行浮点数压缩,可以通过忽略无法感知的信息有效减少数据浪费,获得极高数据压缩比,且不影响模型外观视觉效果。

具体实施方式

为了更好的理解本发明,下面详细说明本发明。

本发明的一种基于模型数据的浮点数压缩和解压缩方法,包括浮点数压缩和相应的浮点数解压缩;

其中,所述浮点数压缩包括如下步骤:

Y1、读取一个浮点数x,通过(x+1)*0.5*4096公式对浮点数x进行计算,取整得到一个整数M;

Y2、在目标数组中于之前字位数位置之后写入整数M的低12位,并将当前写入的字位数据平移12位,使其符合16位短整形和小端模式;

Y3、重复步骤Y1、Y2,直至所有浮点数压缩完成。

所述浮点数解压缩包括如下步骤:

J1、读取压缩数据;

J2、从给压缩数据中读取包含当前字位位置和后12位字符的整数,该整数符合16位短整形和小端模式,根据当前位置计算出偏移字位病读取12位整数M;

J3、通过公式M/2048-1得到一个浮点数,将该浮点数写入到解压缩缓冲中,并将当前字位位置平移12位;

J4、重复步骤J2、J3,直至所有浮点数解压结束。

上述整数M为0~4095之间的一个非负整数。所述浮点数压缩为无损压缩,经过所述浮点数压缩后,模型数据为原数据的20%。

采用本发明对模型数据进行浮点数压缩,由于uv数据、法线数据、副法线数据、切线数据等在一定精度范围内对显示效果不敏感,而其数据量又很大,本发明对这些数据进行统一处理,通过忽略无法感知的信息有效减少数据浪费,获得极高数据压缩比,且不影响模型外观视觉效果。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明披露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1