用于可扩展化身系统的编程api的制作方法

文档序号:6594271阅读:300来源:国知局
专利名称:用于可扩展化身系统的编程api的制作方法
用于可扩展化身系统的编程API背景视频游戏有时将用户创建的化身表征为用户控制的人物。通常,用户可以以处理 外观例如面部特征和衣着的各种方式来定制化身。这给用户提供了更为个性化和更为投入 的视频游戏体验。举例来说,任天堂 具有用户创建的化身MII ,然后,用户可以在支持此 特征的视频游戏例如WII SPORTS 中把该化身用作他或她的用户控制的人物。尽管可以在系统上或者在特定的游戏中创建化身,但常常希望用户创建的化身可 由各种视频游戏应用程序使用。举例来说,玩家希望与该玩家关联的化身可用于并入新的 视频游戏应用程序而不需要重新创建化身。此外,视频游戏应用程序使用视频游戏系统的 渲染功能并将所渲染的化身合并到游戏输出而非提供本身的化身渲染功能是有益的。在任 一种情况中,视频游戏应用程序可以访问允许该应用程序访问其本身的渲染功能中的化身 信息或将系统渲染的化身合并到该应用程序的输出的应用程序编程接口(API)是有益的。概述在本公开内容的各种实施例中,提供实现用于编程化身的API的方法、系统和计 算机可读介质。然后,这样的API可以允许视频游戏应用程序检索表示化身的数据的结构。 该应用程序可以采用那些结构并将该数据合并到其本身的人物系统中,以使得它们可以使 用应用程序的代码在应用程序上下文中渲染和动画化化身。API还可以允许应用程序借助于处理渲染和动画的系统将化身渲染到渲染目标。 视频游戏应用程序可以触发动画或依赖于“空闲”动画进行播放,且各动画可以被渲染到二 维表面,然后视频游戏应用程序可以呈现该二维表面。在一些实施例中,化身系统可以被设计为使得该API可以递送用在游戏本身被发 行之后发行的附件(例如T恤)装饰(例如着装)的化身而不会对视频游戏应用程序造成 不利影响。可以以新的附件不占用视频游戏应用程序希望用于其他目的的额外资源的方式 来预先分配资源。在一个实施例中,化身系统还可以被设计为使得化身资产的检索可以由控制台或 在线系统来执行,然后,可以独立于游戏应用程序而更新化身资产。这可以允许控制台或在 线服务改变用于化身资产检索的逻辑而不需要要求改变游戏应用程序。例如,尽管控制台 可能最初仅从本地存储检索资产,但在其他情况中,各资产可以例如从因特网检索。应注意,被提供本概述以便以简化形式介绍下面在详细描述中进一步描述的的概 念的选集。本概述不旨在标识所要求保护的本主题的关键特征或必要特征,也不旨在用来 帮助确定所要求保护的主题的范围。


当结合附图阅读时,可以更好地理解前述概述以及下列详细描述。为了阐释本公 开内容,示出本公开内容的各方面。然而,本公开内容不限于所示出的具体方面。包括下列 的图图1阐释在一些实施例中化身和任何关联项是静态的;
图2阐释化身项可以以多种方式被动画化;图3阐释允许使用所动画化的项来进行化身装饰的示例性系统;图4阐释用于跨越多个游戏动画化化身的系统;图5阐释用于实现目前所公开的本主题的示例性方法;图6阐释用于实现目前所公开的本主题的示例性计算机可读介质;图7阐释用于跨越在线视频游戏服务更新化身的外观的示例过程。图8阐释用于跨越在线视频游戏服务更新化身的外观的示例系统。图9阐释用于在在线多玩家视频游戏服务中动态地添加和与用户关联的化身关 联的的项的示例过程。图10阐释用于在在线多玩家视频游戏服务中动态地添加和与用户关联的化身关 联的的项的示例系统。图11阐释可以结合参考图1-图12讨论的本发明内容的各方面使用的示例性计 算备设例如控制台;图12阐释用于参考图1-图12讨论的目前所公开的本主题的示例性连网环境;图13阐释提供用于访问化身信息的API的示例性系统;图14阐释用于实现允许包括化身渲染器的视频游戏系统将化身渲染到由在视频 游戏系统上执行的视频游戏应用程序提供的目的地的应用程序编程接口(API)的操作过 程的示例;图15阐释用于实现允许包括化身渲染器的视频游戏系统将化身渲染到由在视频 游戏系统上执行的视频游戏应用程序提供的目的地的应用程序编程接口(API)的操作过 程的示例;图16阐释带有用于实例化允许在视频游戏系统中执行的视频游戏应用程序在由 视频游戏应用程序选择的渲染目的地渲染一个或多个化身的API的计算机可执行指令的 计算机可读介质;图17阐释用于允许在视频游戏系统中执行的包括化身渲染功能的视频游戏应用 程序接收用于构建、渲染和动画化化身的数据的操作过程的示例;以及图18阐释用于允许在视频游戏系统中执行的包括化身渲染功能的视频游戏应用 程序接收用于构建、渲染和动画化化身的数据的操作过程的示例。详细描述化身系统图1阐释静态的化身系统。用户A 160可以玩游戏控制台A 166,且在玩这样的游 戏控制台166时,用户160可以具有多个化身,例如化身X 172、化身Y 174和化身Z 176。 这些化身172、174、176将通常是游戏专用的。换句话说,一个游戏将允许用户160选择第 一化身172,第二游戏将允许用户160选择第二化身174,第三游戏将允许用户160选择第 三化身176,等等。在在线玩游戏的情况中,如果这样的在线玩游戏由中央服务器调停,则其他用户 例如用户B 162和用户C 164可以与第一用户160交互。在图1中示出的示例中,与第一用 户160关联的这样的化身172、174、176可以被其他用户162、164看到,然而,这些化身172、 174、176被更新和被动画化的能力有限。
5
图2阐释化身可以以多种方式被动画化。具体地,化身可以用“项”来修饰或被装 饰,其中项被理解为可以应用于现有化身的任何图形或音频组件。作为示例而非限制,项可 以包括帽子、鞋子、手套(即,任何衣物),在这样的情况中,这样的项可以含有项专用的动 画——例如,不断改变颜色或绕化身的头动来动去的帽子。此外,项还可以应用于整个化身 身体——例如,跳舞、微笑或跳动的概念可以作为整体而被应用于化身,以便增加化身的生 动性和漂亮(或者可以出于其他目的而添加)。无论如何,图2示出在目前所公开的本主题的一个方面中,化身X 172可以已经将 对化身174来说是专用的动画200应用于它本身(例如以上所讨论的帽子示例)。另一方 面,化身Y 174可以具有被应用于化身174的整个身体的动画208(例如以上所讨论的舞蹈 示例)。在任一种情况172、174中或在其他情况176中,化身可以是用户确定的202的或它 们可以是游戏确定的206。这意味着用户可以经由一些界面装饰化身172、174、176,或者这 样的化身可以由游戏标题210装饰。在后一种场景中,如果用户160正在玩游戏并在游戏 解锁了一成就,这样的成就的奖赏可以是然后可以被应用到用户160的化身的动画项一一 无论是应用到具体的游戏中的化身或应用到对若干(或所有)游戏通用的化身。图3阐释允许使用被动画化的项来进行化身装饰的示例性系统。在下列讨论中, 还应注意,“附件包”含有动画之外的其他化身资产(例如,衣着、面部特征等等)。化身引 擎302可以被配置为将附件项应用到化身308。附件项可以被包含在动画包318中,且与三 维网格312、位图纹理314、配置信息(例如各项应相对于化身308在何处放置)一起提供。 所有此代码和数据可以是整个化身附件包310的部分。简而言之,化身引擎302可以访问 化身附件包310中的内容,且然后将此内容应用到实际的化身308。可以存在用于将这样的项内容应用到化身的各种触发机制。例如,一个这样的机 制可以包括允许用户选择将哪些项应用到哪些化身的用户界面306。或者(或除此之外), 取决于实现和用户与主控这样的化身引擎302的游戏控制台的交互,游戏标题304本身可 以是用于将项内容应用到化身的触发。然而,在本公开内容的其他方面中,化身引擎302可 以驻留在主控服务器中,且任何处理可以在用户的上游被执行。图3还示出可以存在用于所示出的化身附件包310的各种源。除了项内容由游戏 标题322本身提供之外,这样的内容可以从在线源3M获取,或者可以从各种源(包括游 戏、服务器和其他介质)购买。因而,化身引擎302可以应用由各种内容创建器3 创建的 项内容,只要这样的创建器知晓的化身引擎302所预期的标准。然而,本领域中的技术人员 容易理解,还可以使用通用(非专有)标准。图4阐释用于跨越多个游戏动画化化身的系统。尽管图4中示出一系统,但本主 题可以作为方法和/或计算机可读介质(相对于任何其他图来书,在这一图中是如此,反之 亦然)而实践。在图4中,以上所讨论的化身引擎302可以具有各种模块。所示出的模块 402,404,406仅仅是示例性的而非限制性的(是示例性的而非限制性的对本公开内容的任 何内容都适用)。因而,系统可以被用于以多种不同方式动画化游戏控制台化身,其中该系统可以 被加载到本地计算机存储器中,且其中其可以由物理处理器执行。在这样的系统中,处理模 块402可以被配置为处理含有多个动画项的附件包310。另一模块即标识模块404可以被 配置为从多个动画项标识化身和动画项。且又一个模块即应用模块406可以被配置为将动画项应用到化身。此系统可以包括各种其他方面,例如至少在第一游戏标题420和第二游戏标题 422中将动画项应用到化身410。此外,动画项可以被配置为当第一游戏标题420正在玩 407时被应用到化身410。在其他方面中,动画项还可以被配置为当第二游戏422标题正在 玩407时被应用到化身410。第一游戏标题420和第二游戏标题422可以彼此不同,这是因 为它们可以在时间tl 424和在时间口似6被分开地加载。图5阐释其中执行包括接收带有化身附件的附件包的步骤500的示例性的方法。 接下来步骤可以是将化身标识为动画的候选510,且然后将附件项应用到化身。最后的步骤 可以是实际上显示所动画化的化身530。这些步骤可以与以上所提供的本公开内容一起使 用,例如化身附件可以由可应用于化身的多个项组成,化身可以是对应于游戏控制台的用 户的对象,以及多个项中的至少之一可以被配置为当被应用到所述化身时被动画化。此外, 可以使用触发事件,可以至少跨越两个不同的(例如分开加载的)游戏标题而应用化身,化 身可以在玩游戏玩期间被实时装饰,化身可以在游戏期间被连续地动画化(或它们有时可 以暂停),等等。图6阐释其上存储有各种计算机可执行指令的示例性计算机可读介质690。此介 质690可以被实现为系统或作为方法而实践,因而本公开内容讨论的计算机可读介质仅仅 是示例性的。可以采用多个指令以便用各项来所装饰的化身。用于访问605数据库的指令 可以允许从远程数据库下载化身装饰内容;用于接收615各包的指令可以处理或展开被包 装在各包中的任何这样的装饰内容;将附件应用610到化身的指令可以允许用户以所期望 的方式设置化身的外貌和触感;显示所动画化的化身的指令可以被用于将此内容显示在各 种不同的介质上,例如监视器、蜂窝式电话等等。应容易明白,可以结合上面所讨论的各方面而使用其他指令,例如被配置为在不 同的游戏标题之间或跨越不同的游戏标题运载至少一个项的指令625 ;被配置为在游戏执 行期间向用户呈现装饰任何化身的选项的指令630 ;被配置为以不同方式触发和管理动画 的指令670,这些不同方式例如连续动画650、事件动画655、用户动画660和空闲动画665 ; 被配置为以例如基于项目604和基于化身602的特定的方式来或使用例如用户界面606和 游戏标题608的不同的机制来应用动画的指令610。应注意,可以使用包含以上讨论的各种 方面的其他指令635。图7阐释用于跨越在线视频游戏服务更新化身的外观的示例操作流,其中所述服 务包括服务器和正执行的视频游戏。本领域技术人员应注意,所公开的进程是说明性的,且 预期不同的实现。在700,进程流开始。此进程可以响应于用户开始在被连接到在线视频游戏服务的 视频游戏控制台上执行视频游戏而被触发。例如,用户可以对控制台通电,插入含有包括游 戏在内的计算机可读指令的盘,并发送唯一的访问凭证。服务本身可以包括通过其验证并 在用户之间交换在线多玩家视频游戏玩耍的一个或多个服务器、将用户归组在游戏会话中 的游戏配对服务、电子商务市场、留言板和实况聊天室。用户的化身可以在这样的服务中的 许多区域出现。举例来说,它可以出现在服务上的用户的简档中,或作为用户张贴到留言板 的任何帖子的部分而出现。操作702描绘当执行游戏时从用户接收更新化身的外观的指令。当用户正玩游戏时,他或她可以被鼓励来改变化身的外观。在这样的实例中,用户可以输入召唤化身编辑屏 幕的命令。例如,用户可以按压在他或她的控制器、键盘或其他输入设备上的专用按钮,这 带来要执行的命令的列表。由此,用户可以选择对应于编辑化身的外观命令。当这些命令 被输入时,底层游戏中的动作可以继续进行或挂起。可以由其上正执行游戏的系统或者由 游戏本身中的计算机可读指令在那两个选项之间作出选择。在一种实施例中,从用户接收 更新化身的外观的指令包括挂起游戏的活动玩耍。操作704描绘更新化身的外观。外观可以是化身的任何物理方面,例如头发颜色、 头发长度、发型、胡须颜色、胡须长度、胡须造型、胡须位置、眼睛颜色、眼睛造型、眼睛位置、 鼻子造型、鼻子位置、嘴巴造型、嘴巴颜色、嘴巴位置、耳朵造型、耳朵位置、肤色、身高、体重 或体型。在一个实施例中,更新化身的外观包括将编辑器窗口覆盖在游戏上并从用户接收 关于如何更新化身的外观的至少一个指令。例如,更新化身的机制可以由用户正在其上玩 游戏的系统而非游戏本身控制,且该系统可以在发送将所渲染的帧发送给用户的视觉的显 示设备之前将编辑器窗口渲染到游戏窗口上。当用这样的窗口呈现时,然后用户可以发送 关于应如何更新化身的指令。举例来说,用户可以点击化身的眼睛,然后从可用颜色的列表 中选择新的眼睛颜色,将化身的眼睛颜色从绿色改变为淡褐色。操作706描绘指示服务器存储所更新的化身。这可以包括当在一个时间周期内未 从服务器接收到它存储所更新的化身的指示时向服务器显示错误消息。在服务器在通信网 络被连接到用户的游戏系统的场合,可以存在用户更新化身但是通信网络无法将所更新的 化身发送给服务器的情况。在这样的情况中,用户通常可以理解对化身作出的改变未被保 存的通知。在另一实施例中,改变可以被本地存储在用户的游戏系统上,且可以进行将所更 新的化身发送给服务器的进一步尝试,直到这样的发送成功。操作708描绘指示游戏加载和显示所更新的化身。在服务器上存在用于化身的单 独的的非易失性存储介质的场合中,这可以包括指示游戏从服务器接收所更新的化身。在 另一实施例中,游戏可以直接从本地存储器读取所更新的化身。在其中用户正玩包括会话 以及参与所述会话的多个其他用户的在线多玩家视频游戏的实施例中,所述指示游戏加载 和显示所更新的化身可以包括指示每一其他用户的视频游戏加载和显示所更新的化身。那 样,用户的化身将对多玩家游戏中的所有参与者来说具有一致的外观。这还可以包括指示 每一其他用户的视频游戏在对会话的所有其他用户已经挂起游戏之后加载所更新的化身。 在玩游戏期间用户的化身突然改变可能会使另一用户感到糊涂,且恶意的用户可以快速改 变他或她的化身的外观来騷扰其他用户。仅当游戏已经被挂起时(例如当比赛终止时,或 者当所有玩家都暂停时)才将化身改变传播给所有用户,可以避免此问题。所述指示每一 其他用户的视频游戏加载所更新的化身还可以包括向每一其他用户通知用户的化身已经 被更新。如果用户的化身改变而没有这样的明确指示,则另一用户可能感到糊涂,而例如说 明此改变的弹出窗口的通知可以缓解此问题。操作710描绘将所更新的化身存储在其中用户正在其上玩视频游戏的用户游戏 系统上。在与服务器的通信缓慢时,本地存储化身可以通过加速加载时间来改善用户体验。图8描绘用于跨越在线视频游戏服务更新化身的外观的系统,其中所述服务包括 服务器和正在执行的视频游戏。本领域的技术人员应注意,所公开的进程是说明性的,且预期不同的实现。用户802使用计算设备804来执行游戏806。在本公开内容的实施例中,用户通过 网络88连接到在线游戏服务器808。服务器808包括处理器812、从用户接收更新化身的外观的指令的模块814、更新 化身的外观的模块816、存储所更新的化身的模块818、指示用户的游戏加载和显示所更新 的化身的模块820、存储化身/用户对的数据库822以及检查至少一个凭证的模块824。计算设备804可以是专用的视频游戏控制台或更一般的计算设备例如蜂窝式电 话或个人计算机。计算设备可以被配置为执行多个游戏。它可以具有光驱并允许从被存储 在光盘上的计算机可读指令执行各种游戏。游戏可以被存储在计算机内的存储设备例如硬 盘驱动器或固态驱动器上。在用户802希望更新他正在他当前玩的视频游戏806中使用的化身的外观时,他 或她可以向服务器808发出更新所述化身的外观的指令,指令由从用户接收更新化身的外 观的指令的模块814接收。然后将该指令传送给更新化身的外观的模块816。当化身的外 观已经被更新时,从模块816向存储所更新的化身的模块816发送信号,该模块将所述化身 存储在数据库822中。数据库822可以存储标识用户和所述化身的各对。在用户同时具 有多个化身的场合中,数据库可以连同哪一化身对应于哪一用户的指示一起分开地存储用 户和化身。更新化身的外观模块816还向指示用户的游戏加载和显示所更新的化身的模块 820发送信号,模块820向用户的计算设备804发送指示游戏806加载和显示所更新的化身 的消息。在安全系统就位的场合中,服务器还可以通过检查用户的至少一个凭证的模块来 传送来自用户802的所有通信以更新化身的外观。在凭证检查通过的场合,如上处理用户 的指令。在凭证检查失败的场合,用户的指令不被执行。在一个实施例中,告知用户802凭 证检查失败的消息可以被发送给用户的控制台804以便向用户显示。在用户802在服务上与其他用户826a、^6b (通过他们各自的计算设备8(Ma、 804b)玩时更新化身的场合,当服务器808向用户的控制台804发送加载和显示用户的所更 新的化身的消息时,它可以向其他用户的控制台804a、1204b发送也加载和显示用户的所 更新的化身的消息。图9阐释用于在在线多玩家视频游戏服务中动态地添加和与用户关联的化身关 联的项的示例操作流。本领域的技术人员应注意,所公开的进程是说明性的,且预期不同的 实现。在900,进程流开始。此进程可以响应于用户开始在被连接到在线视频游戏服务的 视频游戏控制台上执行视频游戏而被触发。例如,用户可以对控制台通电,插入含有包括游 戏在内的计算机可读指令的盘,并发送唯一的访问凭证。服务本身可以包括通过其验证并 在用户之间交换在线多玩家视频游戏玩耍的一个或多个服务器、将用户归组在游戏会话中 的游戏配对服务、电子商务市场、留言板和实况聊天室。用户的化身可以在这样的服务中的 许多区域出现。举例来说,它可以出现在服务上的用户的简档中,或作为用户张贴到留言板 的任何帖子的部分而出现。操作902描绘接收表明用户获得对供与化身一起使用的项的访问权的消息。例 如,当在游戏中用户获得与该项关联的成就时,可以从游戏接收该消息。举例来说,成就可以是胜出某一级别或在游戏中用游戏币购买它。该消息可以响应于用户从与该服务关联的 电子商务店购买该项而被接收。例如,该消息可以响应于用户作为礼物而接收到项而被接 收。例如,赞助商可以允许用户访问包括看上去类似于赞助商所生产的实际的鞋子的鞋子 在内的项。此操作可以包括其中项具有创建器的情况,且所述接收表明用户获得访问权的消 息发生在从该项创建器接收存储该项的消息之后。在一些情况中,该项可以由游戏开发者 在服务之外创建。在此情况中,项创建器可以将指示该项应由服务器存储以供将来由用户 用于他们的化身的消息发送给服务。在一些实例中,创建器具有至少一个凭证,消息包括该凭证,且从项创建器接收存 储该项的消息包括确认每一凭证。操作904描绘存储化身可以使用该项的指示。在含有其中存储有化身和项的数 据库的实施例中,该指示可以包括第三字段,以使得对于每一化身-项对,存在指示“是”或 “否”的对应的“可以使用? ”字段。操作906描绘引导第一游戏显示带有该项的化身。在该项包括帽子的场合中,所 述显示可以包括在显示化身的场合使得该化身将帽子戴在他或她的头上。在该项是非衣物 附件的场合中,例如苍蝇拍或巨大的泡沫“我们是第一”的新奇的手,所述显示可以包括在 显示化身的场合使得化身持有或以其他方式操纵该项。在一个实施例中,所述引导第一游戏显示带有该项的化身包括从用户接收显示带 有该项的化身的消息。在一个实施例中,所述第一游戏是包括会话和至少一个其他用户在内的在线多玩 家游戏。在线游戏服务可以在单个时刻具有特定的游戏的活动的多个会话或实例。通常, 用户在任何时刻仅参与游戏的单个会话。在这样的实施例中,所述引导第一游戏显示带有 该项的化身包括引导每一其他用户的游戏显示带有该项的该化身。这将引起正与该用户玩 该会话的每一其他用户看到所更新的化身。这将保证游戏会话中的所有用户的一致性。在一个实施例中,所述引导第一游戏显示带有该项的化身包括引导第一游戏从至 少一个服务器下载该项。在其中所有项都被存储在服务器上且该项的子集被存储在用户的 计算设备上的体系结构中,第一游戏可以要求对该项的本地访问权。操作908描绘引导第二游戏显示带有该项的化身。该化身跨越整个服务而存在, 因此当项可以在第一游戏被获得时,它可以在服务的所有其他方面中用于该化身。在用户 获得用于他或她的化身的项的场合中,引导他或她的化身被显示为带有该项,然后,开始玩 支持该化身的第二游戏,在第二游戏中该化身将同样被显示为带有该项。操作910描绘在与用户关联的留言板帖子上显示带有该项的化身的可选步骤。在 服务包括留言板的场合中,用户可以向该板张贴以便相互通信。每一帖子可以附有用户的 名称、发贴的时间以及用户的化身的表示。该表示可以包括整个化身的一部分,例如该化身 颈部以上的正面静止图像。在随用户的留言板帖子显示用户的化身且用户已经将化身设置 为被显示为带有该项的场合中,在一个实施例中,对应于留言板张贴的用户的化身的图像 包括该项。操作912描绘在与用户关联的简档上显示带有该项的化身的可选步骤。简档包括 关于用户信息,例如实名、主页、年龄、爱好和个人箴言。在服务包括用户简档的场合中,简档可以包括用户的化身的表示。该表示可以包括整个化身的一部分,例如该化身颈部以上 的正面静止图像。在用户的简档中显示用户的化身且用户已经将化身设置为被显示为带有 该项的场合中,在一个实施例中,对应于留言板张贴的用户的化身的图像包括该项。操作914描绘在用户正参与其中的实况聊天中显示带有该项的化身的可选步骤。 实况聊天包括其中多个用户近乎实时地相互通信的通信会话。它可以包括文本、音频、视频 或其某种组合。在一个实施例中,在用户参与实况聊天的场合中,聊天的所有参与者看到 用户的化身的表示。该表示可以包括整个化身的一部分,例如该化身颈部以上的正面静止 图像。在用户的简档中显示用户的化身且用户已经将化身设置为被显示为带有该项的场合 中,在一个实施例中,对应于留言板张贴的用户的化身的图像包括该项。操作916描绘引导用户的计算机存储项和化身之间的关联的可选步骤,其中用户 通过计算机访问服务。对用户的计算机来说,通过本地存储信息来存储项和化身之间的关 联以便减少访问时间是有利的。操作918描绘引导用户的计算机存储项的的可选步骤,其中用户通过计算机访问 服务。对用户的计算机来说,通过本地存储信息来存储项本身以便减少访问时间是有利的。图10描绘用于在线多玩家视频游戏服务中动态地添加和与用户关联的化身关联 的项的系统。本领域的技术人员应注意,所公开的进程是说明性的,且预期不同的实现。用户1002使用计算设备1004来执行游戏1006。在本公开内容的实施例中,用户 通过网络1010连接到在线游戏服务器1008。服务器1008包括处理器1012、接收表明用户获得对供与化身一起使用的项的访 问权的消息的模块1014、存储化身可以使用项的指示的模块1016、存储用户/化身/项三 元组的数据库1018、引导第一游戏显示带有项的化身的模块1020以及引导第二游戏显示 带有项的化身的模块1022。计算设备1004可以是专用的视频游戏控制台或更一般的计算设备,例如蜂窝式 电话或个人计算机。计算设备1004可以被配置为执行多个游戏。它可以具有光驱并允许 从被存储在光盘上的计算机可读指令来执行各种游戏。游戏可以被存储在计算机内的存储 设备上,例如硬盘驱动器或固态驱动器。用户可以获得对用于他或她的化身的项的访问权。用户可以从各种源获得该项。 它可以是来自正通过计算设备100 访问服务的另一用户IOM的礼物。用户可以通过在 化身关联的游戏1006中实现某一目标而获得该项作为奖励,例如胜出某一级别或获得阀 值分数。用户也可以从由服务器1008提供的电子商务市场购买该项。当用户以及获得对该项的访问权时,对应的消息被发送给接收表明用户获得对供 与化身一起使用的项的访问权的消息的模块1014。在一个实施例中,所述模块1014包括从 用户1002接收显示带有该项的化身的消息的模块。在一个实施例中,所述接收模块1014 被配置为从第一游戏1006接收消息。所述模块1014处理该消息且然后将消息发送给存储 化身可以使用项的指示的模块1016。模块1016将所述指示存储在数据库1018中。在一个 实施例中,用户可以具有多个化身,且项局限于单个化身。在一个实施例中,当用户获得对 项的访问权且可以具有多个化身时,该项可以立即被用户的所有化身使用。在一个实施例 中,用户具有单个化身,且用户获得访问权的所有项对应于该一个化身。引导第一游戏显示带有该项的化身的模块1020经由用户的计算设备1004通过网络1010将表明这样的消息发送给第一游戏1006。第一游戏1006接收该消息和显示带有该 项的用户的化身。在用户稍后玩第二游戏的场合中,引导第二游戏显示带有该项的化身的模块1022 经由用户的计算设备1004通过网络1010将表明这样的消息发送给第二游戏1026。第二游 戏10 接收该消息和显示带有该项的用户的化身。编稈API在各种实施例中,视频游戏应用程序可以使用允许将化身并入视频游戏应用程序 中的一组编程API。API可以允许视频游戏应用程序检索代表化身的数据的结构。在一种 实施例中,然后,视频游戏应用程序可以采用那些结构且将数据合并到其本身的三维人物 系统中,以使得它们可以使用游戏本身的代码在游戏本身的三维环境中渲染并动画化该化 身。借助于执行所有渲染和动画功能的主机系统或应用程序,API还可以允许视频游戏应 用程序将化身渲染到渲染目标或纹理。视频游戏应用程序可以触发动画化,或依赖于“空 闲”的动画来播放,但是它们可以被渲染到二维表面,然后视频游戏应用程序可以呈现该二 维表面。在一个实施例中,API可以允许视频游戏应用程序访问化身的整个身体的静态截 图,该静态截图可以与用户的简档一起保存。通常,视频游戏应用程序可以检索用户的玩 家图片并在游戏中将该图片用作用户的表示。然而,该图片将通常是小(例如,64X64或 32 X 32)图像。在一种实施例中,视频游戏应用程序可以访问化身的较大显示例如整个身体 静态的图像,而不需要使用所渲染的/移动的化身。在一个实施例中,API族和相关的系统组件可以允许在游戏发行之后发行较新的 化身附件。新的化身可以仍然出现在游戏中而不考虑正使用哪一 API族。API可以传递用 在游戏本身已经被发行之后所发行的附件(例如T恤)装饰(例如着装)的化身,这对视 频游戏应用程序几乎没有不利影响。在其它实施例中,API的组件可以是视频游戏平台例如游戏控制台的部分,且可以 独立于视频游戏应用程序而被更新以便改变资产检索逻辑。主机系统或平台可以提供结合 视频游戏应用程序执行的主机应用程序,经由API提供各种服务并提供对信息和资源的访 问权。化身系统可以被设计为使得化身资产的检索可以由主机系统或应用程序执行,而其 特定逻辑可以独立于标题而被更新。因而在稍后的时刻改变用于化身资产检索逻辑。例如, 尽管可以初始地从本地存储检索资产,但可以更新系统以便从因特网检索资产。因而可以 以较新的附件不占用视频游戏应用程序期望可用的另外的资源的方式来预先分配资源。在一个实施例中,视频游戏应用程序可以使用两个API族中的一个或两者其中 一个允许视频游戏应用程序接收原始数据以便构建、渲染和动画化化身本身;另一个中,系 统将所动画化的化身渲染到由视频游戏应用程序提供的目的地。如上所述,一组API可以被视频游戏应用程序用来检索可以被游戏本身的代码用 来在其本身的三维环境中构建、渲染和动画化化身的原始数据。另一组API可以被用于将 给定的用户的化身渲染到所期望的渲染目标或纹理。如果代码中的一些在系统中而非在视频游戏应用程序中运行,则可以在发行之后 更新这些API的内部行为,这允许例如使用替换的检索机制。结合附录中提供的示例性函数可以更好地理解化身API的下列示例性描述。尽管所描述的API公开了一种实施例,但本领域的技术人员应理解,许多这样的实现可以体现 所公开的原理。API中对化身的支持可以包括两个接口 =IXAvatarRendereraX化身渲染 器)可以由开发者用来将化身渲染到给定设备中。开发者可以使用IXAvatarAmmationdX 化身动画)来通过预先确定的系列运动移动化身的各部分。用于创建IXAvatarRenderer 对象和检索IXAvatarAmmation对象的函数可以被包括在API中。使用其本身的游戏引擎 渲染化身的开发者可以使用XAvatarGetAssets (X化身取资产)函数来检索化身的低级描 述。视频游戏应用程序可以通过检索化身数据且然后将化身渲染到设备来使用化 身。视频游戏应用程序可以使用IXAvatarRenderer接口来执行渲染,或者它们可以使用 XAvatarGetAssets加载化身数据且然后渲染数据本身。化身可以以雄性和雌性版本两者提供,尽管相同的骨骼可以被用于两者从而使得 易于设计动画。面部的动画可以通过动画化纹理来实现。例如,眼睛纹理可以具有五个不 同的方向(上、下、左、右和中),且眼睛动作可以通过切换纹理以不同的方向查看来完成。身高和体重可以通过将骨骼中的关节从中间“标准”线性缩放来控制。缩放因子 可以由系统根据需要而改变。视频游戏应用程序可以使用化身来表示玩家。在多玩家游戏中,可以在“游戏大 厅”或其他合适的应用程序中紧接着关于玩家其他信息而示出化身。在游戏中的适当场合 中,化身可以在实际的游戏中用来表示玩家。化身系统不仅可用于表示玩家的化身,而且由于化身显现为人类,化身系统还可 以在游戏中的被用来渲染人、非玩家人物,包括观众、额外人员、游戏展览主办者等等。视频 游戏应用程序可以请求随机生成的化身,以使得任何两群人都看上去不相同。视频游戏应 用程序可以将已登出的简档的化身加载到控制台上,以便在比赛结束时示出骄傲地观看或 者从边线向玩家喝彩的玩家的家人的化身。化身通常旨在向各种人口统计的玩家提供广泛的吸引人的体验。例如,化身可 以在游戏大厅时表示玩家的身份,但是还可以依附于评级系统,诸如娱乐软件分级委员会 (ESRB)的“E10”评级。类似地,被用于化身的动画造型可以是合理的和自然的,且化身运动 可以是动态的和平滑的。在视频游戏应用程序中使用化身时的典型技术考虑是如何渲染和动画化化身。化 身系统可以包括内建渲染器,该内建渲染器可以用于希望将化身合并到它们的现有的引擎 的视频游戏应用程序。内建渲染器可以支持使用预定义的动画。已经具有复杂的渲染引擎 的视频游戏应用程序可偏好访问原始化身数据并使用它们的现有的引擎来渲染和动画化 化身。将化身合并到视频游戏应用程序可以被设计为用可预测的固定资源要求和简单 的API直接进行。视频游戏应用程序通常可以在运行时使用约850kB来渲染一个化身,且 在检索化身数据时使用一些另外的临时存储器。本领域的技术人员应清楚,在此公开的化 身系统和API的各种实施例是示例性,且其他实现是可能的。在一个实施例中,使用XAvataHX化身)API的视频游戏应用程序可以通过链接到 xavatar. lib来这样做。视频游戏应用程序可以在它们调用该库中的任何其他函数之前调 用XAvatarlnitialize (X化身初始化)。此函数为资产检索高速缓存分配大约两兆字节的堆存储器,如果将使用IXAvatarRenderer则加上大约500千字节的另外的堆存储器。在一个实施例中,元数据可以是含有关于化身的组成的信息的二进制大对象。视 频游戏应用程序可以使用XAvatarGetMetadata (X化身取元数据)函数来检索或生成化身 元数据。一旦被检索,元数据就可以作为自变量而被传递给用于化身的实际渲染的其他函 数。元数据格式可以对视频游戏应用程序不透明。在调用XAvatarGetMetadataByXuicKX化身取元数据ByXuid)函数之前,视频游戏 应用程序可以用适当的计数参数调用XAvatarGetMetadataByXuidResultSize(X化身取元 数据ByXuid结果大小)以便检索容纳所请求数量的元数据大对象所需要的元数据结果缓 冲器的大小。然后,该应用程序可以分配缓冲器以便容纳将由该函数返回的元数据,将指向 该缓冲器的指针作为自变量传递给元数据函数。可以通过用玩家的XUID调用XAvatarGetMetadataByXuid函数来检索描述玩家的 化身的元数据。如果以数组来传递多个XUID,则此函数可以在每次调用时检索多于一个化 身。注意,结果缓冲器可以是由XAvatarGetMetadataByXuidResultSize所报告的用于数组 中的XUID的数量的适当大小的——缓冲器大小不必是XUID计数和XAVATAR_METADATA(X 化身元数据)结构的大小的乘积。一些视频游戏应用程序可能出于例如人群的目的想要访问随机化身。这可以通过 使用XAvatarGetMetadataRandonKX化身取元数据随机)函数来检索一个或多个随机创建 的化身而完成。当调用此函数时,可以传递被设置为指向XAVATAR_METADATA结构的数组的 指针。视频游戏应用程序可能还希望显示在此时未登入的玩家的家庭成员的化身。这可 以通过从本地控制台上当前未登入的简档检索化身来实现。首先,视频游戏应用程序可以 使用XAvatarGetMetadataSignedOutProf ileCount(X化身取元数据登出简档计数)函数来 确定控制台上有多少个可用但未登入的简档。此函数可以提供可用简档的计数。然后,视 频游戏应用程序可以用从0到计数-1的有效范围内的索引调用XAvatarGetMetadataSign edOUtPr0file(X化身取元数据登出简档)函数。对于每次调用,指针可以被传递给要用该 简档的化身元数据填充的XAVATAR_METADATA结构。一些视频游戏应用程序可能想要创建当游戏正在执行时使用的具体的化身。例 如,问答游戏可能希望具有由化身玩的宿主人物。一旦被创建,这样的化身的元数据可以被 直接地传递给XAvatarGetAssets或XAvatarCreateRenderer (X化身创建渲染器)。为初 始获取元数据,化身创建器可以被用于创建化身。当化身被保存到关联的开发者工具时, 用于该化身的元数据可以被写入到两个文件devkit \avatar_metadata. h和devkit \ avatar_metadata. bin。如果那些文件已经存在,则它们可以被重写。Avatar_metadata. bin 可以含有化身元数据的简单二进制定义(即,含有告诉化身系统该化身看上去像什么和正 穿戴着什么的信息)。此定义可以被包括在视频游戏应用程序的源代码中。在其它实施例中,XAvatar(X化身)库可以包括可以将化身渲染到给定 的Direct3D设备的渲染器。此渲染器可以通过IXAvatarRenderer类来配置和调 用。视频游戏应用程序可以通过调用XAvatarCreateRenderer函数来为每一化身创建 IXAvatarRenderer实例。此函数可以为化身模型和资产分配大约850千字节的存储器,加 上为可选的化身阴影图分配至多另外的四兆字节的存储器(如果使用的话,阴影图可以是小的(512X512)或大的(1024X1024) 阴影图的选择可以是对XAvatarCreateRenderer 的参数)。可以使用AddRef (添加基准)和Release (释放)来管理渲染器的寿命。 XAvatarCreateRenderer可以立即返回,但是渲染器可通过对在线服务的多次请求来异步 地加载化身资产。如果视频游戏应用程序在所有资产已经被接收之前使用渲染器,则渲染 器可以在化身的位置画出简单的、“等待”图形。视频游戏应用程序可以使用GetStatus(取 状态)来判断化身是否已经被完全加载。在主游戏循环中,视频游戏应用程序可以先调用Update(更新)来根据当前活动 的动画更新化身的位置。接下来,如果视频游戏应用程序正使用化身自阴影化,则可以使用 Rendera^dow(渲染阴影)来为当前的动画位置生成阴影图。一旦化身的位置和阴影图已 经被更新,就可以调用Render (渲染器)函数来将化身描绘到给定的Direct3D设备(视频 游戏应用程序已经提前设置渲染目标和深度缓冲器)。如果游戏循环迭代,则对Update的 重复调用可以对模型动画化,且Renderaiadow和Render可以使所渲染的图像反映化身的 不断改变的姿势。视频游戏应用程序可以设置其本身的用于渲染化身的模型和视图矩阵,但是化 身系统可以提供三个标准视图头、头及肩膀以及整个身体。视频游戏应用程序可以使用 GetMatrices (取矩阵)函数来检索这些标准矩阵。为了跟踪动画化化身,视频游戏应用程 序可以在调用Update之后调用此函数,并将结果传递给Renderaiadow和Render两者。当视频游戏应用程序正使用IXAvatarRenderer类来渲染化身时,化身可以播放 空闲动画的随机化序列。在一个实施例中,使用IXAvatarRenderer类来渲染化身的视频游戏应用程序可 以使用IXavatarAnimation类来为化身指定要执行的动画。动画可以被封装在IXAvatarAnimation对象中。视频游戏应用程序可以使用 XAvatarLoadAnimation (X化身加载动画)函数来加载由XAvatar库定义的动画的预设列表 中的一个。用此函数加载动画可以分配大约200千字节的存储器来容纳动画数据。视频游戏应用程序还可以通过用XAvatarLoadAnimationFromBuffer (X化身从缓 冲器加载动画)函数从存储器缓冲器加载动画来提供其本身的动画。AddRef和Release可以被用于管理动画的寿命。类似于渲染器对象,动画需要花费时间来加载。视频游戏应用程序可以使用 GetStatus函数来确保在尝试使用动画之前动画已经完成加载。动画不可用于播放,直到它 们已经完成加载。视频游戏应用程序可以调用PlayAnimations (播放动画)函数来对动画的列表排 队以供回放。动画可以以它们出现在列表中的次序来播放。默认地,对PlayAnimations的 随后调用可以清空现有的队列、插入新的动画列表以及立即开始播放新的队列中的第一动 画。有可能通过用适当的标志调用PlayAnimations来修改此行为。当回放从一个动画过渡另一动画时,这两个动画可以被混合在一起,以使得化身 的位置不会出现突然的不和谐的改变。视频游戏应用程序可以使用GetCurrentAnimation(取当前动画)来判断哪一动 画当前正在运行。
在一些实施例中,视频游戏应用程序可以选择使用其本身的渲染引擎来渲染和动 画化化身。在这样的情况中,视频游戏应用程序可以显式地加载化身几何和图形资产,且然 后以其本身的方式显式地渲染它们。为了判断容纳化身的资产所要求的缓冲器大小,视频游戏应用程序可以首先调 用XAvatarGetAssetsResultSize (X化身取资产结果大小),并分配所指示大小的两个缓冲 器。第一缓冲器(pResultBuffeHp结果缓冲器))可以容纳化身的几何元数据,而指向GPU 资源(顶点数组、纹理等等)的指针被存储在第二缓冲器(pGpuResourceBuffeHpGpu资源 缓冲器))。由pGpuResourceBuffer指向的缓冲器可以在4096字的边界开始,以使得在存 储器中适当地对齐纹理。然后,pResultsBuffer和 pGpuResourceBuffer 缓冲器可以被传递给 XAvatarGetAssets,XAvatarGetAssets可以用所请求的资产来填充它们。在附录中列出了 示例性格式。资产检索可以涉及对在线服务的多次查询以便检索所有资产。视频游戏应用程序 必须遵循用于此操作的标准X异步编程实践。可以通过调用^(CancdOverlappecKX取消覆 盖)来取消的活动的XAvatarGetAssets请求。当不再使用XAvatar库功能时,视频游戏应用程序可以调用XAvataraiutdown (X 化身关闭)函数来释放该库所占用的存储器和资源。视频游戏应用程序可以初始化该库,使用它一段时间,关闭该库,且然后稍后 再次初始化该库以供另外使用。一个这样的场景是在游戏大厅中但不在玩游戏期间使 用化身的视频游戏应用程序。这样的视频游戏应用程序可以在进入游戏大厅时初始化 XAvatar库,在大厅中使用库,且然后当转移到玩游戏时调用XAvataraiutdown、释放用于 游戏的存储器和资源。当游戏结束且玩家返回到大厅时,视频游戏应用程序可以再次调用 XAvatarlnitialize以便开始再次使用XAvatar库。现在参见图13,所阐释的是包括一个或多个化身渲染引擎1304、1306和1309的示 例性视频游戏系统1302。游戏标题420和422 (也被称为视频游戏应用程序)可以在视频 游戏系统1302上执行。第一视频游戏标题420可以包括化身渲染引擎1312。标题420可 以经由API 1310向视频游戏系统1302请求并从中接收化身数据。所接收的数据1314可 以由游戏的渲染引擎1312用于使用渲染引擎1312中游戏标题本身的渲染代码来渲染一个 或多个化身。第二游戏标题422可以包括或不包括其本身的化身渲染引擎。在任一种情况 中,游戏标题422可以通过使用一个或多个渲染引擎1304、1306或1309来选择使用视频游 戏系统的化身渲染服务。游戏标题422可以使用在数据1316中包括了一个或多个化身目 标位置的API 1310启动进程。然后,视频游戏系统1302可以在目标位置渲染所请求的化 身。无论系统渲染化身还是游戏标题渲染化身,在一些情况中,可以从在线游戏服务1308 检索化身。图14和15描绘用于实现允许包括化身渲染器在内的视频游戏系统将化身渲染 到由在视频游戏系统上执行的视频游戏应用程序提供的目的地的应用程序编程接口(API) 的操作过程的示例。该过程可以包括操作1400、1410、1420、1430、1435、1440和1450。参见 图14,操作1400开始操作过程,且操作1410阐释向视频游戏应用程序告知化身渲染器被激 活。操作1420阐释接收关于视频游戏应用程序正使用左手坐标系还是右手坐标系的指示。
16在操作1430中标识要为化身渲染器和化身的元数据分配的存储器的量。操作1440阐释传 递用于一个或多个玩家简档的元数据,且操作1450阐释指示是否应为每一渲染器分配阴 影图。继续图15,操作1500阐释传递与视频游戏系统一起提供的另外的动画。操作1510 阐释向视频游戏应用程序告知当前正在播放哪一动画。在操作1520中,基于头、头及肩或 整个身体视图的中的一个来对视频游戏系统查询模型和视图矩阵。操作1530阐释查询在 线游戏服务以便检索化身数据。操作1540阐释化身数据是三维数据。操作1550阐释提供对多个随机化身的访问 权,且操作1560阐释为多个随机化身中的一个指定雄性身体或雌性身体。在操作1570中, 从视频游戏系统上当前未登入的简档检索化身数据。可以在方法、系统、计算机可读介质、或任何类型制品中实现任何上述方面。例如, 图16中,计算机可读介质可以在其上存储用于实例化允许在视频游戏系统中执行的视频 游戏应用程序在由视频游戏应用程序选择的渲染目的地渲染一个或多个化身的API的计 算机可执行指令。这样的介质可以包括用于展示接口的指令的第一子集,该接口允许视频 游戏应用程序访问数据以便将渲染化身到由视频游戏应用程序1610选择的渲染目标或纹 理。本领域的技术人员应明白,另外的指令集可以被用于捕捉在此公开的各种其他方面,且 在本公开内容中,目前公开的指令的三个子集可以在细节上变化。例如,指令还可以包括用于传递由视频游戏系统提供的另外的动画的指令1620。 指令还可以包括用于向视频游戏应用程序告知当前正在播放哪一动画的指令1630,以及用 于基于头、头及肩或整个身体视图的中的一个来对视频游戏系统查询模型和视图矩阵的指 令。例如,指令还可以包括用于查询在线游戏服务以便检索化身数据的指令1640。指 令还可以包括用于提供对多个随机化身的访问权的指令1650,以及用于从视频游戏系统上 当前未登入的简档检索化身数据的指令。图17和18描绘允许在视频游戏系统中执行的包括化身渲染功能在内的视频游 戏应用程序接收用于构建、渲染和动画化化身的数据的操作过程的示例。该过程可以包括 操作1700、1710、1720、1730、1740和1750。参见图17,操作1700开始操作过程,且在操作 1710中实现API,该API被配置为展示一接口,该接口允许视频游戏应用程序访问用于表示 所述化身的数据并将该数据合并到所述渲染功能中。操作1720阐释请求用于存储该数据 的数据缓冲器大小。操作1730阐释根据所述缓冲器大小分配存储器空间。操作1740阐释 指定用于检索的化身组件,其中可以请求所述化身的整个身体,且操作1750阐释指示请求 用于所述化身的数据。继续图18,操作1800阐释包括化身渲染器在内的视频游戏系统。操作1810阐释 允许化身渲染器将所述化身渲染到由视频游戏应用程序提供的目的地。操作1818阐释查 询在线游戏服务以便检索在发行视频游戏应用程序之后所发行的化身数据,且在操作1830 中,该API包括可以独立于视频游戏应用程序而被更新的化身资产检索逻辑。示例性游戏和计算环境以上所讨论的计算设备和附件可以被具体化为游戏控制台、音乐播放器、个人计 算机、控制器、远程控制设备和具有不同的、相似的、或相同的平台的其他此类设备。参见图11,框图示出可以按邻近性和运动能力用于结合带有照明激活的各种附件使用的示例性多 媒体控制台。此控制台包括面向游戏的控制台或PC,它可以包括例如数字音频处理功能。具体 地,在图11中,示出多媒体控制台100,带有具有1级(Li)高速缓存102、2级(U)高速缓 存104的中央处理单元(CPU) 101和闪存R0M(只读存储器)106。1级缓存102和2级缓存 104可以暂时地存储数据且因此减少存储器访问周期的数量,由此改善处理速度和吞吐量。 闪存ROM 106可以存储在多媒体控制台100通电时的引导进程的初始阶段期间加载的可执 行代码。或者,在初始引导阶段期间加载的可执行代码可以被存储在闪存设备(未示出) 中。此外,R0M106可以与CPU 101分开。这些存储器设备可以高速缓存上述的应用程序、 程序、小应用程序、托管代码等等的部分或整体。此外,这些存储器设备可以在逐个存储器 单元的基础上存储敏感信息和非敏感信息,如以上所讨论。任何此类信息可以至少部分被 用于协助动画化化身,如以上所讨论。图形处理单元(GPU) 108和视频编码器/视频编解码器(编码器/解码器)114可 以形成用于高速和高分辨率图形处理的视频处理流水线。数据可以经由总线从图形处理单 元108运载到视频编码器/视频编解码器114。视频处理流水线可以将数据输出到A/V (音 频/视频)端口 140以便传送给电视机或其他显示器。存储器控制器110可以被连接到 GPU 108和CPU 101以便促进处理器对各种类型的存储器112例如但不限于RAM(随机存取 存储器)的访问。因而,无论是否敏感,各种类型的信息或甚至各种类型的信息的部分,可 以取决于需要而被存储在以上所讨论的各种类型的存储器上。多媒体控制台100可以包括可以优选地被实现在模块118上的I/O控制器120、 系统管理控制器122、音频处理单元123、网络接口控制器124、第一 USB主机控制器126、第 二 USB控制器1 和前面板I/O子部件130。USB控制器1 和1 可以充当用于外围控 制器142(1)-142 )、无线适配器148和外部存储器单元146 (例如,闪存、外部⑶/DVDROM 驱动器、可移动介质等等)的主机。这样的外围控制器142(1)-142( 可以具有由邻近性 和运动触发的各种类型的照明显示器。此外,网络接口 1 和/或无线适配器148可以提 供对网络(例如,因特网、家庭网络等等)的接入,且可以是包括以太网卡、调制解调器、蓝 牙模块、有线电视调制解调器等等在内的多种有线或无线接口组件中的任何接口组件。可以提供系统存储器143以便存储在引导进程期间加载的应用程序数据。可以提 供介质驱动器144,且它可以包括DVD/CD驱动器、硬盘驱动器或其他可移动介质驱动器等 等。介质驱动器144可以内置或外置于多媒体控制台100。可以经由介质驱动器144访问 应用程序数据以便由多媒体控制台100执行、播放等等。介质驱动器144可以经由诸如串 行ATA总线或其他高速连接(例如,IEEE 1394)等的总线连接到I/O控制器120。除了这 样的应用程序数据之外,帮助在外围/附件设备控制器和控制台100本身之间通信的其他 信息可以被存储在控制台100上。系统管理控制器122可以提供各种服务功能以便确保多媒体控制台100的可用 性。音频处理单元123和音频编解码器132可以根据上述目前所公开的本主题的各方面形 成具有高保真度、三维、环绕和立体音频处理的对应音频处理流水线。可以经由通信链接在 音频处理单元123和音频编解码器1 之间运载音频数据。音频处理流水线可以将数据输 出到A/V端口 140以便由外部音频播放器或具有音频能力的设备再现。
前面板I/O子部件130可以支持电源按钮150和弹出按钮152以及任何LED (发光 二极管)或暴露在多媒体控制台100的外表面的其他指示器的功能。系统电源模块136可 以提供向多媒体控制台100的组件供电。风扇138可以冷却多媒体控制台100内的电路。CPU 10UGPU 108、存储器控制器110和多媒体控制台100内的各种其他组件可以 经由一个或多个总线而互连,这些总线包括串行总线和并行总线、存储器总线、外围总线和 处理器或使用任何各种总线体系结构的处理器总线或本地总线。当多媒体控制台100被通电或重启时,应用程序数据可以从系统存储器143被加 载到存储器112和/或高速缓存102、104中,且在CPU 101上执行。这样的应用程序数据可 以包括在线得到数据中的一些,包括以上讨论的化身包。应用程序还可以呈现当导航到在 多媒体控制台100上可用的不同介质类型时提供一致的用户体验的图形用户界面。用户可 以使用这样的用户界面装饰化身。在操作中,介质驱动器144内含有的应用程序和/或其 他介质可以从介质驱动器144启动或播放,以便向多媒体控制台100提供另外的功能。而 且,包括游戏视频游戏应用程序在内的这样的介质是用于装饰化身的基础。多媒体控制台100可以通过简单地将系统连接到电视机或其他显示器来作为单 机系统而操作。在此单机模式中,多媒体控制台100可以允许一个或多个用户与系统交互、 看电影、听音乐等等。然而,借助于通过网络接口 1 或无线适配器148可用的宽带连接性 的集成,多媒体控制台100还可以作为计算设备的较大的网络社区的参与者而操作。作为 这样的参与者,它可以与无论是PC还是服务器的计算设备交互,且接收可以最终存储起来 的信息。接下来,图12阐释参考图1-图11和图13-图18讨论的本主题的示例性连网环 境。上述所讨论的控制台100可以对应于前述的计算设备中的任何一个,或其可以被分布 在这样的设备上。其可以经由通信网络/总线巧4与各种其他对象155和存储设备158交 互,其中这样的对象155和设备158可以对应于其他计算设备(无论是硬件、固件还是软 件)。控制器142(1)-142(2)可以使用所示出的通信网络154以有线方式或无线地经短距 离或远距离与控制台100通信。这样的通信可以由连接到通信网络IM的各种计算设备 156、153、157 辅助。在整个本公开内容中使用的术语电路可以包括专用硬件组件。在相同的或其他实 施例中,电路可以包括被配置为由固件或开关执行功能的微处理机。在相同的或其他的示 例实施例中,电路可以包括一个或多个通用处理单元和/或多核处理单元等等,当包含可 用于执行功能的逻辑的软件指令被加载到存储器例如RAM和/或虚拟存储器中时,可以配 置这些处理单元。在示例实施例中,电路包括硬件和软件的组合,实现者可以写出包含逻辑 的源代码,且源代码可以被编译成可以由通用处理单元处理的机器可读代码。最终,还应注意,在此描述的各种技术可以结合硬件或软件或如果适当的话结合 两者的组合来实现。因而,目前所公开的本主题的方法和装置或其某些方面或部分可以采 取包含在有形存储介质中的程序代码(即,指令)的形式,有形存储介质例如软盘、CD-ROM、 硬盘或任何其他机器可读存储介质,其中,当程序代码被加载到机器例如计算机中并由机 器例如计算机执行时,机器变成用于实践本主题的装置。在可编程的计算机上执行的程序代码的情况中,计算设备可以一般地包括处理 器、可由处理器读取的存储介质(包括易失性和非易失性存储器和/或存储元件)、至少一个输入设备和至少一个输出设备。一个或多个程序可以例如通过使用数据处理应用程序编 程接口(API)等等来利用本发明的域专用编程模型方面的创建和/或实现,优选地以高级 过程编程语言或面向对象编程语言来实现所述一个或多个程序,以便与计算机系统通信。 然而,如果期望的话,可以用汇编语言或机器语言实现程序。在任何情况下,语言可以是编 译语言或解释语言及其组合。最终,尽管正如在各个图所阐释的和上文所讨论的那样已经结合多个示例性方面 来描述本公开内容,但应理解,在不偏离本公开内容的前提下,可以使用其他相似的方面, 或者可以对所描述的方面进行修改和添加以执行本公开内容的相同功能。例如,在本公开 内容的各种方面中,描述了被配置成提供化身的动画装饰的方法、系统和计算机可读介质。 然而,与这些所描述的方面等同的其他机制也由在此的教导涵盖。因此,本公开内容不应限 于任何单个方面,而是在根据所附权利要求的宽度和范围内解释。SSAPI 基准初始化和关闭函数XAvatarInitialize视频游戏应用程序可以在调用任何其他化身函数之前初始化化身系统。XAPIHRESULTWINAPIXAvatarInitialize (IN XAVATAR_COORDINATE_SYSTEMeCoordinateSystem,IN DWORD dwFlags,IN DWORDdwJo int sBuf f erCount,
IN LPDIRECT3DDEVICE9 device);参数eCoordinateSystem (e坐标系)指示视频游戏应用程序正在使用左手坐标系还是 右手坐标系。dwFlags (dw 标志)当前被用于用 XAVATAR_INITIALUE_FLAGS_ENABLERENDERER (X 化身_初始化_标志_启动渲染器)指定渲染器是否被激活。dwJointsBufferCount (dw关节缓冲器计数)在不启用渲染器时忽略,然而在别的 方面必须在2和4之间(含),并指定每个化身渲染器应分配多少关节缓冲器。这是因为当 化身渲染器被更新到最后的动画帧时,所构建的关节矩阵被复制到可以由顶点着色器在渲 染期间访问的顶点缓冲器中。为了防止在此锁定缓冲器上的争用,应使用多个缓冲器。当 发生这样的争用时,显示调试信息,指示此值应被增加。device (设备)在不启用渲染器时也被忽略。如果启用渲染器,则所提供的设备将 内部用于准备化身渲染流水线(创建着色器等等)。
返回值如果成功,就返回S_0K,否则返回错误代码。备注基于输入参数而初始化为化身系统分配的存储器。XAvatarlnitialize总是分配 大约2兆字节来高速缓存化身资产。如果dwFlags 参数使 AVATAR_INITIALIZE_FLAGS_ENABLERENDERER 置位,则分配大 约500千字节来存储所共享的空闲的动画。从正则堆进行分配。XAvatarShutdown关闭化身系统并释放由系统使用的空闲存储器和资源。XAPIVOIDWINAPIXAvatarShutdown (VOID);备注当运行时,视频游戏应用程序可以重复地初始化和关闭化身系统,只要 在Xavatarlnitialize被再次调用之前,对XAvatarlnitialize的每一次调用与对 XAvataramtdown的匹配调用配对。如果在游戏大厅而非在玩游戏期间使用化身,则视频游 戏应用程序可能这样做。化身系统当进入大厅时可以被初始化,并且当离开大厅时被关闭。通过对XAvatarlnitialize的调用而要求的存储器和系统资源将不被释放,直到 XAvatarShutdown 已被调用。元数据函数在检索化身的资产用于显示之前,必须检索化身的元数据。此元数据被存储在用 户的简档中,且是含有关于化身的组成的内部信息的二进制大对象。元数据格式对视频游 戏应用程序不透明。XAvatarGetMetadataByXuid视频游戏应用程序可以检索一个或多个X简档的元数据XAPIHRESULTWINAPIXAvatarGetMetadataByXuid(IN DWORDdwUserIndexRequester,IN DWORDdwXuidCount,IN const XUID * pXuids,OUT HRESULT *pResults,
OUT XAVATAR_METADATA *pAvatarMetadata,IN OUT PXOVERLAPPED pOverlapped);参数dwUserlndexRequester(dw用户索引请求器)是请求元数据的玩家的本地用户索 引。dwXuidCount (dwXuid 计数)是 pXuids 数组中 XUID 的数量。pXuids是其元数据将被检索的XUID的数组。pResults(p结果指向其中返回指示在检索具体的XUID的化身元数据时成功或失 败的结果代码的缓冲器。将此缓冲器看作是dwXuidCount HRESULT(H结果)的数组,其中 pResults[n]的值是检索pXuids [η]的元数据的结果。pResultBuffeHp结果缓冲器)是将返回结果的缓冲器。一旦成功完成,此 缓冲器就可以被看作是XAVATAR_METADATA的数组。如果pResults [η]指示失败,则 pAvatarMetadata [η]中的 XAVATAR_METADATA 将是无效的。pOverlapped (ρ重叠)是指向用于监控检索操作的状态的X0VERLAPPED (X重叠) 结构的指针。如果pOverlapped是NULL,则操作被同步地完成。返回如果函数成功且立即返回则返回ERR0R_SUCCESS (出错_成功),返回ERR0R_ I0_PENDING(出错_10_待决)指示异步的重叠的操作待决,或者返回ERR0R_FUNCTI0N_ FAILED (出错_函数_失败)。如果返回ERR0R_FUNCTI0N_FAILED,则可以调用 XgetOverlappedExtendedError (X 取重叠扩展错误)来检索扩展的错误信息。XAvatarGetMetadataLocalUser (X 化身取元数据本地用户)检索本地用户的元数据。XAPIHRESULTWINAPIXAvatarGetMetadataLocalUser(IN DWORDdwUserlndex,OUT XAVATAR_METADATA *pAvatarMetadata,IN OUT XOVERLAPPED * pOverlapped);参数dwUserlndex (dw用户索引)是其化身元数据正在被请求的玩家的本地用户索引。pAvatarMetadata (ρ化身元数据)一旦成功完成,此指针就指向所指示的玩家的 化身元数据。
22
pOverlapped是指向用于监控检索操作的状态的XOVERLAPPED结构的指针。如果 pOverlapped是NULL,则操作被同步地完成。返回如果函数成功且立即返回则返回ERROR_SUCCESS,返回ERROR_IO_PENDING指示异 步的重叠的操作待决,或者返回ERROR_FUNCTION_FAILED。如果返回ERROR_FUNCTION_FAILED,则可以调用 XgetOverlappedExtendedError 来检索扩展的错误信息。XAvatarGetMetadataRandom(X 化身取元数据随机)—些视频游戏应用程序想要访问随机化身的范围以用于类似于人群的事物。此函 数返回一个或多个随机生成的化身的元数据。XAPIHRESULTWINAPIXAvatarGetMetadataRandom(IN XAVATAR_BODY_TYPE_MASK BodyTypeMask,IN DWORD dwAvatarCount,OUT XAVATAR_METADATA *pAvatarMetadata,IN OUT PX0VERLAPPED pOverlapped);参数BodyTypeMask (体型掩码)是指定随机化身应使用哪种体型(雄性或雌性)的位掩码。dwAvatarCount (dw化身计数)指定要创建的随机化身的数量。pAvatarMetadata 一旦成功完成,此缓冲器就可以看作是带有用dwAvatarCount 元素的XAVATAR_METADATA的数组。pOverlapped是指向用于监控检索操作的状态的XOVERLAPPED结构的指针。如果 pOverlapped是NULL,则操作被同步地完成。返回如果函数成功且立即返回则返回ERR0R_SUCCESS,返回ERR0R_I0_PENDING指示异 步的重叠的操作待决,或者返回ERR0R_FUNCTI0N_FAILED。如果返回ERR0R_FUNCTI0N_FAILED,则可以调用 XGetOverlappedExtendedError 来检索扩展的错误信息。XavatarGetMetadataSignedOutProf ileCount (X 化身取元数据登出简档计数)返回在控制台上但当前未登入的简档的计数。XAPIDWORDWINAPIXAvatarGetMetadataSignedOutProfiIeCountQ ;
返回返回在控制台上当前未登入的简档的数量。备注把所返回数量用作用XAvatarGetMetadataSignedOutProfile枚举登出的简档的 索引。XavatarGetMetadataSignedoutProfile (X 化身取元数据登出简档)检索登出的简档的化身元数据。XAPIHRESULTWINAPIXAvatarGetMetadataSignedOutProfile(IN DWORD dwProfilelndex,OUT XAVATAR_METADATA *pAvatarMetadata,IN OUT PXOVERLAPPED pOverlapped);参数dwProf ilelndex (dw简档索引)是所请求的简档的索引。此值的范围应从零至小 Tfi XavatarGetMetadataSignedOutProfileCount 31( 白勺i+·。pAvatarMetadata是保存所请求的元数据的缓冲器。pOverlapped是指向用于监控检索操作的状态的X0VERLAPPED结构的指针。如果 pXOverlapped是NULL,则操作被同步地完成。返回如果函数成功且立即返回则返回ERR0R_SUCCESS,ERR0R_I0_PENDING以指示异步 的重叠的操作待决,或者返回ERR0R_FUNCTI0N_FAILED。如果返回ERR0R_FUNCTI0N_FAILED,则可以调用 XGetOverlappedExtendedError 来检索扩展的错误信息。备注视频游戏应用程序将使用此函数来获取用户的朋友和家庭的化身元数据,以将 “已知的”化身放入游戏中。XAvatarMetadataGetBodyType (X 化身元数据取体型)从化身的元数据返回体型——雄性或雌性XAPIXAVATAR_B0DY_TYPEWINAPIXAvatarMetadataGetBodyType(IN CONST XAVATAR_METADATA *pMetadata);
24
参数pMetadata (ρ元数据)是指向有效的XAVATAR_METADATA大对象的指针。返回适当的位被置位来指示体型的XAVATAR_BODY_TYPE (X化身_体型)。备注元数据大对象对视频游戏应用程序而言不透明,且它们的格式经受改变。使用此 函数而不是尝试直接从元数据提取此信息。化身资产数据函数如果视频游戏应用程序希望使用其本身的系统来渲染和动画化化身,则首先必须 检索定义那些化身的底层数据。XAvatarGetAssetsResultSize (X 化身取资产结果大小)返回将保存化身资产数据的数据缓冲器的大小。XAMINLINEHRESULTWINAPIXAvatarGetAssetsResultSize(IN XAVATAR_C0MP0NENT_MASK ComponentMask,OUT DWORD * pcbResultBuffer,OUT DWORD 女pcbGpuResourceBuffer);参数ComponentMask (组件掩码)是用于指定要求哪些资产的位字段。结合XAVATAR_ C0MP0NENT_MASK (X化身_组件_掩码)值来指定所要求的资产。想要检索整个身体的视频 游戏应用程序应使用XAVATAR_C0MP0NENT_MASK_ALL (X化身_组件_掩码_全部)。pcbResultBuffer (pcb结果缓冲器)指向一 DWORD,该DWORD在成功完成时含有 保存所请求的资产所需的以字节为单位的资产数据缓冲器的必要大小。pcbGpuResourceBuffer (pcb Gpu 资源缓冲器)指向一 DWORD,该 DWORD 在成功完 成时含有保存所请求的资产所需的以字节表示的GPU资源缓冲器的必要大小。返回如果成功,就返回S_0K,否则返回错误代码。备注然后,视频游戏应用程序必须分配这些大小的两个缓冲器来保存所检索的化身数 据。这些缓冲器中的第二个最适宜作为物理分配在4096字节边界上完成,使得其将含有的 纹理可以被构造在适当的位置。XAvatarGetAssets (X 化身取资产)加载渲染化身所需的资产。XAPIHRESULT
WINAPIXAvatarGetAssets (IN CONST XAVATAR_METADATA *pMetadata,IN XAVATAR_COMPONENT_MASKComponentMask,IN DWORDcbResultBuffer,OUT XAVATAR_ASSETS *pResultBuffer,IN DffURUcbGpuRe sourceBuffer,OUT VOID *pGpuRe sourceBuffer,IN OUT PXOVERLAPPEDpOverlapped);参数pMetadata指向其资产正在被检索的化身的元数据。ComponentMask是用于指定要求哪些资产的位字段。结合XAVATAR_COMPONENT_ MASK值来指定所要求的资产。想要检索整个身体的视频游戏应用程序应使用XAVATAR_ COMPONENT_MASK_ALL。cbResultBuffer (cb结果缓冲器)是由pResultBuffer (ρ结果缓冲器)指向的缓 冲器以字节为单位的的大小。pResultBuffer是将保存资产数据的缓冲器。cbGpuResourceBuffer (cbGpu 资源缓冲器)是由 pGpuResourceBuffer (pGpu 资源 缓冲器)指向的缓冲器以字节为单位的大小。pGpuResourceBuffer是将保存用于化身的GPU资源的缓冲器。pOverlapped是指向用于监控检索操作的状态的X0VERLAPPED结构的指针。如果 pXOverlapped是NULL,则操作被同步地完成。返回如果函数成功且立即返回则返回ERR0R_SUCCESS,返回ERR0R_I0_PENDING指示异 步的重叠的操作待决,或者返回ERR0R_FUNCTI0N_FAILED。如果返回ERR0R_FUNCTI0N_FAILED,则可以调用 XGetOverlappedExtendedError 来检索扩展的错误信息。备注此操作可以涉及对X LIVE的查询以检索化身当前正在穿着或用其装饰的三维资 产的整个集合。因为X LIVE查询的可能性,尤其是在将来控制台系统更新时,视频游戏应 用程序应预期此操作进行若干秒。一旦完成,化身数据被写入视频游戏应用程序提供的结果缓冲器。此格式的当前定义在附录A中给出。pResultBuffer内部的分层结构的各个成员将指向被存储在pGpuResourceBuffer 内部的缓冲器,尤其对于例如纹理和顶点的项。纹理是放置在pGpuResourceBuffer中的第 一项,这是由于它们的大的对齐要求。尽管不是强制性的,但推荐pGpuResourceBuffer缓 冲器是在4096字节边界上的物理分配,使得纹理可以被构造在适当的位置。还可以使用XCancelOverlapped(X取消重叠)来取消活动的XAvatarGetAssets 请求。IXAvatarRenderer 函数XAvatarCreateRenderer创建给定化身的新的IXAvatarRenderer对象。XAPIHRESULTWINAPIXAvatarCreateRenderer(IN PXAVATAR_METADATA pMetadata,IN XAVATAR_C0MP0NENT_MASKComponentMask,IN XAVATAR_SHADOff_SIZE evatarShadowSize,OUT IXAVATARRENDERER * *ppAvatarRenderer);参数pMetadata指向由此IXAvatarRenderer对象渲染的化身的元数据。ComponentMask指定化身的哪些部分将被渲染。eAvataramdowSizek化身阴影大小)指示渲染器应使用什么大小阴影图。指 定XAVATAR_SHAD0W_SIZE_N0NE (X化身_阴影_大小_无)以禁用阴影图,指定XAVATAR_ SHAD0W_SIZE_SMALL(X化身_阴影_大小_小)以使用小的(512X512像素)阴影图,而 指定XAVATAR_SHADOW_SIZE_LARGE (X化身_阴影_大小_大)以使用大的(10 X 1024像 素)阴影图。注意,如备注中所描述,使用阴影图引起渲染器分配另外的存储器。ppAvatarRenderer (pp化身渲染器)指针的地址,如果成功返回,则指向曾经调用 AddRef 一次的 IXAvatarRenderer 对象。返回如果成功,就返回S_0K,否则返回错误代码。备注此函数分配下列量的存储器 850KB+(化身模型和资产)(eAvatarShadoffSize == XAVATAR_SHAD0ff_SIΖΕ_Ν0ΝΕ ? OMB) +(eAvatarShadoffSize = = XAVATAR_SHAD0ff_SIZE_SMALL ? 0. 5MB) +(eAvatarShadoffSize == XAVATAR_SHAD0ffSIZELARGE ? 1. 0MB)
27
(自阴影图)大部分 850KB由物理分配组成,因为这些为纹理、顶点等等。AddRef和Release用于管理渲染器的寿命。注意,尽管此函数立即返回,但渲染器在其渲染化身之前花费一些量的时间来检 索所有资产。因为化身检索可以涉及对X LIVE作出多个请求,所以在渲染器能够显示化身 之前,时间可过去若干秒。如果在渲染器完成初始化之前,IXAvatarRenderer: =Render被 调用,则其将渲染通用的“等待”图形。IXAvatarRenderer:GetStatus返回IXAvatarRenderer对象的当前渲染状态。XAPIHRESULTWINAPIIXAvatarRendererGetStatus();返回如果渲染器准备渲染化身,则返回S_0K。如果化身仍然正在被检索,则返回E_ PENDING(E_待决)。如果渲染器已经遇到错误,则返回E_FAIL(E_失败)。因为化身检索可以涉及对X Live作出多个请求,所以在创建渲染器之后且在化身 被显示之前,时间可以过去若干秒。IXAvatarRenderer:Update将化身的几何形状在当前的动画中更新到指定时间。XAPIHRESULTWINAPIIXAvatarRendererUpdate(IN FLOATfElapsedTime);参数fElapsedTime (f逝去时间)是自从最近调用Update之后的毫秒数。返回如果成功,就返回S_0K,否则返回失败代码。备注在化身被渲染之前,每次通过视频游戏应用程序的渲染循环时,就应调用 IXAvatarRendererUpdate。通过传递fElapsedTime参数的适当的值,视频游戏应用程序可以暂停、加速或减 慢动画。0值将暂停视频,而小于实际的逝去时间的值将减慢动画,且大于实际的逝去时间 的值将加速动画。IXAvatarRendererRenderShadow
生成化身的当前的状态的阴影图。XAPIHRESULTWINAPIIXAvatarRendererRenderShadow(IN LPDIRECT3DDEVICE9pDevice,IN XMMATRIXModel,IN XMMATRIXView,IN XMMATRIXProjection);参数pDeViCe(p设备)是指向当前的渲染目标的指针。Model (模型)是当前的模型变换。View(视图)是当前的视图变换。Projection(投影)是当前的投影变换。返回如果成功,就返回S_0K,否则返回错误代码。备注IXAvatarRenderer RenderShadow 写入 EDRAM0在 IXAvatarRenderer: Update 已经被调用以更新 之后,且在IXAvatarRenderer: Render被调用以渲染化身 IXAvatarRendererRenderShadow0IXAvatarRenderer:Render将化身渲染到给定目标。XAPIHRESULTWINAPIIXAvatarRenderer:Render(IN LPDIRECT3DDEVICE9 pDevice,IN XMMATRIXModel,IN XMMATRIXView,IN XMMATRIXProjection);参数pDevice是当前的渲染目标的指针。Model是当前的模型变换。View是当前的视图变换。!Projection是当前的投影变换。
化身的位置 之前,应调用
返回如果成功,就返回S_0K,否则返回错误代码。备注在IXAvatarRenderer Update已经更新动画 状态且 IXAvatarRenderer: RenderShadow已经渲染阴影图以匹配最后的动画状态之后,应调用 IXAvatarRendererRender。视频游戏应用程序必须在调用此函数之前设置* pDevice的渲染目标和深度缓 冲器。IXAvatarRendererGetMatrices对以下三个标准视图中的一个检索适当的模型和视图变换矩阵头;头及肩;或 整个身体。XAPIHRESULTWINAPIIXAvatarRendererGetMatrices(IN XAVATAR_RENDER_VIEff eView,OUT XMMATRIX * pModel,OUT XMMATRIX 女 pView);参数eView(e视图)指定其变换矩阵被请求的标准视图。pModel (ρ模型)指向XMMATRIX(XM矩阵)。如果成功,则矩阵被设置为所请求的 模型变换矩阵。pView (ρ视图)指向XMMATRIX。如果成功,则矩阵被设置为所请求的视图变换矩阵。返回如果成功,就返回S_0K,否则返回错误代码。备注视频游戏应用程序在对IXAvatarRenderer: Update的每一次调用之后应调用此 函数来检索新的矩阵,且然后,将新的矩阵传送到IXAvatarRenderer: RenderShadow和 IXAvatarRenderer: :Render两者。这将保证化身即使正在动画化时也被正确地跟踪。这对 于放大的头部截图尤其重要。还重要的是,相同的矩阵被传送到IXAvatarRenderer: RenderShadow和 IXAvatarRenderer: Render两者,使得阴影图匹配渲染。XAvatarRenderffaiting (X 化身渲染等待)渲染用于指示化身元数据仍然正在下载的“等待”动画。XAPIHRESULTWINAPI
XAvatarRenderffaiting(IN LPDIRECT3DDEVICE9device,IN XMMATRIX modelMatrix,IN XMMATRIX viewMatrix,IN XMMATRIX projectionMatrix);参数pDevice是指向当前的渲染目标的指针。Model是当前的模型变换。View是当前的视图变换。ftOjeetion是当前的投影变换。返回如果成功,就返回S_0K,否则返回错误代码。备注当视频游戏应用程序希望显示化身但是仍然正在等待从LIVE服务返回的元数据 时,视频游戏应用程序应使用此函数。三个矩阵应与将被提供给IXAvatarRenderer Render的那些矩阵相同。IXAvatarAnimation 函数XAvatarLoadAnimation (X 化身力口载动画)通过从化身系统加载库存动画来创建IXAvatarAnimation对象。XAPIHRESULTWINAPIXAvatarLoadAnimation(IN const XAVATAR_ASSETID * Assetld,OUT IXAVATARANIMATION * *ppAvatarAnimation,);参数AssetIcK资产id)是表示被包括在化身系统中的库存动画的所定义的一组常量 中的一个。一组动画标识符在 xavatar. h XAVATAR_ASSETID_ANIMAT10N_CLAP (X 化身 _ 资 产 ID_动画 _ 拍手)、XAVATAR_ASSETID_ANIMATION_WAVE (X 化身 _ 资产 ID_ 动画 _ 挥手等寸。ppAvatarAnimation (pp化身动画)是指向所返回的IXAvatarAnimation对象的指 针的地址。返回如果成功,就返回S_0K,否则返回错误代码。备注·此函数分配下列量的存储器
200KB (动画数据)·此操作可以涉及对X LIVE的查询。因为X LIVE的查询的可能性, 所以视频游戏应用程序应预期此操作将进行若干秒。视频游戏应用程序应使用 IXAvatarAnimation: GetStatus函数来判断动画何时准备好被使用。· AddRef 和 Release 用于管理 IXAvatarAnimation 对象的寿命。XAvatarLoad AnimationFromBuffer从含有动画描述的存储器缓冲器创建IXAvatarAnimation对象。XAPIHRESULTWINAPIXAvatarLoadAnimationFromBufTer(IN VOID 女 ρAnimationBuffer,IN DWORD cbAnimationBuffer,OUT IXAVATARANIMATION * *ppAvatarAnimation,);参数pAnimationBuffer(p动画缓冲器)指向动画描述。cbAnimationBuffer (cb动画缓冲器)指定以字节为单位的动画缓冲器的大小。ppAvatarAnimation是指向所返回的IXAvatarAnimation对象的指针的地址。返回如果成功,就返回S_0K,否则返回错误代码。备注·此函数分配下列量的存储器 200KB (动画数据)·此操作可以涉及对X LIVE的查询。因为X LIVE的查询的可能性, 所以视频游戏应用程序应预期此操作将进行若干秒。视频游戏应用程序应使用 IXAvatarAnimation: GetStatus函数来判断动画何时准备好使用。· AddRef 和 Release 用于管理 IXAvatarAnimation 对象的寿命。IXAvatarAnimation:GetStatus返回 IXAvatarAnimation 对象的状态。XAPIHRESULTWINAPIIXAvatarAnimation:GetStatus();返回如果动画已经被加载,则返回值将通常是S_0K,如果动画未能加载,则返回值将通 常是E_FAIL,或如果化身仍然正在加载,则返回值将通常是E_PENDING。动画在其已被加载之前不可用于回放。IXAvatarRendererPlayAnimations播放动画序列。XAPIHRESULTWINAPIIXAvatarRendererPlayAnimations(IN DWORD nAnimationCount,IN LPXAVATARANIMATION * pAnimations,IN XAVATAR_PLAYANIMATI0NS_FLAGS flags);参数NAnimationCount (η 动画计数)是 pAnimations (ρ 动画)数组中的 IXAvatarAnimation 白勺—fi。pAnimations 是 IXAvatarAnimation 对象的数组的地址。Flags (标志)是指定给定动画列表的播放选项的XAVATAR_PLAYANIMATIONS_ FLAGS (X化身_播放动画_标志)值的组合。返回如果成功,就返回S_0K,否则返回错误代码。备注·调用此API将清除任何先前排队的动画并将播放所提供的动画序列。·标志参数控制动画应如何被播放ο默认地,当前播放的动画将被中断且pAnimations数组中的第一动画将立即开 始(从先前的动画混合以防止不和谐的运动)。ο 如果指定了 XAVATAR_PLAYANIMATIONS_FLAGS_WAIT_FOR_CURRENT_ANIM (X 化身 _播放动画_标志_等待_当前_动画),则在启动pAnimations数组之前,当前的动画 将被允许完成。注意,即使此标志被指定,还没有被启动的动画队列也将总是被清除。此 标志仅允许当前播放的动画在启动pAnimations数组之前完成。ο如果指定了 XAVATAR_ PLAYANIMATI0NS_FLAGS_L00P_LAST_ANIM (X 化身 _ 播放动画 _ 标志 _ 循环 _ 最后 _ 动画), 则数组中的最后的动画将被循环播放,直到对PlayAnimations的下一次调用。没有此标志 时,一旦数组中的最后的动画完成,渲染器将返回到播放所内建的空闲的动画。IXAvatarRendererGetCurrentAnimation返回指向当前在给定的IXAvatarRenderer上播放的IXAvatarAnimation对象的 指针。XAPIHRESULTWINAPIIXAvatarRendererGetCurrentAnimation(OUT IXAVATARANIMATI0N 女女 pAnimation
);参数如果 ppAnimation 成功,则 ppAnimation 指向当前动画的 IXAvatarAnimation 指 针。返回如果当前正在播放所内建的空闲的动画中的一个,则返回S_FALSE(S失败)并将 ppAnimation 设置为 NULL。备注调用者负责在完成时在所返回的界面上调用Release。
3权利要求
1.一种用于实现应用程序编程接口(API) (1310)的计算机实现的方法,所述应用程序 编程接口允许包括化身渲染器(1309)的视频游戏系统(1302)将化身渲染到由在所述视频 游戏系统上执行的视频游戏应用程序提供的目的地,所述方法包括向所述视频游戏应用程序告知所述化身渲染器被启用(1410);接收所述视频游戏应用程序使用左手坐标系还是右手坐标系的指示(1420);向所述视频游戏应用程序告知要对所述化身渲染器和所述化身的元数据分配的存储 器的量(1430);传递用于一个或多个玩家简档的元数据(1440);以及指示是否应为所述化身分配阴影图(1450)。
2.如权利要求1所述的方法,所述方法还包括传递与所述视频游戏系统(1302)—起提 供的另外的动画(1500)。
3.如权利要求1所述的方法,所述方法还包括向所述视频游戏应用程序告知当前正播 放哪一动画(1510)。
4.如权利要求1所述的方法,所述方法还包括基于头、头及肩或整个身体视图的其中 之一对所述视频游戏系统(1302)查询模型和视图矩阵(1520)。
5.如权利要求1所述的方法,所述方法还包括查询在线游戏服务(1308)以便检索化身 数据(1530)。
6.如权利要求1所述的方法,其特征在于,所述化身数据是三维数据(1540)。
7.如权利要求1所述的方法,所述方法还包括提供对多个随机化身的访问权(1550)。
8.如权利要求7所述的方法,所述方法还包括为所述多个随机化身中的一个指定雄性 或雌性身体(1560)。
9.如权利要求2所述的方法,所述方法还包括从所述视频游戏系统上当前未登入的简 档检索化身数据(1570)。
10.一种其上存储了计算机可执行指令的计算机可读存储介质(1600),所述计算机可 执行指令用于实例化允许在视频游戏系统(1302)中执行的视频游戏应用程序在由所述视 频游戏应用程序选择的渲染目的地渲染一个或多个化身的API (1310),所述计算机可执行 指令包括用于以下的指令实例化允许所述视频游戏应用程序访问用于将所述化身渲染到由所述视频游戏应用 程序选择的渲染目标的数据的编程接口(1610),其中所述视频游戏系统提供渲染和动画功 能,且所述视频游戏应用程序将所渲染的化身呈现在由所述视频游戏应用程序呈现的二维 表面上。
11.根据权利要求10所述的计算机可读存储介质,所述计算机可读存储介质还包括用 于查询在线游戏服务(1308)以便检索化身数据(1640)的指令。
12.一个适于实例化允许在视频游戏系统(1302)中执行的包括化身渲染功能的视频 游戏应用程序接收用于构建、渲染和动画化化身的数据的应用程序编程接口(API) (1310) 的系统,所述系统包括至少一个处理器;以及至少一个通信上被耦合到所述至少一个处理器的存储器,所述存储器中存储有实现所 述API (1710)的计算机可执行指令,所述API被配置为展示允许所述视频游戏应用程序访问用于表示所述化身的数据并将所述数据合并到所述渲染功能中的编程接口,所述计算机 可执行指令能够请求用于存储所述数据的数据缓冲器大小(1720); 根据所述缓冲器大小分配存储器空间(1730);指定所述化身的组件以供检索(1740),其中可以请求所述化身的整个身体;以及 请求用于所述化身的数据(1750)。
13.根据权利要求12所述的系统,其特征在于,所述视频游戏系统包括化身渲染器 (1309),还包括允许所述化身渲染器将所述化身渲染到由所述视频游戏应用程序提供的目 的地(1810)的指令。
14.根据权利要求12所述的系统,其特征在于,还包括用于查询在线游戏服务(1308) 以检索在发行所述视频游戏应用程序之后发行的化身数据(1820)的指令。
15.根据权利要求12所述的系统,其特征在于,还包括可以独立于所述视频游戏应用 程序而被更新的化身资产检索逻辑(1830)。
全文摘要
所公开的是提供可扩展化身系统的应用程序编程接口(API)。在一种实施例中,API可以允许视频游戏应用程序检索表示化身的数据结构。然后,游戏可以采用那些结构并将数据合并到其本身的渲染系统。在另一实施例中,API可以允许视频游戏应用程序将化身渲染到渲染目标或纹理,其中视频游戏系统执行渲染和动画功能。
文档编号G06F9/44GK102099826SQ200980128307
公开日2011年6月15日 申请日期2009年7月14日 优先权日2008年7月14日
发明者B·T·马森, B·雷维尔, D·B·克罗伊曼, D·H·史密斯, R·A·博伊德, S·劳, T·A·兰根 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1