一种三维模型的压缩存储方法及系统的制作方法

文档序号:6524544阅读:169来源:国知局
一种三维模型的压缩存储方法及系统的制作方法
【专利摘要】本发明公开了一种三维模型的压缩存储方法和系统,所述方法在存储三维模型的顶点时,将浮点数据转换为整数数据进行存储,压缩50%的存储空间,减少存储的成本;所述系统包括顶点坐标获取模块、最大最小顶点获取模块、中点和半径获取模块、中点和半径获取模块、顶点存储模块和顶点读取模块。本发明在读取顶点时,读取整数操作与读取浮点操作相比,可以极大提升读取的速度,提升读取的效率。
【专利说明】一种三维模型的压缩存储方法及系统
【技术领域】
[0001]本发明涉及数据存储领域,特别是一种三维模型的压缩存储方法及系统。
【背景技术】
[0002]三维模型是物体的多边形表示,由顶点和三角形索引等数据组成,顶点数据又由X、Y、Z三个浮点分量构成,一个浮点占用4个字节,即一个顶点占用12个字节,当模型的顶点数量增加时,模型所占用的存储空间也随之增加,这在程序的应用上或软件的实际运行中,不仅会增加传输和存储的成本,也会限制模型顶点的数量和三角形数量的使用。特别是在游戏领域中的应用,一个游戏软件中包含有大量的数据,而模型数据则占用了庞大比例的存储空间,存储成本的提闻和传输负担的增加,必定会增加游戏发布和推广等一系列的成本。因此,如果能有效降低三维模型数据的占用空间,对于其它软件尤其是游戏软件的运营和维护,都具有重大意义。

【发明内容】

[0003]为解决上述问题,本发明的目的在于提供一种三维模型的压缩存储方法及系统,减小三维模型的存储空间,降低模型数据的运输负担,提升软件的运行效率。
[0004]本发明解决其问题所采用的技术方案是:
本发明的优选实施例提供了一种三维模型的压缩存储方法,包括:
顶点坐标获取的步骤,遍历三维模型的所有顶点,获取所有顶点的三维坐标;
最大最小顶点获取的步骤,对比出所有顶点在每一维坐标中的最大和最小值,得到以三个最大值组成的最大顶点和以三个最小值组成的最小顶点;
中点和半径获取的步骤,获取最大顶点和最小顶点之间的中点和半径;
顶点存储的步骤,将三维模型的所有顶点通过中点和半径转化为整数进行存储。
[0005]顶点存储的步骤中,任一顶点在存储时,将此顶点减去中点后除以半径,再乘以32767取整后进行存储。这样所存储的数据为整数类型,可以减小存储空间。因为浮点数据存储占用32位,而整数类型数据占用16位,在实际应用中可以减少50%的存储空间,极大地节省了存储空间的使用。
[0006]所述压缩存储方法还包括顶点读取的步骤:
读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别除以32767后乘以半径,再与中点相加,作为相应顶点的坐标值;或者
读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别乘以半径后除以32767,再与中点相加,作为相应顶点的坐标值。
[0007]顶点在读取时,将存储的顶点还原即可。本发明简单易行,且节约存储空间和传输时间,进而降低存储成本和提升软件运行效率。
[0008]本发明的优选实施例提供了一种三维模型的压缩存储系统,包括:
顶点坐标获取模块,遍历三维模型的所有顶点,获取所有顶点的三维坐标; 最大最小顶点获取模块,对比出所有顶点在每一维坐标中的最大和最小值,得到以三个最大值组成的最大顶点和以三个最小值组成的最小顶点;
中点和半径获取模块,获取最大顶点和最小顶点之间的中点和半径;
顶点存储模块,将三维模型的所有顶点通过中点和半径转化为整数进行存储。
[0009]此压缩存储系统还包括顶点读取模块:
读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别除以32767后乘以半径,再与中点相加,作为相应顶点的坐标值;或者
读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别乘以半径后除以32767,再与中点相加,作为相应顶点的坐标值。
[0010]本发明的有益效果是:
本发明采用一种三维模型的压缩存储方法和系统,在存储三维模型的顶点时,将浮点数据转换为整数数据进行存储,压缩50%的存储空间,减少存储的成本;在读取顶点时,读取整数操作与读取浮点操作相比,可以极大提升读取的速度,提升读取的效率。本发明可以极大地提升软件的运行,尤其是包含有大量三维模型数据的游戏软件。
【专利附图】

【附图说明】
[0011]下面结合附图和实例对本发明作进一步说明。
[0012]图1是本发明方法的流程图;
图2是顶点坐标获取的流程图;
图3是最大最小顶点获取的流程图;
图4是中点和半径获取的流程图;
图5是顶点存储的流程图;
图6是顶点读取的流程图。
【具体实施方式】
[0013]以下参照附图对本发明作进一步详细的说明和解释。
[0014]作为本发明实现的一种三维模型的压缩存储方法,参照图1所示的流程图,包括: 顶点坐标获取的步骤100,三维模型具有多个顶点,不同的顶点在三维坐标的X、Y、Z轴
的坐标不同,参照图2中的步骤202与步骤204,遍历三维模型的所有顶点,即可获取所有顶点的坐标;
最大最小顶点获取的步骤102,参照图3所示,步骤302对比出所有顶点在每一维坐标中的最大和最小值,步骤304得到以三个最大值组成的最大顶点和以三个最小值组成的最小顶点;
中点和半径获取的步骤104,参照图4所示,步骤402将最大顶点减去最小顶点之后除以2,步骤406将步骤402所得结果与最小顶点相加即得到中点坐标,步骤410计算最大顶点或最小顶点和中点的距离即获取半径;
顶点存储的步骤106,参照图5所示,对于三维模型中的任一顶点,步骤502将此顶点减去中点后的三维坐标值分别除以半径,得到三个大于O小于或等于I的系数值,步骤506将此三个系数值分别乘以32767并取整进行存储; 在存储之后,在对三维模型中的顶点读取时,则需要按照与存储时相反的操作,具体的,对于顶点读取的步骤108,参照图6中所示,步骤602读取中点和半径,同时,步骤604读取顶点取整后存储的三个数值,步骤608将此三个数值分别除以32767后乘以半径,步骤610将步骤608所得结果与中点相加,作为相应顶点的坐标值。
[0015]所述步骤608中,亦可以将三个数值分别乘以半径后除以32767,之后再由步骤610将步骤608所得结果与中点相加,作为相应顶点的坐标值。
[0016]通过顶点存储的步骤106,将三维模型的顶点由浮点数据转换为整型数据进行存储,由于浮点数据一般占用32位,而整形数据在存储时只占用16位,因此,可以节约50%的空间,从而节约所使用的存储空间,减少相应的存储成本。
[0017]顶点存储的步骤106中,所乘以的32767为2的15次方减1,符合整形数据所占用的位数,计算后直接取整即可。
[0018]具体的,假设三维模型未压缩时,具有N个顶点,每个顶点有三个浮点数据共需要占用12个字节,则三维模型需要12N个字节的存储空间;通过整形压缩之后,每个顶点占用6个字节,所存储的中点和半径占用24个字节,压缩比为(6N+24) /12N,接近50%的压缩比率。
[0019]三维模型的顶点在存储与读取时,不需要额外的压缩算法或者软件即可提高压缩率,存储与读取的操作运行速度快且容易实现,对于存储有大量三维模型的游戏软件来说,对三维模型的数据进行压缩,可极大地降低三维模型占用的存储空间并提高运行效率。
[0020]本发明提供了一种三维模型的压缩存储系统,包括:
顶点坐标获取模块,遍历三维模型的所有顶点,获取所有顶点的三维坐标;
最大最小顶点获取模块,对比出所有顶点在每一维坐标中的最大和最小值,得到以三个最大值组成的最大顶点和以三个最小值组成的最小顶点;
中点和半径获取模块,获取最大顶点和最小顶点之间的中点和半径;
顶点存储模块,将三维模型的所有顶点通过中点和半径转化为整数进行存储。
[0021]所述获取最大顶点和最小顶点之间的中点和半径具体为:
最大顶点减去最小顶点之后除以2,所得结果与最小顶点相加得到中点;
计算最大顶点或最小顶点和中点的距离获取半径。
[0022]所述将三维模型的所有顶点通过中点和半径转化为整数进行存储包括:
对于所有顶点中的任一顶点,将此顶点减去中点后的三维坐标值分别除以半径,得到
三个大于O小于或等于I的系数值;
将此三个系数值分别乘以32767并取整进行存储。
[0023]所述压缩存储系统还包括顶点读取模块:
读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别除以32767后乘以半径,再与中点相加,作为相应顶点的坐标值;或者
读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别乘以半径后除以32767,再与中点相加,作为相应顶点的坐标值。
[0024]所述系统在实现时具体参照以上方法中所述内容,在此不再赘述。
[0025]本发明在应用时,不局限于某种类型的软件,凡符合本发明所应用的不同的领域,或者以不同数据类型的转换,其目的为降低存储空间的替代方案,皆在本发明的保护范围之内。
【权利要求】
1.一种三维模型的压缩存储方法,其特征在于,包括: 顶点坐标获取的步骤,遍历三维模型的所有顶点,获取所有顶点的三维坐标; 最大最小顶点获取的步骤,对比出所有顶点在每一维坐标中的最大和最小值,得到以三个最大值组成的最大顶点和以三个最小值组成的最小顶点; 中点和半径获取的 步骤,获取最大顶点和最小顶点之间的中点和半径; 顶点存储的步骤,将三维模型的所有顶点通过中点和半径转化为整数进行存储。
2.根据权利要求1所述的压缩存储方法,其特征在于,所述获取最大顶点和最小顶点之间的中点和半径具体为: 最大顶点减去最小顶点之后除以2,所得结果与最小顶点相加得到中点; 计算最大顶点或最小顶点和中点的距离获取半径。
3.根据权利要求1所述的压缩存储方法,其特征在于,所述将三维模型的所有顶点通过中点和半径转化为整数进行存储包括: 对于所有顶点中的任一顶点,将此顶点减去中点后的三维坐标值分别除以半径,得到三个大于O小于或等于I的系数值; 将此三个系数值分别乘以32767并取整进行存储。
4.根据权利要求3所述的压缩存储方法,其特征在于,所述方法还包括顶点读取的步骤: 读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别除以32767后乘以半径,再与中点相加,作为相应顶点的坐标值;或者 读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别乘以半径后除以32767,再与中点相加,作为相应顶点的坐标值。
5.—种三维模型的压缩存储系统,其特征在于,包括: 顶点坐标获取模块,遍历三维模型的所有顶点,获取所有顶点的三维坐标; 最大最小顶点获取模块,对比出所有顶点在每一维坐标中的最大和最小值,得到以三个最大值组成的最大顶点和以三个最小值组成的最小顶点; 中点和半径获取模块,获取最大顶点和最小顶点之间的中点和半径; 顶点存储模块,将三维模型的所有顶点通过中点和半径转化为整数进行存储。
6.根据权利要求5所述的压缩存储系统,其特征在于,所述获取最大顶点和最小顶点之间的中点和半径具体为: 最大顶点减去最小顶点之后除以2,所得结果与最小顶点相加得到中点; 计算最大顶点或最小顶点和中点的距离获取半径。
7.根据权利要求5所述的压缩存储系统,其特征在于,所述将三维模型的所有顶点通过中点和半径转化为整数进行存储包括: 对于所有顶点中的任一顶点,将此顶点减去中点后的三维坐标值分别除以半径,得到三个大于O小于或等于I的系数值; 将此三个系数值分别乘以32767并取整进行存储。
8.根据权利要求7所述的压缩存储系统,其特征在于,所述压缩存储系统还包括顶点读取模块: 读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别除以32767后乘以半径,再与中点相加,作为相应顶点的坐标值;或者 读取中点和半径,同时读取顶点取整后存储的三个数值,将此三个数值分别乘以半径后除以32767,再与中点相加`,作为相应顶点的坐标值。
【文档编号】G06T9/00GK103729864SQ201310704136
【公开日】2014年4月16日 申请日期:2013年12月18日 优先权日:2013年12月18日
【发明者】余欣 申请人:珠海金山网络游戏科技有限公司, 广州西山居世游网络科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1