具体实施方式
如本文中将描述的,用户可通过执行一个或多个姿势和/或移动来控制在诸如游戏控制台、计算机等计算环境上执行的应用和/或动画化化身或屏幕上人物。根据一个实施例,姿势和/或移动可由例如捕捉设备来检测。例如,捕捉设备可捕捉场景的深度图像并且将图像发送到计算环境。可生成模型,该模型可被用来在应用中动画化化身。
图1和2示出了其中可实现本发明的示例计算环境。本领域的技术人员可以理解,计算环境可具有参照图1的多媒体控制台100和图2的计算机系统200描述的组件中的一部分或全部。
贯穿本公开使用的术语电路可包括诸如专用集成电路、硬件中断控制器、硬盘驱动器、网络适配器、图形处理器、基于硬件的视频/音频编解码器等硬件组件,以及用于操作这些硬件的固件/软件。术语电路还可包括被配置成通过固件或通过开关集来以特定方式执行功能的微处理器,或一个或多个逻辑处理器,例如,多核通用处理单元的一个或多个核。此示例中的逻辑处理器可以通过从存储器,例如,RAM、ROM、固件等中加载的体现可操作以执行功能的逻辑的软件指令来配置。在其中电路包括硬件和软件的组合的示例实施例中,实现者可以编写具体化逻辑的源代码,该源代码随后被编译成可由逻辑处理器执行的机器可读代码。因为本领域技术人员可以明白现有技术已经进化到硬件、软件或硬件/软件的组合之间几乎没有差别的地步,因而选择硬件还是软件来实现功能只是一个设计选择。因此,由于本领域的技术人员可以理解软件进程可被变换成等效的硬件结构,且硬件结构本身可被变换成等效的软件进程,因此选择硬件实现或是软件实现对本发明是无关紧要的且留给了实现者。
图1示出了计算环境的示例实施例,其可被用来动画化图4的目标识别、分析和跟踪系统所显示的屏幕上人物或化身。如此计算环境可以是诸如游戏控制台之类的多媒体控制台100。如图1所示,多媒体控制台100具有可含有1级高速缓存102、2级高速缓存104,和闪存ROM(只读存储器)106的逻辑处理器101。1级高速缓存102和2级高速缓存104临时存储数据,并因此减少存储器访问周期数,由此改进处理速度和吞吐量。逻辑处理器101可以设置成具有一个以上的内核,以及由此的附加的1级和2级高速缓存102和104。闪存ROM 106可存储在多媒体控制台100通电时引导过程的初始阶段期间加载的可执行代码。
图形处理单元(GPU)108和视频编码器/视频编解码器(编码器/解码器)114形成用于高速和高分辨率图形处理的视频处理流水线。经由总线从图形处理单元108向视频编码器/视频编解码器114运送数据。视频处理流水线向A/V(音频/视频)端口140输出数据,用于传输至电视或其他显示器。存储器控制器110连接到GPU 108以方便处理器访问各种类型的存储器112,诸如但不局限于RAM(随机存取存储器)。
多媒体控制台100包括较佳地在模块118上实现的I/O控制器120、系统管理控制器122、音频处理单元123、网络接口控制器124、第一USB主控制器126、第二USB控制器128和前面板I/O子部件130。USB控制器126和128用作外围控制器142(1)-142(2)、无线适配器148、和外置存储器设备146(例如闪存、外置CD/DVD ROM驱动器、可移动介质等)的主机。网络接口124和/或无线适配器148提供对网络(例如,因特网、家庭网络等)的访问,并且可以是包括以太网卡、调制解调器、蓝牙模块、电缆调制解调器等的各种不同的有线或无线适配器组件中任何一种。
提供系统存储器143来存储在引导过程期间加载的应用数据。提供介质驱动器144,且其可包括DVD/CD驱动器、硬盘驱动器、或其他可移动介质驱动器等。介质驱动器144可以是对多媒体控制器100内置的或外置的。应用数据可经由介质驱动器144访问,以由多媒体控制台100执行、回放等。介质驱动器144经由诸如串行ATA总线或其他高速连接(例如IEEE 1394)等总线连接到I/O控制器120。
系统管理控制器122提供涉及确保多媒体控制台100的可用性的各种服务功能。音频处理单元123和音频编解码器132形成具有高保真度和立体声处理的对应的音频处理流水线。音频数据经由通信链路在音频处理单元123与音频编解码器132之间传输。音频处理流水线将数据输出到A/V端口140以供外置音频播放器或具有音频能力的设备再现。
前面板I/O子部件130支持暴露在多媒体控制台100的外表面上的电源按钮150和弹出按钮152以及任何LED(发光二极管)或其他指示器的功能。系统供电模块136向多媒体控制台100的组件供电。风扇138冷却多媒体控制台100内的电路。
逻辑处理器101、GPU108、存储器控制器110、和多媒体控制台100内的各种其他组件经由一条或多条总线互连,总线包括串行和并行总线、存储器总线、外围总线、和使用各种总线架构中任一种的处理器或局部总线。作为示例,这些架构可以包括外围部件互连(PCI)总线、PCI-Express总线等。
当多媒体控制台100通电时,应用数据可从系统存储器143加载到存储器112和/或高速缓存102、104中并在逻辑处理器101上执行。应用可呈现在导航到多媒体控制台100上可用的不同媒体类型时提供一致的用户体验的图形用户界面。在操作中,介质驱动器144中包含的应用和/或其他介质可从介质驱动器144启动或播放,以向多媒体控制台100提供附加功能。
多媒体控制台100可通过将该系统简单地连接到电视机或其他显示器而作为独立系统来操作。在该独立模式中,多媒体控制台100允许一个或多个用户与该系统交互、看电影、或听音乐。然而,随着通过网络接口124或无线适配器148可用的宽带连接的集成,多媒体控制台100还可作为更大网络社区中的参与者来操作。
当多媒体控制台100通电时,可以保留设定量的硬件资源以供多媒体控制台操作系统作系统使用。这些资源可包括存储器的保留量(诸如,16MB)、CPU和GPU周期的保留量(诸如,5%)、网络带宽的保留量(诸如,8kbs),等等。因为这些资源是在系统引导时间保留的,所保留的资源对于应用视角而言是不存在的。
具体而言,存储器保留优选地足够大,以包含启动内核、并发系统应用和驱动程序。CPU保留优选地为恒定,使得若所保留的CPU用量不被系统应用使用,则空闲线程将消耗任何未使用的周期。
对于GPU保留,通过使用GPU中断来调度代码来将弹出窗口呈现为覆盖图以显示由系统应用生成的轻量消息(例如,弹出窗口)。覆盖图所需的存储器量取决于覆盖区域大小,并且覆盖图优选地与屏幕分辨率成比例缩放。在并发系统应用使用完整用户界面的情况下,优选使用独立于应用分辨率的分辨率。定标器可用于设置该分辨率,从而无需改变频率并引起TV重新同步。
在多媒体控制台100引导且系统资源被保留之后,就执行并发系统应用来提供系统功能。系统功能被封装在上述所保留的系统资源中执行的一组系统应用中。操作系统内核标识是系统应用线程而非游戏应用线程的线程。系统应用优选地被调度为在预定时间并以预定时间间隔在逻辑处理器101上运行,以便为应用提供一致的系统资源视图。进行调度是为了把由在控制台上运行的游戏应用所引起的高速缓存分裂最小化。
当并发系统应用需要音频时,则由于时间敏感性而将音频处理异步地调度给游戏应用。多媒体控制台应用管理器(如下所述)在系统应用活动时控制游戏应用的音频水平(例如,静音、衰减)。
输入设备(例如,控制器142(1)和142(2))由游戏应用和系统应用共享。输入设备不是保留资源,而是在系统应用和游戏应用之间切换以使其各自具有设备的焦点。应用管理器较佳地控制输入流的切换,而无需知晓游戏应用的知识,并且驱动程序维护有关焦点切换的状态信息。相机26、28和捕捉设备306可为控制台100定义额外的输入设备。
现在参考图2,描绘了示例性计算系统200。计算机系统200可包括逻辑处理器202,如执行核。尽管示出了一个逻辑处理器202,但在其他实施例中,计算机系统200可具有多个逻辑处理器,例如每一处理器基板有多个执行核,和/或各自可具有多个执行核的多个处理器基板。如图所示,各种计算机可读存储介质210可由一系统总线互联,系统总线将各种系统组件耦合到逻辑处理器202。系统总线可以是几种类型的总线结构中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用各种总线体系结构中的任一种的局部总线。在示例实施例中,计算机可读存储介质210可以包括例如随机存取存储器(RAM)204、存储设备206(例如电机硬盘驱动器、固态硬盘驱动器等)、固件208(例如闪速RAM或ROM)、以及可移动存储设备218(例如CD-ROM、软盘、DVD、闪速驱动器、外部存储设备等)。本领域的技术人员应当理解,可使用其他类型的计算机可读存储介质,如磁带盒、闪存卡、数字视频盘、柏努利盒式磁带等,来存储数据。
计算机可读存储介质提供对计算机可读指令、数据结构、程序模块、和计算机200的其它数据的存储。基本输入/输出系统(BIOS)220可被存储在固件208中,它包含帮助在诸如启动期间在计算机系统200内的各元件之间传递信息的基本例程。若干个应用和操作系统222可被存储在固件208、存储设备206、RAM 204,和/或可移动存储设备218上,并且可由逻辑处理器202来执行。
可由计算机200通过输入设备216接收命令和信息,其可包括但不限于,键盘和定点设备、操纵杆,和/或图5的捕捉设备306。其他输入设备可包括麦克风、扫描仪,等。这些和其他输入设备常通过耦合到系统总线的串行端口接口连接到逻辑处理器202,但也可通过其他接口连接,如并行端口、游戏端口或通用串行总线(USB)。显示器或其他类型的显示设备也可经由诸如视频适配器等可以是图形处理器212的一部分或可连接到图形处理器112的接口来连接到系统总线。除了显示器之外,计算机通常包括其他外围输出设备(未示出),如扬声器和打印机。图1的示例性系统还可包括主适配器、小型计算机系统接口(SCSI)总线和连接到SCSI总线的外部存储设备。
计算机系统200可使用至一个或多个远程计算机,如远程计算机,的逻辑连接在网络化环境中操作。远程计算机可以是另一计算机、服务器、路由器、网络PC、对等设备或其他常见的网络节点,并且通常可包括上面关于计算机系统200所述的许多或全部元件。
当在LAN或WAN联网环境中使用时,计算机系统100可通过网络接口卡214(NIC)连接至LAN或WAN。NIC 214(可以是内部或外部的)可以连接到系统总线。在联网环境中,相对于计算机系统100所描述的程序模块或其部分可被储存在远程存储器存储设备中。可以理解,所描述的网络连接是示例性的,且可以使用在计算机之间建立通信链路的其他手段。此外,虽然构想本公开的许多实施例尤其适用于计算机化的系统,然而在本文中没有任何表述旨在将本公开限于那些实施例。
图3和4示出伴随用户302玩拳击游戏的目标识别、分析和跟踪系统300的配置的示例实施例。在一示例实施例中,目标识别、分析和跟踪系统300可用于识别、分析和/或跟踪诸如用户302等的人类目标。
如图3所示,目标识别、分析及跟踪系统300可包括计算环境304。计算环境304可以是计算机、游戏系统或控制台等,包括类似图1和2中描述的那些组件。
如图3所示,目标识别、分析及跟踪系统300还可包括捕捉设备306。捕捉设备306可以是例如照相机,所述照相机可用于在视觉上监视诸如用户302等的一个或多个用户从而可以捕捉、分析并跟踪一个或多个用户所执行的姿势和/或移动,来执行应用中的一个或多个控制命令或动作和/或动画化化身或屏幕上人物,如将在下面更详细地描述的。
根据一个实施例,目标识别、分析及跟踪系统300可连接到可向诸如用户302等用户提供游戏或应用视觉和/或音频的视听设备320,如电视机、监视器、高清电视机(HDTV)等。例如,计算环境304可包括诸如图形卡等视频适配器和/或诸如声卡等音频适配器,这些适配器可提供与游戏应用、非游戏应用等相关联的视听信号。视听设备320可从计算环境304接收视听信号,然后可向用户302输出与该视听信号相关联的游戏或应用视觉和/或音频。根据一个实施例,视听设备320可经由例如,S-视频电缆、同轴电缆、HDMI电缆、DVI电缆、VGA电缆等连接到计算环境304。
如图3和4所示,在一示例实施例中,在计算环境304上执行的应用可以是用户302可能正在玩的拳击游戏。例如,计算环境304可使用视听设备320来向用户302提供拳击对手338的视觉表示。计算环境304还可使用视听设备320来提供用户302可通过他的或她的移动来控制的玩家化身324的视觉表示。例如,如图3所示,用户302可在物理空间中挥拳来使得玩家化身324在游戏空间中挥拳。因此,根据一示例实施例,目标识别、分析和跟踪系统300的计算环境304和捕捉设备306可用于识别和分析物理空间中用户302的重拳从而使得该重拳可被解释为对游戏空间中的玩家化身324的游戏控制和/或该重拳的运动可用于动画化游戏空间中的玩家化身324。
用户302的其他移动也可被解释为其他控制命令或动作,和/或用于动画化玩家化身324,如上下快速摆动、闪避、滑步、封堵、用拳猛击或挥动各种不同的有力重拳的控制命令。此外,某些移动可被解释为可对应于除控制玩家化身324之外的动作的控制。例如,玩家可以使用移动来结束、暂停或保存游戏、选择级别、查看高分、与朋友交流等。另外,用户302的全范围运动可以用任何合适的方式来获得、使用并分析以与应用进行交互。
在示例实施例中,诸如用户302的人类目标控制化身324以与应用中的对象进行交互。例如,用户302可伸手拿游戏中的对象以使用该对象。在此示例中,目标识别、分析和跟踪系统300可被配置来允许化身324拿起该对象并在游戏中使用该对象。在特定示例中,用户的化身324可拿起并握住电子运动游戏中使用的球拍。
根据其他示例实施例,目标识别、分析及跟踪系统300还可用于将目标移动解释为游戏领域之外的操作系统和/或应用控制。例如,事实上操作系统和/或应用的任何可控方面可由诸如用户302等目标的移动来控制。
图5示出可在目标识别、分析及跟踪系统300中使用的捕捉设备306的示例实施例。根据一示例实施例,捕捉设备306可被配置成经由任何合适的技术,包括例如飞行时间、结构化光、立体图像等来捕捉包括深度图像的带有深度信息的视频,该深度信息可包括深度值。根据一实施例,捕捉设备306可将深度信息组织为“Z层”或者可与从深度相机沿其视线延伸的Z轴垂直的层。
如图5所示,捕捉设备306可包括图像相机组件502。根据一个示例实施例,图像相机组件502可以是可捕捉场景的深度图像的深度相机。深度图像可包括所捕捉的场景的二维(2-D)像素区域,其中2-D像素区域中的每一像素可表示深度值,诸如例如以厘米、毫米等计的、所捕捉的场景中的对象距相机的长度或距离。
如图5所示,根据一示例实施例,图像相机组件502可包括可用于捕捉场景的深度图像的IR光组件524、三维(3-D)相机526、和RGB相机528。例如,在飞行时间分析中,捕捉设备306的IR光组件524可以将红外光发射到场景上,然后,可以使用传感器(未示出),用例如3-D相机526和/或RGB相机528,来检测从场景中的一个或多个目标和物体的表面反向散射的光。在某些实施例中,可以使用脉冲红外光,使得可以测量出射光脉冲和相应的入射光脉冲之间的时间差并将其用于确定从捕捉设备306到场景中的目标或物体上的特定位置的物理距离。附加地,在其他示例实施例中,可将出射光波的相位与入射光波的相位进行比较来确定相移。然后可以使用该相移来确定从捕捉设备到目标或物体上的特定位置的物理距离。
根据另一示例实施例,可使用飞行时间分析,通过经由包括例如快门式光脉冲成像在内的各种技术来分析反射光束随时间的强度变化以间接地确定从捕捉设备306到目标或物体上的特定位置的物理距离。
在另一示例实施例中,捕捉设备306可使用结构化光来捕捉深度信息。在这一分析中,图案化光(即,被显示为诸如网格图案或条纹图案等已知图案的光)可经由例如IR光组件524被投影到场景上。在落到场景中的一个或多个目标或物体的表面上时,作为响应,图案可变形。图案的这种变形可由例如3-D相机526和/或RGB相机528来捕捉,然后可被分析来确定从捕捉设备到目标或物体上的特定位置的物理距离。
根据另一实施例,捕捉设备306可包括两个或更多个物理上分开的相机,这些相机可从不同角度查看场景以获得视觉立体数据,该视觉立体数据可被解析以生成深度信息。
捕捉设备306还可包括话筒530。话筒530可包括可接收声音并将其转换成电信号的换能器或传感器。根据一个实施例,话筒530可以被用来减少目标识别、分析及跟踪系统300中的捕捉设备306和计算环境304之间的反馈。另外,话筒530可用于接收也可由用户提供的音频信号,以控制可由计算环境304执行的诸如游戏应用、非游戏应用等应用。
在示例实施例中,捕捉设备306还可以包括可与图像相机组件502进行可操作的通信的逻辑处理器532。捕捉设备306还可以包括存储器组件534,该存储器组件534可以存储可以由处理器532执行的指令、由3-D相机或RGB相机捕捉到的图像或图像的帧、或任何其他合适的信息、图像等等。根据一个示例实施例,存储器组件534可包括随机存取存储器(RAM)、只读存储器(ROM)、高速缓存、闪存、硬盘或任何其他合适的存储组件。如图5所示,在一个实施例中,存储器组件534可以是与图像捕捉组件520和逻辑处理器532进行通信的单独的组件。根据另一实施例,存储器组件534可被集成到处理器532和/或图像捕捉组件520中。
捕捉设备306可被配置来获取由例如,捕捉设备306的3-D相机426和/或RGB相机528捕捉到的场景的图像或帧。在示例实施例中,深度图像可包括所捕捉的场景中的人类目标和一个或多个非人类目标,诸如墙壁、桌子、监视器等。深度图像可包括多个观测到的像素,其中每一观测到的像素具有与其相关联的观测到的深度值。例如,深度图像可包括所捕捉的场景的二维(2-D)像素区域,其中2-D像素区域中的每一像素可表示深度值,诸如例如以厘米、毫米等计的、所捕捉的场景中的对象或目标距捕捉设备的长度或距离。在一示例实施例中,深度图像可被着色从而使得深度图像的像素的不同颜色对应于人类目标和非人类目标离捕捉设备的不同距离。例如,根据一个实施例,深度图像中与最接近捕捉设备的目标相关联的像素可用红色和/或橙色阴影来着色,而深度图像中与较远的目标相关联的像素可用绿色和/或蓝色阴影来着色。
另外,如上所述,捕捉设备可将包括深度图像的所计算的深度信息组织成“Z层”,即可垂直于从相机沿着其视线延伸到观察者的Z轴的层。可基于所确定的边缘来对Z层的可能Z值进行泛色填充。例如,与所确定的边相关联的像素以及该所确定的边内的区域的像素可互相关联来定义可与模式进行比较的场景中的目标或对象。如以下所描述,图像可接着被用来生成用户的骨架模型。
继续图5的一般描述,捕捉设备306可以经由通信链路536与计算环境304通信。通信链路536可以是包括例如USB连接、火线连接、以太网电缆连接等的有线连接和/或诸如无线802.11b、802.11g、802.11a或802.11n连接等的无线连接。根据一个实施例,计算环境304可以经由通信链路536向捕捉设备306提供时钟,可以使用该时钟来确定何时捕捉例如场景。
另外,捕捉设备306可经由通信链路536向计算环境304提供深度信息和由例如3-D相机526和/或RGB相机528捕捉的图像,和/或可由捕捉设备306生成的骨架模型。计算环境304然后可使用该模型、深度信息、以及所捕捉的图像来例如控制诸如游戏或文字处理程序等的应用和/或动画化化身或屏幕上人物。
例如,如图5所述,计算环境304可包括应用560、模型库570、映射系统580,和/或反向运动学系统509。通常,元件560-590的每一个可通过电路实现,并且为了解释方便将元件560-590表示为分立元件,在其他实施例中,结合元件560-590描述的功能的一些或全部可由相同或不同电路执行。
通常,应用560可以是视频游戏或任何其他包含化身的应用。在一实施例中,计算环境304可包括可存储不同化身的模型库570。可在应用中动画化化身以匹配由目标识别、分析和跟踪系统300捕捉的用户运动。特定示例可包括,包括怪物人物模型和该怪物的一系列默认姿态的模型库570。怪物人物模型可被用来定义在此特定应用中怪物看起来如何。化身可被用来生成具有特定姿态的怪物的游戏内副本。在一个示例实施例中,模型库570可与应用560相关联,然而在其他实施例中模型库570可从应用560分离而仅被应用560使用。
继续图5的描述,映射系统580可被配置来将反映用户空间中的用户位置的用户模型映射到从模型库570获得的化身模型。例如,在下文中更详细地描述,用户模型可被生成为包括节点。用户模型中的每个节点可与用户的一部分相关联,例如,一些节点可以是关节节点,如,代表两个或更多骨骼交互的位置的节点,或诸如手的附属肢体。节点可以由互连相连接,例如,骨骼,并且可以建立定义类似树的父子系统的分级关系。父节点本身可以是子并且可以连接到其他节点。在特定示例中,手腕可以是肘之子,而肘可以是肩之子。该递归关系可以继续到一个或多个根节点,其可被用作基准框架,用于从用户模型到化身模型映射节点。通常,模型可包括末端效应物,其为层级结构内的任何节点,动画设计者想要直接安置这些节点来,例如,与环境交互。例如,手、脚,和头是典型的末端效应物。然而,动画设计者可能希望依据应用在特定情况中操作肩、膝或胸甲。
如前实施例中所述,化身模型700可具有至少一个根节点,并且可以使用化身的根节点以及用户模型600的对应的一个(或多个)根节点建立关系。可以从用户模型节点的位置计算出化身节点的位置。例如,可获取末端效应物的父节点和祖父节点的位置信息,并且可在对应的父节点和祖父节点之间建立关系。
除了映射系统580,图5示出了反向运动学系统590。通常,反向运动学被用来基于分级结构中给定节点的位置来确定节点的一组位置。例如,由于用户模型是从较少标记系统生成的,一些节点角度可能没有被接收,或者化身可能具有远多于用户模型的节点。因此,在示例实施例中,反向运动学系统590可被使用。反向运动学系统590可从映射系统580接收末端效应物位置,并且可生成至少模拟了末端效应物的位置的化身模型的姿态。在一些实施例中,除末端效应物以外的位置可被用来模拟用户模型的姿态。反向运动学系统590的输出可被馈送到应用560,在那里可使用标准动画来混合或修改它。
在示例实施例中,反向运动学系统590可接收一组希望的末端效应物位置/定向目标作为输入。从该组,反向运动学系统590可提供允许这些目标相遇的一组节点角度。反向运动学问题与正向运动学问题紧密相关,其可由以下等式简单描述:
x=f(θ) (1)
在此等式中,末端效应物位置的矢量x可以通过某个(通常复杂且几乎总是非线性)函数f与全部的关节角度的矢量θ相关。因此,反向运动学等式可由以下描述:
θ=f-1(x) (2)
从这一点,其中有许多方法来求解该系统。在示例实施例中,可用基于雅可比行列式的线性化技术来求解等式2,然而本发明不限于求解IK等式的任何特定方式。
通常,雅可比行列式IK包含关于当前感兴趣姿态的问题的线性化。为此,可构建一雅可比矩阵作为全部末端效应物维度相对于全部关节角度的导数的矩阵。
如果用户模型是非冗余人物骨架(末端效应物维度等于关节角度维度,在线性代数术语中,我们具有相同数量的等式作为未知),那么反向运动学系统590可被配置来使用标准矩阵求逆来求解IK问题:
然而,在一些示例实施例中,标准矩阵求逆不可被使用是因为存在无穷多关节角度速度
对于给定末端效应物速度
其满足等式5。在这些情况中,代替标准矩阵可使用替换矩阵,以获得根据某性能准则的“最佳”解。在一实施例中,该准则为最少均方误差,并且可使用Moore-Penrose伪逆(用上标+来表示)来求解它。例如,可描述对于被破坏的系统的解,并且特解和齐次解两者之和,这可以被表示为:
这里,(1-J+(θ)J(θ))是零空间投影,且y是不对末端效应物的速度作出贡献但允许我们利用骨架中的任何冗余性的任意矢量。
在一实施例中,矢量
可被用来控制末端效应物位置且矢量y被用作驱动姿态以匹配源骨架关节角度(倘若它们不干扰末端效应物定位)。
图6示出了可由目标识别、分析和跟踪系统300生成的用户模型。例如,可配置目标识别、分析和跟踪系统300来从由捕捉设备306获取的深度图像生成模型600。在此示例中,目标识别、分析和跟踪系统300可以通过对深度图像中的每一个目标或对象进行泛色填充并将每一个经泛色填充的目标或对象与同处于各种位置或姿态的人类的身体模型相关联的图案进行比较,确定深度图像是否包括对应于例如诸如以上参考图3-4描述的用户302等用户的人类目标。然后可以隔离并扫描匹配图案的经泛色填充的目标或对象以确定包括例如对各身体部位的度量的各个值。根据一示例实施例,然后可基于该扫描来生成模型,诸如骨架模型、网格模型等。例如,根据一个实施例,可通过扫描来确定的度量值可被存储在可用于定义模型中的一个或多个关节的一个或多个数据结构中。可以使用一个或多个关节来定义可以对应于人类的身体部位的一个或多个骨骼。
继续图6的描述,模型600可包括可将例如人类目标表示为三维模型的一个或多个数据结构。每个身体部位可被表征为定义模型600的节点和互连的数学矢量。如图6所示,模型600可包括一个或多个节点,诸如关节j1-j18。根据一示例实施例,关节j1-j18中的每一个可使得在这些关节之间定义的一个或多个身体部位能相对于一个或多个其他身体部位移动。例如,表示人类目标的模型可包括多个刚性和/或可变形身体部位,这些身体部位由一个或多个诸如“骨骼”等结构件来定义,而关节j1-j18位于毗邻骨骼的交叉点处。关节j1-18可使得与骨骼和关节j1-j18相关联的各个身体部位能够彼此独立地移动。例如,如图6中所示的,在关节j7与j11之间定义的骨骼可对应于前臂,该前臂可独立于例如在关节j15与j17之间定义的骨骼(可对应于小腿)而移动。
如上所述,每一个身体部位都可被表征为具有定义图6所示的关节和骨骼的X值、Y值和Z值的数学矢量。在一示例实施例中,与图6所示的骨骼相关联的矢量的相交可定义与关节j1-j18相关联的相应点。
通常,目标识别、分析和跟踪系统300从用户捕捉移动,该移动可用于调节模型。例如,诸如以上描述的捕捉设备306等捕捉设备可以捕捉可用于调整模型的场景的多个图像,如深度图像、RGB图像等。根据一实施例,可基于所定义的频率来观察或捕捉每一图像。例如,捕捉设备可每毫秒、每微秒等观察或捕捉一次场景的新图像。在接收到每一图像后,可将与特定图像相关联的信息与和模型相关联的信息进行比较来确定用户是否已经执行了移动。例如,在一个实施例中,该模型可被光栅化成诸如合成深度图像等合成图像。合成图像中的像素可以与和每一接收到的图像中的人类目标相关联的像素进行比较来确定所接收的图像中的人类目标是否已移动。
根据一示例实施例,可以基于在合成图像和所接收的图像之间比较的像素来计算一个或多个力矢量。可向诸如该模型的关节等一个或多个受力方面施加或映射一个或多个力,来将该模型调整成更接近地对应于物理空间中的人类目标或用户姿态的姿态。例如,模型可以如上所述基于在各时间点接收到的深度图像中观测和捕捉到的在各个点处的用户移动或姿势来调节。在特定示例中,当用户抬起他或她的左臂时可捕捉图像。图像跟踪系统可应用一个或多个力矢量或调节该用户模型600来拟合用户的姿态。
图7示出了示例化身模型700,其可包括可将例如人类目标表示为三维模型的一个或多个数据结构。可由映射系统580通过将用户模型600的节点映射到化身模型700的节点上来生成化身模型700。在所描绘的实施例中,化身模型700可具有类似用户模型600的构架,然而,化身模型可具有与用户模型600略微不同的架构或节点分层结构。此外,化身模型700可具有比用户模型多的节点,或它可能比用户模型600更大或更小。在所描绘的示例中,化身模型更矮和更宽。与以上类似,每个身体部位可被表征为定义化身模型700的节点和互连的数学矢量。
可配置映射系统580来在应用560实时执行期间接收用户节点的位置,并将它们重新映射到化身节点。在一实施例中,化身模型700可具有根节点并且可在其与用户模块的根节点之间建立关系。例如,模型库570可包括定义在运行时要被使用的关系的信息。使用该关系,化身节点的位置可从用户节点的位置中计算出来。
图8A示出了用户模型600且图8B示出了可能已经从模型600中生成的化身模型700。例如,在图8A中,用户模型600可被生成为他或她左臂挥动。映射系统580可被用来调整用户模型600的大小以拟合,例如,图8B的更小的化身模型700。在一实施例中,例如,节点j12可以是末端效应物且其位置可被馈入反向运动学系统590。反向运动学系统590可确定j8的位置,使得化身模型摆出解剖学上可能的姿态并且仍然够得到末端效应物的位置。如图所述,在一些实施例中,由于化身700是不同大小的这一事实,化身700的姿态可能不匹配于用户模型600的姿态。例如,化身700的手臂可能比用户模型600的手臂更直以够到位置。
图9示出了可能从化身模型700动画化得到的化身或游戏人物900的一示例实施例。如图9所示,可对化身或游戏人物700动画化来模拟对以上所描述的所跟踪的模型600捕捉的挥手运动。例如,图8A和8B中所示模型600的关节j8和j12以及它们之间定义的骨骼可被映射到左肘关节j8′和左手腕关节j12′。化身或游戏人物900可接着被动画化为姿态902。
以下是描绘过程实现的一系列流程图。为便于理解,流程图被组织成使得初始流程图通过总体“大图”视点来演示各实现,并且后续的流程图提供进一步的附加物和/或细节。此外,本领域的技术人员可以理解,虚线所描绘的操作流程被认为是任选的。
图10它示出了用于实施本发明的各方面的操作过程,包括操作1000、1002,和1004。如图所示,操作1000启动操作过程,并且操作1002示出在应用实时执行期间接收化身末端效应物的位置,化身末端效应物被设置到使用用户末端效应物计算所得的位置,用户末端效应物的位置先前从用户的图像生成。例如,转向图5,在本发明的一实施例中,从用户的图像生成的数据,例如,用户模型600,可被用来在诸如视频游戏的应用560执行期间,生成化身末端效应物的位置。例如,计算环境304可包括映射系统580,其可被用来例如,将根节点用作基准点,将节点从用户模型600映射到化身模型700。数据结构中的每个节点可具有可以是例如与其父的偏移(包括长度值、垂直角度,和水平角度)的位置。在另一实施例中,每个节点可以具有空间内的地理坐标,例如X值、Y值,和Z值。在此示例实施例中,映射系统580可接收标识用户的末端效应物的位置的信息。
在一实施例中,用户末端效应物的位置可从存储在计算环境304的存储器RAM、ROM中的图像生成。在该实施例中,捕捉设备306可使用照相机组件502捕捉用户302的图像。该图像可被用来使用上述技术生成用户模型600。
继续对图10的描述,操作1004示出了在应用的实时执行期间,确定化身模型关节的位置以获得化身模型的解剖学上可能的姿态,化身模型关节的位置至少从化身末端效应物的位置确定。例如,继续上述示例,一旦映射系统580获取应用空间中的末端效应物的位置,该位置可被馈送到反向运动学系统190。反向运动学系统590可被配置为使用上述技术确定考虑末端效应物的位置的化身的姿态。
在一实施例中,反向运动学系统590可使用定义可由各节点执行的移动的信息来确定模型的解剖学上可能的姿态。例如,代表肘的节点可与定义在该节点可能的两个移动的信息相关联:类似铰链的弯曲和伸直,以及将前臂翻转的移动。反向运动学系统590可使用此信息来生成基于此信息有效的节点的位置,并允许末端效应物够到所希望的位置。
现在转向图11,其示出图10的操作过程的替换实施例,包括操作1106-1118。现在转到操作1106,它示出了确定特定化身模型关节的方向以至少逼近用户关节的方向,用户关节的方向从由用户图像生成的数据获得。例如,在一实施例中,用户模型600可被生成并存储在存储器中。在此示例中,用户模型600可具有标识出末端效应物以外的节点的位置的信息。例如,末端效应物可以是手,且用户模型可能具有代表用户的肘和用户的肩的节点的位置信息。映射系统580可被执行并且这些附加节点的坐标可被变换为化身模型700的位置。这些位置,以及末端效应物的位置可接着被发送到反向运动学系统590。反向运动学系统590可接着确定考虑关于其他节点的位置信息的化身模型700的姿态。在此示例中,反向运动学系统590可被区分优先级以正确地定位末端效应物,并尝试匹配任何其它节点的方向,无需移动末端效应物。因此,在一些示例实施例中,反向运动学系统590能够准确放置节点以模拟用户的方向,或可将节点放置为逼近用户的方向。
继续图11的描述,操作1108示出了从用户的图像生成用户模型,用户模型包括用户末端效应物的位置。例如,在该实施例中,可使用上面结合图5和6描述的技术生成用户模型。在此示例实施例中,用户模型600可包括可通过互连(例如骨骼)连接的节点,例如,末端效应物和多个关节。
转向操作1110,它示出了生成动画流,动画流包括模型关节的位置和末端效应物的位置;并将动画流发送到图形处理器。例如,在一实施例中,化身模型700可被用来生成动画流。在该示例中,动画流可被变换为,例如,图元并发送到图形处理器。图形处理器可接着执行该图元,使用化身模型呈现存储器中游戏中的人物,并接着将指示已呈现的人物的信息发到视听设备320。
继续图11的描述,操作1112示出了一实施例,其中确定化身模型关节的位置包括,但不限于,确定特定化身模型关节与特定用户关节不相关联,其中在数据不包括特定用户关节的位置信息时特定化身模型关节与特定用户关节不相关联;并将特定化身模型关节的位置设置为逼近默认位置。例如,在一实施例中,信息可被存储在定义化身模型的默认姿态和化身模型中的关节的位置信息的模型库570中。例如,可将化身模型与定义形成类似“T”的姿态的关节的位置的信息相关联。模型库570也可能包括各其他姿态,诸如奔跑或走路姿态或示出化身握住物体的姿态。在该示例中,可向反向运动学系统590馈送末端效应物的位置以及被捕捉的任何关节的位置。反向运动学系统590也可接收定义了系统缺乏其位置信息的关节的默认位置的信息。例如,右膝可能是感兴趣的关节,然而已捕捉的图像可能不具有右膝的任何信息或者因各种原因信息不可用。在此示例中,默认位置信息可由反向运动学系统590使用,来生成考虑默认位置的化身模型的姿态。
在此示例中,可由映射系统580基于用户模型600和模型库570中的模型之间的比较来选择默认位置。在该示例中,定义末端效应物和任何关节的已知位置的信息可与库比较,并可使用具有最佳拟合的默认模型。默认的关节位置可被发送到反向运动学系统590中用于任何未知用户关节。
在一示例实施例中,反向运动学系统590可被配置来使用优先级设定来确定如何摆化身模型的姿势。例如,末端效应物可与将它们标识为最高优先级的信息相关联。在此情况中,反向运动学系统590将对将末端效应物拟合到希望的点区分优先级。映射系统580具有关于其的信息的关节可被设置到低于末端效应物的优先级级别。在此情况中,反向运动学系统590可尝试将这些关节拟合到至少类似用户模型关节但是不与末端效应物的定位冲突的位置。最后,可以拟合没有信息被接收到的关节。在此情况中,反向运动学系统590将尝试将这些关节拟合到至少类似默认位置但是不与末端效应物的定位冲突的位置。
继续图11的描述,操作1114示出了在应用的执行期间,接收来自应用的对于化身模型的请求,并在应用的执行期间,从模型的库中选择化身模型。例如,在一实施例中,模型的类型可在应用被执行时从模型库570中加载。在该示例实施例中,应用可定义将要被使用模型的类型,例如似人的模型、马模型、龙模型等。映射系统580可接收定义将要被使用的模型的类型的请求,并从模型库570中选择化身模型。
映射系统580还可基于从应用给予它的参数调整化身模型的大小。例如,模型可以是某一大小,应用可请求大许多倍或小许多倍的模型。在此情况中,应用可指定所想要的大小并且映射系统580可适当缩放该模型。
操作1116示出了在特定用户关节和特定模型关节之间生成关系;并且生成将用户末端效应物耦合到用户关节以拟合化身模型的大小的互连。在一实施例中,映射系统580可包括将特定关节映射到模型的已知关节的信息。例如,每个模型可具有映射到用户膝盖、手腕、脚踝、肘部,或其他特定关节的节点。可在这些节点和化身模型700的节点之间建立关系。一旦关系被建立,可生成互连(例如,骨骼)来将模型中的各节点链接在一起。映射系统580可获得用户模型节点的位置,并且计算化身模型节点的位置。化身模型节点然后可被馈送到反向运动学系统590以生成模型的姿态。
继续图11的描述,操作1118示出了将用户末端效应物映射到具有与用户不同的骨架构造的化身模型。例如,在一实施例中,模型可具有不同于用户的骨架构造。在此示例中,化身模型可以不具有似人的骨架构造。例如,化身模型可具有半人马(部分人部分马的神话生物)的构造。因此,在该示例中,化身模型具有不同于人类的骨骼或关节。在该实施例中,映射系统580可包括定义人类的各节点和半人马的节点之间关系的信息。例如,人类的腿的节点可被映射到半人马的全部四条腿,而用户的手臂可被映射到半人马的手臂。
转向图12,它示出了包括操作1200-1214的操作过程。操作1200开始操作过程,并且操作1202示出执行视频游戏。例如,在一实施例中,应用160可以是视频游戏。该视频游戏可被配置来使用目标识别、分析和跟踪系统300来确定在游戏中如何动画化化身。
继续图12的描述,操作1204示出了基于从视频游戏接收的信息加载化身模型,该化身模型包括化身末端效应物和多个化身节点。例如,在一实施例中,化身模型可在视频游戏被执行时从模型库570中加载。在该示例实施例中,视频游戏可向计算环境304发送信号,指示它使用什么类型的化身模型,例如似人模型、马模型、龙模型等。映射系统580可接收定义将要被使用的模型的类型的请求,并从模型库570中选择模型。
映射系统580还可基于从视频游戏给予它的参数调整化身模型的大小。例如,化身模型可以是某一大小,应用可请求大许多倍或小许多倍的化身模型。在此情况中,应用可指定所想要的大小并且映射系统580可适当缩放该模型。
继续图12的描述,操作1206示出接收用户末端效应物的位置信息。例如,在一实施例中,捕捉设备306可使用上述技术捕捉用户302的图像,并且可从该图像生成用户模型。
模型中的每个节点可具有可以是例如与其父的偏移(包括长度值、垂直角度,和水平角度)的位置。在另一实施例中,每个节点可以具有空间内的地理坐标,例如X值、Y值,和Z值。在此示例实施例中,映射系统580可接收标识已由动画设计者选择的用户的末端效应物的位置的信息。例如,用户的3D模型可连同从基准点(例如根节点)延伸的坐标系统一起被存储在存储器中。末端效应物的位置可被跟踪且坐标可被存储在存储器中。
继续图12的描述,操作1208在视频游戏实时执行期间,确定化身末端效应物的位置,其中化身末端效应物的位置是使用用户末端效应物的位置信息来计算的。例如,映射系统580可被配置来在视频游戏实时执行期间,接收用户末端效应物的位置并将其重新映射到合适的化身末端效应物。例如,在一实施例中,化身可具有根节点,并且可使用化身的根节点和用户模型的根节点建立关系。使用该关系,化身末端效应物的位置可从用户末端效应物的位置中计算出来。在另一实施例中,其他节点的位置可被用来确定化身末端效应物的位置。例如,可获取末端效应物的父节点和祖父节点的位置信息,并且可在对应的父节点和祖父节点之间建立关系。使用该关系,化身末端效应物的位置可从用户末端效应物的位置中计算出来。
转到操作1210,它示出了接收用户末端效应物的第二位置信息。某点之后,例如5ms之后,或以捕捉设备可获取新图像且已更新模型可被生成的速度,照相机可捕捉用户302的图像并且映射系统580可接收标识用户的末端效应物的已更新位置的信息。例如,用户的3D模型可连同从基准点(例如根节点)延伸的坐标系统一起被存储在存储器中。末端效应物的第二位置可被跟踪且坐标可被存储在存储器中。
操作1212接着示出,在视频游戏实时执行期间,将化身末端效应物的位置更新到第二位置,其中化身末端效应物的位置使用用户末端效应物的第二位置信息来计算。例如,映射系统580可被配置来在视频游戏实时执行期间,接收用户末端效应物的已更新位置并更新合适的化身末端效应物的位置。
操作1214示出了,在视频游戏实时执行期间,确定化身节点的位置,以获得化身模型的解剖学上可能的姿态,其中姿态维持化身末端效应物的已更新位置。例如,末端效应物的已更新位置可被馈送到反向运动学系统590,且该系统可确定没有被动画设计者直接放置的化身节点(诸如关节和/或任何末端效应物)的位置。反向运动学系统590可被配置为使用上述技术确定与化身末端效应物的位置匹配的化身模型的姿态。例如,代表肘的节点可与定义在该节点可能的两个移动(类似铰链的弯曲和伸直,以及将前臂翻转的移动)的信息相关联。反向运动学系统590可使用此信息来生成基于此信息有效的节点的位置,并仍然允许末端效应物够到所希望的位置。因此,该示例中的末端效应物可被定位在正确位置,然而化身模型中的其他节点可能不需要反映用户模型的方向。
现在转向图13,其示出图12的操作过程的替换实施例,包括操作1316-1322。操作1316示出了由照相机捕捉用户的图像;生成包括用户末端效应物的用户模型;并从用户模型确定用户末端效应物的位置信息。例如,在一实施例中,捕捉设备306可用来捕捉图像。在该示例中,目标识别、分析和跟踪系统300可捕捉图像并用它生成用户模型600。用户模型600可被存储在存储器中,并且映射系统580可被执行来确定末端效应物的位置。
继续图13的描述,细化1318示出了在一实施例中,化身模型包括非人类化身模型。类似于上述,在一实施例中,化身可具有非似人骨架构造和/或不同节点分级结构,例如非似人构造可包括具有与人类相当的部位不同的运动范围的节点,或构造可具有以不同于似人的方式连接的更多或更少节点。例如,化身可以是有四条手臂和鳍的海怪。在该示例中,用户模型600上代表用户手臂的节点可被映射到四条手臂,映射到用户的腿的节点可被映射到鳍。在该示例中,由于用户腿的节点可以这样的方式映射到化身的鳍上:当用户提起放下他的腿时使得鳍向后向前。
继续图13的描述,操作1320示出将特定模型关节的方向设置为至少逼近用户关节的方向,用户关节的方向从所生成的用户模型确定。例如,在一实施例中,用户模型可被生成并存储在存储器中。在此示例中,用户模型可具有标识出末端效应物以外的节点的位置的信息。例如,末端效应物可以是手,且用户模型可能具有代表用户的肘和用户的肩的节点的位置信息。映射系统580可被执行并且这些附加节点的坐标可被变换为化身的位置。
继续图13的描述,操作1322示出了从化身模型生成动画流;并将动画流与预定义的动画混合。例如,在一实施例中,化身模型700可被用来生成动画流。动画设计者可将预定义的动画添加到动画流,以向动画添加附加效果。例如,预定义动画可包括呼吸动画。动画可与化身混合使得在呈现时化身显得在呼吸。一旦动画流最终确定,其可被变换为,例如,图元并发送到图形处理器。图形处理器可接着执行该图元,呈现存储器中的化身,并且已呈现的化身可被发送到监视器。
现在转向图14,它示出了包括操作1400-1410的操作过程。操作1400开始过程,且操作1402示出从图像生成用户模型,其中用户模型包括用户末端效应物。例如,在一实施例中,图5的目标识别、分析和跟踪系统300可被用来捕捉图像。在该示例中,目标识别、分析和跟踪系统300可捕捉图像并用它生成用户模型600。用户模型600可被存储在存储器中,并且映射系统580可被执行来确定末端效应物的位置。
数据结构中的每个节点可具有可以是例如与其父的偏移(包括长度值、垂直角度,和水平角度)的位置。在另一实施例中,每个节点可以具有空间内的地理坐标,例如X值、Y值和Z值。在此示例实施例中,映射系统580可接收标识已由动画设计者选择的用户的末端效应物的位置的信息。例如,用户的3D模型可连同从基准点(例如根节点)延伸的坐标系统一起被存储在存储器中。末端效应物的位置可被跟踪且坐标可被存储在存储器中。
继续图14的描述,操作1404示出了在应用运行时执行期间,将用户末端效应物映射到化身模型。例如,可配置映射系统580来在应用560实时执行期间接收用户末端效应物的位置,并将它们重新映射到化身末端效应物。例如,在一实施例中,化身模型700可具有根节点,并且可使用化身的根节点和用户模型的根节点建立关系。类似于上面结合图5和6的描述,使用该关系,可从用户末端效应物的位置计算化身末端效应物的位置。
继续图14的描述,操作1406示出了在应用运行时执行期间,设置化身关节的位置以获得模型的解剖学上可能的姿态。例如,末端效应物的位置可被馈送到反向运动学系统590,且该系统可确定没有被动画设计者直接放置的化身节点(诸如关节和/或任何末端效应物)的位置。反向运动学系统590可被配置为使用上述技术来确定与化身末端效应物的位置匹配的模型的姿态。反向运动学系统590可使用此信息来生成基于此信息有效的节点的位置,并仍然允许末端效应物够到所希望的位置。因此,该示例中的末端效应物可被定位在正确位置,然而化身模型中的其他节点可能不需要反映用户模型的方向。
继续图14的描述,操作1408示出了在应用的运行时执行期间,基于对用户模型的改变来修改化身末端效应物的位置和化身关节。例如,映射系统580可被配置来接收用户模型末端效应物的已更新位置信息,且反向运动学系统590可被配置为基于对用户模型的改变来生成关节的已更新位置。在一实施例中,用户模型可例如,每5ms或以捕捉设备可获取新图像且已更新模型可被生成的速度发生改变。在该示例中,执行环境12可被配置为基于对用户模型的改变来修改化身。
现在转向图15,其示出操作过程1400的替换实施例,包括操作1510-1520。例如,操作1410示出将特定化身关节的方向设置为逼近用户关节的方向,用户关节的方向从用户模型中获得。例如,在一实施例中,用户模型可被生成并存储在存储器中。在此示例中,用户模型可具有标识出末端效应物以外的节点的位置的信息。例如,末端效应物可以是手,且用户模型可能具有代表用户的肘和用户的肩的节点的位置信息。映射系统580可被执行并且这些附加节点的坐标可被变换为化身模型的位置。这一个或多个位置,以及末端效应物的位置可接着被发送到反向运动学系统190。反向运动学系统590可被执行,并且可以确定考虑关于其他节点的位置信息的化身的姿态。在此示例中,反向运动学系统590可被区分优先级以正确地定位末端效应物,并尝试匹配节点的方向,无需移动末端效应物。因此,在一些示例实施例中,反向运动学系统590能够准确放置节点或可将节点放置为逼近用户的方向。
继续图15的描述,操作1512示出了从化身模型生成动画流;并将动画流与预定义的动画混合。例如,在一实施例中,化身模型可被用来生成动画流。动画设计者可将预定义的动画添加到动画流,以向动画添加附加效果。例如,预定义动画可包括呼吸动画。动画可与化身模型混合使得在呈现时化身显得在呼吸。一旦动画流最终确定,其可被变换为,例如,图元并发送到图形处理器。图形处理器可接着执行该图元,呈现存储器中的化身,并且已呈现的化身可被发送到监视器。
转到操作1514,其示出了确定特定化身关节与特定用户关节不相关联,其中当用户模型不包括特定用户关节的位置信息时特定化身关节不与特定用户关节相关联;并将特定化身关节设置到默认位置。例如,在一实施例中,信息可被存储在定义化身模型的默认姿态和化身模型中的关节的位置信息的模型库570中。例如,可将化身模型与定义形成类似“T”的姿态的关节的位置的信息相关联。模型库570也可包括各其他姿态,诸如奔跑或走路姿态或握住某些普通物体的姿态。在该示例中,可向反向运动学系统590馈送末端效应物的位置以及被捕捉的任何关节的位置。反向运动学系统590也可接收定义了系统缺乏其位置信息的关节的默认位置的信息。例如,右膝可能是感兴趣的关节,然而已捕捉的图像可能不具有右膝的任何信息或者因各种原因信息不可用。在此示例中,默认位置信息可由反向运动学系统590使用,来生成考虑默认位置的模型的姿态。
在此示例中,可由映射系统580基于用户模型600和模型库570中的模型之间的比较来选择默认位置。在该示例中,定义末端效应物和任何关节的已知位置的信息可与库比较,并可使用具有最佳拟合的默认模型。默认的关节位置可被发送到反向运动学系统590中用于任何未知用户关节。
在一示例实施例中,反向运动学系统590可被配置来使用优先级设定来确定如何摆化身模型的姿势。例如,末端效应物可与将它们标识为最高优先级的信息相关联。在此情况中,反向运动学系统590将对将末端效应物拟合到希望的点区分优先级。映射系统580具有关于其的信息的关节可被设置到低于末端效应物的优先级级别。在此情况中,反向运动学系统590可尝试拟合这些关节,或如果这样做将改变任何末端效应物的位置则不拟合这些关节。最后,可以拟合没有信息被接收到的关节。在此情况中,反向运动学系统590将尝试拟合这些关节,但将不改变任何末端效应物或系统具有位置信息的任何关节的位置。
继续图15的描述,操作1516示出接收定义由应用使用的化身类型的信息;并在应用执行期间,基于定义由应用使用的化身类型的信息从化身模型的库中选择化身模型。例如,在一实施例中,化身模型可在应用被执行时从模型库570中加载。在该示例实施例中,应用可请求模型,例如似人模型、马模型、龙模型等。映射系统580可接收定义将要被使用的模型的类型的请求,并可从模型库570中选择模型。
映射系统580还可基于从应用给予它的参数调整模型的大小。例如,模型可以是某一大小,应用可请求大许多倍或小许多倍的模型。在此情况中,应用可指定所想要的大小并且映射系统580可适当缩放该模型。
继续图15的描述,操作1518示出调整将用户末端效应物耦合到关节的互连的大小,以拟合化身模型的大小。在一实施例中,映射系统580可包括将特定关节映射到模型的已知关节的信息。例如,每个模型可具有映射到用户膝盖、手腕、脚踝、肘部,或其他特定关节的节点。可在这些节点和用户模型600的节点之间建立关系。一旦在用户模型600的节点和化身模型700中的节点之间建立关系,例如骨骼的互连可被生成以将化身700中的各种节点链接在一起。在这一点上,映射系统580可获得用户模型节点的位置,并且计算化身模型节点的位置。化身模型节点然后可被馈送到反向运动学系统590以生成模型的姿态。
继续图15的描述,操作1520示出了将用户末端效应物映射到具有与用户模型不同的骨架构造的化身模型。类似于上述,在一实施例中,化身可具有非似人骨架构造和/或不同节点分级结构,例如非似人构造可包括具有与人类相当的部位不同的运动范围的节点,或构造可具有以不同于似人的方式连接的更多或更少节点。
上述详细描述通过示例和/或操作图阐明了系统和/或过程的各种实施例。就这些框图和/或示例包含一个或多个功能和/或操作而言,本领域技术人员将理解,这些框图或示例中的每一功能和/或操作都可由各种各样的硬件、软件、固件、或实际上其任意组合来单独地和/或共同地实现。
尽管示出和描述了此处所描述的本主题的特定方面,但是,对于本领域的技术人员显而易见的是,基于此处的原理,在不偏离此处所描述的主题以及其广泛的方面的情况下,可以作出更改和修改,因此,所附权利要求书将包含在它们的范围内,所有这样的更改和修改都将在此处所描述的主题的真正的精神和范围内。