專利名稱:用于可擴展化身系統(tǒng)的編程api的制作方法
用于可擴展化身系統(tǒng)的編程API背景視頻游戲有時將用戶創(chuàng)建的化身表征為用戶控制的人物。通常,用戶可以以處理 外觀例如面部特征和衣著的各種方式來定制化身。這給用戶提供了更為個性化和更為投入 的視頻游戲體驗。舉例來說,任天堂 具有用戶創(chuàng)建的化身MII ,然后,用戶可以在支持此 特征的視頻游戲例如WII SPORTS 中把該化身用作他或她的用戶控制的人物。盡管可以在系統(tǒng)上或者在特定的游戲中創(chuàng)建化身,但常常希望用戶創(chuàng)建的化身可 由各種視頻游戲應用程序使用。舉例來說,玩家希望與該玩家關(guān)聯(lián)的化身可用于并入新的 視頻游戲應用程序而不需要重新創(chuàng)建化身。此外,視頻游戲應用程序使用視頻游戲系統(tǒng)的 渲染功能并將所渲染的化身合并到游戲輸出而非提供本身的化身渲染功能是有益的。在任 一種情況中,視頻游戲應用程序可以訪問允許該應用程序訪問其本身的渲染功能中的化身 信息或?qū)⑾到y(tǒng)渲染的化身合并到該應用程序的輸出的應用程序編程接口(API)是有益的。概述在本公開內(nèi)容的各種實施例中,提供實現(xiàn)用于編程化身的API的方法、系統(tǒng)和計 算機可讀介質(zhì)。然后,這樣的API可以允許視頻游戲應用程序檢索表示化身的數(shù)據(jù)的結(jié)構(gòu)。 該應用程序可以采用那些結(jié)構(gòu)并將該數(shù)據(jù)合并到其本身的人物系統(tǒng)中,以使得它們可以使 用應用程序的代碼在應用程序上下文中渲染和動畫化化身。API還可以允許應用程序借助于處理渲染和動畫的系統(tǒng)將化身渲染到渲染目標。 視頻游戲應用程序可以觸發(fā)動畫或依賴于“空閑”動畫進行播放,且各動畫可以被渲染到二 維表面,然后視頻游戲應用程序可以呈現(xiàn)該二維表面。在一些實施例中,化身系統(tǒng)可以被設(shè)計為使得該API可以遞送用在游戲本身被發(fā) 行之后發(fā)行的附件(例如T恤)裝飾(例如著裝)的化身而不會對視頻游戲應用程序造成 不利影響。可以以新的附件不占用視頻游戲應用程序希望用于其他目的的額外資源的方式 來預先分配資源。在一個實施例中,化身系統(tǒng)還可以被設(shè)計為使得化身資產(chǎn)的檢索可以由控制臺或 在線系統(tǒng)來執(zhí)行,然后,可以獨立于游戲應用程序而更新化身資產(chǎn)。這可以允許控制臺或在 線服務(wù)改變用于化身資產(chǎn)檢索的邏輯而不需要要求改變游戲應用程序。例如,盡管控制臺 可能最初僅從本地存儲檢索資產(chǎn),但在其他情況中,各資產(chǎn)可以例如從因特網(wǎng)檢索。應注意,被提供本概述以便以簡化形式介紹下面在詳細描述中進一步描述的的概 念的選集。本概述不旨在標識所要求保護的本主題的關(guān)鍵特征或必要特征,也不旨在用來 幫助確定所要求保護的主題的范圍。
當結(jié)合附圖閱讀時,可以更好地理解前述概述以及下列詳細描述。為了闡釋本公 開內(nèi)容,示出本公開內(nèi)容的各方面。然而,本公開內(nèi)容不限于所示出的具體方面。包括下列 的圖圖1闡釋在一些實施例中化身和任何關(guān)聯(lián)項是靜態(tài)的;
圖2闡釋化身項可以以多種方式被動畫化;圖3闡釋允許使用所動畫化的項來進行化身裝飾的示例性系統(tǒng);圖4闡釋用于跨越多個游戲動畫化化身的系統(tǒng);圖5闡釋用于實現(xiàn)目前所公開的本主題的示例性方法;圖6闡釋用于實現(xiàn)目前所公開的本主題的示例性計算機可讀介質(zhì);圖7闡釋用于跨越在線視頻游戲服務(wù)更新化身的外觀的示例過程。圖8闡釋用于跨越在線視頻游戲服務(wù)更新化身的外觀的示例系統(tǒng)。圖9闡釋用于在在線多玩家視頻游戲服務(wù)中動態(tài)地添加和與用戶關(guān)聯(lián)的化身關(guān) 聯(lián)的的項的示例過程。圖10闡釋用于在在線多玩家視頻游戲服務(wù)中動態(tài)地添加和與用戶關(guān)聯(lián)的化身關(guān) 聯(lián)的的項的示例系統(tǒng)。圖11闡釋可以結(jié)合參考圖1-圖12討論的本發(fā)明內(nèi)容的各方面使用的示例性計 算備設(shè)例如控制臺;圖12闡釋用于參考圖1-圖12討論的目前所公開的本主題的示例性連網(wǎng)環(huán)境;圖13闡釋提供用于訪問化身信息的API的示例性系統(tǒng);圖14闡釋用于實現(xiàn)允許包括化身渲染器的視頻游戲系統(tǒng)將化身渲染到由在視頻 游戲系統(tǒng)上執(zhí)行的視頻游戲應用程序提供的目的地的應用程序編程接口(API)的操作過 程的示例;圖15闡釋用于實現(xiàn)允許包括化身渲染器的視頻游戲系統(tǒng)將化身渲染到由在視頻 游戲系統(tǒng)上執(zhí)行的視頻游戲應用程序提供的目的地的應用程序編程接口(API)的操作過 程的示例;圖16闡釋帶有用于實例化允許在視頻游戲系統(tǒng)中執(zhí)行的視頻游戲應用程序在由 視頻游戲應用程序選擇的渲染目的地渲染一個或多個化身的API的計算機可執(zhí)行指令的 計算機可讀介質(zhì);圖17闡釋用于允許在視頻游戲系統(tǒng)中執(zhí)行的包括化身渲染功能的視頻游戲應用 程序接收用于構(gòu)建、渲染和動畫化化身的數(shù)據(jù)的操作過程的示例;以及圖18闡釋用于允許在視頻游戲系統(tǒng)中執(zhí)行的包括化身渲染功能的視頻游戲應用 程序接收用于構(gòu)建、渲染和動畫化化身的數(shù)據(jù)的操作過程的示例。詳細描述化身系統(tǒng)圖1闡釋靜態(tài)的化身系統(tǒng)。用戶A 160可以玩游戲控制臺A 166,且在玩這樣的游 戲控制臺166時,用戶160可以具有多個化身,例如化身X 172、化身Y 174和化身Z 176。 這些化身172、174、176將通常是游戲?qū)S玫摹Q句話說,一個游戲?qū)⒃试S用戶160選擇第 一化身172,第二游戲?qū)⒃试S用戶160選擇第二化身174,第三游戲?qū)⒃试S用戶160選擇第 三化身176,等等。在在線玩游戲的情況中,如果這樣的在線玩游戲由中央服務(wù)器調(diào)停,則其他用戶 例如用戶B 162和用戶C 164可以與第一用戶160交互。在圖1中示出的示例中,與第一用 戶160關(guān)聯(lián)的這樣的化身172、174、176可以被其他用戶162、164看到,然而,這些化身172、 174、176被更新和被動畫化的能力有限。
5
圖2闡釋化身可以以多種方式被動畫化。具體地,化身可以用“項”來修飾或被裝 飾,其中項被理解為可以應用于現(xiàn)有化身的任何圖形或音頻組件。作為示例而非限制,項可 以包括帽子、鞋子、手套(即,任何衣物),在這樣的情況中,這樣的項可以含有項專用的動 畫——例如,不斷改變顏色或繞化身的頭動來動去的帽子。此外,項還可以應用于整個化身 身體——例如,跳舞、微笑或跳動的概念可以作為整體而被應用于化身,以便增加化身的生 動性和漂亮(或者可以出于其他目的而添加)。無論如何,圖2示出在目前所公開的本主題的一個方面中,化身X 172可以已經(jīng)將 對化身174來說是專用的動畫200應用于它本身(例如以上所討論的帽子示例)。另一方 面,化身Y 174可以具有被應用于化身174的整個身體的動畫208(例如以上所討論的舞蹈 示例)。在任一種情況172、174中或在其他情況176中,化身可以是用戶確定的202的或它 們可以是游戲確定的206。這意味著用戶可以經(jīng)由一些界面裝飾化身172、174、176,或者這 樣的化身可以由游戲標題210裝飾。在后一種場景中,如果用戶160正在玩游戲并在游戲 解鎖了一成就,這樣的成就的獎賞可以是然后可以被應用到用戶160的化身的動畫項一一 無論是應用到具體的游戲中的化身或應用到對若干(或所有)游戲通用的化身。圖3闡釋允許使用被動畫化的項來進行化身裝飾的示例性系統(tǒng)。在下列討論中, 還應注意,“附件包”含有動畫之外的其他化身資產(chǎn)(例如,衣著、面部特征等等)。化身引 擎302可以被配置為將附件項應用到化身308。附件項可以被包含在動畫包318中,且與三 維網(wǎng)格312、位圖紋理314、配置信息(例如各項應相對于化身308在何處放置)一起提供。 所有此代碼和數(shù)據(jù)可以是整個化身附件包310的部分。簡而言之,化身引擎302可以訪問 化身附件包310中的內(nèi)容,且然后將此內(nèi)容應用到實際的化身308??梢源嬖谟糜趯⑦@樣的項內(nèi)容應用到化身的各種觸發(fā)機制。例如,一個這樣的機 制可以包括允許用戶選擇將哪些項應用到哪些化身的用戶界面306?;蛘?或除此之外), 取決于實現(xiàn)和用戶與主控這樣的化身引擎302的游戲控制臺的交互,游戲標題304本身可 以是用于將項內(nèi)容應用到化身的觸發(fā)。然而,在本公開內(nèi)容的其他方面中,化身引擎302可 以駐留在主控服務(wù)器中,且任何處理可以在用戶的上游被執(zhí)行。圖3還示出可以存在用于所示出的化身附件包310的各種源。除了項內(nèi)容由游戲 標題322本身提供之外,這樣的內(nèi)容可以從在線源3M獲取,或者可以從各種源(包括游 戲、服務(wù)器和其他介質(zhì))購買。因而,化身引擎302可以應用由各種內(nèi)容創(chuàng)建器3 創(chuàng)建的 項內(nèi)容,只要這樣的創(chuàng)建器知曉的化身引擎302所預期的標準。然而,本領(lǐng)域中的技術(shù)人員 容易理解,還可以使用通用(非專有)標準。圖4闡釋用于跨越多個游戲動畫化化身的系統(tǒng)。盡管圖4中示出一系統(tǒng),但本主 題可以作為方法和/或計算機可讀介質(zhì)(相對于任何其他圖來書,在這一圖中是如此,反之 亦然)而實踐。在圖4中,以上所討論的化身引擎302可以具有各種模塊。所示出的模塊 402,404,406僅僅是示例性的而非限制性的(是示例性的而非限制性的對本公開內(nèi)容的任 何內(nèi)容都適用)。因而,系統(tǒng)可以被用于以多種不同方式動畫化游戲控制臺化身,其中該系統(tǒng)可以 被加載到本地計算機存儲器中,且其中其可以由物理處理器執(zhí)行。在這樣的系統(tǒng)中,處理模 塊402可以被配置為處理含有多個動畫項的附件包310。另一模塊即標識模塊404可以被 配置為從多個動畫項標識化身和動畫項。且又一個模塊即應用模塊406可以被配置為將動畫項應用到化身。此系統(tǒng)可以包括各種其他方面,例如至少在第一游戲標題420和第二游戲標題 422中將動畫項應用到化身410。此外,動畫項可以被配置為當?shù)谝挥螒驑祟}420正在玩 407時被應用到化身410。在其他方面中,動畫項還可以被配置為當?shù)诙螒?22標題正在 玩407時被應用到化身410。第一游戲標題420和第二游戲標題422可以彼此不同,這是因 為它們可以在時間tl 424和在時間口似6被分開地加載。圖5闡釋其中執(zhí)行包括接收帶有化身附件的附件包的步驟500的示例性的方法。 接下來步驟可以是將化身標識為動畫的候選510,且然后將附件項應用到化身。最后的步驟 可以是實際上顯示所動畫化的化身530。這些步驟可以與以上所提供的本公開內(nèi)容一起使 用,例如化身附件可以由可應用于化身的多個項組成,化身可以是對應于游戲控制臺的用 戶的對象,以及多個項中的至少之一可以被配置為當被應用到所述化身時被動畫化。此外, 可以使用觸發(fā)事件,可以至少跨越兩個不同的(例如分開加載的)游戲標題而應用化身,化 身可以在玩游戲玩期間被實時裝飾,化身可以在游戲期間被連續(xù)地動畫化(或它們有時可 以暫停),等等。圖6闡釋其上存儲有各種計算機可執(zhí)行指令的示例性計算機可讀介質(zhì)690。此介 質(zhì)690可以被實現(xiàn)為系統(tǒng)或作為方法而實踐,因而本公開內(nèi)容討論的計算機可讀介質(zhì)僅僅 是示例性的。可以采用多個指令以便用各項來所裝飾的化身。用于訪問605數(shù)據(jù)庫的指令 可以允許從遠程數(shù)據(jù)庫下載化身裝飾內(nèi)容;用于接收615各包的指令可以處理或展開被包 裝在各包中的任何這樣的裝飾內(nèi)容;將附件應用610到化身的指令可以允許用戶以所期望 的方式設(shè)置化身的外貌和觸感;顯示所動畫化的化身的指令可以被用于將此內(nèi)容顯示在各 種不同的介質(zhì)上,例如監(jiān)視器、蜂窩式電話等等。應容易明白,可以結(jié)合上面所討論的各方面而使用其他指令,例如被配置為在不 同的游戲標題之間或跨越不同的游戲標題運載至少一個項的指令625 ;被配置為在游戲執(zhí) 行期間向用戶呈現(xiàn)裝飾任何化身的選項的指令630 ;被配置為以不同方式觸發(fā)和管理動畫 的指令670,這些不同方式例如連續(xù)動畫650、事件動畫655、用戶動畫660和空閑動畫665 ; 被配置為以例如基于項目604和基于化身602的特定的方式來或使用例如用戶界面606和 游戲標題608的不同的機制來應用動畫的指令610。應注意,可以使用包含以上討論的各種 方面的其他指令635。圖7闡釋用于跨越在線視頻游戲服務(wù)更新化身的外觀的示例操作流,其中所述服 務(wù)包括服務(wù)器和正執(zhí)行的視頻游戲。本領(lǐng)域技術(shù)人員應注意,所公開的進程是說明性的,且 預期不同的實現(xiàn)。在700,進程流開始。此進程可以響應于用戶開始在被連接到在線視頻游戲服務(wù)的 視頻游戲控制臺上執(zhí)行視頻游戲而被觸發(fā)。例如,用戶可以對控制臺通電,插入含有包括游 戲在內(nèi)的計算機可讀指令的盤,并發(fā)送唯一的訪問憑證。服務(wù)本身可以包括通過其驗證并 在用戶之間交換在線多玩家視頻游戲玩耍的一個或多個服務(wù)器、將用戶歸組在游戲會話中 的游戲配對服務(wù)、電子商務(wù)市場、留言板和實況聊天室。用戶的化身可以在這樣的服務(wù)中的 許多區(qū)域出現(xiàn)。舉例來說,它可以出現(xiàn)在服務(wù)上的用戶的簡檔中,或作為用戶張貼到留言板 的任何帖子的部分而出現(xiàn)。操作702描繪當執(zhí)行游戲時從用戶接收更新化身的外觀的指令。當用戶正玩游戲時,他或她可以被鼓勵來改變化身的外觀。在這樣的實例中,用戶可以輸入召喚化身編輯屏 幕的命令。例如,用戶可以按壓在他或她的控制器、鍵盤或其他輸入設(shè)備上的專用按鈕,這 帶來要執(zhí)行的命令的列表。由此,用戶可以選擇對應于編輯化身的外觀命令。當這些命令 被輸入時,底層游戲中的動作可以繼續(xù)進行或掛起??梢杂善渖险龍?zhí)行游戲的系統(tǒng)或者由 游戲本身中的計算機可讀指令在那兩個選項之間作出選擇。在一種實施例中,從用戶接收 更新化身的外觀的指令包括掛起游戲的活動玩耍。操作704描繪更新化身的外觀。外觀可以是化身的任何物理方面,例如頭發(fā)顏色、 頭發(fā)長度、發(fā)型、胡須顏色、胡須長度、胡須造型、胡須位置、眼睛顏色、眼睛造型、眼睛位置、 鼻子造型、鼻子位置、嘴巴造型、嘴巴顏色、嘴巴位置、耳朵造型、耳朵位置、膚色、身高、體重 或體型。在一個實施例中,更新化身的外觀包括將編輯器窗口覆蓋在游戲上并從用戶接收 關(guān)于如何更新化身的外觀的至少一個指令。例如,更新化身的機制可以由用戶正在其上玩 游戲的系統(tǒng)而非游戲本身控制,且該系統(tǒng)可以在發(fā)送將所渲染的幀發(fā)送給用戶的視覺的顯 示設(shè)備之前將編輯器窗口渲染到游戲窗口上。當用這樣的窗口呈現(xiàn)時,然后用戶可以發(fā)送 關(guān)于應如何更新化身的指令。舉例來說,用戶可以點擊化身的眼睛,然后從可用顏色的列表 中選擇新的眼睛顏色,將化身的眼睛顏色從綠色改變?yōu)榈稚?。操?06描繪指示服務(wù)器存儲所更新的化身。這可以包括當在一個時間周期內(nèi)未 從服務(wù)器接收到它存儲所更新的化身的指示時向服務(wù)器顯示錯誤消息。在服務(wù)器在通信網(wǎng) 絡(luò)被連接到用戶的游戲系統(tǒng)的場合,可以存在用戶更新化身但是通信網(wǎng)絡(luò)無法將所更新的 化身發(fā)送給服務(wù)器的情況。在這樣的情況中,用戶通??梢岳斫鈱碜鞒龅母淖兾幢槐?存的通知。在另一實施例中,改變可以被本地存儲在用戶的游戲系統(tǒng)上,且可以進行將所更 新的化身發(fā)送給服務(wù)器的進一步嘗試,直到這樣的發(fā)送成功。操作708描繪指示游戲加載和顯示所更新的化身。在服務(wù)器上存在用于化身的單 獨的的非易失性存儲介質(zhì)的場合中,這可以包括指示游戲從服務(wù)器接收所更新的化身。在 另一實施例中,游戲可以直接從本地存儲器讀取所更新的化身。在其中用戶正玩包括會話 以及參與所述會話的多個其他用戶的在線多玩家視頻游戲的實施例中,所述指示游戲加載 和顯示所更新的化身可以包括指示每一其他用戶的視頻游戲加載和顯示所更新的化身。那 樣,用戶的化身將對多玩家游戲中的所有參與者來說具有一致的外觀。這還可以包括指示 每一其他用戶的視頻游戲在對會話的所有其他用戶已經(jīng)掛起游戲之后加載所更新的化身。 在玩游戲期間用戶的化身突然改變可能會使另一用戶感到糊涂,且惡意的用戶可以快速改 變他或她的化身的外觀來騷擾其他用戶。僅當游戲已經(jīng)被掛起時(例如當比賽終止時,或 者當所有玩家都暫停時)才將化身改變傳播給所有用戶,可以避免此問題。所述指示每一 其他用戶的視頻游戲加載所更新的化身還可以包括向每一其他用戶通知用戶的化身已經(jīng) 被更新。如果用戶的化身改變而沒有這樣的明確指示,則另一用戶可能感到糊涂,而例如說 明此改變的彈出窗口的通知可以緩解此問題。操作710描繪將所更新的化身存儲在其中用戶正在其上玩視頻游戲的用戶游戲 系統(tǒng)上。在與服務(wù)器的通信緩慢時,本地存儲化身可以通過加速加載時間來改善用戶體驗。圖8描繪用于跨越在線視頻游戲服務(wù)更新化身的外觀的系統(tǒng),其中所述服務(wù)包括 服務(wù)器和正在執(zhí)行的視頻游戲。本領(lǐng)域的技術(shù)人員應注意,所公開的進程是說明性的,且預期不同的實現(xiàn)。用戶802使用計算設(shè)備804來執(zhí)行游戲806。在本公開內(nèi)容的實施例中,用戶通過 網(wǎng)絡(luò)88連接到在線游戲服務(wù)器808。服務(wù)器808包括處理器812、從用戶接收更新化身的外觀的指令的模塊814、更新 化身的外觀的模塊816、存儲所更新的化身的模塊818、指示用戶的游戲加載和顯示所更新 的化身的模塊820、存儲化身/用戶對的數(shù)據(jù)庫822以及檢查至少一個憑證的模塊824。計算設(shè)備804可以是專用的視頻游戲控制臺或更一般的計算設(shè)備例如蜂窩式電 話或個人計算機。計算設(shè)備可以被配置為執(zhí)行多個游戲。它可以具有光驅(qū)并允許從被存儲 在光盤上的計算機可讀指令執(zhí)行各種游戲。游戲可以被存儲在計算機內(nèi)的存儲設(shè)備例如硬 盤驅(qū)動器或固態(tài)驅(qū)動器上。在用戶802希望更新他正在他當前玩的視頻游戲806中使用的化身的外觀時,他 或她可以向服務(wù)器808發(fā)出更新所述化身的外觀的指令,指令由從用戶接收更新化身的外 觀的指令的模塊814接收。然后將該指令傳送給更新化身的外觀的模塊816。當化身的外 觀已經(jīng)被更新時,從模塊816向存儲所更新的化身的模塊816發(fā)送信號,該模塊將所述化身 存儲在數(shù)據(jù)庫822中。數(shù)據(jù)庫822可以存儲標識用戶和所述化身的各對。在用戶同時具 有多個化身的場合中,數(shù)據(jù)庫可以連同哪一化身對應于哪一用戶的指示一起分開地存儲用 戶和化身。更新化身的外觀模塊816還向指示用戶的游戲加載和顯示所更新的化身的模塊 820發(fā)送信號,模塊820向用戶的計算設(shè)備804發(fā)送指示游戲806加載和顯示所更新的化身 的消息。在安全系統(tǒng)就位的場合中,服務(wù)器還可以通過檢查用戶的至少一個憑證的模塊來 傳送來自用戶802的所有通信以更新化身的外觀。在憑證檢查通過的場合,如上處理用戶 的指令。在憑證檢查失敗的場合,用戶的指令不被執(zhí)行。在一個實施例中,告知用戶802憑 證檢查失敗的消息可以被發(fā)送給用戶的控制臺804以便向用戶顯示。在用戶802在服務(wù)上與其他用戶826a、^6b (通過他們各自的計算設(shè)備8(Ma、 804b)玩時更新化身的場合,當服務(wù)器808向用戶的控制臺804發(fā)送加載和顯示用戶的所更 新的化身的消息時,它可以向其他用戶的控制臺804a、1204b發(fā)送也加載和顯示用戶的所 更新的化身的消息。圖9闡釋用于在在線多玩家視頻游戲服務(wù)中動態(tài)地添加和與用戶關(guān)聯(lián)的化身關(guān) 聯(lián)的項的示例操作流。本領(lǐng)域的技術(shù)人員應注意,所公開的進程是說明性的,且預期不同的 實現(xiàn)。在900,進程流開始。此進程可以響應于用戶開始在被連接到在線視頻游戲服務(wù)的 視頻游戲控制臺上執(zhí)行視頻游戲而被觸發(fā)。例如,用戶可以對控制臺通電,插入含有包括游 戲在內(nèi)的計算機可讀指令的盤,并發(fā)送唯一的訪問憑證。服務(wù)本身可以包括通過其驗證并 在用戶之間交換在線多玩家視頻游戲玩耍的一個或多個服務(wù)器、將用戶歸組在游戲會話中 的游戲配對服務(wù)、電子商務(wù)市場、留言板和實況聊天室。用戶的化身可以在這樣的服務(wù)中的 許多區(qū)域出現(xiàn)。舉例來說,它可以出現(xiàn)在服務(wù)上的用戶的簡檔中,或作為用戶張貼到留言板 的任何帖子的部分而出現(xiàn)。操作902描繪接收表明用戶獲得對供與化身一起使用的項的訪問權(quán)的消息。例 如,當在游戲中用戶獲得與該項關(guān)聯(lián)的成就時,可以從游戲接收該消息。舉例來說,成就可以是勝出某一級別或在游戲中用游戲幣購買它。該消息可以響應于用戶從與該服務(wù)關(guān)聯(lián)的 電子商務(wù)店購買該項而被接收。例如,該消息可以響應于用戶作為禮物而接收到項而被接 收。例如,贊助商可以允許用戶訪問包括看上去類似于贊助商所生產(chǎn)的實際的鞋子的鞋子 在內(nèi)的項。此操作可以包括其中項具有創(chuàng)建器的情況,且所述接收表明用戶獲得訪問權(quán)的消 息發(fā)生在從該項創(chuàng)建器接收存儲該項的消息之后。在一些情況中,該項可以由游戲開發(fā)者 在服務(wù)之外創(chuàng)建。在此情況中,項創(chuàng)建器可以將指示該項應由服務(wù)器存儲以供將來由用戶 用于他們的化身的消息發(fā)送給服務(wù)。在一些實例中,創(chuàng)建器具有至少一個憑證,消息包括該憑證,且從項創(chuàng)建器接收存 儲該項的消息包括確認每一憑證。操作904描繪存儲化身可以使用該項的指示。在含有其中存儲有化身和項的數(shù) 據(jù)庫的實施例中,該指示可以包括第三字段,以使得對于每一化身-項對,存在指示“是”或 “否”的對應的“可以使用? ”字段。操作906描繪引導第一游戲顯示帶有該項的化身。在該項包括帽子的場合中,所 述顯示可以包括在顯示化身的場合使得該化身將帽子戴在他或她的頭上。在該項是非衣物 附件的場合中,例如蒼蠅拍或巨大的泡沫“我們是第一”的新奇的手,所述顯示可以包括在 顯示化身的場合使得化身持有或以其他方式操縱該項。在一個實施例中,所述引導第一游戲顯示帶有該項的化身包括從用戶接收顯示帶 有該項的化身的消息。在一個實施例中,所述第一游戲是包括會話和至少一個其他用戶在內(nèi)的在線多玩 家游戲。在線游戲服務(wù)可以在單個時刻具有特定的游戲的活動的多個會話或?qū)嵗?。通常?用戶在任何時刻僅參與游戲的單個會話。在這樣的實施例中,所述引導第一游戲顯示帶有 該項的化身包括引導每一其他用戶的游戲顯示帶有該項的該化身。這將引起正與該用戶玩 該會話的每一其他用戶看到所更新的化身。這將保證游戲會話中的所有用戶的一致性。在一個實施例中,所述引導第一游戲顯示帶有該項的化身包括引導第一游戲從至 少一個服務(wù)器下載該項。在其中所有項都被存儲在服務(wù)器上且該項的子集被存儲在用戶的 計算設(shè)備上的體系結(jié)構(gòu)中,第一游戲可以要求對該項的本地訪問權(quán)。操作908描繪引導第二游戲顯示帶有該項的化身。該化身跨越整個服務(wù)而存在, 因此當項可以在第一游戲被獲得時,它可以在服務(wù)的所有其他方面中用于該化身。在用戶 獲得用于他或她的化身的項的場合中,引導他或她的化身被顯示為帶有該項,然后,開始玩 支持該化身的第二游戲,在第二游戲中該化身將同樣被顯示為帶有該項。操作910描繪在與用戶關(guān)聯(lián)的留言板帖子上顯示帶有該項的化身的可選步驟。在 服務(wù)包括留言板的場合中,用戶可以向該板張貼以便相互通信。每一帖子可以附有用戶的 名稱、發(fā)貼的時間以及用戶的化身的表示。該表示可以包括整個化身的一部分,例如該化身 頸部以上的正面靜止圖像。在隨用戶的留言板帖子顯示用戶的化身且用戶已經(jīng)將化身設(shè)置 為被顯示為帶有該項的場合中,在一個實施例中,對應于留言板張貼的用戶的化身的圖像 包括該項。操作912描繪在與用戶關(guān)聯(lián)的簡檔上顯示帶有該項的化身的可選步驟。簡檔包括 關(guān)于用戶信息,例如實名、主頁、年齡、愛好和個人箴言。在服務(wù)包括用戶簡檔的場合中,簡檔可以包括用戶的化身的表示。該表示可以包括整個化身的一部分,例如該化身頸部以上 的正面靜止圖像。在用戶的簡檔中顯示用戶的化身且用戶已經(jīng)將化身設(shè)置為被顯示為帶有 該項的場合中,在一個實施例中,對應于留言板張貼的用戶的化身的圖像包括該項。操作914描繪在用戶正參與其中的實況聊天中顯示帶有該項的化身的可選步驟。 實況聊天包括其中多個用戶近乎實時地相互通信的通信會話。它可以包括文本、音頻、視頻 或其某種組合。在一個實施例中,在用戶參與實況聊天的場合中,聊天的所有參與者看到 用戶的化身的表示。該表示可以包括整個化身的一部分,例如該化身頸部以上的正面靜止 圖像。在用戶的簡檔中顯示用戶的化身且用戶已經(jīng)將化身設(shè)置為被顯示為帶有該項的場合 中,在一個實施例中,對應于留言板張貼的用戶的化身的圖像包括該項。操作916描繪引導用戶的計算機存儲項和化身之間的關(guān)聯(lián)的可選步驟,其中用戶 通過計算機訪問服務(wù)。對用戶的計算機來說,通過本地存儲信息來存儲項和化身之間的關(guān) 聯(lián)以便減少訪問時間是有利的。操作918描繪引導用戶的計算機存儲項的的可選步驟,其中用戶通過計算機訪問 服務(wù)。對用戶的計算機來說,通過本地存儲信息來存儲項本身以便減少訪問時間是有利的。圖10描繪用于在線多玩家視頻游戲服務(wù)中動態(tài)地添加和與用戶關(guān)聯(lián)的化身關(guān)聯(lián) 的項的系統(tǒng)。本領(lǐng)域的技術(shù)人員應注意,所公開的進程是說明性的,且預期不同的實現(xiàn)。用戶1002使用計算設(shè)備1004來執(zhí)行游戲1006。在本公開內(nèi)容的實施例中,用戶 通過網(wǎng)絡(luò)1010連接到在線游戲服務(wù)器1008。服務(wù)器1008包括處理器1012、接收表明用戶獲得對供與化身一起使用的項的訪 問權(quán)的消息的模塊1014、存儲化身可以使用項的指示的模塊1016、存儲用戶/化身/項三 元組的數(shù)據(jù)庫1018、引導第一游戲顯示帶有項的化身的模塊1020以及引導第二游戲顯示 帶有項的化身的模塊1022。計算設(shè)備1004可以是專用的視頻游戲控制臺或更一般的計算設(shè)備,例如蜂窩式 電話或個人計算機。計算設(shè)備1004可以被配置為執(zhí)行多個游戲。它可以具有光驅(qū)并允許 從被存儲在光盤上的計算機可讀指令來執(zhí)行各種游戲。游戲可以被存儲在計算機內(nèi)的存儲 設(shè)備上,例如硬盤驅(qū)動器或固態(tài)驅(qū)動器。用戶可以獲得對用于他或她的化身的項的訪問權(quán)。用戶可以從各種源獲得該項。 它可以是來自正通過計算設(shè)備100 訪問服務(wù)的另一用戶IOM的禮物。用戶可以通過在 化身關(guān)聯(lián)的游戲1006中實現(xiàn)某一目標而獲得該項作為獎勵,例如勝出某一級別或獲得閥 值分數(shù)。用戶也可以從由服務(wù)器1008提供的電子商務(wù)市場購買該項。當用戶以及獲得對該項的訪問權(quán)時,對應的消息被發(fā)送給接收表明用戶獲得對供 與化身一起使用的項的訪問權(quán)的消息的模塊1014。在一個實施例中,所述模塊1014包括從 用戶1002接收顯示帶有該項的化身的消息的模塊。在一個實施例中,所述接收模塊1014 被配置為從第一游戲1006接收消息。所述模塊1014處理該消息且然后將消息發(fā)送給存儲 化身可以使用項的指示的模塊1016。模塊1016將所述指示存儲在數(shù)據(jù)庫1018中。在一個 實施例中,用戶可以具有多個化身,且項局限于單個化身。在一個實施例中,當用戶獲得對 項的訪問權(quán)且可以具有多個化身時,該項可以立即被用戶的所有化身使用。在一個實施例 中,用戶具有單個化身,且用戶獲得訪問權(quán)的所有項對應于該一個化身。引導第一游戲顯示帶有該項的化身的模塊1020經(jīng)由用戶的計算設(shè)備1004通過網(wǎng)絡(luò)1010將表明這樣的消息發(fā)送給第一游戲1006。第一游戲1006接收該消息和顯示帶有該 項的用戶的化身。在用戶稍后玩第二游戲的場合中,引導第二游戲顯示帶有該項的化身的模塊1022 經(jīng)由用戶的計算設(shè)備1004通過網(wǎng)絡(luò)1010將表明這樣的消息發(fā)送給第二游戲1026。第二游 戲10 接收該消息和顯示帶有該項的用戶的化身。編稈API在各種實施例中,視頻游戲應用程序可以使用允許將化身并入視頻游戲應用程序 中的一組編程API。API可以允許視頻游戲應用程序檢索代表化身的數(shù)據(jù)的結(jié)構(gòu)。在一種 實施例中,然后,視頻游戲應用程序可以采用那些結(jié)構(gòu)且將數(shù)據(jù)合并到其本身的三維人物 系統(tǒng)中,以使得它們可以使用游戲本身的代碼在游戲本身的三維環(huán)境中渲染并動畫化該化 身。借助于執(zhí)行所有渲染和動畫功能的主機系統(tǒng)或應用程序,API還可以允許視頻游戲應 用程序?qū)⒒礓秩镜戒秩灸繕嘶蚣y理。視頻游戲應用程序可以觸發(fā)動畫化,或依賴于“空 閑”的動畫來播放,但是它們可以被渲染到二維表面,然后視頻游戲應用程序可以呈現(xiàn)該二 維表面。在一個實施例中,API可以允許視頻游戲應用程序訪問化身的整個身體的靜態(tài)截 圖,該靜態(tài)截圖可以與用戶的簡檔一起保存。通常,視頻游戲應用程序可以檢索用戶的玩 家圖片并在游戲中將該圖片用作用戶的表示。然而,該圖片將通常是小(例如,64X64或 32 X 32)圖像。在一種實施例中,視頻游戲應用程序可以訪問化身的較大顯示例如整個身體 靜態(tài)的圖像,而不需要使用所渲染的/移動的化身。在一個實施例中,API族和相關(guān)的系統(tǒng)組件可以允許在游戲發(fā)行之后發(fā)行較新的 化身附件。新的化身可以仍然出現(xiàn)在游戲中而不考慮正使用哪一 API族。API可以傳遞用 在游戲本身已經(jīng)被發(fā)行之后所發(fā)行的附件(例如T恤)裝飾(例如著裝)的化身,這對視 頻游戲應用程序幾乎沒有不利影響。在其它實施例中,API的組件可以是視頻游戲平臺例如游戲控制臺的部分,且可以 獨立于視頻游戲應用程序而被更新以便改變資產(chǎn)檢索邏輯。主機系統(tǒng)或平臺可以提供結(jié)合 視頻游戲應用程序執(zhí)行的主機應用程序,經(jīng)由API提供各種服務(wù)并提供對信息和資源的訪 問權(quán)。化身系統(tǒng)可以被設(shè)計為使得化身資產(chǎn)的檢索可以由主機系統(tǒng)或應用程序執(zhí)行,而其 特定邏輯可以獨立于標題而被更新。因而在稍后的時刻改變用于化身資產(chǎn)檢索邏輯。例如, 盡管可以初始地從本地存儲檢索資產(chǎn),但可以更新系統(tǒng)以便從因特網(wǎng)檢索資產(chǎn)。因而可以 以較新的附件不占用視頻游戲應用程序期望可用的另外的資源的方式來預先分配資源。在一個實施例中,視頻游戲應用程序可以使用兩個API族中的一個或兩者其中 一個允許視頻游戲應用程序接收原始數(shù)據(jù)以便構(gòu)建、渲染和動畫化化身本身;另一個中,系 統(tǒng)將所動畫化的化身渲染到由視頻游戲應用程序提供的目的地。如上所述,一組API可以被視頻游戲應用程序用來檢索可以被游戲本身的代碼用 來在其本身的三維環(huán)境中構(gòu)建、渲染和動畫化化身的原始數(shù)據(jù)。另一組API可以被用于將 給定的用戶的化身渲染到所期望的渲染目標或紋理。如果代碼中的一些在系統(tǒng)中而非在視頻游戲應用程序中運行,則可以在發(fā)行之后 更新這些API的內(nèi)部行為,這允許例如使用替換的檢索機制。結(jié)合附錄中提供的示例性函數(shù)可以更好地理解化身API的下列示例性描述。盡管所描述的API公開了一種實施例,但本領(lǐng)域的技術(shù)人員應理解,許多這樣的實現(xiàn)可以體現(xiàn) 所公開的原理。API中對化身的支持可以包括兩個接口 =IXAvatarRendereraX化身渲染 器)可以由開發(fā)者用來將化身渲染到給定設(shè)備中。開發(fā)者可以使用IXAvatarAmmationdX 化身動畫)來通過預先確定的系列運動移動化身的各部分。用于創(chuàng)建IXAvatarRenderer 對象和檢索IXAvatarAmmation對象的函數(shù)可以被包括在API中。使用其本身的游戲引擎 渲染化身的開發(fā)者可以使用XAvatarGetAssets (X化身取資產(chǎn))函數(shù)來檢索化身的低級描 述。視頻游戲應用程序可以通過檢索化身數(shù)據(jù)且然后將化身渲染到設(shè)備來使用化 身。視頻游戲應用程序可以使用IXAvatarRenderer接口來執(zhí)行渲染,或者它們可以使用 XAvatarGetAssets加載化身數(shù)據(jù)且然后渲染數(shù)據(jù)本身?;砜梢砸孕坌院痛菩园姹緝烧咛峁?,盡管相同的骨骼可以被用于兩者從而使得 易于設(shè)計動畫。面部的動畫可以通過動畫化紋理來實現(xiàn)。例如,眼睛紋理可以具有五個不 同的方向(上、下、左、右和中),且眼睛動作可以通過切換紋理以不同的方向查看來完成。身高和體重可以通過將骨骼中的關(guān)節(jié)從中間“標準”線性縮放來控制。縮放因子 可以由系統(tǒng)根據(jù)需要而改變。視頻游戲應用程序可以使用化身來表示玩家。在多玩家游戲中,可以在“游戲大 廳”或其他合適的應用程序中緊接著關(guān)于玩家其他信息而示出化身。在游戲中的適當場合 中,化身可以在實際的游戲中用來表示玩家。化身系統(tǒng)不僅可用于表示玩家的化身,而且由于化身顯現(xiàn)為人類,化身系統(tǒng)還可 以在游戲中的被用來渲染人、非玩家人物,包括觀眾、額外人員、游戲展覽主辦者等等。視頻 游戲應用程序可以請求隨機生成的化身,以使得任何兩群人都看上去不相同。視頻游戲應 用程序可以將已登出的簡檔的化身加載到控制臺上,以便在比賽結(jié)束時示出驕傲地觀看或 者從邊線向玩家喝彩的玩家的家人的化身?;硗ǔV荚谙蚋鞣N人口統(tǒng)計的玩家提供廣泛的吸引人的體驗。例如,化身可 以在游戲大廳時表示玩家的身份,但是還可以依附于評級系統(tǒng),諸如娛樂軟件分級委員會 (ESRB)的“E10”評級。類似地,被用于化身的動畫造型可以是合理的和自然的,且化身運動 可以是動態(tài)的和平滑的。在視頻游戲應用程序中使用化身時的典型技術(shù)考慮是如何渲染和動畫化化身?;?身系統(tǒng)可以包括內(nèi)建渲染器,該內(nèi)建渲染器可以用于希望將化身合并到它們的現(xiàn)有的引擎 的視頻游戲應用程序。內(nèi)建渲染器可以支持使用預定義的動畫。已經(jīng)具有復雜的渲染引擎 的視頻游戲應用程序可偏好訪問原始化身數(shù)據(jù)并使用它們的現(xiàn)有的引擎來渲染和動畫化 化身。將化身合并到視頻游戲應用程序可以被設(shè)計為用可預測的固定資源要求和簡單 的API直接進行。視頻游戲應用程序通??梢栽谶\行時使用約850kB來渲染一個化身,且 在檢索化身數(shù)據(jù)時使用一些另外的臨時存儲器。本領(lǐng)域的技術(shù)人員應清楚,在此公開的化 身系統(tǒng)和API的各種實施例是示例性,且其他實現(xiàn)是可能的。在一個實施例中,使用XAvataHX化身)API的視頻游戲應用程序可以通過鏈接到 xavatar. lib來這樣做。視頻游戲應用程序可以在它們調(diào)用該庫中的任何其他函數(shù)之前調(diào) 用XAvatarlnitialize (X化身初始化)。此函數(shù)為資產(chǎn)檢索高速緩存分配大約兩兆字節(jié)的堆存儲器,如果將使用IXAvatarRenderer則加上大約500千字節(jié)的另外的堆存儲器。在一個實施例中,元數(shù)據(jù)可以是含有關(guān)于化身的組成的信息的二進制大對象。視 頻游戲應用程序可以使用XAvatarGetMetadata (X化身取元數(shù)據(jù))函數(shù)來檢索或生成化身 元數(shù)據(jù)。一旦被檢索,元數(shù)據(jù)就可以作為自變量而被傳遞給用于化身的實際渲染的其他函 數(shù)。元數(shù)據(jù)格式可以對視頻游戲應用程序不透明。在調(diào)用XAvatarGetMetadataByXuicKX化身取元數(shù)據(jù)ByXuid)函數(shù)之前,視頻游戲 應用程序可以用適當?shù)挠嫈?shù)參數(shù)調(diào)用XAvatarGetMetadataByXuidResultSize(X化身取元 數(shù)據(jù)ByXuid結(jié)果大小)以便檢索容納所請求數(shù)量的元數(shù)據(jù)大對象所需要的元數(shù)據(jù)結(jié)果緩 沖器的大小。然后,該應用程序可以分配緩沖器以便容納將由該函數(shù)返回的元數(shù)據(jù),將指向 該緩沖器的指針作為自變量傳遞給元數(shù)據(jù)函數(shù)??梢酝ㄟ^用玩家的XUID調(diào)用XAvatarGetMetadataByXuid函數(shù)來檢索描述玩家的 化身的元數(shù)據(jù)。如果以數(shù)組來傳遞多個XUID,則此函數(shù)可以在每次調(diào)用時檢索多于一個化 身。注意,結(jié)果緩沖器可以是由XAvatarGetMetadataByXuidResultSize所報告的用于數(shù)組 中的XUID的數(shù)量的適當大小的——緩沖器大小不必是XUID計數(shù)和XAVATAR_METADATA(X 化身元數(shù)據(jù))結(jié)構(gòu)的大小的乘積。一些視頻游戲應用程序可能出于例如人群的目的想要訪問隨機化身。這可以通過 使用XAvatarGetMetadataRandonKX化身取元數(shù)據(jù)隨機)函數(shù)來檢索一個或多個隨機創(chuàng)建 的化身而完成。當調(diào)用此函數(shù)時,可以傳遞被設(shè)置為指向XAVATAR_METADATA結(jié)構(gòu)的數(shù)組的 指針。視頻游戲應用程序可能還希望顯示在此時未登入的玩家的家庭成員的化身。這可 以通過從本地控制臺上當前未登入的簡檔檢索化身來實現(xiàn)。首先,視頻游戲應用程序可以 使用XAvatarGetMetadataSignedOutProf ileCount(X化身取元數(shù)據(jù)登出簡檔計數(shù))函數(shù)來 確定控制臺上有多少個可用但未登入的簡檔。此函數(shù)可以提供可用簡檔的計數(shù)。然后,視 頻游戲應用程序可以用從0到計數(shù)-1的有效范圍內(nèi)的索引調(diào)用XAvatarGetMetadataSign edOUtPr0file(X化身取元數(shù)據(jù)登出簡檔)函數(shù)。對于每次調(diào)用,指針可以被傳遞給要用該 簡檔的化身元數(shù)據(jù)填充的XAVATAR_METADATA結(jié)構(gòu)。一些視頻游戲應用程序可能想要創(chuàng)建當游戲正在執(zhí)行時使用的具體的化身。例 如,問答游戲可能希望具有由化身玩的宿主人物。一旦被創(chuàng)建,這樣的化身的元數(shù)據(jù)可以被 直接地傳遞給XAvatarGetAssets或XAvatarCreateRenderer (X化身創(chuàng)建渲染器)。為初 始獲取元數(shù)據(jù),化身創(chuàng)建器可以被用于創(chuàng)建化身。當化身被保存到關(guān)聯(lián)的開發(fā)者工具時, 用于該化身的元數(shù)據(jù)可以被寫入到兩個文件devkit \avatar_metadata. h和devkit \ avatar_metadata. bin。如果那些文件已經(jīng)存在,則它們可以被重寫。Avatar_metadata. bin 可以含有化身元數(shù)據(jù)的簡單二進制定義(即,含有告訴化身系統(tǒng)該化身看上去像什么和正 穿戴著什么的信息)。此定義可以被包括在視頻游戲應用程序的源代碼中。在其它實施例中,XAvatar(X化身)庫可以包括可以將化身渲染到給定 的Direct3D設(shè)備的渲染器。此渲染器可以通過IXAvatarRenderer類來配置和調(diào) 用。視頻游戲應用程序可以通過調(diào)用XAvatarCreateRenderer函數(shù)來為每一化身創(chuàng)建 IXAvatarRenderer實例。此函數(shù)可以為化身模型和資產(chǎn)分配大約850千字節(jié)的存儲器,加 上為可選的化身陰影圖分配至多另外的四兆字節(jié)的存儲器(如果使用的話,陰影圖可以是小的(512X512)或大的(1024X1024) 陰影圖的選擇可以是對XAvatarCreateRenderer 的參數(shù))??梢允褂肁ddRef (添加基準)和Release (釋放)來管理渲染器的壽命。 XAvatarCreateRenderer可以立即返回,但是渲染器可通過對在線服務(wù)的多次請求來異步 地加載化身資產(chǎn)。如果視頻游戲應用程序在所有資產(chǎn)已經(jīng)被接收之前使用渲染器,則渲染 器可以在化身的位置畫出簡單的、“等待”圖形。視頻游戲應用程序可以使用GetStatus(取 狀態(tài))來判斷化身是否已經(jīng)被完全加載。在主游戲循環(huán)中,視頻游戲應用程序可以先調(diào)用Update(更新)來根據(jù)當前活動 的動畫更新化身的位置。接下來,如果視頻游戲應用程序正使用化身自陰影化,則可以使用 Rendera^dow(渲染陰影)來為當前的動畫位置生成陰影圖。一旦化身的位置和陰影圖已 經(jīng)被更新,就可以調(diào)用Render (渲染器)函數(shù)來將化身描繪到給定的Direct3D設(shè)備(視頻 游戲應用程序已經(jīng)提前設(shè)置渲染目標和深度緩沖器)。如果游戲循環(huán)迭代,則對Update的 重復調(diào)用可以對模型動畫化,且Renderaiadow和Render可以使所渲染的圖像反映化身的 不斷改變的姿勢。視頻游戲應用程序可以設(shè)置其本身的用于渲染化身的模型和視圖矩陣,但是化 身系統(tǒng)可以提供三個標準視圖頭、頭及肩膀以及整個身體。視頻游戲應用程序可以使用 GetMatrices (取矩陣)函數(shù)來檢索這些標準矩陣。為了跟蹤動畫化化身,視頻游戲應用程 序可以在調(diào)用Update之后調(diào)用此函數(shù),并將結(jié)果傳遞給Renderaiadow和Render兩者。當視頻游戲應用程序正使用IXAvatarRenderer類來渲染化身時,化身可以播放 空閑動畫的隨機化序列。在一個實施例中,使用IXAvatarRenderer類來渲染化身的視頻游戲應用程序可 以使用IXavatarAnimation類來為化身指定要執(zhí)行的動畫。動畫可以被封裝在IXAvatarAnimation對象中。視頻游戲應用程序可以使用 XAvatarLoadAnimation (X化身加載動畫)函數(shù)來加載由XAvatar庫定義的動畫的預設(shè)列表 中的一個。用此函數(shù)加載動畫可以分配大約200千字節(jié)的存儲器來容納動畫數(shù)據(jù)。視頻游戲應用程序還可以通過用XAvatarLoadAnimationFromBuffer (X化身從緩 沖器加載動畫)函數(shù)從存儲器緩沖器加載動畫來提供其本身的動畫。AddRef和Release可以被用于管理動畫的壽命。類似于渲染器對象,動畫需要花費時間來加載。視頻游戲應用程序可以使用 GetStatus函數(shù)來確保在嘗試使用動畫之前動畫已經(jīng)完成加載。動畫不可用于播放,直到它 們已經(jīng)完成加載。視頻游戲應用程序可以調(diào)用PlayAnimations (播放動畫)函數(shù)來對動畫的列表排 隊以供回放。動畫可以以它們出現(xiàn)在列表中的次序來播放。默認地,對PlayAnimations的 隨后調(diào)用可以清空現(xiàn)有的隊列、插入新的動畫列表以及立即開始播放新的隊列中的第一動 畫。有可能通過用適當?shù)臉酥菊{(diào)用PlayAnimations來修改此行為。當回放從一個動畫過渡另一動畫時,這兩個動畫可以被混合在一起,以使得化身 的位置不會出現(xiàn)突然的不和諧的改變。視頻游戲應用程序可以使用GetCurrentAnimation(取當前動畫)來判斷哪一動 畫當前正在運行。
在一些實施例中,視頻游戲應用程序可以選擇使用其本身的渲染引擎來渲染和動 畫化化身。在這樣的情況中,視頻游戲應用程序可以顯式地加載化身幾何和圖形資產(chǎn),且然 后以其本身的方式顯式地渲染它們。為了判斷容納化身的資產(chǎn)所要求的緩沖器大小,視頻游戲應用程序可以首先調(diào) 用XAvatarGetAssetsResultSize (X化身取資產(chǎn)結(jié)果大小),并分配所指示大小的兩個緩沖 器。第一緩沖器(pResultBuffeHp結(jié)果緩沖器))可以容納化身的幾何元數(shù)據(jù),而指向GPU 資源(頂點數(shù)組、紋理等等)的指針被存儲在第二緩沖器(pGpuResourceBuffeHpGpu資源 緩沖器))。由pGpuResourceBuffer指向的緩沖器可以在4096字的邊界開始,以使得在存 儲器中適當?shù)貙R紋理。然后,pResultsBuffer和 pGpuResourceBuffer 緩沖器可以被傳遞給 XAvatarGetAssets,XAvatarGetAssets可以用所請求的資產(chǎn)來填充它們。在附錄中列出了 示例性格式。資產(chǎn)檢索可以涉及對在線服務(wù)的多次查詢以便檢索所有資產(chǎn)。視頻游戲應用程序 必須遵循用于此操作的標準X異步編程實踐??梢酝ㄟ^調(diào)用^(CancdOverlappecKX取消覆 蓋)來取消的活動的XAvatarGetAssets請求。當不再使用XAvatar庫功能時,視頻游戲應用程序可以調(diào)用XAvataraiutdown (X 化身關(guān)閉)函數(shù)來釋放該庫所占用的存儲器和資源。視頻游戲應用程序可以初始化該庫,使用它一段時間,關(guān)閉該庫,且然后稍后 再次初始化該庫以供另外使用。一個這樣的場景是在游戲大廳中但不在玩游戲期間使 用化身的視頻游戲應用程序。這樣的視頻游戲應用程序可以在進入游戲大廳時初始化 XAvatar庫,在大廳中使用庫,且然后當轉(zhuǎn)移到玩游戲時調(diào)用XAvataraiutdown、釋放用于 游戲的存儲器和資源。當游戲結(jié)束且玩家返回到大廳時,視頻游戲應用程序可以再次調(diào)用 XAvatarlnitialize以便開始再次使用XAvatar庫?,F(xiàn)在參見圖13,所闡釋的是包括一個或多個化身渲染引擎1304、1306和1309的示 例性視頻游戲系統(tǒng)1302。游戲標題420和422 (也被稱為視頻游戲應用程序)可以在視頻 游戲系統(tǒng)1302上執(zhí)行。第一視頻游戲標題420可以包括化身渲染引擎1312。標題420可 以經(jīng)由API 1310向視頻游戲系統(tǒng)1302請求并從中接收化身數(shù)據(jù)。所接收的數(shù)據(jù)1314可 以由游戲的渲染引擎1312用于使用渲染引擎1312中游戲標題本身的渲染代碼來渲染一個 或多個化身。第二游戲標題422可以包括或不包括其本身的化身渲染引擎。在任一種情況 中,游戲標題422可以通過使用一個或多個渲染引擎1304、1306或1309來選擇使用視頻游 戲系統(tǒng)的化身渲染服務(wù)。游戲標題422可以使用在數(shù)據(jù)1316中包括了一個或多個化身目 標位置的API 1310啟動進程。然后,視頻游戲系統(tǒng)1302可以在目標位置渲染所請求的化 身。無論系統(tǒng)渲染化身還是游戲標題渲染化身,在一些情況中,可以從在線游戲服務(wù)1308 檢索化身。圖14和15描繪用于實現(xiàn)允許包括化身渲染器在內(nèi)的視頻游戲系統(tǒng)將化身渲染 到由在視頻游戲系統(tǒng)上執(zhí)行的視頻游戲應用程序提供的目的地的應用程序編程接口(API) 的操作過程的示例。該過程可以包括操作1400、1410、1420、1430、1435、1440和1450。參見 圖14,操作1400開始操作過程,且操作1410闡釋向視頻游戲應用程序告知化身渲染器被激 活。操作1420闡釋接收關(guān)于視頻游戲應用程序正使用左手坐標系還是右手坐標系的指示。
16在操作1430中標識要為化身渲染器和化身的元數(shù)據(jù)分配的存儲器的量。操作1440闡釋傳 遞用于一個或多個玩家簡檔的元數(shù)據(jù),且操作1450闡釋指示是否應為每一渲染器分配陰 影圖。繼續(xù)圖15,操作1500闡釋傳遞與視頻游戲系統(tǒng)一起提供的另外的動畫。操作1510 闡釋向視頻游戲應用程序告知當前正在播放哪一動畫。在操作1520中,基于頭、頭及肩或 整個身體視圖的中的一個來對視頻游戲系統(tǒng)查詢模型和視圖矩陣。操作1530闡釋查詢在 線游戲服務(wù)以便檢索化身數(shù)據(jù)。操作1540闡釋化身數(shù)據(jù)是三維數(shù)據(jù)。操作1550闡釋提供對多個隨機化身的訪問 權(quán),且操作1560闡釋為多個隨機化身中的一個指定雄性身體或雌性身體。在操作1570中, 從視頻游戲系統(tǒng)上當前未登入的簡檔檢索化身數(shù)據(jù)。可以在方法、系統(tǒng)、計算機可讀介質(zhì)、或任何類型制品中實現(xiàn)任何上述方面。例如, 圖16中,計算機可讀介質(zhì)可以在其上存儲用于實例化允許在視頻游戲系統(tǒng)中執(zhí)行的視頻 游戲應用程序在由視頻游戲應用程序選擇的渲染目的地渲染一個或多個化身的API的計 算機可執(zhí)行指令。這樣的介質(zhì)可以包括用于展示接口的指令的第一子集,該接口允許視頻 游戲應用程序訪問數(shù)據(jù)以便將渲染化身到由視頻游戲應用程序1610選擇的渲染目標或紋 理。本領(lǐng)域的技術(shù)人員應明白,另外的指令集可以被用于捕捉在此公開的各種其他方面,且 在本公開內(nèi)容中,目前公開的指令的三個子集可以在細節(jié)上變化。例如,指令還可以包括用于傳遞由視頻游戲系統(tǒng)提供的另外的動畫的指令1620。 指令還可以包括用于向視頻游戲應用程序告知當前正在播放哪一動畫的指令1630,以及用 于基于頭、頭及肩或整個身體視圖的中的一個來對視頻游戲系統(tǒng)查詢模型和視圖矩陣的指 令。例如,指令還可以包括用于查詢在線游戲服務(wù)以便檢索化身數(shù)據(jù)的指令1640。指 令還可以包括用于提供對多個隨機化身的訪問權(quán)的指令1650,以及用于從視頻游戲系統(tǒng)上 當前未登入的簡檔檢索化身數(shù)據(jù)的指令。圖17和18描繪允許在視頻游戲系統(tǒng)中執(zhí)行的包括化身渲染功能在內(nèi)的視頻游 戲應用程序接收用于構(gòu)建、渲染和動畫化化身的數(shù)據(jù)的操作過程的示例。該過程可以包括 操作1700、1710、1720、1730、1740和1750。參見圖17,操作1700開始操作過程,且在操作 1710中實現(xiàn)API,該API被配置為展示一接口,該接口允許視頻游戲應用程序訪問用于表示 所述化身的數(shù)據(jù)并將該數(shù)據(jù)合并到所述渲染功能中。操作1720闡釋請求用于存儲該數(shù)據(jù) 的數(shù)據(jù)緩沖器大小。操作1730闡釋根據(jù)所述緩沖器大小分配存儲器空間。操作1740闡釋 指定用于檢索的化身組件,其中可以請求所述化身的整個身體,且操作1750闡釋指示請求 用于所述化身的數(shù)據(jù)。繼續(xù)圖18,操作1800闡釋包括化身渲染器在內(nèi)的視頻游戲系統(tǒng)。操作1810闡釋 允許化身渲染器將所述化身渲染到由視頻游戲應用程序提供的目的地。操作1818闡釋查 詢在線游戲服務(wù)以便檢索在發(fā)行視頻游戲應用程序之后所發(fā)行的化身數(shù)據(jù),且在操作1830 中,該API包括可以獨立于視頻游戲應用程序而被更新的化身資產(chǎn)檢索邏輯。示例性游戲和計算環(huán)境以上所討論的計算設(shè)備和附件可以被具體化為游戲控制臺、音樂播放器、個人計 算機、控制器、遠程控制設(shè)備和具有不同的、相似的、或相同的平臺的其他此類設(shè)備。參見圖11,框圖示出可以按鄰近性和運動能力用于結(jié)合帶有照明激活的各種附件使用的示例性多 媒體控制臺。此控制臺包括面向游戲的控制臺或PC,它可以包括例如數(shù)字音頻處理功能。具體 地,在圖11中,示出多媒體控制臺100,帶有具有1級(Li)高速緩存102、2級(U)高速緩 存104的中央處理單元(CPU) 101和閃存R0M(只讀存儲器)106。1級緩存102和2級緩存 104可以暫時地存儲數(shù)據(jù)且因此減少存儲器訪問周期的數(shù)量,由此改善處理速度和吞吐量。 閃存ROM 106可以存儲在多媒體控制臺100通電時的引導進程的初始階段期間加載的可執(zhí) 行代碼?;蛘撸诔跏家龑щA段期間加載的可執(zhí)行代碼可以被存儲在閃存設(shè)備(未示出) 中。此外,R0M106可以與CPU 101分開。這些存儲器設(shè)備可以高速緩存上述的應用程序、 程序、小應用程序、托管代碼等等的部分或整體。此外,這些存儲器設(shè)備可以在逐個存儲器 單元的基礎(chǔ)上存儲敏感信息和非敏感信息,如以上所討論。任何此類信息可以至少部分被 用于協(xié)助動畫化化身,如以上所討論。圖形處理單元(GPU) 108和視頻編碼器/視頻編解碼器(編碼器/解碼器)114可 以形成用于高速和高分辨率圖形處理的視頻處理流水線。數(shù)據(jù)可以經(jīng)由總線從圖形處理單 元108運載到視頻編碼器/視頻編解碼器114。視頻處理流水線可以將數(shù)據(jù)輸出到A/V (音 頻/視頻)端口 140以便傳送給電視機或其他顯示器。存儲器控制器110可以被連接到 GPU 108和CPU 101以便促進處理器對各種類型的存儲器112例如但不限于RAM(隨機存取 存儲器)的訪問。因而,無論是否敏感,各種類型的信息或甚至各種類型的信息的部分,可 以取決于需要而被存儲在以上所討論的各種類型的存儲器上。多媒體控制臺100可以包括可以優(yōu)選地被實現(xiàn)在模塊118上的I/O控制器120、 系統(tǒng)管理控制器122、音頻處理單元123、網(wǎng)絡(luò)接口控制器124、第一 USB主機控制器126、第 二 USB控制器1 和前面板I/O子部件130。USB控制器1 和1 可以充當用于外圍控 制器142(1)-142 )、無線適配器148和外部存儲器單元146 (例如,閃存、外部⑶/DVDROM 驅(qū)動器、可移動介質(zhì)等等)的主機。這樣的外圍控制器142(1)-142( 可以具有由鄰近性 和運動觸發(fā)的各種類型的照明顯示器。此外,網(wǎng)絡(luò)接口 1 和/或無線適配器148可以提 供對網(wǎng)絡(luò)(例如,因特網(wǎng)、家庭網(wǎng)絡(luò)等等)的接入,且可以是包括以太網(wǎng)卡、調(diào)制解調(diào)器、藍 牙模塊、有線電視調(diào)制解調(diào)器等等在內(nèi)的多種有線或無線接口組件中的任何接口組件??梢蕴峁┫到y(tǒng)存儲器143以便存儲在引導進程期間加載的應用程序數(shù)據(jù)??梢蕴?供介質(zhì)驅(qū)動器144,且它可以包括DVD/CD驅(qū)動器、硬盤驅(qū)動器或其他可移動介質(zhì)驅(qū)動器等 等。介質(zhì)驅(qū)動器144可以內(nèi)置或外置于多媒體控制臺100??梢越?jīng)由介質(zhì)驅(qū)動器144訪問 應用程序數(shù)據(jù)以便由多媒體控制臺100執(zhí)行、播放等等。介質(zhì)驅(qū)動器144可以經(jīng)由諸如串 行ATA總線或其他高速連接(例如,IEEE 1394)等的總線連接到I/O控制器120。除了這 樣的應用程序數(shù)據(jù)之外,幫助在外圍/附件設(shè)備控制器和控制臺100本身之間通信的其他 信息可以被存儲在控制臺100上。系統(tǒng)管理控制器122可以提供各種服務(wù)功能以便確保多媒體控制臺100的可用 性。音頻處理單元123和音頻編解碼器132可以根據(jù)上述目前所公開的本主題的各方面形 成具有高保真度、三維、環(huán)繞和立體音頻處理的對應音頻處理流水線??梢越?jīng)由通信鏈接在 音頻處理單元123和音頻編解碼器1 之間運載音頻數(shù)據(jù)。音頻處理流水線可以將數(shù)據(jù)輸 出到A/V端口 140以便由外部音頻播放器或具有音頻能力的設(shè)備再現(xiàn)。
前面板I/O子部件130可以支持電源按鈕150和彈出按鈕152以及任何LED (發(fā)光 二極管)或暴露在多媒體控制臺100的外表面的其他指示器的功能。系統(tǒng)電源模塊136可 以提供向多媒體控制臺100的組件供電。風扇138可以冷卻多媒體控制臺100內(nèi)的電路。CPU 10UGPU 108、存儲器控制器110和多媒體控制臺100內(nèi)的各種其他組件可以 經(jīng)由一個或多個總線而互連,這些總線包括串行總線和并行總線、存儲器總線、外圍總線和 處理器或使用任何各種總線體系結(jié)構(gòu)的處理器總線或本地總線。當多媒體控制臺100被通電或重啟時,應用程序數(shù)據(jù)可以從系統(tǒng)存儲器143被加 載到存儲器112和/或高速緩存102、104中,且在CPU 101上執(zhí)行。這樣的應用程序數(shù)據(jù)可 以包括在線得到數(shù)據(jù)中的一些,包括以上討論的化身包。應用程序還可以呈現(xiàn)當導航到在 多媒體控制臺100上可用的不同介質(zhì)類型時提供一致的用戶體驗的圖形用戶界面。用戶可 以使用這樣的用戶界面裝飾化身。在操作中,介質(zhì)驅(qū)動器144內(nèi)含有的應用程序和/或其 他介質(zhì)可以從介質(zhì)驅(qū)動器144啟動或播放,以便向多媒體控制臺100提供另外的功能。而 且,包括游戲視頻游戲應用程序在內(nèi)的這樣的介質(zhì)是用于裝飾化身的基礎(chǔ)。多媒體控制臺100可以通過簡單地將系統(tǒng)連接到電視機或其他顯示器來作為單 機系統(tǒng)而操作。在此單機模式中,多媒體控制臺100可以允許一個或多個用戶與系統(tǒng)交互、 看電影、聽音樂等等。然而,借助于通過網(wǎng)絡(luò)接口 1 或無線適配器148可用的寬帶連接性 的集成,多媒體控制臺100還可以作為計算設(shè)備的較大的網(wǎng)絡(luò)社區(qū)的參與者而操作。作為 這樣的參與者,它可以與無論是PC還是服務(wù)器的計算設(shè)備交互,且接收可以最終存儲起來 的信息。接下來,圖12闡釋參考圖1-圖11和圖13-圖18討論的本主題的示例性連網(wǎng)環(huán) 境。上述所討論的控制臺100可以對應于前述的計算設(shè)備中的任何一個,或其可以被分布 在這樣的設(shè)備上。其可以經(jīng)由通信網(wǎng)絡(luò)/總線巧4與各種其他對象155和存儲設(shè)備158交 互,其中這樣的對象155和設(shè)備158可以對應于其他計算設(shè)備(無論是硬件、固件還是軟 件)??刂破?42(1)-142(2)可以使用所示出的通信網(wǎng)絡(luò)154以有線方式或無線地經(jīng)短距 離或遠距離與控制臺100通信。這樣的通信可以由連接到通信網(wǎng)絡(luò)IM的各種計算設(shè)備 156、153、157 輔助。在整個本公開內(nèi)容中使用的術(shù)語電路可以包括專用硬件組件。在相同的或其他實 施例中,電路可以包括被配置為由固件或開關(guān)執(zhí)行功能的微處理機。在相同的或其他的示 例實施例中,電路可以包括一個或多個通用處理單元和/或多核處理單元等等,當包含可 用于執(zhí)行功能的邏輯的軟件指令被加載到存儲器例如RAM和/或虛擬存儲器中時,可以配 置這些處理單元。在示例實施例中,電路包括硬件和軟件的組合,實現(xiàn)者可以寫出包含邏輯 的源代碼,且源代碼可以被編譯成可以由通用處理單元處理的機器可讀代碼。最終,還應注意,在此描述的各種技術(shù)可以結(jié)合硬件或軟件或如果適當?shù)脑捊Y(jié)合 兩者的組合來實現(xiàn)。因而,目前所公開的本主題的方法和裝置或其某些方面或部分可以采 取包含在有形存儲介質(zhì)中的程序代碼(即,指令)的形式,有形存儲介質(zhì)例如軟盤、CD-ROM、 硬盤或任何其他機器可讀存儲介質(zhì),其中,當程序代碼被加載到機器例如計算機中并由機 器例如計算機執(zhí)行時,機器變成用于實踐本主題的裝置。在可編程的計算機上執(zhí)行的程序代碼的情況中,計算設(shè)備可以一般地包括處理 器、可由處理器讀取的存儲介質(zhì)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備和至少一個輸出設(shè)備。一個或多個程序可以例如通過使用數(shù)據(jù)處理應用程序編 程接口(API)等等來利用本發(fā)明的域?qū)S镁幊棠P头矫娴膭?chuàng)建和/或?qū)崿F(xiàn),優(yōu)選地以高級 過程編程語言或面向?qū)ο缶幊陶Z言來實現(xiàn)所述一個或多個程序,以便與計算機系統(tǒng)通信。 然而,如果期望的話,可以用匯編語言或機器語言實現(xiàn)程序。在任何情況下,語言可以是編 譯語言或解釋語言及其組合。最終,盡管正如在各個圖所闡釋的和上文所討論的那樣已經(jīng)結(jié)合多個示例性方面 來描述本公開內(nèi)容,但應理解,在不偏離本公開內(nèi)容的前提下,可以使用其他相似的方面, 或者可以對所描述的方面進行修改和添加以執(zhí)行本公開內(nèi)容的相同功能。例如,在本公開 內(nèi)容的各種方面中,描述了被配置成提供化身的動畫裝飾的方法、系統(tǒng)和計算機可讀介質(zhì)。 然而,與這些所描述的方面等同的其他機制也由在此的教導涵蓋。因此,本公開內(nèi)容不應限 于任何單個方面,而是在根據(jù)所附權(quán)利要求的寬度和范圍內(nèi)解釋。SSAPI 基準初始化和關(guān)閉函數(shù)XAvatarInitialize視頻游戲應用程序可以在調(diào)用任何其他化身函數(shù)之前初始化化身系統(tǒng)。XAPIHRESULTWINAPIXAvatarInitialize (IN XAVATAR_COORDINATE_SYSTEMeCoordinateSystem,IN DWORD dwFlags,IN DWORDdwJo int sBuf f erCount,
IN LPDIRECT3DDEVICE9 device);參數(shù)eCoordinateSystem (e坐標系)指示視頻游戲應用程序正在使用左手坐標系還是 右手坐標系。dwFlags (dw 標志)當前被用于用 XAVATAR_INITIALUE_FLAGS_ENABLERENDERER (X 化身_初始化_標志_啟動渲染器)指定渲染器是否被激活。dwJointsBufferCount (dw關(guān)節(jié)緩沖器計數(shù))在不啟用渲染器時忽略,然而在別的 方面必須在2和4之間(含),并指定每個化身渲染器應分配多少關(guān)節(jié)緩沖器。這是因為當 化身渲染器被更新到最后的動畫幀時,所構(gòu)建的關(guān)節(jié)矩陣被復制到可以由頂點著色器在渲 染期間訪問的頂點緩沖器中。為了防止在此鎖定緩沖器上的爭用,應使用多個緩沖器。當 發(fā)生這樣的爭用時,顯示調(diào)試信息,指示此值應被增加。device (設(shè)備)在不啟用渲染器時也被忽略。如果啟用渲染器,則所提供的設(shè)備將 內(nèi)部用于準備化身渲染流水線(創(chuàng)建著色器等等)。
返回值如果成功,就返回S_0K,否則返回錯誤代碼。備注基于輸入?yún)?shù)而初始化為化身系統(tǒng)分配的存儲器。XAvatarlnitialize總是分配 大約2兆字節(jié)來高速緩存化身資產(chǎn)。如果dwFlags 參數(shù)使 AVATAR_INITIALIZE_FLAGS_ENABLERENDERER 置位,則分配大 約500千字節(jié)來存儲所共享的空閑的動畫。從正則堆進行分配。XAvatarShutdown關(guān)閉化身系統(tǒng)并釋放由系統(tǒng)使用的空閑存儲器和資源。XAPIVOIDWINAPIXAvatarShutdown (VOID);備注當運行時,視頻游戲應用程序可以重復地初始化和關(guān)閉化身系統(tǒng),只要 在Xavatarlnitialize被再次調(diào)用之前,對XAvatarlnitialize的每一次調(diào)用與對 XAvataramtdown的匹配調(diào)用配對。如果在游戲大廳而非在玩游戲期間使用化身,則視頻游 戲應用程序可能這樣做?;硐到y(tǒng)當進入大廳時可以被初始化,并且當離開大廳時被關(guān)閉。通過對XAvatarlnitialize的調(diào)用而要求的存儲器和系統(tǒng)資源將不被釋放,直到 XAvatarShutdown 已被調(diào)用。元數(shù)據(jù)函數(shù)在檢索化身的資產(chǎn)用于顯示之前,必須檢索化身的元數(shù)據(jù)。此元數(shù)據(jù)被存儲在用 戶的簡檔中,且是含有關(guān)于化身的組成的內(nèi)部信息的二進制大對象。元數(shù)據(jù)格式對視頻游 戲應用程序不透明。XAvatarGetMetadataByXuid視頻游戲應用程序可以檢索一個或多個X簡檔的元數(shù)據(jù)XAPIHRESULTWINAPIXAvatarGetMetadataByXuid(IN DWORDdwUserIndexRequester,IN DWORDdwXuidCount,IN const XUID * pXuids,OUT HRESULT *pResults,
OUT XAVATAR_METADATA *pAvatarMetadata,IN OUT PXOVERLAPPED pOverlapped);參數(shù)dwUserlndexRequester(dw用戶索引請求器)是請求元數(shù)據(jù)的玩家的本地用戶索 引。dwXuidCount (dwXuid 計數(shù))是 pXuids 數(shù)組中 XUID 的數(shù)量。pXuids是其元數(shù)據(jù)將被檢索的XUID的數(shù)組。pResults(p結(jié)果指向其中返回指示在檢索具體的XUID的化身元數(shù)據(jù)時成功或失 敗的結(jié)果代碼的緩沖器。將此緩沖器看作是dwXuidCount HRESULT(H結(jié)果)的數(shù)組,其中 pResults[n]的值是檢索pXuids [η]的元數(shù)據(jù)的結(jié)果。pResultBuffeHp結(jié)果緩沖器)是將返回結(jié)果的緩沖器。一旦成功完成,此 緩沖器就可以被看作是XAVATAR_METADATA的數(shù)組。如果pResults [η]指示失敗,則 pAvatarMetadata [η]中的 XAVATAR_METADATA 將是無效的。pOverlapped (ρ重疊)是指向用于監(jiān)控檢索操作的狀態(tài)的X0VERLAPPED (X重疊) 結(jié)構(gòu)的指針。如果pOverlapped是NULL,則操作被同步地完成。返回如果函數(shù)成功且立即返回則返回ERR0R_SUCCESS (出錯_成功),返回ERR0R_ I0_PENDING(出錯_10_待決)指示異步的重疊的操作待決,或者返回ERR0R_FUNCTI0N_ FAILED (出錯_函數(shù)_失敗)。如果返回ERR0R_FUNCTI0N_FAILED,則可以調(diào)用 XgetOverlappedExtendedError (X 取重疊擴展錯誤)來檢索擴展的錯誤信息。XAvatarGetMetadataLocalUser (X 化身取元數(shù)據(jù)本地用戶)檢索本地用戶的元數(shù)據(jù)。XAPIHRESULTWINAPIXAvatarGetMetadataLocalUser(IN DWORDdwUserlndex,OUT XAVATAR_METADATA *pAvatarMetadata,IN OUT XOVERLAPPED * pOverlapped);參數(shù)dwUserlndex (dw用戶索引)是其化身元數(shù)據(jù)正在被請求的玩家的本地用戶索引。pAvatarMetadata (ρ化身元數(shù)據(jù))一旦成功完成,此指針就指向所指示的玩家的 化身元數(shù)據(jù)。
22
pOverlapped是指向用于監(jiān)控檢索操作的狀態(tài)的XOVERLAPPED結(jié)構(gòu)的指針。如果 pOverlapped是NULL,則操作被同步地完成。返回如果函數(shù)成功且立即返回則返回ERROR_SUCCESS,返回ERROR_IO_PENDING指示異 步的重疊的操作待決,或者返回ERROR_FUNCTION_FAILED。如果返回ERROR_FUNCTION_FAILED,則可以調(diào)用 XgetOverlappedExtendedError 來檢索擴展的錯誤信息。XAvatarGetMetadataRandom(X 化身取元數(shù)據(jù)隨機)—些視頻游戲應用程序想要訪問隨機化身的范圍以用于類似于人群的事物。此函 數(shù)返回一個或多個隨機生成的化身的元數(shù)據(jù)。XAPIHRESULTWINAPIXAvatarGetMetadataRandom(IN XAVATAR_BODY_TYPE_MASK BodyTypeMask,IN DWORD dwAvatarCount,OUT XAVATAR_METADATA *pAvatarMetadata,IN OUT PX0VERLAPPED pOverlapped);參數(shù)BodyTypeMask (體型掩碼)是指定隨機化身應使用哪種體型(雄性或雌性)的位掩碼。dwAvatarCount (dw化身計數(shù))指定要創(chuàng)建的隨機化身的數(shù)量。pAvatarMetadata 一旦成功完成,此緩沖器就可以看作是帶有用dwAvatarCount 元素的XAVATAR_METADATA的數(shù)組。pOverlapped是指向用于監(jiān)控檢索操作的狀態(tài)的XOVERLAPPED結(jié)構(gòu)的指針。如果 pOverlapped是NULL,則操作被同步地完成。返回如果函數(shù)成功且立即返回則返回ERR0R_SUCCESS,返回ERR0R_I0_PENDING指示異 步的重疊的操作待決,或者返回ERR0R_FUNCTI0N_FAILED。如果返回ERR0R_FUNCTI0N_FAILED,則可以調(diào)用 XGetOverlappedExtendedError 來檢索擴展的錯誤信息。XavatarGetMetadataSignedOutProf ileCount (X 化身取元數(shù)據(jù)登出簡檔計數(shù))返回在控制臺上但當前未登入的簡檔的計數(shù)。XAPIDWORDWINAPIXAvatarGetMetadataSignedOutProfiIeCountQ ;
返回返回在控制臺上當前未登入的簡檔的數(shù)量。備注把所返回數(shù)量用作用XAvatarGetMetadataSignedOutProfile枚舉登出的簡檔的 索引。XavatarGetMetadataSignedoutProfile (X 化身取元數(shù)據(jù)登出簡檔)檢索登出的簡檔的化身元數(shù)據(jù)。XAPIHRESULTWINAPIXAvatarGetMetadataSignedOutProfile(IN DWORD dwProfilelndex,OUT XAVATAR_METADATA *pAvatarMetadata,IN OUT PXOVERLAPPED pOverlapped);參數(shù)dwProf ilelndex (dw簡檔索引)是所請求的簡檔的索引。此值的范圍應從零至小 Tfi XavatarGetMetadataSignedOutProfileCount 31( 白勺i+·。pAvatarMetadata是保存所請求的元數(shù)據(jù)的緩沖器。pOverlapped是指向用于監(jiān)控檢索操作的狀態(tài)的X0VERLAPPED結(jié)構(gòu)的指針。如果 pXOverlapped是NULL,則操作被同步地完成。返回如果函數(shù)成功且立即返回則返回ERR0R_SUCCESS,ERR0R_I0_PENDING以指示異步 的重疊的操作待決,或者返回ERR0R_FUNCTI0N_FAILED。如果返回ERR0R_FUNCTI0N_FAILED,則可以調(diào)用 XGetOverlappedExtendedError 來檢索擴展的錯誤信息。備注視頻游戲應用程序?qū)⑹褂么撕瘮?shù)來獲取用戶的朋友和家庭的化身元數(shù)據(jù),以將 “已知的”化身放入游戲中。XAvatarMetadataGetBodyType (X 化身元數(shù)據(jù)取體型)從化身的元數(shù)據(jù)返回體型——雄性或雌性XAPIXAVATAR_B0DY_TYPEWINAPIXAvatarMetadataGetBodyType(IN CONST XAVATAR_METADATA *pMetadata);
24
參數(shù)pMetadata (ρ元數(shù)據(jù))是指向有效的XAVATAR_METADATA大對象的指針。返回適當?shù)奈槐恢梦粊碇甘倔w型的XAVATAR_BODY_TYPE (X化身_體型)。備注元數(shù)據(jù)大對象對視頻游戲應用程序而言不透明,且它們的格式經(jīng)受改變。使用此 函數(shù)而不是嘗試直接從元數(shù)據(jù)提取此信息?;碣Y產(chǎn)數(shù)據(jù)函數(shù)如果視頻游戲應用程序希望使用其本身的系統(tǒng)來渲染和動畫化化身,則首先必須 檢索定義那些化身的底層數(shù)據(jù)。XAvatarGetAssetsResultSize (X 化身取資產(chǎn)結(jié)果大小)返回將保存化身資產(chǎn)數(shù)據(jù)的數(shù)據(jù)緩沖器的大小。XAMINLINEHRESULTWINAPIXAvatarGetAssetsResultSize(IN XAVATAR_C0MP0NENT_MASK ComponentMask,OUT DWORD * pcbResultBuffer,OUT DWORD 女pcbGpuResourceBuffer);參數(shù)ComponentMask (組件掩碼)是用于指定要求哪些資產(chǎn)的位字段。結(jié)合XAVATAR_ C0MP0NENT_MASK (X化身_組件_掩碼)值來指定所要求的資產(chǎn)。想要檢索整個身體的視頻 游戲應用程序應使用XAVATAR_C0MP0NENT_MASK_ALL (X化身_組件_掩碼_全部)。pcbResultBuffer (pcb結(jié)果緩沖器)指向一 DWORD,該DWORD在成功完成時含有 保存所請求的資產(chǎn)所需的以字節(jié)為單位的資產(chǎn)數(shù)據(jù)緩沖器的必要大小。pcbGpuResourceBuffer (pcb Gpu 資源緩沖器)指向一 DWORD,該 DWORD 在成功完 成時含有保存所請求的資產(chǎn)所需的以字節(jié)表示的GPU資源緩沖器的必要大小。返回如果成功,就返回S_0K,否則返回錯誤代碼。備注然后,視頻游戲應用程序必須分配這些大小的兩個緩沖器來保存所檢索的化身數(shù) 據(jù)。這些緩沖器中的第二個最適宜作為物理分配在4096字節(jié)邊界上完成,使得其將含有的 紋理可以被構(gòu)造在適當?shù)奈恢?。XAvatarGetAssets (X 化身取資產(chǎn))加載渲染化身所需的資產(chǎn)。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);參數(shù)pMetadata指向其資產(chǎn)正在被檢索的化身的元數(shù)據(jù)。ComponentMask是用于指定要求哪些資產(chǎn)的位字段。結(jié)合XAVATAR_COMPONENT_ MASK值來指定所要求的資產(chǎn)。想要檢索整個身體的視頻游戲應用程序應使用XAVATAR_ COMPONENT_MASK_ALL。cbResultBuffer (cb結(jié)果緩沖器)是由pResultBuffer (ρ結(jié)果緩沖器)指向的緩 沖器以字節(jié)為單位的的大小。pResultBuffer是將保存資產(chǎn)數(shù)據(jù)的緩沖器。cbGpuResourceBuffer (cbGpu 資源緩沖器)是由 pGpuResourceBuffer (pGpu 資源 緩沖器)指向的緩沖器以字節(jié)為單位的大小。pGpuResourceBuffer是將保存用于化身的GPU資源的緩沖器。pOverlapped是指向用于監(jiān)控檢索操作的狀態(tài)的X0VERLAPPED結(jié)構(gòu)的指針。如果 pXOverlapped是NULL,則操作被同步地完成。返回如果函數(shù)成功且立即返回則返回ERR0R_SUCCESS,返回ERR0R_I0_PENDING指示異 步的重疊的操作待決,或者返回ERR0R_FUNCTI0N_FAILED。如果返回ERR0R_FUNCTI0N_FAILED,則可以調(diào)用 XGetOverlappedExtendedError 來檢索擴展的錯誤信息。備注此操作可以涉及對X LIVE的查詢以檢索化身當前正在穿著或用其裝飾的三維資 產(chǎn)的整個集合。因為X LIVE查詢的可能性,尤其是在將來控制臺系統(tǒng)更新時,視頻游戲應 用程序應預期此操作進行若干秒。一旦完成,化身數(shù)據(jù)被寫入視頻游戲應用程序提供的結(jié)果緩沖器。此格式的當前定義在附錄A中給出。pResultBuffer內(nèi)部的分層結(jié)構(gòu)的各個成員將指向被存儲在pGpuResourceBuffer 內(nèi)部的緩沖器,尤其對于例如紋理和頂點的項。紋理是放置在pGpuResourceBuffer中的第 一項,這是由于它們的大的對齊要求。盡管不是強制性的,但推薦pGpuResourceBuffer緩 沖器是在4096字節(jié)邊界上的物理分配,使得紋理可以被構(gòu)造在適當?shù)奈恢?。還可以使用XCancelOverlapped(X取消重疊)來取消活動的XAvatarGetAssets 請求。IXAvatarRenderer 函數(shù)XAvatarCreateRenderer創(chuàng)建給定化身的新的IXAvatarRenderer對象。XAPIHRESULTWINAPIXAvatarCreateRenderer(IN PXAVATAR_METADATA pMetadata,IN XAVATAR_C0MP0NENT_MASKComponentMask,IN XAVATAR_SHADOff_SIZE evatarShadowSize,OUT IXAVATARRENDERER * *ppAvatarRenderer);參數(shù)pMetadata指向由此IXAvatarRenderer對象渲染的化身的元數(shù)據(jù)。ComponentMask指定化身的哪些部分將被渲染。eAvataramdowSizek化身陰影大小)指示渲染器應使用什么大小陰影圖。指 定XAVATAR_SHAD0W_SIZE_N0NE (X化身_陰影_大小_無)以禁用陰影圖,指定XAVATAR_ SHAD0W_SIZE_SMALL(X化身_陰影_大小_小)以使用小的(512X512像素)陰影圖,而 指定XAVATAR_SHADOW_SIZE_LARGE (X化身_陰影_大小_大)以使用大的(10 X 1024像 素)陰影圖。注意,如備注中所描述,使用陰影圖引起渲染器分配另外的存儲器。ppAvatarRenderer (pp化身渲染器)指針的地址,如果成功返回,則指向曾經(jīng)調(diào)用 AddRef 一次的 IXAvatarRenderer 對象。返回如果成功,就返回S_0K,否則返回錯誤代碼。備注此函數(shù)分配下列量的存儲器 850KB+(化身模型和資產(chǎn))(eAvatarShadoffSize == XAVATAR_SHAD0ff_SIΖΕ_Ν0ΝΕ ? OMB) +(eAvatarShadoffSize = = XAVATAR_SHAD0ff_SIZE_SMALL ? 0. 5MB) +(eAvatarShadoffSize == XAVATAR_SHAD0ffSIZELARGE ? 1. 0MB)
27
(自陰影圖)大部分 850KB由物理分配組成,因為這些為紋理、頂點等等。AddRef和Release用于管理渲染器的壽命。注意,盡管此函數(shù)立即返回,但渲染器在其渲染化身之前花費一些量的時間來檢 索所有資產(chǎn)。因為化身檢索可以涉及對X LIVE作出多個請求,所以在渲染器能夠顯示化身 之前,時間可過去若干秒。如果在渲染器完成初始化之前,IXAvatarRenderer: =Render被 調(diào)用,則其將渲染通用的“等待”圖形。IXAvatarRenderer:GetStatus返回IXAvatarRenderer對象的當前渲染狀態(tài)。XAPIHRESULTWINAPIIXAvatarRendererGetStatus();返回如果渲染器準備渲染化身,則返回S_0K。如果化身仍然正在被檢索,則返回E_ PENDING(E_待決)。如果渲染器已經(jīng)遇到錯誤,則返回E_FAIL(E_失敗)。因為化身檢索可以涉及對X Live作出多個請求,所以在創(chuàng)建渲染器之后且在化身 被顯示之前,時間可以過去若干秒。IXAvatarRenderer:Update將化身的幾何形狀在當前的動畫中更新到指定時間。XAPIHRESULTWINAPIIXAvatarRendererUpdate(IN FLOATfElapsedTime);參數(shù)fElapsedTime (f逝去時間)是自從最近調(diào)用Update之后的毫秒數(shù)。返回如果成功,就返回S_0K,否則返回失敗代碼。備注在化身被渲染之前,每次通過視頻游戲應用程序的渲染循環(huán)時,就應調(diào)用 IXAvatarRendererUpdate。通過傳遞fElapsedTime參數(shù)的適當?shù)闹?,視頻游戲應用程序可以暫停、加速或減 慢動畫。0值將暫停視頻,而小于實際的逝去時間的值將減慢動畫,且大于實際的逝去時間 的值將加速動畫。IXAvatarRendererRenderShadow
生成化身的當前的狀態(tài)的陰影圖。XAPIHRESULTWINAPIIXAvatarRendererRenderShadow(IN LPDIRECT3DDEVICE9pDevice,IN XMMATRIXModel,IN XMMATRIXView,IN XMMATRIXProjection);參數(shù)pDeViCe(p設(shè)備)是指向當前的渲染目標的指針。Model (模型)是當前的模型變換。View(視圖)是當前的視圖變換。Projection(投影)是當前的投影變換。返回如果成功,就返回S_0K,否則返回錯誤代碼。備注IXAvatarRenderer RenderShadow 寫入 EDRAM0在 IXAvatarRenderer: Update 已經(jīng)被調(diào)用以更新 之后,且在IXAvatarRenderer: Render被調(diào)用以渲染化身 IXAvatarRendererRenderShadow0IXAvatarRenderer:Render將化身渲染到給定目標。XAPIHRESULTWINAPIIXAvatarRenderer:Render(IN LPDIRECT3DDEVICE9 pDevice,IN XMMATRIXModel,IN XMMATRIXView,IN XMMATRIXProjection);參數(shù)pDevice是當前的渲染目標的指針。Model是當前的模型變換。View是當前的視圖變換。!Projection是當前的投影變換。
化身的位置 之前,應調(diào)用
返回如果成功,就返回S_0K,否則返回錯誤代碼。備注在IXAvatarRenderer Update已經(jīng)更新動畫 狀態(tài)且 IXAvatarRenderer: RenderShadow已經(jīng)渲染陰影圖以匹配最后的動畫狀態(tài)之后,應調(diào)用 IXAvatarRendererRender。視頻游戲應用程序必須在調(diào)用此函數(shù)之前設(shè)置* pDevice的渲染目標和深度緩 沖器。IXAvatarRendererGetMatrices對以下三個標準視圖中的一個檢索適當?shù)哪P秃鸵晥D變換矩陣頭;頭及肩;或 整個身體。XAPIHRESULTWINAPIIXAvatarRendererGetMatrices(IN XAVATAR_RENDER_VIEff eView,OUT XMMATRIX * pModel,OUT XMMATRIX 女 pView);參數(shù)eView(e視圖)指定其變換矩陣被請求的標準視圖。pModel (ρ模型)指向XMMATRIX(XM矩陣)。如果成功,則矩陣被設(shè)置為所請求的 模型變換矩陣。pView (ρ視圖)指向XMMATRIX。如果成功,則矩陣被設(shè)置為所請求的視圖變換矩陣。返回如果成功,就返回S_0K,否則返回錯誤代碼。備注視頻游戲應用程序在對IXAvatarRenderer: Update的每一次調(diào)用之后應調(diào)用此 函數(shù)來檢索新的矩陣,且然后,將新的矩陣傳送到IXAvatarRenderer: RenderShadow和 IXAvatarRenderer: :Render兩者。這將保證化身即使正在動畫化時也被正確地跟蹤。這對 于放大的頭部截圖尤其重要。還重要的是,相同的矩陣被傳送到IXAvatarRenderer: RenderShadow和 IXAvatarRenderer: Render兩者,使得陰影圖匹配渲染。XAvatarRenderffaiting (X 化身渲染等待)渲染用于指示化身元數(shù)據(jù)仍然正在下載的“等待”動畫。XAPIHRESULTWINAPI
XAvatarRenderffaiting(IN LPDIRECT3DDEVICE9device,IN XMMATRIX modelMatrix,IN XMMATRIX viewMatrix,IN XMMATRIX projectionMatrix);參數(shù)pDevice是指向當前的渲染目標的指針。Model是當前的模型變換。View是當前的視圖變換。ftOjeetion是當前的投影變換。返回如果成功,就返回S_0K,否則返回錯誤代碼。備注當視頻游戲應用程序希望顯示化身但是仍然正在等待從LIVE服務(wù)返回的元數(shù)據(jù) 時,視頻游戲應用程序應使用此函數(shù)。三個矩陣應與將被提供給IXAvatarRenderer Render的那些矩陣相同。IXAvatarAnimation 函數(shù)XAvatarLoadAnimation (X 化身力口載動畫)通過從化身系統(tǒng)加載庫存動畫來創(chuàng)建IXAvatarAnimation對象。XAPIHRESULTWINAPIXAvatarLoadAnimation(IN const XAVATAR_ASSETID * Assetld,OUT IXAVATARANIMATION * *ppAvatarAnimation,);參數(shù)AssetIcK資產(chǎn)id)是表示被包括在化身系統(tǒng)中的庫存動畫的所定義的一組常量 中的一個。一組動畫標識符在 xavatar. h XAVATAR_ASSETID_ANIMAT10N_CLAP (X 化身 _ 資 產(chǎn) ID_動畫 _ 拍手)、XAVATAR_ASSETID_ANIMATION_WAVE (X 化身 _ 資產(chǎn) ID_ 動畫 _ 揮手等寸。ppAvatarAnimation (pp化身動畫)是指向所返回的IXAvatarAnimation對象的指 針的地址。返回如果成功,就返回S_0K,否則返回錯誤代碼。備注·此函數(shù)分配下列量的存儲器
200KB (動畫數(shù)據(jù))·此操作可以涉及對X LIVE的查詢。因為X LIVE的查詢的可能性, 所以視頻游戲應用程序應預期此操作將進行若干秒。視頻游戲應用程序應使用 IXAvatarAnimation: GetStatus函數(shù)來判斷動畫何時準備好被使用?!?AddRef 和 Release 用于管理 IXAvatarAnimation 對象的壽命。XAvatarLoad AnimationFromBuffer從含有動畫描述的存儲器緩沖器創(chuàng)建IXAvatarAnimation對象。XAPIHRESULTWINAPIXAvatarLoadAnimationFromBufTer(IN VOID 女 ρAnimationBuffer,IN DWORD cbAnimationBuffer,OUT IXAVATARANIMATION * *ppAvatarAnimation,);參數(shù)pAnimationBuffer(p動畫緩沖器)指向動畫描述。cbAnimationBuffer (cb動畫緩沖器)指定以字節(jié)為單位的動畫緩沖器的大小。ppAvatarAnimation是指向所返回的IXAvatarAnimation對象的指針的地址。返回如果成功,就返回S_0K,否則返回錯誤代碼。備注·此函數(shù)分配下列量的存儲器 200KB (動畫數(shù)據(jù))·此操作可以涉及對X LIVE的查詢。因為X LIVE的查詢的可能性, 所以視頻游戲應用程序應預期此操作將進行若干秒。視頻游戲應用程序應使用 IXAvatarAnimation: GetStatus函數(shù)來判斷動畫何時準備好使用?!?AddRef 和 Release 用于管理 IXAvatarAnimation 對象的壽命。IXAvatarAnimation:GetStatus返回 IXAvatarAnimation 對象的狀態(tài)。XAPIHRESULTWINAPIIXAvatarAnimation:GetStatus();返回如果動畫已經(jīng)被加載,則返回值將通常是S_0K,如果動畫未能加載,則返回值將通 常是E_FAIL,或如果化身仍然正在加載,則返回值將通常是E_PENDING。動畫在其已被加載之前不可用于回放。IXAvatarRendererPlayAnimations播放動畫序列。XAPIHRESULTWINAPIIXAvatarRendererPlayAnimations(IN DWORD nAnimationCount,IN LPXAVATARANIMATION * pAnimations,IN XAVATAR_PLAYANIMATI0NS_FLAGS flags);參數(shù)NAnimationCount (η 動畫計數(shù))是 pAnimations (ρ 動畫)數(shù)組中的 IXAvatarAnimation 白勺—fi。pAnimations 是 IXAvatarAnimation 對象的數(shù)組的地址。Flags (標志)是指定給定動畫列表的播放選項的XAVATAR_PLAYANIMATIONS_ FLAGS (X化身_播放動畫_標志)值的組合。返回如果成功,就返回S_0K,否則返回錯誤代碼。備注·調(diào)用此API將清除任何先前排隊的動畫并將播放所提供的動畫序列?!酥緟?shù)控制動畫應如何被播放ο默認地,當前播放的動畫將被中斷且pAnimations數(shù)組中的第一動畫將立即開 始(從先前的動畫混合以防止不和諧的運動)。ο 如果指定了 XAVATAR_PLAYANIMATIONS_FLAGS_WAIT_FOR_CURRENT_ANIM (X 化身 _播放動畫_標志_等待_當前_動畫),則在啟動pAnimations數(shù)組之前,當前的動畫 將被允許完成。注意,即使此標志被指定,還沒有被啟動的動畫隊列也將總是被清除。此 標志僅允許當前播放的動畫在啟動pAnimations數(shù)組之前完成。ο如果指定了 XAVATAR_ PLAYANIMATI0NS_FLAGS_L00P_LAST_ANIM (X 化身 _ 播放動畫 _ 標志 _ 循環(huán) _ 最后 _ 動畫), 則數(shù)組中的最后的動畫將被循環(huán)播放,直到對PlayAnimations的下一次調(diào)用。沒有此標志 時,一旦數(shù)組中的最后的動畫完成,渲染器將返回到播放所內(nèi)建的空閑的動畫。IXAvatarRendererGetCurrentAnimation返回指向當前在給定的IXAvatarRenderer上播放的IXAvatarAnimation對象的 指針。XAPIHRESULTWINAPIIXAvatarRendererGetCurrentAnimation(OUT IXAVATARANIMATI0N 女女 pAnimation
);參數(shù)如果 ppAnimation 成功,則 ppAnimation 指向當前動畫的 IXAvatarAnimation 指 針。返回如果當前正在播放所內(nèi)建的空閑的動畫中的一個,則返回S_FALSE(S失敗)并將 ppAnimation 設(shè)置為 NULL。備注調(diào)用者負責在完成時在所返回的界面上調(diào)用Release。
3權(quán)利要求
1.一種用于實現(xiàn)應用程序編程接口(API) (1310)的計算機實現(xiàn)的方法,所述應用程序 編程接口允許包括化身渲染器(1309)的視頻游戲系統(tǒng)(1302)將化身渲染到由在所述視頻 游戲系統(tǒng)上執(zhí)行的視頻游戲應用程序提供的目的地,所述方法包括向所述視頻游戲應用程序告知所述化身渲染器被啟用(1410);接收所述視頻游戲應用程序使用左手坐標系還是右手坐標系的指示(1420);向所述視頻游戲應用程序告知要對所述化身渲染器和所述化身的元數(shù)據(jù)分配的存儲 器的量(1430);傳遞用于一個或多個玩家簡檔的元數(shù)據(jù)(1440);以及指示是否應為所述化身分配陰影圖(1450)。
2.如權(quán)利要求1所述的方法,所述方法還包括傳遞與所述視頻游戲系統(tǒng)(1302)—起提 供的另外的動畫(1500)。
3.如權(quán)利要求1所述的方法,所述方法還包括向所述視頻游戲應用程序告知當前正播 放哪一動畫(1510)。
4.如權(quán)利要求1所述的方法,所述方法還包括基于頭、頭及肩或整個身體視圖的其中 之一對所述視頻游戲系統(tǒng)(1302)查詢模型和視圖矩陣(1520)。
5.如權(quán)利要求1所述的方法,所述方法還包括查詢在線游戲服務(wù)(1308)以便檢索化身 數(shù)據(jù)(1530)。
6.如權(quán)利要求1所述的方法,其特征在于,所述化身數(shù)據(jù)是三維數(shù)據(jù)(1540)。
7.如權(quán)利要求1所述的方法,所述方法還包括提供對多個隨機化身的訪問權(quán)(1550)。
8.如權(quán)利要求7所述的方法,所述方法還包括為所述多個隨機化身中的一個指定雄性 或雌性身體(1560)。
9.如權(quán)利要求2所述的方法,所述方法還包括從所述視頻游戲系統(tǒng)上當前未登入的簡 檔檢索化身數(shù)據(jù)(1570)。
10.一種其上存儲了計算機可執(zhí)行指令的計算機可讀存儲介質(zhì)(1600),所述計算機可 執(zhí)行指令用于實例化允許在視頻游戲系統(tǒng)(1302)中執(zhí)行的視頻游戲應用程序在由所述視 頻游戲應用程序選擇的渲染目的地渲染一個或多個化身的API (1310),所述計算機可執(zhí)行 指令包括用于以下的指令實例化允許所述視頻游戲應用程序訪問用于將所述化身渲染到由所述視頻游戲應用 程序選擇的渲染目標的數(shù)據(jù)的編程接口(1610),其中所述視頻游戲系統(tǒng)提供渲染和動畫功 能,且所述視頻游戲應用程序?qū)⑺秩镜幕沓尸F(xiàn)在由所述視頻游戲應用程序呈現(xiàn)的二維 表面上。
11.根據(jù)權(quán)利要求10所述的計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)還包括用 于查詢在線游戲服務(wù)(1308)以便檢索化身數(shù)據(jù)(1640)的指令。
12.一個適于實例化允許在視頻游戲系統(tǒng)(1302)中執(zhí)行的包括化身渲染功能的視頻 游戲應用程序接收用于構(gòu)建、渲染和動畫化化身的數(shù)據(jù)的應用程序編程接口(API) (1310) 的系統(tǒng),所述系統(tǒng)包括至少一個處理器;以及至少一個通信上被耦合到所述至少一個處理器的存儲器,所述存儲器中存儲有實現(xiàn)所 述API (1710)的計算機可執(zhí)行指令,所述API被配置為展示允許所述視頻游戲應用程序訪問用于表示所述化身的數(shù)據(jù)并將所述數(shù)據(jù)合并到所述渲染功能中的編程接口,所述計算機 可執(zhí)行指令能夠請求用于存儲所述數(shù)據(jù)的數(shù)據(jù)緩沖器大小(1720); 根據(jù)所述緩沖器大小分配存儲器空間(1730);指定所述化身的組件以供檢索(1740),其中可以請求所述化身的整個身體;以及 請求用于所述化身的數(shù)據(jù)(1750)。
13.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,所述視頻游戲系統(tǒng)包括化身渲染器 (1309),還包括允許所述化身渲染器將所述化身渲染到由所述視頻游戲應用程序提供的目 的地(1810)的指令。
14.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,還包括用于查詢在線游戲服務(wù)(1308) 以檢索在發(fā)行所述視頻游戲應用程序之后發(fā)行的化身數(shù)據(jù)(1820)的指令。
15.根據(jù)權(quán)利要求12所述的系統(tǒng),其特征在于,還包括可以獨立于所述視頻游戲應用 程序而被更新的化身資產(chǎn)檢索邏輯(1830)。
全文摘要
所公開的是提供可擴展化身系統(tǒng)的應用程序編程接口(API)。在一種實施例中,API可以允許視頻游戲應用程序檢索表示化身的數(shù)據(jù)結(jié)構(gòu)。然后,游戲可以采用那些結(jié)構(gòu)并將數(shù)據(jù)合并到其本身的渲染系統(tǒng)。在另一實施例中,API可以允許視頻游戲應用程序?qū)⒒礓秩镜戒秩灸繕嘶蚣y理,其中視頻游戲系統(tǒng)執(zhí)行渲染和動畫功能。
文檔編號G06F9/44GK102099826SQ200980128307
公開日2011年6月15日 申請日期2009年7月14日 優(yōu)先權(quán)日2008年7月14日
發(fā)明者B·T·馬森, B·雷維爾, D·B·克羅伊曼, D·H·史密斯, R·A·博伊德, S·勞, T·A·蘭根 申請人:微軟公司