[发明专利]一种体素地形数据压缩方法及系统有效
申请号: | 201811478027.6 | 申请日: | 2018-12-05 |
公开(公告)号: | CN109861965B | 公开(公告)日: | 2021-06-18 |
发明(设计)人: | 石轲;朱博;柳尧顺;陆利民 | 申请(专利权)人: | 苏州蜗牛数字科技股份有限公司 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04N19/20;H04N19/85;H04N19/96;H03M7/30 |
代理公司: | 北京德崇智捷知识产权代理有限公司 11467 | 代理人: | 王金双 |
地址: | 215000 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 地形 数据压缩 方法 系统 | ||
一种体素地形数据压缩方法,包括步骤:递归遍历每个八叉树的每个节点,并在所述节点生成中间数据;递归遍历每个所述八叉树的每个所述节点,更新所述中间数据,并写入需要打包的数据;对所述写入的数据进行压缩,其中,所述中间数据包括标志数据、掩码数据以及体素数据。本发明还提供一种体素地形数据压缩系统,相比于原有数据的容量大大减少,而且可以方便的解压缩,可以节省数据存储所占空间和网络传输所占带宽。
技术领域
本发明涉及
技术领域,特别是涉及一种体素地形数据压缩方法及系统。
背景技术
体素类型的网络游戏中,整个地形会被离散成3D空间的多个体素数据。随着游戏的进行,玩家对体素地形的修改越来越多,服务器需要保存的体素数据也会越来越多。在数据存档和网络传输过程中,都需要用到压缩后的地形数据,因此如何进行高效压缩是一个非常重要的问题。
发明内容
为了解决现有技术存在的不足,本发明的目的在于提供一种体素地形数据压缩方法及系统,压缩后的二进制数据相比于原有数据的容量大大减少,而且可以方便的解压缩,可以节省数据存储所占空间和网络传输所占带宽。
为实现上述目的,本发明提供的一种体素地形数据压缩方法,包括以下步骤:
递归遍历八叉树的每个节点,并在所述节点生成中间数据;
递归遍历每个所述八叉树的每个所述节点,更新所述中间数据,并写入需要打包的数据;
对所述写入的数据进行压缩;
其中,所述中间数据包括标志数据、掩码数据以及体素数据。
进一步地,所述递归遍历八叉树的每个节点,并在所述节点生成中间数据的步骤,进一步包括:
递归遍历每个所述节点;
当前节点是叶子节点时,将所述标志数据设为0,将所述掩码数据设为1111;
当前节点是非叶子节点、所有所述子节点的与所述体素数据对应的字节一致时,将所述掩码数据设为1,对应的体素数据为有效;
当前节点是非叶子节点、所有所述子节点的与所述体素数据对应的字节不一致,将所述掩码数据设为0,对应的体素数据为无效。
进一步地,所述递归遍历每个所述八叉树的每个所述节点,更新所述中间数据,并写入需要打包的数据的步骤,进一步包括:
递归遍历每个所述节点;
根据当前节点的父节点的所述掩码数据更新所述当前节点的所述掩码数据;
根据所述标志数据和更新后的掩码数据,写入所述需要打包的数据。
进一步地,所述根据当前节点的父节点的所述掩码数据更新所述当前节点的所述掩码数据的步骤,进一步包括:
在与所述当前节点的位对应的所述父节点的位数为1时,将所述当前节点的位数更新为0,或者,与所述当前节点的位对应的所述父节点的位数为0时,不进行更改。
更进一步地,所述根据所述标志数据和更新后的掩码数据,写入所述需要打包的数据的步骤,进一步包括:
在所述当前节点是非叶子节点时,写入所述当前节点的所述标志数据和所述更新后的掩码数据,或者,在所述当前节点是叶子节点时,仅写入与所述更新后的掩码数据中位数为1的对应的所述体素数据,而不写入所述标志数据和所述更新后的掩码数据。
为实现上述目的,本发明提供的一种体素地形数据压缩系统,包括:
遍历模块,其对每个八叉树的每个节点进行两次递归遍历;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于苏州蜗牛数字科技股份有限公司,未经苏州蜗牛数字科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811478027.6/2.html,转载请声明来源钻瓜专利网。