(57)【要約】  一実施形態では、方法および機器は、オーサリング装置からリモート装置にオーサリング済みコンテンツを送信し、リモート装置上でオーサリング済みコンテンツを直接再生し、オーサリング装置上でオーサリング済みコンテンツの一部を監視すると同時に、リモート装置上でオーサリング済みコンテンツのその一部を再生し、オーサリング済みコンテンツが宣言型マークアップ言語でスクリプティングされる。
2008518286.tif 000002
【特許請求の範囲】
【請求項１】
オーサリング装置からリモート装置にオーサリング済みコンテンツを送信すること、
前記リモート装置上で前記オーサリング済みコンテンツを直接再生すること、および
前記オーサリング装置上でオーサリング済みコンテンツの一部を監視すると同時に、前記リモート装置上で前記オーサリング済みコンテンツの前記一部を再生すること
を含む方法であって、
前記オーサリング済みコンテンツが宣言型マークアップ言語でスクリプティングされる方法。
【請求項２】
前記オーサリング装置上で前記オーサリング済みコンテンツの前記一部を修正すると同時に、前記リモート装置上で前記オーサリング済みコンテンツの前記一部を再生することをさらに含む請求項1に記載の方法。
【請求項３】
直接再生することが、前記オーサリング済みコンテンツに対応する複数のイメージを表示することをさらに含む請求項1に記載の方法。
【請求項４】
直接再生することが、前記オーサリング済みコンテンツに対応するオーディオ信号を直接再生することをさらに含む請求項1に記載の方法。
【請求項５】
前記オーサリング装置上で前記オーサリング済みコンテンツを作成することをさらに含む請求項1に記載の方法。
【請求項６】
前記オーサリング済みコンテンツを作成することが、前記オーサリング装置上に常駐するツールを利用して前記オーサリング済みコンテンツを作成することをさらに含む請求項5に記載の方法。
【請求項７】
前記ツールが(example here)である請求項6に記載の方法。
【請求項８】
前記オーサリング装置上で前記オーサリング済みコンテンツの前記一部をデバッグすると同時に、前記リモート装置上で前記オーサリング済みコンテンツの前記一部を再生することをさらに含む請求項1に記載の方法。
【請求項９】
前記オーサリング装置から前記リモート装置上の前記オーサリング済みコンテンツを制御することをさらに含む請求項1に記載の方法。
【請求項１０】
前記オーサリング済みコンテンツを制御することが、前記リモート装置上の前記オーサリング済みコンテンツの再生を開始することをさらに含む請求項9に記載の方法。
【請求項１１】
前記オーサリング済みコンテンツを制御することが、前記リモート装置上の前記オーサリング済みコンテンツの再生を休止することをさらに含む請求項9に記載の方法。
【請求項１２】
前記オーサリング済みコンテンツを制御することが、前記リモート装置上の前記オーサリング済みコンテンツの再生位置を早送りすることをさらに含む請求項9に記載の方法。
【請求項１３】
前記オーサリング済みコンテンツを制御することが、前記リモート装置上の前記オーサリング済みコンテンツの再生位置を巻戻しすることをさらに含む請求項9に記載の方法。
【請求項１４】
前記リモート装置がゲーム機、セル電話、携帯情報端末、セットトップボックス、およびページャのうちの1つである請求項1に記載の方法。
【請求項１５】
前記オーサリング装置がパーソナルコンピュータである請求項1に記載の方法。
【請求項１６】
オーサリング装置からリモート装置にオーサリング済みコンテンツを送信する手段と、
前記リモート装置上で前記オーサリング済みコンテンツを直接再生する手段と、
前記オーサリング装置上でオーサリング済みコンテンツの一部を監視すると同時に、前記リモート装置上で前記オーサリング済みコンテンツの前記一部を再生する手段と
を備えるシステムであって、
前記オーサリング済みコンテンツが宣言型マークアップ言語でスクリプティングされるシステム。
【請求項１７】
オーサリング装置上でオーサリング済みコンテンツを修正することであって、前記オーサリング済みコンテンツが宣言型マークアップ言語でスクリプティングされること、
前記オーサリング装置からリモート装置に前記オーサリング済みコンテンツを送信すること、および
前記リモート装置上でオーサリング済みコンテンツの一部を再生すると同時に、前記オーサリング装置から前記リモート装置に前記オーサリング済みコンテンツを送信すること
を含む方法。
【請求項１８】
前記オーサリング装置上で前記オーサリング済みコンテンツの一部を監視すると同時に、前記リモート装置上で前記オーサリング済みコンテンツの前記一部を再生することをさらに含む請求項17に記載の方法。
【請求項１９】
前記オーサリング装置上で前記オーサリング済みコンテンツの前記一部をデバッグすると同時に、前記リモート装置上で前記オーサリング済みコンテンツの前記一部を再生することをさらに含む請求項17に記載の方法。
【請求項２０】
前記オーサリング済みコンテンツに対応する複数のイメージを表示することをさらに含む請求項17に記載の方法。
【請求項２１】
前記オーサリング済みコンテンツに対応するオーディオ信号を直接再生することをさらに含む請求項17に記載の方法。
【請求項２２】
前記オーサリング装置上で前記オーサリング済みコンテンツを作成することをさらに含む請求項1に記載の方法。
【請求項２３】
前記オーサリング済みコンテンツを作成することが、前記オーサリング装置上に常駐するツールを利用して前記オーサリング済みコンテンツを作成することをさらに含む請求項22に記載の方法。
【請求項２４】
前記ツールが(example here)である請求項23に記載の方法。
【請求項２５】
前記オーサリング装置から前記リモート装置上の前記オーサリング済みコンテンツを制御することをさらに含む請求項17に記載の方法。
【請求項２６】
前記オーサリング済みコンテンツを制御することが、前記リモート装置上の前記オーサリング済みコンテンツの再生を開始することをさらに含む請求項25に記載の方法。
【請求項２７】
前記オーサリング済みコンテンツを制御することが、前記リモート装置上の前記オーサリング済みコンテンツの再生を休止することをさらに含む請求項25に記載の方法。
【請求項２８】
前記オーサリング済みコンテンツを制御することが、前記リモート装置上の前記オーサリング済みコンテンツの再生位置を早送りすることをさらに含む請求項25に記載の方法。
【請求項２９】
前記オーサリング済みコンテンツを制御することが、前記リモート装置上の前記オーサリング済みコンテンツの再生位置を巻戻しすることをさらに含む請求項25に記載の方法。
【請求項３０】
前記リモート装置がゲーム機、セル電話、携帯情報端末、セットトップボックス、およびページャのうちの1つである請求項17に記載の方法。
【請求項３１】
前記オーサリング装置がパーソナルコンピュータである請求項17に記載の方法。
【請求項３２】
オーサリング済みコンテンツを修正するオーサリング装置であって、前記オーサリング済みコンテンツが宣言型マークアップ言語でスクリプティングされるオーサリング装置と、
前記オーサリング済みコンテンツを再生するように構成されたリモート装置と、
前記オーサリング装置から前記リモート装置に前記オーサリング済みコンテンツをストリーミングするように構成されたネットワークと
を備えるシステムであって、
前記オーサリング済みコンテンツの初期部分が前記リモート装置によって使用されるのと同時に、前記オーサリング済みコンテンツの残りの部分が前記リモート装置にストリーミングされるシステム。
【請求項３３】
前記リモート装置によって受信された前記オーサリング済みコンテンツをバッファリングするために前記リモート装置内に記憶モジュールをさらに備える請求項32に記載のシステム。
【請求項３４】
前記リモート装置がゲーム機、セル電話、携帯情報端末、セットトップボックス、およびページャのうちの1つである請求項32に記載のシステム。
【請求項３５】
前記オーサリング装置がパーソナルコンピュータである請求項32に記載のシステム。
【請求項３６】
前記ネットワークがインターネットである請求項32に記載のシステム。
【請求項３７】
オーサリング装置上でオーサリング済みコンテンツを修正することであって、前記オーサリング済みコンテンツが宣言型マークアップ言語でスクリプティングされること、
前記オーサリング装置からリモート装置に前記オーサリング済みコンテンツを送信すること、および
前記リモート装置上で前記オーサリング済みコンテンツの一部を再生すると同時に、前記オーサリング装置から前記リモート装置に前記オーサリング済みコンテンツを送信すること
を含む方法を実施するコンピュータ実行可能命令を有するコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、(i)参照により全体が本明細書に組み込まれる1999年8月3日出願の米国仮出願第60,146,972号に対する優先権を主張する、参照により全体が本明細書に組み込まれる現在は米国特許第6,607,456号である2000年8月3日出願の米国本出願09/632,351号の継続出願である、参照により全体が本明細書に組み込まれる2003年11月12日出願の米国本出願10/712,858号の一部継続出願であり、かつ(ii)参照により全体が本明細書に組み込まれる1999年8月3日出願の米国仮出願第60/147,092号に対する優先権を主張する、参照により全体が本明細書に組み込まれる2000年8月3日出願の米国本出願第09/632,350号の一部継続出願である、2003年11月12日出願の2004年9月9日出願の米国本出願第10/938,106号の優先権を主張するものである。上記の特許および特許のそれぞれに対する優先権が主張される。
【０００２】
本発明は、一般には宣言型コンテンツのオーサリングに関し、より詳細には、リモートプラットフォーム用の宣言型コンテンツのオーサリングに関する。
【背景技術】
【０００３】
ゲーム機（ゲーミングコンソール）、携帯電話、携帯情報端末などの様々なターゲット装置に対するコンテンツをオーサリングすることは通常、オーサリング装置プラットフォーム上で行われる。Windows(登録商標)が動作するパーソナルコンピュータなどの広く使用されているプラットフォームを利用することにより、作者は、オーサリングするコンテンツの作成、編集、修正のために広く入手可能なツールを利用することができる。ある場合には、こうしたターゲット装置は、オーサリング装置プラットフォームと相互交換可能ではない固有かつメーカ独自のプラットフォームを有する。パーソナルコンピュータをオーサリング装置として利用してコンテンツを作成することは、ターゲット装置のプラットフォーム内のコンテンツをオーサリングするよりもしばしば容易である。一般に、ターゲット装置のプラットフォーム上では利用不可能な多くの追加のツールおよび資源が、パーソナルコンピュータプラットフォーム上では利用可能である。
【０００４】
オーサリング済みコンテンツをデバッグおよび微調整するために、オーサリング済みコンテンツを実際のターゲット装置上で閲覧することがしばしば必要となる。しかし、オーサリング装置プラットフォームからターゲット装置プラットフォームにオーサリング済みコンテンツを送信することは、実際のターゲット装置上でオーサリング済みコンテンツを閲覧することができるようになる前に実際のターゲット装置上で再コンパイルされるバイナリ実行可能ファイルの形式でオーサリング済みコンテンツを送信することが必要となることがある。バイナリ実行可能ファイルコードを再コンパイルする追加のステップにより、ターゲット装置上でオーサリング済みコンテンツを閲覧することが遅延する。
【０００５】
オーサリング装置プラットフォーム上でオーサリング済みコンテンツをデバッグおよび微調整することは、ターゲット装置プラットフォーム上でオーサリング済みコンテンツを修正することと比較してしばしば有利である。遺憾ながら、ターゲット装置上でバイナリ実行可能ファイルを利用することは、オーサリング装置プラットフォーム上でオーサリング済みコンテンツをデバッグおよび微調整する作者の能力の妨げとなる。
【発明の開示】
【０００６】
一実施形態では、方法および機器は、オーサリング装置からリモート装置にオーサリング済みコンテンツを送信し、リモート装置上でオーサリング済みコンテンツを直接再生し、オーサリング装置上のオーサリング済みコンテンツの一部を監視すると同時に、リモート装置上でオーサリング済みコンテンツのその一部を再生し、オーサリング済みコンテンツが宣言型マークアップ言語でスクリプティングされる。
【０００７】
本明細書に組み込まれ、本明細書の一部を構成する添付の図面は、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の一実施形態を説明する。
【発明を実施するための最良の形態】
【０００８】
以下のリモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の詳細な説明では、添付の図面を参照する。この詳細な説明は、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器を限定するものではない。むしろ、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の範囲は、添付の特許請求の範囲およびその均等物によって限定される。本発明に適合する他の多数の実装が可能であることを当業者は理解されよう。
【０００９】
「装置」に対する参照は、コンピュータ、ポータブルコンピュータ、携帯情報端末、携帯電話、ゲーム機、およびコンテンツを処理することのできる装置などのユーザによって利用される装置を含む。
【００１０】
「コンテンツ」に対する参照は、静的なシーンと動的なシーンの両方のグラフィカル表現、オーディオ表現などを含む。
【００１１】
「シーン」に対する参照は、特定の方式で提示されるように構成されたコンテンツを含む。
【００１２】
一実施形態では、リモートプラットフォームに関する宣言型コンテンツをオーサリングする方法および機器は、オーサリング装置がリモート装置上で使用されるコンテンツを作成することを可能にする。一実施形態では、オーサリング装置は、周知のツールおよびインターフェースを利用してコンテンツを作成する。例えば、例示的オーサリング装置には、Windows(登録商標)、Apple(登録商標)、およびLinux(登録商標)ベースのパーソナルコンピュータなどのパーソナルコンピュータが含まれる。一実施形態では、リモート装置は、オーサリング装置を介してオーサリングされたコンテンツを利用するように構成される。例えば、例示的リモート装置は、Sony PlayStation(登録商標)アプリケーションを利用するゲームコンソールである。
【００１３】
一実施形態では、オーサリング装置は、宣言型言語を利用してオーサリング済みコンテンツを作成する。1つのそのような宣言型言語が、明細書内に示されるコードスニペットで示される。宣言型言語の使用により、オーサリングされるコンテンツをオーサリング装置から直接スクリプティングすることができる。さらに、オーサリング装置上で作成されるオーサリング済みコンテンツは、具体的にはリモート装置上で使用するために開発される。一例として、パーソナルコンピュータ上で作成されたオーサリング済みコンテンツが、ゲーム機上で利用されるように構成される。
【００１４】
一実施形態では、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器は、オーサリング装置上で作成されたオーサリング済みコンテンツをリモート装置が直接利用することを可能にする。さらに、オーサリング済みコンテンツがオーサリング装置から送信され、リモート装置上で再コンパイルすることなくリモート装置上で直接再生される。例えば、オーサリング装置からリモート装置にオーサリング済みコンテンツをストリーミングするのと同時に、オーサリング済みコンテンツの一部を再生することができる。オーサリング済みコンテンツをリモート装置上で直接再生することにより、オーサリング済みコンテンツをオーサリング装置上で修正およびデバッグすることが可能となる。
【００１５】
図1は、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器が実装される環境を示す図である。この環境は、電子装置110(例えば、コンピュータ、携帯情報端末などのクライアント装置として動作するように構成されたコンピューティングプラットフォーム)、ユーザインターフェース115、ネットワーク120(例えばローカルエリアネットワーク、ホームネットワーク、インターネット)、およびサーバ130(例えば、サーバとして動作するように構成されたコンピューティングプラットフォーム)を含む。
【００１６】
一実施形態では、1つまたは複数のユーザインターフェース115構成要素が電子装置110と一体化される(例えば、携帯情報端末などの同一の筐体内のキーパッドおよびビデオディスプレイ画面入出力インターフェース)。他の実施形態では、1つまたは複数のユーザインターフェース115構成要素(例えば、キーボード、マウスやトラックボールなどのポインティングデバイスなど)、マイクロフォン、スピーカ、ディスプレイ、カメラが、電子装置110から物理的に分離され、通常通り電子装置110に結合される。一実施形態では、ユーザは、インターフェース115を利用して、電子装置110、サーバ130、またはネットワーク120を介して結合されたリモート記憶装置(図示せず)内に格納されたコンテンツおよびアプリケーションにアクセスし、それらを制御する。
【００１７】
本発明によれば、以下のリモートプラットフォーム用の宣言型コンテンツをオーサリングする各実施形態は、サーバ130内の電子装置110内の電子プロセッサによって実行され、または共に動作する電子装置110内のプロセッサとサーバ130内のプロセッサとによって実行される。図1では、サーバ130が単一のコンピューティングプラットフォームとして示されているが、他の例では、サーバとして動作する2つ以上の相互接続されたコンピューティングプラットフォームである。
【００１８】
一実施形態では、電子装置110は、ネットワーク120を介してオーサリング済みコンテンツを受信するように構成されたリモート装置である。別の実施形態では、電子装置110は、ネットワーク120を介してリモート装置用のオーサリング済みコンテンツを送信するように構成されたオーサリング装置である。
【００１９】
図2は、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器が実装される例示的アーキテクチャを示す略図である。この例示的アーキテクチャは、複数の電子装置110と、サーバ装置130と、電子装置110をサーバ130に接続し、各電子装置110を互いに接続するネットワーク120とを含む。複数の電子装置110はそれぞれ、電子プロセッサ208に結合されたランダムアクセスメモリなどのコンピュータ可読媒体209を含むように構成される。プロセッサ208は、コンピュータ可読媒体209内に格納されたプログラム命令を実行する。一実施形態では、図1を参照しながら説明したように、固有のユーザが、インターフェース115を介して各電子装置110を操作する。
【００２０】
サーバ装置130は、コンピュータ可読媒体212に結合されたプロセッサ211を含む。一実施形態では、サーバ装置130は、限定はしないが、データベース240などの2次データ記憶素子などの1つまたは複数の追加の外部装置または内部装置に結合される。
【００２１】
一例では、プロセッサ208および211は、カリフォルニア州サンタクララのIntel Corporationで製造される。他の例では、他のマイクロプロセッサが使用される。
【００２２】
一実施形態では、複数のクライアント装置110およびサーバ130は、リモートプラットフォーム用の宣言型コンテンツをオーサリングする命令を含む。一実施形態では、複数のコンピュータ可読媒体209および212は、カスタマイズされたアプリケーションを部分的に含む。さらに、この複数のクライアント装置110およびサーバ130は、カスタマイズされたアプリケーションと共に使用される電子メッセージを受信および送信するように構成される。同様に、ネットワーク120は、カスタマイズされたアプリケーションと共に使用される電子メッセージを送信するように構成される。
【００２３】
1つまたは複数のユーザアプリケーションが媒体209、媒体212内に格納され、または単一のユーザアプリケーションが1つの媒体209内に部分的に格納され、媒体212内に部分的に格納される。一例では、格納されたユーザアプリケーションは、格納場所の如何にかかわらず、以下で説明される実施形態を使用して決定されるリモートプラットフォーム用のオーサリング宣言型コンテンツに基づいてカスタマイズ可能にされる。
【００２４】
図3に、システム300の一実施形態を示す。一実施形態では、システム300がサーバ130内で実施される。別の実施形態では、システム300が電子装置110内で実施される。さらに別の実施形態では、システム300が電子装置110内とサーバ130内の両方で実施される。
【００２５】
一実施形態では、システム300は、コンテンツ送信モジュール310、コンテンツ検出モジュール320、記憶モジュール330、インターフェースモジュール340、および制御モジュール350を含む。
【００２６】
一実施形態では、制御モジュール350は、コンテンツ送信モジュール310、コンテンツ検出モジュール320、記憶モジュール330、およびインターフェースモジュール340と通信する。一実施形態では、制御モジュール350は、コンテンツ送信モジュール310、コンテンツ検出モジュール320、記憶モジュール330、およびインターフェースモジュール340の間のタスク、要求、および通信を調整する。
【００２７】
一実施形態では、コンテンツ送信モジュール310は、オーサリング装置によって作成されたオーサリング済みコンテンツを検出し、検出したリモート装置にオーサリング済みコンテンツを送信する。一実施形態では、リモート装置は、ゲーム機、セル電話、セットトップボックス、他の装置などの、オーサリング済みコンテンツを利用するように特に構成された装置である。
【００２８】
一実施形態では、コンテンツ検出モジュール320は、リモート装置によって利用されるときにオーサリング済みコンテンツの使用をオーサリング装置から監視する。リモート装置上で利用される間にオーサリング済みコンテンツを監視することにより、オーサリング装置でオーサリング済みコンテンツを改良および修正することが可能となる。さらに、リモート装置上でオーサリング済みコンテンツをほぼリアルタイムで監視することにより、オーサリング装置上でオーサリング済みコンテンツを改良および修正することがより便利になる。例えば、リモート装置は、追加のオーサリング済みコンテンツがオーサリング装置からリモート装置にストリーミングされるのと同時に、オーサリング済みコンテンツを監視することができる。
【００２９】
一実施形態では、記憶モジュール330はオーサリング済みコンテンツを格納する。一実施形態では、オーサリング済みコンテンツが、シーンの結果が明示的に記述される宣言型言語として格納される。さらに、オーサリング済みコンテンツはリモート装置と互換であり、オーサリング済みコンテンツを再コンパイルすることなくリモート装置で利用される。
【００３０】
一実施形態では、インターフェースモジュール340は、システム300を介するオーサリング装置からリモート装置へのオーサリング済みコンテンツの送信を示す電子装置110のうちの1つから信号を受信する。別の実施形態では、インターフェースモジュール340は、リモート装置上のオーサリング済みコンテンツの使用を示す電子装置110のうちの1つから信号を受信する。さらに別の実施形態では、インターフェースモジュール340は、オーサリング済みコンテンツがリモート装置上で利用中にオーサリング装置上でオーサリング済みコンテンツを監視することに応答して、信号を受信する。さらに、インターフェースモジュール340は、オーサリング装置がリモート装置上に配置されたオーサリング済みコンテンツの再生を制御することを可能にする。
【００３１】
図3のシステム300は例示のために示されており、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の一実施形態に過ぎない。リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の範囲から逸脱することなく、追加のモジュールをシステム300に追加することができる。同様に、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の範囲から逸脱することなく、モジュールを組み合わせ、または削除することができる。
【００３２】
図4に、システム300内でオーサリング済みコンテンツとして使用するために宣言型言語を利用する例示的システム411を示す。
【００３３】
一実施形態では、システム411は、様々なアプリケーションプログラマインターフェース(以後API)要素およびオブジェクトモデルをシステム411内に存在する1組のオブジェクトに提示するコアランタイムモジュール410を含む。一例では、ファイルがパーサ414によってローシーングラフ(raw scene graph)416として構文解析され、コアランタイムモジュール410に渡され、そのオブジェクトがインスタンス化され、ランタイムシーングラフが構築される。
【００３４】
オブジェクトを、組込みオブジェクト418、作者定義オブジェクト(author defined object)420、ネイティブオブジェクト424などの中に格納することができる。一実施形態では、オブジェクトは、1組の利用可能なマネージャ426を使用してプラットフォームサービス432を得る。こうしたプラットフォームサービス432は、イベント処理、アセットのロード、媒体の再生などを含む。一実施形態では、オブジェクトは、レンダリング層428を使用して、表示用の中間イメージまたは最終イメージを構成する。
【００３５】
一実施形態では、HTMLページやXMLページなどの外部環境に対してシステム411内のオーサリング済みコンテンツをインターフェースするのにページ統合構成要素430が使用される。別の実施形態では、外部環境は、ゲーム機、セル電話、および他のハンドヘルド装置などの他のプラットフォームを含む。
【００３６】
一実施形態では、システム411は、マネージャ426の組を参照するシステムオブジェクトを含む。各マネージャ426は、システム411のいくつかの面を制御するためのAPIの組を提供する。イベントマネージャ426Dは、ユーザ入力または環境イベントによって発生した着信システムイベントへのアクセスを提供する。ロードマネージャ426Cは、オーサリング済みコンテンツファイルのローディングおよびネイティブノード実装を容易にする。媒体マネージャ426Eは、オーディオ、イメージ、およびビデオ媒体アセットをロードし、制御し、再生する能力を提供する。レンダマネージャ(render manager)426Gは、シーンをレンダリングするのに使用されるオブジェクトの作成および管理を可能にする。シーンマネージャ426Aはシーングラフを制御する。表面マネージャ(surface manager)426Fは、シーン要素および他のアセットをその上に合成することのできる表面の作成および管理を可能にする。スレッドマネージャ426Bは、スレッドを生成および制御し、それらの間で通信する能力を作者に与える。
【００３７】
図5に、システム411を通るコンテンツの流れの概念的説明を流れ図として示す。流れ図内のブロックは、イベントの参加者に対してメッセージをポスティングする方法および機器の精神から逸脱することなく、異なるシーケンスで実施することができる。さらに、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の精神から逸脱することなく、ブロックを削除、追加、または結合することができる。
【００３８】
ブロック550では、プレゼンテーションが、コンテンツのファイルまたはストリーム434(図4)を含むソースがパーサ414(図4)に運ばれることから始まる。ソースは、ネイティブVRML状テキストフォーマット(native VRML-like textual format)、ネイティブバイナリフォーマット、XMLベースのフォーマットなどでよい。ブロック555では、ソースのフォーマットの如何にかかわらず、ソースがローシーングラフ416(図4)に変換される。ローシーングラフ416は、コンテンツ内のノード、フィールド、およびその他のオブジェクト、ならびにフィールド初期化値を表す。ローシーングラフ416はまた、オブジェクトプロトタイプ、ストリーム434中の外部プロトタイプ参照、およびルートステートメントも含む。
【００３９】
ローシーングラフ416の最上位は、ノード、最上位フィールドおよび関数、プロトタイプ、ならびにファイル内に含まれるルートを含む。一実施形態では、システム411は、従来の要素に加えて最上位のフィールドおよび関数を可能にする。一実施形態では、ローシーングラフ416の最上位は、HTMLページなどの外部環境へのインターフェースを提供するのに使用される。別の実施形態では、ローシーングラフ416の最上位は、ストリーム434がリモート装置のオーサリング済みコンテンツとして使用されるときにオブジェクトインターフェースも提供する。
【００４０】
一実施形態では、各ローノードは、その状況内で初期化されたフィールドのリストを含む。一実施形態では、各ローフィールドエントリは、そのフィールドに関する名前、型(与えられている場合)、およびデータ値を含む。一実施形態では、各データ値は、数、文字列、ローノード、および/または明示的に型定義されたフィールド値(explicitly typed field value)を表すことのできるローフィールドを含む。
【００４１】
ブロック560では、プロトタイプがローシーングラフ416の最上位から抽出され、このシーンでアクセス可能なオブジェクトプロトタイプのデータベースに追加するのに使用される。
【００４２】
次いで、ローシーングラフ416が構築走査(build traversal)を通じて送られる。この走査の間、オブジェクトプロトタイプのデータベースを使用して各オブジェクトが構築される(ブロック565)。
【００４３】
ブロック570では、ストリーム434中のルートが確立される。その後で、ブロック575では、シーン内の各フィールドが初期化される。一実施形態では、初期化は、初期イベントをオブジェクトの非デフォルトフィールドに送ることによって実施される。シーングラフ構造がノードフィールドの使用によって達成されるので、ブロック575はシーン階層も構築する。
【００４４】
一実施形態では、イベントが間順走査（in-order traversal）を使用してファイアされる。遭遇する第1ノードが、ノード内のフィールドを列挙する。フィールドがノードである場合、そのノードがまず走査される。ノードフィールドが走査される結果として、ツリーのその特定の分岐内のノードも初期化される。次いで、ノードフィールドについての初期値を有するそのノードフィールドにイベントが送られる。
【００４５】
所与のノードがそのフィールドを初期化した後、作者は、プロトタイプオブジェクトに初期化論理を追加して(ブロック580)呼出し時にノードが完全に初期化されるように保証することを許可される。上述のブロックはルートシーンを生成する。ブロック585では、シーンが、シーンに対して生成されたシーンマネージャ426A(図4)に配信される。
【００４６】
ブロック590では、シーンマネージャ426Aが使用され、暗黙的に、または作者の制御下で挙動処理(behavioral processing)をレンダリングおよび実施する。一実施形態では、シーンマネージャ426Aによってレンダリングされるシーンは、組込みオブジェクト418、作者定義オブジェクト420、およびネイティブオブジェクト424からのオブジェクトを使用して構築される。例示的オブジェクトを以下で説明する。
【００４７】
一実施形態では、オブジェクトは、その親オブジェクトからオブジェクトの機能の一部を導出することができ、親オブジェクトは、その後でオブジェクトの機能を拡張または修正する。階層の底部はオブジェクトである。一実施形態では、2つの主なオブジェクトのクラスは、ノードおよびフィールドである。ノードは通常、とりわけ、レンダ巡回(render traversal)の一部として呼び出されるレンダメソッド(render method)を含む。ノードのデータプロパティはフィールドと呼ばれる。オブジェクト階層の中には、タイミングオブジェクトと呼ばれるオブジェクトのクラスがあり、それを以下で詳細に説明する。以下のコード部分は例示のためのものである。各コード部分中の行番号は、その特定のコード部分についての行番号を表すに過ぎず、元のソースコード中の行番号を表すのではないことに留意されたい。
【００４８】
表面オブジェクト
表面オブジェクトは、タイプSurfaceNodeのノードである。一実施形態では、SurfaceNodeクラスは、2次元イメージをカラー値、深度値、および不透明度(アルファ)値の配列として記述するすべてのオブジェクトに対するベースクラスである。SurfaceNodeは主に、テクスチャマップとして使用されるイメージを提供するのに使用される。SurfaceNodeクラスからは、MovieSurface、ImageSurface、MatteSurface、PixelSurface、およびSceneSurfaceが導出される。
【００４９】
以下のコード部分は、MovieSurfaceノードを示す。
【００５０】
1) MovieSurface: SurfaceNode TimedNode AudioSourceNode {
2)  field MF String url               □
3)  field TimeBaseNode timeBase       NULL
4)  field Time duration            0
5)  field Time loadTime            0
6)  field String loadStatus        "NONE"
}
MovieSurfaceノードは、ムービーまたは一連の静止イメージを、ムービーを定義するイメージのシーケンスに対するアクセスを提供することによって表面上にレンダリングする。MovieSurfaceのTimedNode親クラスは、所与の時間にどのフレームが表面上にレンダリングされるかを決定する。ムービーは、オーディオのソースとして使用することもできる。
【００５１】
コード部分の2行目では("Multiple Value Field)、URLフィールドが、表面に関するムービーデータの潜在的位置のリストを提供する。リストは、要素0がデータの好ましいソースを記述するように順序付けられる。何らかの理由で要素0が利用不可能である場合、または要素0が未サポートフォーマットである場合、次の要素を使用することができる。
【００５２】
3行目では、timeBaseフィールドが指定される場合、timeBaseフィールドは、ムービーに関するタイミング情報を提供すべきであるノードを指定する。具体的には、timeBaseフィールドは、所与の瞬間にムービーのどのフレームを表面上に表示すべきかを決定するのに必要な情報をムービーに提供する。一実施形態では、timeBaseが指定されない場合、表面はムービーの第1フレームを表示する。
【００５３】
4行目では、ムービーデータがフェッチされると、持続時間フィールドがMovieSurfaceノードによって数秒単位のムービーの長さに設定される。
【００５４】
5行目および6行目では、loadTimeフィールドおよびloadStatusフィールドが、ムービーデータの可用性に関するMovieSurfaceノードからの情報を提供する。LoadStatusは、"NONE"、"REQUESTED"、"FAILED"、"ABORTED"、および"LOADED"という5つの可能な値を有する。
【００５５】
"NONE"は初期状態である。"NONE"イベントは、値の数を0に設定し、または第1URL文字列を空文字列に設定することによってノードのurlがクリアされる場合にも送られる。これが行われたとき、表面のピクセルは、黒かつ不透明に設定される(すなわち、カラーが0,0,0であり、透明度が0である)。
【００５６】
"REQUESTED"イベントは、空でないurl値が設定されるときに送られる。表面のピクセルは、"REQUESTED"イベントの後も不変である。
【００５７】
"FAILED"は、ムービーローディングが成功しなかった場合に"REQUESTED"イベントの後に送られる。これは、例えばUIRLが存在しないファイルを指す場合、またはファイルが有効なデータを含まない場合に生じる可能性がある。表面のピクセルは、"FAILED"イベントの後も不変である。
【００５８】
"ABORTED"イベントは、現状態が"REQUESTED"である場合に送られ、その場合、URLは再び変化する。URLが空でない値に変化した場合、"ABORTED"の後に"REQUESTED"イベントが続く。URLが空の値に変化した場合、"ABORTED"の後に"NONE"値が続く。表面のピクセルは、"ABORTED"イベントの後にも不変である。
【００５９】
"LOADED"イベントは、ムービーを表示する準備ができたときに送られる。"LOADED"イベントの後に、現在時刻に値が一致するloadTimeイベントが続く。timeBaseフィールドによって示されるムービーのフレームが表面上にレンダリングされる。タイムベースがNULLである場合、ムービーの第1フレームが表面上にレンダリングされる。
【００６０】
以下のコード部分は、ImageSurfaceノードを示す。
【００６１】
1) ImageSurface: SurfaceNode{
2) field MF String          url        □
3) field Time loadTime      0
4) field String loadStatus  "NONE"
}
ImageSurfaceノードは、イメージファイルを表面上にレンダリングする。コード部分の2行目では、URLフィールドは、表面に関するイメージデータの潜在的位置のリストを提供する。リストは、要素0がデータの最も好ましいソースを記述するように順序付けられる。何らかの理由で要素0が利用不可能である場合、または要素0が未サポートフォーマットである場合、次の要素を使用することができる。3行目および4行目では、loadTimeフィールドおよびloadStatusフィールドが、イメージデータの可用性に関する、ImageSurfaceノードからの情報を提供する。LoadStatusは、"NONE"、"REQUESTED"、"FAILED"、"ABORTED"、および"LOADED"という5つの可能な値を有する。
【００６２】
以下のコード部分がMatteSurfaceノードを示す。
【００６３】
1)   MatteSurface: SurfaceNode {
2)   field SurfaceNode surfacel            NULL
3)   field SurfaceNode surface2            NULL
4)   field String operation
5)   field MF Float parameter              0
6)   field Bool overwriteSurface2          FALSE
}
MatteSurfaceノードは、イメージ合成オペレーションを使用して、表面1および表面2からのイメージデータを第3表面上で組み合わせる。合成オペレーションの結果は表面2の解像度で計算される。表面1のサイズが表面2のサイズと異なる場合、表面1のサイズを表面2のサイズと等しくするオペレーションを実施する前に、表面1上のイメージデータがズームアップまたはズームダウンされる。
【００６４】
コード部分の2行目および3行目では、表面1および表面2フィールドが、合成オペレーションのための入力イメージデータを提供する2つの表面を指定する。4行目では、オペレーションフィールドは、2つの入力表面に対して実行する合成関数を指定する。可能なオペレーションには、"REPLACE_ALPHA"、"MULTIPLY_ALPHA"、"CROSS_FADE"、および"BLEND"が含まれる。
【００６５】
"REPLACE_ALPHA"は、表面2のアルファチャネルAを表面1からのデータで上書きする。表面1が成分(グレイスケール輝度のみ)を有する場合、その成分がアルファ(不透明度)値として使用される。表面1が2つまたは4つの成分(グレイスケール輝度+アルファまたはRGBA)を有する場合、アルファ値を提供するためにアルファチャネルAが使用される。表面1が3つの成分(RGB)を有する場合、オペレーションは不定である。このオペレーションを使用して、静的または動的イメージ用の静的または動的アルファマスクを提供することができる。例えば、SceneSurfaceは、透明な背景に対してアニメーション表示のJames Bondキャラクタをレンダリングすることができる。次いで、このイメージのアルファ成分をビデオクリップ用のマスク形状として使用することができる。
【００６６】
"MULTIPLY_ALPHA"は、表面1からのアルファ値に表面2からのアルファ値が乗算されることを除いて、REPLACE_ALPHAと類似している。
【００６７】
"CROSS_FADE"は、パラメータ値を使用して2つの表面間でフェード処理し、可視である各表面の割合を制御する。このオペレーションは、2つの静的または動的イメージ間で動的にフェード処理することができる。パラメータ値(5行目)を0から1にアニメーション表示することにより、表面1上のイメージが表面2のイメージにフェード処理する。
【００６８】
"BLEND"は、表面2からのアルファチャネルを使用して表面1および表面2からのイメージデータを組み合わせ、混合比を制御する。このオペレーションは、表面2のアルファチャネルが2つのイメージの混合を制御することを可能にする。SceneSurfaceをレンダリングすることによって、またはMovieSurfaceを再生することによって表面2のアルファチャネルをアニメーション表示することにより、複雑な移動艶消効果(traveling matte effect)を生成することができる。R1、G1、B1、およびA1が赤、緑、青、および表面1のピクセルのアルファ値を表し、R2、G2、B2、およびA2が赤、緑、青、および表面2の対応するピクセルのアルファ値を表す場合、得られるそのピクセルの赤、緑、青、およびアルファ成分の値は、
red =RI*(1-A2)+R2*A2                                               (1)
green =GI*(1-A2)+G2*A2                                             (2)
blue =B1*(1-A2)+B2*A2                                              (3)
alpha = 1                                                          (4)
"ADD"および"SUBTRACT"は、表面1および表面2のカラーチャネルを加算または減算する。結果のアルファは表面2のアルファに等しい。
【００６９】
5行目では、パラメータフィールドが、合成関数の効果を変更することのできる1つまたは複数の浮動小数点パラメータを提供する。パラメータ値の特定の解釈は、どのオペレーションが指定されるかに依存する。
【００７０】
6行目では、overwrite surface 2フィールドは、MatteSurfaceノードが合成オペレーションの結果を格納する新しい表面を割り振るべきであるかどうか(overwriteSurface2=FALSE)、または表面2上に格納されたデータを合成オペレーションで上書きすべきかどうか(overwriteSurface2=TRUE)を示す。以下のコード部分は、SceneSurfaceノードを示す。
【００７１】
1) PixelSurface: SurfaceNode {
2)field Image image          0 0 0
}
PixelSurfaceノードは、ユーザ指定のピクセルの配列を表面上にレンダリングする。2行目では、イメージフィールドが、表面上にレンダリングされるピクセルデータを記述する。
【００７２】
以下のコード部分は、SceneSurfaceノードの使用を示す。
【００７３】
1)      SceneSurface: SurfaceNode {
2)      field MF ChildNode children     □
3)      field Ulnt32   width
4)      field Ulnt32   height     1
}
SceneSurfaceノードは、指定のサイズの表面上に指定の子をレンダリングする。SceneSurfaceは、それ自体を自動的に再レンダリングして、その子の現状態を反映する。
【００７４】
コード部分の2行目では、子フィールドが、レンダリングすべきChildNodesを記述する。概念上、子フィールドは、SceneSurfaceノードを含むシーングラフとは独立してレンダリングされる全シーングラフを記述する。
【００７５】
3行目および4行目では、幅フィールドおよび高さフィールドが、ピクセル単位で表面のサイズを指定する。例えば、幅が256、高さが512である場合、表面は、256×512のピクセル値の配列を含む。
【００７６】
ある実施形態では、MovieSurface、ImageSurface、MatteSurface、PixelSurface、およびSceneSurfaceノードがシーンをレンダリングする際に利用される。
【００７７】
シーン記述の最上位では、出力がディスプレイ"top level Surface"上にマッピングされる。3次元レンダリング済みシーンは、その結果をディスプレイに対してレンダリングする代わりに、その出力を、前述のSurfaceNodeのうちの1つを使用して表面上に生成することができ、この場合、出力は、作者の望むよりリッチなシーン合成に組み込むために利用可能である。表面の組込みシーン記述(embedded scene description)をレンダリングすることによって生成される表面のコンテンツは、表面の構成イメージ編成(structured image organization)の一部として、カラー情報、透明度(アルファチャネル)、および深度を含むことができる。この状況では、イメージは、ビデオイメージ、静止イメージ、アニメーション、またはシーンを含むように定義される。
【００７８】
表面は、共通イメージ管理インターフェースの背後の内部に配置される様々なテクスチャマッピングシステムの特殊要件をサポートするようにも定義される。その結果、システム内の表面プロデューサを3次元レンダリングプロセスでテクスチャとして消費することができる。そのような表面プロデューサの例には、ImageSurface、MovieSurface、MatteSurface、SceneSurface、およびApplicationSurfaceが含まれる。
【００７９】
ApplicationSurfaceは、従来のウィンドウィングシステムでのアプリケーションウィンドウと同様の方式で、スプレッドシートやワードプロセッサなどのその埋込みアプリケーションプロセスによってレンダリングされたイメージデータを維持する。
【００８０】
表面モデルをレンダリング生成およびテクスチャ消費と統合することにより、分離レンダリング速度(decoupled rendering rate)の宣言型オーサリングが可能となる。従来、3次元シーンは、一体式にレンダリングされており、シーンの複雑さおよびテクスチャスワッピングによる最悪性能によって支配される、ビューアに対する最終フレーム速度が生み出される。リアルタイムの連続的合成フレームワークでは、表面抽象化(surface abstraction)は、同一の画面上の異なる要素に対するレンダリング速度を分離する機構を提供する。例えば、別のアプリケーションによって生成され、ブラウザの出力の横に並んで出力されるビデオフレーム速度を最大の毎秒30フレームで持続させることができる限りにおいてであるが、低速、恐らくは毎秒1フレームでウェブブラウザを描くことを許容することができる。
【００８１】
ウェブブラウジングアプリケーションがそれ自体の表面に描画する場合、画面コンポジタ(screen compositor)は、フルモーションビデオフレーム速度で妨げなしにレンダリングすることができ、ウェブブラウザの表面から最後に完全に描画したイメージをその高速画面更新の一部として消費する。
【００８２】
タイミングオブジェクト
タイミングオブジェクトはTimeBaseノードを含む。TimeBaseノードは、時限式ノード(timed node)のフィールドとして含まれ、共通の1組のタイミングセマンティクス（時間の意味、時間情報）を媒体に供給する。ノードインスタンス化(node instancing)を通じて、いくつかの関連する媒体ノードに対してTimeBaseノードを使用することができ、時間的同期が保証される。Scoreノードを示す1組のノードが媒体イベントを順序付けるのに利用される。Scoreノードは時限式ノードであり、そのタイミングをTimeBaseから導出する。Scoreノードは、指定の時刻にイベントを放出するCueノードのリストを含む。Scoreを含む様々なタイミングオブジェクトを以下で説明する。
【００８３】
以下のコード部分は、TimeNodeノードを示す。ノード内の関数の説明がその後に続く。
【００８４】
1)   TimedNode ChildNode {
2)     field TimeBaseNode 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で制御されるすべてのノードの親である。コード部分の2行目では、TimeBaseフィールドは、タイムベースが開始、停止、または前進するときに以下に列挙する適切な関数呼出しを行う制御TimeBaseNodeを含む。
【００８５】
3行目では、getDuration関数が、TimedNodeの持続時間を返す。利用不可能である場合、値-1が返される。この関数は一般に、導出されるオブジェクトによって取って代わられる（overrideされる）。
【００８６】
4行目は、updateStartTime関数を列挙する。呼び出されたとき、この関数は、mediaTime値で指定される開始オフセットを用いて、その関連イベントまたは制御される媒体を進めることを開始する。updateStartTime関数は一般に、導出されるオブジェクトによって取って代わられる。
【００８７】
5行目はupdateStopTime関数を列挙する。updateStopTime関数は、呼び出されたとき、その関連イベントまたは制御される媒体を進めることを停止する。この関数は一般に、導出されるオブジェクトによって取って代わられる。
【００８８】
6行目では、mediaTimeがTimeBaseNodeによって更新されたときはいつでも、updateMediaTime関数が呼び出される。updateMediaTime関数は、導出されるオブジェクトによって使用され、その媒体に対するさらなる制御が加えられ、または追加のイベントが送られる。
【００８９】
以下のコード部分は、IntervalSensorノードを示す。
【００９０】
1)   IntervalSensor : TimedNode {
2)      field Timecyclelnterval 1
3)      field Float fraction 0
4)      field Float time     0
}
IntervalSensorノードは、時間の経過につれてイベントを生成する。限定はしないが、連続的シミュレーションおよびアニメーションを駆動すること、周期的活動(例えば分ごとに1度)を制御すること、アラームクロックなどの単一発生イベントを開始することを含む多くの目的にIntervalSensorノードを使用することができる。
【００９１】
IntervalSensorノードは、そのupdateStartTime()関数が呼び出されるときに初期フラクション(initial fraction)および時間イベントを送る。一実施形態では、このノードはまた、updateMediaTime()が呼び出されるごとにフラクション(fraction)および時間イベントを送る。最終的に、updateStopTimeO関数が呼び出されるときに、最終的フラクションおよび時間イベントが送られる。
【００９２】
コード部分の2行目では、cycleIntervalフィールドが作者によって設定され、フラクションが0から1になるのにかかる秒単位で測定した時間の長さが決定される。getDuration()関数が呼び出されるときにこの値が返される。
【００９３】
3行目はフラクションフィールドを列挙し、フラクションフィールドは、TimeBaseNodeが以下の式(1)を使用して実行中であるときはいつでもイベントを生成する。
【００９４】
フラクション(fraction) = max(min(mediaTime / cyclelnterval, 1 ), 0)    式(1)
4行目は時刻フィールドを列挙し、時刻フィールドは、TimeBaseNodeが実行中であるときはいつでもイベントを生成する。時刻フィールドの値は現標準時間(current wall clock time)である。
【００９５】
以下のコード部分は、Scoreノードを示す。
【００９６】
1)   Score : TimedNode{
2)   field ME CueNode cue □
}
このオブジェクトは、updateStartTime()、updateMediaTime()、updateStopTime()呼出しを受け取るごとに、キューフィールド中の各エントリを呼び出す。各キューエントリに対する呼出しは、現在累積されている相対時間を返す。この値が後続のキューエントリに渡され、キューエントリ間の相対オフセットを計算することが可能となる。
【００９７】
コード部分の2行目では、キューフィールドが、mediaTimeの経過と共に20回呼び出されるべきCueNodeエントリのリストを保持する。
【００９８】
以下のコード部分は、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 1nt32 getNumClients 0
7)   function TimedNode getClient(1nt32 index)
}
このオブジェクトは、mediaTimeを生成するすべてのノードの親である。コード部分の2行目はmediaTimeフィールドを列挙し、mediaTimeフィールドは、mediaTimeが進むときにはいつでもイベントを生成する。mediaTimeフィールドは通常、導出されるオブジェクトによって制御される。
【０１００】
3行目は評価関数を列挙し、評価関数は、このTimeBaseNodeが時間イベントを受け取る際に利率(interest)を登録した場合に、時間が進むときにシーンマネージャによって呼び出される。
【０１０１】
4行目はaddClient関数を列挙し、addClient関数は、このTimeBaseNodeがそのtimeBaseフィールド内に設定されたときに各TimedNodeによって呼び出される。mediaTimeが開始し、進み、または停止したとき、リスト内の各クライアントが呼び出される。渡されるノードが既にクライアントである場合、この関数はオペレーションを実施しない。
【０１０２】
5行目はremoveClient関数を列挙し、removeClient関数は、このTimeBaseNodeがそのtimeBaseフィールド内にもはや設定されていないときに各TimedNodeによって呼び出される。渡されるノードがクライアントリスト内にない場合、この関数はオペレーションを実施しない。
【０１０３】
6行目はgetNumClients関数を列挙し、getNumClients関数は、クライアントリスト内に現在あるクライアントの数を返す。
【０１０４】
7行目はgetClient関数を列挙し、getClient関数は、渡されたインデックスのクライアントを返す。インデックスが範囲外である場合、NULL値が返される。
【０１０５】
以下のコード部分は、TimeBaseノードを示す。
【０１０６】
1)   TimeBase : TimeBaseNode {
2)   field Bool loop    false
3)   field Time startTime      0
4)   field Time playTime0
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 fool isActive  false
}
このオブジェクトは、mediaTimeの前進を制御する。TimeBaseは、この値を開始、停止、および再開することができ、mediaTimeループを連続的にすることができる。TimeBaseは、mediaTimeをその範囲のサブセットにわたって再生することを可能にする。
【０１０７】
コード部分の2行目では、ループフィールドが、mediaTimeがその移動の終わりに達したときにmediaTimeがその前進を反復するか否かを制御する。
【０１０８】
3行目では、startTimeフィールドが、mediaTimeがいつ前進を開始するかを制御する。標準時間(wall clock time)の単位であるstartTimeに達したとき、TimeBaseが実行を開始する。これは、stopTimeがstartTime未満である限り真である。これが生じたとき、速度が0以上である場合、mediaTimeがmediaStartTimeの値に設定される。mediaStartTimeが範囲外である場合(その有効範囲の説明に関してはmediaStartTimeを参照)、mediaTimeが0に設定される。速度が0未満である場合、mediaTimeがmediaStopTimeに設定される。mediaStopTimeが範囲外である場合、mediaTimeが持続時間に設定される。stopTimeに達し、またはmediaStopTime(速度が0未満である場合はmediaStartTime)に達するまでTimeBaseは実行し続ける。TimeBaseが実行中にstartTimeイベントが受信された場合、startTimeイベントは無視される。
【０１０９】
4行目および5行目では、playTimeフィールドが、mediaTimeが活動化時にリセットされないことを除いてstartTimeと同様に振る舞う。playTimeフィールドは、TimeBaseがstopTimeで停止した後にmediaTimeが進み続けることを可能にする。playTimeとstartTimeが同じ値を有する場合、startTimeが先行する。TimeBaseが実行中にplayTimeイベントが受信される場合、イベントは無視される。stopTimeフィールドは、TimeBaseがいつ停止するかを制御する。
【０１１０】
6行目では、mediaStartTimeフィールドが、mediaTimeが実行される媒体持続時間のサブレンジの開始を設定する。mediaStartTimeの範囲は、ゼロから持続時間の終わりまで(0..持続時間)である。mediaStartTimeフィールドの値が範囲外である場合、0がその代わりに使用される。
【０１１１】
7行目では、mediaStopTimeフィールドが、mediaTimeが実行される媒体持続時間のサブレンジの終わりを設定する。mediaStopTimeの範囲は、ゼロから持続時間の終わりまで(0..持続時間)である。mediaStartTimeフィールドの値が範囲外である場合、持続時間値がその代わりに使用される。
【０１１２】
8行目では、速度フィールドにより、mediaTimeが標準時間の毎秒1秒以外の速度で実行することが可能となる。速度フィールドで提供される速度は瞬間速度として使用される。評価関数が呼び出されるとき、最後の呼出しからの経過時間に速度が乗算され、その結果が現mediaTimeに加算される。
【０１１３】
9行目では、このTimeBaseのすべてのクライアントの持続時間がその持続時間を決定したとき、持続時間フィールドがイベントを生成する。持続時間フィールドの値は、最長の持続時間を有するクライアントと同じである。
【０１１４】
10行目では、使用可能フィールド(enabled field)がTimeBaseを使用可能にする。使用可能が偽となったとき、isActiveが真であった場合にisActiveは偽となり、mediaTimeは進行を停止する。偽である間、startTimeおよびplayTimeは無視される。使用可能フィールドが真となったとき、startTimeおよびplayTimeが評価され、TimeBaseが実行を開始すべきかどうかが決定される。そうである場合、startTimeまたはplayTimeで記述される挙動が実施される。
【０１１５】
11行目はisActiveフィールドを列挙し、isActiveフィールドは、TimeBaseがアクティブとなったときに真イベントを生成し、timefalseが非アクティブとなったときに偽イベントを生成する。
【０１１６】
以下のコードスニペットは、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 media Time)
このオブジェクトは、スコアのキューリスト中のすべてのオブジェクトに対する親である。コード部分の2行目では、オフセットフィールドが、シーケンスの先頭からの0相対オフセットを確立する。例えば、着信mediaTimeが値5に達したときに、値5はCueNodeをファイアする。
【０１１８】
3行目では、遅延フィールドが、CueNodeがファイアするまでの相対的遅延を確立する。オフセットが-1(デフォルト)以外の値である場合、この遅延はオフセットから測定される。そうでない場合、遅延は、前のCueNodeの終わりから測定され、またはこれが第1CueNodeである場合、0から測定される。例えば、オフセットが値5を有し、遅延が値2を有する場合、このノードは、mediaTimeが7に達したときにファイアする。オフセットが値-1を有し、遅延が値2を有する場合、このノードは、前のCueNodeが終了した2秒後にファイアする。
【０１１９】
4行目では、使用可能フィールドが偽である場合、CueNodeが使用不能にされる。CueNodeは、オフセットおよび遅延がそのデフォルト値であるかのように振る舞い、イベントをファイアしない。使用可能フィールドが真である場合、CueNodeは通常通り振る舞う。
【０１２０】
5行目では、方向フィールドが、このノードがmediaTimeの移動方向に対してどのようにファイアするかを制御する。このフィールドが0である場合、このノードは、mediaTimeが増加中(ゼロよりも大きい速度)であっても、減少中(ゼロ未満の速度)であってもこのノードのオフセットおよび/または遅延に達したときにファイアする。方向フィールドがゼロ未満である場合、このノードは、mediaTimeが減少中にそのオフセットおよび/または遅延に達した場合にのみファイアする。方向フィールドがゼロより大きい場合、このノードは、mediaTimeが増加中にこのノードのオフセットおよび/または遅延に達した場合にのみファイアする。
【０１２１】
6行目はupdateStartTime関数を列挙し、updateStartTime関数は、親ScoreがupdateStartTime()関数呼出しを受け取るときに呼び出される。各CueNodeは順に呼び出される。
【０１２２】
7行目はupdateStopTime関数を列挙し、updateStopTime関数は、親Score25がupdateStopTime()関数呼出しを受信するときに呼び出される。各CueNodeは順に呼び出される。
【０１２３】
8行目は評価関数を列挙し、評価関数は、親ScoreがupdateMediaTime関数呼出しを受け取ったときに呼び出される。各CueNodeは順に呼び出され、その累積時間を返さなければならない。例えば、オフセットが5であり、遅延が2である場合、CueNodeは値7を返す。オフセットが-1であり、遅延が2である場合、CueNodeは、着信累積時間に2を加えた値を返す。これはデフォルトの挙動である。あるCueNode(IntervalCueなど)は、明確な持続時間ならびにファイアリング時間を有する。
【０１２４】
9行目では、getAccumulatedTime関数が、evaluate()関数と同じ計算を用いて累積時間を返す。
【０１２５】
10行目はファイア関数を列挙し、ファイア関数は、CueNodeがそのフィアリング時間に達したときにデフォルトのevaluate()関数から呼び出される。ファイア関数は、適切な動作を実施するために特定の導出オブジェクトによって上書きされることが意図される。
【０１２６】
以下のコード部分は、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を進める。
【０１２８】
コード部分の2行目では、mediaStartTimeフィールドが、mediaTimeが実行される媒体持続時間のサブレンジの開始を設定する。mediaStartTimeの範囲は、ゼロから持続時間の終わりまで(0..持続時間)である。mediaStartTimeフィールドの値が範囲外である場合、0がその代わりに使用される。
【０１２９】
3行目では、mediaStopTimeフィールドが、mediaTimeが実行される媒体持続時間のサブレンジの終わりを設定する。mediaStopTimeの範囲は、ゼロから持続時間の終わりまで(0..持続時間)である。mediaStopTimeフィールドの値が範囲外である場合、持続時間がその代わりに使用される。
【０１３０】
4行目では、持続時間フィールドが、このTimeBaseNodeのすべてのクライアントの持続時間がその持続時間を決定したときにイベントを生成する。持続時間フィールドの値は、最長の持続時間を有するクライアントと同じである。
【０１３１】
5行目はisActiveフィールドを列挙し、isActiveフィールドは、このノードがアクティブとなったときに真イベントを生成し、このノードが非アクティブとなったときに偽イベントを生成する。
【０１３２】
以下のコード部分は、IntervalCueノードを示す。
【０１３３】
1)   IntervalCue CueNode {
2)   field Float period 1
3)   field Bool rampup true
4)   field Float fraction 0
5)   field Bool isActive false
}
このオブジェクトは、時間が進むにつれて0から1(またはrampUpが偽である場合、1から0)のフラクションイベントを送る。コードスニペットの2行目は期間フィールドを列挙し、期間フィールドは、フラクション傾斜(fraction ramp)がその間に進む、数秒単位の時間を決定する。
【０１３４】
3行目では、rampUpフィールドが真(デフォルト)である場合、フラクションは、IntervalCueの持続時間にわたって0から1に増加する。偽である場合、フラクションは1から0に減少する。mediaTimeが後向きに実行中の場合(速度がゼロ未満であるとき)、rampUpフィールドが真であるときに、フラクションは1から0に減少し、rampUpフィールドが偽であるときに、フラクションは0から1に増加する。
【０１３５】
4行目では、フラクションフィールドは、このノードがアクティブである間、各呼出しと共にイベントをevaluate()に送る。mediaTimeが前方に移動中である場合、フラクションは、このノードがファイアしたときに出力を開始し、このノードがそのファイアリング時間と期間との和に達したときに停止する。フラクションの値は以下のように記述される。
【０１３６】
フラクション(fraction) = (mediaTime - ファイアリング時間) * 期間      式(2)
5行目はisActiveフィールドを列挙し、isActiveフィールドは、ノードがアクティブとなったときに真イベントを送り、ノードが非アクティブとなったときに偽を送る。mediaTimeが前方に移動中である場合、ノードは、mediaTimeがファイアリング時間以上となったときにアクティブとなる。このノードは、mediaTimeがファイアリング時間と期間の和以上となったときに非アクティブとなる。mediaTimeが後向きに移動中である場合、ノードは、mediaTimeがファイアリング時間と期間の和以下となったときにアクティブとなり、mediaTimeがファイアリング時間以下となったときに非アクティブとなる。これらのイベントのファイアリングは方向フィールドの影響を受ける。
【０１３７】
以下のコード部分は、FieldCueノードを示す。
【０１３８】
1)   FieldCite : CueNode {
2)   field Field cueValue NULL
3)   field Field cueOut NULL
}
このオブジェクトは、FieldCueがファイアするときにcueValueをイベントとしてcueOutに送る。FieldCueは、任意のフィールドタイプを設定および放出することを可能にする。cueOut値を任意のタイプのフィールドに送ることができる。cueValueの現在の型が宛先フィールドの型と互換ではない場合、未定義の結果が生じる可能性がある。
【０１３９】
コード部分の2行目では、cue Valueフィールドは、このノードがファイアするときに放出される作成値(authored value)である。3行目はcueOutフィールドを列挙し、cueOutフィールドは、このノードがファイアするときのcueValueの値を有するイベントを送る。
【０１４０】
以下のコード部分はTimeCueノードを示す。
【０１４１】
1)   Timecue: CueNode {
2)   field Time cueTime 0
}
このオブジェクトは、TimeCueがファイアするときに現在の標準時間をイベントとしてcueTimeに送る。コード部分の2行目は、cueTimeを列挙し、cueTimeフィールドは、このノードがファイアするときに現在の標準時間を有するイベントを送る。
【０１４２】
リアルタイムシーン合成のコンテキスト内のスコアリング構成により、イメージフリップブックおよびイメージ合成アニメーション(例えばアニメーションGIF)、ビデオおよびオーディオクリップおよびストリーム、ジョイント変換(joint transformation)、幾何形状モーフ(geometry morph)、テクスチャ座標などの幾何学的アニメーションクリップおよびストリーム、ライティング、フォグ、透明度などのレンダリングパラメータのアニメーション、挙動、シミュレーション、または生成システム(generative system)に関するパラメータの変調、ならびにアセットローディング、イベントミューティング、および論理関数の動的制御を含む広い範囲のプレゼンテーションおよび再生技法にわたる時間制御を作者が宣言型で記述することが可能となる。例えば、以下の例は、文字列を放出してイメージアセットをプリロードし、次いでそのイメージを使用してアニメーションを実施し、次いでムービーを実行する。以下の例における文字列を逆方向に実行することもできる(すなわち、まずムービーが後向きに再生され、次いでアニメーションが後向きに再生され、次いでイメージが消滅する)。
【０１４３】
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 "imagel.png"
11)  cutOut TO ISURF.url
12)  direction -10
13)  }
14)  lntervalCue{
15)  delay 0.5
16)  period 2.5 # 2.5 second animation
17)  Fraction TO Plfraction
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)  cue Value String "imagel.png"
30)  cueOut TO ISURF.URL
31)  direction -1
32)  delay -0.5
33)  }
34)  ]
35)  }
36)  # Slide out image
37)  DEFT Transform {
38)  children Shape {
39)  appearance Appearance {
40)  texture Texture {
41)  surface DEF ISURF ImageSurface {}
42)  }
43)  }
44)  geometry IndexedFaceSet {...}
45)  }
46)  }
47)  DEF P1 Position Interpolator
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内のCueノードが、TimeBaseの媒体時間に対してファイアし、共通参照を提供し、それによって様々な媒体アセットのタイミング間の正確な関係が得られる。上記のコードスニペットでは、TimeBaseが開始するとすぐにFieldCue(9行目)がファイアする。このFieldCueはデフォルトオフセットおよび遅延フィールドを有し、それによってイメージが現れるからである。コード部分の35〜45行目は、イメージ(500、図5)を表面上にロードする。次いで、IntervalCue(13行目)が0.5秒後に開始し、その次の2.5秒間実行し、そのフラクションが0から1に減少する。IntervalCueのファイアリングは、イメージのアニメーション(502、図5)を開始する。46〜50行目はアニメーションを制御する。MediaCue(18行目)は、TimeBaseが開始した2秒後、またはIntervalCueが1.5秒でそのアニメーションとなるときに開始し、それによってムービーが開始する。
【０１４４】
51〜62行目は、ムービーの第1フレーム(504、図5)を表面上にロードする。この文字列が後向きに再生されるとき、まずムービーが逆方向に再生される。次いで0.5秒後にイメージが現れ、イメージが現れてから0.5秒後にアニメーションが開始する。アニメーションは、2.5秒の間逆方向に再生され、2.5秒後に停止し、その0.5秒後にイメージは消滅する。この例は、Cueを互いに、またはTimeBaseから偏位させることできることを示し、最後のCueが終了する前に後続のCueが開始することができることを示す。
【０１４５】
一実施形態では、MediaCueは同期ツールを作者に与える。MediaCueはCueの一形態であり、TimeBaseと同様に振る舞う。実際、ある場合には、上記の例で示すように、TimeBaseを使用することができるところでMediaCueを使用することができる。しかし、MediaCueがイベントの時限式シーケンスに組み込まれるので、実装は、アセットに対するプリローディングを要求するのに十分な情報を有する。
【０１４６】
図6に、プリローディング関数を利用した図5の媒体シーケンスの同期を示す。例えば、上記の例では、プリロードして直ちに再生するのにムービーが0.5秒かかることを実装が認識している場合、TimeBaseの開始後に1.5秒待機した後(ブロック610)、ブロック615では、"get ready"信号がMovieSurfaceに送られる。get readyの受信時に、ブロック620では、ムービーがプリロードされる。これにより、プリロードするために要求される0.5秒が与えられる。
【０１４７】
ブロック625では、開始する要求が受信され、開始する要求の受信時に、ブロック630が直ちにムービーを開始する。
【０１４８】
TimeBaseとシステム411で許可される媒体順序付機能の組合せにより、複雑なタイミングでプレゼンテーションを作成することが可能となる。図7Aに、システム411の様々な構成要素の時間関係を示す。閲覧者は、ニュースプレゼンテーションの選択時に(760)、記事を選択することのできる画面を見る(762)。ユーザが5つの記事S1、S2、S3、S4、およびS5の選択肢から記事S3を選択したとき、アナウンサを伴うウェルカム画面が表示される(764)。ウェルカム画面上で、閲覧者は、別の記事に切り換えることを選ぶことができ(774)、それによって記事S3を中断する。ウェルカムステートメントの後、画面は記事のサイトに遷移し(766)、選択した記事が再生される(768)。この時点で、閲覧者は次の記事、前の記事に進むことができ、前の記事を巻き戻すことができ、または記事S3の拡張版を再生する(770)ことを選択することができ、または例えば別の記事S5にジャンプする(772)ことができる。選択した記事が再生された後、ユーザは次の選択を行うことができる。
【０１４９】
表面モデルをレンダリング生成およびテクスチャ消費と統合することにより、ネストされたシーンを宣言型でレンダリングすることが可能となる。イメージとしてレンダリングされたサブシーンの再構成により開放型オーサリング(open-ended authoring)が可能となる。具体的には、アニメーション表示のサブシーンを使用し、次いでそれがより大きなビデオコンテキストにイメージ混合されることにより、エンターテイメントコンピュータグラフィックスに関する関連性の美観(relevant aeshetic)を高めることが可能となる。例えば、イメージ混合手法は、ウィンドウィングシステムの以前の世代の、粗い輪郭のくっきりしたクリッピング(crude hard-edged clipping)に対する代替をビジュアルアーティストに提供する。
【０１５０】
図7Bに、システム411の様々な構成要素の時間関係を示す。図7Aと同様に、閲覧者は、ニュースプレゼンテーションの選択時(760)に、記事を選択することのできる画面を見る(762)。アナウンサを伴うウェルカム画面が表示される(764)。ウェルカム画面上で、閲覧者は、別の記事に切り換えることを選ぶことができ(774)、それによって記事S3を中断する。ウェルカムステートメントの後、画面は記事のサイトに遷移し(766)、選択した記事が再生される(768)。この時点で、閲覧者は次の記事、前の記事に進むことができ、前の記事を巻き戻すことができ、または記事S3の拡張版を再生する(770)ことを選択することができ、または例えば別の記事S5にジャンプする(772)ことができる。選択した記事が再生された後、ユーザは次の選択を行うことができる。
【０１５１】
さらに、TimeBaseは、現動作が行われるのを休止する「停止時間」機能を可能にする。現動作を休止することにより、クロックが一時的に停止する。一実施形態では、現動作を休止することにより、オペレーションのデバッグを実施することが可能となる。別の実施形態では、現動作を休止することにより、閲覧者が現動作をより低速で体験することが可能となる。
【０１５２】
一実施形態では、ニュースプレゼンテーションの選択後(760)かつ記事を選択する画面の表示前(762)に、停止ブロック(779)が利用されて様々な選択の表示が休止される。別の実施形態では、選択が行われる前に、停止ブロック(789)が利用されてユーザの選択の表示が休止される。例えば、停止ブロック(789)は、ウェルカム画面(764)上に可能な選択を提示することを可能にし、記事(774)または記事(766)の選択を防止する。別の実施形態では、コンテンツ(772)に対する選択肢が選択された後に、停止ブロック(787)が利用されてコンテンツ(772)を表示することが休止される。
【０１５３】
一実施形態では、停止ブロック(779、789、および787)は、所定の時間量の間、動作を休止する。別の実施形態では、停止ブロック(779、789、および787)は、追加の入力が受領されて動作が再開されるまで、動作を休止する。
【０１５４】
図8に、アニメーション表示のサブシーンを含むネストされたシーンを示す。図9は、図7のネストされたシーンをレンダリングするために実施される動作を示す流れ図である。ブロック910は、画面表示800上に表示された背景イメージをレンダリングし、ブロック915は、画面表示800上に表示された背景イメージ内の立方体802を配置する。立方体802の外側のエリアは、表示800上の立方体802に関する背景を形成する表面の一部である。立方体802の面804は第3表面として定義される。ブロック920は、MovieSurfaceノードを使用して第3表面上にムービーをレンダリングする。したがって、立方体の面804は、第3表面上にレンダリングされるムービーを表示する。立方体802の面806は第4表面として定義される。ブロック925は、ImageSurfaceノードを使用して第4表面上にイメージをレンダリングする。したがって、立方体の面806は、第4表面上にレンダリングされるイメージを表示する。ブロック930では、立方体802全体が第5表面として定義され、ブロック935では、この第5表面が平行移動および/または回転され、それによって面804上にムービーが再生され、面806上に静止イメージが表示された移動立方体が生成される。上述の手順に従うことによって異なるレンダリングを立方体802の各面上に表示することができる。ブロック910から935を同時に開始することを含めて、ブロック910から935を任意のシーケンスで行えることに留意されたい。
【０１５５】
図10に、リモートプラットフォーム用の宣言型コンテンツをオーサリングするシステム1000が実装される例示的アーキテクチャを示す例示的ブロック図を示す。一実施形態では、システム1000は、オーサリング装置1010、ターゲット装置1020、インターフェース装置1030、およびネットワーク1040を含む。一実施形態では、ネットワーク1040は、オーサリング装置1010、ターゲット装置1020、およびインターフェース装置1030が互いに通信することを可能にする。
【０１５６】
一実施形態では、オーサリング装置1010は、上記のコードスニペットによって示される宣言型言語によってユーザがオーサリング済みコンテンツを作成することを可能にするオーサリングアプリケーションを含む。一実施形態では、ファイルサーバ(ApacheやZopeなど)がオーサリング装置1010上で実行され、ローカルファイルシステムをサポートする。
【０１５７】
一実施形態では、ターゲット装置1020がオーサリング装置1010と通信し、オーサリング装置1010でスクリプティングされるオーサリング済みコンテンツを受信する。
【０１５８】
一実施形態では、インターフェース装置1030は、リモート装置1020を介してオーサリング済みコンテンツを再生する。インターフェース装置1030は、視覚ディスプレイ画面および/またはオーディオスピーカを含むことができる。
【０１５９】
一実施形態では、ネットワーク1040はインターネットである。一実施形態では、オーサリング装置1010とリモート装置1020との間の通信が、TCP/IPソケットで実施される。一実施形態では、オーサリング済みコンテンツが、リモート装置1020によってTCP/IPを介してオーサリング装置1010に要求され、HTTPを介してターゲットに提供される。
【０１６０】
図11に示す流れ図は、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の一実施形態である。流れ図内のブロックは、イベントの参加者に対してメッセージをポスティングする方法および機器の精神から逸脱することなく、異なるシーケンスで実施することができる。さらに、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の精神から逸脱することなく、ブロックを削除、追加、または結合することができる。さらに、ブロックを他のブロックと同時に実施することができる。
【０１６１】
図11の流れ図は、本発明の一実施形態によるリモートプラットフォーム用の宣言型コンテンツをオーサリングすることを示す。
【０１６２】
ブロック1110では、オーサリング済みコンテンツがオーサリング装置上で修正または作成される。一実施形態では、オーサリング装置は、Windows(登録商標)、Unix(登録商標)、Mac OS(登録商標)などのオペレーティングシステムを使用するパーソナルコンピュータである。一実施形態ではでは、オーサリング装置は、宣言型言語を使用してオーサリング済みコンテンツを作成する。そのような1つの宣言型言語が、明細書内の上記で示したコードスニペットで示されている。さらに、オーサリング装置上で作成されるオーサリング済みコンテンツは、具体的には、ゲーム機、セル電話、携帯情報端末、セットトップボックスなどのリモート装置上で使用するために開発される。
【０１６３】
一例では、オーサリング済みコンテンツは、リモート装置上に視覚イメージを表示するように構成される。別の例では、オーサリング済みコンテンツは、リモート装置上でオーディオ信号を再生するように構成される。さらに別の実施形態では、オーサリング済みコンテンツは、視覚イメージとオーディオ信号の両方を同時に再生するように構成される。
【０１６４】
ブロック1120では、リモート装置が検出される。一実施形態では、特定のTCP/IPソケットなどのリモート装置の通信パラメータが検出される。
【０１６５】
ブロック1130では、オーサリング装置がリモート装置と通信する。一実施形態では、オーサリング装置は、ケーブルなどの直接的有線接続を介してリモート装置と直接的に通信する。別の実施形態では、オーサリング装置は、インターネット、ワイヤレスネットワークなどのネットワークを介してリモート装置と通信する。
【０１６６】
ブロック1140では、オーサリング済みコンテンツがオーサリング装置からリモート装置に送信される。一実施形態では、オーサリング済みコンテンツが、データストリームとしてリモート装置に送信される。
【０１６７】
ブロック1150では、オーサリング済みコンテンツがリモート装置によって利用される。一実施形態では、リモート装置は、リモート装置を利用するオーサリング済みコンテンツを視覚的に表示する。別の実施形態では、リモート装置は、オーサリング済みコンテンツのオーディオ信号を再生する。一実施形態では、オーサリング済みコンテンツがインターフェース装置1030上で利用される。一実施形態では、リモート装置は、オーサリング済みコンテンツがリモート装置にストリーミングされるときにオーサリング済みコンテンツの利用を開始する。別の実施形態では、リモート装置は、オーサリング済みコンテンツがリモート装置に送信された後にオーサリング済みコンテンツを利用する。
【０１６８】
一実施形態では、オーサリング済みコンテンツの一部が、ブロック1140で残りのオーサリング済みコンテンツがリモート装置に送信されていると同時にリモート装置上で利用される。
【０１６９】
ブロック1160では、オーサリング装置は、オーサリング済みコンテンツがリモート装置で利用されるときにオーサリング済みコンテンツを監視する。例えば、オーサリング装置は、リモート装置上に表示されるオーサリング済みコンテンツに対応するオーサリング済みコンテンツの特定の部分を追跡する。別の例では、オーサリング装置は、ブロック1140でオーサリング済みコンテンツの一部がまだリモート装置に送信中であるのと同時に、リモート装置によって利用されるオーサリング済みコンテンツを監視する。
【０１７０】
ブロック1170では、オーサリング装置は、リモート装置上のオーサリング済みコンテンツの再生を制御する。例えば、オーサリング装置は、オーサリング装置からリモートにリモート装置上のオーサリング済みコンテンツの再生を休止、巻戻し、早送り、および開始することができる。
【０１７１】
ブロック1180では、オーサリング装置はオーサリング済みコンテンツをデバッグする。一実施形態では、オーサリング装置は、オーサリング装置上のオーサリング済みコンテンツのスクリプティングを閲覧すると共に、リモート装置上のオーサリング済みコンテンツの再生を体験することによってオーサリング済みコンテンツをデバッグする。別の実施形態では、オーサリング装置は、リモート装置上のオーサリング済みコンテンツの再生を休止すると共に、オーサリング装置のオーサリング済みコンテンツの対応するスクリプティングをデバッグする。例えば、オーサリング済みコンテンツがリモート装置上で休止中に、対応するオーサリング済みコンテンツが監視され、オーサリング装置で修正および/またはデバッグするのに利用可能である。
【０１７２】
本発明の特定の実施形態の前述の説明は、例示および説明のために提示したものである。本発明は他の様々な応用例に適用することができる。
【０１７３】
本発明の特定の実施形態の前述の説明は、網羅的なものではなく、本発明を開示される厳密な実施形態に限定するものでもなく、当然、上記の教示に照らして多くの修正形態および変形形態が可能である。本発明の原理およびその実際的な応用例を説明するために実施形態を選び、説明したが、それによって当業者は、本発明、ならびに企図される特定の用途に適する様々な修正を伴う様々な実施形態を最良に利用することが可能となる。本発明の範囲は本明細書に添付の特許請求の範囲およびその均等物によって定義されるものとする。
【図面の簡単な説明】
【０１７４】
【図１】リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器が実装される環境を示す図である。
【図２】リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器が実装される一実施形態を示す概略ブロック図である。
【図３】リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の一実施形態に適合するシステムを示す単純化されたブロック図である。
【図４】リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器の一実施形態に適合するシステムを示す概略ブロック図である。
【図５】リモートプラットフォーム用の宣言型コンテンツをオーサリングおよび修正する方法および機器の一実施形態に適合する流れ図である。
【図６】リモートプラットフォーム用の宣言型コンテンツをオーサリングおよび修正する方法および機器の一実施形態に適合する流れ図である。
【図７Ａ】図７Ａは、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器が実装される一実施形態を示すタイミング図である。
【図７Ｂ】図７Ｂは、リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器が実装される一実施形態を示すタイミング図である。
【図８】リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器が実装される一実施形態を示す概略ブロック図である。
【図９】リモートプラットフォーム用の宣言型コンテンツをオーサリングおよび修正する方法および機器の一実施形態と適合する流れ図である。
【図１０】リモートプラットフォーム用の宣言型コンテンツをオーサリングする方法および機器が実装される一実施形態を示す概略ブロック図である。
【図１１】リモートプラットフォーム用の宣言型コンテンツをオーサリングおよび修正する方法および機器の一実施形態に適合する流れ図である。
【図１】
2008518286.tif 000003
【図２】
2008518286.tif 000004
【図３】
2008518286.tif 000005
【図４】
2008518286.tif 000006
【図５】
2008518286.tif 000007
【図６】
2008518286.tif 000008
【図７Ａ】
2008518286.tif 000009
【図７Ｂ】
2008518286.tif 000010
【図８】
2008518286.tif 000011
【図９】
2008518286.tif 000012
【図１０】
2008518286.tif 000013
【図１１】
2008518286.tif 000014
【国際調査報告】
2008518286.tif 000015