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

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

Info

Publication number
CN102637073B
CN102637073B CN201210042044.1A CN201210042044A CN102637073B CN 102637073 B CN102637073 B CN 102637073B CN 201210042044 A CN201210042044 A CN 201210042044A CN 102637073 B CN102637073 B CN 102637073B
Authority
CN
China
Prior art keywords
node
role
dimensional
man
state machine
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.)
Active
Application number
CN201210042044.1A
Other languages
English (en)
Other versions
CN102637073A (zh
Inventor
任雁鹏
赵淳
罗汉青
梁利平
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Microelectronics of CAS
Original Assignee
Institute of Microelectronics of CAS
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Institute of Microelectronics of CAS filed Critical Institute of Microelectronics of CAS
Priority to CN201210042044.1A priority Critical patent/CN102637073B/zh
Publication of CN102637073A publication Critical patent/CN102637073A/zh
Application granted granted Critical
Publication of CN102637073B publication Critical patent/CN102637073B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种在三维动画引擎底层实现人机交互的方法。该方法包括:使用事件处理对象对拾取、平移、旋转和缩放操作进行了统一封装,分别构成事件响应函数;基于有限状态机,使用枚举变量定义事件处理对象的对应不同类型操作的工作状态,该工作状态与事件响应函数具有对应关系;接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数。本发明在三维动画引擎底层实现人机交互的方法通过简单的有限状态机管理即可实现场景内角色的人机交互功能,简化了三维引擎设计中人机交互的底层设计难度。

Description

一种在三维动画引擎底层实现人机交互的方法
技术领域
本发明涉及计算机动画行业三维动画引擎设计及三维图形学领域,尤其涉及一种在三维动画引擎底层实现人机交互的方法。
背景技术
随着虚拟现实、分布式视算、分布式仿真和网络三维游戏的发展,三维动画引擎成为三维动画开发必不可少的环节,三维动画设计不仅要求模型在图形上高度逼真、具有实时响应能力,而且也要求模型具有物理属性和行为能力(即模型能够按照客观规律自主运动),如果这些所有设计都从底层开发,那工作量之巨大是可想而知的。实现人机交互功能是三维动画引擎底层最为关键的部分。在三维动画底层进行人机交互的功能封装,上层游戏开发者就可以直接调用人机交互命令实现其动画设计。
目前基于人机交互的三维引擎技术尚在发展中,虽然有个别企业的技术较成熟,如3ds Max、Maya等,由于这些三维引擎软件将底层人机交互的实现方式完全封装,只留给供用户调用人机交互功能的上层界面,这样对于进行普通的三维引擎软件使用比较便利,但是对于需要三维引擎特定功能使用的用户,需要结合三维引擎人机交互功能开发一套特定的软件。同时,已有成熟的大型软件进行商业化使用的费用较高,对于不需要太多复杂功能支持的用户来讲,可以开发满足特定需求的低成本软件进行使用。
可见,现有技术中并没有给出在三维动画引擎底层通过底层算法实现功能封装及供上层调用以进行人机交互的方法。
发明内容
(一)要解决的技术问题
为解决上述问题,本发明结合三维角色的特征以及人机交互的具体实现功能,利用有限状态机将三维角色需要的功能操作进行封装,然后设计有限状态机的运行规则,从而实现三维动画引擎底层的人机交互功能。通过本发明的具体实施,上层用户可以方便的进行人机交互功能的使用。
(二)技术方案
本发明公开了一种在三维动画引擎底层实现人机交互的方法。该方法包括:使用事件处理对象对拾取、平移、旋转和缩放操作进行了统一封装,分别构成事件响应函数;基于有限状态机,使用枚举变量定义事件处理对象的对应不同类型操作的工作状态,该工作状态与事件响应函数具有对应关系;接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数。
(三)有益效果
从上述技术方案可以看出,本发明在三维动画引擎底层实现人机交互的方法具有下列有益效果:
(1)通过简单的有限状态机管理即可实现场景内角色的人机交互功能,简化了三维引擎设计中人机交互的底层设计难度;
(2)如果需要补充特定角色功能时,可以通过添加有限状态机状态及补充封装功能完成;
(3)通过实时状态机实现拣选和变换,实现了完整的三维动画引擎的人机交互功能,方便了用户操作,节省了费用。
附图说明
图1为本发明实施例在三维动画引擎底层实现人机交互方法的人机交互结构图;
图2为本发明实施例在三维动画引擎底层实现人机交互方法中有限状态机状态转换图;
图3为本发明实施例在三维动画引擎底层实现人机交互方法中角色路径动画实现原理图;
图4为本发明实施例在三维动画引擎底层实现人机交互方法中角色交互动画的实现原理图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明进一步详细说明。虽然本文可提供包含特定值的参数的示范,但应了解,参数无需确切等于相应的值,而是可在可接受的误差容限或设计约束内近似于相应的值。
在三维动画引擎设计中,对于三维场景中的角色拾取、平移、旋转、缩放以及动画操作功能的统一管理和调用是软件开发中的关键,如何通过底层算法实现功能封装及供上层调用是三维引擎设计的难点,本发明正是通过解决三维角色的具体功能封装,利用有限状态机实现了底层人机交互的功能。本发明当中,有限状态机(Finite-State Machine,简称FSM)是指有限个状态以及在这些状态之间转移和动作等行为的数学模型。
在本发明的一个示例性实施例中,提出了一种在三维动画引擎底层实现人机交互的方法。本实施例中,用户通过鼠标、键盘等外部设备与三维动画引擎进行消息事件传递,三维动画引擎结合具体的用户命令以及场景中具体的角色特点进行响应。本实施例包括:
步骤S102,通过有限状态机,将拾取、平移、旋转和缩放等操作进行封装,对于用户进行的交互事件触发,有限状态机跳转至对应的工作状态,并执行对应的事件响应函数,直到执行完事件处理,有限状态机回到初始位置,等待下一次交互动作;本步骤又可以分为以下的步骤:
步骤S102a:使用事件处理对象对不同类型的操作进行了统一封装,构成事件响应函数;
步骤S102b,基于有限状态机,使用枚举变量定义事件处理对象的工作状态,该工作状态与所述不同类型的操作具有对应关系;
图1为本发明实施例在三维动画引擎底层实现人机交互方法中有限状态机状态转换图,对于上述步骤而言,具体操作的基本工作状态有5个,分别为空闲、拾取、平移、旋转和缩放,其中空闲为缺省状态,该状态下操作不响应除强制改变状态命令的任何用户输入。
步骤S102c,当接收到用户输入的交互事件时,即跳转入有限状态机内,并从空闲状态进入对应功能状态,并执行对应的事件响应函数。当用户输入拾取指令时,进入拾取状态,此时可以响应用户通过鼠标输入的点击、释放等事件对场景中的节点进行拾取,并使用刻线将被拾取到的节点突出出来;当用户输入平移指令时,进入平移状态,此时的事件响应函数除了要完成拾取任务外,还要为被拾取到的节点添加平移功能,并在随后的操作中完成对选中三维对象的平移;旋转状态和缩放状态与平移状态的工作方式相类似,只是添加的操作功能不同。直至功能结束,即回到起始等待状态。
针对上述实现步骤,以对场景内的角色进行旋转操作举例如下:
1、面对用户的场景内可能存在一个或多个角色节点,当不对场景内的角色进行操作时,有限状态机处于空闲状态,场景没有任何操作和响应。
2、当需要对场景内的一部分角色进行旋转操作时,首先给场景发出一个旋转操作的命令,(旋转命令以点击界面按键传递入有限状态机),有限状态机接收到命令后,即从空闲状态首先进入拣选状态,此时在场景内可以点击拣选一个或多个角色,对于选中的节点,即以刻线形式突出显示,同时,每个角色以自身根节点的几何点为中心会显示一个用于实现旋转功能的三维球坐标系。
3、当拣选结束后,用鼠标点中球坐标轴,然后进行对应的旋转操作,此时有限状态机进入旋转状态,选中节点也同时进行旋转响应。
4、当旋转操作结束后,点击返回场景外的按键,即完成旋转操作的人机交互,有限状态机回到空闲状态。
5、如果旋转结束,用户可能需要进行平移或者缩放操作时,可以不需要返回场景外,直接点击平移或缩放按键,此时有限状态机进入对应功能响应状态,同时球坐标也会消失,变成三维平移坐标系或者缩放坐标系。进行类似操作。
6、操作结束,回到空闲状态,场景内对应节点的最终状态会被记录和保存。
需要说明的是,上述的步骤S102可以单独作为一个完整的技术方案,以实现基本的人机交互功能。
步骤S104,在实现对三维角色进行特定的拾取、平移、旋转、缩放等操作的基础上,还可以对三维角色进行动画功能的编辑及实时操作。
图2为本发明实施例在三维动画引擎底层实现人机交互方法的人机交互结构图。如图2所示,在本发明中,主要针对两种类型的动画功能进行人机交互,关键路径动画和角色动画。其中关键路径动画主要指通过在场景中设置并记录三维角色在关键点的位置及三维动画路径;角色动画则需要通过控制再现角色的具体动作信息。
对于关键路径动画来讲,设置一个几何节点与读入的角色节点绑定,角色节点自带具体动作信息,几何节点设置关键路径控制点,并且对关键路径控制点的时间点之间进行差值运算,将角色的动作与帧动画信息进行叠加,以实现角色在路径动画实现过程中的动态效果。具体来讲,本步骤S104又可以分为以下子步骤:
步骤S104a,对于自身附带动作信息的角色节点,在此节点的上层绑定一个几何节点;
步骤S104b,通过在时间轴上对几何节点安插一些关键控制点,每个关键控制点包含此时刻被编辑节点的状态信息,包括位置或旋转信息等;
步骤S104c,各个时间点之间采用均匀差值的方式进行实时计算,以达到连续的效果;
步骤S104d,同时将几何节点附带的关键点信息与角色自带的动作信息进行算法叠加,以再现整个角色动画,实现角色的路径动画效果。
针对上述实现步骤,以对场景内的一个人物角色进行路径动画举例如下:
1、首先对场景内的角色节点进行拣选,有限状态机进入拣选状态,此时场景底层自动为此节点绑定一个新的几何节点。
2、对于进行关键路径动画的设计,需要有一个时间顺序的概念,所以可以依时间轴在时间轴上设定关键时间点,然后在此关键时间点上,通过平移场景内的角色节点到指定位置或通过写入具体坐标值,设计节点到达此关键时间点时的坐标位置、旋转角度或缩放比例。用户可以根据设计需要选定一系列关键点进行设计。
3、当关键点设计完成后,场景会保存对应时间点的对应信息,并采用均匀差值的方法进行算法拟合,当再现动画效果时,能够体现出连贯的动画效果。上述动画主要对绑定的几何节点进行动画实现。
4、以人物角色为例,如果人物角色自带跑跳等肢体动作的信息,则可以在关键路径动画的同时叠加自身的动作信息,这样可以呈现出人物沿着某路径实现跑跳等逼真的效果;如果没有自带动作信息,比如对一个圆球进行关键路径动画,则可以呈现出一个球沿一条路径实现动画效果。
对于角色动画来讲,在针对鼠标键盘实时控制的角色动作过程中,将角色节点与几何节点进行绑定,几何节点可以受鼠标或键盘控制产生相应的速度、位置、方向信息,此信息与角色节点进行叠加,产生相应的角色动画。
对于场景内受鼠标键盘等实时控制并达到角色动作效果的实现,仍然采用将场景内的动态角色绑定几何节点的方法,通过鼠标键盘等外部输入设备实时控制几何节点,几何节点可以进行位置、速度等信息的实时运算,同时,动画角色的具体动作与几何节点叠加生成实时的动态效果。具体来讲,对于需要操作和控制的三维角色,本步骤S106又可以分为以下子步骤:
步骤S104′a,首先拾取被操控角色节点并为其绑定一个“矩阵变换”的几何节点;
步骤S104′b,当通过鼠标键盘等外部设备对角色进行操作时,实时修改并记录几何节点的变换矩阵的值;
步骤S104′c,每一个操作都与下一次动作进行叠加运算,人机交互底层实时记录并保存所有几何节点的坐标值,这样就避免了直接修改三维对象的顶点坐标;
步骤S104′d,协同呈现几何节点与三维对象,以逼真的显示角色的动画状态而没有改变三维对象的形态,达到产生实时动画的目的。
针对上述实现步骤,以对场景内的人物角色进行角色动画举例如下:
1、在进行游戏设计的场景中,为实现游戏的逼真性,必然会通过鼠标键盘等外部控制设备对场景内的角色进行实时控制,同时游戏引擎底层也需要对控制进行实时响应。此时就需要实现角色动画控制的功能封装。
2、首先对场景内的角色节点进行拣选,有限状态机进入拣选状态,对于场景内选定的角色,也同样绑定一个矩阵几何节点。
3、将矩阵几何节点与对应鼠标和键盘的操作功能进行绑定,比如当按下键盘的“W”键,即执行前进功能(沿着Y正方向平移的功能)。鼠标或键盘的绑定可以被用户修改和设置。
4、当对鼠标键盘执行操作时,场景会记录并实时更新当前的所有矩阵几何节点信息。
5、与此同时,人物角色自带的动画信息可以与矩阵几何节点实时叠加显示,从而产生角色动画的效果。
6、当完成角色操作时,即完成几何节点的坐标信息修改,并未修改人物角色自身的相对坐标信息关系。
从上述技术方案可以看出,本发明在三维动画引擎底层实现人机交互的方法具有下列有益效果:
(1)通过简单的有限状态机管理即可实现场景内角色的人机交互功能,简化了三维引擎设计中人机交互的底层设计难度;
(2)如果需要补充特定角色功能时,可以通过添加有限状态机状态及补充封装功能完成;
(3)通过实时状态机实现拣选和变换,实现了完整的三维动画引擎的人机交互功能,方便了用户操作,节省了费用。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (5)

1.一种在三维动画引擎底层实现人机交互的方法,其特征在于,包括:
使用事件处理对象对拾取、平移、旋转和缩放操作进行了统一封装,分别构成事件响应函数;
基于有限状态机,使用枚举变量定义事件处理对象的对应不同类型操作的工作状态,该工作状态与事件响应函数具有对应关系,所述的工作状态包括:拾取状态、平移状态、旋转状态和缩放状态;
接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数,包括:
当用户触发的拾取指令时,有限状态机跳转至拾取状态,与拾取状态对应的事件响应函数响应用户通过鼠标输入的点击、释放事件对场景中的节点进行拾取,并使用刻线将被拾取到的节点突出出来;
当用户触发的平移指令时,有限状态机跳转至平移状态,与平移状态对应的事件响应函数除了要完成拾取任务外,还要为被拾取到的节点添加平移功能,并在随后的操作中完成对选中三维对象的平移;
当用户触发的旋转指令时,有限状态机跳转至旋转状态,与旋转状态对应的事件响应函数除了要完成拾取任务外,还要为被拾取到的节点添加旋转功能,并在随后的操作中完成对选中三维对象的旋转;或
当用户触发的缩放指令时,有限状态机跳转至缩放状态,与缩放状态对应的事件响应函数除了要完成拾取任务外,还要为被拾取到的节点添加缩放功能,并在随后的操作中完成对选中三维对象的缩放。
2.根据权利要求1所述的在三维动画引擎底层实现人机交互的方法,其特征在于,所述工作状态还包括:空闲状态;
所述接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数的步骤之后还包括:接收用户触发的交互事件结束的指令,有限状态机跳转至空闲状态。
3.根据权利要求1或2所述的在三维动画引擎底层实现人机交互的方法,其特征在于,所述接收用户触发的交互事件,有限状态机跳转至该交互对应的工作状态,并执行对应的事件响应函数的步骤之后还包括:
对三维角色进行动画功能的编辑操作。
4.根据权利要求3所述的在三维动画引擎底层实现人机交互的方法,其特征在于,对于关键路径动画,所述对三维角色进行动画功能的编辑操作的步骤包括:
对于自身附带动作信息的角色节点,在此节点的上层绑定一个几何节点;
通过在时间轴上对几何节点安插多个关键控制点,每个关键控制点包含此时刻被编辑节点的状态信息,包括位置或旋转信息;
各个时间点之间采用均匀差值的方式进行实时计算,以达到连续的效果;
将几何节点附带的关键点信息与角色自带的动作信息进行算法叠加,以再现整个角色动画,实现角色的路径动画效果。
5.根据权利要求4所述的在三维动画引擎底层实现人机交互的方法,其特征在于,对于角色动画,所述对三维角色进行动画功能的编辑操作的步骤包括:
拾取被操控角色节点并为其绑定一个“矩阵变换”的几何节点;
当通过鼠标/键盘外部设备对角色进行操作时,实时修改并记录几何节点的变换矩阵的值;
每一个操作都与下一次动作进行叠加运算,人机交互底层实时记录并保存所有几何节点的坐标值;
协同呈现几何节点与三维对象,以显示角色的动画状态,产生实时动画的目的。
CN201210042044.1A 2012-02-22 2012-02-22 一种在三维动画引擎底层实现人机交互的方法 Active CN102637073B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210042044.1A CN102637073B (zh) 2012-02-22 2012-02-22 一种在三维动画引擎底层实现人机交互的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210042044.1A CN102637073B (zh) 2012-02-22 2012-02-22 一种在三维动画引擎底层实现人机交互的方法

Publications (2)

Publication Number Publication Date
CN102637073A CN102637073A (zh) 2012-08-15
CN102637073B true CN102637073B (zh) 2014-12-24

Family

ID=46621485

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210042044.1A Active CN102637073B (zh) 2012-02-22 2012-02-22 一种在三维动画引擎底层实现人机交互的方法

Country Status (1)

Country Link
CN (1) CN102637073B (zh)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103530898B (zh) * 2013-01-06 2017-04-05 Tcl集团股份有限公司 一种基于3d实时渲染的动画处理方法和系统
CN111009158B (zh) * 2019-12-18 2020-09-15 华中师范大学 一种面向野外实践教学的虚拟学习环境多通道融合展示方法
CN111589143B (zh) * 2020-05-15 2022-07-26 腾讯科技(深圳)有限公司 动画播放方法、装置、设备及存储介质
CN117377518A (zh) * 2022-01-14 2024-01-09 上海莉莉丝科技股份有限公司 用户状态切换方法、系统、设备、介质和计算机程序产品

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6563503B1 (en) * 1999-05-07 2003-05-13 Nintendo Co., Ltd. Object modeling for computer simulation and animation
CN101021953A (zh) * 2007-02-15 2007-08-22 北京航空航天大学 基于高层状态机的三维动画的生成方法
CN101814024A (zh) * 2009-10-23 2010-08-25 深圳创维-Rgb电子有限公司 一种跨平台3d界面设计架构和工具
CN101923462A (zh) * 2009-06-10 2010-12-22 成都如临其境创意科技有限公司 一种基于FlashVR的三维微型场景网络发布引擎

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6563503B1 (en) * 1999-05-07 2003-05-13 Nintendo Co., Ltd. Object modeling for computer simulation and animation
CN101021953A (zh) * 2007-02-15 2007-08-22 北京航空航天大学 基于高层状态机的三维动画的生成方法
CN101923462A (zh) * 2009-06-10 2010-12-22 成都如临其境创意科技有限公司 一种基于FlashVR的三维微型场景网络发布引擎
CN101814024A (zh) * 2009-10-23 2010-08-25 深圳创维-Rgb电子有限公司 一种跨平台3d界面设计架构和工具

Also Published As

Publication number Publication date
CN102637073A (zh) 2012-08-15

Similar Documents

Publication Publication Date Title
US6262734B1 (en) Graphic data generating apparatus, graphic data generation method, and medium of the same
Osentoski et al. Robots as web services: Reproducible experimentation and application development using rosjs
US6552721B1 (en) Graphic data generating apparatus, graphic data generation method, and medium of the same
CN111475155B (zh) 一种基于图块的用于机器人交互的图形化编程的方法
CN109605366A (zh) 机器人图形化编程交互系统及机器人
US20080013860A1 (en) Creation of three-dimensional user interface
CN102637073B (zh) 一种在三维动画引擎底层实现人机交互的方法
CN111475151A (zh) 一种模块化编程的方法以及相关装置
US6401237B1 (en) Method and apparatus for editing data used in creating a three-dimensional virtual reality environment
CN105955230A (zh) 基于Unity 3D的智能制造车间的实时监控方法
CN111390908B (zh) 一种基于网页的机械臂虚拟拖动方法
CN107875632B (zh) 实现人工智能行为的方法、系统及人工智能行为编辑器
CN102629388B (zh) 机械装备仿真系统生成方法
CN104657149A (zh) 一种存储系统的管理模块的软件框架实现方法
CN108647017A (zh) 一种参数化快速生成三维互动与仿真应用软件的集成平台
CN104881518A (zh) 一种飞行器的三维视景仿真系统
US9761035B1 (en) Dynamic user interfaces
CN109191590A (zh) 一种用于制作虚拟现实应用的处理系统及处理方法
US6281900B1 (en) Information processing apparatus and method, and providing medium
KR20000064772A (ko) 도형 데이터 생성 장치, 도형 데이터 생성 방법 및 그 매체
CN115115814A (zh) 信息处理方法、装置、可读存储介质和电子装置
CN111897530B (zh) 基于ue4平台的ui系统及方法
CN115222904A (zh) 地形处理方法、装置、电子设备和可读存储介质
CN112927361A (zh) 一种面向工业自动化的可编程三维仿真设计系统及方法
CN202771416U (zh) 一种可视化3d编程装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant