(57)【要約】効率的な宣言型マークアップ言語（図１Ａ中の１２）により、複雑、ダイナミックでインタラクティブな視聴体験のリアルタイム作成及び表示を行うためのシステム及び方法（図１Ａ中の１１）。面構成を用いることにより、制作者は、自分の３次元シーン内で従来のテクスチャマップを用いるような箇所に、画像又はフルモーションビデオデータ（図１Ａ中の２０）を埋め込むことができる。また、制作者は、１つのシーン記述の描画結果を、他のシーンにテクスチャマッピングされる画像として使用することができる（図１Ａ中の２８）。特に、面構成により、いずれの描画アプリケーションの結果も、制作者のシーン内のテクスチャとして使用することが可能となる（図１Ａ中の２８）。これにより、ネストされたシーンの宣言型描画や、コンポーネントサーフェイスを有するシーンを異なる描画速度で描画することが可能となる（図１Ａ中の２６Ｆ）。
2006505050.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータと、上記コンピュータにより実行されるコンピュータプログラムとを備えるコンピュータシステムにおいて、
上記コンピュータプログラムは、
第１の画像が描画された第１の面と、第２の画像が描画された第２の面とを用いて動画像を構成するためのコンピュータインストラクションを有し、
上記第１の面からの上記第１の画像と、上記第２の面からの上記第２の画像とを組み合わせて、上記動画像を構成することを特徴とするコンピュータシステム。
【請求項２】
上記第１の画像及び上記第２の画像は、ビデオ画像、静止画像、アニメーション、シーンからなるグループから選択されることを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
上記第１の画像は、第１の２次元画素列に描画され、上記第２の画像は、第２の２次元画素列に描画されることを特徴とする請求項２に記載のコンピュータシステム。
【請求項４】
上記動画像は、宣言型インストラクションに従って作成されることを特徴とする請求項２に記載のコンピュータシステム。
【請求項５】
上記動画像は、リアルタイムで作成されることを特徴とする請求項４に記載のコンピュータシステム。
【請求項６】
上記動画像は、リアルタイムで作成されることを特徴とする請求項２に記載のコンピュータシステム。
【請求項７】
上記第１の画像は、第１の不透明値を有し、上記第２の画像は、第２の不透明値を有し、上記動画像は、第３の不透明値を有することを特徴とする請求項２に記載のコンピュータシステム。
【請求項８】
上記第１の画像と上記第２の画像とを組み合わせて上記動画像を構成するときに、上記第１の不透明値を用いて上記第２の不透明値を上書きするためのコンピュータインストラクションを、さらに有することを特徴とする請求項７に記載のコンピュータシステム。
【請求項９】
上記第１の不透明値に上記第２の不透明値を乗算して上記第３の不透明値を得るためのコンピュータインストラクションを、さらに有することを特徴とする請求項７に記載のコンピュータシステム。
【請求項１０】
上記第１の画像と上記第２の画像とを組み合わせることによりトラバースのマット効果を得るときに、上記第２の画像の不透明値を動かすためのコンピュータインストラクションを、さらに有することを特徴とする請求項７に記載のコンピュータシステム。
【請求項１１】
コンピュータと、上記コンピュータにより実行されるコンピュータプログラムとを備えるコンピュータシステムにおいて、上記コンピュータプログラムは、
第１の画像を第１の面上に描画し、
第２の画像を第２の面上に描画し、
第３のシーンを第３の面上に描画するためのコンピュータインストラクションを有し、
上記第１の画像は上記第３のシーン用のテクスチャとして使用され、上記第２の画像は上記テクスチャと混合されて上記第３のシーンを形成することを特徴とするコンピュータシステム。
【請求項１２】
ユーザは、上記第１の画像、上記第２の画像及び上記第３のシーンを描画するための宣言型インストラクションを与えることを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１３】
上記第２の画像は時間とともに変化することを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１４】
第４のシーンを第４の面に宣言的に描画するためのコンピュータインストラクションをさらに有し、上記第３のシーンは、上記第４のシーン内に混合されて上記第４のシーン内にサブシーンを形成することを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１５】
上記サブシーン内の上記第２の画像は、上記第２の面の上記第２の画像における変化を反映するように変化することを特徴とする請求項１４に記載のコンピュータシステム。
【請求項１６】
上記第１の画像及び上記第２の画像は、ビデオ画像、静止画像、アニメーション、シーンからなるグループから選択することができることを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１７】
コンピュータと、上記コンピュータにより実行されるコンピュータプログラムとを備えるコンピュータシステムにおいて、上記コンピュータプログラムは、
第１のシーンを第１の描画速度にて描画し、
第２のシーンを第２の描画速度にて描画するためのコンピュータインストラクションを有し、
上記第２のシーンは上記第１のシーン内にサブシーンを形成することを特徴とするコンピュータシステム。
【請求項１８】
上記第１のシーン及び上記第２のシーンは、宣言型インストラクションに基づいて描画されることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項１９】
上記第２のシーンの第１の画像は第１のバッファに記憶され、上記第２のシーンの第２の画像は第２のバッファに記憶され、上記第１の画像及び上記第２の画像は連続的に更新され、一度にいずれか一方の描画が更新されることを特徴とする請求項１７に記載のコンピュータシステム。
【請求項２０】
上記サブシーンは、上記第１の画像と上記第２の画像とからなるグループから選択される最後の描画を用いて更新されることを特徴とする請求項１９に記載のコンピュータシステム。
【請求項２１】
上記第１の描画速度は上記第２の描画速度に等しいことを特徴とする請求項２０に記載のコンピュータシステム。
【請求項２２】
コンピュータを用いて動画像を構成する方法において、
第１の画像を第１の面上に描画し、
第２の画像を第２の面上に描画し、
上記第１の画像と上記第２の画像とを組み合わせて、上記動画像を構成することを特徴とする方法。
【請求項２３】
上記第１の画像及び上記第２の画像は、ビデオ画像、静止画像、アニメーション、シーンからなるグループから選択されることを特徴とする請求項２２に記載の方法。
【請求項２４】
上記シーンは、ビデオ画像、静止画像、アニメーション、シーンからなるグループのうちの少なくとも１つからなることを特徴とする請求項２３に記載の方法。
【請求項２５】
さらに、上記第１の画像を第１の２次元画素列に描画し、上記第２の画像を第２の２次元画素列に描画することを特徴とする請求項２２に記載の方法。
【請求項２６】
さらに、上記動画像を構成するための宣言型インストラクションを与えることを特徴とする請求項２２に記載の方法。
【請求項２７】
上記動画像はリアルタイムで作成されることを特徴とする請求項２２に記載の方法。
【請求項２８】
さらに、上記第１の画像に第１の不透明値を与え、
上記第２の画像に第２の不透明値を与え、
上記動画像に第３の不透明値を与えることを特徴とする請求項２２に記載の方法。
【請求項２９】
さらに、上記第１の不透明値を用いて上記第２の不透明値を上書きすることを特徴とする請求項２８に記載の方法。
【請求項３０】
さらに、上記第１の不透明値と上記第２の不透明値とを乗算して上記第３の不透明値を得ることを特徴とする請求項２８に記載の方法。
【請求項３１】
さらに、上記第１の画像と上記第２の画像とを組み合わせることによりマット効果を得るときに、上記第２の画像の不透明値を動かすことを特徴とする請求項２８に記載の方法。
【請求項３２】
コンピュータを用いてシーンを作成する方法において、
第１の画像を第１の面上に描画し、
第２の画像を第２の面上に描画し、
第１の画像を上記シーン用のテクスチャとして使用し、上記第２の画像と上記テクスチャとを混合して第１のシーンを形成する第３の面に、第１のシーンを描画することを特徴とする方法。
【請求項３３】
上記第１の画像、上記第２の画像及び上記第１のシーンを描画するための宣言型インストラクションを与えることを特徴とする請求項３２に記載の方法。
【請求項３４】
上記第２の画像は時間とともに変化することを特徴とする請求項３２に記載の方法。
【請求項３５】
上記第１の画像及び上記第２の画像は、ビデオ画像、静止画像、アニメーション、シーンからなるグループから選択されることを特徴とする請求項３２に記載の方法。
【請求項３６】
コンピュータを用いてシーンを表示する方法において、
第１のシーンを第１の描画速度にて描画し、
第２のシーンを第２の描画速度にて描画し、
上記第２のシーンは上記第１のシーン内にサブシーンを形成することを特徴とする方法。
【請求項３７】
さらに、上記第１のシーン及び上記第２のシーンを描画するための宣言型インストラクションを与えることを特徴とする請求項３６に記載の方法。
【請求項３８】
さらに、上記第２のシーンの第１の画像を第１のバッファに記憶し、上記第２のシーンの第２の画像を第２のバッファに記憶し、
上記第１の画像及び上記第２の画像について、一度にいずれか一方の描画を更新して、これらを連続的に更新することを特徴とする請求項３６に記載の方法。
【請求項３９】
上記第１の画像と上記第２の画像とからなるグループから選択される最後の描画を用いて、上記サブシーンを更新することを特徴とする請求項３６に記載の方法。
【請求項４０】
上記第１の描画速度は上記第２の描画速度とは異なることを特徴とする請求項３６に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、３次元グラフィックスのためのモデリング言語に関し、特に、シーンに対する画像の埋込みに関する。
【背景技術】
【０００２】
コンピュータグラフィックスにおいて、従来のリアルタイム３次元シーン描画は、シーンの３次元ジオメトリの記述を計算することに基づいており、コンピュータディスプレイ上に画像の表現を生成することになる。仮想現実モデリング言語（Virtual Reality Modeling Language：以下、ＶＲＭＬと略す）は、従来の３次元アプリケーションで一般的に使用されている意味の多くは、例えば階層的変換、光源、視点、ジオメトリ、アニメーション、フォグ、素材特性、テクスチャマッピング等を定義する従来のモデリング言語である。テクスチャマッピング処理は、一般的には、外部から供給される画像データをシーン内の所定のジオメトリに適用するのに使用される。例えば、ＶＲＭＬによって、外部から供給される画像データ、外部から供給されるビデオデータ、あるいは外部から供給される画素データを面に適用することができる。しかし、ＶＲＭＬでは、描画されたシーンを、別のシーンに宣言的にマッピングされるテクスチャの画像として用いることはできない。宣言型マークアップ言語において、所望の結果を得るのに必要な意味論は暗黙的であることから、結果の記述は、所望の結果を得るのに十分である。したがって、所望の結果を得るための処理手順（すなわちスクリプトの記述）を準備する必要はない。その結果、宣言を用いてシーンを構成できることが望ましい。宣言型言語の一例は、ハイパーテキストマークアップ言語（Hypertext Markup Language：以下、ＨＴＭＬと略す）である。
【０００３】
さらに、画像データが適用された２つの面を宣言的に組み合わせて、第３の面を生成することが望ましい。また、ある面に適用された画像データを宣言的に再描画して、画像の現在の状態を反映することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来、３次元シーンは一体的に描画され、視聴者に対する最終的なフレームレートは、シーンの複雑さ又はテクスチャの入換えによって決まる最悪の性能によって、定まる。しかし、同じ画面上の異なる要素について異なる描画速度を使用すると、画質が向上し、視聴体験が、よりテレビ視聴に近くなり、ウェブページのような視聴体験ではなくなる。
【課題を解決するための手段】
【０００５】
効率的な宣言型マークアップ言語により、複雑、ダイナミックで、インタラクティブな体験のリアルタイム構成及び表示を行うためのシステム及び方法を提供する。面構成を用いることにより、制作者は、自分の３次元シーン内で従来のテクスチャマップを使用するような箇所に、画像又はフルモーションビデオデータを埋め込むことができる。また、制作者は、１つのシーン記述の描画結果を、他のシーンにテクスチャマッピングされる画像として用いることができる。特に、面構成により、いずれの描画アプリケーションの結果も、制作者のシーン内のテクスチャとして使用することができる。これにより、ネストされたシーンの宣言型描画や、コンポーネントサーフェイスを有するシーンを異なる描画速度で描画することが可能となる。
【発明を実施するための最良の形態】
【０００６】
「ブレンド（Blendo）」は、アニメーション及び目に見えるイメージの制御、現在再生中のメディア資産（media asset）に対するオーディオメディア、ビデオメディア、アニメーション、イベントデータのキューイング等、メディア資産の時間的な操作を可能にする本発明の例示的な一実施形態である。図１Ａは、ブレンドの基本的なアーキテクチャを示す。ブレンドのアーキテクチャの中心部には、コアランタイムモジュール１０（以下、コアと呼ぶ）があり、種々のアプリケーションプログラマインタフェース（Application Programmer Interface：以下、ＡＰＩと略す）要素、及びシステム１１内に存在するオブジェクトのセットに対するオブジェクトモデルを提供する。通常動作時には、パーサ１４によって、ファイルは解析され、未処理シーングラフ１６とされ、コア１０に供給され、コア１０において、コアのオブジェクトはインスタンス化され、ランタイムシーングラフが生成される。オブジェクトは、内蔵オブジェクト１８、制作者が定義したオブジェクト２０、ネイティブオブジェクト２４等とすることができる。これらのオブジェクトは、利用可能なマネージャ２６のセットを用いて、プラットフォームサービス３２を得る。これらのプラットフォームサービス３２には、イベントの処理、メディア資産のローディング、メディアの再生等が含まれる。オブジェクトは、レンダリングレイヤ２８を用いて、表示するための中間的な画像又は最終的な画像を構成する。ページ統合コンポーネント３０は、ブレンドを、例えばＨＴＭＬ又はＸＭＬページ等の外部環境にインタフェースさせるために使用される。
【０００７】
ブレンドは、マネージャ２６のセットに関するシステムオブジェクトを含んでいる。各マネージャ２６は、システム１１の何らかの特徴（aspect）を制御するためのＡＰＩのセットを提供する。イベントマネージャ２６Ｄは、ユーザ入力又は環境イベントから生じる入力システムイベントへのアクセスを提供する。ローディングマネージャ２６Ｃは、ブレンドファイルのローディング及びネイティブノード実行を容易にする。メディアマネージャ２６Ｅは、オーディオ、画像及びビデオのメディア資産をローディングし、制御し、再生する能力を提供する。レンダリングマネージャ２６Ｇは、シーンの描画に使用されるオブジェクトを生成及び管理できるようにする。シーンマネージャ２６Ａは、シーングラフを制御する。サーフェイスマネージャ２６Ｆは、その上でシーンの要素及び他の資産が合成される面を生成及び管理できるようにする。スレッドマネージャ２６Ｂは、制作者がスレッドを発生させ、制御し、スレッド間で通信できるようにする。
【０００８】
図１Ｂは、ブレンドエンジンによるコンテンツの流れを概念的に説明するためのフローチャートである。ステップ５０において、パーサ１４（図１Ａ）に取り込まれているコンテンツのファイル又はストリーム３４（図１Ａ）を含むソースによって表示が始まる。ソースのフォーマットは、ネイティブＶＲＭＬのようなテキストフォーマット、ネイティブバイナリフォーマット、ＸＭＬベースのフォーマット等であってもよい。ソースのフォーマットに関わらず、ステップ５５において、ソースは未処理シーングラフ１６（図１Ａ）に変換される。未処理シーングラフ１６は、コンテンツ中のノード、フィールド、他のオブジェクトのほか、フィールド初期値を表すことができる。また、オブジェクトプロトタイプ、ストリーム３４内の外部プロトタイプ参照、ルート文の記述を含むこともできる。
【０００９】
未処理シーングラフ１６の最上位には、ファイルに含まれるノード、最上位フィールド及び機能、プロトタイプ及びルートが含まれる。ブレンドにより、従来の要素に加えて最上位のフィールド及び機能が可能となる。これらは、外部環境に対するインタフェース、例えばＨＴＭＬページ等を提供するのに使用される。また、これらは、ストリーム３４が外部プロトタイプのコンテンツとして使用されるときに、オブジェクトインタフェースを提供する。
【００１０】
各未処理ノードは、そのコンテキスト内で初期化されるフィールドのリストを含んでいる。各未処理フィールドエントリは、そのフィールドの名称、タイプ（あれば）、データ値を含んでいる。各データ値は、明示的に入力されたフィールド値を表すことができる番号、ストリング、未処理ノード及び／又は未処理フィールドを含んでいる。
【００１１】
ステップ６０において、最上位又は未処理シーングラフ１６（図１Ａ）からプロトタイプが抽出され、このプロトタイプを用いて、このシーンによってアクセス可能なオブジェクトプロトタイプのデータベースが生成される。
【００１２】
そして、未処理シーングラフ１６は、構造トラバース（build traversal）によって送られる。この移動の間、オブジェクトプロトタイプのデータベースを用いて、各オブジェクトが構成される（ステップ６５）。
【００１３】
ステップ７０において、ストリーム３４内のルートが確立される。その後、ステップ７５において、シーン内の各フィールドが初期化される。これは、オブジェクトの非デフォルトフィールドに初期イベントを送ることによって行われる。シーングラフ構造はノードフィールドを使用することによって達成されるので、ステップ７５において、シーン階層構造も構成される。通りがけ順（in order traversal）を用いてイベントが発せられる。最初に出てきたノードは、ノード内のフィールドを列挙している。フィールドがノードである場合、そのノードは最初に移動される。
【００１４】
その結果、ツリーのその特定のブランチにおけるノードが初期化される。そして、１つのイベントが、ノードフィールドの初期値とともに、そのノードフィールドに送られる。
【００１５】
所定ノードのフィールドが初期化された後、制作者は、ノードが呼出時間に完全に初期化されていることを確実にするために、初期化論理をプロトタイプオブジェクトに追加する（ステップ８０）。上述の各ステップはルートシーン（root scene）を生成する。ステップ８５において、シーンは、そのシーン用に生成されたシーンマネージャ２６Ａ（図１Ａ）に供給される。ステップ９０において、シーンマネージャ２６Ａを用いて、暗黙的に又は制作者の制御の下で、描画し、行動の処理を実行する。
【００１６】
シーンマネージャ２６Ａによって描画されたシーンは、ブレンドのオブジェクト階層構造からのオブジェクトを用いて構成することができる。オブジェクトは、それらの親オブジェクトから幾つかの機能を取り出して、その機能を拡張又は変更することができる。階層構造の最下部にはオブジェクトがある。オブジェクトから取り出した２つのメインオブジェクトクラスは、ノードとフィールドである。ノードは、特にレンダリング方法を含んでいるが、これは表示トラバース（render traversal）の一部と呼ばれる。ノードのデータ属性はフィールドと呼ばれる。ブレンドのオブジェクト階層構造の中には、タイミングオブジェクトと呼ばれるオブジェクトのクラスがあり、これについては以下に詳細に説明する。以下の各コード部は例示的なものである。なお、各コード部の行番号は、単に特定のコード部の行番号を表しており、元のソースコードにおける行番号を表すものではない。
【００１７】
面オブジェクト（Surface Objects）
面オブジェクトとは、サーフェイスノード（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”
}
【００２０】
ムービーサーフェイスノードは、映画を定義する画像シーケンスにアクセスを行うことにより、映画を面上に描画する。ムービーサーフェイスのタイムドノード親クラス（TimedNode parent class）は、一度にどのフレームを面上に描画するのかを定義している。映画はオーディオソースとして使用することもできる。
【００２１】
コード部の２行目において、（多値フィールド）ＵＲＬフィールドは、面に対する映画データの潜在的位置のリストを提供する。このリストは、要素０がデータの好ましいソースを記述するように順序付けられている。何らかの理由で要素０が利用できないとき、あるいはサポートされないフォーマットである場合、次の要素を使用することができる。
【００２２】
３行目において、タイムベース（timeBase）フィールドが指定されている場合、タイムベースフィールドは、映画に関するタイミング情報を供給するノードを特定する。特に、タイムベースフィールドは、ある瞬間に映画のどのフレームを面に表示するかを決定するのに必要な情報を、映画に与える。タイムベースが指定されていない場合、面は、映画の最初のフレームを表示する。
【００２３】
４行目において、映画データが取り込まれると数秒後に、ムービーサーフィルノードにより、継続時間（duration）フィールドが映画の長さに設定される。
【００２４】
５行目及び６行目において、ロードタイム（loadTime）フィールド及びロードステータス（loadStatus）フィールドは、ムービーサーフェイスノードから、映画データの利用可能性に関する情報を提供する。ロードステータスは５つの値が可能である。すなわち、「なし（NONE）」、「要求（REQUESTED）」、「失敗（FAILED）」、「中止（ABORTED）」、「ロード（LOADED）」である。
【００２５】
「なし（NONE）」は初期状態である。「なし（NONE）」イベントは、値の数を０に設定し、又は最初のＵＲＬストリングを空ストリングに設定することにより、ノードのＵＲＬを消去した場合にも送られる。このとき、面の画素は黒及び不透明に設定される（すなわち、色は０，０，０となり、透明度は０である）。
【００２６】
「要求（REQUESTED）」イベントは、空でないＵＲＬ値が設定されると必ず送られる。面の画素は、「要求（REQUESTED）」イベントの後も変化しない。
【００２７】
「失敗（FAILED）」は、映画のローディングが成功しなかった場合に「要求（REQUESTED）」イベントの後に送られる。これは、例えば、ＵＲＬが存在しないファイルを参照している場合、又はファイルに有効データが含まれていない場合に起こる。面の画素は、「失敗（FAILED）」イベントの後も変化しない。
【００２８】
「中止（ABORTED）」イベントは、現在の状態が「要求（REQUESTED）」であり、ＵＲＬが変化した場合に送られる。ＵＲＬが空でない値に変更されると、「中止（ABORTED）」の後に「要求（REQUESTED）」イベントがくる。ＵＲＬが空の値に変更されると、「中止（ABORTED）」の後に「なし（NONE）」の値がくる。面の画素は、「中止（ABORTED）」イベントの後も変化しない。
【００２９】
「ロード（LOADED）」イベントは、映画の表示準備ができると送られる。その後、現在時刻に一致した値のロードタイム（loadTime）イベントがくる。タイムベースフィールドで示される映画のフレームが、面上に描画される。タイムベースがヌル（NULL）である場合、映画の最初のフレームが面上に描画される。
【００３０】
イメージサーフェイス（ImageSurface）
以下のコード部はイメージサーフェイス（ImageSurface）ノードを示している。ノードの各フィールドの記述は以下のようになる。
【００３１】
1) ImageSurface: SurfaceNode {
2)    field MF String     url        []
3)    field Time       loadTime        0
4)    field String    loadStatus     “NONE”
}
【００３２】
イメージサーフェイスノードは、画像ファイルを面上に描画する。コード部の２行目において、ＵＲＬフィールドは、面に対する画像データの潜在的位置のリストを提供する。このリストは、要素０がデータの最も好ましいソースを記述するように順序付けられている。何らかの理由で要素０が利用できないとき、あるいはサポートされないフォーマットである場合、次の要素を使用することができる。
【００３３】
３行目及び４行目において、ロードタイム（loadTime）フィールド及びロードステータス（loadStatus）フィールドは、イメージサーフェイスノードから、画像データの利用可能性に関する情報を提供する。ロードステータスは５つの値が可能である。すなわち、「なし（NONE）」、「要求（REQUESTED）」、「失敗（FAILED）」、「中止（ABORTED）」、「ロード（LOADED）」である。
【００３４】
「なし（NONE）」は初期状態である。「なし（NONE）」イベントは、値の数を０に設定し、又は最初のＵＲＬストリングを空ストリングに設定することにより、ノードのＵＲＬを消去した場合にも送られる。このとき、面の画素は黒及び不透明に設定される（すなわち、色は０，０，０となり、透明度は０である）。
【００３５】
「要求（REQUESTED）」イベントは、空でないＵＲＬ値が設定されると必ず送られる。面の画素は、「要求（REQUESTED）」イベントの後も変化しない。
【００３６】
「失敗（FAILED）」は、画像のローディングが成功しなかった場合に「要求（REQUESTED）」イベントの後に送られる。これは、例えば、ＵＲＬが存在しないファイルを参照している場合、又はファイルに有効データが含まれていない場合に起こる。面の画素は、「失敗（FAILED）」イベントの後も変化しない。
【００３７】
「中止（ABORTED）」イベントは、現在の状態が「要求（REQUESTED）」であり、ＵＲＬが変化した場合に送られる。ＵＲＬが空でない値に変更されると、「中止（ABORTED）」の後に「要求（REQUESTED）」イベントがくる。ＵＲＬが空の値に変更されると、「中止（ABORTED）」の後に「なし（NONE）」の値がくる。面の画素は、「中止（ABORTED）」イベントの後も変化しない。
【００３８】
「ロード（LOADED）」イベントは、画像が面上に描画されたときに送られる。その後、現在時刻に一致した値のロードタイム（loadTime）イベントがくる。
【００３９】
マットサーフェイス（MatteSurface）
以下のコード部はマットサーフェイス（MatteSurface）ノードを示している。ノードの各フィールドの記述は以下のようになる。
1) MatteSurface: SurfaceNode {
2)     field SurfaceNode    surface1        NULL
3)     field SurfaceNode    surface2        NULL
4)     field String      operation       ““
5)     field MF Float      parameter        0
6)     field Bool        overwriteSurface2  FALSE
}
【００４０】
マットサーフェイスノードは、画像合成動作を用いて、面１（surface1）と面２（surface2）とからの画像データを組み合わせて第３の面とする。合成動作の結果は、面２の解像度で計算される。面１の大きさが面２の大きさと異なる場合、動作実行前に面１の画像データのズームアップ又はズームダウンを行い、面１の大きさを面２の大きさと等しくする。
【００４１】
コード部の２行目及び３行目において、面１及び面２は、合成動作のための入力画像データを与える２つの面を特定している。４行目において、オペレーションフィールドは、２つの入力サーフィルに対して行う作成機能を特定している。可能な動作を以下に説明する。
【００４２】
「アルファ置換（REPLACE_ALPHA）」動作は、面１からのデータを用いて、面２のアルファチャンネルＡに上書きを行う。面１が１つのコンポーネント（グレースケール強度のみ）を有している場合、そのコンポーネントはアルファ（不透明）値として使用される。面１が２つ又は４つのコンポーネント（グレースケール強度＋アルファ又はＲＧＢＡ）を有している場合、アルファチャンネルＡを用いてアルファ値を与える。面１が３つのコンポーネント（ＲＧＢ）を有している場合、動作は不確定である。この動作を用いて、静止画像又は動画像に対するスタティック又はダイナミックなアルファマスクを行うことができる。例えば、ピクセルサーフェイス（SceneSurface）は、透明な背景にジェームズ・ボンドのアニメーションキャラクターを描画することができる。そして、この画像のアルファコンポーネントは、ビデオクリップのマスク形状として用いることができる。
【００４３】
「アルファ乗算（MULTIPLY_ALPHA）」動作は、面１からのアルファ値を面２からのアルファ値で乗算することを除いては、アルファ置換動作と同様である。
【００４４】
「クロスフェード（CROSS_FADE）」動作は、各面の目に見える割合（パーセンテージ）を制御するパラメータ値を用いて、２つの面間でフェードを行う。この動作は、２つの静止画像又は動画像の間でダイナミックにフェードを行うことができる。パラメータ値（５行目）を０から１に動かすことにより、面１の画像が面２の画像にフェードしてゆく。
【００４５】
「混合（BLEND）」動作は、面２からのアルファチャンネルを用いて混合率（パーセンテージ）を制御し、面１及び面２からの画像データを組み合わせる。この動作により、面２のアルファチャンネルは、２つの画像の混合を制御することができる。ピクセルサーフェイス（SceneSurface）を描画する、あるいは、ムービーサーフェイス（MovieSurface）を再生することにより面２のアルファチャンネルを動作させることで、複雑でトラバースのマット効果が得られる。Ｒ１、Ｇ１、Ｂ１、Ａ１が、面１の赤、緑、青、アルファの各値を表し、Ｒ２、Ｇ２、Ｂ２、Ａ２が面２における対応する画素の赤、緑、青、アルファの各値を表すとすると、その画素の赤、緑、青、アルファの各コンポーネントについて得られる値は以下のようになる。
【００４６】
赤＝Ｒ１＊（１−Ａ２）＋Ｒ２＊Ａ２                    （１）
緑＝Ｇ１＊（１−Ａ２）＋Ｇ２＊Ａ２                    （２）
青＝Ｂ１＊（１−Ａ２）＋Ｂ２＊Ａ２                    （３）
アルファ＝１                                          （４）
【００４７】
「加算（ADD）」動作及び「減算（SUBTRACT）」動作は、面１と面２のカラーチャンネルの加算又は減算を行う。結果のアルファ値は面２のアルファ値に等しい。
【００４８】
５行目において、パラメータフィールドは、作成機能の効果を変更できる１つ以上の浮遊点パラメータを与える。パラメータ値の具体的な解釈は、どの動作が特定されているかによって異なる。
【００４９】
６行目において、オーバーライト・面２（overwriteSurface2）フィールドは、マットサーフェイスノードが合成動作の結果を記録するための新たな面を割り当てるか（overwriteSurface2=FALSE）、あるいは、面２に記録されたデータを合成動作により上書きするか（overwriteSurface2=TRUE）を示す。
【００５０】
ピクセルサーフェイス（PixelSurface）
以下のコード部はピクセルサーフェイス（SceneSurface）ノードを示している。ノードのフィールドの記述は以下のようになる。
1) PixelSurface: SurfaceNode {
2)     field Image        image           0 0 0
}
【００５１】
ピクセルサーフェイス（PixelSurface）ノードは、ユーザが特定した画素の列を面上に描画する。２行目において、画像フィールドは面上に描画される画素データを記述する。
【００５２】
以下のコード部はピクセルサーフェイス（SceneSurface）ノードを示している。ノードの各フィールドの記述は以下のようになる。
1) SceneSurface: SurfaceNode {
2)     field MF ChildNode   children       []
3)     field UInt32      width           1
4)     field UInt32      height          1
}
【００５３】
ピクセルサーフェイス（SceneSurface）ノードは、特定大きさの面に特定の子ノードを描画する。ピクセルサーフェイスは、子ノードの現在の状態を反映するように自動的に再描画を行う。
【００５４】
コード部の２行目において、子フィールドは、描画される子ノードを記述する。概念的には、子フィールドは、シーンサーフェイスノードを含むシーングラフとは無関係に描画されるシーングラフ全体を記述する。
【００５５】
３行目及び４行目において、幅フィールド及び高さフィールドは、面の大きさを画素で特定する。例えば、幅が２５６、高さが５１２の場合、面は２５６×５１２の画素値の列を含んでいる。
【００５６】
ムービーサーフェイスノード、イメージサーフェイスノード、マットサーフェイスノード、ピクセルサーフェイスノード、シーンサーフェイスノードは、シーンの描画に用いられる。
【００５７】
シーンの記述の最上位には、「最上位面」であるディスプレイに出力がマッピングされる。その結果をディスプレイに描画するのではなく、３次元描画されたシーンは、上述の各サーフェイスノードのうちの１つを用いて出力を面上に生成することができる。ここで、出力は、制作者が望むような高品位のシーン混合に組み込むことができる。面のコンテンツは、面に埋め込まれたシーン記述を描画することにより生成されるが、これには、面の画像構成の一部として、色情報、透明度（アルファチャンネル）、深さが含まれる。この場合の画像とは、ビデオ画像、静止画像像、アニメーション又はシーンを含むものとして定義される。
【００５８】
また、面は、種々のテクスチャマッピングシステムの特殊化された条件を、一般的な画像管理インタフェースよりも内部でサポートするものとして定義される。その結果、このシステムにおけるサーフェイスプロデューサはいずれも、３次元描画処理によりテクスチャとして使用することができる。このようなサーフェイスプロデューサの例として、イメージサーフェイス、ムービーサーフェイス、マットサーフェイス、ピクセルサーフェイス、アプリケーションサーフェイスがある。
【００５９】
アプリケーションサーフェイス（ApplicationSurface）は、従来のウィンドウシステムにおけるアプリケーションウィンドウと同じように、表計算やワープロ等、埋め込まれたアプリケーションプロセスにより描画されたように画像データを維持する。
【００６０】
面モデルと、レンダリング生成及びテクスチャ使用とを統合することにより、異なる描画速度の宣言型オーサリングが可能になる。従来、３次元シーンは一体的に描画され、視聴者に対する最終的なフレームレートは、シーンの複雑さ又はテクスチャの入換えに起因した最悪の性能によって定まっていた。リアルタイムの連続的な作成フレームワークにおいては、面の抽象化により、同じ画面上の異なる要素に対して描画速度を異ならせるメカニズムが得られる。例えば、毎秒１フレームという低速で描画を行うウェブブラウザを描画することも可能であるが、これは、他のアプリケーションにより作成され、ブラウザの出力とともに表示されるビデオフレームレートが、毎秒３０フレーム（フルフレームで）に維持される場合に限り可能である。ウェブブラウザアプリケーションが自己の面に引っ込むと、画面作成機能は、高速画面更新の一部としてウェブブラウザの面から完全に引き出した最後の画像を使用して、フルモーションビデオフレームレートにて制約を受けずに描画を行うことができる。
【００６１】
図２Ａは、フルモーションビデオフレームレートで画面表示２００の複雑な部分２０２を描画する方式を示している。図２Ｂは、フルモーションビデオレートで複雑な部分２０２を含む画面表示２００を描画する際に行われる種々の動作を示すフローチャートである。画面表示２００は毎秒３０フレームで表示することが望ましいが、画面表示２００の部分２０２は複雑すぎて、毎秒３０フレームでは表示することができない。この場合、ステップ２１０（図２Ｂ）において、部分２０２を第１の面上に描画し、バッファ２０４に記憶する。ステップ２１５において、バッファ２０４に記憶された第１の面を用いることにより、部分２０２を含む画面表示２００を毎秒３０フレームで表示する。部分２０２を含む画面表示２００を表示している間、ステップ２２０において、部分２０２の次フレームを第２の面上に描画し、バッファ２０６に記憶する。この部分２０２の次フレームが使用可能になれば、画面表示２００の次の更新で第２の面を使用し（ステップ２２５）、部分２０２の更なる更新バージョンがバッファ２０４で使用可能になるまで、これを続ける。第２の面を使用して画面表示２００を表示している間、ステップ２３０に示すように、部分２０２の次フレームを第１の面上に描画する。第１の面への次フレームの描画が終わると、複雑な部分２０２を含む画面表示２００を毎秒３０フレームで表示するために、更新された第１の面が使用される。
【００６２】
面モデルと、レンダリング生成及びテクスチャ使用とを統合することにより、ネストされたシーンを宣言的に描画することが可能となる。画像として描画されたサブシーンの再作成により、オープンエンドのオーサリングが可能になる。特に、アニメーション化されたサブシーンは、より大きなビデオコンテキストに画像混合されるが、これらサブシーンを使用することにより、エンターテインメント用コンピュータグラフィックとして、より適切な画質が得られる。例えば、画像を混合するアプローチにより、ビジュアルアーティストは、ウィンドウシステムによる前世代の粗く、輪郭のくっきりしたクリッピングに替わる手段が得られる。
【００６３】
図３Ａは、アニメーション化されたサブシーンを含むネストされたシーンを示す。図３Ｂは、図３Ａのネストされたシーンを描画するのに行われる動作を示すフローチャートである。ステップ３１０において、画面表示２００に表示される背景画像を描画し、ステップ３１５において、画面表示２００に表示される背景画像内にキューブ３０２を配置する。キューブ３０２外の領域は、表示２００にキューブ３０２の背景を液性する面の一部である。キューブ３０２の面３０４は、第３の面として定義される。ステップ３２０において、ムービーサーフェイスノードを用いて、第３の面に映画を描画する。これにより、キューブの面３０４が、第３の面上に描画された映画を表示する。キューブ３０２の面３６０は、第４の面として定義される。ステップ３２５において、イメージサーフェイスノードを用いて、第４の面に画像を描画する。これにより、キューブの面３０６が、第４の面上に描画された画像を表示する。ステップ３３０において、キューブ３０２全体が第５の面として定義され、ステップ３３５において、この第５の面が平行移動及び／又は回転することにより、面３０４に映画を再生するとともに面３０５に静止画像を表示する移動キューブ５２が作成される。上述の処理手順を行うことにより、キューブ３０２の各面に別の描画を表示することもできる。なお、ステップ３１０〜３３５は、いずれの順序で行ってもよく、ステップ３１０〜３３５の全てを同時に開始してもよい。
【００６４】
なお、本発明は「ブレンド（Blendo）」とは無関係であり、「ブレンド」とは別の実施形態の一部となることができる。また、本発明の説明では３次元シーン描画について説明しているが、本発明は２次元シーン描画にも同様に適用可能である。面モデルにより、制作者は、画像及びビデオ効果を２次元及び３次元幾何学的マッピング及びアニメーションと自在に組み合わせることができる。
【００６５】
本発明の特定の実施形態について図示及び説明をしてきたが、本発明の広い解釈から逸脱しない範囲で種々の変更や修正を行えることは当業者にとって明らかである。したがって、添付の特許請求の範囲は、このような変更や修正が本発明の精神及び趣旨の範囲内であるとして、これらの変更や修正を全て、本発明の範囲に含めるものである。
【図面の簡単な説明】
【００６６】
【図１Ａ】ブレンド（Blendo）の基本的なアーキテクチャを示す図である。
【図１Ｂ】ブレンドエンジンによるコンテンツの流れを示すフローチャートである。
【図２Ａ】１つのシーンにおける２つの面が、異なる描画速度でどのように描画されるかを示す図である。
【図２Ｂ】異なる描画速度で図２Ａに示す２つの面を描画する際に行われる動作を示すフローチャートである。
【図３Ａ】ネストされたシーンを示す図である。
【図３Ｂ】図３Ａのネストされた図を描画するのに行われる動作を示すフローチャートである。
【図１Ａ】
2006505050.tif 000003
【図１Ｂ】
2006505050.tif 000004
【図２Ａ】
2006505050.tif 000005
【図２Ｂ】
2006505050.tif 000006
【図３Ａ】
2006505050.tif 000007
【図３Ｂ】
2006505050.tif 000008
【手続補正書】
【提出日】平成17年9月14日(2005.9.14)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピュータと、該コンピュータによって実行されるコンピュータプログラムとを備えるコンピュータシステムにおいて、
上記コンピュータプログラムは、
第１の画像が描画された第１の面と、第２の画像が描画された第２の面とを用いて、動画像を宣言的に構成するコンピュータインストラクションと、
上記動画像は宣言型マークアップ言語によって生成され、上記第１の画像は空間におけるオブジェクトの３次元的表現であり、上記第２の面は空間における３次元的表現を有する突出であり、該第１の画像は第１の不透明度の値を有し、該第２の画像は第２の不透明度の値を有し、上記動画像は第３の不透明度の値を有し、上記第１の面からの第１の画像と上記第２の面からの第２の画像とを組み合わせて該動画像を構成するコンピュータインストラクションと、
上記第１の画像と上記第２の画像とを組み合わせてトラバースのマット効果を得るときに、上記第２の画像の不透明度の値を動かすコンピュータインストラクションとを有し、
上記第１及び第２の画像は、ビデオ画像、静止画像、アニメーション、シーンからなるグループから選択されることを特徴とするコンピュータシステム。
【請求項２】
上記第１の画像は、第１の２次元画素配列で描画され、上記第２の画像は、第２の２次元画素配列で描画されることを特徴とする請求項１に記載のコンピュータシステム。
【請求項３】
上記動画像は、宣言型インストラクションによって構成されることを特徴とする請求項１に記載のコンピュータシステム。
【請求項４】
上記動画像は、リアルタイムで構成されることを特徴とする請求項３に記載のコンピュータシステム。
【請求項５】
上記動画像は、宣言型インストラクションによって構成されることを特徴とする請求項２に記載のコンピュータシステム。
【請求項６】
上記コンピュータプログラムは、上記第１の画像と上記第２の画像とを組み合わせて上記動画像を構成するときに、上記第１の不透明度の値で上記第２の不透明度の値を上書きするコンピュータインストラクションを有することを特徴とする請求項１に記載のコンピュータシステム。
【請求項７】
上記コンピュータプログラムは、上記第１の不透明度の値に上記第２の不透明度の値を乗算して上記第３の不透明度の値を得るコンピュータインストラクションを有することを特徴とする請求項１に記載のコンピュータシステム。
【請求項８】
コンピュータと、該コンピュータによって実行されるコンピュータプログラムとを備えるコンピュータシステムにおいて、
上記コンピュータプログラムは、
第１の画像を第１の面上に描画するコンピュータインストラクションと、
第２の画像を第２の面上に描画するコンピュータインストラクションと、
第３の画像を第３の面上に宣言的に描画するコンピュータインストラクションとを有し、
上記第１の画像は上記第３の画像用のテクスチャとして使用され、上記第２の画像は該テクスチャと混合されて該第３の画像を形成し、上記第３の面は宣言型マークアップ言語によって生成され、該第１の画像は空間における３次元的表現を有する突出であり、該第２の画像はオブジェクトの３次元的表現であることを特徴とするコンピュータシステム。
【請求項９】
上記第１、第２及び第３の画像は、ユーザからの宣言型インストラクションによって描画されることを特徴とする請求項８に記載のコンピュータシステム。
【請求項１０】
上記第２の画像は、時間とともに変化することを特徴とする請求項８に記載のコンピュータシステム。
【請求項１１】
上記コンピュータプログラムは、第４の画像を第４の面上に宣言的に描画するコンピュータインストラクションを有し、上記第３の画像は、上記第４の画像内に混合されて該第４の画像内にサブシーンを形成することを特徴とする請求項８に記載のコンピュータシステム。
【請求項１２】
上記サブシーン内の第２の画像は、上記第２の面の第２の画像における変化を反映するように変化することを特徴とする請求項１１に記載のコンピュータシステム。
【請求項１３】
上記第１及び第２の画像は、ビデオ画像、静止画像、アニメーション、シーンからなるグループから選択されることを特徴とする請求項８に記載のコンピュータシステム。
【請求項１４】
上記第１、第２及び第３の画像の描画は、再帰的に行われることを特徴とする請求項８に記載のコンピュータシステム。
【請求項１５】
コンピュータを用いて動画像を構成する動画像構成方法において、
第１の画像を第１の面上に描画し、
第２の画像を第２の面上に描画し、
上記動画像は宣言型マークアップ言語によって生成され、上記第１の画像はオブジェクトの３次元的表現であり、上記第２の面は空間における３次元的表現を有する突出であり、該第１の画像と該第２の画像とを組み合わせて該動画像を宣言的に構成し、
上記第１の画像の第１の不透明度の値を与え、
上記第２の画像の第２の不透明度の値を与え、
上記動画像の第３の不透明度の値を与え、
上記第１の画像と上記第２の画像とを組み合わせてマット効果を得るときに、上記第２の画像の不透明度の値を動かす動画像構成方法。
【請求項１６】
上記第１及び第２の画像は、ビデオ画像、静止画像、アニメーション、シーンからなるグループから選択されることを特徴とする請求項１５に記載の動画像構成方法。
【請求項１７】
上記シーンは、ビデオ画像、静止画像、アニメーション、シーンからなるグループのうちの少なくとも１つを含むことを特徴とする請求項１６に記載の動画像構成方法。
【請求項１８】
更に、上記第１の画像を第１の２次元画素配列で描画し、
上記第２の画像を第２の２次元画素配列で描画する請求項１５に記載の動画像構成方法。
【請求項１９】
更に、上記動画像を構成するために、宣言型インストラクションを与える請求項１５に記載の動画像構成方法。
【請求項２０】
上記動画像は、リアルタイムで構成されることを特徴とする請求項１５に記載の動画像構成方法。
【請求項２１】
上記第１の不透明度の値で上記第２の不透明度の値を上書きすることを特徴とする請求項１５に記載の動画像構成方法。
【請求項２２】
更に、上記第１の不透明度の値に上記第２の不透明度の値を乗算して上記第３の不透明度の値を得る請求項１５に記載の動画像構成方法。
【請求項２３】
コンピュータを用いてシーンを構成するシーン構成方法において、
第１の画像を第１の面上に描画し、
第２の画像を第２の面上に描画し、
上記第１の画像をシーン用のテクスチャとして使用し、該テクスチャを上記第２の画像に混合して、第１のシーンを、該第１のシーンを形成する第３の面上に描画し、
上記第３の面は宣言型マークアップ言語によって生成され、上記第１の画像は空間における３次元的表現を有する突出であり、上記第２の画像はオブジェクトの３次元的表現であることを特徴とするシーン構成方法。
【請求項２４】
更に、上記第１及び第２の画像、及び上記第１のシーンを描画する宣言型インストラクションを与える請求項２３に記載のシーン構成方法。
【請求項２５】
上記第２の画像は、時間とともに変化することを特徴とする請求項２３に記載のシーン構成方法。
【請求項２６】
上記第１及び第２の画像は、ビデオ画像、静止画像、アニメーション、シーンからなるグループから選択されることを特徴とする請求項２３に記載のシーン構成方法。
【請求項２７】
上記第１及び第２の画像、及び上記第３のシーンの描画は、再帰的に行われることを特徴とする請求項２３に記載のシーン構成方法。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、３次元グラフィックスのためのモデリング言語に関し、特に、シーンに対する画像の埋込みに関する。
【背景技術】
【０００２】
コンピュータグラフィックスにおいて、従来のリアルタイムの３次元シーンの描画は、シーンの３次元ジオメトリの記述を計算することに基づいており、コンピュータディスプレイ上に画像の表現を生成することになる。仮想現実モデリング言語（Virtual Reality Modeling Language：以下、ＶＲＭＬと略す）において、従来の３次元アプリケーションで一般的に使用されている意味の多くは、例えば階層的変換、光源、視点、ジオメトリ、アニメーション、フォグ、素材特性、テクスチャマッピング等を定義する従来のモデリング言語である。テクスチャマッピング処理は、一般的には、外部から供給される画像データをシーン内の所定のジオメトリに適用するのに使用される。例えば、ＶＲＭＬによって、外部から供給される画像データ、外部から供給されるビデオデータ、あるいは外部から供給される画素データを面に適用することができる。しかし、ＶＲＭＬでは、描画されたシーンを、別のシーンに宣言的にマッピングされるテクスチャの画像として用いることはできない。宣言型マークアップ言語において、所望の結果を得るのに必要な意味論は暗黙的であることから、得られる結果の記述は、所望の結果を得るのに十分である。したがって、所望の結果を得るための処理手順（すなわちスクリプトの記述）を準備する必要はない。その結果、宣言を用いてシーンを構成できることが望ましい。宣言型言語の一例は、ハイパーテキストマークアップ言語（Hypertext Markup Language：以下、ＨＴＭＬと略す）である。
【０００３】
更に、画像データが適用された２つの面を宣言的に組み合わせて、第３の面を生成することが望ましい。また、ある面に適用された画像データを宣言的に再描画して、画像の現在の状態を反映することが望ましい。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
従来、３次元シーンは一体的に描画され、視聴者に対する最終的なフレームレートは、シーンの複雑さ又はテクスチャの入換えによって決まる最悪の性能によって、定まる。しかし、同じ画面上の異なる要素について異なる描画速度を適用すると、画質が向上し、視聴体験が、よりテレビ視聴に近くなり、ウェブページのような視聴体験ではなくなる。
【課題を解決するための手段】
【０００５】
本発明に係るコンピュータシステムは、コンピュータと、コンピュータによって実行されるコンピュータプログラムとを備える。このコンピュータプログラムは、第１の画像が描画された第１の面と、第２の画像が描画された第２の面とを用いて、動画像を宣言的に構成するコンピュータインストラクションと、動画像は宣言型マークアップ言語によって生成され、第１の画像は空間におけるオブジェクトの３次元的表現であり、第２の面は空間における３次元的表現を有する突出であり、第１の画像は第１の不透明度の値を有し、第２の画像は第２の不透明度の値を有し、動画像は第３の不透明度の値を有し、第１の面からの第１の画像と第２の面からの第２の画像とを組み合わせて動画像を構成するコンピュータインストラクションと、第１の画像と第２の画像とを組み合わせてトラバースのマット効果を得るときに、第２の画像の不透明度の値を動かすコンピュータインストラクションとを有する。第１及び第２の画像は、ビデオ画像、静止画像、アニメーション、シーンからなるグループから選択される。
【０００６】
さらに、本発明に係るコンピュータシステムにおけるコンピュータプログラムは、第１の画像を第１の面上に描画するコンピュータインストラクションと、第２の画像を第２の面上に描画するコンピュータインストラクションと、第３の画像を第３の面上に宣言的に描画するコンピュータインストラクションとを有する。第１の画像は第３の画像用のテクスチャとして使用され、第２の画像はテクスチャと混合されて第３の画像を形成し、第３の面は宣言型マークアップ言語によって生成され、第１の画像は空間における３次元的表現を有する突出であり、第２の画像はオブジェクトの３次元的表現である。
【０００７】
本発明に係るコンピュータを用いて動画像を構成する動画像構成方法は、第１の画像を第１の面上に描画し、第２の画像を第２の面上に描画し、動画像は宣言型マークアップ言語によって生成され、第１の画像はオブジェクトの３次元的表現であり、第２の面は空間における３次元的表現を有する突出であり、第１の画像と第２の画像とを組み合わせて動画像を宣言的に構成し、第１の画像の第１の不透明度の値を与え、第２の画像の第２の不透明度の値を与え、動画像の第３の不透明度の値を与え、第１の画像と第２の画像とを組み合わせてマット効果を得るときに、第２の画像の不透明度の値を動かす。
【０００８】
本発明に係るコンピュータを用いてシーンを構成するシーン構成方法は、第１の画像を第１の面上に描画し、第２の画像を第２の面上に描画し、第１の画像をシーン用のテクスチャとして使用し、テクスチャを第２の画像に混合して、第１のシーンを、第１のシーンを形成する第３の面上に描画する。第３の面は宣言型マークアップ言語によって生成され、第１の画像は空間における３次元的表現を有する突出であり、第２の画像はオブジェクトの３次元的表現である。
【０００９】
本発明は、効率的な宣言型マークアップ言語により、複雑で、動的で、インタラクティブな体験のリアルタイム構成及び表示を行うためのシステム及び方法を提供する。面構成を用いることにより、制作者は、自分の３次元シーン内で従来のテクスチャマップを使用するような箇所に、画像又はフルモーションビデオデータを埋め込むことができる。また、制作者は、１つのシーン記述の描画結果を、他のシーンにテクスチャマッピングされる画像として用いることができる。特に、面構成により、いずれの描画アプリケーションの結果も、制作者のシーン内のテクスチャとして使用することができる。これにより、ネストされたシーンを宣言的に描画し、コンポーネントサーフェスを有するシーンを異なる描画速度で描画することができる。
【発明を実施するための最良の形態】
【００１０】
「ブレンド（Blendo）」は、本発明の典型的な実施形態であり、アニメーション及び目に見える画像の制御、現在再生中のメディア資産（media asset）に対するオーディオメディア、ビデオメディア、アニメーション、イベントデータのキューイング等、メディア資産の時間的な操作を可能にする。図１Ａは、ブレンドの基本的なアーキテクチャを示すブロック図である。ブレンドのアーキテクチャの中心部には、コアランタイムモジュール１０（以下、コアと呼ぶ）があり、コア１０は、アプリケーションプログラマインタフェース（Application Programmer Interface：以下、ＡＰＩと略す）の様々な要素、及びシステム１１内に存在するオブジェクトのセットに対するオブジェクトモデルを提供する。通常動作時には、パーサ１４によって、ファイルは解析されて、未処理シーングラフ１６とされ、コア１０に供給され、コア１０において、そのオブジェクトはインスタンス化され、ランタイムシーングラフが生成される。オブジェクトは、内蔵オブジェクト１８、制作者が定義したオブジェクト２０、ネイティブオブジェクト２４等とすることができる。これらのオブジェクトは、利用可能なマネージャ２６のセットを用いて、プラットフォームサービス３２を得る。これらのプラットフォームサービス３２には、イベントの処理、メディア資産のローディング、メディアの再生等が含まれる。オブジェクトは、レンダリングレイヤ２８を用いて、表示するための中間的な画像又は最終的な画像を構成する。ページ統合コンポーネント３０は、ブレンドを、例えばＨＴＭＬ又はＸＭＬページ等の外部環境にインタフェースさせるために使用される。
【００１１】
ブレンドは、マネージャ２６のセットに関するシステムオブジェクトを含んでいる。各マネージャ２６は、システム１１の何らかの特徴（aspect）を制御するためのＡＰＩのセットを提供する。イベントマネージャ２６Ｄは、ユーザ入力又は環境イベントから生じる入力装置イベントへのアクセスを提供する。ローディングマネージャ２６Ｃは、ブレンドファイルのローディング及びネイティブノード実行を容易にする。メディアマネージャ２６Ｅは、オーディオ、画像及びビデオのメディア資産をローディングし、制御し、再生する能力を提供する。レンダリングマネージャ２６Ｇは、シーンの描画に使用されるオブジェクトを生成及び管理できるようにする。シーンマネージャ２６Ａは、シーングラフを制御する。サーフェスマネージャ２６Ｆは、その上でシーンの要素及び他の資産が合成される面を生成及び管理できるようにする。スレッドマネージャ２６Ｂは、制作者がスレッドを発生させ、制御し、スレッド間で通信できるようにする。
【００１２】
図１Ｂは、ブレンドエンジンによるコンテンツの流れを概念的に説明するためのフローチャートである。ステップ５０において、パーサ１４（図１Ａ）に取り込まれているコンテンツのファイル又はストリーム３４（図１Ａ）を含むソースによって表示が始まる。ソースのフォーマットは、ネイティブＶＲＭＬのようなテキストフォーマット、ネイティブバイナリフォーマット、ＸＭＬベースのフォーマット等とすることができる。ステップ５５において、ソースのフォーマットに関わらず、ソースは未処理シーングラフ１６（図１Ａ）に変換される。未処理シーングラフ１６は、コンテンツ中のノード、フィールド、他のオブジェクトだけではなく、フィールドの初期値を表すことができる。また、オブジェクトプロトタイプ、ストリーム３４内の外部プロトタイプ参照及びルート文の記述を含むこともできる。
【００１３】
未処理シーングラフ１６の最上位には、ファイルに含まれるノード、最上位フィールド及び機能、プロトタイプ及びルートが含まれる。ブレンドにより、従来の要素に加えて最上位のフィールド及び機能を使用することが可能となる。これらは、外部環境に対するインタフェース、例えばＨＴＭＬページ等を提供するのに使用される。また、これらは、ストリーム３４が外部プロトタイプのコンテンツとして使用されるときに、オブジェクトインタフェースを提供する。
【００１４】
各未処理ノードは、そのコンテキスト内で初期化されるフィールドのリストを含んでいる。各未処理フィールドエントリは、そのフィールドの名称、タイプ（あれば）、データ値を含んでいる。各データ値は、明示的に入力されたフィールド値を表すことができる番号、文字列、未処理ノード及び／又は未処理フィールドを含んでいる。
【００１５】
ステップ６０において、最上位又は未処理シーングラフ１６（図１Ａ）からプロトタイプが抽出され、このプロトタイプを用いて、このシーンによってアクセス可能なオブジェクトプロトタイプのデータベースが生成される。
【００１６】
そして、未処理シーングラフ１６は、構造トラバース（build traversal）によって送られる。この移動の間、オブジェクトプロトタイプのデータベースを用いて、各オブジェクトが構成される（ステップ６５）。
【００１７】
ステップ７０において、ストリーム３４内のルートが確立される。その後、ステップ７５において、シーン内の各フィールドが初期化される。フィールドの初期化は、オブジェクトの非デフォルトフィールドに初期イベントを送ることによって行われる。シーングラフ構造はノードフィールドを使用することによって達成されるので、ステップ７５において、シーン階層構造も構成される。通りがけ順（in order traversal）を用いてイベントが発せられる。最初に出てきたノードは、ノード内のフィールドを列挙している。フィールドがノードである場合、そのノードは最初に移動される。
【００１８】
その結果、ツリーのその特定のブランチにおけるノードが初期化される。そして、１つのイベントが、ノードフィールドの初期値とともに、そのノードフィールドに送られる。
【００１９】
特定のノードのフィールドが初期化された後、制作者は、ノードが呼出時間に完全に初期化されていることを確実にするために、初期化論理をプロトタイプオブジェクトに追加する（ステップ８０）。上述の各ステップはルートシーン（root scene）を生成する。ステップ８５において、シーンは、そのシーン用に生成されたシーンマネージャ２６Ａ（図１Ａ）に供給される。ステップ９０において、シーンマネージャ２６Ａを用いて、暗黙的に又は制作者の制御の下で、描画し、行動の処理を実行する。
【００２０】
シーンマネージャ２６Ａによって描画されるシーンは、ブレンドのオブジェクト階層構造からのオブジェクトを用いて構成することができる。オブジェクトは、それらの親オブジェクトから幾つかの機能を取り出して、その機能を拡張又は変更することができる。階層構造の最下部にはオブジェクトがある。オブジェクトから取り出した２つのメインオブジェクトクラスは、ノードとフィールドである。ノードは、特にレンダリング方法を含み、これは、表示トラバース（render traversal）の一部と呼ばれる。ノードのデータ属性はフィールドと呼ばれる。ブレンドのオブジェクト階層構造の中には、タイミングオブジェクトと呼ばれるオブジェクトのクラスがあり、これについては以下に詳細に説明する。以下の各コード部は例示的なものである。なお、各コード部の行番号は、単に特定のコード部の行番号を表しており、元のソースコードにおける行番号を表すものではない。
【００２１】
面オブジェクト（Surface Objects）
面オブジェクトとは、サーフェスノードSurfaceNodeタイプのノードである。サーフェスノードSurfaceNodeのクラスは、２次元画像を色、深さ、不透明度（アルファ）の値の配列として記述する全てのオブジェクトの基本クラスである。サーフェスノードSurfaceNodeは、主としてテクスチャマップとして使用される画像を提供するのに用いられる。サーフェスノードSurfaceNodeのクラスからは、ムービーサーフェスMovieSurface、イメージサーフェスImageSurface、マットサーフェスMatteSurface、ピクセルサーフェスPixelSurface、シーンサーフェスSceneSurfaceが導かれる。なお、各コード部の行番号は、単にそのコード部についての行番号を表しており、元のソースコードにおける行番号を表すものではない。
【００２２】
ムービーサーフェスMovieSurface
以下のコード部は、ムービーサーフェスMovieSurfaceのノードを示している。ムービーサーフェス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の親クラス（parent class）は、一度にどのフレームを面上に描画するのかを定義している。映画はオーディオソースとしても使用することができる。
【００２５】
コード部の２行目において、（多値フィールドの）ＵＲＬフィールドは、面に対する映画データの潜在的位置のリストを提供する。このリストは、要素０がデータの好ましいソースを記述するように順序付けられている。何らかの理由で要素０が利用できないとき、あるいはサポートされないフォーマットである場合、次の要素を使用することができる。
【００２６】
３行目において、タイムベースtimeBaseのフィールドが指定されている場合、タイムベースtimeBaseのフィールドは、映画に関するタイミング情報を提供するノードを指定する。特に、タイムベースtimeBaseのフィールドは、ある瞬間に映画のどのフレームを面に表示するかを決定するのに必要な情報を、映画に与える。タイムベースtimeBaseが指定されていない場合、面は、映画の最初のフレームを表示する。
【００２７】
４行目において、映画データが取り込まれると数秒後に、ムービーサーフェスMovieSurfaceのノードにより、継続時間durationのフィールドが映画の長さに設定される。
【００２８】
５行目及び６行目において、ロードタイムloadTimeのフィールド及びロードステータスloadStatusのフィールドは、ムービーサーフェスMovieSurfaceのノードから、映画データの利用可能性に関する情報を提供する。ロードステータスloadStatusは、５つの値、すなわち「なし（NONE）」、「要求（REQUESTED）」、「失敗（FAILED）」、「中止（ABORTED）」、「ロード（LOADED）」が可能である。
【００２９】
「なし（NONE）」は初期状態である。「なし（NONE）」イベントは、値の数を０に設定し、又はＵＲＬの最初の文字列を空の文字列に設定することによって、ノードのＵＲＬを消去した場合にも送られる。このとき、面の画素は、黒及び不透明に設定される（すなわち、色は０，０，０となり、透明度は０である）。
【００３０】
「要求（REQUESTED）」イベントは、空でないＵＲＬ値が設定されると必ず送られる。面の画素は、「要求（REQUESTED）」イベントの後も変化しない。
【００３１】
「失敗（FAILED）」は、映画のローディングが成功しなかった場合に、「要求（REQUESTED）」イベントの後に送られる。これは、例えば、ＵＲＬが存在しないファイルを参照している場合、又はファイルに有効なデータが含まれていない場合に起こる。面の画素は、「失敗（FAILED）」イベントの後も変化しない。
【００３２】
「中止（ABORTED）」イベントは、現在の状態が「要求（REQUESTED）」であり、ＵＲＬが変更された場合に送られる。ＵＲＬが空でない値に変更されると、「中止（ABORTED）」の後に「要求（REQUESTED）」イベントがくる。ＵＲＬが空の値に変更されると、「中止（ABORTED）」の後に「なし（NONE）」の値がくる。面の画素は、「中止（ABORTED）」イベントの後も変化しない。
【００３３】
「ロード（LOADED）」イベントは、映画を表示する準備ができると送られる。その後、現在時刻に一致した値のロードタイムloadTimeのイベントがくる。タイムベースtimeBaseのフィールドで示される映画のフレームが、面上に描画される。タイムベースtimeBaseがヌル（NULL）である場合、映画の最初のフレームが面上に描画される。
【００３４】
イメージサーフェスImageSurface
以下のコード部は、イメージサーフェスImageSurfaceのノードを示している。イメージサーフェスImageSurfaceのノードの各フィールドの記述は、以下のようになる。
【００３５】
1) ImageSurface: SurfaceNode {
2)    field MF String     url             []
3)    field Time          loadTime        0
4)    field String        loadStatus     “NONE”
}
【００３６】
イメージサーフェスImageSurfaceのノードは、画像ファイルを面上に描画する。コード部の２行目において、ＵＲＬフィールドは、面に対する画像データの潜在的位置のリストを提供する。このリストは、要素０がデータの最も好ましいソースを記述するように順序付けられている。何らかの理由で要素０が利用できないとき、あるいはサポートされないフォーマットである場合、次の要素を使用することができる。
【００３７】
３行目及び４行目において、ロードタイムloadTimeのフィールド及びロードステータスloadStatusのフィールドは、イメージサーフェスImageSurfaceのノードから、画像データの利用可能性に関する情報を提供する。ロードステータスloadStatusは、５つの値、すなわち「なし（NONE）」、「要求（REQUESTED）」、「失敗（FAILED）」、「中止（ABORTED）」、「ロード（LOADED）」が可能である。
【００３８】
「なし（NONE）」は初期状態である。「なし（NONE）」イベントは、値の数を０に設定し、又はＵＲＬの最初の文字列を空の文字列に設定することによって、ノードのＵＲＬを消去した場合にも送られる。このとき、面の画素は、黒及び不透明に設定される（すなわち、色は０，０，０となり、透明度は０である）。
【００３９】
「要求（REQUESTED）」イベントは、空でないＵＲＬ値が設定されると必ず送られる。面の画素は、「要求（REQUESTED）」イベントの後も変化しない。
【００４０】
「失敗（FAILED）」は、画像のローディングが成功しなかった場合に、「要求（REQUESTED）」イベントの後に送られる。これは、例えば、ＵＲＬが存在しないファイルを参照している場合、又はファイルに有効なデータが含まれていない場合に起こる。面の画素は、「失敗（FAILED）」イベントの後も変化しない。
【００４１】
「中止（ABORTED）」イベントは、現在の状態が「要求（REQUESTED）」であり、ＵＲＬが変更された場合に送られる。ＵＲＬが空でない値に変更されると、「中止（ABORTED）」の後に「要求（REQUESTED）」イベントがくる。ＵＲＬが空の値に変更されると、「中止（ABORTED）」の後に「なし（NONE）」の値がくる。面の画素は、「中止（ABORTED）」イベントの後も変化しない。
【００４２】
「ロード（LOADED）」イベントは、画像が面上に描画されたときに送られる。その後、現在時刻に一致した値のロードタイムloadTimeのイベントがくる。
【００４３】
マットサーフェスMatteSurface
以下のコード部は、マットサーフェスMatteSurfaceのノードを示している。マットサーフェスMatteSurfaceのノードの各フィールドの記述は、以下のようになる。
1) MatteSurface: SurfaceNode {
2)     field SurfaceNode    surface1           NULL
3)     field SurfaceNode    surface2           NULL
4)     field String         operation         ““
5)     field MF Float       parameter          0
6)     field Bool           overwriteSurface2  FALSE
}
【００４４】
マットサーフェスMatteSurfaceのノードは、画像合成操作を用いて、面surface1と面surface2とからの画像データを組み合わせて第３の面とする。合成操作の結果は、面surface2の解像度で計算される。面surface1の大きさが面surface2の大きさと異なる場合、操作実行前に、面surface1の画像データをズームアップ又はズームダウンして、面surface1の大きさを面surface2の大きさと等しくする。
【００４５】
コード部の２行目及び３行目において、面surface1及び面surface2のフィールドは、合成操作のための入力画像データを提供する２つの面を指定する。４行目において、オペレーションフィールドは、２つの入力面上で実行する合成関数を指定する。可能な操作を以下に説明する。
【００４６】
「アルファ置換（REPLACE_ALPHA）」操作は、面surface1からのデータで面surface2のアルファチャンネルＡを上書きする。面surface1が１つの成分（グレースケール強度のみ）を有している場合、その成分は、アルファ（不透明度の）値として用いられる。面surface1が２つ又は４つの成分（グレースケール強度＋アルファ値、すなわちＲＧＢＡ）を有している場合、アルファ値を得るためにアルファチャンネルＡを用いる。面surface1が３つの成分（ＲＧＢ）を有している場合、操作は未定義である。この操作を用いて、静止画像又は動画像に対する静的な又は動的なアルファマスクを行うことができる。例えば、シーンサーフェスSceneSurfaceは、透明な背景にジェームズ・ボンドのアニメーションキャラクタを描画することができる。そして、この画像のアルファ成分は、ビデオクリップのマスク形状として用いることができる。
【００４７】
「アルファ乗算（MULTIPLY_ALPHA）」操作は、面surface1からのアルファ値を面surface2からのアルファ値で乗算することを除いては、アルファ置換操作と同じである。
【００４８】
「クロスフェード（CROSS_FADE）」操作は、２つの面の目に見える割合（percentage）を制御するパラメータ値を用いて、２つの面間でフェードを行う。この操作は、２つの静止画像又は動画像間で動的にフェードを行うことができる。パラメータ値（５行目）を０から１に動かすことにより、面surface1の画像が面surface2の画像にフェードしてゆく。
【００４９】
「混合（BLEND）」操作は、面surface2からの混合率（blending percentage）を制御するアルファチャンネルを用いて、面surface1及び面surface2からの画像データを組み合わせる。この操作により、面surface2のアルファチャンネルは、２つの画像の混合率を制御することができる。シーンサーフェスSceneSurfaceを描画する、あるいはムービーサーフェスMovieSurfaceを再生することによって面surface2のアルファチャンネルを移動させることにより、複雑でトラバースのマット効果が得られる。Ｒ１、Ｇ１、Ｂ１、Ａ１が、面surface1の画素の赤、緑、青、アルファの各値を表し、Ｒ２、Ｇ２、Ｂ２、Ａ２が、面surface2における対応する画素の赤、緑、青、アルファの各値を表しているとき、その画素の赤、緑、青、アルファの各成分について得られる値は、以下のようになる。
【００５０】
赤＝Ｒ１＊（１−Ａ２）＋Ｒ２＊Ａ２                    （１）
緑＝Ｇ１＊（１−Ａ２）＋Ｇ２＊Ａ２                    （２）
青＝Ｂ１＊（１−Ａ２）＋Ｂ２＊Ａ２                    （３）
アルファ＝１                                          （４）
【００５１】
「加算（ADD）」操作及び「減算（SUBTRACT）」操作は、面surface1と面surface2のカラーチャンネルの加算又は減算を行う。得られるアルファ値は、面surface2のアルファ値に等しい。
【００５２】
５行目において、パラメータフィールドは、合成関数の効果を変更できる１つ以上の浮動小数点パラメータを与える。パラメータ値の具体的な解釈は、どの操作が指定されているかによって異なる。
【００５３】
６行目において、オーバライトサーフェスoverwriteSurface2のフィールドは、マットサーフェスMatteSurfaceのノードが合成操作の結果を記憶するための新たな面を割り当てるか（overwriteSurface2=FALSE）、あるいは面surface2に記憶されているデータを合成操作によって上書きするか（overwriteSurface2=TRUE）を指示する。
【００５４】
ピクセルサーフェスPixelSurface
以下のコード部は、ピクセルサーフェスPixelSurfaceのノードを示している。ピクセルサーフェスPixelSurfaceのノードのフィールドの記述は、以下のようになる。
1) PixelSurface: SurfaceNode {
2)     field Image        image           0 0 0
}
【００５５】
ピクセルサーフェスPixelSurfaceのノードは、ユーザが指定した画素の配列を面上に描画する。２行目において、画像フィールドは、面上に描画される画素データを記述する。
【００５６】
シーンサーフェスSceneSurface
以下のコード部は、シーンサーフェスSceneSurfaceのノードを示している。シーンサーフェスSceneSurfaceのノードの各フィールドの記述は、以下のようになる。
1) SceneSurface: SurfaceNode {
2)     field MF ChildNode   children        []
3)     field UInt32         width           1
4)     field UInt32         height          1
}
【００５７】
シーンサーフェスSceneSurfaceのノードは、特定の大きさの面に特定の子ノードを描画する。シーンサーフェスSceneSurfaceは、子ノードの現在の状態を反映するように自動的に再描画する。
【００５８】
コード部の２行目において、子フィールドは、描画される子ノードを記述する。概念的には、子フィールドは、シーンサーフェスSceneSurfaceのノードを含むシーングラフとは無関係に描画されるシーングラフ全体を記述する。
【００５９】
３行目及び４行目において、幅フィールド及び高さフィールドは、面の大きさを画素で指定する。例えば、幅が２５６、高さが５１２の場合、その面は２５６×５１２の画素値の配列を有する。
【００６０】
ムービーサーフェスMovieSurfaceのノード、イメージサーフェスImageSurfaceのノード、マットサーフェスMatteSurfaceのノード、ピクセルサーフェスPixelSurfaceのノード、シーンサーフェスSceneSurfaceのノードは、シーンの描画に用いられる。
【００６１】
シーンの記述の最上位において、「最上位面（top level Surface）」の出力が、ディスプレイにマッピングされる。その結果をディスプレイに描画するのではなく、３次元的に描画されたシーンにより、上述の各サーフェスノードのうちの１つを用いて、その出力を面上に生成することができる。ここで、出力は、制作者が望むような高品位のシーン構成に組み込むことができる。面のコンテンツは、面に埋め込まれたシーン記述を描画することにより生成され、これには、面の画像構成の一部として、色情報、透明度（アルファチャンネル）、深さを含めることができる。この場合の画像とは、ビデオ画像、静止画像像、アニメーション又はシーンを含むものとして定義される。
【００６２】
また、面は、様々なテクスチャマッピングシステムの特殊化された条件を、一般的な画像管理インタフェースよりも、内部でサポートするものとして定義される。その結果、テクスチャマッピングシステムにおけるあらゆるサーフェスプロデューサ（Surface producer）は、３次元描画処理によりテクスチャとして使用することができる。このようなサーフェスプロデューサの例として、イメージサーフェスImageSurface、ムービーサーフェスMovieSurface、マットサーフェスMatteSurface、シーンサーフェスSceneSurface及びアプリケーションサーフェスApplicationSurfaceがある。
【００６３】
アプリケーションサーフェスApplicationSurfaceは、アプリケーション処理により埋め込まれて描画された画像データ、例えば従来のウィンドウシステムにおけるアプリケーションウィンドウに類似した方法で描画された表計算、ワープロ等の画像データを維持する。
【００６４】
面モデルを描画生成（rendering production）と統合するとともに、テクスチャを使用することにより、異なる描画速度の宣言型オーサリングが可能になる。従来、３次元シーンは一体的に描画され、視聴者に対する最終的なフレームレートは、シーンの複雑さ又はテクスチャの入換えに起因した最悪の性能によって定まっていた。フレームワーク（framework）のリアルタイムで連続した構成では、面を抽象化することにより、同じ画面上の異なる要素に対して描画速度を異ならせるメカニズムが得られる。例えば、毎秒１フレームという低速で描画を行うウェブブラウザを描画することも可能であるが、これは、他のアプリケーションによって生成され、ブラウザの出力とともに表示されるビデオフレームレートが、フルフレームレートの毎秒３０フレームに維持されている場合に限り可能である。ウェブブラウザアプリケーションがそれ自身に面を描画する場合、画面制作者（screen compositor）は、フルモーションビデオフレームレートに妨げられずに、ウェブブラウザ面の最後に完全に描画された画像を高速画面更新の一部として使用して、描画を行うことができる。
【００６５】
図２Ａは、画面表示２００の複雑な部分２０２をフルモーションビデオフレームレートで描画する方法を説明するための図である。図２Ｂは、複雑な部分２０２を含む画面表示２００をフルモーションビデオレートで描画する際の様々な動作を示すフローチャートである。画面表示２００は毎秒３０フレームで表示することが望ましいが、画面表示２００の部分２０２は、複雑すぎて、毎秒３０フレームでは表示することができない。この場合、ステップ２１０（図２Ｂ）において、部分２０２を第１の面上に描画するとともに、バッファ２０４に記憶する。ステップ２１５において、バッファ２０４に記憶された第１の面を用いることにより、部分２０２を含む画面表示２００を毎秒３０フレームで表示する。部分２０２を含む画面表示２００を表示している間、ステップ２２０において、部分２０２の次フレームを第２の面上に描画するとともに、バッファ２０６に記憶する。この部分２０２の次フレームが一旦利用可能になると、第２の面を用いて画面表示２００の次の更新を行うとともに（ステップ２２５）、部分２０２の更なる更新バージョンがバッファ２０４で利用可能になるまで、これを続ける。第２の面を用いて画面表示２００を表示している間、ステップ２３０において、部分２０２の次フレームを第１の面上に描画する。第１の面への部分２０２の次フレームの描画が終わると、複雑な部分２０２を含む画面表示２００を毎秒３０フレームで表示するために、更新された第１の面を使用する。
【００６６】
面モデルを描画生成と統合するとともに、テクスチャを使用することにより、ネストされたシーンを宣言的に描画することができる。画像として描画されたサブシーンを再合成することにより、オープンエンドなオーサリングが可能になる。特に、アニメーション化され、より大きなビデオコンテキストに画像混合されたサブシーンを用いることにより、エンターテインメント用のコンピュータグラフィックとして、より適切な画質が得られる。例えば、この画像を混合する方法により、ビジュアルアーティストは、ウィンドウシステムによる前世代の粗く、明確な輪郭を有するクリッピングに替わる手段が得られる。
【００６７】
図３Ａは、アニメーション化されたサブシーンを含むネストされたシーンを示す。図３Ｂは、図３Ａのネストされたシーンを描画する際に実行される動作を示すフローチャートである。ステップ３１０において、画面表示２００に表示される背景画像を描画し、ステップ３１５において、画面表示２００に表示された背景画像内にキューブ３０２を配置する。キューブ３０２の外側の領域は、画面表示２００にキューブ３０２の背景を形成するする面の一部である。キューブ３０２の面３０４は、第３の面として定義される。ステップ３２０において、ムービーサーフェスMovieSurfaceのノードを用いて、第３の面に映画を描画する。これにより、キューブ３０２の面３０４は、第３の面上に描画された映画を表示する。キューブ３０２の面３０６は、第４の面として定義される。ステップ３２５において、イメージサーフェスImageSurfaceのノードを用いて、第４の面に画像を描画する。これにより、キューブ３０２の面３０６は、第４の面上に描画された画像を表示する。ステップ３３０において、キューブ３０２全体が第５の面として定義され、ステップ３３５において、この第５の面が移動及び／又は回転されることにより、面３０４に映画を再生するとともに面３０５に静止画像を表示する移動キューブが構成される。上述の処理手順を行うことにより、キューブ３０２の各面に別の描画を表示することもできる。なお、ステップ３１０〜３３５は、いずれの順序で行ってもよく、ステップ３１０〜３３５の全てを同時に開始してもよい。
【００６８】
なお、本発明は、「ブレンド（Blendo）」から独立しており、「ブレンド」とは別の実施形態の一部とすることができる。また、本発明の説明では、３次元シーンの描画について説明しているが、本発明は、２次元シーンの描画にも同様に適用することができる。面モデルにより、制作者は、画像とビデオ効果を、２次元及び３次元の幾何学的マッピング及びアニメーション化によって、自由に組み合わせることができる。
【００６９】
本発明を、特定の実施形態について図示し、説明したが、本発明の特徴から逸脱することなく、種々の変更や修正を行えることは、当業者にとって明らかである。したがって、特許請求の範囲は、このような変更や修正が本発明の趣旨及び範囲内であるとして、これらの変更や修正を全て含むものである。
【図面の簡単な説明】
【００７０】
【図１Ａ】ブレンド（Blendo）の基本的なアーキテクチャを示す図である。
【図１Ｂ】ブレンドエンジンによるコンテンツの流れを示すフローチャートである。
【図２Ａ】１つのシーンにおける２つの面が、異なる描画速度でどのように描画されるかを示す図である。
【図２Ｂ】異なる描画速度で図２Ａに示す２つの面を描画する際に行われる動作を示すフローチャートである。
【図３Ａ】ネストされたシーンを示す図である。
【図３Ｂ】図３Ａのネストされた図を描画するのに行われる動作を示すフローチャートである。
【国際調査報告】
2006505050.tif 000009