(57)【要約】メディア資産の時間操作を可能にする宣言型マークアップのシステム及び方法。メディア資産は、オーディオメディア、ビデオメディア、アニメーション、オーディオ／ビジュアルメディア、画像又はイベントとすることができる。本発明を用いて、２つ以上のメディアを連続して、あるいは、並行して、あるいは、１つのメディアを他のメディアに対してキューイングする他の時間的組み合わせで再生することにより、メディアシーケンスを形成することができる。本発明を用いて作成したメディアシーケンスは新たなメディアシーケンスの一部となることができ、元のメディアシーケンスの再生速度は、新たなメディアシーケンスに関連するフィールドにより制御することができる（２６Ｅ）。また、本発明を用いて、第１のメディアシーケンスの終了前の所定時刻に再生を開始するように、メディアシーケンスをキューイングすることができ、このとき、第１のメディアシーケンスの終了からの所定時間を維持しながら、第１のメディアシーケンスの長さを変更することができる。
2006505049.tif 000002
【特許請求の範囲】
【請求項１】
第１のメディアシーケンス及び上記第１のメディアシーケンスに続く第２のメディアシーケンスから、第１のタイムベースのメディアシーケンスを宣言的に作成し、
上記第１のメディアシーケンスに対して相対的な可変時間にて上記第２のメディアシーケンスを開始するためのコンピュータインストラクションを有することを特徴とするコンピュータにより読み取り可能な媒体。
【請求項２】
アニメーションを宣言的に制御するためのコンピュータインストラクションを、さらに備えることを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項３】
上記第１のタイムベースのシーケンスにイベントをリアルタイムで統合することができるような、上記第１のタイムベースのメディアシーケンスを作成するためのコンピュータインストラクションを、さらに有することを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項４】
上記第１のタイムベースのメディアシーケンスの再生速度を制御する第１のレート値を受信するためのコンピュータインストラクションをさらに有し、
上記第１のタイムベースのメディアシーケンスの再生速度は、上記第１のレート値の変更に応じて変更されることを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項５】
第２のタイムベースのメディアシーケンスを作成するためのコンピュータインストラクションと、
上記第１のタイムベースのメディアシーケンスの再生速度を制御する第２のレート値を受信するためのコンピュータインストラクションをさらに有し、
上記第１のタイムベースのメディアシーケンスは上記第２のタイムベースのメディアシーケンスの一部であり、上記第１のタイムベースのメディアシーケンスの再生速度は、上記第２のレート値の変更に応じて変更されることを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項６】
上記第２のメディアシーケンスの再生速度を制御する第３のレート値を受信するためのコンピュータインストラクションをさらに有し、
上記第２のメディアシーケンスの再生速度は、上記第３のレート値の変更に応じて変更されることを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項７】
上記第１のメディアシーケンスは、その継続時間のサブセットにわたって再生されることを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項８】
上記第２のメディアシーケンスの再生は、上記第１のメディアシーケンスの再生終了から遅延していることを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項９】
上記タイムベースのシーケンスは、順方向又は逆方向のいずれにも再生できることを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項１０】
上記第２のメディアシーケンスの終了前のある時点に第３のメディアシーケンスを開始するインストラクションを宣言的に受信するためのコンピュータインストラクションを、さらに有することを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項１１】
上記第２のメディアシーケンスの長さはユーザにより特定されないことを特徴とする請求項１０に記載のコンピュータにより読み取り可能な媒体。
【請求項１２】
上記第１のタイムベースのメディアシーケンスにおける第１の位置から、上記第１のタイムベースのメディアシーケンスにおける第２の位置へジャンプするためのコンピュータインストラクションを、さらに有することを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項１３】
上記第１の位置は上記第１のメディアシーケンス上にあり、上記第２の位置は上記第２のメディアシーケンス上にあることを特徴とする請求項１２に記載のコンピュータにより読み取り可能な媒体。
【請求項１４】
上記開始するためのコンピュータインストラクションは、上記第２のメディアシーケンスをローディングすることを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項１５】
上記開始するためのコンピュータインストラクションは、上記第２のメディアシーケンスを再生することを特徴とする請求項１に記載のコンピュータにより読み取り可能な媒体。
【請求項１６】
第１のタイムベースのシーケンスを宣言的に作成する方法において、
第１のメディアシーケンス及び第２のメディアシーケンスから、上記第１のタイムベースのシーケンスを宣言的に作成し、
上記第２のメディアシーケンスは、上記第１のメディアシーケンスに対して宣言的にキューイングされることを特徴とする方法。
【請求項１７】
上記第１のメディアシーケンス及び上記第２のメディアシーケンスは、ビデオシーケンス、オーディオシーケンス、アニメーション、オーディオ／ビジュアルシーケンスからなるグループから選択されることを特徴とする請求項１６に記載の方法。
【請求項１８】
上記第１のメディアシーケンス及び上記第２のメディアシーケンスは、プリロードされたメディアが瞬時に開始できるようにプリロードされることを特徴とする請求項１６に記載の方法。
【請求項１９】
上記第２のメディアシーケンスは、上記第１のメディアシーケンスに対して相対的な可変時間でキューイングされることを特徴とする請求項１６に記載の方法。
【請求項２０】
第１のタイムベースのメディアシーケンスを宣言的に作成する方法において、
第１のメディアシーケンスと第２のメディアシーケンスを再生して、上記第１のタイムベースのメディアシーケンスを形成し、
上記第１のタイムベースのシーケンスと並行して第３のメディアを再生することを特徴とする方法。
【請求項２１】
さらに、上記第１のメディアシーケンス、上記第２のメディアシーケンス、上記第３のメディアシーケンスからなるグループから選択されるメディアシーケンスの一部である可視画像を宣言的に制御することを特徴とする請求項２０に記載の方法。
【請求項２２】
さらに、上記第１のタイムベースのメディアシーケンスの再生速度を制御する第１のレート値を与え、
上記第１のタイムベースのメディアシーケンスの再生速度を、上記第１のレート値の変更に応じて変更することを特徴とする請求項２１に記載の方法。
【請求項２３】
さらに、第２のタイムベースのメディアシーケンスに関連する第２のレート値であって、上記第１のタイムベースのメディアシーケンスの再生速度を制御する第２のレート値を与え、
上記第１のタイムベースのメディアシーケンスの再生速度を、上記第２のレート値の変更に応じて変更し、
上記第１のタイムベースのメディアシーケンスは、上記第２のタイムベースのメディアシーケンスの一部であることを特徴とする請求項２１に記載の方法。
【請求項２４】
さらに、上記第２のメディアシーケンスの再生速度を制御する第３のレート値を与え、
上記第２のメディアシーケンスの再生速度を、上記第３のレート値の変更に応じて変更することを特徴とする請求項２１に記載の方法。
【請求項２５】
さらに、上記第１のメディアシーケンスを、その継続時間のサブセットにわたって再生することを特徴とする請求項２１に記載の方法。
【請求項２６】
さらに、上記第２のメディアシーケンスの再生を、上記第１のメディアシーケンスの再生終了から遅延させることを特徴とする請求項２１に記載の方法。
【請求項２７】
上記第１のタイムベースのメディアシーケンスを逆方向に再生することを特徴とする請求項２１に記載の方法。
【請求項２８】
さらに、第４のメディアシーケンスを与え、
上記第３のメディアシーケンスの終了前のある時点に、上記第４のメディアシーケンスをローディングし、
上記第４のメディアシーケンスは、上記第３のメディアシーケンスの長さがいずれであっても、上記第３のメディアシーケンスの終了前のある時点にローディングされることを特徴とする請求項２１に記載の方法。
【請求項２９】
さらに、上記第１のタイムベースのメディアシーケンスにおける第１の位置から、上記第１のタイムベースのメディアシーケンスにおける第２の位置へジャンプすることを特徴とする請求項２１に記載のコンピュータシステム。
【請求項３０】
上記第１の位置は上記第１のメディアシーケンス上にあり、上記第２の位置は上記第２のメディアシーケンス上にあることを特徴とする請求項２９に記載の方法。
【請求項３１】
第１のメディアシーケンスと第２のメディアシーケンスを与え、
上記第１のメディアシーケンスと上記第２のメディアシーケンスのそれぞれが可変時間でどのように関連しているかを定めるタイミング関係を定義する、少なくとも１つの宣言を与えることを特徴とするメディアプレゼンテーション作成方法。
【請求項３２】
上記第１のメディアシーケンス及び上記第２のメディアシーケンスは、ビデオシーケンス、オーディオシーケンス、アニメーション、オーディオ／ビジュアルシーケンスからなるグループから選択されることを特徴とする請求項３１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に３次元グラフィックスのためのモデリング言語に関し、特に、メディア資産（media asset）の時間操作に関する。
【背景技術】
【０００２】
リアルタイム３次元シーン描画のための従来のモデリング言語は、シーン構造、ジオメトリ、外観という側面、そして、ある程度、アニメーションという側面に注目していた。この注目の仕方は以下の２つ要因により生じていた。第一に、３次元コンピュータグラフィックアプリケーションは、ユーザ主導の体験向けとされていることから、イベントに対する描画される応答を中心に構成される傾向がある。第二に、これらのアプリケーションの多くは、シーン更新について「できるだけ高速に描画する」というアプローチをとっており、時間軸（タイムベース）の忠実度には、ほとんど注意が払われていない。従来のモデリング言語では、２つのメディア資産について時間的関係の精度が得られない。例えば、ビデオ資産とオーディオ資産を同時に開始する場合、これは、他のメディア資産とは無関係に各メディア資産の開始時刻を規定することにより行うことができる。これにより、開始時刻がそれぞれ微妙に異なることがある。各メディア資産の開始時刻を同じフィールドで制御することにより、メディア資産の正確な同期を得ることが望ましい。メディア資産には、オーディオメディア、ビデオメディア、アニメーション、オーディオ／ビジュアルメディア、画像、イベントが含まれる。
【０００３】
フルモーションビデオとハイファイオーディオとを統合してシーン描画合成とするので、高品位テレビのような視聴体験を提供しながら、視聴者のインタラクティブ性をサポートすることが望ましい。よりテレビ視聴体験に近く、ウェブページの視聴体験とは異なる受動的視聴体験を提供することが望ましい。
【０００４】
宣言型マークアップ言語では、所望の結果を得るのに必要な意味論は、その結果の記述において暗黙的である。所望の結果を得るための処理手順（すなわちスクリプトの記述）を行う必要がない。宣言型言語の一例は、ハイパーテキストマークアップ言語（Hypertext Markup Language：以下、ＨＴＭＬと略す）である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
これまでに、マクロメディアディレクタ（Macromedia Director）やワールドワイドウェブコンソーシアム（World Wide Web Consortium：以下、Ｗ３Ｃと略す）のシンクロナイズド・マルチメディア・インテグレーティド言語（synchronized multimedia integrated language：以下、ＳＭＩＬと略す）等、他のコンピュータベースのメディアにおいて、アニメーション及び再生のスコアリングのための種々のアプローチが開発されてきた。しかしながら、これら既存のスコアリングシステムでは、空間シーングラフに類似したやり方で時間構成を行い、独立したスコアをダイナミックに階層的に作成及び分解するリアルタイムシーンの宣言的作成はできない。例えば、時間ブロックを隣接して構成すること、あるいは、時間ブロックを並行（同期）して構成することである。従来のスコアリングシステムでは、可変的な速度及び方向のスコア評価を宣言的に行うことができないだけでなく、行動アニメーションの高速組み立て及び再使用に好適な、正規化「フラクション・ダン（fraction done）」出力に基づく係数演算法の宣言的実行ができない。
【課題を解決するための手段】
【０００６】
メディア資産の時間操作を可能にする宣言型マークアップのためのシステム及び方法を提案する。メディア資産は、オーディオメディア、ビデオメディア、アニメーション、オーディオ／ビジュアルメディア、画像又はイベントとすることができる。本発明を用いて、連続的に、あるいは、並行に、あるいは、あるメディアの他のメディアに対するキューイングが行われる他の時間的組み合わせで、１つのメディアを再生することによりメディアシーケンスを形成することができる。本発明を用いて作成されたメディアシーケンスは、新たなメディアシーケンスの一部となることができ、元のメディアシーケンスの再生速度は、新たなメディアシーケンスに関連するフィールドにより制御することができる。また、メディアシーケンスは、第１のメディアシーケンスの終了前の所定時間に再生を開始するようにキューイングすることができ、この場合、第１のメディアシーケンスの終了からの所定時間を維持しながら、第１のメディアシーケンスの長さを変更することができる。
【発明を実施するための最良の形態】
【０００７】
「ブレンド（Blendo）」は、アニメーションや目に見えるイメージの制御、現在再生中のメディア資産に対するオーディオメディア、ビデオメディア、アニメーション、イベントデータのキューイング等、メディア資産の時間的な操作を可能にする本発明の例示的な一実施形態である。図１Ａは、ブレンドの基本的なアーキテクチャを示す。ブレンドのアーキテクチャの中心部には、コアランタイムモジュール１０（以下、コアと呼ぶ）があり、種々のアプリケーションプログラマインタフェース（Application Programmer Interface：以下、ＡＰＩと略す）要素や、システム１１内に存在するオブジェクトセットに対するオブジェクトモデルを有している。通常動作時には、パーサ１４によって、ファイルは、解析されて未処理シーングラフ１６とされ、コア１０に供給され、コア１０において、コアのオブジェクトはインスタンス化され、ランタイムシーングラフが作成される。オブジェクトは、内蔵オブジェクト１８、制作者が定義したオブジェクト２０、ネイティブオブジェクト２４等とすることができる。オブジェクトは、利用可能なマネージャ２６のセットを用いて、プラットフォームサービス３２を得る。これらのプラットフォームサービス３２には、イベントの処理、メディア資産のローディング、メディアの再生等が含まれる。オブジェクトは、レンダリングレイヤ２８を用いて、表示するための中間的な画像又は最終的な画像を構成する。ページ統合コンポーネント３０は、ブレンドを、例えばＨＴＭＬ又はＸＭＬページ等の外部環境にインタフェースさせるために使用される。
【０００８】
ブレンドは、マネージャ２６のセットに関するシステムオブジェクトを含んでいる。各マネージャ２６は、システム１１の何らかの特徴（aspect）を制御するためのＡＰＩのセットを提供する。イベントマネージャ２６Ｄは、ユーザ入力又は環境イベントから生じる入力システムイベントへのアクセスを提供する。ローディングマネージャ２６Ｃは、ブレンドファイルのローディング及びネイティブノード実行を容易にする。メディアマネージャ２６Ｅは、オーディオ、画像及びビデオのメディア資産をローディングし、制御し、再生する能力を提供する。レンダリングマネージャ２６Ｇは、シーンの描画に使用されるオブジェクトの生成及び管理を可能にする。シーンマネージャ２６Ａは、シーングラフを制御する。サーフェイスマネージャ２６Ｆは、その上でシーンの要素及び他の資産が合成される面を生成及び管理できるようにする。スレッドマネージャ２６Ｂは、制作者がスレッドを発生させ、制御し、スレッド間で通信できるようにする。
【０００９】
図１Ｂは、ブレンドエンジンによるコンテンツの流れを概念的に説明するためのフローチャートである。ステップ５０において、パーサ１４（図１Ａ）に取り込まれているコンテンツのファイル又はストリーム３４（図１Ａ）を含むソースによって表示が始まる。ソースのフォーマットは、ネイティブＶＲＭＬのようなテキストフォーマット、ネイティブバイナリフォーマット、ＸＭＬベースのフォーマット等であってもよい。ソースのフォーマットに関わらず、ステップ５５において、ソースは未処理シーングラフ１６（図１Ａ）に変換される。未処理シーングラフ１６は、コンテンツ中のノード、フィールド、他のオブジェクトのほか、フィールド初期値を表すことができる。また、オブジェクトプロトタイプ、ストリーム３４内の外部プロトタイプ参照、ルート文の記述を含むこともできる。
【００１０】
未処理シーングラフ１６の最上位には、ファイルに含まれるノード、最上位フィールド及び機能、プロトタイプ及びルートが含まれる。ブレンドにより、従来の要素に加えて最上位のフィールド及び機能が可能となる。これらは、外部環境に対するインタフェース、例えばＨＴＭＬページ等を提供するのに使用される。また、これらは、ストリーム３４が外部プロトタイプのコンテンツとして使用されるときに、オブジェクトインタフェースを提供する。
【００１１】
各未処理ノードは、そのコンテキスト内で初期化されるフィールドのリストを含んでいる。各未処理フィールドエントリは、そのフィールドの名称、タイプ（あれば）、データ値を含んでいる。各データ値は、明示的に入力されたフィールド値を表すことができる番号、ストリング、未処理ノード及び／又は未処理フィールドを含んでいる。
【００１２】
ステップ６０において、最上位又は未処理シーングラフ１６（図１Ａ）からプロトタイプが抽出され、このプロトタイプを用いて、このシーンによってアクセス可能なオブジェクトプロトタイプのデータベースが生成される。
【００１３】
そして、未処理シーングラフ１６は、構造トラバース（build traversal）によって送られる。この移動の間、オブジェクトプロトタイプのデータベースを用いて、各オブジェクトが構成される（ステップ６５）。
【００１４】
ステップ７０において、ストリーム３４内のルートが確立される。その後、ステップ７５において、シーン内の各フィールドが初期化される。これは、オブジェクトの非デフォルトフィールドに初期イベントを送ることによって行われる。シーングラフ構造はノードフィールドを使用することによって達成されるので、ステップ７５において、シーン階層構造も構成される。通りがけ順（in order traversal）を用いてイベントが発せられる。最初に出てきたノードは、ノード内のフィールドを列挙している。フィールドがノードである場合、そのノードは最初に移動される。
【００１５】
その結果、ツリーのその特定のブランチにおけるノードが初期化される。そして、１つのイベントが、ノードフィールドの初期値とともに、そのノードフィールドに送られる。
【００１６】
所定ノードのフィールドが初期化された後、制作者は、ノードが呼出時間に完全に初期化されていることを確実にするために、初期化論理をプロトタイプオブジェクトに追加する（ステップ８０）。上述の各ステップはルートシーン（root scene）を生成する。ステップ８５において、シーンは、そのシーン用に生成されたシーンマネージャ２６Ａ（図１Ａ）に供給される。ステップ９０において、シーンマネージャ２６Ａを用いて、暗黙的に又は制作者の制御の下で、描画し、行動の処理実行する。
【００１７】
シーンマネージャ２６Ａによって描画されたシーンは、ブレンドのオブジェクト階層構造からのオブジェクトを用いて構成することができる。オブジェクトは、それらの親オブジェクトから幾つかの機能を取り出して、その機能を拡張又は変更することができる。階層構造の最下部にはオブジェクトがある。オブジェクトから取り出した２つのメインオブジェクトクラスは、ノードとフィールドである。ノードは、特にレンダリング方法を含んでいるが、これは表示トラバース（render traversal）の一部と呼ばれる。ノードのデータ属性はフィールドと呼ばれる。ブレンドのオブジェクト階層構造の中には、タイミングオブジェクトと呼ばれるオブジェクトのクラスがあり、これについては以下に詳細に説明する。以下の各コード部は例示的なものである。なお、各コード部の行番号は、単に特定のコード部の行番号を表しており、元のソースコードにおける行番号を表すものではない。
【００１８】
タイミングオブジェクト
タイミングオブジェクトは、タイムベース（TimeBase）ノードを含んでいる。これは、タイミングが取られたノードのフィールドとして設けられ、メディアのタイミング意味の一般的なセットを供給するものである。タイムベースノードを例とするノードを、多数の関連メディアノードに用いて、時間同期を確保することができる。また、ブレンドは、メディアイベントを順番に配列するのに用いられるスコア（Score）を含むノードセットを供給する。スコアはタイミングが取られたノードであり、そのタイミングをタイムベースから取り出す。スコアにはキュー（Cue）ノードのリストが含まれ、キューノードは特定時刻にイベントを発生させる。スコアを含む種々のタイミングオブジェクトについて以下に説明する。
【００１９】
タイムドノード（TimedNode）
以下のコード部はタイムドノード（TimedNode）ノードを示している。ノードの機能の記述は以下のようになる。
1) TimedNode: ChildNode {
2)   field TimeBadeNode timeBase NULL
3)   function Time getDuration()
4)   function void updateStartTime(Time now, Time mediaTime, Float rate)
5)   function void updateStopTime(Time now, Time mediaTime, Float rate)
6)   function void updateMediaTime(Time now, Time mediaTime, Float rate)
}
【００２０】
このオブジェクトは、タイムベースノードにより制御される全てのノードの親である。
【００２１】
コード部の２行目において、タイムベース（TimeBase）フィールドは、制御を行うタイムベースノード（TimeBaseNode）を含んでおり、これは、タイムベースの開始、終了又は進行時に、以下に示す適切な機能呼出を行う。
【００２２】
３行目において、継続時間取得（getDuration）機能は、タイムドノードの継続時間を返送する。取得不可能な場合、−１の値が返送される。この機能は一般的に、取り出したオブジェクトにより無効とされる。
【００２３】
４行目は、開始時間更新（updateStartTime）機能を示している。この機能が呼び出されると、そのイベント又は制御下のメディアの進行を開始し、開始オフセットはメディアタイム（mediaTime）項目により特定される。開始時間更新機能は一般的に、取り出したオブジェクトにより無効とされる。
【００２４】
５行目は、停止時間更新（updateStopTime）機能を示している。この機能が呼び出されると、そのイベント又は制御下のメディアの進行を停止する。この機能は一般的に、取り出したオブジェクトにより無効とされる。
【００２５】
６行目において、メディアタイム更新（updateMediaTime）機能は、タイムベースノードによりメディアタイムが更新されると必ず呼び出される。メディアタイム更新機能は取り出したオブジェクトにより使用され、他のメディアに対する制御又は更なるイベントの送信を行う。
【００２６】
インターバルセンサ（IntervalSensor）
以下のコード部はインターバルセンサ（IntervalSensor）を示している。ノードのフィールドの記述は以下のようになる。
1) IntervalSensor: TimedNode {
2)   field Time cycleInterval 1
3)   field Float fraction   0
4)   field Float time       0
}
【００２７】
インターバルセンサ（IntervalSensor）ノードは、時間の経過とともにイベントを発生させる。
【００２８】
インターバルセンサノードは、以下の用途を含む多数の用途に使用することができる。なお、これらの用途に限定されるものではない。
・連続するシミュレーションやアニメーションの取り出し
・周期的動作の制御（例えば、毎分１回の動作）
・アラームクロックなどの単一発生イベントの開始
【００２９】
インターバルセンサノードは、その開始時間更新（）機能が呼び出されると、初期フラクション及びタイムイベントを送る。また、このノードは、メディアタイム更新（）が呼び出されるたびにフラクション及びタイムイベントを送る。そして、停止時間更新（）機能が呼び出されると、最終フラクション及びタイムイベントを送る。
【００３０】
コード部の２行目において、制作者によりサイクルインターバル（cycleInterval）フィールドが設定され、フラクションが０から１に変化するのにかかる時間の長さを秒単位で決定する。この値は、継続時間取得（）機能が呼び出されると返送される。
【００３１】
３行目はフラクション（fraction）フィールドを示している。これは、以下の式（１）を用いてタイムベースノードが動作しているときに、必ずイベントを発生させる。
フラクション＝max（min（mediaTime／cycleInterval, 1), 0)        (1)
【００３２】
４行目はタイム（time）フィールドを示している。これは、タイムベースノードが動作しているときには必ずイベント発生させる。タイムフィールドの値は現在時刻である。
【００３３】
スコア（Score）
以下のコード部はスコア（Score）ノードを示している。ノードのフィールドの記述は以下のようになる。
1) Score: TimeNode {
2)   field MF CueNode cue[]
}
【００３４】
このオブジェクトは、開始時間更新（）、メディアタイム更新（）、停止時間更新（）の呼出毎に、キューフィールドに各エントリを呼び出す。各キューエントリの呼び出すと、現在蓄積されている相対時間が返送される。この値は続くキューエントリに送られ、キューエントリ間の相対オフセットの計算を可能にする。
【００３５】
コード部の２行目において、キューフィールドは、メディアタイムの経過とともに呼び出されるキューノード（CueNode）エントリのリストを保持している。
【００３６】
タイムベースノード（TimeBaseNode）
以下のコード部はタイムベースノード（TimeBaseNode）ノードを示している。ノードのフィールド及び機能の記述は以下のようになる。
1) TimeBaseNode: Node {
2)   field Time mediaTime 0
3)   function void    evaluate(Time time)
4)   function void    addClient(TimedNode node)
5)   function void    removeClient(TimedNode node)
6)   function Int32   getNumClients()
7)   function TimedNode   getClient(Int32 index)
}
【００３７】
このオブジェクトは、メディアタイムを生成する全てのノードの親である。
【００３８】
コード部の２行目はメディアタイム（mediaTime）フィールドを示している。これは、メディアタイムが進行すると必ずイベントを発生させる。メディアタイムフィールドは一般的に、取り出したオブジェクトにより制御される。
【００３９】
３行目は評価機能を示している。これは、このタイムベースノードがタイムイベント受信に関係していることを登録した場合に、時間が進行するとシーンマネージャにより呼び出される。
【００４０】
４行目はクライアント追加（addClient）機能を示している。これは、このタイムベースノードがタイムベースフィールドに設定されると、各タイムドノードにより呼び出される。メディアタイムが開始、進行又は停止すると、リスト中の各クライアントが呼び出される。送られたノードが既にクライアントである場合、この機能は何も動作を行わない。
【００４１】
５行目はクライアント除去（removeClient）機能を示している。これは、このタイムベースノードがタイムベースフィールドに設定されなくなったときに、各タイムドノードにより呼び出される。送られたノードがクライアントリストにない場合、この機能は何も動作を行わない。
【００４２】
６行目はクライアント数取得（getNumClients）機能を示している。これは、現在クライアントリストにあるクライアントの数を返送する。
【００４３】
７行目はクライアント取得（getClient）機能を示している。これは、送られたインデックスにおけるクライアントを返送する。インデックスが利用範囲外である場合、ヌル（NULL）値が返送される。
【００４４】
タイムベース（TimeBase）
以下のコード部はタイムベース（TimeBase）ノードを示している。ノードのフィールドの記述は以下のようになる。
1) TimeBase: TimeBaseNode {
2)   field Bool loop    false
3)   field Time startTime   0
4)   field Time playTime    0
5)   field Time stopTime    0
6)   field Time mediaStartTime 0
7)   field Time mediaStopTime 0
8)   field Float rate     1
9)   field Time duration     0
10)  field Bool enabled      true
11)  field Bool isActive     false
}
【００４５】
このオブジェクトはメディアタイムの進行を制御する。タイムベースは、この値の開始、停止及び再開を行うだけでなく、メディアタイムループを連続的に作成する。タイムベースにより、メディアタイムを、その範囲のサブセットにわたって再生することができる。
【００４６】
コード部の２行目において、ループフィールドは、メディアタイムが進行終了に達したときにメディアタイムが進行を繰り返すか否かを制御する。
【００４７】
３行目において、開始時間（startTime）フィールドは、メディアタイムがいつ進行を開始するかを制御する。ウォールクロック時間の単位である開始時間（startTime）になると、タイムベースが動作を開始する。これは、停止時間が開始時間未満である場合にあてはまる。このとき、レートが０以上の場合、メディアタイムはメディア開始時間（mediaStartTime）の値に設定される。メディア開始時間が利用範囲外である場合（メディア開始時間の有効範囲の記述については、メディア開始時間の項目を参照されたい）、メディアタイムは０に設定される。レートが０未満の場合、メディアタイムはメディア停止時間（mediaStopTime）に設定される。メディア停止時間が利用範囲外である場合、メディアタイムは継続時間に設定される。停止時間になるまで、あるいは、メディア停止時間になるまで（レートが０未満の場合、メディア開始時間になるまで）、タイムベースは動作し続ける。タイムベースが動作中に開始時間（startTime）イベントが受信されると、これは無視される。
【００４８】
４行目及び５行目において、再生時間（playTime）フィールドは、メディアタイムが作動時にリセットされないこと以外は開始時間（startTime）と同じように動作する。再生時間フィールドにより、タイムベースが停止時間で停止した後も、メディアタイムが進行し続けることができる。再生時間と開始時間の両方が同じ値である場合、開始時間が優先される。タイムベースが動作中に再生時間イベントが受信されると、このイベントは無視される。停止時間フィールドは、いつタイムベースが停止するかを制御する。
【００４９】
６行目において、メディア開始時間（mediaStartTime）フィールドは、メディアタイムが動作すべきメディア継続時間のサブレンジの開始を設定する。メディア開始時間の範囲はゼロから継続時間の終了まで（０〜継続時間）である。メディア開始時間の値が利用範囲外の場合、代わりに０が用いられる。
【００５０】
７行目において、メディア停止時間（mediaStopTime）フィールドは、メディアタイムが動作すべきメディア継続時間のサブレンジの終了を設定する。メディア停止時間の範囲はゼロから継続時間の終了まで（０〜継続時間）である。メディア停止時間の値が利用範囲外の場合、代わりに継続時間が用いられる。
【００５１】
８行目において、レートフィールドにより、メディアタイムは、ウォールクロック時間の毎秒以外のレートで動作することができる。レートフィールドで得られたレートは瞬時レートとして使用される。評価が呼び出されると、最後の呼出からの経過時間にレートが乗算され、その結果が現在のメディアタイムに加算される。
【００５２】
９行目において、継続時間（duration）フィールドは、このタイムベースの全てのクライアントの継続時間が各クライアントの継続時間を決定したときにイベントを発生させる。継続時間フィールドの値は最長継続時間を有するクライアントと同じである。
【００５３】
１０行目において、イネーブルド（enabled）フィールドはタイムベースをイネーブルにする。イネーブルドフィールドが偽となると、アクティブ（isActive）フィールドが真でありメディアタイムが進行を停止した場合、アクティブフィールドは偽となる。偽の間、開始時間及び再生時間は無視される。イネーブルドフィールドが真になると、開始時間及び再生時間が評価され、タイムベースが動作を開始すべきか否を判断する。開始すべきと判断された場合、開始時間又は再生時間についての記載にあるような動作が実行される。
【００５４】
１１行目はアクティブ（isActive）フィールドを示している。これは、タイムベースがアクティブとなったときに真イベントを発生させ、タイムベースが非アクティブとなったときに偽イベントを発生させる。
【００５５】
キューノード（CueNode）
以下のコード部はキューノード（CueNode）ノードを示している。ノードのフィールドの記述は以下のようになる。
1) CueNode: Node {
2)   field Float offset   -1
3)   field Float delay    0
4)   field Bool enabled   true
5)   field Int32 direction 0
6)   function void updateStartTime(Time now, Time mediaTime, Float rate)
7)   function void updateStopTime(Time now, Time mediaTime, Float rate)
8)   function Time evaluate(Time accumulated, Time now, Time mediaTime, Float rate)
9)  function Time getAccumulatedTime(Time accumulated)
10)  function void fire(Time now, Time mediaTime)
}
【００５６】
このオブジェクトは、スコアのキューリストにある全てのオブジェクトと親である。
【００５７】
コード部の２行目において、オフセット（offset）フィールドはシーケンスの開始部からの０相対オフセットを確定する。例えば、入力されてくるメディアタイムの値が５に達するとき、値５はキューノード（CueNode）を発信する。
【００５８】
３行目において、遅延（delay）フィールドはキューノード発信前の相対遅延を確定する。オフセットが−１（デフォルト）より大きい値である場合、この遅延はオフセットから測定される。それ以外の場合、遅延は前のキューノードの終了から測定されるか、最初のキューノードの場合ならば０から測定される。例えば、オフセットの値が５
で、遅延の値が２である場合、このノードはメディアタイムが７になったときに発信される。オフセットの値が−１で、遅延の値が２である場合、このノードは前のキューノードの終了から２秒後に発信される。
【００５９】
４行目において、イネーブルドフィールドが偽の場合、キューノードはデセーブル（disabled）とされる。キューノードは、オフセット及び遅延がデフォルト値であるかのように動作し、イベントを発することはない。真の場合、キューコードは通常動作を行う。
【００６０】
５行目において、ディレクション（direction）フィールドは、このノードがメディアタイムの進行方向に対して相対的にどのように発信されるかを制御する。このフィールドが０の場合、メディアタイムが増加しているか（ゼロより大きいレートであるか）減少しているか（ゼロより小さいレートであるか）に関わらず、このノードは、このノードのオフセット及び／又は遅延に達したときに発信される。ディレクションフィールドがゼロ未満の場合、メディアタイムが減少しているときには、このノードはオフセット及び／又は遅延に達したときのみ発信される。ディレクションフィールドがゼロより大きい場合、メディアタイムが増加しているときには、このノードはオフセット及び／又は遅延に達したときのみ発信される。
【００６１】
６行目は開始時間更新（updateStartTime）機能を示している。これは、親スコアが開始時間更新（）機能呼出を受信すると呼び出される。各キューノードは順に連続して呼び出される。
【００６２】
７行目は停止時間更新（updateStopTime）機能を示している。これは、親スコアが停止時間更新（）機能呼出を受信すると呼び出される。各キューノードは順に連続して呼び出される。
【００６３】
８行目は評価（evaluate）機能を示している。これは、親スコアがメディアタイム更新（）機能呼出を受信すると呼び出される。各キューノードは順に連続して呼び出され、その蓄積時間を返送しなければならない。例えば、オフセットが５で、遅延が２である場合、キューノードは値７を返送する。オフセットが−１で、遅延が２である場合、キューノードは入力されてくる蓄積時間に２を加えた値を返送する。これはデフォルト動作である。幾つかのキューノード（例えば、インターバルキュー（IntervalCue）等）は、所定の継続時間とともに発信時間を有している。
【００６４】
９行目において、蓄積時間取得（getAccumulatedTime）機能は、評価（）機能におけるのと同じ計算を用いて蓄積時間を返送する。
【００６５】
１０行目は発信（fire）機能を示している。これは、キューノードが発信時間に達するとデフォルト評価（）機能から呼び出される。発信機能は、適切な動作を行うために特定され取り出されたオブジェクトにより無効にされる。
【００６６】
メディアキュー（MediaCue）
以下のコード部はメディアキュー（MediaCue）ノードを示している。ノードのフィールドの記述は以下のようになる。
1) MediaCue: CueNode TimeBaseNode {
2)   field Time mediaStartTime 0
3)   field Time mediaStopTime 0
4)   field Time duration    0
5)   field Bool isActive    false
}
【００６７】
このオブジェクトは、このキューノード（CueNode）がアクティブのときにメディアタイムの進行を制御する。メディアキューにより、その範囲のサブセットにわたってメディアタイムを再生することができる。メディアキューは、オフセット及び／又は遅延フィールドにより決定される時間から開始して、メディア停止時間（mediaStopTime）からメディア開始時間（mediaStartTime）を減算することより決定される時間の長さ分、アクティブとなる。蓄積時間取得（）からのメディアキューの値は、メディア停止時間にデフォルト機能を追加して、メディア開始時間を減算することにより計算される値である。このノードは、アクティブ期間中にメディア時間を生成する。これは、発信時間とメディア開始時間を足した値を、入力されてくるメディアタイムから減算することにより計算される。したがって、メディアキューは入力されてくるメディアタイムと同じレートでメディア時間を進行させる。
【００６８】
コード部の２行目において、メディア開始時間（mediaStartTime）フィールドは、メディアタイムが動作するメディア継続時間のサブ範囲の開始を設定する。メディア開始時間の範囲はゼロから継続時間の終了まで（０〜継続時間）である。メディア開始時間フィールドの値が利用範囲外である場合、代わりに０が用いられる。
【００６９】
３行目において、メディア停止時間（mediaStopTime）フィールドは、メディアタイムが動作するメディア継続時間のサブ範囲を設定する。メディア停止時間の範囲はゼロから継続時間の終了まで（０〜継続時間）である。メディア停止時間フィールドの値が利用範囲外である場合、代わりに継続時間が用いられる。
【００７０】
４行目において、継続時間（duration）フィールドは、このタイムベースノードの全てのクライアントの継続時間がそれぞれの継続時間を決定したときにイベントを発生させる。継続時間フィールドの値は最長継続時間を有するクライアントと同じである。
【００７１】
５行目はアクティブ（isActive）フィールドを示している。これは、このノードがアクティブになると真のイベントを発生させ、非アクティブになると偽のイベントを発生させる。
【００７２】
インターバルキュー（IntervalCue）
以下のコード部はインターバルキュー（IntervalCue）ノードを示している。ノードのフィールドの記述は以下のようになる。
1)  IntervalCue: CueNode {
2)    field Float period  1
3)    field Bool rampUp  true
4)    field Float fraction 0
5)    field Bool isActive false
}
【００７３】
このオブジェクトは、時間が進行するにつれて０から１にフラクションイベントを送る（ランプアップ（rampUp）が偽の場合は１から０）。
【００７４】
コード部の２行目はピリオド（period）フィールドを示している。これは、フラクションランプが進行する時間を秒単位で決定する。
【００７５】
３行目において、ランプアップ（rampUp）フィールドが真（デフォルト）である場合、フラクションはインターバルキューの継続時間にわたって０から１に増加する。偽の場合、フラクションは１から０に減少する。メディアタイムが逆行している場合（レートがゼロ未満の場合）、フラクションは、ランプアップフィールドが真のときに１から０に減少し、ランプアップフィールドが偽のときに０から１に増加する。
【００７６】
４行目において、フラクション（fraction）フィールドは、このノードがアクティブである間に各評価（）呼出を有するイベントを送る。メディアタイムが前進している場合、フラクションは、このノードが発信されているときには出力を開始し、このノードが発信時間にピリオドを足した時間に達すると停止する。フラクションの値は以下のようになる。
フラクション＝（メディアタイム−発信時間）×ピリオド          （２）
【００７７】
５行目はアクティブ（isActive）フィールドを示している。これは、ノードがアクティブになると真のイベントを送り、ノードが非アクティブになると偽のイベントを送る。メディアタイムが前進している場合、メディアタイムが発信時間以上になるとノードはアクティブになる。メディアタイムが発信時間にピリオドを足した時間以上になると、このノードは非アクティブになる。メディアタイムが逆行している場合、ノードは、メディアタイムが発信時間にピリオドを足した時間以下になるとアクティブになり、メディアタイムが発信時間以下になると非アクティブになる。これらのイベントの発信はディレクション（direction）フィールドにより影響される。
【００７８】
フィールドキュー（FieldCue）
以下のコード部はフィールドキュー（FieldCue）ノードを示している。ノードのフィールドの記述は以下のようになる。
1) FieldCue: CueNode {
2)   field Field cueValue NULL
3)   field Field cueOut NULL
}
【００７９】
このオブジェクトは、フィールドキューが発信されたときにキューアウト（cueOut）へのイベントとしてキュー値（cueValue）を送る。キューアウト値はいずれのタイプのフィールドに対してもルーティングすることができる。現在のタイプのキュー値が送り先のタイプと互換性がない場合、不特定の結果が生じる可能性がある。
【００８０】
コード部２行目において、キュー値（cueValue）フィールドは、このノードが発信されたときに発せられるオーサリングされた値である。
【００８１】
３行目はキューアウト（cueOut）フィールドを示している。これは、このノードが発信されたときにキュー値の値を有するイベントを送る。
【００８２】
タイムキュー（TimeCue）
以下のコード部はタイムキュー（TimeCue）ノードを示している。ノードのフィールドの記述は以下のようになる。
1) TimeCue: CueNode {
2)    field Time cueTime 0
}
【００８３】
このオブジェクトは、タイムキューが発信されたときにキュータイムへのイベントとして現在のウォールクロック時間を送る。
【００８４】
コード部の２行目はキュータイム（cueTime）フィールドを示している。これは、このノードが発信されたときに現在のウォールクロック時間を有するイベントを送る。
【００８５】
リアルタイムシーン作成のコンテキスト内でのスコアリング構成により、制作者は、広範囲のプレゼンテーションや再生手法についての時間制御を宣言的に記述することができる。これらプレゼンテーション及び再生手法には、画像フリップブック及び画像複合アニメーション（例えば、アニメーション化ＧＩＦ）；ビデオ及びオーディオクリップ及びストリーム；ジョイント変換、ジオメトリモルフ、テクスチャ座標等の幾何学的アニメーションクリップ及びストリーム；ライティング、フォギング、透明性等の描画パラメータのアニメーション；行動、シミュレーション又は生成システムのパラメータの変調；メディア資産のローディング、イベントルーティング、論理機能のダイナミック制御等が含まれる。例えば、以下の例では、画像資産をプリロードするためのストリングを発した後、その画像を用いてアニメーションを行い、映画を動作させる。以下の例のストリングは逆に動作させることもできる（すなわち、映画を逆向きに再生した後、アニメーションを逆向きに再生し、画像が消える）。
1)   Score{
2)     timeBase DEF TB TimeBase{}
3)     cue[
4)       Fieldcue{
5)          cueValue String “ ”
6)          cueOut TO ISURF.URL
7)          direction -1
8)       }
9)       FieldCue{
10)         cueValue String “image1.png”
11)         cueOut TO ISURF.url
12)         direction -10
13)      }
14)      IntervalCue{
15)         delay 0.5
16)         period 2.5  #2.5 second animation
17)         fraction TO PI.fraction
18)      }
19)      DEF MC MediaCue{
20)         offset 2
21)      }
22)      Fieldcue{
23)         cueValue String “ ”
24)         cueOut TO ISURF.URL
25)         direction 1
26)         delay -0.5
27)      }
28)      Fieldcue{
29)         cueValue String “image1.png”
30)         cueOut TO ISURF.URL
31)         direction -1
32)         delay -0.5
33)      }
34)     ]
35)   }
36)   # Slide out imageran
37)   DEF T Transform{
38)     children Shape{
39)      appearance Appearance{
40)         texture Texture{
41)           surface DEF ISURF ImageSurface{}
42)         }
43)       }
44)       geometry IndexedFaceSet{…}
45)     }
46)   }
47)   DEF PI PositionInterpolator{
48)     key …
49)     keyValue …
50)     value TO T.translation
51)   }
52)        # Movie
53)   Shape{
54)     appearance Appearance{
55)       texture Texture{
56)         surface MovieSurface{
57)           url “myMovie.mpg”
58)           timeBase USE MC
59)         }
60)       }
61)     }
62)     geometry IndexedFaceSet{…}
63)   }
【００８６】
スコア内の全てのキューノードはタイムベースのメディアタイムに対して相対的に発信し、共通の参照情報を与えることにより、種々のメディア資産のタイミング間の正確な関係が得られる。上述のコード部において、フィールドキュー（FieldCue）（９行目）はタイムベースが開始するとすぐに発信する。これは、このフィールドキューがデフォルトのオフセット及び遅延フィールドを有することにより画像を出現させるからである。コード部の３３〜４５行目は、面に画像（図２Ａ中の２００）をローディングする。そして、インターバルキュー（IntervalCue）（１３行目）が０．５秒後に開始し、次の２．５秒間動作して、フラクション出力を０から１に増加させる。インターバルキューの発信は画像のアニメーション（図２Ａ中の２０２）を開始する。４６〜５０行目はアニメーションを制御する。タイムベース開始から２秒後に、あるいは、インターバルキューがアニメーションの１．５秒のところであるときにメディアキュー（MediaCue）（１８行目）が開始することにより、映画を開始する。５１〜６２行目は、映画の最初のフレーム（図２Ａ中の２０４）を面にローディングする。このストリングが逆向きに再生されると、まず、映画が逆向きに再生される。そして、０．５秒後に画像が現れ、画像が現れてから０．５秒後にアニメーションが開始する。アニメーションは２．５秒間逆向きに再生されてから停止し、その０．５秒後に画像が消える。本例は、各キュー（Cue）を互いに又はタイムベースからオフセットさせる可能性を示し、最後のキューの終了前に次のキューが開始できることを示している。
【００８７】
メディアキュー（MediaCue）は、制作者に同期ツールを与える。メディアキューはキューの一形式であり、タイムベースと全く同様に動作する。実際、メディアキューは、上述の例に示すようにタイムベースが使用できる箇所で使用することができる。しかし、メディアキューは、タイミングが取られたイベントシーケンスに埋め込まれていることから、実行装置はメディア資産へのプリローディングを要求するのに十分な情報を有している。図２Ｂは、プリローディングを必要とする図２Ａのメディアシーケンスの同期を示す。例えば、上述の例では、実行装置が、映画のプリローディング及び瞬時再生に０．５秒かかるとわかっている場合、タイムベースの開始から１．５秒間待機した後（ステップ２１０）、ステップ２１５において「準備（get ready）」信号をムービーサーフェイスに送る。準備信号を受信すると、ステップ２２０において映画をプリローディングする。これにより、プリローディングに必要な０．５秒が得られる。ステップ２２５において、開始要求を受信し、開始要求の受信後にステップ２３０において瞬時に映画を開始する。
【００８８】
タイムベースと、「ブレンド（Blendo）」によるメディアシーケンシング能力とを組み合わせることにより、複雑なタイミングのプレゼンテーションを作成することが可能となる。図３は、ブレンドによるプレゼンテーションの種々のコンポーネントの時間的関係を示す。視聴者は、ニュースプレゼンテーション（３６０）を選択すると、ストーリー（３６２）を選択できる画面が見られる。ユーザが、５つのストーリーＳ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５からなる選択肢からストーリーＳ３を選択すると、アナウンサが付いたウェルカム画面が表示される（３６４）。視聴者はウェルカム画面上で別のストーリー（３７４）への切り替えを選択することができ、これによりストーリーＳ３を停止する。歓迎文の後、画面はストーリー（３６６）のサイトに移行し、選択されたストーリーが再生される（３６８）。このとき視聴者は、次のストーリーや前のストーリーへの移動、現在のストーリーの巻き戻し、ストーリーＳ３の拡張バージョン（３７０）の再生、あるいは、例えば別のストーリーＳ５へのジャンプを行うことができる。選択されたストーリーの再生後、ユーザは次の選択を行うことができる。
【００８９】
なお、本発明は「ブレンド」からは独立しており、ブレンドとは別の実施形態の一部となりうることがわかる。また、本発明は２次元シーン描画及び３次元シーン描画にも同様に適用可能であることがわかる。
【００９０】
本発明の特定の実施形態について説明したが、広い意味で本発明から逸脱しない範囲で変更や修正を行うことができることは当業者にとって明らかであるため、添付の特許請求の範囲は、このような変更や修正が本発明の真の精神及び趣旨の範囲内であるとして、これらの変更や修正を全て含むものとする。
【図面の簡単な説明】
【００９１】
【図１Ａ】ブレンド（Blendo）の基本的なアーキテクチャを示す図である。
【図１Ｂ】ブレンドエンジンによるコンテンツの流れを示すフローチャートである。
【図２Ａ】あるスコアにおけるメディアシーケンス間の時間的関係を示す図である。
【図２Ｂ】プリローディングを必要とする図２に示すメディアシーケンスの同期を説明する図である。
【図３】１つのインタラクティブプレゼンテーションについて種々の構成メディア化の時間的関係を示す図である。
【図１Ａ】
2006505049.tif 000003
【図１Ｂ】
2006505049.tif 000004
【図２Ａ】
2006505049.tif 000005
【図２Ｂ】
2006505049.tif 000006
【図３】
2006505049.tif 000007
【手続補正書】
【提出日】平成17年9月14日(2005.9.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第１のメディアシーケンスと、該第１のメディアシーケンスに続く第２のメディアシーケンスとから、第１のタイムベースのメディアシーケンスを宣言的に構成し、
上記第１のメディアシーケンスの再生速度に関係なく、該第１のメディアシーケンスの終了時点より所定の時間前に、上記第２のメディアシーケンスを開始するコンピュータインストラクションを格納したコンピュータで読取り可能な媒体。
【請求項２】
アニメーションを宣言的に制御するコンピュータインストラクションを更に格納した請求項１に記載のコンピュータで読取り可能な媒体。
【請求項３】
上記第１のタイムベースのシーケンスを、イベントがリアルタイムで統合できるように構成するコンピュータインストラクションを更に格納した請求項１に記載のコンピュータで読取り可能な媒体。
【請求項４】
第１のレート値を受信し、該第１のレート値によって上記第１のタイムベースのメディアシーケンスの再生速度を制御するコンピュータインストラクションを更に格納し、
上記第１のタイムベースのメディアシーケンスの再生速度は、上記第１のレート値の変更に応じて、変化されることを特徴とする請求項１に記載のコンピュータで読取り可能な媒体。
【請求項５】
第２のタイムベースのメディアシーケンスを構成するコンピュータインストラクションと、
第２のレート値を受信し、該第２のレート値によって上記第１のタイムベースのメディアシーケンスの再生速度を制御するコンピュータインストラクションとを更に格納し、
上記第１のタイムベースのメディアシーケンスは、上記第２のタイムベースのメディアシーケンスの一部であり、該第１のタイムベースのメディアシーケンスの再生速度は、上記第２のレート値の変更に応じて、変化されることを特徴とする請求項１に記載のコンピュータで読取り可能な媒体。
【請求項６】
第３のレート値を受信し、該第３のレート値によって上記第２のメディアシーケンスの再生速度を制御するコンピュータインストラクションを更に格納し、
上記第２のメディアシーケンスの再生速度は、上記第３のレート値の変更に応じて、変化されることを特徴とする請求項１に記載のコンピュータで読取り可能な媒体。
【請求項７】
上記第１のメディアシーケンスは、その継続時間の一部に亘って再生されることを特徴とする請求項１に記載のコンピュータで読取り可能な媒体。
【請求項８】
上記第２のメディアシーケンスは、上記第１のメディアシーケンスの再生終了から遅延して再生されることを特徴とする請求項１に記載のコンピュータで読取り可能な媒体。
【請求項９】
上記第１及び／又は第２のタイムベースのメディアシーケンスは、順方向又は逆方向のいずれにも再生できることを特徴とする請求項１に記載のコンピュータで読取り可能な媒体。
【請求項１０】
上記第２のメディアシーケンスの終了前のある時点に、第３のメディアシーケンスを開始するインストラクションを宣言的に受信するコンピュータインストラクションを更に格納した請求項１に記載のコンピュータで読取り可能な媒体。
【請求項１１】
上記第２のメディアシーケンスの長さは、ユーザによって指定されないことを特徴とする請求項１０に記載のコンピュータで読取り可能な媒体。
【請求項１２】
上記第１のタイムベースのメディアシーケンスにおける第１の位置から、該第１のタイムベースのメディアシーケンスにおける第２の位置にジャンプするコンピュータインストラクションを更に格納した請求項１に記載のコンピュータで読取り可能な媒体。
【請求項１３】
上記第１の位置は、上記第１のメディアシーケンス上にあり、上記第２の位置は、上記第２のメディアシーケンス上にあることを特徴とする請求項１２に記載のコンピュータで読取り可能な媒体。
【請求項１４】
上記第２のメディアシーケンスを開始するコンピュータインストラクションは、該第２のメディアシーケンスのローディングを含むことを特徴とする請求項１に記載のコンピュータで読取り可能な媒体。
【請求項１５】
上記第２のメディアシーケンスを開始するコンピュータインストラクションは、該第２のメディアシーケンスの再生を含むことを特徴とする請求項１に記載のコンピュータで読取り可能な媒体。
【請求項１６】
第１のタイムベースのメディアシーケンスを宣言的に構成する方法において、
第１のメディアシーケンスと、該第１のメディアシーケンスに続く第２のメディアシーケンスとから、上記第１のタイムベースのメディアシーケンスを宣言的に構成し、
上記第２のメディアシーケンスは、上記第１のメディアシーケンスに対して宣言的にキューイングされ、該第２のメディアシーケンスは、該第１のメディアシーケンスの再生速度に関係なく、該第１のメディアシーケンスの終了時点より所定の時間前に開始されることを特徴とするメディアシーケンスの構成方法。
【請求項１７】
上記第１及び第２のメディアシーケンスは、ビデオシーケンス、オーディオシーケンス、アニメーション、オーディオ／ビジュアルシーケンスからなるグループから選択されることを特徴とする請求項１６に記載のメディアシーケンスの構成方法。
【請求項１８】
上記第１及び第２のメディアシーケンスは、直ちに開始できるようにプリロードされることを特徴とする請求項１６に記載のメディアシーケンスの構成方法。
【請求項１９】
上記第２のメディアシーケンスは、上記第１のメディアシーケンスに対して相対的に可変の時間でキューイングされることを特徴とする請求項１６に記載のメディアシーケンスの構成方法。
【請求項２０】
第１のタイムベースのメディアシーケンスを宣言的に構成するメディアシーケンスの構成方法において、
第１のメディアシーケンスと第２のメディアシーケンスを再生して、上記第１のタイムベースのメディアシーケンスを形成し、
上記第１のタイムベースのシーケンスと並行して第３のメディアを再生し、
上記第２のメディアシーケンスは、上記第１のメディアシーケンスの再生速度に関係なく、該第１のメディアシーケンスの終了時点より所定の時間前に開始されることを特徴とするメディアシーケンスの構成方法。
【請求項２１】
更に、上記第１、第２及び第３のメディアシーケンスからなるグループから選択されるメディアシーケンスの一部である可視画像を宣言的に制御する請求項２０に記載のメディアシーケンスの構成方法。
【請求項２２】
更に、第１のレート値が供給され、該第１のレート値に基づいて上記第１のタイムベースのメディアシーケンスの再生速度を制御し、
上記第１のタイムベースのメディアシーケンスの再生速度を、上記第１のレート値を変更することによって、変化させる請求項２１に記載のメディアシーケンスの構成方法。
【請求項２３】
更に、第２のタイムベースのメディアシーケンスに関連した第２のレート値が供給され、該第２のレート値に基づいて上記第１のタイムベースのメディアシーケンスの再生速度を制御し、
上記第１のタイムベースのメディアシーケンスの再生速度を、上記第２のレート値を変更することによって、変化させ、
上記第１のタイムベースのメディアシーケンスは、上記第２のタイムベースのメディアシーケンスの一部であることを特徴とする請求項２１に記載のメディアシーケンスの構成方法。
【請求項２４】
更に、第３のレート値が供給され、該第３のレートに基づいて上記第２のメディアシーケンスの再生速度を制御し、
上記第２のメディアシーケンスの再生速度を、上記第３のレート値を変更することによって、変化させる請求項２１に記載のメディアシーケンスの構成方法。
【請求項２５】
更に、上記第１のメディアシーケンスを、その継続時間の一部に亘って再生する請求項２１に記載のメディアシーケンスの構成方法。
【請求項２６】
更に、上記第２のメディアシーケンスを、上記第１のメディアシーケンスの再生終了から遅延して再生する請求項２１に記載のメディアシーケンスの構成方法。
【請求項２７】
上記第１のタイムベースのメディアシーケンスを逆方向に再生することを特徴とする請求項２１に記載のメディアシーケンスの構成方法。
【請求項２８】
更に、上記第３のメディアシーケンスの終了前のある時点に、第４のメディアシーケンスをローディングし、
上記第４のメディアシーケンスは、上記第３のメディアシーケンスの長さがいずれであっても、上記第３のメディアシーケンスの終了前のある時点にローディングされることを特徴とする請求項２１に記載のメディアシーケンスの構成方法。
【請求項２９】
更に、上記第１のタイムベースのメディアシーケンスにおける第１の位置から、該第１のタイムベースのメディアシーケンスにおける第２の位置にジャンプする請求項２１に記載のメディアシーケンスの構成方法。
【請求項３０】
上記第１の位置は、上記第１のメディアシーケンス上にあり、上記第２の位置は、上記第２のメディアシーケンス上にあることを特徴とする請求項２９に記載のメディアシーケンスの構成方法。
【請求項３１】
第１のメディアシーケンスと第２のメディアシーケンスとを準備し、
上記第１のメディアシーケンスと上記第２のメディアシーケンスのそれぞれが可変時間においてどのように関係しているかを定めるタイミング関係を、宣言的定義し、
上記可変時間は、上記第１のメディアシーケンスの再生速度に関係なく、該第１のメディアシーケンスの終了時点に基づいていることを特徴とするメディア表示方法。
【請求項３２】
上記第１及び第２のメディアシーケンスは、ビデオシーケンス、オーディオシーケンス、アニメーション、オーディオ／ビジュアルシーケンスからなるグループから選択されることを特徴とする請求項３１に記載のメディア表示方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、３次元グラフィックスのためのモデリング言語に関し、特に、メディア資産（media asset）の時間操作に関する。
【背景技術】
【０００２】
リアルタイムで３次元シーンを描画するための従来のモデリング言語は、シーン構造、ジオメトリ、外観という側面、そして、ある程度、アニメーションという側面に注目していた。この注目の仕方は、以下の２つ要因により生じていた。第一に、３次元コンピュータグラフィックアプリケーションは、ユーザ主導の体験向けとされていることから、イベントに対して描画される応答を中心に構成される傾向がある。第二に、これらのアプリケーションの多くは、シーン更新について「できるだけ高速に描画する」という手法をとっており、タイムベース（time base）の忠実度には、ほとんど注意が払われていない。従来のモデリング言語では、２つのメディア資産間の時間的関係の精度が得られない。例えば、ビデオ資産とオーディオ資産を同時に開始する場合、これは、他のメディア資産とは無関係に、各メディア資産の開始時刻を定めることにより行うことができる。これにより、開始時刻がそれぞれ微妙に異なることがある。各メディア資産の開始時刻を同じフィールドで制御することにより、メディア資産の正確な同期を得ることが望ましい。メディア資産には、オーディオメディア、ビデオメディア、アニメーション、オーディオ／ビジュアルメディア、画像、イベントが含まれる。
【０００３】
フルモーションビデオとハイファイオーディオとを統合して、シーンを描画する合成物とするときに、高品位テレビのような視聴体験を提供しながら、視聴者のインタラクティブ性をサポートすることが望ましい。よりテレビ視聴体験に近く、ウェブページの視聴体験とは異なる受動的視聴体験を提供することが望ましい。
【０００４】
宣言型マークアップ言語では、所望の結果を得るのに必要な意味論は、結果の内容に内在する（implicit）。所望の結果を得るために、別々の処理手順（すなわちスクリプトを書くこと）を行う必要がない。宣言型言語の一例は、ハイパーテキストマークアップ言語（Hypertext Markup Language：以下、ＨＴＭＬと略す）である。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
これまでに、他のコンピュータベースのメディアにおいて、スコアリングアニメーション（scoring animation）及び再生に対する様々な手法が開発されており、これらの手法には、マクロメディアディレクタ（Macromedia Director）、ワールドワイドウェブコンソーシアム（World Wide Web Consortium：以下、Ｗ３Ｃと略す）社のシンクロナイズドマルチメディアインテグレーティド言語（synchronized multimedia integrated language：以下、ＳＭＩＬと略す）が含まれる。しかしながら、これらの既存のスコアリングシステム（scoring system）では、独立したスコアを、空間的シーングラフに類似した方法における構成時間（structuring time）で動的に構成し、階層的に分解するリアルタイムシーンの宣言型構成（declarative composition）はできない。例えば、時間ブロックを隣接して構成し、あるいは時間ブロックを互いに並行（同期）して構成することである。従来のスコアリングシステムでは、宣言的に行われるスコア計算（score evaluation）の速度及び方向を変えることができないだけでなく、動きアニメーションの高速な組立及び再使用に適した、正規化「有理化された（fraction done）」出力に基づく係数計算法（modular computation strategy）を宣言的に実行することができない。
【課題を解決するための手段】
【０００６】
本発明に係るコンピュータで読取り可能な媒体は、第１のメディアシーケンスと、第１のメディアシーケンスに続く第２のメディアシーケンスとから、第１のタイムベースのメディアシーケンスを宣言的に構成し、第１のメディアシーケンスの再生速度に関係なく、第１のメディアシーケンスの終了時点より所定の時間前に、第２のメディアシーケンスを開始するコンピュータインストラクションを格納する。
【０００７】
本発明に係る第１のタイムベースのメディアシーケンスを宣言的に構成する方法は、第１のメディアシーケンスと、第１のメディアシーケンスに続く第２のメディアシーケンスとから、第１のタイムベースのメディアシーケンスを宣言的に構成する。第２のメディアシーケンスは、第１のメディアシーケンスに対して宣言的にキューイングされ、第２のメディアシーケンスは、第１のメディアシーケンスの再生速度に関係なく、第１のメディアシーケンスの終了時点より所定の時間前に開始される。
【０００８】
さらに、本発明に係る第１のタイムベースのメディアシーケンスを宣言的に構成するメディアシーケンスの構成方法は、第１のメディアシーケンスと第２のメディアシーケンスを再生して、第１のタイムベースのメディアシーケンスを形成し、第１のタイムベースのシーケンスと並行して第３のメディアを再生する。第２のメディアシーケンスは、第１のメディアシーケンスの再生速度に関係なく、第１のメディアシーケンスの終了時点より所定の時間前に開始される。
【０００９】
本発明に係るメディア表示方法は、第１のメディアシーケンスと第２のメディアシーケンスとを準備し、第１のメディアシーケンスと第２のメディアシーケンスのそれぞれが可変時間においてどのように関係しているかを定めるタイミング関係を、宣言的定義する。可変時間は、第１のメディアシーケンスの再生速度に関係なく、第１のメディアシーケンスの終了時点に基づいている。
【００１０】
メディア資産の時間操作を可能にする宣言型マークアップのためのシステム及び方法を提案する。メディア資産は、オーディオメディア、ビデオメディア、アニメーション、オーディオ／ビジュアルメディア、画像又はイベントとすることができる。本発明を用いて、連続的に、あるいは、並行に、あるいは、あるメディアの他のメディアに対するキューイングが行われる他の時間的組み合わせで、１つのメディアを再生することによりメディアシーケンスを形成することができる。本発明を用いて構成されたメディアシーケンスは、新たなメディアシーケンスの一部となることができ、元のメディアシーケンスの再生速度は、新たなメディアシーケンスに関連したフィールドにより制御することができる。また、メディアシーケンスは、第１のメディアシーケンスの終了時点より所定時間前に再生を開始するようにキューイングすることができ、この場合、第１のメディアシーケンスの終了からの所定時間を維持しながら、第１のメディアシーケンスの長さを変更することができる。
【発明を実施するための最良の形態】
【００１１】
「ブレンド（Blendo）」は、本発明の典型的な実施形態であり、アニメーション及び目に見える画像の制御、現在再生中のメディア資産（media asset）に対するオーディオメディア、ビデオメディア、アニメーション、イベントデータのキューイング等、メディア資産の時間的な操作を可能にする。図１Ａは、ブレンドの基本的なアーキテクチャを示すブロック図である。ブレンドのアーキテクチャの中心部には、コアランタイムモジュール１０（以下、コアと呼ぶ）があり、コア１０は、アプリケーションプログラマインタフェース（Application Programmer Interface：以下、ＡＰＩと略す）の様々な要素、及びシステム１１内に存在するオブジェクトのセットに対するオブジェクトモデルを提供する。通常動作時には、パーサ１４によって、ファイルは解析されて、未処理シーングラフ１６とされ、コア１０に供給され、コア１０において、そのオブジェクトはインスタンス化され、ランタイムシーングラフが生成される。オブジェクトは、内蔵オブジェクト１８、制作者が定義したオブジェクト２０、ネイティブオブジェクト２４等とすることができる。これらのオブジェクトは、利用可能なマネージャ２６のセットを用いて、プラットフォームサービス３２を得る。これらのプラットフォームサービス３２には、イベントの処理、メディア資産のローディング、メディアの再生等が含まれる。オブジェクトは、レンダリングレイヤ２８を用いて、表示するための中間的な画像又は最終的な画像を構成する。ページ統合コンポーネント３０は、ブレンドを、例えばＨＴＭＬ又はＸＭＬページ等の外部環境にインタフェースさせるために使用される。
【００１２】
ブレンドは、マネージャ２６のセットに関するシステムオブジェクトを含んでいる。各マネージャ２６は、システム１１の何らかの特徴（aspect）を制御するためのＡＰＩのセットを提供する。イベントマネージャ２６Ｄは、ユーザ入力又は環境イベントから生じる入力装置イベントへのアクセスを提供する。ローディングマネージャ２６Ｃは、ブレンドファイルのローディング及びネイティブノード実行を容易にする。メディアマネージャ２６Ｅは、オーディオ、画像及びビデオのメディア資産をローディングし、制御し、再生する能力を提供する。レンダリングマネージャ２６Ｇは、シーンの描画に使用されるオブジェクトを生成及び管理できるようにする。シーンマネージャ２６Ａは、シーングラフを制御する。サーフェスマネージャ２６Ｆは、その上でシーンの要素及び他の資産が合成される面を生成及び管理できるようにする。スレッドマネージャ２６Ｂは、制作者がスレッドを発生させ、制御し、スレッド間で通信できるようにする。
【００１３】
図１Ｂは、ブレンドエンジンによるコンテンツの流れを概念的に説明するためのフローチャートである。ステップ５０において、パーサ１４（図１Ａ）に取り込まれているコンテンツのファイル又はストリーム３４（図１Ａ）を含むソースによって表示が始まる。ソースのフォーマットは、ネイティブＶＲＭＬのようなテキストフォーマット、ネイティブバイナリフォーマット、ＸＭＬベースのフォーマット等とすることができる。ステップ５５において、ソースのフォーマットに関わらず、ソースは未処理シーングラフ１６（図１Ａ）に変換される。未処理シーングラフ１６は、コンテンツ中のノード、フィールド、他のオブジェクトだけではなく、フィールドの初期値を表すことができる。また、オブジェクトプロトタイプ、ストリーム３４内の外部プロトタイプ参照及びルート文の記述を含むこともできる。
【００１４】
未処理シーングラフ１６の最上位には、ファイルに含まれるノード、最上位フィールド及び機能、プロトタイプ及びルートが含まれる。ブレンドにより、従来の要素に加えて最上位のフィールド及び機能を使用することが可能となる。これらは、外部環境に対するインタフェース、例えばＨＴＭＬページ等を提供するのに使用される。また、これらは、ストリーム３４が外部プロトタイプのコンテンツとして使用されるときに、オブジェクトインタフェースを提供する。
【００１５】
各未処理ノードは、そのコンテキスト内で初期化されるフィールドのリストを含んでいる。各未処理フィールドエントリは、そのフィールドの名称、タイプ（あれば）、データ値を含んでいる。各データ値は、明示的に入力されたフィールド値を表すことができる番号、ストリング（string）、未処理ノード及び／又は未処理フィールドを含んでいる。
【００１６】
ステップ６０において、最上位又は未処理シーングラフ１６（図１Ａ）からプロトタイプが抽出され、このプロトタイプを用いて、このシーンによってアクセス可能なオブジェクトプロトタイプのデータベースが生成される。
【００１７】
そして、未処理シーングラフ１６は、構造トラバース（build traversal）によって送られる。この移動の間、オブジェクトプロトタイプのデータベースを用いて、各オブジェクトが構成される（ステップ６５）。
【００１８】
ステップ７０において、ストリーム３４内のルートが確立される。その後、ステップ７５において、シーン内の各フィールドが初期化される。フィールドの初期化は、オブジェクトの非デフォルトフィールドに初期イベントを送ることによって行われる。シーングラフ構造はノードフィールドを使用することによって達成されるので、ステップ７５において、シーン階層構造も構成される。通りがけ順（in order traversal）を用いてイベントが発せられる。最初に出てきたノードは、ノード内のフィールドを列挙している。フィールドがノードである場合、そのノードは最初に移動される。
【００１９】
その結果、ツリーのその特定のブランチにおけるノードが初期化される。そして、１つのイベントが、ノードのフィールドの初期値とともに、そのノードのフィールドに送られる。
【００２０】
特定のノードのフィールドが初期化された後、制作者は、ノードが呼出時間に完全に初期化されていることを確実にするために、初期化論理をプロトタイプオブジェクトに追加する（ステップ８０）。上述の各ステップはルートシーン（root scene）を生成する。ステップ８５において、シーンは、そのシーン用に生成されたシーンマネージャ２６Ａ（図１Ａ）に供給される。ステップ９０において、シーンマネージャ２６Ａを用いて、暗黙的に又は制作者の制御の下で、描画し、動きの処理を実行する。
【００２１】
シーンマネージャ２６Ａによって描画されたシーンは、ブレンドのオブジェクト階層構造からのオブジェクトを用いて構成することができる。オブジェクトは、それらの親オブジェクトから幾つかの機能を取り出して、その機能を拡張又は変更することができる。階層構造の最下部にはオブジェクトがある。オブジェクトから取り出した２つのメインオブジェクトクラスは、ノードとフィールドである。ノードは、特にレンダリング方法を含み、これは、表示トラバース（render traversal）の一部と呼ばれる。ノードのデータ属性はフィールドと呼ばれる。ブレンドのオブジェクト階層構造の中には、タイミングオブジェクトと呼ばれるオブジェクトのクラスがあり、これについては以下に詳細に説明する。以下の各コード部は例示的なものである。なお、各コード部の行番号は、単に特定のコード部の行番号を表しており、元のソースコードにおける行番号を表すものではない。
【００２２】
タイミングオブジェクト（Timing Object）
タイミングオブジェクトは、タイムベースTimeBaseのノードを含んでいる。これは、タイミングが取られたノードのフィールドとして含まれ、タイミングの意味の共通のセットをメディアに提供するものである。タイムベースノードTimeBaseNodeをインスタンス化するノードにより、このタイムベースノードTimeBaseNodeを用いて、関連した多数のメディアノードにおいて時間的な同期を確実にすることができる。また、ブレンドは、メディアイベントを順番に配列するのに用いられるスコアScoreを含むノードセットを提供する。スコアScoreは、タイミングが取られたノードであり、そのタイミングをタイムベースTimeBaseから取り出す。スコアScoreにはキューCueのノードのリストが含まれており、キューCueのノードは、特定の時刻にイベントを発生させる。スコアScoreを含む様々なタイミングオブジェクトについて以下に説明する。
【００２３】
タイムドノードTimedNode
以下のコード部は、タイムドノードTimedNodeのノードを示している。タイムドノードTimedNodeのノードの機能の記述は、以下のようになる。
1) TimedNode: ChildNode {
2)   field TimeBadeNode timeBase NULL
3)   function Time getDuration()
4)   function void updateStartTime(Time now, Time mediaTime, Float rate)
5)   function void updateStopTime(Time now, Time mediaTime, Float rate)
6)   function void updateMediaTime(Time now, Time mediaTime, Float rate)
}
【００２４】
このオブジェクトは、タイムベースノードTimeBaseNodeにより制御される全てのノードの親である。
【００２５】
コード部の２行目において、タイムベースTimeBaseのフィールドは、制御を行うタイムベースノードTimeBaseNodeを含んでおり、タイムベースノードTimeBaseNodeは、タイムベースTimeBaseの開始、終了又は進行時に、以下に示す適切な機能の呼出を行う。
【００２６】
３行目において、継続時間取得getDurationの機能は、タイムドノードTimedNodeの継続時間（duration）を返す。取得不可能な場合は、−１の値が返される。この機能は、通常、取り出したオブジェクト（derived object）によって無効とされる。
【００２７】
４行目は、開始時間更新updateStartTimeの機能を示している。開始時間更新updateStartTimeの機能が呼び出されると、この機能は、そのイベント又は制御下のメディアの進行を、メディアタイム引数（mediaTime argument）によって特定される開始オフセットで開始する。開始時間更新updateStartTimeの機能は、通常、取り出したオブジェクトによって無効とされる。
【００２８】
５行目は、停止時間更新updateStopTimeの機能を示し、停止時間更新updateStopTimeの機能は、呼び出されると、そのイベント又は制御下のメディアの進行を停止する。この機能は、通常、取り出したオブジェクトによって無効とされる。
【００２９】
６行目において、メディアタイム更新updateMediaTimeの機能は、タイムベースノードTimeBaseNodeによってメディアタイムmediaTimeが更新されると必ず呼び出される。メディアタイム更新updateMediaTimeの機能は、取り出したオブジェクトにより使用され、それらのメディアに対する更なる制御を取り出し、あるいは新たなイベントを送る。
【００３０】
間隔センサIntervalSensor
以下のコード部は、間隔センサIntervalSensorのノードを示している。間隔センサIntervalSensorのノードのフィールドの記述は、以下のようになる。
1) IntervalSensor: TimedNode {
2)   field Time  cycleInterval 1
3)   field Float fraction      0
4)   field Float time          0
}
【００３１】
間隔センサIntervalSensorのノードは、時間の経過とともにイベントを発生させる。
【００３２】
間隔センサIntervalSensorのノードは、以下の用途を含む多数の用途に使用することができる。なお、これらの用途に限定されるものではない。
【００３３】
・連続したシミュレーション及びアニメーションの駆動
・周期的な動作の制御（例えば、毎分１回の動作）
・アラームクロック等の単一に発生するイベントの開始
【００３４】
間隔センサIntervalSensorのノードは、その開始時間更新updateStartTime（）機能が呼び出されると、初期フラクション（initial fraction）及びタイムイベントを送る。また、このノードは、メディアタイム更新updateMediaTime（）機能が呼び出されるたびにフラクション及びタイムイベントを送る。そして、最後に、停止時間更新updateStopTime（）機能が呼び出されると、最終フラクション（final fraction）及びタイムイベントを送る。
【００３５】
コード部の２行目において、制作者によってサイクル間隔cycleIntervalのフィールドが設定され、フラクションが０から１になるのにかかる時間の長さが秒単位で決定される。この値は、継続時間取得getDuration（）機能が呼び出されると返される。
【００３６】
３行目は、フラクションのフィールドを示し、フラクションのフィールドは、以下の式（１）を用いて、タイムベースノードTimeBaseNodeが動作しているときに、必ずイベントを発生させる。
フラクション＝max（min（mediaTime／cycleInterval, 1）,0）          （１）
【００３７】
４行目は、タイムフィールドを示し、タイムフィールドは、タイムベースノードTimeBaseNodeが動作しているときには、必ずイベントを発生させる。タイムフィールドの値は、現在のクロックタイム（wall clock time）である。
【００３８】
スコアScore
以下のコード部は、スコアScoreのノードを示している。スコアScoreのノードのフィールドの記述は、以下のようになる。
1) Score: TimeNode {
2)   field MF CueNode cue[]
}
【００３９】
このオブジェクトは、開始時間更新updateStartTime（）、メディアタイム更新updateMediaTime（）、停止時間更新updateStopTime（）の呼出が受信される毎に、キューフィールドに各エントリを呼び出す。各キューエントリを呼び出すと、現在累積されている相対時間が返される。この値は、後続のキューエントリに渡され、キューエントリ間の相対的なオフセットの計算を行うことができる。
【００４０】
コード部の２行目において、キューフィールドは、メディアタイムmediaTimeの経過によって呼び出されるキューノードCueNodeのエントリのリストを保持している。
【００４１】
タイムベースノードTimeBaseNode
以下のコード部は、タイムベースノードTimeBaseNodeのノードを示している。タイムベースノードTimeBaseNodeのノードのフィールド及び機能の記述は、以下のようになる。
1) TimeBaseNode: Node {
2)   field Time mediaTime 0
3)   function void        evaluate(Time time)
4)   function void        addClient(TimedNode node)
5)   function void        removeClient(TimedNode node)
6)   function Int32       getNumClients()
7)   function TimedNode   getClient(Int32 index)
}
【００４２】
このオブジェクトは、メディアタイムmediaTimeを発生する全てのノードの親である。
【００４３】
コード部の２行目は、メディアタイムmediaTimeのフィールドを示し、メディアタイムmediaTimeのフィールドは、メディアタイムmediaTimeが進むと、必ずイベントを発生させる。メディアタイムmediaTimeのフィールドは、通常、取り出したオブジェクトにより制御される。
【００４４】
３行目は、評価機能（evaluate function）を示し、評価機能は、このタイムベースノードTimeBaseNodeがタイムイベントの受信に登録した関係を有する場合に、時間が進むと、シーンマネージャによって呼び出される。
【００４５】
４行目は、クライアント追加addClientの機能を示し、クライアント追加addClientの機能は、このタイムベースノードTimeBaseNodeがそのタイムベースフィールドに設定されたときに、各タイムドノードTimedNodeによって呼び出される。メディアタイムmediaTimeが開始、進行又は停止すると、リスト中の各クライアントが呼び出される。送られたノード（passed node）が既にクライアントである場合、この機能は何も動作を行わない。
【００４６】
５行目は、クライアント除去removeClientの機能を示し、クライアント除去removeClientの機能は、このタイムベースノードTimeBaseNodeがそのタイムベースフィールドに設定されなくなったときに、各タイムドノードTimedNodeによって呼び出される。送られたノードがクライアントリストにない場合、この機能は何も動作を行わない。
【００４７】
６行目は、クライアント数取得getNumClientsの機能を示し、クライアント数取得getNumClientsの機能は、クライアントリストに現在あるクライアントの数を返す。
【００４８】
７行目は、クライアント取得getClientの機能を示し、クライアント取得getClientの機能は、送られたインデックスでクライアントを返す。インデックスが有効範囲外にあるときは、ヌル（NULL）値が返される。
【００４９】
タイムベースTimeBase
以下のコード部は、タイムベースTimeBaseのノードを示している。タイムベースTimeBaseのノードのフィールドの記述は、以下のようになる。
1) TimeBase: TimeBaseNode {
2)   field Bool loop           false
3)   field Time startTime      0
4)   field Time playTime       0
5)   field Time stopTime       0
6)   field Time mediaStartTime 0
7)   field Time mediaStopTime  0
8)   field Float rate          1
9)   field Time duration       0
10)  field Bool enabled        true
11)  field Bool isActive       false
}
【００５０】
このオブジェクトは、メディアタイムmediaTimeの進行を制御する。タイムベースTimeBaseは、この値を開始、停止及び再開するだけでなく、メディアタイムmediaTimeのループを連続的に構成する。タイムベースTimeBaseにより、メディアタイムmediaTimeを、その範囲の一部に亘って再生することができる。
【００５１】
コード部の２行目において、ループのフィールドは、メディアタイムmediaTimeがその範囲の最後（travel）に達したときに、メディアタイムmediaTimeが進行を繰り返すか否かを制御する。
【００５２】
３行目において、開始時間startTimeのフィールドは、メディアタイムmediaTimeがいつ進行を開始するかを制御する。クロックタイムの単位である開始時間startTimeになると、タイムベースTimeBaseは動作を開始する。これは、停止時間stopTimeが開始時間startTime未満である場合にあてはまる。このとき、レート（rate）が０以上の場合、メディアタイムmediaTimeは、メディア開始時間mediaStartTimeの値に設定される。メディア開始時間mediaStartTimeが範囲外にある場合（メディア開始時間mediaStartTimeの有効範囲については、メディア開始時間mediaStartTimeの引数を参照されたい）、メディアタイムmediaTimeは、０に設定される。レートが０未満の場合、メディアタイムmediaTimeは、メディア停止時間mediaStopTimeに設定される。メディア停止時間mediaStopTimeが有効範囲外にある場合、メディアタイムmediaTimeは、継続時間に設定される。停止時間stopTimeになるまで、あるいはメディア停止時間mediaStopTimeになるまで（レートが０未満の場合、メディア開始時間mediaStartTimeになるまで）、タイムベースTimeBaseは動作し続ける。タイムベースTimeBaseが進行中に開始時間startTimeイベントが受信されると、これは無視される。
【００５３】
４行目及び５行目において、再生時間playTimeのフィールドは、メディアタイムmediaTimeが進行中にはリセットされないこと以外は、開始時間startTimeと同じように動作する。再生時間playTimeのフィールドにより、タイムベースTimeBaseが停止時間stopTimeで停止した後も、メディアタイムmediaTimeは進行し続けることができる。再生時間playTimeと開始時間startTimeの両方が同じ値を有する場合、開始時間startTimeが優先される。タイムベースTimeBaseが進行中に、再生時間playTimeのイベントが受信されると、このイベントは無視される。停止時間stopTimeのフィールドは、タイムベースTimeBaseがいつ停止するかを制御する。
【００５４】
６行目において、メディア開始時間mediaStartTimeのフィールドは、メディアタイムmediaTimeが進行するメディア継続時間のサブ範囲（subrange）の開始を設定する。メディア開始時間mediaStartTimeの範囲は、ゼロから継続時間の終了まで（０〜継続時間）である。メディア開始時間mediaStartTimeの値が有効範囲外にある場合は、代わりに０が用いられる。
【００５５】
７行目において、メディア停止時間mediaStopTimeのフィールドは、メディアタイムmediaTimeが進行するメディア継続時間のサブ範囲の終了を設定する。メディア停止時間mediaStopTimeの範囲は、ゼロから継続時間の終了まで（０〜継続時間）である。メディア停止時間mediaStopTimeの値が有効範囲外にある場合、代わりに継続時間が用いられる。
【００５６】
８行目において、レートのフィールドにより、メディアタイムmediaTimeは、クロックタイムの１秒毎以外のレートで動作することができる。レートのフィールドに設定されたレートは、瞬時レートとして使用される。評価機能が呼び出されたとき、最後の呼出からの経過時間にレートが乗算され、その結果が現在のメディアタイムmediaTimeに加算される。
【００５７】
９行目において、継続時間のフィールドは、このタイムベースTimeBaseの全てのクライアントの継続時間が各クライアントの継続時間を決定したときに、イベントを発生させる。継続時間のフィールドの値は、最長の継続時間を有するクライアントと同じである。
【００５８】
１０行目において、イネーブルド（enabled）フィールドは、タイムベースTimeBaseをイネーブルにする。イネーブルドフィールドが偽（false）になったとき、アクティブisActiveのフィールドが真（true）であり、メディアタイムmediaTimeが進行を停止した場合、アクティブisActiveのフィールドは偽となる。アクティブisActiveのフィールドがある間は、開始時間startTime及び再生時間playTimeは無視される。イネーブルドフィールドが真になると、開始時間startTime及び再生時間playTimeが評価され、タイムベースTimeBaseが進行を開始すべきか否が判定される。開始すべきと判定された場合、開始時間startTime又は再生時間playTimeに対して説明した動作が実行される。
【００５９】
１１行目は、アクティブisActiveのフィールドを示し、アクティブisActiveのフィールドは、タイムベースTimeBaseがアクティブとなったときに、真のイベントを発生させ、タイムベースTimeBaseが非アクティブとなったときに、偽のイベントを発生させる。
【００６０】
キューノードCueNode
以下のコード部は、キューノードCueNodeのノードを示している。キューノードCueNodeのノードのフィールドの記述は、以下のようになる。
1) CueNode: Node {
2)   field Float offset    -1
3)   field Float delay     0
4)   field Bool enabled    true
5)   field Int32 direction 0
6)   function void updateStartTime(Time now, Time mediaTime, Float rate)
7)   function void updateStopTime(Time now, Time mediaTime, Float rate)
8)   function Time evaluate(Time accumulated, Time now, Time mediaTime, Float rate)
9)  function Time getAccumulatedTime(Time accumulated)
10)  function void fire(Time now, Time mediaTime)
}
【００６１】
このオブジェクトは、スコアScoreのキューリストにある全てのオブジェクトの親である。
【００６２】
コード部の２行目において、オフセットoffsetのフィールドは、シーケンスの開始からの０相対オフセット（0 relative offset）を設定する。例えば、入力メディアタイムmediaTimeの値が５に達したときに、値５はキューノードCueNodeを発生（fire）する。
【００６３】
３行目において、遅延（delay）のフィールドは、キューノードCueNode発生前の相対的な遅延を設定する。オフセットが−１（デフォルト）以外の値である場合、この遅延は、オフセットから計られる。それ以外の場合、遅延は、前のキューノードCueNodeの終了から計られ、あるいは最初のキューノードCueNodeの場合には０から計られる。例えば、オフセットの値が５、遅延の値が２である場合、このノードは、メディアタイムmediaTimeが７になったときに発生される。オフセットの値が−１、遅延の値が２である場合、このノードは、前のキューノードCueNodeの終了から２秒後に発生される。
【００６４】
４行目において、イネーブルドフィールドが偽である場合、キューノードCueNodeは、ディセーブル（disabled）される。キューノードCueNodeは、そのオフセット及び遅延の値がデフォルトであるかのように動作し、イベントを発することはない。真の場合、キューノードCueNodeは、通常に動作する。
【００６５】
５行目において、方向（direction）のフィールドは、このノードがメディアタイムmediaTimeの進行方向に対して相対的にどのように発生されるかを制御する。この方向のフィールドが０の場合、メディアタイムmediaTimeが増加しているか（ゼロより大きいレートであるか）、減少しているか（ゼロより小さいレートであるか）に関わらず、このノードは、そのノードのオフセット及び／又は遅延の値に達したときに発生される。方向のフィールドがゼロ未満の場合、メディアタイムmediaTimeが減少しているときに、このノードは、オフセット及び／又は遅延の値に達したときのみ発生される。方向のフィールドがゼロより大きい場合、メディアタイムmediaTimeが増加しているときに、このノードは、オフセット及び／又は遅延の値に達したときのみ発生される。
【００６６】
６行目は、開始時間更新updateStartTimeの機能を示し、開始時間更新updateStartTimeの機能は、親スコアScoreが開始時間更新updateStartTime（）機能の呼出を受信したときに、呼び出される。各キューノードCueNodeは、順番に呼び出される。
【００６７】
７行目は、停止時間更新updateStopTimeの機能を示し、停止時間更新updateStopTimeの機能は、親スコアScoreが停止時間更新updateStopTime（）機能の呼出を受信したときに、呼び出される。各キューノードCueNodeは、順番に呼び出される。
【００６８】
８行目は、評価機能を示し、評価機能は、親スコアScoreがメディアタイム更新updateMediaTime（）機能の呼出を受信したときに、呼び出される。各キューノードCueNodeは、順番に呼び出され、その累積時間を返さなければならない。例えば、オフセットの値が５、遅延の値が２である場合、キューノードCueNodeは値７を返す。オフセットの値が−１、遅延の値が２である場合、キューノードCueNodeは、入力累積時間に２を加えた値を返す。これは、デフォルトの動作である。幾つかのキューノードCueNode（例えば、間隔キューIntervalCue等）は、発生時間だけではなく、明確に定義された継続時間も有する。
【００６９】
９行目において、累積時間取得getAccumulatedTimeの機能は、評価（）機能におけるのと同じ計算を用いて、累積時間を返す。
【００７０】
１０行目は、発生（fire）機能を示し、発生機能は、キューノードCueNodeがその発生時間に達したときに、デフォルトの評価（）機能から呼び出される。発生機能は、適切な動作を行うために取り出された特定のオブジェクトによって無効にされる。
【００７１】
メディアキューMediaCue
以下のコード部は、メディアキューMediaCueのノードを示している。メディアキューMediaCueのノードのフィールドの記述は、以下のようになる。
1) MediaCue: CueNode TimeBaseNode {
2)   field Time mediaStartTime 0
3)   field Time mediaStopTime  0
4)   field Time duration       0
5)   field Bool isActive       false
}
【００７２】
このオブジェクトは、このキューノードCueNodeがアクティブのときに、メディアタイムmediaTimeの進行を制御する。メディアキューMediaCueにより、その範囲の一部に亘ってメディアタイムmediaTimeを再生することができる。メディアキューMediaCueは、オフセット及び／又は遅延のフィールドによって決定される時間から開始して、メディア停止時間mediaStopTimeからメディア開始時間mediaStartTimeを減算することよって決定される時間の長さ分、アクティブとなる。累積時間取得getAccumulatedTime（）から返されるメディアキューMediaCueの値は、メディア停止時間mediaStopTimeにデフォルトの機能を加算し、メディア開始時間mediaStartTimeを減算することにより計算される値である。このノードは、アクティブ期間中にメディアタイムmediaTimeを生成し、メディアタイムmediaTimeは、発生時間とメディア開始時間mediaStartTimeを足した値を、入力メディアタイムmediaTimeから減算することにより計算される。したがって、メディアキューMediaCueは、入力メディアタイムmediaTimeと同じレートでメディアタイムmediaTimeを進行させる。
【００７３】
コード部の２行目において、メディア開始時間mediaStartTimeのフィールドは、メディアタイムmediaTimeが進行するメディア継続時間のサブ範囲の開始を設定する。メディア開始時間mediaStartTimeの範囲は、ゼロから継続時間の終了まで（０〜継続時間）である。メディア開始時間mediaStartTimeのフィールドの値が有効範囲外にある場合、代わりに０が用いられる。
【００７４】
３行目において、メディア停止時間mediaStopTimeのフィールドは、メディアタイムmediaTimeが進行するメディア継続時間のサブ範囲を設定する。メディア停止時間mediaStopTimeの範囲は、ゼロから継続時間の終了まで（０〜継続時間）である。メディア停止時間mediaStopTimeのフィールドの値が有効範囲外にある場合、代わりに継続時間が用いられる。
【００７５】
４行目において、継続時間のフィールドは、このタイムベースノードTimeBaseNodeの全てのクライアントの継続時間がそれぞれの継続時間を決定したときに、イベントを発生させる。継続時間のフィールドの値は、最長の継続時間を有するクライアントと同じである。
【００７６】
５行目は、アクティブisActiveのフィールドを示し、アクティブisActiveのフィールドは、このノードがアクティブになると真のイベントを発生させ、非アクティブになると偽のイベントを発生させる。
【００７７】
間隔キューIntervalCue
以下のコード部は、間隔キューIntervalCueのノードを示している。間隔キューIntervalCueのノードのフィールドの記述は、以下のようになる。
1)  IntervalCue: CueNode {
2)    field Float period   1
3)    field Bool rampUp    true
4)    field Float fraction 0
5)    field Bool isActive  false
}
【００７８】
このオブジェクトは、時間が進むにつれて０から１になる（ランプアップ（rampUp）が偽である場合は１から０になる）フラクションイベントを送る。
【００７９】
コード部の２行目は、周期（period）のフィールドを示し、周期のフィールドは、フラクションランプ（fraction ramp）が進行する時間を秒単位で決定する。
【００８０】
３行目において、ランプアップのフィールドが真（デフォルト）である場合、フラクションは、間隔キューIntervalCueの継続時間に亘って０から１に増加する。偽の場合、フラクションは１から０に減少する。メディアタイムmediaTimeが逆行している場合（レートがゼロ未満の場合）、フラクションは、ランプアップのフィールドが真のときに１から０に減少し、ランプアップのフィールドが偽のときに０から１に増加する。
【００８１】
４行目において、フラクションのフィールドは、このノードがアクティブである間に、各呼出によってイベントを評価（）に送る。メディアタイムmediaTimeが前進している場合、フラクションは、このノードが発生されているときには出力を開始し、このノードが発生時間に周期を足した時間に達すると停止する。フラクションの値は、以下のようになる。
フラクション＝（mediaTime−発生時間）×周期          （２）
【００８２】
５行目は、アクティブisActiveのフィールドを示し、アクティブisActiveのフィールドは、ノードがアクティブになると真のイベントを送り、ノードが非アクティブになると偽のイベントを送る。メディアタイムmediaTimeが前進している場合、ノードは、メディアタイムmediaTimeが発生時間以上になると、アクティブになる。このノードは、メディアタイムmediaTimeが発生時間に周期を足した時間以上になると、非アクティブになる。メディアタイムmediaTimeが逆行している場合、ノードは、メディアタイムmediaTimeが発生時間に周期を足した時間以下になると、アクティブになり、メディアタイムmediaTimeが発生時間以下になると、非アクティブになる。これらのイベントの発生は、方向のフィールドによって影響される。
【００８３】
フィールドキューFieldCue
以下のコード部は、フィールドキューFieldCueのノードを示している。フィールドキューFieldCueのノードのフィールドの記述は、以下のようになる。
1) FieldCue: CueNode {
2)   field Field cueValue NULL
3)   field Field cueOut   NULL
}
【００８４】
このオブジェクトは、フィールドキューFieldCueが発生されたときに、キュー値cueValueをイベントとしてキューアウトcueOutに送る。フィールドキューFieldCueによって、あらゆる種類のフィールドを設定し、送ることができる。キューアウトcueOutの値は、あらゆる種類のフィールドに対してもルーティングすることができる。キュー値cueValueの現在の種類が、宛先フィールドの種類と互換性がない場合、未定義の結果が生じる可能性がある。
【００８５】
コード部の２行目において、キュー値cueValueのフィールドは、このノードが発生されたときに発せられる書かれた値である。
【００８６】
３行目は、キューアウトcueOutのフィールドを示し、キューアウトcueOutのフィールドは、このノードが発生されたときのキュー値cueValueの値を有するイベントを送る。
【００８７】
タイムキューTimeCue
以下のコード部は、タイムキューTimeCueのノードを示している。タイムキューTimeCueのノードのフィールドの記述は、以下のようになる。
1) TimeCue: CueNode {
2)    field Time cueTime 0
}
【００８８】
このオブジェクトは、タイムキューTimeCueが発生されたときに、現在のクロックタイムをイベントとしてキュータイムcueTimeに送る。
【００８９】
コード部の２行目は、キュータイムcueTimeのフィールドを示し、キュータイムcueTimeのフィールドは、このノードが発生されたときに、現在のクロックタイムを有するイベントを送る。
【００９０】
リアルタイムのシーン合成（real-time scene composition）のコンテキストにおけるスコアリング構成（scoring construct）により、制作者は、広範囲に亘る表示（presentation）及び再生方法に関する時間的な制御を宣言的に記述することができる。これらの表示及び再生方法には、画像のフリップブック（flipbooks）及び画像の合成アニメーション（例えばアニメーション化されたＧＩＦ）；ビデオ及びオーディオのクリップ及びストリーム；ジョイント変換（joint transformation）、ジオメトリ変換（geometry morph）、テクスチャ座標（texture coordinate）等の幾何学的アニメーションのクリップ及びストリーム；照明、フォッグ（fog）、透明度等の描画パラメータのアニメーション；動き、シミュレーション又は生成方式のパラメータの変調；メディア資産のローディング、イベントのルーティング、論理機能の動的な制御等が含まれる。例えば、以下の具体例では、画像資産をプリロードするためのストリングを発した後、その画像を用いてアニメーションを行い、そして、映画を動作させる。また、以下の具体例におけるストリングは、逆に動作させることもできる（すなわち、映画を逆向きに再生した後、アニメーションを逆向きに再生し、画像が消える）。
【００９１】
1)   Score{
2)     timeBase DEF TB TimeBase{}
3)     cue[
4)       Fieldcue{
5)          cueValue String “ ”
6)          cueOut TO ISURF.URL
7)          direction -1
8)       }
9)       FieldCue{
10)         cueValue String “image1.png”
11)         cueOut TO ISURF.url
12)         direction -10
13)      }
14)      IntervalCue{
15)         delay 0.5
16)         period 2.5  #2.5 second animation
17)         fraction TO PI.fraction
18)      }
19)      DEF MC MediaCue{
20)         offset 2
21)      }
22)      Fieldcue{
23)         cueValue String “ ”
24)         cueOut TO ISURF.URL
25)         direction 1
26)         delay -0.5
27)      }
28)      Fieldcue{
29)         cueValue String “image1.png”
30)         cueOut TO ISURF.URL
31)         direction -1
32)         delay -0.5
33)      }
34)     ]
35)   }
36)   # Slide out imageran
37)   DEF T Transform{
38)     children Shape{
39)      appearance Appearance{
40)         texture Texture{
41)           surface DEF ISURF ImageSurface{}
42)         }
43)       }
44)       geometry IndexedFaceSet{…}
45)     }
46)   }
47)   DEF PI PositionInterpolator{
48)     key …
49)     keyValue …
50)     value TO T.translation
51)   }
52)        # Movie
53)   Shape{
54)     appearance Appearance{
55)       texture Texture{
56)         surface MovieSurface{
57)           url “myMovie.mpg”
58)           timeBase USE MC
59)         }
60)       }
61)     }
62)     geometry IndexedFaceSet{…}
63)   }
【００９２】
スコアScore内の全てのキューノードCueNodeは、タイムベースTimeBaseのメディアタイムmediaTimeに対して相対的に発生し、共通の参照情報を提供することにより、様々なメディア資産のタイミング間の正確な関係が得られる。上述のコード部において、フィールドキューFieldCue（９行目）は、タイムベースTimeBaseが開始すると直ちに発生する。これは、このフィールドキューFieldCueがデフォルトのオフセット及び遅延のフィールドを有し、これによって、画像を出現させるからである。コード部の３３〜４５行目において、面に画像（図２Ａ中の２００）をローディングする。そして、間隔キューIntervalCue（１３行目）が０．５秒後に開始し、次の２．５秒間動作して、そのフラクション出力を０から１に増加させる。間隔キューIntervalCueの発生により、画像のアニメーション（図２Ａ中の２０２）を開始する。４６〜５０行目において、アニメーションを制御する。タイムベースTimeBaseの開始から２秒後に、あるいは、間隔キューIntervalCueがそのアニメーションの１．５秒のところであるときに、メディアキューMediaCue（１８行目）が開始し、それによって、映画を開始する。５１〜６２行目では、映画の最初のフレーム（図２Ａ中の２０４）を面にローディングする。このストリングが逆向きに再生されるときは、まず、映画が逆向きに再生される。そして、０．５秒後に画像が現れ、画像が現れてから０．５秒後にアニメーションが開始する。アニメーションは、２．５秒間逆向きに再生されてから停止し、その０．５秒後に画像が消える。この具体例は、キューCueを互いに又はタイムベースTimeBaseからオフセットさせる可能性を示し、後続のキューCueの終了前に次のキューCueが開始できることを示している。
【００９３】
メディアキューMediaCueは、制作者に同期ツールを与える。メディアキューMediaCueは、タイムベースTimeBaseのように正確に動作するキューCueの一形式である。実際、メディアキューMediaCueは、上述した具体例に示すように、タイムベースTimeBaseが使用できる箇所で使用することができる。しかしながら、メディアキューMediaCueは、タイミングが取られたイベントシーケンスに埋め込まれていることから、実行装置（implementation）は、メディア資産へのプリローディングを要求するのに十分な情報を有している。図２Ｂは、プリローディングを必要とする図２Ａのメディアシーケンスの同期を示す。例えば、上述の具体例では、実行装置が、映画のプリローディングに０．５秒かかり、直ぐに再生されることを知っている場合、タイムベースTimeBaseの開始から１．５秒間待機した後（ステップ２１０）、ステップ２１５において「準備（get ready）」信号をムービーサーフェスMovieSurfaceに送る。準備信号を受信すると、ステップ２２０において、映画をプリローディングする。これにより、プリローディングに必要な０．５秒が得られる。ステップ２２５において、開始要求を受信するために待機し、開始要求を受信すると、ステップ２３０において、直ちに映画を開始する。
【００９４】
「ブレンド（Blendo）」によって可能とされるタイムベースTimeBaseとメディアの順序制御（sequencing）機能とを組み合わせることにより、複雑なタイミングで表示を行うことが可能となる。図３は、ブレンドによる表示の様々な構成要素の時間的関係を示す。視聴者は、ニュース表示（３６０）を選択すると、記事（story）（３６２）を選択できる画面が見られる。ユーザが、５つの記事Ｓ１、Ｓ２、Ｓ３、Ｓ４、Ｓ５からなる選択肢から記事Ｓ３を選択すると、アナウンサが付いた初期画面が表示される（３６４）。初期画面上において、視聴者は、別の記事（３７４）への切換を選択することができ、これにより、記事Ｓ３が中断される。歓迎文の後、画面は、記事（３６６）のサイトに移行し、選択された記事が再生される（３６８）。このとき、視聴者は、次の記事や前の記事への移動、現在の記事の巻き戻し、記事Ｓ３の拡張バージョン（３７０）の再生、あるいは、例えば別の記事Ｓ５へのジャンプを行うことができる。選択された記事の再生後、ユーザは、次の選択を行うことができる。
【００９５】
なお、本発明は、「ブレンド」から独立しており、ブレンドとは別の実施形態の一部とすることができる。また、本発明は、２次元シーンの描画及び３次元シーンの描画にも同様に適用することができる。
【００９６】
本発明を、特定の実施形態について説明したが、広い意味で本発明の特徴から逸脱することなく、変更や修正を行うことができることは、当業者にとって明らかである。したがって、特許請求の範囲は、このような変更や修正が本発明の趣旨及び範囲内であるとして、これらの変更や修正を全て含むものである。
【図面の簡単な説明】
【００９７】
【図１Ａ】ブレンド（Blendo）の基本的なアーキテクチャを示す図である。
【図１Ｂ】ブレンドエンジンによるコンテンツの流れを示すフローチャートである。
【図２Ａ】あるスコアにおけるメディアシーケンス間の時間的関係を示す図である。
【図２Ｂ】プリローディングを必要とする図２に示すメディアシーケンスの同期を説明する図である。
【図３】１つのインタラクティブ表示について様々な構成メディア化の時間的関係を示す図である。
【国際調査報告】
2006505049.tif 000008
2006505049.tif 000009