用於同步動畫系統的通信協議的製作方法
2023-11-03 12:07:57
專利名稱:用於同步動畫系統的通信協議的製作方法
技術領域:
本文中所描述的系統和方法一般涉及動畫系統,更具體地涉及用於維持多個 動畫系統之間的數據和時鐘同步的通信協議。
背景技術:
無論是就視頻遊戲、網絡網站、多媒體演示還是其它而言,近年來用戶對圖 形質量的期望大大地增加了。因而,這一很高程度的期望對視頻/動畫系統和應用 程序開發者提出了不斷增加的挑戰。
交互式動畫應用程式提出了一個特殊的問題,因為兩個動畫系統(例如,存 儲在本地或遠程存儲器中的應用程式以及顯示設備系統)必須相互通信才能提供高 品質的用戶體驗。這裡存在一個問題,因為一個動畫系統(即,存儲在存儲器中的 應用程式)與用戶交互最為相關,而另一個動畫系統(即,顯示設備系統)主要與 諸如刷新速率等呈現方面相關。必須調解這些競爭的利益才能提供期望的用戶體 驗。
發明概述
本文描述了包括兩個不同動畫系統的系統和方法。高級動畫系統(例如,應 用程序)主要與交互及複雜的定時結構相關,因此針對高交互而被優化。低級動畫 系統(例如,顯示設備)主要與呈現刷新速率相關,因此針對高刷新幀速率而被優 化。提供多個不同的動畫系統允許動畫以預定的顯示刷新速率運行而不犧牲交互, 或是反之。
兩個動畫系統異步地運行,從而每個系統可更好地在其自己的定時結構中聚 焦在其主要功能之上。為優化用戶體驗,兩個動畫系統必須被同步。在本文中所描 述的同步過程中,高級動畫系統和低級動畫系統使用專門為此目的設計的通信協議 來交換數據(例如,時鐘數據、動畫功能數據等等)。
本文中所介紹的通信協議可提供一種用於交換所需數據的有效方法。該通信協議不是為每一幀發送大量數據,而是能夠僅發送關於假定動畫在指定的時間段上 將如何改變的少量數據。除了節省系統額外開銷以外,該協議確保低級動畫系統具 有用於處理動畫的若干幀的信息,這導致沒有任何呈現幀將因為缺少刷新數據而被 丟失。
附圖簡述
當通過結合附圖參考以下詳細描述時,可以對本發明的示例性方法和安排有 更加完整的理解,附圖中
圖1是包括動畫子系統的伺服器-客戶機系統的框圖。 圖2是示例性動畫呈現系統體系結構的框圖。
圖3是描繪分解的動畫/呈現系統的基本操作的方法實現的流程圖。
圖4a是從高級定時引擎向低級定時引擎發送、以將高級動畫系統與低級動畫
系統同步的通信協議消息和參數的描繪。
圖4b是從低級定時引擎向高級定時引擎發送、以將高級動畫系統與低級動畫
系統同步的通信協議消息和參數的描繪。
圖4c是從高級動畫對象向低級動畫對象發送、以將高級動畫系統與低級動畫
系統同步的通信協議消息和參數的描繪。
圖5是描繪具有完全連接的高級動畫系統和低級動畫系統的呈現系統中的動 畫過程的示例性方法實現的流程圖。
圖6是描繪具有部分連接的高級動畫系統和低級動畫系統的呈現系統中的動 畫過程的示例性方法實現的流程圖。
圖7是根據本文中所描述的系統和方法的示例性計算環境。
優選實施例的詳細描述
以下討論一般涉及使用管理在生成和呈現中所使用的傳送工具的通信協議來
生成和呈現動畫(即,隨時間推移而修改圖形對象的功能)的計算機系統。圖形對
象可包括窗口、對話框等等。如本文中所使用的,術語"計算機系統"可指單個計
算機或是一起工作的多個計算機。計算機系統包括多個不同的動畫/呈現系統一或 子系統一其中每一個都聚焦在特定的動畫或呈現功能上。
^以下討論中,在兩個動畫系統或子系統的環境中描述通信協議。但是注意, 這些僅僅是示例,並且可與兩個以上不同的動畫系統或子系統一起使用該通信協議。
在本文中所介紹的通信協議的討論中使用術語"呈現"。"呈現"可被視為 動畫過程中為顯示定義動畫和/或顯示動畫的步驟。"呈現系統"可以是包括呈現 功能的系統。可將其嚴格定義為描述僅執行呈現功能的系統,或可將其寬泛地定義 為描述諸如動畫系統等除了一個或多個呈現功能以外還執行其它功能的系統。
類似地,如本文中所使用的術語"動畫系統"是指包括動畫功能的系統。"動 畫系統"可以是僅執行動畫功能的系統,或者可以是執行諸如呈現功能等一個或多 個動畫功能以及其它功能的系統。
使用"呈現系統"或"動畫系統"這兩個特定術語中的任何一個並不意味著 限制與其相關聯的體系結構和/或功能的範圍。所使用的術語的正確範圍可從使用 該術語的上下文中推導。
全特徵的動畫系統包括複雜的定時結構,其中每個動畫可由單獨的時鐘驅動, 而這些時鐘由應用程式開發者所指定的任意一組規則聯繫。例如,可指定一個動畫
(A)恰好在一個不同的動畫(B)結束的同時開始,或可指定一組動畫以其正常速度的 半速運行。在更加一般的意義上,這一系統還可通過將一時鐘與每一件線性媒體相 關聯,來處理動畫與諸如音頻和視頻等其它類型的線性媒體的同步。
此外,時鐘是交互式的,因為它們可在任何時候被啟動、暫停或停止,並且 那些交互可能會引起如同步規則所指示地貫穿整個定時分層結構傳播的改變。接前 例,如果動畫(B)被暫停,並在五秒鐘後重新開始,則動畫(A)將比原始計劃晚五秒 鍾開始。這進而可能引起其它時鐘中的定時改變,從而可能貫穿整個定時結構傳播。
計算對定時結構的改變是成本高昂的無界操作,因此這一操作不適用於具有 達到可預測的幀速率的目標的實時呈現系統。這兩個目標(提供全特徵的動畫系統 和維持可預測的幀速率)是矛盾的。 一個解決方案是將系統分成兩個部分 一個知
道諸時鐘之間的同步規則,而另一個將每個時鐘視為完全獨立的實體。
本文中要求保護的通信協議將兩個不同的動畫系統維持在同步,以使動畫可
用高顯示刷新速率運行而不會犧牲交互性,反之亦然。
本文中所描述的動畫系統至少包括兩個組件,即主要與交互和複雜的定時結
構相關的高級動畫子系統、以及主要與以高且恆定的顯示刷新速率在顯示器上呈現
一個或多個動畫相關的低級動畫子系統。術語"高級"是指此動畫系統更靠近用戶
這一事實,而"低級"動畫系統更靠近裸機(或是機器)。
高級動畫子系統的一個示例是根據從應用程式本身或從用戶所接收的數據來控制動畫的應用程式。低級動畫子系統的示例是控制動畫數據到物理顯示的動畫的 顯示設備系統。顯示設備系統包括硬體組件、以及可被包括在顯卡硬體(未明確示 出)或被包括在不是物理地駐留在顯卡上的組件中的軟體組件。
在本討論中,將把顯示設備作為是顯示系統或者動畫系統或子系統來參考。 但是注意,顯示系統的所有組件和處理並非都必須物理地駐留在該顯示設備上。如 本文中所使用的術語"顯示設備"還包括控制顯示器和任何種類的顯示存儲器的處 理器操作。
通常認為動畫過程在包括高級動畫子系統和低級動畫子系統兩者的單個機器 上的進程中運行(使用單個動畫系統)。但是,本文中針對兩個不同的動畫系統所 描述的通信協議預期高級和低級動畫子系統(l)作為單個進程中的兩個線程運行, (2)作為單個機器上的兩個不同進程運行;或者(3)在被網絡分開的兩個不同機器上 運行,諸如在客戶機-伺服器體系結構中。
示例性伺服器-客戶機系統
圖1是根據本文中所描述的系統和方法的示例性伺服器-客戶機系統100的框 圖。伺服器-客戶機系統100包括通過諸如網際網路等網絡106通信的伺服器102和 客戶機104。
伺服器102包括存儲器108、處理器110、用於控制通過網絡106的通信的網 絡接口卡112、以及伺服器執行標準伺服器功能通常所需要的其它雜項硬體114。 存儲器IIO包括作業系統116和提供伺服器功能的雜項軟體組件118。
應用程式120還被存儲在存儲器108中,並且包括收編了控制一個或多個動 畫功能的計算機代碼的高級動畫子系統122。動畫功能可以是窗口、對話框等等。 高級動畫子系統122主要被聚焦在交互和複雜的定時結構上。如在以下討論中將看 到的,應用程式120可包括用戶編寫的計算機代碼和與用戶代碼隔離的系統計算機 代碼,其中用戶代碼經由一個或多個應用程式編程接口 (API)來訪問系統計算機 代碼。
客戶機104包括存儲器130、處理器132、控制往來於網絡106的通信的網絡 接口卡134、以及顯示器136。客戶機104還包括顯示設備138以及客戶機104正 確運作所需的雜項硬體140。
存儲器130存儲被配置成提供對網絡106的訪問和導航的瀏覽器142、以及控 制客戶機104的基本功能的作業系統144。雜項軟體組件146也被存儲在存儲器130中,並且包括提供必要的客戶機104功能和客戶機服務的軟體。
顯示設備138包括低級動畫子系統148,它可被存儲在顯示設備存儲器(未示 出)、顯示設備硬體組件(未示出)或客戶機104中所包括的存儲器130中。圖1 示出顯示設備138組件中至少有一部分可駐留在客戶機104的主存儲器130中。低 級動畫子系統148主要被聚焦在達到高刷新幀速率(三十(30)幀每秒的最小刷新速 率)的呈現目標上。支持高刷新幀速率提供了極好的結果,並且能取悅觀眾,而這 正是動畫系統的終極目標。
防礙支持動畫的高刷新幀速率的兩個障礙是(l)等待時間、以及(2)帶寬。當通 過網絡發送數據時,可將數據的目標定為世界上的任何地方,這就可能造成很長的 等待時間。等待時間的問題防礙適當的消息和反饋準時到達,並且這可能使刷新速 率受損並降低用戶體驗。這對被配置成單個實體的動畫系統而言是更大的問題,因 為必須有規律地發送大量數據才能控制動畫。
帶寬問題對單實體系統也帶來更大的問題。對於複雜的動畫,為每一幀都必 須跨越特定邊界(線程、進程、網絡)而發送巨大量的數據。即使對本文中所描述 的包括兩個不同動畫子系統的系統而言,使用固有地限制帶寬的數據機或是對 於服務大量客戶機的伺服器,使用帶寬也可能是一個問題。即使伺服器僅需為簡單 的動畫發送相對少量的數據,但如果必須將該數據供應給例如四百個客戶機,則它 就成為帶寬問題。
本文中所描述的系統和方法提供一種在維持高刷新速率的同時將帶寬利用最 小化的有效方法。
示例性動畫呈現系統體系結構
圖2是根據本文中所描述的系統和方法的示例性動畫呈現系統體系結構200 的框圖。圖2所示的元素中一些是圖1中也包括的元素。為參考目的,在圖2中用 圖1中的元素所用的相同參考標號來示出兩個圖中均包括的元素。
示例性體系結構200包括應用程式120和顯示設備138。應用程式120根據以 下將更加詳細討論的通信協議216,經由通信通道204與顯示設備138通信。如前 文所討論的,通信通道204穿越了邊界,該邊界可能是線程、進程或機器之間的邊 界。例如,對於機器之間的邊界,通信通道204可以是如前所示的網絡106。
用戶代碼202經由API邊界206與應用程式120 —起運作,API邊界206是 想要使用具有用戶代碼202的特徵的應用程式128的開發者用來提供對應用程式120的訪問的一組系統API。
如前文所討論的,應用程式120包括高級動畫子系統122。高級動畫子系統 122包括高級圖形組件208、高級動畫對象資料庫210和高級定時引擎212。定時 引擎212創建和控制存儲在高級動畫對象資料庫210中的一個或多個高級時鐘 214。
高級定時引擎212負責建立和同步高級時鐘214。因此,例如,如果假定有十 個(10)高級時鐘214要一起運行,則高級定時引擎212同步十個(10)高級時鐘214 以同步地顯示動畫。
高級圖形組件208存儲動畫中所使用的類型的圖形。高級動畫對象資料庫210 存儲與一個或多個動畫相關聯的動畫值(和/或與一個或多個媒體相關聯的媒體對 象)。動畫值至少包括與動畫相關聯的時間線(即,時鐘)。(注意,如本文中所 使用的術語"時鐘"和"時間線"是可互換的)。動畫值基於高級時鐘214的值來 影響動畫呈現的輸出。每個動畫修改高級圖形組件208的一個或多個方面。
例如,對於創建從點Pl到點P2的線的簡單動畫,動畫對象資料庫210將為 Pl在時間=0處存儲一值,並為P2在時間=1處存儲一值。(Pl和P2之間的所有 點都是內插的)。
示例性動畫呈現系統體系結構200的顯示設備138包括圖1中所示的低級動 畫子系統148。低級動畫子系統148是高級動畫子系統122的等價結構,並且包括 低級圖形組件218、低級動畫對象資料庫220和低級定時引擎222。定時引擎222 創建一個或多個低級時鐘224,它們被存儲在低級動畫對象資料庫中。
低級動畫子系統148的組件(218-224)類似於高級動畫子系統122的組件(208 -214),並且它們的功能和互操作性和前述類似。
如示例性動畫呈現系統體系結構200的體系結構,即把動畫系統分解成兩個 子系統的體系結構有幾個優點。如果應用程式在交互上成本高昂並且花費大量額外 開銷,則動畫可以繼續;它不必在動畫能夠繼續以前等待交互部分完成。在非分解 的系統中,如果應用程式不向顯示器提供有規律的數據更新,則顯示器可能會繪製 靜態圖像而不是運動的動畫。
在系統處理信息的同時所顯示的狀態帶狀指示器表徵了該問題的一個常見示 例。通常,指示器按照例如指示某個處理正在進行的從左到右的方向進展。但是, 有時狀態指示器停止,而用戶不能分辨系統是已經鎖住了還是仍在處理某些事務。 這就是動畫器的交互部分沒有及時向顯示部分提供更新的數據來滿足幀速率刷新的結果。
這一系統對視頻來說尤其糟糕。對於視頻,幀可能被丟失-從而導致假信號 或偽影_這僅僅是因為系統正忙於照管另一個任務(可能和移動滑鼠光標一樣的 不重要)。
在分解的動畫系統中,低級動畫子系統148與高級動畫子系統122異步地運
行,因此即使當高級動畫子系統122被使其不能在幀被刷新以前重新繪製該幀的任
務所束縛時,低級動畫子系統也繼續運行(即,繪製)。因此,分解的動畫系統無 縫地顯示動畫操作,並因而提供優越的用戶體驗。
示例性方法實現基本操作
圖3是描繪諸如圖1和圖2中所示的分解的動畫/呈現系統的基本操作的流程 圖。在以下討論中,將連續參考圖1和2中所示的元素和參考標號。
在分解的動畫系統(即,被分解為彼此異步運作的至少兩個不同的動畫子系 統的動畫系統)中,用戶(應用程式)通過系統API告訴高級系統假定圖形應如 何在顯示器上顯現。高級系統使用專門的通信協議來指導低級系統創建與在高級系 統中所建立的結構相似的結構。
因為高級系統被配置成在低級系統中創建若干元素,所以必然有以下參考圖4 更加詳細討論的通信協議包括若干"創建"消息或命令。圖3中所示的流程圖覆蓋 了當高級動畫子系統122與低級動畫子系統148通信以在其中建立結構時發生的一 些基本步驟。
在框300,高級動畫子系統122發送消息以在低級動畫子系統148中創建動畫 對象220。然後高級動畫子系統122與低級動畫子系統148通信以創建要與剛才創 建的動畫對象220包括在一起的時鐘224 (即,時間線)(框302)。
注意,動畫對象和時間線之間並非必須要有l:l的比例。換言之, 一條時間線 可控制一個以上的動畫對象。因此,在以上對框302所描述的步驟中,如果已經存 在一條時間線且如果可將新創建的動畫對象與現有的時間線相關聯,則不需創建時 間線。
在這個時間點上,應用程式120可創建另一個動畫對象或修改現有動畫。如 果應用程式120被配置成創建另一個動畫對象("動畫對象"分支,框304),則 高級動畫子系統122在框300向低級動畫子系統138發送通信協議消息以創建另一 個動畫對象220。然後高級動畫子系統122在框302發送消息以將一時間線與新創建的動畫對象220相關聯。該時間線可被創建或可以是現有的時間線。
應用程式120還被配置成支持修改。高級動畫子系統122可發送消息以修改 動畫對象220和/或與其相關聯的時間線("修改"分支,框304)。除了修改動畫
的方面的直接修改以外,"暫停"操作和"停止"操作也可以是修改。"暫停"操 作可根據典型的修改來編碼,例如,"在時間0,時鐘為10;並且在時間10,時
鍾為10。""停止"操作是用"移除動畫"消息來發起的。
如果修改是"移動動畫"消息("是"分支,框306),則在框308停止動畫。 否則("否"分支,框306),高級動畫系統122發送被配置成修改現有動畫的一 個或多個消息(框310)。修改現有動畫還可意味著修改與現有動畫相關聯的時間 線。
如前文所提及的,上述流程圖描繪了通過從高級動畫子系統122發送通信協 議消息來配置低級動畫子系統148的一般方法。以下在討論了通信協議的細節以 後,將更詳細地討論使用該通信協議的至少一個更具體方法實現。
通信協議
圖4a、 4b和4c是概述用於管理高級動畫系統和低級動畫系統之間的的傳送 的通信協議的消息/命令的表。在以下討論中,將連續參考圖1和圖2中所示出並 描述的元素和參考標號。
圖4a描繪了描述從高級定時引擎212向低級定時引擎222發送的消息的表 400。"創建時鐘"消息402使低級定時引擎222為動畫創建時鐘。"創建時鐘" 消息402包括"創建時鐘參數"404,這些參數是初始時鐘屬性。時鐘屬性可包括, 但不限於,持續時間(從開始時間起)、父時鐘(此時鐘中的所有時間與其相關)、 速度(相對於其父時鐘)、加速和減速。加速和減速參數指定"持續時間"中用在 "加速"或"減速"動畫上的百分比。
"更新屬性"消息406提供對現有時鐘的屬性的更新。"更新屬性參數"408 包括目標時鐘(即,具有要被更新的屬性的時鐘)、以及更新後的屬性和值。"添 加間隔"消息410指令低級定時引擎向現有動畫(對象)添加間隔,並且包括"添 加間隔參數"412,它們標識目標時鐘、以及被添加到目標時鐘的間隔的屬性。
該協議包括"重置同步滑動"消息414和相關聯的"重置同步滑動參數"416, 它們被用來維持高級動畫子系統122和低級動畫子系統148之間的同步。如何實現 此部分是關乎特定系統設計的問題。在至少一個實現中,同步過程由以下示例描述。如果低級動畫子系統148正 在控制視頻文件,並且它檢測到視頻落後(由於,例如網絡通信量),則低級動畫
子系統148向高級動畫子系統122發送"與媒體滑動同步"消息和參數(見以下圖 4b),並存儲已發生滑動這一事實以及滑動的大小。
當高級動畫子系統122 (具體而言,高級定時引擎212)結束更新間隔以考慮 滑動時,它發送"重置同步滑動"消息414和相關聯的"重置同步滑動參數"416, 來告訴低級動畫子系統148將滑動偏移量重置為0。
關於這一特定協議消息的其它信息請參見以下圖4b。
可向低級定時引擎222發送"移除所有間隔"消息418來移除與特定時鐘相 關聯的任何現有間隔。目標時鐘在"移除所有間隔參數"420中被標識。該通信協 議中還包括"刪除時鐘"消息422,它被發送給低級定時引擎222以移除"刪除時 鍾參數"424中所標識的目標時鐘。
圖4b描繪了描述該通信協議中從低級定時引擎222發送到高級定時引擎212 的消息的表430。"與媒體滑動同步"消息432為高級定時引擎212提供高級定時 引擎212與媒體組件同步而應滑動特定時鐘的量。***注意,這更接近正確嗎?*** "與媒體滑動參數同步"消息434包括目標時鐘,即要滑動的時鐘、以及標識滑動 的大小的滑動量。
該消息將數據從低級動畫子系統發回高級動畫子系統122。這是必要的,因為 通信通道204中存在等待時間。此情形可能發生的一種情況是在用戶激活"暫停" 命令的時候。因為系統彼此異步地通信,所以在高級動畫子系統能趕上低級動畫子 系統以前,低級動畫子系統可處理若干個幀。結果是,低級系統始終運行。
但這是用"與媒體滑動同步"消息432來處理的,它把與動畫相關聯的時鐘 需要"滑動"或與低級時鐘224 "同步"來把子系統恢復到同步的消息帶給高級動 畫子系統122。
圖4c描繪了從高級動畫對象210發送到低級動畫對象220的消息的表440。 表440包括"創建動畫"消息442,它命令低級動畫子系統148創建新的動畫對象。 "創建動畫參數"444包括標識正被動畫表現的屬性的類型的輸出值類型、動畫函 數、動畫函數以及控制時鐘。
例如,如果旋轉變換的角度被動畫表現,則輸出類型是"雙精度浮點數"。 如果線的一個端點被動畫表現,則輸出類型是"點"。如果矩形的顏色被動畫表現, 則輸出類型是"顏色"。動畫函數在本領域中是公知的,並且此處可指定任何此類動畫函數。簡單的 動畫函數的示例是"從5到10"。這意味著在間隔的開始,動畫函數輸出值5,在
結束它輸出10,並且在中途動畫函數輸出值7.5等等。更加複雜的動畫函數是"從 5到6到10"。在此,動畫中途的輸出值是6。可通過不僅指定值列表,還指定函 數應輸出那些值的時間列表(之間的所有值是內插的)來使函數更加複雜。
注意,上述動畫函數僅僅是示例性的,並且它們並不試圖將所附權利要求書 的範圍限於這些動畫函數。在此上下文中可使用能被視為"動畫函數"的任何計算 機操作。
最後,如前文所討論的,新的動畫對象的控制時鐘可以是新的時鐘,或者可 以是可以控制或不可以控制一個或多個其它動畫對象的現有時鐘。
表440還包括"更新動畫"消息446,它提供用於更新低級動畫子系統148 中的現有動畫的信息。"更新動畫參數"448包括目標動畫(即,要被更新的動畫)、 以及更新屬性(要被更新的屬性以及屬性的更新值)。
"創建動畫集合"消息450標識低級動畫對象[資料庫]220中要被分組為集合 的多個動畫。"創建動畫集合參數"452標識要被分組為集合的動畫的初始列表。
動畫集合在本領域中也是公知的。動畫集合的存在允許開發者創建不能用單 個線性內插表達的複雜動畫行為。例如, 一個動畫可能將點重複地上下移動,而另 一個動畫可能將點移到右邊。當兩個動畫一起運行時,該點表現為按照波型圖向右。 可以編輯動畫集合,因此協議中存在如下所述的消息。
"將動畫添加到集合中"消息454告訴低級系統把"將動畫添加到集合中參 數456"中所標識的動畫添加到也在"將動畫添加到集合中參數"456中所標識的 動畫集合中。類似地,"將動畫從集合中移除"消息458和標識目標動畫集合與要 從該集合中移除的集合中的動畫的"將動畫從集合中移除參數"460包括在一起。
表440還包括"創建靜態值"消息462。靜態值是在低級動畫子系統148不能 支持由應用程式120所提供的動畫的情形中使用的。以下參考圖6更詳細地描述這 一情況。和"創建靜態值"消息462相關聯的是為所創建的靜態值標識值類型和初 始值的"創建靜態值參數"464。
"更新靜態值"消息466為靜態值提供更新。"更新靜態值參數"468標識目 標靜態值對象、以及對應於所標識的靜態值的新值。
圖4(a-c)中所示的消息和參數提供一種可由高級動畫子系統異步地控制由低 級動畫子系統148呈現的動畫的流線型的、高效的方法。因為無須在每個呈現刷新幀中發送一個或多個消息,所以顯示可以用高的、恆定的速率來呈現幀。與此同時, 高級系統可在有處理時間可用時使用處理時間來向低級系統提供數據,s卩,以較慢 和變動的刷新速率。
示例性方法實現完全連接的系統
圖5是描繪具有完全連接的高級動畫系統和低級動畫系統的呈現系統中的動 畫過程的示例性方法實現的流程圖。
圖5中所描繪的情形是應用程式開發者想要繪製從一固定錨點到另一隨時 間移動的點的動畫表現的直線。開發者需要提供三樣東西(l)呈現操作(例如, 在靜態點A和動畫點B之間繪製一條線);(2)動畫函數(例如,點B從(0,0)走到 (100, 100));以及(3)動畫的定時(例如,在5秒後開始,並運行10秒,然後反向 重複一次)。
圖5示出高級動畫子系統122對包含上述信息的應用程式120的響應。在框 500,高級動畫子系統122從應用程式接收這些信息。在框502,高級動畫子系統 122創建呈現對象,該呈現對象表示一條線。在框504,高級動畫子系統122創建 輸出從(O, O)到(IOO, IOO)的值的動畫函數。在框506,高級動畫子系統122創建在5 秒後開始,運行10秒然後反向運行的時鐘。
低級動畫子系統148可支持這些對象,因此高級動畫子系統120向低級動畫 子系統148發送在通信通道204上生成在框510-518中所描繪的通信的消息(框 508)。
框510:創建時鐘l;為時鐘l設置參數,持續時間=10。 框512:為時鐘l添加間隔;從"現在+5"到"現在+ 15",從1 = 0走到 t= 10。
框514:為時鐘l添加間隔從"現在+15"到"現在+25",從t-10向
下走到t-l。
框516:創建動畫l;為動畫l設置參數,從(O,O)到(IOO, 100),時鐘=時鐘1。
框518:創建引用動畫1的[DrawLine](畫線)指令。
在此例中,DrawLine函數表示用於呈現動畫的協議所支持的任何繪製指令。 DrawLine指令只是示例性的。
在這些消息己從高級動畫子系統122發送到低級動畫子系統148時,低級動畫子系統148獨立於高級子系統148運行,並以可能達到的最高的幀速率更新該線 的位置。兩個子系統122、 148之間無需再發送任何其它消息。
如所示出的,本文中所介紹的通信協議通過簡化被放進通信通道204中的數 據量來優化通信通道204。如果不使用上述短消息和參數,則將必須通過管道發送 大量操作來同步系統。
但是,本質上,被放進通信通道204中的是若干時鐘的間隔的列表。對於時 鍾而言,間隔是定義好的,例如,如'在時間O和時間IO之間,該時鐘從O走到 10'(這定義了真實世界的時鐘)。或者,可能需要時鐘慢一倍。在此情形中,則 '在時間O和時間IO之間,時鐘從0走到5'。
通過定義定時間隔的列表,就可定義時鐘上的每一個操作。例如,可用時鐘 間隔來定義暫停操作'在時間0,時鐘是10,且在時間10,時鐘是10,。因此, 每個操作都可被表達為一個線性間隔。
示例性方法實現部分連接的系統
圖6是描繪具有部分連接的高級動畫系統和低級動畫系統的呈現系統中的動 畫過程的示例性方法實現的流程圖。
這一示例的情形是應用程式開發者想要繪製從固定錨點走到在自定義路徑 上隨時間移動的另一個點的動畫表現的直線。開發者需要提供以下(l)呈現操作
(例如,在靜態點A和動畫點B之間繪製一條線);(2)自定義動畫函數(例如, 調用自定義動畫1來計算點B的位置);以及(3)動畫的定時(例如,在5秒後開 始,並運行10秒,然後反方向重複一次)。
在框600,高級動畫子系統122接收應用程式信息。響應於應用程式的請求, 高級動畫子系統122創建表示該線的呈現對象(框602),被配置成調回用戶代碼 202的動畫函數(框604),以及在5秒後開始、運行10秒然後反方向運行的時鐘 (框606)。在框608,適當的消息被發送到低級動畫子系統148。
因為自定義動畫需要用戶代碼,所以它不能由低級子系統處理,因此這就在 通信通道上生成了以下初始通信
框610:創建靜態點值l。
框612:創建引用點值1的[DrawLine](畫線)指令。(DrawLine指令僅僅是 示例性的;見上)。
在框614,低級動畫子系統148接收從高級動畫子系統122發送的數據。低級動畫子系統148將動畫視為靜態線。
在數據的初始發送後的每一幀上,高級動畫子系統122調用用戶代碼202來 計算點B的位置(框620)並在框622接收新的位置值。然後高級動畫子系統122 通過通信通道204將以下消息發送到低級動畫子系統以更新靜態點值1的值
框626:用點B的新值來更新靜態點值。
示例性計算機環境
本文中所描述的各種組件和功能是用計算系統來實現的。圖7示出由標號700 所指的此類計算系統,即計算機的典型示例的組件。圖7中所示的組件僅僅是示例, 而並不試圖對本發明的功能範圍提出任何限制;本發明無須依賴於圖7中所示的特 徵。
一般而言,可使用各種不同的通用或專用計算系統配置。可能適用於本發明 的公知的計算系統、環境、和/或配置的示例包括,但不限於,個人計算機、服務 器計算機、手持式或膝上設備、多處理器系統、基於微處理器的系統、機頂盒、可 編程消費者電子設備、網絡PC、小型機、大型機、包括以上任何系統或設備的分 布式計算環境、等等。
在許多情形中,計算機的功能由諸如程序模塊等計算機所執行的計算機可執 行指令來具體化。 一般而言,程序模塊包括執行特定任務或實現特定抽象數據類型 的例程、程序、對象、組件、數據結構等等。任務還可由通過通信網絡連結的遠程 處理設備執行。在分布式計算環境中,程序模塊可位於本地和遠程計算機存儲介質 中。
指令和/或程序模塊在不同的時間存儲在或是作為計算機的部件、或可由計算 機讀出的各種計算機可讀介質中。程序通常被分布在例如軟盤、CD-ROM、 DVD 或諸如己調製信號等某種形式的通信介質上。它們從那裡被安裝或加載到計算機的 次級存儲器中。在執行時,它們至少被部分地加載到計算機的主電子存儲器中。當 這些及其它各種類型的計算機可讀存儲介質包含用於實現以下聯合微處理器或其 它數據處理器描述的步驟的指令程序和/或模塊時,本文中所描述的發明包括此類 介質。當根據以下所描述的方法和技術來對計算機編程時,本發明還包括該計算機 本身。
為說明起見,本文中將諸如作業系統等程序及其它可執行程序組件示為離散 的框,儘管可認識到,此類程序和組件在各個時候駐留在計算機的不同存儲組件中,並且由計算機的(一個或多個)數據處理器執行。
參考圖7,計算機700的組件可包括,但不限於,處理單元702、系統存儲器 704、以及將包括系統存儲器在內的各種系統組件耦合到處理單元702的系統總線 706。系統總線706可以是數種類型的總線結構中的任何類型,包括存儲器總線或 存儲器控制器、外圍總線、以及使用各種總線體系結構中的任何體系結構的局部總 線。作為示例,而非限制,此類體系結構包括工業標準體系結構(ISA)總線、微 通道體系結構(MCA)總線、增強型ISA(EISAA)總線、視頻電子標準協會(VESA) 局部總線、以及也稱為Mezzanine總線的外圍部件互連(PCI)總線。
計算機700通常包括各種計算機可讀介質。計算機可讀介質可以是可由計算 機700訪問的任何可用介質,並包括易失性和非易失性、可移動和不可移動介質。 作為示例,而非限制,計算機可讀介質可包括計算機存儲介質和通信介質。"計算 機存儲介質"包括以用於存儲諸如計算機可讀指令、數據結構、程序模塊或其它數 據等信息的任何方法或技術實現的易失性和非易失性、可移動和不可移動介質。計 算機存儲介質包括,但不限於,RAM、 ROM、 EEPROM、快閃記憶體或其它存儲器技術, CD-ROM、數字多功能盤(DVD)或其它光碟存儲,磁帶盒、磁帶、磁碟存儲或 其它磁存儲設備,或任何其它可被用來存儲所需信息並可由計算機700訪問的介 質。通信介質通常具體化為諸如載波或其它傳輸機制等已調製數據信號中的計算機 可讀指令、數據結構、程序模塊或其它數據,並包括任何信息傳遞介質。術語"已 調製數據信號"是指以在信號中將信息編碼的方式設置或改變其一個或多個特徵的 信號。作為示例,而非限制,通信介質包括諸如有線網絡或直接連線連接等有線介 質,以及諸如聲學、RF、紅外及其它無線介質等無線介質。以上任何組合也應被 包括在計算機可讀介質的範疇之內。
系統存儲器704包括諸如只讀存儲器(ROM) 708和隨機存取存儲器(RAM) 710等易失性和/或非易失性存儲器形式的計算機存儲介質。包含諸如在啟動期間幫 助在計算機700內諸元件之間傳遞信息的基本例程的基本輸入/輸出系統712 (BIOS)通常存儲在ROM 708中。RAM 710通常包含可由處理單元702立即訪 問和/或現在正由其操作的數據和/或程序模塊。作為示例,而非限制,圖7示出操 作系統714、應用程式716、其它程序模塊718和程序數據720。
計算機700還可包括其它可移動/不可移動、易失性/非易失性計算機存儲介質。 僅作為示例,圖7示出讀或寫不可移動、非易失性磁介質的硬碟驅動器722,讀或 寫可移動、非易失性磁碟726的磁碟驅動器724,以及讀或寫諸如CD ROM或其它光介質等可移動、非易失性光碟730的光碟驅動器728。可在示例性操作環境中 使用的其它可移動/不可移動、易失性/非易失性計算機存儲介質包括,但不限於, 磁帶盒、快閃記憶體卡、數字多功能盤、數碼錄像帶、固態RAM、固態ROM、等等。 硬碟驅動器722通常通過諸如接口 732等不可移動存儲器接口連接到系統總線 706,而磁碟驅動器724和光碟驅動器728通常由諸如接口 734等可移動存儲器接 口連接到系統總線706。
以上所討論並在圖7中示出的各驅動器及其相關聯的計算機存儲介質為計算 機700提供計算機可讀指令、數據結構、程序模塊和其它數據的存儲。在圖7中, 例如,硬碟驅動器722被示為存儲了作業系統715、應用程式717、其它程序模塊 719和程序數據721。注意,這些組件可與作業系統714、應用程式716、其它程序 718和程序數據720相同或不同。此處作業系統715、應用程式717、其它程序模 塊719和程序數據721被賦予不同的標號以說明至少它們是不同的副本。用戶可通 過諸如鍵盤736和定位設備738 (通常指滑鼠、軌跡球或觸摸墊)等輸入設備將命 令和信息輸入到計算機700中。其它輸入設備(未示出)可包括話筒、操縱杆、遊 戲墊、圓盤式衛星天線、掃描儀等。這些及其它輸入設備通常通過被耦合到系統總 線的輸入/輸出(I/O)接口 740連接到處理單元702,但也可由諸如並行埠、遊 戲埠或通用串行總線(USB)等其它接口和總線結構連接。監視器742或其它類 型的顯示設備也經由諸如視頻適配器744等接口連接到系統總線706。除了監視器 742以外,計算機還可包括其它外圍輸出設備(例如揚聲器)以及一個或多個列印 機748等,它們可通過I/O接口 740連接。
計算機使用到諸如遠程計算設備750等一個或多個遠程計算機的邏輯連接在 聯網環境中操作。遠程計算設備750可以是個人計算機、伺服器、路由器、網絡 PC、對等設備或其它普通網絡節點,並通常包括以上相對於計算機700所描述的 許多或全部元件。圖7中所示的邏輯連接包括區域網(LAN) 752和廣域網(WAN) 754。儘管圖7中所示的WAN 754是網際網路,但是WAN 754還可以包括其它網絡。 此類網絡環境常見於辦公室、企業範圍的計算機網絡、內聯網等。
當在LAN網絡環境中使用時,計算機700通過網絡接口或適配器756連接到 LAN 752。當在WAN網絡環境中使用時,計算機700通常包括數據機758或 其它用於通過網際網路754建立通信的裝置。可內置或外置的數據機758可經由 1/O接口 740或其它適當機制連接到系統總線706。在聯網環境中,相對於計算機 700所描述的程序模塊或其部分可被存儲在遠程計算設備750中。作為示例,而非限制,圖7示出遠程應用程式760駐留在遠程計算設備750上。可以認識到,所示 的網絡連接是示例性的,並且可以使用在計算機之間建立通信鏈路的其它裝置。
結論
如所描述的系統和方法所使用的通信協議由此提供一種將高級動畫系統與低 級動畫系統同步的方法,從而低級系統可以用快的、恆定的幀刷新速率運行,而與 此同時高級系統可以用為交互優化的可變幀速率運行。無需犧牲任何交互能力就可 實現優越的圖形。該協議還將在兩個動畫系統之間發送的數據量最小化,由此節省 了額外開銷,並優化了性能。
儘管以上描述了特定實現和實施例的細節,但是這些細節旨在滿足法定的公 開義務,而不是要限制所附權利要求書的範圍。因此,如所附權利要求書所定義的 本發明並不局限於以上所描述的特定特徵。相反,按照落入根據等效教義適當解釋 的所附權利要求書的適當範圍的任何形式或修改來要求保護本發明。
權利要求
1. 一種動畫呈現系統,包括高級動畫子系統,它處理所述系統的交互功能;低級動畫子系統,它處理所述系統的顯示功能;至少一個高級時鐘,它由高級動畫操作引用;至少一個低級時鐘,它由低級動畫操作引用;通信通道,用於根據通信協議在所述高級動畫子系統和所述低級動畫子系統之間發送消息;以及其中,所述通信協議包括由所述高級動畫子系統提供給所述低級動畫子系統的信息,所述信息指明動畫並指定所述動畫在指定時間段上要如何改變,由此確保所述低級動畫系統具有用於處理所述動畫的若干幀的信息。
2. 如權利要求1所述的動畫呈現系統,其特徵在於,在所述高級動畫子系統 和所述低級動畫子系統之間的通信是異步的。
3. 如權利要求1所述的動畫呈現系統,其特徵在於-所述低級動畫子系統以恆定的顯示幀刷新速率呈現動畫;以及 所述高級動畫子系統以慢於所述恆定顯示幀刷新速率的可變速率處理交互。
4. 如權利要求1所述的動畫呈現系統,其特徵在於,所述通信協議還包括從 所述低級動畫子系統向所述高級動畫子系統發送的至少一個消息,所述消息用於處 理所述高級動畫子系統和所述低級動畫子系統之間的同步。
5. 如權利要求4所述的動畫呈現系統,其特徵在於,從所述低級動畫子系統 向所述高級動畫子系統發送的一個消息還包括"與媒體滑動同步"消息,所述"與 媒體滑動同步"消息標識與動畫相關聯的目標時鐘、以及所述目標時鐘為將所述高 級動畫子系統與所述低級動畫子系統正在運行的動畫同步而必須滑動的量。
6. 如權利要求1所述的動畫呈現系統,其特徵在於 所述高級動畫子系統還包括高級定時引擎; 所述低級動畫子系統還包括低級定時引擎;以及所述通信協議還包括從所述高級定時引擎向所述低級定時引擎發送的以下參 數化的消息帶有初始時鐘屬性參數的創建時鐘消息;帶有目標時鐘參數和更新屬性參數的更新屬性消息;帶有目標時鐘參數和間隔屬性參數的添加間隔消息; 帶有目標時鐘參數的重置同步滑動消息; 帶有目標時鐘參數的移除所有間隔消息;以及 帶有要刪除的目標時鐘參數的刪除時鐘消息。
7. 如權利要求1所述的動畫呈現系統,其特徵在於.-所述高級動畫子系統還包括高級動畫對象資料庫; 所述低級動畫子系統還包括低級動畫對象資料庫;所述通信協議還包括從所述高級動畫對象資料庫向所述低級動畫對象資料庫 發送的以下參數化的消息帶有輸出值類型參數、動畫函數參數和控制時鐘參數的創建動畫消息; 帶有目標動畫參數和更新屬性參數的更新動畫消息;帶有輸出值類型參數、動畫函數參數和控制時鐘參數的創建動畫消息;帶有目標動畫參數和更新屬性參數的更新動畫消息;帶有動畫參數列表的創建動畫集合消息;帶有目標動畫集合參數和要添加的動畫參數的將動畫添加到集合消息; 帶有目標動畫集合參數和要移除的動畫參數的將動畫從集合中移除消息;帶有值類型參數和初始值參數的創建靜態值消息;以及 帶有目標靜態值對象參數和新值參數的更新靜態值參數。
8. —種用於處理動畫應用程式的方法,包括將來自所述動畫應用程式的動畫數據接收到高級動畫子系統中; 根據通信協議通過通信通道將動畫信息從所述高級動畫子系統發送到低級動 畫子系統,以使所述低級動畫子系統能夠顯示與所述動畫數據相關聯的動畫;其中,所述通信協議能夠指明動畫,並提供關於所述動畫在特定時間段上應 如何改變的指令,從而所述低級動畫子系統可以用恆定的顯示幀刷新速率處理所述 動畫的若干幀,而與此同時所述高級動畫子系統以可變的刷新速率執行。
9. 如權利要求8所述的方法,其特徵在於,還包括所述高級動畫子系統接收 來自所述低級動畫子系統的至少一個協議消息,以協助所述高級動畫子系統中的定 時元素至少與所述低級動畫子系統中的定時元素保持同步。
10. 如權利要求8所述的方法,其特徵在於,所述通信協議包括從高級動畫子系統定時元素向低級動畫子系統定時元素髮送的以下消息-用於創建時鐘的消息; 用於更新時鐘屬性的消息; 用於將間隔添加到時鐘的消息; 用於移除時鐘的所有間隔的消息;以及 用於刪除時鐘的消息。
11. 如權利要求10所述的方法,其特徵在於,所述通信協議還包括從高級動 畫子系統定時元素向低級動畫子系統定時元素髮送的以下消息用於重置所述低級動畫子系統中的同步滑動值的消息。
12. 如權利要求8所述的方法,其特徵在於,所述通信協議包括從高級動畫 子系統動畫對象元素向低級動畫子系統動畫對象元素髮送的以下消息用於創建動畫的消息; 用於更新動畫的消息; 用於創建動畫集合的消息; 用於將動畫添加到動畫集合中的消息;以及 用於將動畫從動畫集合中移除的消息。
13. 如權利要求8所述的方法,其特徵在於,所述通信協議包括從高級動畫 子系統動畫對象元素向低級動畫子系統動畫對象元素髮送的以下消息用於創建靜態顯示值的消息;以及 用於更新靜態顯示值的消息。
14. 一種系統,包括高級動畫子系統,它被配置成接收來自應用程式的動畫信息; 低級動畫子系統,它被配置成根據所述動畫信息來呈現一個或多個動畫; 低級定時引擎,它被配置成監視所述低級動畫子系統中的一個或多個低級時鐘,並將所述低級時鐘與一個或多個高級時鐘同步;高級定時引擎,它被配置成根據一個或多個高級動畫對象來監視所述高級動畫子系統中的一個或多個高級時鐘,並將動畫消息發送到所述低級定時引擎,所述動畫消息符合通信協議;以及其中,從所述高級定時引擎發送到所述低級定時引擎的動畫消息指明一個或多個動畫對象、以及所述動畫對象在特定時間段上要如何改變。
15. 如權利要求14所述的系統,其特徵在於,所述低級定時引擎通過發送標識高級時鐘和所述高級時鐘為維持與對應於所述高級時鐘的低級時鐘的同步而必 須滑動的量的"與媒體滑動同步"消息,來將所述低級時鐘與所述高級時鐘同步。
16. 如權利要求14所述的系統,其特徵在於,所述通信協議還包括以下消息 用於標識時鐘屬性的創建時鐘消息; 用於標識更新時鐘屬性的更新屬性消息; 用於將定時間隔添加到時鐘屬性的添加間隔消息; 用於將定時間隔從時鐘屬性中移除的移除間隔消息;以及用於刪除時鐘的刪除時鐘消息。
17. 如權利要求14所述的系統,其特徵在於,所述通信協議還包括以下消息 用於創建動畫的創建動畫消息;用於更新現有動畫的更新動畫消息; 用於標識要被分組的多個動畫的創建動畫集合消息;用於標識要向所標識的動畫集合添加的動畫的將動畫添加到集合中消息;以及用於標識要從所標識的動畫集合中移除的動畫的將動畫從集合中移除消息。
18. 如權利要求14所述的系統,其特徵在於,所述通信協議還包括以下消息 用於標識要顯示的值類型和初始值的創建靜態值消息;以及 用於標識要更新的靜態值和所述靜態值的新值的更新靜態值消息。
19. 如權利要求14所述的系統,其特徵在於,所述低級定時引擎被配置成根 據所述通信協議向所述高級定時引擎發送標識高級時鐘以及為將所述高級時鐘與 低級時鐘同步而應將所述高級時鐘改變多少的度量的同步消息。
20. 如權利要求14所述的系統,其特徵在於,還包括 至少一個低級動畫對象;至少一個高級動畫對象,它被配置成通過通信協議消息與所述低級動畫對象 通信以創建和更新所述低級動畫對象來反映所述高級動畫對象。
21. —種動畫呈現系統中的高級動畫子系統,包括 —個或多個高級時鐘;被配置成跟蹤所述一個或多個高級時鐘的高級定時引擎; 標識動畫的至少一部分的一個或多個動畫對象;用於根據通信協議中所包括的消息而將動畫數據發送到低級動畫子系統的裝 置;以及其中,被發送到所述低級動畫子系統的通信協議消息標識所述低級動畫子系 統中的至少一個動畫對象,並提供關於所標識的動畫對象在指定的時間段上要如何 改變的數據。
22. 如權利要求21所述的高級動畫子系統,其特徵在於,所述通信協議還包括以下消息用於標識初始時鐘屬性的創建時鐘消息;用於標識更新的時鐘屬性的更新屬性消息; 用於標識要向時鐘添加的間隔的添加間隔消息; 用於標識要從其移除所有間隔的時鐘的移除所有間隔消息;以及 用於標識要被刪除的時鐘的刪除時鐘消息。
23. 如權利要求21所述的高級動畫子系統,其特徵在於,所述通信協議還包 括以下消息用於描述要創建的動畫的創建動畫消息;以及 用於標識要更新的動畫以及更新屬性的更新動畫消息。
24. 如權利要求21所述的高級動畫子系統,其特徵在於,所述通信協議還包 括以下消息-用於標識要被分組為一個動畫集合的多個動畫的創建動畫集合消息; 用於標識要被添加到所標識的動畫集合中的動畫的將動畫添加到集合中消 息;以及用於標識要從所標識的動畫集合中移除的動畫的將動畫從集合中移除消息。
25. 如權利要求21所述的高級動畫子系統,其特徵在於,所述通信協議還包括以下消息用於標識要呈現的值類型和初始值的創建靜態值消息;以及 用於標識要更新的靜態值和所述靜態值的新值的更新靜態值消息。
26. —種動畫呈現系統中的低級動畫子系統,包括 一個或多個低級時鐘;標識動畫的至少一部分的一個或多個低級動畫對象;被配置成跟蹤關於所述一個或多個低級動畫對象的所述一個或多個低級時鐘 的低級定時引擎;其中,所述低級時鐘和所述低級動畫對象是以向所述低級動畫子系統提供能 以高的、恆定的顯示幀刷新速率顯示的動畫數據的若干幀的方式、通過以可變的速率從高級動畫子系統接收的通信協議消息來創建和更新。
全文摘要
本文描述了管理高級動畫系統和低級動畫系統之間的異步數據交換的一種通信協議。高級動畫系統具有可變的、中等頻率的幀速率,並且針對交互而被優化。低級動畫系統具有恆定的、高頻率的幀速率,並且針對高刷新幀速率而被優化。該通信協議包括可由高級動畫系統向低級動畫系統發送、以指明動畫以及該動畫在指定時間段上將如何改變的消息。結果是,即使沒有從高級系統接收到每一幀的動畫數據,低級系統也可以用高刷新速率來顯示動畫。
文檔編號G06T15/70GK101416221SQ200480027930
公開日2009年4月22日 申請日期2004年7月22日 優先權日2003年10月24日
發明者A·拜歐拉, L·布蘭克, M·卡爾金斯, P·戴維 申請人:微軟公司