使用运动捕获的角色动画控制接口 相关申请的交叉参考
本 申 请 要 求 2009 年 1 月 21 日 提 交 的 题 为 “Character AnimationControl Interface Using Motion Capture” 的美国临时申请 No.61/461,154 的优先权, 该美国临时 申请由此通过参考被包括在这里。
技术领域 这里描述的实施例一般涉及运动捕获和计算机动画技术, 尤其涉及用于至少部分 基于真实世界行动者的运动而生成虚拟角色的方法和设备。
背景技术 视频捕获装置通常记录真实世界中个体的运动, 并使用收集的信息在虚拟环境中 模拟该个体的运动。这种技术可用于各种目的, 其中许多涉及计算机图形和 / 或计算机动 画。例如, 商业实体通常使用已知运动捕获技术首先记录然后在计算机或视频游戏机中虚 拟再现众所周知的个体诸如运动员的运动。 所生成的真实世界运动的虚拟表示因而为该视
频游戏机的目标市场所熟悉, 从而能够改善用户的游戏真实性感觉。
因为它在第一时间被获取并存储用于在随后时间再现, 所以这种数据通常称为 “脱机数据” 。脱机数据通常含有行动者的运动的更精确测量, 由此允许再现系统在虚拟世 界中更准确地描绘该运动。然而, 这种数据也限于在初步捕获会话期间收集的具体行动者 运动和姿势, 由此约束这种系统再现它可能期望描绘的其它无数种可能姿势中的任一种。
在其它方法中, 行动者的真实世界位置和运动被准实时地映射到虚拟空间中, 这 给行动者提供对相应虚拟角色的运动的更精细控制以及理论上无限数量的可能虚拟位置。 使用这种方法收集的数据称为 “联机数据” , 其捕获的即时性允许行动者与虚拟空间或世界 的元素 “交互” 。 然而, 给定这些方法的时间约束和处理要求, 联机数据通常比其脱机对应物 较不准确, 特别是当相关虚拟世界基本上不同于行动者的具体真实世界环境时。
因此, 需要能够收集联机运动捕获数据、 基于此辨别行动者意图并且在虚拟世界 的约束的条件下准确再现行动者运动的系统和设备。 发明内容 处理器可读介质存储表示使处理器定义虚拟特征的指令的代码。 该虚拟特征可与 至少一个接合条件相关联。 该代码还表示使处理器接收与行动者相关联的终端效应器坐标 并至少部分基于该至少一个接合条件与终端效应器坐标之间的比较而计算行动者意图的 指令。
附图说明
图 1 是根据实施例的运动捕获和姿势计算器系统的示意例示。 图 2 是示出根据实施例的虚拟姿势计算器模块的示意框图。图 3 是示出根据实施例的意图识别模块的示意框图。
图 4 是例示根据实施例的用于计算与真实世界行动者和虚拟角色相关联的中间 虚拟姿势的方法的流程图。
图 5 是例示根据实施例的用于确定新虚拟角色质心的方法的流程图。
图 6 是例示根据实施例的用于计算避免穿透几何形状的最终姿势的方法的流程 图。 具体实施方式
虚拟姿势计算模块可配置成接收与耦合到真实世界行动者诸如人的终端效应器 标记的空间位置相关联的信息。在一些实施例中, 模块可将真实世界终端效应器标记映射 到虚拟世界以基于行动者再现虚拟角色。 该模块可配置成使得最小化行动者的姿势和运动 与对应虚拟角色的姿势和运动之间的差异。在一些实施例中, 模块可配置成实施与虚拟世 界相关联的一个或多个约束以确保再现的虚拟角色以与其虚拟环境一致的方式运动。
在一些实施例中, 该模块可定义在虚拟世界内存在的一个或多个虚拟特征。虚拟 特征可定义成包含位置坐标、 维度和接触约束的集合和 / 或表面类型。在一些实施例中, 可 定义一个或多个示例运动, 并将其与每个虚拟特征相关联。 在一些实施例中, 虚拟姿势计算 模块可包含配置成相对于一个或多个虚拟特征确定真实世界行动者意图的一个或多个子 模块。该确定例如可基于耦合到真实世界行动者的终端效应器的位置和 / 或与每个虚拟特 征相关联的接触约束集合。在一些实施例中, 模块可包含确定行动者的当前姿势是否模仿 与那个虚拟特征相关联的示例运动集合之一的子模块。 该确定例如可基于真实世界行动者 终端效应器的位置与示例运动定义的虚拟终端效应器的位置之间相似性的测量。
在一些实施例中, 该模块可基于真实世界行动者的位置和 / 或运动计算虚拟角色 的中间虚拟姿势。 例如, 在一些实施例中, 该模块可包含配置成通过循环通过每个行动者终 端效应器并计算对应于那个行动者终端效应器的中间虚拟终端效应器位置来构造中间虚 拟姿势的一个或多个子模块。
例如, 在一些实施例中, 如果行动者终端效应器不受约束和 / 或对应的虚拟角色 终端效应器受约束, 则子模块可将中间虚拟姿势终端效应器的值分配给对应的行动者终端 效应器位置。如果对应的虚拟终端效应器不受约束并且对应的行动者终端效应器受约束, 则子模块可将中间虚拟姿势终端效应器的值分配给基于对应的示例运动终端效应器位置 与行动者终端效应器位置之间的插值计算的值。在一些实施例中, 还可基于一个或多个附 加因素或目标, 诸如与前一虚拟角色姿势的一致性、 与示例运动的相似性以及与行动者的 总体运动的一致性, 加权和 / 或影响每个中间虚拟姿势终端效应器位置计算。
姿势计算模块还可配置成计算虚拟角色的下一质心。 例如, 在一些实施例中, 姿势 计算模块可包含至少部分基于与虚拟角色的至少一个虚拟终端效应器相关联的弹力计算 下一虚拟质心的子模块。在一些实施例中, 该计算可至少部分基于与虚拟角色的一个或多 个受约束的虚拟终端效应器相关联的摩擦力。在一些实施例中, 该计算可至少部分基于施 加在虚拟角色上的模拟重力。
姿势计算模块还可配置成组合中间虚拟姿势和新虚拟质心 (“COM” ) 以确定虚拟 角色的新虚拟姿势。 例如, 在一些实施例中, 该模块可包含配置成组合与中间虚拟姿势相关联的虚拟终端效应器位置值和新虚拟 COM 以定义新姿势的一个或多个子模块。在一些实施 例中, 如果新虚拟姿势的任何终端效应器穿透任何虚拟特征的表面, 则子模块可循环通过 与和新虚拟姿势接触的每个虚拟特征相关联的交互接触点集合。 如果子模块检测到任何此 类穿透, 则在一些实施例中, 它可将每个穿透几何形状的不等约束插入到原始新姿势计算 公式, 以便计算符合每个虚拟特征的接触约束并由此避免任何穿透几何形状的修改的新姿 势。
在一些实施例中, 姿势计算模块可将与新姿势相关联的信息发送到另一个基于硬 件和 / 或软件的模块, 诸如视频游戏软件模块。在一些实施例中, 模块可将该信息发送到显 示装置, 诸如屏幕, 以便显示根据新姿势再现的虚拟角色。通过执行上述步骤, 并根据在时 间上计算的每个连续新姿势输出再现的虚拟角色, 该模块可在虚拟空间生成真实世界行动 者运动的准确可视再现。
图 1 是根据实施例的运动捕获和姿势计算器系统的示意例示。更具体地说, 图1 例示了戴着多个标记 105 的行动者 100。至少部分基于多个标记 105, 捕获装置 110 跟踪行 动者 100 的运动, 并且姿势计算器 120 将其映射到虚拟场境。捕获装置 110 操作上耦合到 姿势计算器 120。 在一些实施例中, 姿势计算器 120 可操作上耦合到集成和 / 或外部视频显 示器 ( 未示出 )。 行动者 100 可以是任何真实世界的物体, 包括例如人。在一些实施例中, 行动者 100 可以在运动。在一些实施例中, 行动者 100 可以穿对捕获装置 110 敏感的特殊衣服, 和 / 或装配有对捕获装置 110 敏感的一个或多个标记, 诸如多个标记 105。在一些实施例中, 至少部分标记 105 与一个或多个行动者终端效应器相关联。在一些实施例中, 行动者 100 可以是动物、 运动机器、 车辆或机器人。
多个标记 105 可以是配置成允许捕获装置诸如捕获装置 110 跟踪运动的任何多个 标记装置。在一些实施例中, 多个标记 105 可包含一个或多个反光标记。在一些实施例中, 多个标记 105 中至少一部分可耦合或粘附到一个或多个衣物, 诸如裤子、 衬衣、 紧身衣裤和 / 或帽子。
捕获装置 110 可以是能够捕获视频的硬件和 / 或软件的任何组合。在一些实施例 中, 捕获装置 110 可以能够检测一个或多个标记诸如多个标记 105 的空间位置。在一些实 施例中, 捕获装置 110 可以是专用视频摄像机或耦合到或集成在消费电子装置诸如个人计 算机、 蜂窝电话机或其它装置中的视频摄像机。在一些实施例中, 捕获装置 110 可以是基于 硬件的模块 ( 例如处理器、 专用集成电路 (ASIC)、 现场可编程门阵列 (FPGA))。在一些实施 例中, 捕获装置 110 可以是驻留在硬件装置 ( 例如处理器 ) 上或操作上耦合到处理器的存 储器 ( 例如 RAM、 ROM、 硬盘驱动器、 光驱、 其它移动式介质 ) 中的基于软件的模块。
在一些实施例中, 捕获装置 110 可物理上耦合到稳定装置, 诸如三脚架或单脚架, 如图 1 所示。在一些实施例中, 捕获装置 110 可以由摄像机操作人员 ( 未示出 ) 握住和 / 或稳定。在一些实施例中, 捕获装置 110 可以在运动。在一些实施例中, 捕获装置 110 可以 物理上耦合到车辆。在一些实施例中, 捕获装置 110 可以物理上和 / 或操作上耦合到姿势 计算器 120。例如, 捕获装置 110 可通过导线和 / 或电缆 ( 如图 1 所示 ) 耦合到姿势计算器 120。在一些实施例中, 捕获装置 110 可通过一个或多个无线协议诸如蓝牙、 超宽带 (UWB)、 无线通用串行总线 ( 无线 USB)、 微波、 WiFi、 WiMax、 一个或多个蜂窝网络协议 ( 诸如 GSM、
CDMA、 LTE 等 ) 无线耦合到姿势计算器 120。
姿势计算器 120 可以是能够至少部分基于从捕获装置 110 接收的信息计算与行动 者 100 相关联的虚拟姿势和 / 或位置的硬件和 / 或软件的任何组合。在一些实施例中, 姿 势计算器 120 可以是包含处理器、 存储器和配置成使处理器计算行动者姿势和 / 或位置的 固件和 / 或软件的硬件计算装置。在一些实施例中, 姿势计算器 120 可以是任何其它基于 硬件的模块, 诸如专用集成电路 (ASIC) 或现场可编程门阵列 (FPGA)。 姿势计算器 120 备选 地可以是驻留在硬件装置 ( 例如处理器 ) 上或操作上耦合到处理器的存储器 ( 例如 RAM、 ROM、 硬盘驱动器、 光驱、 其它移动式介质 ) 中的基于软件的模块。
图 2 是示出根据实施例的虚拟姿势计算器的示意框图。 更具体地说, 图 2 例示了虚 拟姿势计算器 200, 该计算器 200 包含第一存储器 210、 输入 / 输出 (I/O) 模块 220、 处理器 230 和第二存储器 240, 该存储器 240 包含意图识别模块 242、 中间姿势合成模块 244、 模拟 模块 246 和最终姿势合成模块 248。意图识别模块 242 可从 I/O 模块 220 接收意图捕获信 息, 并向中间姿势合成模块 244 发送意图、 运动捕获和 / 或示例运动信息。中间姿势合成模 块 244 可从意图识别模块 242 接收意图、 运动捕获和 / 或示例运动信息, 并向模拟模块 246 发送中间姿势信息。模拟模块 246 可从中间姿势合成模块 244 接收中间姿势信息, 并向最 终姿势合成模块 248 发送新质心 (COM) 信息和 / 或与虚拟特征相关联的接触约束信息。最 终姿势合成模块 248 可从意图识别 242 和 / 或模拟模块 246 接收接触约束信息。在一些实 施例中, 最终姿势合成模块可从模拟模块 246 接收新质心信息和 / 或中间姿势信息。在一 些实施例中, 最终姿势合成模块可从中间姿势合成模块 244 接收中间姿势信息。 在一些实施例中, 最终姿势合成模块 248 可向 I/O 模块 220 发送最终姿势信息。 在 一些实施例中, I/O 模块 220 可配置成向输出显示器诸如监视器或屏幕 ( 未示出 ) 发送至 少部分最终姿势信息。在一些实施例中, I/O 模块 220 可向一个或多个硬件和 / 或软件模 块诸如视频游戏模块或其它计算机化应用模块发送至少部分最终姿势信息。
在一些实施例中, 第一存储器 210、 I/O 模块 220、 处理器 230 和第二存储器 240 例 如可通过一个或多个集成电路连接。虽然显示为在单个地点和 / 或装置内, 但是在一些实 施例中, 两个存储器模块、 I/O 模块和处理器 230 中的任一个可通过网络诸如局域网、 广域 网或因特网连接。
第一存储器 210 和第二存储器 240 可以是任何类型的存储器, 诸如只读存储器 (ROM) 或随机存取存储器 (RAM)。在一些实施例中, 第一存储器 210 和 / 或第二存储器 240 例如可以是任何类型的计算机可读介质, 诸如硬盘驱动器、 光盘只读存储器 (CD-ROM)、 数字 视频盘 (DVD)、 蓝光盘、 闪存卡或其它便携式数字存储器类型。第一存储器 210 可配置成向 第二存储器 240、 I/O 模块 220 和处理器 230 发送信号, 并从那儿接收信号。第二存储器 240 可配置成向第一存储器 210、 I/O 模块 220 和处理器 230 发送信号, 并从那儿接收信号。
I/O 模块 220 可以是配置成从虚拟姿势计算器 200 接收信息并向其发送信息的硬 件和 / 或软件的任何组合。在一些实施例中, I/O 模块 220 可从包含视频和 / 或运动捕获信 息的捕获装置 ( 诸如上面结合图 1 论述的捕获装置 ) 接收信息。在一些实施例中, I/O 模 块 220 可向另一硬件和 / 或软件模块或装置诸如输出显示器、 其它计算机化装置、 视频游戏 操纵台或游戏模块等发送信息。
处理器 230 可以是配置成发送和接收信息、 发送和接收一个或多个电信号并处理
和 / 或生成指令的任何处理器或微处理器。 在一些实施例中, 处理器 230 可包含固件和 / 或 一个或多个流水线、 总线等。 在一些实施例中, 该处理器例如可以是数字信号处理器 (DSP)、 现场可编程门阵列 (FPGA)、 专用集成电路 (ASIC) 等。在一些实施例中, 该处理器可以是嵌 入式处理器, 并且可以是和 / 或包含一个或多个协处理器。
意图识别模块 242 可以是能够接收运动捕获数据并基于其确定行动者意图的硬 件和 / 或软件的任何组合。如图 2 中所示, 意图识别模块 242 可以是驻留在第二存储器 240 中的软件模块。在一些实施例中, 意图识别模块 242 可包含与虚拟世界、 空间、 场境或设置 ( 未示出 ) 的一个或多个虚拟特征相关联的信息。 例如, 在一些实施例中, 意图识别模块 242 可包含与一个或多个虚拟特征诸如家具、 设备、 弹射体、 其它虚拟角色、 结构组件 ( 诸如地 板、 墙壁和天花板 ) 等相关联的信息。
在一些实施例中, 意图识别模块 242 可包含与虚拟世界的每个虚拟特征相关联的 接合条件集合、 接触约束和 / 或一个或多个示例运动。在一些实施例中, 每个接合条件集合 可当被满足时指示行动者正在意图与相关联的虚拟特征交互。在一些实施例中, 每个接合 条件集合可包含与虚拟特征相关联的空间坐标集合, 这些空间坐标当被行动者占据时指示 行动者意图与那个虚拟特征交互。在这些实施例中, 意图识别模块 242 可以基于与每个定 义的虚拟特征相关联的接合条件集合确定行动者是否意图与任何定义的虚拟特征交互。 在一些实施例中, 意图识别模块 242 可以确定行动者是否正在模仿与虚拟特征相 关联的示例运动。例如, 如果意图识别模块 242 已经确定行动者已经满足与那个虚拟特征 相关联的一个或多个接合条件, 则模块可比较与行动者相关联的一个或多个位置和 / 或速 度以确定该行动者的当前姿势是否密切匹配与那个虚拟特征相关联的所存储示例运动。 在 一些实施例中, 意图识别模块 242 可向中间姿势合成模块 244 发送与该确定相关联的信息。 在一些实施例中, 意图识别模块 242 可附加地向姿势合成模块 240 发送如下一项或多项 : 与 行动者相关联的运动捕获数据、 与虚拟特征相关联的接合条件集合和与虚拟特征相关联的 示例运动的定义。在一些实施例中, 意图识别模块 242 可向最终姿势合成模块 248 发送与 该虚拟特征相关联的接触约束集合。
中间姿势合成模块 244 可以是能够至少部分基于行动者运动捕获信息和与虚拟 特征相关联的示例运动合成中间虚拟姿势的硬件和 / 或软件的任何组合。如图 2 中所示, 姿势合成模块 244 可以是驻留在第二存储器 240 中的软件模块。在一些实施例中, 姿势合 成模块 244 可使用运动捕获数据和与虚拟特征相关联的示例运动信息来计算描述虚拟世 界中真实世界行动者的姿势的综合姿势。
例如, 在一些实施例中, 姿势合成模块 244 可接收与定义真实世界行动者位置的 一个或多个运动标记相关联的信息和与虚拟特征相关联的示例运动的定义。在一些实施 例中, 运动标记信息可指示粘附到行动者或与之相关联的一个或多个终端效应器的空间位 置。 在一些实施例中, 所定义的示例运动可指示可用虚拟特征、 在其上或关于其执行的示例 运动的一个或多个终端点的空间位置。在这种实施例中, 姿势合成模块 244 可使用接收的 信息智能地且自适应地计算密切类似行动者的真实世界姿势的行动者的综合虚拟姿势。 在 一些实施例中, 姿势合成模块 244 可向模拟模块 246 和 / 或最终姿势合成模块 248 发送至 少部分综合姿势信息。
模拟模块 246 可以是能够基于中间虚拟姿势和虚拟角色的当前姿势计算虚拟角
色的新的模拟质心的硬件和 / 或软件的任何组合。如图 2 中所示, 模拟模块 246 可以是驻 留在第二存储器 240 中的软件模块。在一些实施例中, 模拟模块 246 可使用由姿势合成模 块 244 计算的中间姿势信息和定义虚拟角色的当前姿势的信息来计算虚拟角色的新质心。 在一些实施例中, 模拟模块 246 可向最终姿势合成模块 248 发送至少部分新质心信息。
最终姿势合成模块 248 可以是能够至少部分基于虚拟角色的当前姿势、 虚拟角色 的模拟的新质心和与虚拟角色当前接合的虚拟特征相关联的接触约束集合来计算最终虚 拟角色姿势的硬件和 / 或软件的任何组合。 在一些实施例中, 最终姿势合成模块 248 可接收 如下任何一项 : 来自意图识别模块 242、 中间姿势合成模块 244 和模拟模块 246 中任一个的 意图信息、 示例运动信息、 虚拟特征信息、 接触约束信息、 中间姿势信息和 / 或新质心信息。
图 3 是示出根据实施例的意图识别模块的示意框图。更具体地说, 图 3 例示了包 含特征接合模块 310、 接触约束模块 320 和运动模仿模块 330 的意图识别模块 300。在一些 实施例中, 特征接合模块 310 可向接触约束模块 320 发送一个或多个信号。在一些实施例 中, 接触约束模块 320 可向运动模仿模块 330 发送一个或多个信号。
在一些实施例中, 意图识别模块 300 可包含配置成从和向模块接收和发送包含信 息的信号的一个或多个硬件和 / 或软件模块。在一些实施例中, 意图识别模块 300 可以是 存储在配置成处理运动捕获信息的计算机化装置的存储器中的软件模块。在一些实施例 中, 意图识别模块 300 可以是操作上耦合到一个或多个其它硬件装置以便处理运动捕获信 息和 / 或计算虚拟角色的属性的单独硬件装置。
在一些实施例中, 意图识别模块 300 可以计算虚拟角色是否正在试图与一个或多 个虚拟特征和 / 或物体交互。例如, 在一些实施例中, 意图识别模块 300 可基于真实世界行 动者诸如人的当前位置和 / 或运动接收运动捕获信息, 并使用该信息确定该行动者是否正 在试图与虚拟门、 椅或书交互。在一些实施例中, 如果意图识别模块 300 确定该行动者正在 试图与给定虚拟特征交互, 则它然后可比较行动者的当前真实世界姿势和与那个虚拟特征 相关联的示例运动预定义集合中的每个, 以确定该行动者是否当前正在模仿它们中的任一 个。在一些实施例中, 意图识别模块 300 然后可向另一模块 ( 诸如上面结合图 2 论述的中 间姿势计算器模块 ) 发送示例运动信息和当前行动者真实世界姿势信息, 以便基于发送的 信息计算中间虚拟角色姿势。
特征接合模块 310 可以是配置成接收当前行动者姿势信息并确定该行动者是否 正在试图与虚拟世界中任何特定虚拟特征接合的硬件和 / 或软件的任何组合。更具体地 说, 在一些实施例中, 特征接合模块 310 首先可接收定义行动者的真实世界姿势和 / 或位置 的信息。 在一些实施例中, 操作上或物理上耦合到意图识别模块的捕获或其它装置可检测、 收集和 / 或接收信息。在一些实施例中, 姿势和 / 或位置信息可包括行动者的一个或多个 终端效应器的一个或多个空间坐标。例如, 在一些实施例中, 姿势信息可包含一系列 x、 y和 z 或 r、 θ 和 坐标集合, 每个与行动者终端效应器诸如标记或其它物理终端效应器相关联。 在一些实施例中, 每个终端效应器可物理上定位在行动者身体点上, 诸如肘、 手或身体的另 一外部部位。
在一些实施例中, 特征接合模块 310 可包含与虚拟世界中的一个或多个虚拟特征 相关联的信息。例如, 在一些实施例中, 虚拟特征信息可包含颜色、 空间位置、 空间维度、 质 量、 表面面积、 体积、 刚性、 韧性、 摩擦、 表面类型和 / 或虚拟特征的其它属性。在一些实施例中, 特征接合模块 310 可包含与每个虚拟特征相关联的接合条件集合。接合条件例如可包 含空间坐标集合, 该坐标如果被真实世界行动者占据 ( 即被行动者的当前终端效应器位置 密切映射 ), 则指示行动者当前正在试图与那个虚拟特征 “接合” 或交互。
在一些实施例中, 特征接合模块 310 可循环通过当前虚拟世界中的每个虚拟特 征, 并且确定该行动者当前是否正在接合那个特征。例如, 在一些实施例中, 特征接合模块 310 可对于每个虚拟特征比较虚拟特征的相关联接合条件与行动者的终端效应器的当前空 间位置。如果行动者的当前姿势满足与给定虚拟特征相关联的接合条件, 则特征接合模块 310 可定义指示该行动者当前正在接合那个特定虚拟特征的接合指示符变量。在一些实施 例中, 特征接合模块 310 可基于行动者的终端效应器位置与虚拟特征的空间位置和纬度之 间的差或 Δ 是否低于预定阈, 确定行动者的当前位置是否满足给定虚拟特征的结合条件。 如果特征接合模块 310 实际上的确设置了指示该行动者当前正在接合特定虚拟特征的指 示符值, 则它可向接触约束模块 320 发送接合指示符、 与虚拟特征相关联的标识符和行动 者的终端效应器位置信息。在一些实施例中, 特征接合模块 310 可备选地或附加地向运动 模仿模块 330 发送与特定虚拟特征相关联的标识符和行动者终端效应器位置。
在一些实施例中, 接触约束模块 320 可从特征接合模块 310 接收虚拟特征标识符、 行动者终端效应器位置集合和接合指示符。 在一些实施例中, 接合指示符可含有二进制值, 诸如 “是” “否” 、 、 1、 0 或标识行动者当前正在接合的虚拟特征的信息。 在一些实施例中, 接触 约束模块 320 可计算与所标识虚拟特征相关联的接触约束集合或交互接触点。接触约束例 如可以是定义相关联虚拟特征的位置、 维度、 边缘和 / 或表面的点集合。在一些实施例中, 接触约束模块 320 然后可向运动模仿模块 330 发送所计算的接触约束、 虚拟特征标识符和 行动者终端效应器空间坐标中的至少一项。
运动模仿模块 330 可以是配置成确定真实世界行动者诸如人行动者当前是否正 在模仿与虚拟特征相关联的预定义示例运动的硬件和 / 或软件的任何组合。如图 3 中所 示, 运动模仿模块 330 可以是存储配置成使处理器运行执行以上动作的一个或多个步骤的 指令的软件模块。
在一些实施例中, 运动模仿模块 330 可以从特征接合模块 310 和接触约束模块 320 中的一个或多个接收行动者姿势信息诸如行动者终端效应器位置信息、 虚拟特征标识符和 / 或接合指示符。 在一些实施例中, 运动模仿模块 330 可以从另一个硬件和 / 或软件模块或 其它硬件或计算机化装置接收上述任一项。
在一些实施例中, 运动模仿模块 330 可确定该行动者当前是否正在模仿与该行动 者当前正在接合的虚拟特征相关联的预定义示例运动集合中的任一个。例如, 在一些实施 例中, 该模块可循环通过与接合的虚拟特征相关联的每个示例运动, 并且对于每个, 循环通 过每个行动者终端效应器以确定那个行动者终端效应器的空间位置是否匹配 ( 或在可接 受误差容限内匹配 ) 由那个示例运动定义的对应虚拟终端效应器的空间位置。在一些实施 例中, 该模块可附加地比较那个行动者终端效应器的速度与由该示例运动定义的对应虚拟 终端效应器的速度。在一些实施例中, 模块可配置成仅考虑当前 “不受约束” 即当前不与另 一个物理质量或物体直接接触的行动者终端效应器。 例如, 在这种实施例中, 在地板上站直 且手放在一边的行动者可视为在脚上有受约束的终端效应器 ( 脚当前与地板接触 ), 但在 手上有不受约束的终端效应器 ( 手当前悬在空中, 仅受重力作用 )。在一些实施例中, 以上比较过程可在缩小或低维空间中执行, 以便简化必需的计 算。在一些实施例中, 运动模仿模块 330 可使用主成分分析 (PCA) 作为上述过程的一部分。
在一些实施例中, 该比较可在完整示例运动和行动者终端效应器集合上全面进 行。 换句话说, 可在给定示例运动的每个终端效应器比较上始终保持运行误差或总差异。 一 旦已经比较了当前在考虑的示例运动的所有终端效应器, 在一些实施例中, 运动模仿模块 330 就可将那个示例运动的总误差与预定阈相比较。 例如, 如果当前示例运动的总误差无法 超过预定阈, 则行动者的当前真实世界姿势和示例运动可视为充分类似于模仿模块 330, 结 论是行动者当前正在模仿与接合的虚拟特征相关联的示例运动。
在一些实施例中, 行动者终端效应器坐标集合与预定义虚拟终端效应器坐标集合 之间的以上比较可只包含两个终端效应器集合的子集的比较。 例如, 在一些实施例中, 该比 较可只在充分指示行动者的总体意图和 / 或一般姿势的核心或领头终端效应器的子集上 进行。
在一些实施例中, 一旦运动模仿模块 330 已经完成了以上比较, 它就可以向意图 识别模块 300 内的另一模块和 / 或外部硬件和 / 或软件模块发送包括如下至少一项的一 个或多个信号 : 接合指示符、 示例运动指示符或标识符、 模仿的示例运动定义 ( 如果适用的 话 ) 和 / 或行动者终端效应器坐标。 图 4 是例示根据实施例的用于计算与虚拟角色相关联的中间虚拟姿势的方法的 流程图。更具体地说, 图 4 例示了可由装置执行以基于与虚拟特征和当前真实世界行动者 姿势相关联的示例运动计算中间虚拟姿势的一系列步骤。当执行时, 这些步骤可计算对应 于与运动捕获系统所检测的当前真实世界行动者位置相关联的一系列终端效应器中每个 的虚拟空间中的位置 ( 即中间虚拟终端效应器 )。在一些实施例中, 每个步骤可由硬件和 / 或软件的任何组合诸如一个或多个计算机化装置执行。 为了下面的说明, 将论述这种装置。
如图 4 所示, 步骤 400 表示可对于行动者终端效应器集合中的每个执行步骤 410 至 430。 这样, 下面每个步骤 410-430 的论述将论述对于单个行动者终端效应器执行那个步 骤。然而, 应该理解, 在一些实施例中, 计算机化装置可对于来自与真实世界行动者相关联 的行动者终端效应器集合的每个行动者终端效应器至少执行一次步骤 410-430, 由此计算 完整的中间虚拟姿势。
在一些实施例中, 行动者终端效应器可以是定位在真实空间的一个或多个行动者 身体终端点或反射标记集合, 其中每个位置由一个或多个空间坐标表示。 例如, 在一些实施 例中, 每个行动者终端效应器的位置可由 x、 y 和 z 或 r、 θ 和 坐标集合表示。在一些实施 例中, 每个行动者终端效应器位置可由视频捕获装置和与其耦合的计算机化硬件和软件装 置确定。
在步骤 410, 计算机化装置可以确定行动者终端效应器是否受约束。 在一些实施例 中, 计算机化装置可从与上面结合图 2 论述的 I/O 和意图模块类似的 I/O 模块或意图模块 接收行动者终端效应器位置。在一些实施例中, 该装置可确定终端效应器的位置是否指示 它当前在与外部表面接触。例如, 在一些实施例中, 终端效应器可定位在行动者的脚上, 并 且计算机化装置可确定终端效应器当前在与表面诸如地板接触。
计算机化装置可接下来基于上面确定的行动者终端效应器的约束状态执行两个 指令之一。如果行动者终端效应器当前不受约束, 则该装置可将对应中间姿势终端效应器
的位置设置成当前行动者终端效应器的位置。 例如, 在一些实施例中, 如果行动者终端效应 器在步骤 410 被确定为不受约束, 并且具有由坐标 (x1, y1, z1) 定义的位置, 则装置可向 (x1, y1, z1) 分配中间虚拟姿势的对应终端效应器 (EE) 值。在那点, 装置可迭代和 / 或继续考虑 下一行动者终端效应器, 并返回上述步骤 410。备选地, 如果根据步骤 410 确定行动者终端 效应器当前受约束, 则装置可进行到步骤 420。
在步骤 420, 计算机化装置可以确定对应于行动者终端效应器的虚拟角色终端效 应器是否受约束。在一些实施例中, 该装置可比较对应于行动者终端效应器的虚拟角色终 端效应器的位置与一个或多个虚拟特征的位置以确定虚拟终端效应器是否定位得充分靠 近受约束的特征。如果该装置确定虚拟终端效应器受约束, 则它可进行到上述步骤 415, 并 基于当前行动者终端效应器和对应虚拟终端效应器继续处理。 如果该装置确定行动者终端 效应器当前未受约束, 则它可进行到下述步骤 430。
在步骤 430, 计算机化装置可计算对应于行动者终端效应器的中间虚拟终端效应 器的位置。 该计算例如可基于行动者终端效应器与对应虚拟角色终端效应器位置之间的插 值计算。 例如, 在一些实施例中, 插值计算可包括基于行动者和对应示例运动终端效应器的 位置的平均计算。这种插值可能是有利的, 因为它影响行动者真实世界运动与虚拟世界特 定示例运动之间的折衷。 在一些实施例中, 计算可包含一个或多个加权因子和 / 或受其影响。在一些实施 例中, 一个或多个加权因子可配置成保持所计算中间虚拟姿势和与接合的虚拟特征相关联 的示例姿势的相似性。在一些实施例中, 至少一个加权因子可配置成最小化所计算中间虚 拟姿势与虚拟角色的前一姿势之间的差异。在一些实施例中, 至少一个加权因子可配置成 保持和 / 或遵循行动者的运动。在计算中间虚拟终端效应器位置之后, 装置可迭代和 / 或 继续考虑下一行动者终端效应器, 如上所述。
在一些实施例中, 计算机化的装置可在至少部分行动者终端效应器集合的每个上 执行以上指令, 以便作为总体计算由各个虚拟终端效应器值构成的中间虚拟姿势。在一些 实施例中, 行动者终端效应器集合可以是与真实世界行动者相关联的所有可能行动者终端 效应器的子集。在一些实施例中, 行动者终端效应器集合可以由最小数量的终端效应器构 成, 诸如 5 个。在这种实施例中, 最小数量的行动者终端效应器可位于行动者身体的核心部 位上, 以便最大化它们的运动代表作为整体的行动者的程度。
图 5 是例示根据实施例的用于确定新虚拟角色质心 (COM) 的方法的流程图。更具 体地说, 图 5 例示了可由装置执行以至少部分基于所计算的中间虚拟姿势、 真实世界行动 者终端效应器位置和接触类型集合以及与一个或多个受约束的虚拟角色终端效应器相关 联的一个或多个表面类型计算新虚拟角色 COM 的一系列步骤。在一些实施例中, 计算机化 装置或模块可从例如使用类似于上面结合图 4 论述的方法计算中间虚拟姿势的硬件和 / 或 软件模块接收以上信息。在一些实施例中, 图 5 描述的过程的每个步骤可由硬件和 / 或软 件的任何组合诸如一个或多个计算机化装置执行。为了下面的说明, 将论述这种装置。
为了图 5 的以下论述, 现在定义可能的虚拟角色模拟方法。在一些实施例中, 计算 机化装置可定义虚拟角色以使用弹簧模型模拟真实世界行动者的身体和运动。例如, 在一 些实施例中, 虚拟角色可由质心点和各近似人四肢的四个阻尼 “弹簧” 定义。在一些实施例
中, 质心点可以是在虚拟空间中由一个或多个坐标诸如以 (x, y, z)、12等形式的空间102341767 A CN 102341781说明书10/12 页坐标定义的点。质心点可视为单独 “附到” 四个阻尼 “弹簧” 中的每个, 并且可简单地称为 “质心” 或 “COM” 。在一些实施例中, 以上特征定义的虚拟角色可相对重力由虚拟角色的每 个虚拟终端效应器施加的弹力之和、 操作在虚拟角色的受约束终端效应器上的摩擦力之和 以及操作在虚拟 COM 上的模拟重力支撑。
在步骤 500, 计算机化装置可计算每一个虚拟角色的终端效应器施加的弹力。 更具 体地说, 该装置可至少部分基于虚拟世界中那个终端效应器的 COM 与空间位置之间的相对 距离计算由每个虚拟终端效应器施加的弹力。 例如, 在一些实施例中, 该装置可通过计算当 前虚拟 COM 与那个终端效应器之间的距离与当前真实世界行动者 COM 与对应真实世界终端 效应器之间的距离之间的差来计算给定虚拟终端效应器在当前时间施加的弹力。 这个差可 指示虚拟角色的模拟四肢必须相对于虚拟 COM 运动的虚拟空间的量, 以恰当模拟真实世界 行动者终端效应器的运动。在一些实施例中, 这个弹力计算还可至少部分基于一个或多个 预定义弹簧系数。在一些实施例中, 弹力计算可包括配置成补偿虚拟角色的每个受约束终 端效应器上模拟重力的影响的重力因子。在一些实施例中, 重力因子可配置成将重力平均 分布在虚拟角色的所有终端效应器上。
在步骤 510, 该装置可计算作用在每个受约束的虚拟终端效应器上的摩擦力。 更具 体地说, 该装置可计算施加在当前与外部虚拟特征或表面接触的每个虚拟终端效应器上的 摩擦力。例如, 在一些实施例中, 该装置可循环通过每个虚拟终端效应器, 并例如通过比较 那个终端效应器的位置与虚拟世界的一个或多个虚拟特征的空间坐标来确定那个终端效 应器是否受约束。如果给定终端效应器受约束, 则该装置可计算当前虚拟 COM 与当前行动 者真实世界 COM 之间的距离以确定将虚拟 COM“运动” 到匹配真实世界 COM 的位置所必需 的必要运动 ( 或 “移位” ) 的幅度和 / 或方向。在一些实施例中, 该装置可使用这个距离连 同虚拟终端效应器类型和 / 或虚拟特征表面类型来计算那个虚拟终端效应器当前所经受 的摩擦力。如前面提到的, 可对于每个虚拟终端效应器执行以上步骤以便计算每个受约束 的虚拟终端效应器的摩擦力。
在步骤 520, 该装置可计算当前施加在虚拟 COM 上的重力 mg。更具体地说, 该装置 可将预定质量值 m 乘以与当前虚拟世界相关联的预定义重力常数 g。例如, 在一些实施例 2 中, 重力常数 g 可被给定值 9.8m/s 以模拟地球上的物体所经受的重力。
在步骤 530, 该装置可组合上述步骤 500、 510 和 520 的结果以计算新虚拟 COM。更 具体地说, 在一些实施例中, 该装置可将虚拟终端效应器施加的所有弹力之和、 施加在受约 束的虚拟终端效应器上的所有摩擦力之和以及所述重力加起来, 以确定虚拟 COM 的新空间 位置。
图 6 是例示根据实施例的用于计算避免穿透几何形状的最终姿势的方法的流程 图。更具体地说, 图 6 例示了可由装置执行以至少部分基于中间虚拟姿势、 交互接触点集合 以及新虚拟 COM 来计算最终虚拟姿势的一系列步骤。计算虚拟姿势以便确保没有虚拟终端 效应器点穿透任何虚拟特征的任何几何形状。在一些实施例中, 每个步骤可由硬件和 / 或 软件的任何组合诸如一个或多个计算机化装置执行。为了下面的说明, 将论述这种装置。
为了图 6 的以下论述, 现在定义可能的虚拟角色模拟方法。在一些实施例中, 计算 机化装置可定义虚拟角色以使用与上面结合图 5 描述的模型类似的质心和弹簧模型模拟 真实世界行动者的身体和运动。在这种实施例中, 虚拟角色姿势可由对应于与真实世界行动者相关联的终端效应器集合和空间质心点的虚拟质心点和虚拟终端效应器集合定义。
在步骤 600, 计算机化装置可组合中间虚拟姿势与下一虚拟质心 (COM) 以计算虚 拟角色的新虚拟姿势。在一些实施例中, 该装置可接收定义中间虚拟姿势的虚拟终端效应 器位置集合, 或已将其存储在存储器中。 在一些实施例中, 中间虚拟姿势可至少部分基于类 似于上面结合图 4 描述的中间虚拟姿势计算方法的过程定义。在一些实施例中, 下一虚拟 COM 可以是在虚拟空间中由一个或多个坐标诸如以 (x, y, z)、 等形式的空间坐标定 义的点。在一些实施例中, 该装置可接收例如通过类似于上面结合图 5 描述的虚拟 COM 计 算方法的方法确定的下一虚拟 COM, 或将其已经存储在存储器中。 例如, 在一些实施例中, 该 装置可利用标准逆向运动学方法, 并将它与优化过程耦合以基于下一虚拟 COM 和中间虚拟 姿势计算新虚拟姿势。在一些实施例中, 新虚拟姿势可至少部分由新虚拟终端效应器位置 集合和新虚拟 COM 定义。在一些实施例中, 该计算可受与虚拟角色相关联的交互接触点集 合限制、 约束或者别样影响。
在步骤 610, 该装置可检查新虚拟姿势的任何穿透几何形状和 / 或碰撞。 更具体地 说, 在一些实施例中, 该装置可确保由新姿势所定义的虚拟终端效应器的位置穿过再现角 色的虚拟世界的虚拟特征的表面或外部。 例如, 在一些实施例中, 该装置可循环通过由新虚 拟姿势定义的每个终端效应器的每个虚拟终端效应器位置, 并比较那个位置与一个或多个 虚拟特征的接触约束集合。 借助这些比较, 该装置可确定是否发生一个或多个 “碰撞” , 即是 否任何虚拟角色接触点当前定义成使得它 “穿过” 虚拟特征诸如固体物体的表面。
如果在步骤 610 检测到一个或多个碰撞, 则在步骤 620 装置可包含每个碰撞 / 穿 透点的一个或多个不等约束, 并重新计算新姿势。更具体地说, 在一些实施例中, 该装置可 接收当前虚拟世界中的每个虚拟特征的不等约束集合, 或已将其存储在存储器中。在一些 实施例中, 该装置可循环通过在上面步骤 610 中检测到的每个碰撞, 并将与碰撞点相关联 的不等约束插入到上面结合步骤 600 论述的新姿势计算中。通过这样做, 该装置可修改初 始计算的新姿势, 以确保它符合虚拟世界的限制和限度, 特别是相对于该世界的虚拟特征。
如果在步骤 610 未检测到碰撞, 或者一旦在步骤 620 已经重新计算新姿势, 则在 步骤 630 该装置可向输出装置发送新的和现在最终的姿势以便显示。更具体地说, 在一些 实施例中, 该装置可向输出装置发送最终姿势的新虚拟质心和虚拟终端效应器位置以便显 示。例如, 在完成以上步骤后, 该装置可向屏幕发送最终姿势信息以便显示给用户, 诸如视 频游戏机用户。在一些实施例中, 该装置可向配置成接收最终姿势信息并对其执行进一步 处理的一个或多个硬件和 / 或软件模块发送最终姿势信息。例如, 该装置可向与视频游戏 相关联的能够使用最终姿势信息再现交互视频游戏诸如运动游戏或冒险游戏内的虚拟角 色的软件模块发送最终姿势信息。 在这个说明书中所用的单数形式 “一个” 和 “该” 包括多个所指对象, 除非上下文 另外明确规定。由此, 例如, 术语 “模块” 意图是指单个模块或模块组合。
虽然上面已经描述了各种实施例, 但应该理解, 仅通过示例而非限制来呈现它们。 虽然上述方法指示某些事件按某种顺序发生, 但是某些事件的顺序可以修改。 另外, 某些事 件可以当可能时在并行过程中同时执行, 以及如上所述顺序执行。
这里描述的一些实施例涉及具有其上包含用于执行各种计算机实现的操作的指 令或计算机代码的计算机或处理器可读介质 ( 也可称为处理器可读介质 ) 的计算机存储产
品。介质和计算机代码 ( 也可称为代码 ) 可以是为具体目的设计和构造的。计算机可读介 质的例子包括但不限于 : 磁存储介质, 诸如硬盘、 软盘和磁带 ; 光存储介质, 诸如光盘 / 数字 视频盘 (CD/DVD)、 光盘只读存储器 (CD-ROM) 和全息装置 ; 磁光存储介质, 诸如光盘 ; 载波信 号处理模块 ; 以及特别配置成存储和执行程序代码的硬件装置, 诸如通用微处理器、 微控制 器、 专用集成电路 (ASIC)、 可编程逻辑器件 (PLD) 和只读存储器 (ROM) 和随机存取存储器 (RAM) 装置。
计算机代码的例子包括但不限于微代码或微指令、 诸如由编译器产生的机器指 令、 用于产生万维网服务的代码以及含有计算机使用翻译器执行的更高级指令的文件。例 如, 实施例可使用 Java、 C++ 或其它编程语言 ( 例如面向对象的编程语言 ) 和开发工具实 现。计算机代码的附加示例包括但不限于控制信号、 加密代码和压缩代码。
虽然各种实施例已被描述为具有特定特征和 / 或组件组合, 但是在适当情况下具 有来自任何实施例的任何特征和 / 或组件的组合的其它实施例也是可行的。