一种基于三维网格细分和编码的三维模型压缩方法

文档序号:9418280
一种基于三维网格细分和编码的三维模型压缩方法
【技术领域】
[0001]本发明涉及计算机图形处理领域,尤其涉及了一种基于三维网格细分和编码的三维模型压缩方法。
【背景技术】
[0002]随着计算机图形学的发展,实际需要的三维模型越来越大、越来越复杂,三维模型数据量急剧增加而产生大规模的三维模型。同时,移动互联网的快速发展,在越来越多的移动终端设备上有强烈的三维使用需求。在当前移动网络带宽有限情况下,大规模三维模型的巨大数据与有限网络带宽资源间存在一定矛盾。只有对大规模三维模型进行高效率的压缩以减小传输的数据量,才可能解决大规模三维模型在使用上的传输带宽限制。
[0003]三维模型压缩方法主要有拓扑压缩和几何压缩,实际当中往往两者都结合使用。拓扑压缩主是关于三维模型的顶点、边、面之间的关联信息的压缩,当前能达到一定压缩效果,但其压缩和解压的过程计算量非常巨大、对硬件设备要求过高。几何压缩主要是关于三维模型的顶点位置及一些相关属性参数(如颜色、纹理坐标、法线等)的压缩,但当前的几何压缩方法效率普遍不高,无法对大规模三维模型进行有效的高比例压缩。
[0004]当前基于拓扑压缩对大规模的三维模型进行拓扑信息计算需要巨大的运算能力和储存能力,对于有限的移动终端设备是无法提供其所需要的压缩和解压能力,难以在移动终端等设备上快速运行。而针对三维模型顶点位置及其他属性的几何压缩方法,采用常规的zip、Izma等压缩算法,仅对数据本身进行压缩,并未针对三维模型的固有属性进行提取,因此压缩比率有限。因此,如果能有效降低三维模型数据的占用空间,对于在移动终端上运行的三维软件的运营和维护,都具有重大意义。

【发明内容】

[0005]本发明针对现有技术中三维模型压缩比率不高等缺点,提供了一种基于三维网格细分和编码的三维模型压缩方法。
[0006]为了解决上述技术问题,本发明通过下述技术方案得以解决:
[0007]一种基于三维网格细分和编码的三维模型压缩方法,包括以下步骤:步骤1、读取三维模型的顶点坐标数据,对顶点的X,I, Z坐标逐个进行比较,计算出三维模型的最大和最小顶点坐标;通过最大和最小顶点坐标确定轴向包围盒的边界参数,边界参数包括轴向包围盒在三维坐标系中的最大和最小位置坐标;
[0008]步骤2、根据轴向包围盒的边界参数计算出轴向包围盒在X,y, z轴上的长度,获取三维模型的顶点数量,根据三维模型的顶点数量及轴向包围盒在X,y,z轴上的长度,计算出轴向包围盒的在X,I, Z轴上的等分因子,根据轴向包围盒的等分因子对轴向包围盒进行三维网格细分,根据轴向包围盒的长度、等分因子依次对三维细分网格建立唯一索引编码;
[0009]步骤3、对三维模型的顶点坐标数据按Z轴优先进行排序,获取经过排序的顶点坐标,根据顶点坐标、轴向包围盒的最小位置坐标、轴向包围盒在X,y,z轴的长度在及轴向包围盒在X,y,z轴的等分因子计算出顶点相对应三维细分网格的索引编码数据;
[0010]步骤4、根据步骤2计算的三维细分网格的唯一索引编码,获取轴向包围盒的最小位置坐标、轴向包围盒在x,y,z轴上的长度及轴向包围盒在X,y, z轴的等分因子,计算出每个细分网格原点的X,y, z坐标,进行中间存储用于下一步计算;
[0011]步骤5、根据三维细分网格的原点坐标、顶点相对应三维细分网格的索引编码数据和获取的三维模型顶点坐标,计算三维模型顶点坐标相对于三维细分网格原点的偏移量,获取三维模型顶点的浮点数精度,并将偏移量除以浮点数精度进行整数化,获取整数偏移量;
[0012]步骤6、对轴向包围盒的边界参数、轴向包围盒的X,y,Z轴的等分因子、三维细分网格的唯一索引编码、三维模型顶点对应三维细分网格的索引编码数据、三维模型顶点的浮点数精度和三维模型顶点相对于三维细分网格原点的整数偏移量进行数据熵编码。
[0013]作为优选,对步骤6熵编码后的数据采用开源的LZMA压缩算法进行数据压缩。
[0014]作为优选,对步骤5的三维模型顶点坐标相对于三维细分网格原点的整数偏移量进行交叉系列化:把原来按X1, Υι, Ζ^..χη, yn, ζη (η为整数)排序的顶点坐标数据系列化为按xr"xn(n为整数),yr"yn(n为整数),ζ^..ζη(η为整数)进行存储。
[0015]作为优选,对交叉系列化的整数偏移量数据进行熵编码,采用开源的LZMA压缩算法进行数据压缩。
[0016]本发明由于采用了以上技术方案,提供了一种全新的三维模型压缩方法,对三维网格细分,将三维模型顶点采用编码和偏移量记录数据,偏移量占用空间相对于原顶点坐标数据大大减少,采用整数储存相比小数减少了占用空间,提高了压缩比率,采用此压缩方法的软件更适合在移动设备上运行和维护。
【附图说明】
[0017]图1是本发明压缩方法流程图;
【具体实施方式】
[0018]下面结合附图与实施例对本发明作进一步详细描述。
[0019]实施例1
[0020]具体压缩流程如图1所示,一种基于三维网格细分和编码的三维模型压缩方法,包括以下步骤:
[0021]步骤1、读取三维模型的顶点坐标数据,对顶点的X,y, ζ坐标逐个进行比较,计算出三维模型的最大和最小顶点坐标;通过最大和最小顶点坐标确定轴向包围盒的边界参数,边界参数包括轴向包围盒在三维坐标系中的最大和最小位置坐标,对边界参数进行储存,通过边界参数确认轴向包围盒的范围;包围盒算法是一种求解离散点集最优包围空间的方法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。
[0022]步骤2、根据轴向包围盒的边界参数计算出轴向包围盒在X,y, ζ轴上的长度,获取三维模型的顶点数量,根据三维模型的顶点数量及轴向包围盒在X,y,ζ轴上的长度,计算出轴向包围盒的在X,y,ζ轴上的等分因子,根据轴向包围盒的等分因子对轴向包围盒进行三维网格细分,根据轴向包围盒的长度、等分因子依次对三维细分网格建立唯一索引编码,每个三维细分网格都有一个唯一的索引编码,对轴向包围盒的在X,y,ζ轴上的长度和等分因子、三维细分网格的唯一索引编码进行存储,用于下一步使用。
[0023]步骤3、对三维模型的顶点坐标数据按Z轴优先进行排序,获取经过排序的顶点坐标,根据顶点坐标、轴向包围盒的最小位置坐标、轴向包围盒在X,y,ζ轴的长度在及轴向包围盒在X,y,ζ轴的等分因子计算出顶点相对应三维细分网格的索引编码数据,例如:排序顶点的X轴坐标值减去最小位置的X轴坐标值,得到X轴差值;χ轴长度除以X轴等分因子,得到X轴上三维细分网格的单个网格长度值;根
再多了解一些
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1