三维模型数据化简、 渐进传输方法及装置 技术领域 本发明涉及空间信息技术、 计算机图形学、 虚拟现实技术和计算机操作系统等领 域, 尤其涉及一种三维模型数据化简、 渐进传输方法及装置。
背景技术 模型是对客观世界中各种规律或过程的抽象或模拟, 空间数据模型则是对现实世 界中空间实体及其相互联系的抽象, 是描述和组织空间数据、 以及设计空间数据库模式的 基础。在计算机图形学中, 通常用三维空间数据模型 ( 简称三维模型 ) 描述三维物体, 然后 再通过计算机或者其它视频设备进行显示。显示的三维模型可以是现实世界的实体, 也可 以是虚构的东西, 既可以小到原子, 也可以大到很大的尺寸。 任何物理自然界存在的东西都 可以用三维模型表示。
三维模型包括几何和纹理两部分。 其中, 几何部分主要分为三种 : 基于矢量的表面 模型、 基于体元的实体模型和混合模型。
基于矢量的表面模型也可称作矢量模型、 面元模型或面模型, 主要是以物体边界 为目标和基础, 通过定义和描述物体的外部几何形态, 实现完整的、 显式的界面描述方法。
以用多边形来表达基于矢量的表面模型的几何部分为例, 即用多边形表示或者近 似表示物体的曲面。它的基本对象是三维空间中的顶点, 将两个顶点连接起来的直线称为 边, 三个顶点经三条边连接起来成为三角形, 三角形是欧氏空间中最简单的多边形。 多个三 角形可以组成更加复杂的多边形, 或者生成多于三个顶点的单个物体。四边形和三角形是 多边形表达的三维模型中最常用的形状, 在三维模型的表达方面, 三角网三维模型 ( 或称 TIN 模型 ) 因其数据结构简单、 容易被所有的图形硬件设备绘图等特点成为三维模型表达 的一种流行选择, 其中每个三角形就是一个表面, 因此也将三角形称为三角面片。同时, 随 着三维扫描技术的出现并不断发展成熟, 点云己经成为三维模型的主要表现手段之一。
基于体元的实体模型也称作体元模型、 实体模型或镶嵌模型, 基于 3D 空间的体元 分割和真 3D 实体表达, 体元的属性可以独立描述和存储, 其中体素模型、 八叉树模型、 四面 体格网模型是最为常见的三种模型。
混合模型也称作集成模型或一体化模型, 目的是综合多种模型的优点, 取长补短。
许多三维模型需要使用纹理进行覆盖, 将纹理排列放到三维模型上的过程称作纹 理映射。纹理就是一个图像, 但是它可以让模型更加细致并且看起来更加真实。
随着科学技术的不断进步, 在计算机图形学、 虚拟现实、 城市规划、 文物修复、 动画 游戏、 计算机辅助设计、 地理信息系统、 医学图形等领域越来越多地应用到三维图形。应用 的需求带动了采集技术的发展, 现在的机载激光扫描、 高分辨率卫星影像, 三维数字摄像和 扫描系统等, 这些高效的空间数据获取方法使得生成高分辨率的三维模型成为现实, 但也 使得三维模型数据的数据量呈几何级数增长。 因为三维物体表面细节的表现往往需要纹理 (Texture-Compression, 也称之为材质 ) 来实现, 那么越是高分辨率越是真彩色的纹理自 然表现力也是越强, 三维模型的高分辨率 ( 或者叫高精度 ) 越高, 三维模型需要的纹理就越
多, 数据量也就越大, 绘制时用的时间越长。同时, Internet 也已经成为一种数据共享、 分 布式存储、 分布式计算、 传输、 可视化等的基础平台, 因此一个系统所需要的三维模型可能 分布存储于异构环境中, 但是目前的网络传输带宽, 远远不能满足这些三维模型数据的实 时传输。本发明中, 用来表示、 描述和记录三维信息的数据统称为三维模型数据, 如三维空 间数据, 三维模型的几何数据和纹理数据及相应的属性数据等等。
在三维 GIS(Geographic Information System, 地理信息系统 ) 引擎中, 对浏览的 实时性要求很高, 如果直接下载并使用未经处理的原始三维模型数据, 数据传输速度非常 慢。因此提高三维模型数据的传输效率, 成为一个迫切需要解决的问题。 发明内容
有鉴于此, 本发明提供一种三维模型数据化简、 渐进传输方法及装置。 其具体方案 如下 :
一种三维模型数据化简方法, 包括 :
设定与视图窗口对应的视图控制参数 ;
依据所述视图控制参数分析三维模型数据, 获取在所述视图窗口中可见的三维模 型数据 ; 确定所述在视图窗口中可见的三维模型数据为化简后数据。
一种三维模型数据化简装置, 包括 :
参数设定模块, 用于设定与视图窗口对应的视图控制参数, 所述视图控制参数至 少包括 : 视图窗口的外包矩形、 视点参数和投影参数 ;
分析获取模块, 用于依据所述视图控制参数分析三维模型数据, 获取在所述视图 窗口中可见的三维模型数据 ;
确定模块, 用于确定所述在视图窗口中可见的三维模型数据为化简后数据。
一种三维模型数据渐进传输方法, 包括 :
当需要请求增量数据时, 请求发送端发送增量数据请求, 所述增量数据请求中至 少包含视图控制参数, 所述视图控制参数至少包括 : 当前视图控制参数 ;
接收请求接收端发送的增量数据, 所述增量数据为所述请求接收端依据所述视图 控制参数分析三维模型数据, 获取在所述当前视图控制参数对应的视图窗口中可见的三维 模型数据, 并依据所述视图控制参数进行分析后获得的。
一种三维模型数据渐进传输方法, 包括 :
接收请求发送端发送的增量数据请求, 所述增量数据请求中至少包含视图控制参 数, 所述视图控制参数至少包括 : 当前视图控制参数 ;
依据所述视图控制参数分析三维模型数据, 获取在所述视图控制参数对应的视图 窗口中可见的三维模型数据 ;
确定所述在视图窗口中可见的三维模型数据为化简后数据 ;
分析所述化简后数据, 确定符合增量条件的三维模型数据为增量数据 ;
发送所述增量数据给所述请求发送端。
一种三维模型数据渐进传输装置, 包括 :
请求发送模块, 用于当需要请求增量数据时, 请求发送端发送增量数据请求, 所
述增量数据请求中至少包含视图控制参数, 所述视图控制参数至少包括 : 当前视图控制参 数;
增量数据接收模块, 用于接收请求接收端发送的增量数据, 所述增量数据为所述 请求接收端依据所述视图控制参数分析三维模型数据, 获取在所述当前视图控制参数对应 的视图窗口中可见的三维模型数据, 并依据所述视图控制参数进行分析后获得的。
一种三维模型数据渐进传输装置, 包括 :
请求接收模块, 用于接收请求发送端发送的增量数据请求, 所述增量数据请求中 至少包含视图控制参数, 所述视图控制参数至少包括 : 当前视图控制参数 ;
获取模块, 用于依据所述视图控制参数分析三维模型数据, 获取在所述视图控制 参数对应的视图窗口中可见的三维模型数据 ;
确定模块, 用于确定所述在视图窗口中可见的三维模型数据为化简后数据 ;
分析模块, 用于分析所述化简后数据, 确定符合增量条件的三维模型数据为增量 数据 ;
增量数据发送模块, 用于发送所述增量数据给所述请求发送端。
从上述的技术方案可以看出, 本发明实施例公开的三维模型数据化简方法, 通过 利用预先设定的视图控制参数分析三维模型数据, 将在与视图控制参数对应的视图窗口下 不可见的三维模型数据舍去, 减小了数据传输过程中的数据量, 提高了数据传输速度。
进一步的, 由于化简掉的数据为在视图窗口中不可见的数据, 因此, 并不会改变三 维模型数据的显示效果, 实现了化简后数据的无损显示。附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅仅是本 发明的一些实施例, 对于本领域普通技术人员来讲, 在不付出创造性劳动的前提下, 还可以 根据这些附图获得其他的附图。
图 1 为本发明实施例公开的一种三维模型数据化简方法的流程图 ;
图 2 为本发明实施例公开的依据所述视图控制参数分析三维模型数据, 获取在所 述视图窗口中可见的三维模型数据的过程的流程图 ;
图 3 为本发明实施例公开的依据所述视图控制参数分析三维模型数据, 将三维模 型数据中被自身所在三维模型中的其他三维模型数据遮挡的三维模型数据舍去的过程的 流程图 ;
图 4 为本发明实施例公开的依据所述视图控制参数分析三维模型数据, 将三维模 型数据中被其它三维模型的三维模型数据遮挡的三维模型数据舍去的过程的流程图 ;
图 5 为本发明实施例公开的又一依据所述视图控制参数分析三维模型数据, 获取 在所述视图窗口中可见的三维模型数据的过程的流程图 ;
图 6 为本发明实施例公开的对三角网三维模型进行化简的过程流程图 ;
图 7 为本发明实施例公开的将三角网三维模型进行预处理的过程的流程图 ;
图 8 为本发明实施例公开的依据所述消隐分析的结果, 化简所述三维模型数据的 过程的流程图 ;图 9 为本发明实施例公开的确定所述在视图窗口中可见的三维模型数据为化简 后数据的流程图 ;
图 10 为本发明实施例公开的一种三维模型数据化简装置的结构示意图 ;
图 11 为本发明实施例公开的一种三维模型数据渐进传输方法的流程图 ;
图 12 为发明实施例公开的又一三维模型数据渐进传输方法的流程图 ;
图 13 为发明实施例公开的又一三维模型数据渐进传输方法的流程图 ;
图 14 为发明实施例公开的又一三维模型数据渐进传输方法的流程图 ;
图 15 为发明实施例公开的又一三维模型数据渐进传输方法的流程图 ;
图 16 为本发明实施例公开的一种三维模型数据渐进传输装置的结构示意图 ;
图 17 为本发明实施例公开的又一三维模型数据渐进传输装置的结构示意图。具体实施方式
下面将结合本发明实施例中的附图, 对本发明实施例中的技术方案进行清楚、 完 整地描述, 显然, 所描述的实施例仅仅是本发明一部分实施例, 而不是全部的实施例。基于 本发明中的实施例, 本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他 实施例, 都属于本发明保护的范围。 三维模型在视图窗口中的显示过程一般是 : 首先通过空间数据索引将符合给定空 间条件的三维模型取出来经过传输介质传给三维模型使用者 ( 如客户端 ) ; 然后对三维模 型数据进行一系列的坐标变换和处理之后, 变换为二维图像上的坐标点 ; 根据显示参数, 三 维模型最终通过绘图算法栅格化成图像像素, 绘制成一幅栅格图像, 在客户端显示或输出 ( 如计算机屏幕显示、 在纸上打印输出及生成图像文件输出等 )。其中三维模型的绘制, 最 终被绘图算法归结为对一个个像素的操作。
因此本发明提出以视图 ( 显示输出设备的抽象 ) 的角度来研究三维模型的自适应 化简和渐进传输, 彻底解决海量三维模型数据的网络传输和显示的问题。
本发明基于如下原理 : 以视图的角度, 在最终用于显示的视图窗口分辨率确定的 情况下, 视图窗口能显示的像素总数就固定了, 无论多海量的三维模型数据, 用于最终传输 或显示所需要的最大可见三维模型数据是恒定的, 即用于填充完视图窗口的全部像素所需 的可见三维模型数据是恒定的。因为三维模型在视图窗口中显示时 :
(1) 如果绘制的三维模型被其它绘制的三维模型完全遮挡, 则此三维模型可以不 用传输和绘图 ;
(2) 如果绘制的三维模型被其它绘制的三维模型部分遮挡, 被遮挡的部分在视图 窗口中不能显示出来, 则此三维模型中被挡住的部分可以不用传输和绘图 ;
(3) 三维模型本身也可能存在遮挡 ( 如三维模型在显示时, 其中一些表面将另外 的部分表面遮挡住了 ), 则三维模型中被挡住的部分可以不用传输和绘图。
我们将对视图窗口中的像素绘制后能被显示出来的三维模型称为可见三维模型, 用于表达三维模型中可见部分的数据称为可见三维模型数据。
本发明实施例公开的一种三维模型数据化简方法的流程如图 1 所示, 包括 :
步骤 S11、 设定与视图窗口对应的视图控制参数, 所述视图控制参数至少包括 : 视 图窗口的外包矩形、 视点参数和投影参数 ;
视图控制参数包括 : 视图窗口的外包矩形, 视点参数和投影参数 ; 所述视点参数 包括视点在世界坐标系中的位置 O(xo, yo, zo), 其中 xo, yo, zo 表示视点在世界坐标系中的三 个分量、 视点所观察的目标位置 A(xa, ya, za) 和虚拟照相机向上的向量 up(xup, yup, zup) ; 通 过视点参数可以确定一个变换矩阵, 将原始坐标系中的顶点坐标变换到视点坐标系下。投 影参数包括 : 正交投影和透视投影。或者是通过上述参数得到的视图矩阵和投影矩阵。
该视图控制参数依据进行三维模型数据显示的视图窗口而确定。 从而保证依据视 图控制参数进行处理的数据能够满足在显示的视图窗口中的要求, 以保证化简后的三维模 型数据在实际的显示窗口中进行无损显示, 并保证化简后的三维模型数据间的空间关系的 正确显示。
步骤 S12、 依据所述视图控制参数分析三维模型数据, 获取在所述视图窗口中可见 的三维模型数据 ;
将在所述预先设定的视图控制参数对应的视图窗口下不可见的三维模型数据去 掉, 只将可见的三维模型数据经过网络传输给客户端显示, 减小了数据网络传输过程中的 数据量, 同时, 由于去掉的三维模型数据在视图窗口下并不可见, 所以化简后的数据不会改 变原始数据的显示效果, 保证了化简后的数据的无损显示。
在计算机图形学中, 用计算机生成三维物体的真实图形, 是计算机图形学研究的 重要内容。 真实图形在仿真模拟、 几何造型、 广告影视和科学计算可视化等许多领域都有着 广泛应用。 在用显示设备显示物体的图形时, 必须把三维信息经过某种投影变换, 在二维的 显示平面上绘制出来。由于投影变换失去了深度信息, 往往导致图形的二义性。要消除这 类二义性, 就必须在绘制时消除被遮挡的不可见的线、 面或体, 习惯上称之为消除隐藏线、 隐藏面和隐藏体等, 或简称为消隐。因此本实施例中利用计算机图形学中的消隐算法将所 述设定的视图控制参数对应的视图窗口中不可见的三维模型数据去掉, 对三维模型数据进 行化简。
根据消隐所在的空间, 通常将消隐算法分为三大类 :
(1) 物体空间的消隐算法 : 物体空间是用户来定义三维形体的三维空间, 即所说 的世界坐标系空间。它是三维形体还没有被投影到二维空间内所在的空间。根据空间中各 物体三维模型的几何关系, 将场景中每一个面与其他每个面比较, 求出所有点、 边、 面、 体的 遮挡关系, 如光线投射算法、 背面剔除算法、 表优先级算法、 Roberts 算法等。
(2) 图象空间的消隐算法 : 图象空间是把三维模型投影到的二维空间, 即我们所 说的屏幕空间。 对屏幕上每个像素进行判断, 决定哪个多边形在该像素可见, 例如扫描线算 法、 Z 缓冲器算法 ( 即深度缓存算法 ) 等。
(3) 物体空间和图像空间的消隐算法 : 在物体空间中预先计算面的可见性优先 级, 再在图像空间中生成消隐图。 从理论上讲, 物体空间法即为一个对象必须和空间中其他 对象进行比较, 以确定其是否可见。 图像空间方法则是将每个对象的投影分解为像素, 像素 之间进行比较。
步骤 S13、 确定所述在视图窗口中可见的三维模型数据为化简后数据。
经过步骤 S12 处理后获得的数据为化简后数据。
本实施例公开的三维模型数据化简方法, 通过利用预先设定的视图控制参数分析 三维模型数据, 将在与视图控制参数对应的视图窗口下不可见的三维模型数据舍去, 减小了数据传输过程中的数据量, 提高了数据传输速度。
进一步的, 由于化简掉的数据为在视图窗口中不可见的数据, 因此, 并不会改变原 始三维模型数据的显示效果, 实现了化简后数据的无损显示。
上述实施例中, 为了实现对三维模型数据的化简, 列举了很多消隐方法, 下面将以 Roberts 算法为例, 对依据所述视图控制参数分析三维模型数据, 获取在所述视图窗口中可 见的三维模型数据的过程进行详细的描述, 其流程如图 2 所示, 包括 :
步骤 S21、 依据所述视图控制参数分析三维模型数据, 将三维模型数据中被自身所 在三维模型中的其他三维模型数据遮挡的三维模型数据舍去 ;
消除三维模型数据中被自身所在的三维模型中的其他三维模型数据遮挡的三维 模型数据, 即三维模型中被其自身遮挡的面和边, 即三维模型中背向视点的面和有关的边。 例如三维模型 A 中包括多个三维模型数据 A1、 A2、 A3 等, 如果 A1 被同处于三维模型 A 中的 A2 遮挡, 则舍去 A1。
步骤 S22、 依据所述视图控制参数分析三维模型数据, 将三维模型数据中被其它三 维模型的三维模型数据遮挡的三维模型数据舍去 ;
将三维模型数据中, 被其他三维模型的数据遮挡的三维模型数据舍去。例如三维 模型 A 中的三维模型数据 A1 被三维模型 B 中的三维模型数据 B1 遮挡, 则将 A1 舍去。
步骤 S23、 依据所述视图控制参数, 将剩余的三维模型数据中在所述在视图窗口中 可见的三维模型数据确定为化简后数据。
经过上述两步骤之后, 剩余的三维模型数据为彼此之间不存在遮挡的三维模型数 据, 然后将彼此之间不存在遮挡的三维模型数据利用视图控制参数进行分析, 舍去在视图 控制参数对应的视图窗口中不可见的三维模型数据, 将在视图窗口中可见的三维模型数据 确定为化简后数据。
具体的, 依据所述视图控制参数分析三维模型数据, 将三维模型数据中被自身所 在三维模型中的其他三维模型数据遮挡的三维模型数据舍去的过程如图 3 所示, 包括 :
步骤 S31、 确定所述三维模型的多面体上任意一面为当前待处理面, 确定所述当前 待处理面上任意一点为测试点 ;
步骤 S32、 计算所述测试点依据所述视点参数获得的视线矢量与所述测试点的外 多边形平面法向量间的夹角 ;
假设平面 πi 上测试点的外多边形平面法向量为 ni, 该点依据所述视点参数获得 的视线矢量为 si, 两者的数量积为 :
ni·si = |ni||si|cosθi, 0 ≤ θi ≤ π
从而有
θi 为 ni 与 si 之间的夹角, i = 1, 2, ..., m, 这里三维模型对应的多面体的平面数。
当 cosθi ≥ 0, 即 0 ≤ θi ≤ π/2 时, πi 为朝前面, 为可见的 ;
当 cosθi < 0, 即 π/2 < θi ≤ π 时, πi 为朝后面, 不可见的。
步骤 S33、 判断所述夹角的余弦值是否大于等于 0, 若是, 则执行步骤 S34a, 若否, 则执行步骤 S34b ;
步骤 S34a、 确定所述当前待处理面为可见, 执行步骤 S35 ;
步骤 S34b、 确定所述当前待处理面为不可见, 将所述当前待处理面对应的不可见 三维模型数据舍去, 执行步骤 S35 ;
步骤 S35、 判断所述三维模型上是否存在未处理面, 若是, 则执行步骤 S36, 若否, 则结束 ;
步骤 S36、 确定下一未处理面为当前待处理面, 所述当前待处理面上任意一点为测 试点, 返回执行步骤 S32。
按照上述步骤将三维模型中各个面之间的遮挡关系进行分析, 确定出可见面及不 可见面, 然后将不可见面舍去, 从而实现将三维模型数据中被自身所在三维模型的三维模 型数据遮挡的三维模型数据舍去。
同时, 依据所述视图控制参数分析三维模型数据, 将三维模型数据中被其它三维 模型的三维模型数据遮挡的三维模型数据舍去的具体过程如图 4 所示, 包括 :
步骤 S41、 将所述三维模型数据按照距离视点由近及远的顺序进行排序 ;
步骤 S42、 按照由近及远的顺序依次分析所述三维模型数据, 舍去被分析三维模型 数据之后的被遮挡住的三维模型数据。 按照视点的远近顺序, 依次将三维模型间相互遮挡的三维模型数据进行化简。
例如, 消除三维模型的隐藏线的过程为 : 从最远的物体开始, 对于每个三维模型, 如三维模型 A, 检查和确定与其它每个三维模型 ( 如三维模型 B) 的遮挡关系以及计算隐 藏线, 首先判断两三维模型在投影平面上的包围区域是否相交, 若不相交则无遮挡关系 ; 否 则, 首先确定和记录两三维模型在投影平面的两个坐标轴方向上有无相互贯穿关系, 然后 对三维模型 A 的每条棱线通过计算与检测三维模型 B 的每个多边形在投影平面上的交点, 以确定该棱线被检测多面体遮挡之线段 ; 确定贯穿体之间的可见贯穿线。对于相互贯穿的 多面体, 需计算贯穿点以连成相贯边, 然后逐一检查相贯边的可见性, 剔除其隐藏部分。最 终实现对三维模型 A 隐藏线的消除, 然后按照上述方式, 依次消除其他三维模型的隐藏线。
本实施例公开的三维模型数据化简方法中, 具体的化简方式为在三维模型的原始 环境中, 利用预先设定的视图控制参数对三维模型进行分析处理, 最终得到化简后的数据。 本发明实施例同时公开了另一种基于图像空间的消隐算法实现依据所述视图控制参数分 析三维模型数据, 获取在所述视图窗口中可见的三维模型数据的过程的方法, 其具体流程 如图 5 所示, 包括 :
步骤 S51、 依据预先设定的所述视图控制参数, 将所述三维模型数据的原始坐标变 换得到所述视图窗口的视图坐标, 所述视图窗口利用数据结构依照所述预先设定的所述视 图控制参数进行表示 ;
本实施例中, 依据视图控制参数用栅格数据结构来表示视图窗口的像素, 所述像 素为视图窗口平面划分成的均匀网格单元, 所述像素为栅格数据中的基本信息存储单元, 所述像素的坐标位置依据所述像素在所述视图窗口中对应的行号和列号确定 ; 设定用于表 示像素对应的三维模型数据的序列号的栅格数据的初始值为 0, 用于表示像素深度的栅格 数据的初始值为距离视点最远的值, 根据不同的系统, 如果像素深度值越小离视点越近, 则 给表示像素深度的栅格数据的初始值赋极大值, 如果像素深度值越大离视点越近, 则给表 示像素深度的栅格数据的初始值赋极小值。
每个像素可以用下面的数据结构来表示 :其中 ModelDataIndex 用于代表三维模型数据的序列号 ( 或称标识号 ), 类似于帧 缓存, 如不规则三角网 (TIN) 三维模型, ModelDataIndex 表示为三角形的序号 ; zValue 为像 素的深度 ( 即 z 坐标 ), 类似于深度缓存。
步骤 S52、 消隐分析所述坐标变换后的三维模型数据 ;
利用基于图像空间的消隐算法, 例如 Z 缓冲器算法, 对坐标变换后的三维模型数 据进行消隐分析。
步骤 S53、 依据所述消隐分析的结果, 化简所述坐标变换前的三维模型数据 ; 步骤 S54、 获取化简后的三维模型数据作为在所述视图窗口中可见的三维模型数据。 进一步的, 在消隐分析坐标变换后的三维模型数据前, 根据需要也可以包括 : 对所 述坐标变换后的三维模型数据进行退化分析。比如多边形的退化分析, 即如果三维模型数 据在 “模型” 视图窗口坐标系下不能构成有效的多边形, 则将此多边形舍去, 同时如果构成 此多边形的顶点没有被其它可见的多边形使用, 则对应的顶点也舍去。
举例说明 : 三角网三维模型, 在由原始坐标系变换到 “模型” 视图窗口坐标系中进 行显示时, 在 “模型” 视图窗口坐标系中构成三角形网格的三个坐标点可能相同, 或三个坐 标点在同一条直线上, 已经不能构成三角形, 可以直接舍去此三角形网格数据。
通过退化分析, 可以首先滤除一部分不能构成三维模型的数据, 进一步减小了进 行消隐分析的数据量, 提高了整个化简过程的处理效率。
在消隐分析中, Z 缓冲器消隐法是最常用的一种消隐分析法, 它在象素级上以近物 取代远物, 与形体在屏幕上的出现顺序无关, 在三维模型的表达方面, 三角网三维模型数据 结构简单、 容易被所有的图形硬件设备绘制。 在此, 本发明实施例以三角网三维模型作为化 简对象, 将利用 Z 缓冲器消隐分析法对三角网三维模型进行化简的过程进行描述, 其流程 如图 6 所示, 包括 :
步骤 S61、 从待分析三角网三维模型中确定当前待分析三角网三维模型 ;
选择取出一个三角网三维模型 TMi, 其中 i 为三角网三维模型的序号, 大于 0, 同时 i 小于或等于 n, n 为待分析的三维模型的个数, TMi 的三角形个数为 m, 记录三维模型 TMi 所 对应的处理过的三角形的总数 TCi, 即: TCi = TC ; 然后将 TC 值增加 m, 即 TC = TC+m ;
步骤 S62、 从组成所述选取的当前待分析三角网三维模型的三角形中选取当前待 分析三角形, 确定其标识号、 三个顶点, 及各个顶点的原始坐标 ;
假设取出组成 TMi 的一个三角形 Tj, j 为三角形的顺序号, j 大于 0, 同时 j 小于或 等于 m, Tj 的三个顶点为 Ph, P z, Pk, 其中, h, z, k 都大于 0, 同时都小于或等于 w, 其中 w 为 TMi
顶点的个数, 将 Tj 的顺序号 j 加上 TCi 作为三维模型数据 Tj 标识号 ID, 即 ID = j+TCi ;
步骤 S63、 按照所述视图控制参数, 将上述三个顶点的原始坐标变换得到所述视图 窗口的视图坐标 ;
将 Ph, Pz, Pk 变换为视图窗口坐标系下的坐标点 Ph’ , Pz’ , Pk’ , 其中 Ph’ , Pz’ , Pk’ 每 个坐标点都含有深度值, 即 z 坐标。
步骤 S64、 判断所述变换坐标后的三个顶点坐标是否能够构成有效三角形, 若是, 则执行步骤 S65, 若否, 则执行步骤 S614 ;
本步骤目的在于, 对三维模型数据进行退化分析, 当三个坐标顶点不能构成有效 三角形时, 可以直接舍去该三个顶点坐标对应的三角形, 不再进行处理, 以提高处理效率。
本实施例并不限定必须包含该退化分析过程。
步骤 S65、 获得所述当前待分析三角形的三角面上的当前待分析像素点 ;
本步骤可以通过 “扫描线填充算法” 依次获得所有 Tj 所构成的三角面片上的像素 点 Pp’ 。
步骤 S66、 依据所述变换坐标后的三个顶点坐标计算出所述当前待分析像素点对 应的深度值 ;
即根据 Ph’ , Pz’ , Pk’ 的深度值计算出 Pp’ 所对应的深度值 z。
步骤 S67、 读取所述当前待分析像素点所对应的栅格数据中的三角形序号和像素 深度值, 判断所述读取的三角形序号是否为 0, 若是, 则执行步骤 S610, 若否, 则执行步骤 S68 ;
即 读 取 Pp’ 的 像 素 的 数 据 ModelDataIndex 和 zValue 的 值,然 后 判 断 ModelDataIndex 为等于 0 还是大于 0。
步骤 S68、 分别获得所述读取的当前待分析像素点所对应的栅格数据中的深度值 和视点计算出的第一距离, 和依据变换坐标后的三个顶点坐标计算出的所述当前待分析像 素点对应的深度值和视点计算出的第二距离 ;
步骤 S69、 判断所述第一距离是否大于所述第二距离, 若是, 则执行步骤 S610, 若 否, 则执行步骤 S611 ;
步骤 S610、 用所述当前待分析三角形的标识号替换所述当前待分析像素点所对应 的栅格数据中的三角形序号, 用所述计算出的像素的深度值替换所述读取当前待分析像素 点所对应的栅格数据中的深度值, 执行步骤 S612 ;
即将 ID 赋值给像素点 Pp’ 所对应的栅格数据中的 ModelDataIndex 的值, 将z赋 值给像素点 Pp’ 所对应的栅格数据中的 zValue 的值 ;
步骤 S611、 则保留所述像素点所对应的栅格数据中的三角形序号和像素深度值, 执行步骤 S612 ;
步骤 S612、 判断所述当前待分析三角形所构成的三角面片上是否存在未被分析的 像素点, 若是, 则执行步骤 S613, 若否, 则执行步骤 S614 ;
步骤 S613、 获取所述当前待分析三角形所构成的三角面片上的下一个未被分析像 素点为当前待分析像素点, 执行步骤 S66 ;
步骤 S614、 判断所述选取的当前待分析三角网三维模型的三角形中是否存在未被 分析三角形, 若是, 则执行步骤 S615, 若否, 则执行步骤 S616 ;步骤 S615、 确定下一待分析三角形为当前待分析三角形, 返回执行步骤 S62 ;
步骤 S616、 判断所述待分析三角网三维模型中是否存在未被分析的三角网三维模 型, 若是, 则执行步骤 S617, 若否, 则执行步骤 S618 ;
步骤 S617、 确定下一待分析三角网三维模型为当前待分析三角网三维模型, 返回 执行步骤 S61 ;
步骤 S618、 依次获取所有像素点对应的三角形序号, 将大于 0 的三角形序号保存 到预设数组。
通过上述步骤, 将待分析的三角网三维模型中全部可见的三角形的序号存储到了 预设数组, 以作为对三角网三维模型数据进行化简的依据。
当然, 在上述消隐分析过程开始之前, 为了提高消隐分析的效率, 降低消隐分析过 程中数据的处理量, 还可包括如下步骤, 将原始的三角网三维模型进行预处理, 将预处理后 的三维模型数据, 作为待分析三角网三维模型数据, 具体的过程如图 7 所示, 包括 :
步骤 S71、 依据所述视图控制参数将待处理三维模型的最小包围盒的原始坐标变 换为所述视图窗口坐标系下的视图坐标 ;
本实施例中的包围盒是一个包容三角网三维模型的立方体或者二维长方形。
步骤 S72、 计算所述三维模型的最小包围盒在所述视图窗口坐标系下的外包矩形 和距离视点最近的 Z 坐标 ;
步骤 S73、 按照距离视点由近及远的顺序将所述待处理三维模型进行排序。
然后在消隐分析的过程中, 依次按照距离视点由近及远的顺序取三维模型数据, 判断所述三维模型距离视点最近的 Z 坐标是否大于此三维模型的最小包围盒在所述视图 窗口内所对应的全部像素的深度值和视点计算出的距离, 若是, 则舍去所述三维模型, 不参 与消隐分析, 若否, 将所述三维模型为当前待处理三维模型进行消隐分析。
当与视图控制参数对应的视图窗口内的像素值不全为 0, 即, 当前进行显示的视 图窗口中显示有三维模型数据时, 通过上述步骤, 将被视图窗口中已经存在的三维模型数 据遮挡的三维模型进行舍去, 无需参与消隐分析, 从而在一定程度上, 提高了数据的处理效 率。
在对三角网三维模型数据进行消隐分析后, 依据所述消隐分析的结果, 化简所述 三维模型数据的过程如图 8 所示, 包括 :
步骤 S81、 从待分析三角网三维模型中选取当前待分析三角网三维模型 ;
步骤 S82、 从组成所述选取的当前待分析三角网三维模型的三角形中选取当前待 分析三角形, 确定其标识号 ;
其标识号的确定方法同步骤 S62 方法相同。
步骤 S83、 判断所述标识号是否存在于所述预设数组中, 若存在, 则执行步骤 S84, 若不存在, 则执行步骤 S85 ;
步骤 S84、 保留所述三角形, 执行步骤 S86 ;
步骤 S85、 舍去所述三角形, 执行步骤 S86 ;
步骤 S86、 判断组成所述当前待分析三角网三维模型的三角形中是否存在未被分 析三角形, 若存在, 则执行步骤 S87, 若不存在, 则执行步骤 S88 ;
步骤 S87、 确定下一待分析三角形为当前待分析三角形, 返回执行步骤 S82 ;步骤 S88、 判断所述当前待分析三角网三维模型的三角形是否全部被舍去, 若是, 则执行步骤 S89, 若否, 则执行步骤 S810 ;
步骤 S89、 舍去所述当前待分析三角网三维模型, 执行步骤 S811,
步骤 S810、 确定保留的三角形及对应的三维模型数据为所述当前待分析三角网三 维模型化简后的数据, 执行步骤 S811 ;
步骤 S811、 判断待分析三角网三维模型是否存在未分析三角网三维模型, 若是, 则 执行步骤 S812, 若否, 则结束 ;
步骤 S812、 确定下一待分析三角网三维模型为当前待分析三角网三维模型, 返回 执行步骤 S81。
经过上述步骤, 得到化简后的三角网三维模型数据。
如果上述获取消隐分析过程中, 在开始处理每个三维模型 TMi 时都记录了之前处 理过的三维模型的三角形总数 TCi, 可以不按照顺序取三维模型, 只要在取 TMi 时, 也将记录 的 TCi 同时取出用于计算标识号 ID ; 扫描线填充算法是现有技术, 在此不再赘述。
在三维模型进行消隐分析时, 要考虑三维模型的属性特征, 如对三维模型的透明 度进行编码, 避免三维模型透明部分参与消隐分析 ; 在消隐算法 Z-buffer 中可以结合物体 空间法, 如背面剔除法, 来去除一些显然不可见的表面, 从而提高消隐算法的效率。
在上述处理过程中, 所述可见的三维模型数据包括 : 可见的三维模型几何数据和 可见的三维模型纹理数据。 对三维模型进行消隐分析, 用的主要是三维模型的几何数据, 由 于三维模型几何数据可见, 则对应的纹理数据也可见 ; 三维模型几何数据不可见, 则对应的 纹理数据也不可见, 则确定所述在视图窗口中可见的三维模型数据为化简后数据的具体过 程如图 9 所示, 包括 :
步骤 S91、 确定在所述视图窗口中可见的三维模型几何数据为化简后数据 ;
步骤 S92、 确定与所述可见的三维模型几何数据对应的可见三维模型纹理数据为 化简后数据。
通过上述步骤, 首先将可见的三维模型几何数据确定为化简后数据, 然后将与可 见的三维模型几何数据对应的可见的三维模型纹理数据确定为化简后数据。
进一步的, 确定了与所述可见的三维模型几何数据对应的可见三维模型纹理数据 后可以进行进一步的处理过程包括 :
依据所述视图控制参数, 将所述可见三维模型几何数据的原始坐标变换得到所述 视图窗口的视图坐标 ;
依据所述视图坐标, 获得所述可见三维模型几何数据在所述视图窗口显示时的显 示范围 ;
当预先设定的显示规则为 : 当三维模型纹理数据在所述视图窗口中显示的范围小 于预先设定的值, 不显示所述可见三维模型几何数据对应的纹理数据时, 依据所述可见三 维模型几何数据在所述视图窗口显示时的显示范围来判断所述三维模型纹理数据在所述 视图窗口中显示的范围是否小于所述预先设定的值, 若小于, 则舍去所述可见三维模型几 何数据对应的纹理数据, 若不小于, 则保留所述可见三维模型几何数据对应的纹理数据 ;
当所述可见三维模型几何数据在所述视图窗口显示时的显示范围小于所述可见 三维模型几何数据所对应的纹理数据的原始大小时, 则将所述纹理数据依据所述纹理数据在所述视图窗口显示时的显示范围进行压缩。 最终确定压缩后的纹理数据为与所述可见三 维模型几何数据对应的纹理数据。
本实施例中的预先设定的显示规则可以根据实际的情况进行设定, 例如, 设定用 于纹理数据在当前视图参数对应的视图窗口显示的像素的个数为五个, 如果三维模型纹理 数据在所述视图窗口中显示时所需要的像素个数小于 5 个, 则该纹理数据就不需要显示。 本实施例中通过预先设定的显示规则对可见三维模型几何数据对应的纹理数据进行了预 处理, 首先去除不需要进行显示的纹理数据, 从而减小了数据传输量。
本实施例中具体的压缩过程为 :
当对可见的纹理数据进行显示时, 如果可见的纹理在视图窗口中显示的大小 ( 可 以用纹理的宽乘以纹理的高来表示 ) 小于原始纹理的大小, 则表示此纹理会有多个数据绘 制在视图窗口的同一个像素上, 因此, 可以将与该像素对应的可见的纹理数据进行化简, 只 保留在所述视图窗口中显示时可见的一个数据, 其余的去掉, 即确定与所述可见三维模型 纹理数据对应的可见三维模型几何数据在所述视图窗口中所对应的像素, 将与所述像素对 应的所述可见三维模型纹理数据中的多个数据进行化简, 只保留三维模型纹理数据中在所 述视图窗口中显示时可见的数据。
进一步的, 还包括 : 根据所述视图控制参数和三维模型几何数据, 将可见的三维模 型纹理数据合成为一个纹理 ; 重新计算所述可见的三维模型的纹理坐标。三维模型几何数 据中顶点的纹理坐标的计算方法为 :
依据所述视图控制参数将三维模型几何数据中顶点的原始坐标变换为所述视图 控制参数所表示的视图窗口下的视图坐标 ;
当所述视图坐标在所述视图控制参数所表示的视图窗口范围内, 则在此视图坐标 即为可见三维模型几何数据所对应的纹理坐标 ;
当所述视图坐标在所述视图控制参数所表示的视图窗口范围之外时, 利用所述视 图控制参数所表示的视图窗口的外包矩形对三维模型的几何数据进行裁剪, 并将裁剪后的 三维模型的几何数据中的顶点坐标确定为可见三维模型几何数据所对应的纹理坐标。
如果要将纹理坐标进行归一化操作 ( 如 OpenGL 三维引擎的纹理坐标要求归一为 0 到 1 之间 ), 则还包括 : 将所述可见三维模型几何数据所对应的纹理坐标进行归一化处理, 将上述纹理坐标的横坐标除以所述视图控制参数中视图窗口的宽度, 纵坐标除以所述视图 控制参数中视图窗口的高度。 这样可以确保化简后的三维模型的纹理数据量同原始的纹理 数据量的大小无关, 只同视图窗口的分辨率有关。
根据所述视图控制参数和三维模型几何数据, 将可见的三维模型纹理数据合成为 合成纹理的过程包括 :
依据所述视图控制参数绘制所述可见的三维模型数据, 生成与所述视图控制参数 对应的外包矩形大小相同的图像 ;
确定所述图像为所述可见的三维模型纹理数据的合成纹理。
本发明实施例所公开的三维模型数据处理方法中, 并不限定三维模型为为三角网 三维模型, 也可以为其他任何三维模型, 其采用的消隐算法也并不限定为 Roberts 算法或 Z-buffer 算法, 同样可以采用其他类型的消隐算法, 或采用将物体空间和图像空间的消隐 算法相结合的算法, 或者其他算法, 任何三维模型以及任何能够实现依据视图控制参数分析三维模型数据, 能分析出在所述视图控制参数对应的视图窗口中可见的三维模型数据的 算法同样适合本发明。
本发明同时公开了一种三维模型数据化简装置, 其结构如图 10 所示, 包括 :
参数设定模块 101, 用于设定与视图窗口对应的视图控制参数, 所述视图控制参数 至少包括 : 视图窗口的外包矩形、 视点参数和投影参数 ;
分析获取模块 102, 用于依据所述视图控制参数分析三维模型数据, 获取在所述视 图窗口中可见的三维模型数据 ;
确定模块 103, 用于确定所述在视图窗口中可见的三维模型数据为化简后数据。
具体的, 针对不同的类型的消隐算法,
当消隐算法为图象空间的消隐算法时, 所述分析获取模块包括 :
坐标变换单元, 用于依据预先设定的所述视图控制参数, 将所述三维模型数据的 原始坐标变换得到所述视图窗口的视图坐标, 所述视图窗口利用数据结构依照所述预先设 定的所述视图控制参数进行表达 ;
消隐分析单元, 用于消隐分析所述坐标变换后的三维模型数据 ;
化简单元, 用于依据所述消隐分析的结果, 化简所述坐标变换前的三维模型数据, 获取化简后的三维模型数据作为在所述视图窗口中可见的三维模型数据。
本实施例公开的三维模型数据化简装置的执行过程为对应于上述本发明实施例 所公开的方法实施例流程, 为较佳的装置实施例, 其具体执行过程可参见上述方法实施例, 在此不再赘述。
本实施例公开的三维模型数据化简装置, 通过利用预先设定的视图控制参数分析 三维模型数据, 将在与视图控制参数对应的视图窗口下不可见的三维模型数据舍去, 减小 了数据传输过程中的数据量, 提高了数据传输速度。
本发明公开的三维模型数据化简装置可以设置在计算机内, 也可以设置在手机或 其他设备内。 其既可以设置在服务器端, 在将客户端请求的数据发送之前, 首先对三维模型 数据进行化简处理, 也可将其设置在客户端, 在将其发送到实际的视图窗口前, 将数据进行 处理, 或者同时设置在服务器和客户端, 根据实际情况选择由哪一方或者双方共同进行处 理。
本发明同时公开了一种基于上述三维模型数据化简方法的三维模型数据渐进传 输方法。 以视图的角度, 用于显示三维模型的视图窗口大小确定的情况下, 因为视图窗口能 显示的像素总数就固定了, 因此无论多海量的三维模型数据, 在视图窗口上能够被显示出 来的三维模型数据的最大数量是固定的, 即用于填充完视图窗口的全部像素所需的可见三 维模型数据是固定的, 因此当客户端向服务器端请求三维模型数据进行显示时, 服务器端 只需要将在客户端显示时可见的并且客户端没有的三维模型数据 ( 增量数据 ) 传送给客户 端即可。
本发明公开的三维模型数据渐进传输方法, 依据上述原理, 利用增量数据请求发 送端的视图控制参数获取增量数据, 保证了数据的无损显示, 缩小了数据传输量, 降低了算 法复杂度。其具体实施方案如下所述 :
首先, 从增量数据请求发送端的角度对该方法进行详细描述, 本实施例公开的三 维模型数据渐进传输方法的流程如图 11 所示, 包括 :步骤 S111、 当需要请求增量数据时, 请求发送端发送增量数据请求, 所述增量数据 请求中至少包含视图控制参数, 所述视图控制参数至少包括 : 当前视图控制参数 ;
当请求发送端判断出需要请求增量数据时, 向请求接收端发送增量数据请求, 在 请求中至少包含请求发送端的当前视图控制参数。
所述当前视图控制参数就是请求发送端当前的用于显示增量数据的视图窗口所 对应的视图控制参数。
所述视图控制参数包括 : 视图窗口的外包矩形, 视点参数和投影参数 ; 所述视点 参数包括视点在世界坐标系中的位置、 视点所观察的目标位置和虚拟照相机向上的向量 ; 所述投影参数包括 : 正交投影和透视投影 ; 或者是通过上述参数得到的视图矩阵和投影矩 阵。
如果所述请求中除了视图控制参数还含有其他内容, 还需要依据所述请求中包含 的其他内容进行分析后获得增量数据。
此时, 如果请求发送端没有缓存在先化简的三维模型数据, 则此时的视图控制参 数只包括 : 请求发送端的当前视图控制参数。请求接收端依据上述参数获取到增量数据。
当所述请求发送端缓存有在先化简三维模型数据, 并且在请求接收端没有记录所 述请求发送端缓存的在先化简三维模型数据的标识号时, 所述增量数据请求还包括 : 在先 化简后三维模型数据的标识号, 和 / 或所述视图控制参数还包括 : 在先视图控制参数, 请求 接收端根据请求发送端发送的先化简后三维模型数据的标识号和 / 或在先视图控制参数, 以及当前视图控制参数获得增量数据。 所述在先视图控制参数就是请求发送端相对于本次发送增量数据请求的情况而 言的上一次发送请求增量数据时所对应的当前视图控制参数, 即请求发送端上一次请求增 量数据时, 显示三维模型数据的视图窗口所对应的视图控制参数。
当请求发送端需要发送在先化简后三维模型数据的标识号给请求接收端时, 可以 在请求发送端依据请求发送端的当前视图控制参数通过化简分析所述请求发送端缓存的 三维模型数据来获得在当前视图控制参数所对应的视图窗口中已经存在的可见三维模型 数据的标识号, 作为所述在先化简后三维模型数据的标识号发送给请求接收端, 这样可以 减少传输的数据量。
如果请求发送端缓存有在先化简三维模型数据并且在请求接收端也记录了所述 请求发送端缓存的在先化简三维模型数据的标识号, 则发送的请求中只包含请求发送端的 当前视图控制参数, 请求接收端根据当前视图控制参数以及自身记录的所述请求发送端缓 存的在先化简三维模型数据的标识号, 获得增量数据。
如果请求发送端缓存有所有从请求接收端传输过来的三维模型数据并且在请求 接收端没有记录所述请求发送端缓存的所有三维模型数据的标识号, 则发送的请求中除了 包含请求发送端的当前视图控制参数外, 还要包括请求发送端缓存的三维模型数据中在所 述请求发送端当前视图窗口中可见的三维模型数据的标识号, 请求接收端根据当前视图控 制参数以及所述请求发送端缓存的三维模型数据中在当前在视图窗口中可见的三维模型 数据的标识号获得增量数据。
所述请求发送端缓存的三维模型数据中在所述请求发送端当前视图窗口中可见 的三维模型数据的标识号, 是通过依据所述当前视图控制参数通过化简分析所述请求发送
端缓存的三维模型数据来获得的。
如果请求发送端缓存有所有从请求接收端传输过来的三维模型数据并且在请求 接收端记录了所述请求发送端缓存的所有三维模型数据的标识号, 则发送的请求中只包含 请求发送端的当前视图控制参数, 请求接收端根据当前视图控制参数以及自身记录的所述 请求发送端缓存的三维模型数据的标识号, 获得增量数据。
步骤 S112、 接收请求接收端发送的增量数据, 所述增量数据为所述请求发送端依 据所述视图控制参数分析三维模型数据, 获取在所述当前视图控制参数对应的视图窗口中 可见的三维模型数据, 并依据所述视图控制参数进行分析后获得的。
请求接收端在接收到增量数据请求后, 依据本发明所公开的三维模型数据化简方 法对三维模型数据进行化简, 并从化简后的数据中获取出增量数据, 发送给请求发送端。
进一步的, 如果在请求发送端缓存有所有从请求接收端传输过来的三维模型数 据, 将所述增量数据插入所述请求发送端缓存的三维模型数据中实现数据重建 ; 而如果在 请求发送端只缓存上一次从所述请求接收端传输过来在先三维模型数据, 则将缓存的在先 三维模型数据释放掉, 将本次的增量数据进行缓存, 如果在请求发送端的视图控制参数中 包含在先视图控制参数, 则用当前视图控制参数替换掉在先视图控制参数。
本实施例公开的三维模型数据渐进传输方法中, 请求发送端在发送增量数据请求 时, 在请求中携带有当前需要进行显示的视图窗口的视图控制参数, 使得请求接收端可以 依据所述视图控制参数, 查找到符合当前视图窗口的增量数据, 进行传输, 保证了查找到的 增量数据能够无损显示的同时, 减小了数据传输量, 提高了数据传输效率。
本发明实施例公开的又一三维模型数据渐进传输方法的流程如图 12 所示, 包括 :
步骤 S121、 接收请求发送端发送的增量数据请求, 所述增量数据请求中至少包含 视图控制参数, 所述视图控制参数至少包括 : 当前视图控制参数 ;
本实施例公开的三维模型数据渐进传输方法适用于请求接收端。 其接收的数据增 量请求中包含的内容与图 11 所示实施例中所述的请求中包含的内容相对应。同样可以包 括缓存的在先化简后三维模型数据标识号, 和 / 或所述视图参数中还包括 : 在先视图控制 参数, 依据先化简后三维模型数据标识号或在先视图控制参数获得在先化简后的三维模型 数据, 以用于后续的增量数据分析。
步骤 S122、 依据所述视图控制参数分析三维模型数据, 获取在所述视图控制参数 对应的视图窗口中可见的三维模型数据 ;
步骤 S123、 确定所述在视图窗口中可见的三维模型数据为化简后数据 ;
上述步骤的具体实现过程可以参考本发明三维模型数据化简方法实施例中所公 开的化简方法, 具体内容不再赘述。
步骤 S124、 分析所述化简后数据, 确定符合增量条件的三维模型数据为增量数 据;
步骤 S125、 发送所述增量数据给所述请求发送端。
本实施例公开的三维模型数据渐进传输方法中, 请求接收端依据请求发送端的视 图控制参数获取增量数据, 使得请求接收端只将在请求发送端所述当前的视图控制参数所 限定的视图窗口中可见的并且符合增量条件的数据发送给请求发送端。该方法中, 对三维 模型数据的分析过程依据增量数据请求中的视图控制参数进行, 即以请求发送端的当前的实际显示视图窗口为基础, 从而实现了获得的增量数据能够在请求发送端进行无损显示, 同时只将增量数据进行传输, 大大缩减了数据传输量, 提高了数据传输效率。
如果所述请求中除了视图控制参数还含有其他内容, 还需要依据所述请求中包含 的其他内容进行分析后获得增量数据。基于上述情况, 本发明公开的又一三维模型数据渐 进传输方法的流程如图 13 所示 :
步骤 S131、 接收请求发送端发送的增量数据请求, 所述增量数据请求中包括 : 在 先化简后三维模型数据标识号和视图控制参数, 所述视图控制参数至少包括 : 当前视图控 制参数 ;
当所述请求发送端缓存有从请求接受端传输过来的三维模型数据, 并且在请求接 收端没有记录所述请求发送端缓存的在先化简三维模型数据的标识号时, 所述增量数据请 求中还包括 : 在先化简后三维模型数据的标识号。
步骤 S132、 依据所述当前视图控制参数分析所述三维模型数据, 获取在所述当前 视图控制参数对应的视图窗口中可见的三维模型数据 ;
步骤 S133、 确定所述在当前视图控制参数对应的视图窗口中可见的三维模型数据 为当前化简后数据 ;
步骤 S134、 将所述当前化简后数据中和所述增量数据请求中在先化简后三维模型 数据的标识号所对应的三维模型数据相同的部分舍去 ;
步骤 S135、 确定剩余的三维模型数据作为增量数据 ;
步骤 S136、 发送所述增量数据给所述请求发送端。
本实施例公开的方法, 尤其适用于在请求发送端只缓存了本次三维场景的上一个 的三维场景中视图窗口显示的三维模型数据的情况。 由于请求中包含了在先化简后三维模 型数据的标识号, 所以需要依据该在先化简后三维模型数据的标识号获得在先化简后的数 据, 再将此数据与当前化简结果进行对比, 以获得增量数据。
同样, 本发明公开的又一三维模型数据渐进传输方法的流程如图 14 所示, 包括 :
步骤 S141、 接收请求发送端发送的增量数据请求, 所述增量数据请求中包括 : 至 少包括视图控制参数, 所述视图控制参数包括 : 当前视图控制参数和在先视图控制参数 ;
当所述请求发送端缓存有在先化简三维模型数据并且在请求接收端没有记录所 述请求发送端缓存的在先化简三维模型数据的标识号时, 所述视图控制参数中还包括 : 在 先视图控制参数。
依据所述视图控制参数分析三维模型数据, 获取在所述视图控制参数对应的视图 窗口中可见的三维模型数据的过程如步骤 S142 和 S143 所示, 即分别依据在先视图控制参 数和当前视图控制参数对三维模型数据进行化简, 得到可见的三维模型数据。
步骤 S142、 依据所述当前视图控制参数分析所述三维模型数据, 获取在所述当前 视图控制参数对应的视图窗口中可见的三维模型数据 ;
步骤 S143、 依据所述在先视图控制参数分析所述三维模型数据, 获取在所述在先 视图控制参数对应的视图窗口中可见的三维模型数据 ;
确定所述在视图窗口中可见的三维模型数据为化简后数据的过程如步骤 S144 和 S145 所示。
步骤 S144、 确定所述在当前视图控制参数对应的视图窗口中可见的三维模型数据为当前化简后数据 ;
步骤 S145、 确定所述在在先视图控制参数对应的视图窗口中可见的三维模型数据 为在先化简后数据。
步骤 S146、 确定在所述当前化简后数据中, 且不在所述在先化简后数据中的三维 模型数据为增量数据 ;
步骤 S147、 发送所述增量数据给所述请求发送端。
本实施例公开的三维模型数据渐进传输方法, 同样适用于在请求发送端只缓存了 本次三维场景的上一个的三维场景中视图窗口显示的三维模型数据的情况。 由于请求中包 含了在先视图控制参数, 所以需要依据该参数获得在先化简后的数据, 再将此数据与当前 化简结果进行对比, 以获得增量数据。 并且, 由于其传输过程中的在先视图控制参数的数据 量要小于在先化简后缓存的三维模型数据标识号的数据量, 所以在一定程度上减小了数据 传输量, 提高了数据传输效率。
进一步的, 本发明实施例公开的又一三维模型数据渐进传输方法的流程如图 15 所示, 包括 :
步骤 S151、 接收请求发送端发送的增量数据请求, 所述增量数据请求中包括 : 至 少包括视图控制参数, 所述视图控制参数包括 : 当前视图控制参数 ;
步骤 S152、 依据所述当前视图控制参数分析所述三维模型数据, 获取在所述当前 视图控制参数对应的视图窗口中可见的三维模型数据 ;
步骤 S153、 确定所述在当前视图控制参数对应的视图窗口中可见的三维模型数据 为当前化简后数据 ;
步骤 S154、 将所述化简后的数据中, 与请求接收端保存的所述请求发送端所缓存 的三维模型数据的标识号所对应的数据相同的部分舍去 ;
步骤 S155、 确定剩余的三维模型数据作为增量数据 ;
步骤 S156、 发送所述增量数据给所述请求发送端。
本实施例公开的三维模型数据渐进传输方法, 所述请求接收端记录有所述请求发 送端缓存的三维模型数据的标识号, 因此, 只需将当前视图控制参数传输给所述请求接收 端。
本发明实施例公开的三维模型数据渐进传输方法中, 其化简方法可以为本发明实 施例公开的任意一种三维模型数据化简方法, 在此并不限定。
本发明同时公开了一种三维模型数据渐进传输装置, 其结构如图 16 所示, 包括 :
请求发送模块 161, 用于当需要请求增量数据时, 请求发送端发送增量数据请求, 所述增量数据请求中至少包含视图控制参数, 所述视图控制参数至少包括 : 当前视图控制 参数 ;
增量数据接收模块 162, 用于接收请求接收端发送的增量数据, 所述增量数据为所 述请求发送端依据所述视图控制参数分析三维模型数据, 获取在所述当前视图控制参数对 应的视图窗口中可见的三维模型数据, 并依据所述视图控制参数进行分析后获得的。
本实施例公开的三维模型数据渐进传输装置可以作为客户端。
进一步的, 当请求发送端缓存有所有从请求接收端传输过来的三维模型数据时, 还包括 : 插值模块, 用于将所述增量数据插入所述请求发送端缓存的三维模型数据中实现数据重建。
当请求发送端只缓存上一次从所述请求接收端传输过来在先三维模型数据时, 还 包括 :
数据替换模块, 用于将缓存的在先三维模型数据释放, 将本次的增量数据进行缓 存;
而当所述视图控制参数中包含在先视图控制参数时, 还包括 :
参数替换模块, 用于用所述当前视图控制参数替换所述在先视图控制参数。
本实施例公开的三维模型数据渐进传输装置的执行过程为对应于上述本发明实 施例所公开的图 11 所示方法实施例流程, 为较佳的装置实施例, 其具体执行过程可参见但 不限于上述方法实施例, 具体的处理过程在此不再赘述。
相对应的, 本发明公开了另一三维模型数据渐进传输装置, 其结构如图 17 所示, 包括 :
请求接收模块 171, 用于接收请求发送端发送的增量数据请求, 所述增量数据请求 中至少包含视图控制参数, 所述视图控制参数至少包括 : 当前视图控制参数 ;
获取模块 172, 用于依据所述视图控制参数分析三维模型数据, 获取在所述视图控 制参数对应的视图窗口中可见的三维模型数据 ;
确定模块 173, 用于确定所述在视图窗口中可见的三维模型数据为化简后数据 ;
分析模块 174, 用于分析所述化简后数据, 确定符合增量条件的三维模型数据为增 量数据 ;
增量数据发送模块 175, 用于发送所述增量数据给所述请求发送端。
本实施例公开的三维模型数据渐进传输装置可以作为服务器端, 接收上一实施例 中客户端发送的增量数据请求。
本实施例公开的三维模型数据渐进传输装置的执行过程可以为, 对应于本发明实 施例所公开的图 12-15 中任意一图所示的方法实施例流程, 为较佳的装置实施例, 其具体 执行过程可参见但不限于上述方法实施例, 具体的处理过程在此不再赘述。
本发明实施例公开的三维模型数据渐进传输装置中, 请求接收端依据请求发送端 的视图控制参数获取增量数据, 使得请求接收端只将在请求发送端所述当前的视图控制参 数所对应的视图窗口中可见的并且符合增量条件的数据发送给请求发送端。该方法中, 对 三维模型数据的分析过程依据增量数据请求中的视图控制参数进行, 即以请求发送端的实 际显示视图窗口为基础, 从而实现了获得的增量数据能够在请求发送端进行无损显示, 同 时只将增量数据进行传输, 大大缩减了数据传输量, 提高了数据传输效率。
本发明公开的三维模型数据化简装置可以设置在计算机内, 也可以设置在手机或 其他设备内。
本说明书中各个实施例采用递进的方式描述, 每个实施例重点说明的都是与其他 实施例的不同之处, 各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置 而言, 由于其与实施例公开的方法相对应, 所以描述的比较简单, 相关之处参见方法部分说 明即可。
专业人员还可以进一步意识到, 结合本文中所公开的实施例描述的各示例的单元 及算法步骤, 能够以电子硬件、 计算机软件或者二者的结合来实现, 为了清楚地说明硬件和软件的可互换性, 在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些 功能究竟以硬件还是软件方式来执行, 取决于技术方案的特定应用和设计约束条件。专业 技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能, 但是这种实现不应 认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、 处理器执 行的软件模块, 或者二者的结合来实施。 软件模块可以置于随机存储器 (RAM)、 内存、 只读存 储器 (ROM)、 电可编程 ROM、 电可擦除可编程 ROM、 寄存器、 硬盘、 可移动磁盘、 CD-ROM、 或技术 领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明, 使本领域专业技术人员能够实现或使用本发明。 对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的, 本文中所定义的 一般原理可以在不脱离本发明的精神或范围的情况下, 在其它实施例中实现。 因此, 本发明 将不会被限制于本文所示的这些实施例, 而是要符合与本文所公开的原理和新颖特点相一 致的最宽的范围。