(57)【要約】  上位アニメーションシステムと下位アニメーションシステムの間でのデータの非同期交換を司る通信プロトコルを記載する。上位アニメーションシステムは、可変中波フレームレートを有し、対話性向けに最適化される。下位アニメーションシステムは、一定の高周波フレームレートを有し、高リフレッシュフレームレート向けに最適化される。通信プロトコルは、上位アニメーションシステムによって、下位アニメーションシステムに送ることができる、アニメーションを指定し、アニメーションが、指示された期間に渡ってどのように変化することになるかを指定するためのメッセージを含む。その結果、上位システムからすべてのフレームに対してアニメーションデータが受信されなくても、下位システムは、高リフレッシュレートでアニメーションを表示することができる。【特許請求の範囲】
【請求項１】
アニメーションレンダリングシステムであって、
前記システム用の対話機能を操作する上位アニメーションサブシステムと、
前記システム用の表示機能を操作する下位アニメーションサブシステムと、
上位アニメーション動作によって参照される少なくとも１つの上位クロックと、
下位アニメーション動作によって参照される少なくとも１つの下位クロックと、
通信プロトコルに従って、前記上位アニメーションサブシステムと前記下位アニメーションサブシステムの間でメッセージを送る通信チャネルとを備え、
前記通信プロトコルは、アニメーションを指定し、前記アニメーションが指示された期間に渡ってどのように変化するべきかを指定する、前記上位アニメーションサブシステムによって前記下位アニメーションサブシステムに提供される情報を含み、そうすることによって、前記下位アニメーションシステムが、前記アニメーションのいくつかのフレームを処理するための情報を確実に有するようにすることを特徴とするアニメーションレンダリングシステム。
【請求項２】
前記上位アニメーションサブシステムと前記下位アニメーションサブシステムの間の前記通信は、非同期であることを特徴とする請求項１に記載のアニメーションレンダリングシステム。
【請求項３】
前記下位アニメーションサブシステムは、アニメーションを一定の表示フレームリフレッシュレートでレンダリングし、
前記上位アニメーションサブシステムは、前記一定の表示フレームリフレッシュレートより遅い可変レートで相互作用を操作することを特徴とする請求項１に記載のアニメーションレンダリングシステム。
【請求項４】
前記通信プロトコルは、前記下位アニメーションサブシステムから前記上位アニメーションサブシステムに送られる、前記上位アニメーションサブシステムと前記下位アニメーションサブシステムの間の同期を操作するための少なくとも１つのメッセージをさらに備えることを特徴とする請求項１に記載のアニメーションレンダリングシステム。
【請求項５】
前記下位アニメーションサブシステムから前記上位アニメーションサブシステムに送られる１つのメッセージは、アニメーションに関連付けられたターゲットクロックと、前記上位アニメーションサブシステムを、前記下位アニメーションサブシステムによって実行される前記アニメーションと同期させるために、前記ターゲットクロックがスリップしなければならない量とを識別する「メディアスリップとの同期」メッセージをさらに備えることを特徴とする請求項４に記載のアニメーションレンダリングシステム。
【請求項６】
前記上位アニメーションサブシステムは、上位タイミングエンジンをさらに含み、
前記下位アニメーションサブシステムは、下位タイミングエンジンをさらに含み、
前記通信プロトコルは、前記上位タイミングエンジンから前記下位タイミングエンジンに送られるパラメータ化されたメッセージ、すなわち
初期クロックプロパティパラメータを有するクロック作成メッセージと、
ターゲットクロックパラメータおよびアップデートされるプロパティパラメータを有するプロパティアップデートメッセージと、
ターゲットクロックパラメータおよび間隔プロパティパラメータを有する間隔追加メッセージと、
ターゲットクロックパラメータを有する同期スリップリセットメッセージと、
ターゲットクロックパラメータを有する全間隔除去メッセージと、
パラメータを削除するためのターゲットクロックを有するクロック削除メッセージとをさらに含むことを特徴とする請求項１に記載のアニメーションレンダリングシステム。
【請求項７】
前記上位アニメーションサブシステムは、上位アニメーションオブジェクトデータベースをさらに含み、
前記下位アニメーションサブシステムは、下位アニメーションオブジェクトデータベースをさらに含み、
前記通信プロトコルは、前記上位アニメーションオブジェクトデータベースから前記下位アニメーションオブジェクトデータベースに送られる、パラメータ化されたメッセージ、すなわち
出力値タイプパラメータ、アニメーション機能パラメータ、およびクロック制御パラメータを有するアニメーション作成メッセージと、
ターゲットアニメーションパラメータおよびアップデートされるプロパティパラメータを有するアニメーションアップデートメッセージと、
出力値タイプパラメータ、アニメーション機能パラメータ、およびクロック制御パラメータを有するアニメーション作成メッセージと、
ターゲットアニメーションパラメータおよびアップデートされるプロパティパラメータを有するアニメーションアップデートメッセージと、
アニメーションパラメータのリストを有するアニメーションコレクション作成メッセージと、
ターゲットアニメーションコレクションパラメータおよびパラメータを追加するためのアニメーションを有するコレクションへのアニメーション追加メッセージと、
ターゲットアニメーションコレクションパラメータおよびパラメータを除去するためのアニメーションを有する、コレクションへのアニメーション除去メッセージと、
値タイプパラメータおよび初期値パラメータを有する静的値作成メッセージと、
ターゲット静的値オブジェクトパラメータおよび新規値パラメータを有する静的値アップデートパラメータとをさらに含むことを特徴とする請求項１に記載のアニメーションレンダリングシステム。
【請求項８】
アニメーションアプリケーションを処理する方法であって、
前記アニメーションアプリケーションから、上位アニメーションサブシステムへアニメーションデータを受信すること、
通信チャネルを介し、通信プロトコルに従って、前記上位アニメーションサブシステムから下位アニメーションサブシステムにアニメーション情報を送信し、そうすることによって、前記下位アニメーションサブシステムが、前記アニメーションデータに関連付けられたアニメーションを表示することができるようになることを備え、
前記通信プロトコルは、アニメーションの指定および前記アニメーションが特定の期間に渡ってどのように変化するべきかに関する命令を提供し、そうすることによって、前記下位アニメーションサブシステムは、前記アニメーションのいくつかのフレームを一定の表示フレームリフレッシュレートで処理することができ、前記上位アニメーションサブシステムは、可変リフレッシュレートで実行されることを特徴とする方法。
【請求項９】
前記上位アニメーションサブシステムが、前記下位アニメーションサブシステムから、前記下位アニメーションサブシステム内の少なくともタイミング要素と同期される前記上位アニメーションサブシステム内でのタイミング要素の保持を補助するための少なくとも１つのプロトコルメッセージを受信することをさらに備えることを特徴とする請求項８に記載の方法。
【請求項１０】
前記通信プロトコルは、上位アニメーションサブシステムのタイミング要素から下位アニメーションサブシステムのタイミング要素に送られるメッセージ、すなわち
クロックを作成するためのメッセージと、
クロックプロパティをアップデートするためのメッセージと、
クロックに間隔を追加するためのメッセージと、
クロック用の全間隔を除去するためのメッセージと、
クロックを削除するためのメッセージとを含むことを特徴とする請求項８に記載の方法。
【請求項１１】
前記通信プロトコルは、上位アニメーションサブシステムのタイミング要素から下位アニメーションサブシステムのタイミング要素に送られる、前記下位アニメーションサブシステム内の同期スリップ値をリセットするためのメッセージをさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記通信プロトコルは、上位アニメーションサブシステムのアニメーションオブジェクト要素から下位アニメーションサブシステムのアニメーションオブジェクト要素に送られるメッセージ、すなわち
アニメーションを作成するためのメッセージと、
アニメーションをアップデートするためのメッセージと、
アニメーションコレクションを作成するためのメッセージと、
アニメーションコレクションにアニメーションを追加するためのメッセージと、
アニメーションコレクションからアニメーションを除去するためのメッセージとを含むことを特徴とする請求項８に記載の方法。
【請求項１３】
前記通信プロトコルは、上位アニメーションサブシステムのアニメーションオブジェクト要素から下位アニメーションサブシステムのアニメーションオブジェクト要素に送られるメッセージ、すなわち
静的表示値を作成するためのメッセージと、
静的表示値をアップデートするためのメッセージとを含むことを特徴とする請求項８に記載の方法。
【請求項１４】
アプリケーションからアニメーション情報を受信するように構成された上位アニメーションサブシステムと、
前記アニメーション情報に従って、１つまたは複数のアニメーションをレンダリングするように構成された下位アニメーションサブシステムと、
前記下位アニメーションサブシステム内で１つまたは複数の下位クロックを監視し、前記下位クロックを１つまたは複数の上位クロックと同期させるように構成された下位タイミングエンジンと、
１つまたは複数の上位アニメーションオブジェクトに従って、前記上位アニメーションサブシステム内の１つまたは複数の上位クロックを監視し、前記下位タイミングエンジンにアニメーションメッセージを送信するように構成された上位タイミングエンジンであって、前記アニメーションメッセージは、通信プロトコルに準拠する上位タイミングエンジンとを備え、
前記上位タイミングエンジンから前記下位タイミングエンジンに送信される前記アニメーションメッセージは、１つまたは複数のアニメーションオブジェクト、および前記アニメーションオブジェクトが指示された期間に渡ってどのように変化することになるかを指定することを特徴とするシステム。
【請求項１５】
前記下位タイミングエンジンは、前記上位クロック、および前記上位クロックが、前記上位クロックに対応する下位クロックとの同期を維持するためにスリップしなければならない量を識別する「メディアスリップとの同期」メッセージを送ることによって、下位クロックを上位クロックと同期させることを特徴とする請求項１４に記載のシステム。
【請求項１６】
前記通信プロトコルは、
クロックプロパティを識別するクロック作成メッセージと、
アップデートされるクロックプロパティを識別するプロパティアップデートメッセージと、
クロックプロパティにタイミング間隔を追加する間隔追加メッセージと、
クロックプロパティからタイミング間隔を除去する間隔除去メッセージと、
クロックを削除するクロック削除メッセージとをさらに含むことを特徴とする請求項１４に記載のシステム。
【請求項１７】
前記通信プロトコルは、
アニメーションを作成するアニメーション作成メッセージと、
既存のアニメーションをアップデートするアニメーションアップデートメッセージと、
グループ化されるべき多数のアニメーションを識別するアニメーションコレクション作成と、
識別されるアニメーションコレクションに追加するべきアニメーションを識別するコレクションへのアニメーション追加メッセージと、
識別されるアニメーションコレクションから除去するべきアニメーションを識別するコレクションへのアニメーション除去メッセージとをさらに含むことを特徴とする請求項１４に記載のシステム。
【請求項１８】
前記通信プロトコルは、
表示するための値タイプおよび初期値を識別する静的値作成メッセージと、
アップデートするべき静的値および前記静的値用の新規値を識別する静的値アップデートメッセージとをさらに含むことを特徴とする請求項１４に記載のシステム。
【請求項１９】
前記下位タイミングエンジンは、前記通信プロトコルに従って、前記上位タイミングエンジンに、上位クロックと、前記上位クロックを下位クロックと同期させるために、前記上位クロックがどれだけ変更されるべきかという測度とを識別する同期メッセージを送るように構成されることを特徴とする請求項１４に記載のシステム。
【請求項２０】
少なくとも１つの下位アニメーションオブジェクトと、
通信プロトコルメッセージを介して、前記下位アニメーションオブジェクトを、前記上位アニメーションオブジェクトを反映するように作成しアップデートするために、前記下位アニメーションオブジェクトと通信するように構成された少なくとも１つの上位アニメーションオブジェクトとをさらに備えることを特徴とする請求項１４に記載のシステム。
【請求項２１】
１つまたは複数の上位クロックと、
前記１つまたは複数の上位クロックを追跡するように構成された上位タイミングエンジンと、
アニメーションの少なくとも一部分を識別する１つまたは複数のアニメーションオブジェクトと、
通信プロトコルに含まれるメッセージに従って、下位アニメーションサブシステムにアニメーションデータを送信する手段とを備え、
前記下位アニメーションサブシステムに送信される前記通信プロトコルメッセージは、前記下位アニメーションサブシステム内の前記アニメーションオブジェクトの少なくとも１つを識別し、前記識別されたアニメーションオブジェクトが、指示された期間に渡ってどのように変化するべきかに関するデータを提供することを特徴とするアニメーションレンダリングシステムにおける上位アニメーションサブシステム。
【請求項２２】
前記通信プロトコルは、
初期クロックプロパティを識別するクロック作成メッセージと、
アップデートされるクロックプロパティを識別するプロパティアップデートメッセージと、
クロックに追加されるべき間隔を識別する間隔追加メッセージと、
全間隔が除去されるべきクロックを識別する全間隔除去メッセージと、
削除されるべきクロックを識別するクロック削除メッセージとをさらに含むことを特徴とする請求項２１に記載の上位アニメーションサブシステム。
【請求項２３】
前記通信プロトコルは、
作成するべきアニメーションを記述するアニメーション作成メッセージと、
アップデートするべきアニメーションおよびアップデートされるプロパティを識別するアニメーションアップデートメッセージとをさらに含むことを特徴とする請求項２１に記載の上位アニメーションサブシステム。
【請求項２４】
前記通信プロトコルは、
１つのアニメーションコレクションとしてグループ化されるべき多数のアニメーションを識別するアニメーションコレクション作成メッセージと、
識別されたアニメーションコレクションに追加されるべきアニメーションを識別するコレクションへのアニメーション追加メッセージと、
識別されたアニメーションコレクションから除去されるべきアニメーションを識別するコレクションからのアニメーション除去メッセージとをさらに含むことを特徴とする請求項２１に記載の上位アニメーションサブシステム。
【請求項２５】
前記通信プロトコルは、
レンダリングするべき値タイプおよび初期値を識別する静的値作成メッセージと、
アップデートするべき静的値および前記静的値用の新規値を識別する静的値アップデートメッセージとをさらに含むことを特徴とする請求項２１に記載の上位アニメーションサブシステム。
【請求項２６】
１つまたは複数の下位クロックと、
アニメーションの少なくとも一部分を識別する１つまたは複数の下位アニメーションオブジェクトと、
前記１つまたは複数の下位アニメーションオブジェクトに関する前記１つまたは複数の下位クロックを追跡するように構成された下位タイミングエンジンとを備え、
前記下位クロックおよび前記下位アニメーションオブジェクトは、上位アニメーションサブシステムから、可変レートで受信される通信プロトコルメッセージを介して、前記下位アニメーションサブシステムに、一定の高表示フレームリフレッシュレートで表示することができるアニメーションデータのいくつかのフレームを提供するように作成されアップデートされることを特徴とするアニメーションレンダリングシステム内の下位アニメーションサブシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載するシステムおよび方法は概して、アニメーションシステムに関し、より詳細には、多数のアニメーションシステムの間でデータとクロックの同期を維持する通信プロトコルに関する。
【背景技術】
【０００２】
ビデオゲーム、ネットワークウェブサイト、マルチメディアプレゼンテーションなどに関連するかどうかに関わらず、グラフィックスの質に関するユーザの期待は近年、大幅に高まっている。したがって、この高度の期待により、ビデオ／アニメーションシステムおよびアプリケーション開発者に対する挑戦課題がますます高まっている。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
対話型アニメーションアプリケーションには、特に検討すべきことがある。というのは、２つのアニメーションシステム（たとえば、ローカルまたはリモートメモリに格納されたアプリケーションおよび表示デバイスシステム）が、良質のユーザ経験を提供するように、互いと通信しなければならないからである。この場合、一方のアニメーションシステム（すなわち、メモリに格納されたアプリケーション）は、ほとんどユーザの対話性に携わり、他方のアニメーションシステム（すなわち、表示デバイスシステム）は、主にリフレッシュレートなどのレンダリング側面に携わるので、問題が存在する。こうした対象の競合は、所望のユーザ経験を提供するように調整されなければならない。
【課題を解決するための手段】
【０００４】
別個の２つのアニメーションシステムを含むシステムおよび方法を記載する。上位アニメーションシステム（たとえば、アプリケーション）が、主に対話性および複合タイミング構造に携わり、したがって、高い対話性のために最適化される。下位アニメーションシステム（たとえば、表示デバイス）が、主にレンダリングのリフレッシュレートに携わり、したがって、高リフレッシュフレームレートのために最適化される。別個の多数のアニメーションシステムの提供により、アニメーションは、対話性に不利益をもたらすことなく、予め定義された表示リフレッシュレートで実行されることが可能になり、その逆も可能である。
【０００５】
２つのアニメーションシステムは、非同期に実行され、そうすることによって、各システムは、それ自体のタイミング構造において、その主たる機能により集中することができる。ユーザ経験を最適化するために、２つのアニメーションシステムが同期されなければならない。本明細書に記載する同期プロセスにおいて、上位アニメーションシステムおよび下位アニメーションシステムは、この目的のために具体的に指定される通信プロトコルを使用してデータ（たとえば、クロックデータ、アニメーション機能データなど）を交換する。
【０００６】
本明細書において採用する通信プロトコルは、要求されるデータの効率的な交換方法を提供する。各フレーム用に大量のデータを送るのではなく、本通信プロトコルは、アニメーションが指示された期間に渡ってどのように変化すると仮定されるかについて、わずか少量のデータを送る。システムオーバーヘッドの抑制に加え、プロトコルは、下位アニメーションシステムがアニメーションのいくつかのフレームを確実に処理するための情報を有するようにし、その結果、どのレンダリングフレームも、リフレッシュデータの欠如のせいでドロップされることがなくなる。
【０００７】
以下の詳細な説明を、添付の図面と併せ見て参照することによって、本発明の例示的な方法および構成をより完全に理解することができよう。
【発明を実施するための最良の形態】
【０００８】
以下の説明では、概して、アニメーションの生成およびレンダリングにおいて使用される伝送を司る通信プロトコルを用いてアニメーションを生成しレンダリングするコンピュータシステム（すなわち、時間の経過に伴ってグラフィカルオブジェクトを修正する機能）を取り上げる。グラフィカルオブジェクトは、ウィンドウ、ダイアログボックスなどを備え得る。本明細書で使用する「コンピュータシステム」という用語は、１台のコンピュータも、連動する多数のコンピュータも意味し得る。コンピュータシステムは、別個の多数のアニメーション／レンダリングシステム、すなわちそれぞれが特定のアニメーションまたはレンダリング機能を担当するサブシステムを含む。
【０００９】
以降の説明では、２つのアニメーションシステムまたはサブシステムという状況において、通信プロトコルを記載する。ただし、こうしたシステムは例に過ぎず、通信プロトコルは、２つより多い別個のアニメーションシステムまたはサブシステムでも用いることができることに留意されたい。
【００１０】
「レンダリング」という用語は、本明細書において採用する通信プロトコルの説明において使用する。「レンダリング」は、表示用のアニメーションを定義し、かつ／またはアニメーションを表示するアニメーションプロセスにおけるステップと見なすことができる。「レンダリングシステム」は、レンダリング機能を含むシステムでよい。このシステムは、狭義には、レンダリング機能のみを実施するシステムを表すように定義することもでき、広義には、１つまたは複数のレンダリング機能に加えて、アニメーションシステムなど他の機能を実施するシステムを表すように定義することもできる。
【００１１】
同様に、本明細書で使用する「アニメーションシステム」という用語は、アニメーション機能を含むシステムを指す。「アニメーションシステム」は、アニメーション機能のみを実施するシステムでも、他の機能に加えて、レンダリング機能など１つまたは複数のアニメーション機能を実施するシステムでもよい。
【００１２】
特定の用語、すなわち「レンダリングシステム」または「アニメーションシステム」の使用は、アーキテクチャおよび／またはそれに関連付けられた機能の範囲の限定を意味するわけではない。使用される用語の適正な範囲は、用語が使われる状況から導き出すことができる。
【００１３】
フル機能のアニメーションシステムが、複合タイミング構造を含み、この構造において、各アニメーションを、個別のクロックによって駆動することができ、クロックは、アプリケーション開発者によって指定された任意の１組の規則によって関連付けられる。たとえば、あるアニメーション（Ａ）を、異なるアニメーション（Ｂ）が終了するのと全く同時に開始するように指定することもでき、アニメーションのグループを、その通常速度の半分で実行されるように指定することもできる。より一般的な意味において、このようなシステムは、クロックを線形メディアの各々と関連付けることによって、オーディオおよびビデオなど、他のタイプの線形メディアとのアニメーションの同期を操作することもできる。
【００１４】
さらに、クロックは、いつでも開始し、一時停止し、停止することができるという点で対話性があり、そうした対話性は、同期規則によって記されるように、タイミング階層全体に渡って伝播する変化を起こし得る。前述の例に従って、アニメーション（Ｂ）が一時停止され、５秒遅れて再開されると、アニメーション（Ａ）は、当初計画されたよりも５秒遅れて開始する。こうすることにより、他のクロックにおいて、タイミング構造全体に伝播する可能性があるタイミング変化が起こり得る。
【００１５】
タイミング構造に対する変化の計算は、高価な際限のない動作なので、この動作は、予測可能なフレームレートを満たすという狙いがあるリアルタイムのレンダリングシステムには適さない。こうした２つの目標（フル機能のアニメーションシステムの提供および予測可能なフレームレートの維持）は、相反するものである。１つの解決策は、システムを２つの部分に分割することである。すなわち、クロックの間の同期規則について知っている一方の部分、および各クロックを、完全に独立したエンティティと見なすもう一方の部分である。
【００１６】
本明細書において権利請求する通信プロトコルは、別個の２つのアニメーションシステムの同期を維持し、そうすることによって、アニメーションは、対話性に不利益をもたらすことなく、高い表示リフレッシュレートで実行することができ、その逆も可能である。
【００１７】
本明細書に記載するアニメーションシステムは、少なくとも２つのコンポーネント、すなわち、対話性および複合タイミング構造に主に携わる上位アニメーションサブシステムと、一定の高い表示リフレッシュレートでの、ディスプレイへの１つまたは複数のアニメーションのレンダリングに主に携わる下位アニメーションサブシステムとを含む。「上位」という用語は、このアニメーションシステムがユーザにより近いということを指し、「下位」アニメーションシステムは、金属（またはマシン）により近い。
【００１８】
上位アニメーションサブシステムの一例が、アプリケーション自体またはユーザから受信されるデータに従ってアニメーションを制御するアプリケーションである。下位アニメーションサブシステムの例が、アニメーションデータの、物理的に表示されるアニメーションへのコンバートを制御する表示デバイスシステムである。表示デバイスシステムは、ビデオカードハードウェア（明示的には示さない）上、またはビデオカード上に物理的に常駐しないコンポーネント内に含めることができるハードウェアコンポーネントならびにソフトウェアコンポーネントを含む。
【００１９】
本説明において、表示デバイスを、表示システムあるいはアニメーションシステムまたはサブシステムとして参照する場合がある。ただし、表示システムのコンポーネントおよび処理すべてが、必ずしも表示デバイス上に物理的に常駐するわけではないことに留意されたい。本明細書で使用する「表示デバイス」という用語は、ディスプレイおよびどの種類の表示メモリも制御するプロセッサ動作も包含する。
【００２０】
通常、アニメーションプロセスは、上位アニメーションサブシステムおよび下位アニメーションサブシステム（単一のアニメーションシステムを使用する）両方を含む１台のマシン上のプロセス中で実行されるものと思われる。ただし、本明細書に記載する、別個の２つのアニメーションシステム用の通信プロトコルは、（１）単一のプロセス中の２つのスレッドとして、（２）１台のマシン上の別個の２つのプロセスとして、または（３）クライアント−サーバアーキテクチャでのように、ネットワークによって分けられる別個の２つのマシン上で、実行される上位および下位アニメーションサブシステムを想定する。
【００２１】
例示的なサーバ−クライアントシステム
図１は、本明細書に記載するシステムおよび方法による、例示的なサーバ−クライアントシステム１００のブロック図である。サーバ−クライアントシステム１００は、インターネットなどのネットワーク１０６を介して通信するサーバ１０２およびクライアント１０４を含む。
【００２２】
サーバ１０２は、メモリ１０８、プロセッサ１１０、ネットワーク１０６を介した通信を制御するネットワークインターフェイスカード１１２、および一般に、サーバが標準サーバ機能を実施するために要求される他の種々のハードウェア１１４を含む。メモリ１１０は、オペレーティングシステム１１６およびサーバ機能を提供する種々のソフトウェアコンポーネント１１８を含む。
【００２３】
アプリケーション１２０も、メモリ１０８に格納され、１つまたは複数のアニメーション機能を制御するコンピュータコードを組み込む上位アニメーションサブシステム１２２を含む。アニメーション機能は、ウィンドウ、ダイアログボックスなどがあり得るであろう。上位アニメーションサブシステム１２２は主に、対話性および複合タイミング構造を担当する。以降の説明に見られるように、アプリケーション１２０は、ユーザが書いたコンピュータコードおよびユーザコードが、１つまたは複数のアプリケーションプログラミングインターフェイス（ＡＰＩ）を介してアクセスする、ユーザコードから分離されたシステムコンピュータコードを含み得る。
【００２４】
クライアント１０４は、メモリ１３０、プロセッサ１３２、ネットワーク１０６との間の通信を制御するネットワークインターフェイスカード１３４、およびディスプレイ１３６を含む。クライアント１０４は、表示デバイス１３８ならびにクライアント１０４が適切に機能するために要求され得る種々のハードウェア１４０も含む。
【００２５】
メモリ１３０は、アクセスを提供しネットワーク１０６をナビゲートするように構成されたブラウザ１４２、およびクライアント１０４の基本的な機能性を制御するオペレーティングシステム１４４を格納する。種々のソフトウェアコンポーネント１４６も、メモリ１３０に格納され、必要なクライアント１０４の機能性およびクライアントサービスを提供するソフトウェアを含む。
【００２６】
表示デバイス１３８は、表示デバイスメモリ（図示せず）、表示デバイスハードウェアコンポーネント（図示せず）、またはクライアント１０４に含まれるメモリ１３０に格納することができる下位アニメーションサブシステム１４８を含む。図１は、表示デバイス１３８コンポーネントの少なくとも一部分が、クライアント１０４のメインメモリ１３０に常駐し得ることを示す。下位アニメーションサブシステム１４８は、高リフレッシュフレームレート（最低リフレッシュレートは３０フレーム／秒）用のレンダリングターゲットを満たすことを主に担当する。高リフレッシュフレームレートの持続は、優れた結果をもたらし、アニメーションシステムの最終的なターゲットである視聴者にとって喜ばしいことである。
【００２７】
アニメーションのための高リフレッシュフレームレートの持続を阻止する２つの障害物は、（１）遅延時間および（２）帯域幅である。ネットワークを介してデータを送るとき、データは、世界のどこにでも向けることができるので、大幅な遅延時間を生じ得る。遅延時間の問題は、適切なメッセージおよびフィードバックが時間通りに届くのを妨げ、このことが、リフレッシュレートを損なわせ、ユーザ経験を低下させ得る。これは、単一のエンティティとして構成されたアニメーションシステムに関わる比較的大きな問題である。というのは、大量のデータを、アニメーションを制御するために定期的に送られなければならないからである。
【００２８】
帯域幅の問題は、単一のエンティティシステムにとってより大きな問題も提示する。複雑なアニメーションの場合、すべてのフレーム用の特定の境界（スレッド、プロセス、ネットワーク）を超えて、膨大な量のデータが送られなければならない。別個の２つのアニメーションサブシステムを含む、本明細書に記載するシステムを用いても、帯域幅の使用は、帯域幅を本質的に制限するモデムの使用、または莫大な数のクライアントにサービスを行っているサーバに関わる問題となり得る。サーバが、単純なアニメーション用の比較的少量のデータのみを送信する場合でも、そのデータが、たとえば４００のクライアントに対してサービスされなければならない場合、帯域幅の問題となり得る。
【００２９】
本明細書に記載するシステムおよび方法は、高リフレッシュレートを維持しながら帯域幅の使用を最小限に抑えるための、効率的なやり方を提供する。
【００３０】
例示的なアニメーションレンダリングシステムアーキテクチャ
図２は、本明細書に記載するシステムおよび方法による例示的なアニメーションレンダリングシステムアーキテクチャ２００のブロック図である。図２に示す要素のいくつかは、図１にも含まれる要素である。参照のために、両方の図に含まれる要素については、図１の要素に使われているのと同じ参照番号で図２に示す。
【００３１】
例示的なアーキテクチャ２００は、アプリケーション１２０および表示デバイス１３８を含む。アプリケーション１２０は、後でより詳細に論じる通信プロトコル２１６に従って、通信チャネル２０４を介して表示デバイス１３８と通信する。上述したように、通信チャネル２０４は、スレッド、プロセス、またはマシンの間の境界でよい境界を横切る。マシンの間の境界用には、たとえば、通信チャネル２０４は、上で示したネットワーク１０６でよい。
【００３２】
ユーザコード２０２は、ユーザコード２０２とともにアプリケーション１２８の特徴の使用を望む開発者によってアプリケーション１２０にアクセスを提供する１組のシステムＡＰＩであるＡＰＩ境界２０６を介して、アプリケーション１２０と一緒に機能する。
【００３３】
上述したように、アプリケーション１２０は、上位アニメーションサブシステム１２２を包含する。上位アニメーションサブシステム１２２は、上位グラフィックスコンポーネント２０８、上位アニメーションオブジェクトデータベース２１０、および上位タイミングエンジン２１２を含む。タイミングエンジン２１２は、上位アニメーションオブジェクトデータベース２１０に格納された１つまたは複数の上位クロック２１４を作成し制御する。
【００３４】
上位タイミングエンジン２１２は、上位クロック２１４のセットアップおよび同期に責任をもつ。したがって、たとえば、一緒に実行されると仮定される１０個のアニメーションがある場合、上位タイミングエンジン２１２は、アニメーションを同時に表示するように、１０個の上位クロック２１４を同期させる。
【００３５】
上位グラフィックスコンポーネント２０８は、アニメーションで使われる画像のタイプを格納する。上位アニメーションオブジェクトデータベース２１０は、１つまたは複数のアニメーション（および／または１つもしくは複数のメディアに関連付けられたメディアオブジェクト）に関連付けられたアニメーション値を格納する。アニメーション値は、少なくとも、アニメーションに関連付けられたタイムライン（すなわち、クロック）を含む。（本明細書で使用する「クロック」および「タイムライン」という用語は、入換可能であることに留意されたい）。アニメーション値は、上位クロック２１４の値に基づいて、アニメーションレンダリングの出力に影響を与える。各アニメーションは、上位グラフィックスコンポーネント２０８の１つまたは複数の側面を修正する。
【００３６】
たとえば、点Ｐ１から点Ｐ２までの線を作成する単純なアニメーションに対して、アニメーションオブジェクトデータベース２１０は、時間＝０におけるＰ１用の値および時間＝１におけるＰ２用の値を格納することになる。（Ｐ１とＰ２の間の全点が補間される）。
【００３７】
例示的なアニメーションレンダリングシステムアーキテクチャ２００の表示デバイス１３８は、図１に示す下位アニメーションサブシステム１４８を含む。下位アニメーションサブシステム１４８は、上位アニメーションサブシステム１２２と等価な構造であり、下位グラフィックスコンポーネント２１８、下位アニメーションオブジェクトデータベース２２０、および下位タイミングエンジン２２２を含む。タイミングエンジン２２２は、下位アニメーションオブジェクトデータベースに格納される１つまたは複数の下位クロック２２４を作成する。
【００３８】
下位アニメーションサブシステム１４８のコンポーネント（２１８〜２２４）は、上位アニメーションサブシステム１２２のコンポーネント（２０８〜２１４）と同様であり、その機能および相互運用性は、前述したものと同様である。
【００３９】
例示的なアニメーションレンダリングシステムアーキテクチャ２００のようなアーキテクチャ、すなわち、２つのサブシステムに分解されるアニメーションシステムを有するアーキテクチャには、利点がある。アプリケーションが高価であり、対話性に関してたくさんのオーバーヘッドを費やす場合、アニメーションは継続することができる。すなわち、アニメーションが継続し得る前に、対話部分が完了するのを待たなくてよい。非分解型システムにおいて、アプリケーションが、定期的にデータがアップデートされるディスプレイを提供しない場合、ディスプレイは、動画ではなく静止画像を描画することができる」。
【００４０】
この問題の一般例は、システムが情報を処理している間に表示される状況リボンインジケータを特徴とする。通常、インジケータは、たとえば、何らかの処理が進行中であることを指す、左から右の方向に進む。しかし、状況インジケータが止まり、ユーザには、システムがロックしてしまったのか、それともまだ何かを処理しているのか、わからないときがある。これは、アニメータの対話部分が、フレームレートリフレッシュを満たすように、アップデートされるデータを時間内にディスプレイ部分に提供しない結果である。
【００４１】
このようなシステムは、映像に対して特に貧弱である。映像の場合、単にシステムが別のタスク（マウスカーソルの移動のように些細なものであっても）の処置に忙しかったというだけでは、異常または乱れを生じる、フレームのドロップを起こしてはならない。
【００４２】
分解型アニメーションシステムでは、下位アニメーションサブシステム１４８は、上位アニメーションサブシステム１２２とは非同期に実行されるので、上位アニメーションサブシステム１２２が、フレームがリフレッシュされる前にフレームの再描画を妨げるタスクにかかりきりであったとしても、実行（すなわち、描画）し続ける。分解型アニメーションシステムは、したがって、アニメーション動作をシームレスに表示し、したがって、上質なユーザ経験を提供する。
【００４３】
例示的な方法の実装：基本動作
図３は、図１および図２に示す分解型アニメーション／レンダリングシステムの基本動作を示すフロー図である。以下の説明では、図１および２に示す要素および参照番号を引き続き参照していく。
【００４４】
分解型アニメーションシステム（すなわち、互いとは非同期に機能する、別個の少なくとも２つのアニメーションサブシステムに分解されるアニメーションシステム）において、ユーザ（アプリケーション）は、上位システムに、システムＡＰＩを介して、グラフィックスがどのようにディスプレイに現れると仮定されるかを告げる。上位システムは、特殊化された通信プロトコルを用いて、上位システムにおいてセットアップされた構造と同様の構造を作成するよう、下位システムに指示する。
【００４５】
上位システムは、下位システム内のいくつかの要素を作成するように構成されるので、図４を参照して後でより詳細に論じる通信プロトコルが、いくつかの「作成」メッセージまたはコマンドを含むということには必ずしも従わない。図３に示すフロー図は、上位アニメーションサブシステム１２２が下位アニメーションサブシステム１４８と通信して、その中で構造をセットアップするときに起こるいくつかの基本的なステップをカバーする。
【００４６】
ブロック３００で、上位アニメーションサブシステム１２２は、下位アニメーションサブシステム１４８内にアニメーションオブジェクト２２０を作成するためのメッセージを送る。上位アニメーションサブシステム１２２は次いで、下位アニメーションサブシステム１４８と通信して、作成されたばかりのアニメーションオブジェクト２２０とともに含めるためのクロック２２４（すなわち、タイムライン）を作成する（ブロック３０２）。
【００４７】
アニメーションオブジェクトとタイムラインの間は、必ずしも１：１の割合ではないことに留意されたい。言い換えると、１つのタイムラインが、複数のアニメーションオブジェクトを制御し得る。したがって、ブロック３０２に対して上述したステップで、タイムラインは、他のタイムラインが既に存在する場合、および新規作成されたアニメーションオブジェクトを既存のタイムラインに関連付けることができる場合、作成される必要がない場合がある。
【００４８】
この時点で、アプリケーション１２０は、別のアニメーションオブジェクトを作成することも、既存のアニメーションを修正することもできる。アプリケーション１２０が、別のアニメーションオブジェクトを作成するように構成される場合（ブロック３０４の「アニメーションオブジェクト」分岐）、上位アニメーションサブシステム１２２は、ブロック３００で、下位アニメーションサブシステム１３８に、別のアニメーションオブジェクト２２０を作成するための通信プロトコルメッセージを送る。上位アニメーションサブシステム１２２は次いで、ブロック３０２で、新規作成されたアニメーションオブジェクト２２０にタイムラインを関連付けるためのメッセージを送る。タイムラインについては、作成してもよく、既存のタイムラインでもよい。
【００４９】
アプリケーション１２０は、修正をサポートするようにも構成される。上位アニメーションサブシステム１２２は、アニメーションオブジェクト２２０および／またはそれに関連付けられたタイムラインを修正するためのメッセージを送ることができる（ブロック３０４の「修正」分岐）。アニメーションの側面を修正する明快な修正に加え、「一時停止」動作および「停止」動作も修正である。「一時停止」動作を、一般的な修正の観点でコーディングすることができ、たとえば、「時間０で、クロックは１０であり、時間１０で、クロックは１０である」。「停止」動作は、「アニメーション除去」メッセージで開始される。
【００５０】
修正が、「アニメーション除去」メッセージである場合（ブロック３０６の「ｙｅｓ」分岐、アニメーションは、ブロック３０８で中断される。それ以外の場合（ブロック３０６の「ｎｏ」分岐）、上位アニメーションシステム１２２は、既存のアニメーションを修正するように構成された１つまたは複数のメッセージを送る（ブロック３１０）。既存のアニメーションの修正は、既存のアニメーションに関連付けられたタイムラインの修正も意味し得る。
【００５１】
上述したように、上記フロー図は、上位アニメーションサブシステム１２２から通信プロトコルメッセージを送ることによって、下位アニメーションサブシステム１４８を構成する全般的な方法を示す。通信プロトコルを使用する、より具体的な少なくとも１つの方法の実装について、通信プロトコルの詳細を論じた後で、より詳細に論じる。
【００５２】
通信プロトコル
図４ａ、４ｂおよび４ｃは、上位アニメーションシステムと下位アニメーションシステムの間の伝送を司る際に使用するための通信プロトコルのメッセージ／コマンドを概説するテーブルである。以下の説明では、図１および２に示す要素および参照番号を引き続き参照していく。
【００５３】
図４ａは、上位タイミングエンジン２１２から下位タイミングエンジン２２２に送られるメッセージを記述するテーブル４００を示す。「クロック作成」メッセージ４０２が、下位タイミングエンジン２２２に、アニメーション用のクロックを作成させる。「クロック作成」メッセージ４０２は、初期クロックプロパティである「クロック作成パラメータ」４０４を含む。クロックプロパティは、（開始時間からの）持続期間、（このクロックにおけるすべての時間がそれに対して相対的である）親クロック、（その親に対して相対的な）速度、加速度および減速度を含み得るが、それに限定されない。加速度および減速度パラメータは、アニメーションの「速度を上げ」または「速度を下げる」のに費やされる「持続」時間の比率を指定する。
【００５４】
「プロパティアップデート」メッセージ４０６が、既存クロックのプロパティにアップデートをもたらす。「プロパティアップデートパラメータ」４０８は、ターゲットクロック（すなわち、アップデートされるプロパティを有するクロック）、ならびにアップデートされるプロパティおよび値を含む。「間隔追加」メッセージ４１０が、下位タイミングエンジンに、既存のアニメーション（オブジェクト）に間隔を追加するよう命令し、ターゲットクロックおよびターゲットクロックに追加される間隔のプロパティを識別する「間隔追加パラメータ」４１２を含む。
【００５５】
プロトコルは、上位アニメーションサブシステム１２２と下位アニメーションサブシステム１４８の間の同期を維持するのに使われる、「同期スリップリセット」メッセージ４１４および関連する「同期スリップリセットパラメータ」４１６を含む。どのようにしてこのパラメータが実装されるかは、具体的なシステム設計の問題である。
【００５６】
少なくとも１つの実装形態では、同期プロセスは、以下の例によって記述される。下位アニメーションサブシステム１４８が、ビデオファイルを制御中であり、映像が（たとえば、ネットワークトラフィックのせいで）遅れていることを検出した場合、下位アニメーションサブシステム１４８は、上位アニメーションサブシステム１２２に「メディアスリップとの同期」メッセージおよびパラメータ（群）（以降の図４ｂを参照）を送り、スリップが起こったこと、およびスリップの規模を格納する。
【００５７】
上位アニメーションサブシステム１２２（具体的には、上位タイミングエンジン２１２）は、スリップを考慮に入れるように間隔をアップデートし終えると、下位アニメーションサブシステム１４８に、スリップオフセットをゼロにリセットするよう告げるために、「同期スリップリセット」メッセージ４１４および関連する「同期スリップリセットパラメータ」４１６を送る。
【００５８】
この特定のプロトコルメッセージに関するこれ以上の情報については、以降の図４ｂを参照されたい。
【００５９】
「全間隔除去」メッセージ４１８は、特定のクロックに関連付けられたどの既存の間隔も除去するために、下位タイミングエンジン２２２に送ることができる。ターゲットクロックは、「全間隔除去パラメータ」４２０中で識別される。「クロック削除」メッセージ４２２も、通信プロトコルに含まれ、「クロック削除パラメータ」４２４中で識別されるターゲットクロックを除去するために下位タイミングエンジン２２２に送られる。
【００６０】
図４ｂは、下位タイミングエンジン２２２から上位タイミングエンジン２１２に送られる、通信プロトコル中のメッセージを記述するテーブル４３０を示す。「メディアスリップとの同期」メッセージ４３２が、上位タイミングエンジン２１２に、上位タイミングエンジン２１２がメディアコンポーネントと同期をとるために特定のクロックをスリップしなければならない量を提供する。（注：これは正しいと言えるだろうか？）「メディアスリップとの同期パラメータ」４３４は、クロックがスリップするべきターゲットクロック、およびスリップの規模を識別するスリップ量を含む。
【００６１】
メッセージは、下位アニメーションサブシステムから上位アニメーションサブシステム１２２にデータを返送する。この返送は、通信チャネル２０４中に遅延時間が存在するので必要である。これが起こり得る一例は、ユーザが、「一時停止」コマンドを活動化する場合である。システムは、互いと非同期に通信するので、下位アニメーションサブシステムは、上位アニメーションサブシステムが下位アニメーションサブシステムに追いつくことができる前に、いくつかのフレームを処理することができる。その結果、下位システムが長く実行される。
【００６２】
しかし、これは、アニメーションに関連付けられたクロックが、サブシステムを再度同期させるように「スリップする」または下位クロック２２４と「同期をとる」必要がある、上位アニメーションサブシステム１２２への情報を得る「メディアスリップとの同期」メッセージ４３２と一緒に処理される。
【００６３】
図４ｃは、上位アニメーションオブジェクト２１０から下位アニメーションオブジェクト２２０に送られるメッセージを記述するテーブル４４０を示す。テーブル４４０は、下位アニメーションサブシステム１４８に、新規アニメーションオブジェクトを作成するよう指令する「アニメーション作成」メッセージ４４２を含む。「アニメーション作成パラメータ」４４４は、アニメーション作成されるプロパティのタイプ、アニメーション機能、アニメーション機能および制御クロックを識別する出力値タイプを含む。
【００６４】
たとえば、回転変換の角度がアニメーション化される場合、出力タイプは「倍精度浮動小数」である。線のエンドポイントの１つがアニメーション作成される場合、出力タイプは「点」である。矩形の色がアニメーション作成される場合、出力タイプは「色」である。
【００６５】
アニメーション機能は、当該分野において公知であり、このようなどのアニメーション機能もここで指定することができる。単純なアニメーション機能の例は、「５から１０まで」である。これは、間隔の開始において、アニメーション機能が、５という値を出力し、終了において、１０を出力し、アニメーション機能の途中では、７．５などの値を出力することを意味する。より複雑なアニメーション機能は、「５から６、６から１０まで」である。ここで、アニメーションの途中での出力値は６である。機能は、値のリストだけでなく、機能がそうした値（補間される、中間にあるすべてのものを有する）を出力するべき時間のリストも特定することによって、より複雑にすることもできる。
【００６６】
上述したアニメーション機能は例示に過ぎず、添付の特許請求の範囲を、こうしたアニメーション機能に限定する意図ではないことを留意されたい。「アニメーション機能」と見なすことができるどのコンピュータ動作も、この状況において使うことができる。
【００６７】
最後に、上述したように、新規アニメーションオブジェクト用の制御クロックは、新規クロックでもよく、他の１つまたは複数のアニメーションオブジェクトを制御することができてもできなくてもよい既存のクロックでもよい。
【００６８】
テーブル４４０は、下位アニメーションサブシステム１４８内の既存のアニメーションをアップデートするための情報を提供する「アニメーションアップデート」メッセージ４４６も含む。「アニメーションアップデートパラメータ」４４８は、ターゲットアニメーション（すなわち、アップデートされるアニメーション）、ならびにアップデートされるプロパティ（アップデートされるプロパティおよびプロパティ用のアップデートされる値）を含む。
【００６９】
「アニメーションコレクション作成」メッセージ４５０が、コレクションとしてグループ化されるべき、下位アニメーションオブジェクト［データベース］２２０中の多数のアニメーションを識別する。「アニメーションコレクション作成パラメータ」４５２が、コレクションとしてグループ化されるべきアニメーションの初期リストを識別する。
【００７０】
アニメーションコレクションも、当該分野において公知である。アニメーションコレクションは、開発者に、単一の線形補間では表すことができない、複雑なアニメーションの振舞いを作成させるために存在する。たとえば、あるアニメーションは、点を上下に繰り返し動かすことができるが、第２のアニメーションは、点を右に動かすことができる。両方のアニメーションが一緒に実行されると、点は、右への波形パターンに従うように現れる。アニメーションコレクションを編集することができ、したがって、プロトコルにおけるメッセージの存在については、後で記載する。
【００７１】
「コレクションへのアニメーション追加」メッセージ４５４が、下位システムに、「コレクションへのアニメーション追加パラメータ」４５６中で識別されるアニメーションを、「コレクションへのアニメーション追加パラメータ」４５６中でも識別されるアニメーションコレクションに追加するよう告げる。同様に、「コレクションからのアニメーション除去」メッセージ４５８が、ターゲットアニメーションコレクションおよびコレクションから除去されるべきコレクション中のアニメーションを識別する「コレクションからのアニメーション除去パラメータ」４６０とともに含まれる。
【００７２】
テーブル４４０は、「静的値作成」メッセージ４６２も含む。静的値は、下位アニメーションサブシステム１４８が、アプリケーション１２０によって提供されるアニメーションをサポートすることができない場合に使われる。この状況については、後で、図６を参照してより詳細に記載する。「静的値作成」メッセージ４６２に関連付けられるのが、作成される静的値の値タイプおよび初期値を識別する「静的値作成パラメータ」４６４である。
【００７３】
「静的値アップデート」メッセージ４６６が、静的値へのアップデートをもたらす。「静的値アップデートパラメータ」４６８が、ターゲットである静的値オブジェクトおよびそのように識別される静的値オブジェクトの新規値を識別する。
【００７４】
図４（ａ〜ｃ）に示すメッセージおよびパラメータは、下位アニメーションサブシステム１４８によってレンダリングされるアニメーションを、上位アニメーションサブシステムによって非同期に制御することができる、合理的、効率的なやり方を提供する。１つまたは複数のメッセージが、すべてのレンダリングリフレッシュフレームにおいて送られなくてもよいので、ディスプレイは、一定の高レートでフレームをレンダリングすることができる。同時に、上位システムは、使用可能になると、処理時間を利用して、すなわち、より遅い可変リフレッシュレートで、下位システムにデータを提供することができる。
【００７５】
例示的な方法の実装：完全接続されたシステム
図５は、完全接続された上位アニメーションシステムおよび下位アニメーションシステムを有するレンダリングシステムにおけるアニメーションプロセスの例示的な方法の実装形態を示すフロー図である。
【００７６】
図５に示すシナリオでは、アプリケーション開発者が、時間の経過とともに動く、固定されたアンカ点から第２の点まで進む、アニメーション作成される直線の描画を望む。開発者は、３つのものを提供する必要がある。すなわち、（１）レンダリング動作（たとえば、静的点Ａとアニメーション作成点Ｂの間に線を描画する）、（２）アニメーション機能（たとえば、点Ｂが、（０，０）から（１００、１００）へ進む、および（３）アニメーションのタイミング（たとえば、５秒以内に始まり、１０秒間実行され、次いで、逆方向に一度繰り返す）。
【００７７】
図５は、上で論じた情報を含む、アプリケーション１２０への、上位アニメーションサブシステム１２２の応答を示す。ブロック５００で、上位アニメーションサブシステム１２２は、アプリケーション１２０から情報を受信する。上位アニメーションサブシステム１２２は、ブロック５０２でレンダリングオブジェクトを作成し、レンダリングオブジェクトは、線を表す。ブロック５０４で、上位アニメーションサブシステム１２２は、（０，０）から（１００，１００）までの値を出力するアニメーション機能を作成する。ブロック５０６で、上位アニメーションサブシステム１２２は、５秒以内に始まり、１０秒間実行され、次いで、逆方向に実行されるクロックを作成する。
【００７８】
下位アニメーションサブシステム１４８は、こうしたオブジェクトをサポートすることができるので、上位アニメーションサブシステム１２０は、下位アニメーションサブシステム１４８に、ブロック５１０〜５１８に示す、通信チャネル２０４上にトラフィックを生成するメッセージを送る（ブロック５０８）。
【００７９】
ブロック５１０：クロック１を作成する。クロック１用のパラメータを設定する。持続期間＝１０。
【００８０】
ブロック５１２：クロック１用の間隔を追加する。「現在＋５」から「現在＋１５」まで。ｔ＝０からｔ＝１０に進む。
【００８１】
ブロック５１４：クロック１用の間隔を追加する。「現在＋１５」から「現在＋２５」まで。ｔ＝１０からｔ＝１まで戻る。
【００８２】
ブロック５１６：アニメーション１を作成する。アニメーション１用のパラメータを設定する。（０，０）から（１００，１００）まで。クロック＝クロック１。
【００８３】
ブロック５１８：アニメーション１を参照する［ＤｒａｗＬｉｎｅ］命令を作成する。
【００８４】
この例では、ＤｒａｗＬｉｎｅ関数は、アニメーションをレンダリングするプロトコルによってサポートされるどの描画命令も表す。ＤｒａｗＬｉｎｅ命令は、例示に過ぎない。
【００８５】
メッセージが上位アニメーションサブシステム１２２から下位アニメーションサブシステム１４８に送信された後、下位アニメーションサブシステム１４８が、上位サブシステム１４８とは独立して実行され、可能な最高フレームレートで線の位置をアップデートする。それ以上のメッセージが、２つのサブシステム１２２と１４８の間で送られる必要はない。
【００８６】
これまで見てきたように、本明細書において採用する通信プロトコルは、通信チャネル２０４に入れられるデータの量を単一にすることによって、通信チャネル２０４を最適化する。短いメッセージおよび上で論じたパラメータが使われない場合は、システムを同期させるために、パイプライン経由で多数の動作が送られなければならなくなる。
【００８７】
しかし、本質的に、通信チャネル２０４に入れられるものは、いくつかのクロック用の間隔のリストである。あるクロックに対して、間隔が、たとえば時間０と時間１０の間のように定義され、クロックは、０から１０’まで進む（このようにして、現実世界のクロックを定義する）。あるいは、おそらくクロックは、２倍遅く実行されることが望まれる。この場合、「時間０と時間１０の間で、クロックは、０から５’まで進む」ことになる。
【００８８】
タイミング間隔のリストを定義することによって、クロックに対するすべての動作を定義することができる。たとえば、休止動作は、クロック間隔を用いて定義することができる。すなわち、時間０で、クロックは１０であり、時間１０で、クロックは１０’である。したがって、すべての動作を、線形間隔として表現することができる。
【００８９】
例示的な方法の実装：部分接続されたシステム
図６は、部分接続された上位アニメーションシステムおよび下位アニメーションシステムを有するレンダリングシステムにおけるアニメーションプロセスの例示的な方法の実装形態を示すフロー図である。
【００９０】
この例に示すシナリオでは、アプリケーション開発者が、時間の経過とともにカスタムパス上を動く、固定されたアンカ点から第２の点まで進む、アニメーション作成される直線の描画を望む。開発者は、以下のものを提供する必要がある。すなわち、（１）レンダリング動作（たとえば、静的点Ａとアニメーション作成点Ｂの間に線を描画する）、（２）カスタムアニメーション機能（たとえば、カスタムアニメーション１を呼び出して、点Ｂの位置を計算する）、および（３）アニメーションのタイミング（たとえば、５秒以内に始まり、１０秒間実行され、次いで、逆方向に一度繰り返す）。
【００９１】
上位アニメーションサブシステム１２２は、ブロック６００でアプリケーション情報を受信する。アプリケーションのリクエストに応答して、上位アニメーションサブシステム１２２は、線を表すレンダリングオブジェクト（ブロック６０２）、ユーザコード２０２をコールバックするように構成されるアニメーション機能（ブロック６０４）、および５秒以内に始まり、１０秒間実行され、次いで、逆方向に実行されるクロック（ブロック６０６）を作成する。適切なメッセージが、ブロック６０８で、下位アニメーションサブシステム１４８に送られる。
【００９２】
カスタムアニメーションは、ユーザコードを要求するので、下位サブシステムによって処理することができず、したがって、この結果、以下の初期トラフィックが通信チャネル上で生成される。
【００９３】
ブロック６１０：静的点の値１を作成する。
【００９４】
ブロック６１２：点の値１を参照する［ＤｒａｗＬｉｎｅ］命令を作成する。（ＤｒａｗＬｉｎｅ命令は例示に過ぎない。上記を参照）。
【００９５】
ブロック６１４で、下位アニメーションサブシステム１４８は、上位アニメーションサブシステム１２２から送信されるデータを受信する。下位アニメーションサブシステム１４８は、アニメーションを、静的線として扱う。
【００９６】
データの初期伝送の後のすべてのフレーム上で、上位アニメーションサブシステム１２２は、ユーザコード２０２を呼び出して、点Ｂの位置を計算し（ブロック６２０）、新規位置の値をブロック６２２で受信する。上位アニメーションサブシステム１２２は次いで、通信チャネル２０４を介して、静的点の値１の値をアップデートするための以下のメッセージを下位アニメーションサブシステムに送る。
【００９７】
ブロック６２６：静的点の値を、点Ｂに対する新規値でアップデートする。
【００９８】
例示的なコンピュータ環境
本明細書に記載する様々なコンポーネントおよび機能性は、コンピューティングシステムを用いて実装される。図７は、このようなコンピューティングシステムの一般的な例、すなわち、参照番号７００で示すコンピュータのコンポーネントを示す。図７に示すコンポーネントは例に過ぎず、本発明の機能性の範囲に関するいかなる限定を提案することも意図していない。本発明は、図７に示す特徴に必ずしも依存しない。
【００９９】
概して、異なる様々な汎用または専用のコンピューティングシステム構成を利用することができる。本発明とともに使用するのに適切であり得る他の公知のコンピューティングシステム、環境、および／または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家電製品、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれをも含む分散型コンピューティング環境などを含むが、それに限定されない。
【０１００】
コンピュータの機能性は、多くの場合、コンピュータによって実行されるプログラムモジュールなど、コンピュータ実行可能命令によって実施される。概して、プログラムモジュールは、特定のタスクを実施しまたは特定の抽象データタイプを実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。タスクは、通信ネットワークを介してリンクされるリモート処理デバイスによって実施することもできよう。分散型コンピューティング環境では、プログラムモジュールを、ローカルおよびリモートコンピュータ記憶媒体両方に置くことができる。
【０１０１】
命令および／またはプログラムモジュールは、それぞれ別のときに、コンピュータの一部であるか、またはコンピュータによって読むことができる様々なコンピュータ可読媒体に格納される。プログラムは一般に、たとえば、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ、ＤＶＤ、または被変調信号など何らかの形の通信媒体に載せて分散される。このような媒体から、プログラムは、コンピュータの補助記憶装置にインストールされ、またはロードされる。実行時に、プログラムは、少なくとも部分的に、コンピュータの一次電子メモリにロードされる。本明細書に記載の本発明は、こうしたおよび他の様々なタイプのコンピュータ可読媒体を含み、その際、このような媒体は、命令プログラム、および／またはマイクロプロセッサまたは他のデータプロセッサに関連して後で記載するステップを実装するモジュールを含む。本発明は、後で記載する方法および技術に従ってプログラミングされる場合のコンピュータ自体も含む。
【０１０２】
例示のために、オペレーティングシステムなど、プログラムおよび他の実行可能プログラムコンポーネントを、本明細書では別個のブロックとして示したが、このようなプログラムおよびコンポーネントは、様々なときにコンピュータの異なる記憶コンポーネントに存在し、コンピュータのデータプロセッサ（群）によって実行されることに理解されたい。
【０１０３】
図７を参照すると、コンピュータ７００のコンポーネントは、処理ユニット７０２と、システムメモリ７０４と、システムメモリなど様々なシステムコンポーネントを処理ユニット７０２に結合するシステムバス７０６とを含み得るが、これに限定されない。システムバス７０６は、様々なバスアーキテクチャのどれを使用してもよいメモリバスまたはメモリコントローラ、周辺バス、およびローカルバスなどいくつかのタイプのバス構造のいずれでもよい。限定ではなく例として、このようなアーキテクチャは、ＩＳＡ（業界標準アーキテクチャ）バス、ＭＣＡ（マイクロチャネルアーキテクチャ）バス、ＥＩＳＡＡ（拡張ＩＳＡ）バス、ＶＥＳＡ（米国ビデオ電子装置規格化協会）ローカルバス、およびメザニン（Ｍｅｚｚａｎｉｎｅ）バスとしても知られるＰＣＩ（周辺装置相互接続）を含む。
【０１０４】
コンピュータ７００は通常、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ７００によってアクセス可能であるとともに揮発性および不揮発性媒体、取外し可能および固定式媒体両方を含む、市販されているどの媒体でもよい。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体および通信媒体を含み得る。「コンピュータ記憶媒体」は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の格納のためのどの方法でも技術でも実装される揮発性媒体および不揮発性媒体、取外し可能媒体および固定式媒体を含む。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、ＤＶＤ（デジタル多用途ディスク）または他の光学ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは、所望の情報を格納するのに使うことができるとともにコンピュータ７００によってアクセスすることができる他のどの媒体も含むが、それに限定されない。通信媒体は一般に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、被変調データ信号、たとえば搬送波や他の移送機構として具体化し、どの情報配信媒体も含む。「被変調データ信号」という用語は、信号中の情報を符号化するようなやり方で設定されまたは変更される信号特性の１つまたは複数を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワークや直接有線接続などの有線媒体、ならびに音響、ＲＦ、赤外線、および他の無線媒体などの無線媒体を含む。上記のどの組合せも、やはりコンピュータ可読媒体の範囲に含まれるべきである。
【０１０５】
システムメモリ７０４は、コンピュータ記憶媒体を、ＲＯＭ（読取り専用メモリ）７０８およびＲＡＭ（ランダムアクセスメモリ）７１０など、揮発性および／または不揮発性メモリの形で含む。基本入出力システム（ＢＩＯＳ）７１２は、たとえば起動中にコンピュータ７００内部の要素間の情報の転送を助ける基本ルーチンを含み、通常はＲＯＭ７０８に格納される。ＲＡＭ７１０は一般に、処理ユニット７０２に対してただちにアクセス可能な、かつ／または処理ユニット７０２によって現在操作されているデータおよび／またはプログラムモジュールを含む。限定ではなく例として、図７では、オペレーティングシステム７１４、アプリケーションプログラム７１６、他のプログラムモジュール７１８、およびプログラムデータ７２０を示す。
【０１０６】
コンピュータ７００は、他の取外し可能／固定式、揮発性／不揮発性コンピュータ記憶媒体も含み得る。単なる例として、図７は、固定式の不揮発性磁気媒体からの読出しまたはそこへの書込みをするハードディスクドライブ７２２、取外し可能な不揮発性磁気ディスク７２６からの読出しまたはそこへの書込みをする磁気ディスクドライブ７２４、および、ＣＤ  ＲＯＭや他の光学媒体など取外し可能な不揮発性光ディスク７３０からの読出しまたはそこへの書込みを行う光ディスクドライブ７２８を示している。例示的な動作環境で用いることができる、他の取外し可能／固定式、揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体状態ＲＡＭ、固体状態ＲＯＭなどを含むが、それに限定されない。ハードディスクドライブ７２２は通常、データメディアインターフェイス７３２などの固定式メモリインターフェイスによって、システムバス７０６に接続され、磁気ディスクドライブ７２４および光ディスクドライブ７２８は通常、インターフェイス７３４などの取外し可能メモリインターフェイスによって、システムバス７０６に接続される。
【０１０７】
上述し、かつ図７に示したディスクドライブおよびそれに関連するコンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピュータ７００のための他のデータの格納を実現する。図７では、たとえば、ハードディスクドライブ７２２は、オペレーティングシステム７１５、アプリケーションプログラム７１７、他のプログラムモジュール７１９、およびプログラムデータ７２１を格納するものとして示してある。こうしたコンポーネントは、オペレーティングシステム７１４、アプリケーションプログラム７１６、他のプログラムモジュール７１８、およびプログラムデータ７２０と同じでも、異なってもよいことに留意されたい。オペレーティングシステム７１５、アプリケーションプログラム７１７、他のプログラムモジュール７１９、およびプログラムデータ７２１には、少なくとも、異なるものであることを示すために、ここでは異なる番号が与えてある。ユーザは、キーボード７３６および一般にはマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス７３８などの入力デバイスを介して、コマンドおよび情報をコンピュータ７００に入力することができる。他の入力デバイス（図示せず）には、マイクロホン、ジョイスティック、ゲーム用パッド、衛星パラボラアンテナ、スキャナなどがあり得る。こうしたおよび他の入力デバイスはしばしば、システムバスに結合される入出力（Ｉ／Ｏ）インターフェイス７４０を介して処理ユニット７０２に接続されるが、他のインターフェイスおよびバス構造、たとえば並列ポート、ゲームポート、ＵＳＢ（ユニバーサルシリアルバス）によって接続することもできる。モニタ７４２または他のタイプのディスプレイデバイスも、ビデオアダプタ７４４などのインターフェイスを介してシステムバス７０６に接続される。モニタ７４２に加え、コンピュータは、Ｉ／Ｏインターフェイス７４０を介して接続することができる、他の周辺出力デバイス７４６（たとえばスピーカ）および１つまたは複数のプリンタ７４８も含むことができる。
【０１０８】
コンピュータは、リモートコンピューティングデバイス７５０など、１つまたは複数のリモートコンピュータへの論理接続を使用してネットワーク接続された環境において動作することができる。リモートコンピューティングデバイス７５０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の共通ネットワークノードでよく、通常、コンピュータ７００に関連して上述した要素の多くまたはすべてを含む。図７に示す論理接続は、ローカルエリアネットワーク（ＬＡＮ）７５２およびワイドエリアネットワーク（ＷＡＮ）７５４を含む。図７に示すＷＡＮ７５４はインターネットだが、ＷＡＮ７５４は、他のネットワークを含んでもよい。このようなネットワーク環境は、会社、企業規模のコンピュータネットワーク、イントラネットなどにおいてよく見られる。
【０１０９】
ＬＡＮネットワーク環境において使われる場合、コンピュータ７００は、ネットワークインターフェイスまたはアダプタ７５６を介してＬＡＮ７５２に接続される。ＷＡＮネットワーク環境において使われる場合、コンピュータ７００は通常、モデム７５８、または、インターネット７５４を介して通信を確立する他の手段を含む。モデム７５８は、内部にあっても外部にあってもよく、Ｉ／Ｏインターフェイス７４０または他の適切な機構を介してシステムバス７０６に接続することができる。ネットワーク接続された環境では、コンピュータ７００に関連して図示したプログラムモジュールまたはその一部は、リモートコンピューティングデバイス７５０に格納することができる。限定ではなく例として、図７は、リモートアプリケーションプログラム７６０を、リモートコンピューティングデバイス７５０に常駐するものとして示している。図示したネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段も使うことができることが理解されよう。
【０１１０】
結論
記載したシステムおよび方法のための通信プロトコルはしたがって、下位アニメーションシステムとの上位アニメーションシステムの同期法を提供し、そうすることによって、下位システムを、一定の高速フレームリフレッシュレートで実行することができるとともに、上位システムを、対話性のために最適化された可変フレームレートで実行することができるようになる。いかなる対話能力も犠牲にすることなく、上質のグラフィックスを実現することができる。プロトコルはまた、２つのアニメーションシステムの間で送信されるデータの量を最小限に抑え、したがって、オーバーヘッドを抑え、性能を最適化する。
【０１１１】
具体的な実装形態および実施形態の詳細を上述したが、このような詳細は、添付の特許請求の範囲を限定することではなく、法定の開示義務を満たすことを意図している。したがって、特許請求の範囲によって定義される本発明は、上述された具体的な特徴に限定されない。そうではなく、本発明は、適正な添付の特許請求の範囲内である形または修正形態のいずれにおいても権利請求され、均一者の原則に従って適切に解釈される。
【図面の簡単な説明】
【０１１２】
【図１】アニメーションサブシステムを含むサーバ−クライアントシステムを示すブロック図である。
【図２】例示的なアニメーションレンダリングシステムアーキテクチャを示すブロック図である。
【図３】分解型アニメーション／レンダリングシステムの基本動作の方法の実装形態を示すフロー図である。
【図４ａ】上位タイミングエンジンから下位タイミングエンジンに送信される、上位アニメーションシステムを下位アニメーションシステムと同期させるための通信プロトコルメッセージおよびパラメータを示す図である。
【図４ｂ】下位タイミングエンジンから上位タイミングエンジンに送信される、上位アニメーションシステムを下位アニメーションシステムと同期させるための通信プロトコルメッセージおよびパラメータを示す図である。
【図４ｃ】上位アニメーションオブジェクトから下位アニメーションオブジェクトに送信される、上位アニメーションシステムを下位アニメーションシステムと同期させるための通信プロトコルメッセージおよびパラメータを示す図である。
【図５】完全接続された上位アニメーションシステムおよび下位アニメーションシステムを有するレンダリングシステムにおけるアニメーションプロセスの例示的な方法の実装形態を示すフロー図である。
【図６】部分接続された上位アニメーションシステムおよび下位アニメーションシステムを有するレンダリングシステムにおけるアニメーションプロセスの例示的な方法の実装形態を示すフロー図である。
【図７】本明細書に記載するシステムおよび方法による例示的なコンピューティング環境を示す図である。
【図１】
2007519072.tif 000002
【図２】
2007519072.tif 000003
【図３】
2007519072.tif 000004
【図４ａ】
2007519072.tif 000005
【図４ｂ】
2007519072.tif 000006
【図４ｃ】
2007519072.tif 000007
【図５】
2007519072.tif 000008
【図６】
2007519072.tif 000009
【図７】
2007519072.tif 000010