一种虚拟动态群体的可见性判断方法

文档序号:6464171阅读:168来源:国知局

专利名称::一种虚拟动态群体的可见性判断方法
技术领域
:本发明涉及虚拟现实领域,特别涉及一种对虛拟动态群体进行绘制时的可见性判断方法。
背景技术
:在利用虛拟现实技术对大规模复杂场景进行三维可视化时,涉及到针对复杂场景的实时绘制技术,可见性判断一直是实时绘制领域一个非常重要的研究课题。由于复杂场景中通常有很大一部分处于视域外、被遮挡等不可见的状态,避免对其进行计算和绘制能节省相当大的工作量,使实时绘制效率得到提高。然而,在许多实际应用中,复杂场景不仅仅包括静态的环境模型,还包括大规模的动态群体,它们为单一的静态场景带来了勃勃生气。例如,在安全预演中,对安全预案的模拟需要大量虚拟人群作为主体;在虚拟城市中,展现出安居乐业的城市居民和兴致勃勃的游客也能给城市增添活力;在游戏中,更是需要实时渲染大量游戏角色的群体运动,等等。但为了满足逼真性的要求,虚拟群体通常具有庞大的数量以及不断变化的位置和动作,使得整体场景的空间结构不断发生变化,可见性状态也变得非常不稳定,这为实时可见性判断的处理带来了困难。因此研究大规模动态群体的可见判断方法不仅具有广泛的应用领域和重要的实用价值,也具有重大的理论意义。目前,大规模场景实时绘制的可见性方法研究中,针对动态群体,尤其是大规模动态群体的研究还比较少。由于这些方法考虑的动态群体比较少,因此通常采用实时更新场景数据结构的方法,也就是在每帧绘制前更新场景中动态物体的位置等信息,然后采用通常的静态场景可见性计算方法进行剔除。由于三维空间位置关系的复杂性和多样性,这个过程需要的计算量往往非常大,尤其对于规模庞大的动态群体,这种更新对实时计算带来很大的困难。
发明内容本发明的目的是克服现有的虚拟动态群体的可见性判断方法的计算量过大,不适合于规模庞大的虚拟动态群体的缺陷,从而提供一种高效、快速的可见性判断方法。为了实现上述目的,本发明提供了一种虚拟动态群体的可见性判断方法,根据群体仿真数据对虚拟动态群体中的各个个体的可见性进行判断;其中,所述的群体仿真数据包括个体、所述个体在某一时刻的位置、所述个体在某一时刻所对应的场景节点的ID;所述方法包括1)、对静态场景进行可见性剔除,将每一帧的可见性结果实时更新到节点可见性信息数组中;2)、将所述仿真数据中的所述个体与所述场景节点ID所对应的场景节点相结合,然后根据所述节点可见性信息数组中场景节点的可见性,实现对所述个体的可见性剔除。上述技术方案中,所述的群体仿真数据通过对只包含有个体、所述个体在某一时刻的位置的现有数据进行预处理,将所述个体与所述场景节点相关联,使得在现有数据中添加所述个体在某一时刻所对应的场景节点的ID。上述技术方案中,其特征在于,所述的场景节点由对场景进行轴向的空间分割得到。上述技术方案中,在所述的空间分割过程中,空间分割所得的最小空间的体积应大于群体仿真数据中的个体的包围盒的体积;所述空间分割的结果对应相应的场景节点,为每个所述的场景节点标记一个唯一的场景节点ID。上述技术方案中,所述的场景节点根据相互间的位置关系组织成层次化的场景树。上述技术方案中,所述的场景树包括场景二叉树、场景四叉树、场景八叉树。上述技术方案中,根据所述的场景树,采用场景树遍历的方式将所述个体与所述场景节点相关联。上述技术方案中,所述的场景树遍历方式包括步骤a)、将场景树的根节点作为当前节点;步骤b)、根据所述群体仿真数据中个体的位置坐标计算所述个体当前的包围盒,比较所述个体包围盒与当前节点包围盒的空间关系按以下情况分别处理步骤b-l)、如果当前节点为根节点,且根节点不能完全包含个体包围盒,则记录该位置对应的场景节点ID为空,同时结束查找该位置点的关联节点;否则以根节点的第一个子节点作为当前节点,重复步骤b)的操作;步骤b-2)、如果当前节点是叶子节点,且该叶子节点包含该个体包围盒,则直接记录此叶子节点的ID为该个体位置对应的场景节点ID,同时结束查找该位置的关联节点;否则记录其父节点ID为该位置对应的场景节点ID,同时结束查找;步骤b-3)、如果当前节点既不是根节点也不是叶子节点,且当前节点不能完全包含个体,则以当前节点的兄弟节点作为当前节点,重复步骤b)的操作;否则以当前节点的第一个子节点作为当前节点,重复步骤b)的操作;步骤b-4):当某层所有兄弟节点都不能包含该个体包围盒时,返回上层,记录其父节点ID为该位置对应的场景节点ID,并结束查找该位置的关联节点;步骤c):对其它位置点重复步骤b)的操作直到所有位置点全部处理*t匕几午。上述技术方案中,在所述的步骤1)中,采用静态场景可见性判断方法对静态场景进行可见性剔除。上述技术方案中,所述的步骤2)包括步骤2-1)、根据所述预处理步骤所得到的记录有场景节点ID的群体仿真数据,提取各个个体在各个时刻的场景节点ID;步骤2-2)、在虚拟过程中的某一时刻,将所述个体与所述场景节点ID所指的场景节点对应起来;步骤2-3)、根据所述的场景节点ID从所述的节点可见性信息数组中读取所述场景节点的可见性,并用所述可见性指导与所述场景节点所对应的所述个体的可见性剔除。本发明的优点在于1、本发明的方法将群体中的个体作为其相应场景节点的一份子,直接将场景的可见性赋予到个体身上,避免了单独对数量巨大的个体进行可见性判断,大大减少了空间数据结构更新和个体遮挡查询带来的消耗。2、本发明的方法采用了离线的思想,将节点绑定等工作放在预处理阶段完成,运行时只需读取属性进行判断即可,在有效剔除个体的同时也为实时绘制节省了大量的计算时间,可以有效提高系统的绘制速度。3、本发明的方法可以运用到不同类型的动态物体上,有较强的适应性。以下,结合附图来详细说明本发明的实施例,其中图1为采用本发明的方法进行虚拟人可见性判断的一个实例;图2为本发明的方法中对空间进行分割进而得到场景二叉树的示意图3为本发明的方法的流程图。具体实施例方式本发明的虛拟动态群体的可见性判断方法是要在仿真过程中将个体与场景节点相结合,然后通过对场景节点的可见性判断,从而实现对个体的可见性判断。在下面的实施例中,以虚拟人为例,结合图3对如何实现虚拟人群的可见性判断的实现过程进行详细说明。虚拟人群运动的实现过程都是在群体仿真数据的基础上实现的。群体空间位置的数据。在下面的表1中给出了现有的群体仿真数据的一个示例,该例子给出了个体m在不同时刻所处的空间位置以及属性,所述的属性包括停留时间、运动状态等信息。表1<table>tableseeoriginaldocumentpage8</column></row><table>从前面的描述中可以知道,本发明的方法需要将个体与场景节点相结合,而在上述的现有群体仿真数据中,并没有包含与场景节点相关的数据,因此,需要对现有的群体仿真数据进行改进,在数据中添加与场景节点相关的内容,从而为可见性判断提供良好的基础。在表2中给出了添加有场景节点信息的群体仿真数据的一个实例。表2<table>tableseeoriginaldocumentpage8</column></row><table><table>tableseeoriginaldocumentpage8</column></row><table>如表2所述的改进后的群体仿真数据可以通过不同的途径获得,为了方便理解,下面对其中的一种获取方式进行说明。步骤ll)、为仿真数据中每个位置点预设一个空间属性,用以记录其关联的场景节点ID;步骤12)、对场景进行轴向的二叉空间分割,组织成层次化的场景二叉树,并且使得位于场景二叉树层次最底端的节点(即叶子节点)的包围盒能够容纳个体的包围盒。对于场景二叉树中的每个节点,计算其轴向包围盒,并且赋予唯一的一个数字作为该节点的ID,对其进行标识。在图2中以二叉分割为例,给出了一个对场景进行空间分割的示意性实例,从图中可以看出,对于一个场景空间进行二叉空间分割的过程中,按照空间体积的多少从大到小进行分割,并根据分割后的最终结果为每个场景分配相应的节点ID,并通过场景二叉树反映场景间相互关系。对于场景如何进行轴向的空间分割属于成熟的现有技术,对于具体的实现细节,在此不再重复说明。步骤13)、将个体按照空间位置与场景节点相关联,具体的说,对于每个位置上的个体,需要在场景树中找到一个包围盒最小的节点,使得个体的包围盒在该节点的包围盒内部,从而将个体的可见性与对应场景的可见性统一起来。在上述的步骤13)中,要实现个体与场景节点间的关联是通过对场景二叉树进行遍历得到的,这一遍历过程具体包括步骤131)、把场景二叉树的根节点作为当前节点;步骤132)、根据个体的位置坐标计算其当前的包围盒,比较该个体包围盒(简称个体)与当前节点包围盒(简称节点)的空间关系,按以下情况分别处理a)、如果当前节点为根节点,且根节点不能完全包含个体包围盒,则记录该位置对应的场景节点ID为空,同时结束查找该位置点的关联节点;否则以根节点的第一个子节点作为当前节点,重复步骤132)的操作;b)、如果当前节点是叶子节点,且该叶子节点包含该个体包围盒,则直接记录此叶子节点的ID为该个体位置对应的场景节点ID,同时结束查找该位置的关联节点;否则记录其父节点ID为该位置对应的场景节点ID,同时结束查找;c)、如果当前节点既不是根节点也不是叶子节点,且当前节点不能完全包含个体,则以当前节点的兄弟节点作为当前节点,重复步骤132)的操作;否则以当前节点的第一个子节点作为当前节点,重复步骤132)的操作;d):当某层所有兄弟节点都不能包含该个体包围盒时,返回上层,记录其父节点ID为该位置对应的场景节点ID,并结束查找该位置的关联节点;步骤133):对其它位置点重复步骤132)的操作直到所有位置点全部处理完毕。上述步骤对如何得到改进后的群体仿真数据进行了说明,但如前所述,这只是其中的一种获取方式,在实际应用中还存在其他的实现方式,例如,在空间分割和场景树的获取过程中不仅仅包括上述步骤中的二叉空间分割和场景二叉树,还可以采用其它类型的空间分割方法,从而得到场景四叉树或场景八叉树等。上述说明中所提到的对群体仿真数据进行改进,从而将个体与场景节点相结合的方法可以在对个体的可见性进行实时判断前实现,即可以通过一个预处理操作完成对群体仿真数据的改进,这样做有利于节省虚拟动态群体所需要耗费的总体时间。得到改进的群体仿真数据后,对个体的可见性进行实时判断,包括以下步骤步骤21)、使用传统的静态场景可见性判断方法对静态场景进行可见性剔除,并将每一帧的可见性结果实时更新到节点可见性信息数组中。步骤22)、根据预处理步骤所得到的更新后的群体仿真数据,得到各个个体在各个时刻的场景节点ID;步骤23)、当虚拟过程中的时间运行到某时刻时,从群体仿真数据中分别读出各个个体和其对应的场景节点ID,并将个体与ID所指的场景节点只十应起来;步骤24)、根据ID从节点可见性信息数组中读取各个场景节点的可见性,若不可见,则不对其对应的个体做任何的计算和绘制处理,若可见,则进行后续的计算和绘制。以图1为例,假设预处理时,个体m在某时刻被绑定到ID为k的节点上,则当虚拟过程运行到这一时刻时,从仿真数据中读取个体m并绑定到节点k上;由于在节点可见性信息数组中所读取的第k项的可见性状态是0,即不可见;因此返回不可见信息,该帧不再对该个体作任何计算和绘制处理。在上述实施例中,将虚拟人作为所要虚拟的动态群体,对其可见性判断过程进行了说明,但本领域的普通技术人员应当了解,本发明的方法并不局限于对虚拟人,对于其他的动态群体同样也可以使用。最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制。尽管参照实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,对本发明的技术方案进行修改或者等同替换,都不脱离本发明技术方案的精神和范围,其均应涵盖在本发明的权利要求范围当中。权利要求1、一种虚拟动态群体的可见性判断方法,根据群体仿真数据对虚拟动态群体中的各个个体的可见性进行判断;其中,所述的群体仿真数据包括个体、所述个体在某一时刻的位置、所述个体在某一时刻所对应的场景节点的ID;所述方法包括1)、对静态场景进行可见性剔除,将每一帧的可见性结果实时更新到节点可见性信息数组中;2)、将所述仿真数据中的所述个体与所述场景节点ID所对应的场景节点相结合,然后根据所述节点可见性信息数组中场景节点的可见性,实现对所述个体的可见性剔除。2、根据权利要求1所述的虚拟动态群体的可见性判断方法,其特征在于,所述的群体仿真数据通过对只包含有个体、所述个体在某一时刻的位置的现有数据进行预处理,将所述个体与所述场景节点相关联,使得在现有数据中添加所述个体在某一时刻所对应的场景节点的ID。3、根据权利要求1所述的虛拟动态群体的可见性判断方法,其特征在于,所述的场景节点由对场景进行轴向的空间分割得到。4、根据权利要求2所述的虚拟动态群体的可见性判断方法,其特征在于,在所述的空间分割过程中,空间分割所得的最小空间的体积应大于群体仿真数据中的个体的包围盒的体积;所述空间分割的结果对应相应的场景节点,为每个所述的场景节点标记一个唯一的场景节点ID。5、根据权利要求4所述的虚拟动态群体的可见性判断方法,其特征在于,所述的场景节点根据相互间的位置关系组织成层次化的场景树。6、根据权利要求5所述的虚拟动态群体的可见性判断方法,其特征在于,所述的场景树包括场景二叉树、场景四叉树、场景八叉树。7、根据权利要求5所述的虚拟动态群体的可见性判断方法,其特征在于,根据所述的场景树,采用场景树遍历的方式将所述个体与所述场景节点相关联。8、根据权利要求7所述的虚拟动态群体的可见性判断方法,其特征在于,所述的场景树遍历方式包括步骤a)、将场景树的根节点作为当前节点;步骤b)、根据所述群体仿真数据中个体的位置坐标计算所述个体当前的包围盒,比较所述个体包围盒与当前节点包围盒的空间关系按以下情况分别处理步骤b-l)、如果当前节点为根节点,且根节点不能完全包含个体包围盒,则记录该位置对应的场景节点ID为空,同时结束查找该位置点的关联节点;否则以根节点的第一个子节点作为当前节点,重复步骤b)的操作;步骤b-2)、如果当前节点是叶子节点,且该叶子节点包含该个体包围盒,则直接记录此叶子节点的ID为该个体位置对应的场景节点ID,同时结束查找该位置的关联节点;否则记录其父节点ID为该位置对应的场景节点ID,同时结束查找;步骤b-3)、如果当前节点既不是根节点也不是叶子节点,且当前节点不能完全包含个体,则以当前节点的兄弟节点作为当前节点,重复步骤b)的操作;否则以当前节点的第一个子节点作为当前节点,重复步骤b)的操作;步骤b-4):当某层所有兄弟节点都不能包含该个体包围盒时,返回上层,记录其父节点ID为该位置对应的场景节点ID,并结束查找该位置的关联节点;步骤c):对其它位置点重复步骤b)的操作直到所有位置点全部处理完毕。9、根据权利要求1所述的虚拟动态群体的可见性判断方法,其特征在于,在所述的步骤1)中,釆用静态场景可见性判断方法对静态场景进行可见性剔除。10、根据权利要求1所述的虛拟动态群体的可见性判断方法,其特征在于,所述的步骤2)包括步骤2-1)、根据所述预处理步骤所得到的记录有场景节点ID的群体仿真数据,提取各个个体在各个时刻的场景节点ID;步骤2-2)、在虚拟过程中的某一时刻,将所述个体与所述场景节点ID所指的场景节点对应起来;步骤2-3)、根据所述的场景节点ID从所述的节点可见性信息数组中读取所述场景节点的可见性,并用所述可见性指导与所述场景节点所对应的所述个体的可见性剔除。全文摘要本发明提供一种虚拟动态群体的可见性判断方法,用于在群体仿真数据的基础上对虚拟动态群体中的各个个体的可见性进行判断;其中,的群体仿真数据包括个体、个体在某一时刻的位置、个体在某一时刻所对应的场景节点的ID;方法包括对静态场景进行可见性剔除,将每一帧的可见性结果实时更新到节点可见性信息数组中;将仿真数据中的个体与场景节点ID所对应的场景节点相结合,然后根据节点可见性信息数组中场景节点的可见性,实现对个体的可见性剔除。本发明的方法将群体中的个体作为其相应场景节点的一份子,直接将场景的可见性赋予到个体身上,避免了单独对数量巨大的个体进行可见性判断,大大减少了空间数据结构更新和个体遮挡查询带来的消耗。文档编号G06T15/00GK101339667SQ20081011306公开日2009年1月7日申请日期2008年5月27日优先权日2008年5月27日发明者徐文彬,搏束,竹王,王兆其申请人:中国科学院计算技术研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1