一种虚拟场景中对象的控制方法和装置与流程

文档序号:11433498阅读:179来源:国知局
一种虚拟场景中对象的控制方法和装置与流程

本申请涉及计算机技术,特别涉及一种虚拟场景中对象的控制方法和装置。



背景技术:

通过计算机提供的虚拟场景一般包括虚拟环境和虚拟对象。虚拟对象包括不动的对象和可行动的对象。一般,可行动的对象的虚拟行为是利用状态机来控制的。例如,可以设置多个状态(state)用于表示对象的不同形态,利用状态机来管理对象的状态。对象在不同的状态下可能会具有不同的属性,执行不同的动作(action)。对象在某种状态下会进行该状态对应的活动,并不断地检测是否需要进行状态跳转。当满足一定条件(例如发生特定事件(event))时,对象的状态会发生变更,即状态转移(transition),使状态机从一种状态切换到另一种状态。假设某对象有n种状态,每种状态有(n-1)种切换的可能。每增加一种状态,需要为该状态配置n种状态转移规则。同时,还需要对现有的n种状态的实现方案进行修改,以在各状态中增加与新状态相关的转移规则。这对系统的实现和维护提出了巨大的考验。同时,系统运行时,在各状态下都需要不断地进行状态转移决策,计算量非常大。

申请内容

本申请实施例提供了一种虚拟场景中对象的控制方法和控制装置,可以解决目前基于状态机的控制机制实现和维护复杂度高、控制过程计算量大的问题。

各实施例的虚拟场景中对象的控制方法可以包括:

为虚拟场景中的对象预先设置多个行动目标,每个行动目标与所述对象的至少一个虚拟行为相关联;

获取所述虚拟场景的当前参数值,根据所述当前参数值从所述多个行动目标中确定一个行动目标作为所述对象的当前行动目标;

获取与所述当前行动目标关联的至少一个虚拟行为;

使所述对象执行所述至少一个虚拟行为;

确定所述当前行动目标的达成状态,当所述达成状态为已达成或不可达时,执行所述获取所述虚拟场景的当前参数值及确定所述对象的当前行动目标的步骤。

各实施例的虚拟场景中对象的控制装置可以包括:存储模块、目标决策模块、目标执行模块和目标监控模块,其中

所述存储模块用于,存储为虚拟场景中的对象预先设置的多个行动目标,并存储与每个行动目标相关联的所述对象的至少一个虚拟行为;

所述目标决策模块用于,获取所述虚拟场景的当前参数值,根据所述当前参数值从所述多个行动目标中确定一个行动目标作为所述对象的当前行动目标;

所述目标执行模块用于,获取与所述当前行动目标关联的至少一个虚拟行为,使所述对象执行所述至少一个虚拟行为;

所述目标监控模块用于,确定所述当前行动目标的达成状态,当所述达成状态为已达成或不可达时,使所述目标决策模块执行所述获取所述虚拟场景的当前参数值及确定所述对象的当前行动目标的步骤。

各实施例不再采用传统的基于状态机的控制方式,而是通过设定行动目标来控制虚拟对象的行为,而目标的决策过程与目标的执行过程无关,使得虚拟对象行为模式的实现和维护变得简单,控制机制具有较强的可扩展性。此外,控制系统运行过程中,确定目标后,只需等待目标达成,不需要反复进行状态确认、状态转移决策,大大减少了控制过程中的计算量。

附图说明

图1为本申请实施例的一种虚拟场景中对象的控制方法。

图2为本申请实施例中用树状图表示的组合目标的示意图。

图3为本申请实施例中确定当前行动目标的达成状态的方法流程图。

图4为本申请实施例中实现原子目标的方法流程图。

图5为本申请实施例的确定当前行动目标的方法流程图。

图6为本申请实施例的确定当前行动目标的方法流程图。

图7为本申请实施例中进行目标决策的决策树的一部分的示意图。

图8为本申请实施例的执行目标决策的方法流程图。

图9为本申请实施例的虚拟场景中对象的控制装置的示意图。

具体实施方式

为了描述上的简洁和直观,下文通过描述若干代表性的实施例来对本申请的方案进行阐述。实施例中大量的细节仅用于帮助理解本申请的方案,本申请的技术方案实现时可以不局限于这些细节。为了避免不必要地模糊了本申请的方案,一些实施方式没有进行细致地描述,而是仅给出了框架。下文中,“包括”是指“包括但不限于”,“根据……”是指“至少根据……,但不限于仅根据……”,应当解释为除了之后提到的特征外,其它特征也可以存在。

本申请实施例提供了一种虚拟场景中对象的控制方法和控制装置,可以应用在例如虚拟现实、游戏等场景中。各实施例不再采用传统的基于状态机的控制方式,而是通过设定行动目标来控制虚拟对象的行为,而目标的决策过程与目标的执行过程无关,使得虚拟对象行为模式的设计和维护变得简单,控制机制具有较强的可扩展性。

图1为本申请实施例的一种虚拟场景中对象的控制方法。如图1所示,该方法10可以包括以下步骤。

步骤s11,为虚拟场景中的对象预先设置多个行动目标,每个行动目标与所述对象的至少一个虚拟行为相关联。

步骤s12,获取所述虚拟场景的当前参数值,根据所述当前参数值从所述多个行动目标中确定一个行动目标作为所述对象的当前行动目标。

步骤s13,获取与所述当前行动目标关联的至少一个虚拟行为,使所述对象执行所述至少一个虚拟行为。

步骤s14,确定所述当前行动目标的达成状态,当所述达成状态为已达成或不可达时,执行所述获取所述虚拟场景的当前参数值及确定所述对象的当前行动目标的步骤。

各实施例的方法可以由某种计算设备执行,例如服务器(或服务器集群)、用户设备,如pc、手机、游戏机、掌上游戏机,等。

虚拟场景是指计算设备通过显示设备向用户展示的虚拟空间,其中可以包括虚拟的静止物、虚拟的可行动的对象(如虚拟的动物、人、机器、怪物,等)。计算设备需要在虚拟场景(如游戏场景中)通过某种控制机制来控制某些对象的虚拟行为,使其模拟动物、人、机器等的行为。

虚拟场景的当前参数值是指虚拟场景在运行过程中各个组成部分的各种参数和运行状态参数在当前时间点的取值。组成部分可以包括虚拟景物、固定的物体、可行动的对象,等。运行状态参数可以包括当前展示的虚拟地点的在虚拟空间中的位置、当前虚拟空间中的时间、游戏进度,等等。

各实施例通过模拟人类思维方式,为虚拟对象配置了多种行动目标,例如攻击、逃跑、躲藏、追随、静止,等。每个行动目标与对象的至少一个虚拟行为相关联。相关的虚拟行为是为了完成该行动目标所需要执行的一种或者多种虚拟行为。例如,攻击相关的虚拟行为可以包括移动、击打、释放法术,等。可以根据虚拟场景的当前参数值从多个行动目标中确定某对象的当前行动目标。例如,可以根据该对象周围预设范围内是否有可攻击的对象、可攻击对象的属性和数量、该对象的状态值(如血量、视野范围、攻击范围等)、该对象所处位置的虚拟地形等,来确定该对象的当前行动目标是攻击、逃跑或躲藏。确定了该对象的当前行动目标后,就可以使该对象执行当前行动目标关联的至少一个虚拟行为。当目标达成或者判断目标不可达时,则重新进行目标决策,确定新的行动目标。可见,目标的决策过程与目标的执行过程无关,可以分别设计和实现,使得虚拟对象行为模式的设计和维护变得简单,控制机制具有较强的可扩展性。此外,控制系统运行过程中,确定目标后,只需等待目标达成,不需要反复进行状态确认、状态转移决策,大大减少了控制过程中的计算量。

为了使虚拟对象的行为模式更加智能,各实施例还模拟人类思维,配置一些较为复杂的行为目标,以下称为组合目标。可以预先设置多个原子目标和至少一个组合目标,为每个原子目标关联至少一个虚拟行为(以下也称为目标的关联行为)。每个组合目标包括至少一个子目标,每个子目标是组合目标或原子目标。这样,组合目标可以分解为子目标,还可以将子目标进一步分解。经过逐步分解,组合目标最终可以分解为多个不可拆解的简单目标,以下称为原子目标。原子目标简单到可以由一个或者少量的几个行为来达成。因此,原子目标与这一个或者几个行为相关联,而组合目标则不直接与行为相关联。确定组合目标的关联行为时,可以将组合目标分解为原子目标的集合,将集合中的各原子目标关联的虚拟行为作为该组合目标所关联的虚拟行为。

组合目标的结构可以用一个树状图来表示,组合目标作为根节点,原子目标作为叶节点。图2为本申请实施例中用树状图表示的组合目标的示意图。图2中,组合目标1包括三个子目标,分别为组合目标2、原子目标3和组合目标3。组合目标2又包括两个子目标,分别为原子目标1和原子目标2。组合目标3包括原子目标4。例如,组合目标1可以是移动到目标并攻击,其子目标为移动到目标和攻击。移动到目标和攻击为原子目标。移动到目标的关联行为是尝试移动到目标点,如果对象的当前位置没有达到目标点,则不断尝试向目标点移动。攻击的关联行为是尝试攻击目标,只要可以攻击,就不断尝试攻击。因此,移动到目标和攻击这一组合目标所关联的行为就是该组合目标的树状形式中的各个叶节点(即原子目标)的关联行为。

图3为本申请实施例中确定当前行动目标的达成状态的方法流程图。如图3所示,该方法30可以包括以下步骤。

步骤s31,将当前行动目标分解为原子目标的集合,获取集合中各原子目标的达成状态。

步骤s32,当所述各原子目标中存在一个原子目标的达成状态为不可达时,判定所述当前行动目标的达成状态为不可达。

步骤s33,当所述各原子目标中存在一个原子目标的达成状态为未达成时,判定所述当前行动目标的达成状态为未达成。

步骤s34,当所述各原子目标的达成状态均为已达成时,判定所述当前行动目标的达成状态为已达成。

通过将组合目标分解为原子目标,并行执行各原子目标的关联行为,简化了复杂目标的实现机制,并且原子目标可以单独进行修改和维护,进一步提高了系统的可扩展性、降低了维护的复杂度。

图4为本申请实施例中实现原子目标的方法流程图。如图4所示,方法40可以包括以下步骤。

步骤s41,获取为原子目标配置的达成条件。

步骤s42,获取达成条件指定的参数的当前值。

步骤s43,判断当前值是否满足达成条件。

步骤s44,当所述当前值不满足达成条件时,执行该原子目标关联的虚拟行为。

步骤s45,当所述当前值满足达成条件时,判定该原子目标已达成。

通过设计简单的原子目标,使其对设定的目的不断进行尝试,直到达到目的,而不必依赖状态机中在各状态中进行反复的状态确认、作出转移决策、转移到自身时再重复自身状态对应的操作,使得虚拟对象的行为模式更加接近人类智能,并提高了执行效率。

本申请实施例中,进行目标决策只需要依据当前虚拟场景的参数值选择当前最合适的行为目标,而不必陷入各种状态及各种状态下的大量状态转移条件中。各实施例中,可以预先设置每个行动目标的执行条件,从多个行动目标中确定执行条件与所述当前参数值匹配的行动目标作为所述当前行动目标。执行条件可以根据虚拟场景的需要,模拟人类思维来设置。例如,停止的执行条件可以是对象的视野范围内没有可攻击的对象、没有受到攻击,之类;移动到目标并攻击的执行条件可以是受到攻击、或者视野范围内有可攻击的对象,等。进行目标决策时,只需要选择执行条件与当前参数值匹配的行动目标即可。

各实施例中,目标决策可以采用各种方法,以下为几个简单的例子。

图5为本申请实施例的确定当前行动目标的方法流程图。如图5所示,方法50可以包括以下步骤。

步骤s51,获取虚拟场景的当前参数值。

步骤s52,判断第一行动目标的执行条件是否与当前参数值匹配,如果匹配,执行步骤s53;如果不匹配,执行步骤s54。

步骤s53,将第一行动目标确定为当前行动目标。

步骤s54,将第二行为目标作为第一行动目标,执行步骤s52。

一些例子中,可以为各行动目标设置优先级顺序。在进行目标决策时,根据优先级顺序依次判断各行动目标的执行条件是否与当前参数值匹配。

一些例子中,可以设置默认的行动目标。当判断各行动目标都与当前参数值匹配时,则以默认的行为目标作为当前行动目标。

一些例子可以采用决策树的方法来进行目标决策。根节点为所有行动目标的集合,叶节点为各个行动目标。每个树枝表示某个或某几个参数值构成的条件,该树枝连接的所有叶节点为该条件下备选的行动目标的集合。沿着决策树逐级进行判定,就可以最终确定一个行动目标。图6为本申请实施例的确定当前行动目标的方法流程图。如图6所示,方法60可以包括以下步骤。

步骤s61,获取虚拟场景的第一参数值。

步骤s62,在所述多个行动目标中确定与第一参数值匹配的行动目标集合。

步骤s63,判断行动目标集合中的行动目标是否多于一个,如果是,则执行步骤s64;否则,执行步骤s65。

步骤s64,获取虚拟场景的第二参数值作为第一参数值,执行步骤s62。

步骤s65,将行动目标集合中的行动目标确定为当前行动目标。

一些例子中,可以设置默认的行动目标。当判断行动目标集合中没有行动目标时,以默认的行为目标作为当前行动目标。

图7为本申请实施例中进行目标决策的决策树的一部分的示意图。图7展示的是一个决策树中的一部分,该部分表示可以执行远程攻击时,决策具体行动目标的过程。在节点71确定可以执行远程攻击,检查参数组合一{对象有攻击性,对象的武器满足当前需要的攻击距离}。当当前参数值不满足参数组合一时,到达节点72,执行停止目标,即对象静止不动。当当前参数值满足参数组合一时,检查参数组合二{没有阻挡}。当当前参数值满足参数组合二时,到达节点73,执行远程攻击目标。当当前参数值不满足参数组合一时,检查参数组合三{攻击对象在视野内}。当当前参数值满足参数组合二时,到达节点74,执行远程攻击目标。当当前参数值不满足参数组合一时,到达节点75,执行移动并寻找攻击对象的目标。

以上仅为进行目标决策的两种实现方式的例子。其它实施例中,可以根据需要采用不同的决策方法。

一些例子中,可以根据预设的时间间隔执行目标决策,即根据虚拟场景的当前参数值确定对象的当前行动目标的过程。

图8为本申请实施例的执行目标决策的方法流程图。如图8所示,该方法80可以包括以下步骤。

步骤s81,每隔预设的时间间隔,根据虚拟场景的当前参数值确定一个行动目标。

步骤s82,判断该行动目标是否为所述对象的当前行动目标,如果是,则执行步骤s84,否则执行步骤s83。

步骤s83,使对象停止执行当前行动目标关联的虚拟行为,将所述行动目标作为当前行动目标。

步骤s84,维持当前行动目标不变。

一些例子中,在步骤s82中判断该行动目标是否为所述对象的当前行动目标时,不仅要比较行动目标的标识(如名称、id、函数名,等),还可以比较行动目标的行动参数。如果行动目标的标识相同而行动参数不同,也可以认为两个行动目标不同。行动参数是指影响行动效果的参数。例如,移动的目标点可以是“移动到目标”这一行动目标的行动参数,攻击对象可以是“攻击”这一行动目标的行动参数。对于组合目标,则组合目标的行动参数包括组合目标中各原子目标的行动参数。当根据当前参数值从多个行动目标中确定一个行动目标时,可以同时确定该行动目标的行动参数,并判断该行动目标以及行动参数是否为所述对象的当前行动目标以及当前行动参数。当所述一个行动目标及所述行动参数与所述当前行动目标及当前行动参数不一致时,停止执行所述当前行动目标关联的虚拟行为,将所述一个行动目标作为当前行动目标,将所述行动参数作为当前行动参数。

本申请实施例还提供一种虚拟场景中对象的控制装置。图9为本申请实施例的虚拟场景中对象的控制装置的示意图。如图9所示,该装置90可以包括处理器91、显示接口94、存储装置96和互联机构99。存储装置96中包括操作系统97、显示模块98、数据库92和控制模块93。

处理器91可以有一个或者多个,可以在同一个物理设备中,或者分布在多个物理设备中。

装置90可以通过显示接口94将虚拟场景提供给显示设备进行显示。

数据库92包括参数库和行动目标库,存储有虚拟场景的各种参数值、为虚拟场景中的对象预先设置的多个行动目标,以及与每个行动目标相关联的所述对象的至少一个虚拟行为。

控制模块93包括:目标决策模块931、目标执行模块932和目标监控模块933。

目标决策模块931可以获取所述虚拟场景的当前参数值,根据所述当前参数值从所述多个行动目标中确定一个行动目标作为所述对象的当前行动目标。

目标执行模块932可以获取与所述当前行动目标关联的至少一个虚拟行为,使所述对象执行所述至少一个虚拟行为。

目标监控模块933可以确定所述当前行动目标的达成状态,当所述达成状态为已达成或不可达时,使目标决策模块931执行所述获取所述虚拟场景的当前参数值及确定所述对象的当前行动目标的步骤。

一些例子中,数据库92还可以存储多个原子目标和至少一个组合目标,存储每个原子目标关联的至少一个虚拟行为。每个组合目标包括至少两个子目标,每个子目标是组合目标或原子目标。目标执行模块932可以将所述当前行动目标分解为原子目标的集合,将所述集合中的各原子目标关联的虚拟行为作为所述至少一个虚拟行为。

一些例子中,目标监控模块933可以获取所述集合中各原子目标的达成状态;当所述各原子目标的达成状态均为已达成时,判定所述当前行动目标的达成状态为已达成;当所述各原子目标中存在一个原子目标的达成状态为不可达时,判定所述当前行动目标的达成状态为不可达。

一些例子中,数据库92还可以存储每个原子目标的达成条件。目标执行模块932可以针对所述集合中的每个原子目标,获取所述原子目标的达成条件,获取所述达成条件指定的参数的当前值,判断所述当前值是否满足所述达成条件;当所述当前值不满足所述达成条件时,执行所述原子目标关联的虚拟行为。

一些例子中,目标决策模块931还可以根据预设的时间间隔执行所述获取所述虚拟场景的当前参数值及确定所述对象的当前行动目标的步骤。

需要说明的是,上述各流程和各结构图中不是所有的步骤和模块都是必须的,可以根据实际的需要忽略某些步骤或模块。各步骤的执行顺序不是固定的,可以根据需要进行调整。各模块的划分仅仅是为了便于描述采用的功能上的划分,实际实现时,一个模块可以分由多个模块实现,多个模块的功能也可以由同一个模块实现,这些模块可以位于同一个设备中,也可以位于不同的设备中。另外,上面描述中采用“第一”、“第二”仅仅为了方便区分具有同一含义的两个对象,并不表示其有实质的区别。

各例中,各模块可以由专门的硬件或执行机器可读指令的硬件实现。例如,硬件可以为专门设计的永久性电路或逻辑器件(如专用处理器,如fpga或asic)用于完成特定的操作。硬件也可以包括由软件临时配置的可编程逻辑器件或电路(如包括通用处理器或其它可编程处理器)用于执行特定操作。

各模块对应的机器可读指令可以存储在非易失性计算机可读存储介质中,使计算机上操作的操作系统等来完成这里描述的部分或者全部操作。非易失性计算机可读存储介质包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。

综上所述,权利要求的范围不应局限于以上描述的例子中的实施方式,而应当将说明书作为一个整体并给予最宽泛的解释。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1