实时更新三维图像的方法和系统的制作方法

文档序号:6637893阅读:218来源:国知局
实时更新三维图像的方法和系统的制作方法
【专利摘要】本发明提出了一种实时更新三维图像的方法和系统,所述方法包括:将该三维图像进行分块处理;判断分块中的三维图像是否需要更新;对三维图像需要更新的分块,提取更新后的等值面;在提取的等值面上铺设材质;对铺设了材质的等值面执行渲染;将各个需要更新三维图像的分块中的三维图像渲染后与相邻分块进行拼接,以生成更新后的三维图像。该方法和系统具有较快的处理速度,显示图形也具有较高的精度,可适用于三维游戏,虚拟现实,模拟施工等。
【专利说明】实时更新三维图像的方法和系统

【技术领域】
[0001]本发明涉及一种图像显示的方法和系统,更具体地说,本发明涉及一种可实时显示更新后三维图像的方法和系统。

【背景技术】
[0002]在计算机图形领域,面的结构和显示是一种应用非常广泛的技术,常用于模型、地形、特效等应用中。关于面的显示技术,特别是在计算机图形学的三维图形模拟方面,起着至关重要的作用;而三维图形模拟技术是工业设计、虚拟现实、视频游戏等领域中最为核心的部分。
[0003]现有的三维图形模拟技术中在显示地形时,一般采用的是一种高度场地形的实现方法。例如,我们将一个二维图形“置于”一个三维坐标系中,此时,该二维图形上的每个像素点除具有一组二维坐标以外,还具有一个“高度值”;将该二维图形上每个像素点的“高度值”应用到相应的像素点,相当于在三维空间中对该二维图形执行了一个“拔高”的过程;将“拔高”后的像素点在三维空间中连接,在点连接形成的线构成的面上进行渲染,如此而形成一个被显示的三维图形。这种方式虽然简单有效,但是生成的三维图形是以二维图形为基础的,因此不可避免地存在一些缺陷,例如细节表现不足,图形较为粗糙等。此外,这种基于高度场地形的显示方法还有其他固有缺陷,比如不能产生横向凹凸的效果,如横向的洞穴或山坳,不能显示多层地形等;此外,这种方法必须使用美术人员画好的高度图,而后加载。因而这种显示方法在实践中存在许多局限。
[0004]由于基于高度场地形的显示方法存在上述缺陷,现在已出现了一些基于三维图形的显示方法,例如面绘制法。在面绘制法中,根据设定的域值,从体数据中提取出表面的三角面片集,再用图形学中实时渲染的方式对三角面片进行渲染,形成三维图像。面绘制法主要分为基于断层轮廓线的方法和基于体素的方法,其中,基于体素的方法以移动立方体(Marching Cubes,简称MC)算法为代表。MC算法是面显不算法中的经典算法,它也被称为“等值面提取”算法。该算法的本质是将一系列两维的切片数据看作是一个三维的数据场,从中将具有某种域值的物质抽取出来,以某种拓扑形式连接成三角面片。
[0005]现在,MC算法在医疗成像领域中得到了较为广泛的应用。然而,由于MC算法在生成三维图形时需处理大量数据,而三维图形的动态显示需要较快的处理速度,以及较高的处理精度,因此MC算法仅应用于静态图像的生成,不适用于实时显示图像。
[0006]在实际应用中,例如虚拟现实、模拟施工、游戏等场景中,不仅要求三维图形显示的精度,对图形处理速度也有很高的要求。因而,亟需一种新的三维图形显示方法,以克服上述缺陷。


【发明内容】

[0007]本发明提出了一种实时更新三维图形的方法和系统,这种方法不仅具有较高的处理精度,并且具有较高的运行速度,因此有效地解决了现有技术的弊端。
[0008]一种更新三维图像的方法,包括:将该三维图像进行分块处理;判断分块中的三维图像是否需要更新;对三维图像需要更新的分块,提取更新后的等值面;在提取的更新后的等值面上铺设材质;对铺设了材质的等值面执行渲染;将各个需要更新三维图像的分块中的三维图像渲染后与相邻分块进行拼接,以生成更新后的三维图像。
[0009]根据本发明的另一方面,采用四叉树算法执行所述分块处理。
[0010]根据本发明的另一方面,采用相交性检测的方式来判断所述分块中的三维图像是否需要更新。
[0011]根据本发明的另一方面,当接触位置为点时,通过判断经过该点的射线与分块是否相交来执行相交性检测。
[0012]根据本发明的另一方面,当接触位置为面时,通过将该接触面分割为三角形网格,并判断三角形网格中的各个三角形与分块是否相交来执行相交性检测。
[0013]根据本发明的另一方面,当接触位置为面时,通过判断该接触面的包围盒与分块构成的包围盒是否相交来执行相交性检测。
[0014]根据本发明的另一方面,提供了一种更新三维图像的系统,包括:分块处理模块,将该三维图像进行分块处理;分块更新判断模块,判断分块中的三维图像是否需要更新;等值面提取模块,对三维图像需要更新的分块,提取更新后的等值面;材质铺设模块,在提取的更新后的等值面上铺设材质;渲染模块,对铺设了材质的等值面执行渲染;三维图像拼接模块,将各个需要更新三维图像的分块中的三维图像渲染后与相邻分块进行拼接,以生成更新后的三维图像。
[0015]根据本发明的另一方面,分块处理模块采用四叉树算法执行所述分块处理。
[0016]根据本发明的另一方面,分块更新判断模块采用相交性检测的方式来判断所述分块中的三维图像是否需要更新。
[0017]根据本发明的另一方面,当接触位置为点时,分块更新判断模块通过判断经过该点的射线与分块是否相交来执行相交性检测。
[0018]根据本发明的另一方面,当接触位置为面时,分块更新判断模块通过将该接触面分割为三角形网格,并判断三角形网格中的各个三角形与分块是否相交来执行相交性检测。
[0019]根据本发明的另一方面,当接触位置为面时,分块更新判断模块通过判断该接触面的包围盒与分块构成的包围盒是否相交来执行相交性检测。
[0020]根据本发明所公开的技术方案,可实时有效地对三维图像进行更新,因而有效地解决了现有技术方案的弊端。该方案可适用于多种应用场景。

【专利附图】

【附图说明】
[0021]图1为根据本发明示例性实施例的对三维图像进行更新的方法的流程图。
[0022]图2为根据本发明示例性实施例的对三维图像进行更新的系统的框图。

【具体实施方式】
[0023]为了使本发明的特征及优点得到更清楚的了解,以下结合附图对本发明的示例性实施例进行详细说明。应当理解,这里给出的实施例只是示例性的,并不作为本发明的限制O
[0024]图1示出了根据本发明示例性实施例的对三维图像进行实时更新的方法的流程图。
[0025]为了便于说明本方法的执行过程,以游戏运行时为例,当用户对某时间点的三维地形图像进行某次操作时,该方法生成用户操作后该游戏中显示的三维地形图像。本领域的技术人员应该理解,以三维地形图像为例只是为了便于本领域技术人员更好地理解本发明,本发明并不限于三维地形图像的更新,而可应用于任何三维图像的更新。
[0026]由于显示的图像位于二维平面,可以将该显示图像视为三维地形图像在二维上的投影。若用户的操作为某次鼠标的点击,该点击在二维平面上的坐标即为用户该次点击在三维地形图像上目标的坐标在二维平面上投影的坐标。
[0027]根据本发明示例性实施例,提供了一种实时更新三维地形图像的方法,该方法包括:
[0028]在步骤101中,将该三维地形图像进行分块处理。作为分块处理的一种方式,可采用四叉树算法。四叉树是一种数据结构,其中的每个节点最多有四个子树,由于二维空间中的平面可重复地被分为四部分,因此四叉树常用于在二维图像中定位像素。在该步骤中,利用四叉树算法对该三维地形图像在二维平面上进行分块;每一分块中的三维地形图像包含多个顶点,且每个顶点具有一个三维坐标;每一分块,可视为该地形图的一个子地形图。分块处理的目的是为了判断在用户对游戏进行操作时,判断哪些分块的三维地形将发生更新,通过仅更新需更新三维地形的分块以提高图形处理速度。因此,利用四叉树算法进行分块的深度越大,需进行更新的三维地形在整体三维地形中的比例越低,因而更新三维地形时的处理速度也将越快。
[0029]在步骤102中,判断各分块中的三维地形是否需要更新。作为判断的一种方法,可采用相交性检测的方式。例如,假若引起三维地形产生变化的为某一个点(例如为用户该次鼠标的点击),确定经过该点的射线方向。对不同的游戏类型,确定该射线方向的方式也有所区别。可设想在显示的二维图像上方悬挂了一个“相机”,作为示例,若该游戏为第一人称类型的游戏,例如射击类游戏,该“相机”的位置即为游戏人物的“眼睛”;若该游戏为战略类游戏,显示的为全局的三维地形图像,该“相机”的XY坐标可设想为与显示的该三维地形的中心位置的XY坐标相等,其Z坐标随着三维地形的放大或缩小而减小或增大。该“相机”与该鼠标点击的位置的连线,即为经过该点的射线。判断各个分块与该射线之间是否相交;若相交,则与该射线相交的分块内的三维地形将发生更新。
[0030]若导致三维地形发生更新的接触位置为一个面,有两种方式可用于执行相交性检测以判断各分块的三维地形是否需更新:第一种是通过判断该接触面与分块是否相交来执行相交性检测,第二种是通过判断该接触面的包围盒与分块是否相交来执行相交性检测。
[0031]对于第一种方式,由于接触面一般是不规则的形状,为了便于检测,可将该接触面分割为三角形网格,对该网格中的每个三角形与前述的每个分块,分别进行相交性检测,若分块与某个三角形相交,则该分块内的三维地形将发生更新。
[0032]采用接触面与各个分块之间的相交性检测的方法,虽能确保显示图像的精度,但是该方法需要将该接触面分割为三角形网格,对其中的每个三角形与每个分块之间均需进行检测,需耗费大量的计算资源,因此一定程度上将影响游戏速度。
[0033]对于第二种方式,每个分块,均可视为一包围盒;而对于该接触面,可确定另一包围盒。对每个分块构成的包围盒,分别与该接触面的包围盒进行相交性检测,通过这种方式,同样可判断每个分块中的三维地形是否需要更新。采用这种方法,游戏的显示精度虽有所影响,但计算速度将大为提高。
[0034]随着四叉树算法分块的深度增加,需进行相交性检测的分块的包围盒的数量随之增加,判断需更新三维地形的分块的处理速度随之降低。因而需要在进行判断需更新的分块和三维地形的更新之间进行权衡,得出一个合理的四叉树深度以提高图形处理速度。
[0035]在步骤103中,对三维地形需要更新的分块,提取更新后的等值面。这里,三维地形中的每个点,可设想为具有某个密度值P,密度值相同的点将构成等值面。三维地形的表面,可视为具有密度值为P '的等值面。对所有体素,检测其顶点的密度值;若某个体素的八个顶点,并非均大于或小于,则该体素内部具有密度值为的等值面,即该三维地形表面的一部分。对所有满足上述条件的体素,求出体素内部具有密度值为的等值面并连接起来,即得到了该三维地形表面的整体。每个点i可视为具有一个四维坐标(Xi,Yi,zi,Pi)。首先,对需更新三维地形的分块,计算该分块更新后的三维地形数据,即该分块内每个点的四维坐标(Χ,γ,ζ,P)。此处用于计算三维地形数据的算法,与游戏本身所采用的算法相关;而更新后的三维地形表面的密度值P r,也同样由游戏本身所采用的算法得到。
[0036]对每个分块内的所有点而言,Z坐标相同的点处于同一层;将上述得到的四维坐标数据分层读入内存;扫描相邻两层数据,逐个构造体素,每个体素中的8个顶点取自于相邻的两层。对满足前述条件的体素,利用MC算法提取密度值为P '的等值面。将分块内每个满足上述条件的体素中提取的具有密度值P r的等值面相连接,形成该分块所提取的等值面。作为示例,为了加快MC算法的处理速度,可采用并行算法,采用多线程并行运行的方式,对多个体素执行MC算法以提取等值面。例如,若有m*n*k个体素需要更新,可开启(m/X) * (n/x) * (k/x)个线程来执行MC算法,每个线程对x*x*x个体素进行更新。
[0037]在步骤104中,在对每个三维地形需要更新的分块所提取的等值面上,铺设材质;在铺设材质时,需考虑被显示的三维地形的环境,以及不同位置的漫射、反射、光泽度等,综合上述因素来铺设材质。
[0038]在步骤105中,对铺设了材质的等值面执行渲染。渲染的方式一般有俯视、正视、侧视、透视几种,最常用的是采用透视的方式。在渲染前,还需确定三维地形各个部分的前后、遮挡等,以使得渲染后的三维地形具备空间感。
[0039]在步骤106中,将各个需要更新三维图像的分块中的三维图像渲染后与相邻分块进行拼接,以形成更新后的三维地形图像。
[0040]在三维地形图像更新完成后,捕捉下一次改变地形的操作,从步骤102开始,重复上述处理流程以实时显示更新后的三维地形。
[0041]图2示出了根据本发明示例性实施例的对三维图像进行实时更新的系统的框图。
[0042]为了便于说明本方法的执行过程,以游戏运行时为例,当用户对某时间点的地形图像进行某次操作时,该系统生成用户操作后该游戏中显示的三维地形图像。本领域的技术人员应该理解,以三维地形图像为例只是为了便于本领域技术人员更好地理解本发明,该系统并不限于三维地形图像的更新,而可应用于任何三维图像的更新。
[0043]所述系统包括分块处理模块201、分块更新判断模块202、等值面提取模块203、材质铺设模块204、渲染模块205、三维地形拼接模块206。
[0044]分块处理模块201对该三维地形图像进行分块处理。作为分块处理的一种方式,分块处理模块201可采用四叉树算法,对该三维地形图像,在二维平面上进行分块;每一分块中的三维图像包含多个顶点,且每个顶点具有一个三维坐标;每一分块,可视为该地形图的一个子地形图。分块处理模块201对地形执行分块处理的目的是为了判断在用户对游戏进行操作时,判断哪些分块的三维地形将发生更新,该系统通过仅更新需更新三维地形的分块以提高图形处理速度。因此,利用四叉树算法进行分块的深度越大,需进行更新的三维地形在整体三维地形中的比例越低,因而更新三维地形时的处理速度也将越快。
[0045]分块更新判断模块202判断各分块中的三维地形是否需要更新。作为判断的一种方法,对分块处理模块201得到的各个分块,分块更新判断模块202可采用相交性检测的方式。例如,假若引起三维地形产生变化的为某一个点(例如为用户该次鼠标的点击),首先确定经过该点的射线方向。对不同的游戏类型,确定该射线方向的方式也有所区别。可设想在显示的二维图像上方悬挂了一个“相机”,作为示例,若该游戏为第一人称类型的游戏,例如射击类游戏,该“相机”的位置即为游戏人物的“眼睛”;若该游戏为战略类游戏,显示的为全局的地形图像,该“相机”的XY坐标可设想为与显示的三维地形的中心位置的XY坐标相等,其Z坐标随着三维地形的放大或缩小而减小或增大。该“相机”与该鼠标点击的连线,即为经过该点的射线。判断经过分块处理模块201进行分块处理之后得到的各个分块与该射线之间是否相交;若相交,则与该射线相交的分块内的三维地形将需要更新。
[0046]若导致三维地形需要更新的接触位置为一个面,有两种方式可用于执行相交性检测以判断各分块的三维地形是否需更新:第一种是分块更新判断模块202通过判断该接触面与分块是否相交来执行相交性检测,第二种是分块更新判断模块202通过判断该接触面的包围盒与分块是否相交来执行相交性检测。
[0047]对于第一种方式,由于接触面一般是不规则的形状,为了便于检测,分块更新判断模块202可将该接触面分割为三角形网格,对该网格中的每个三角形与所述各个分块,分别进行相交性检测,若分块与某个三角形相交,则该分块内的三维地形将需要更新。
[0048]采用接触面与各个分块之间的相交性检测的方法,虽能确保显示图像的精度,但是该方法需要将该接触面分割为三角形网格,对其中的每个三角形与所述各个分块之间均需进行检测,将耗费大量的计算资源,因此一定程度上将影响游戏速度。
[0049]第二种方式中,每个分块均可被视为一包围盒;而对于该接触面,可确定另一包围盒。分块更新判断模块202对每个分块构成的包围盒,分别与该接触面的包围盒进行相交性检测。通过这种方式,同样可判断每个分块中的三维地形是否需要更新。采用这种方法,游戏的显示精度虽有所影响,但计算速度将大为提高。
[0050]随着四叉树算法分块的深度增加,需进行相交性检测的分块的包围盒的数量随之增加,判断需更新三维地形的分块的处理速度随之降低。因而需要在进行判断需更新的分块和三维地形的更新之间进行权衡,得出一个合理的四叉树深度以提高图形处理速度。
[0051]等值面提取模块203对三维地形需要更新的分块提取更新后的等值面。三维地形中的每个点,可设想为具有某个密度值P,密度值相同的点将构成等值面。三维地形的表面,可视为具有密度值为P '的等值面。对所有体素,检测其顶点的密度值;若某个体素的八个顶点,并非均大于或小于,则该体素内部具有密度值为的等值面,即该三维地形表面的一部分。对所有满足上述条件的体素,求出体素内部具有密度值为的等值面并连接起来,即得到了该三维地形表面的整体。每个点i可视为具有一个四维坐标(Xi,Yi,zi,Pi)。首先,对需更新三维地形的分块,计算该分块更新后的三维地形数据,即该分块内每个点的四维坐标(Χ,γ,ζ,P)。此处用于计算三维地形数据的算法,与游戏本身所采用的算法相关;而更新后的三维地形表面的密度值P r,也同样由游戏本身所采用的算法得到。
[0052]对每个分块内的所有点而言,Z坐标相同的点处于同一层;将上述得到的四维坐标数据分层读入内存;扫描相邻两层数据,逐个构造体素,每个体素中的8个顶点取自于相邻的两层。对满足前述条件的体素,利用MC算法提取密度值为P '的等值面。将分块内每个满足上述条件的体素中提取的具有密度值P r的等值面相连接,形成该分块所提取的等值面。作为示例,为了加快MC算法的处理速度,可采用并行算法,采用多线程并行运行的方式,对多个体素执行MC算法以提取等值面。例如,若有m*n*k个体素需要更新,可开启(m/X) * (n/x) * (k/x)个线程来执行MC算法,每个线程对x*x*x个体素进行更新。
[0053]材质铺设模块204在对每个三维地形需要更新的分块提取的等值面上,铺设材质;在铺设材质时,需考虑被显示的三维地形的环境,以及不同位置的漫射、反射、光泽度等,综合上述因素来铺设材质。
[0054]渲染模块205对铺设了材质的等值面执行渲染以完成相应分块的三维地形的更新。渲染的方式一般有俯视、正视、侧视、透视几种,最常用的是采用透视的方式。在渲染前,还需确定三维地形各个部分的前后、遮挡等,以使得渲染后的三维地形具备空间感。
[0055]三维地形拼接模块206将各个需要更新三维图像的分块中的三维图像渲染后与相邻分块进行拼接,以形成更新后的图像。
[0056]在更新完成三维地形图像后,系统捕捉下一次改变地形的操作,重复上述处理以实时显示更新后的三维地形。
[0057]以上描述了本发明的优选实施例,但是,该实施例仅是示例性的,而不是要限制本发明的范围,本发明的范围由所附权利要求书及其等同物限定。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储器或随机存储存储器等。
[0058]此外,尽管已经详细描述了本发明及其优势,但应该理解,可以在不背离所附权利要求限定的本-发明主旨和范围的情况下,进行各种不同的改变、替换和更改;而且,本发明的范围并不仅限于本说明书中描述的系统、方法和步骤的实施例。作为本发明普通技术人员应理解,通过本发明,现有的或今后开发的用于执行和根据本发明所采用的技术方案基本相同的方式或获得基本相同结果的方法和步骤根据本发明可以被使用。
【权利要求】
1.一种更新三维图像的方法,包括: 将该三维图像进行分块处理; 判断分块中的三维图像是否需要更新; 对三维图像需要更新的分块,提取更新后的等值面; 在提取的更新后的等值面上铺设材质; 对铺设了材质的等值面执行渲染; 将各个需要更新三维图像的分块中的三维图像渲染后与相邻分块进行拼接,以生成更新后的三维图像。
2.如权利要求1所述的方法,其特征在于,采用四叉树算法执行所述分块处理。
3.如权利要求2所述的方法,其特征在于,采用相交性检测的方式来判断所述分块中的三维图像是否需要更新。
4.如权利要求3所述的方法,其特征在于,当接触位置为点时,通过判断经过该点的射线与分块是否相交来执行相交性检测。
5.如权利要求3所述的方法,其特征在于,当接触位置为面时,通过将该接触面分割为三角形网格,并判断三角形网格中的各个三角形与分块是否相交来执行相交性检测。
6.如权利要求3所述的方法,其特征在于,当接触位置为面时,通过判断该接触面的包围盒与分块构成的包围盒是否相交来执行相交性检测。
7.一种更新三维图像的系统,包括: 分块处理模块,将该三维图像进行分块处理; 分块更新判断模块,判断分块中的三维图像是否需要更新; 等值面提取模块,对三维图像需要更新的分块,提取更新后的等值面; 材质铺设模块,在提取的更新后的等值面上铺设材质; 渲染模块,对铺设了材质的等值面执行渲染; 三维图像拼接模块,将各个需要更新三维图像的分块中的三维图像渲染后与相邻分块进行拼接,以生成更新后的三维图像。
8.如权利要求7所述的系统,其特征在于,分块处理模块采用四叉树算法执行所述分块处理。
9.如权利要求8所述的系统,其特征在于,分块更新判断模块采用相交性检测的方式来判断所述分块中的三维图像是否需要更新。
10.如权利要求9所述的系统,其特征在于,当接触位置为点时,分块更新判断模块通过判断经过该点的射线与分块是否相交来执行相交性检测。
11.如权利要求9所述的系统,其特征在于,当接触位置为面时,分块更新判断模块通过将该接触面分割为三角形网格,并判断三角形网格中的各个三角形与分块是否相交来执行相交性检测。
12.如权利要求9所述的系统,其特征在于,当接触位置为面时,分块更新判断模块通过判断该接触面的包围盒与分块构成的包围盒是否相交来执行相交性检测。
【文档编号】G06T19/20GK104504760SQ201410749061
【公开日】2015年4月8日 申请日期:2014年12月9日 优先权日:2014年12月9日
【发明者】黄亮 申请人:北京畅游天下网络技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1