基于Mealy有限状态自动机的三维动画流程的组织与控制方法

文档序号:6542891阅读:153来源:国知局
基于Mealy有限状态自动机的三维动画流程的组织与控制方法
【专利摘要】本发明属于三维动画【技术领域】,具体涉及一种基于Mealy有限状态自动机的三维动画流程的组织与控制方法。该方法构造出动画状态机、绑定状态机、流程控制器三种Mealy型有限状态自动机,动画状态机对整个动画流程的局部动画进行控制、绑定状态机对不同三维模型之间加入父子依赖关系以实现模型绑定,流程控制器对动画状态机和绑定状态机进行控制,从而组织整个动画流程;此外,本发明构造了动画控制器,进行局部动画播放控制;还提供了易于编辑的流程描述文件格式以及消息结构,在消息路由器的媒介下,通过从流程文件分析器得到流程描述文件的解析结果,流程控制器可以实现对其它状态机控制,从而实现对整个动画流程的组织控制。
【专利说明】基于Mealy有限状态自动机的三维动画流程的组织与控制方法
【技术领域】
[0001]本发明属于三维动画【技术领域】,具体涉及一种基于Mealy有限状态自动机的三维动画流程的组织与控制方法。
【背景技术】
[0002]三维动画,是随着计算机硬件技术发展而产生的一项技术。三维动画由三维模型的运动组成,设计师设计出三维模型构成的场景,以及需要运动的模型,通过定义模型运动的轨迹实现三维的动画演示。三维动画一般对模型运动轨迹的关键帧进行保存,生产特定的动画文件,通过对这些动画文件进行解析构建关键帧序列,根据时间节点进行插值运算就可以得到动画播放中任意节点的模型运动状态。但当动画场景十分大,所涉及的运动模型十分多时,很难在一个文件中描述所有的模型的关键帧。这就需要一定的方法对这些模型运动进行更好的组织,使得整个动画流程自动的顺利执行。
[0003]Mealy有限状态自动机,是基于它的当前状态和输入生成输出的有限状态自动机。其具体原理见文献 I一Mealy, G.H..A Method for Synthesizing Sequential Circuits.Bell System Tech[J], 1955,34:1045 - 1079。有限状态自动机和计算机可识别的正则语言是等价的,它容易在计算机上进行实现。

【发明内容】

[0004](一)要解决的技术问题
[0005]本发明要解决的技术问题是:克服现有技术的一些局限性,提供一种三维动画的组织控制方法,该方法可通过组织局部动画文件,组织三维模型间的绑定关系,可方便的进行大型场景动画组织,且易于实现对动画流程的修改。
[0006](二)技术方案
[0007]为解决上述技术问题,本发明提供一种基于Mealy有限状态自动机的三维动画流程的组织与控制方法,该方法基于流程控制系统来实施,所述流程控制系统包括:消息路由器、流程控制器、动画控制器、动画状态机、绑定状态机以及流程文件分析器;所述消息路由器为系统各Mealy有限状态自动机所涉及的消息的统一收发器,其中消息是各Mealy有限状态自动机的输入,每一消息均由消息类型和消息参数构成,消息类型用于决定状态转移,消息参数用于指定输出操作的行为;所述流程控制器为Mealy有限状态自动机,用于控制整个动画过程,其状态包括:准备、运行、暂停、终止,其初始状态为准备状态,其接收消息类型包括:开始、结束、暂停、继续、终止、重置;所述动画控制器用于描述局部动画的动画文件的解析和播放;所述动画状态机为Mealy有限状态自动机,其利用动画控制器实现动画控制,其状态包括:初始、准备、运行、暂停、停止,其初始状态为初始状态,其接收消息类型包括:读取、开始、暂定、继续、重置、停止;所述动画状态机与动画控制器成组设置,系统中设有多组,每一组用于对某一部分动画进行操作,所有组所对应的部分动画组合起来为整体动画;所述绑定状态机为Mealy有限状态自动机,用于指定特定三维模型的父子关系和子模型的局部变换,其状态包括:准备、已绑定,其初始状态为准备状态,其接收消息类型包括:绑定、设置、重置;所述绑定状态机设有多个,分别对不同的部分动画进行绑定;所述流程文件分析器用于解析特定的用户输入流程文件;
[0008]所述基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其包括如下步骤:
[0009]步骤S1:编写XML格式的流程描述文件,按层次描述整个动画流程依次需要播放的动画文件,以及各个阶段模型间的父子绑定关系,确定流程控制器的工作内容;流程描述文件以文字形式描述了由读取、开始、绑定、设置四种消息信息构成的消息信息树,消息信息树是一个树状结构,为多叉树;其中每条消息信息包含消息的编号、消息的内容、消息发送到目标和信息发送的延时、消息的内容及消息的类型和参数;
[0010]步骤S2:流程文件分析器解析步骤SI中的所述流程描述文件,在内存层次构造出流程描述文件所描述的消息信息树;消息信息树中包含控制动画状态机的读取和开始消息、以及控制绑定状态机的绑定和设置消息;流程文件分析器将消息层次树构造完成后传递给流程控制器,并指派消息路由器向流程控制器发送重置消息;
[0011]步骤S3:流程控制器在任何状态下接收到步骤S2中的所述重置消息后则转换为准备状态,其输出操作为:令消息路由器向其他状态机发送重置消息,清空流程控制器自身的运行时表和暂停时表中的信息;动画状态机在任何状态下接收重置消息则转化为初始状态;绑定状态机在任何状态下接收重置消息则转化为准备状态;运行时表是一个线性表,保存发出而未反馈的消息编号,暂停时表是一个队列,保存暂停时反馈的消息编号,二者用于保证流程控制器正确的按消息信息树逐层向下传递消息;
[0012]步骤S4:流程控制器在初始的准备状态下接收开始消息则转化为运行状态;输出操作为:由步骤S2所述消息树第一层节点的内容,为消息路由器添加各节点的消息信息,指派消息路由器在下一帧时向各个操作相关的状态机按指定延时发送指定消息,以此开始动画流程;且,流程控制器向运行时表添加所传递出的各消息信息的消息编号;
[0013]步骤S5:流程控制器在运行状态下,不断按步骤S2所述消息信息树中的消息信息,指派消息路由器向各动画状态机发送读取消息和开始消息、向绑定状态机发送绑定消息和设置消息,使得动画状态机和绑定状态机执行相应的操作,以运行整个动画进程;流程控制器向动画状态机和绑定状态机每次传递消息后,都将在二者执行完相应操作后收到响音的结束消息作为反馈;流程控制器在指派消息路由器发送各消息时,将消息编号添加到原有消息参数中作为新的参数,该消息编号将在其他状态机向其传递结束消息时作为消息参数传递,使得流程控制器掌握各状态机执行动作所对应的发起消息;动画状态机根据读取消息的参数,特定的动画控制器解析相应的文件,根据开始消息的参数使特定的动画控制器播放相应的动画;动画状态机在读取完成后或动画运行结束后向流程控制器发送结束消息,消息参数描述了使其读取或开始的消息编号;绑定状态机根据绑定消息的参数将一对特定模型进行绑定,根据设置的消息参数设置子模型在局部坐标下的位置和方向;绑定状态机完成绑定操作或设置操作后向流程控制器发送结束消息,消息参数描述了使其绑定或设置的消息编号;流程控制器在运行状态下接收结束消息则转化为终止状态,其输出操作为:按消息参数提供的消息编号,找到其在步骤S2所述消息信息树中的节点,如果该节点存在子节点,按所有子节点内容为消息路由器添加消息,按消息参数提供的消息编号更新运行时表,判断运行时表是否为空,若为空则所有消息发送完毕,则令消息路由器向该流程控制器发送终止消息;
[0014]步骤6:当流程控制器按步骤S5所述处于不断的运行状态时,可在用户控制下通过暂停、继续消息对整个流程进行暂停、继续操作;流程控制器在运行状态下接收暂停消息则转化为暂停状态;其输出操作为:令消息路由器向所有状态机发送暂停消息;流程控制器在暂停状态下接收暂停消息则转化为暂停状态,输出操作为:保持步骤S5所述的结束消息相关的消息编号至暂停时表,使得返回运行状态时控制器工作正常;流程控制器在暂停状态下接收继续消息则转化为运行状态,输出操作为:令消息路由器向所有状态机发送继续类型消息,依照暂停时记录的消息编号,更新运行时表;
[0015]步骤S7:当流程控制器按步骤S5所述处于不断的运行状态时,直至收到由该流程控制器指派消息路由发出的终止消息时,流程控制器在运行状态或暂停状态下接收终止消息则转化为终止状态;所有动画播放完毕;
[0016]步骤S8:用户通过指派消息路由器向流程控制器发送重置消息,使所有状态机在步骤S2操作下恢复到初始状态,以便用户重新控制动画播放。
[0017]其中,所述步骤SI及步骤S2中的消息信息树,在内存层次和文件层次所描述的数据是完全一致的,树节点一一对应;该消息信息树是一个树状结构,为多叉树,具有一个根节点;根节点不描述消息信息,根节点以下各节点保存一条消息的信息,描述消息的编号,消息的内容,消息发送到目标和消息发送到延时;其中,消息的编号是用户指定的节点唯一的数据,唯一的标记了消息信息树中的节点;消息内容包括消息的类型和消息参数;消息发送的目标是某个动画状态机或绑定状态机;目标为动画状态机的节点对应读取和开始两种类型消息,目标为绑定状态机的节点对应绑定和设置两种类型消息;其中读取消息的参数是相应的动画文件地址,绑定消息的参数是所要绑定的模型,设置消息的参数是模型在局部坐标系下的位移、尺度和旋转。
[0018]其中,所述步骤SI及步骤S2中的流程描述文件是以XML格式编写的对消息信息树的描述;XML文件由若干标签树组成,流程描述文件内保存了一组消息信息标签,每一条消息信息标签包含五个子标签,分别描述消息编号、该消息节点父节点的消息编号、消息目标、消息类型、消息参数、从而表达出整个消息信息树的结构。
[0019]其中,所述步骤S2至步骤S8中消息路由器对消息收发的方式为:消息路由器维护消息信息队列,该队列初始为空,在每一帧的运算中,收集各功能模块的请求,将其发送到消息并加入该队列,并在下一帧开始时依次取出并发送各消息,直至队列为空;消息信息队列是一个队列结构,队列每一项保存消息的内容、消息发送到目标和消息发送到延时;帧开始时,消息路由器按先进先出方式依次取出并发送消息队列中的各项,按项中内容,以指定延时向指定目标状态机发送指定消息;各步骤中各功能模块指派消息路由器发送消息,即是向消息信息队列中加入相应的消息信息,使其在下一帧时统一发送;状态机之间、其他模块与状态机之间通过消息路由器进行间接的消息传递。
[0020]其中,所述步骤S5中动画控制器对动画的控制方式为:通过解析动画文件,保存相应的模型数据和关键帧数据;播放动画时,根据时间节点进行插值运算来得到动画播放中任意节点的模型运动状态;其动画播放结束时执行的特定操作为:令消息路由器向控制该动画控制器的动画状态机发送停止消息。
[0021]其中,所述步骤S5中动画状态机,其具体工作方式为:每个动画状态机控制唯一的动画控制器;初始状态、准备状态或停止状态下接收步骤S1、步骤S2、步骤S5所述读取消息后转化状态至准备状态,输出操作内容为:使动画控制器读取解析由消息参数指定的动画文件,令消息路由器向流程控制器发送结束消息,并按步骤S5所述将接收到的消息参数中的消息编号作为消息参数;动画状态机在备状态下接收步骤S1、步骤S2、步骤S5所述开始消息后转化为运行状态,输出操作为:使动画控制器播放动画,并保存步骤S5所述接收到的消息参数中的消息编号;动画状态机在行状态下接收步骤S6所述暂停消息后转化为暂停状态,输出操作为:使动画控制器暂停动画;动画状态机在停状态下接收步骤S6所述继续消息后转化为运行状态,输出操作为:使动画控制器继续动画;动画状态机在行状态下接收由动画控制器指派发送的停止消息后转化为停止状态,输出操作为:令消息路由器向流程控制器发送结束消息,并按步骤S5所述将保存的消息编号作为消息参数;动画状态机在备状态、运行状态、暂停状态或停止状态下接收步骤2、8所述重置消息后均转化为初始状态。
[0022]其中,所述步骤S5中绑定状态机的具体工作方式为:每个绑定状态机控制一类模型的绑定操作;其在准备状态、已绑定状态下接收步骤S1、步骤S2、步骤S5所述绑定消息后均可转化为已绑定状态,输出操作内容为:将由消息参数指定的父子模型绑定,令消息路由器向流程控制器发送结束消息,并按步骤S5所述将接收到的消息参数中的消息编号作为消息参数;绑定状态机在绑定状态下接收步骤S1、步骤S2、步骤S5所述设置消息后转化为准备状态,输出操作内容为:根据消息参数设置特定子模型的位移、旋转、尺度变换,令消息路由器向流程控制器发送结束消息,并按步骤S5所述将接收到底消息参数中的消息编号作为消息参数。
[0023]其中,所述步骤S3、步骤S4、步骤S5、步骤S6中流程控制器的运行时表的数据结构为线性表,暂停时表的数据结构为队列;运行时表用于保存已经传递出、但尚未接收步骤S5所述反馈的消息编号,暂停时表用于保存在暂停状态下接收到反馈的消息编号,每个编号对应于消息信息树的一个节点;流程控制器对运行时表具体的维护方法为:初始时,运行时表为空;当流程控制器指派消息路由器向动画状态机和绑定状态机发送消息时,在运行时表中添加所发送消息信息的编号;当流程控制器接收结束消息后,所述步骤S5中对运行时表的具体更新方法为,删除运行时表中所存编号与结束消息的消息编号一致的项,如果该编号对应节点拥有子节点,将所有子节点编号加入运行时表;当流程控制器在暂停状态接收继续消息后,所述步骤S6中对运行时表的具体更新方法为,按先进先出方式依次取出暂停时表中的各编号,对去除的每一编号,删除运行时表中所存编号与取出编号一致的项,如果该编号对应节点拥有子节点,将所有子节点编号加入运行时表;流程控制器对暂停时表具体的维护方法为:暂停时表初始为空;当流程控制器在暂停状态接收结束消息后,所述步骤S6中保存对应消息编号到暂停时表的方法为:按队列方式加入队尾;当流程控制器在暂停状态接收结束消息后,所述步骤S6中的保存对应消息编号到暂停时表达方法为:按队列方式加入队尾;当流程控制器在暂停状态下接收继续消息后,流程控制器将按先进先出方法从队首依次取出暂停时表各项并按前述方法更新运行时表,直至暂停时表为空。
[0024](三)有益效果[0025]本发明技术方案利用Mealy有限状态自动机技术对各个局部三维动画过程进行组织控制以完成整个动画流程,可实现大场景三维动画的创建,并方便进行修改;该方案利用状态机理论构造出流程控制器,动画状态机,绑定状态机三种Mealy型有限状态自动机。动画状态机通过输出信号对整个动画流程的局部动画进行控制,绑定状态机通过输出信号对不同三维模型之间加入父子依赖关系,以实现模型绑定,流程控制器通过输出信号对动画状态机和绑定状态机以发送输入信号的形式进行控制,从而组织整个动画流程;此外,本发明构造了动画控制器,进行局部动画播放控制,动画状态机通过控制动画控制器实现局部动画的控制;并且,本发明还提供了易于编辑的流程描述文件格式,通过构造流程文件分析器以解析流程描述文件构造出消息信息树,流程控制器通过维护消息信息树,在不同输入信号情况下进行信号输出;另,本发明设计了消息结构,各状态机的输入信号为不同内容的信息,通过消息路由器,消息在不同状态机间传递。在消息路由器的媒介下,通过从流程文件分析器得到流程描述文件的解析结果,流程控制器可以实现对其它状态机控制,从而实现对整个动画流程的组织控制。
【专利附图】

【附图说明】
[0026]图1为本发明技术方案中流程控制系统的结构和数据流示意图。
[0027]图2为本发明流程控制器的状态转移示意图。
[0028]图3为本发明动画状态机的状态转移示意图。
[0029]图4为本发明绑定状态机的状态转移示意图。
【具体实施方式】
[0030]为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的【具体实施方式】作进一步详细描述。
[0031]为了解决现有技术的问题,本发明技术方案所提供的基于Mealy有限状态自动机的三维动画流程的组织与控制方法,如图1所示,概括而言,该方法的实施涉及消息路由器、流程控制器、动画控制器、动画状态机、绑定状态机以及流程文件分析器。
[0032]1、消息路由器消息发送方法为:消息路由器维护消息信息队列,该队列初始为空,在每一帧的运算中,收集各模块请求发送到消息加入该队列,并在下一帧开始时依次取出并发送各消息,直至队列为空。消息信息队列是一个队列结构,队列每一项保存消息的内容,消息发送的目标和消息发送的延时。帧开始时,消息路由器按先进先出方式依次取出并发送消息信息队列中各项,按项中内容,以指定延时向指定目标状态机发送指定消息。
[0033]2、流程控制器按照消息信息树的节点内容指派消息路由器发送消息的方法为:向消息路由器的消息信息队列添加消息信息,使消息路由器在下一帧开始时发送该消息,添加消息的消息类型、消息目标、消息演示为节点保存的相关内容,消息参数包括节点保存的消息参数以及消息编号。流程控制器维护了一个运行时表,保存了当前尚未反馈结束消息的消息编号。流程控制器维护了一个暂停时表,保存了暂停时接受到的结束消息中消息参数指定的消息编号。流程控制器维护了一个目标总表,表中记录了消息信息树中所有消息目标的集合,使得向所有动画状态机和绑定状态机发送消息时直接按表发送。如图2所示,流程控制器,状态包括:准备,运行,暂停,终止。其接受消息类型包括:开始,结束,暂停,继续,终止,重置。准备状态接受开始消息转化为运行状态,具体的输出操作为:按照消息信息树第一层各节点的内容,为消息路由器添加各节点的消息信息,并将这些消息编号保存在运行时表中。运行状态接受结束消息转化为运行状态,其具体输出操作为:按消息参数提供的流程消息编号,将运行时表中该编号删除,查找到其在消息信息树中的节点,如果该节点存在子节点,按所有子节点内容为消息路由器添加消息,并将所有子节点的消息编号添加到运行时表中;如果该节点不存在子节点,判断运行时表是否为空,若为空为消息路由添加消息,消息目标为流程控制器,消息类型为终止。运行状态接受暂停消息转化为暂停状态,其输出操作为:为消息路由器添加一组消息,消息目标为目标总表中的各消息目标,消息类型为暂停。暂停状态接受结束消息转化为暂停状态,输出操作为:由消息参数得到消息编号,在运行时表中删除该编号,在消息信息树中找到该编号对应节点,若存在子节点将其子节点编号添加到暂停时表中,若无子节点,判断运行时表是否为空,若为空为消息路由添加消息,消息目标为流程控制器,消息类型为终止。暂停状态接受继续消息转化为运行状态,输出操作为:为消息路由器添加一组消息,消息目标为目标总表中的各消息目标,消息类型为继续;依照暂停时表中的各消息编号在消息信息树中找到相应节点,按节点内容为消息路由器添加消息。运行状态或暂停状态接受终止消息转化为终止状态。运行状态,暂停状态或终止状态接受重置消息转化为准备状态,其输出操作为:为消息路由器添加一组消息,消息目标为目标总表中的各消息目标,消息类型为重置,清空运行时表中的信息。
[0034]3、如图3所示,动画状态机,其状态包括:初始,准备,运行,暂停,停止。其接受消息类型包括:读取,开始,暂定,继续,重置,停止。状态机的初始时的状态为初始状态。初始状态、准备状态或停止状态接受读取消息转化状态至准备,具体输出操作内容为:使动画控制器读取解析由消息参数指定的动画文件,为消息路由器添加消息信息,消息目标为流程控制器,消息类型为结束,消息参数为所接受消息参数中的消息编号,延时为零。准备状态接受开始消息转化为运行状态,具体输出操作为:使动画控制器播放动画,保存由消息参数确定的消息编号。运行状态接受暂停消息转化为暂停状态,具体输出操作为:使动画控制器暂停动画。暂停状态接受继续消息转化为运行状态,具体输出操作为:使动画控制器继续动画。运行状态接受停止消息转化为停止状态,具体输出操作为:为消息路由器添加消息信息,消息目标为流程控制器,消息类型为结束,消息参数为所保存的消息编号,延时为零。准备状态、运行状态、暂停状态或停止状态均接受重置消息转化为准备状态。
[0035]4、如图4所示,绑定状态机,其状态包括:准备,已绑定。接受消息类型包括:绑定,设置。状态机初始时的状态为准备状态。准备状态、已绑定状态均可接受绑定消息转化为已绑定状态,具体的输出操作内容为:将由消息参数指定的父子模型绑定,为消息路由器添加消息信息,消息目标为流程控制器,消息类型为结束,消息参数为所接受消息参数中的消息编号,延时为零。已绑定状态接受设置消息转化为准备状态,具体的输出操作内容为:根据消息参数设置特定子模型的位移、旋转、尺度变换,为消息路由器添加消息信息,消息目标为流程控制器,消息类型为结束,消息参数为所接受消息参数中的消息编号,延时为零。
[0036]5、用户对动画流程的控制方法为:通过修改流程描述文件,确定整个动画流程过程,通过设置交互机制,令消息路由器向流程控制器发送开始、暂停、继续、重置消息,实现用户对整个动画播放过程的控制。
[0037]详细而言,本发明所提供的一种基于Mealy有限状态自动机的三维动画流程的组织与控制方法,该方法基于流程控制系统来实施,所述流程控制系统包括:消息路由器、流程控制器、动画控制器、动画状态机、绑定状态机以及流程文件分析器;所述消息路由器为系统各Mealy有限状态自动机所涉及的消息的统一收发器,其中消息是各Mealy有限状态自动机的输入,每一消息均由消息类型和消息参数构成,消息类型用于决定状态转移,消息参数用于指定输出操作的行为;所述流程控制器为Mealy有限状态自动机,用于控制整个动画过程,其状态包括:准备、运行、暂停、终止,其初始状态为准备状态,其接收消息类型包括:开始、结束、暂停、继续、终止、重置;所述动画控制器用于描述局部动画的动画文件的解析和播放;所述动画状态机为Mealy有限状态自动机,其利用动画控制器实现动画控制,其状态包括:初始、准备、运行、暂停、停止,其初始状态为初始状态,其接收消息类型包括:读取、开始、暂定、继续、重置、停止;所述动画状态机与动画控制器成组设置,系统中设有多组,每一组用于对某一部分动画进行操作,所有组所对应的部分动画组合起来为整体动画;所述绑定状态机为Mealy有限状态自动机,用于指定特定三维模型的父子关系和子模型的局部变换,其状态包括:准备、已绑定,其初始状态为准备状态,其接收消息类型包括:绑定、设置、重置;所述绑定状态机设有多个,分别对不同的部分动画进行绑定;所述流程文件分析器用于解析特定的用户输入流程文件;
[0038]所述基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其包括如下步骤:
[0039]步骤S1:编写XML格式的流程描述文件,按层次描述整个动画流程依次需要播放的动画文件,以及各个阶段模型间的父子绑定关系,确定流程控制器的工作内容;流程描述文件以文字形式描述了由读取、开始、绑定、设置四种消息信息构成的消息信息树,消息信息树是一个树状结构,为多叉树;其中每条消息信息包含消息的编号、消息的内容、消息发送到目标和信息发送的延时、消息的内容及消息的类型和参数;
[0040]步骤S2:流程文件分析器解析步骤SI中的所述流程描述文件,在内存层次构造出流程描述文件所描述的消息信息树;消息信息树中包含控制动画状态机的读取和开始消息、以及控制绑定状态机的绑定和设置消息;流程文件分析器将消息层次树构造完成后传递给流程控制器,并指派消息路由器向流程控制器发送重置消息;
[0041]步骤S3:流程控制器在任何状态下接收到步骤S2中的所述重置消息后则转换为准备状态,其输出操作为:令消息路由器向其他状态机发送重置消息,清空流程控制器自身的运行时表和暂停时表中的信息;动画状态机在任何状态下接收重置消息则转化为初始状态;绑定状态机在任何状态下接收重置消息则转化为准备状态;运行时表是一个线性表,保存发出而未反馈的消息编号,暂停时表是一个队列,保存暂停时反馈的消息编号,二者用于保证流程控制器正确的按消息信息树逐层向下传递消息;
[0042]步骤S4:流程控制器在初始的准备状态下接收开始消息则转化为运行状态;输出操作为:由步骤S2所述消息树第一层节点的内容,为消息路由器添加各节点的消息信息,指派消息路由器在下一帧时向各个操作相关的状态机按指定延时发送指定消息,以此开始动画流程;且,流程控制器向运行时表添加所传递出的各消息信息的消息编号;
[0043]步骤S5:流程控制器在运行状态下,不断按步骤S2所述消息信息树中的消息信息,指派消息路由器向各动画状态机发送读取消息和开始消息、向绑定状态机发送绑定消息和设置消息,使得动画状态机和绑定状态机执行相应的操作,以运行整个动画进程;流程控制器向动画状态机和绑定状态机每次传递消息后,都将在二者执行完相应操作后收到响音的结束消息作为反馈;流程控制器在指派消息路由器发送各消息时,将消息编号添加到原有消息参数中作为新的参数,该消息编号将在其他状态机向其传递结束消息时作为消息参数传递,使得流程控制器掌握各状态机执行动作所对应的发起消息;动画状态机根据读取消息的参数,特定的动画控制器解析相应的文件,根据开始消息的参数使特定的动画控制器播放相应的动画;动画状态机在读取完成后或动画运行结束后向流程控制器发送结束消息,消息参数描述了使其读取或开始的消息编号;绑定状态机根据绑定消息的参数将一对特定模型进行绑定,根据设置的消息参数设置子模型在局部坐标下的位置和方向;绑定状态机完成绑定操作或设置操作后向流程控制器发送结束消息,消息参数描述了使其绑定或设置的消息编号;流程控制器在运行状态下接收结束消息则转化为终止状态,其输出操作为:按消息参数提供的消息编号,找到其在步骤S2所述消息信息树中的节点,如果该节点存在子节点,按所有子节点内容为消息路由器添加消息,按消息参数提供的消息编号更新运行时表,判断运行时表是否为空,若为空则所有消息发送完毕,则令消息路由器向该流程控制器发送终止消息;
[0044]步骤6:当流程控制器按步骤S5所述处于不断的运行状态时,可在用户控制下通过暂停、继续消息对整个流程进行暂停、继续操作;流程控制器在运行状态下接收暂停消息则转化为暂停状态;其输出操作为:令消息路由器向所有状态机发送暂停消息;流程控制器在暂停状态下接收暂停消息则转化为暂停状态,输出操作为:保持步骤S5所述的结束消息相关的消息编号至暂停时表,使得返回运行状态时控制器工作正常;流程控制器在暂停状态下接收继续消息则转化为运行状态,输出操作为:令消息路由器向所有状态机发送继续类型消息,依照暂停时记录的消息编号,更新运行时表;
[0045]步骤S7:当流程控制器按步骤S5所述处于不断的运行状态时,直至收到由该流程控制器指派消息路由发出的终止消息时,流程控制器在运行状态或暂停状态下接收终止消息则转化为终止状态;所有动画播放完毕;
[0046]步骤S8:用户通过指派消息路由器向流程控制器发送重置消息,使所有状态机在步骤S2操作下恢复到初始状态,以便用户重新控制动画播放。
[0047]其中,所述步骤SI及步骤S2中的消息信息树,在内存层次和文件层次所描述的数据是完全一致的,树节点一一对应;该消息信息树是一个树状结构,为多叉树,具有一个根节点;根节点不描述消息信息,根节点以下各节点保存一条消息的信息,描述消息的编号,消息的内容,消息发送到目标和消息发送到延时;其中,消息的编号是用户指定的节点唯一的数据,唯一的标记了消息信息树中的节点;消息内容包括消息的类型和消息参数;消息发送的目标是某个动画状态机或绑定状态机;目标为动画状态机的节点对应读取和开始两种类型消息,目标为绑定状态机的节点对应绑定和设置两种类型消息;其中读取消息的参数是相应的动画文件地址,绑定消息的参数是所要绑定的模型,设置消息的参数是模型在局部坐标系下的位移、尺度和旋转。
[0048]其中,所述步骤SI及步骤S2中的流程描述文件是以XML格式编写的对消息信息树的描述;XML文件由若干标签树组成,流程描述文件内保存了一组消息信息标签,每一条消息信息标签包含五个子标签,分别描述消息编号、该消息节点父节点的消息编号、消息目标、消息类型、消息参数、从而表达出整个消息信息树的结构。[0049]其中,所述步骤S2至步骤S8中消息路由器对消息收发的方式为:消息路由器维护消息信息队列,该队列初始为空,在每一帧的运算中,收集各功能模块的请求,将其发送到消息并加入该队列,并在下一帧开始时依次取出并发送各消息,直至队列为空;消息信息队列是一个队列结构,队列每一项保存消息的内容、消息发送到目标和消息发送到延时;帧开始时,消息路由器按先进先出方式依次取出并发送消息队列中的各项,按项中内容,以指定延时向指定目标状态机发送指定消息;各步骤中各功能模块指派消息路由器发送消息,即是向消息信息队列中加入相应的消息信息,使其在下一帧时统一发送;状态机之间、其他模块与状态机之间通过消息路由器进行间接的消息传递。
[0050]其中,所述步骤S5中动画控制器对动画的控制方式为:通过解析动画文件,保存相应的模型数据和关键帧数据;播放动画时,根据时间节点进行插值运算来得到动画播放中任意节点的模型运动状态;其动画播放结束时执行的特定操作为:令消息路由器向控制该动画控制器的动画状态机发送停止消息。
[0051]其中,所述步骤S5中动画状态机,其具体工作方式为:每个动画状态机控制唯一的动画控制器;初始状态、准备状态或停止状态下接收步骤S1、步骤S2、步骤S5所述读取消息后转化状态至准备状态,输出操作内容为:使动画控制器读取解析由消息参数指定的动画文件,令消息路由器向流程控制器发送结束消息,并按步骤S5所述将接收到的消息参数中的消息编号作为消息参数;动画状态机在备状态下接收步骤S1、步骤S2、步骤S5所述开始消息后转化为运行状态,输出操作为:使动画控制器播放动画,并保存步骤S5所述接收到的消息参数中的消息编号;动画状态机在行状态下接收步骤S6所述暂停消息后转化为暂停状态,输出操作为:使动画控制器暂停动画;动画状态机在停状态下接收步骤S6所述继续消息后转化为运行状态,输出操作为:使动画控制器继续动画;动画状态机在行状态下接收由动画控制器指派发送的停止消息后转化为停止状态,输出操作为:令消息路由器向流程控制器发送结束消息,并按步骤S5所述将保存的消息编号作为消息参数;动画状态机在备状态、运行状态、暂停状态或停止状态下接收步骤2、8所述重置消息后均转化为初始状态。
[0052]其中,所述步骤S5中绑定状态机的具体工作方式为:每个绑定状态机控制一类模型的绑定操作;其在准备状态、已绑定状态下接收步骤S1、步骤S2、步骤S5所述绑定消息后均可转化为已绑定状态,输出操作内容为:将由消息参数指定的父子模型绑定,令消息路由器向流程控制器发送结束消息,并按步骤S5所述将接收到的消息参数中的消息编号作为消息参数;绑定状态机在绑定状态下接收步骤S1、步骤S2、步骤S5所述设置消息后转化为准备状态,输出操作内容为:根据消息参数设置特定子模型的位移、旋转、尺度变换,令消息路由器向流程控制器发送结束消息,并按步骤S5所述将接收到底消息参数中的消息编号作为消息参数。
[0053]其中,所述步骤S3、步骤S4、步骤S5、步骤S6中流程控制器的运行时表的数据结构为线性表,暂停时表的数据结构为队列;运行时表用于保存已经传递出、但尚未接收步骤S5所述反馈的消息编号,暂停时表用于保存在暂停状态下接收到反馈的消息编号,每个编号对应于消息信息树的一个节点;流程控制器对运行时表具体的维护方法为:初始时,运行时表为空;当流程控制器指派消息路由器向动画状态机和绑定状态机发送消息时,在运行时表中添加所发送消息信息的编号;当流程控制器接收结束消息后,所述步骤S5中对运行时表的具体更新方法为,删除运行时表中所存编号与结束消息的消息编号一致的项,如果该编号对应节点拥有子节点,将所有子节点编号加入运行时表;当流程控制器在暂停状态接收继续消息后,所述步骤S6中对运行时表的具体更新方法为,按先进先出方式依次取出暂停时表中的各编号,对去除的每一编号,删除运行时表中所存编号与取出编号一致的项,如果该编号对应节点拥有子节点,将所有子节点编号加入运行时表;流程控制器对暂停时表具体的维护方法为:暂停时表初始为空;当流程控制器在暂停状态接收结束消息后,所述步骤S6中保存对应消息编号到暂停时表的方法为:按队列方式加入队尾;当流程控制器在暂停状态接收结束消息后,所述步骤S6中的保存对应消息编号到暂停时表达方法为:按队列方式加入队尾;当流程控制器在暂停状态下接收继续消息后,流程控制器将按先进先出方法从队首依次取出暂停时表各项并按前述方法更新运行时表,直至暂停时表为空。
[0054]综上,本发明技术方案涉及多个动画的组织控制技术,根据总的动画流程和局部子动画,利用状态机对整个动画行为进行组织控制,方便用户通过修改流程描述文件对整个动画流程进行修改。该方法可方便用于产品三维动画演示和流程演示。
[0055]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。
【权利要求】
1.一种基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其特征在于,该方法基于流程控制系统来实施,所述流程控制系统包括:消息路由器、流程控制器、动画控制器、动画状态机、绑定状态机以及流程文件分析器;所述消息路由器为系统各Mealy有限状态自动机所涉及的消息的统一收发器 ,其中消息是各Mealy有限状态自动机的输入,每一消息均由消息类型和消息参数构成,消息类型用于决定状态转移,消息参数用于指定输出操作的行为;所述流程控制器为Mealy有限状态自动机,用于控制整个动画过程,其状态包括:准备、运行、暂停、终止,其初始状态为准备状态,其接收消息类型包括:开始、结束、暂停、继续、终止、重置;所述动画控制器用于描述局部动画的动画文件的解析和播放;所述动画状态机为Mealy有限状态自动机,其利用动画控制器实现动画控制,其状态包括:初始、准备、运行、暂停、停止,其初始状态为初始状态,其接收消息类型包括:读取、开始、暂定、继续、重置、停止;所述动画状态机与动画控制器成组设置,系统中设有多组,每一组用于对某一部分动画进行操作,所有组所对应的部分动画组合起来为整体动画;所述绑定状态机为Mealy有限状态自动机,用于指定特定三维模型的父子关系和子模型的局部变换,其状态包括:准备、已绑定,其初始状态为准备状态,其接收消息类型包括:绑定、设置、重置;所述绑定状态机设有多个,分别对不同的部分动画进行绑定;所述流程文件分析器用于解析特定的用户输入流程文件; 所述基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其包括如下步骤: 步骤S1:编写XML格式的流程描述文件,按层次描述整个动画流程依次需要播放的动画文件,以及各个阶段模型间的父子绑定关系,确定流程控制器的工作内容;流程描述文件以文字形式描述了由读取、开始、绑定、设置四种消息信息构成的消息信息树,消息信息树是一个树状结构,为多叉树;其中每条消息信息包含消息的编号、消息的内容、消息发送到目标和信息发送的延时、消息的内容及消息的类型和参数; 步骤S2:流程文件分析器解析步骤SI中的所述流程描述文件,在内存层次构造出流程描述文件所描述的消息信息树;消息信息树中包含控制动画状态机的读取和开始消息、以及控制绑定状态机的绑定和设置消息;流程文件分析器将消息层次树构造完成后传递给流程控制器,并指派消息路由器向流程控制器发送重置消息; 步骤S3:流程控制器在任何状态下接收到步骤S2中的所述重置消息后则转换为准备状态,其输出操作为:令消息路由器向其他状态机发送重置消息,清空流程控制器自身的运行时表和暂停时表中的信息;动画状态机在任何状态下接收重置消息则转化为初始状态;绑定状态机在任何状态下接收重置消息则转化为准备状态;运行时表是一个线性表,保存发出而未反馈的消息编号,暂停时表是一个队列,保存暂停时反馈的消息编号,二者用于保证流程控制器正确的按消息信息树逐层向下传递消息; 步骤S4:流程控制器在初始的准备状态下接收开始消息则转化为运行状态;输出操作为:由步骤S2所述消息树第一层节点的内容,为消息路由器添加各节点的消息信息,指派消息路由器在下一帧时向各个操作相关的状态机按指定延时发送指定消息,以此开始动画流程;且,流程控制器向运行时表添加所传递出的各消息信息的消息编号; 步骤S5:流程控制器在运行状态下,不断按步骤S2所述消息信息树中的消息信息,指派消息路由器向各动画状态机发送读取消息和开始消息、向绑定状态机发送绑定消息和设置消息,使得动画状态机和绑定状态机执行相应的操作,以运行整个动画进程;流程控制器向动画状态机和绑定状态机每次传递消息后,都将在二者执行完相应操作后收到响音的结束消息作为反馈;流程控制器在指派消息路由器发送各消息时,将消息编号添加到原有消息参数中作为新的参数,该消息编号将在其他状态机向其传递结束消息时作为消息参数传递,使得流程控制器掌握各状态机执行动作所对应的发起消息;动画状态机根据读取消息的参数,特定的动画控制器解析相应的文件,根据开始消息的参数使特定的动画控制器播放相应的动画;动画状态机在 读取完成后或动画运行结束后向流程控制器发送结束消息,消息参数描述了使其读取或开始的消息编号;绑定状态机根据绑定消息的参数将一对特定模型进行绑定,根据设置的消息参数设置子模型在局部坐标下的位置和方向;绑定状态机完成绑定操作或设置操作后向流程控制器发送结束消息,消息参数描述了使其绑定或设置的消息编号;流程控制器在运行状态下接收结束消息则转化为终止状态,其输出操作为:按消息参数提供的消息编号,找到其在步骤S2所述消息信息树中的节点,如果该节点存在子节点,按所有子节点内容为消息路由器添加消息,按消息参数提供的消息编号更新运行时表,判断运行时表是否为空,若为空则所有消息发送完毕,则令消息路由器向该流程控制器发送终止消息; 步骤6:当流程控制器按步骤S5所述处于不断的运行状态时,可在用户控制下通过暂停、继续消息对整个流程进行暂停、继续操作;流程控制器在运行状态下接收暂停消息则转化为暂停状态;其输出操作为:令消息路由器向所有状态机发送暂停消息;流程控制器在暂停状态下接收暂停消息则转化为暂停状态,输出操作为:保持步骤S5所述的结束消息相关的消息编号至暂停时表,使得返回运行状态时控制器工作正常;流程控制器在暂停状态下接收继续消息则转化为运行状态,输出操作为:令消息路由器向所有状态机发送继续类型消息,依照暂停时记录的消息编号,更新运行时表; 步骤S7:当流程控制器按步骤S5所述处于不断的运行状态时,直至收到由该流程控制器指派消息路由发出的终止消息时,流程控制器在运行状态或暂停状态下接收终止消息则转化为终止状态;所有动画播放完毕; 步骤S8:用户通过指派消息路由器向流程控制器发送重置消息,使所有状态机在步骤S2操作下恢复到初始状态,以便用户重新控制动画播放。
2.如权利要求1所述的基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其特征在于,所述步骤SI及步骤S2中的消息信息树,在内存层次和文件层次所描述的数据是完全一致的,树节点一一对应;该消息信息树是一个树状结构,为多叉树,具有一个根节点;根节点不描述消息信息,根节点以下各节点保存一条消息的信息,描述消息的编号,消息的内容,消息发送到目标和消息发送到延时;其中,消息的编号是用户指定的节点唯一的数据,唯一的标记了消息信息树中的节点;消息内容包括消息的类型和消息参数;消息发送的目标是某个动画状态机或绑定状态机;目标为动画状态机的节点对应读取和开始两种类型消息,目标为绑定状态机的节点对应绑定和设置两种类型消息;其中读取消息的参数是相应的动画文件地址,绑定消息的参数是所要绑定的模型,设置消息的参数是模型在局部坐标系下的位移、尺度和旋转。
3.如权利要求1所述的基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其特征在于,所述步骤SI及步骤S2中的流程描述文件是以XML格式编写的对消息信息树的描述;XML文件由若干标签树组成,流程描述文件内保存了一组消息信息标签,每一条消息信息标签包含五个子标签,分别描述消息编号、该消息节点父节点的消息编号、消息目标、消息类型、消息参数、从而表达出整个消息信息树的结构。
4.如权利要求1所述的基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其特征在于,所述步骤S2至步骤S8中消息路由器对消息收发的方式为:消息路由器维护消息信息队列,该队列初始为空,在每一帧的运算中,收集各功能模块的请求,将其发送到消息并加入该队列,并在下一帧开始时依次取出并发送各消息,直至队列为空;消息信息队列是一个队列结构,队列每一项保存消息的内容、消息发送到目标和消息发送到延时;帧开始时,消息路由器按先进先出方式依次取出并发送消息队列中的各项,按项中内容,以指定延时向指定目标状态机发送指定消息;各步骤中各功能模块指派消息路由器发送消息,即是向消息信息队列中加入相应的消息信息,使其在下一帧时统一发送;状态机之间、其他模块与状态机之间通过消息路由器进行间接的消息传递。
5.如权利要求1所述的基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其特征在于,所述步骤S5中动画控制器对动画的控制方式为:通过解析动画文件,保存相应的模型数据和关键帧数据;播放动画时,根据时间节点进行插值运算来得到动画播放中任意节点的模型运动状态;其动画播放结束时执行的特定操作为:令消息路由器向控制该动画控制器的动画状态机发送停止消息。
6.如权利要求1所述的基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其特征在于,所述步骤S5中动画状态机,其具体工作方式为:每个动画状态机控制唯一的动画控制器;初始状态、准备状态或停止状态下接收步骤S1、步骤S2、步骤S5所述读取消息后转化状态至准备状态,输出操作内容为:使动画控制器读取解析由消息参数指定的动画文件,令消息路由器向流程控制器发送结束消息,并按步骤S5所述将接收到的消息参数中的消息编号作为消息参数;动画状态机在备状态下接收步骤S1、步骤S2、步骤S5所述开始消息后转化为运行状态,输出操作为:使动画控制器播放动画,并保存步骤S5所述接收到的消息参数中的消息编号;动画状态机在行状态下接收步骤S6所述暂停消息后转化为暂停状态,输出操作为:使动画控制器暂停动画;动画状态机在停状态下接收步骤S6所述继续消息后转化为运行状态,输出操作为:使动画控制器继续动画;动画状态机在行状态下接收由动画控制器指派发送的停止消息后转化为停止状态,输出操作为:令消息路由器向流程控制器发送结束消息,并按步骤S5所述将保存的消息编号作为消息参数;动画状态机在备状态、运行状态、暂停状态或停止状态下接收步骤2、8所述重置消息后均转化为初始状态。
7.如权利要求1所述的基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其特征在于,所述步骤S5中绑定状态机的具体工作方式为:每个绑定状态机控制一类模型的绑定操作;其在准备状态、已绑定状态下接收步骤S1、步骤S2、步骤S5所述绑定消息后均可转化为已绑定状态,输出操作内容为:将由消息参数指定的父子模型绑定,令消息路由器向流程控制器发送结束消息,并按步骤S5所述将接收到的消息参数中的消息编号作为消息参数;绑定状态机在绑定状态下接收步骤S1、步骤S2、步骤S5所述设置消息后转化为准备状态,输出操作内容为:根据消息参数设置特定子模型的位移、旋转、尺度变换,令消息路由器向流程控制器发送结束消息,并按步骤S5所述将接收到底消息参数中的消息编号作为消息参数。
8.如权利要求1所述的基于Mealy有限状态自动机的三维动画流程的组织与控制方法,其特征在于,所述步骤S3、步骤S4、步骤S5、步骤S6中流程控制器的运行时表的数据结构为线性表,暂停时表的数据结构为队列;运行时表用于保存已经传递出、但尚未接收步骤S5所述反馈的消息编号,暂停时表用于保存在暂停状态下接收到反馈的消息编号,每个编号对应于消息信息树的一个节点;流程控制器对运行时表具体的维护方法为:初始时,运行时表为空;当流程控制器指派消息路由器向动画状态机和绑定状态机发送消息时,在运行时表中添加所发送消息信息的编号;当流程控制器接收结束消息后,所述步骤S5中对运行时表的具体更新方法为,删除运行时表中所存编号与结束消息的消息编号一致的项,如果该编号对应节点拥有子节点, 将所有子节点编号加入运行时表;当流程控制器在暂停状态接收继续消息后,所述步骤S6中对运行时表的具体更新方法为,按先进先出方式依次取出暂停时表中的各编号,对去除的每一编号,删除运行时表中所存编号与取出编号一致的项,如果该编号对应节点拥有子节点,将所有子节点编号加入运行时表;流程控制器对暂停时表具体的维护方法为:暂停时表初始为空;当流程控制器在暂停状态接收结束消息后,所述步骤S6中保存对应消息编号到暂停时表的方法为:按队列方式加入队尾;当流程控制器在暂停状态接收结束消息后,所述步骤S6中的保存对应消息编号到暂停时表达方法为:按队列方式加入队尾;当流程控制器在暂停状态下接收继续消息后,流程控制器将按先进先出方法从队首依次取出暂停时表各项并按前述方法更新运行时表,直至暂停时表为空。
【文档编号】G06T13/20GK103927777SQ201410133273
【公开日】2014年7月16日 申请日期:2014年4月3日 优先权日:2014年4月3日
【发明者】魏乐愚, 贝宇红, 樊新华 申请人:北京星航机电装备有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1