新四季網

用於動畫的依賴圖評估的系統和方法

2023-05-23 15:04:26

專利名稱:用於動畫的依賴圖評估的系統和方法
技術領域:
本申請概括地涉及遊戲系統中的元素動畫,更具體地涉及使用該遊戲系統的依賴 圖評估。
背景技術:
遊戲系統為該遊戲系統的用戶提供交互式體驗。該遊戲系統可以用於娛樂目的、 教育目的或二者的組合或其他目的。例如,遊戲可以指導用戶的探險需求,或者遊戲可以提 示用戶回答數學問題。用戶可以向遊戲系統輸入命令,並在顯示器上觀看那些輸入命令的 結果。這些顯示的結果通常由遊戲系統基於各種因素製作成動畫,這些因素包括用戶輸入、 遊戲中出現的角色、角色彼此之間的交互或與遊戲環境或場景的交互。因此,開發者繼續尋 求用於為遊戲中出現的元素製作動畫的改進方法和設備。

發明內容
一個實施方式包括遊戲動畫系統。該遊戲動畫系統包括被配置為執行遊戲的處理 器;源動畫曲線數據,其中該源動畫曲線數據描述了控制元素隨著時間的狀態變化;定義 該源動畫曲線數據的變換的第一依賴圖的描述;引擎,用於在遊戲執行期間以交互式速率 評估該第一依賴圖。另一個實施方式包括在遊戲動畫系統上執行遊戲的方法。該方法包括識別源動畫 曲線數據,其中該源動畫曲線數據描述了控制元素隨著時間的狀態的變化;識別第一依賴 圖的描述,其中該依賴圖定義了該源動畫曲線數據的變換;以及,在執行該遊戲時以交互式 速率評估該第一依賴圖。另一個實施方式包括遊戲動畫系統。該遊戲動畫系統包括被配置為執行遊戲的處 理器;表示控制元素的數據,其中控制元素的狀態的變化與多個其他元素的方向的變化相 關聯;源動畫曲線數據,其中該源動畫曲線數據描述了控制元素的狀態中的變化;定義源 動畫曲線數據的變換的第一依賴圖的描述;以及引擎,用於在執行遊戲期間以交互式速率 評估第一依賴圖。另一個實施方式包括遊戲動畫系統。該遊戲動畫系統包括用於對第一對象的至少 一部分進行動畫製作的第一依賴圖的描述,其中該第一對象至少部分地由多個相互關聯的 元素來定義;動畫引擎,其被配置為識別基於第一依賴圖的多個子網絡,其中每個子網絡包 括第一依賴圖中的多個節點,以及其中每個子網絡中的多個節點描述了至少兩個相互關聯 的元素隨時間的運動;以及多個處理器,其中每個處理器被配置為評估獨立於第一依賴圖 中其餘節點的至少一個子網絡的節點,以便為與至少一個子網絡的至少兩個相互關聯的元 素相關聯的運動製作動畫。由不同的處理器評估至少兩個子網絡。另一個實施方式包括由遊戲系統對元素進行動畫製作的方法。該方法包括提供 用於對第一對象的至少一部分進行動畫製作的第一依賴圖的描述,其中該第一對象至少部 分地由多個相互關聯的元素來定義;識別多個子網絡,每個子網絡包括第一依賴圖中的多
5個節點,其中每個子網絡中的多個節點描述了至少兩個相互關聯的元素隨時間的運動,並 可獨立於依賴圖中的其餘節點而被評估;為每個子網絡分配遊戲系統的多個處理器中的一 個,其中為至少兩個子網絡分配以不同的處理器;利用分配以子網絡的處理器評估至少一 個子網絡中的節點,以便對與子網絡的至少兩個相關元素相關聯的運動進行動畫製作。


圖1是表示用於遊戲動畫的包括多個處理器的示例系統的示意圖。圖2是表示一部分對象的示例的示意圖,該對象包括具有網格覆蓋、控制元素和 動畫曲線的骨骼。圖3是示例圖2中骨骼的一部分的示意圖,其中控制點已經沿著動畫曲線被移動。圖4是示例了為元素製作動畫的一部分依賴圖的框圖,該元素為諸如圖2中骨骼 的元素。圖5是表示在遊戲期間創建並評估動畫的依賴圖的方法示例的流程圖。圖6是進一步表示評估依賴圖的方法示例以及表示從依賴圖中檢索節點值的流 程圖。圖7是表示從源導出依賴圖中的節點的方法示例的流程圖。圖8是表示使用如圖1中所示的多個處理器評估依賴圖的方法示例的流程圖。圖9是表示具有在世界坐標空間中確定位置的元素示例的示意圖。圖10是表示具有在局部坐標空間中確定位置的圖9中的元素示例的示意圖。圖11是表示可以相互作用的兩個依賴圖的部分的示例的框圖。圖12是表示分組至元網絡的來自圖11中兩個依賴圖的部分的示例的框圖。圖13是由兩條不同動畫曲線放置在不同位置的對象的示例的示意圖。圖14是位於圖13中不同位置的對象的圖示,該對象的示例位於對不同位置求平 均所確定的中間位置。圖15是位於圖13中不同位置的對象的圖示,該對象的示例對不同動畫曲線求平 均所確定的中間位置。
具體實施例方式下列詳細說明用於特定的示例和實施方式。然而,本發明的結構和操作不限於此 處所述的示例和實施方式。此外,存在多種方式來實現關於此處所述的這種示例和實施方 式及特定部分。顯然,此處所公開的任何特定的結構和/或功能都僅僅是代表性的。本領 域的技術人員會意識到,已公開的部分可以以多種方式省略、分離或組合。例如,可以使用 除此處所述的一個或多個方面以外或不同於此處所述的一個或多個方面的其他結構、功能 或結構和功能來實現裝置或方法。遊戲系統的用戶希望在遊戲運行中增加複雜度,並增加與該遊戲運行相關聯的圖 像複雜度。遊戲不再是在每次屏幕結束時具有得分的二維場景,而通常是可以表示整個虛 構世界或宇宙並與複雜情節相聯繫的三維場景。在許多遊戲中,對用戶的視覺衝擊與遊戲 的任何其他方面同樣重要,如在用戶中創造樂趣及在解釋情節中提供幫助。增加的圖像復 雜度還允許遊戲中更多的細節交互。
遊戲系統用戶對於改善遊戲圖像的增強的期望同樣增加了設計和創造圖像的動 畫師的責任。動畫師必須確保圖像色彩繽紛並在視覺上很刺激,並包括那些先前無法使用 遊戲系統來製作動畫的微小細節。此外,用戶要求角色以物理上精確的方式移動,並要求在 遊戲中的交互是可信的。包括人類角色的遊戲通常必須栩栩如生地刻畫那些人類角色。然而,改善的遊戲圖像會導致在遊戲開發中的問題。例如,由於動畫師努力滿足遊 戲系統用戶的期望,將圖像中所有細節進行編碼所需的數據總量就會增加。數據的這種增 加已經導致後勤問題,例如如何存儲和傳輸數據。在許多實例中,表示動畫師所創建圖像的 數據必須壓縮;在一些實例中,要減少這些數據的數量。結果,用戶獲得的動畫和圖像與動 畫師所創建的有所不同。在一個實施方式中,動畫師或其他人員在源創建依賴圖,以便在為對象的至少一 部分製作動畫時使用。此外,動畫師創建至少一條動畫曲線,其表示控制元素狀態的變化。 依賴圖和動畫曲線被導出到遊戲系統。在遊戲執行期間遊戲系統評估依賴圖,以便使用動 畫曲線為與該對象相關聯的元素製作動畫。與動畫師創建的運動相比,遊戲系統用戶所觀 察到的運動並沒有丟失。在一個實施方式中,在至少兩個數據結構中導出或存儲依賴圖,其中第一數據結 構包括表示空間或時間值的圖的節點,第二數據結構包括表示關係的圖的節點。在另一個 實施方式中,依賴圖可以由遊戲系統的多個處理器來評估。在另一個實施方式中,可以單獨 識別和操縱依賴圖的子網絡。在另一個實施方式中,使用依賴圖可以組合動畫曲線用於評 估,或使用重新配置的依賴圖或分離的依賴圖執行相反的運動。圖1是表示遊戲動畫的示例系統100的示意圖。遊戲系統100被配置為執行遊戲 並在遊戲執行期間產生動畫。遊戲系統100進一步被配置為接收並處理來自用戶的輸入, 並提供用於顯示這種用戶輸入的結果的數據。用戶使用輸入設備114輸入命令。輸入設備114可以是允許用戶與遊戲系統100 交互的任何設備。例如,輸入設備114可以包括鍵盤、操縱杆、控制器、麥克風、照相機、小鍵 盤或一系列按鈕或其他設備及功能部件之一。遊戲系統100向顯示設備116輸出圖像和動畫。顯示設備116可以是接收顯示數 據並將其可視地呈現給用戶的任何設備。例如,顯示設備116可以包括陰極射線管、多個發 光二極體(LED)、液晶顯示器(IXD)、或投影機或其他設備及功能部件之一。遊戲系統100包括具有多個處理器104a、104b、104c和104d的中央處理單元 (CPU) 102。處理器104a-104d也可以稱作核。雖然在圖1中顯示了 4個處理器104a_104d, 但是遊戲系統100可以包括更多或更少數量的處理器。處理器可以在CPU 102的內部或外 部實現。CPU 102可以包括一個或多個處理器。例如,CPU 102可以包括一個處理器、三個 處理器或八個或更多處理器。CPU 102和/或處理器104a-104d中的至少一個處理器與輸 入設備114和顯示設備116通信。遊戲系統100可以進一步包括與CPU 102和/或處理器104a-104d中的至少一個 處理器通信的易失性存儲器106。易失性存儲器106可以包括特定類型的隨機訪問存儲器 (RAM),例如,動態隨機訪問存儲器(DRAM)或靜態隨機訪問存儲器(SRAM),或可以包括任何 其他類型的易失性存儲器。易失性存儲器106可以在CPU 102和/或處理器104a-104d中 的一個處理器的操作期間,用於存儲數據和/或命令。本領域的技術人員會識別並使用其
7他類型的易失性存儲器。遊戲系統100可以進一步包括與CPU 102和/或處理器104a_104d中至少一個通 信的非易失性存儲器108。非易失性存儲器可以包括快閃記憶體、磁存儲設備、硬碟或只讀存儲器 (ROM),如可擦除可編程只讀存儲器(EPROM),或任何其他類型的非易失性存儲器。非易失性 存儲器108可以用於存儲遊戲、指令、角色信息、遊戲狀態信息,或如果斷開遊戲系統100的 電力還會被保存的任何其他信息。遊戲系統100可以包括安裝或臨時定位額外的非易失性 存儲器的接口。本領域的技術人員會識別並使用其他類型的非易失性存儲器。與CPU 102和/或處理器104a_104d中至少一個通信的圖形處理單元(GPU) 110 繪製由一個處理器提供的數據以便在顯示設備116上顯示。GPU 110可以被配置為執行任 何數量的涉及提供在顯示設備116上顯示的數據的功能。例如,GPU 110可以被配置為在 其他功能中繪製多個多邊形、使用陰影或紋理、創建表示三維環境的數據,或在坐標空間之 間進行變換。如圖1所示,GPU 110可以在CPU102的外部,或在CPU 102內部和/或集成 在CPU 102中。本領域的技術人員會識別GPU 110的其他配置及功能。遊戲系統100可以進一步包括與CPU 102和/或處理器104a_104d中至少一個通 信的盤驅動器112。一個或多個處理器可以從插入到盤驅動器112的盤讀取數據。在一些 實施方式中,遊戲系統100被配置為使用盤驅動器112在盤上記錄數據。這樣,與遊戲運行 和動畫相關的數據可以傳送到遊戲系統100或來自於遊戲系統100。例如,許多遊戲以光碟 (CD)或數位化視頻光碟(DVD)的形式出售。這些遊戲中的大多數如此生產,以至於玩遊戲 所需的全部信息,包括角色、情節以及動畫數據都包含在光碟上。因此,用戶可以購買包含 遊戲的光碟用於在遊戲系統100上執行。遊戲也可以存儲在非易失性存儲器108上。遊戲引擎存儲於遊戲系統100之上。遊戲引擎包括可以用於執行遊戲的指令或數 據。當初始化遊戲時,遊戲引擎啟動遊戲運行。在遊戲運行期間,引擎提供與遊戲中場景或 時刻相關聯的圖像和動畫。這些圖像和動畫在顯示設備116上顯示。當用戶使用輸入設備 114輸入指令時,遊戲引擎評估命令並確定遊戲執行該命令的效果。這些效果可以由顯示給 用戶的圖像和動畫反映出來。例如,用戶可以按小鍵盤上的按鈕使遊戲中的角色打開一扇 門。遊戲引擎100可以在CPU 102、處理器104a_104d、GPU 110或非易失性存儲器108 中的任意一個中全部或部分地實施或存儲。遊戲引擎可以包括指令或數據的單個集合,或 可以包括多個集合。例如,遊戲引擎可以作為動畫引擎(例如圖像或繪製引擎)來實現,並 可以作為確定用戶的輸入如何影響遊戲的情節的單獨引擎來實現。除了遊戲引擎之外,遊戲系統100可以存儲或實現其他功能及其他用於執行遊戲 的子系統。例如,這樣的子系統包括繪製系統、遊戲保存系統、物理系統及特效系統。遊戲系統100不限於上述的設備、配置及功能。例如,雖然只顯示了單個易失性存 儲器106、非易失性存儲器108、GPU 110、盤驅動器112、輸入設備114及顯示設備116,但是 多個任意一種此設備均可在遊戲系統100的內部或外部實現。此外,遊戲系統100可以包 括電力供應或網絡訪問設備。本領域的技術人員可以識別遊戲系統100的這種配置。此處所述的組件可以以多種系統及設備的方式實現。例如,遊戲系統100可以包 括為執行遊戲設計的控制臺,例如遊戲機、S0NYPLAYSTATI0N 3、或微軟XBOX 360。遊戲系統 100也可以包括被配置為執行遊戲的通用計算設備,例如膝上型計算機、臺式機或個人計算機。可以使用任意數量的方法和設備創建遊戲系統100顯示的圖像和動畫。尤其是生 成表示三維環境的圖像和動畫時,經常使用諸如AUTODESK公司出售的MAYA的建模軟體。使 用這種軟體,動畫師可以創建對象並為對象創建運動,該對象由遊戲系統100的遊戲引擎 使用以便提供在顯示設備116上顯示的數據。圖2是表示使用上述軟體創建的對象200的一部分示例的示意圖。在所示的實施 方式中,對象200作為人的形體顯示,該對象的一部分包括形體的肩和臂。但是,對象200 可以是任何對象。例如,該對象可以包括人類或非人類角色,諸如武器或食物的物品,包括 建築物的牆或建築,諸如巖石或樹的場景元素,或動畫師想要表現的任何其他對象。此處對 於對象的說明同樣可以應用於所有這樣的對象。可以使用多個相互關聯的元素202a、202b、204a、204b及206來定義對象200的結 構。這些相互關聯的元素用於創建對象200的「骨骼」。它們定義了對象200的形狀和物理 約束。在所示的實施方式中,元素202a和202b被配置為改變位置和方向,但是它們的形 狀和尺寸是基本上固定的。然而元素204a和204b被配置為結合點,其定義了元素202a和 202b可以旋轉的位置。定義對象的互相關聯的元素可以通過依賴圖相關聯。依賴圖包括分級的節點,其 描述了每個元素如何連接到其他元素及每個元素相對於其他元素如何移動。以此方式,動 畫師不必闡明遊戲中每個可能場景或配置的對象的每個細節或為其製作動畫。例如,可以 理解,當一個人轉動他的肩膀時,他的前臂和手也會移動。同樣地,圖2中所示的對象200 可以如此配置,從而繞著元素204a旋轉元素202a會改變元素202b和204b的位置或方向。 下面會更詳細地描述依賴圖的內容和操作。動畫師可以為每個對象創建依賴圖。此外,對象的一部分或多個對象也可以通過 依賴圖相關聯。在遊戲期間顯示的任何給定的場景中,可以由多張依賴圖表示。例如,場景 中的每個角色可以由動畫師用單獨的依賴圖來製作。通過為依賴圖中的每個節點分配值和 約束條件,動畫師能夠控制對象成為何種形狀及對象如何移動。如果動畫師不希望對象移 動,這也可以在依賴圖中定義。例如,動畫師可以創建骨骼來定義牆的形狀,並可以為牆的 依賴圖的節點賦值,以便使牆的元素相對於彼此不會移動。元素206是控制元素。它可以包括元素202或204的任一類型,或可以是單獨類 型的元素。動畫師可以定義控制元素,以簡化調整對象200的位置或方向的處理過程。每 個對象和依賴圖都可以具有多個控制元素。可以利用動畫曲線來描述控制元素的狀態中的變化。在所示的實施方式中,可以 用動畫曲線208描述控制元素206的位置的變化。在時間、時,控制元素206最初位於第 一位置210a。隨著時間推移,控制元素206可以沿著動畫曲線208移動。在時間t6處,控 制元素206已經沿著動畫曲線208移動到位於第二位置的210b,如圖3所示。當控制元素改變狀態時,會影響一個或多個其他元素。在所示的實施方式中,控制 元素206沿著動畫曲線208移動,這使得元素202a,202b,204a和204b移動。其他元素的這 種移動是由對象200的依賴圖中所定義的約束條件引起的。因此,可以配置依賴圖,使得角 色的手的移動會引起角色胳膊和肩膀的適當的解剖學上的移動,如圖2和3中所示。因此,每次動畫師希望表現控制元素206在不同位置時,元素202a、202b、204a和204b中的每一 個的位置都不需要由動畫師手動設置,但可以通過評估對象200的依賴圖自動計算得出。控制元素不限於空間中的單個點,動畫曲線也不限於元素的隨時間推移的路徑。 控制元素和動畫曲線可以定義為以多種方式影響任意數量的元素。例如,控制元素可以定 義為與描述角色的手的依賴圖相關,從而調整控制元素的狀態會導致這隻手更多或更少的 張開或攥緊。動畫曲線可以描述控制元素中的變化,還可以包括抽象值。一個例子是,可以 定義用於張開或攥緊角色的手的控制元素,該控制元素可以被賦予從1到10的任何值,1表 示手是張開的,10表示手是攥緊的。1到10之間的任何值都表示這隻手在某種程度上張開 或攥緊。這種控制元素的動畫曲線可以包括按時間順序排列的一系列數字,這些數字描述 了在一段時間上手的張開或攥緊運動的預定義集合,其中每個數字都有從1到10的值。因 此,定義手部重複攥緊運動的動畫曲線可以包括數字序列{8,9,10,9,8,7,8,9,10,9,8,9, 10}。同樣地,被賦予從1到10的值的控制元素可以與門相關聯,這樣,1表示門被關閉,而 10表示門被打開到其所能打開的最大程度。在一些實施方式中,控制元素用於調整一個或 多個元素的顏色、陰影或紋理。動畫曲線可以表示預定義動作的移動。在所示的實施方式中,動畫曲線208可以 表示一個角色伸出手與另一個角色握手。另一個示例是,控制元素可以定義在角色的腳上, 動畫曲線定義為該角色行走製作動畫。在遊戲運行期間,用戶按下小鍵盤左邊的按鈕可以 調用該動畫曲線,通過沿著動畫曲線移動角色腳上的控制點來使得角色向左行走。動畫曲線可以以許多方式存儲或表現。例如,動畫曲線可以存儲為一系列值、數據 結構或操縱控制元素的可執行指令集。動畫曲線可以由標示的功能或另一種可視方式來表 示,或者可能沒有易於了解的方式來可視地表示給定的動畫曲線。本領域的技術人員可以 認識到用於動畫曲線存儲、定義或表示的其他方式。此處所述的動畫曲線可以在特定的建 模軟體中實現,例如MAYA。可以使用蒙皮或網格212覆蓋或綁定骨骼。網格212可以定義對象200的外觀, 而骨骼定義對象200的基礎結構和移動。因此,當網格覆蓋了骨骼或骨骼的一部分時,骨骼 或者骨骼的一部分對於觀看者來說是不可見的。在所示的實施方式中,網格212被配置為 為給予對象200的所示部分以人類肩、臂、手的外觀。當移動元素202a、202b、204a、204b或 206中任何一個時,網格會覆蓋到新的位置,創造出手臂已經改變位置的外觀。網格212不僅可以向用戶傳達比元素202a、202b、204a、204b及206所傳達的更加 可識別的圖像,該網格212還用於說明由元素202a、202b、204a、204b及206的移動所無法 影響的微小細節。例如,骨骼可以定義為表現汽車的結構。當汽車改變位置時,除了門、引 擎護罩、行李艙、輪胎和窗戶以外,與汽車其餘部分相關的汽車主要部分不會移動。網格可 以與汽車的骨骼綁定,其定義了可在場景中改變位置複雜的曲線和造型,但是絕不會改變 相對於汽車的其他部分的方向。為每條曲線或造型細節定義的結構元素不會為動畫師提供 額外的好處。將具有已定義的約束和運動、控制元素及網格的骨骼稱為「骨架(rig)」。創建這 些元素並將它們一起關聯起來可以稱為「裝配(rigging)」。在裝配過程完成之後,通常準 備為對象製作動畫。然後動畫師調整控制元素並定義動畫曲線,以便為對象的運動和動作 製作動畫。有時「骨架」也指這種不具有網格的骨骼和控制元素。本領域的技術人員將認識到創建骨架和依賴圖的各種方法,並能夠創建這種骨架和依賴圖。圖4是表示依賴圖400的一部分示例的框圖,該依賴圖用於為圖3中諸如骨骼或 骨架的元素206製作動畫。依賴圖400的所示部分包括多個節點402-416。這些節點包括 存儲值的所有節點,例如,節點402、406、408、412、416以及諸如節點404,410和414的功能 性節點。如果值節點402、406、408、412和416存儲有關於圖2中所述對象的信息,那麼值 節點402、406、408、412和416可以存儲空間值或時間值。功能性節點可以基於值節點中的 數據計算結果,因此可以確定值節點之間的關係。值節點可以作為變量或值(如浮點數)、數據結構或數組或數據集來存儲或實現。 功能性節點可以作為運算、數學函數、命令集或可執行命令集來存儲。在一些實施方式中, 值節點可以與功能性節點整合起來,例如功能性節點的屬性。在一些實施方式中,依賴圖的 節點可以保持形狀或幾何結構信息、顏色信息或紋理信息。同樣地,包含這種節點的依賴圖 或這種依賴圖的一部分可以作為數據結構或一系列數據結構、命令或可執行指令或一系列 連結節點來存儲或實現。本領域的技術人員將認識到存儲、定義、表示或實現依賴圖及其節 點的其他方法,並認識到節點可以存儲的額外信息。此處所述的依賴圖和節點可以用特定 的建模軟體程序來實現,如MAYA。在所示的實施方式中,可以從左到右評估依賴圖400的部分。這樣,評估依賴圖 400的部分以將遊戲中的時間tg變換為元素的最終方向。為此,依賴圖400的部分定義了 動畫曲線的變換。在一些實施方式中,依賴圖400的部分也可以或相反地從右向左被評估, 或者可以重新配置,使其可以從右向左被評估。在節點402存儲或識別遊戲中的時間tg。在節點404,tg變換為沿著動畫曲線、 的時間,其在節點406被存儲或識別。例如,如上所述,動畫曲線可以表示角色行走。但是, 為與動畫曲線相關聯的移動製作動畫可能只需要5秒鐘。基於角色先前的移動或角色已經 行走的時間總量,例如可以在節點404確定該角色在動畫曲線中是3秒鐘,或該動畫曲線已 經完成60%。參考圖2,用戶可能已經玩了 20分鐘遊戲(因此tg等於20分鐘),但是可以 確定與動畫曲線208相關聯的移動剛剛才開始,因此確定t。等於、。這個值可以存儲於節 點 406。在節點410,使用動畫曲線408或其一部分評估沿著動畫曲線的時間,以確定元素 在那個時刻的位置。參考圖2,動畫曲線208可以拆分為χ平面中的曲線、y平面中的曲線 以及ζ平面中的曲線,分別由節點408x、408y和408z表示。這些曲線部分408x、408y和 408z中的每一個都在時間t。在節點410x、410y和410z處被分別評估。元素的x、y、z位置 可以分別存儲於節點412x、412y和412z。這樣,節點412x、412y和412z將分別存儲、時 刻的元素206的x、y和ζ位置。使用節點414和在節點412x、412y、412z處分別識別的x、y、ζ位置,可以在節點 416存儲或識別元素的方向。該方向可以包括任意數量的描述該方向的數據,例如在其他這 種方向數據中的先前識別的X、1、ζ的值和/或元素的旋轉。參考圖3,節點416存儲或識 別在時刻、時元素206的方向,其等於位置210a。本領域的技術人員會認識到,依賴圖可以包括比圖4中所示的更多的節點,或者 依賴圖可以包括比上述更多或更少的值或功能。例如,可以連結依賴圖400的許多部分,以 定義如對象(例如對象200)的移動。例如,考慮圖2中的元素204a旋轉的情況。總的來
11說,元素204a的旋轉可以導致以下結果基於元素204a的旋轉來評估部分依賴圖,可以確 定元素202a的新位置;基於元素202a的位置,通過評估部分依賴圖,可以確定元素204b的 新位置;基於元素204b的位置及元素204b的旋轉,可以確定元素202b的新位置;基於元 素202b的位置,可以確定元素206的位置。這樣,可以評估依賴圖以確定由依賴圖表示的 對象中的任意元素的方向。當如上所述評估依賴圖時,當「父」節點的值改變時,節點的值會改變(在依賴圖 的層級中處於較高位置的任何節點都是父節點;在圖2所示對象200的實施方式中,在表示 對象200的元素的依賴圖中的任意節點位於給定所示元素的左邊,將是表示給定元素的節 點的父節點)。這樣,先前確定的值可能不再是任何給定節點的值。為了表明這一點,每個 值節點可以包含指示符,該指示符指示值節點中的值是否有效。例如,節點可以包含標記 符,其指示節點是髒的(也就是說,值已經改變了);或計數器或有效性指示符,其可以用於 確定值是否已改變,下面將更詳細的說明。圖5是表示方法500實例的流程圖,該方法用於創建並評估依賴圖,例如圖4中所 示的用於在遊戲期間製作動畫的依賴圖的部分。在塊502處,動畫師創建依賴圖。動畫師 可以使用計算設備(如膝上型計算機、臺式機或個人計算機)或使用允許創建依賴圖或此 處所述骨架的任何其他設備來創建依賴圖。這種設備可以稱為源,因為它是動畫師創作的 源頭。在塊504,動畫師使用該源設備或另一個源設備創建與依賴圖相關聯的動畫曲線。 在下文中,這種動畫曲線可以稱為源動畫曲線,因為它在源設備處創建。如上所述,動畫曲 線可以描述依賴圖的控制元素的狀態的變化。而依賴圖可以描述動畫曲線的變換。在塊506,導出動畫曲線和依賴圖數據。這可以涉及到將動畫曲線和依賴圖打包, 或壓縮動畫曲線或依賴圖,從而動畫曲線和依賴圖可以由遊戲系統(如圖1中所示的遊戲 系統100)使用。在一些實施方式中,塊506包括將依賴圖和動畫曲線數據燒制到盤上。在 其他實施方式中,塊506包括將依賴圖和動畫曲線數據打包到可由遊戲系統100讀取的可 執行文件中。在塊508,動畫曲線和依賴圖數據加載到遊戲系統中。在所示的遊戲系統100中, 依賴圖和動畫曲線數據可以加載到或存儲到一個或多個易失性存儲器106、非易失性存儲 器108、CPU 102或處理器104a-104d中的任意一個中。可以使用多種方法將依賴圖數據和 動畫曲線數據傳輸到遊戲系統100。例如,依賴圖和動畫曲線數據可以存儲在盤上,該盤可 以裝入光碟驅動器112中以向遊戲系統100提供依賴圖和動畫曲線數據。在一些實施方式 中,依賴圖和動畫曲線數據在網絡上發送,在遊戲系統100使用網絡接口接收。在遊戲執行期間,在塊510處評估依賴圖。在一個實施方式中,遊戲引擎評估依賴 圖。在此實施方式中,遊戲引擎可以順序地評估圖中的每個節點或僅評估那些髒的節點。評 估可以包括讀取存儲於節點中的指令,或使用節點中存儲的值或函數執行遊戲引擎中定義 的處理過程或其他操作。評估也可以包括處理或影響分級的可執行指令。下面詳細描述評 估依賴圖的示例方法的實施方式。如上所述,在源設備處創建依賴圖。本領域的技術人員可以理解,在遊戲系統中評 估在源設備處創建的該依賴圖。為了保持與遊戲系統用戶的交互,依賴圖可被實時評估。這 樣,遊戲系統對於用戶輸入的響應或遊戲元素的動畫不會滯後或延遲。因此,可以以交互式
12速率評估依賴圖,從而在遊戲執行期間,對依賴圖進行的評估不會在遊戲執行或遊戲對用 戶輸入的響應中導致重大中斷。圖6是進一步示出方法600的示例的流程圖,該方法600以遊戲引擎(例如,關於 圖1所示的系統100的遊戲引擎)評估依賴圖。方法600可以在圖5中的塊510執行期間 執行。在塊602,請求節點值。例如,為了對動畫曲線環境中的對象或其一部分製作動畫 而請求節點值,如參考圖2至圖4所述。當多個元素的方向在沿著動畫曲線的每個點改變 時,引擎請求節點的值。節點返回的值可以提供用於顯示的動畫數據,例如在圖1所示的顯 示設備116上顯示。在塊604,確定節點值是否有效。如上所述,這種確定可以使用有效性指示符。例 如,遊戲引擎可以檢查髒的標記以查看節點的當前值是否與其中存儲的值不同,例如由於 父節點的改變的原因。遊戲引擎也可以至少部分地基於節點中的計數器來做出這種決定, 下面將詳細說明。如果節點是有效的,遊戲引擎前進至塊612,在此返回該節點的值。如果節點值是 無效的,遊戲引擎前進至塊606。在塊606,節點被請求以便成為有效的節點。為了使節點有效,在塊608確定當前 節點(也即,塊602處請求值的節點)所依賴的節點。對於此處所述的依賴圖,在塊608,識 別在依賴圖層級中比當前節點高的所有節點。然後,針對當前節點依賴的任何節點重複方法600。如果當前節點所依賴的節點是 有效的,則返回它們的值。如果它們是無效的,如上所述,它們會被請求以便成為有效節點。在當前節點所依賴的節點返回其值之後,在塊610通過參考當前節點所依賴的節 點值,可以計算當前節點的值。該計算出的值存儲在當前節點中。在塊612,返回該計算出 的值。該值隨後可以用於為當前節點表示的元素製作動畫。參照圖6例如使用如上遊戲系統100的遊戲引擎,來以遊戲系統評估依賴圖,從而 為對象的至少一部分製作動畫,這種做法有很多好處。提供用於為對象製作動畫的數據的 其他方法包括,「烘焙」多個配置中的角色骨骼中元素的配置。例如,在動畫曲線中的每個點 取得每個元素值的快照。這些數據包括每個元素的多達十二個或更多的值九個值表示元 素在三維空間的旋轉,三個值表示元素在x、y、z坐標系中的位置。為了捕獲對象的移動,必 須為每個可能的動畫曲線的動畫曲線中的每個點存儲每個元素的值。本領域的技術人員可以理解,烘焙過程創造了大量數據。數據的總量通常在遊戲 執行期間難以讀取和使用,並且通常太大以至於無法包含於單個盤中以便傳輸遊戲。所以, 表示對象移動的數據通常被壓縮,通常省略了一些烘焙過的數據。當基於這種壓縮的或不 完全的數據為對象而製作動畫時,該對象的移動最多是估算在源處創建的動畫,並且在遊 戲執行期間難以對動畫進行任何改變。與使用烘焙的數據相反,以遊戲系統評估依賴圖和源動畫曲線降低了為對象製作 動畫所需的數據總量,並增加了動畫的美感。針對動畫數據的壓縮數量可以被限制或取消, 對象的移動能夠被無損地顯示,這種無損是相對於源處創建的對象移動而言的。下面的敘述進一步在細節上討論上述系統和方法的優點。這些優點包括,減少了 向遊戲系統導出的數據總量,增加了評估該數據的效率,以更高精度製作動畫,並能夠調整及修改源動畫。此外,將結合所述優點描述系統和方法的進一步的細節和實現。減少數據總量可以減少向遊戲系統導出的在動畫中使用的數據總量。不是導出在每條動畫曲線 的每個位置的每個對象或其一部分的值,而是可以導出依賴圖,依賴圖描述了對象或其一 部分的每個元素,並可以導出源動畫曲線。可以通過評估關於源動畫曲線的依賴圖來確定 每個元素的值,從而避免了導出每個元素值的需求。通過恰當地導出依賴圖中的節點,可以進一步減少用於導出依賴圖的數據總量。 圖7是表示從源設備導出依賴圖中節點的方法示例的流程圖,例如圖4中所示的依賴圖400 的部分。可以在圖5所示方法500的塊506處使用方法700。在塊702,識別表示一個值(如空間或時間值)的第一依賴圖節點。關於依賴圖 400的該部分,在塊702識別值節點402、406、408和412。在塊704,存儲第一節點。第一節點可以存儲於由遊戲系統可讀取的第一數據結構 中,如圖1所示的遊戲系統100。在塊706,表示第一節點之間關係的第二依賴圖節點被識別。關於依賴圖400的該 部分,在塊706識別功能性節點404、410和414。已識別的節點可以表示依賴圖中表示的元 素的第一空間或時間值與依賴圖中表示的元素的第二空間或時間值之間的關係。例如,基 於與第一元素相連接的第二元素的位置或方向,在塊706識別的節點可以用於確定第一元 素的位置和方向。在塊708,第二節點與第一節點分開存儲。第二節點可以存儲於由遊戲系統可讀 取的第二數據結構中,其中該第二數據結構不同於第一數據結構。這樣,存儲了兩個數據結 構,將依賴圖中表示的值與依賴圖中表示的功能區分開。這種區分可以與適當的數據結構 成對出現,該數據結構會減少存儲這種信息所需的數據總量,或者這種區分可以幫助剔除 依賴圖中存儲的過量信息,該過量信息在為對象或其部分製作動畫時對於遊戲系統毫無用 處。在一些實施方式中,方法700用於向兩個不同的數據結構導出依賴圖。在其他實 施方式中,存儲多個第一數據結構和/或多個第二數據結構。該多個第一數據結構可以存 儲表示不同節點值的數據,或者該第一數據結構可以包括存儲表示至少某些相同節點值的 數據,例如出於冗餘及糾錯目的。導出之後,這種第一數據結構和第二數據結構可以存儲於 遊戲系統之上,例如存儲在遊戲系統100的非易失性存儲器108中,或在從插入到光碟驅動 器112中的盤中讀取之後存儲在易失性存儲器106中。使用方法700導出節點有助於減少在創建依賴圖時源設備使用的數據總量,但在 為由依賴圖表示的對象或其部分製作動畫時,遊戲系統並不使用這些數據。例如,在遊戲系 統僅需要元素的局部坐標時,源設備可以存儲每個元素的世界坐標,下面將詳細描述。有時 這些世界坐標可以從節點值中省略。源設備也可以存儲在設計依賴圖和骨架中有用的約束 或外部數據,但這些約束或外部數據僅對於元素移動相對無用。當導出依賴圖時,這些約束 和外部數據可以省略。本領域的技術人員可以理解,可以以多種方式導出及存儲依賴圖,包括使用上述 方法700。依賴圖可以以不同於在源處創建的方式存儲於遊戲系統中,但是可以代替地存儲 依賴圖或表示源依賴圖的數據的描述。如上所述,這樣可以減少存儲依賴圖所需的數據量,
14並易於遊戲系統執行。同樣地,可以在遊戲系統中存儲源動畫曲線或表示源動畫曲線的數 據的描述,而不是存儲在源設備處定義的精確的源動畫曲線。本領域的技術人員可以理解,參照圖7的以上所述的示例方法700和遊戲系統對 依賴圖的評估可以用於減少向系統導出所需的數據總量。因此,可以實現更加細緻的動畫 及較少的必須傳輸或存儲的數據。更有效的數據評估導出遊戲系統使用的依賴圖還可以增強遊戲系統的性能。不但遊戲系統可以在無 需對許多數據進行高速緩存或頁面調度的情況下為對象或其部分製作動畫,而且依賴圖較 為容易由多個處理器並行評估,例如圖1中所示的處理器104a-104d。圖8是表示方法800的示例的流程圖,該方法800使用多個處理器(如處理器 104a-104d)來評估依賴圖。在塊802,識別可被彼此獨立評估的依賴圖子網絡。例如,參考 圖2和圖3來考慮先前討論的汽車骨架。定義了汽車骨骼的每個元素可以由依賴圖中的節 點表示。所述節點可以分組到多個網絡中,此處稱為子網絡,因為它們包含整個依賴圖的一 部分,子網絡可以彼此相對獨立地被評估。例如,每扇門可以獨立於其他門及汽車的其餘部 分而打開或關閉。窗戶、行李艙和引擎護罩同樣是獨立的。在一個實施方式中,由遊戲引擎執行在塊802處對子網絡的識別,例如參照圖1的 上述遊戲引擎。在另一個實施方式中,在源設備處識別子網絡,並為每個子網絡導出各自的 數據結構。例如,方法700的塊702可包括識別表示值的子網絡的第一依賴圖節點。塊704 可以包括存儲子網絡的那些已識別的節點。同樣地,塊706和708可以包括識別並存儲表 示第一子網絡的節點之間關係的子網絡的節點。在此實施方式中,遊戲引擎只需要識別單 獨的數據結構,由此識別單獨的子網絡。在塊804,為每個子網絡分配多個處理器(如處理器104a-104d)中的一個。子網 絡可以在處理器中均勻或不均勻地分布。這種分布可以隨機確定,或者估算評估子網絡的 工作負荷,例如基於子網絡的大小或複雜度。在塊806,使用已分配的處理器評估子網絡中的節點。本領域的技術人員可以理 解,使用該方法可以同時評估多個子網絡,多達遊戲系統中單獨處理器的數量。這樣,可以 更有效地評估依賴圖,並降低任何一個處理器上的負擔。在塊802識別的子網絡可以用於提高以其他方式對依賴圖進行評估的效率。一種 這樣的方式是維持每個節點中的表示該節點中的值被改變或更新次數數量的計數器。當確 定該節點的值是否有效時,可以將該計數器與子網絡中其他節點的計數器進行比較。如果 當前節點的計數器的值低於任何父節點的計數器的值,那麼當前節點中的值是無效的,在 該值被返回之前必須更新。接著,將當前節點的計數器的值更新為等於父節點中的計數器 的值,或將計數器重置為共同值。評估依賴圖的其他方法需要在每個節點中設置髒標記以指示節點中的值不再有 效。這樣,當父節點中的值改變時,必須遍歷依賴圖以在該父節點的每個子節點中設置髒標 記。但是,在上述的計數器方法中,僅更新父節點中的計數器,子節點僅需要參照在它們子 網絡中的其他節點,而無需更新整個依賴圖。備選地,每次當子網絡中的父節點的值被改變 時,僅在子網絡的節點中設置髒標記,這樣,就消除了遍歷依賴圖其餘部分的需求。這大大 減少了為由依賴圖表示的對象製作動畫所需的處理的數量,並減少了這種動畫製作所需的時間。可以用於有效識別髒節點的另一種方法包括,定義全局和/或群組有效性指示 符,並在依賴圖的每個節點中定義有效性指示符。每個有效性指示符保持、存儲或定義一個 值。當請求依賴圖中的節點的值時,將該節點的有效性指示符與全局有效性指示符相比較。 如果兩個節點的值不同,那麼節點是髒的,必須更新。當依賴圖的節點由於接收來自依賴圖外部的輸入(例如,由於用戶的輸入或由於 遊戲中時間的流逝)而改變或被修改時,將全局有效性指示符設置為新的值,並將已改變 節點的有效性指示符設置為等於全局有效性指示符的新值。但是,當依賴圖的節點由於接 收來自依賴圖內部的輸入時,僅僅將該節點的有效性指示符設置為等於全局有效性指示符 的值。並不將全局有效性指示符設置為新值。因此,如果由於依賴圖內其他節點的移動而 更新依賴圖的節點,則將不設置新的全局有效性指示符。因為外部輸入而修改依賴圖的節 點,僅有所述已改變的節點會影響最新的全局有效性指示符。這樣,通過與全局有效性指示 符的單次比較就可以確定節點是髒的,並且無需遍歷整個依賴圖來設置髒的標記。除了或取代全局有效性指示符,可以定義一個或多個群組有效性指示符。可以定 義群組有效性指示符以表示依賴圖中的任何群組節點。例如,可以為依賴圖中的每個子網 絡定義群組有效性指示符,或為子網絡的集合定義群組有效性指示符。也可以為連結兩個 依賴圖的元網絡定義群組有效性指示符。下面將更詳細地描述元網絡。使用群組有效性指 示符與使用全局有效性指示符類似。來自群組外部的輸入所引起的節點中的變化可以導致 對群組有效性指示符進行更新。可以在節點中存儲有效性指示符。存儲在節點中的全局或群組有效性指示符可以 連接至一個或多個依賴圖、群組和/或子網絡,以便定義各自依賴圖、群組或子網絡的父節 點。全局或群組有效性指示符也可以獨立於任何依賴圖、群組或子網絡而存儲。此外,有效 性指示符可以包括計數器,或可以包括適於比較的任何其他值。例如,數字的全局有效性指 示符可以在每次改變時增加一個值。本領域的技術人員將認識到,如可以用於表示節點有 效性指示符的計數器不限於在每次改變時增加,並且不限於以恆定速率增加。計數器可以 增加或減少任何值。在塊802識別的子網絡可以通過簡化用於為對象或其一部分製作動畫的坐標系 統,來進一步提高評估依賴圖的效率。一般在世界坐標中評估依賴圖,遊戲系統一般使用已 烘焙元素的世界坐標來提供動畫數據。然而,子網絡可以用於定義局部坐標。圖9是表示最初在圖2中所示的元素206的示例的示意圖,該元素具有在世界坐 標空間中確定的位置。如上所述,元素206是定義了對象200結構的骨骼的一部分。在圖 9所示的實施方式中,對象200的整個人類形體是可見的。在圖2中,僅有包含元素206的 肩膀和手臂的部分形體是可見的。在所示的實施方式中,定義了關於場景或環境的世界坐標的坐標系統902可用於 指明在對象200的骨骼中元素的定位。這樣,使用世界坐標系統定義了元素206的位置 210a。每次移動元素206的父節點(例如元素204a),必須重新計算元素206a的世界坐標。 同樣地,任何一次移動任何節點,必須重新計算該節點的每個子節點的坐標。子網絡可以與它自己的局部坐標系統相關聯。圖10是表示具有在局部坐標空間 中確定的位置的元素206的示例的示意圖。在所示實施方式中,坐標系統1002定義了在元素204b處作為其原點的局部坐標。在這個局部坐標系統中可以計算元素206的位置210a。 這樣,元素206的局部坐標在元素204a和/或元素202a移動時不會改變。在這種情況下, 對依賴圖的評估無需重新計算元素206的局部坐標,從而減少了計算的複雜度及評估依賴 圖所需的時間。可以針對元素的父節點或給定節點的子網絡中的任何其他元素來定義局部坐標。 由於子網絡可以大體獨立於其他子網絡被評估,所以該子網絡的局部坐標不需要像世界坐 標一樣最近地更新。當更新子網絡中節點的局部坐標時,通常只需要更新子網絡中元素的 局部坐標,而不更新依賴圖中任何其他元素的坐標。世界坐標可以由中央處理或定義來計 算,或由參照圖1中所述的遊戲引擎來計算,並且通常只需要在一個元素與另一個對象的 一個元素交互時計算。本領域的技術人員可以理解,以上參照圖8所述的示例方法800,以及其中定義的 子網絡可以用於提高評估依賴圖的效率。因此,可以獲得更快的動畫製作,當提供顯示該動 畫的數據時,遊戲系統也不會成為負擔。動畫的更高精確度如上所述,動畫數據在烘焙之後導出時通常被省略。這樣,可能會丟失元素移動中 的微小細節。例如,當數據被壓縮或省略時,振蕩運動削弱為大體上的直線運動。這樣,無 法在與遊戲系統通信的顯示器(諸如顯示設備116)上精確地重建在源處創建的運動。即 使數據沒有丟失,遊戲系統提供給動畫製作的數據是基於元素定向的導出值,而不是基於 源數據,由此不會精確地反映在源處創建的運動。但是,通過在遊戲系統處評估依賴圖來為對象或其部分製作動畫,將會再現與最 初在源設備處創建的運動一樣的運動。這樣,顯示給遊戲系統用戶的運動就保留了對象運 動中的微小細節,並保留了動畫師傾注的藝術性。這對於再現人類運動特別重要,當只是由 機器製作動畫時其會表現的僵硬或不準確。但是,動畫師會精心製作角色的動作以使得其 表現得栩栩如生,這些動作可以由遊戲系統無損重現。為了加強上述改善的精確度,可以使用多個依賴圖改善場景中元素的交互。當使 用烘焙值時,必須檢測各自對象的元素之間的衝突。這種衝突的檢測代價昂貴且不完全精 確。但是,當評估依賴圖時,可以更容易地使用更多細節確定交互。圖11是表示兩個依賴圖的部分可以交互的示例的框圖。依賴圖1101可以描述具 有方向1的第一對象的第一元素,由坐標Xl、yi、Z1定義。同樣地,依賴圖1102可以描述具 有方向2的第二對象的第二元素,由坐標x2、y2、Z2定義。當兩個元素交互時,它們可以分組到元網絡1104中,並且在它們二者之間定義功 能性節點1106,如圖12所示。參照圖1描述的遊戲引擎可以用於識別這種分組和/或定義 這種功能性節點。可以與評估任何其他依賴圖或子網絡類似地評估元網絡。例如,可以實 現計數器,該計數器表示方向1或方向2的值是否已改變。兩個元素的交互將更為精確及 真實,因為一個元素中的動作可以用於確定其他元素中的動作。此外,可以避免代價昂貴的 碰撞檢測。作為一個示例,方向1可以描述第一角色的手。方向2可以描述第二角色的手。在 遊戲執行期間,兩個角色可以握手。一個角色可以執行由動畫曲線定義的握手,另一個角色 可以適當地作出反應,而不是每個角色都執行獨立於其他角色的預定義的動畫。
作為另一個示例,方向1也可以描述第一角色的手,而方向2可以描述一扇門。當 門關閉時,可以定義功能性節點1106以阻止角色的手移動這扇門或從門中穿過。例如,如 果角色的手與門把手接觸,可以將功能性節點定義為允許角色的手轉動門把手。本領域的技術人員可以理解,上述示例和參照圖11和12所述的元網絡可以用於 增加遊戲系統的動畫精確性。可以減少或避免動畫製作中所使用的代價昂貴的操作的數 量,而且得到的動畫可能更加精確自然。更加可適應的動畫不是遊戲中所有的交互或事件都可以預先定義。通過來自用戶的輸入確定遊戲的 結果和導致該結果的事件。這些輸入是不可預知的,並且根據情形會有所不同。在遊戲執 行期間,這種輸入的數量和對象的可能配置是無窮的。因此,在遊戲執行期間必須確定更多 動畫,而不是在源處預先定義。圖13是位於兩條不同動畫曲線的不同位置處的對象1300的示例示意圖。在圖13 中,對象1300作為球棒示出。作為一個示例,角色可以揮動球棒。當跟隨第一動畫曲線來 向高處揮動球棒,在點1302a處定位控制元素1304,這樣,球棒1300a如圖所示指向上方。 當跟隨第二動畫曲線來向低處揮動球棒,在點1302b處定位控制元素1304,這樣球棒1300b 如圖所示指向下方。當烘焙動畫時,必須通過混合兩個現有配置來創建未被定義的配置。這樣,如果角 色在高的揮動動畫曲線和低的揮動動畫曲線的中間揮動球棒,那麼就不得不將球棒1300a 的動畫和球棒1300b的動畫組合起來,以生成在二者之間定位的球棒。組合已烘焙的動畫 以產生這種結果的方法可以簡單地創建一個對象,該對象是對象1300在兩個位置1302a和 1302b的平均。這樣,可以將球棒1300c作為球棒1300a和球棒1300b的空間平均來製作動 畫,如圖14所示。但是,這種平均會導致不準確的動畫,或在平均所得動畫的移動期間產生 偽像。如圖14中所示,球棒1300c比球棒1300a或1300b都要短。通過組合控制元素的動畫曲線可以創造更加精確的動畫。因此,對那些圖像的動 畫曲線進行平均,並且以組合的動畫曲線示出對象,而不是在空間上對對象的兩個圖像進 行平均。以這種方式顯示先前未定義的運動可以減少偽像,並改善所得出動畫的藝術品質。 例如,定義第一動畫曲線是為在水平地面上行走的角色製作動畫,定義第二動畫曲線是為 在陡峭的小山上爬山的角色製作動畫。通過組合第一和第二動畫曲線,可以為該角色製作 動畫,就像該角色在爬平緩的小山。圖15是位於圖13中位置1302a和1302b的對象1300的另一個示意圖。但是,在 圖15中,使用在點1302d定位的控制元素1304來為球棒1300d製作動畫。可以通過對控 制元素1304在點1302a和1302b的位置和方向求平均,從而確定位置1302。如圖15中所 示,得到的球棒1300d較為精確。此外,使用兩條動畫曲線製作動畫的運動對於用戶來說更 加自然和可信。此外,當動畫元素使用控制元素和組合的動畫曲線時,可以評估控制元素的依賴 圖。通過評估依賴圖,依賴圖中表示的其他元素可以適當地顯示,並可以保持元素的一致交 互。例如,可以將符合第一動畫曲線的角色的手臂定位於角色身體的前面,而將符合第二動 畫曲線的同樣的手臂定位於角色身體的後面。當對它們一起求平均值時,手臂看起來穿過 角色的身體。即使使用為動畫所設計的平均方法(例如球面線性內插),使用烘焙的動畫
18通常無法在遊戲系統中阻止這種不一致的動畫。然而,依賴圖中為手臂和身體配置的約束 可以阻止手臂橫穿過身體,或可以在使用控制點和依賴圖確定手臂的位置時使得身體不礙事。可以用多種方式組合動畫曲線。在一些實施方式中,對動畫曲線求平均值。在其 他實施方式中,確定動畫曲線的加權平均值。可以由在源處的動畫師來確定加權平均值,或 取決於遊戲中的因素。例如,在上述角色爬平緩小山的示例中,可以使用第一和第二動畫曲 線的加權平均值為該角色製作動畫,其中通過比較平緩小山與水平地面或陡峭小山的陡峭 度來確定加權平均值。加權平均值可以是常數,或可以隨時間調整。例如,遊戲引擎可以確 定每個依賴圖或預定義功能的相關加權變量,其可以由動畫師創建或設計,可以用於隨時 間改變權重。評估遊戲系統中的依賴圖也會增加在遊戲執行期間實現反向運動的便利性。反向 運動涉及基於所期望的最終位置和方向確定元素的位置和方向。作為向前的運動求解程 序,反向的運動求解程序接收過程化輸入,並且必須確定滿足程序輸入的調整,而不是接收 對每個元素的調整。例如,當參照圖4所述評估依賴圖時,使用每個時間tg的動畫曲線確定元素的位 置和方向。然而,不會對反向運動求解程序給予該動畫曲線,但必須在沒有該動畫曲線的情 況下確定每個位置和方向,或必須唯一確定一條動畫曲線。例如,遊戲系統的用戶可以輸入 指令讓角色從桌子上撿起一個物品諸如一片食物。反向運動求解程序可以接收角色的手的 最終位置,其等於食物物品的位置,此後可以確定手的位置、方向和動作以及會使手達到該 最終位置的關聯元素。為了確保由遊戲系統製作動畫時,反向運動解決方案會在美學上使人愉悅,動畫 師可以在源處確定或創建反向運動骨架及依賴圖。反向運動依賴圖可由遊戲系統使用以基 於過程化輸入確定反向運動的解決方案。因此,即使遇見與預定義的動畫曲線沒有關聯的 情形,也可以使用動畫師初始的藝術品為該情形中的事件製作動畫。反向運動依賴圖可以定義為與在示例方法500的塊506處導出的依賴圖有關。在 此實施方式中,可以重新配置使用動畫曲線為對象或其一部分製作動畫的依賴圖,以求解 反向運動問題。例如,依賴圖400部分中的值節點408x、408y和408z分別表示x、y、z平面 中的動畫曲線,可以用節點代替,該節點保持表示依賴圖400表示的元素所需的下一個坐 標的值。功能性節點410x、410y、410z同樣可以由節點代替,該節點保持著確定產生元素的 這種所需坐標的角度或方向的功能。本領域的技術人員將認識到依賴圖400或特別是該依 賴圖400的部分可以被重新配置用於反向運動的其他方式。反向運動依賴圖也可以被定義為完全分離的依賴圖。動畫師可以在源處創建這種 依賴圖,並在方法500的塊506處導出對這種依賴圖的描述,在塊508處加載到遊戲系統, 此外先前描述的依賴圖和動畫曲線數據也被導出和加載。反向運動依賴圖可以在遊戲執行 期間以交互式的速率進行評估。遊戲引擎(如參照圖1所描述的遊戲引擎)可以識別指示應該使用反向運動的事 件。這種事件可以導致依賴圖被重新配置,或導致使用分離的依賴圖。例如,當用戶輸入命 令使角色撿起物品時,如上所述,引擎會切換到反向運動依賴圖,以確定角色的手和使手到 達物品位置的連接元素的動作。在一些實施方式中,兩個依賴圖用於為反向運動製作動畫,以確保所確定的反向運動解決方案是平滑的。例如,使用第一反向運動依賴圖確定的動作 可以與使用第二反向運動依賴圖確定的動作相混合。可使用兩個依賴圖的平均、兩個依賴 圖的常量加權平均或隨時間變化或改變的兩個依賴圖的加權平均來確定混合過程。在遊戲系統評估反向運動依賴圖提供了很多優點。例如,動畫師在源設備處創建 的依賴圖可以用於確定反向運動算法以替代請求遊戲系統。遊戲系統定義的這種反向運動 解決方案可能不會保持動畫師的作品,並可以成為遊戲系統的負擔。此外,使用反向運動依 賴圖,反向運動解決方案可以更加精確,並可以涉及更多元素,由此使得得出的動畫對用戶 來說更加可信。例如,如果角色正在從場景的地板上撿起物品,遊戲定義的反向運動解決方 案可以為角色製作動畫,角色可以向下伸手或僵硬地彎腰。使用反向運動依賴圖,可以為角 色製作動畫,如屈膝並以更加栩栩如生的方式撿起物品。本領域的技術人員可以理解,上述示例可以用於增強遊戲系統生成的動畫的適應 性,這些示例包括參照圖13至圖15所述的動畫曲線混合及反向運動依賴圖。以一致性的 簡單方式使用遊戲系統可以為那些沒有由動畫師專門製作動畫的情形製作動畫。本領域的技術人員可以理解,上述的示例系統、設備、方法和實施方式可以以遊戲 系統評估依賴圖和動畫曲線。可以在遊戲執行期間以交互式速率由遊戲系統評估依賴圖。 對依賴圖的評估可以給為對象或其一部分製作動畫提供數據,例如在與遊戲系統通信的顯 示設備上提供數據。對依賴圖的描述可以減少向遊戲系統傳輸所需的數據量。識別依賴圖 的子網絡可以提高評估依賴圖的效率。依賴圖可以由多個處理器並行評估。可以定義函數 以聯繫兩個依賴圖,也可以組合依賴圖的動畫曲線。切換事件使遊戲系統使用反向運動依 賴圖。遊戲系統因此可以在更多情形中,使用較少資源並以更高精確度來更快地生成動畫。本領域的技術人員將認識到,雖然此處所述的特定示例和實施方式涉及元素位置 或方向的改變,但此處的描述也能等同地應用於由控制元素和/或動畫曲線定義、表示或 識別的狀態的任何變化。例如,狀態變化可以表示移動、方向、位置、顏色、形狀、陰影或紋理 的修改路徑,或者可以表示一個所選動作或多個所選動作的觸發。本領域的技術人員將認識到,所述的系統、設備、組件、方法或算法可以使用多種 配置或步驟來實現。上述的單個示例對於配置或步驟的數量不構成限制。例如,遊戲系統 100的配置存在於所述的組件示例之中,其中的組件可以以電子硬體、計算機軟體或二者的 組合來實現。示意性的示例以功能性的概括方式被描述如上。不脫離本發明的範圍即可實 現更多或更少的組件或步驟。本領域的技術人員會想到實現所述功能的多種方式,但這種 實現不應被解釋為脫離了本發明的範圍。雖然上面的詳細說明已經示出、描述並指出了應用到各個方面的新穎特徵,但可 以理解的是,本領域的技術人員在不脫離本發明範圍的情況下,可以對所示系統、設備或方 法在形式和細節上進行各種省略、替換及修改。如所想到那樣,內容及其變體可以以並不 提供此處闡明的所有特徵及益處的方式實現,因為一些特徵可以與其他特徵分開使用或實 現。本發明的範圍由所附權利要求、前面的說明書或以上二者來限定。
權利要求
一種在遊戲動畫系統上執行遊戲的方法,包括識別源動畫曲線數據,所述源動畫曲線數據描述控制元素的狀態隨時間的變化;識別第一依賴圖的描述,所述依賴圖定義所述源動畫曲線數據的變換;及當執行所述遊戲時,以交互式速率來評估所述第一依賴圖。
2.如權利要求1的方法,進一步包括基於所述控制元素的狀態來顯示對象,所述對象 由所述第一依賴圖的所述描述中的多個節點來描述。
3.如權利要求2的方法,其中顯示對象包括通過由所述多個節點描述的多個元素來 為網格或蒙皮製作動畫。
4.如權利要求2的方法,進一步包括更新所述多個節點的至少一個節點中的計數器。
5.如權利要求2的方法,進一步包括確定所述多個節點中一個節點的計數器不等於 所述多個節點中所述節點的父節點的計數器,以及請求更新所述多個節點中的所述節點。
6.如權利要求1的方法,其中評估所述第一依賴圖包括將所述源動畫曲線數據變換 為可由以下至少一個系統使用的數據繪製系統、遊戲保存系統、物理系統和特效系統。
7.如權利要求1的方法,進一步包括提供表示預定義的點沿著先前定義的路徑移動 的數據。
8.如權利要求1的方法,進一步包括生成表示與一個或多個其他元素關聯的第一元 素的方向的數據,所述第一元素和所述一個或多個其他元素定義了對象的至少一部分的結 構以供顯示。
9.如權利要求1的方法,進一步包括存儲至少包含所述第一依賴圖的第一節點的第一數據結構,所述第一節點表示多個相 關元素中的一個元素的第一空間或時間值;以及存儲至少包含所述第一依賴圖的第二節點的第二數據結構,所述第二節點表示所述第 一時間或空間值與所述多個相關元素中的一個元素的第二時間或空間值之間的關係,其中所述第二數據結構與所述第一數據結構不同。
10.如權利要求1的方法,進一步包括重新配置所述第一依賴圖的描述,使得重新配 置的第一依賴圖能夠用於至少部分地基於在所述遊戲執行期間接收的過程化輸入,來決定 用於顯示的至少一個元素的位置。
11.如權利要求1的方法,進一步包括至少部分從基於來自評估所述第一依賴圖的描述獲取的數據,為第一對象的至少一部 分製作動畫;在評估所述第一依賴圖之後識別切換事件;以及至少部分基於從評估第二依賴圖的描述獲取的數據,為所述第一對象的至少一部分制 作動畫,對所述第二依賴圖的描述的評估在識別切換事件之後。
12.如權利要求1的方法,進一步包括組合兩條源動畫曲線,其中對所述第一依賴圖 的評估基於組合的源動畫曲線。
13.如權利要求1的方法,進一步包括識別所述第一依賴圖和在執行遊戲時評估的第 二依賴圖之間的關係。
14.如權利要求1的方法,進一步包括相對於源計算設備上使用所述源動畫曲線數據 而製作動畫的對象的運動,以運動無損的方式為對象製作動畫。
15.一種用於在遊戲動畫系統上執行遊戲的設備,包括用於識別源動畫曲線數據的裝置,所述源動畫曲線數據描述控制元素的狀態隨時間的 變化;用於識別第一依賴圖的描述的裝置,所述依賴圖定義所述源動畫曲線數據的變換;以及用於當執行所述遊戲時以交互式速率來評估所述第一依賴圖的裝置。
16.如權利要求15的設備,進一步包括用於基於所述控制元素的狀態來顯示對象的 裝置,所述對象由所述第一依賴圖的描述中的多個節點來描述。
17.如權利要求15的設備,其中用於評估所述第一依賴圖的裝置包括,用於將所述源 動畫曲線數據變換為在以下至少一個系統中可使用的數據的裝置繪製系統、遊戲保存系 統、物理系統和特效系統。
18.如權利要求15的設備,進一步包括提供表示預定義的點沿著先前定義的路徑移 動的數據的裝置。
19.如權利要求15的設備,進一步包括用於生成表示與一個或多個其他元素相關聯 的第一元素的方向的數據的裝置,所述第一元素和所述一個或多個其他元素定義了對象的 至少一部分的結構以供顯示。
20.如權利要求15的設備,進一步包括用於存儲至少包含所述第一依賴圖的第一節點的第一數據結構的裝置,所述第一節點 表示多個相關元素中的一個元素的第一空間或時間值;以及用於存儲至少包含所述第一依賴圖的第二節點的第二數據結構的裝置,所述第二節點 表示所述第一時間或空間值與所述多個相關元素中的一個元素的第二時間或空間值之間 的關係,其中所述第二數據結構與所述第一數據結構不同。
21.如權利要求15的設備,進一步包括用於重新配置所述第一依賴圖的描述、使得重 新配置的第一依賴圖能夠用於至少部分地基於在所述遊戲執行期間接收的過程化輸入來 決定用於顯示的至少一個元素的位置的裝置。
22.如權利要求15的設備,進一步包括識別所述第一依賴圖和在執行遊戲時評估的 第二依賴圖之間的關係的裝置。
23.一種由遊戲系統為元素製作動畫的方法,包括提供第一依賴圖的描述,其用於為第一對象的至少一部分製作動畫,所述第一對象至 少部分地由多個相關的元素定義;識別多個子網絡,每個子網絡包括所述第一依賴圖中的多個節點,其中每個子網絡中 的所述多個節點描述了至少兩個所述相關元素隨時間的運動,並可獨立於所述依賴圖中的 剩餘節點而被評估;為每個子網絡分配所述遊戲系統的多個處理器中的一個處理器,其中至少兩個子網絡 被分配不同的處理器;以及利用分配給所述子網絡的處理器來評估至少一個子網絡中的節點,從而為與所述子網 絡的至少兩個相關元素相關聯的運動製作動畫。
24.如權利要求23的方法,進一步包括3存儲至少包括第一節點的第一數據結構,所述第一節點是多個節點中的一個節點,並 表示多個相關元素中的一個元素的第一空間或時間值;以及存儲至少包括第二節點的第二數據結構,所述第二節點是所述多個節點中的一個節 點,並表示所述第一時間或空間值與所述多個相關元素中的一個元素的第二時間或空間值 之間的關係,其中所述第二數據結構不同於所述第一數據結構。
25.如權利要求23的方法,進一步包括確定第二依賴圖中節點的子網絡與基於所述 第一依賴圖的所述多個子網絡中的一個子網絡之間的關係,所述第二依賴圖具有用於為第 二對象的至少一部分製作動畫的數據。
26.如權利要求25的方法,進一步包括使用多個處理器中的一個來評估已定義的關 系,所述評估獨立於對所述第一依賴圖和所述第二依賴圖的其餘部分的評估。
全文摘要
提供了以遊戲系統評估源依賴圖和動畫曲線的系統、設備及方法。依賴圖可以在遊戲執行期間以交互式速率受到評估。動畫曲線可以描述控制元素的狀態隨時間的變化。可以使用多個處理器識別和評估依賴圖的子網絡。
文檔編號G06F19/00GK101916324SQ200910258479
公開日2010年12月15日 申請日期2009年11月17日 優先權日2008年11月17日
發明者A·K·瓊斯, A·T·克萊頓, B·A·愛德華茲, B·E·科拉德, F·H·格拉哈姆, T·J·科爾伯特 申請人:迪士尼企業公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀