CN113920228A - 对象编辑方法及装置 - Google Patents
对象编辑方法及装置 Download PDFInfo
- Publication number
- CN113920228A CN113920228A CN202111410573.8A CN202111410573A CN113920228A CN 113920228 A CN113920228 A CN 113920228A CN 202111410573 A CN202111410573 A CN 202111410573A CN 113920228 A CN113920228 A CN 113920228A
- Authority
- CN
- China
- Prior art keywords
- behavior tree
- behavior
- configuration information
- target
- tree
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/80—2D [Two Dimensional] animation, e.g. using sprites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2213/00—Indexing scheme for animation
- G06T2213/04—Animation description language
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2213/00—Indexing scheme for animation
- G06T2213/12—Rule based animation
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Processing Or Creating Images (AREA)
Abstract
本申请提供一种对象编辑方法及装置,其中所述对象编辑方法包括:针对目标对象添加行为树,并展示所述行为树对应的配置列表;接收通过所述配置列表对所述行为树设置的配置信息;根据所述配置信息执行所述行为树对所述目标对象进行更新。实现了对目标对象进行可视化执行逻辑的编辑,大大降低了对目标对象进行更新的人力成本以及时间成本。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种对象编辑方法及装置、计算设备和计算机可读存储介质。
背景技术
实际应用中,通常由策划人员进行动画逻辑的策划,并由程序人员进行动画逻辑的编写。然而策划人员对动画逻辑的策划可能经常存在变更,这种情况下通常需要程序人员再次配合对已完成的程序代码进行相应调整。在此过程中耗费大量人力成本以及时间成本。因此亟需提供解决上述问题的方案。
发明内容
有鉴于此,本申请实施例提供了一种对象编辑方法及装置、计算设备和计算机可读存储介质,以解决现有技术中存在的技术缺陷。
根据本申请实施例的第一方面,提供了一种对象编辑方法,包括:
针对目标对象添加行为树,并展示所述行为树对应的配置列表;
接收通过所述配置列表对所述行为树设置的配置信息;
根据所述配置信息执行所述行为树对所述目标对象进行更新。
针对目标对象添加行为树,并展示所述行为树对应的配置列表;
接收通过所述配置列表对所述行为树设置的配置信息;
根据所述配置信息执行所述行为树对所述目标对象进行更新。
可选地,所述针对目标对象添加行为树之前,还包括:
针对所述目标对象添加预先创建的行为类,并展示所述行为类对应的类配置列表;其中,所述行为类对应至少一个行为树;
采集所述类配置列表中对所述行为类的类配置信息;
相应地,所述接收通过所述配置列表对所述行为树设置的配置信息,包括:
通过在所述配置列表中输入所述行为树所属的行为类的类名称,建立所述行为树和所述行为类的对应关系,并将所述对应关系作为所述配置信息。
可选地,所述类配置列表中包括所述行为类中预先定义的变量对应的配置项;
相应地,所述对象编辑方法,还包括:
通过所述配置项对所述变量的变量值进行调整。
可选地,所述接收通过所述配置列表针对所述行为树设置的配置信息之后,还包括:
在所述行为树的数量为多个的情况下,确定所述行为树的执行顺序;
根据所述执行顺序以及所述配置信息执行所述行为树对所述目标对象进行更新。
可选地,所述根据所述配置信息执行所述行为树对所述目标对象进行更新,包括:
根据所述配置信息确定所述行为树的执行策略;
按照所述执行策略执行所述行为树对所述目标对象进行更新。
可选地,所述执行策略,包括:
依次针对所述目标对象的每帧对象帧执行所述行为树;在所述行为树返回第一目标结果的情况下,结束对所述行为树的执行;或
针对所述目标对象的每帧对象帧执行所述行为树。
可选地,所述执行策略,包括:
接收用户针对控件的点击指令;响应于所述点击指令针对所述目标对象中的第一对象帧序列执行所述行为树,其中,所述第一对象帧序列由所述目标对象的对象帧序列中所述点击指令对应的对象帧以及排列在所述点击指令对应的对象帧之后的对象帧组成;或
接收用户针对输入的目标信息;响应于所述目标信息针对所述目标对象的中的第二对象帧序列执行所述行为树,其中,所述第二对象帧序列由所述目标对象的对象帧序列中所述目标信息对应的对象帧以及排列在所述目标信息对应的对象帧之后的对象帧组成;或
对所述对象帧进行碰撞检测;在碰撞检测的检测结果为碰撞的情况下,针对所述目标对象中的第三对象帧序列执行所述行为树,其中,所述第三对象帧序列为所述目标对象的对象帧中检测结果为碰撞对应的对象帧中的至少一帧对象帧组成。
可选地,在所述行为树的数量为多个的情况下,所述执行策略,包括:
根据所述配置信息在所述行为树中确定目标行为树;
针对所述目标对象的对象帧依次执行所述行为树直至执行所述目标行为树;
在所述目标行为树返回第二目标结果的情况下,针对所述对象帧中除执行所述目标行为树之外的剩余对象帧,执行所述行为树中除所述目标行为树之外的行为树。
可选地,所述对象编辑方法,还包括:
根据所述配置信息确定所述行为树对应的目标日志级别;在所述行为树的执行过程中根据所述目标日志级别输出执行日志;和/或
根据所述配置信息确定所述行为树的输出配置信息;在所述输出配置信息为每帧输出执行结果的情况下,选择所述目标对象的对象帧中执行所述行为树的每帧对象帧,输出执行所述行为树的执行结果。
可选地,所述对象编辑方法,还包括:
采集所述目标对象对应的行为树全局配置列表中对行为树设置的全局配置信息;
相应地,所述接收通过所述配置列表对所述行为树设置的配置信息之后,还包括:
根据所述全局配置信息以及所述配置信息执行所述行为树对所述目标对象进行更新。
可选地,所述对象编辑方法,还包括:
根据所述全局配置信息确定所述行为树对应的目标日志级别,在所述行为树的执行过程中根据所述目标日志级别输出执行日志;和/或
根据所述全局配置信息确定所述行为树的输出配置信息;在所述输出配置信息为每帧输出执行结果的情况下,选择所述目标对象的对象帧中执行所述行为树的每帧对象帧,输出执行所述行为树的执行结果。
可选地,所述采集所述目标对象对应的行为树全局配置列表中对行为树设置的全局配置信息,包括:
采集所述目标对象对应的行为树全局配置列表中设置的存储路径,将所述存储路径作为所述全局配置信息,其中,所述存储路径指向的存储空间存储所述行为树对应的程序文件;
相应地,所述根据所述全局配置信息以及所述配置信息执行所述行为树对所述目标对象进行更新,包括:
根据所述存储路径从所述程序文件中加载所述行为树;
根据所述配置信息执行所述行为树对所述目标对象进行更新。
根据本申请实施例的第二方面,提供了一种对象编辑装置,包括:
添加模块,被配置为针对目标对象添加行为树,并展示所述行为树对应的配置列表;
接收模块,被配置为接收通过所述配置列表对所述行为树设置的配置信息;
更新模块,被配置为根据所述配置信息执行所述行为树对所述目标对象进行更新。
根据本申请实施例的第三方面,提供了一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述对象编辑方法的步骤。
根据本申请实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机指令,所述计算机指令被处理器执行时实现所述对象编辑方法的步骤。
本申请实施例中,通过针对目标对象添加行为树,并展示所述行为树对应的配置列表,再接收通过所述配置列表对所述行为树设置的配置信息,实现了在目标对象中对行为树进行可视化添加以及配置,并根据所述配置信息执行所述行为树对所述目标对象进行更新。由于行为树本身就是通过可视化编辑而成,因此,本申请中对目标对象进行更新是全流程采用可视化编辑,大大降低了对目标对象进行更新的操作门槛,并大大减少了程序人员对目标对象进行代码编写以及调整的人力成本以及时间成本。
附图说明
图1是本申请一实施例提供的计算设备的结构框图;
图2是本申请一实施例提供的对象编辑方法的流程图;
图3是本申请一实施例提供的对象编辑方法的示意流程图;
图4是本申请一实施例提供的一种应用于旋转木马动画场景的对象编辑方法的处理流程图;
图5是本申请一实施例提供的对象编辑方法的示意图;
图6是本申请一实施例提供的对象编辑装置的结构示意图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此本申请不受下面公开的具体实施的限制。
在本申请一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请一个或多个实施例。在本申请一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本申请一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
首先,对本发明一个或多个实施例涉及的名词术语进行解释。
行为树:是一种形式化的图形建模语言,主要用于系统和软件工程。行为树采用明确定义的符号来明确表示数百甚至数千种自然语言需求。
Behaviac:是游戏AI的开发框架组件,也是游戏原型的快速设计工具,可以用以编辑行为树。
XML:(Extensible Markup Language,可扩展标记语言),标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。
BSON:(Binary Serialized Document Format)是一种二进制形式的存储格式,采用了类似于C语言结构体的名称、对表示方法,支持内嵌的文档对象和数组对象,具有轻量性、可遍历性、高效性的特点,可以有效描述非结构化数据和结构化数据。
JSON:(JavaScript ObjectNotation,JS对象简谱)是一种轻量级的数据交换格式。
Unity:是实时3D互动内容创作和运营平台。
在本申请中,提供了一种对象编辑方法及装置、计算设备和计算机可读存储介质,在下面的实施例中逐一进行详细说明。
图1示出了根据本申请一实施例的计算设备100的结构框图。该计算设备100的部件包括但不限于存储器110和处理器120。处理器120与存储器110通过总线130相连接,数据库150用于保存数据。
计算设备100还包括接入设备140,接入设备140使得计算设备100能够经由一个或多个网络160通信。这些网络的示例包括公用交换电话网(PSTN)、局域网(LAN)、广域网(WAN)、个域网(PAN)或诸如因特网的通信网络的组合。接入设备140可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC))中的一个或多个,诸如IEEE802.11无线局域网(WLAN)无线接口、全球微波互联接入(Wi-MAX)接口、以太网接口、通用串行总线(USB)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC)接口,等等。
在本申请的一个实施例中,计算设备100的上述部件以及图1中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图1所示的计算设备结构框图仅仅是出于示例的目的,而不是对本申请范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备100可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或PC的静止计算设备。计算设备100还可以是移动式或静止式的服务器。
其中,处理器120可以执行图2所示对象编辑方法中的步骤。图2示出了本申请一实施例提供的对象编辑方法的流程图,该对象编辑方法应用于动画编辑器,具体包括以下步骤。
步骤202:针对目标对象添加行为树,并展示所述行为树对应的配置列表。
其中,目标对象,可以是任意静态图像或任意动画,比如二维图像、三维图像、二维动画、矢量动画、三维动画等,在此不做限制。实际应用中,该目标对象通过动画编辑器进行编辑或播放。
行为树,是采用树状形式进行可视化编辑所形成的程序代码,该行为树也可以理解为一个包含逻辑节点(或控制节点)和行为节点的树结构。其中,逻辑节点,用以控制整个行为树的逻辑走向;行为节点,用以定义具体执行的行为。实际应用中,该行为树的数量可以是一个也可以是多个,每个行为树用以执行不同的功能。该行为树可以是通过上述动画编辑器编辑的,也可以通过行为树编辑器或行为树编辑插件(比如:Behaviac、RainAI、Behavior Designer、Bolt等)进行预先编辑的,在此不做限制。
实际应用中,为目标对象添加行为树的目的是:通过执行行为树所表示的程序代码对目标对象进行更新。具体实施时,由于目标对象中可以包括至少一个对象(比如人物、动物、植物、物体等),而一个行为树通常对其中一个对象进行操作即可。因此,在针对目标对象添加行为树时,可以先确定行为树在目标对象中对应的对象。再针对该对象中添加行为树即可,以表示通过执行该行为树使该对象实现特定的功能或操作。
进一步的,针对目标对象添加行为树之后,为了使行为树具备执行能力和/或使行为树按照特定的方式执行等,需要对所添加的行为树进行配置。因此,本申请实施例,在添加行为树之后,展示行为树对应的配置列表,通过该配置列表提供给用户对行为树进行配置的能力。
假设目标对象为动画A,为该动画A添加预先编辑的行为树1,并展示行为树1对应的配置列表1。
具体实施时,由于行为树的数量可能是多个,但这些行为树之间是彼此独立的,无法进行数据交互共享。为了实现行为树之间的数据交互共享,可以预先创建行为类,再通过行为树的形式对行为类进行实现,以便通过行为类在行为树之间进行数据交互共享,本申请实施例,具体采用如下方式实现:
针对目标对象添加预先创建的行为类,并展示行为类对应的类配置列表;其中,行为类对应至少一个行为树;
采集类配置列表中对行为类的类配置信息;
相应地,接收通过配置列表对行为树设置的配置信息,包括:
通过在配置列表中输入行为树所属的行为类的类名称,建立行为树和行为类的对应关系,并将对应关系作为配置信息。
行为类,是指预先针对目标对象创建的类,该类中可以包括其成员属性、成员方法和实例等。该实例加载和执行行为树。行为树中的节点也可能用到类实例的成员属性或方法。具体实施时,行为类的数量也可以是一个或多个。并且行为类也存在对应的配置列表(即类配置列表)。该类配置列表用以目标对象中添加的行为类进行配置。实际应用中,类配置列表可以直接展示通过解析该行为类获得的一些信息,比如该行为类中定义的变量信息,和/或该行为类中引用的其他类型信息等,在此不做限制。此外,类配置列表还可以展示一些需要用户进行配置的信息。
相应地,类配置信息,是指通过类配置列表设置或展示的配置信息。这些类配置信息可包括通过用户对类配置列表中配置项进行调整或输入获得的,还可包括类配置列表中通过解析直接展示的信息,在此不做限制。
在针对目标对象添加行为类的基础上,由于行为树可能是基于行为类创建的。因此需要在添加行为树后,将行为树与该行为类进行关联,以便基于行为树与该行为类之间的关联,实现对行为树的执行。具体实施时,可以在行为树的配置列表中的类型对应的配置项添加该行为树对应的行为类的类名称。以便通过解析该配置信息,确定行为树和行为类之间的对应关系。并根据该对应关系获取执行行为树所需要的数据基础,进而实现对行为树的执行。
沿用上例,假设行为树1是在行为类C1的基础上建立的,因此,在添加行为树1之前,需要为该动画A添加预先创建的行为类C1,并展示行为类C1对应的类配置列表2。并采集类配置列表2中配置的类配置信息。
综上,针对目标对象预先创建行为类,在行为类的基础上创建行为树,再将创建的行为类先添加至目标对象。则在针对目标对象添加行为树之后,可以通过在配置列表中添加其所对应的行为类的类名称,在目标对象的基础上建立行为树和行为类之间的关联关系。并通过该关联关系执行行为树时,可以使行为树根据该关联关系正常引用行为类中成员属性或成员方法等。此外,不同行为树之间引用同一个成员属性,可以实现数据在行为树之间的交互共享。
进一步的,由于行为类中可能定义了一些变量,这些变量可以通过行为树中的节点进行赋值,然而一旦赋值之后,则无法在目标对象中改变。而赋值结果却影响执行行为树的执行结果。为了进一步增加赋值的灵活性,并增加执行行为树的多样性以及可变性,可以在添加行为类之后,通过类配置列表中展示这些变量,并在类配置列表中对这些变量进行更新,本申请实施例,具体通过如下方式实现:
类配置列表中包括行为类中预先定义的变量对应的配置项;
相应地,对象编辑方法,还包括:
通过配置项对变量的变量值进行调整。
具体的,行为类中预先定义的变量:可以是公有变量、私有变量和/或其他类型的变量,在此不做限制。其中,公有变量,可以该行为类之内或之外都可以访问,而私有变量在行为类之内可进行访问,在行为类之外则不可进行访问。实际应用中,由于私有变量大多是中间变量,用以临时存储数据。因此,很多情况下对私有变量进行调整的意义不大。也因此优选地,该变量为公有变量。
具体实施时,该变量在类配置列表中对应的配置项的类型可以是多种多样的。比如:该配置项可以是字符输入类型的配置项、下拉列表类型的配置项,或可选控件类型的配置项等,在此不做限制。通过配置项对应的调整方式(输入、下拉菜单、或对控件进行选择等)即可对变量进行数值(变量值)调整。
沿用上例,假设行为类C1中定义了公有变量S,该公有变量的变量值为30.在针对动画A添加该行为类C1之后,则在行为类C1对应的类配置列表2中展示该公有变量S以及其对应的变量值30,其中该变量值对应的区域为可编辑区域。通过对该区域对公有变量S的变量值进行编辑将变量值从30调整为50。
综上,通过在行为类对应的类配置列表中对行为类中定义的变量进行调整,增加了对行为树进行变更的便利性以及效率。
步骤204:接收通过所述配置列表对所述行为树设置的配置信息。
具体的,在针对目标对象添加行为树,并展示配置列表的基础上,考虑到不同的行为树的属性是不同的,比如行为树名称、对应的行为类以及行为树的执行方式等是不同的,因此,通过配置列表对行为树进行配置,可以获得行为树对应的专属配置信息。
其中,行为树名称,可以唯一标识一个行为树;行为树的执行方式,是指具体如何执行该行为树。这些配置对后续执行行为树至关重要。
步骤206:根据所述配置信息执行所述行为树对所述目标对象进行更新。
具体的,在完成行为树的配置之后,即可根据配置信息对行为树进行执行。以保障行为树可以按照策划期望的逻辑执行。通过执行行为树使目标对象中至少一个对象实现行为树所定义的方法或操作,从而实现对目标对象的更新。
具体实施时,可以通过点击动画编辑器中的执行控件,触发对行为树的执行。此外,该动画编辑器中还可以提供针对行为树的执行的暂停或终止控件等,在此不做限制。
进一步的,在执行行为树时,在行为树存在对应的行为类的情况下,可以根据配置信息中的对应关系获取对应的行为类的类配置列表中的类配置信息;并根据该行为树的配置信息以及该行为类的类配置信息执行行为树对目标对象进行更新。以保障行为树的正确执行,并保障了目标对象的更新需求。
具体实施时,由于针对目标对象可能添加多个行为树,这些行为树被添加之后,需要按照一定的顺序进行执行。为了避免这些行为树的执行顺序混乱,导致不能达到预期的执行结果,可以先确定行为树的执行顺序,再对行为树进行执行,本申请实施例,还包括:
在行为树的数量为多个的情况下,确定行为树的执行顺序;
根据执行顺序以及配置信息执行行为树对目标对象进行更新。
其中,执行顺序,是指执行行为树的顺序。实际应用中,在添加多个行为树的情况下,该执行顺序可以通过对行为树的排列顺序进行确定(而行为树的排列顺序可以由添加顺序决定),比如,先添加行为树1再添加行为树2,则行为树1排列在行为树2之前,并且行为树1以及行为树2的执行顺序为先执行行为树1,再执行行为树2。
此外,还可以根据行为树的命名规则(比如根据命名中包含的数字从小到大的顺序,确定行为树的执行顺序),或根据行为树对应的行为类的执行顺序确定行为树的执行顺序,或根据多种方式结合的方式确定行为树的执行顺序,在此不做限制。例如,行为树1对应行为类C1,行为树2对应行为类C2,其中行为类C1的执行顺序在行为类C2之前,则行为树1和行为树2的执行顺序为先执行行为树1,再执行行为树2。
综上,先确定行为树的执行顺序,再根据执行顺序以及配置信息执行行为树,可以保障有序地对行为树进行执行,也进一步保障了对目标对象进行更新的准确性。
具体实施时,由于执行行为树时,需要在对象帧的基础上进行执行,但并非所有的对象帧都需要执行行为树,因此,需要先根据行为树的配置信息确定行为树的执行策略,再按照执行策略执行行为树。本申请实施例,具体通过如下方式实现:
根据配置信息确定行为树的执行策略;
按照执行策略执行行为树对目标对象进行更新。
具体的,对象帧在目标对象为图像时,对象帧为单一的图像;在目标对象为动画时,对象帧即为动画帧。相应地,执行策略,是指执行行为树的策略,执行策略通常定义了行为树的执行与对象帧之间的关系。以便通过执行策略准确地针对需要执行行为树的对象帧执行行为树,具体的,执行策略可以包括:标准执行策略、独占执行策略、或每帧执行策略等,在此不做限制。实际应用中,可以在行为树的配置信息中设置执行策略的策略名称。通过该策略名称,确定行为树的执行策略。并按照该执行策略执行行为树。
具体的,假设行为树1对应的配置信息中包括:执行策略名称为标准执行策略,则按照标准执行策略对行为树1进行执行。
实际应用中,对于行为树的执行需求是多种多样的。其中,比较常见的需求之一是先执行行为树,在执行到特定对象帧时,停止执行行为树。该需求对应的执行策略(即标准执行策略),具体通过如下方式实现:
依次针对目标对象的每帧对象帧执行行为树;在行为树返回第一目标结果的情况下,结束对行为树的执行。
具体的,第一目标结果,是指在执行行为树返回的执行结果中预先设置的用以结束行为树执行的目标执行结果。实际应用中,执行行为树的执行结果可以由用户自行定义,比如该执行结果可以为:成功状态、失败状态或运行状态等,在此不做限制。具体实施时,依次针对目标对象的每帧对象帧执行该行为树,直至该行为树返回特定的执行结果(即第一目标结果)。
沿用上例,假设行为树1的配置信息为标准执行策略,则确定行为树1对应的执行策略为标准执行策略。在动画A中包含5帧动画帧中的情况下,这5帧动画帧的播放顺序依次为动画帧1、动画帧2、动画帧3、动画帧4以及动画帧5。若第一目标结果为:成功状态以及失败状态。并且在播放动画帧1时执行该行为树1返回的执行结果为运行状态,则在播放动画帧2时继续执行该行为树1。若返回的执行结果为成功状态,则不在后续播放动画帧3、动画帧4以及动画帧5时执行该行为树1。
综上,将第一目标结果作为行为树的执行结束条件,实现了在行为树的执行结果不为第一目标结果之前对每帧对象帧执行行为树,满足了需要针对某一对象帧执行结束对行为树进行执行的场景需求。
具体实施时,还存在需要针对目标对象中的每帧对象帧都一直执行行为树的需求,该需求对应的执行策略(即每帧执行策略),具体通过如下方式实现:
针对目标对象的每帧对象帧执行行为树。
具体的,该每帧执行策略,表明无论针对对象帧执行行为树返回的执行结果为哪种执行结果,都继续执行该行为树。实际应用中,通常在需要循环执行行为树时,为行为树配置此种执行策略。
沿用上例,假设行为树1的配置信息为每帧执行策略,则确定行为树1对应的执行策略为每帧执行策略。在动画A中包含5帧动画帧的播放顺序依次为动画帧1、动画帧2、动画帧3、动画帧4以及动画帧5的情况下,在依次播放这5帧动画帧时,针对每帧动画帧都执行行为树1。
综上,通过每帧执行行为树,实现了对行为树的循环执行,以满足需要循环执行行为树的动画场景需求。
除上述两种执行策略之外,还存在在执行或出现特定行为时,执行行为树的需求。该需求对应的执行策略,具体可以通过如下三种方式实现:
方式一:接收用户针对控件的点击指令;响应于点击指令针对目标对象中的第一对象帧序列执行行为树,其中,第一对象帧序列由目标对象的对象帧序列中点击指令对应的对象帧以及排列在点击指令对应的对象帧之后的对象帧组成。
其中,控件是指动画播放器中可被点击的按钮、链接、菜单等,在此不做限制。在方法一所示的执行策略中,接收到对控件的点击指令,将该点击指令作为执行行为树的启动指令。并在播放过程中从该点击指令对应的对象帧开始每帧执行该行为树。
目标对象的对象帧序列是指将目标对象中包含的对象帧按照播放时间的先后顺序进行排列所形成的序列。具体实施时,在接收用户针对控件的点击指令之后,将点击指令对应的对象帧以及该对象帧之后的对象帧组成第一对象帧序列,并针对该第一对象帧序列中的每帧对象帧执行该行为树。此外,也可以根据预设筛选规则,在第一对象帧序列中筛选出至少一个对象帧,再针对筛选出的对象帧执行该行为树。在此不做限制。
沿用上例,假设行为树1的配置信息为点击执行策略,则确定行为树1对应的执行策略为点击执行策略。动画A中包含5帧动画帧序列依次为动画帧1、动画帧2、动画帧3、动画帧4以及动画帧5。在动画A的播放过程中,播放动画帧3时接收到针对控件a的点击指令,则将动画帧3以及在动画帧序列中排列在动画帧3之后的动画帧4以及动画帧5组成第一动画帧序列,并通过针对第一动画帧序列中每帧动画帧执行行为树1的方式对动画A进行更新。
方式二:接收用户针对输入的目标信息;响应于目标信息针对目标对象中的第二对象帧序列执行行为树,其中,第二对象帧序列由目标对象的对象帧序列中目标信息对应的对象帧以及排列在目标信息对应的对象帧之后的对象帧组成。
其中,目标信息,是指用户输入的数字、字符串、文字或其组合形成的信息等,在此不做限制。当接收到用户输入的信息时,将该信息与预设信息进行比对。若该信息与预设信息匹配,则将输入的信息作为目标信息。并将该目标信息作为执行行为树的启动指令。并在播放过程中从该目标信息对应的对象帧开始每帧执行该行为树。具体实施时,在接收到用户输入的目标信息之后,将目标信息对应的对象帧以及该对象帧之后的对象帧组成第二对象帧序列,并针对该第二对象帧序列中的每帧对象帧执行该行为树。此外,也可以根据预设筛选规则,在第二对象帧序列中筛选出至少一个对象帧,再针对筛选出的对象帧执行该行为树。在此不做限制。
沿用上例,假设行为树1的配置信息为输入执行策略,则确定行为树1对应的执行策略为输入执行策略。动画A中包含5帧动画帧序列依次为动画帧1、动画帧2、动画帧3、动画帧4以及动画帧5。在动画A的播放过程中,播放动画帧2时接收到用户输入的信息为“你好”,该信息与预设信息“你好”匹配,则将该信息“你好”作为目标信息,并将“你好”对应的动画帧2以及该动画帧序列中排列在动画帧2之后的动画帧3、动画帧4以及动画帧5组成第二动画帧序列。并通过针对第二动画帧序列中每帧动画帧执行行为树1的方式对动画A进行更新。
方式三:依次对目标对象中的对象帧进行碰撞检测;在碰撞检测的检测结果为碰撞的情况下,针对目标对象中的第三对象帧序列执行行为树,其中,第三对象帧序列为目标对象的对象帧中检测结果为碰撞对应的对象帧中的至少一帧对象帧组成。
碰撞检测,是指检测对象帧中包含的子对象之间的是否存在碰撞进行检测。具体实施时,可以对目标对象中所有的子对象进行碰撞检测,即检测到对象帧中任意子对象出现碰撞时,碰撞检测的检测结果为碰撞。
此外,由于行为树可能是与目标对象中的其中一个子对象相关联(即该行为树执行时实现该动画对象的行为)。因此,在这种情况下对目标对象的对象帧进行碰撞检测也可以是针对对象帧中该子对象进行碰撞检测。即检测到对象帧中该子对象出现碰撞时,碰撞检测的检测结果为碰撞。
进一步的,在检测结果为碰撞的情况下,将该碰撞作为执行行为树的启动指令。实际应用中,由于目标对象的子对象之间一旦发生碰撞,则可能除了在开始出现碰撞的对象帧之后的多个对象帧中都延续该碰撞直至碰撞结束(比如目标对象的场景为子弹飞行,并在飞行过程中穿过人物的身体)。而实际场景中可能需要对开始出现碰撞对应的对象帧、或者持续碰撞对应的对象帧序列以及结束碰撞对应的对象帧这三个阶段对应的对象帧中至少一个阶段的对象帧,或这三个对象帧中至少一帧对象帧执行行为树。
因此,将检测结果为碰撞对应的对象帧中的至少一帧对象帧组成第三对象帧序列,并针对第三对象帧序列中的每帧对象帧执行该行为树。
沿用上例,假设行为树1的配置信息为碰撞执行策略,则确定行为树1对应的执行策略为碰撞执行策略。动画A中包含5帧动画帧序列依次为动画帧1、动画帧2、动画帧3、动画帧4以及动画帧5。在动画A的播放过程中,播放动画帧3时接收到针对控件a的点击指令,则将动画帧3以及动画帧4以及动画帧5组成第三动画帧序列,并通过针对第三动画帧序列中每帧动画帧执行行为树1的方式对动画A进行更新。
综上,对预先设定的用户行为/或动画行为进行检测,在检测到这些行为时再执行行为树。实现了针对行为树的动态触发执行,增加了行为树的执行方式的多样性。也满足了需要存在触发行为再执行行为树的动画场景需求。
此外,由于通常需要针对目标对象添加多个行为树,这些行为树中可能存在需要排他执行的行为树。这种需求对应的执行策略(独占执行策略),具体通过如下方式实现:
根据配置信息在行为树中确定目标行为树;
针对目标对象的对象帧依次执行行为树直至执行目标行为树;
在目标行为树返回第二目标结果的情况下,针对对象帧中除执行目标行为树之外的剩余对象帧,执行行为树中除目标行为树之外的行为树。
其中,目标行为树,是指需要排他执行的行为树,即执行该行为树之后,不再执行其他的行为树。实际应用中,可以根据行为树的配置信息,在行为树中确定执行策略设置为独占执行策略的行为树,将独占执行策略的行为树确定为目标行为树。比如,行为树1的配置信息中执行策略为独占执行策略,则将该行为树1确定为目标行为树。
第二目标结果,是指针对目标行为树预先设置的用以结束执行的执行结果。即如果执行该目标行为树的执行结果为该第二目标结果,则不再执行该目标行为树。并恢复对需在其后执行的行为树的执行。具体的,该第二目标结果,可以为成功状态、或失败状态等,在此不做限制。
假设在动画A中包含的5帧动画帧序列依次为动画帧1、动画帧2、动画帧3、动画帧4以及动画帧5的情况下,针对动画A添加了2个行为树,分别为行为树1以及行为树2。其中,行为树1的配置信息中执行策略为独占执行策略,行为树2的配置信息中执行策略为每帧执行策略。并且行为树1的执行顺序在行为树2的执行顺序之前。则先根据行为树1以及行为树2的配置信息,确定执行策略为独占执行策略的行为树1为目标行为树。再依次针对动画帧执行行为树1。假设在播放到动画帧3时,行为树1返回成功状态(即第二目标结果),则再播放动画帧4以及动画帧5时,不再执行行为树1,而是继续执行行为树2。
综上,实现了对配置了独占执行的行为树实行独占执行,以满足需要独占执行行为树的动画场景需求。
实际应用中,在动画编辑中存在对一些功能或方法使用频率较高的情况,为了避免对这些功能或方法进行重复编辑,从而增加人力成本。可以对这些使用频率较高的功能或方法以函数或者类的形式进行封装,并在需要使用该功能或方法时,直接调用该函数或继承该类即可。因此,在行为树编辑器中编辑的行为类中若存在引用动画编辑器提供的代理行为类的情况下,在该动画编辑器中执行行为树的过程中可以通过调用代理行为类对该代理行为类进行执行。
其中,代理行为类是指在动画编辑器中预先编写完成的类。具体实施时,代理行为类的数量可以是一个也可以是多个。由于该代理行为类的原始编辑平台是目标对象所处的动画编辑器。但行为树对应的行为树编辑器可能是处于另外的平台。如果在行为树的编辑过程中,需要通过行为类引用该代理行为类。可以将动画编辑器中的这些预先编辑完成的代理行为类与行为树编辑器或行为树编辑器所处的平台进行融合,以实现在对行为树的编辑过程中对该代理行为类进行直接引用。
此外,由于是在动画编辑器中执行行为树对目标对象进行更新。因此,在行为树对应的行为类存在引用代理行为类的情况下,则在动画编辑器执行该行为树的过程中需要调用该代理行为类并对该代理行为类进行执行。比如,在行为树编辑器Behaviac平台编辑行为树1的过程中,该行为树1的行为树节点通过行为类C1引用了动画编辑器Unity平台提供的代理行为类T2。则在动画编辑器Unity平台执行该行为树1的过程中调用并执行该代理行为类T2。
综上,在行为类中引用动画编辑器中预先编辑的代理行为类,实现了对预先封装的代理行为类的复用,提高了动画编辑的效率。
考虑到在行为树不同的执行阶段(比如试执行阶段、修改调试阶段、或结果查验阶段等),可能需要对行为树进行的检验粒度不同。因此,为了满足对行为树在不同阶段或不同场景的检验需求,可以对行为树设置日志级别。并根据设置的日志级别进行日志输出。本申请实施例,具体通过如下方式实现:
根据配置信息确定行为树对应的目标日志级别;在行为树的执行过程中根据目标日志级别输出执行日志。
其中,目标日志级别,是指针对执行行为树预先设置的输出日志的级别。该级别可以分为错误级别、告警级别、提示级别等,也可以分为低级别、中级别、高级别等,在此不做限制。实际应用中,目标日志级别可以表明所需要输出的执行日志的级别。此外,该目标日志级别可以表明所需输出的执行日志的最低的日志级别。比如,若目标日志级别为告警级别,表明需要输出的执行日志级别为告警级别以及高于告警级别的日志。具体实施时,可以根据实际需求进行日志级别的设定,并根据需求为行为树设置对应的目标日志级别。
进一步的,在确定目标日志级别的基础上,则在行为树的执行过程中输出对应级别的执行日志。比如,目标日志级别为告警日志级别,则在行为树的执行过程中输出告警日志级别以及高于告警日志级别的执行日志。
实际应用中,在行为树层面对每个行为树的目标日志级别进行设置(即在行为树的配置列表中进行配置),在行为树的数量为多个的情况下,可以使每个行为树存在各自对应目标日志级别。需要说明的是,在配置列表中还可以存在默认的日志级别,即在无针对性的设置行为的情况下,即可采用默认的日志级别作为目标日志级别。
沿用上例,假设在行为树1对应的配置列表中设置日志级别为错误级别。则根据该配置信息,即可确定行为树1对应的目标日志级别为错误级别。并在执行行为树1的过程中,输出日志级别为错误级别的执行日志。
综上,根据配置信息确定行为树对应的目标日志级别,并根据目标日志级别对行为树进行执行日志的输出,增加了行为树进行日志输出的差异性以及灵活性,使得日志输出可以满足用户对不同行为树的多种检验需求。
实际应用中,由于行为树是在对象帧的基础上进行执行,因此针对执行行为树的每帧对象帧都会获得执行该行为树对应的执行结果。这些执行结果在通常情况下并不会保存,因此用户不清楚行为树针对每帧对象帧的执行结果。然而实际场景中,可能存在用户需要了解行为树的每帧执行结果的情况,因此,本申请实施例,还包括:
根据配置信息确定行为树的输出配置信息;在输出配置信息为每帧输出执行结果的情况下,选择目标对象的对象帧中执行行为树的每帧对象帧,输出执行行为树的执行结果。
输出配置信息,是指针对是否输出执行行为树的执行结果所配置的信息。具体的,该输出配置信息可以为每帧输出执行结果,表明需要针对执行行为树的每帧对象帧输出执行行为树的执行结果。该输出配置信息也可以为非每帧输出执行结果,则表明无需针对每帧对象帧输出执行行为树的执行结果,此外,该输出配置信息,还可以为其它信息(比如首帧输出执行结果,或针对前10帧对象帧输出执行结果等),在此不做限制。
实际应用中,在行为树层面对每个行为树的输出配置信息进行设置(即在行为树的配置列表中进行配置),在行为树的数量为多个的情况下,可以使每个行为树存在各自对应输出配置信息。需要说明的是,在配置列表中还可以存在默认的输出配置信息,即在无针对性的设置行为的情况下,即可采用默认输出配置信息作为该输出配置信息。
沿用上例,假设在行为树1对应的配置列表中设置的输出配置信息为每帧输出执行结果。则根据该配置信息,在确定需要针对动画A中的动画帧2、动画帧帧3执行行为树1的情况下,针对动画帧2以及动画帧3分别输出执行行为树1的执行结果。
综上,根据配置信息确定行为树的输出配置信息,输出行为树的执行结果。实现了在行为树层面对执行行为树的执行结果进行输出控制,增加了输出行为树的执行结果的差异性以及灵活性。此外,通过针对执行行为树的每帧对象帧输出执行结果,使用户可以更清楚准确地了解行为树的执行情况。
实际应用中,有些行为树的配置存在共性。在行为树的数量较大时对这些共性配置进行配置,可能需要对每个行为树重复进行一样的配置操作。因此操作流程繁复。为了避免这种情况,可以在目标对象层面设置对应的全局配置列表(即行为树全局配置列表),通过行为树全局配置列表对行为树进行配置,本申请实施例,具体采用如下方式实现:
采集目标对象对应的行为树全局配置列表中对行为树设置的全局配置信息;
相应地,接收通过配置列表对行为树设置的配置信息之后,还包括:
根据全局配置信息以及配置信息执行行为树对目标对象进行更新。
其中,行为树全局配置列表,是指用以对目标对象中所添加的全部行为树进行配置的列表。具体的,行为树全局配置列表中可以包括行为树的存储路径、加载方式、日志级别以及是否日志输出行为树的每帧运行结果等配置项,在此不做限制。
相应地,全局配置信息,是指在行为树全局配置列表中所配置的信息。具体的,该全局配置信息,也可以包括行为树的存储路径、行为树的加载方式(比如以XML形式加载,还是以程序代码的形式加载等)、行为树的日志级别等,在此不做限制。实际应用中,若在该行为树全局配置列表中对行为树进行了配置,则该全局配置信息可以对目标对象中所添加的全部行为树生效。
具体实施时,针对全局配置列表的配置可以在添加行为树之前也可以在添加行为树之后,在此不做限制。进一步的,在存在全局配置信息的情况下,需要根据全局配置信息以及配置信息中的配置执行行为树。
综上,通过行为树全局配置列表对行为树进行配置,提高了行为树的配置效率,并使行为树的配置更加灵活多样。
除上述根据配置信息确定行为树的目标日志级别和/或确定行为树的输出配置信息的实现方式之外,本申请提供的第二种实施方式中,还可以根据全局配置信息确定行为树的目标日志级别和/或确定行为树的输出配置信息,具体通过如下方式实现:
根据全局配置信息确定行为树对应的目标日志级别,在行为树的执行过程中根据目标日志级别输出执行日志;和/或
根据全局配置信息确定行为树的输出配置信息;在输出配置信息为每帧输出执行结果的情况下,选择目标对象的对象帧中执行行为树的每帧对象帧,输出执行行为树的执行结果。
实际应用中,根据全局配置信息确定行为树的目标日志级别,可以通过全局配置信息中的一个配置使所有的行为树对应同一个目标日志级别。此外,为了进一步增加配置的多样性,还可以在行为类层面对目标日志级别进行设置(即在类配置列表中进行行为树的日志级别进行配置),即同一行为类的行为树对应同一个目标日志级别。
类似地,根据全局配置信息确定行为树的输出配置信息,可以通过全局配置信息中的一个配置将所有的行为树对应相同的输出配置信息。此外,为了实现执行行为树的多样性,还可以在行为类层面对输出配置信息进行设置(即在类配置列表中进行行为树的输出配置信息进行配置),即同一行为类的行为树对应同一个输出配置信息。
具体实施时,由于在根据全局配置信息确定目标日志级别之后输出执行日志的具体实现,与上述根据配置信息确定行为树的目标日志级别之后输出执行日志的具体实现类似,参考上述具体实现即可,在此不再赘述。
类似地,由于在根据全局配置信息确定行为树的输出配置信息之后输出行为树的执行结果的具体实现,与上述根据配置信息确定行为树的输出配置信息之后输出行为树的执行结果的具体实现类似,参考上述具体实现即可,在此不再赘述。
综上,根据全局配置信息确定行为树的目标日志级别和/或输出配置信息,实现了根据全局配置信息对行为树的目标日志级别和/或输出配置信息进行统一配置,在存在多个行为树的情况下,简化了配置流程,减少了配置时间。
实际应用中,由于行为树可能不是通过动画编辑器进行编辑的。动画编辑器并不确定所添加的行为树的存储路径,则在无法准确加载添加的行为树,因此,需要对行为树在动画编辑器中预先配置存储路径,以便可以根据该存储路径中对添加的行为树进行加载,本申请实施例,具体采用如下方式实现:
采集目标对象对应的行为树全局配置列表中设置的存储路径,将存储路径作为全局配置信息,其中,存储路径指向的存储空间存储行为树对应的程序文件;
相应地,根据全局配置信息以及配置信息执行行为树对目标对象进行更新,包括:
根据存储路径从程序文件中加载行为树;
根据配置信息执行行为树对目标对象进行更新。
实际应用中,由于行为树编辑完成后,需要将其以程序文件的形式进行存储。该程序文件的存储格式可以是普通的文本格式,比如:XML的格式、BSON格式、JSON格式等、也可以是行为树对应的编程语言(比如C#语言、Java语言、python语言等)对应的语言文件格式等,在此不做限制。比如行为树采用C#语言进行编码时,可以将该行为树导出(存储)成为后缀为.cs格式的程序文件。如果行为树采用Java语言进行编码时,可以将该行为树导出(存储)成为后缀为.java格式的程序文件。
具体实施时,由于行为树对应的程序文件的原始存储位置可能与动画编辑器中对数据的存储规律不同。这种情况下可以将该程序文件拷贝到特定的存储路径所指向的存储空间。再在目标对象中针对行为树配置该存储路径。在配置存储路径的基础上,即可在添加行为树之后,通过该存储路径确定该行为树对应的程序文件,并进一步通过程序文件对行为树进行读取或加载。
此外,在配置存储路径的基础上,动画编辑器还可以通过存储路径读取该程序文件中包含的行为树的行为树名称。并将读取的行为树名称在行为树对应的配置列表中行为树名称配置项对应的下拉列表中进行展示。以便用户可以通过该下拉列表中展示的行为树名称进行选择实现对行为树名称配置项的配置。
需要说明的是,除了在行为树全局配置列表中存在针对行为树的存储路径的配置项之外,还可以在行为树的配置列表中也存在行为树的存储路径的配置项。通过在配置列表中为不同的行为树配置不同的存储路径,增加了对行为树配置的灵活性,也增加了加载行为树的灵活性。
沿用上例,假设在动画A对应的行为树全局配置列表中设置的行为树的存储路径为p1。则根据该存储路径p1,在存储路径p1指向的存储空间中存储的程序文件中加载行为树1。并根据行为树1的配置信息执行行为树1对动画A进行更新。
综上,通过在行为树全局配置列表中配置行为树的存储路径,以便根据该存储路径对行为树进行加载,从而实现对行为树的有效执行,此外,通过提供对行为树的存储路径的配置,还便于对在其他平台编辑的行为树进行移植。
具体实施时,在对象编辑方法中使用Behaviac进行行为树的可视化编辑的基础上,如图3所示的本申请一实施例提供的对象编辑方法的示意流程图。Behaviac中为了支持在编辑行为树的过程中引用动画编辑器的代理运行库所提供的基础代理以及组件代理。在Behaviac运行库的基础上嵌入了代理运行库。其中,基础代理可以理解为动画编辑器预先封装的基础行为类,该基础行为类用于代理行为树中可能需要使用的对字符串、数学库等一些常规的操作。组件代理,可以理解为动画编辑器预先封装的组件行为类。该组件行为类用于代理行为树中可能需要使用的对动画编辑器中一些组件(比如按钮控件、下拉控件等)的属性操作。
进一步的,在通过Behaviac中的Behaviac节点对行为树进行编辑的过程中可以可视化导入行为树节点所需要引用的行为类。并通过可视化逻辑将编辑完成的行为树导出为可视化逻辑代码。并通过动画编辑器中的可视化执行器将针对动画编辑器中的目标对象添加该可视化逻辑代码(即行为树)。此外,还可以通过可视化执行器对行为树进行可视化行为树配置(即通过行为树配置列表对行为树进行可视化配置)以及可视化全局配置(即通过行为树全局配置列表对行为树进行全局配置)。再通过该可视化执行器执行所添加的行为树的方式对目标对象进行更新。
本申请实施例提供的对象编辑方法,通过针对目标对象添加行为树,并展示行为树对应的配置列表,再接收通过配置列表对行为树设置的配置信息,实现了在目标对象中对行为树进行可视化添加以及配置,并根据所述配置信息执行行为树对目标对象进行更新。由于行为树本身就是通过可视化编辑而成,因此,本申请中对目标对象进行更新是全流程采用可视化编辑,大大降低了对目标对象进行更新的操作门槛,并大大减少了程序人员对目标对象进行代码编写以及调整的人力成本以及时间成本。
下述结合附图4,以本申请提供的对象编辑方法在旋转木马动画场景的应用为例,对所述对象编辑方法进行进一步说明。其中,图4示出了本申请一实施例提供的一种应用于旋转木马动画场景的对象编辑方法的处理流程图,具体包括以下步骤:
步骤402:通过行为树编辑器创建针对旋转木马动画的行为类,并对与该行为类对应的行为树进行编辑。
具体的,该行为类为Agent1。与该行为类对应的行为树包括:名称为行为树t1的行为树以及名称为行为树t2的行为树。
其中,行为树1用以编辑针对旋转木马动画的倒计时进度条;行为树2用以编辑针对旋转木马动画中旋转木马的旋转逻辑,并且该行为树2的行为树节点通过该行为类Agent1定义了公有变量:speed的变量值为5圈/秒,并且通过该行为类引用了动画编辑器提供的代理行为类:Agent2。
步骤404:将编辑完成的行为树导出,并将导出的行为树拷贝至存储路径对应的存储空间。
具体的,将创建完成的行为类以及编辑完成的行为树导出为XML格式的程序文件,并将该程序文件拷贝至存储路径path1。
步骤406:动画编辑器采集在旋转木马动画的行为树全局配置列表中对行为树设置的全局配置信息,其中,全局配置信息包括行为树对应的存储路径、加载方式、目标日志级别以及输出配置信息。
具体的,在动画编辑器中在旋转木马动画的行为树全局配置列表中对行为树t1以及行为树t2进行全局配置,该全局配置包括对行为树t1以及行为树t2的存储路径、加载方式、目标日志级别以及输出配置信息等配置项进行配置,获得对应的全局配置信息。具体的,将存储路径path1配置为行为树的存储路径,以便从该存储路径中对针对旋转木马动画中添加的行为树t1以及行为树t2进行加载。
步骤408:针对旋转木马动画添加预先创建的行为类,并展示行为类对应的类配置列表。
步骤410:采集类配置列表中对行为类的类配置信息。
具体的,通过类配置列表对行为类Agent1中所引用的代理行为类Agent2,以及该行为类Agent1中定义的公有变量speed等配置项进行配置,获得行为类Agent1对应的类配置信息。
步骤412:针对旋转木马动画添加行为树,并展示行为树对应的配置列表。
具体的,可以分别添加行为树t1以及行为树t2,再通过行为树t1的配置列表对行为树t1进行配置,再通过行为树t2的配置列表对行为树t2进行配置。
步骤414:接收通过配置列表输入存储空间中存储的程序文件中行为树对应的行为树名称,将行为树名称作为行为树的配置信息。
步骤416:通过在配置列表中输入行为树所属的行为类的类名称,建立行为树和行为类的对应关系,并将对应关系作为行为树的配置信息。
步骤418:通过在配置列表中输入行为树的执行策略名称,并将该执行策略名称也作为行为树的配置信息。
具体的,如图5所示的本申请一实施例提供的对象编辑方法的示意图,在动画编辑器中对旋转木马动画的行为树进行可视化行为树配置时,可以针对每个行为树,分别在可视化行为树配置(配置列表)中配置行为树的行为树名称、执行行为树的行为类(所属的行为类)以及执行策略,具体的,通过行为树t1的配置列表,对行为树t1配置的行为树名称为:行为树t1,执行行为树的行为类为:Agent1,执行策略为:独占执行。通过行为树t2的配置列表,对行为树t2配置的行为树名称为:行为树t2,执行行为树的行为类为:Agent1,执行策略为:每帧执行。
步骤420:在对旋转木马动画进行播放的过程中,根据行为树的排列顺序,确定行为树的执行顺序。
步骤422:根据该执行顺序、全局配置信息、类配置信息以及配置信息执行行为树对旋转木马动画进行更新。
具体的,通过执行行为树对旋转木马动画进行更新,该旋转木马动画的旋转速度为10,并且在执行行为树的过程中实现对代理行为类Agent2的调用执行。
步骤424:通过类配置列表对行为类的类配置信息进行更新。
具体的,可以通过类配置列表对行为类Agent1中定义的公有变量speed的变量值进行调整,比如将speed的变量值从5圈/秒调整为10圈/秒。
步骤426:根据行为树的执行顺序、全局配置信息、更新后的类配置信息以及配置信息对旋转木马动画进行更新。
具体的,更新类配置信息后,通过执行行为树对旋转木马动画进行更新,该旋转木马动画的旋转速度变更为10圈/秒。
本申请实施例中,通过针对旋转木马动画添加行为树,并展示该行为树对应的配置列表,再接收通过配置列表对行为树设置的配置信息,实现了在旋转木马动画中对行为树进行可视化添加以及配置,并在对旋转木马动画进行播放的过程中,根据配置信息执行行为树对旋转木马动画进行更新。由于行为树本身就是通过可视化编辑而成,因此,本申请中对旋转木马动画进行更新是全流程采用可视化编辑,大大降低了对旋转木马动画进行更新的操作门槛,并大大减少了程序人员对旋转木马动画进行代码编写以及调整的人力成本以及时间成本。
与上述方法实施例相对应,本申请还提供了对象编辑装置实施例,图6示出了本申请一实施例提供的对象编辑装置的结构示意图。如图6所示,该装置包括:
添加模块602,被配置为针对目标对象添加行为树,并展示所述行为树对应的配置列表;
接收模块604,被配置为接收通过所述配置列表对所述行为树设置的配置信息;
更新模块606,被配置为根据所述配置信息执行所述行为树对所述目标对象进行更新。
可选地,所述对象编辑装置,还包括:
添加行为类模块,被配置为针对所述目标对象添加预先创建的行为类,并展示所述行为类对应的类配置列表;其中,所述行为类对应至少一个行为树;
第一采集模块,被配置为采集所述类配置列表中对所述行为类的类配置信息;
相应地,所述接收模块604,进一步被配置为:
通过在所述配置列表中输入所述行为树所属的行为类的类名称,建立所述行为树和所述行为类的对应关系,并将所述对应关系作为所述配置信息。
可选地,所述类配置列表中包括所述行为类中预先定义的变量对应的配置项;
相应地,所述对象编辑装置,还包括:
调整模块,被配置为通过所述配置项对所述变量的变量值进行调整。
可选地,所述对象编辑装置,还包括:
确定顺序模块,被配置为在所述行为树的数量为多个的情况下,确定所述行为树的执行顺序;
第一更新模块,被配置为根据所述执行顺序以及所述配置信息执行所述行为树对所述目标对象进行更新。
可选地,所述更新模块606,进一步被配置为:
根据所述配置信息确定所述行为树的执行策略;
按照所述执行策略执行所述行为树对所述目标对象进行更新。
可选地,所述执行策略,包括:
依次针对所述目标对象的每帧对象帧执行所述行为树;在所述行为树返回第一目标结果的情况下,结束对所述行为树的执行;或
针对所述目标对象的每帧对象帧执行所述行为树。
可选地,所述执行策略,包括:
接收用户针对控件的点击指令;响应于所述点击指令针对所述目标对象中的第一对象帧序列执行所述行为树,其中,所述第一对象帧序列由所述目标对象的对象帧序列中所述点击指令对应的对象帧以及排列在所述点击指令对应的对象帧之后的对象帧组成;或
接收用户针对输入的目标信息;响应于所述目标信息针对所述目标对象的中的第二对象帧序列执行所述行为树,其中,所述第二对象帧序列由所述目标对象的对象帧序列中所述目标信息对应的对象帧以及排列在所述目标信息对应的对象帧之后的对象帧组成;或
对所述对象帧进行碰撞检测;在碰撞检测的检测结果为碰撞的情况下,针对所述目标对象中的第三对象帧序列执行所述行为树,其中,所述第三对象帧序列为所述目标对象的对象帧中检测结果为碰撞对应的对象帧中的至少一帧对象帧组成。
可选地,在所述行为树的数量为多个的情况下,所述执行策略,包括:
根据所述配置信息在所述行为树中确定目标行为树;
针对所述目标对象的对象帧依次执行所述行为树直至执行所述目标行为树;
在所述目标行为树返回第二目标结果的情况下,针对所述对象帧中除执行所述目标行为树之外的剩余对象帧,执行所述行为树中除所述目标行为树之外的行为树。
可选地,所述对象编辑装置,还包括:
第一输出模块,被配置为根据所述配置信息确定所述行为树对应的目标日志级别;在所述行为树的执行过程中根据所述目标日志级别输出执行日志;和/或
第二输出模块,被配置为根据所述配置信息确定所述行为树的输出配置信息;在所述输出配置信息为每帧输出执行结果的情况下,选择所述目标对象的对象帧中执行所述行为树的每帧对象帧,输出执行所述行为树的执行结果。
可选地,所述对象编辑装置,还包括:
第二采集模块,被配置为采集所述目标对象对应的行为树全局配置列表中对行为树设置的全局配置信息;
相应地,所述对象编辑装置,还包括:
第二更新模块,被配置为根据所述全局配置信息以及所述配置信息执行所述行为树对所述目标对象进行更新。
可选地,所述对象编辑装置,还包括:
第三输出模块,被配置为根据所述全局配置信息确定所述行为树对应的目标日志级别,在所述行为树的执行过程中根据所述目标日志级别输出执行日志;和/或
第四输出模块,被配置为根据所述全局配置信息确定所述行为树的输出配置信息;在所述输出配置信息为每帧输出执行结果的情况下,选择所述目标对象的对象帧中执行所述行为树的每帧对象帧,输出执行所述行为树的执行结果。
可选地,所述第二采集模块,进一步被配置为:
采集所述目标对象对应的行为树全局配置列表中设置的存储路径,将所述存储路径作为所述全局配置信息,其中,所述存储路径指向的存储空间存储所述行为树对应的程序文件;
相应地,所述第二更新模块,进一步被配置为:
根据所述存储路径从所述程序文件中加载所述行为树;
根据所述配置信息执行所述行为树对所述目标对象进行更新。
本申请实施例中,通过针对目标对象添加行为树,并展示所述行为树对应的配置列表,再接收通过所述配置列表对所述行为树设置的配置信息,实现了在目标对象中对行为树进行可视化添加以及配置,并根据所述配置信息执行所述行为树对所述目标对象进行更新。由于行为树本身就是通过可视化编辑而成,因此,本申请中对目标对象进行更新是全流程采用可视化编辑,大大降低了对目标对象进行更新的操作门槛,并大大减少了程序人员对目标对象进行代码编写以及调整的人力以及时间成本。
上述为本实施例的一种对象编辑装置的示意性方案。需要说明的是,该对象编辑装置的技术方案与上述的对象编辑方法的技术方案属于同一构思,对象编辑装置的技术方案未详细描述的细节内容,均可以参见上述对象编辑方法的技术方案的描述。
本申请一实施例中还提供一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,所述处理器执行所述计算机指令时实现所述的对象编辑方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的对象编辑方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述对象编辑方法的技术方案的描述。
本申请一实施例还提供一种计算机可读存储介质,其存储有计算机指令,所述计算机指令被处理器执行时实现如前所述对象编辑方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的对象编辑方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述对象编辑方法的技术方案的描述。
上述对本申请特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质等。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本申请所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本申请优选实施例只是用于帮助阐述本申请。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本申请的内容,可作很多的修改和变化。本申请选取并具体描述这些实施例,是为了更好地解释本申请的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本申请。本申请仅受权利要求书及其全部范围和等效物的限制。
Claims (15)
1.一种对象编辑方法,其特征在于,包括:
针对目标对象添加行为树,并展示所述行为树对应的配置列表;
接收通过所述配置列表对所述行为树设置的配置信息;
根据所述配置信息执行所述行为树对所述目标对象进行更新。
2.根据权利要求1所述的对象编辑方法,其特征在于,所述针对目标对象添加行为树之前,还包括:
针对所述目标对象添加预先创建的行为类,并展示所述行为类对应的类配置列表;其中,所述行为类对应至少一个行为树;
采集所述类配置列表中对所述行为类的类配置信息;
相应地,所述接收通过所述配置列表对所述行为树设置的配置信息,包括:
通过在所述配置列表中输入所述行为树所属的行为类的类名称,建立所述行为树和所述行为类的对应关系,并将所述对应关系作为所述配置信息。
3.根据权利要求2所述的对象编辑方法,其特征在于,所述类配置列表中包括所述行为类中预先定义的变量对应的配置项;
相应地,所述对象编辑方法,还包括:
通过所述配置项对所述变量的变量值进行调整。
4.根据权利要求1所述的对象编辑方法,其特征在于,所述接收通过所述配置列表针对所述行为树设置的配置信息之后,还包括:
在所述行为树的数量为多个的情况下,确定所述行为树的执行顺序;
根据所述执行顺序以及所述配置信息执行所述行为树对所述目标对象进行更新。
5.根据权利要求1所述的对象编辑方法,其特征在于,所述根据所述配置信息执行所述行为树对所述目标对象进行更新,包括:
根据所述配置信息确定所述行为树的执行策略;
按照所述执行策略执行所述行为树对所述目标对象进行更新。
6.根据权利要求5所述的对象编辑方法,其特征在于,所述执行策略,包括:
依次针对所述目标对象的每帧对象帧执行所述行为树;在所述行为树返回第一目标结果的情况下,结束对所述行为树的执行;或
针对所述目标对象的每帧对象帧执行所述行为树。
7.根据权利要求5所述的对象编辑方法,其特征在于,所述执行策略,包括:
接收用户针对控件的点击指令;响应于所述点击指令针对所述目标对象中的第一对象帧序列执行所述行为树,其中,所述第一对象帧序列由所述目标对象的对象帧序列中所述点击指令对应的对象帧以及排列在所述点击指令对应的对象帧之后的对象帧组成;或
接收用户针对输入的目标信息;响应于所述目标信息针对所述目标对象的中的第二对象帧序列执行所述行为树,其中,所述第二对象帧序列由所述目标对象的对象帧序列中所述目标信息对应的对象帧以及排列在所述目标信息对应的对象帧之后的对象帧组成;或
对所述对象帧进行碰撞检测;在碰撞检测的检测结果为碰撞的情况下,针对所述目标对象中的第三对象帧序列执行所述行为树,其中,所述第三对象帧序列为所述目标对象的对象帧中检测结果为碰撞对应的对象帧中的至少一帧对象帧组成。
8.根据权利要求5所述的对象编辑方法,其特征在于,在所述行为树的数量为多个的情况下,所述执行策略,包括:
根据所述配置信息在所述行为树中确定目标行为树;
针对所述目标对象的对象帧依次执行所述行为树直至执行所述目标行为树;
在所述目标行为树返回第二目标结果的情况下,针对所述对象帧中除执行所述目标行为树之外的剩余对象帧,执行所述行为树中除所述目标行为树之外的行为树。
9.根据权利要求1所述的对象编辑方法,其特征在于,还包括:
根据所述配置信息确定所述行为树对应的目标日志级别;在所述行为树的执行过程中根据所述目标日志级别输出执行日志;和/或
根据所述配置信息确定所述行为树的输出配置信息;在所述输出配置信息为每帧输出执行结果的情况下,选择所述目标对象的对象帧中执行所述行为树的每帧对象帧,输出执行所述行为树的执行结果。
10.根据权利要求1所述的对象编辑方法,其特征在于,还包括:
采集所述目标对象对应的行为树全局配置列表中对行为树设置的全局配置信息;
根据所述全局配置信息以及所述配置信息执行所述行为树对所述目标对象进行更新。
11.根据权利要求10所述的对象编辑方法,其特征在于,还包括:
根据所述全局配置信息确定所述行为树对应的目标日志级别,在所述行为树的执行过程中根据所述目标日志级别输出执行日志;和/或
根据所述全局配置信息确定所述行为树的输出配置信息;在所述输出配置信息为每帧输出执行结果的情况下,选择所述目标对象的对象帧中执行所述行为树的每帧对象帧,输出执行所述行为树的执行结果。
12.根据权利要求10所述的对象编辑方法,其特征在于,所述采集所述目标对象对应的行为树全局配置列表中对行为树设置的全局配置信息,包括:
采集所述目标对象对应的行为树全局配置列表中设置的存储路径,将所述存储路径作为所述全局配置信息,其中,所述存储路径指向的存储空间存储所述行为树对应的程序文件;
相应地,所述根据所述全局配置信息以及所述配置信息执行所述行为树对所述目标对象进行更新,包括:
根据所述存储路径从所述程序文件中加载所述行为树;
根据所述配置信息执行所述行为树对所述目标对象进行更新。
13.一种对象编辑装置,其特征在于,包括:
添加模块,被配置为针对目标对象添加行为树,并展示所述行为树对应的配置列表;
接收模块,被配置为接收通过所述配置列表对所述行为树设置的配置信息;
更新模块,被配置为根据所述配置信息执行所述行为树对所述目标对象进行更新。
14.一种计算设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机指令,其特征在于,所述处理器执行所述计算机指令时实现权利要求1-12任意一项所述方法的步骤。
15.一种计算机可读存储介质,其存储有计算机指令,其特征在于,所述计算机指令被处理器执行时实现权利要求1-12任意一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111410573.8A CN113920228A (zh) | 2021-11-19 | 2021-11-19 | 对象编辑方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111410573.8A CN113920228A (zh) | 2021-11-19 | 2021-11-19 | 对象编辑方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113920228A true CN113920228A (zh) | 2022-01-11 |
Family
ID=79248123
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111410573.8A Pending CN113920228A (zh) | 2021-11-19 | 2021-11-19 | 对象编辑方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113920228A (zh) |
-
2021
- 2021-11-19 CN CN202111410573.8A patent/CN113920228A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102521120B (zh) | 一种软件自动化测试系统及方法 | |
CN112416339A (zh) | 页面开发方法、装置、计算机设备 | |
US9524279B2 (en) | Help document animated visualization | |
CN109189469B (zh) | 基于反射的安卓应用微服务化方法及系统 | |
CN110989976A (zh) | 基于J2EE的Web应用的组件化开发方法、存储介质和电子设备 | |
CN108304201A (zh) | 对象更新方法、装置及设备 | |
CN106293664A (zh) | 代码生成方法及装置 | |
CN111209005A (zh) | 程序文件的编译方法、装置和计算机可读存储介质 | |
CN112199086A (zh) | 自动编程控制系统、方法、装置、电子设备及存储介质 | |
CN109240666B (zh) | 基于调用栈和依赖路径的函数调用代码生成方法及系统 | |
CN112799968B (zh) | 一种基于脚本的测试驱动建模系统及方法 | |
CN112988130A (zh) | 一种基于大数据的可视化建模方法、装置、设备及介质 | |
CN112214210A (zh) | 后勤业务规则引擎及其配置方法、装置、设备和存储介质 | |
CN117369521B (zh) | 用于无人机决策的行为树模型路径生成方法、装置及设备 | |
CN113535141A (zh) | 数据库操作代码的生成方法及装置 | |
Gulapa et al. | WebSnapse Reloaded: The Next-Generation Spiking Neural P System Visual Simulator using Client-Server Architecture | |
US11487641B1 (en) | Micro services recommendation system for identifying code areas at risk | |
US20140310070A1 (en) | Coordinated business rules management and mixed integer programming | |
US9542165B2 (en) | Model to Petri-Net transformation | |
CN112328225A (zh) | 一种页面运行方法及其运行系统 | |
CN115904480B (zh) | 代码重构方法、装置、电子设备及存储介质 | |
CN113920228A (zh) | 对象编辑方法及装置 | |
CN111651160B (zh) | 插件构建、网页设计的方法和装置 | |
Åkesson et al. | Jatte: A tunable tree editor for integrated DSLs | |
CN113190509A (zh) | 动画处理方法、装置、电子设备及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |