JP4694355B2 - コンピュータディスプレイ出力におけるアニメーションおよびメディアの調整 - Google Patents

コンピュータディスプレイ出力におけるアニメーションおよびメディアの調整 Download PDF

Info

Publication number
JP4694355B2
JP4694355B2 JP2005334113A JP2005334113A JP4694355B2 JP 4694355 B2 JP4694355 B2 JP 4694355B2 JP 2005334113 A JP2005334113 A JP 2005334113A JP 2005334113 A JP2005334113 A JP 2005334113A JP 4694355 B2 JP4694355 B2 JP 4694355B2
Authority
JP
Japan
Prior art keywords
animation
tree
property
timing
level
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
JP2005334113A
Other languages
English (en)
Other versions
JP2006146924A (ja
JP2006146924A5 (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 JP2006146924A publication Critical patent/JP2006146924A/ja
Publication of JP2006146924A5 publication Critical patent/JP2006146924A5/ja
Application granted granted Critical
Publication of JP4694355B2 publication Critical patent/JP4694355B2/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
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/438Presentation of query results
    • G06F16/4387Presentation of query results by the use of playlists
    • G06F16/4393Multimedia presentations, e.g. slide shows, multimedia albums
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/109Font handling; Temporal or kinetic typography
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • G06F40/143Markup, e.g. Standard Generalized Markup Language [SGML] or Document Type Definition [DTD]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本発明は、一般にコンピュータシステムに関し、より詳細には、コンピュータシステム上に表示するためにグラフィカルな情報および他のオーディオビジュアル情報を処理することに関する。
現代のコンピューティングシステムでは、マークアップ言語技術の発展の結果、プログラム作成者が貴重な情報をユーザに提供し、ユーザと表示された情報との対話に応答して要求などを受け取るための簡単な方法が生まれた。一般に、マークアップが処理されて、エレメントツリーが構築され、次いでエレメントツリーが処理されて、対応する出力データがディスプレイ上にレンダリングされる。
とりわけ、一般にプログラムの作成を単純化するように構成されている1つのマークアップ言語、すなわちXAML(拡張可能アプリケーションマークアップ言語:eXtensible Application Markup Language)について記載している(本発明の譲受人に譲渡された)複数の特許出願の中に(特許文献1)および(特許文献2)がある。一般にプログラム作成者は、XAMLの命令をアプリケーションプログラミングインターフェース(API)に対する呼び出しと共に使用して、オブジェクトをシーングラフデータ構造内に配置する。例えばユーザインターフェースを構築するために、XAMLベースのプログラムは通常、子ビジュアルオブジェクトを他のビジュアルオブジェクトに追加して、階層型のシーングラフを構築し、出力用のジオメトリデータ、イメージデータ、および他のデータなどの命令リストを作成し、ビジュアルオブジェクト上の変形プロパティ、クリッピングプロパティ(clipping property)、および不透明度プロパティを指定することができる。
前述の特許出願に記載されているXAMLの機能の1つは、プログラムがアニメーションパラメータおよび/またはメディア関連データを指定できるようにし、対応するアニメーションおよび/またはメディアを含む対応するディスプレイデータを効率よく出力する機能である。例えばプログラム作成者は、表示されるオブジェクトの何らかのプロパティが時間の経過と共にどれぐらい変化すべきかなどのパラメータの点から所望のアニメーション効果について記述することができ、例えば長方形の不透明度プロパティは、一定の時間にわたって不透明から透明へと徐々に薄まり、そして戻るように設定することができる。典型的な状況では、このシステムは、効果を達成するために時間の経過と共に変更されたイメージを定期的に描き直すことをプログラムコード自体に要求するのではなく、プログラムコードが最初にアニメーションパラメータを指定するだけですむようにアニメーションを管理する。
この目的のために、一実装形態では、オペレーティングシステムが、時間の経過に伴うアニメーションの展開を定義するタイムラインオブジェクト(timeline object)の使用を可能にし、必要に応じて、そのアニメーション用のタイムラインを表すためにクロックオブジェクトがインスタンス化される。動画化されたイメージをその更新された特性によって描き直すためにアプリケーションプログラムを定期的に(例えば、フレームごとに1回)コールバックする代わりに、より低いレベルのグラフィックスコンポーネントがクロックを使用して、動画化されて表示されているオブジェクト用の1つまたは複数の更新された、時間と共に変化するプロパティパラメータを確定し、その更新されたプロパティデータに基づいてイメージを描き直す。一般に、メディアも同様に処理される。
米国特許出願第10/693,630号明細書 米国特許出願第10/693,822号明細書 米国特許出願第10/401,717号明細書 米国特許出願第10/693,438号明細書
こうした簡単なプログラミングは、このようにアニメーションおよびメディアをユーザインターフェースの一部として実装するための改良された簡易な方法をプログラム作成者に提供するが、これまではタイミング情報をそれぞれのアニメーションまたはメディアエレメントに個々に適用しなければならなかった。結果として、これまでプログラム作成者は、別々のタイムライン上で発生する可能性のある様々なアクション(例えば、アニメーションおよびメディアの開始時刻および停止時刻、ならびに/または受け取られるイベントがどのように処理されるか)を手動で同期させる必要があった。これは、プログラム作成者が、1つの動画化されたプロパティと別の動画化されたプロパティの双方を同期させたいにもかかわらず、一方が他方に(少なくとも一時的に)先行するなど、整合しない状態につながる場合がある。これはまた、複雑さが増すことにもつながり、例えばイベントを再開する際に、そのイベントに関連する個々のアニメーションをそれぞれ見つけて再開する必要がある。
簡潔に言えば、本発明は、ストーリーボードと呼ばれる名前付きのタイムラインオブジェクト内でアニメーションのセットをグループ化することによって、それらのセットを作成者がスケジュールできるようにする方法およびシステムを提供する。一実装形態では、ストーリーボードAPIセットは、様々なオブジェクトおよびプロパティに影響を与えるタイムラインを単一のタイムラインツリーに統合して、プログラム作成者がタイミングイベントの複雑なセットを簡単な方法で整理および制御できるようにする方法を提供する。ストーリーボードは、アニメーション/ビデオ/オーディオの特定のインスタンス上で、または特定のスタイルのアニメーションに対して使用することができる。
一実装形態では、ストーリーボードは、タイムラインツリーをエレメントツリー内のエレメント用に指定できるようにするオブジェクトを含む。ツリー内のそれぞれのタイムラインは、エレメントのプロパティ値を設定し、エレメントおよびそのサブツリー用のアニメーションを制御する。ストーリーボードは基本的に、開始すること、停止または一時停止すること、あるいは検索するために使用することが可能な特定のタイプのタイムラインオブジェクトに対応し、これによって、動画化されたエレメントの外観、および/またはそのストーリーボードに関連付けられているメディアの動作を制御する。
ストーリーボードは、トップレベルのタイムラインのコレクションを含むこともでき、これは、1つのエレメントに関連付けることができ、かつ独立して開始することができる。例えば作成者は、2つの異なるアニメーションを同一のストーリーボードコレクション内の1つのエレメントに関連付けることができ、それらのアニメーションは、独立してトリガできるが、1つのユニットとして含まれている。したがってストーリーボードは、タイミングツリーと、ストーリーボード内のアニメーションが、そのストーリーボードが添付されているエレメントに関連してそれらのターゲットを分解(resolve)できるようにするエレメントツリーとの接続ポイントを提供する。
ストーリーボードはまた、状態の変化、イベント、または他のアクションによってアクティブ化できるトリガのコレクションを含むこともでき、そのトリガがアクティブ化されたときに実行される拡張可能なアクションのセット(例えば、タイムラインの開始または停止)を含むこともできる。ストーリーボードは、ユーザがストーリーボード内のタイムラインをコードから対話式に開始および停止できるようにする、基礎をなすオブジェクトモデルの一部である。
一般にストーリーボード内のタイムラインは、様々なサブツリー、エレメント、および他のオブジェクトに適用できるアニメーションテンプレートを表している。ストーリーボードは、ツリー内のフレームワークエレメント上に直接設定するか、またはスタイル(ボタンの色、サイズ、および他のプロパティなど、エレメントに適用できる1つまたは複数のデータ値を含むリソース)を介してフレームワークエレメントに適用することができる。オリジナルの情報を複製する、チェンジャブル(changeable)などのクローニングと、それに続く複製された情報上での動作とをサポートするオブジェクトにアニメーションを適用するためにストーリーボードを使用することもでき、これによってオリジナルの情報を復元することができる。
したがってストーリーボードは、様々なオブジェクトおよびプロパティに影響を与える、その他の点では独立したタイムラインを単一のタイムラインツリーに統合して、プログラム作成者がタイミングイベントの複雑なセットを簡単な方法で整理および制御できるようにする方法を提供する。例えばタイミングツリーとエレメントツリーを分離すると、作成者が、アニメーションのセットを順番に実行することや、複雑なタイミング構造をループすることなど、時間における操作を行うためにタイミングツリーを使用することが可能になる。ストーリーボードは、アニメーション/ビデオ/オーディオの特定のインスタンス上で、または特定のスタイルのアニメーションに対して使用することができる。
ストーリーボードは、動画化するオブジェクトおよびプロパティと、動画化する元となる基本値とを作成者が指定できるようにするプロパティに関連付けられている。ストーリーボードは、作成者が、時間の経過に伴うそれぞれのアニメーションの変更を個々に定義する代わりに、アニメーションのセットをグループとして整理および制御することを可能にし、これによって、並列アニメーション(parallel animation)およびアニメーションのシーケンス(後述する)など、複雑な方法で相互に同期するアニメーションを簡単に作成することを可能にする。
ストーリーボードは、プロパティトリガおよびイベントトリガを使用して、それらのオペレーション(例えば開始、一時停止、検索、および停止のアクション)を制御することを可能にする。一般にプロパティトリガは、真や偽などの何らかの状態/値に対応し、その一方でイベントが始動する。例えばプロパティトリガは、マウスがエレメント上に存在していた場合は真の値を、エレメント上に存在していなかった場合は偽の値を有することができ、イベントは、マウスがエレメント上でクリックされた場合に始動することができる。それぞれの真または偽の状態および/またはイベントは、(1つまたは複数の)ストーリーボード内で別々に開始、停止、一時停止、および/または検索を行うために使用することができる。このようにして、アニメーションは、ユーザと表示されたエレメントツリーの表示との対話を介して制御することができる。イベントトリガに加えて、プロパティ入力/終了トリガ(property enter/exit trigger)も、タイムラインをトリガする際に使用することができる。
ストーリーボードおよびトリガは、スタイル付けすることができ、スタイルは作成者が、1つまたは複数のプロパティを表すデータをグループとしてまとめ、次いでこれを、エレメントの対応するプロパティに1つのセットとして適用することを可能にする。スタイル内のこれらのプロパティは、動画化するか、および/またはトリガに対応することができる。
他の利点および有利性は、以降の詳細な説明を図面と併せて理解すれば、明らかになるであろう。
(典型的な動作環境)
図1は、本発明を実装できる適切なコンピューティングシステム環境100の一例を示している。このコンピューティングシステム環境100は適切なコンピューティング環境の一例にすぎず、本発明の使用または機能の範囲に対して何らかの限定を提示することを意図するものではない。またコンピューティングシステム環境100が、この典型的な動作環境100内に示されたコンポーネントの任意の1つまたは組合せに関して何らかの依存性または必要性を有すると解釈すべきでもない。
本発明は、他の多くの汎用または専用のコンピューティングシステム環境または構成と共に使用することができる。本発明と共に使用するのに適する可能性のあるよく知られたコンピューティングシステム、環境、および/または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドデバイスまたはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラム可能な家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などを含むが、これらには限定されない。
本発明については、コンピュータによって実行される、プログラムモジュールなどのコンピュータ実行可能命令という一般的なコンテキストにおいて説明することができる。一般にプログラムモジュールは、特定のタスクを実行したり特定の抽象データ型を実装したりするルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。本発明は、通信ネットワークを介してリンクされるリモート処理デバイスによってタスクが実行される分散コンピューティング環境において実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリストレージデバイスを含むローカルコンピュータストレージメディアおよびリモートコンピュータストレージメディアの双方に配置することができる。
図1を参照すると、本発明を実装するための典型的なシステムは、汎用コンピューティングデバイスをコンピュータ110の形態で含む。コンピュータ110のコンポーネントは、処理装置120と、システムメモリ130と、システムメモリを含む様々なシステムコンポーネントを処理装置120に結合するシステムバス121とを含むことができるが、これらには限定されない。システムバス121は、メモリバスまたはメモリコントローラと、ペリフェラルバスと、様々なバスアーキテクチャのいずれかを使用するローカルバスとを含む複数のタイプのバス構造のいずれにすることもできる。例えばこのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、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などの揮発性メモリおよび/または不揮発性メモリの形態で含む。基本入出力システム133(BIOS)は、起動中などにコンピュータ110内の要素間における情報伝達を補助する基本ルーチンを含み、通常はROM131内に格納されている。RAM132は通常、処理装置120にすぐにアクセスできるか、および/または処理装置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、アプリケーションプログラム136、他のプログラムモジュール137、およびプログラムデータ138と同一とするか、または異なっていてもよいという点に留意されたい。ここでは、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147が最低限異なるコピーであることを示すために、異なる番号を割り当てている。ユーザは、タブレット(電子デジタイザ)164、マイクロフォン163、キーボード162、および通常はマウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス161などの入力デバイスを介してコンピュータ110にコマンドおよび情報を入力することができる。他の入力デバイス(図示せず)は、ジョイスティック、ゲームパッド、衛星パラボラアンテナ、スキャナなどを含むことができる。これらの入力デバイスおよび他の入力デバイスは、システムバスに結合されているユーザ入力インターフェース160を介して処理装置120に接続される場合が多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)などの他のインターフェースおよびバス構造によって接続することもできる。またモニタ191や他のタイプのディスプレイデバイスも、ビデオインターフェース190などのインターフェースを介してシステムバス121に接続される。モニタ191は、タッチスクリーンインターフェース192などのインターフェースを介してコンピュータシステム110に手書きなどのデジタル化された入力を入力できるタッチスクリーンパネル193などと一体化することもできる。モニタおよび/またはタッチスクリーンパネルは、タブレットタイプのパーソナルコンピュータにおけるように、コンピューティングデバイス110が内蔵されている筐体に物理的に結合することができ、タッチスクリーンパネル193は基本的にタブレット164として機能するという点に留意されたい。さらに、コンピューティングデバイス110などのコンピュータは、スピーカ195およびプリンタ196などの他の周辺出力デバイスを含むこともでき、これは周辺出力インターフェース194などを介して接続することができる。
コンピュータ110は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境内で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイス、または他の一般的なネットワークノードとすることができ、図1にはメモリストレージデバイス181しか示されていないが、通常はコンピュータ110に関連する上述の要素の多くまたはすべてを含む。図1に示されている論理接続は、ローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットにおいてよく見受けられる。
LANネットワーキング環境において使用する場合、コンピュータ110は、ネットワークインターフェースまたはアダプタ170を介してLAN171に接続される。WANネットワーキング環境において使用する場合、コンピュータ110は通常、モデム172、またはインターネットなどのWAN173上で通信を確立するための他の手段を含む。モデム172は内蔵型または外付け型とすることができ、ユーザ入力インターフェース160または他の適切なメカニズムを介してシステムバス121に接続することができる。ネットワーク化された環境では、コンピュータ110に関連して示されているプログラムモジュール、またはその一部をリモートメモリストレージデバイス内に格納することができる。図1は、例としてリモートアプリケーションプログラム185をメモリデバイス181上に常駐するものとして示しているが、この形態には限定されない。示されているネットワーク接続は代表的なものであり、コンピュータ間に通信リンクを確立する他の手段も使用できることが理解できるであろう。
(階層化アーキテクチャの例)
本発明の一態様は、一般にスムーズで複雑なアニメーションおよび/またはメディアをコンピュータシステム上に提供することを対象としている。この目的のために、図2に全般的に示されているように、メディア統合レイヤアーキテクチャ200を提供する。アプリケーションプログラム、制御、または他の類似のより高いレベルのプログラムコード(例えば、オペレーティングシステムコンポーネントのユーザインターフェース)202は、アプリケーションプログラミングインターフェース(API)204のセットなどを介してメディア統合レイヤアーキテクチャ200にアクセスして、グラフィカルな情報へのアクセス(書き込みまたは読み取り)を行う。本明細書に記載する例の多くは、APIとインターフェースで接続されているアプリケーションプログラムに言及するが、他のより高いレベルのプログラムコードおよびコンポーネント(例えば、オペレーティングシステムのユーザインターフェース)は、本明細書に記載されているより低いレベルのコンポーネントとインターフェースで接続することもできることを理解できるという点に留意されたい。そのようなものとして、アプリケーションプログラムやユーザインターフェースなど、その呼称を問わず、このようなより高いレベルのプログラムコードに対するいかなる言及も同義とみなすべきである。
一実装形態では、メディア統合レイヤアーキテクチャ200は、高いレベルの合成およびアニメーションエンジン206、タイミングおよびアニメーションコンポーネント208、ならびに低いレベルの合成およびアニメーションエンジン210を含む。本明細書で使用される「高いレベル」および「低いレベル」という用語は、他のコンピューティングシナリオで使用される場合と同義であり、一般にソフトウェアコンポーネントが、より高位のコンポーネントと比較して低位にあればあるほど、そのコンポーネントはハードウェアに近くなる。したがって、例えば高いレベルの合成およびアニメーションエンジン206から送信されるグラフィックス情報は、低いレベルの合成およびアニメーションエンジン210で受信することができ、この情報を使用して、ハードウェアを含むグラフィックスサブシステムにグラフィックスデータを送信する。
一般に、高いレベルの合成およびアニメーションエンジン(本明細書では高いレベルのコンポジタ(compositor)およびアニメータ(animator)、あるいは高いレベルのエンジンまたはコンポーネントとも呼ばれる)206は、アプリケーションプログラム202によって提供されるグラフィックスシーンを表すディスプレイエレメントツリーを構築し、その一方でタイミングおよびアニメーションコンポーネントは、宣言型の(または他の)アニメーションおよびタイミングの制御を提供する。低いレベルの合成およびアニメーションエンジン(本明細書では低いレベルのコンポジタおよびアニメータあるいは低いレベルのエンジンまたはコンポーネントとも呼ばれる)210は、複数のアプリケーションのシーン用のレンダリングを合成し、レンダリングコンポーネントによって、画面に対するグラフィックスの実際のレンダリングを実施する。時間のかかるまたはアプリケーションに特有なレンダリングをより高いレベルで行うこと、およびビットマップなどへの参照をより低位のレイヤに渡すことも依然として可能であるという点に留意されたい。
高いレベルの合成およびアニメーションエンジン206は、エレメントツリー構造を構築して、その構造を行き来し、レンダリング命令および単純なアニメーションインターバルを作成して、低いレベルの合成およびアニメーションエンジン210に渡す。高いレベルのコンポジタによって作成されるレンダリング命令は、タイミングおよびアニメーションの情報を含むことができる。低いレベルの合成およびアニメーションエンジン210は、レンダリング命令およびアニメーションインターバルを受け取り、次いでグラフィックスサブシステム(例えば、グラフィックスソフトウェアおよびハードウェア)212に提供されるシーンの動画化、レンダリング、および合成を管理する。ローカルに表示された出力の代替として、または追加として、高いレベルの合成およびアニメーションエンジン206(またはこれに類似したもの)は、固定されたイメージデータをプリンタ222などへ送信するためのより低いレベルの印刷コード220にレンダリングおよびアニメーション命令を適切なフォーマットで提供することができ、および/またはリモートマシン228への送信用のより低いレベルのターミナルトランスポートサーバ226にレンダリング命令および単純なアニメーションインターバルを適切なフォーマットで提供することができる。より豊かな情報をネットワーク全体に渡すこともできるという点に留意されたい。例えば何のネットワークトラフィックも伴わずにリモートマシンにマウスロールオーバー効果(mouse rollover effect)をローカルに処理させることが望ましい場合もある。
この実装形態では、メディア統合レイヤアーキテクチャ200は、このようにグラフィックス処理を複数のレベルに分割し、これらのレベルのそれぞれが、何らかのインテリジェントなグラフィックス処理を実行し、これらが合わさることは、アプリケーションのユーザインターフェースなど202が、スムーズなアニメーションでグラフィックスを出力し、そのグラフィックスを他のアプリケーションのグラフィックスと合成し、ビデオフレームと連動することを可能にする。アニメーションおよび/または合成は、オーディオ出力と同期することもできる。例えば低いレベルのコンポーネントでオーディオとフレーム率を同期させることによって、オーディオのタイミングは、ビデオまたはグラフィックスのタイミングと基本的に一致することができ、リフレッシュ速度についていくためのタスクとしてスケジュールされた複雑な事前処理の能力に依存することはない。
図3は、XAMLベースのコードなどのマークアップコード302をパーサ/トランスレータ304によって解読できる一実装形態を表している。一般にパーサ/トランスレータ304は、エレメントツリー/プロパティシステム314にエレメントを追加し、これらのエレメントは、自分自身のレイアウトを行うビジュアルオブジェクトである。さらにマークアップコードのいくつかまたはすべては、オンデマンドで解釈するのではなく、コンパイルすることができ、これによって効率が高まるという点に留意されたい。
一般にエレメントは、プロパティシステム、トリガリングおよびレイアウト/プレゼンテーションシステムに参画するエレメントレイヤ内のオブジェクトである。パーサ304はタグを見つけて、それらのタグがエレメントまたはリソースオブジェクトを定義するのに役立つかどうかを判断する。VisualBrushの特別なケースでは、(特許文献3)に記載されているように、例えば同じタグを、それらのタグが現れるコンテキストに応じて、例えば複合プロパティシンタックス内に現れるかどうかに応じて、エレメントとして解釈したり、あるいはリソースオブジェクトとして解釈したりすることもできる。
マークアップ内でインラインで存在することに加えて、リソースインスタンスは、別の場所に(例えばローカルに配置できるか、またはリモートネットワーク上に配置して適切にダウンロードできるマークアップ内またはファイル内に)配置し、名前によって(例えばテキスト名、参照、または他の適切な識別子によって)参照することができる。このようにして、シーンの設計者は、複合プロパティシンタックスによって記述されたエレメントを含む、エレメントツリー内の1つのエレメントを1つのシーンを通じて再利用することができる。
パーサ304は、必要に応じてタイプコンバータ308にアクセスすることによって、また指定されたパラメータをオブジェクトプロパティにマッチさせることによって、複合プロパティシンタックス内のマークアップを処理し、これによってシーンの設計者にとっての複雑さに対処する。したがってパーサ304は、オブジェクトをセットアップするだけでなく、オブジェクト上のプロパティも設定する。同じレンダリングモデルがエレメントレベルとAPIレベルの間で共有されるため、オブジェクトの多くは基本的に同じである。これは、解析/翻訳をきわめて効率的にし、また様々なタイプのプログラミング言語(例えば、C#のような言語)に、マークアップからそれ自身のシンタックスへ、およびその逆へ容易に変換できる機能を与える。図3に示されているように、(コンパイルされたマークアップを含むことができる)このような別のプログラミング言語310は、エレメントをエレメントツリー208に追加するか、またはビジュアルAPIレイヤ316と直接インターフェースで接続できるという点に留意されたい。
図3にも示されているように、同じマークアップ302を使用して、エレメントレベルおよびリソースレベルでプログラムを作成することができる。一般にエレメントレベルは、十分なプログラム可能性と、継承(例えばスタイルシートのような機能)を提供するプロパティシステムの使用と、トリガ(例えば、これによってエレメントがユーザの入力したイベントまたはアクションに応答してその外観や位置などを変更するコードを添付した可能性がある)とをシーンの設計者に与える。しかし本発明は、リソースレベルのメカニズムも提供し、これによってシーンの設計者は、基本的にエレメントツリーおよびプログラムを直接ビジュアルAPIレイヤへショートカットすることができる。エレメントレベルの機能を必要としない多くのタイプの静的な形状やイメージなどにとって、これは、適切なオブジェクトを出力するためのより効率的で軽快な方法を提供する。
アニメーションおよびメディアの出力を制御する目的で、図4および5を参照して後述するように、クロックを含むタイミングツリーも保持される。一般に高いレベルのコンポジタおよびアニメータエンジン206は、(コンパイルと呼ばれる場合もある)複雑な処理を実行し、処理量を著しく簡素化し、正しい出力をレンダリングするためにより低いレベルで処理する必要のあるデータ量を大幅に削減する。しかし、より高いレベルによって実行される処理の量およびタイプは、より低いレベルの負荷、構成、および性能にかなりの程度依存する場合があるという点に留意されたい。例えば高性能のグラフィックスハードウェアがある場合、より高いレベルで行う処理の量はより少なくすることができ、逆もまた同様である。高いレベルのレイヤおよび低いレベルのレイヤは、これらの要因に適応することができる。
一般にアニメーションは、高いレベルのコンポジタおよびアニメーションエンジン206と低いレベルのコンポジタおよびアニメーションエンジン210の双方によって達成される。一実装形態では、高いレベルのエンジン206は、シーンを行き来し、その後の補間用のインターバルによってアニメーションパラメータを更新し、これらの簡素化されたデータ構造を命令にパッケージして、より低いレベルのエンジン210へ渡す。これは、同期的なおよび/または非同期的な方法で行うことができる。インターバルデータは、タイミングエンドポイント(開始および終了のタイミングのデータ)、ならびにレンダリング命令用のパラメータ化された値を含むものとみなすことができる。高いレベルのエンジン204は、要求された補間のいくつかまたはすべてを実行できるという点に留意されたい。例えば補間または他のモーション機能が複雑すぎて、より低いレベルのエンジン210が処理できない場合、またはより低いレベルが、その上に課された処理要求についていけない場合、より高いレベルのエンジンは、その計算のいくつかまたはすべてを実行することができ、簡素化されたデータ、命令、テッセレーション(tessellation)などをより低いレベルに提供して、所望の結果を達成する。
典型的なケースでは、より低いレベルが、アニメーションのそれぞれのフレームごとに実際に補間を実行する際、低いレベルのエンジン210は、パラメータインターバルを補間して瞬時値を得て、命令をレンダリングコマンドへと復号し、このレンダリングコマンドは、グラフィックスデバイスによって実行される。グラフィックスデバイスは、最終シーン内に現れる可能性のあるすべてのビデオフレームを追加して、最終シーンを合成する。デジタル権利管理によって保護されているコンテンツなど、他のデータを追加することもできる。
したがって高いレベルのエンジン206は、シーンデータ構造を行き来し、一定の時間にわたるそれぞれの動画化されたパラメータを記述するインターバルを計算し、これらのインターバルおよび簡素化されパラメータ化された描画命令を低いレベルのエンジン210に渡す。パラメータデータは、開始時刻、終了時刻、インターポレータ(interpolator)、および補間データを含む。例えば、イメージが動いて見えるようにそのイメージを消去して描き直すのではなく、高いレベルのコンポジタおよびアニメーションエンジン206は、そのイメージが時間の経過と共にどのように変化すべきかについて、例えば開始座標、終了座標、イメージが座標間で移動すべきである時間の量(インターバル)、および線形などのモーション機能について、低いレベルのコンポジタおよびアニメーションエンジン210に指示することができる(例えば静止オブジェクトは、その色プロパティを変更することによって動画化できるため、モーションはアニメーションにとって必要とされないという点に留意されたい)。低いレベルのコンポジタおよびアニメーションエンジン210は、補間を行って、フレーム間の新たな位置を確定し、これらをグラフィックスデバイスの理解できる描画命令に変換し、そのコマンドをグラフィックスデバイスに渡すことになる。高いレベルのエンジン206が渡すたびに、低いレベルのエンジン210が複数のフレームにわたってスムーズなアニメーションを実行するのに十分なデータが提供されることが好ましい。
低いレベルの(例えばファーストチック(first-tick))エンジン210は、高いレベルのエンジン206から分離されたタスクである。低いレベルのエンジン210は、シーンについて記述する簡素化されパラメータ化された描画命令およびパラメータインターバルを高いレベルのエンジン206から受け取る。低いレベルのエンジンは、高いレベルのエンジン206によって新たなデータ構造が提供されるまで、これらのデータ構造を保持して行き来する。低いレベルのエンジンは、複数の高いレベルのエンジン206にサービスを提供することができ、それぞれごとに別々のデータ構造を保持する。低いレベルのエンジン210と高いレベルのエンジン206の間におけるこの一対多の関係は、システムが同時に複数のシーンをスムーズに動画化することを可能にする。
低いレベルのエンジン210は、高いレベルのエンジンの提供されたインターバルに基づいて基本的に瞬時のアニメーションパラメータを補間し、描画命令を更新し、あらゆるフレーム用のシーンをレンダリングする。低いレベルのエンジン210のタスクは、システム上において高い優先順位で実行され、フレームをグラフィックスハードウェアの画面のリフレッシュ速度などで提示できる状態にしておく。したがって低いレベルのエンジン210によって実行される補間は通常、線形、区分線形、三次スプライン、および類似の速度の関数などの高速な単関数に限定される。
アニメーションおよびメディアに関しては、図4および5に全般的に示されているように、アプリケーションプログラム202などのプログラムは、高いレベルのコンポーネント206に対して、クロックまたはクロックプロパティと呼ばれる、タイミング情報を伴うアニメーションプロパティ値を指定する。後述のように、基本的にすべての独立したアニメーションまたはメディア(例えば、ビデオおよびオーディオなどの線形メディア)、ならびに指定されたアニメーションを調整するストーリーボードは、そのために保持されるクロックを高いレベルのコンポーネントにおいて有することになる。一般に作成者は、クロックへとインスタンス化されるタイムラインデータを必要に応じて指定して、それらの同期を維持する。
クロックプロパティは、所与のクロックとタイミング構造の残りとの間における最初の同期関係を定義するタイミングプロパティを含む。図5に示されているように、高いレベルのコンポーネント206は、アニメーションのプロパティのその時点での値を確定するために、高いレベルのアニメーション関数520H(例えばマネージドのコードで書かれており、これは、情報をメタデータの形態で提供するコードであり、共通言語ランタイムを可能にし、この上で動作して、そのオペレーションを制御する)を呼び出すことができる。高速のフレーム率の計算中に、低いレベルのコンポーネント210は、アニメーションのその時点でのプロパティ値を確定するために、エンジン414によって計算された増加を有する類似の(または同じ)アニメーション関数520Lを呼び出す。代替実装形態では、例えばアニメーション関数をより低いレベルのコンポーネントに組み込むことができるという点に留意されたい。
一般にアニメーションおよび線形メディアは、クロックのセットに関連付けられ、これらのクロックは、同期化プリミティブ(synchronization primitive)およびルールによって相互に関連付けられている。クロックは階層的に構成することができ、例えばアプリケーションプログラムは親クロックを有し、アプリケーションプログラムの動画化されたオブジェクトは子であり、これも同様に他の子を有することができる。1つのクロックのプロパティが定義または修正されると、そのクロックのすべての子が影響を受ける。例えば親クロックを一時停止すると、その子クロックもすべて一時停止し、親クロックの速度を倍増させると、そのすべての子クロックの速度も倍増する。
これらのクロックプロパティは、ランタイムにアプリケーションによって開始された対話式の制御イベントを含むソースイベントによって修正することができる。したがってクロックは対話式であり、それぞれのクロックは、アプリケーションによって任意の時点で、例えばユーザの入力に応答して、個々に開始、一時停止、再開、および停止することができる。その上、新たなクロックをタイミング構造に追加することができ、また既存のクロックを除去することもできる。
前述の(特許文献2)に記載されているように、高いレベルのタイミングコンポーネントは、保存されているイベント(開始や一時停止など)のリストおよび関連付けられている同期化プリミティブに基づいて、それぞれのクロックごとにインターバルリストを作成することができる。アクティブ化インターバルは、現実の時間における様々な時点で所与のクロックによって表される時間について記述する単純で重ならないセグメントである。
図4に示されているように、クロックプロパティの少なくとも一部は、クロックのタイミングツリー402内で階層的に関連付けることができる。このような3つのクロックとそのプロパティ、すなわちクロックプロパティ4041〜4043が図4に示されているが、与えられた状況によっては、より多くのクロックおよび代わりのタイミングツリーが存在してもよいことを理解することができる。例えば表示される動画化されたオブジェクト(またはストーリーボードによって調整されたオブジェクトのセット)に対応できるそれぞれのクロックごとに、高いレベルのコンポーネント206は、イベントリストジェネレータ408と呼ばれる状態マシン(state machine)を含み、これは、クロックプロパティからイベントリスト(例えば4061)を作成する。一般にイベントリストジェネレータ408は、指定されたクロックプロパティによって最初にスケジュールされたイベントを、アニメーションに関して受信される一時停止要求および再開要求など、何らかの明示的な対話型のイベントと共に1つのイベントリストにまとめる。クロックは、それぞれのアニメーション(または後述のようなストーリーボードを介したアニメーションのグループ)ごとに保持され、したがって、それぞれの独立したアニメーション/アニメーションセットに対応するイベントリスト、ならびにそれぞれの独立した線形メディア用のイベントリストがある。
高いレベルのコンポーネントは、インターバルジェネレータ410を含み、これは、それぞれのアニメーションまたはメディア用のイベントリスト(例えば4063)を使用して、対応するインターバルリスト(例えば4123)を計算し、これを低いレベルのコンポーネント210に渡す。次いで、低いレベルのコンポーネント210は、低いレベルの計算エンジン414を含み、これは、そのオブジェクト用のインターバルデータおよび現在の時刻に基づく増加値を、動画化されたオブジェクトの変わりゆくプロパティに関する現在の値を確定する低いレベルのアニメーション関数サブシステム520Lに提供することなどによって、インターバルデータに関して現在の時刻に基づいて出力を制御する。例えば任意の所与のフレームに関して、低いレベルの計算エンジン414は、動画化されたオブジェクトの位置をインターバルデータおよび現在の時刻(これは、システム時間または相対的時間とすることができる)に基づいて補間する。図4および5に示されているように、高いレベルのタイミングコンポーネントは、タイミングツリー402およびイベントリスト4061〜4063を含み、その一方で低いレベルのタイミングコンポーネント210は、インターバルリスト4121〜4123を含むが、これらのデータ構造は、基本的にストレージ内のいずれの場所に保持することもでき、通常は高速のランダムアクセスメモリ内に保持できるという点に留意されたい。
要約すると、高いレベルのタイミングコンポーネント206は、同期化ルールおよびプリミティブによって(例えば階層的に)関連付けられているクロックのツリー402を参照する。本発明は、高いレベルのタイミングコンポーネント206内のクロックを使用して、低いレベルのタイミングエンジンによって消費されるアクティブ化インターバルのリスト412をコンパイルする。低いレベルのタイミングエンジンは、インターバルリスト412を参照し、これは、(例えば動画化されたオブジェクトごとに、または線形メディアごとに)独立したクロックを表す。図5に示されているように、システムクロック524など、双方にとって整合性のある時間を提供するクロックがあり、これによって複数のレベルが同期を維持する。
アプリケーション202(または何らかの他のソース)から受け取った対話型の変更に応答して、高いレベルのタイミングコンポーネントは、その変更に直接関与しているクロックの状態、さらには間接的に関与しているすべてのクロックの状態を、同期化プリミティブによって指定されるように更新する必要がある。単一のクロックに対する変更が、タイミング構造内の他のクロックにも影響を与える場合がありうるという点に留意されたい。例えばスライドショーの発表者は、ディスプレイ全体を一時停止する場合があり、これによって、その時点で表示されているすべてのアニメーションおよび線形メディアは、一時停止する必要がある。後述するように、本発明の一態様によれば、ストーリーボードは、アニメーションおよび/またはメディアをグループにまとめて、そのような望ましい方法で調整することを可能にする。
一般にオブジェクトに関して対話が発生するときは常に、イベントリストが必要に応じて再作成され、インターバルリストが再計算されて、より低いレベルのタイミングコンポーネントへ送信される。より高いレベルのコンポーネントは、これらのオペレーションを(例えば毎秒6回から10回程度の頻度で)実行し、これによって、(例えば毎秒60回動作する)より低いレベルのコンポーネントは、それぞれの動画化されたオブジェクトごとにその時点のインターバルリストを処理するだけでよい。
このインターバル情報ならびにオブジェクト用の開始値および終了値に加えて、さらなるパラメータをより高いレベルのコンポーネントへ送信することができ、その結果としてインターバルリストが変更される。例えばアプリケーションは、イベントに対応する、時間における期間への検索を行うことができる。アプリケーションは、その検索がいつ、どの程度の分量で発生するかを指定する。巻き戻し中または早送り中のメディアのように、アニメーション上の検索によって、アプリケーションは、時間における特定のポイントまで前または後ろにジャンプすることができる。リバースイベント(reverse event)は、アプリケーションが指定できる別のタイプのスケジュールされたまたは対話型のイベントである。リバースイベントがリスト内にある場合、増加は、例えば100パーセントから0パーセントへ自動的に逆転されることになる。速度の変更もサポートされ、例えば特定のクロックを下回るものはすべて、実際の時間よりも速くまたは遅く実行されるように設定することができる。特定のクロックに関して、再開が認められるかどうか、および/またはその時点で実行されていない場合、再び開始するかどうか、例えば1秒で開始し、10秒で再び開始し、100秒で再び開始するなど、ただしその時点で実行されている場合は、任意選択で再開するかしないかを示すことなど、他の属性を指定することもできる。
(アニメーションおよびメディアを調整するためのストーリーボード)
本発明は、とりわけストーリーボードを対象としており、これは、タイムラインツリーをエレメント(例えば、ウィンドウ等のFrameworkElement、パネル、ボタン等の制御など)用に指定できるようにするオブジェクトを含む。タイムラインは、エレメントのプロパティ値を設定し、エレメントおよびそのサブツリー用のアニメーションを制御する。ストーリーボードは基本的に、開始すること、停止または一時停止すること、あるいは検索するために使用することが可能な特定のタイプのタイムラインオブジェクトに対応し、これによって、動画化されたエレメントの外観、および/またはそのストーリーボードに関連付けられているメディアの動作を制御する。
理解できることであろうが、本発明の一態様では、ストーリーボードは、トップレベルのタイムラインのコレクションを含み、これは、1つのエレメントに関連付けることができ、かつ独立して開始することができる。例えば後述するように、このモデルは作成者が、mouseOverアニメーションおよびmouseClickアニメーションを、同一のストーリーボードコレクション内にある1つのエレメント上に有することを可能にする。このmouseOverアニメーションタイムラインとmouseClickアニメーションタイムラインは、独立してトリガできるが、同じユニット内に含まれている。ストーリーボードは、タイミングツリーと、ストーリーボード内のアニメーションが、そのストーリーボードが添付されているエレメントに関連してそれらのターゲットを分解できるようにするエレメントツリーとの接続ポイントも提供する。ストーリーボードはまた、状態の変化、イベント、または他のアクションによってアクティブ化できるトリガのコレクションを含むこともでき、そのトリガがアクティブ化されたときに実行される拡張可能なアクションのセット(例えば、タイムラインの開始または停止)を含むこともできる。ストーリーボードは、作成者がストーリーボード内のタイムラインをコードから対話式に開始および停止できるようにする、基礎をなすオブジェクトモデルの一部である。
一般にストーリーボード内のタイムラインは、様々なサブツリー、エレメント、および他のオブジェクト(例えば、テキストの文字、単語、行、パラグラフなど)に適用できるアニメーションテンプレートを表している。ストーリーボードは、FrameworkElement上に直接設定するか、またはStyle(後述のように、ボタンの色、サイズ、および他のプロパティなど、エレメントに適用できる1つまたは複数のデータ値を含むリソース)を介してFrameworkElementに適用することができる。ストーリーボードを使用して、チェンジャブル(例えばブラシ(brush)、変形、ジオメトリなど。(特許文献4)に記載されているように、チェンジャブルを使用して、FrameworkElementsのプロパティを設定することができる)などのクローニングをサポートするオブジェクトにアニメーションを適用することもできる。例えばブラシは、オリジナルの情報を復元できるように、オリジナルのバックグラウンド情報を複製して、複製された情報上で動作することによって、ボタンまたはパネルのバックグラウンドを設定するチェンジャブルである。したがってストーリーボードを使用して、FrameworkElementのプロパティを設定するチェンジャブルを動画化することができる。言い換えれば、ストーリーボードに関連する2種類のオブジェクト、すなわちストーリーボードと共に参画するエレメント(FrameworkElementなど)、およびストーリーボードと共に参画しないエレメント(例えば、前述のようなチェンジャブル)がある。ストーリーボードのアルゴリズム/データ構造は、参加するものは指定されたように作業するが、クローニングをサポートする限り、参加しないものすら指定されたように作業するようなものである。
本発明の一態様によれば、ストーリーボード(例えば、APIを介してアクセスされるオブジェクト)は、プログラム作成者が、タイムライン内でアニメーションを(エレメントプロパティへ)グループ化することによって、調整されたアニメーションのセットをスケジュールすることを可能にする。すなわちストーリーボードは、タイミングツリーをエレメントツリーと統合し、同じタイムラインを介して調整された方法で様々なアニメーションの様々なプロパティ用のタイミングを操作する機能を提供する。したがってストーリーボードは、様々なオブジェクトおよびプロパティに影響を与える、その他の点では独立したタイムラインを単一のタイムラインツリーに統合して、プログラム作成者がタイミングイベントの複雑なセットを簡単な方法で整理および制御できるようにする方法を提供する。例えば個々のアニメーションを見つけて再開しなければならない代わりに、アニメーションをストーリーボードの一部としてタイムラインの下でグループ化することは、ストーリーボードを再開するだけですべてのアニメーションを同時に再開することを可能にする。さらに、タイミングツリーとエレメントツリーを分離することは、ユーザが、アニメーションのセットを順番に実行することや、複雑なタイミング構造をループすることなど、時間における操作を行うためにタイミングツリーを使用することを可能にする。
ストーリーボードは、アニメーション/ビデオ/オーディオの特定のインスタンス上で、または特定のスタイルのアニメーションに対して使用することができる。
対比の目的で、ストーリーボードなしで書かれた以下のコード例について考察すると、これは、対話式の応答を追加するためのコードビハインド(code-behind)を必要としている(この例では、マウスをクリックした後に2つの別々のボタンを希望どおりに同時に動画化すること)。このコードの作成者は、それぞれのボタンのアニメーション用に必ず同じ開始時刻を設定する必要がある。これは、これらの時刻をそれぞれのボタンのタイムライン上で別々に宣言する必要があるためである。このコードは、2つのボタンを同時に動画化することを目的としているが、第1のボタンのアニメーションおよび第2のボタンのアニメーションは、2つの別々の(Begin)コールによって開始されるため、実際には第1のボタンのアニメーションと第2のボタンのアニメーションの間に何らかのラグが生じるという点に留意されたい。
Figure 0004694355
本発明の様々な態様によれば、一実装形態では、アニメーション用にストーリーボードを使用するために、プログラム作成者は、Timeline、関連付けメカニズム(association mechanism)(例えば、SetterTimelineまたは添付されているStoryboardプロパティ)、およびAnimationオブジェクトをFrameworkElementのStoryboardsプロパティに追加する。ストーリーボードは、特定のエレメントに直接適用するか、または(後述するように)スタイル内で定義することができる。この実装形態では、ストーリーボードは、少なくとも1つのSetterTimelineを有し、これを使用して、1つまたは複数のタイムラインを指定されたオブジェクトの指定されたプロパティにリンクする。上述したタイムラインの基本的なタイミングプロパティに加えて、SetterTimelineは、3つの独特なプロパティを有し、これによって作成者は、動画化するオブジェクトおよびプロパティ、ならびに動画化する元となる基本値、すなわちオブジェクトの動画化をターゲットとするTargetID、動画化するプロパティをターゲットとするPropertyPath(本明細書では「Property」または「Path」と同義である)、およびターゲットとするプロパティ用の基本値が存在する場合にその基本値を指定する任意選択のプロパティであるValueを指定することができる。作成者は、SetterTimelineによってオブジェクトおよびプロパティをターゲットとした後に、タイムラインおよびアニメーションをその子として追加して、ターゲットとするプロパティにそれらを適用するという点に留意されたい。
以下のコード例は、前のコード例との比較から、ストーリーボードがどのようにコーディングを簡素化し、機能性を高めるかを示している(この例は、ストーリーボードクラス上の添付プロパティを介して動作する後述のような代替実装形態ではなく、SetterTimelineの実装形態例を使用しているという点に留意されたい)。
Figure 0004694355
別法として、このXAMLコード例の第2のセットは、ストーリーボードを使用して、1つのクリックイベントによって2つのボタン上で同時にアニメーションを開始する。この目的のために、キャンバス(canvas)の単一のストーリーボードタイムライン内には、1つのエレメントプロパティ(myButtonエレメントの不透明度プロパティ)をそのストーリーボードタイムラインに結び付ける1つのSetterTimelineと、別のエレメントプロパティ(myButton2エレメントの位置プロパティ)をその同じストーリーボードタイムラインに結び付ける別のSetterTimelineとがある。単一のイベント(myButtonをクリックすること)は、ストーリーボードをトリガし、調整されたアニメーションを開始し、時間の経過と共にmyButtonの不透明度およびmyButton2の位置を変える。
対照的なコード例から分かるように、ストーリーボードを使用することは、コードの複雑さを緩和し、アニメーションの開始時刻間において純粋な調整を行う。この例では、双方のアニメーションは、純粋に同じ時刻に開始される。これは、Beginに対して別々のコールがないためである。さらに、双方向性を実現する上でXAMLを補助するコードは不要であり、したがって作成者は、XAMLだけでコードを書くことができる。その上、ストーリーボードでは、作成者は、調整された開始時刻を1つの場所に、すなわちストーリーボードのタイムライン上に設定するだけでよい。
したがってストーリーボードは、作成者が、時間の経過に伴うそれぞれのアニメーションの変更を個々に定義する代わりに、アニメーションのセットをグループとして整理および制御することを可能にし、これによって、相互に同期するアニメーション、およびアニメーションのシーケンス(後述する)を簡単に作成することができる。以下の例について考察すると、これは、異なる幅および色を有する3本の長方形の針、すなわち黒色の時針、緑色の分針、および赤色の秒針を備えたクロックに相当し、角度を設定する回転の変形を使用することによって、その時点でのシステム時間を自動的に表示する。この例では、単一のストーリーボードタイムラインを使用して、3本の針のアニメーションを調整する。
Figure 0004694355
レンダリング変形プロパティ(render transform property)および回転変形角度サブプロパティ(rotate transform angle sub-property)を介して、上記のコードを実行すると、タイムマネージャーは、(これらの針が0度の角度にあることが分かっていたAD0年の00:00:00以降の)その時点の時刻と、レンダリングの際に使用された更新された角度とに基づいて、それぞれの針の回転量を自動的に計算する。それぞれの新たなアニメーションの計算は、例えばフレームごとに1回、または他の何らかの割合で、これらの針の角度位置を更新する。3本の針は、すべていっせいに始動し、例えば(上記のコード例には示されていない)何らかのイベントがクロックを停止した場合、3本ともいっせいに停止する。
容易に理解できることだが、例えば複数のSetterTimelinesは、単一のストーリーボードタイムラインの下でグループ化することができ、それぞれのSetterTimelinesは、様々なターゲットエレメントおよびそれらのエレメントのプロパティを参照するため、エレメントプロパティのアニメーションの複雑度は著しくなる場合がある。ストーリーボードは、組み合わせることができる。例えば1つのストーリーボードは、1つの変形を1つのエレメントに関連付けることができ、別のストーリーボードは、その変形用の値を設定することができる(ただし、その値が設定される前にその変形が存続しているように、コード内の順序を正しくする必要がある)。いずれにしても、ストーリーボードを使用することは、作成者が、所望のエレメント、プロパティ、およびアニメーションの動作をレイアウトすることを容易にする。
図6は、そうしたコードをどのように構成できるかを一般的に示したものであり、ストーリーボードのセット(例えばStoryboardl〜Storyboardn)を有するキャンバスがあり、そのセットのそれぞれのストーリーボード(例えばStoryboardl)は、場合によっては複数のSetterTimelines、例えばSetterTimelinesl〜SetterTimelinesm(または後述のような、プロパティを有するParallelTimelineなど、同等のエレメントツリー関連付けメカニズム)を有するタイムラインを含む。このキャンバスはまた、以降にも記載するイベントトリガ情報、ならびに動画化されたプロパティを有するターゲットとしてストーリーボードに関連付けられた(スタイル識別子およびファイル識別子などの)エレメントおよびリソースに関する情報を含むこともできる。
容易に理解できることだが、本発明の様々な態様を実施するための代替方法が実行可能である。例えばSetterTimelineを使用する代わりに、代替の関連付けメカニズムは、Storyboardクラス上の添付プロパティを介して、同様の関連付け情報を指定する。これによって、メディアをストーリーボードに組み込むことが容易になるという点に留意されたい。この代替方法用のXAMLの例を以下に示す。
Figure 0004694355
上記の例では、何らかのメディアファイル(my.wmv)をストーリーボードに関連付けるためのMediaTimeline、およびストーリーボードプロパティが設定されるParallelTimelineがある(説明を簡単にするために、いくつかの省略記号が示されている)という点に留意されたい。「ParallelTimeline」は、前に理解したように、基本的にストーリーボードタイムラインであって、他のタイプのタイムラインと区別するために、変更された名前を有し、(上記の)MediaTimelineおよび(後述する)SequentialTimelineを含むという点に留意されたい。しかしParallelTimelineはまた、ストーリーボード用のプロパティ、例えば(TargetID、PropertyPath、およびValue of a SetterTimelineの代わりに)Storyboard.Property、Storyboard.Value、およびStoryboard.Targetを使用することによって、SetterTimelineの必要性を解消するが、これによって、添付プロパティが長くなり、見つかりにくくなる傾向がある。一般にストーリーボードプロパティは、それぞれのストーリーボードに関して、何らかのターゲットプロパティ(例えばTargetID)があり、他のストーリーボードプロパティがそのTargetIDと同じタイムライン上にあり、ネスト化されたTargetsがない限り、いかなるタイムラインにも添付することができる。TargetIDがまったく指定されていない場合、そのターゲットは、ストーリーボードをホストするエレメント、例えば前の例ではCanvasであるとみなされるという点に留意されたい。メディアに関しては、MediaTimelinesは、Storyboard.PropertyまたはStoryboard.Valueを指定しない。
次のテーブルは、Storyboardクラスならびにそのオブジェクトプロパティおよびメソッドの一例について記述している。
Figure 0004694355
エレメントツリーをストーリーボードのタイムラインツリーに関連付けるための他の代替方法が、以下のXAMLの例に示されている。
Figure 0004694355
この上記の代替方法では、MediaTimelineは、SetterTimelineの子ではないが、タイムライン上の値ではなく、タイムラインツリーの一部であるためには、SetterTimelineの子となるべきであるという点に留意されたい。したがってこれは、一般にあまり望ましくないシンタックスである。
Figure 0004694355
上記の代替方法では、MediaSetterTimelineという別のクラスが追加されているという点に留意されたい。
Figure 0004694355
この上記の代替方法は、アニメーションパターンに従っているが、値および子が同じプロパティの値になりたがるため、またそれによって、MediaTimelineを幅上に置くことが認められるため、混乱が生じる傾向がある。
多数の代替方法が可能ではあるが、説明上の目的から、一般に本明細書における他の例については、SetterTimelineの使用を介して説明する。
一実装形態では、ストーリーボードは、FrameworkElement上のタイムラインコレクションプロパティとすることができ、このタイムラインコレクションは、最初にエレメントに適用されたときに、そのエレメント上でクロックへとインスタンス化される。Storyboardsプロパティ内の値は、例えばそれぞれのタイムライン階層の葉(leaves)が(一実装形態では、プロパティの基本値を設定するために使用される)SetterTimelineであるIList<Timeline>などのタイムラインインスタンスか、またはこの実装形態ではSetterTimelineの下にアニメーションを有する(基本値を修正するために使用される)アニメーションインスタンスである。SetterTimelineはTimelineであり、したがって子を有することができるが、一実装形態では、SetterTimelineの唯一の正当な子はAnimationである。
Storyboardsプロパティは依存プロパティ(dependency property)ではないという点に留意されたい。ストーリーボードプロパティ内のタイムラインインスタンスのそれぞれは、潜在的に階層を表している。これらのタイムライン階層は、TimelineClock階層へとインスタンス化され、ホストのFrameworkElement内に保存される。次いでこれらの個々のクロックインスタンスは、(ストーリーボードからのタイムラインの1つであることが必要とされる)Timelineを入力として受け取るFindStoryboardClock APIを使用して得ることができ、このAPIを使用して、関連付けられているクロックを見つけ出す。
最新の実装形態では、ストーリーボードは、ホストのフレームワークエレメント上でISupportInitialize.EndInitがコールされたときに処理される。いったんストーリーボードが処理されると、FrameworkElement.Storyboardsは読み取り専用にすることができ、変更が処理されないという事実を反映する上で役に立つ。
前述のように、SetterTimelineは、ホストのFrameworkElementにとって、または指定された場合はターゲットのFrameworkElementにとって暗黙のうちにターゲットとすることができるプロパティ、および任意選択で値を指定するためのタイムラインである。指定された場合、TargetIDは、ホストのFrameworkElementの子孫(descendency)におけるFrameworkElement IDへの参照である。SetterTimeline上のPath(本明細書ではPropertyPathと同義である)プロパティは、どのプロパティがストーリーボードを介して動画化されているか、また必要とされているかを記述する。
SetterTimelineのValueプロパティも、任意選択である。指定されている場合、これは、Timelineがアクティブなときにプロパティがとるべき基本値を示す。この基本値は、まったくアニメーションがない場合か、またはアニメーションが暗黙の値(implied value)を必要とする場合に使用される。この基本値は、(エレメント上に直接設定される)ローカルな値から、継承から、スタイリングなどから、同等に由来することができる。例えば以下の例は、10〜20の値からのプロパティを動画化する。
Figure 0004694355
上記のLengthAnimationがFromとToの双方の値を指定するならば、基本値(SetterTimeline.Value)は無視されるであろうという点に留意されたい。
一実装形態では、ターゲットは、StoryboardsプロパティのホストのFrameworkElementと同じツリー内で、FrameworkElementへの参照である必要がある。PropertyPathの第1のコンポーネントは、依存プロパティに裏付けられたプロパティ(dependency property-backed property)である必要がある。例えばWindow.WindowAutoLocationは、依存プロパティではないため、ストーリーボードには対応(storyboard-able)しない。
プロパティは、インデックス付きのコレクション内のアイテムとすることができる。SetterTimeline上のPropertyPath(またはPath)属性は、オブジェクト内に「簡単に書き留める」ことができ、プロパティを添付した特別なケースは、丸かっこ内に挿入される。例えば「ブラシ」がBrushである場合、次のプロパティパスは、線形階調ブラシ(linear gradient brush)のストップの色上のアルファにアクセスする。
brush.Stops[1].Color.A
その一方で、次のパスは、エレメント上のドッキングしている添付プロパティ(docking attached property)にアクセスする。
button.(DockPanel.Dock)
上記のプロパティパスは、添付されているプロパティのシンタックス内にあるが、実際には添付されているプロパティではないという点に留意されたい。すなわちBackgroundPropertyはButton自体の上に定義され、共通言語ランタイムプロパティアクセッサはボタン上にあるが、これは、静的なSet/Getメソッドアクセッサ(static set/get method accessor)を有する従来の添付されているプロパティとは対照的である。コンパイル時には、TargetIDは特定のタイプに分解することができず、したがって「Background」プロパティがどのクラスに分解されるかが分からないため、これが必要となる。PropertyPathは、次のように定義される。
Figure 0004694355
複合プロパティパス、すなわち指定された複数のコンポーネントを有するパスについて、以降で説明する。
本発明の一態様によれば、タイミングツリーをエレメントツリーと統合することに加えて、ストーリーボードは、プロパティトリガおよびイベントトリガを使用して、それらのオペレーション(例えば開始、一時停止、検索、および停止のアクション)を制御することを可能にする。一般にプロパティトリガは、真や偽などの何らかの状態/値に対応し、その一方でイベントが始動する(したがって、偽の値を有さない)。例えばプロパティトリガは、マウスがエレメント上に存在していた場合は真の値を、エレメント上に存在していなかった場合は偽の値を有することができる。それぞれの真または偽の状態は、(1つまたは複数の)ストーリーボード内で別々に開始、停止、一時停止、および/または検索を行うために使用することができる。エレメントでのマウスのクリックなどのイベントは、始動し、したがって可変の状態を有さないが、同様にストーリーボードのオペレーションを制御することができる。このようにして、アニメーションは、ユーザと表示されたエレメントツリーの表示との対話を介して制御することができる。
Triggersは、FrameworkElement上のコレクションプロパティである。トリガは、SetActionおよびTimelineActionを含むアクションを指定することができる。SetActionは、プロパティの値を指定する。TimelineActionは、Storyboardsプロパティ内のタイムラインを操作する。
例えば次の例は、ボタンにマウスオーバー上の特別なバックグラウンドを与える。
Figure 0004694355
TriggerActionおよびSetActionは、次のように定義される。
Figure 0004694355
SetActionは、SetterTimelineのパターンに従うが、Timelineではないという点に留意されたい。
TimelineActionは抽象型クラスであり、動詞メソッド(verb method)のそれぞれ用のサブクラスをTimelineClock上に有する。
Figure 0004694355
TimelineActionのTargetIDは文字列であり、この文字列はその時点の範囲内で分解され、タイムラインへと分解される。
前述のように、プロパティトリガに加えてイベントトリガがあり、イベントトリガは、ホストエレメント上でそのイベントが始動したときにアクションを起こさせるイベントをそのソースとして受け取る。プロパティトリガとは異なり、イベントトリガは範囲が設定されておらず、オペレーションを実行し、そのオペレーションが自身のライフタイムを決定するという点に留意されたい。例えば1つのイベントは1つのタイムラインを開始することができ、そのタイムラインは、その存続期間が終了するまで、または別のイベントトリガなどによって停止されるまで、継続することができる。
次の例は、トリガについて一般的に説明している。
Figure 0004694355
次のコード例は、関連付けられているタイムラインと共にイベントトリガを使用して、「オン」ボタンおよび「オフ」ボタンによって操作される、タイムラインによって制御されるコンテンツを示している。
Figure 0004694355
Figure 0004694355
上記のコードは、独立したタイムラインではなく、シーケンシャルタイムラインを使用しているという点に留意されたい。シーケンシャルタイムラインは、その子タイムラインを順番にトリガさせる。例えば「bar」(図示せず)に対応するいずれかのストーリーボードは、「foo」の完了によってトリガされ、いずれのプログラムによって指定された時間データによってもトリガされない。
イベントトリガに加えて、プロパティ入力/終了トリガも、タイムラインをトリガする際に使用することができ、これについては、次の例に一般的に示されている。
Figure 0004694355
本発明の別の態様によれば、ストーリーボードおよびトリガは、スタイル付けすることができる(ただし、Storyboardsそのものは依存プロパティではないため、完全に依存プロパティと同様にはならない)。すなわち前述のように、Styleは作成者が、1つまたは複数のプロパティを表すデータをグループとしてまとめることを可能にし、次いでこれは、エレメントの対応するプロパティに1つのセットとして適用することができる。Style内のこれらのプロパティは、動画化するか、および/またはトリガに対応することができる。例えば次のStyleを適用すると、ページ上のボタンは、赤色と青色の間で順次切り替わるようにスタイル付けされる。
Figure 0004694355
理解できることだが、トリガ、タイムライン、ストーリーボード、マークアップ内でローカルに設定された値、およびその他を含む様々なメカニズムからエレメントプロパティの値を制御する機能によって、プロパティ値間の競合解消(conflict resolution)に対処して、何をプロパティ値とすべきかを決定する必要がある。例えばStoryboardsプロパティの一部として設定された値は、エレメント上にローカルに設定された値に優先する。したがって、特定のFrameworkElement上のプロパティ値の優先順位があり、これは、最も優先順位が高いものとしてTriggersプロパティから開始する。複数のトリガが同じプロパティを設定しようと試みる場合、「最後に書かれたものが優先する」(last writer-wins rule)ルールが適用され、例えばマークアップのケースでは、マークアップ内で最後に発生したトリガがその値を適用されるという点に留意されたい。
Storyboardsプロパティは、もしも複数のストーリーボードセッターが同じプロパティを設定しようと試みた場合、やはり「最後に書かれたものが優先する」解決策を用いて、次に高い優先順位を有する。最後に書かれたものは、タイムラインツリーのデプスファーストウォーク(depth-first walk)を使用して解釈される。
エレメント上にローカルに設定された値(例えば、FrameworkElement.SetValue)が次に来る。一般に、1つのスタイル内で同じ優先順位付けを有するStylesが次に続き、すなわちStyleが(同じレベルで競合が発生する場合は、やはり「最後に書かれたものが優先する」ルールを適用して)トリガされ、次いでStyle Storyboards、そしてStyleのターゲットタイプ値と続く。
複合プロパティパスの説明に移ると、セッターにとっては、ターゲット上のプロパティだけでなく、状況によってはターゲットのサブプロパティの1つを修正することも可能である。一般に複合プロパティは、まずエレメントにとってのプロパティ値が何であるかを確立し、次いでそのプロパティをアニメーション用に簡単に書き留めることによって処理される。例えば次のコードは、不透明度を動画化することによって、繰り返し徐々にフェードインおよびフェードアウトする赤色の長方形を例示している。
Figure 0004694355
一実装形態では、プロパティの第1のコンポーネントは、依存プロパティであることが必要とされる(例えば、上記の例で満たされているBackground)。またこの依存プロパティのタイプは、Changeableであることが必要とされる。これは、コピーを複製する必要があるためであり、これによって、複製されたコピーを修正することができる(別法としては、ディープクローニングソリューション、またはテンプレートとして保持することが含まれる)。これは、スタイルおよびStoryboards/Triggersが、やはり基本的に依存プロパティベースであるために機能するという点に留意されたい。Button.Backgroundに関連するいかなるものが変化しても、すべてのバックグラウンド値が再計算される。
したがって上記の例では、まずソリッドカラーブラシ(solid color brush)のコピーが作成され、長方形のインスタンス上に保存される。内部では、ローカルな値は、トリガが非アクティブ化した場合のために保存する必要があるため、実際には置換されない。次いでトリガが、あたかもスクリプトを再生するかのように、そのコピー上へと実行される。
したがってプロパティ無効化アルゴリズムは、2つのパスで発生する。すなわち、まさにあたかも複合プロパティパスがないかのようにプロパティの無効化をトリガする第1のパスと、複合プロパティパスを有する(すなわち、その中のドットを有する)トリガが基本の依存プロパティのみを無効化する第2のパスとで発生する。
動画化を行うために、プロパティ値計算アルゴリズムは、標準的な検索アルゴリズムを使用して基本プロパティ値を見つけ出し、その一方で、その上に複合プロパティパスを有するすべての値を無視する。次いでこのアルゴリズムは、複合プロパティパスを有する適用可能なトリガおよびセッターを見つけ出し、それらを上記の基本値に適用する。これによって、Changeableのコピーを作成することが必要となる場合があるが、これは、可能な場合は常に値を共有することによって最適化することができ、コピーは、必要な場合に作成されるだけである。
複合プロパティパスを使用すると、プロパティ再構築の全体にわたって一貫したクロックを維持することが必要となる。例えば次のマークアップコードは、線形階調ブラシのバックグラウンドをストーリーボードから得るボタンを示しており、第1のストップは、1つのプロパティトリガ(マウスがボタン上に存在する場合)によって修正され、第2のストップは、第2のトリガ(ボタンが押された場合)によって修正される。
Figure 0004694355
この例では、最初のうちは、ボタンのバックグラウンドは、赤からグリーンへの線形階調である。マウスがボタン上へ移動すると、ブラシは、ピンクからグリーンへの線形階調へ変化する。マウスボタンを押すと、色は、マウスボタンが戻るときまで、ピンクからライトグリーンへ線形に変化し、マウスボタンが戻った時点で、バックグラウンドは、ピンクからグリーンへの線形階調ブラシへ戻る。マウスがボタンから離れると、バックグラウンドは、赤からグリーンへの線形階調へ戻る。SetActionオブジェクト内に複合プロパティパスを有することが可能であるという点に留意されたい。
このシナリオを適合させることへの第1のステップは、スタイルが適用される際に(すなわちOnStyleInvalidatedの間に)スタイル付けされる親エレメント上にクロックを保存することである。これによって、プロパティが再構築される際に、同じクロックを再利用することができる。第2のステップは、プロパティパスのエラーを無視することである。すなわち最初のわずかな時間が過ぎて、タイムラインが非アクティブになると、ボタンはもはや線形階調ブラシを持たなくなる。この時点では、ストップを修正するトリガはもはや意味をなさなくなり、(データバインディングとの整合性から)暗黙のうちに無視される。
Storyboardsプロパティから、それぞれのTimelineツリーがTimelineClockツリーへとインスタンス化され、そのStoryboardsをホストする同じFrameworkElement内に保存される。それぞれのセッタークロックおよびアニメーションクロックごとに、ターゲットとされているエレメントも、そのクロックへの参照を与えられる。それぞれのセッタークロックごとに、ターゲットとされているエレメントは、そのクロック上のアクティブ/非アクティブなイベントをリッスン(listen)し、それらのイベントのそれぞれは、プロパティの無効化をトリガする。それぞれのアニメーションクロックごとに、そのクロックは、そのプロパティ用のターゲットエレメントのアニメーションクロックリストへと組み込まれる。
図7は、ストーリーボードがエレメント上に設定され処理される際のステップおよびデータ構造の更新の一例を提供する。一般に図7は、次の簡単なSetterTimelineの例のためのオブジェクトおよび参照を示している。
Figure 0004694355
はじめに1つまたは複数のTimelineインスタンスが、例えばDockPanel.Storyboards.Add( new SetterTimeline(...) )をコールすることによって、DockPanelのStoryboardsプロパティに追加される。
DockPanelのISupportInitialize.EndInitがコールされると、(例えば、図7のDockPanel702のSetterTimeline700に対応する)ストーリーボードが処理され、これによって、Storyboards内のタイムラインのそれぞれが、TimelineClock.CreateFromTimelineを介して(例えば、図7で704という番号を付けられている)クロックへとインスタンス化され、FrameworkElement(例えば、図7の長方形706)上に非公式(privately)に保存される。
それぞれのセッターのターゲットは、影響を受ける依存プロパティに関連付けられているクロックへの参照を与えられる。このターゲットはまた、(Begun and Ended)などのクロック境界イベント(clock boundary event)上にリスナ(listener)を設定する。セッターの下のすべてのアニメーションが、(FrameworkElement.GetAnimationClocksを介して)ターゲットのアニメーションリストに追加される。
スタイルが、FrameworkElement(それぞれのFrameworkElement)上に設定されると、クロックは、Style.Storyboardsコレクション内のTimeline階層からインスタンス化される。スタイル付けされた親をターゲットとするセッターのために、FrameworkElementは、(関連する依存プロパティに関連付けられている)クロックへの参照を保持し、スタイル付けされた親は、そのクロック用のBegun/Endedイベント上にリスナを設定する。Style.VisualTree内のエレメントをターゲットとするセッターのために、FrameworkElementがそのエレメントをインスタンス化すると、同様の参照/リスナが設定される。
タイムラインが処理される際には、単一プロパティパス(ただ1つのコンポーネント)を有するセッタータイムラインが、複合パスを有するセッタータイムラインとは別個に維持されるという点に留意されたい。これによって、前述のように、プロパティ値に関する2つのパスの検索が可能となる。
(結論)
上述の詳細な説明から分かるように、他の利点の中でもとりわけ、作成者が、アニメーション中に発生する様々なオペレーション(例えば、開始および停止の時期や、イベントに対する応答)を様々なタイムライン上において手動で同期させる必要性を解消するメカニズムがストーリーボードの形態で提供される。さらに、スタイリングシステム(styling system)を介してストーリーボードを利用できることは、それぞれのアニメーションまたはメディアエレメントに個々に適用しなければならないタイミング情報に対する必要性を解消する。
本発明は、様々な修正および代替構成を受け入れることができるが、その特定の例示的な実施形態について図示し、詳細に前述した。しかし開示された特定の形態に本発明を限定する意図はなく、むしろ本発明の趣旨および範囲内に収まるすべての修正、代替構成、および均等物を含むことを意図していることが理解できるはずである。
本発明を組み込むことができる典型的なコンピュータシステムを示すブロック図である。 本発明の一態様によるメディア統合レイヤアーキテクチャを示すブロック図である。 本発明の一態様による、ビジュアルAPIレイヤとのインターフェースをとるためにマークアップ言語コードを解読するためのコンポーネントを示す図である。 本発明の一態様による、クロックプロパティデータを、進展データを測定する際に使用するためのインターバルに変換するためのタイミングコンポーネントを有する2つのレベルのアーキテクチャを全般的に示すブロック図である。 本発明の一態様による、クロックプロパティデータを、進展データを測定する際に使用するためのインターバルに変換するためのタイミングコンポーネントを有する2つのレベルのアーキテクチャを全般的に示すブロック図である。 本発明の一態様による、タイムラインをエレメントツリーのエレメントに関連付けるためにコード内でストーリーボードをどのように構成できるかを示す図である。 本発明の一態様による、ストーリーボードのタイムラインを表すためにインスタンス化されたクロックを含むデータ構造間の関係を示す図である。
符号の説明
200 メディア統合レイヤ
202 アプリケーション/制御/UIコンポーネント
204 メディアAPI
206 高いレベルの合成およびアニメーションエンジン
208 タイミングおよびアニメーション
210 低いレベルの合成およびアニメーションエンジン
212 グラフィックスサブシステム(ソフトウェアおよびハードウェア)
220 印刷レベル
222 プリンタ
226 ターミナルサーバトランスポートレベル
228 1つまたは複数のリモートマシン
302 マークアップ
304 パーサ/トランスレータ
308 タイプコンバータ
310 他のプログラミング言語
312 リソースレベルデータ
314 エレメントツリー/プロパティシステム
316 ビジュアルAPI
402 タイミングツリー
4041 クロック1のプロパティ
4042 クロック2のプロパティ
4043 クロック3のプロパティ
4061 イベントリスト1
4062 イベントリスト2
4063 イベントリスト3
408 イベントリストジェネレータ(状態マシン)
410 インターバルジェネレータ
4121 インターバルリスト1
4122 インターバルリスト2
4123 インターバルリスト3
414 低いレベルの計算エンジン
520H アニメーション関数サブシステム
520L アニメーション関数サブシステム
524 クロック

Claims (13)

  1. コンピューティングシステムのユーザに対して表示するグラフィカル情報又は他のオーディオビジュアル情報を処理するコンピューティングシステムにおいて、時間をかけて個別に各アニメーションの変化を定義するのではなく、異なるアニメーションプロパティの各種タイミングを協調させるシングルタイムラインを用いて、アニメ化される1つ又は複数のオブジェクトの異なるアニメーションプロパティの各種タイミングを協調することによって、より直接的な手法で互いが同期化されたアニメーションの作成を可能にする方法であって、
    前記方法は、
    高レベルコンポジションとアニメーションエンジンが、アプリケーションプログラム又は他の高レベルプログラムによって提供されるグラフィックシーンを表す階層的エレメントツリーを生成するステップであって、前記ツリーの各ノードは、前記グラフィックシーンにおいてアニメ化されるオブジェクトのための1つ又は複数のアニメーションコンポーネントを表すステップと、
    前記高レベルコンポジションとアニメーションエンジンが、前記グラフィックシーンにおいてアニメ化される前記1つ又は複数のオブジェクトの前記異なるアニメーションプロパティのための前記協調されたタイミングと同期化を表す階層的クロックツリーを生成するステップであって、前記階層的クロックツリーの各ノードは、オブジェクトの特定のアニメーションプロパティのタイミングを表し、前記階層的クロックツリーの各レベルは互いに同期状態であるステップと、
    前記高レベルコンポジションとアニメーションエンジンが、エレメントツリーのリンクされたアニメーションコンポーネントのタイミングを表す前記クロックツリーの前記ノードの少なくとも一部を有する前記グラフィックシーンにおいてアニメ化されるオブジェクトのアニメーションコンポーネントを表す前記エレメントツリーの前記少なくとも一部をリンクすることによって前記エレメントとクロックツリーを統合し、次に、異なるアニメーションコンポーネントの異なるプロパティに対する前記タイミングが、前記クロックツリーの前記異なるレベルとノードで提供される前記タイミングによって制御され同期化され、さらに、前記クロックツリーにおける最上位レベルで提供される前記タイミングによって最終的に同期化されるように各種アニメーションコンポーネントに影響を与える他の独立タイムラインの協調を提供するステップと、
    前記高レベルコンポジションとアニメーションエンジンが、イベントリストジェネレータの形式で状態マシンを用い、一旦、前記クロックツリーが前記エレメントツリーと統合されると、前記クロックツリーからイベントリストを生成するステップであって、前記イベントリストは、独立した各アニメーション又は各アニメーションセットに相当するイベントリストが存在するように前記リンクされたアニメーションコンポジションと前記2つのツリーのタイミングクロックによって最初にスケジューリングされたイベントをグループ化するステップと、
    前記高レベルコンポジションとアニメーションエンジンが、インターバルジェネレータを用いて、インターバルリストにコンパイルされる対応インターバルで前記イベントリストの各アニメーション又は各アニメーションセットを準備するステップと、
    低レベルコンポジションとアニメーションエンジンが、前記インターバルリストを受信し、前記インターバルリストを低レベル計算エンジンに入力し、当該低レベル計算エンジンが、グラフィックサブシステムが前記アニメ化されるシーンをレンダリングし表示するのに用いる出力を生成するステップと
    を含むことを特徴とする方法。
  2. 前記エレメントツリーの前記リンクされたアニメーションコンポーネントのタイミングを表す前記クロックツリーの前記ノードの少なくとも一部を有するオブジェクトのアニメーションコンポーネントを表す前記エレメントツリーの前記ノードの少なくとも一部をリンクすることによって前記エレメントとクロックツリーを統合する前記ステップは、拡張アプリケーションマークアップ言語を用いて実行されることを特徴とする請求項1に記載の方法。
  3. 前記クロックツリーの前記ノードの少なくとも一部は、エレメントに関連付けられたスタイルからのタイミングデータを表すことを特徴とする請求項1に記載の方法。
  4. 一旦、前記クロックツリーが前記エレメントツリーと統合されると、前記クロックツリーからイベントリストを生成する前記ステップは、全体のストリードボードタイムライン情報を維持するクロックオブジェクトのインスタンスを作成するステップをさらに含むことを特徴とする請求項1に記載の方法。
  5. 全体のストーリーボードタイムラインを維持する前記クロックオブジェクトのインスタンスを作成する前記ステップは、トリガーに応答して前記ストーリーボードタイムラインを開始することによって実行されることを特徴とする請求項4に記載の方法。
  6. 前記トリガーは、プロパティ・トリガーに相当し、前記ストーリーボードタイムラインを開始することは、前記プロパティ・トリガーの状態を評価することをさらに含むことを特徴とする請求項5に記載の方法。
  7. 前記トリガーは、イベント・トリガーに相当し、前記ストーリーボードタイムラインを開始することは、前記イベント・トリガーによって起こされるイベントを検知することをさらに含むことを特徴とする請求項5に記載の方法。
  8. 前記トリガーは、エンター/エグジット・トリガーに相当し、前記ストーリーボードタイムラインを開始することは、エンターイベントのプロパティ・トリガーの状態を評価することをさらに含むことを特徴とする請求項5に記載の方法。
  9. 前記階層的エレメントツリーのコンプレックス・プロパティ・パスにおけるターゲットエレメントのサブプロパティを変更するステップをさらに含むことを特徴とする請求項1に記載の方法。
  10. 前記サブプロパティを変更するステップは、前記ターゲットエレメントのプロパティ値を確立し、前記サブプロパティ値を変更するステップをさらに含むことを特徴とする請求項9に記載の方法。
  11. 前記ターゲットエレメントの前記プロパティ値を確立するステップは、競合解消順序付けに基づいて前記プロパティ値を検索するステップをさらに含むことを特徴とする請求項10に記載の方法。
  12. 前記サブプロパティ値を変更するステップは、前記サブプロパティ値を変更する基礎値を決定するステップをさらに含むことを特徴とする請求項9記載の方法。
  13. コンピューティングシステムのユーザに対して表示するグラフィカル情報又は他のオーディオビジュアル情報を処理するコンピューティングシステムにおいて、時間をかけて個別に各アニメーションの変化を定義するのではなく、異なるアニメーションプロパティの各種タイミングを協調させるシングルタイムラインを用いて、アニメ化される1つ又は複数のオブジェクトの異なるアニメーションプロパティの各種タイミングを協調することによって、より直接的な手法で互いが同期化されたアニメーションの作成を可能にする方法を前記コンピューティングシステムに実行させるコンピュータ実行可能命令を記録するコンピュータ読み取り可能な記録媒体であって、
    前記方法は、
    高レベルコンポジションとアニメーションエンジンが、アプリケーションプログラム又は他の高レベルプログラムによって提供されるグラフィックシーンを表す階層的エレメントツリーを生成するステップであって、前記ツリーの各ノードは、前記グラフィックシーンにおいてアニメ化されるオブジェクトのための1つ又は複数のアニメーションコンポーネントを表すステップと、
    前記高レベルコンポジションとアニメーションエンジンが、前記グラフィックシーンにおいてアニメ化される前記1つ又は複数のオブジェクトの前記異なるアニメーションプロパティのための前記協調されたタイミングと同期化を表す階層的クロックツリーを生成するステップであって、前記階層的クロックツリーの各ノードは、オブジェクトの特定のアニメーションプロパティのタイミングを表し、前記階層的クロックツリーの各レベルは互いに同期状態であるステップと、
    前記高レベルコンポジションとアニメーションエンジンが、エレメントツリーのリンクされたアニメーションコンポーネントのタイミングを表す前記クロックツリーの前記ノードの少なくとも一部を有する前記グラフィックシーンにおいてアニメ化されるオブジェクトのアニメーションコンポーネントを表す前記エレメントツリーの前記少なくとも一部をリンクすることによって前記エレメントとクロックツリーを統合し、次に、異なるアニメーションコンポーネントの異なるプロパティに対する前記タイミングが、前記クロックツリーの前記異なるレベルとノードで提供される前記タイミングによって制御され同期化され、さらに、前記クロックツリーにおける最上位レベルで提供される前記タイミングによって最終的に同期化されるように各種アニメーションコンポーネントに影響を与える他の独立タイムラインの協調を提供するステップと、
    前記高レベルコンポジションとアニメーションエンジンが、イベントリストジェネレータの形式で状態マシンを用い、一旦、前記クロックツリーが前記エレメントツリーと統合されると、前記クロックツリーからイベントリストを生成するステップであって、前記イベントリストは、独立した各アニメーション又は各アニメーションセットに相当するイベントリストが存在するように前記リンクされたアニメーションコンポジションと前記2つのツリーのタイミングクロックによって最初にスケジューリングされたイベントをグループ化するステップと、
    前記高レベルコンポジションとアニメーションエンジンが、インターバルジェネレータを用いて、インターバルリストにコンパイルされる対応インターバルで前記イベントリストの各アニメーション又は各アニメーションセットを準備するステップと、
    低レベルコンポジションとアニメーションエンジンが、前記インターバルリストを受信し、前記インターバルリストを低レベル計算エンジンに入力し、当該低レベル計算エンジンが、グラフィックサブシステムが前記アニメ化されるシーンをレンダリングし表示するのに用いる出力を生成するステップと
    を含むことを特徴とするコンピュータ読み取り可能な記録媒体。
JP2005334113A 2004-11-18 2005-11-18 コンピュータディスプレイ出力におけるアニメーションおよびメディアの調整 Expired - Fee Related JP4694355B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/992,462 US7336280B2 (en) 2004-11-18 2004-11-18 Coordinating animations and media in computer display output
US10/992,462 2004-11-18

Publications (3)

Publication Number Publication Date
JP2006146924A JP2006146924A (ja) 2006-06-08
JP2006146924A5 JP2006146924A5 (ja) 2009-01-08
JP4694355B2 true JP4694355B2 (ja) 2011-06-08

Family

ID=35976593

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005334113A Expired - Fee Related JP4694355B2 (ja) 2004-11-18 2005-11-18 コンピュータディスプレイ出力におけるアニメーションおよびメディアの調整

Country Status (13)

Country Link
US (1) US7336280B2 (ja)
EP (1) EP1659504A3 (ja)
JP (1) JP4694355B2 (ja)
KR (1) KR101143095B1 (ja)
CN (1) CN1776672B (ja)
AU (1) AU2005229639A1 (ja)
BR (1) BRPI0505092A (ja)
CA (1) CA2523730A1 (ja)
MX (1) MXPA05011864A (ja)
MY (1) MY147448A (ja)
RU (1) RU2391709C2 (ja)
TW (1) TW200627281A (ja)
ZA (1) ZA200508346B (ja)

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7561159B2 (en) * 2005-05-31 2009-07-14 Magnifi Group Inc. Control of animation timeline
US20070009088A1 (en) * 2005-07-06 2007-01-11 Edic Peter M System and method for imaging using distributed X-ray sources
WO2007007017A1 (en) 2005-07-08 2007-01-18 Corizon Limited Method and apparatus for user interface modification
US8972423B2 (en) * 2006-09-26 2015-03-03 Siemens Product Lifecycle Management Software Inc. Opaque mechanism for web service interoperability
US7782324B2 (en) 2005-11-23 2010-08-24 Dreamworks Animation Llc Non-hierarchical unchained kinematic rigging technique and system for animation
US20070200872A1 (en) * 2006-02-21 2007-08-30 Brauhaus Software Generating an image sequence
US20080084416A1 (en) * 2006-10-06 2008-04-10 Microsoft Corporation User-pluggable rendering engine
US8234392B2 (en) 2006-11-17 2012-07-31 Apple Inc. Methods and apparatuses for providing a hardware accelerated web engine
US7872652B2 (en) 2007-01-07 2011-01-18 Apple Inc. Application programming interfaces for synchronization
US7903115B2 (en) * 2007-01-07 2011-03-08 Apple Inc. Animations
US8813100B1 (en) 2007-01-07 2014-08-19 Apple Inc. Memory management
US8074227B2 (en) * 2007-02-08 2011-12-06 Microsoft Corporation Utilizing a first managed process to host at least a second managed process
US20080250424A1 (en) * 2007-04-04 2008-10-09 Ms1 - Microsoft Corporation Seamless Window Implementation for Windows Presentation Foundation based Applications
CN100530088C (zh) * 2007-06-26 2009-08-19 腾讯科技(深圳)有限公司 一种应用程序的触发方法及装置
KR101445074B1 (ko) * 2007-10-24 2014-09-29 삼성전자주식회사 미디어 플레이어에서 미디어 객체 처리 방법 및 그 장치
TWI366143B (en) * 2007-11-28 2012-06-11 Inst Information Industry System, method and recording medium for generating response motions of a virtual character dynamically in real time
US20090315897A1 (en) * 2008-06-24 2009-12-24 Microsoft Corporation Animation platform
US20090315896A1 (en) * 2008-06-24 2009-12-24 Microsoft Corporation Animation platform
US20090322760A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Dynamic animation scheduling
US8836706B2 (en) * 2008-12-18 2014-09-16 Microsoft Corporation Triggering animation actions and media object actions
US20110090236A1 (en) * 2009-10-15 2011-04-21 Microsoft Corporation Graphic Object Data Binding
US8866822B2 (en) * 2010-09-07 2014-10-21 Microsoft Corporation Alternate source for controlling an animation
US8922564B2 (en) * 2010-12-01 2014-12-30 Microsoft Corporation Controlling runtime execution from a host to conserve resources
US9152395B2 (en) 2010-12-13 2015-10-06 Microsoft Technology Licensing, Llc Response to user input based on declarative mappings
US10169901B2 (en) 2010-12-17 2019-01-01 Microsoft Technology Licensing, Llc Staggered animation scheduling
US8640047B2 (en) 2011-06-01 2014-01-28 Micorsoft Corporation Asynchronous handling of a user interface manipulation
US8907957B2 (en) 2011-08-30 2014-12-09 Apple Inc. Automatic animation generation
US20130063446A1 (en) * 2011-09-10 2013-03-14 Microsoft Corporation Scenario Based Animation Library
US8819567B2 (en) 2011-09-13 2014-08-26 Apple Inc. Defining and editing user interface behaviors
US9164576B2 (en) 2011-09-13 2015-10-20 Apple Inc. Conformance protocol for heterogeneous abstractions for defining user interface behaviors
US9223395B2 (en) * 2011-09-14 2015-12-29 Microsoft Technology Licensing, Llc Viewing presentations in a condensed animation mode
US20140300611A1 (en) * 2013-03-15 2014-10-09 Trigger Happy, Ltd. Web and native code environment modular player and modular rendering system
CN104090709B (zh) * 2014-06-11 2017-11-21 小米科技有限责任公司 图片切换方法和装置
CN118192869A (zh) 2014-06-27 2024-06-14 苹果公司 尺寸减小的用户界面
EP3195098B1 (en) 2014-07-21 2024-10-23 Apple Inc. Remote user interface
EP3195096B1 (en) 2014-08-02 2020-08-12 Apple Inc. Context-specific user interfaces
US10452253B2 (en) 2014-08-15 2019-10-22 Apple Inc. Weather user interface
US10146409B2 (en) 2014-08-29 2018-12-04 Microsoft Technology Licensing, Llc Computerized dynamic splitting of interaction across multiple content
CN115623117A (zh) 2014-09-02 2023-01-17 苹果公司 电话用户界面
US10613743B2 (en) 2014-09-02 2020-04-07 Apple Inc. User interface for receiving user input
US10254948B2 (en) 2014-09-02 2019-04-09 Apple Inc. Reduced-size user interfaces for dynamically updated application overviews
US10055121B2 (en) 2015-03-07 2018-08-21 Apple Inc. Activity based thresholds and feedbacks
WO2016144385A1 (en) 2015-03-08 2016-09-15 Apple Inc. Sharing user-configurable graphical constructs
US9916075B2 (en) 2015-06-05 2018-03-13 Apple Inc. Formatting content for a reduced-size user interface
EP4327731A3 (en) 2015-08-20 2024-05-15 Apple Inc. Exercise-based watch face
DK201770423A1 (en) 2016-06-11 2018-01-15 Apple Inc Activity and workout updates
CN106887030B (zh) 2016-06-17 2020-03-06 阿里巴巴集团控股有限公司 一种动画生成方法和装置
DK179412B1 (en) 2017-05-12 2018-06-06 Apple Inc Context-Specific User Interfaces
US11327650B2 (en) 2018-05-07 2022-05-10 Apple Inc. User interfaces having a collection of complications
US10631047B1 (en) * 2019-03-29 2020-04-21 Pond5 Inc. Online video editor
US11131967B2 (en) 2019-05-06 2021-09-28 Apple Inc. Clock faces for an electronic device
JP6921338B2 (ja) 2019-05-06 2021-08-18 アップル インコーポレイテッドApple Inc. 電子デバイスの制限された動作
US11960701B2 (en) 2019-05-06 2024-04-16 Apple Inc. Using an illustration to show the passing of time
DK180684B1 (en) 2019-09-09 2021-11-25 Apple Inc Techniques for managing display usage
CN115904596B (zh) 2020-05-11 2024-02-02 苹果公司 用于管理用户界面共享的用户界面
US11372659B2 (en) 2020-05-11 2022-06-28 Apple Inc. User interfaces for managing user interface sharing
DK181103B1 (en) 2020-05-11 2022-12-15 Apple Inc User interfaces related to time
US11694590B2 (en) 2020-12-21 2023-07-04 Apple Inc. Dynamic user interface with time indicator
US11720239B2 (en) 2021-01-07 2023-08-08 Apple Inc. Techniques for user interfaces related to an event
US11921992B2 (en) 2021-05-14 2024-03-05 Apple Inc. User interfaces related to time
CN113791821B (zh) * 2021-09-18 2023-11-17 广州博冠信息科技有限公司 基于虚幻引擎的动画处理方法、装置、介质与电子设备
US20230236547A1 (en) 2022-01-24 2023-07-27 Apple Inc. User interfaces for indicating time

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002044594A (ja) * 2000-07-21 2002-02-08 Nippon Telegraph & Telephone West Corp コンテンツ編集装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5104482A (en) * 1989-02-21 1992-04-14 Lam Research Corporation Simultaneous glass deposition and viscoelastic flow process
US5659792A (en) * 1993-01-15 1997-08-19 Canon Information Systems Research Australia Pty Ltd. Storyboard system for the simultaneous timing of multiple independent video animation clips
JPH07249683A (ja) * 1993-10-12 1995-09-26 Texas Instr Inc <Ti> 低温リフロー用非均一複合ドープ膜およびその形成方法
JP2001022879A (ja) * 1999-03-31 2001-01-26 Canon Inc 情報処理方法及び装置及びコンピュータ可読媒体
US20040220926A1 (en) * 2000-01-03 2004-11-04 Interactual Technologies, Inc., A California Cpr[P Personalization services for entities from multiple sources
US20020008704A1 (en) * 2000-07-21 2002-01-24 Sheasby Michael C. Interactive behavioral authoring of deterministic animation
CN1647070A (zh) * 2001-06-22 2005-07-27 诺萨·欧莫贵 用于知识检索、管理、交付和表示的系统和方法
US20040001106A1 (en) * 2002-06-26 2004-01-01 John Deutscher System and process for creating an interactive presentation employing multi-media components
US20040205515A1 (en) * 2003-04-10 2004-10-14 Simple Twists, Ltd. Multi-media story editing tool

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2002044594A (ja) * 2000-07-21 2002-02-08 Nippon Telegraph & Telephone West Corp コンテンツ編集装置

Also Published As

Publication number Publication date
JP2006146924A (ja) 2006-06-08
EP1659504A2 (en) 2006-05-24
BRPI0505092A (pt) 2006-07-04
CA2523730A1 (en) 2006-05-18
AU2005229639A1 (en) 2006-06-01
US20060103655A1 (en) 2006-05-18
US7336280B2 (en) 2008-02-26
RU2005135845A (ru) 2007-05-27
CN1776672B (zh) 2010-06-09
EP1659504A3 (en) 2009-03-04
MXPA05011864A (es) 2006-05-25
MY147448A (en) 2012-12-14
KR101143095B1 (ko) 2012-05-08
RU2391709C2 (ru) 2010-06-10
ZA200508346B (en) 2007-06-27
TW200627281A (en) 2006-08-01
KR20060055321A (ko) 2006-05-23
CN1776672A (zh) 2006-05-24

Similar Documents

Publication Publication Date Title
JP4694355B2 (ja) コンピュータディスプレイ出力におけるアニメーションおよびメディアの調整
JP4937256B2 (ja) アニメーション間の滑らかな遷移
US7262775B2 (en) System supporting animation of graphical display elements through animation object instances
US8446415B2 (en) Framework for graphics animation and compositing operations
JP3341893B2 (ja) 並行フレームワーク・システム
US20080303827A1 (en) Methods and Systems for Animating Displayed Representations of Data Items
JPH08508596A (ja) ランタイム・ローダ
JPH08509824A (ja) 共同作業システム
JPH08510344A (ja) マルチメディア同期システム
JPH08508355A (ja) 並行フレームワーク・システム
US20080303826A1 (en) Methods and Systems for Animating Displayed Representations of Data Items
US7743387B2 (en) Inheritance context for graphics primitives

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081118

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20081118

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

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: 20110125

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: 20110223

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

Free format text: PAYMENT UNTIL: 20140304

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4694355

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

LAPS Cancellation because of no payment of annual fees