控制可移动装置的设备与方法

文档序号:6411126阅读:240来源:国知局
专利名称:控制可移动装置的设备与方法
技术领域
本发明涉及控制模仿生物的可移动装置或其二维模拟的设备,该可移动装置设置有人造肢体、用于接收控制信号的装置及用于生成人造肢体的驱动信号的装置,该设备包括-设置有用户用来输入命令的输入装置的用户界面,-通过第一通信线路连接到用户界面上的中央处理单元,该中央处理单元包括-存储关于该可移动装置的位置的数据的第一存储装置;-从所述第一存储装置中读取数据的读取装置;-从所述读取装置接收所述数据并在所述位置之间计算插入的运动及相应地移动该角色的编辑装置。
这种配置是从欧洲专利申请0,428164中已知的,该申请公开了在显示器上显示诸如人样生物等移动角色的动画产生装置。为了计算所要求的动作,将移动角色分解成诸如手臂、腿等不同部分。在独立的时间标度上分配给这些部分独立的动作。计算出这些独立的动作之后,通过将这些独立的动作加在一个时标上而建立角色的组合动作。这些部分的独立动作是用配置成在从存储器中读出的角色的“基本形状”之间计算插入动作的处理器建立的。“基本形状”定义为基本配置数据,即角色在预定位置上的预定姿势。不存储基本动作轨迹或原子动作。虽然已知的配置能控制动画角色的平滑动作,仍存在着完善受控动作来呈现更象人或动物的动作的需求。
本发明的第一目的为提供用于控制看起来象生物的二维或三维角色的动作、向该角色提供尽可能自然,即象人或动物的动作的设备。
按照本发明的设备构成用于构造能够象人一样动作、说话及表达情绪的象机器人的玩偶的设计的一部分。在本上下文中,“动作”定义为时间上的一连串位置与姿势,“说话”定义为时间上的一连串特定声音而“情绪”则定义为表达动作与声音的方式。在能够象人一样动作、说话与表达情绪的玩偶的情况中,动作、说话与情绪必须是同步的。本发明涉及使玩偶能够部分地作为指定的情绪与/或指定的话语的函数而象人一样动作的设备与方法。
因此,本发明的另一目的为提供能使装置响应来自瞬时环境的信号而移动的动作编辑器/合成器单元。这一目的所需的控制信息必须能在高层上指定。用户必须能将与所要求的情绪关联的所要求的动作馈入动作编辑器/合成器单元中,后者将用户提供的说明翻译成用于该装置的控制信号。传输给所述装置的控制信号得出自然的(人的)动作。
又一目的为用户必须能够将诸如愤怒或疲劳等传统语义中的情绪馈入动作编辑器/合成器单元,此后后者便能将所述情绪包含进玩偶的最终动作中而无须完全新的动作说明。
又一目的为必须有可能快速地对动作说明作出任何纠正。
因此,本发明提供如上定义的设备,其特征在于,--所述第一存储装置存储有关装置的预定原子动作的原子动作数据,--所述编辑器装置配置成计算亚原子动作并将它们插入邻接的原子动作之间,要插入前面的原子动作与后面的原子动作之间的任何亚原子动作计算成,使它在开始部分上与所述前面的原子动作而在结束部分上与所述后面的原子动作重合,从而前面的原子动作、亚原子动作及后面的原子动作的组合动作是平滑而稳定的。
利用这一配置,读取的原子动作之间所需的亚原子动作的计算不仅基于特定原子动作的结束点及后面的原子动作的起始点并且还基于所提到的第一动作接近其结束点的进程及后面的原子动作超过其起始点的进程。换言之,所述的编辑器计算延伸超过特定原子动作的结束点及超过下一原子动作的起始点的附加动作路径,使得所述路径能作为一种“粘接剂”插入两个原子动作之间。原子动作可用数据服从诸如人或动物等实际生物导出,从而改进该装置的组合动作的自然外观,因为可使原子动作尽可能地象人或象动物。
有利地,本设备还设置有第二存储装置,其中提供有与装置的预先指定的动作有关的情绪动作数据,这些动作与设备模仿的人物的情绪相连接,其中的读取装置也装备成从第二存储装置中读取,及其中的编辑器也装备成按照用户输入的情绪计算亚原子动作。情绪可以诸如反映在特定的面部表情上,这便是嘴与眼睑的特定位置,这需要诸如玩偶的脸部的特定动作。
再者,设备上可设置有第三存储装置,提供有声音数据,其中还将读取装置装备成读取声音数据,及其中还将编辑器装备成按照用户输入的声音计算亚原子动作及提供包含声音数据的控制信号。通过加上这一第三存储装置,便有可能使该装置不仅象生物(例如人)那样动作也能发出与该生物相关的声音(例如说话)。利用这一配置,可以保证使该装置的嘴作出与发出的声音对应的动作。
编辑器最好是基于模糊逻辑的以便用户能以日常语言输入命令。目前模糊逻辑是广泛应用于编程的一种技术。这种逻辑能用于不存在精确解或精确求解起来太复杂的问题。因此,模糊逻辑是用于将用户用日常语言规定的命令(例如命令“快走”)翻译成装置的动作的流畅模式的有力的、适用的工具。
为了建立用户借助模拟手段能用来检验所期望的装置的动作的一种电子观察器,中央处理单元可装设有第四存储装置,该装置装有用于在编辑器所计算的控制信号的基础上在监视器上模拟期望装置要作出的动作的软件。
第一、第二与第三存储器能存储关于已用传感器,例如在活的测试人身上的数据服获得的动作的数据。
本发明还涉及用于控制模仿生物的可移动装置或其二维模拟的方法,该可移动装置设置有人造肢体、用于接收控制信号的装置及生成人造肢体的驱动信号的装置,该方法按照下述步骤执行
-通过设有输入装置的用户界面输入命令,-按照用户输入的命令从第一存储装置中读取关于装置的位置的数据,-计算所述位置之间的插入动作并相应地移动该角色,其特征在于,-从所述第一存储装置中读取原子动作,-计算亚原子动作并将它们插入邻接的原子动作之间,要插入前面的原子动作与后面的动作之间的任何亚原子动作是这样计算的,使它在开始部分上与所述前面的原子动作并在结束部分上与后面的原子动作重合,从而前面的原子动作、亚原子动作与后面的原子动作的组合动作是平滑的及稳定的。
按照本发明的进一步有利的方法在其它从属权利要求中指出。
下面参照附图更详细地说明本发明,这些图用图形展示本发明的基本原理,而并不限制保护范围。


图1为象机器人的玩偶的图形表示;图2至4为展示本发明的工作的方框图;图5为动作编辑器/合成器单元的结构的图形表示;图6a为用于中央处理单元的存储器配置的图形表示;图6b为在一段时间上伴随有特定的情绪与特定的话语的玩偶动作的图形表示;图7示出用于输入变量“速度”与“距离”及用于输出变量“行动”的成员函数;图8示出极性图;图9示出不同运动群之间的关系;图10示出用在本发明中的库的可能配置。
图1高度示意性地示出用不同肢体构成的玩偶1其中一些肢体能相对于邻接的肢体在三个独立方向上互相移动,例如前臂相对于上臂,而其它肢体则只能相对于相邻的肢体在一个方向上转动,例如下腿相对于上腿。保存有玩偶1的先前指定指令的记录器示意性地用参照数字2指示。实践中,将记录器2提供在玩偶1的身体中或身体上。记录器2上设置有与用户通信的天线3。
图2示意性地示出,特定的动作可定义为从特定的位置x过渡到特定的要求位置y。在这一上下文中,还在图2的上一半中示出能在位置x与位置y之间定义位置z,从位置x到位置y的过渡必须通过位置z进行。动作的持续时间部分地取决于位置x与要求的位置y之间的过渡的数目。然而,由于从位置x到位置y的过渡必须尽可能地象自然过渡(这就是说象人的过渡),在图2的上半部分中的各种过渡上施加了限制并且动作的持续时间主要由各种位置之间的过渡的持续时间所决定。
图2的下半部分示出说话可定义为一连串不同声音。在说话的情况中,持续时间主要由各种接连的声音的持续时间决定。
图3示意性地示出可将玩偶1的特定行为分解成各种各样的子行为。例如这里称作序列的“问候”行为可分解成头的三个接连的位置(位置x、y与z)及两个接连的声音(声音1与2)。在本例中,位置x定义为玩偶的头是直立的位置,位置y是头弯下的位置而位置z则是头又直立的位置。在声音1上玩偶说出词“Hello”,而声音2对应于词“I’m Dutchy”。图3还示意性地示出声音1必须在从位置x到位置y的过渡中产生,而声音2则必须在从位置y过渡到位置z时产生。这是因为作为时间的函数的这一模式向玩偶赋予人的仪容。
图4示出可以链接各种序列(行为)。图4还示出各肢体可作为时间的函数并行移动。序列x表示问候行为,如图3中示意性地示出的。问候行为后面有序列y,在其中玩偶伸出手来。序列y后面又依次有序列z,在其中玩偶说再见。序列y与z与序列x一样各包括预定义的位置。可将玩偶编程为一面向前走(序列q)一面问候(序列x)并伸出手来(序列y)。类似地,在伸出手(序列y)并说再见(序列z)之后可将玩偶编程为往回走(序列r)。序列q与r同样各包含各种预编程的位置。正如序列x、y与z一样。
图4还示出可为各序列x、y与z编程各种情绪(情绪a、b与c)。例如可将问候编程为快乐方式(情绪a),而伸出手来可以有礼貌地进行(情绪b)而说再见则是衷心的(情绪c)。
玩偶1最好通过经由天线3的无线通信接收其输入数据。输入数据最好包括相对于玩偶1的特定起始位置的玩偶的邻接肢体之间的所有关节的角差,结合声音,使玩偶能说话。各关节的角差包含预保存的数据与/或瞬时生成的数据,如下面将说明的。
玩偶1的新动作是由用户3指定的。图5示出动作编辑器/合成器单元的总体结构内的用户4。用户4通过用户界面与中央处理单元6通信,界面包含诸如示意性示出的个人计算机5,该计算机装备有监视器12及键盘13。与中央处理单元6的通信通过双向通信线路11进行。中央处理单元6至少包含编辑器7与读取器8,下说明它们的功能。中央处理单元6还设置有各种存储器用于存储标准动作的动作存储器20、用于存储情绪的情绪存储器21、用于存储与声音相关的数据的声音存储器22以及通用存储器19。当然也能设置存储其它数据的其它存储装置。
动作编辑器/合成器单元的结构还包括用于与操作员通信的维护界面15,操作员希望将新信息加到存储器19至22上。为了这一目的,维护界面15通过双向通信线路16连接在中央处理单元6上。新信息例如与新的动作类型相关,这种动作已在装有传感器的移动测试人的协助下记录下来。这可以在所谓的“数据服”18的协助下实施。这一数据服18包括诸如上百个各种传感器,它们记录测试人员的动作。传感器信号记录预定时间上关于肢体的空间位置的信息。中央处理单元6生成输出信号23,该信号是为了使玩偶1以用户4指定的方式移动而用于玩偶1的控制信号。
模仿人类的动作的软件包的设计与实现一般性地描述如下。能作出的动作的部分包括一群“原子”动作,也就是已由操作员预记录的基本动作,利用它们有可能构成所有可能的动作。
可以在存储器20至22中获得记录的动作。动作的长度可从一帧变化到数千帧。每秒动画包括固定数目的帧。
能够用编辑器7生成新动作。这些新动作是任意数目的“原子”动作的组合。可通过加上作为情绪与/或速度的结果的动作而调整各动作。为了组合原子动作而必须生成的过渡必须得出人类的动作。为了检验这些结果,最好设置一个电子观察器。
可将开发的程序分成两个不同的阶段脱机阶段及联机阶段。在脱机阶段中,为了形成新动作,能够改变、组合、增加动作等等。在联机阶段中,各动作实时发生。在联机阶段中,能用来进行调整的计算时间较少,因此改变的可能性受到限制。为了能实时执行动作,动作是作为相对于时间的接连的位置存储的。
人体的构造是高度复杂的。人的动作模型因此也特别复杂。在使用模型时,它只包括最主要的信息,有可能模仿人体的某些动作。除了其它信息以外,模型必须包含关于肢体的尺度与重量的信息,以及关节的可能角度的上限与下限。
例如,可以利用人体的分段模型,人体在其中用例如23段表示。各段包含一个肢体,它具有特定长度及一个关节,它能相对于邻接的肢体进行特定的转动。
肢体的自由度是由关节在用“偏转”、“俯仰”与“倾斜”指定的三个独立方向上的转动可能性确定的。偏转角为在横向平面中的转动,俯仰角为在赤道平面中的转动而倾斜角则为在正平面中的转动。各方向具有最小与最大偏角。如果在特定方向上没有偏角,最小偏移便等于最大偏角。
动作是通过改变偏转角、俯仰角与/或倾斜角生成的。只要角度在偏角限度内,便生成人体可执行的动作。为了使动作呈现为人的动作,角度必须按照预定的规则改变。这防止产生看起来不象是人的动作。
在生成玩偶1的动作模式时应避免不稳定的动作。不稳定性定义为加速度的改变速度或位置的三次导数。两点之间的最平滑的动作为不稳定性最小的。实际上,最小值永不可能是实际最小值,因为在这一情况中的动作会持续无穷大的时间。实践中,所使用的值为在要求的速度上的可能的最小值。
除了作为要生成的动作的参数的不稳定性之外,重心的位置也是重要的参数。为了防止玩偶1失去平衡,只能将重心设定为来自相对于玩偶1的脚的一组预定义的位置中的一个位置。
人们感受不同时动作也不同换言之他们“有情绪地”动作。愤怒的人的动作与快乐或悲伤的人的动作不同。在情绪的影响下也能产生速度变化。这意味着给定的动作相对于时间呈现的方式能够改变。有时情绪只在动作的速度上具有影响,但有时情绪也影响动作本身。例如由于质量惯性的原因,速度改变也能导致不同的动作。
通常可将一个人的相对长的动作细分成较小的动作。可将相对长的动作看成一系列用过渡连接的较小的动作,如图2、3与4中所示。例如可将一个动作细分为三步,走、坐与吃。还能依次将这些较小的动作本身细分成作为最小的识别动作单元的“原子”动作。例如可将走路看成是一系列步伐。这意味着可将动作细分成带有预定义的起点与终点的“原子”动作。必须用过渡动作将一个动作的终点与后面的动作的起点互相连接,过渡动作必须呈现为人类的动作。必须原封不动地将起点与终点互相“粘接”,这便是编辑器7的任务(图5)。
带有中间过渡的接连的动作一起形成为了完成该动作关节必须经过的路径。通常为了执行某一动作要使用一个以上关节,这意味着标识一个特定动作存在着各种路径。对于这些关节中的每一个,必须将路径翻译成偏转、俯仰与倾斜角。
这里最重要的问题是必须将用户4用正常日常语言指定的动作的描述翻译成玩偶1的动作。该动作可以是已可在存储器20至22中获得的,但并非一定如此。如果不是这样,则必须计算该动作。
换言之,用户4用日常语言思考而计算机要求精确值。这两种方式通常并不互相一致。由于从一个域到另一个域的翻译不是1∶1的关系,翻译中需要一定技巧。“模糊”逻辑的使用是做到这一点的有力工具,因为这种逻辑能用自然概念工作。这种自然概念能与人的情绪相关。“模糊”逻辑的使用将在说明书中稍后说明。
通常将情绪细分成七大组惊奇、渴望、反感、愤怒、欢乐、悲伤及中性。这些情绪及其组合构成一切可能的情绪。其它情绪,即特定情绪的另一种说法,必须用这七种基本情绪表达。当然,每一个人都有自己对情绪的解释,因此必须为新人指定新的情绪,一旦描述了这些新的情绪,便能将它们加到任意动作群上。如果特定的情绪不能得到动作,则编辑器7本身可作出尝试从动作群中检索其它动作并将它们用在所关心的功能上。因此,编辑器7必须具有一定程度的智能以便能执行其任务。编辑器7必须能为指定的动作选择正确的原子动作。当然,迄今为止尚不能保证组合动作将得出正确表现。这是高度依赖于已能在存储器中获得的动作及依赖于编辑器已选择的动作互相匹配的可能性的。
使用自然日常语言作为输入手段是与一种动作能以不同方式表达这一问题关联的。表达“快走”与“跑”表示同一动作,但这些概念之间没有(尚未)连接。然而,这一连接可用“模糊逻辑”建立,结果编辑器将是强有力的设备,因为通过调整例如“速度”,便能无需与用户4的任何交互作用而试验不同的动作群。
图6a示出属于中央处理单元6的存储器的可能配置。各种与人的动作对应的动作路径是存储在动作存储器20中的。例如,存储区20a包含关于“行走”动作的位置数据,而存储区20b则包含关于“坐”的位置数据,存储区20c包含关于“挥手”的位置数据,存储区20d包含关于“说话”的位置数据,存储区20e包含关于“睡觉”的位置数据,而存储区20f包含关于“握手”的位置数据。
如上面指出的,可将各动作路径分解成原子动作。
情绪存储区21a包含例如关于“友好”情绪的位置数据。这些数据能与身体的姿势相关,但特别是与嘴唇及眼睑的位置相关。前面已经在诸如H.Kobajashi等人的“Study on face robot for active human interface”,I.E.E.E.International Workshop on Robot and Human Communication,Science University of Tokyo,1993,中描述过其面部能够用上面定义的七种基本情绪表达各种情绪的方式构成的机器人的头部。
例如,在存储区21b中存储与情绪“惊奇”相关的动作路径,而在区21c中存储与情绪“愤怒”相关的动作路径。当然,情绪存储器中还包括存储其它基本情绪的动作路径的其它存储区。
在通过玩偶1实时播演记录的数据时,必须将三层,即声音(说话)、动作与情绪叠加在一起。各方面更详细地示出在图6b中,其中这三层是用时间上的一实例展示的。例如,玩偶1可能已编程为行走、握手及说话一段预定的时间,在这一期间玩偶1是友好的。所述预定时间段后面可以跟随后续时间段,在其中玩偶1在惊奇的同时说话。现在尽可能地从可获得的标准动作中读出相关动作,然而中间过渡则必须在编辑器7的协助下计算(图5)。
为了充分利用玩偶1,必须事先编程动作。这意味着必须为特定的动作将值分配给各关节的偏转、俯仰与倾斜角。很清楚,对于存在着例如20个以上关节的人形玩偶而言,这是一项非常复杂的或甚至不可能的任务。然而,可以有各种方法使玩偶移动而没有必要编程每一个关节。
第一种方法涉及记录测试人所作的动作。测试人执行玩偶1要作出的动作,测试人穿着如上所述的所谓的数据服18。偏转、俯仰与倾斜角是由数据服确定的。然后将这些关节角加到玩偶1上。这一方法是复杂、昂贵与缓慢的,因为必须事先执行与记录每一种动作。如果只采用这一方法,结果也是不能调整动作,其结果是如果必须作出与已记录的动作有些不同的动作,必须整个记录该新的动作。此外,不能将情绪加到记录的动作上,其结果是必须为各有关的情绪编程与单个概念(诸如“向前行走”)关联的特定动作。
第二种可能的方法与在高层上说明动作相关。这意味着给出动作的完整描述。然后按照数据说明计算动作本身并将其用作用于玩偶1的输入。然后便能执行各指定的动作并适应各情绪及速度。这一方法需要长的计算时间,因为必须为各关节计算值。人的动作的所有特征及人体的力学特征都必须同样考虑进去。这一方法的另一缺点是不可能在高层上指定每一种动作。一些动作无法指定因为它们太复杂。结果不能用这一方法执行这类动作。
第三种方法为前两种方法的组合。在这一第三种方法中,所要求的动作是由穿着数据服18的测试人执行的。记录测试人执行的动作并例如通过维护界面15(图5)将其存储在动作存储器20中。然后便有可能在高层上指定特定的要求动作并利用存储在动作存储器20中的信息。为了建立要求的动作,在编辑器7的协助下将记录的动作互相连接。以这一方法计算的动作可用作对玩偶1的输入。这一方法的优点是没有必要在每一时间点上记录完整的各动作或计算整个动作。这一方法的缺点是实际上动作存储器20提供有原子动作,其结果是必须以使整个动作仍呈现人类的动作的方式计算各种相连接的原子动作之间的过渡。此外,还必须有可能依赖于情绪所确定的限制来调整原子动作。这一第三方法比第一方法更灵活并比第二方法明显地占用较少计算时间。
作为总结,按照上述第三方法,动作编辑器/合成器单元执行下述步骤1.在穿着数据服18的测试人的协助下记录动作;2.将记录的动作整个地或者分解成不同的原子动作存储在动作存储器20中;3.如果要建立新的人类动作,利用来自动作存储器20的动作及原子动作。
新动作是通过在高层上指定要求的动作与要求的情绪设计的。如上所述,指定的动作已经分解成出现在动作存储器20中的原子动作了。读取单元8从动作存储器20中读取这些原子动作,同时考虑到所要求的速度及指定的情绪。指定的情绪可以在指定的动作上加上限制与/或增加其它肢体(例如面部)的动作。有可能指定的动作已记录为带有指定的情绪,从而可以从动作存储器20中读出整个相关的动作。如果不是这样,则必须由动作编辑器/合成器单元本身组合该动作。
读出了动作存储器20中可获得的所有必要动作之后,必须将它们组合,从而产生单一的流畅动作。只有在动作的说明中不存在冲突时这才是可能的。例如,在为同一肢体指定了两个或更多动作时或者在同一时间点上两上不同的肢体必须在同一位置上时便可能存在冲突。这些冲突必须在执行相关动作之前确定。如果没有冲突,便能生成流畅的动作。
为了事先能预测所要求的动作,希望也能访问电子观察器,后者可用来模拟玩偶1的要求动作并能将其显示给用户。这种电子观察器可能已实现在中央处理单元6的存储器19中。然后可将模拟的动作三维地显示在屏幕12上。电子观察器旨在向用户4提供能从各种视角上观察记录的动作及生成的子动作的组合的工具。这在中断现有的动作并使现有的动作部分互相流通时提供帮助。此外,能够实时跟踪建立的动作,这样便使用户有可能根据需要纠正动作。
可以用作电子观察器的各种工具是已知的,例如AVS程序。这是提供非常强有力的观察系统的高度复杂的程序。此外还有称作“JACK”的动画程序,它是为相对于人们必须用来工作的设备的人体工程学要求的目的而研制的。“JACK”程序提供人体的详细三维图象。
当在电子观察器的帮助下显示模拟的动作时,利用了存储在动作存储器20中的动作。动作存储器20以及情绪存储器21能包含用于不同尺寸的各种玩偶的信息。
电子观察器程序能分成两个不同的阶段,即联机阶段与脱机阶段。在联机阶段中,在电子观察器的帮助下实时播放存储的动作。如果愿意,为电子观察器输出的信号也可馈入玩偶1。在这一阶段中与用户4交互作用的可能性受到限制,因为已占用了可获得的计算时间的相当大的部分。
在脱机阶段中,用户具有对所要求的动作的全部控制。在这一阶段中根据需要编辑、存储动作并使之可见等。
为了生成完整的动作,如上所述必须用流畅的过渡将存储在存储器中的动作“粘接”在一起。所述的“粘接”在一起比将来自存储器的原子动作简单地互相连接要复杂得多,因为一个原子动作的终点有可能与下一个原子动作的起点不符合。必须计算不单纯地依靠这两个原子动作的起点与终点的过渡。为了得到流畅的过渡,还必须研究一个原子动作的结束部分及下一原子动作的开始部分。
不能从存储器中读出要计算的过渡。过渡是自动地插入必须互相连接的两个接连的原子动作之间的。过渡需要多长取决于这两个接连的原子动作。因此事先不可能预计过渡将要占用的时间长度。当一个原子动作的终点与后一原子动作的起点之间的距离增加时,便需要更多的时间。此外,过渡还取决于用户指定的表情,因为情绪在要执行的动作上施加限制并且可能需要其它肢体的附加动作,诸如嘴与眼睑的动作。
为了生成流畅的动作,只是计算一个原子动作的终点与后一原子动作的起点之间的流畅过渡是不够的。过渡的开始部分必须精确地遵照第一动作的模式而过渡的结束部分则必须遵照第二原子动作的模式。因此,过渡实际上必须在第一原子动作的终点以前开始并在第二原子后随动作的起点之后结束。如果原子动作之一非常短,计算出的过渡可能完全重叠所述原子动作。这意味着还必须遵照所述短原子动作以前及以后的整个动作的模式。
从而,便有可能通过将短的原子动作互相连接来生成新的动作。为了使装置按照用户输入的命令执行流畅的动作,编辑器7的任务便是在已经从存储器20-22中读出的原子动作之间计算所需的亚原子动作并将这些亚原子动作插入已读出的原子动作之间。
在所有时间,动作存储器20都能被测试人借助数据服18执行的动作补充。数据服18中的传感器所检测到的身体位置或者能通过维护界面15直接提供给中央处理单元6或者能首先保存在诸如软盘等适用于这一目的的数据载体上,然后能被维护界面15读取。以类似的方式,有可能利用作用在测试人面部的传感器采集关于与特定的情绪相关的面部表情的数据。然后可通过维护界面15将所述面部表情加到情绪存储器21中。
同样,可将与发出特定的字的声音相关的下颚与嘴唇的动作在传感器与所保存的相关数据的帮助下与关于声音本身的数据一起通过维护界面15记录在声音存储器22中。
当在同一时间点上要用不同的肢体执行两个或更多动作时,采用了堆积技术来控制这些同时的动作。因为一个移动肢体能影响其它肢体的动作,在其它肢体动作上施加了额外的限制。如果已为特定的肢体指定了特定的动作,为了使为该肢体指定的动作成为可能,其它肢体也许同样必须移动。这被翻译成有关的关节的偏转、俯仰与倾斜角的附加限制。
在生成特定的动作时这不一定是正确的。因此编辑器提供了用于编辑生成的动作的设施。编辑能涉及诸如速度或相关情绪。编辑能脱机或联机进行。在联机编辑的情况中,只可能在运行中的程序上加上少许改变,因为这时能得到的计算时间是较短的。
对于不同的情绪某些动作是不同的。例如,人在快乐与愤怒时走路的姿势不同。因此,存储器中包含与不同情绪相关的不同动作。如果选择了特定的情绪,便从存储器中读出与该情绪相关的动作。在联机阶段中情绪的表达只能在选择的情绪中编辑。例如,如果在“悲伤”情绪中执行动作,在该动作期间这一情绪不能改变成“快乐”。
这一点也适用于在速度的情况中。可能已在存储器20中保存了各种不同速度的要求的动作。在脱机阶段中作出关于速度的假设。在联机阶段中只能在与存储在存储器20中的速度相关的动作的限制内编辑与该特定的选择的速度相关的动作。例如在一个动作中不可能将快走变成慢走。
如果用户4没有指定情绪或速度,则能将编辑器编程为作出关于情绪或速度的正确选择。
已研制出用于通过组合存储在库中的预记录的动作而建立新动作的例程。这一组合应得出“人(或动物)的动作”,这意味着例程生成的动作应很好地接近真人(或动物)的动作。
这些例程并不意味着从零开始生成人(或动物)的动作。这些例程建立的动作象人(或动物)的动作,但并不保证人类以相同方式执这些动作。
组合动作所需的数据是由用户界面提供的。这意味着用户界面将要组合的动作的标识符传递给例程。例程从库中检索数据。例程建立的动作存储在库中,并将对应的标识符返回给用户界面。
情绪与速度是所谓的修饰因子。它们都对动作产生自己的影响。无法描述这种影响,因此只能从带有该情绪与速度的现有动作中推定这种影响(如果完全可能)。
在指定动作时,有可能在库中得不到与这一运动(motion)组合的情绪与速度的特定组合。
对这一情况作出反应的巧妙方法为找出最符合的动作,但现在要考虑到所要求的情绪与速度。不检验运动本身。选择动作的标准取决于所要求的情绪与该动作的情绪的相似性。对于速度也同样适用。因此必须提供用来确定情绪之间的符合性的某些知识。对于不同的运动群(motion group),可能存在用于比较情绪与速度的不同约束。
对后两种方法的扩展包括在作为另一种运动群(用自然语言表示的)的较慢(或较快)版本的运动群之间进行连接。
因为情绪与速度的数目几乎是无穷的,它们只能在用户的帮助下指定。它们只能用自然语言指定,并可通过给出一个或两个字的描述来增加。
鉴于只有七种基本情绪,任何新情绪应相对于各基本情绪给出。用户必须指定新情绪及它们的联系。为了保持在自然语言水平上,将提供关键字的模糊集合来指定这些联系。
最后一种方法可扩展成指定与当前情绪具有天生联系的情绪的联系。这意味着没有必要指定与基本情绪的所有联系,因为大多数与新的情绪没有任何联系。
速度没有这样复杂的联系。新的速度可被赋予线性度量上的值。
库的目标为提供动作、情绪、速度与声音的完整集合。
知道了不可能用带有中性情绪的运动来检索带有任意情绪的运动,便清楚了必须记录带有不同情绪的动作。
对于速度稍为容易一些。速度的小的变化导致动作的小的变化,但当速度增加或减小得越来越多时,动作便变成了新的动作。
尽管如此,还是可以仿效这一知识。记录两个不同的运动以及通过组合这两个记录的运动试验并找出中间运动要容易得多。
既然有了运动群,是否应将群分成只存储一个动作,以及带有多种速度的一种情绪或带有多种情绪的一种速度的较小部分?这一方法的问题在于通常在单个文件中只有非常少的动作,所以从现有的动作组合新的动作需要一张收集现有动作的表。否则程序不知道一种特定运动的哪些动作存在。这一方法的优点是能在线性时间中找到特定的动作。
因此本方法将建立运动群,并将它们存储在不同的文件中。这一文件包含带有任何情绪与任何速度组合的这一特定运动。
声音是是特别的情况。只需记录与存储它们。它们不能象动作那样修改,所以应记录角色必需说的任何事情。
编辑器7为可用自然语言指定动作的工具。动作包含运动、情绪、速度与声音。因此只能对动作进行描述。程序并不使用它们,意味着程序不理解描述。它们只能作为对存储器的帮助给出。它们能用来选择与指定动作等。
总是指定默认的动作。默认的运动是由程序从小的动作中构成的。它们是从带有小的动作的库中随机选择的并在这些动作与要求的动作干扰时能在时间上移位。它可以包含所有种类的不同运动,如呼吸与眨眼等。
编辑器7是最终接纳或拒绝动作的工具。在第一瞬间中它将试图找到指定的动作。当这一点失败时,便利用描述寻找取代要求的组合的情绪与速度的其它组合。然后需要低级层来将这些组合组合成新的动作。并将结果呈交给用户。
为了指定动作,提出了能在其上放置要求的行动的时间线。存在着两种从库中选择动作的供选择的方法。它们可以通过从库中取出带有要求的情绪与速度的运动而精确地指定。但这一动作并不存在时,便不能选择而只能通过指定该运动群来选择。这将采用默认的情绪与速度。
粘贴与堆积是非常不同的操作。粘贴通常在比堆积少的动作上工作。粘贴只要将两个不同的动作粘接在一起。但在特定的时间上指定的所有动作都必须堆积。实际上,低级层并不知道有多少动作必须堆积。
程序包含能展开的一个长的行动。编辑器7可用来组合运动、情绪、速度与声音。能将包含较小的运动的动作分割开,检索这些较小的运动。通过这一方法可利用生成的部分运动来建立新的运动。只要存在组合的动作,便能进行分割。
在一个时间上可能只有一个总体情绪。当两个组合的动作不具有完全相同的情绪时,将由最强的动作(带最高优先级的)提供情绪。但在完成分割时,便恢复原来的情绪。
在某一时间上可存在多种速度。但对于一段只存在一种速度。与情绪一样,最强的动作提供速度。
观察器在建立新的动作的过程中将是有用的工具。它对于分解记录的运动及选择动作的部分是有用的。没有它甚至不可能检验动作指定的结果。
在执行动作时观察器应能穿过一定的路径以便从不同的视点显示图形。这些路径称作轨迹。
应当给予用户指定模型的配置的可能性。用于检索模型的配置的方法为通过使用段模型的性质。这一模型可作为一种树来观察,随机地将基底选择为骨盆。每一段包含一个关节及一根“骨头”。肢体从基底构成树枝。
模型中最小的结构为段。一段为一条肢体与对应的关节的组合。为了建立模型的结构,必须将各段相连接。除了基底段之外,各段具有一个祖先段。祖先段是将当前段连接在模型上的段。各段可具有若干后代。
人所执行的运动可粗略地分成两类循环运动与非循环运动。
因为抽样率是不变的,因此每帧的时间是不变的,不同速度的循环运动也需要不同数目的帧。例如“慢走”的一个循环可能占用60帧,而例如“快走”可能只需要40帧。这意味着在建立新运动时,这一运动的帧时间也必须是不变的。一种建立具有不变的帧时间的运动的技术为定标(scaling)。定标一运动时,在该运动上加上或去掉帧。以两种方式使用定标。第一种方式是当运动是用与软件中所使用的帧时间不同的另一种帧时间记录时。当必须在库中不能得到的速度上建立运动时也使用定标。这一新运动必须从库中可得到的运动中建立。
在用户界面中,设计了记事板。这意味着用户从库中选择运动并将它们放在时间线上。时间线上放置运动的位置设定该运动的起始时间与结束时间。在设计程序时,由用户界面生成一张事件表。然后将这一事件表送至运动例程。
在这些例程中,分析该事件表来确定应在何处进行堆积与粘贴。在确定了这一点时,便进行堆积与粘贴。堆积与粘贴得出一组库运动。利用这些库运动来建立记录板上指定的运动。
因为运动应当开始的点或运动应当结束的点永远是不同的,运动的开始与结束不能加到库中。在循环运动开始时,身体通常不在开始动作所要求的状态中。
存在着两种方法来开始循环动作。最简单的方法是从当前的姿势移动到动作的第一帧的姿势只需要计算从当前的姿势到开始姿势的过渡。另一种方法是建立从当前状态到最佳匹配状态的过渡。用这一方法建立的过渡比用第一种方法计算的过渡短。最佳匹配是通过计算当前姿势与循环运动中每一帧的姿势之间的距离找出的。距离是通过将两种姿势中对应关节的值相减而计算出的。将差的绝对值相加。所有的差的相加结果给出两种姿势之间的距离。
当同时指定了若干运动时,运动的堆积意味着对肢体的控制。为了正确地处理这些并发的运动,赋予运动优先级。
当同时执行两个或更多运动时,关节的角值可被一个以上运动所改变。因为在一个时刻关节的角值只能有一个值,必须为关节的值作出选择。同时进行的运动越多,堆积越困难。
某些库运动包含关于对运动本身不必要的肢体的信息。例如在库运动“行走”中,主肢体为行走必需的肢体。手臂的运动不是行走所必需的。但大多数人在行走时移动他们的手臂。因此将手臂运动加到库中作为默认运动。这些默认运动具有低优先级,这意味着它们可被任何指定运动改变。
在同一时刻上可为某一肢体指定若干运动。因为在一个时间上只能作出一个运动,需要选择一个运动。只有当弄清楚哪一个运动是正确的时才能做到这一点。为了能作出正确的选择,赋予各运动一个优先级。
存在着若干种运动。‘休止’是在没有指定其它运动时作出的动作。休止是由软件自动选择的。这一动作可被任何指定运动取代。因此休止动作具有非常低的优先级。所谓的默认运动被赋予较高的优先级,因为它取代休止动作。另一类运动便是由另一条肢体的运动引发的肢体运动。赋予这一运动比默认运动高的优先级,因为移动另一条肢体时必须作出此运动。将最高优先级赋予直接指定的运动。
运动的定标意味着在运动上增加帧或从运动上去掉帧。进行定标来改变帧时间或改变运动中的帧数。
在通过组合两个存在的运动来建立一个不存在的运动时也需要进行定标。只有在两个运动具有相同的帧数时才能组合它们。因此在将两个动作组合之前必须将它们定标到新运动的帧数上。
定标能通过求帧的平均值完成。当必须增加帧时,新帧是通过复制原来的帧或组合帧建立的。在求平均值时用一个因子来指定各原始帧的权重。各帧采用多少取决于原始帧的开始与结束时间及新帧的开始与结束时间。这些开始与结束时间不一定是绝对时间。时间也可以是老帧与新帧之间的比。在必须去掉帧时,也将帧组合来建立新的帧。
智能是必须对动作进行定义的方式的一部分。其意图是采用自然语言可简化用户界面的使用。程序需要一定形式的智能来知道例如‘快与笨拙地走’意味着什么。在这一语句中可以识别出三个部分‘走’、‘快’与‘笨拙’。‘走’表示记录的运动的描述对于这一点不需要智能。另一方面‘快’为速度,中性运动的修饰词。对于任何记录的运动这种速度应表示为(几乎)相同的速度。对于情绪‘笨拙’也一样对于任何运动,‘笨拙’应差不多表示相同的情绪。如果记录每一种运动,这将没有什么意义然而这不是真正的意图。如果记录了足够的运动并将它们存储在库中,将必须从存在的运动中建立新的运动。为了使程序知道某一运动看起来怎样,必须知道指定的情绪和速度与其它情绪和速度的联系。只有这样,才能从存在的动作建立新的动作。
在讨论将自然语言连接到界面上的方法之前,我们将对模糊逻辑作一介绍。
假想你在路上的一辆车中。你必须调整你对周围的车流的行为并与前面的车辆保持一定距离。因此你在做其它事情的同时观察车子的速度及与下一辆车之间的距离。在这一信息的帮助下,你应用刹车、加速器等。实际上,你接收两种输入,速度与距离,并从中推导出输出,即行动。该推导过程被模拟,但在此之前,必须定义一些变量。
为了简化这一例子,将不同的变量分成几个部分。将速度分成慢、中等与快。将它们称作成员。
各成员是定义在其变量的一定间隔上的成员函数(membershipfunction)。“慢”从大约10mph开始一直继续到35mph,等等。在其曲线到达顶部(15-30mph)的情况下“慢”是真正的慢。25到35mph的间隔是一定程度的慢与一定程度的中等速度。25mph为慢的成分多及稍有中等速度。30mph为慢与中等速度各半,而35mph是稍慢及中等速度成分较多。对于距离与行动,类似的推理也成立。这意味着在一定的间隔中可以有一个以上的成员是有效的。这为从一个成员到另一个成员提供平滑的过渡。可将成员函数描绘成任何类型的图从钟形图到三角形以及它们之间的任何形状。图7中说明这一点,其中示出两个输入变量(速度与距离)及输出变量(行动)的成员函数。
行动分成能执行的不同行动。下面是属于这些变量的规则库的一部分。速度与距离称作前件,行动称作结果。在这一实例中,各变量在每一条规则中至多使用一次。
-如果速度为慢且距离为长则行动为加速-如果速度为慢且距离为短则行动为刹车-如果速度为中等且距离为中等则行动为稳定-如果速度为快且距离为长则行动为加速
-如果速度为快且距离为中等则行动为稳定-如果速度为快且距离为短则行动为气袋推导过程是通过估计规则库模拟的。规则库中的每一条规则覆盖不同组合的总区域的一小部分。如果规则库是严格定义的,则整个区域将被覆盖。
对于速度与距离的任何两个值(在值域内的),这些变量的不同成员具有一定程度的成员资格度,从0(无)到1(完全)。一个特定的输出成员的成员资格度越高,它在最终结果上的影响越大。在各规则中,将这些值填入,得出该规则的输出成员的成员资格度。这实际上是该规则的真实性程度。累计一个输出成员的不同成员资格度,然后应用去模糊性方法(defuzzification method)产生最终结果。下表示出输入组合的一个实例。速度与距离两者都不是精确定义的速度有些慢与有些中等;距离有些中等与有些长。这意味着若干规则可能有些活跃,导致一个以上的有效输出成员。在这一实例中将前件的最小值用作输出成员的值。加速与稳定各为0.4真实,导致在加速与稳定之间某处的值。
慢0.6长0.4加速0.4慢0.6短0.0刹车0.0中等 0.4中等 0.6稳定0.4 行动快0.0长0.4加速0.0 1.0m/S2快0.0中等 0.6稳定0.0快0.0短0.0气袋0.0速度=28及距离=60的实例得出行动=1.0。
得出输出成员的成员资格度有许多方法,也有许多方法来取得输出的最终值。前者可利用前件的最小或最大成员资格度得出;后者可取加权平均值产生。
成员数目越多结果越精确,但另一方面不同规则的数目变得非常大。所以必须找出黄金中位数。
下面说明模糊逻辑的使用。
所采用的模型包含七种基本情绪。和色彩相似,任何可能的情绪都应使用基本情绪检索。因此必须完成某些情绪的构成。
与所有基本情绪的联系在所有情况中,一种新的情绪必须与至少两种基本情绪有关,以便填充基本情绪之间的空间。实际上图8的极性图给出一个实例,但它只对相邻的两种基本情绪有用。两种不相邻的情绪之间的联系将导致另一种情绪,它与其间存在联系的情绪不同。放置情绪的次序决定能够作出哪些其它表情。当然,这是一种非常不愉快的特征。如果用户指定了中性与不喜欢之间的联系,意想不到的事情发生了情绪惊奇意想不到地成为联系的一部分。
为了克服这一问题,不能再让放置情绪的次序再起任何作用。这些方法的基本问题是希望立刻监视这些联系的用户。如果存在着不超过三个演员便能实现这一点,因为处理n个变量导致n维的图形。在我们的模型中,我们必须处理至少七种不同情绪(演员),这意味着必须消除视觉联系。必须单独地为各基本情绪指定新情绪与基本情绪之间的联系。这一联系表示新情绪与基本情绪之间的符合程度。它并不给出新情绪的速度信息。利用前面的方法,这是包含在情绪的说明中的。
与所有情绪的联系与同一种基本情绪的联系的扩展一样,这只表示说明的明确表达。能够更详细地给出的不是速度而是符合性。但因为过了一段时间之后你简单地用完了情绪,它们将被增加为带有某种速度的情绪而不是作为完全新的情绪。尽管如此,这似乎是一种有意义的扩展,因为能够连接新建立的情绪来建立新情绪,而无须返回到基本情绪。并且最接近的情绪之间的联系清楚得多。有鉴于这些方面,我们选择这一方法。
必须指定新情绪与现有情绪之间的联系。它描绘出将一种情绪分割成其大小表示新情绪与其它情绪之间的符合程度的部分。实际上,所有其它情绪能用大小为0的饼片表示。
分割不必要用精确值指定,因为它是完全主观的某些百分比的差别并不引入注意。因此图中省去伴随的百分比。这意味着必须采用值的“邻域”。模糊逻辑便在这里进入视线。对于用户,使用自然语言是最容易的。模糊逻辑的最主要优点在于它实现这一特征。
分类器的描述将落入值的范围中。这能用成员函数做到。各变量得到其本身的表示该变量的有效范围的成员函数。总的范围是由成员函数集构成的。
用户不能作出成员函数,因为他必须具有模糊逻辑知识,这是与每一个人都能使用该程序这一事实对立的。用户可指定不同的分类器,而程序将加上对应的成员函数。每当存在分类器时,便能用它来指定新情绪与其它情绪之间的联系。
如果能作出不同基本情绪之间的联系,则将丢失情绪的瓦椤方型分级。这种联系只表示符合程度。情绪的分级实际上是运动的速度。因此这意味着没有封装速度它必须在外部给予。速度提供用来执行运动的快慢。不同速度之间的联系比不同情绪之间的联系简单。与分类器一样,不能以精确值给出值,因为这没有意义。使用在其上给出所有不同速度的一根柱。新的速度可通过将其放在柱上来指定。通过放在柱上将确定其值。
属于速度的另一点如下如果与两个不同的运动群一起使用,一个副词能具有一种以上含义。例如,‘快走’与‘快说’是都能加上快的两种运动,但它具有非常不同的意义。然而,两者多多少少具有相同的值,因此这可能不成问题。
利用运动群有一个优点每当对于库中的特定运动不存在情绪与速度的组合时,程序能搜索最象所要求的组合的组合。某一组合可能替代另一组合这一事将提高适用性并减少生成节目的时间。
自然语言的奇妙而强有力的特征为紧密相关的运动的平滑过渡,‘响亮地说话’与‘轻声地呼唤’几乎是同一行为,带有相同的面部表情与相同的叫喊,但‘呼唤’与‘喊叫’则肯定是不同的行为。这便是伴随的修饰词自然地将这些行为带到一起。这意味着只通过修改修饰词便能使一种特定的运动处于不同的状态中。通过增加一个副词,一个运动能加入其本身的运动群以外的不同运动群。
两个相邻的行为的区域有可能部分地相交。图9示出说话、呼唤与喊叫的例子。深灰色区域为不同运动群的相交部分。如果在说话上加上响亮,运动将变强并移位到深灰色区中。
将这些联系筑入动作编辑器7中将得出非常强有力的工具。通过将情绪或速度加在例如呼唤上,不仅将检验呼唤,还要检验说话或喊叫,这取决于伴随的表情或速度。
上面描绘的方案能容易地转换成模糊逻辑的术语。事实上,由于自然语言而的确存在模糊逻辑,假定自然术语并不表示一个精确的值。
用户将建立其运动群,其中排除了成员函数的标准分割。程序能向用户提供用户能从中选择一种的不同联系与/或成员函数的范围。或者,以比较先进但掌握起来比较复杂的方式提供一组模糊术语,它们说出关于成员函数的重叠部分的某些方面。它们的范围能从狭窄到广大的。用户能利用这些术语来指定成员函数。而程序则必须从这一信息中收集联系的正确种类。
在搜索一个动作时,将返回符合得最好的动作。如果找到精确的符合,则只返回这一个。但如果不能得到该动作,我们能决定只返回最好的一个。如果情绪(例如)不是刚好正确的那一种,有可能检索带有所要求的情绪的另一方面的情绪的动作(当然在可获得时)。然后可将这两个运动互相组合,得出比任何单独的单个动作更接近要求的情绪。
无论如何,我们认为这一‘方法’是值研究的。事实上,由于有七种基本情绪,我们正在处理七维矢量空间。并且必须找出带有并不一定存在的第一情绪的动作的对等物。这一方法能利用速度工作。
前面部分中所描述的对象之间的模糊联系起到目标的作用。如果用户在编辑器7中指定动作,很可能库中没有带有所要求的情绪与速度的运动。情绪与速度的模糊说明负责在这一特定的运动群中找到与最接近的速度组合的最接近的情绪。而运动群之间的模糊联系将尽一切力量来返回一个可接受的动作。这些基于模糊的论点的组合将产生实际上可能的最佳结果。
模型的结构可分割成一级与二级结构。一级结构设定从中能识别诸如腿、臂与背等图的形状的结构。二级结构包含能够不改变模型的结构而省略的段,例如手指。因为一次结构设定模型的形状,这一结构是最重要的。
在模型能使用之前,应当初始化。模型的初始化意味着建立模型中所有的段,将这些段连接在它们的祖先上,及设定关节角的值。可将初始化分成两部分。第一部分为建立段并将段连接在其祖先上。第二部分为设定初始值。
利用配置文件来初始化模型。第一配置文件包含用于建立段及将它们连接到它们的祖先上的数据。第二配置文件包含用于初始化段中的角的数据。一段的各角具有最小与最大值及偏置量。
必须抽样动作。这意味着必须将人物的连续动作分解成离散的状态。各状态指定人物在时间t+Δt上的姿势,其中Δt为抽样时间。各姿势存储在帧中。帧的结构建立如下关节的状态是用与段的标识符组合的三个值(偏转、俯仰及倾斜)指定的。可将帧组合到帧缓冲器中,它指定人物在时间上的姿势,得到一动作。
设定模型的状态的角可作为相对的或绝对的角给出。
绝对角的问题是不存在两个相继的段之间的联系。不知道一段是如何相对于前一段定位的。不可能检验是否破坏了最小或最大界限。
相对角是相对于前一段测定的,这表示模型的原点是模型本身的一部分。如果采用相对角,则不将模型连接在环境上。这也表示不清楚运动如何影响模型在环境中的位置。这一问题可通过在环境中选择一个固定点并测定基底段相对于这一固定点的位置来解决。在这一情况中只有基底点与环境有联系。
人类永远是以某种方式与环境连接的。
如果将基底段连接在现实的世界上,必须选择一个固定点以将定向段连接在其上。这一段负责模型在环境中的定向。存在着许多能起固定点作用的候选点。
定向段为带有可变长度与可变固定点的段。可变长度是必要的,因为定向段同时表示人物的高度。固定点是可变的,因为在行走时左与右脚交换地确定人物连接在环境上的位置。当左脚接触地面时,左脚确定固定点。当右脚接触地面时,右脚确定固定点。在行走期间,当一只脚放在地上而另一只脚尚未抬起时,两只脚都接触地面。在这一时刻必须改变固定点。似乎人物的重心确定固定点的位置。换言之,固定点为重心在地面上的投影。
可将存储在库中的运动分割成两部分。第一部分是关于运动的统计数据。第二部分是运动本身的数据。这两部分存储在同一运动文件中。运动被打开或关闭从而由低级例程进行读或写。
事件是必须在一定时间段上执行的行为。因此运动的执行可看作事件。如果要执行一个以上运动,便生成事件表。在这一事件表中运动是按照它们的开始时间排序的。用户界面用事件表与低级例程通信。在设计记事板时,便从记录板建立事件表。然后将这一记事板送至运动例程。
如果关节的状态要从某一关节的给定位置计算,则必须利用逆向运动学。逆向运动学是非常困难的问题,因为存在许多解。通常逆向运动学是通过倒置Jacobian矩阵进行的。因为这是非常困难的,逆向运动学问题是用模糊逻辑解决的。对于熟悉本技术的人员,使用模糊逻辑解逆向运动学问题的方法是已知的。必须使该方法适应于在所实现的模型中工作。
数据通常不以MEd Com中所使用的格式记录。因此必须转换预记录的运动并将其存储在MEd Com库中。如果角度是径向及相对于前一段给出的,它们便采取Med Com格式。
如果要改变运动的帧时间,如果从两个存在的运动建立新的运动,或如果要改变运动的速度,则必须定标运动。定标因子指定要定标运动的方式。
定标因子是永远大于零的一个值。如果定标因子等于1,便不执行定标。如果0<定标因子<1,便去掉帧,如果1<定标因子,便增加帧。定标因子的最佳值为1/3≤定标因子≤3,因为如果定标因子更小或更大,则必须增加或去掉太多的帧。这对定标后的运动的推移影响太大。
当增加帧时,最多将运动的两帧组合以得出一个新帧。我们通过取两帧的加权平均值建立新帧。
可以给出建立新帧的通用公式。因此必须区分两种不同情况。新帧是用下述方法增加的复制原始段的内容。当新帧的开始时间晚于原始帧的开始时间,且新帧的结束时间早于原始帧的结束时间时出现这种情况。在这一情况中新帧=原始帧。
取原始帧的一部分及下一原始帧的一部分。当新帧的开始时间早于原始帧的结束时间,及新帧的结束时间晚于原始帧的结束时间时出现这一情况。
通过将多个老帧组合到一个新帧而去掉帧看起来象建立新帧。在去掉帧时,组合原始帧来建立一个新帧。
在定标例程中去掉帧的通用公式是难以给出的,因为至少必须区分五种不同情况。新帧可使用下述部分生成·一个或多个完整的帧。如果新帧是从一个老帧生成的,则不进行定标。
·一个或多个完整的帧及下一帧的一部分。
·一帧的一部分及一个或多个完整的帧。
·一帧的一部分及下一帧的一部分。
·一帧的一部分,一个或多个完整的帧及下一帧的一部分。
库是完全模块化建成的。这具有非常灵活的优点。
各库文件包含其自己的二叉树。这意味着能够很快地找到一项。当然哪些信息能很快找到取决于搜索标准。其它信息如果存在的话只能通过线性搜索查找,这表示必须检验库文件中每一个元素直到找到正确的元素为止。
几乎每一个库文件中都包含某种串,象动作与情绪的描述。串处理起来比较麻烦,因为它们具有不确定的长度。这导致从库文件中排除字符串。
明显地,删除元素的后果是大的。有鉴于此,我们已决定忘记关于元素的消除。通常这将不成问题,因为与将要增加的元素的数目相比,将被删除的元素的数目是无足轻重的。当然,永远可以实现删除。现在,新元素是加在文件的尾部的,而忽略文件内部的任何空闲空间。
存储数据的一种方法是用散列技术。使用散列具有太多的缺点。
由于库是复杂的,它需要一些说明。下面在图10的帮助下说明库的一些细节。
在库树的基底上,便是“虚拟对象”类。这一类纯粹是一个抽象类。库中各元素直接或间接地继承虚拟对象。
文件系统数据(File System Data)包含管理文件所需要的信息。一种重要的数据便是一个特定文件的用户数。
二叉库(Bin Base)实现盘上的二叉树的处理。因此,它存储其左与右子女的标识符。
串(String)处理用户生成的诸如组名、标签与描述等每一个串。将各串写在同一个文件上(并且文件仍由文件系统处理)。
串库(String Base)实现串数据库串之间的连接,供在子类及运动数据中使用。通过串库它继承二叉树结构。
实际数据分类为情绪库(Emotion Base)、群库(Group Base)与速度库(Velocity Base)。除了树信息,这些类提供它们自己的信息。
*对于情绪库,当前存储与七种基本情绪的联系。
*对于群库,存储与较慢版本与较快版本(它们都是群)的连接。
*对于速度库,只存储强度。
人物将上述三类结合到一起。每一个人物只保存一个情绪库、群库及速度库。
统计数据(Statistics Data)只用来将信息从修饰词库(Modifier Base)穿过到文件系统。
修饰词库存储带有一种情绪与一种速度的一个记录或生成的运动。修饰词库文件只包含来自同一运动群的运动。
已经实现了一种压缩只存储带有改变角度的段。我们已实现的另一种压缩为Lemple-Ziv Welch编码。这是一种自适应方法。
段必须如上所述互相连接,因此为了在模型上加上一段,必须给出该段的祖先。因为祖先必须存在,第一段的祖先为基底,它是由程序提供的。现在还不清楚应如何指定象脊柱这样的柔性段。当前的选择为将段分成若干更小的子段。对于所选择的各角,指定最小与最大的偏移(倾斜、俯仰与偏转)。
在次序区中可指定不同的角的计算次序。默认值复位当前段的调整,但并不立即影响模型。“作用”将当前段的调整插入实际模型中,从而改变模型。“删除”从模型中去掉当前段。子女段将接受被去掉的段的祖先段作为其祖先,而祖先则接受被去掉的段的子女。“重新加载”加载某一人物的最后配置,而“保存”则保存所作出的每一种调整。下一次加载模型时,将使用这一新配置。
利用配置窗弹出观察窗口,其中用棒状图示出当前调整。能加亮当前段以控制对这一特定段作出的调整。
为了显示模型,将起始段作为基底,它出现在每一个人物中。从这一点起,必须穿过其所有子女、及它们的子女的子女等。在节4.4中,我们将讨论关于在其环境中画出人物的其它一些方面。
观察器包含下述部分带有下述按钮的控制板1、(暂停)在激活时停止动作,而在去激活(deactivated)时恢复。
2、(回绕)快速回绕动作,或在播放按钮有效时,快速向后播放动作。
3、(播放)利用播放按钮可看见任何动作或节目。再一次按下或使用停止按钮可以去激活。
4、(卷绕)快速卷绕动作,或在播放按钮有效时,快速向前播放动作。
5、(记录)可利用这一按钮来选择动作的部分或记录观察器的轨迹。
6、(停止)可以为若干原因使用停止按钮。它将去掉任何有效的按钮的激活。
7、(前面)观察器将搜索前一动作,而在播放按钮有效时恢复播放。
8、(慢)按下这一按钮时减少每秒的帧数。将动作播放得较慢。
9、(快)按下这一按钮时增加每秒的帧数。将动作播放得较快。
10、(下一个)观察器将搜索下一动作,并在播放按钮有效时恢复播放。
一个画图区。在该区中显示人物。
一个信息区。在该区中显示当前帧号、当前播放时间及当前每秒的帧数。
一个按钮区“复位”将人物复位到其原始位置上。“关闭”将关掉观察器。
为了能从任何一面观察人物,鼠标按钮是起作用的。如果在画图区内按下鼠标按钮,在一定方向上拖曳鼠标可得到任何视图。实现在观察器中的变化有旋转、平移及推拉镜头。在将人物连接到‘现实’世界上时,必须使其可见从而观察效果。因此观察器中必须包含三维效果,诸如地平线及行走平台。因此我们需要对世界的永久性连接。
对这一问题的可能解决方法是冻结模型的当前状态,并确定选择的段的精确位置。在下几帧上该段将留在这一位置上直到改变了固定段为止。关注点是带有与基底段不同的固定段的模型状态的计算。基底段是其它所有段的祖先,因此知道了这一段的位置跟着便知道其它所有位置。但当基底段不是固定点时,基底段(以及中间的段)的位置必须从固定段的位置中计算出。永远必须首先计算固定段的位置。当到达了固定段时,必须找出回到基底的路线。计算不同角度的次序必须颠倒,因为现在祖先在其子女后面通过。当到达了基底时,便象前面所进行的一样执行了所有的计算。
当然,这一方法也有问题。例如,当在行走时交替地冻结一只脚时,该人物将走出画图区。这只能通过使观察器同时执行跟踪来防止。然而,这一方法已作出相当的差别。
主区域用来指定动作。这里可以放置所需要的数量的时间线。用矩形表示的行为位于这些时间线上。第一条线显示以秒表示的时间。选择行为的理由是去掉它们或将行为展开成基础行为。在选择行为时,还加亮时间线的伴随的描述。这能用来去掉时间线。
当前只能用滚动按钮来进行滚动,但在将来,应给出所要求的帧号。在水平滚动区中,在按钮旁边,还有一条显示在其中指定了行为的整个时间间隔的线。利用这一滚动条,能非常快地找到一个特定点。
在组合动作或节目的不同阶段上,必须显示时间线的不同部分。这不仅意味着必须显示其他行为,也显示更多或更少行为。因此有必要能改变描绘的帧的数目。这能通过推或拉镜头来安排。必要时,能一次显示一帧到数千帧。当前这只能通过使用推拉镜头按钮来完成,但应当也有可能实际上使用户指定要显示的帧数或时间间隔。
通过利用时间线可选择行为并将它们放在时间线中。时间线为半无限长的线,它从0开始在正方向上永远进行下去。
编辑器7的时间线是用双链接表的一张双链接表表示的。时间线的数目将不象采用双链接表时所需要的那样多,但采用这种表的原因是垂直滚动比较容易。第一表连接时间线,而各时间线包含行为的表。
能展开行为来揭示其内部。只要存在对一部分动作的描述便能做到这一点。当完全将动作变换成精确的角值时,便不能再进行展开。
对于时间线只实现两种行为增加与删除。
在时间线上增加行为非常简单。只要将鼠标点在正确的时间线上。在这一等时线上搜索正确的开始时间,并按下左鼠标按钮。拖曳鼠标到正确的结束时间并释放按钮。行为可能不具有正确的长度,意味着进行动作的时间间隔是不正确的。通过拖曳鼠标重新将行为的长短确定在正确的时间上便能解决这一问题。行为只能通过按下删除行动按钮来删除。
每当建立一个节目时,对这一完整的节目作出的改变导致丢失过渡。为了避免重新编辑所有过渡,必须记录这些改变。可将其存储在一张表中,为作出的各改变保存开始帧与结束帧。用一种方式或另一方式对动作的改变将影响表中的帧。
因为必须为各动作指定速度,在展开循环运动时很清楚将发生什么事情将根据需要频繁地重复运动来填满该行为的整个时间间隔。反之,非循环运动的展开便是问题。在速度保持不变时,如果空间太小,动作将被切断,或者在空间太大时,人物将保持在一定的位置上。当精确地填满行为的空间时,动作将慢下来或快起来,而与伴随的速度相反。另一方面,你可能忘记属于这一动作的速度,而只依赖于动作的大小。将动作展开成完美地符合时间间隔。循环动作也将展开通常在库中只能得到一个循环,因此该动作将只包含一个展开的循环。老速度可用来确定新速度。很明显,最佳处理方法是向用户提供这两种选择。
如果不存在诸如描述一种情绪所使用的情绪的数目的限制等事物,则可将情绪及其联系分开并存储在两个不同的文件中。
现在已经实现了组合不同运动群的非常简明的版本,这只是为了测试。在这一版本中使用了标准成员函数,意味着两个相邻变量的一半成员函数是重叠的。进一步使用并随机地初始化了一些伪造的运动群、情绪与速度。
在联机阶段中,程序必须知道更新后的人物的状态。因此如果可能必须发送、执行各帧数据,并且实际上必须送回得出的帧。
在模型中,关节是在肢体的起点上。模型包含一个柔性的背。应当利用这一柔性的背来制作背部曲线。为了以平滑的方式利用正常的关节之间的柔性的背,我们决定用C++来实现该模型。采用C++的优点是非常容易在模型上增加功能及向其增加新参数。这一实现现在是完全独立于用于模型的数据结构的。
利用库例程来存储运动。库例程关于存储在库中的数据类型是透明的。运动现在是以帧缓冲器的形式存储在库中的。下面描述如何设计这一帧缓冲器。现在将动作数据与统计信息写入同一库文件中。将统计信息写在文件开始处,动作数据写在统计信息后面。在这一阶段上,开发运动类。
关于循环运动,只将循环部分存储在库中。因为运动是循环的,从哪一帧开始循环并不重要。可选择与当前位置匹配得最好的帧作为开始。然后建立到这一最佳匹配帧的过渡。
最佳匹配帧是其角值接近当前位置的角值的帧。同时,从当前姿势到开始帧所建立的过渡的持续时间应尽可能短。
模糊逻辑仍然是科学研究领域中一个非常小的课题。它似乎用得越来越象计算机语言,一种使程序员能以高级构造生成程序然后翻译成实际机器代码的翻译产品。它使软件更接近用户,因而变得更易于以自然术语交流。从自然术语到精确值的翻译仍必须进行,但能够以较为松散的方式指定。
进行过实验来观察是否能组合运动。建立了在不同速度上的两种行走运动之间的过渡。这种过渡是通过每次从两种运动中取一帧并通过取这两帧的加权平均值组合这一运动而建立的。在建立各帧之后,改变权重。以这一方式,第一运动在新帧上的影响减少,而第二运动的影响增加。从这一方式建立了以平滑的方式连接速度的过渡。
还进行过对循环运动的开始的实验。在记录的循环中进行了对最佳匹配帧的搜索。最佳匹配帧是其值最接近起始姿势的值的帧。建立从起始姿势到最佳匹配帧的过渡。用于这一过渡的帧是通过在起始姿势的帧与最佳匹配帧之间内插而建立的。虽然这一过渡是用内插法建立的,它看起来是人类的。
另一运动仅通过在两个点之间内插建立。这一运动是通过指定一对关节的起始角与结束角而建立的。给出了关节必须在其中从起始角移动到结束角的步骤的量。这些帧是用内插法建立的。这一运动看起来非常自然,虽然并未在运动上加上任何人类的运动。
从这些实验中可以得出结论,运动很快看起来象是人类的。也许因为观察者看见人物的运动,他便假定该运动也是人类的。这一事实能够用在过渡的建立中。没有必要进行复杂的变换来使运动看起来象人的。
从关于预记录的运动及预测的运动的分析可以看出预记录的运动包含大量噪声。由于这些噪声,不能看见运动中的小的细节,也难于从运动中抽取特征。
经验获悉记录运动的每一个人采用其自己的格式来存储运动。因此,我们所接收的运动都是以不同的格式存储的。对于所接收的各种不同格式,必须改变将运动从记录的格式转换成用在库中的格式的转换例程。
因为没有建立关于如何记录运动或关于记录运动的存储格式的事物,最好以下述格式存储所有运动。
角值应在径向上给出。
角值应相对于前一段给出。
角的次序应为倾斜角、偏转角、俯仰角。
动作应作为接连的帧的集合记录。
在一帧中,应记录所有使用的关节的角值。
关节的角值应作为关节标识符及三种角值的组合记录。
应在分开的文件中写入哪一标识符对应于哪一段名。
如果按照这些规则记录了所有运动,便能实现将这些运动存储在Mde Com库中的转换例程。这能避免必须编写转换例程,或必须使转换例程适应所记录的各新的运动种类。
上面已参照于玩偶1的动作描述了本发明。然而,很明显本发明不限于象人类的玩偶1。本发明的原理也能应用在例如象动物的装置上。
权利要求
1.用于控制模仿生物的可移动装置(1)或其二维模拟的设备,该装置设置有人造肢体,带有用于接收控制信号的装置(3)及用于生成人造肢体的驱动信号的装置(2),该设备包括-用户界面(5),设置有用户(4)用来输入命令的输入装置(13),-中央处理单元(6),通过第一通信线路(11)连接在用户界面上并包括--第一存储装置(20),存储关于装置(1)的位置的数据;--读取装置(8),从所述第一存储装置(20)中读取数据;--编辑器装置(7),接收来自所述读取装置的所述数据及计算所述位置之间的插入动作并相应地移动该角色,其特征在于,--所述第一存储装置(20)存储关于该可移动装置的预定原子动作的原子动作数据,--所述编辑器装置(7)配置成计算亚原子动作并将它们插入邻接的原子动作之间,将要插入前面的原子动作与后面的动作之间的任何亚原子动作计算成使得它在开始部分上与所述前面的原子动作重合且在结束部分上与所述后面的原子动作重合,从而前面的原子动作、亚原子动作与后面的原子动作的组合动作是平滑与稳定的。
2.按照权利要求1的设备,其特征在于,该设备还设置有第二存储装置(21),其中提供有与装置(1)的预指定的动作有关的情绪动作数据,所说的动作与该设备模仿的人物的情绪相连接,读取装置(8)还装备成从第二存储装置(21)中读取,以及编辑器(7)还装备成按照用户(4)输入的情绪来计算亚原子动作。
3.按照权利要求1或2的设备,其特征在于,该设备还设置有第三存储装置(22),其中提供有声音数据,该读取装置(8)还装备成读取声音数据,以及该编辑器(7)还装备成按照用户(4)输入的声音来计算亚原子动作并提供还包括声音数据的控制信号。
4.按照权利要求1至3中任一项的设备,其特征在于,该编辑器(7)是基于模糊逻辑的,从而用户(4)能用日常语言输入命令。
5.按照前面的权利要求之一的设备,其特征在于,该中央处理单元还设置有第四存储装置(19),其中装备有用于在编辑器(7)所计算的控制信号的基础上在监视器(13)上模拟该装置(1)要作出的期望动作的软件。
6.按照前面的权利要求之一的设备,其特征在于,该设备还设置有维护界面(15),该维护界面通过第二通信线路(16)连接在中央处理单元(6)上并装备成分别按照预定的动作、情绪与声音分别向中央处理单元(6)的第一(20)、第二(21)与第三(22)存储装置提供数据。
7.按照权利要求6的设备,其特征在于,所述设备还设置有用于记录由活的测试人执行的动作的数据服(18),该数据服能连接在维护界面(15)上。
8.用于控制模仿生物的可移动装置(1)或其二维模拟的方法,该装置设置有人造肢体,带有用于接收控制信号的装置(3)及用于生成人造肢体的驱动信号的装置(2),上述方法是按照下述步骤进行的-通过设置有输入装置(13)的用户界面(5)输入命令,-按照用户(4)输入的命令从第一存储装置(20)中读取关于可移动装置的位置的数据,-计算所述位置之间插入的动作并相应地移动该角色,其特征在于,-从所述第一存储装置(20)中读出原子动作,-计算亚原子动作并将它们插入邻接的原子动作之间,将要插入前一原子动作与后一动作之间的任何亚原子动作计算成使得它在开始部分上与所述前一原子动作重合而在结束部分上与所述后一原子动作重合,使得前一原子动作、亚原子动作与后一原子动作的组合动作是平滑与稳定的。
9.按照权利要求8的方法,其特征在于,还包括从提供有关于与该设备所模仿的人物的情绪相连的装置(1)的预定动作的情绪/动作数据的第二存储装置(21)中读取数据,及按照用户(4)输入的情绪计算亚原子动作的附加步骤。
10.按照权利要求8或9的方法,其特征在于,还包括从提供有声音数据的第三存储装置(22)中读取及按照用户(4)所要求的声音计算亚原子动作以及提供包含声音数据的控制信号的步骤。
11.按照权利要求8至10之一的方法,其特征在于,为了使该装置按照用户(4)输入的命令执行流畅的动作而对已读出的原子动作之间所要求的亚原子动作的计算及在原子动作之间执行的所述亚原子动作的插入以及对应的控制信号的提供是基于模糊逻辑的,从而用户(4)能以日常语言输入命令。
12.按照权利要求8至11之一的方法,其特征在于,在编辑器(7)计算出的控制信号的基础上在监视器(13)上模拟装置(1)要作出的期望的动作。
13.按照权利要求12的方法,其特征在于,由活的测试人所执行的动作是在数据服(18)的帮助下记录的。
全文摘要
用于控制模仿生物的可移动装置(1)或其二维模拟的设备与方法,该装置设置有人造肢体,带有用于接收控制信号的装置(3)及生成人造肢体的驱动信号的装置(2),该设备包括:设置有用户(4)用于输入命令的输入装置(13)的用户界面(5),通过第一通信线路(11)连接在用户界面上的中央处理单元(6),该中央处理单元包括:提供有由一系列原子动作构成的并且还能基于情绪的动作数据的存储装置(20,21,22),用于计算所读出的原子动作之间所需的亚原子动作并在原子动作之间插入所述亚原子动作从而使该装置执行流畅的动作的编辑器(7)。
文档编号G06T13/00GK1192812SQ96196236
公开日1998年9月9日 申请日期1996年6月27日 优先权日1995年6月28日
发明者阿里·亨德里克·尼古拉斯·范维林根 申请人:阿里·范维林根视频胶片产品公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1