代理状态
[Microsoft 代理从 Windows 7 开始已弃用,可能在后续版本的 Windows 中不可用。]
Microsoft 代理动画服务会自动为你播放某些动画。 例如,使用 MoveTo 或 GestureAt 命令时,动画服务将播放相应的动画。 同样,在空闲超时后,服务会自动播放动画。 若要支持这些状态,可以定义适当的动画,然后将其分配给状态。 即使将它分配给状态,你仍然可以使用 Play 方法直接播放定义的任何动画。
可以将多个动画分配到同一状态,动画服务会随机选择其中一个动画。 这使你的角色在行为上表现出更自然的多样性。
尽管分配给状态的动画可以包括分支帧,但避免循环动画 (永远) 分支动画。 否则,必须先使用 Stop 方法才能播放另一个动画。
请务必为角色发生的每个状态定义并分配至少一个动画。 如果未提供这些动画和状态分配,则角色可能看起来对用户的行为不合适。 但是,如果特定角色的状态未出现,则无需为该状态分配动画。 例如,如果主机应用程序从不调用 MoveTo 方法,则可以跳过创建和分配 移动 状态动画。
状态 | 使用示例 |
---|---|
GesturingDown | 处理 GestureAt 动画方法时。 |
GesturingLeft | 处理 GestureAt 动画方法时。 |
GesturingRight | 处理 GestureAt 动画方法时。 |
GesturingUp | 处理 GestureAt 动画方法时。 |
听力 | 检测到语音输入的开头时。 |
隐藏 | 当用户或应用程序隐藏字符时。 |
IdlingLevel1 | 当字符开始 处于“闲” 状态时。 |
IdlingLevel2 | 当字符开始第二个 “闲” 级别状态时。 |
IdlingLevel3 | 当字符开始最终 的“闲转 ”级别状态时。 |
听 | 当字符开始收听 (用户首先按语音输入热键) 。 |
MovingDown | 处理 MoveTo 动画方法时。 |
MovingLeft | 处理 MoveTo 动画方法时。 |
MovingRight | 处理 MoveTo 动画方法时。 |
MovingUp | 处理 MoveTo 动画方法时。 |
显示 | 当用户或应用程序显示字符时。 |
说 | 处理 Speak 动画方法时。 |
当用户按下语音输入的按即用热键时,将播放分配给 侦听 状态的动画。 创建并分配一个简短的动画,使角色看起来专注。 同样,定义其 返回 动画的持续时间较短,以便角色在用户说话时播放其 听力 状态动画。 听觉状态动画还应简短,旨在让用户知道角色正在主动听用户说的话。 头部倾斜或其他轻微的手势是合适的。 若要提供自然可变性,请提供多个 听觉 状态动画。
仅当计划使用 GestureAt 方法时,才需要创建和分配 Gesturing 状态动画。 当 Microsoft 代理处理对 GestureAt 方法的调用时,会播放状态动画。 如果为 手势 状态动画定义嘴部覆盖,则角色可以像手势一样说话。
动画服务确定角色的位置及其与 方法中指定的坐标位置的关系,并播放相应的动画。 手势方向始终与字符有关:例如, GestureRight 应是字符右侧的手势。
当用户或主机应用程序请求显示或隐藏角色时, “显示 ”和“ 隐藏” 状态将播放分配的动画。 这些状态还相应地设置字符帧的 “可见” 状态。 为这些状态定义动画时,请记住角色可以在任何屏幕位置出现或离开。 由于用户可以显示或隐藏任何字符,因此这些状态始终至少支持一个动画。
分配给 “显示” 状态的动画通常以包含角色中性位置图像的帧结束。 相反, 隐藏 状态动画通常从中性位置开始。 显示 和 隐藏 状态动画可以分别在开头或结尾包含一个空帧,以提供从角色的当前状态转换。
闲状态是渐进的。 动画服务在第一个空闲时段开始使用级别 1 分配,对第二个空闲时段使用级别 2 动画。 在此之后,空闲周期将推进到级别 3 分配的动画,并一直处于此状态,直到取消,例如当新的动画请求开始时。
设计闲 散 状态的动画以传达角色的状态,但不要分散用户的注意力。 动画应以微妙但清晰的方式适当反映角色的响应能力。 例如,环视或闪烁是分配给 IdlingLevel1 状态的好动画。 读取动画适用于 IdlingLevel2 状态。 使用耳机睡觉或听音乐是分配给 IdlingLevel3 状态的动画示例。 包含许多或大型动作的动画不适合空闲动画,因为它们会吸引用户的注意。 由于 经常播放“闲转 ”状态动画,因此提供多个 “闲转 ”状态动画,尤其是对于 IdlingLevel1 和 IdlingLevel2 状态。
请注意,应用程序可以关闭字符的自动空闲处理,并管理字符的 空闲 状态本身。 代理 闲转 状态旨在帮助你避免角色无法播放动画的任何情况。 在短暂的一段时间后不会更改的字符图像就像应用程序显示长时间的等待指针,这损害了可信度和交互性。 保持错觉不需要太多:有时只是动画眨眼、可见的呼吸或身体移动。
当找不到当前 动画的朗 语动画时,动画服务将使用朗声状态。 将一个简单的口语动画分配到此状态。 例如,可以使用一个框架,该框架由带有嘴覆盖的字符的中性位置组成。
当应用程序调用 MoveTo 方法时,移动状态将播放。 动画服务根据角色的当前位置和指定的坐标确定要播放的动画。 移动方向基于角色的位置。 因此,分配给 MovingLeft 动画的动画应基于角色的左侧。 如果不使用 MoveTo 方法,可以跳过创建和分配动画。
移动 状态动画应将角色动画化到其移动位置。 当角色的帧在屏幕上移动时,将显示此动画的最后一帧。 不支持在角色帧移动时对角色进行动画处理。
虽然你可以将自定义字符设计为具有要使用的动画,但 Microsoft 代理定义了一个标准动画集。 可以选择符合此定义的字符作为默认字符。
下表列出了标准动画集中包含的动画。 即使要创建自定义字符,也可能希望使用该列表作为设计自己的字符的指南。 支持标准动画集的字符必须至少支持以下动画。
动画 | 使用示例 | 示例动画 |
---|---|---|
确认 | 当字符确认用户的请求时。 | 字符点头或闪烁“确定”手势。 请注意,此动画应将字符返回到其中性位置。 |
警报1、2 | 当角色等待指令时,通常在用户打开侦听模式后播放。 | 角色面对正面,呼吸,偶尔闪烁,但显然等待指令。 |
公告1,2 | 当字符找到用户的信息时。 | 通过抬起眉毛和手或打开信封的字符手势。 |
Blink | 当字符说完或空闲时。 | 角色自然会眨眼。 |
混淆1,2 | 当字符不明白该怎么做时。 | 字符划伤头部。 |
祝贺1,2 | 当角色或用户完成任务时, (更强大的“确认 ”动画形式。) | 角色执行祝贺手势,传达“是的! |
下降1,2 | 当字符无法执行或拒绝用户的请求时。 | 人物摇头,传达“不能做”。 |
DoMagic1 | 字符准备显示内容。 | 角色挥动手或魔杖。 |
DoMagic2 | 字符完成某些内容的显示。 | 字符完成魔术手势。 |
DontRecognize1,2 | 当字符无法识别用户的请求时。 | 角色手牵手到耳朵。 |
说明1,2 | 当字符向用户解释某些内容时。 | 字符手势,仿佛在解释某些内容。 |
GestureDown1,2 | 当字符需要指向它下面的内容时。 | 字符向下指向。 |
GestureLeft1,2 | 当字符需要指向其左侧的内容时。 | 左手或左手的字符点转换为指向左侧的箭头。 |
GestureRight1,2 | 当字符需要指向其右侧的内容时。 | 右手或右手的字符点转换为指向右侧的箭头。 |
手势更新1,2 | 当字符需要指向其上方的内容时。 | 字符指向上。 |
GetAttention | 当字符需要通知用户有关重要事项时。 | 角色挥动双手或上下跳跃。 |
GetAttentionContinued | 强调通知的重要性。 | 初始手势的延续或重复。 |
GetAttentionReturn | 当角色完成 GetAttention 或 GetAttentionContinued 动画时。 | 字符返回到其中性位置。 |
问候语1,2 | 当用户启动系统时。 | 角色微笑和波浪。 |
Hearing1 | 当角色听到口述话语的开头时, (主动侦听) 。 | 角色向前倾斜并点头,或转过头来显示对语音输入的响应。 注意:此动画循环到字符移动到适当位置后发生的某个中间帧。 |
Hearing2 | 当角色听到口述话语的开头时, (主动侦听) 。 |
在 Hearing1中使用的动画类型的另一个变体 注意:此动画循环到字符移动到适当位置后发生的某个中间帧。 |
隐藏 | 当用户关闭字符时。 | 字符从屏幕中删除自我。 |
Idle1_1 | 当字符没有任务且用户未与字符交互时。 | 字符闪烁或环顾四周,保持或返回到中性位置。 |
Idle1_2 | 当字符没有任务且用户未与字符交互时。 | Idle1_1中使用的动画类型的另一种变体。 |
Idle2_1 | 当字符空闲一段时间时。 | 字符打哈欠或阅读杂志留在或返回到中性位置。 |
Idle2_2 | 当字符空闲一段时间时。 | Idle2_1中使用的动画类型的另一种变体。 |
Idle3_1 | 当字符长时间空闲时。 | 字符打哈欠。 |
Idle3_2 | 当字符长时间空闲时。 | 角色睡觉或戴上耳机听音乐。 注意:此动画循环到字符移动到适当位置后发生的某个中间帧。 |
LookDown | 当字符需要向下看时。 | 角色向下看。 |
LookLeft | 当字符需要向左看时。 | 字符向左看。 |
LookRight | 当字符需要正确查找时。 | 字符向右看。 |
查找 | 当字符需要查找时。 | 角色查找。 |
MoveDown | 当字符准备向下移动时。 | 角色转换为步行/飞下位置。 |
MoveLeft | 当字符准备向左移动时。 | 角色转换为步行/飞向左位置。 |
MoveRight | 当字符准备向右移动时。 | 角色转换到步行/飞向右位置。 |
MoveUp | 当字符准备上移时。 | 角色转换为步行/飞升位置。 |
喜悦1,2 | 当字符对用户的请求或选择满意时。 | 角色微笑。 |
处理 | 当字符执行某种类型的泛型任务时。 | 角色按下按钮或使用某种类型的工具。 |
Processing | 当字符忙于处理泛型任务时。 | 字符在纸垫上涂鸦或使用某种类型的工具。 注意:此动画循环到字符移动到适当位置后发生的某个中间帧。 |
读取 | 当字符向用户读取某些内容时。 | 字符显示书籍或纸张、阅读内容和回头看用户。 |
ReadContinued | 当字符向用户进一步读取时。 | 字符再次读取,然后回头看用户。 |
ReadReturn | 当字符完成 Read 或 ReadContinued 动画时。 | 字符返回到其非中性位置。 |
正在读取 | 当字符读取某些内容但无法接受输入时。 | 字符从一张纸上读取。 注意:此动画循环到某些中间帧, (字符移动到适当位置后发生的) 。 |
RestPose | 当字符从其中立位置说话时。 | 角色站着轻松但细心的姿势。 |
悲伤1,2 | 当角色对用户的选择感到失望时。 | 角色皱眉或看起来失望。 |
搜索 | 当字符搜索某些内容时。 | 角色在文件抽屉或其他容器中随机寻找内容。 |
搜索 | 当字符搜索用户指定信息时。 | 角色在文件抽屉或其他容器中随机寻找内容。 注意:此动画循环到某些中间帧, (字符移动到适当位置后发生的) 。 |
显示 | 当字符启动或被召唤后返回时。 | 角色在浓烟中弹出,在光束中弹出,或在屏幕上散步。 |
StartListening1,2 | 当字符正在侦听时。 | 角色将手放在耳朵上。 |
StopListening1,2 | 当字符停止侦听时。 | 角色把手放在耳朵上。 |
建议1,2 | 当字符为用户提供提示或建议时。 | 灯泡显示在字符旁边。 |
惊讶1,2 | 当角色对用户的操作或选择感到惊讶时。 | 性格睁大眼睛,张开嘴。 |
思考1,2 | 当角色在考虑某事时。 | 角色抬起头来,手牵着头。 |
不确定1,2 | 当字符需要用户确认请求时。 | 角色看起来好奇, 传达 (“你确定吗?) |
第1、2 波 | 当用户选择关闭服务器或系统时。 | 角色挥手再见或你好。 |
写入 | 当字符正在侦听用户的说明时。 | 字符显示纸张、书写内容,并回头看用户。 |
WriteContinued | 当字符继续侦听用户的说明时。 | 字符在一张纸上书写,并回首用户。 |
WriteReturn | 当角色完成 Write 或 WriteContinued 动画时。 | 字符返回到其非中性位置。 |
写入 | 当字符写出用户的信息时。 | 字符在纸上书写。 注意:此动画循环。 |
动画需要嘴部覆盖和定义的说话框架。
动画需要基于其退出分支或显式返回动画分配的 Return 动画。
此外,字符必须具有以下状态赋值。
状态 | 必需的动画 |
---|---|
GesturingDown | GestureDown |
GesturingLeft | GestureLeft |
GesturingRight | GestureRight |
GesturingUp | GestureUp |
听力 | Hearing1、Hearing2 |
隐藏 | 隐藏 |
IdlingLevel1 | 闪烁、Idle1_1、Idle1_2 |
IdlingLevel2 | Blink、Idle1_1、Idle1_2、Idle2_1、Idle2_2 |
IdlingLevel3 | Idle3_1、Idle3_2 |
听 | 警报 |
MovingDown | MoveDown |
MovingLeft | MoveLeft |
MovingRight | MoveRight |
MovingUp | MoveUp |
显示 | 显示 |
说 | RestPose |