JP4796499B2 - 映像およびシーングラフインターフェイス - Google Patents

映像およびシーングラフインターフェイス Download PDF

Info

Publication number
JP4796499B2
JP4796499B2 JP2006536587A JP2006536587A JP4796499B2 JP 4796499 B2 JP4796499 B2 JP 4796499B2 JP 2006536587 A JP2006536587 A JP 2006536587A JP 2006536587 A JP2006536587 A JP 2006536587A JP 4796499 B2 JP4796499 B2 JP 4796499B2
Authority
JP
Japan
Prior art keywords
scene graph
data structure
video
graph data
modifying
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2006536587A
Other languages
English (en)
Other versions
JP2007509420A5 (ja
JP2007509420A (ja
Inventor
エス. ベーダ ジョセフ
エイ. シュナイダー ゲルハルト
ティー. ガロ ケヴィン
エム. スミス アダム
エス. バンデンバーグ エリック
ビー. カーチス ドナルド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2007509420A publication Critical patent/JP2007509420A/ja
Publication of JP2007509420A5 publication Critical patent/JP2007509420A5/ja
Application granted granted Critical
Publication of JP4796499B2 publication Critical patent/JP4796499B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/545Interprogram communication where tasks reside in different layers, e.g. user- and kernel-space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation or generation of source code for implementing user interfaces
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/001Texturing; Colouring; Generation of texture or colour
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/005Tree description, e.g. octree, quadtree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/61Scene description

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Human Computer Interaction (AREA)
  • Geometry (AREA)
  • Mathematical Physics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Processing Or Creating Images (AREA)
  • Image Generation (AREA)

Description

本発明は、一般的にはコンピュータシステムに関し、より詳細には、コンピュータシステムに表示するグラフィックおよびその他のビデオ情報を処理することに関する。
コンピュータシステム上のグラフィックスにアクセスする従来の即時モードモデルは限界に達してきている。その原因の一部は、メモリおよびバスのスピードが主プロセッサおよび/またはグラフィックスプロセッサの進歩に遅れをとっていることである。一般に、フレームを作成するための現在の(例えばWM_PAINT)モデルでは、複雑なグラフィックス効果が望まれる場合に、ハードウェアのリフレッシュ速度に遅れないために大量のデータを処理する必要がある。結果として、従来のグラフィックスモデルで複雑なグラフィックス効果が試される場合、結果的に次のフレームで遅れずに視覚効果が知覚されるように変更を完了する代わりに、異なるフレームにわたって変更が追加される場合があり、視覚的にかつ顕著に望ましくない結果となる。
グラフィックス出力を制御するための新しいモデルが記載されており(例えば、特許文献1、2、3、4、5、および6を参照)、本発明の譲受人に譲渡され、参照により本明細書に組み込まれている。この新しいモデルは、グラフィックス処理技術においていくつかの重要な改良点を提供するものである。例えば、複数レベルのグラフィックス処理のシステムおよび方法を対象としているものもあり(例えば、特許文献1参照)、(例えば、オペレーティングシステムの)より高いレベルのコンポーネントが、簡略化されたデータ構造および/またはグラフィックスコマンドを低いレベルのコンポーネントに渡すために、シーングラフの構築、アニメーションパラメータの更新、およびシーングラフのデータ構造のトラバースという、相対的に遅い動作速度で集中的に計算が行われる態様を実行する。高いレベルの処理がデータを大幅に簡略化することから、低いレベルのコンポーネントは、グラフィックスサブシステムのフレームのリフレッシュ速度に対応する速度など、(高いレベルのコンポーネントに比べて)より高速に動作し、データをグラフィックスサブシステム用の定常出力データに処理することが可能である。アニメーションが使用される場合、低いレベルの処理は、変更に伴ってシーン全体を書き直すことなく、必要に応じてレンダリング時にわずかに変更されたシーンをフレームごとに提供する瞬間値を取得するためにパラメータ間隔を補間し、平滑なアニメーションを提供することができる。
可変(アニメーション化された)値を提供するパラメータ化されたシーングラフと、グラフィックスを描画しようとするプログラムコード(例えば、アプリケーションプログラムまたはオペレーティングシステムコンポーネント)が、他のアスペクトはそのままでシーングラフ記述の一定のアスペクトを選択的に変更できるようにパラメータ化されたグラフコンテナとが記載されている(例えば、特許文献2を参照)。プログラムコードは、異なるパラメータを使用する可能性のある、シーングラフのうちのすでに構築された部分を再使用することもできる。パラメータ化を介して表示されたアイテムの外観を容易に変更する機能、および/またはシーングラフの既存の部分の再使用は、グラフィックス処理効率全体を大きく改善することが理解されよう。
シーングラフ内のオブジェクトおよびデータを介して映像情報を格納するための、キャッシュデータ構造および関連機構が、全体として記載されている(例えば、特許文献3を参照)。データ構造は一般に、その中の映像情報がどのように読み込み(populate)および使用されるかを知的に制御する機構に関連付けられる。例えば、アプリケーションプログラムが特に要求しない限り、データ構造内に格納されたほとんどの情報はそれに対する外部参照を持たないため、この情報を最適化するかまたはその他の方法で処理することができる。これによって効率性とリソースの保存性が与えられ、例えばキャッシュデータ構造内のデータを、よりコンパクトであり、かつ/または、ビットマップまたは他の後処理結果などの後続の反復的な処理が少ない異なるフォーマットに処理可能であることが理解されよう。
上記の改良点はグラフィックス処理技術に大きな恩恵を与えるものであるが、依然として、この改良されたグラフィックスモデルおよびその他の関連する改良点を簡単な方法で効果的に使用するためのプログラムが求められている。改良されたグラフィックスモデルによって提供される多くの特徴およびグラフィックス処理機能を利用し、それによって複雑なグラフィックスおよび視聴覚データを効率的な方法で出力するための、包括的かつ簡単なプログラム用のモデルが必要とされている。
米国特許出願第10/184795号明細書 米国特許出願第10/184796号明細書 米国特許出願第10/185775号明細書 米国特許出願第10/401717号明細書 米国特許出願第10/402322号明細書 米国特許出願第10/402268号明細書
簡潔に述べると、本発明は、オブジェクトモデルを提供し、さらにプログラムコード開発者がシーングラフデータ構造との矛盾のないインターフェースを介してグラフィックスを出力できるように、そのオブジェクトモデルにアクセスするアプリケーションプログラミングインターフェイス(API)を提供する。このモデルおよびAPI群における基本オブジェクトは、ユーザに対し仮想表面を表示する映像(Visuals)であり、シーングラフは、映像オブジェクトで構成される。このような映像には、コンテナの映像オブジェクト(container visual objects)、保持される映像オブジェクト(retained visual objects)、描画する映像オブジェクト(drawing visual objects)、およびその他の映像オブジェクトがある。映像自体は、クリップオブジェクト、変換オブジェクトなどのリソースオブジェクト上に保持することができ、ある種の映像(例えば、DrawingVisual、 RetainedVisual)は、画像、ブラシ、および/または勾配(gradient)などのリソースオブジェクトを参照できる描画命令リスト(drawing instruction list)上に保持することができる。
シーングラフ内のほとんどのリソースオブジェクトは、いったん作成されると不変性(immutable)がある、つまり作成されると変更がきかないということである。開発者が簡単に変更できることを望むオブジェクトについては、本発明の譲受人に譲渡され、参照により本明細書に組み込まれている、本明細書と同時に出願された「Changeable Class and Pattern to Provide Selective Mutability in Computer Programming Environments」という表題の米国同時係属特許出願において説明されているように、変更可能パターンおよび実装により変異性(mutability)が与えられる。
アプリケーションプログラミングインターフェイスを介して、プログラムコードは、幾何学形状データ、画像データ、アニメーションデータ、およびその他のデータなどの描画プリミティブを映像に書き込む。例えば、プログラムコードは、線分描画命令、幾何学形状描画命令、ビットマップ描画命令などの描画プリミティブを映像に書き込む。これらの描画命令は、軌跡の描画の仕方を記述する幾何学形状データなどの複合データと組み合わせられることが多く、また、ビットマップ、ビデオなどのリソースを参照することもできる。
コードで映像のクリッピング、不透明、およびその他のプロパティを指定することができ、また変換、不透明、およびヒットテスト識別のプッシュおよびポップ変換を行うメソッドが提供される。さらに、映像は、ヒットテストに加わることができる。プログラムコードは、さらに、映像とのインターフェースを介して、子映像を追加し、それにより、階層型シーングラフを構成する。映像マネージャは、シーングラフを処理(例えば、トラバースまたは伝送)して、リッチグラフィックスデータを低いレベルのグラフィックスコンポーネントに供給する。
コンテナ映像は、子映像の集合を規定し、一実装では、階層を定義できる唯一の映像である。コンテナ映像上の子の集合では、子映像の任意の挿入、削除、および並べ替えを行うことができる。
描画映像は、呼び出し側に描画コンテキスト(例えば、描画コンテキストオブジェクトへの参照)を返すオープン呼び出しで開かれる。一般に、描画コンテキストは、映像を配置するために使用される一時的補助オブジェクトである。その後、プログラムコードは、描画コンテキストを使用して、描画プリミティブを映像に追加する。オープン呼び出しにより、映像のコンテンツ(子)を削除するか、または追加呼び出しを使用して、その現在の映像に付加するため映像を開くことができる。描画パラメータとして静的な値を受け取ることのほかに、描画コンテキストをアニメーションオブジェクトで塗りつぶすことができる。
保持映像は、プログラムコード側で塗りつぶすことを望んでいるときではなく、システムが塗りつぶすことを要求したときに描画コンテキストが塗りつぶされることを除き、描画映像と似た方法で動作する。例えば、シーンのレンダリングで特定の映像のコンテンツが必要になる場合、システムはIRetainedVisual.Renderを呼び出して映像のコンテンツを塗りつぶし、メモリ内にすでにあるコンテンツを置き換える。
こうして、描画コンテキストを使用して、幾何学形状、画像データ、およびビデオデータを含む、異なる種類のプリミティブを映像内に描画することができる。幾何学形状は、ストロークまたは塗りつぶしなしのベクトルグラフィックススケルトン、例えば矩形を定義するある種のクラスである。それぞれの幾何学形状オブジェクトは、単純な形状(LineGeometry、EllipseGeometry、RectangleGeometry)、複合単一形状(PathGeometry)、または結合オペレーション(例えば、合併、交差など)が指定されているそのような形状のリスト(GeometryList)に対応する。これらのオブジェクトはクラス階層を形成する。さらに、DrawRectangleメソッドなどの使用されるいくつかの種類の幾何学形状を頻繁に描画するためのショートカットもある。
幾何学形状が描画される場合、ブラシまたはペンを指定することができる。ブラシオブジェクトは平面にグラフィックスで埋める方法を定義し、ブラシオブジェクトのクラス階層がある。ペンも、ストローク領域を塗りつぶす方法を記述した、指定されたブラシを有する。特別な種類のブラシオブジェクト(VisualBrush)は、そのブラシを描画する方法を定義するために映像を参照できる。描画ブラシにより、他の形状とブラシの組み合わせで形状を塗りつぶしたり制御したりすることが可能である。
他の利点および特徴は、図面とともに説明したときに以下の詳細な説明から明らかになる。
(例示的なオペレーティング環境)
図1は、本発明が実施可能である、適したコンピューティングシステム環境100の一例を示す図である。コンピューティングシステム環境100は、好適なコンピューティング環境の一例に過ぎず、本発明の使用または機能の範囲に関していかなる制限をも示唆することを意図するものではない。さらにコンピューティング環境100は、例示的オペレーティング環境100内に示されたいずれのコンポーネントまたはコンポーネントの組合せに関しても、いかなる依存性または要件を有するものとも解釈されるべきではない。
本発明は、多数の他の汎用または特定用途向けのコンピューティングシステム環境または構成を使用して動作可能である。本発明で使用するのに適する可能性のある、よく知られたコンピューティングシステム、環境、および/または構成の例には、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、タブレット装置、マルチプロセッサシステム、マイクロプロセッサベースシステム、セットトップボックス、プログラム可能な市販の電子製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記システムまたは装置のいずれかを含む分散コンピューティング環境、およびその他が含まれるが、これらに限定されるものではない。
本発明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令との全体的な関連において説明することができる。一般に、プログラムモジュールにはルーチン、プログラム、オブジェクト、コンポーネント、データ構造、などが含まれ、特定のタスクを実行するかまたは特定の抽象データ型を実施する。本発明は、タスクが通信ネットワークを介してリンクされたリモート処理装置によって実行される、分散コンピューティング環境でも実施可能である。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルおよびリモート双方のコンピュータ記憶媒体に配置することができる。
図1を参照すると、本発明を実施するための例示的システムには、コンピュータ110の形の汎用コンピューティング装置が含まれる。コンピュータ110のコンポーネントは、処理装置120と、システムメモリ130と、システムメモリを含む様々なシステムコンポーネントを処理装置120に結合するシステムバス121とを含むことができるが、これらに限定されるものではない。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかの種類のバス構造のうちのいずれであってもよい。例を挙げると、こうしたアーキテクチャには、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、拡張ISA(EISA)バス、VESA(Video Electronics Standards Association)ローカルバス、AGP(Accelerated Graphics Port)バス、およびメザニンバスとも呼ばれるPCI(Peripheral Component Interconnect)バスが含まれるが、これらに限定されるものではない。
コンピュータ110は、通常、様々なコンピュータ読取り可能な媒体を含む。コンピュータ読取り可能な媒体は、コンピュータ110によってアクセス可能な揮発性および不揮発性媒体、ならびに取外し可能および固定の両方の媒体を含む、任意の使用可能な媒体とすることが可能である。例を挙げると、コンピュータ読取り可能な媒体はコンピュータ記憶媒体および通信媒体を含むことができるが、これらに限定されるものではない。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、または他のデータなどの、情報を記憶するための任意の方法または技術で実施された揮発性および不揮発性、取外し可能および固定の、両方の媒体を含む。コンピュータ記憶媒体には、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気記憶装置、あるいは所望の情報を記憶するために使用可能でありコンピュータ110がアクセス可能な任意の他の媒体が含まれるが、これらに限定されるものではない。通信媒体は、通常、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、または搬送波または他の移送機構などの被変調データ信号中の他のデータを具体化し、任意の情報送達媒体を含むものである。「被変調データ信号」という用語は、信号内の情報を符号化するような方法で、その特性のうちの1つまたは複数が設定または変更された信号を意味する。例を挙げると、通信媒体には、有線ネットワークまたはダイレクトワイヤード接続などの有線媒体と、音波、RF、赤外線、および他の無線媒体などの無線媒体とが含まれるが、これらに限定されるものではない。上記のうちの任意の組合せも、コンピュータ読取り可能な媒体の範囲に含まれるものとする。
システムメモリ130は、読取り専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132などの揮発性および/または不揮発性メモリの形のコンピュータ記憶媒体を含む。コンピュータ110内の要素間での起動時などの情報転送に役立つ基本ルーチンを含む基本入力/出力システム133(BIOS)は、通常、ROM131に格納される。RAM132は、通常、処理装置120が即時にアクセス可能であり、かつ/または現在動作中である、データおよび/またはプログラムを含む。例を挙げると、図1にはオペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137が示されているが、これらに限定されるものではない。
コンピュータ110は、他の取外し可能/固定の、揮発性/不揮発性のコンピュータ記憶媒体を含むこともできる。単なる例として、図1には、固定の不揮発性磁気媒体からの読取りまたはこれへの書込みを行うハードディスクドライブ141と、取外し可能な不揮発性磁気ディスク152からの読取りまたはこれへの書込みを行う磁気ディスクドライブ151と、CD−ROMまたは他の光媒体などの取外し可能な不揮発性光ディスク156からの読取りまたはこれへの書込みを行う光ディスクドライブ155が示されている。例示的なオペレーティング環境で使用可能な他の取外し可能/固定の、揮発性/不揮発性のコンピュータ記憶媒体には、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM、などが含まれるが、これらに限定されるものではない。ハードディスクドライブ141は、通常、インターフェース140などの固定のメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、通常、インターフェース150などの取外し可能メモリインターフェースによってシステムバス121に接続される。
上記で考察し、図1に示すドライブおよびそれらの関連するコンピュータ記憶媒体は、コンピュータ読取り可能な命令、データ構造、プログラムモジュール、およびコンピュータ110に関する他のデータのストレージを提供するものである。例えば図1では、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納しているものとして示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであるかまたは異なるかの、いずれであってもよいことに留意されたい。本明細書では、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、少なくともこれらが異なるコピーであることを示すために異なる番号が与えられている。ユーザは、タブレット(電子ディジタイザ)164、マイクロフォン163、キーボード162、および、一般にマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス161などの入力装置を介して、コマンドおよび情報をコンピュータ110に入力することができる。他の入力装置(図示せず)には、ジョイスティック、ゲームパッド、衛星放送用パラボラアンテナ、スキャナ、またはその他を含むことができる。これらおよび他の入力装置は、システムバスに結合されたユーザ入力インターフェース160を介して処理装置120に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインターフェースおよびバス構造によって接続することも可能である。モニタ191または他の種類のディスプレイ装置も、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタ191は、タッチスクリーンインターフェースなどのインターフェースを介してコンピュータシステム110に手書き入力するなどの、デジタル化された入力を行うことのできる、タッチスクリーンパネルまたはその他と一体型にすることも可能である。モニタおよび/またはタッチスクリーンパネルは、タブレット型のパーソナルコンピュータの場合などのように、コンピューティングデバイス110が組み込まれたハウジングに物理的に結合可能であり、ここでタッチスクリーンパネルは本質的にタブレット164として働くことに留意されたい。さらに、コンピューティングデバイス110などのコンピュータは、出力周辺インターフェース194またはその他を介して接続可能なスピーカ195およびプリンタ196などの他の周辺出力装置も含むことができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般的なネットワークノードとすることが可能であり、通常は、コンピュータ110に関して上記で述べた要素の多くまたはすべてを含むが、図1にはメモリ記憶装置181のみが記載されている。図1に示された論理接続には、ローカル絵リアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173が含まれるが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模コンピュータネットワーク、イントラネット、およびインターネットで普及している。
LANネットワーキング環境で使用される場合、コンピュータ110はネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境で使用される場合、コンピュータ110は通常、インターネットなどのWAN173を介した通信を確立するためのモデム172または他の手段を含む。モデム172は内蔵型または外付けが可能であり、ユーザ入力インターフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク化環境では、コンピュータ110に関して示されたプログラムモジュールまたはその一部を、リモートのメモリ記憶デバイスに格納することができる。例を挙げると、図1にはリモートアプリケーションプログラム185がメモリ装置181に常駐しているように示されているが、これらに限定されるものではない。図示されたネットワーク接続は例示的なものであり、コンピュータ間に通信リンクを確立する他の手段が使用可能であることを理解されよう。
(シーングラフデータ構造へのインターフェース)
本発明の一態様は、一般に、アプリケーションまたはオペレーティングシステムコンポーネントなどのプログラムコードが、システムディスプレイ上にグラフィック出力をレンダリングするために、描画命令および他の情報(例えば画像ビットマップ)をグラフィックスコンポーネントに送ることができるようにすることを対象としている。このため本発明は、プログラムがデータ構造、描画プリミティブ(コマンド)、および他のグラフィックス関連データと共にシーングラフを読み込めるようにする例えば、オブジェクトモデルへのアプリケーションプログラムインターフェースの形において、いくつかの予め定義された関数および方法を提供するものである。処理が実行されると、シーングラフはスクリーン上にグラフィックスを表示することになる。
図2は、本発明が実施可能な、全体的なレイヤードアーキテクチャ200を示す図である。図2に示されるように、(例えば、アプリケーションプログラムまたはオペレーティングシステムコンポーネントなど)プログラムコード202を開発して、画像化機構204を介すること、ベクトルグラフィック要素206を介すること、および/または映像アプリケーションプログラミングインターフェース(API)レイヤ212に対して直接行われる関数/メソッド呼出しを介することを含む、本発明の一態様に基づいて1つまたは複数の様々な方法でグラフィックスデータを出力することができる。一般に、画像204は、読み込み、編集および例えばビットマップなどの画像の保存のための機構を有するプログラムコード202を提供する。上述のように、これらの画像をシステムの他の一部によって使用することができる。プリミティブ描画コードを使用して、画像を直接描く方法もある。ベクトルグラフィック要素206は、(下記の)他のオブジェクトモデルに適合するグラフィックを描く他の方法を提供する。要素/プロパティシステム208およびレイアウトシステム210が解釈し、適する呼び出しを作成するマークアップ言語によって、ベクトルグラフィック要素206を生成することができる。ベクトルグラフィック要素206は、要素/プロパティシステム208およびレイアウトシステム210と共に、特許文献4において説明される。
一実施態様では、グラフィックスレイヤアーキテクチャ200には高いレベルの合成およびアニメーションエンジン214が含まれ、これがキャッシュデータ構造216を含むかまたは他の方法でこれに関連付けられる。キャッシュデータ構造216は、以下で説明するように、定義済みオブジェクトモデルに従って管理される階層上に配置構成されたオブジェクトを備えたシーングラフを含む。一般に、映像APIレイヤ212は、オブジェクトの作成、オブジェクトにデータを提供するためのオブジェクトのオープンおよびクローズなどの機能を含む、キャッシュデータ構造216へのインターフェースをプログラムコード202(およびレイアウトシステム210)に提供する。つまり、高いレベルの合成およびアニメーションエンジン214は、開発者が、グラフィックス情報を表示するためにグラフィックスおよび媒体に関する意図を表現し、基礎となるプラットフォームがプログラムコードに対するハードウェアの使用を最適化できるようにプラットフォームに十分な情報を提供する際に使用できる統一媒体APIレイヤ212を公開する。例えば基礎となるプラットフォームは、キャッシュ、リソースの折衝(negotiation)、および媒体の統合に関する責務を負うことになる。
一実施態様では、高いレベルの合成およびアニメーションエンジン214は、命令ストリームおよび可能な他のデータ(例えばビットマップを指すポインタ)を高速の低いレベルの合成およびアニメーションエンジン218に渡す。「高いレベル」および「低いレベル」という用語が本明細書で使用される場合、他のコンピューティングシナリオで使用される場合と同様に、一般に、高いレベルのコンポーネントに比べてソフトウェアコンポーネントが低いレベルであるほど、そのコンポーネントはハードウェアに近くなる。したがって、例えば高いレベルの合成およびアニメーションエンジン214から送られたグラフィックス情報を、低いレベルの合成およびアニメーションエンジン218で受け取ることが可能であり、ハードウェア222を含むグラフィックスサブシステムにグラフィックスデータを送信する際にその情報が使用される。
高いレベルの合成およびアニメーションエンジン214はプログラムコード202と共に、プログラムコード202によって提供されたグラフィックスシーンを表すためのシーングラフを構築する。例えば、描画されるそれぞれのアイテムを描画命令と共にロードすることが可能であり、システムはこれをシーングラフデータ構造216にキャッシュすることができる。以下で説明するように、このデータ構造216および何を描画するかを指定するにはいくつかの様々な方法がある。さらに、高いレベルの合成およびアニメーションエンジン214は、タイミングおよびアニメーションシステム220と統合し、宣言(または他の)アニメーション制御(例えばアニメーション間隔)およびタイミング制御を提供する。アニメーションシステムは、本質的にアニメーション値を、例えば要素プロパティレベル208、映像APIレイヤ212の内部、および任意の他のリソース内を含む、システム内のどこにでも渡せるようにするものであることに留意されたい。タイミングシステムは、要素レベルおよび映像レベルで公開される。
低いレベルの合成およびアニメーションエンジン218はシーンの合成、アニメーション、およびレンダリングを管理し、その後これがグラフィックスサブシステム222に提供される。低いレベルのエンジン218は、複数のアプリケーションのシーンについてレンダリングを合成し、レンダリングコンポーネントを使用して、スクリーンへのグラフィックスの実際のレンダリングを実施する。しかし、時には、一部のレンダリングはより高いレベルで発生することが必要かつ/または有利な場合があることに留意されたい。例えば、複数アプリケーションからのサービス要求が低レイヤになるほど、アプリケーションごとのインスタンス生成がより高レイヤになり、これによって、画像化機構204を介して、時間のかかるまたはアプリケーション特有のレンダリングが高いレベルで実行され、ビットマップへの参照が低レイヤに渡される可能性がある。
本発明の一態様に基づいて、Visualアプリケーションプログラミングインターフェース(API)は、本発明の一態様に基づく映像ツリーを定義するオブジェクトの集合を提供する。映像ツリーは、グラフィックスシステムによって媒体(画面、プリンターまたは表面)にレンダリングされることが可能なデータ構造を表す。レンダリングされた場合、映像ツリー内のデータは、視覚化された「シーン」である。映像オブジェクト(または単にVisual)は、幾何学形状、プリミティブ、ブラシ、色勾配、およびアニメーションのような描画シーンを作り上げる他のグラフィカルオブジェクトを含み、および管理する。
本発明は、よりよく知られたオブジェクトおよびプロパティシステムを使用する高いレベルの抽出において、描画およびレンダリングサービスへのアクセスも提供するが、マークアップ言語(「XAML」)によってマークアップレベルにおけるベクトルグラフィックオブジェクトを提供する。VisualAPIは、プロパティシステムまたはマークアップを使用して容易に実現することができる描画機能性をより巧みに制御したい開発者にとって最も興味深いものになる。
図3および4はそれぞれ、Visualと呼ばれる基本オブジェクトを含むシーングラフ300および400の例を示す図である。映像オブジェクトまたは単に映像は、線分、テキスト、および画像などのグラフィカルコンテンツ用のコンテナである。図5のVisualクラスのオブジェクト継承で示されるように、グラフィカルコンテンツを直接含まないが子Drawing Visualオブジェクトを含むContainerVisualを含む、いくつかの異なる映像オブジェクトがある。子Drawing Visualオブジェクトは、他のDrawingVisualオブジェクトではなく、ContainerVisualに追加される。これによって開発者は、全体の描画コンテキストを再作成およびその後の再レンダリングすることなく、個々の映像オブジェクトのプロパティを変更および設定することが可能であり、同時に、コンテナオブジェクトのクリッピングおよび変形プロパティにアクセスすることもできる。ContainerVisualオブジェクトは入れ子にすることができる。
DrawingVisualとは、グラフィカルコンテンツを格納することのできるVisualのことである。このVisualはいくつかの描画方法を公開する。DrawingVisualの子オブジェクトは、ゼロベースまたはzオーダの空間で編成される。RetainedVisualとは、描画に使用できる「保持された命令ストリーム」を導入するVisualのことである。簡単に言うと、RetainedVisualは、開発者が映像のコンテンツを保持し、必要なときだけこれを再描画できるようにするものである。RetainedVisualはDrawingVisualと同様に、RenderOpenを呼び出すことおよび戻されたDrawingContextを描画に使用することによって、命令的に使用することができる。RetainedVisualは、妥当性検査コールバック機能およびInvalidateVisualメソッドを提供する。妥当性検査機能を使用するために、ユーザは、RetainedVisualまたはそれから導出されたクラスでIRetainedRenderインターフェースを実施する。
図5に戻ると、さらに他の映像HwndVisual 505があり、これは従来のMicrosoft(登録商標)Win32(登録商標)のコントロールまたはウィンドウを、シーングラフの映像シーン内で子映像としてホストするために使用される映像である。より具体的に言えば、依然として古いプログラムが、以前のグラフィックス技術に基づいて子HWnd(または同様のもの)を描画するWM_PAINTメソッド(または同様のもの)を介して動作することになる。こうしたプログラムを新しいグラフィックス処理モデルでサポートするために、HwndVisualはHwndがシーングラフ内に格納され、親映像の再配置に従って移動されるようにすることができる。2次元世界と3次元世界を接続することのできる3次元(3D)映像などの、他の型の映像も実現可能であり、例えばカメラのようなビューが2次元映像を介して3次元世界にビューを入れることが可能である。
図3に示されるように、映像マネージャ304は、映像ツリーを媒体に接続するオブジェクトを備える。映像マネージャは、映像データ構造(ルート映像302)とそのデータのレンダリング先である対象との間に保持された接続を確立し、その2つの相違点を追跡する機能を提供する。映像マネージャ304はウィンドウメッセージを受け取り、描画座標内の1つのポイントを装置座標に変形するための方法、およびその逆を提供する。
典型的なアプリケーションは、前述のように(例えば、特許文献4参照)「XAML」でレイアウトを定義することによって、さらにまた何らかの描画オペレーションをC#で指定することによって、グラフィックスを描画することができる。開発者は、Shape要素を作成するか、またはプリミティブを備えたGeometryクラスを使用して幾何学形状を描画することができる。以下のシナリオでは、コードはCanvasの下にあるVisualでの楕円の描画を実演する。
Figure 0004796499
代わりに開発者は、映像APIを使用してVisualに直接描画することができる(そうでなければLayout要素を介してアクセスされることになる)。
DrawingVisualオブジェクトのコンテンツをレンダリングするために、通常、アプリケーションはDrawingVisualでRenderOpenメソッドを呼び出す。RenderOpenはDrawingContextを戻し、アプリケーションはこれを使用して描画オペレーションを実行することができる。Visualのコンテンツを消去する場合、アプリケーションはDrawingContextでCloseを呼び出す。アプリケーションがCloseを呼び出すと、その後DrawingContextは使用できなくなる。
以下のコードは、楕円形状ではなくGeometryオブジェクトを使用して、DrawingVisualに楕円(前の例と同じ楕円)を描画するものである。この例では、DrawingVisualを作成し、DrawingVisualのDrawingContextを取得し、DrawingContextのDrawGeometryメソッドを呼び出して楕円を描画する。開発者は、この場合はウィンドウであるトップレベルオブジェクトの映像ツリーに、Visualを追加する必要があることに留意されたい。
Figure 0004796499
以下の例は、同様の楕円をContainerVisualに追加することによって、前の例にさらに構築するものであり、この例はわかりやすくするために冗長であることに留意されたい。ContainerVisualを使用すると、シーンオブジェクトを編成する際に役立ち、開発者がヒットテストまたは妥当性検査(RetainedVisualオブジェクト)を実行するために、Visualオブジェクトを通常の描画コンテンツから分離し、コンテンツの不必要な再描画を最小限に抑えることができる。
Figure 0004796499
Figure 0004796499
Figure 0004796499
RetainedVisualはDrawingVisualと似ているが、映像コンテンツの選択的な再描画が可能である。その名前が示唆するように、RetainedVisualはコンテンツを媒体上で複数出現させるために保持することができる。また、コールバックおよび妥当性検査機能も提供する。この機能は、コンテンツの再レンダリングを介して開発者により多くのコントロールを提供することで、レンダリングの実行を助けることができる。
基本レベルでは、ユーザはRetainedVisualをDrawingVisualとほとんど同様に作成および使用することが可能であり、すなわちユーザはRenderOpenを呼び出してDrawingContextを取得することができる。別法として、ユーザはRetainedVisualでIRetainedRenderインターフェースを実施することができる。そのように実行することにより、ユーザは、グラフィックスシステムがRenderBoundsプロパティに設定された値をIRetainedVisual.Render呼出しでレンダリングされるコンテンツの境界として確実に使用できるようにする。
シーンをレンダリングする場合、グラフィックスシステムは任意の子Visualを検査することになる。RenderBoundsプロパティの値が、シーンをレンダリングする際に特定のVisualのコンテンツが必要となることを示す場合、システムはIRetainedVisual.Renderを呼び出してVisualのコンテンツを塗りつぶし、すでにメモリ内にある任意のコンテンツを置き換えることになる。アプリケーションは、InvalidateVisualを呼び出して、Visualからコンテンツを直接フラッシュする(flush)こともできる。アプリケーションがRetainedVisualでIRetainedRenderを実施しなかった場合、InvalidateVisualへのいずれの呼出しも例外処理を実行することになる。
以下のコードは、RetainedVisualでIRetainedRenderを実施し、それに描画するクラスをインスタンス化するものである。
Figure 0004796499
映像APIは、本発明のグラフィックスシステムの残りの部分と同様に管理されたAPIであり、強力なタイピングおよびガーベッジ集合を含む管理されたコードの典型的な機能を使用する。また、レンダリングのためのハードウェア加速機能も利用する。既存の管理されていないアプリケーションを使用して作業を行う開発者に対処するために、映像APIは、本グラフィックスシステムとMicrosoft Windows(登録商標)のGraphics Device Interface(GDI)ベースのレンダリングサービスとの間に限られた相互運用性を提供する。
この相互運用性により、開発者は、本発明の描画およびレンダリングに基づいたHwnd Visualオブジェクト、書込み制御、およびテーマ化を使用して、映像認識アプリケーションでGDIベースのウィンドウをホストするが、依然として古いGDIアプリケーションで動作し、ハードウェア加速およびカラーモデルを含む新しいレンダリング機能を利用するようにGDI HWNDベースのアプリケーションを修正することができる。
HwndVisualは、Win32コンテンツを映像認識アプリケーションでホストできるようにするものである。図5に示されるように、HwndVisualはContainerVisualを継承する。GDIと新しい描画モデルとを同じHwndVisualで混合できないことに留意されたい。代わりに、この映像は、制限された範囲の古いコントロールにはより役立つ可能性がある。以下の例では、HwndVisualでコントロールを作成することおよびそれを映像ツリーに追加することを実演する。
Figure 0004796499
他のオブジェクトの場合と同様に、開発者は、Visualでいったんホストされると変形および他のプロパティの変更をコントロールに適用することが可能である。
Figure 0004796499
図3に示されるように、トップレベル(またはルート)のVisual302は映像マネージャオブジェクト304に接続され、これは(例えばハンドルを介して)、ウィンドウ(Hwnd)306またはプログラムコード用にグラフィックデータが出力される同様の単位との関係も有する。映像マネージャ304は、トップレベルのVisual(およびそのVisualの任意の子)のそのウィンドウ306への描画を管理する。図6は、本明細書に記載されたグラフィックスシステムのオブジェクトモデルにおけるオブジェクトの集合600のうちの1つとしての映像マネージャを示す図である。
描画する際、映像マネージャ304は、前述の米国特許出願に全体として記載されたように、ディスパッチャ308がスケジュールしたようにシーングラフを処理(例えば、トラバースまたは伝送)し、低いレベルのコンポーネント218(図2)へのグラフィックス命令および他のデータをその対応するウィンドウ306に提供する。シーングラフの処理は、通常、低いレベルのコンポーネント218および/またはグラフィックスサブシステム222のリフレッシュ速度よりも比較的遅い速度で、ディスパッチャ308によってスケジュールされることになる。
図3は、トップレベル(ルート)Visual302の下に階層状に配置構成された、いくつかの子Visual310〜314を示す図であり、その一部は、例えば命令リストおよび他のVisualを含む関連するそれぞれの命令リスト318および319と共に、(その一時的な性質を表すために破線の四角で示された)描画コンテキスト316、317を介して読み込まれたように表されている。Visualは他のプロパティ情報を含むこともできる。一般に、基本映像クラスでのほとんどのアクセスは、IVisualインターフェースを介して行われ、Visualは図5に示されるようにDependencyObjectから導出される。他の描画プリミティブの中で、命令リストはImageDataへの参照を含むことができる。その後、そのImageDataは、描画コンテキストをそれから取得することによって、またはSurfaceVisualRender(あるいはImageDataVisualRendererと名付けられた)を有することによって、直接変更/更新することができる。
Visualは、クリップ、不透明度、ならびに、ゲットメソッドを介して設定および/または読み取ることのできる可能な他のプロパティを提供することによって、サービスを提供する。さらにVisualは、どのようにヒットテストに参加するかをコントロールするフラグを有する。Showプロパティを使用してVisualが表示/非表示となり、例えばfalseの場合Visualは不可視であり、そうでない場合Visualは可視である。さらに、これらのオブジェクト(映像APIレイヤのVisualかまたは要素レイヤの要素)は、階層状に存在する。座標系はこの階層を下に向かって継承される。この場合、親は、レンダリングする軌跡を修正してその親の子に適用させる座標変形を強要することができる。
Visual用の変形は、そのVisualへの接続上にある。つまり、親のIVisualインターフェース上で[Get|Set]ChildTransformを介して設定される。
座標変形は、あたかもビットマップに対して行なわれるかのように、一様な方法であらゆるものに適用可能であることに留意されたい。これは、変形は常にビットマップに適用されるが、レンダリングされるものが等しく変形の影響を受けることを意味するものでないことに留意されたい。例を挙げると、ユーザが1インチ(約2.54cm)幅の丸いペンを使用して円を描画し、X方向にその円の2倍のスケールを適用した場合、ペンは左右は2インチ(約5.08cm)幅、上下は1インチ(約2.54cm)幅のみとなる。これは、時に(ジオメトリのみに影響を与えるスケルトンまたはジオメトリスケールとは対照的に)合成またはビットマップ変形と呼ばれることがある。図8に、非変形画像800を左側に示し、非均一スケールの変形済み画像802を右側に表すスケーリング変形を示す。図9には、非変形画像800を左側に示し、ジオメトリスケーリングの変形済み画像904を右側に示すスケーリング変形を示す。
映像の座標変形に関して、TransformToDescendantはポイントを基準映像から下位映像へと変形する。ポイントは、基準映像の変形後座標空間から下位映像の変形後座標空間へと変形される。TransformFromDescendantは、ポイントを下位映像から親チェーンを上方に基準映像まで変形する。ポイントは、下位映像の変形後座標空間から基準映像の変形後座標空間へと変形される。ユーザは、下位へおよび下位から、ならびにいずれかの任意映像からおよび任意映像への、行列を取得することができる。Visualのコンテンツの境界ボックスを決定するために使用できる2つのプロパティ、すなわち下位の境界ボックスであるDescendantBounds、およびコンテンツの境界であるContentBoundsが使用可能である。これらにUnionを適用すると、全体の境界が与えられる。
クリッププロパティは、Visualのクリッピング領域を設定(および取得)する。任意のGeometry(Geometryクラスは図10に示されている)をクリッピング領域として使用することが可能であり、クリッピング領域は変形後座標空間で適用される。一実施態様では、クリッピング領域に関するデフォルト設定はnull、すなわちクリッピングなしであり、これは無限大のクリッピング矩形(−∞,−∞)から(+∞,+∞)とみなすことができる。
不透明度プロパティは、Visualのコンテンツが不透明度値および選択された混合モードに基づいて描画表面で混ぜ合わされるように、Visualの不透明度値を取得/設定する。BlendModeプロパティを使用して、使用される混合モードを設定(または取得)することができる。例えば、不透明度(アルファ)値は0.0から0.1の間に設定し、線形アルファ混合を、例えば、Color = alpha * foreground color + (1.0-alpha)*background color)のモードとして設定することができる。例えば、ぼかし、モノクロなどの特殊効果プロパティなどの他のサービスを、Visualに含めることができる。
(変形、不透明度、およびクリップを含む)様々なサービスを描画コンテンツ上でプッシュ(push)およびポップ(pop)させることが可能であり、プッシュ/ポップオペレーションは、各プッシュ呼出しに対して適切なポップ呼出しがある限り、入れ子にすることができる。
PushTransformメソッドは、変形をプッシュする。後続の描画オペレーションは、プッシュされた変形を基準にして実行される。ポップ呼出しは、以下のように、合致するPushTransform呼出しによってプッシュされた変形をポップする。
Figure 0004796499
同様に、PushOpacityメソッドは、不透明度値をプッシュする。後続の描画オペレーションは、指定された不透明度値を使用して一時表面上でレンダリングされ、シーンに合成される。Pop( )は、以下のように、合致するPushOpacity呼出しによってプッシュされた不透明度をポップする。
Figure 0004796499
PushClipメソッドは、クリッピングジオメトリをプッシュする。後続の描画オペレーションはジオメトリにクリップされる。クリッピングは、変形後空間に適用される。Pop( )は、以下のように、合致するPushClip呼出しによってプッシュされたクリッピング領域をポップする。
Figure 0004796499
プッシュオペレーションは、ポップオペレーションがプッシュと合致する限り、任意に入れ子にできることに留意されたい。例えば、以下は有効である。
Figure 0004796499
ProxyVisualは、シーングラフ、例えばContainer Visualの下に、複数回追加することのできるVisualである。ProxyVisualによって参照される任意のVisualには、ルートからの複数のパスを通すことが可能であるため、読取りサービス(TransformToDescendent、TransformFromDescendent、およびHitTest)はProxyVisualを介して動作しない。実際のところ、任意のVisualから映像ツリーのルートへの標準パスが1つあり、そのパスはいずれのProxyVisualも含まない。
図4に、ContainerVisualおよびDrawingVisual(およびその他)がシーングラフ内で関連しており、(例えば対応する描画コンテキスト内に)命令リストの形の関連するデータを有するシーングラフ400の一例を示す。ContainerVisualはVisual用のコンテナであり、ContainerVisualは互いに入れ子にすることができる。ContainerVisualの子は、ContainerVisualを実施するIVisualインターフェース上のメソッドを介して操作することができる。VisualCollection内のVisualの順序が、Visualがレンダリングされる順番を決定するものであり、すなわち、Visualは最下位のインデックスから最高位のインデックスへと、後ろから前へレンダリングされる(ペインティング順序)。
前述のように、Visualは、Geometry、ImageSource、およびMediaDataを含む様々な描画プリミティブと共に、その描画コンテキストを読み込むことによって描画することができる。さらに、このスタック全体を通じて共用されるリソースおよびクラスの集合がある。これには、Pen、Brush、Geometry、Transform、およびEffectが含まれる。DrawingContext抽象クラスは、DrawingVisual、ValidationVisual、ImageDataなどを読み込むために使用できる描画オペレーションの集合を公開する。言い換えれば、DrawingContext抽象クラスは描画オペレーションの集合を公開し、各描画オペレーションについて、定数を引数として取る方法とアニメータを引数として取る方法の2つがある。
Geometryは、ストロークまたは塗りつぶしなしでベクトルグラフィックススケルトンを定義するクラスの一種である(図10)。各Geometryオブジェクトは単純な形状(LineGeometry、EllipseGeometry、RectangleGeometry)、複雑な単一形状(PathGeometry)、または組合せオペレーション(例えば合併、交差など)が指定されたこうした形状のリストGeometryCollectionである。これらのオブジェクトは、図10に示されるようなクラス階層を形成する。
図11に示すように、PathGeometryは、Figureオブジェクトの集合である。ここでは、それぞれのFigureオブジェクトが、実際に図の形状を定義する1つまたは複数のSegmentオブジェクトからなる。Figureとは、セグメント集合を定義するGeometryのサブセクションである。このセグメント集合は、単一の関連した一連の2次元Segmentオブジェクトシリーズである。Figureは、領域が定義されたクローズ形状、または曲線は定義するが領域はクローズでない接続された一連のSegmentのみの、いずれかが可能である。
図12に示されるように、ジオメトリ(例えば矩形)を描画する場合、以下で説明するようにブラシまたはペンを指定することができる。さらに、PenオブジェクトはBrushオブジェクトも有する。Brushオブジェクトはグラフィックで平面を塗りつぶす方法を定義するものであり、クラス階層のBrushオブジェクトがある。これを図12に、矩形およびブラシの命令およびパラメータを含む映像が処理されると、結果として生じる塗りつぶされた矩形1202として示す。Penオブジェクトは、以下で説明するように、BrushならびにWidth、LineJoin、LineCap、MiterLimit、DashArray、およびDashOffsetに関するプロパティ上で保持される。さらに以下で説明するように、(勾配および9グリッドなどの)Brush型の中には、それ自体でサイズを決めるものもある。これらのBrushが使用される場合、そのサイズは境界ボックスから取得される。例えば、Brush用のGradientUnits/DestinationUnitsがRelativeToBoundingBoxに設定されている場合、描画されているプリミティブの境界ボックスが使用される。これらのプロパティがAbsoluteに設定された場合、座標空間が使用される。
本発明のグラフィックスオブジェクトモデルには、Brushオブジェクトモデルが含まれ、これは一般に平面をピクセルでカバーするという概念を対象としている。Brush型の例は、図13でBrush基本クラスの下に階層状に示されており、GradientBrush、NineGridBrush、SolidColorBrush、およびTileBrushが含まれる。GradientBrushには、LinearGradientおよびRadialGradientのオブジェクトが含まれる。DrawingBrushおよびImageBrushはTileBrushから導出される。クラスの代替の配置構成が実現可能であり、例えばTileBrushからImageBrush、VisualBrush、VideoBrush、NineGridBrush、およびDrawingBrushを導出することができる。Brushオブジェクトは、それらが使用される場合に座標系にどのように関係するか、および/またはそれらが使用される形状の境界ボックスにそれらがどのように関係するかを認識できることに留意されたい。一般に、サイズなどの情報は、ブラシが描画されるオブジェクトから推測することができる。より詳細には、Brush型の多くがそれらのパラメータの一部を指定する際に座標系を使用する。この座標系は、Brushが適用される形状の単純な境界ボックスを基準に定義するか、またはブラシが使用される時点でアクティブな座標空間を基準に定義することが可能である。これらはそれぞれ、RelativeToBoundingBoxモードおよびAbsoluteモードとして知られている。
SolidColorBrushオブジェクトは、識別された平面をソリッドカラーで塗りつぶす。色のアルファコンポーネントがある場合、これは、倍加する方法でBrush基本クラスの対応する不透明度属性と組み合わされる。以下に、SolidColorBrushオブジェクトの例を示す。
Figure 0004796499
GradientBrushオブジェクトまたは単にGradientは勾配塗りつぶしを行い、何らかの進行に沿って色を指定する勾配停止の集合を指定することによって描画されるものである。Gradientは、ガンマ2.2RGB色空間で勾配停止間の線形補間を実行することによって描画されるが、代わりに他のガンマまたは他の色空間(HSB、CMYKなど)を介した補間を実行することもできる。この2つの型のGradientオブジェクトには、線形勾配および放射勾配が含まれる。
一般に、Gradientは勾配停止のリストからなる。これらの勾配停止は、それぞれ色(アルファ値が含まれる)およびオフセットを含む。指定された勾配停止がない場合、ブラシは、あたかもブラシがまったく指定されていないかのように濃淡のない透明な黒として描画される。勾配停止が1つだけ指定された場合、ブラシは1色だけ指定されたソリッドカラーとして描画される。「Changeable Class and Pattern to Provide Selective Mutability in Computer Programming Environments」という名称の米国特許出願に記載されているように、勾配停止クラス(下記の表の例)は他のリソースクラスと同様に変更可能クラスから導出されるため、選択的に可変である。
Gradientは勾配停止の集合を指定することによって描画される。これらの勾配停止は、何らかの連続した色を指定する。現在サポートされている勾配には2つの型、すなわち線形勾配および放射勾配がある。Gradientは、指定された色空間内の勾配停止間で補間を実行することによって描画される。
Gradientは、勾配停止のリストからなる。これらの勾配停止はそれぞれ、色(アルファ値が含まれる)およびオフセットを含む。指定された勾配停止がない場合、ブラシは(あたかもブラシがまったく指定されていないかのように)透明として描画される。勾配停止が1つだけ指定された場合、ブラシは1色だけ指定されたソリッドカラーとして描画される。0から1の範囲内(0.0...1.0)のオフセットを備えた任意の勾配停止が考慮の対象とされ、最大の停止は(−∞...0.0]、最小の停止は[1.0...+∞)である。考慮の対象とされる停止の集合に0から1の範囲外にある停止が含まれる場合、暗黙の停止として0(および/または1)が導出され、これがこの停止で発生することになる補間された色を表す。さらに、2つまたはそれ以上の停止が同じオフセットで設定される場合、そのオフセットで(補間済みでない)ハード遷移が発生する。停止が追加される順序によって、このオフセットでの挙動が決められ、追加される最初の停止はそのオフセットの前の有効な色であり、設定される最後の停止はこの停止の後の有効な色であり、このオフセットでのいずれの追加の停止も無視される。
このクラスは、他のリソースクラスと同様にChangeableである。
Figure 0004796499
SolidColorBrushと同様に、これはChangeablesをアニメーション集合内に入れ子にする。
GradientSpreadMethod 列挙法は、指定されたベクトルまたは空間の外で勾配がどのように描画されるべきかを指定する。可能な値には、末端(最初および最後)の色を使用して残りの空間が塗りつぶされるPadと、停止を逆の順序で繰り返し再生して空間が塗りつぶされるReflectと、停止を順番に繰り返して空間が塗りつぶされるRepeatの、3つの値が含まれる。この型のプロパティのデフォルト値はPadである。
Figure 0004796499
図14および15は、いくつかのGradientSpreadMethodの例(たとえ色でなくグレースケールの場合であっても)を提供する。各形状が、白からグレーに移行する線形勾配を有する。実線が勾配ベクトルを表す。
一般に、LinearGradientBrushを使用して領域を線形勾配で塗りつぶす。線形勾配とは、線分に沿って勾配を定義するものである。線形勾配のStartPointおよびEndPointプロパティによって、線分の末端が定義される。デフォルト時には、線形勾配のStartPointは(0,0)であって領域の左上コーナが塗りつぶされ、そのEndPointは(1,1)であって領域の右下コーナが塗りつぶされる。図15に示されるように、デフォルトの値を使用すると、結果として生じる勾配の色は斜めの軌跡に沿って補間される。本明細書では、勾配の補間軌跡をハイライト表示するために、勾配の始点および終点から形成された黒い線分が追加されている。
ColorInterpolationMode列挙法は、勾配内の色に対して補間モードを定義する。PhysicallyLinearGamma10およびPerceptuallyLinearGamma22の2つのオプションがある。
Figure 0004796499
これは抽象基本クラスである。
Figure 0004796499
Changeablesの項で説明したように、GradientBrushはそのGradientStopsプロパティそれ自体がChangeablesを保持するので、Changeablesに関して複合型である。これは、GradientBrushが、保護されたメソッドMakeUnchangeableCore( )とPropagateEventHandler( )、ならびにChangeableサブクラスが実施するCloneCore( )とを実施する必要があることを意味する。例えば集合を構成するGradientStopsの無効な組合せがある場合、ValidateObjectState( )を実施するように選択することもできる。
LinearGradientは、ベクトルに沿って線形勾配ブラシを指定する。個々の停止は、そのベクトルに沿ってカラーストップを指定する。
Figure 0004796499
Figure 0004796499
LinearGradient用のマークアップは、0および1のオフセットで2つのカラーストップを使用してLinearGradientを指定することが可能である。「LinearGradient」バージョンが使用される場合、それぞれ始点および終点が指定される。「HorizontalGradient」が使用される場合、始点は0,0に設定され、終点は1,0に設定される。「VerticalGradient」が使用される場合、始点は0,0に設定され、終点は0,1に設定される。これらの場合、RelativeToBoundingBoxというデフォルトのMappingModeが使用される。
RadialGradientは、プログラミングモデルでは線形勾配と同様である。しかし、線形勾配は勾配ベクトルを定義するための始点および終点を有するのに対して、放射勾配は勾配の挙動を定義するための円ならびに焦点を有する。円は勾配の終点を定義しており、言い換えれば、1.0の勾配停止は円の周囲の色を定義する。焦点は勾配の中心を定義する。0.0の勾配停止は焦点の色を定義する。図16は、白からグレーへと(グレースケールで)進むRadialGradientを表す。外側の円は勾配円を表し、中実のドットは焦点を示す。この勾配は、SpreadMethodがPadに設定されている。
Figure 0004796499
Figure 0004796499
RadialGradient用のマークアップは、それぞれ0および1のオフセットで2つのカラーストップを使用してRadialGradientを指定することが可能である。デフォルトの半径が0.5である場合、RelativeToBoundingBoxというデフォルトのMappingModeが使用される。
Figure 0004796499
TileBrushは、タイルを記述する論理とタイルが領域を塗りつぶす際に使用する手段とを含む抽象基本クラスである。TileBrushのサブクラスはコンテンツを含み、無限の平面を塗りつぶす方法を論理的に定義する。
Stretch列挙法を使用して、ViewBox(ソース座標空間)をViewPort(宛先座標空間)にマッピングする方法を記述する。これはTileBrushで使用される。
Figure 0004796499
図18に、引伸ばし(stretch)の例を示す。これらの例では、コンテンツは左/上に位置合わせをされる。
TileMode列挙法を使用して、Tileで空間を塗りつぶすのか、およびどの様に塗りつぶすのかを記述する。TileBrushは、基本Tileが(ViewPortによって指定される)場所を定義する。残りの空間はTileMode値に基づいて塗りつぶされる。
Figure 0004796499
図19は、TileModeの例を提供する。各例の一番左上のタイルが基本タイルである。これらの例は、None、Tile、FlipX、FlipY、およびFlipXYを表す。
VerticalAlignment列挙法を使用して、コンテナ内でコンテンツを垂直に配置する方法を記述する。
Figure 0004796499
HorizontalAlignment列挙法を使用して、コンテナ内でコンテンツを水平に配置する方法を記述する。
Figure 0004796499
TileBrushプロパティは、タイル(ViewBox)となる無限の平面の矩形部分を選択し、塗りつぶされる領域内の基本タイルとなる宛先矩形(ViewPort)を記述する。残っている宛先領域は、TileModeプロパティに基づいて塗りつぶされることになり、これが残っている空間を塗りつぶすためにオリジナルタイルが複製されるのか、およびどの様に複製されるのかを制御する。
Figure 0004796499
Figure 0004796499
TileBrushのコンテンツには固有の境界がなく、無限の平面を効果的に記述する。これらのコンテンツは、それ自身の座標空間内に存在し、TileBrushによって塗りつぶされている空間は適用時のローカル座標空間である。コンテンツ空間は、ViewBox、ViewPort、Alignment、およびStretchのプロパティに基づいてローカル空間にマッピングされる。ViewBoxはコンテンツ空間内に指定され、この矩形はViewPort矩形にマッピングされる。
ViewPortは、コンテンツが最終的に描画される場所を定義し、このBrush用の基本タイルを作成する。ViewPortUnitsの値がAbsoluteである場合、ViewPortの値は適用時にローカル空間内にあるものとみなされる。代わりに、ViewPortUnitsの値がRelativeToBoundingBoxである場合、ViewPortの値は座標空間内にあるものとみなされ、0,0はペイントされているオブジェクトの境界ボックスの左/上コーナであり、1,1は同じボックスの右/下コーナである。例えば、100,100から200,200まで描画されたRectangleGeometryが塗りつぶされていると考えてみる。次に、ViewPortUnitsがAbsoluteである場合、ViewPort(100,100,100,100)がコンテンツ領域全体を記述することになる。ViewPortUnitsがRelativeToBoundingBoxである場合、ViewPort(0,0,1,1)がコンテンツ領域全体を記述することになる。ViewPortのSizeが空であり、StretchがNoneでない場合、このBrushは何もレンダリングしない。
ViewBoxは、コンテンツ空間内に指定される。この矩形は、AlignmentプロパティおよびStretchプロパティによって決定されたViewPort内に収まるように変形される。Stretchがnoneの場合、コンテンツには何の縮尺も適用されない。StretchがFillの場合、ViewBoxはViewPortと同じサイズになるようにXおよびYの両方で別個に縮尺される。StretchがUniformまたはUniformToFillの場合、論理は同じであるが、XおよびYの寸法は均一に縮尺され、コンテンツのアスペクト比を保持する。StretchがUniformの場合、ViewBoxは、ViewPortのサイズに等しい、より多くの制約付き寸法を有するように縮尺される。StretchがUniformToFillの場合、ViewBoxはViewPortのサイズに等しい、より少ない制約付き寸法を有するように縮尺される。別の見方をすると、UniformとUniformToFillはどちらもアスペクト比を保持するが、UniformはViewBox全体がViewPort内にあることを保証し(場合によっては、ViewPortの一部がViewBoxによって覆われない状態で残る)、UniformToFillはViewPort全体がViewBoxによって塗りつぶされることを保証する(場合によっては、ViewBoxの一部がViewPortの外にはみ出る)。ViewBoxの領域が空の場合、Stretchは適用されない。それでも位置合わせは発生することになり、「ポイント」ViewBoxを位置付けることになる。
いったんViewPortが(ViewPortUnitsに基づいて)決定され、ViewBoxの宛先サイズが(Stretchに基づいて)決定されると、ViewBoxをViewPort内に位置付ける必要がある。ViewBoxがViewPortと同じサイズの場合(StretchがFillの場合、または他の3つのStretch値のうちの1つに偶然に生じただけの場合)、ViewBoxはViewPortと同じになるようにOriginに位置付けられる。そうでない場合、HorizontalAlignmentおよびVerticalAlignmentが考慮の対象となる。これらのプロパティに基づいて、ViewBoxにXおよびYの両方の寸法で位置合わせを行う。HorizontalAlignmentがLeftの場合、ViewBoxの枠の左側がViewPortの枠の左側に位置付けられることになる。これがCenterの場合、ViewBoxの中心がViewPortの中心に位置付けられることになり、Rightの場合、枠の右側が合致することになる。Y寸法についてもこのプロセスが繰り返される。
ViewBoxがEmptyの場合は、未設定とみなされる。未設定の場合、ContentUnitsが考慮の対象となる。ContentUnitsがAbsoluteの場合、縮尺またはオフセットは発生せず、コンテンツは変形なしでViewPortに描画される。ContentUnitsがRelativeToBoundingBoxの場合、コンテンツの起点とViewPort Originとの位置合わせを行い、コンテンツはオブジェクトの境界ボックスの幅および高さによって縮尺される。
空間がTileBrushで塗りつぶされる場合、コンテンツは上記のようにViewPortにマッピングされ、ViewPortにクリッピングされる。これによって塗りつぶし用の基本タイルが形成され、残りの空間のはBrushのTileModeに基づいて塗りつぶされる。設定が行われている場合、Brushの変形が適用されるが、これは他のマッピング、縮尺、オフセットなどの後に行われる。
VisualBrushとは、Visualによってコンテンツが指定されるTileBrushである。このBrushを使用して複雑なパターンを作成でき、またはこれを使用してシーンの他の部分のコンテンツの追加のコピーを描画することができる。
Figure 0004796499
ImageBrushは、ImageDataによって指定されたコンテンツを有するTileBrushである。このBrushを使用して空間をImageで塗りつぶすことができる。
Figure 0004796499
VideoBrushは、VideoDataによって指定されたコンテンツを有するTileBrushである。このBrushを使用して空間をVideoで塗りつぶすことができる。
Figure 0004796499
NineGridBrushは、オブジェクトの境界ボックスを常にそのコンテンツ画像で塗りつぶすブラシであり、画像の引伸ばしは映像スケールを介してのみ実施されるものではない。Imageソースは4本の境界によって9つの矩形に分けられる(したがってNineGridと名付けられる)。これら9つの領域のそれぞれに存在する画像のコンテンツは、オブジェクト境界ボックスを塗りつぶすまで0、1、または2の寸法で縮尺される。各セクションが縮尺される寸法を図で見ることが可能であって、図17はNineGridの概念を表すものであり、第1のインスタンス1702から第2のインスタンス1704に拡大され、Top、Left、Bottom、およびRightの境界によって定義される9つのグリッドを示す4つの型がある。各グリッドスクエア内の矢印は、それらのコンテンツがViewPortサイズに合致するように引伸ばされる寸法を示している。
上記の9つのグリッド領域に加えて、オプションの「10番目」のグリッドがある。これは、ViewPortの中心に位置する縮尺されない追加の画像の形を取る。これを使用して、ボタンなどの中心に形状を配置することができる。この「10番目のグリッド」はグリフと呼ばれ、GlyphImageDataプロパティによって公開される。
Figure 0004796499
Figure 0004796499
境界のメンバは、画像の枠から画像ピクセル単位でカウントに入れることに留意されたい。
Penは、空間/Geometryをストロークで描く方法を記述したBrushおよび他のパラメータを取るオブジェクトである。概念上、PenはGeometryからストローク領域を作成する方法を記述する。Geometryの枠、PenのThickness、PenLineJoin、PenLineCap、などに基づいて新しい領域が作成される。いったんこの領域が作成されると、Brushで塗りつぶされる。
Figure 0004796499
Figure 0004796499
PenLineCapは、ストローク線分の端部を描画する方法を決定する。
Figure 0004796499
PenDashCapは、破線状のストローク線分における各ダッシュの端部を描画する方法を決定する。
Figure 0004796499
PenLineJoinは、線分をストロークで描く際にジョイントを描画する方法を決定する。
Figure 0004796499
DashArraysクラスは、一般的なよく知られた破線スタイルにアクセスする静的プロパティを備える。
Figure 0004796499
図13に示された他のBrushオブジェクトがVisualBrushオブジェクトである。VisualBrushとは、Visualによってコンテンツが指定されるTileBrushである。このBrushを使用して複雑なパターンを作成するか、またはこれを使用してシーンの他の部分のコンテンツの追加コピーを描画することができる。
Figure 0004796499
概念上、VisualBrushは、塗りつぶしとして繰り返されるタイル様式でVisualを描画する方法を提供する。これは、図12では、単一の円形状1220を指定するVisual(および任意の子Visual)を参照する映像ブラシによって表され、その円形状が矩形1222を塗りつぶしている。したがってVisualBrushオブジェクトは、そのブラシが描画されることになる方法を定義するためにVisualを参照することが可能であり、これは一種のVisualの複数使用を導入することになる。この方法では、プログラムは任意のグラフィックス「メタファイル」を使用して、ブラシまたはペンを介して領域を塗りつぶすことができる。これは任意のグラフィックスを格納および使用するための圧縮された形式であるため、グラフィックスリソースを提供する。
一実施態様では、VisualBrushのコンテンツには固有の境界がなく、無限の平面を効果的に記述する。これらのコンテンツはそれら自体の座標空間内に存在し、VisualBrushが塗りつぶしている空間が適用時のローカル座標空間である。コンテンツ空間は、ViewBox、ViewPort、Alignments、およびStretchのプロパティに基づいてローカル空間にマッピングされる。ViewBoxはコンテンツ空間内に指定され、この矩形がViewPort(OriginおよびSizeプロパティを介して指定されたように)矩形にマッピングされる。
ViewPortは、コンテンツが最終的に描画されることになる場所を定義し、このブラシ用の基本タイルを作成する。DestinationUnitsの値がUserSpaceOnUseである場合、OriginおよびSizeプロパティは適用時にローカル空間にあるものとみなされる。その代わりにDestinationUnitsの値がObjectBoundingBoxである場合、OriginおよびSizeは座標空間にあるものとみなされ、0,0はブラシ処理されているオブジェクトの境界ボックスの左/上コーナであり、1,1は同じボックスの右/下コーナである。例えば、100,100から200,200まで描画されたRectangleGeometryを塗りつぶしていると考えてみる。こうした例では、DestinationUnitsがUserSpaceOnUseである場合、100,100のOriginおよび100,100のSizeがコンテンツ領域全体を記述することになる。DestinationUnitsがObjectBoundingBoxである場合、0,0のOriginおよび1,1のSizeがコンテンツ領域全体を記述することになる。Sizeが空の場合、このブラシは何もレンダリングしない。
ViewBoxはコンテンツ空間内に指定される。この矩形が、AlignmentプロパティおよびStretchプロパティによって決められたViewPort内に収まるように変形される。Stretchがnoneの場合、コンテンツには縮尺が適用されない。StretchがFillの場合、ViewBoxはViewPortと同じサイズになるようにXおよびYで別々に縮尺される。StretchがUniformまたはUniformToFillの場合、論理は同様であるが、XおよびYの寸法が均一に縮尺されてコンテンツのアスペクト比が保持される。StretchがUniformの場合、ViewBoxは、ViewPortのサイズに等しい、より多くの制約付き寸法を有するように縮尺される。StretchがUniformToFillの場合、ViewBoxは、ViewPortのサイズに等しい、より少ない制約付き寸法を有するように縮尺される。言い換えれば、UniformおよびUniformToFillはどちらもアスペクト比を保持するが、UniformはViewBox全体がViewPort内にあることを保証し(場合によっては、ViewPortの一部がViewBoxによって覆われていない状態で残り)、UniformToFillはViewPort全体がViewBoxによって塗りつぶされることを保証する(場合によっては、ViewBoxの一部がViewPortの外にはみ出る)。ViewBoxが空の場合、Stretchは適用されない。それでも位置合わせは発生することになり、「ポイント」ViewBoxを位置付けることになることに留意されたい。
図18は、様々な引伸ばし設定でレンダリングされたグラフィックスの単一タイル1800を示す図であり、引伸ばしが「none」に設定されたときのタイル1800が含まれている。タイル1802は引伸ばしが「Uniform」に設定された場合、タイル1804は引伸ばしが「UniformToFill」に設定された場合、およびタイル1806は引伸ばしが「Fill」に設定された場合を表す。
いったんViewPortが(DestinationUnitsに基づいて)決定され、ViewBoxのサイズが(Stretchに基づいて)決定されると、ViewBoxをViewPort内に位置付ける必要がある。ViewBoxがViewPortと同じサイズの場合(StretchがFillであるか、または他の3つのStretch値のうちの1つに偶然に生じただけの場合)、ViewBoxはViewPortと同じになるようにOriginに位置付けられる。そうでない場合、HorizontalAlignmentおよびVerticalAlignmentが考慮の対象となる。これらのプロパティに基づいて、ViewBoxにXおよびYの両方の寸法で位置合わせを行う。HorizontalAlignmentがLeftの場合、ViewBoxの枠の左側がViewPortの枠の左側に位置付けられることになる。これがCenterの場合、ViewBoxの中心がViewPortの中心に位置付けられることになり、Rightの場合、枠の右側が合致することになる。Y寸法についてもこのプロセスが繰り返される。
ViewBoxが(0,0,0,0)の場合は未設定とみなされ、これによってContentUnitsが考慮の対象となる。ContentUnitsがUserSpaceOnUseの場合、縮尺またはオフセットは発生せず、コンテンツは変形なしにViewPortに描画される。ContentUnitsがObjectBoundingBoxの場合、コンテンツの起点がViewPort Originと位置合わせされ、コンテンツはオブジェクトの境界ボックスの幅および高さによって縮尺される。
空間をVisualBrushで塗りつぶす場合、コンテンツは上記のようにViewPortにマッピングされ、ViewPortにクリッピングされる。これによって塗りつぶし用の基本タイルが形成され、BrushのTileModeに基づいて残りの空間が塗りつぶされる。最後に、Brushの変形が設定されていればこれが適用されるが、これは他のすべてのマッピング、縮尺、オフセットなどの後に実行される。
TileMode列挙法を使用して、空間がそのBrushによって塗りつぶされるかどうか、およびその方法を記述する。タイル処理が可能なBrushにはタイル矩形が定義されており、このタイルは塗りつぶされる空間内に基本位置を有する。残りの空間はTileMode値に基づいて塗りつぶされる。図19は、様々なTileMode設定のグラフィックス例を示した図であり、「None」1900、「Tile」1092、「FlipX」1904、「FlipY」1906、および「FlipXY」1908が含まれる。様々なグラフィックス例の中の一番左上のタイルが基本タイルを備えるものである。
図20は、VisualBrush内のタイル用に定義されたVisualBrushグリッドを表す図である。第1の円は単純なグリッドであり、第2の円はX方向に47のSkewで変形されたものである。図21はこれを画像で塗りつぶした図である。
図13に戻ると、タイルブラシから画像ブラシが導出され、タイル処理することができる。NineGridBrushは、画像がサイズに基づいて歪められることを除いて、ImageBrushと非常によく似ている。本質的には、NineGridBrushはStretchのカスタム型と考えられ、画像の一定部分は引伸ばされるが、他の部分(例えば境界)は引伸ばされない。したがって、ImageBrushでは画像のサイズは単純な縮尺を実行し、NineGridBrushは所望のサイズまで不均一な縮尺を実行することになる。ブラシが適用される場合、縮尺されない領域に対する単位はユーザ単位であり、これはContentUnits(NineGridBrush用に存在する場合)がUserUnitsOnUseに設定されることになることを意味する。BrushのTransformプロパティを有効に使用することができる。境界のメンバは、画像の枠からカウントに入れることに留意されたい。
上記で概説したように、本発明のグラフィックスオブジェクトモデルにはTransformオブジェクトモデルが含まれ、これは図7の階層でTransform基本クラスの下に表された変形の型を含むものである。変形を構成するこれらの異なる型のコンポーネントは、TransformList、TranslateTransform、RotateTransform、ScaleTransform、SkewTransform、およびMatrixTransformを含むことができる。個々のプロパティをアニメーション処理することが可能であり、例えばプログラム開発者はRotateTransformのAngleプロパティをアニメーション処理することができる。
2D計算用の行列が3×3行列として表される。変形が必要な場合、3×3行列すべてではなく6つの値のみが必要とされる。これらは以下のように命名され、および定義される。
Figure 0004796499
行列とポイントを掛け合わせると、そのポイントが新しい座標系から前の座標系に変形される。
Figure 0004796499
変形は何重にも入れ子にすることができる。新しい変形が適用される場合は必ず、現在の変形行列に後から掛け合わせたものと同じになる。
Figure 0004796499
API内のほとんどの場所は直接行列を取らないが、代わりにアニメーションをサポートするTransformクラスを使用する。
Figure 0004796499
Figure 0004796499
Figure 0004796499
(結論)
前記の詳細な説明からわかるように、シーングラフとのインターフェース機能を持つプログラムコードを実装するシステム、方法、およびオブジェクトモデルが実現される。このシステム、方法、およびオブジェクトモデルは使いやすいうえに、強力で柔軟性および拡張性に優れる。
本発明はさまざまな修正を加えることができ、また他の構成も可能であるが、いくつかの例示されている実施形態は、図面に示されており、上で詳細に説明済みである。しかし、本発明を開示されている特定の形態に制限する意図はなく、むしろその反対に、本発明が本発明の趣旨と範囲にあるすべての修正形態、代替の構成、および等価物を対象とすることは、理解されるであろう。
本発明を組み込むことができるコンピュータシステムの実施例を表すブロック図である。 本発明を組み込むことができるグラフィックスレイヤアーキテクチャを一般的に表すブロック図である。 本発明の一態様により映像のシーングラフと、シーングラフをトラバースしてグラフィックスコマンドおよびその他のデータを供給することによりシーングラフを処理するための関連するコンポーネントとの表現である。 本発明の一態様により構成されるバリデーション映像、描画映像、および関連する命令リストのシーングラフの表現である。 本発明の一態様による、オブジェクトモデルの、映像クラスの表現である。 本発明の一態様による、オブジェクトモデルの他のさまざまなオブジェクトの表現である。 本発明の一態様による、変換クラス階層の表現である。 本発明の一態様による、幾何学的縮尺比および不均等縮尺比による映像のデータの変換の表現である。 本発明の一態様による、幾何学的縮尺比および不均等縮尺比による映像のデータの変換の表現である。 本発明の一態様による、オブジェクトモデルの幾何学形状クラスの表現である。 本発明の一態様による、PathGeometry構造の表現である。 本発明の一態様による、プリミティブにより出力されるグラフィック例を示す映像のシーングラフおよび命令リストの表現である。 本発明の一態様による、オブジェクトモデルのブラシクラスの表現である。 本発明の一態様による、線形勾配ブラシオブジェクト内のデータから得られるレンダリングされたグラフィックスの表現である。 本発明の一態様による、線形勾配ブラシオブジェクト内のデータから得られるレンダリングされたグラフィックスの表現である。 本発明の一態様による、放射状勾配ブラシオブジェクト内のデータから得られるレンダリングされたグラフィックスの表現である。 本発明の一態様によるレンダリングされた9グリッドブラシオブジェクトの表現である。 本発明の一態様による、さまざまな伸長度値(stretch values)を設定することで得られるレンダリングされたグラフィックスの表現である。 本発明の一態様による、さまざまなタイル値(tile values)を設定することで得られるレンダリングされたグラフィックスの表現である。 本発明の一態様による、映像ブラシオブジェクト内のデータから得られる、グリッドおよび変換されたグリッドの表現である。 本発明の一態様による、グリッドおよび変換されたグリッドの表現であって、そのグリッド内のレンダリングされたグラフィックスが映像から描画されることを示す図である。

Claims (25)

  1. 1つ又は複数のオブジェクトに対するプログラムコードを受け取るコンピューティング環境においてコンピュータにより実施される方法であって、
    映像アプリケーションプログラミングインターフェース(API)レイヤが、高レベルグラフィックスマークアップ言語で、前記プログラムコードに対応する関数呼び出しを、該関数呼び出しが前記映像APIレイヤに対して直接行われることができるようにする所定のフォーマットで受け取るステップであって、前記映像APIレイヤが、階層構造に配列されたオブジェクトのシーングラフからなるキャッシュデータ構造を含む高レベル合成およびアニメーションエンジンを備えるステップと、
    前記高レベル合成およびアニメーションエンジンが、前記シーングラフデータ構造内のデータを修正することによって前記関数呼び出しに応答するステップと、
    前記高レベル合成およびアニメーションエンジンが、映像マネージャを呼び出して前記シーングラフデータ構造をトラバースし、少なくとも1つのオブジェクトをレンダリングするステップと、
    グラフィックスサブシステムが、前記シーングラフデータ構造を表示装置上に表示するステップと、
    を備える方法。
  2. 前記シーングラフデータ構造内のデータを修正するステップが、映像クラスの新規インスタンスを初期化させるステップを含む、請求項1に記載の方法。
  3. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフ内に描画映像オブジェクトを配置するコードを呼び出すステップを含む、請求項1に記載の方法。
  4. 前記関数呼び出しに関連するペンデータを受け取るステップを更に含み、前記シーングラフデータ構造内のデータを修正するステップが、形状の輪郭を定義するペン関数を呼び出すステップを含む、請求項1に記載の方法。
  5. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造内で楕円を表すコードを呼び出すステップを含む、請求項1に記載の方法。
  6. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造内で矩形を表すコードを呼び出すステップを含む、請求項1に記載の方法。
  7. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造内で軌跡を表すコードを呼び出すステップを含む、請求項1に記載の方法。
  8. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造内で線分を表すコードを呼び出すステップを含む、請求項1に記載の方法。
  9. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造内で映像のヒットテストの実行に関係するコードを呼び出すステップを含む、請求項1に記載の方法。
  10. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造内で映像の座標変換を実行するコードを呼び出すステップを含む、請求項1に記載の方法。
  11. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造内で映像の境界ボックスを計算するコードを呼び出すステップを含む、請求項1に記載の方法。
  12. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造に映像オブジェクトを配置するコードを呼び出すステップを含む、請求項1に記載の方法。
  13. 前記シーングラフデータ構造内のデータを修正するステップが、少なくとも1つの映像オブジェクトを含むよう構成されたコンテナオブジェクトを前記シーングラフデータ構造に配置するコードを呼び出すステップを含む、請求項1に記載の方法。
  14. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造に画像データを配置するコードを呼び出すステップを含む、請求項1に記載の方法。
  15. 前記シーングラフデータ構造内のデータを修正するステップが、テキストに対応するデータを前記シーングラフデータ構造に配置するコードを呼び出すステップを含む、請求項1に記載の方法。
  16. 前記シーングラフデータ構造内のデータを修正するステップが、前記関数呼び出しに応答して描画コンテキストを提供するコードを呼び出すステップを含む、請求項1に記載の方法。
  17. 前記シーングラフデータ構造内のデータを修正するステップが、3次元映像を前記シーングラフデータ構造に配置するコードを呼び出すステップを含む、請求項1に記載の方法。
  18. 前記シーングラフデータ構造内のデータを修正するステップが、アニメーションデータを前記シーングラフデータ構造に配置するコードを呼び出すステップを含む、請求項1に記載の方法。
  19. インターフェースを介して関数呼び出しを受け取るステップが、マークアップを受け取るステップを含み、前記シーングラフデータ構造内のデータを修正するステップが、オブジェクトのインターフェースへの呼び出しに前記マークアップを構文解析するステップを含む、請求項1に記載の方法。
  20. 前記シーングラフデータ構造内のデータを修正するステップが、音声及び/又はビデオデータに対応するオブジェクトを前記シーングラフデータ構造内に配置するコードを呼び出すステップを含む、請求項1に記載の方法。
  21. 前記シーングラフデータ構造内のデータを修正するステップが、前記シーングラフデータ構造内のオブジェクトの変異可能な値を変更するコードを呼び出すステップを含む、請求項1に記載の方法。
  22. 前記高レベル合成およびアニメーションエンジンが、低レベル合成およびアニメーションエンジンへ命令を伝えるステップを更に含み、前記命令がその後にグラフィックスサブシステムへ送られる、請求項1に記載の方法。
  23. 1つ又は複数のオブジェクトに対するプログラムコードを受け取るコンピューティング環境においてコンピュータにより実施される方法であって、
    前記方法が、
    映像アプリケーションプログラミングインターフェース(API)レイヤが、高レベルグラフィックスマークアップ言語で、前記プログラムコードに対応する関数呼び出しを、該関数呼び出しが前記映像APIレイヤに対して直接行われることができるようにする所定のフォーマットで受け取るステップであって、前記映像APIレイヤが、階層構造に配列されたオブジェクトのシーングラフからなるキャッシュデータ構造を含む高レベル合成およびアニメーションエンジンを備えるステップと、
    前記高レベル合成およびアニメーションエンジンが、映像クラスの新規インスタンスの初期化を生じることにより、及び、画像に対応するデータを前記シーングラフ内の映像オブジェクトと関連付ける映像マネージャを呼び出すことによって、前記関数呼び出しに応答し、前記シーングラフデータ構造内のデータを修正するステップと、
    前記高レベル合成およびアニメーションエンジンが、前記画像に適用する映像効果に対応するインターフェースを介して関数呼び出しを受け取るステップと、
    前記高レベル合成およびアニメーションエンジンが、映像マネージャを呼び出して前記シーングラフデータ構造をトラバースし、少なくとも1つのオブジェクトをレンダリングするステップと、
    グラフィックスサブシステムが、前記シーングラフデータ構造を表示装置上に表示するステップと、
    を備える方法。
  24. 1つ又は複数のオブジェクトに対するプログラムコードを受け取るコンピューティング環境においてコンピュータにより実施される方法をプロセッサに実行させるコンピュータ実行可能命令を記録したコンピュータ読み取り可能媒体であって、
    前記方法が、
    映像アプリケーションプログラミングインターフェース(API)レイヤが、高レベルグラフィックスマークアップ言語で、前記プログラムコードに対応する関数呼び出しを、該関数呼び出しが前記映像APIレイヤに対して直接行われることができるようにする所定のフォーマットで受け取るステップであって、前記映像APIレイヤが、階層構造に配列されたオブジェクトのシーングラフからなるキャッシュデータ構造を含む高レベル合成およびアニメーションエンジンを備えるステップと、
    前記高レベル合成およびアニメーションエンジンが、前記シーングラフデータ構造内のデータを修正することによって前記関数呼び出しに応答するステップと、
    前記高レベル合成およびアニメーションエンジンが、映像マネージャを呼び出して前記シーングラフデータ構造をトラバースし、少なくとも1つのオブジェクトをレンダリングするステップと、
    グラフィックスサブシステムが、前記シーングラフデータ構造を表示装置上に表示するステップと、
    を備えるコンピュータ読み取り可能媒体。
  25. 1つ又は複数のオブジェクトに対するプログラムコードを受け取るコンピューティング環境においてコンピュータにより実施される方法をプロセッサに実行させるコンピュータ実行可能命令を記録したコンピュータ読み取り可能媒体であって、
    前記方法が、
    映像アプリケーションプログラミングインターフェース(API)レイヤが、高レベルグラフィックスマークアップ言語で、前記プログラムコードに対応する関数呼び出しを、該関数呼び出しが前記映像APIレイヤに対して直接行われることができるようにする所定のフォーマットで受け取るステップであって、前記映像APIレイヤが、階層構造に配列されたオブジェクトのシーングラフからなるキャッシュデータ構造を含む高レベル合成およびアニメーションエンジンを備えるステップと、
    前記高レベル合成およびアニメーションエンジンが、映像クラスの新規インスタンスの初期化を生じることにより、及び、画像に対応するデータを前記シーングラフ内の映像オブジェクトと関連付ける映像マネージャを呼び出すことによって、前記関数呼び出しに応答し、前記シーングラフデータ構造内のデータを修正するステップと、
    前記高レベル合成およびアニメーションエンジンが、前記画像に適用する映像効果に対応するインターフェースを介して関数呼び出しを受け取るステップと、
    前記高レベル合成およびアニメーションエンジンが、映像マネージャを呼び出して前記シーングラフデータ構造をトラバースし、少なくとも1つのオブジェクトをレンダリングするステップと、
    グラフィックスサブシステムが、前記シーングラフデータ構造を表示装置上に表示するステップと、
    を備えるコンピュータ読み取り可能媒体。
JP2006536587A 2003-10-23 2004-07-28 映像およびシーングラフインターフェイス Expired - Fee Related JP4796499B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10/693,673 2003-10-13
US10/693,673 US7466315B2 (en) 2003-03-27 2003-10-23 Visual and scene graph interfaces
PCT/US2004/024454 WO2005040965A2 (en) 2003-10-23 2004-07-28 Visual and scene graph interfaces

Publications (3)

Publication Number Publication Date
JP2007509420A JP2007509420A (ja) 2007-04-12
JP2007509420A5 JP2007509420A5 (ja) 2011-01-27
JP4796499B2 true JP4796499B2 (ja) 2011-10-19

Family

ID=34522455

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2006536587A Expired - Fee Related JP4796499B2 (ja) 2003-10-23 2004-07-28 映像およびシーングラフインターフェイス

Country Status (10)

Country Link
US (1) US7466315B2 (ja)
EP (1) EP1676187A4 (ja)
JP (1) JP4796499B2 (ja)
KR (1) KR101137187B1 (ja)
CN (1) CN101421761B (ja)
BR (1) BRPI0406384A (ja)
CA (1) CA2501516C (ja)
MX (1) MXPA05006641A (ja)
RU (1) RU2363984C2 (ja)
WO (1) WO2005040965A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014058835A1 (en) * 2012-10-08 2014-04-17 Stc.Unm System and methods for simulating real-time multisensory output

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7619633B2 (en) 2002-06-27 2009-11-17 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
US7466315B2 (en) * 2003-03-27 2008-12-16 Microsoft Corporation Visual and scene graph interfaces
US7417645B2 (en) * 2003-03-27 2008-08-26 Microsoft Corporation Markup language and object model for vector graphics
US7486294B2 (en) * 2003-03-27 2009-02-03 Microsoft Corporation Vector graphics element-based model, application programming interface, and markup language
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7126606B2 (en) 2003-03-27 2006-10-24 Microsoft Corporation Visual and scene graph interfaces
US20050088449A1 (en) * 2003-10-23 2005-04-28 Blanco Leonardo E. Child window redirection
US7511718B2 (en) * 2003-10-23 2009-03-31 Microsoft Corporation Media integration layer
US7219340B2 (en) * 2003-10-23 2007-05-15 Microsoft Corporation Changeable class and pattern to provide selective mutability in computer programming environments
US7603624B2 (en) * 2004-10-21 2009-10-13 Microsoft Corporation System and method for styling content in a graphical user interface control
US7716685B2 (en) * 2005-08-30 2010-05-11 Microsoft Corporation Pluggable window manager architecture using a scene graph system
US7737996B2 (en) * 2005-12-01 2010-06-15 Microsoft Corporation Techniques for automated animation
US20080084416A1 (en) * 2006-10-06 2008-04-10 Microsoft Corporation User-pluggable rendering engine
US20080158254A1 (en) * 2006-12-29 2008-07-03 Hong Jiang Using supplementary information of bounding boxes in multi-layer video composition
US9519997B1 (en) * 2007-03-09 2016-12-13 Pixar Perfect bounding for optimized evaluation of procedurally-generated scene data
US20080266288A1 (en) * 2007-04-27 2008-10-30 Identitymine Inc. ElementSnapshot Control
GB2458488C (en) 2008-03-19 2018-09-12 Imagination Tech Ltd Untransformed display lists in a tile based rendering system
US8760472B2 (en) * 2008-04-01 2014-06-24 Apple Inc. Pixel transforms
US20090328080A1 (en) * 2008-06-25 2009-12-31 Microsoft Corporation Window Redirection Using Interception of Drawing APIS
US8477136B2 (en) * 2009-02-13 2013-07-02 Mobitv, Inc. Functional presentation layer in a lightweight client architecture
US10789761B2 (en) * 2010-01-07 2020-09-29 Suzhou Superengine Graphics Software Co., Ltd. Method and device for processing spatial data
US8957920B2 (en) * 2010-06-25 2015-02-17 Microsoft Corporation Alternative semantics for zoom operations in a zoomable scene
US8914534B2 (en) * 2011-01-05 2014-12-16 Sonic Ip, Inc. Systems and methods for adaptive bitrate streaming of media stored in matroska container files using hypertext transfer protocol
CN102289835A (zh) * 2011-08-30 2011-12-21 北京瑞信在线系统技术有限公司 微动画效果查看方法及装置
US8890886B2 (en) 2011-09-02 2014-11-18 Microsoft Corporation User interface with color themes based on input image data
US9563971B2 (en) 2011-09-09 2017-02-07 Microsoft Technology Licensing, Llc Composition system thread
WO2013058678A1 (ru) 2011-10-19 2013-04-25 Ikonomov Artashes Valer Evich Устройство для управления данными пользователя сети
CN102541563A (zh) * 2011-12-31 2012-07-04 山东中创软件商用中间件股份有限公司 一种监控界面生成方法及系统
US10382287B2 (en) * 2012-02-23 2019-08-13 Ajay JADHAV Persistent node framework
WO2014011088A2 (ru) * 2012-07-13 2014-01-16 Ikonomov Artashes Valeryevich Система проведения конкурсов для удаленных пользователей
US10115084B2 (en) 2012-10-10 2018-10-30 Artashes Valeryevich Ikonomov Electronic payment system
US9075618B2 (en) 2012-11-02 2015-07-07 Microsoft Technology Licensing, Llc Cross-platform data visualizations using common descriptions
RU2540786C2 (ru) * 2013-01-11 2015-02-10 Корпорация "САМСУНГ ЭЛЕКТРОНИКС Ко., Лтд." Способ и система динамической генерации трехмерных анимационных эффектов
CN103412700B (zh) * 2013-07-24 2016-05-11 天脉聚源(北京)传媒科技有限公司 一种分场景展示多媒体资源的方法及装置
CN103713725B (zh) * 2013-12-30 2017-01-18 广州爱九游信息技术有限公司 图形处理方法和装置
CN104063241B (zh) * 2014-06-05 2017-07-18 广东威创视讯科技股份有限公司 宿主程序与com组件的图像同步显示的方法与系统
US10290128B2 (en) * 2015-11-10 2019-05-14 Adobe Inc. Interactive scene graph manipulation for visualization authoring
WO2018097378A1 (ko) * 2016-11-22 2018-05-31 (주)씨앤피에스 드로잉 애니메이션 생성 장치 및 방법
CN107015792B (zh) * 2016-12-09 2020-10-30 创新先进技术有限公司 一种图表统一动画的实现方法以及设备
US10565802B2 (en) * 2017-08-31 2020-02-18 Disney Enterprises, Inc. Collaborative multi-modal mixed-reality system and methods leveraging reconfigurable tangible user interfaces for the production of immersive, cinematic, and interactive content
US10540811B2 (en) * 2018-06-05 2020-01-21 Kyocera Document Solutions Inc. Radial gradient module
US11074053B2 (en) * 2018-09-07 2021-07-27 Boyd Cannon Multerer User interface generation system
CN109976749B (zh) * 2019-03-28 2024-01-16 深圳市创联时代科技有限公司 一种绘图过程的继承方法
US11335037B2 (en) * 2020-02-04 2022-05-17 Adobe Inc. Smart painting tools
US20220134222A1 (en) * 2020-11-03 2022-05-05 Nvidia Corporation Delta propagation in cloud-centric platforms for collaboration and connectivity

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003069965A (ja) * 2001-04-24 2003-03-07 Koninkl Philips Electronics Nv Bifsテキストフォーマットをbifsバイナリフォーマットに変換するための装置
JP2003162733A (ja) * 2001-10-18 2003-06-06 Microsoft Corp シーングラフのための汎用パラメータ設定

Family Cites Families (86)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4209852A (en) * 1974-11-11 1980-06-24 Hyatt Gilbert P Signal processing and memory arrangement
EP0513206B1 (en) 1990-01-30 1995-04-12 Johnson Service Company Networked facilities management system
US5509115A (en) 1990-08-08 1996-04-16 Peerless Systems Corporation Method and apparatus for displaying a page with graphics information on a continuous synchronous raster output device
US5261041A (en) * 1990-12-28 1993-11-09 Apple Computer, Inc. Computer controlled animation system based on definitional animated objects and methods of manipulating same
US5852449A (en) * 1992-01-27 1998-12-22 Scientific And Engineering Software Apparatus for and method of displaying running of modeled system designs
WO1993021636A1 (en) 1992-04-10 1993-10-28 Avid Technology, Inc. A method and apparatus for representing and editing multimedia compositions
US5987627A (en) 1992-05-13 1999-11-16 Rawlings, Iii; Joseph H. Methods and apparatus for high-speed mass storage access in a computer system
US5500933A (en) * 1993-04-28 1996-03-19 Canon Information Systems, Inc. Display system which displays motion video objects combined with other visual objects
WO1994027234A1 (en) * 1993-05-10 1994-11-24 Taligent, Inc. Multimedia synchronization system
US5555368A (en) * 1993-12-30 1996-09-10 Taligent Object-oriented multi-tasking view framework
US5912666A (en) * 1994-08-23 1999-06-15 Object Technology Licensing Corp. Object-oriented global cursor tool
US5745761A (en) 1994-12-15 1998-04-28 International Business Machines Corporation Advanced graphics driver architecture with extension capability
WO1996019780A1 (en) 1994-12-22 1996-06-27 Apple Computer, Inc. Three-dimensional graphics rendering system
US5561752A (en) * 1994-12-22 1996-10-01 Apple Computer, Inc. Multipass graphics rendering method and apparatus with re-traverse flag
US5986667A (en) * 1994-12-22 1999-11-16 Apple Computer, Inc. Mechanism for rendering scenes using an object drawing subsystem
US5732198A (en) 1995-02-09 1998-03-24 Oki America, Inc. Host based printing system for printing a document having at least one page
US5727141A (en) 1995-05-05 1998-03-10 Apple Computer, Inc. Method and apparatus for identifying user-selectable regions within multiple display frames
US5790130A (en) 1995-06-08 1998-08-04 Hewlett-Packard Company Texel cache interrupt daemon for virtual memory management of texture maps
US5930810A (en) * 1995-08-09 1999-07-27 Taylor Corporation Printing system with pre-defined user modifiable forms and local and remote printing
US5986675A (en) * 1996-05-24 1999-11-16 Microsoft Corporation System and method for animating an object in three-dimensional space using a two-dimensional input device
US5936632A (en) 1996-07-26 1999-08-10 Hewlett-Packard Co. Method for fast downloading of textures to accelerated graphics hardware and the elimination of extra software copies of texels
US6275857B1 (en) * 1996-10-30 2001-08-14 Microsoft Corporation System and method for freeing shared resources in a computer system
US5920325A (en) * 1996-11-20 1999-07-06 International Business Machines Corporation Prioritization of background display during animation
US6137499A (en) * 1997-03-07 2000-10-24 Silicon Graphics, Inc. Method, system, and computer program product for visualizing data using partial hierarchies
US6195694B1 (en) * 1997-03-13 2001-02-27 International Business Machines Corporation Server for reconfiguring control of a subset of devices on one or more kiosks
US6160907A (en) * 1997-04-07 2000-12-12 Synapix, Inc. Iterative three-dimensional process for creating finished media content
EP0922360A4 (en) * 1997-04-07 1999-12-29 At & T Corp ADAPTIVE CONTROL ENABLING SYSTEM AND METHOD FOR INTERFACING WITH MPEG-CODED AUDIOVISUAL OBJECTS
US6215495B1 (en) * 1997-05-30 2001-04-10 Silicon Graphics, Inc. Platform independent application program interface for interactive 3D scene management
US5924098A (en) 1997-06-30 1999-07-13 Sun Microsystems, Inc. Method and apparatus for managing a linked-list data structure
US6377263B1 (en) * 1997-07-07 2002-04-23 Aesthetic Solutions Intelligent software components for virtual worlds
US6314470B1 (en) * 1997-07-25 2001-11-06 Hewlett Packard Company System and method for asynchronously accessing a graphics system for graphics application evaluation and control
US6154215A (en) * 1997-08-01 2000-11-28 Silicon Graphics, Inc. Method and apparatus for maintaining multiple representations of a same scene in computer generated graphics
US6654931B1 (en) * 1998-01-27 2003-11-25 At&T Corp. Systems and methods for playing, browsing and interacting with MPEG-4 coded audio-visual objects
US6272650B1 (en) * 1998-02-03 2001-08-07 Amazing Media, Inc. System and method for disambiguating scene graph loads
US6243856B1 (en) * 1998-02-03 2001-06-05 Amazing Media, Inc. System and method for encoding a scene graph
US6075532A (en) * 1998-03-23 2000-06-13 Microsoft Corporation Efficient redrawing of animated windows
US6570578B1 (en) 1998-04-03 2003-05-27 Avid Technology, Inc. System for automatic generation of selective partial renderings of complex scenes
US6266053B1 (en) * 1998-04-03 2001-07-24 Synapix, Inc. Time inheritance scene graph for representation of media content
US6237092B1 (en) * 1998-05-05 2001-05-22 International Business Machines Corp. Client-server system with central application management allowing an administrator to configure user and group contexts during application configuration without relaunching the application
US6631403B1 (en) * 1998-05-11 2003-10-07 At&T Corp. Architecture and application programming interfaces for Java-enabled MPEG-4 (MPEG-J) systems
KR20010034920A (ko) * 1998-06-26 2001-04-25 매클린토크 샤운 엘 엠펙-4 비디오 프로그램을 작성하고 표현하기 위한 단말기
US6731314B1 (en) * 1998-08-17 2004-05-04 Muse Corporation Network-based three-dimensional multiple-user shared environment apparatus and method
US6263339B1 (en) 1998-08-25 2001-07-17 Informix Software, Inc. Dynamic object visualization and code generation
US6487565B1 (en) * 1998-12-29 2002-11-26 Microsoft Corporation Updating animated images represented by scene graphs
US6411297B1 (en) * 1999-03-03 2002-06-25 Discreet Logic Inc. Generating image data
US6714201B1 (en) * 1999-04-14 2004-03-30 3D Open Motion, Llc Apparatuses, methods, computer programming, and propagated signals for modeling motion in computer applications
US6986101B2 (en) * 1999-05-06 2006-01-10 International Business Machines Corporation Method and apparatus for converting programs and source code files written in a programming language to equivalent markup language files
US6707456B1 (en) * 1999-08-03 2004-03-16 Sony Corporation Declarative markup for scoring multiple time-based assets and events within a scene composition system
US7184038B2 (en) * 1999-09-24 2007-02-27 Sun Microsystems, Inc. Using render bin parallelism for rendering scene graph based graphics data
US6765571B2 (en) * 1999-09-24 2004-07-20 Sun Microsystems, Inc. Using a master controller to manage threads and resources for scene-based rendering
US6538656B1 (en) * 1999-11-09 2003-03-25 Broadcom Corporation Video and graphics system with a data transport processor
AU1948201A (en) * 1999-12-06 2001-06-12 Axiomatic Design Software, Inc. Method and apparatus for producing software
US7102651B1 (en) 1999-12-22 2006-09-05 Adobe Systems Incorporated Hierarchical 2-D color compositing with blending mode and opacity controls at all levels
US7103581B1 (en) 2000-01-13 2006-09-05 Hewlett-Packard Development Company, L.P. System and method for pricing print jobs
US6833840B2 (en) * 2000-02-14 2004-12-21 Optibase Ltd PROTO implementation in MPEG-4
JP2001273520A (ja) * 2000-03-23 2001-10-05 Famotik Ltd マルチメディアドキュメント統合表示システム
US6751655B1 (en) * 2000-04-18 2004-06-15 Sun Microsystems, Inc. Method and apparatus for transport of scenegraph information across a network
US6717599B1 (en) * 2000-06-29 2004-04-06 Microsoft Corporation Method, system, and computer program product for implementing derivative operators with graphics hardware
US20020019844A1 (en) 2000-07-06 2002-02-14 Kurowski Scott J. Method and system for network-distributed computing
JP2004506262A (ja) * 2000-08-04 2004-02-26 イントリンジック グラフィックス, インコーポレイテッド グラフィックハードウェアおよびソフトウェアの開発
US6675230B1 (en) * 2000-08-22 2004-01-06 International Business Machines Corporation Method, system, and program for embedding a user interface object in another user interface object
US6910044B2 (en) * 2000-09-20 2005-06-21 Sap Aktiengesellschaft Method and apparatus for structuring, maintaining, and using families of data
US6636211B2 (en) 2000-12-15 2003-10-21 Dassault Systemes CAD/CAM feature tree with manipulatable 3D miniatures
US6732109B2 (en) * 2001-01-31 2004-05-04 The Eon Company Method and system for transferring information between a user interface and a database over a global information network
US7069503B2 (en) * 2001-06-04 2006-06-27 Murata Kikai Kabushiki Kaisha Device and program for structured document generation data structure of structural document
US7305011B2 (en) * 2001-06-14 2007-12-04 International Business Machines Corporation Periodic broadcast and location of evolving media content with application to seminar and stroke media
US7161599B2 (en) * 2001-10-18 2007-01-09 Microsoft Corporation Multiple-level graphics processing system and method
US7064766B2 (en) * 2001-10-18 2006-06-20 Microsoft Corporation Intelligent caching data structure for immediate mode graphics
EP1454226A4 (en) * 2001-10-23 2004-12-29 Samsung Electronics Co Ltd INFORMATION STORAGE MEDIUM WITH A MARKUP DOCUMENT AND AV DATA, RECORDING METHOD, PLAYBACK METHOD AND PLAYBACK APPARATUS THEREFOR
US7055092B2 (en) * 2001-12-05 2006-05-30 Canon Kabushiki Kaisha Directory for multi-page SVG document
US20030110297A1 (en) * 2001-12-12 2003-06-12 Tabatabai Ali J. Transforming multimedia data for delivery to multiple heterogeneous devices
US20040110490A1 (en) * 2001-12-20 2004-06-10 Steele Jay D. Method and apparatus for providing content to media devices
KR100453225B1 (ko) * 2001-12-26 2004-10-15 한국전자통신연구원 3차원 가상 현실 구현을 위한 클라이언트 시스템과 이를이용한 가상 현실 구현 방법
US7076332B2 (en) * 2002-01-18 2006-07-11 National Instruments Corporation System and method for invoking execution of a sequence of operations that includes motion control, machine vision, and data acquisition (DAQ) functionality
EP1472620A2 (en) * 2002-02-04 2004-11-03 Mobileaware Technologies Limited Document transformation
US20030210267A1 (en) 2002-05-13 2003-11-13 Kylberg Robert Lee Systems and methods for providing asynchronous client rendering in a graphical user interface (GUI) environment
AU2003249168A1 (en) * 2002-07-11 2004-02-02 Raytheon Company System and method for asynchronous storage and playback of a system state
WO2004008303A2 (en) * 2002-07-12 2004-01-22 Raytheon Company Scene graph based display for desktop applications
US20040216139A1 (en) * 2002-08-21 2004-10-28 Rhoda Merlin A. System controlling test/measurement devices on a network using markup language documents and methods thereof
US7240346B2 (en) * 2002-11-13 2007-07-03 Microsoft Corporation Method and system for accessing drawing resources
US7088374B2 (en) * 2003-03-27 2006-08-08 Microsoft Corporation System and method for managing visual structure, timing, and animation in a graphics processing system
US7126606B2 (en) 2003-03-27 2006-10-24 Microsoft Corporation Visual and scene graph interfaces
US7466315B2 (en) * 2003-03-27 2008-12-16 Microsoft Corporation Visual and scene graph interfaces
US7412455B2 (en) * 2003-04-30 2008-08-12 Dillon David M Software framework that facilitates design and implementation of database applications
US8051389B2 (en) * 2003-08-26 2011-11-01 Hewlett-Packard Development Company, L.P. Methods of displaying resources of overlapping but separate hierarchies
US7012606B2 (en) * 2003-10-23 2006-03-14 Microsoft Corporation System and method for a unified composition engine in a graphics processing system

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003069965A (ja) * 2001-04-24 2003-03-07 Koninkl Philips Electronics Nv Bifsテキストフォーマットをbifsバイナリフォーマットに変換するための装置
JP2003162733A (ja) * 2001-10-18 2003-06-06 Microsoft Corp シーングラフのための汎用パラメータ設定

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014058835A1 (en) * 2012-10-08 2014-04-17 Stc.Unm System and methods for simulating real-time multisensory output

Also Published As

Publication number Publication date
BRPI0406384A (pt) 2005-08-09
EP1676187A4 (en) 2009-11-04
MXPA05006641A (es) 2005-08-16
WO2005040965A2 (en) 2005-05-06
CN101421761B (zh) 2012-08-15
CN101421761A (zh) 2009-04-29
WO2005040965A3 (en) 2006-09-14
US7466315B2 (en) 2008-12-16
US20040189645A1 (en) 2004-09-30
RU2363984C2 (ru) 2009-08-10
EP1676187A2 (en) 2006-07-05
RU2005115971A (ru) 2006-01-20
JP2007509420A (ja) 2007-04-12
KR20060111362A (ko) 2006-10-27
CA2501516A1 (en) 2005-04-13
KR101137187B1 (ko) 2012-04-20
CA2501516C (en) 2013-10-08

Similar Documents

Publication Publication Date Title
JP4796499B2 (ja) 映像およびシーングラフインターフェイス
JP4796500B2 (ja) ベクトルグラフィックスのためのマークアップ言語およびオブジェクトモデル
US7126606B2 (en) Visual and scene graph interfaces
JP4290477B2 (ja) ベクターグラフィック用のマークアップ言語およびオブジェクトモデル
AU2004279179B8 (en) Visual and scene graph interfaces

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070730

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070730

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20090903

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20091008

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100316

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100616

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20100616

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100810

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101110

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20101110

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101221

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110421

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110509

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110701

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110729

R150 Certificate of patent or registration of utility model

Ref document number: 4796499

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140805

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees