説明

複数のアニメーションシステムを同期させる通信プロトコル

上位アニメーションシステムと下位アニメーションシステムの間でのデータの非同期交換を司る通信プロトコルを記載する。上位アニメーションシステムは、可変中波フレームレートを有し、対話性向けに最適化される。下位アニメーションシステムは、一定の高周波フレームレートを有し、高リフレッシュフレームレート向けに最適化される。通信プロトコルは、上位アニメーションシステムによって、下位アニメーションシステムに送ることができる、アニメーションを指定し、アニメーションが、指示された期間に渡ってどのように変化することになるかを指定するためのメッセージを含む。その結果、上位システムからすべてのフレームに対してアニメーションデータが受信されなくても、下位システムは、高リフレッシュレートでアニメーションを表示することができる。

【発明の詳細な説明】
【技術分野】
【0001】
本明細書に記載するシステムおよび方法は概して、アニメーションシステムに関し、より詳細には、多数のアニメーションシステムの間でデータとクロックの同期を維持する通信プロトコルに関する。
【背景技術】
【0002】
ビデオゲーム、ネットワークウェブサイト、マルチメディアプレゼンテーションなどに関連するかどうかに関わらず、グラフィックスの質に関するユーザの期待は近年、大幅に高まっている。したがって、この高度の期待により、ビデオ/アニメーションシステムおよびアプリケーション開発者に対する挑戦課題がますます高まっている。
【発明の開示】
【発明が解決しようとする課題】
【0003】
対話型アニメーションアプリケーションには、特に検討すべきことがある。というのは、2つのアニメーションシステム(たとえば、ローカルまたはリモートメモリに格納されたアプリケーションおよび表示デバイスシステム)が、良質のユーザ経験を提供するように、互いと通信しなければならないからである。この場合、一方のアニメーションシステム(すなわち、メモリに格納されたアプリケーション)は、ほとんどユーザの対話性に携わり、他方のアニメーションシステム(すなわち、表示デバイスシステム)は、主にリフレッシュレートなどのレンダリング側面に携わるので、問題が存在する。こうした対象の競合は、所望のユーザ経験を提供するように調整されなければならない。
【課題を解決するための手段】
【0004】
別個の2つのアニメーションシステムを含むシステムおよび方法を記載する。上位アニメーションシステム(たとえば、アプリケーション)が、主に対話性および複合タイミング構造に携わり、したがって、高い対話性のために最適化される。下位アニメーションシステム(たとえば、表示デバイス)が、主にレンダリングのリフレッシュレートに携わり、したがって、高リフレッシュフレームレートのために最適化される。別個の多数のアニメーションシステムの提供により、アニメーションは、対話性に不利益をもたらすことなく、予め定義された表示リフレッシュレートで実行されることが可能になり、その逆も可能である。
【0005】
2つのアニメーションシステムは、非同期に実行され、そうすることによって、各システムは、それ自体のタイミング構造において、その主たる機能により集中することができる。ユーザ経験を最適化するために、2つのアニメーションシステムが同期されなければならない。本明細書に記載する同期プロセスにおいて、上位アニメーションシステムおよび下位アニメーションシステムは、この目的のために具体的に指定される通信プロトコルを使用してデータ(たとえば、クロックデータ、アニメーション機能データなど)を交換する。
【0006】
本明細書において採用する通信プロトコルは、要求されるデータの効率的な交換方法を提供する。各フレーム用に大量のデータを送るのではなく、本通信プロトコルは、アニメーションが指示された期間に渡ってどのように変化すると仮定されるかについて、わずか少量のデータを送る。システムオーバーヘッドの抑制に加え、プロトコルは、下位アニメーションシステムがアニメーションのいくつかのフレームを確実に処理するための情報を有するようにし、その結果、どのレンダリングフレームも、リフレッシュデータの欠如のせいでドロップされることがなくなる。
【0007】
以下の詳細な説明を、添付の図面と併せ見て参照することによって、本発明の例示的な方法および構成をより完全に理解することができよう。
【発明を実施するための最良の形態】
【0008】
以下の説明では、概して、アニメーションの生成およびレンダリングにおいて使用される伝送を司る通信プロトコルを用いてアニメーションを生成しレンダリングするコンピュータシステム(すなわち、時間の経過に伴ってグラフィカルオブジェクトを修正する機能)を取り上げる。グラフィカルオブジェクトは、ウィンドウ、ダイアログボックスなどを備え得る。本明細書で使用する「コンピュータシステム」という用語は、1台のコンピュータも、連動する多数のコンピュータも意味し得る。コンピュータシステムは、別個の多数のアニメーション/レンダリングシステム、すなわちそれぞれが特定のアニメーションまたはレンダリング機能を担当するサブシステムを含む。
【0009】
以降の説明では、2つのアニメーションシステムまたはサブシステムという状況において、通信プロトコルを記載する。ただし、こうしたシステムは例に過ぎず、通信プロトコルは、2つより多い別個のアニメーションシステムまたはサブシステムでも用いることができることに留意されたい。
【0010】
「レンダリング」という用語は、本明細書において採用する通信プロトコルの説明において使用する。「レンダリング」は、表示用のアニメーションを定義し、かつ/またはアニメーションを表示するアニメーションプロセスにおけるステップと見なすことができる。「レンダリングシステム」は、レンダリング機能を含むシステムでよい。このシステムは、狭義には、レンダリング機能のみを実施するシステムを表すように定義することもでき、広義には、1つまたは複数のレンダリング機能に加えて、アニメーションシステムなど他の機能を実施するシステムを表すように定義することもできる。
【0011】
同様に、本明細書で使用する「アニメーションシステム」という用語は、アニメーション機能を含むシステムを指す。「アニメーションシステム」は、アニメーション機能のみを実施するシステムでも、他の機能に加えて、レンダリング機能など1つまたは複数のアニメーション機能を実施するシステムでもよい。
【0012】
特定の用語、すなわち「レンダリングシステム」または「アニメーションシステム」の使用は、アーキテクチャおよび/またはそれに関連付けられた機能の範囲の限定を意味するわけではない。使用される用語の適正な範囲は、用語が使われる状況から導き出すことができる。
【0013】
フル機能のアニメーションシステムが、複合タイミング構造を含み、この構造において、各アニメーションを、個別のクロックによって駆動することができ、クロックは、アプリケーション開発者によって指定された任意の1組の規則によって関連付けられる。たとえば、あるアニメーション(A)を、異なるアニメーション(B)が終了するのと全く同時に開始するように指定することもでき、アニメーションのグループを、その通常速度の半分で実行されるように指定することもできる。より一般的な意味において、このようなシステムは、クロックを線形メディアの各々と関連付けることによって、オーディオおよびビデオなど、他のタイプの線形メディアとのアニメーションの同期を操作することもできる。
【0014】
さらに、クロックは、いつでも開始し、一時停止し、停止することができるという点で対話性があり、そうした対話性は、同期規則によって記されるように、タイミング階層全体に渡って伝播する変化を起こし得る。前述の例に従って、アニメーション(B)が一時停止され、5秒遅れて再開されると、アニメーション(A)は、当初計画されたよりも5秒遅れて開始する。こうすることにより、他のクロックにおいて、タイミング構造全体に伝播する可能性があるタイミング変化が起こり得る。
【0015】
タイミング構造に対する変化の計算は、高価な際限のない動作なので、この動作は、予測可能なフレームレートを満たすという狙いがあるリアルタイムのレンダリングシステムには適さない。こうした2つの目標(フル機能のアニメーションシステムの提供および予測可能なフレームレートの維持)は、相反するものである。1つの解決策は、システムを2つの部分に分割することである。すなわち、クロックの間の同期規則について知っている一方の部分、および各クロックを、完全に独立したエンティティと見なすもう一方の部分である。
【0016】
本明細書において権利請求する通信プロトコルは、別個の2つのアニメーションシステムの同期を維持し、そうすることによって、アニメーションは、対話性に不利益をもたらすことなく、高い表示リフレッシュレートで実行することができ、その逆も可能である。
【0017】
本明細書に記載するアニメーションシステムは、少なくとも2つのコンポーネント、すなわち、対話性および複合タイミング構造に主に携わる上位アニメーションサブシステムと、一定の高い表示リフレッシュレートでの、ディスプレイへの1つまたは複数のアニメーションのレンダリングに主に携わる下位アニメーションサブシステムとを含む。「上位」という用語は、このアニメーションシステムがユーザにより近いということを指し、「下位」アニメーションシステムは、金属(またはマシン)により近い。
【0018】
上位アニメーションサブシステムの一例が、アプリケーション自体またはユーザから受信されるデータに従ってアニメーションを制御するアプリケーションである。下位アニメーションサブシステムの例が、アニメーションデータの、物理的に表示されるアニメーションへのコンバートを制御する表示デバイスシステムである。表示デバイスシステムは、ビデオカードハードウェア(明示的には示さない)上、またはビデオカード上に物理的に常駐しないコンポーネント内に含めることができるハードウェアコンポーネントならびにソフトウェアコンポーネントを含む。
【0019】
本説明において、表示デバイスを、表示システムあるいはアニメーションシステムまたはサブシステムとして参照する場合がある。ただし、表示システムのコンポーネントおよび処理すべてが、必ずしも表示デバイス上に物理的に常駐するわけではないことに留意されたい。本明細書で使用する「表示デバイス」という用語は、ディスプレイおよびどの種類の表示メモリも制御するプロセッサ動作も包含する。
【0020】
通常、アニメーションプロセスは、上位アニメーションサブシステムおよび下位アニメーションサブシステム(単一のアニメーションシステムを使用する)両方を含む1台のマシン上のプロセス中で実行されるものと思われる。ただし、本明細書に記載する、別個の2つのアニメーションシステム用の通信プロトコルは、(1)単一のプロセス中の2つのスレッドとして、(2)1台のマシン上の別個の2つのプロセスとして、または(3)クライアント−サーバアーキテクチャでのように、ネットワークによって分けられる別個の2つのマシン上で、実行される上位および下位アニメーションサブシステムを想定する。
【0021】
例示的なサーバ−クライアントシステム
図1は、本明細書に記載するシステムおよび方法による、例示的なサーバ−クライアントシステム100のブロック図である。サーバ−クライアントシステム100は、インターネットなどのネットワーク106を介して通信するサーバ102およびクライアント104を含む。
【0022】
サーバ102は、メモリ108、プロセッサ110、ネットワーク106を介した通信を制御するネットワークインターフェイスカード112、および一般に、サーバが標準サーバ機能を実施するために要求される他の種々のハードウェア114を含む。メモリ110は、オペレーティングシステム116およびサーバ機能を提供する種々のソフトウェアコンポーネント118を含む。
【0023】
アプリケーション120も、メモリ108に格納され、1つまたは複数のアニメーション機能を制御するコンピュータコードを組み込む上位アニメーションサブシステム122を含む。アニメーション機能は、ウィンドウ、ダイアログボックスなどがあり得るであろう。上位アニメーションサブシステム122は主に、対話性および複合タイミング構造を担当する。以降の説明に見られるように、アプリケーション120は、ユーザが書いたコンピュータコードおよびユーザコードが、1つまたは複数のアプリケーションプログラミングインターフェイス(API)を介してアクセスする、ユーザコードから分離されたシステムコンピュータコードを含み得る。
【0024】
クライアント104は、メモリ130、プロセッサ132、ネットワーク106との間の通信を制御するネットワークインターフェイスカード134、およびディスプレイ136を含む。クライアント104は、表示デバイス138ならびにクライアント104が適切に機能するために要求され得る種々のハードウェア140も含む。
【0025】
メモリ130は、アクセスを提供しネットワーク106をナビゲートするように構成されたブラウザ142、およびクライアント104の基本的な機能性を制御するオペレーティングシステム144を格納する。種々のソフトウェアコンポーネント146も、メモリ130に格納され、必要なクライアント104の機能性およびクライアントサービスを提供するソフトウェアを含む。
【0026】
表示デバイス138は、表示デバイスメモリ(図示せず)、表示デバイスハードウェアコンポーネント(図示せず)、またはクライアント104に含まれるメモリ130に格納することができる下位アニメーションサブシステム148を含む。図1は、表示デバイス138コンポーネントの少なくとも一部分が、クライアント104のメインメモリ130に常駐し得ることを示す。下位アニメーションサブシステム148は、高リフレッシュフレームレート(最低リフレッシュレートは30フレーム/秒)用のレンダリングターゲットを満たすことを主に担当する。高リフレッシュフレームレートの持続は、優れた結果をもたらし、アニメーションシステムの最終的なターゲットである視聴者にとって喜ばしいことである。
【0027】
アニメーションのための高リフレッシュフレームレートの持続を阻止する2つの障害物は、(1)遅延時間および(2)帯域幅である。ネットワークを介してデータを送るとき、データは、世界のどこにでも向けることができるので、大幅な遅延時間を生じ得る。遅延時間の問題は、適切なメッセージおよびフィードバックが時間通りに届くのを妨げ、このことが、リフレッシュレートを損なわせ、ユーザ経験を低下させ得る。これは、単一のエンティティとして構成されたアニメーションシステムに関わる比較的大きな問題である。というのは、大量のデータを、アニメーションを制御するために定期的に送られなければならないからである。
【0028】
帯域幅の問題は、単一のエンティティシステムにとってより大きな問題も提示する。複雑なアニメーションの場合、すべてのフレーム用の特定の境界(スレッド、プロセス、ネットワーク)を超えて、膨大な量のデータが送られなければならない。別個の2つのアニメーションサブシステムを含む、本明細書に記載するシステムを用いても、帯域幅の使用は、帯域幅を本質的に制限するモデムの使用、または莫大な数のクライアントにサービスを行っているサーバに関わる問題となり得る。サーバが、単純なアニメーション用の比較的少量のデータのみを送信する場合でも、そのデータが、たとえば400のクライアントに対してサービスされなければならない場合、帯域幅の問題となり得る。
【0029】
本明細書に記載するシステムおよび方法は、高リフレッシュレートを維持しながら帯域幅の使用を最小限に抑えるための、効率的なやり方を提供する。
【0030】
例示的なアニメーションレンダリングシステムアーキテクチャ
図2は、本明細書に記載するシステムおよび方法による例示的なアニメーションレンダリングシステムアーキテクチャ200のブロック図である。図2に示す要素のいくつかは、図1にも含まれる要素である。参照のために、両方の図に含まれる要素については、図1の要素に使われているのと同じ参照番号で図2に示す。
【0031】
例示的なアーキテクチャ200は、アプリケーション120および表示デバイス138を含む。アプリケーション120は、後でより詳細に論じる通信プロトコル216に従って、通信チャネル204を介して表示デバイス138と通信する。上述したように、通信チャネル204は、スレッド、プロセス、またはマシンの間の境界でよい境界を横切る。マシンの間の境界用には、たとえば、通信チャネル204は、上で示したネットワーク106でよい。
【0032】
ユーザコード202は、ユーザコード202とともにアプリケーション128の特徴の使用を望む開発者によってアプリケーション120にアクセスを提供する1組のシステムAPIであるAPI境界206を介して、アプリケーション120と一緒に機能する。
【0033】
上述したように、アプリケーション120は、上位アニメーションサブシステム122を包含する。上位アニメーションサブシステム122は、上位グラフィックスコンポーネント208、上位アニメーションオブジェクトデータベース210、および上位タイミングエンジン212を含む。タイミングエンジン212は、上位アニメーションオブジェクトデータベース210に格納された1つまたは複数の上位クロック214を作成し制御する。
【0034】
上位タイミングエンジン212は、上位クロック214のセットアップおよび同期に責任をもつ。したがって、たとえば、一緒に実行されると仮定される10個のアニメーションがある場合、上位タイミングエンジン212は、アニメーションを同時に表示するように、10個の上位クロック214を同期させる。
【0035】
上位グラフィックスコンポーネント208は、アニメーションで使われる画像のタイプを格納する。上位アニメーションオブジェクトデータベース210は、1つまたは複数のアニメーション(および/または1つもしくは複数のメディアに関連付けられたメディアオブジェクト)に関連付けられたアニメーション値を格納する。アニメーション値は、少なくとも、アニメーションに関連付けられたタイムライン(すなわち、クロック)を含む。(本明細書で使用する「クロック」および「タイムライン」という用語は、入換可能であることに留意されたい)。アニメーション値は、上位クロック214の値に基づいて、アニメーションレンダリングの出力に影響を与える。各アニメーションは、上位グラフィックスコンポーネント208の1つまたは複数の側面を修正する。
【0036】
たとえば、点P1から点P2までの線を作成する単純なアニメーションに対して、アニメーションオブジェクトデータベース210は、時間=0におけるP1用の値および時間=1におけるP2用の値を格納することになる。(P1とP2の間の全点が補間される)。
【0037】
例示的なアニメーションレンダリングシステムアーキテクチャ200の表示デバイス138は、図1に示す下位アニメーションサブシステム148を含む。下位アニメーションサブシステム148は、上位アニメーションサブシステム122と等価な構造であり、下位グラフィックスコンポーネント218、下位アニメーションオブジェクトデータベース220、および下位タイミングエンジン222を含む。タイミングエンジン222は、下位アニメーションオブジェクトデータベースに格納される1つまたは複数の下位クロック224を作成する。
【0038】
下位アニメーションサブシステム148のコンポーネント(218〜224)は、上位アニメーションサブシステム122のコンポーネント(208〜214)と同様であり、その機能および相互運用性は、前述したものと同様である。
【0039】
例示的なアニメーションレンダリングシステムアーキテクチャ200のようなアーキテクチャ、すなわち、2つのサブシステムに分解されるアニメーションシステムを有するアーキテクチャには、利点がある。アプリケーションが高価であり、対話性に関してたくさんのオーバーヘッドを費やす場合、アニメーションは継続することができる。すなわち、アニメーションが継続し得る前に、対話部分が完了するのを待たなくてよい。非分解型システムにおいて、アプリケーションが、定期的にデータがアップデートされるディスプレイを提供しない場合、ディスプレイは、動画ではなく静止画像を描画することができる」。
【0040】
この問題の一般例は、システムが情報を処理している間に表示される状況リボンインジケータを特徴とする。通常、インジケータは、たとえば、何らかの処理が進行中であることを指す、左から右の方向に進む。しかし、状況インジケータが止まり、ユーザには、システムがロックしてしまったのか、それともまだ何かを処理しているのか、わからないときがある。これは、アニメータの対話部分が、フレームレートリフレッシュを満たすように、アップデートされるデータを時間内にディスプレイ部分に提供しない結果である。
【0041】
このようなシステムは、映像に対して特に貧弱である。映像の場合、単にシステムが別のタスク(マウスカーソルの移動のように些細なものであっても)の処置に忙しかったというだけでは、異常または乱れを生じる、フレームのドロップを起こしてはならない。
【0042】
分解型アニメーションシステムでは、下位アニメーションサブシステム148は、上位アニメーションサブシステム122とは非同期に実行されるので、上位アニメーションサブシステム122が、フレームがリフレッシュされる前にフレームの再描画を妨げるタスクにかかりきりであったとしても、実行(すなわち、描画)し続ける。分解型アニメーションシステムは、したがって、アニメーション動作をシームレスに表示し、したがって、上質なユーザ経験を提供する。
【0043】
例示的な方法の実装:基本動作
図3は、図1および図2に示す分解型アニメーション/レンダリングシステムの基本動作を示すフロー図である。以下の説明では、図1および2に示す要素および参照番号を引き続き参照していく。
【0044】
分解型アニメーションシステム(すなわち、互いとは非同期に機能する、別個の少なくとも2つのアニメーションサブシステムに分解されるアニメーションシステム)において、ユーザ(アプリケーション)は、上位システムに、システムAPIを介して、グラフィックスがどのようにディスプレイに現れると仮定されるかを告げる。上位システムは、特殊化された通信プロトコルを用いて、上位システムにおいてセットアップされた構造と同様の構造を作成するよう、下位システムに指示する。
【0045】
上位システムは、下位システム内のいくつかの要素を作成するように構成されるので、図4を参照して後でより詳細に論じる通信プロトコルが、いくつかの「作成」メッセージまたはコマンドを含むということには必ずしも従わない。図3に示すフロー図は、上位アニメーションサブシステム122が下位アニメーションサブシステム148と通信して、その中で構造をセットアップするときに起こるいくつかの基本的なステップをカバーする。
【0046】
ブロック300で、上位アニメーションサブシステム122は、下位アニメーションサブシステム148内にアニメーションオブジェクト220を作成するためのメッセージを送る。上位アニメーションサブシステム122は次いで、下位アニメーションサブシステム148と通信して、作成されたばかりのアニメーションオブジェクト220とともに含めるためのクロック224(すなわち、タイムライン)を作成する(ブロック302)。
【0047】
アニメーションオブジェクトとタイムラインの間は、必ずしも1:1の割合ではないことに留意されたい。言い換えると、1つのタイムラインが、複数のアニメーションオブジェクトを制御し得る。したがって、ブロック302に対して上述したステップで、タイムラインは、他のタイムラインが既に存在する場合、および新規作成されたアニメーションオブジェクトを既存のタイムラインに関連付けることができる場合、作成される必要がない場合がある。
【0048】
この時点で、アプリケーション120は、別のアニメーションオブジェクトを作成することも、既存のアニメーションを修正することもできる。アプリケーション120が、別のアニメーションオブジェクトを作成するように構成される場合(ブロック304の「アニメーションオブジェクト」分岐)、上位アニメーションサブシステム122は、ブロック300で、下位アニメーションサブシステム138に、別のアニメーションオブジェクト220を作成するための通信プロトコルメッセージを送る。上位アニメーションサブシステム122は次いで、ブロック302で、新規作成されたアニメーションオブジェクト220にタイムラインを関連付けるためのメッセージを送る。タイムラインについては、作成してもよく、既存のタイムラインでもよい。
【0049】
アプリケーション120は、修正をサポートするようにも構成される。上位アニメーションサブシステム122は、アニメーションオブジェクト220および/またはそれに関連付けられたタイムラインを修正するためのメッセージを送ることができる(ブロック304の「修正」分岐)。アニメーションの側面を修正する明快な修正に加え、「一時停止」動作および「停止」動作も修正である。「一時停止」動作を、一般的な修正の観点でコーディングすることができ、たとえば、「時間0で、クロックは10であり、時間10で、クロックは10である」。「停止」動作は、「アニメーション除去」メッセージで開始される。
【0050】
修正が、「アニメーション除去」メッセージである場合(ブロック306の「yes」分岐、アニメーションは、ブロック308で中断される。それ以外の場合(ブロック306の「no」分岐)、上位アニメーションシステム122は、既存のアニメーションを修正するように構成された1つまたは複数のメッセージを送る(ブロック310)。既存のアニメーションの修正は、既存のアニメーションに関連付けられたタイムラインの修正も意味し得る。
【0051】
上述したように、上記フロー図は、上位アニメーションサブシステム122から通信プロトコルメッセージを送ることによって、下位アニメーションサブシステム148を構成する全般的な方法を示す。通信プロトコルを使用する、より具体的な少なくとも1つの方法の実装について、通信プロトコルの詳細を論じた後で、より詳細に論じる。
【0052】
通信プロトコル
図4a、4bおよび4cは、上位アニメーションシステムと下位アニメーションシステムの間の伝送を司る際に使用するための通信プロトコルのメッセージ/コマンドを概説するテーブルである。以下の説明では、図1および2に示す要素および参照番号を引き続き参照していく。
【0053】
図4aは、上位タイミングエンジン212から下位タイミングエンジン222に送られるメッセージを記述するテーブル400を示す。「クロック作成」メッセージ402が、下位タイミングエンジン222に、アニメーション用のクロックを作成させる。「クロック作成」メッセージ402は、初期クロックプロパティである「クロック作成パラメータ」404を含む。クロックプロパティは、(開始時間からの)持続期間、(このクロックにおけるすべての時間がそれに対して相対的である)親クロック、(その親に対して相対的な)速度、加速度および減速度を含み得るが、それに限定されない。加速度および減速度パラメータは、アニメーションの「速度を上げ」または「速度を下げる」のに費やされる「持続」時間の比率を指定する。
【0054】
「プロパティアップデート」メッセージ406が、既存クロックのプロパティにアップデートをもたらす。「プロパティアップデートパラメータ」408は、ターゲットクロック(すなわち、アップデートされるプロパティを有するクロック)、ならびにアップデートされるプロパティおよび値を含む。「間隔追加」メッセージ410が、下位タイミングエンジンに、既存のアニメーション(オブジェクト)に間隔を追加するよう命令し、ターゲットクロックおよびターゲットクロックに追加される間隔のプロパティを識別する「間隔追加パラメータ」412を含む。
【0055】
プロトコルは、上位アニメーションサブシステム122と下位アニメーションサブシステム148の間の同期を維持するのに使われる、「同期スリップリセット」メッセージ414および関連する「同期スリップリセットパラメータ」416を含む。どのようにしてこのパラメータが実装されるかは、具体的なシステム設計の問題である。
【0056】
少なくとも1つの実装形態では、同期プロセスは、以下の例によって記述される。下位アニメーションサブシステム148が、ビデオファイルを制御中であり、映像が(たとえば、ネットワークトラフィックのせいで)遅れていることを検出した場合、下位アニメーションサブシステム148は、上位アニメーションサブシステム122に「メディアスリップとの同期」メッセージおよびパラメータ(群)(以降の図4bを参照)を送り、スリップが起こったこと、およびスリップの規模を格納する。
【0057】
上位アニメーションサブシステム122(具体的には、上位タイミングエンジン212)は、スリップを考慮に入れるように間隔をアップデートし終えると、下位アニメーションサブシステム148に、スリップオフセットをゼロにリセットするよう告げるために、「同期スリップリセット」メッセージ414および関連する「同期スリップリセットパラメータ」416を送る。
【0058】
この特定のプロトコルメッセージに関するこれ以上の情報については、以降の図4bを参照されたい。
【0059】
「全間隔除去」メッセージ418は、特定のクロックに関連付けられたどの既存の間隔も除去するために、下位タイミングエンジン222に送ることができる。ターゲットクロックは、「全間隔除去パラメータ」420中で識別される。「クロック削除」メッセージ422も、通信プロトコルに含まれ、「クロック削除パラメータ」424中で識別されるターゲットクロックを除去するために下位タイミングエンジン222に送られる。
【0060】
図4bは、下位タイミングエンジン222から上位タイミングエンジン212に送られる、通信プロトコル中のメッセージを記述するテーブル430を示す。「メディアスリップとの同期」メッセージ432が、上位タイミングエンジン212に、上位タイミングエンジン212がメディアコンポーネントと同期をとるために特定のクロックをスリップしなければならない量を提供する。(注:これは正しいと言えるだろうか?)「メディアスリップとの同期パラメータ」434は、クロックがスリップするべきターゲットクロック、およびスリップの規模を識別するスリップ量を含む。
【0061】
メッセージは、下位アニメーションサブシステムから上位アニメーションサブシステム122にデータを返送する。この返送は、通信チャネル204中に遅延時間が存在するので必要である。これが起こり得る一例は、ユーザが、「一時停止」コマンドを活動化する場合である。システムは、互いと非同期に通信するので、下位アニメーションサブシステムは、上位アニメーションサブシステムが下位アニメーションサブシステムに追いつくことができる前に、いくつかのフレームを処理することができる。その結果、下位システムが長く実行される。
【0062】
しかし、これは、アニメーションに関連付けられたクロックが、サブシステムを再度同期させるように「スリップする」または下位クロック224と「同期をとる」必要がある、上位アニメーションサブシステム122への情報を得る「メディアスリップとの同期」メッセージ432と一緒に処理される。
【0063】
図4cは、上位アニメーションオブジェクト210から下位アニメーションオブジェクト220に送られるメッセージを記述するテーブル440を示す。テーブル440は、下位アニメーションサブシステム148に、新規アニメーションオブジェクトを作成するよう指令する「アニメーション作成」メッセージ442を含む。「アニメーション作成パラメータ」444は、アニメーション作成されるプロパティのタイプ、アニメーション機能、アニメーション機能および制御クロックを識別する出力値タイプを含む。
【0064】
たとえば、回転変換の角度がアニメーション化される場合、出力タイプは「倍精度浮動小数」である。線のエンドポイントの1つがアニメーション作成される場合、出力タイプは「点」である。矩形の色がアニメーション作成される場合、出力タイプは「色」である。
【0065】
アニメーション機能は、当該分野において公知であり、このようなどのアニメーション機能もここで指定することができる。単純なアニメーション機能の例は、「5から10まで」である。これは、間隔の開始において、アニメーション機能が、5という値を出力し、終了において、10を出力し、アニメーション機能の途中では、7.5などの値を出力することを意味する。より複雑なアニメーション機能は、「5から6、6から10まで」である。ここで、アニメーションの途中での出力値は6である。機能は、値のリストだけでなく、機能がそうした値(補間される、中間にあるすべてのものを有する)を出力するべき時間のリストも特定することによって、より複雑にすることもできる。
【0066】
上述したアニメーション機能は例示に過ぎず、添付の特許請求の範囲を、こうしたアニメーション機能に限定する意図ではないことを留意されたい。「アニメーション機能」と見なすことができるどのコンピュータ動作も、この状況において使うことができる。
【0067】
最後に、上述したように、新規アニメーションオブジェクト用の制御クロックは、新規クロックでもよく、他の1つまたは複数のアニメーションオブジェクトを制御することができてもできなくてもよい既存のクロックでもよい。
【0068】
テーブル440は、下位アニメーションサブシステム148内の既存のアニメーションをアップデートするための情報を提供する「アニメーションアップデート」メッセージ446も含む。「アニメーションアップデートパラメータ」448は、ターゲットアニメーション(すなわち、アップデートされるアニメーション)、ならびにアップデートされるプロパティ(アップデートされるプロパティおよびプロパティ用のアップデートされる値)を含む。
【0069】
「アニメーションコレクション作成」メッセージ450が、コレクションとしてグループ化されるべき、下位アニメーションオブジェクト[データベース]220中の多数のアニメーションを識別する。「アニメーションコレクション作成パラメータ」452が、コレクションとしてグループ化されるべきアニメーションの初期リストを識別する。
【0070】
アニメーションコレクションも、当該分野において公知である。アニメーションコレクションは、開発者に、単一の線形補間では表すことができない、複雑なアニメーションの振舞いを作成させるために存在する。たとえば、あるアニメーションは、点を上下に繰り返し動かすことができるが、第2のアニメーションは、点を右に動かすことができる。両方のアニメーションが一緒に実行されると、点は、右への波形パターンに従うように現れる。アニメーションコレクションを編集することができ、したがって、プロトコルにおけるメッセージの存在については、後で記載する。
【0071】
「コレクションへのアニメーション追加」メッセージ454が、下位システムに、「コレクションへのアニメーション追加パラメータ」456中で識別されるアニメーションを、「コレクションへのアニメーション追加パラメータ」456中でも識別されるアニメーションコレクションに追加するよう告げる。同様に、「コレクションからのアニメーション除去」メッセージ458が、ターゲットアニメーションコレクションおよびコレクションから除去されるべきコレクション中のアニメーションを識別する「コレクションからのアニメーション除去パラメータ」460とともに含まれる。
【0072】
テーブル440は、「静的値作成」メッセージ462も含む。静的値は、下位アニメーションサブシステム148が、アプリケーション120によって提供されるアニメーションをサポートすることができない場合に使われる。この状況については、後で、図6を参照してより詳細に記載する。「静的値作成」メッセージ462に関連付けられるのが、作成される静的値の値タイプおよび初期値を識別する「静的値作成パラメータ」464である。
【0073】
「静的値アップデート」メッセージ466が、静的値へのアップデートをもたらす。「静的値アップデートパラメータ」468が、ターゲットである静的値オブジェクトおよびそのように識別される静的値オブジェクトの新規値を識別する。
【0074】
図4(a〜c)に示すメッセージおよびパラメータは、下位アニメーションサブシステム148によってレンダリングされるアニメーションを、上位アニメーションサブシステムによって非同期に制御することができる、合理的、効率的なやり方を提供する。1つまたは複数のメッセージが、すべてのレンダリングリフレッシュフレームにおいて送られなくてもよいので、ディスプレイは、一定の高レートでフレームをレンダリングすることができる。同時に、上位システムは、使用可能になると、処理時間を利用して、すなわち、より遅い可変リフレッシュレートで、下位システムにデータを提供することができる。
【0075】
例示的な方法の実装:完全接続されたシステム
図5は、完全接続された上位アニメーションシステムおよび下位アニメーションシステムを有するレンダリングシステムにおけるアニメーションプロセスの例示的な方法の実装形態を示すフロー図である。
【0076】
図5に示すシナリオでは、アプリケーション開発者が、時間の経過とともに動く、固定されたアンカ点から第2の点まで進む、アニメーション作成される直線の描画を望む。開発者は、3つのものを提供する必要がある。すなわち、(1)レンダリング動作(たとえば、静的点Aとアニメーション作成点Bの間に線を描画する)、(2)アニメーション機能(たとえば、点Bが、(0,0)から(100、100)へ進む、および(3)アニメーションのタイミング(たとえば、5秒以内に始まり、10秒間実行され、次いで、逆方向に一度繰り返す)。
【0077】
図5は、上で論じた情報を含む、アプリケーション120への、上位アニメーションサブシステム122の応答を示す。ブロック500で、上位アニメーションサブシステム122は、アプリケーション120から情報を受信する。上位アニメーションサブシステム122は、ブロック502でレンダリングオブジェクトを作成し、レンダリングオブジェクトは、線を表す。ブロック504で、上位アニメーションサブシステム122は、(0,0)から(100,100)までの値を出力するアニメーション機能を作成する。ブロック506で、上位アニメーションサブシステム122は、5秒以内に始まり、10秒間実行され、次いで、逆方向に実行されるクロックを作成する。
【0078】
下位アニメーションサブシステム148は、こうしたオブジェクトをサポートすることができるので、上位アニメーションサブシステム120は、下位アニメーションサブシステム148に、ブロック510〜518に示す、通信チャネル204上にトラフィックを生成するメッセージを送る(ブロック508)。
【0079】
ブロック510:クロック1を作成する。クロック1用のパラメータを設定する。持続期間=10。
【0080】
ブロック512:クロック1用の間隔を追加する。「現在+5」から「現在+15」まで。t=0からt=10に進む。
【0081】
ブロック514:クロック1用の間隔を追加する。「現在+15」から「現在+25」まで。t=10からt=1まで戻る。
【0082】
ブロック516:アニメーション1を作成する。アニメーション1用のパラメータを設定する。(0,0)から(100,100)まで。クロック=クロック1。
【0083】
ブロック518:アニメーション1を参照する[DrawLine]命令を作成する。
【0084】
この例では、DrawLine関数は、アニメーションをレンダリングするプロトコルによってサポートされるどの描画命令も表す。DrawLine命令は、例示に過ぎない。
【0085】
メッセージが上位アニメーションサブシステム122から下位アニメーションサブシステム148に送信された後、下位アニメーションサブシステム148が、上位サブシステム148とは独立して実行され、可能な最高フレームレートで線の位置をアップデートする。それ以上のメッセージが、2つのサブシステム122と148の間で送られる必要はない。
【0086】
これまで見てきたように、本明細書において採用する通信プロトコルは、通信チャネル204に入れられるデータの量を単一にすることによって、通信チャネル204を最適化する。短いメッセージおよび上で論じたパラメータが使われない場合は、システムを同期させるために、パイプライン経由で多数の動作が送られなければならなくなる。
【0087】
しかし、本質的に、通信チャネル204に入れられるものは、いくつかのクロック用の間隔のリストである。あるクロックに対して、間隔が、たとえば時間0と時間10の間のように定義され、クロックは、0から10’まで進む(このようにして、現実世界のクロックを定義する)。あるいは、おそらくクロックは、2倍遅く実行されることが望まれる。この場合、「時間0と時間10の間で、クロックは、0から5’まで進む」ことになる。
【0088】
タイミング間隔のリストを定義することによって、クロックに対するすべての動作を定義することができる。たとえば、休止動作は、クロック間隔を用いて定義することができる。すなわち、時間0で、クロックは10であり、時間10で、クロックは10’である。したがって、すべての動作を、線形間隔として表現することができる。
【0089】
例示的な方法の実装:部分接続されたシステム
図6は、部分接続された上位アニメーションシステムおよび下位アニメーションシステムを有するレンダリングシステムにおけるアニメーションプロセスの例示的な方法の実装形態を示すフロー図である。
【0090】
この例に示すシナリオでは、アプリケーション開発者が、時間の経過とともにカスタムパス上を動く、固定されたアンカ点から第2の点まで進む、アニメーション作成される直線の描画を望む。開発者は、以下のものを提供する必要がある。すなわち、(1)レンダリング動作(たとえば、静的点Aとアニメーション作成点Bの間に線を描画する)、(2)カスタムアニメーション機能(たとえば、カスタムアニメーション1を呼び出して、点Bの位置を計算する)、および(3)アニメーションのタイミング(たとえば、5秒以内に始まり、10秒間実行され、次いで、逆方向に一度繰り返す)。
【0091】
上位アニメーションサブシステム122は、ブロック600でアプリケーション情報を受信する。アプリケーションのリクエストに応答して、上位アニメーションサブシステム122は、線を表すレンダリングオブジェクト(ブロック602)、ユーザコード202をコールバックするように構成されるアニメーション機能(ブロック604)、および5秒以内に始まり、10秒間実行され、次いで、逆方向に実行されるクロック(ブロック606)を作成する。適切なメッセージが、ブロック608で、下位アニメーションサブシステム148に送られる。
【0092】
カスタムアニメーションは、ユーザコードを要求するので、下位サブシステムによって処理することができず、したがって、この結果、以下の初期トラフィックが通信チャネル上で生成される。
【0093】
ブロック610:静的点の値1を作成する。
【0094】
ブロック612:点の値1を参照する[DrawLine]命令を作成する。(DrawLine命令は例示に過ぎない。上記を参照)。
【0095】
ブロック614で、下位アニメーションサブシステム148は、上位アニメーションサブシステム122から送信されるデータを受信する。下位アニメーションサブシステム148は、アニメーションを、静的線として扱う。
【0096】
データの初期伝送の後のすべてのフレーム上で、上位アニメーションサブシステム122は、ユーザコード202を呼び出して、点Bの位置を計算し(ブロック620)、新規位置の値をブロック622で受信する。上位アニメーションサブシステム122は次いで、通信チャネル204を介して、静的点の値1の値をアップデートするための以下のメッセージを下位アニメーションサブシステムに送る。
【0097】
ブロック626:静的点の値を、点Bに対する新規値でアップデートする。
【0098】
例示的なコンピュータ環境
本明細書に記載する様々なコンポーネントおよび機能性は、コンピューティングシステムを用いて実装される。図7は、このようなコンピューティングシステムの一般的な例、すなわち、参照番号700で示すコンピュータのコンポーネントを示す。図7に示すコンポーネントは例に過ぎず、本発明の機能性の範囲に関するいかなる限定を提案することも意図していない。本発明は、図7に示す特徴に必ずしも依存しない。
【0099】
概して、異なる様々な汎用または専用のコンピューティングシステム構成を利用することができる。本発明とともに使用するのに適切であり得る他の公知のコンピューティングシステム、環境、および/または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれをも含む分散型コンピューティング環境などを含むが、それに限定されない。
【0100】
コンピュータの機能性は、多くの場合、コンピュータによって実行されるプログラムモジュールなど、コンピュータ実行可能命令によって実施される。概して、プログラムモジュールは、特定のタスクを実施しまたは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。タスクは、通信ネットワークを介してリンクされるリモート処理デバイスによって実施することもできよう。分散型コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートコンピュータ記憶媒体両方に置くことができる。
【0101】
命令および/またはプログラムモジュールは、それぞれ別のときに、コンピュータの一部であるか、またはコンピュータによって読むことができる様々なコンピュータ可読媒体に格納される。プログラムは一般に、たとえば、フロッピー(登録商標)ディスク、CD−ROM、DVD、または被変調信号など何らかの形の通信媒体に載せて分散される。このような媒体から、プログラムは、コンピュータの補助記憶装置にインストールされ、またはロードされる。実行時に、プログラムは、少なくとも部分的に、コンピュータの一次電子メモリにロードされる。本明細書に記載の本発明は、こうしたおよび他の様々なタイプのコンピュータ可読媒体を含み、その際、このような媒体は、命令プログラム、および/またはマイクロプロセッサまたは他のデータプロセッサに関連して後で記載するステップを実装するモジュールを含む。本発明は、後で記載する方法および技術に従ってプログラミングされる場合のコンピュータ自体も含む。
【0102】
例示のために、オペレーティングシステムなど、プログラムおよび他の実行可能プログラムコンポーネントを、本明細書では別個のブロックとして示したが、このようなプログラムおよびコンポーネントは、様々なときにコンピュータの異なる記憶コンポーネントに存在し、コンピュータのデータプロセッサ(群)によって実行されることに理解されたい。
【0103】
図7を参照すると、コンピュータ700のコンポーネントは、処理ユニット702と、システムメモリ704と、システムメモリなど様々なシステムコンポーネントを処理ユニット702に結合するシステムバス706とを含み得るが、これに限定されない。システムバス706は、様々なバスアーキテクチャのどれを使用してもよいメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスなどいくつかのタイプのバス構造のいずれでもよい。限定ではなく例として、このようなアーキテクチャは、ISA(業界標準アーキテクチャ)バス、MCA(マイクロチャネルアーキテクチャ)バス、EISAA(拡張ISA)バス、VESA(米国ビデオ電子装置規格化協会)ローカルバス、およびメザニン(Mezzanine)バスとしても知られるPCI(周辺装置相互接続)を含む。
【0104】
コンピュータ700は通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ700によってアクセス可能であるとともに揮発性および不揮発性媒体、取外し可能および固定式媒体両方を含む、市販されているどの媒体でもよい。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含み得る。「コンピュータ記憶媒体」は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の格納のためのどの方法でも技術でも実装される揮発性媒体および不揮発性媒体、取外し可能媒体および固定式媒体を含む。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、DVD(デジタル多用途ディスク)または他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは、所望の情報を格納するのに使うことができるとともにコンピュータ700によってアクセスすることができる他のどの媒体も含むが、それに限定されない。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、被変調データ信号、たとえば搬送波や他の移送機構として具体化し、どの情報配信媒体も含む。「被変調データ信号」という用語は、信号中の情報を符号化するようなやり方で設定されまたは変更される信号特性の1つまたは複数を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、ならびに音響、RF、赤外線、および他の無線媒体などの無線媒体を含む。上記のどの組合せも、やはりコンピュータ可読媒体の範囲に含まれるべきである。
【0105】
システムメモリ704は、コンピュータ記憶媒体を、ROM(読取り専用メモリ)708およびRAM(ランダムアクセスメモリ)710など、揮発性および/または不揮発性メモリの形で含む。基本入出力システム(BIOS)712は、たとえば起動中にコンピュータ700内部の要素間の情報の転送を助ける基本ルーチンを含み、通常はROM708に格納される。RAM710は一般に、処理ユニット702に対してただちにアクセス可能な、かつ/または処理ユニット702によって現在操作されているデータおよび/またはプログラムモジュールを含む。限定ではなく例として、図7では、オペレーティングシステム714、アプリケーションプログラム716、他のプログラムモジュール718、およびプログラムデータ720を示す。
【0106】
コンピュータ700は、他の取外し可能/固定式、揮発性/不揮発性コンピュータ記憶媒体も含み得る。単なる例として、図7は、固定式の不揮発性磁気媒体からの読出しまたはそこへの書込みをするハードディスクドライブ722、取外し可能な不揮発性磁気ディスク726からの読出しまたはそこへの書込みをする磁気ディスクドライブ724、および、CD ROMや他の光学媒体など取外し可能な不揮発性光ディスク730からの読出しまたはそこへの書込みを行う光ディスクドライブ728を示している。例示的な動作環境で用いることができる、他の取外し可能/固定式、揮発性/不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体状態RAM、固体状態ROMなどを含むが、それに限定されない。ハードディスクドライブ722は通常、データメディアインターフェイス732などの固定式メモリインターフェイスによって、システムバス706に接続され、磁気ディスクドライブ724および光ディスクドライブ728は通常、インターフェイス734などの取外し可能メモリインターフェイスによって、システムバス706に接続される。
【0107】
上述し、かつ図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に加え、コンピュータは、I/Oインターフェイス740を介して接続することができる、他の周辺出力デバイス746(たとえばスピーカ)および1つまたは複数のプリンタ748も含むことができる。
【0108】
コンピュータは、リモートコンピューティングデバイス750など、1つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境において動作することができる。リモートコンピューティングデバイス750は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の共通ネットワークノードでよく、通常、コンピュータ700に関連して上述した要素の多くまたはすべてを含む。図7に示す論理接続は、ローカルエリアネットワーク(LAN)752およびワイドエリアネットワーク(WAN)754を含む。図7に示すWAN754はインターネットだが、WAN754は、他のネットワークを含んでもよい。このようなネットワーク環境は、会社、企業規模のコンピュータネットワーク、イントラネットなどにおいてよく見られる。
【0109】
LANネットワーク環境において使われる場合、コンピュータ700は、ネットワークインターフェイスまたはアダプタ756を介してLAN752に接続される。WANネットワーク環境において使われる場合、コンピュータ700は通常、モデム758、または、インターネット754を介して通信を確立する他の手段を含む。モデム758は、内部にあっても外部にあってもよく、I/Oインターフェイス740または他の適切な機構を介してシステムバス706に接続することができる。ネットワーク接続された環境では、コンピュータ700に関連して図示したプログラムモジュールまたはその一部は、リモートコンピューティングデバイス750に格納することができる。限定ではなく例として、図7は、リモートアプリケーションプログラム760を、リモートコンピューティングデバイス750に常駐するものとして示している。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使うことができることが理解されよう。
【0110】
結論
記載したシステムおよび方法のための通信プロトコルはしたがって、下位アニメーションシステムとの上位アニメーションシステムの同期法を提供し、そうすることによって、下位システムを、一定の高速フレームリフレッシュレートで実行することができるとともに、上位システムを、対話性のために最適化された可変フレームレートで実行することができるようになる。いかなる対話能力も犠牲にすることなく、上質のグラフィックスを実現することができる。プロトコルはまた、2つのアニメーションシステムの間で送信されるデータの量を最小限に抑え、したがって、オーバーヘッドを抑え、性能を最適化する。
【0111】
具体的な実装形態および実施形態の詳細を上述したが、このような詳細は、添付の特許請求の範囲を限定することではなく、法定の開示義務を満たすことを意図している。したがって、特許請求の範囲によって定義される本発明は、上述された具体的な特徴に限定されない。そうではなく、本発明は、適正な添付の特許請求の範囲内である形または修正形態のいずれにおいても権利請求され、均一者の原則に従って適切に解釈される。
【図面の簡単な説明】
【0112】
【図1】アニメーションサブシステムを含むサーバ−クライアントシステムを示すブロック図である。
【図2】例示的なアニメーションレンダリングシステムアーキテクチャを示すブロック図である。
【図3】分解型アニメーション/レンダリングシステムの基本動作の方法の実装形態を示すフロー図である。
【図4a】上位タイミングエンジンから下位タイミングエンジンに送信される、上位アニメーションシステムを下位アニメーションシステムと同期させるための通信プロトコルメッセージおよびパラメータを示す図である。
【図4b】下位タイミングエンジンから上位タイミングエンジンに送信される、上位アニメーションシステムを下位アニメーションシステムと同期させるための通信プロトコルメッセージおよびパラメータを示す図である。
【図4c】上位アニメーションオブジェクトから下位アニメーションオブジェクトに送信される、上位アニメーションシステムを下位アニメーションシステムと同期させるための通信プロトコルメッセージおよびパラメータを示す図である。
【図5】完全接続された上位アニメーションシステムおよび下位アニメーションシステムを有するレンダリングシステムにおけるアニメーションプロセスの例示的な方法の実装形態を示すフロー図である。
【図6】部分接続された上位アニメーションシステムおよび下位アニメーションシステムを有するレンダリングシステムにおけるアニメーションプロセスの例示的な方法の実装形態を示すフロー図である。
【図7】本明細書に記載するシステムおよび方法による例示的なコンピューティング環境を示す図である。

【特許請求の範囲】
【請求項1】
アニメーションレンダリングシステムであって、
前記システム用の対話機能を操作する上位アニメーションサブシステムと、
前記システム用の表示機能を操作する下位アニメーションサブシステムと、
上位アニメーション動作によって参照される少なくとも1つの上位クロックと、
下位アニメーション動作によって参照される少なくとも1つの下位クロックと、
通信プロトコルに従って、前記上位アニメーションサブシステムと前記下位アニメーションサブシステムの間でメッセージを送る通信チャネルとを備え、
前記通信プロトコルは、アニメーションを指定し、前記アニメーションが指示された期間に渡ってどのように変化するべきかを指定する、前記上位アニメーションサブシステムによって前記下位アニメーションサブシステムに提供される情報を含み、そうすることによって、前記下位アニメーションシステムが、前記アニメーションのいくつかのフレームを処理するための情報を確実に有するようにすることを特徴とするアニメーションレンダリングシステム。
【請求項2】
前記上位アニメーションサブシステムと前記下位アニメーションサブシステムの間の前記通信は、非同期であることを特徴とする請求項1に記載のアニメーションレンダリングシステム。
【請求項3】
前記下位アニメーションサブシステムは、アニメーションを一定の表示フレームリフレッシュレートでレンダリングし、
前記上位アニメーションサブシステムは、前記一定の表示フレームリフレッシュレートより遅い可変レートで相互作用を操作することを特徴とする請求項1に記載のアニメーションレンダリングシステム。
【請求項4】
前記通信プロトコルは、前記下位アニメーションサブシステムから前記上位アニメーションサブシステムに送られる、前記上位アニメーションサブシステムと前記下位アニメーションサブシステムの間の同期を操作するための少なくとも1つのメッセージをさらに備えることを特徴とする請求項1に記載のアニメーションレンダリングシステム。
【請求項5】
前記下位アニメーションサブシステムから前記上位アニメーションサブシステムに送られる1つのメッセージは、アニメーションに関連付けられたターゲットクロックと、前記上位アニメーションサブシステムを、前記下位アニメーションサブシステムによって実行される前記アニメーションと同期させるために、前記ターゲットクロックがスリップしなければならない量とを識別する「メディアスリップとの同期」メッセージをさらに備えることを特徴とする請求項4に記載のアニメーションレンダリングシステム。
【請求項6】
前記上位アニメーションサブシステムは、上位タイミングエンジンをさらに含み、
前記下位アニメーションサブシステムは、下位タイミングエンジンをさらに含み、
前記通信プロトコルは、前記上位タイミングエンジンから前記下位タイミングエンジンに送られるパラメータ化されたメッセージ、すなわち
初期クロックプロパティパラメータを有するクロック作成メッセージと、
ターゲットクロックパラメータおよびアップデートされるプロパティパラメータを有するプロパティアップデートメッセージと、
ターゲットクロックパラメータおよび間隔プロパティパラメータを有する間隔追加メッセージと、
ターゲットクロックパラメータを有する同期スリップリセットメッセージと、
ターゲットクロックパラメータを有する全間隔除去メッセージと、
パラメータを削除するためのターゲットクロックを有するクロック削除メッセージとをさらに含むことを特徴とする請求項1に記載のアニメーションレンダリングシステム。
【請求項7】
前記上位アニメーションサブシステムは、上位アニメーションオブジェクトデータベースをさらに含み、
前記下位アニメーションサブシステムは、下位アニメーションオブジェクトデータベースをさらに含み、
前記通信プロトコルは、前記上位アニメーションオブジェクトデータベースから前記下位アニメーションオブジェクトデータベースに送られる、パラメータ化されたメッセージ、すなわち
出力値タイプパラメータ、アニメーション機能パラメータ、およびクロック制御パラメータを有するアニメーション作成メッセージと、
ターゲットアニメーションパラメータおよびアップデートされるプロパティパラメータを有するアニメーションアップデートメッセージと、
出力値タイプパラメータ、アニメーション機能パラメータ、およびクロック制御パラメータを有するアニメーション作成メッセージと、
ターゲットアニメーションパラメータおよびアップデートされるプロパティパラメータを有するアニメーションアップデートメッセージと、
アニメーションパラメータのリストを有するアニメーションコレクション作成メッセージと、
ターゲットアニメーションコレクションパラメータおよびパラメータを追加するためのアニメーションを有するコレクションへのアニメーション追加メッセージと、
ターゲットアニメーションコレクションパラメータおよびパラメータを除去するためのアニメーションを有する、コレクションへのアニメーション除去メッセージと、
値タイプパラメータおよび初期値パラメータを有する静的値作成メッセージと、
ターゲット静的値オブジェクトパラメータおよび新規値パラメータを有する静的値アップデートパラメータとをさらに含むことを特徴とする請求項1に記載のアニメーションレンダリングシステム。
【請求項8】
アニメーションアプリケーションを処理する方法であって、
前記アニメーションアプリケーションから、上位アニメーションサブシステムへアニメーションデータを受信すること、
通信チャネルを介し、通信プロトコルに従って、前記上位アニメーションサブシステムから下位アニメーションサブシステムにアニメーション情報を送信し、そうすることによって、前記下位アニメーションサブシステムが、前記アニメーションデータに関連付けられたアニメーションを表示することができるようになることを備え、
前記通信プロトコルは、アニメーションの指定および前記アニメーションが特定の期間に渡ってどのように変化するべきかに関する命令を提供し、そうすることによって、前記下位アニメーションサブシステムは、前記アニメーションのいくつかのフレームを一定の表示フレームリフレッシュレートで処理することができ、前記上位アニメーションサブシステムは、可変リフレッシュレートで実行されることを特徴とする方法。
【請求項9】
前記上位アニメーションサブシステムが、前記下位アニメーションサブシステムから、前記下位アニメーションサブシステム内の少なくともタイミング要素と同期される前記上位アニメーションサブシステム内でのタイミング要素の保持を補助するための少なくとも1つのプロトコルメッセージを受信することをさらに備えることを特徴とする請求項8に記載の方法。
【請求項10】
前記通信プロトコルは、上位アニメーションサブシステムのタイミング要素から下位アニメーションサブシステムのタイミング要素に送られるメッセージ、すなわち
クロックを作成するためのメッセージと、
クロックプロパティをアップデートするためのメッセージと、
クロックに間隔を追加するためのメッセージと、
クロック用の全間隔を除去するためのメッセージと、
クロックを削除するためのメッセージとを含むことを特徴とする請求項8に記載の方法。
【請求項11】
前記通信プロトコルは、上位アニメーションサブシステムのタイミング要素から下位アニメーションサブシステムのタイミング要素に送られる、前記下位アニメーションサブシステム内の同期スリップ値をリセットするためのメッセージをさらに含むことを特徴とする請求項10に記載の方法。
【請求項12】
前記通信プロトコルは、上位アニメーションサブシステムのアニメーションオブジェクト要素から下位アニメーションサブシステムのアニメーションオブジェクト要素に送られるメッセージ、すなわち
アニメーションを作成するためのメッセージと、
アニメーションをアップデートするためのメッセージと、
アニメーションコレクションを作成するためのメッセージと、
アニメーションコレクションにアニメーションを追加するためのメッセージと、
アニメーションコレクションからアニメーションを除去するためのメッセージとを含むことを特徴とする請求項8に記載の方法。
【請求項13】
前記通信プロトコルは、上位アニメーションサブシステムのアニメーションオブジェクト要素から下位アニメーションサブシステムのアニメーションオブジェクト要素に送られるメッセージ、すなわち
静的表示値を作成するためのメッセージと、
静的表示値をアップデートするためのメッセージとを含むことを特徴とする請求項8に記載の方法。
【請求項14】
アプリケーションからアニメーション情報を受信するように構成された上位アニメーションサブシステムと、
前記アニメーション情報に従って、1つまたは複数のアニメーションをレンダリングするように構成された下位アニメーションサブシステムと、
前記下位アニメーションサブシステム内で1つまたは複数の下位クロックを監視し、前記下位クロックを1つまたは複数の上位クロックと同期させるように構成された下位タイミングエンジンと、
1つまたは複数の上位アニメーションオブジェクトに従って、前記上位アニメーションサブシステム内の1つまたは複数の上位クロックを監視し、前記下位タイミングエンジンにアニメーションメッセージを送信するように構成された上位タイミングエンジンであって、前記アニメーションメッセージは、通信プロトコルに準拠する上位タイミングエンジンとを備え、
前記上位タイミングエンジンから前記下位タイミングエンジンに送信される前記アニメーションメッセージは、1つまたは複数のアニメーションオブジェクト、および前記アニメーションオブジェクトが指示された期間に渡ってどのように変化することになるかを指定することを特徴とするシステム。
【請求項15】
前記下位タイミングエンジンは、前記上位クロック、および前記上位クロックが、前記上位クロックに対応する下位クロックとの同期を維持するためにスリップしなければならない量を識別する「メディアスリップとの同期」メッセージを送ることによって、下位クロックを上位クロックと同期させることを特徴とする請求項14に記載のシステム。
【請求項16】
前記通信プロトコルは、
クロックプロパティを識別するクロック作成メッセージと、
アップデートされるクロックプロパティを識別するプロパティアップデートメッセージと、
クロックプロパティにタイミング間隔を追加する間隔追加メッセージと、
クロックプロパティからタイミング間隔を除去する間隔除去メッセージと、
クロックを削除するクロック削除メッセージとをさらに含むことを特徴とする請求項14に記載のシステム。
【請求項17】
前記通信プロトコルは、
アニメーションを作成するアニメーション作成メッセージと、
既存のアニメーションをアップデートするアニメーションアップデートメッセージと、
グループ化されるべき多数のアニメーションを識別するアニメーションコレクション作成と、
識別されるアニメーションコレクションに追加するべきアニメーションを識別するコレクションへのアニメーション追加メッセージと、
識別されるアニメーションコレクションから除去するべきアニメーションを識別するコレクションへのアニメーション除去メッセージとをさらに含むことを特徴とする請求項14に記載のシステム。
【請求項18】
前記通信プロトコルは、
表示するための値タイプおよび初期値を識別する静的値作成メッセージと、
アップデートするべき静的値および前記静的値用の新規値を識別する静的値アップデートメッセージとをさらに含むことを特徴とする請求項14に記載のシステム。
【請求項19】
前記下位タイミングエンジンは、前記通信プロトコルに従って、前記上位タイミングエンジンに、上位クロックと、前記上位クロックを下位クロックと同期させるために、前記上位クロックがどれだけ変更されるべきかという測度とを識別する同期メッセージを送るように構成されることを特徴とする請求項14に記載のシステム。
【請求項20】
少なくとも1つの下位アニメーションオブジェクトと、
通信プロトコルメッセージを介して、前記下位アニメーションオブジェクトを、前記上位アニメーションオブジェクトを反映するように作成しアップデートするために、前記下位アニメーションオブジェクトと通信するように構成された少なくとも1つの上位アニメーションオブジェクトとをさらに備えることを特徴とする請求項14に記載のシステム。
【請求項21】
1つまたは複数の上位クロックと、
前記1つまたは複数の上位クロックを追跡するように構成された上位タイミングエンジンと、
アニメーションの少なくとも一部分を識別する1つまたは複数のアニメーションオブジェクトと、
通信プロトコルに含まれるメッセージに従って、下位アニメーションサブシステムにアニメーションデータを送信する手段とを備え、
前記下位アニメーションサブシステムに送信される前記通信プロトコルメッセージは、前記下位アニメーションサブシステム内の前記アニメーションオブジェクトの少なくとも1つを識別し、前記識別されたアニメーションオブジェクトが、指示された期間に渡ってどのように変化するべきかに関するデータを提供することを特徴とするアニメーションレンダリングシステムにおける上位アニメーションサブシステム。
【請求項22】
前記通信プロトコルは、
初期クロックプロパティを識別するクロック作成メッセージと、
アップデートされるクロックプロパティを識別するプロパティアップデートメッセージと、
クロックに追加されるべき間隔を識別する間隔追加メッセージと、
全間隔が除去されるべきクロックを識別する全間隔除去メッセージと、
削除されるべきクロックを識別するクロック削除メッセージとをさらに含むことを特徴とする請求項21に記載の上位アニメーションサブシステム。
【請求項23】
前記通信プロトコルは、
作成するべきアニメーションを記述するアニメーション作成メッセージと、
アップデートするべきアニメーションおよびアップデートされるプロパティを識別するアニメーションアップデートメッセージとをさらに含むことを特徴とする請求項21に記載の上位アニメーションサブシステム。
【請求項24】
前記通信プロトコルは、
1つのアニメーションコレクションとしてグループ化されるべき多数のアニメーションを識別するアニメーションコレクション作成メッセージと、
識別されたアニメーションコレクションに追加されるべきアニメーションを識別するコレクションへのアニメーション追加メッセージと、
識別されたアニメーションコレクションから除去されるべきアニメーションを識別するコレクションからのアニメーション除去メッセージとをさらに含むことを特徴とする請求項21に記載の上位アニメーションサブシステム。
【請求項25】
前記通信プロトコルは、
レンダリングするべき値タイプおよび初期値を識別する静的値作成メッセージと、
アップデートするべき静的値および前記静的値用の新規値を識別する静的値アップデートメッセージとをさらに含むことを特徴とする請求項21に記載の上位アニメーションサブシステム。
【請求項26】
1つまたは複数の下位クロックと、
アニメーションの少なくとも一部分を識別する1つまたは複数の下位アニメーションオブジェクトと、
前記1つまたは複数の下位アニメーションオブジェクトに関する前記1つまたは複数の下位クロックを追跡するように構成された下位タイミングエンジンとを備え、
前記下位クロックおよび前記下位アニメーションオブジェクトは、上位アニメーションサブシステムから、可変レートで受信される通信プロトコルメッセージを介して、前記下位アニメーションサブシステムに、一定の高表示フレームリフレッシュレートで表示することができるアニメーションデータのいくつかのフレームを提供するように作成されアップデートされることを特徴とするアニメーションレンダリングシステム内の下位アニメーションサブシステム。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4a】
image rotate

【図4b】
image rotate

【図4c】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公表番号】特表2007−519072(P2007−519072A)
【公表日】平成19年7月12日(2007.7.12)
【国際特許分類】
【出願番号】特願2006−536565(P2006−536565)
【出願日】平成16年7月22日(2004.7.22)
【国際出願番号】PCT/US2004/023626
【国際公開番号】WO2005/045567
【国際公開日】平成17年5月19日(2005.5.19)
【出願人】(500046438)マイクロソフト コーポレーション (3,165)
【Fターム(参考)】