一种在三维动画引擎底层实现人机交互的方法

文档序号:6365235阅读:187来源:国知局
专利名称:一种在三维动画引擎底层实现人机交互的方法
技术领域
本发明涉及计算机动画行业三维动画引擎设计及三维图形学领域,尤其涉及一种在三维动画引擎底层实现人机交互的方法。
背景技术
随着虚拟现实、分布式视算、分布式仿真和网络三维游戏的发展,三维动画引擎成为三维动画开发必不可少的环节,三维动画设计不仅要求模型在图形上高度逼真、具有实时响应能力,而且也要求模型具有物理属性和行为能力(即模型能够按照客观规律自主运动),如果这些所有设计都从底层开发,那工作量之巨大是可想而知的。实现人机交互功能是三维动画引擎底层最为关键的部分。在三维动画底层进行人机交互的功能封装,上层游戏开发者就可以直接调用人机交互命令实现其动画设计。目前基于人机交互的三维引擎技术尚在发展中,虽然有个别企业的技术较成熟,如3ds Max、Maya等,由于这些三维引擎软件将底层人机交互的实现方式完全封装,只留给供用户调用人机交互功能的上层界面,这样对于进行普通的三维引擎软件使用比较便利,但是对于需要三维引擎特定功能使用的用户,需要结合三维引擎人机交互功能开发一套特定的软件。同时,已有成熟的大型软件进行商业化使用的费用较高,对于不需要太多复杂功能支持的用户来讲,可以开发满足特定需求的低成本软件进行使用。可见,现有技术中并没有给出在三维动画引擎底层通过底层算法实现功能封装及供上层调用以进行人机交互的方法。

发明内容
(一 )要解决的技术问题为解决上述问题,本发明结合三维角色的特征以及人机交互的具体实现功能,利用有限状态机将三维角色需要的功能操作进行封装,然后设计有限状态机的运行规则,从而实现三维动画引擎底层的人机交互功能。通过本发明的具体实施,上层用户可以方便的进行人机交互功能的使用。( 二 )技术方案本发明公开了一种在三维动画引擎底层实现人机交互的方法。该方法包括使用事件处理对象对拾取、平移、旋转和缩放操作进行了统一封装,分别构成事件响应函数;基于有限状态机,使用枚举变量定义事件处理对象的对应不同类型操作的工作状态,该工作状态与事件响应函数具有对应关系;接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数。(三)有益效果从上述技术方案可以看出,本发明在三维动画引擎底层实现人机交互的方法具有下列有益效果(I)通过简单的有限状态机管理即可实现场景内角色的人机交互功能,简化了三维引擎设计中人机交互的底层设计难度;(2)如果需要补充特定角色功能时,可以通过添加有限状态机状态及补充封装功能完成;
(3)通过实时状态机实现拣选和变换,实现了完整的三维动画引擎的人机交互功能,方便了用户操作,节省了费用。


图I为本发明实施例在三维动画引擎底层实现人机交互方法的人机交互结构图;图2为本发明实施例在三维动画引擎底层实现人机交互方法中有限状态机状态转换图;图3为本发明实施例在三维动画引擎底层实现人机交互方法中角色路径动画实现原理图;图4为本发明实施例在三维动画引擎底层实现人机交互方法中角色交互动画的实现原理图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。在三维动画引擎设计中,对于三维场景中的角色拾取、平移、旋转、缩放以及动画操作功能的统一管理和调用是软件开发中的关键,如何通过底层算法实现功能封装及供上层调用是三维引擎设计的难点,本发明正是通过解决三维角色的具体功能封装,利用有限状态机实现了底层人机交互的功能。本发明当中,有限状态机(Finite-State Machine,简称FSM)是指有限个状态以及在这些状态之间转移和动作等行为的数学模型。在本发明的一个示例性实施例中,提出了一种在三维动画引擎底层实现人机交互的方法。本实施例中,用户通过鼠标、键盘等外部设备与三维动画引擎进行消息事件传递,三维动画引擎结合具体的用户命令以及场景中具体的角色特点进行响应。本实施例包括步骤S102,通过有限状态机,将拾取、平移、旋转和缩放等操作进行封装,对于用户进行的交互事件触发,有限状态机跳转至对应的工作状态,并执行对应的事件响应函数,直到执行完事件处理,有限状态机回到初始位置,等待下一次交互动作;本步骤又可以分为以下的步骤步骤S102a :使用事件处理对象对不同类型的操作进行了统一封装,构成事件响应函数;步骤S102b,基于有限状态机,使用枚举变量定义事件处理对象的工作状态,该工作状态与所述不同类型的操作具有对应关系;图I为本发明实施例在三维动画引擎底层实现人机交互方法中有限状态机状态转换图,对于上述步骤而言,具体操作的基本工作状态有5个,分别为空闲、拾取、平移、旋转和缩放,其中空闲为缺省状态,该状态下操作不响应除强制改变状态命令的任何用户输入。
步骤S102c,当接收到用户输入的交互事件时,即跳转入有限状态机内,并从空闲状态进入对应功能状态,并执行对应的事件响应函数。当用户输入拾取指令时,进入拾取状态,此时可以响应用户通过鼠标输入的点击、释放等事件对场景中的节点进行拾取,并使用刻线将被拾取到的节点突出出来;当用户输入平移指令时,进入平移状态,此时的事件响应函数除了要完成拾取任务外,还要为被拾取到的节点添加平移功能,并在随后的操作中完成对选中三维对象的平移;旋转状态和缩放状态与平移状态的工作方式相类似,只是添加的操作功能不同。直至功能结束,即回到起始等待状态。
针对上述实现步骤,以对场景内的角色进行旋转操作举例如下I、面对用户的场景内可能存在一个或多个角色节点,当不对场景内的角色进行操作时,有限状态机处于空闲状态,场景没有任何操作和响应。2、当需要对场景内的一部分角色进行旋转操作时,首先给场景发出一个旋转操作的命令,(旋转命令以点击界面按键传递入有限状态机),有限状态机接收到命令后,即从空闲状态首先进入拣选状态,此时在场景内可以点击拣选一个或多个角色,对于选中的节点,即以刻线形式突出显示,同时,每个角色以自身根节点的几何点为中心会显示一个用于实现旋转功能的三维球坐标系。3、当拣选结束后,用鼠标点中球坐标轴,然后进行对应的旋转操作,此时有限状态机进入旋转状态,选中节点也同时进行旋转响应。4、当旋转操作结束后,点击返回场景外的按键,即完成旋转操作的人机交互,有限状态机回到空闲状态。5、如果旋转结束,用户可能需要进行平移或者缩放操作时,可以不需要返回场景夕卜,直接点击平移或缩放按键,此时有限状态机进入对应功能响应状态,同时球坐标也会消失,变成三维平移坐标系或者缩放坐标系。进行类似操作。6、操作结束,回到空闲状态,场景内对应节点的最终状态会被记录和保存。需要说明的是,上述的步骤S102可以单独作为一个完整的技术方案,以实现基本的人机交互功能。步骤S104,在实现对三维角色进行特定的拾取、平移、旋转、缩放等操作的基础上,还可以对三维角色进行动画功能的编辑及实时操作。图2为本发明实施例在三维动画引擎底层实现人机交互方法的人机交互结构图。如图2所示,在本发明中,主要针对两种类型的动画功能进行人机交互,关键路径动画和角色动画。其中关键路径动画主要指通过在场景中设置并记录三维角色在关键点的位置及三维动画路径;角色动画则需要通过控制再现角色的具体动作信息。对于关键路径动画来讲,设置一个几何节点与读入的角色节点绑定,角色节点自带具体动作信息,几何节点设置关键路径控制点,并且对关键路径控制点的时间点之间进行差值运算,将角色的动作与帧动画信息进行叠加,以实现角色在路径动画实现过程中的动态效果。具体来讲,本步骤S104又可以分为以下子步骤步骤S104a,对于自身附带动作信息的角色节点,在此节点的上层绑定一个几何节占.步骤S104b,通过在时间轴上对几何节点安插一些关键控制点,每个关键控制点包含此时刻被编辑节点的状态信息,包括位置或旋转信息等;
步骤S104c,各个时间点之间采用均匀差值的方式进行实时计算,以达到连续的效果;步骤S104d,同时将几何节点附带的关键点信息与角色自带的动作信息进行算法叠加,以再现整个角色动画,实现角色的路径动画效果。针对上述实现步骤,以对场景内的一个人物角色进行路径动画举例如下I、首先对场景内的角色节点进行拣选,有限状态机进入拣选状态,此时场景底层自动为此节点绑定一个新的几何节点。2、对于进行关键路径动画的设计,需要有一个时间顺序的概念,所以可以依时间轴在时间轴上设定关键时间点,然后在此关键时间点上,通过平移场景内的角色节点到指定位置或通过写入具体坐标值,设计节点到达此关键时间点时的坐标位置、旋转角度或缩放比例。用户可以根据设计需要选定一系列关键点进行设计。3、当关键点设计完成后,场景会保存对应时间点的对应信息,并采用均匀差值的方法进行算法拟合,当再现动画效果时,能够体现出连贯的动画效果。上述动画主要对绑定的几何节点进行动画实现。4、以人物角色为例,如果人物角色自带跑跳等肢体动作的信息,则可以在关键路径动画的同时叠加自身的动作信息,这样可以呈现出人物沿着某路径实现跑跳等逼真的效果;如果没有自带动作信息,比如对一个圆球进行关键路径动画,则可以呈现出一个球沿一条路径实现动画效果。对于角色动画来讲,在针对鼠标键盘实时控制的角色动作过程中,将角色节点与几何节点进行绑定,几何节点可以受鼠标或键盘控制产生相应的速度、位置、方向信息,此信息与角色节点进行叠加,产生相应的角色动画。对于场景内受鼠标键盘等实时控制并达到角色动作效果的实现,仍然采用将场景内的动态角色绑定几何节点的方法,通过鼠标键盘等外部输入设备实时控制几何节点,几何节点可以进行位置、速度等信息的实时运算,同时,动画角色的具体动作与几何节点叠加生成实时的动态效果。具体来讲,对于需要操作和控制的三维角色,本步骤S106又可以分为以下子步骤步骤S104' a,首先拾取被操控角色节点并为其绑定一个“矩阵变换”的几何节

步骤S104' b,当通过鼠标键盘等外部设备对角色进行操作时,实时修改并记录几何节点的变换矩阵的值;步骤S104' C,每一个操作都与下一次动作进行叠加运算,人机交互底层实时记录并保存所有几何节点的坐标值,这样就避免了直接修改三维对象的顶点坐标;步骤S104' d,协同呈现几何节点与三维对象,以逼真的显示角色的动画状态而没有改变三维对象的形态,达到产生实时动画的目的。针对上述实现步骤,以对场景内的人物角色进行角色动画举例如下I、在进行游戏设计的场景中,为实现游戏的逼真性,必然会通过鼠标键盘等外部控制设备对场景内的角色进行实时控制,同时游戏引擎底层也需要对控制进行实时响应。此时就需要实现角色动画控制的功能封装。2、首先对场景内的角色节点进行拣选,有限状态机进入拣选状态,对于场景内选定的角色,也同样绑定一个矩阵几何节点。3、将矩阵几何节点与对应鼠标和键盘的操作功能进行绑定,比如当按下键盘的“W”键,即执行前进功能(沿着Y正方向平移的功能)。鼠标或键盘的绑定可以被用户修改和设置。4、当对鼠标键盘执行操作时,场景会记录并实时更新当前的所有矩阵几何节点信
肩、O5、与此同时,人物角色自带的动画信息可以与矩阵几何节点实时叠加显示,从而产生角色动画的效果。6、当完成角色操作时,即完成几何节点的坐标信息修改,并未修改人物角色自身的相对坐标信息关系。从上述技术方案可以看出,本发明在三维动画引擎底层实现人机交互的方法具有下列有益效果(I)通过简单的有限状态机管理即可实现场景内角色的人机交互功能,简化了三维引擎设计中人机交互的底层设计难度;(2)如果需要补充特定角色功能时,可以通过添加有限状态机状态及补充封装功能完成;(3)通过实时状态机实现拣选和变换,实现了完整的三维动画引擎的人机交互功能,方便了用户操作,节省了费用。以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。权利要求
1.一种在三维动画引擎底层实现人机交互的方法,其特征在于,包括 使用事件处理对象对拾取、平移、旋转和缩放操作进行了统一封装,分别构成事件响应函数; 基于有限状态机,使用枚举变量定义事件处理对象的对应不同类型操作的工作状态,该工作状态与事件响应函数具有对应关系; 接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数。
2.根据权利要求I所述的在三维动画引擎底层实现人机交互的方法,其特征在于,所述的工作状态包括拾取状态、平移状态、旋转状态和缩放状态。
3.根据权利要求2所述的在三维动画引擎底层实现人机交互的方法,其特征在于,所述接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数的步骤包括 当用户触发的拾取指令时,有限状态机跳转至拾取状态,与拾取状态对应的事件响应函数响应用户通过鼠标输入的点击、释放事件对场景中的节点进行拾取,并使用刻线将被拾取到的节点突出出来; 当用户触发的平移指令时,有限状态机跳转至平移状态,与平移状态对应的事件响应函数除了要完成拾取任务外,还要为被拾取到的节点添加平移功能,并在随后的操作中完成对选中三维对象的平移; 当用户触发的旋转指令时,有限状态机跳转至旋转状态,与旋转状态对应的事件响应函数除了要完成拾取任务外,还要为被拾取到的节点添加旋转功能,并在随后的操作中完成对选中三维对象的旋转;或 当用户触发的缩放指令时,有限状态机跳转至缩放状态,与缩放状态对应的事件响应函数除了要完成拾取任务外,还要为被拾取到的节点添加缩放功能,并在随后的操作中完成对选中三维对象的缩放。
4.根据权利要求3所述的在三维动画引擎底层实现人机交互的方法,其特征在于,所述工作状态还包括空闲状态; 所述接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数的步骤之后还包括接收用户触发的交互事件结束的指令,有限状态机跳转至空闲状态。
5.根据权利要求I至4中任一项所述的在三维动画引擎底层实现人机交互的方法,其特征在于,所述接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数的步骤之后还包括 对三维角色进行动画功能的编辑操作。
6.根据权利要求5所述的在三维动画引擎底层实现人机交互的方法,其特征在于,对于关键路径动画,所述对三维角色进行动画功能的编辑操作的步骤包括 对于自身附带动作信息的角色节点,在此节点的上层绑定一个几何节点; 通过在时间轴上对几何节点安插多个关键控制点,每个关键控制点包含此时刻被编辑节点的状态信息,包括位置或旋转信息; 各个时间点之间采用均匀差值的方式进行实时计算,以达到连续的效果;将几何节点附带的关键点信息与角色自带的动作信息进行算法叠加,以再现整个角色动画,实现角色的路径动画效果。
7.根据权利要求5所述的在三维动画引擎底层实现人机交互的方法,其特征在于,对于角色动画,所述对三维角色进行动画功能的编辑操作的步骤包括 拾取被操控角色节点并为其绑定一个“矩阵变换”的几何节点; 当通过鼠标/键盘外部设备对角色进行操作时,实时修改并记录几何节点的变换矩阵的值; 每一个操作都与下一次动作进行叠加运算,人机交互底层实时记录并保存所有几何节点的坐标值; 协同呈现几何节点与三维对象,以显示角色的动画状态,产生实时动画的目的。
全文摘要
本发明公开了一种在三维动画引擎底层实现人机交互的方法。该方法包括使用事件处理对象对拾取、平移、旋转和缩放操作进行了统一封装,分别构成事件响应函数;基于有限状态机,使用枚举变量定义事件处理对象的对应不同类型操作的工作状态,该工作状态与事件响应函数具有对应关系;接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数。本发明在三维动画引擎底层实现人机交互的方法通过简单的有限状态机管理即可实现场景内角色的人机交互功能,简化了三维引擎设计中人机交互的底层设计难度。
文档编号G06F3/01GK102637073SQ20121004204
公开日2012年8月15日 申请日期2012年2月22日 优先权日2012年2月22日
发明者任雁鹏, 梁利平, 罗汉青, 赵淳 申请人:中国科学院微电子研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1