JP4937256B2 - アニメーション間の滑らかな遷移 - Google Patents

アニメーション間の滑らかな遷移 Download PDF

Info

Publication number
JP4937256B2
JP4937256B2 JP2008521509A JP2008521509A JP4937256B2 JP 4937256 B2 JP4937256 B2 JP 4937256B2 JP 2008521509 A JP2008521509 A JP 2008521509A JP 2008521509 A JP2008521509 A JP 2008521509A JP 4937256 B2 JP4937256 B2 JP 4937256B2
Authority
JP
Japan
Prior art keywords
animation
value
property
user interface
interface element
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
JP2008521509A
Other languages
English (en)
Other versions
JP2009501388A (ja
JP2009501388A5 (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 JP2009501388A publication Critical patent/JP2009501388A/ja
Publication of JP2009501388A5 publication Critical patent/JP2009501388A5/ja
Application granted granted Critical
Publication of JP4937256B2 publication Critical patent/JP4937256B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Processing Or Creating Images (AREA)
  • User Interface Of Digital Computer (AREA)

Description

幾つかのインタラクティブなシステムにおいては、ユーザインタラクションに応答して、「アニメーティング(animating)」することで応じるビジュアルエレメントが実現される。例えば、ユーザインタフェース(UI)内に表示されるボタンは、ユーザがカーソルをそのボタン上に置いたとき、拡大、縮小あるいは回転などするように実現することができる。幾つかの状況においては、単一のビジュアルエレメント上で複数のアニメーションを遂行することが望ましい。幾つかのシステムにおいては、ビジュアルエレメントのディスプレイは、ビジュアルエレメントの現在実行しているアニメーションがもう1つのアニメーションへと遷移するとき、「グリッチ(glitch)」するように見えることがあり、これは幾つかのシナリオにおいては望ましくない。この発明の背景情報はここで請求される主題事項にて解決されるべき課題を特定することを意図するものではない。
この要約は、以下の詳細な説明のセクションにおいて詳しく説明される概念の抜粋(selection of concepts)の紹介を簡潔な形式にて提供することを意図する。この要約はここで請求される主題事項の最重要の特徴あるいは必須の特徴を特定することを意図するものでも、ここで請求される主題事項の範囲を決定するための助けとして用いられることを意図するものでもない。
様々な開示される実施例の形態によると、リッチなメディア(例えば、UIのビジュアルエレメントのアニメーション)間の滑らかな遷移を可能にするための実現が提供される。1つの形態においては、それに対してもう1つのアニメーションが既に実行されているビジュアルエレメントのプロパティに関してアニメーションが開始されるとき、この「第2の」アニメーションは、「第1の」アニメーションの実行からの結果としてのプロパティの現在値(すなわち、スナップショット)を格納し、第1のアニメーションを解除し、その後、第2のアニメーションを、このスナップショットを、そのプロパティの「フロム(from)」値として用いて実行するように構成される。このハンドオフ挙動は、「スナップショットと置換」挙動と呼ばれる。第2のアニメーションは、第1のアニメーションが終端したポイントとちょうど同一のポイントから「開始」するために、第1と第2のアニメーションの間の遷移は滑らかになる。
もう1つの形態においては、アニメーションがトリガされたプロパティに対してアニメーション記憶オブジェクトが生成される。このアニメーション記憶オブジェクトは、そのアニメーションにてターゲットとされるプロパティの1つあるいは複数の基準値を格納し、加えて、最初のアニメーションがまだ実行している間にもう1つのアニメーションがトリガされたとき、そのプロパティの任意のスナップショットを格納する。
さらにもう1つの形態においては、複数の層のアニメーションが1つのプロパティに適用され、層間の遷移は合成ハンドオフ挙動を有する。幾つかの実現においては、1つの層内の複数のアニメーション間の遷移は、合成あるいは「スナップショットと置換」挙動を有する。他の実施例においては、複数の層間のアニメーション間の遷移は、合成あるいは「スナップショットと置換」挙動を有する。
実施例は、コンピュータプロセスとしても、(移動携帯コンピューティングデバイスを含む)コンピュータシステムとしても、あるいは製品、例えば、コンピュータプログラム製品としても実現することができる。コンピュータプログラム製品は、コンピュータシステムによって読み出し可能な、コンピュータプロセスを実行するためのインストラクションのコンピュータプログラムを符号化するコンピュータ格納媒体であっても良い。コンピュータプログラム製品は更にコンピューティングシステムにて読み出し可能な搬送波に載せて伝搬される、コンピュータプロセスを実行するためのインストラクションのコンピュータプログラムを符号化する信号であっても良い。
以下では制限することも全てを網羅することも意図しない実施例が図面を参照しながら説明されるが、これらの様々な図を通じて、特に断りがない限り、類似する参照番号は類似するパーツを指す。
以下では様々な実施例が、この文書の一部を形成し、本発明を実施するための特定の典型的な実施例を示す添付の図面との関連でより詳細に説明される。しかし、実施例は多くの異なる形態にて実現することができ、ここに示される実施例に制限されるものと解されるべきではなく、むしろこれら実施例はこの開示が詳細かつ完全なものとなり、本発明の範囲を当業者に完全に伝えることができるように提供されているものである。実施例は、方法、システムあるいはデバイスとして実施することができる。従って、実施例はハードウェア実現の形態を取ることも、完全なソフトウェア実現の形態を取ることも、あるいはソフトウェアとハードウェアの態様が結合された実現の形態を取ることもできる。以下の詳細な説明は、従って、制限的な意味に取られるべきではない。
様々な実施例の論理動作は(1)コンピューティングシステム上でランするコンピュータにて実現されるステップのシーケンスとして、および/または(2)コンピューティングシステム内の相互接続されたマシーンモジュールとして実現される。実現はその実施例を実現するコンピューティングシステムの性能要件によって決まる選択の問題である。従って、ここで説明される実施例を構成する論理動作は、動作、ステップ、あるいはモジュールとも呼ばれる。
例示的オペレーティング環境
図1はアニメーション間の滑らかな遷移が実現される適当なコンピューティングシステム環境100の一例を示す。コンピューティングシステム環境100は、適当なコンピューティング環境の単に一例であり、本発明の用途あるいは機能の範囲の限界を示唆することを意図するものではない。更に、このコンピューティング環境100は、この例示的オペレーティング環境100内に示されるコンポーネントの任意の1つあるいは組合せにどのように依存することもなく、あるいはこれらと関連するいかなる要件も有するものではないと解されるべきである。
本発明は無数の他の汎用あるいは専用のコンピューティングシステム環境あるいは構成と共に使用できる。本発明と共に使用するのに適する周知のコンピューティングシステム、環境、および/または構成の例には、これらに限られるものではないが、パーソナルコンピュータ、サーバコンピュータ、携帯用あるいはラップトップデバイス、タブレットデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家庭用電化製品、ネットワークPC、ミニコンピュータ、メインフレームコンピュータ、上述の任意のシステムあるいはデバイスを含む分散コンピューティング環境その他が含まれる。
本発明は、コンピュータにて実行される、例えばプログラムモジュールの、コンピュータにて実行可能なインストラクションの全体的な文脈で説明することができる。一般に、プログラムモジュールは、ルーチーン、プログラム、オブジェクト、コンポーネント、データ構造その他を含み、これらは特定のタスクを遂行し、あるいは特定の抽象データタイプを実現する。本発明は、分散コンピューティング環境内において実施することもでき、この場合には、タスクは通信ネットワークを通じてリンクされた遠隔処理デバイスにて遂行される。分散コンピューティング環境においては、プログラムモジュールは、メモリ記憶装置を含む近くのコンピュータ記憶媒体内に置くことも遠隔の記憶媒体内に置くこともできる。
図1を参照し、本発明を実現するための例示的システムは汎用コンピューティングデバイスをコンピュータ110の形態にて含む。コンピュータ110のコンポーネントには、これに限られるものではないが、処理ユニット120、システムメモリ130、およびシステムメモリを含む様々なシステムコンポーネントを処理ユニット120に結合するシステムバス121を含む。システムバス121は、メモリバスもしくはメモリコントローラ、周辺バス、および多様なバスアーキテクチャのいずれかを使用するローカルバスを含む複数のタイプのバス構造のいずれであっても良い。一例として、これに限られるものではないが、このようなアーキテクチャには、Industry Standard Architecture(ISA)バス、Micro Channel Architecture(MCA)バス、Enhanced ISA(EISA)バス、Video Electronics Standards Association(VESA)ローカルバス、Accelerated Graphics Port(AGP)バス、およびMezzanineバスとしても知られているPeripheral Component Interconnect(PCI)バスが含まれる。
コンピュータ110は典型的には様々なコンピュータにて読み出し可能な様々な媒体を含む。コンピュータにて読み出し可能な媒体はコンピュータ110にてアクセスすることができる任意の適当な媒体であり得、これには、揮発性および不揮発性媒体の両方と、取り外し可能および取り外し不能な媒体の両方が含まれる。一例として、これに限られるものではないが、コンピュータにて読み出し可能な媒体はコンピュータ記憶媒体および通信メディアを含む。コンピュータ記憶媒体には、情報、例えば、コンピュータにて読み出し可能なインストラクション、データ構造、プログラムモジュール、あるいは他のデータを格納するための任意の方法あるいは技術にて実現される、揮発性および不揮発性媒体の両方と、取り外し可能および取り外し不能な媒体の両方が含まれる。コンピュータ記憶媒体には、これに限られるものではないが、RAM、ROM、EEPROM、フラッシュメモリあるいは他のメモリ技術、CD−ROM、デジタルバーサタイルディスク(DVD)あるいは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクメモリもしくは他の磁気記憶装置、あるいは所望の情報を格納するために用いることができ、そしてコンピュータ110にてアクセスすることができる任意の他の媒体が含まれる。通信メディアは、典型的には、コンピュータにて読み出し可能なインストラクション、データ構造、プログラムモジュール、あるいは例えば搬送波などの変調されたデータ信号、あるいは他の伝送メカニズム内の他のデータを具現し、そして任意の情報伝送メディアを含む。「変調されたデータ信号(modulated data signal)」なる用語は、その1つあるいは複数の特性が、情報がその信号内に符号化されるように設定あるいは変化された信号を意味する。一例として、これに限られるものではないが、通信メディアには、有線メディア、例えば、有線ネットワークあるいは直接配線接続と、無線メディア、例えば、音響、RF、赤外および他の無線メディアが含まれる。上述の任意の組合せもコンピュータにて読み出し可能な媒体の範囲内に含まれるものと解されるべきである。
システムメモリ130は、コンピュータ記憶媒体を、揮発性および/または不揮発性メモリ、例えば、読み出し専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132の形態にて含む。コンピュータ110内の要素間で、例えば始動時において、情報を伝送することを助ける基本ルーチーンを含む基本入/出力システム133(BIOS)は、典型的にはROM131内に格納される。RAM132は、典型的には処理ユニット120によって直ちにアクセスすることができる、および/または現在操作されている、データおよび/またはプログラムモジュールを含む。一例として、これに限られるものではないが、図1は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を含む。
コンピュータ110は、更に、他の取り外し可能/取り外し不能な、揮発性/不揮発性コンピュータ記憶媒体を含む。単に一例として、図1は、取り外し不能、不揮発性磁気媒体から読み出すあるいはこれに書き込むハードディスクドライブ141、取り外し可能、不揮発性磁気ディスク152から読み出すあるいはこれに書き込む磁気ディスクドライブ151、および取り外し可能、不揮発性光ディスク156、例えば、CD ROMあるいは他の光学媒体から読み出すあるいはこれに書き込む光ディスクドライブ155を示す。この例示的オペレーティング環境内において用いることができる他の取り外し可能/取り外し不能な、揮発性/不揮発性コンピュータ記憶媒体には、これに限られるものではないが、磁気テープカセット、フラッシュメモリカード、デジタルバーサタイルディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROM、その他が含まれる。ハードディスクドライブ141は典型的にはシステムバス121に例えばインタフェース140のような取り外し不能なメモリインタフェースを通じて接続され、磁気ディスクドライブ151および光ディスクドライブ155は典型的にはシステムバス121に取り外し可能なメモリインタフェース、例えばインタフェース150にて接続される。
上で説明され、図1に示されるドライブおよびこれらの関連するコンピュータ記憶媒体は、コンピュータ110に対するコンピュータにて読み出し可能なインストラクション、データ構造、プログラムモジュールおよび他のデータが格納できるようにする。図1においては、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146およびプログラムデータ147を格納するものとして示されている。これらコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と、同一であっても、異なるものであっても良いことに注意する。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147には、ここでは、少なくとも、これらは異なるコピーであることを示すために異なる番号が与えられている。ユーザは、コマンドおよび情報をコンピュータ110内に、入力デバイス、例えば、タブレット(電子デジタイザ)164、マイクロホン163、キーボード162、および一般に、マウス、トラックボールあるいはタッチパッドと呼ばれるポインティングデバイス161を通じて入力する。他の入力デバイス(図示ぜず)には、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、その他が含まれる。これらおよび他の入力デバイスは、しばしば、処理システム120に、システムバスに結合されたユーザ入力インタフェース160を通じて接続されるが、しかし、これらは、他のインタフェースおよびバス構造、例えば、パラレルポート、ゲームポートあるいはユニバーサルシリアルバス(USB)を用いて接続されても良い。モニタ191あるいは他のタイプの表示装置もシステムバス121にインタフェース、例えば、ビデオインタフェース190を介して接続される。モニタ191は、更に、デジタル化された入力、例えば、ハンドライティングをコンピュータシステム110内に、例えばタッチスクリーンインタフェース192などのインタフェースを介して手書きにて書き込むことができるタッチスクリーンパネル193、その他と一体化させることもできる。モニタおよび/またはタッチスクリーンパネルは、コンピューティングデバイス110を収容するハウジングに、例えばタブレットタイプのパーソナルコンピュータの場合のように物理的に結合することもでき、この場合は、タッチトーンスクリーンパネル193は、本質的には、タブレット164として機能することに注意する。加えて、コンピュータ、例えば、コンピューティングデバイス110は、他の周辺出力デバイス、例えば、スピーカ195およびプリンタ196を含むこともでき、これらは出力周辺インタフェース194、その他を通じて接続される。
コンピュータ110は、例えば遠隔コンピュータ180のような、1つあるいは複数の遠隔コンピュータへの論理的接続を使用するネットワーク化された環境内で動作することもできる。遠隔コンピュータ180は、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピアデバイスあるいは他の一般的なネットワークノードであっても良く、図1にはメモリ記憶装置181のみしか示されていないが、典型的には、コンピュータ110との関連で上述された多くのあるいは全ての要素を含む。図1に示される論理的接続はローカルエリアネットワーク(LAN)171およびワイドエリアネットワーク(WAN)173を含むが、更に他のネットワークを含んでも良い。このようなネットワーキング環境は、オフィス、企業レベルのコンピュータネットワーク、イントラネットおよびインターネットにおいては一般的である。
LANネットワーキング環境内で使用されるときは、コンピュータ110はLAN171にネットワークインタフェース、すなわちアダプタ170を通じて接続される。WANネットワーキング環境内で使用されるときは、コンピュータ110は、典型的には、例えばインターネットなどのWAN173を通じて通信を設定するためのモデム172あるいは他の手段を含む。モデム172は、これは内部であっても、外部であっても良いが、ユーザインタフェース160あるいは他の適当なメカニズムを介してシステムバス121に接続される。ネットワーク化された環境においては、コンピュータ110との関連で示されるプログラムモジュールあるいはこの一部は、遠隔メモリ記憶装置内に格納されても良い。一例として、これに限られるものではないが、図1においては遠隔アプリケーションプログラム185が記憶装置181上に常駐するように示される。ここに示されるネットワーク接続は例示であり、これらコンピュータ間に通信リンクを確立するための他の手段を用いることもできる。
例示的アーキテクチャ
1つの態様は一般にコンピュータシステム上に滑らかな、複雑なアニメーションおよび/またはメディアを提供することに向けられる。これを達成するために、図2に一般的に示されるように、メディア統合アーキテクチャ200が提供される。アプリケーションプログラム、制御あるいは他の類似する上位プログラムコード(例えば、オペレーティングシステムコンポーネントのユーザインタフェース)202は、このメディア統合層アーキテクチャ200に、セットのアプリケーションプログラミングインタフェース(API)204、その他を介してアクセスすることで、グラフィカル情報にアクセスする(これを書き込むあるいは読み出す)。ここで説明される多くの例はこれらAPIとインタフェースするアプリケーションプログラムについて言及するが、他の上位プログラムコードおよびコンポーネント(例えば、オペレーティングシステムのユーザインタフェース)も、ここで説明される下位コンポーネントとインタフェースする能力を有することに注意する。このため、このような上位プログラムコードについての言及は、アプリケーションプログラムと呼ばれようが、ユーザインタフェースその他と呼ばれようが同等とみなされるべきである。
1つの実現においては、メディア統合アーキテクチャ200は、上位合成/アニメーションエンジン206、タイミング/アニメーションコンポーネント208、および下位合成/アニメーションエンジン210を含む。ここで用いられる「上位(high−level)」および「下位(low−level)」なる用語は、他のコンピューティングシナリオにおいて用いられるそれらと類似し、一般に、あるソフトウェアコンポーネントは、より上位のコンポーネントに対して、より下位であるほど、そのコンポーネントはハードウェアに近くなる。こうして、例えば、上位合成/アニメーションエンジン206から送られたグラフィック情報は、下位合成/アニメーションエンジン210の所で受信され、ここでこの情報は、グラフィックデータをこのハードウェアを含むグラフィックサブシステムに送るために用いられる。
一般に、上位合成/アニメーションエンジン(ここでは上位コンポジッタ/アニメータあるいは上位エンジンもしくはコンポーネントとも呼ばれる)206は、アプリケーションプログラム202によって提供されたグラフィックシーンを表現するディスプレイエレメントツリーを構築し、他方、タイミング/アニメーションコンポーネントは、宣言的(あるいは他の)アニメーション/タイミング制御を提供する。下位合成/アニメーションエンジン(ここでは下位コンポジッタ/アニメータあるいは下位エンジンもしくはコンポーネントとも呼ばれる)210は、複数のアプリケーションのシーンに対するレンダリングを構成し、レンダリングコンポーネントを用いて、スクリーンへのグラフィックの実際のレンダリングを実現する。更に、時間の掛かるあるいはアプリケーションに特定なレンダリングを上位にて遂行し、下位層にビットマップ等への参照をパスすることもできることに注意する。
上位合成/アニメーション206は、エレメントツリー構造を構築し、この構造を渡り歩くことで、レンダリングインストラクションおよび単純なアニメーションインターバルを生成し、下位合成/アニメーションエンジン210にパスする。上位コンポジッタにて生成されたレンダリングインストラクションは、タイミングおよびアニメーション情報を含む。下位合成/アニメーションエンジン210は、レンダリングインストラクションおよびアニメーションインターバルを受け取り、シーンのアニメーティング、レンダリング、および合成を管理し、これらは、次に、グラフィックサブシステム(例えば、グラフィックソフトウェア/ハードウェア)212に提供される。出力をローカル的に表示する代わりに、あるいはこれに加えて、上位合成/アニメーションエンジン206(あるいはこれに類似するエンジン)は、これらレンダリングおよびアニメーションインストラクションを下位プリンティングコード220に、静止画像データをプリンタ222等に送るために適当なフォーマットにて提供することも、あるいはレンダリングインストラクションおよび単純なアニメーションインターバルを、下位端末伝送サーバ226に、遠隔マシーン228に伝送するのに適当なフォーマットにて提供することもできる。よりリッチな情報を、ネットワークを通じて送ることもできることに注意する。例えば、遠隔マシーンがマウスロール効果をローカル的に、ネットワークトラフィック無しに扱うようにすることが望ましいこともある。
この実現においては、メディア統合アーキテクチャ200は、こうして、グラフィック処理を複数のレベルに分離し、これらレベルの各々が幾らかのインテリジェントなグラフィック処理を遂行し、これらが一体となることで、アプリケーションのユーザインタフェース等202は、グラフィックを滑らかなアニメーションにて出力すること、グラフィックを他のアプリケーションのグラフィックと合成すること、およびビデオフレームと連動することが可能となる。このアニメーションおよび/または合成はオーディオ出力と同期させることもできる。例えば、オーディオを下位コンポーネントにおいてフレームレートと同期させることで、オーディオのタイミングをビデオあるいはグラフィックのタイミングと本質的にぴったりと合わせることができ、リフレッシュ速度に追いつくためのタスクスケジュールされた複雑な前処理の能力には依存しないようにすることができる。
図3は、マークアップコード302、例えば、XAMLベースのコードがパーサ/トランスレータ304によってインタプリットされる1つの実現を表す。一般に、パーサ/トランスレータ304は、エレメントをエレメントツリー/プロパティシステム314に加えるが、これらエレメントは自身のレイアウトを遂行するビジュアルオブジェクトである。更に、これらマークアップコードの幾つかあるいは全ては、オンデマンドにてインタプリットされるのではなく、コンパイルし、こうすることで効率を向上させることもできることに注意する。
一般に、エレメントは、プロパティシステム、トリガリングおよびレイアウト/プレゼンテーションシステム内に参加するエレメント層内のオブジェクトである。パーサ304は、タグを見つけ、これらタグがエレメントを定義することを助けているのか、あるいはリソースオブジェクトを定義する助けをするか否かを判断する。例えば、VisualBrushなる特別なケースにおいては、合衆国特許出願第10/401,717号において説明されているように、同一のタグが、それらタグが現れる背景に依存して、例えば、複合プロパティシンタックス内に現れるのか、そうではないかに依存して、エレメントとインタプリットされることも、リソースオブジェクトとしてインタプリットされることもある。
マークアップ内にインラインとして存在することに加えて、リソースインスタンスはどこにでも存在し(例えば、マークアップ内にもファイル内にも存在し、これらはローカルに存在することも、あるいは遠隔ネットワーク上に存在し、必要に応じてダウンロードすることもでき)、ある名前(例えば、テクスト名、リファレンスあるいは他の適当な識別子)にて参照される。このようにして、シーンデザイナは、エレメントツリー内のエレメントを、複合プロパティシンタックスにて記述されるエレメントも含めて、あるシーン内のあらゆる所に再使用することができる。以下に説明されるように、リソースはストーリーボードを含み、ストーリーボードを再使用することが可能になる。
パーサ304は、複合プロパティシンタックス内のマークアップを扱う際には、必要に応じてタイプコンバータ308にアクセスし、そして更に指定されたパラメータをオブジェクトプロパティと比較し、こうすることで、シーンデザイナの複雑な作業を手助けする。こうして、パーサ304は単にオブジェクトを設定するのみでなく、オブジェクトに関するプロパティも設定する。同一のレンダリングモデルがエレメントのレベルとAPIのレベルの両方の間で共有されるために、これらオブジェクトの多くは、本質的に同一となる。これにより、パーシング/トランスレーションが極めて効率的となり、更に、このために、異なるタイプのプログラミング言語(例えば、C#−などの言語)でも、簡単に、マークアップから自身のシンタックスにあるいはこの逆に変換できるようになる。図3に示されるように、もう1つのこのようなプログラミング言語310(これはコンパイルされたマークアップを含んでも良い)も、エレメントをエレメントツリー314に加えたり、あるいは、直接にビジュアルAPI層316とインタフェースしたりすることができる。
更に、図3に示されるように、同一のマークアップ302をエレメントレベルとリソースレベルにおいてプログラムするために用いることができる。一般に、エレメントレベルでは、シーンデザイナは、完全なプログラム能力を有し、インヘリタンス(例えば、スタイルシートなどのフィーチャ)を提供するプロパティシステムを使用することもでき、トリガリングも可能である(このために、例えば、あるエレメントにユーザの入力エベントあるいは動作に応答してその外見、位置、その他を変化させるためのコードを付着させることもできる)。しかし、さまざまな実施例においては、更に、リソースレベルのメカニズムも提供され、これによると、シーンデザイナは、本質的にエレメントツリーを飛び越え、直接に、ビジュアルAPI層にプログラムすることができる。エレメントレベルのフィーチャは必要とされない多くのタイプの静止した形状、画像、その他に対しては、この方法は、適当なオブジェクトを出力するためのより効率が良く、負荷の少ない方法として有効である。
図4および5を参照しながら後に説明されるように、アニメーションおよびメディア出力を制御するために、クロックから構成されるタイミングツリーも維持される。一般に、上位コンポジッタ/アニメータエンジン206は、処理の量を大幅に簡素化させる複雑な処理(しばしばコンパイリングとも呼ばれる)を遂行し、これによって、より低いレベルにおいて、正しい出力をレンダリングするために扱わなければならないデータの量も大幅に低減される。しかし、上位にて遂行される処理の量およびタイプは、負荷、構成、および下位の能力に大きく依存することに注意する。例えば、もし、下位に高能力のグラフィックハードウェアが存在するときは、上位はそれほど多くの処理を遂行しなくても良く、この逆のことも言える。上位および下位層はこれらの要因に適合させることができる。
一般に、アニメーションは、上位コンポジッタ/アニメーションエンジン206および下位コンポジッタ/アニメーションエンジン210の両方によって達成される。1つの実現においては、上位エンジン206はシーンを渡り歩き、アニメーションパラメータを後に補間のためのインターバルにて更新し、これら簡素化されたデータ構造をインストラクションにパッケージ化し、これが下位エンジン210にパスされる。これは、同期的におよび/または非同期的に遂行される。インターバルデータは、タイミングエンドポイント(開始および終了タイミングデータ)、並びにレンダリングインストラクションに対するパラメータ化された値を含むものとみなすことができる。上位エンジン204は、リクエストされた補間の幾らかを遂行することも、あるいは全を遂行することもできることに注意する。例えば、もし、補間あるいは他のモーションの関数が、下位エンジン210が扱うには複雑すぎる場合、あるいは、下位が課せられた需要を処理しきれないときは、上位エンジンは、それら計算の幾らか、あるいは全てを遂行し、下位に、所望の結果を達成するために、こうして簡素化されたデータ、インストラクション、テセレーションその他を提供することもできる。
下位がアニメーションの各フレームに対して補間を遂行する典型的なケースにおいては、下位エンジン210は、パラメータインターバルを補間することで、瞬間値を得、それらインストラクションを、グラフィックデバイスにて実行されるレンダリングコマンドに復号する。グラフィックデバイスは、シーン内に存在するとみられる任意のビデオフレームを追加することで最終シーンを構成する。他のデータ、例えば、デジタル権利管理(digital right management、DRM)にて保護されたコンテンツを加えることもできる。
上位エンジン206は、こうしてシーンデータ構造を渡り歩き、一定期間に対して各アニメートされるパラメータを記述するインターバルを計算し、これらインターバルおよび簡素化され、かつ、パラメータ化された描画インストラクションを下位エンジン210にパスする。これらパラメータデータは、開始時間、終了時間、補間器および補間データが含まれる。一例として、ある画像をそれが移動して見えるように消去および再描画する代わりに、上位コンポジッタ/アニメーションエンジン206は、下位コンポジッタ/アニメーションエンジン210に対して、その画像が時間を通じてどのように変化すべきかについて指示することができる。例えば、開始座標、終了座標、画像がこれら座標間を移動すべき時間の量(インターバル)、モーションの関数、例えば線形などについて指示することができる。(モーションは、アニメーションに対しては、例えば、色プロパティを変化させることで、固定のオブジェクトをアニメートさせることができるために必須ではないことに注意する)。下位コンポジッタ/アニメーションエンジン210は、補間によりフレーム間の新たな位置を決定し、これらをグラフィックデバイスが理解できる描画インストラクションに変換し、これらコマンドをグラフィックデバイスにパスする。上位エンジン206の各パスは、好ましくは、下位エンジン210が数フレームに渡って滑らからアニメーションを遂行するために十分なデータを提供するようにされる。
下位(例えば、高速ティック)エンジン210は、上位エンジン206とは別個のタスクである。下位エンジン210は上位エンジン206からシーンを記述する簡素化され、かつ、パラメータ化された描画インストラクションおよびパラメータインターバルを受信する。下位エンジンは、これらデータ構造を、上位エンジン206によって新たな1つが提供されるまで、維持し、渡り歩く。下位エンジンは複数の上位エンジン206を扱い、各々に対して別個のデータ構造を維持することもできる。下位エンジン210と上位エンジン206との関係を一対複数の関係にすることで、システムが複数のシーンを同時に滑らかにアニメートすることが可能になる。
下位エンジン210は、上位エンジンによって提供されたインターバルに基づいて、本質的に瞬間的なアニメーションパラメータを補間し、描画インストラクションを更新し、各フレームに対してシーンをレンダリングする。下位エンジン210のタスクは、このシステム上で高い優先にて実行し、こうすることで、フレームを、例えばグラフィックハードウェアのスクリーンリフレッシュ速度にて供給することが確保される。下位エンジン210にて遂行される補間は、こうして、典型的には、単純な高速な関数、例えば、線形、区分線形、三次スプライン、および類似する速度の関数に制限される。
図4および5に概略的に示されているアニメーションおよびメディアとの関連で、プログラム、例えば、アプリケーションプログラム202は、アニメーションプロパティ値を、ここではクロックあるいはクロックプロパティと呼ばれるタイミング情報と共に上位コンポーネント206に対して指定する。後に説明されるように、任意の独立のアニメーションあるいはメディア(例えば、ビデオおよびオーディオなどの線形メディア)、並びに指定されたアニメーションを調和させるストーリーボードは、上位コンポーネントの所に、これに対して維持されるクロックを有する。一般に、オーサはタイムラインデータを指定し、これは、必要に応じて、これらの同期を保つためのクロックにインスタンス化される。幾つかの実施例においては、ストーリーボードは、タイムラインのグループあるいはツリーから構成されたタイムラインである。ストーリーボードは、そのタイムラインのツリーが複数のエレメント上の複数のプロパティをターゲットとすることができるように、ターゲット情報を提供することができる。加えて、アニメーションは、幾つかの実施例においてはタイムラインのタイプである。
クロックプロパティは、ある与えられたクロックとそのタイミング構造の残りの部分との間の初期同期関係を定義するタイミングプロパティを含む。図5に示されるように、上位コンポーネント206は、あるアニメーションのあるプロパティの現在の値を決定するために上位アニメーション関数520Hを呼び出す(これは、例えば、マネッジドコードにて書かれており、これは、情報を、その上でランする共通言語のランタイムがその動作を制御することを可能にするメタデータの形態にて提供するコードである)。高フレームレートでの計算の際には、下位コンポーネント210も類似する(あるいは同一の)アニメーション関数520Lを呼び出し、その進行がエンジン414によって計算され、これによって、あるアニメーションの現在のプロパティ値が決定される。代替の実現として、これらアニメーション関数を、例えば、下位コンポーネント内に組み込むこともできることに注意する。
一般に、アニメーションおよび線形メディアは、セットのクロックと関連し、これらは同期プリミティブおよび規則にて互いに関連付けられる。これらクロックは、階層的に配列することができる。例えば、アプリケーションプログラムは1つの親クロックを有し、アプリケーションプログラムのアニメートされたオブジェクトは子達であり、これらも、今度は、他の子達を持つことができる。あるクロックのプロパティが定義あるいは修正されると、そのクロックの全ての子達が影響を受ける。例えば、ある親クロックを休止させると、その子クロックの全てが休止し、ある親クロックの速度を二倍にすると、その子クロックの全ての速度が二倍となる。
これらクロックプロパティは、実行時にアプリケーションにて開始されるインタラクティブな制御エベントから構成されるソースイベントにて修正することができる。こうして、これらクロックは、各クロックは、例えば、ユーザ入力に応答して、任意の時間に、アプリケーションにて、個別に、開始、休止、再開および停止することができるという点においてインタラクティブである。加えて、新たなクロックをタイミング構造に加え、現存するクロックを除去することもできる。
上述の合衆国特許出願第10/693,822号において説明されているように、上位タイミングコンポーネントは、各クロックに対するインターバルリストを、イベント(開始、休止その他)の格納されているリストおよび関連する同期プリミティブに基づいて生成することができる。これらアクティベーションインターバルは、実世界での時間における異なるポイントにおいてある与えられたクロックにて表現される時間を記述する単純で重複のないセグメントである。
図4に示されるように、クロックプロパティの少なくとも幾つかは、クロックのタイミングツリー402内で階層的に関連する。図4には、自身のプロパティを有する3つのこのようなクロック、すなわち、クロックプロパティ4041−4043が示されているが、しかし、ある所定の情況においてより多くのクロックおよび異なるタイミングツリーが存在し得るうることに注意する。例えば、表示されるべきアニメートされるオブジェクト(あるいはセットのストーリーボードにて調整されるオブジェクト)に対応する各クロックに対して、上位コンポーネント206は、イベントリスト発生器408と呼ばれ状態マシーンを含み、これはクロックプロパティからイベントリスト(例えば、4061)を生成する。一般に、イベントリスト発生器408は、指定されたクロックプロパティにて当初スケジュールされていたイベントを、任意の明示的なインタラクティブイベント、例えば、そのアニメーションとの関連で受信される休止および再開リクエストと共に、1つのイベントリストにグループ化する。クロックが各アニメーション(あるいは後に説明されるようにストーリーボードを介してグループのアニメーション)に対して維持され、こうして、各独立したアニメーション/アニメーションセットに対応する1つのイベントリストが存在し、加えて、各独立した線形メディアに対して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(あるいは他のソース)から受信されるインタラクティブな変更に応答して、上位タイミングコンポーネントは、その変更と直接に関係するクロック、並びに間接的に関係する任意のクロックの状態を、同期プリミティブにて指定される通りに更新することを必要とされる。単一のクロックに対する変更がそのタイミング構造内の他のクロックに影響を及ぼす可能性があることに注意する。例えば、スライドショウのプレゼンタは、全ディスプレイを休止させることができるが、このときは、現在表示されている全てのアニメーションおよび線形メディアが休止させる必要がある。以下で説明されるように、1つの実施例によると、ストーリーボードは、アニメーションおよび/またはメディアを一緒にグループ化し、こうしてこれらが所望の振る舞いを示すように調和させることを可能にする。
一般に、あるオブジェクトとの関連でこのインタラクションが発生する度に、イベントリストが必要に応じて再生成され、インターバルリストが再計算され、そして下位タイミングコンポーネントに送られる。上位コンポーネントはこれら動作を(例えば、1秒当たりおよそ6〜10回の頻度にて)遂行し、そして、こうすることで、下位コンポーネントは(例えば、1秒当たり60回動作する)、各アニメートされたオブジェクトに対して、現在のインターバルリストのみを扱うことで済むようにされる。
あるオブジェクトに対するこのインターバル情報および開始および終了値に加えて、追加のパラメータが上位コンポーネントに送られ、この結果として、インターバルリストにも変更が及ぶこともある。例えば、アプリケーションは、時間におけるある期間をシークすることもできるが、これは1つのイベントに対応する。アプリケーションは、そのシークがいつ、どれくらい発生すべきかを指定する。メディアの巻き戻しあるいは早送りと同様に、アニメーションにシークを用いることで、アプリケーションは、こうして、時間における特定のポイントに向かって前方あるいは後方にジャンプすることができる。リバースイベントは、アプリケーションが指定することができるもう1つのタイプのスケジュールされたあるいはインタラクティブなイベントである。リバースイベントがリスト内に存在すると、進行は自動的に、例えば、100%から0%へと逆転される。速度の変更もサポートされ、例えば、あるクロック以下の全ては、実時間より高速にあるいは低速にて実行するように設定することができる。他の属性を指定することもできる。例えば、特定のクロックに対して、再開が許されるか否か、および/または現在実行していないときは、再び開始すべきか否かを指定することもできる。更に、例えば、1秒の所で開始し、10秒の所で再び始まり、100秒の所で再び始まることを、しかし、オプションとして、現在実行しているとき、再開するあるいは再開しないことも含めて、指定することもできる。
アニメーションおよびメディアを調和させるためのストーリーボード
実施例は、とりわけストーリーボード(Storyboard)に向けられるが、これは、エレメント(例えば、ウインドウ、パネル、ボタンその他のコントロールなどのFrameworkElement(フレームワークエレメント))に対してタイムラインツリーを指定することを可能にするオブジェクトを含む。タイムラインは、エレメントのプロパティ値を設定し、そのエレメントおよびそのサブツリーに対するアニメーションを制御する。ストーリーボードは、基本的には、開始され、停止され、あるいは休止され、あるいはシークのために用いられる特定のタイプのタイムラインオブジェクトに対応し、こうして、そのストーリーボードと関連するアニメートされるエレメントの外見、および/またはメディアの挙動を制御する。ストーリーボードは、マークおよびコードの両方から利用できる。
幾つかの実施例においては、常時トリガモデルがアニメーションおよびストーリーボードに対して使用される。加えて、このモデルは、アニメーションおよびストーリーボードを(前の実装におけるストーリーボードプロパティとは対照的に)トリガとの直接的関係に置き、こうすることで、(図6−9との関連で後に説明される)ハンドオフ挙動を可能にする。ハンドオフ挙動は本質的にトリガード概念である。後に説明されるように、無指定フロム値(unspecified「from」value)が、新たなアニメーションがトリガされた時点におけるプロパティに関して存在するアニメーションの現在の値およびその新たなアニメーションのハンドオフ挙動に基づいて定義される。これは、アニメーションのフロム「from」値は(無指定のときは)アニメーションがトリガされたときにのみ定義されることを意味する。
このプロパティはアニメーションがトリガされたときのみ定義されるので、このモデルはアニメーションをトリガと関連付ける。このモデルにおいては、アニメーションはトリガ内のインラインであるか、あるいはリソース内に定義され、トリガされるまで使用されない。
幾つかの実施例においては、ストーリーボードは、あるエレメントと関連付けられ、独立して開始される最上位のタイムラインの集まりを含む。ストーリーボードは、タイミングツリーとエレメントツリーとの間の接続ポイントも提供し、これにより、ストーリーボード内のアニメーションは、そのストーリーボードが付着されているエレメントとの関連でそれらのターゲットを解決することが可能になる。マークアップから、ストーリーボードは、トリガの集まりとして宣言することもでき、これは状態の変化、イベントあるいは他のアクションにて起動され、トリガが起動されたとき実行されるべきセットの拡張可能なアクション(例えば、タイムラインが開始あるいは停止)を含む。ストーリーボードは、エレメントのリソースプロパティ、スタイル(Style)あるいはテンプレート(Template)内に宣言することもできる。
一般に、あるストーリーボード内のタイムラインは、様々なサブツリー、エレメント、および他のオブジェクト(例えば、テクストレター、ワード、ライン、パラグラフその他)に適用することができるアニメーションテンプレートを表す。1つの実施例によると、ストーリーボード(例えば、APIを介してアクセスされたオブジェクト)は、プログラムのオーサが、セットの調和されたアニメーションを、タイムライン内で、アニメーションをグループ化することで、(エレメントプロパティに対して)スケジュールすることを可能にする。換言すれば、ストーリーボードは、タイミングツリーをエレメントツリーと一体化し、こうすることで、異なるアニメーションの異なるプロパティに対するタイミングを、同一のタイムラインを介して調和されたやり方にて操作する能力を提供する。ストーリーボードは、こうして、様々なオブジェクトおよびプロパティに影響を及ぼす、さもなければ独立したタイムラインを単一のタイムラインツリーに結合するためのやり方を提供し、こうして、プログラムのオーサが複雑なセットのタイミングイベントを単純なやり方にて編成および制御することを可能にする。例えば、個々のアニメーションを見つけ、再開することは必要とされず、タイムライン下でアニメーションをストーリーボードの一部としてグループ化することで、全てのアニメーションを、単にそのストーリーボードを再開させることで一度に再開させることが可能になる。
ストーリーボードは、アニメーション/ビデオ/オーディオの特定のインスタンスに関して、あるいは特定のスタイルのアニメーションに用いることができる。幾つかのシナリオにおいては、リソースとして宣言された単一のストーリーボードが、複数のエレメントに対して、これらエレメント上の別個のトリガを介して適用することができる。BiginStoryboard(ストーリーボード開始)は、マークアップあるいはコードからのプロパティに関してアニメーション(あるいは他のメディア)を開始させる。マークアップから、BiginStoryboardは、FrameworkElement.BeginStoryboard(フレームワークエレメント.ストーリーボード開始)を採用し、そのストーリーボードプロパティに割り当てられたタイムラインのツリーを渡り歩く。FrameworkElement.BeginStoryboardは、次に、そのストーリーボードのタイムラインのツリーの葉上に生存している任意のアニメーションに関してFrameworkElement.BeginAnimation(フレームワークエレメント.アニメーション開始)を呼び出す。マークアップにおいては、BeginStoryboardは、イベントおよびプロパティの両方のトリガ内で使用することができる。
マークアップから、オーサは、BeginStoryboardを使用して、ストーリーボードを開始することができる。BeginStoryboard.Storyboad(ストーリーボード開始.ストーリーボード)は、その付着されているプロパティが複数のエレメントに関する複数のプロパティをターゲットとする能力を有するストーリーボードを含む。ストーリーボードは、アニメーションおよびメディアタイムライン(MediaTimelines)を含む全てのタイプのタイムラインを含むことができる。
以下の例は、インラインストーリーボードについて例示する。コンテナオブジェクト(ボタン)がアニメートされる。この例においては、Storyboard.TargetName(ストーリーボード.ターゲット名)が供給されるが、しかし、幾つかの実施例においては、これは、このアニメーションはコンテナをターゲットとするために、必要とされない。BeginStoryboard.Storyboadのタグは自動的に供給され、このためこれらは必要とされない。
この実施例においては、全てのアニメーションは、Storyboard.TargetNameが指定されていないときは、コンテナオブジェクトをターゲットとする。更に、これらアニメーションは、ソースが指定されていないときは、これらコンテナを、トリガリングイベントのソースとして使用する。これら2つの想定は、コンテナターゲット/コンテナトリガシナリオにおいては、マークアップを簡素化することを可能にする(TargetNameあるいはSourceを有する必要がなくなる)。
<Window>
<Button Width="2" Name="myButton">
<Button.Triggers>
<EventTrigger Event="Loaded">
<EventTrigger.Actions>
<BeginStoryboard >
<Storyboard>
<DoubleAnimation To="4" Duration="0:0: 1"
Storyboard.TargetProperty="Width" Storyboard.TargetName="myButton"/>
//TargetNameは、このケースにおいては、デフォルトターゲットがコンテナであるために、必要とされない。
</Storyboard>
</BeginStoryboard >
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
</Window>
以下の例は、リソースとして定義されるストーリーボードについて示す。アニメーションはリソースセクション内に定義されるために、これは他のFramework Elementsのアニメーション内でも再使用することができる。
<Window>
<Button Width="2">
<Button.Resources>
<DoubleAnimation To="4" Duration- '0:0: 1" x:Key="myAnimation" />
</Button. Resources>
<Button.Triggers>
<EventTrigger Event="Loaded">
<EventTrigger.Actions>
<BeginStoryboard Storyboard ="{StaticResource myAnimation}"
TargetProperty="Width"/>
</EventTrigger.Actions>
</EventTrigger>
</Button.Triggers>
</Button>
</Window>
上の例において示されるように、タイミングツリーをエレメントツリーと一体化させることに加えて、ストーリーボードは、イベントトリガを、それらの動作(例えば、開始、休止、シーク、停止アクション)を制御するために用いることを可能にする。加えて、ストーリーボードは、プロパティトリガと共に用いることもできる。一般に、プロパティトリガは、真あるいは偽などのある状態/値と対応し、一方、イベントは発火する(従って偽なる値は有さない)。例えば、プロパティトリガは、マウスがあるエレメントの上をホバリングしているときは真なる値を有し、その上をホバリングしてないときは偽なる値を有する。各々の真あるいは偽なる状態は、1つ(あるいは複数の)ストーリーボード内において、別個に、開始、停止、休止、および/またはシークするために用いることができる。イベント、例えば、エレメント上でのマウスのクリックは、発火し、従って、可変な状態は有さないが、しかし、同様にして、ストーリーボードの動作を制御することはできる。こうして、アニメーションは、表示されたエレメントツリーの表現とのユーザインタラクションを介して制御可能である。
イベントトリガは、そのソースとしてイベントを取るが、このイベントは、このイベントがそのホストエレメントの上で発火したときアクションを起こさせる。プロパティトリガとは異なり、イベントトリガはスコープされないことに注意する。すなわち、イベントトリガは、単にある動作を遂行し、その後、この動作が自身のライフタイムを決定する。例えば、ある1つのイベントがあるタイムラインを開始させたとき、このライフタイムはその持続期間が完了するまで、あるいは別のイベントトリガその他によってそれが停止されるまで実行する。
図6は、1つの実施例に従う、リッチなメディア間の滑らかな遷移を提供することができるシステム600を示す。この実施例においては、システム600は、上述のアプリケーション202、タイミングシステム208、グラフィックサブシステム212、およびプロパティシステム314に加えて、ハンドオフシステム604を含むアニメーションシステム602を含む。様々な実施例に従う、このような遷移において用いられるこれらコンポーネントの機能の幾つかが以下に説明される。
プロパティシステム314は、上述のように、アプリケーション202によってインスタンス化された様々なビジュアルオブジェクト(図示せず)のプロパティに対する値を格納する。例えば、プロパティシステム314は、他のオブジェクトプロパティの中でもとりわけ、UI内に表示されるべきボタンを表すオブジェクトの長さおよび幅プロパティに対する基準値を格納する。
タイミングシステム208は、上述のように、アプリケーション202によって生成されたアニメーションのタイミングを調節する。例えば、タイミングシステム208は、アニメートされているプロパティの現在の値の計算において用いられるタイムライン情報を提供する。1つの実施例においては、タイミングシステム208は、インタラクティフなエレメント(図示せず)からイベントおよびプロパティ変更情報を受信し、アニメーションの生成において用いられるトリガ(例えば、イベントトリガ、プロパティトリガ)を生成する。例えば、インタラクティブな要素は、マウスおよび/またはキーボードの動作をモニタリングし、情報をタイミングシステム208に提供し、タイミングシステム208に対して、タイムラインを開始し、トリガをアニメーションシステム602に提供するようにさせる。
グラフィックサブシステム212は、上述のように、アニメーションを表示装置上にレンダリングするために必要とされるデータを生成する。
アニメーションシステム602は、この実施例においては、ビジュアルなアニメートされた効果を生成するプロパティ値を変更する動作を遂行する。1つの実施例においては、アニメーションシステムは、複数のコンポーネント、例えば、上位および下位合成/アニメーションエンジン206、208、並びにハンドオフシステム604を含む。更に、アニメーションシステム602は、アプリケーション202から、アニメートされているプロパティに対する指定された「フロム(from)」および「ツウ(to)」値、並びにそれらアニメーションを遂行するための指定された時間期間を受信する。幾つかのアニメーションにおいては、アプリケーションによって指定されないときは、アニメートされるプロパティに対するデフォルト時の「フロム」および「ツウ」値が用いられる。
ハンドオフシステム604は、この実施例においては、あるアニメーションをあるプロパティに関して、もう1つのアニメーションがまだそのプロパティに関して遂行されている間に遂行したいときに使用される。幾つかの実施例においては、ハンドオフシステム604は、幾つかの異なるハンドオフ、例えば、以下の表1に掲載されているようなハンドオフを遂行する。「古い(old)」アニメーションなる用語は、ある特定のプロパティに対して、アプリケーション202がそれと同一のプロパティに対してもう1つのアニメーションを開始したとき、実行しているアニメーションを指す。幾つかのシナリオにおいては、古いアニメーションは、2つあるいはそれ以上の他のアニメーションの「合成(composition)」(すなわち、表1に定義されるような合成)である。幾つかの実施例においては、アニメーションシステム602は、1つあるいは複数の所定のシナリオに対して、デフォルト時のハンドオフ挙動を提供するように実現される。この実施例においては、表1は、アニメーションにおいて設定することができるハンドオフ挙動のプロパティの様々な値を示す。ハンドオフ挙動のプロパティは、基本的には、そのアニメーションの「フロム(from)」値の値としてなにを用いるか、および古いアニメーションとの関係でなにをすべきかについて記述する。
Figure 0004937256
ボタンの例をもう一度使用すると、アプリケーションは、ボタンが、マウスのカーソルがそのボタンの上に移動したとき、特定の時間期間をかけて特定のサイズに拡大し、その後、マウスのカーソルがボタンから離れると、ある特定の時間期間をかけて元のサイズに縮小するように書かれる。このシナリオにおいては、ユーザは、この場合、カーソルを、ボタンの上に素早く移動させ、その後、カーソルをボタンから、この特定の時間期間が完全に経過する前に離すことがある。こうして、「拡大(grow)」アニメーションは「マウスオーバ(MouseOver)」と同時に開始され、「縮小(shrink)」アニメーションは、拡大アニメーションが完結する前に「MouseExit」と同時に開始されることとなる。
「拡大」アニメーションに対するハンドオフ挙動が上の表1において説明されているような(指定されることも、デフォルト値とされることもある)「スナップショットと置換(snapshot and replace)」挙動であるときは、カーソルがボタンから離れた時点で「拡大」アニメーションから結果としてのボタンの長さと幅の現在の値がスナップショットされる。この実施例においては、こうしてスナップショットされた値は、アニメーション記憶オブジェクト606内に格納される。アニメーションシステム602は、この実施例においては、各アニメートされるプロパティに対してアニメーション記憶オブジェクト606を生成する。幾つかの実施例においては、アニメーション記憶オブジェクト602は、グラフィックサブシステム212にてレンダリングされたとき、ボタンが拡大および縮小して見えるようにさせる、長さおよび幅プロパティの変化に対する計算を遂行するように構成される。
アニメートされたプロパティに対するこれら値がスナップショットされた後に、「拡大」アニメーションは解除され(すなわち、「拡大」アニメーションは事実上終端され)、「縮小」アニメーションがスナップショットされた値である長さおよび幅プロパティに対する「フロム」値を用いて開始される。もしこのボタンの幅および長さプロパティに影響を及ぼす他のアニメーションは開始されないときは、この「縮小」アニメーションは完結し、このアニメーションの終端時点において、ボタンの長さおよび幅プロパティは基準値となる。
この「スナップショットと置換」挙動のために、「拡大」と「縮小」アニメーションとの間の遷移はユーザにとっては滑らかに見えるようになる。すなわち、ボタンの外見は、あるサイズまで滑らかに拡大し、その後、これと同一のサイズから滑らかに縮小することとなる。上述のスナップショット能力を有さない他のシステムにおいては、アプリケーション202あるいはアニメーションシステム602は、「縮小」アニメーションに対する「フロム」値(例えば、基準「フロム」値あるいは「拡大」アニメーションのターゲット値)を提供することが必要となることがあり、この場合には、結果として、ボタンの外見内に想定外の「グリッチ(glitch)」が発生することがある。すなわち、ボタンの外見はあるサイズまで拡大するが、その後、突然に、異なるサイズへと変化し、そしてこのボタンサイズから、縮小が開始されることとなる。スナップショットを利用することによる上述の長所は、上の表1において説明されている「スナップショットと保持(snapshot and retain)」および「スナップショットと保持/休止(snapshot and retain)」挙動に対しても適用することができる。
以下は、「スナップショットと置換」ハンドオフ挙動を使用するコードの一例である。このボタンは、MouseEnterと同時に拡大し、MouseLeaveと同時に縮小するが、ここでスナップショットと置換挙動は、デフォルト時のハンドオフ挙動である。
<Grid xmlns=http://schemas.microsoft.com/winfx/avalon/2005"
xmlns:x="http://schemas.microsoft.com/winf/{/xaml/2005">
<Grid.Resources>
<Style x:Key="GelButton" TargetType="{x:Type Button} ">
<Setter Property="Button.RenderTransform">
<Setter.Value>
<ScaleTransform Center="O,O" SCaIeX=11I" ScaleY="l" />
</Setter.Value>
</Setter>
<Style.Triggers>
<EventTrigger RoutedEvent="Mouse.MouseEnter">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubleAnimation Duration="0:0:0.2"
Storyboard.TargetProperty="RenderTransforra.ScaleX" To=1.5"
AccelerationRatio=".9" />
<DoubleAnimation Duration="0:0:0.2"
Storyboard.TargetProperty="RenderTransform,ScaleY" To="1.5"
AccelerationRatio=".9" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
<EventTrigger RoutedEvent="Mouse.MouseLeave">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<DoubIeAnimation Duration="0:0:0.2"
Storyboard.TargetProperty="RenderTransform.ScaleX" AccelerationRatio=".9" />
<DoubleAnimation Duration="0:0:0.2"
Storyboard.TargetProperty="RenderTransform.ScaleY" AccelerationRatio=".9" />
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Style.Triggers>
</Style>
</Grid.Resources>
<Button Style="{StaticResource GelButton}" Width="100" Height="lOO"/>
</Grid>
例示的「スナップショットと置換」の動作フロー
図7は、1つの実施例に従う、「スナップショットと置換」挙動を遂行するための動作フロー700を示す。動作フロー700は、任意の適当なコンピューティング環境内で遂行することができる。例えば、動作フロー700は、システム600(図6)のようなシステムによって実行しても良い。従って、動作フロー700の説明は、図6のコンポーネントの少なくとも1つを参照することがある。しかし、図6のコンポーネントへのこのような参照は、もっぱら説明のためのものであり、図6の実現は、動作フロー700に対する非制限的な環境にすぎないことを理解されるべきである。
ブロック702において、アニメーションに対するトリガが検出される。1つの実施例においては、アニメーションシステム、例えば、アニメーションシステム602(図6)が、このトリガ(例えば、イベントトリガあるいはプロパティトリガ)を検出する。幾つかの実施例においては、アニメーションシステムは、(図6との関連で上述された)インタラクティブなエレメントからこのトリガの通知を受信する。この例示的動作フローにおいては、このアニメーションと関連するプロパティ(すなわち、ビジュアルオブジェクトが「アニメート(animated)」されたとき変化するプロパティ)に対して現在実行している他のアニメーションは存在しない。
ブロック704において、アニメーション記憶オブジェクトが割り当てられる。1つの実施例においては、アニメーションシステムは、このアニメーションと関連するプロパティに対するアニメーションを扱うために、アニメーションオブジェクト、例えば、アニメーション記憶オブジェクト606(図6)を生成する。幾つかの実施例においては、アニメーション記憶オブジェクトはアニメートされるべき各プロパティに対して生成される。あるプロパティに対するアニメーションの全てが完結すると、幾つかの実施例においては、アニメーション記憶オブジェクトは削除される。幾つかの実施例においては、アニメーションがそれらのフィル値に達したとき、これらフィル値はアニメーション記憶オブジェクト内に保持されるが、格納されていた情報の残りの情報は削除される。
ブロック706において、トリガされたアニメーションと関連するプロパティの基準値がアニメーション記憶オブジェクト内に格納される。1つの実施例においては、アニメーションシステムは、基準値をアニメーション記憶オブジェクト内に格納する。基準値はプロパティシステム、例えば、プロパティシステム314(図6)から得られる。
ブロック708において、アニメーションが開始され、アニメーションがアニメーション記憶オブジェクトによって保持される。1つの実施例においは、アニメーション記憶オブジェクトは、実際には、プロパティに対する値を、スクリーンリフレッシュ速度にて、アニメーションが完結するまで(あるいは置換または休止されるまで)再計算し、こうして、ビジュアルオブジェクトはアニメートされているように見える。アニメーション記憶オブジェクトは、更に、アニメーションが実行されている間にもアニメーションをホールドする(すなわち、アニメーションの現在の状態を定義する情報を維持することで、そのアニメーションが保持されあるいは保持/休止されたとき、そのアニメーションを見つけ、継続できるようにされる)。
ブロック710において、同一のプロパティを伴う第2のアニメーションに対するトリガが、第1のアニメーションが完結する前に検出される。ブロック702におけると同様に、アニメーションシステムは、1つの実施例においては、この他のトリガを検出する。この例示的動作フローにおいては、第2のアニメーションは、表1において「スナップショットと置換」挙動として定義されているようなハンドオフ挙動を有するように構成される。
ブロック712において、第1のアニメーションからの結果としてのプロパティの現在の値が保存される(すなわち、スナップショットされる)。1つの実施例においては、スナップショットはアニメーション記憶オブジェクト内に格納される。例えば、アニメーションシステムは、次にスクリーンリフレッシュに対するプロパティに対する値を第1のアニメーションに従って計算し、この計算された値(すなわち、スナップショット)をアニメーション記憶オブジェクト内に保存する。
ブロック714において、第1のアニメーションが解除される。1つの実施例においては、アニメーションシステムはアニメーション記憶オブジェクト内に格納されていた第1のアニメーションの状態情報を削除する。
ブロック716において、第2のアニメーションが開始され、第2のアニメーションがアニメーション記憶オブジェクトにてホールドされる。この実施例によると、このスナップショットは、第2のアニメーションを実行するときのプロパティの「フロム」値として使用される。ブロック708の動作と同様に、アニメーションシステムは、実際には、プロパティに対する値をスクリーンリフレッシュ速度にて、アニメーションが完結するまで(あるいは置換あるいは休止されるまで)再計算し、こうしてビジュアルオブジェクトがアニメートして見えるようにされる。アニメーション記憶オブジェクトは、更に、第2のアニメーションが実行されている間に第2のアニメーションをホールドする(すなわち、第2のアニメーションの現在の状態を定義する情報を、第2のアニメーションが保持あるいは保持/休止されたとき、第2のアニメーションを見つけ、継続できるように維持する)。
動作フロー700が例示され、特定の順番にて順次的に説明されたが、他の実施例においては、これらブロック内に説明された動作は、異なる順番にて遂行することも、複数回遂行することも、および/または並列に遂行することもできる。さらに、幾つかの実施例においては、これらブロック内に説明されている1つあるいは複数の動作は、もう1つのブロックに分離することも、省くことも、あるいは結合することもできる。
図8は、1つの実施例に従うと、アニメーションと関連するプロパティに対する値が「スナップショットと置換」ハンドオフ挙動(表1)に従ってどのように得られるかについて示す。この実施例においては、まだアニメートされていないプロパティ802は基準値804を有する。1つの実施例においては、基準値はプロパティシステム、例えば、上述のプロパティシステム314(図3、6)内に格納される。
プロパティ802に影響を及ぼす(図8内のアニメーションAにて示される)アニメーション808が開始されるとき、典型的には基準値804がアニメーション808に対する「フロム」値810として用いられる。アニメーション808の「ツウ」値812は、アニメーション808を生成したアプリケーション(例えば、図6のアプリケーション202)にて指定される。幾つかのシナリオにおいては、これら「ツウ」および「フロム」値は、アプリケーションによっては指定されず、結果として、これら基準値がデフォルト時の値として用いられる。1つの実施例においては、これら「ツウ」および「フロム」値は、アニメーション記憶オブジェクト、例えば、アニメーション記憶オブジェクト606(図6)内に格納され、これはアニメーション1108が開始されるとき、アニメーションシステム、例えば、アニメーションシステム602(図6)によって割り当てられる。アニメーション808が実行している間、(アニメーション808に従って変化する)プロパティの値が、スクリーンがリフレッシュされるたびに計算され、レンダリング値814として出力される。
この例においては、(図8においてアニメーションBとして示される)アニメーション816が、アニメーション808が完結する前に開始される。この例においては、アニメーション816は、スナップショットと置換」挙動を有するように構成されている。開始されると、アニメーション816は、プロパティをスナップショットし、このスナップショットを、アニメーション816の「フロム」値818として使用する。アニメーション816の「ツウ」値820は、アニメーション816を生成したアプリケーションによって指定される。他の幾つかのシナリオにおいては、「ツウ」値820は指定されず、このため基準「ツウ」値が使用されることとなる。幾つかの実施例においては、これら「ツウ」および「フロム」値は、上述のアニメーション記憶オブジェクト内に格納される。更に、アニメーション808は、アニメーション816のみがプロパティの値に影響を及ぼすように解除される。アニメーション816が実行している間に、(アニメーション816に従って変化する)プロパティの値が、スクリーンがリフレッシュされる度に計算され、レンダリング値822として出力される。
ハンドオフ挙動が「スナップショットと保持(snapshot and retain)」である場合には、アニメーション808が解除されることはない。更に、アニメーション808は、継続して実行することを許されるが、しかし、プロパティの値は、アニメーション816のみを使用して計算される(すなわち、アニメーション808は無視される)。その後、アニメーション816が完了した時点で、アニメーション808が、アニメーション816にて生成されたプロパティの直近値を用いて再開される。同様にして、もしハンドオフ挙動が「スナップショットと保持/休止(snapshot and retain/pause)」であるときも、アニメーション808は解除されない。そして、このときは、アニメーション808は、それが、アニメーション816が開始されたとき有していた状態に休止することを許され、プロパティの値はアニメーション816のみを用いて計算される。その後、アニメーション816が完結した時点で、アニメーション808が、アニメーション808が休止されたときのプロパティの値を使用して再開される。
図9は、1つの実施例に従う、階層化されたアニメーション間の関係の表示である。この実施例においては、アプリケーション(例えば、図6のアプリケーション202)にて、論理的に階層に配列された数個のアニメーションを有するビジュアルオブジェクト900が定義される。この例においては、ビジュアルオブジェクトは層902−1から902−Nを含む。層902−1は、アニメーション904−1Aとアニメーション904−1Bとを含み、層902−2は、アニメーション904−2Aとアニメーション904−2Bとを含み、そして、同じように、アニメーション904NAとアニメーション904NBとを含む層902−Nまで続く。この例においては、N個の層が存在し、各層は2個のアニメーションを含むが、層の数と、層当たりのアニメーションの数は、アプリケーション開発者の設計の選択に依存して変えることができる。
1つの実施例においては、第1の層902−1は(プロパティトリガとは対照的に)イベントトリガにて開始されるアニメーションの全てを含むように定義される。こうして、層2からNまでのアニメーションについては、プロパティトリガにて開始される。幾つかの実施例においては、各層は単一のプロパティトリガと関連し、そのプロパティトリガにて開始される単一あるいは複数のアニメーションを含む。更に、この実施例においては、実行しているアニメーションは、第1の層902−1からN番目の層902Nへの順番にて遂行される。更に、この実施例においては、ある層内のアニメーションは、スナップショットを含むハンドオフ挙動(例えば、表1に説明されているような「スナップショットと置換(Snapshot and Replace)」、「スナップショットと保持(Snapshot and Retain)、「スナップショットと保持/休止(Snapshot and Retain/Pause)」および/または合成(composition)にて定義され、一方、層間の遷移は、合成ハンドオフ挙動を有する。合成ハンドオフ挙動の一例が後に図10との関連で説明される。
幾つかの実施例においては、ある層内の合成の優位性が予め定義される。より高い優先のアニメーションにて出力された値が、次のより低い優先のアニメーションに対する「フロム」値として用いられる。
1つの実施例においては、優先は以下のように定義される:(1)スタイルからトリガされたアニメーション。層内の複数の「スタイル(style)」にてトリガされたアニメーションに対する優先はそれらがそのマークアップあるいはコード内において出現する順番にて定義される;(2)ローカルエレメントトリガからトリガされたアニメーション。層内の複数の「ローカルエレメント(local element)」にてトリガされたアニメーションに対する優先はそれらがそのマークアップあるいはコード内において出現する順番にて定義される;(3)ストーリーボードあるいは方法呼から適用されたアニメーション。複数の「ストーリーボード/方法呼から適用された(storyboard/method call applied」アニメーションに対する優先は、それらが適用された順番にて定義される。
幾つかの実施例においては、ある層のアニメーションの全てが退出した時点で、その層は除去される。層は、層の「スタック(stack)」内のどの位置からも除去することができる。
図10は、1つの実施例に従う、2つのアニメーションの合成を示す。この実施例においては、まだアニメートされていないプロパティ1002は基準値1004を有する。1つの実施例においては、基準値はプロパティシステム、例えば、上述のプロパティシステム314(図3、6)内に格納される。
プロパティに影響を及ぼす(図10ではアニメーションAと表示)アニメーション1008が開始されるとき、典型的には基準値1004がアニメーション1008に対する「フロム」値1010として使用される。アニメーション1008の「ツウ」値1012は、アニメーション1008を生成したアプリケーション(例えば、図6のアプリケーション202)にて指定される。1つの実施例においては、これら「ツウ」および「フロム」値は、アニメーション記憶オブジェクト、例えば、アニメーション記憶オブジェクト606(図6)内に格納される。図10には示されていないが、アニメーション1008が自動的に実行している間に、(アニメーション1008に従って変化する)プロパティの値が、スクリーンがリフレッシュされる度に計算され、「レンダリング」値として、グラフィックサブシステム、例えば、グラフィックサブシステム212(図3、6)に供給される。
この例においては、(図10においてアニメーションBとして示される)アニメーション1016は、アニメーション1008が完結する前に開始される。この例においては、アニメーション1016は、「合成」挙動を有するように構成される。「スナップショットと置換」挙動とは対照的に、アニメーション1008は、継続して実行し、このためこのプロパティの瞬間値は引き続いて更新される。しかし、アニメーション1008からの結果としてのプロパティの瞬間値は、「レンダリング」値としては用いられない。そして、ここでは、アニメーション1008の結果として計算されるこの瞬間値は、アニメーション1016の「フロム」値1018として、一種の中間値として用いられる。アニメーション1016の「ツウ」値1020は、アニメーション1016を生成したアプリケーションにて指定される。幾つかの実施例においては、これら「ツウ」および「フロム」値は、上述のアニメーション記憶オブジェクト内に格納される。アニメーション1016からの結果としてのプロパティの値が、次に「レンダリング」値1022として用いられる。アニメーション1008および1016が実行している間に(アニメーション1008と1016の合成に従って変化する)プロパティの値が、スクリーンがリフレッシュされる度に計算され、「レンダリング」値1022として出力される。
この明細書を通じて、「1つの実施例(one embodiment)」、「実施例(embodiment)、あるいは「実施例(example embodiment)」が用いられているが、これは、特定の説明されるフィーチャ、構造、あるいは特徴が、少なくとも1つの実施例内に含まれることを意味する。従って、このような語句が使用されている場合、これはただ1つではなく、複数の実施例を意味することもある。更に、説明されたフィーチャ、構造あるいは特徴は、1つあるいは複数の実施例内に任意の適当なやり方にて組み合わせて用いることもできる。
しかしながら、当業者においては理解できるように、本発明は、1つあるいは複数のこれらの細部を省いても、あるいは他の方法、リソース、材料、その他と組み合わせても、実施することができる。他のケースにおいては、周知の構造、リソース、あるいは動作は、単に本発明の態様を不明瞭にすることを避けるため、示されていないかまたは詳細には説明されていない。
実施例および用途について説明されたが、本発明は上述の具体的な構成およびリソースに制限されるものではなく、当業者に明白な様々な修正、変更、およびバリエーションを、ここに開示された方法およびシステムの配列、動作、および細部に、ここに請求される発明の範囲から逸脱することなく、加えることができると理解されるべきである。
様々な実施例を中に組み込むことができる例示的コンピュータシステムを表すブロック図である。 1つの実施例に従う、メディア統合層アーキテクチャを表すブロック図である。 1つの実施例に従う、ビジュアルAPI層とインタフェースするためにマークアップ言語コードを解釈するためのコンポーネントの表示である。 1つの実施例に従う、クロックプロパティデータを、進行データを決定するときに用いるためのインターバルに変換するためのタイミングコンポーネントを有する2レベルアーキテクチャを概略的に表すブロック図である。 1つの実施例に従う、クロックプロパティデータを、進行データを決定するときに用いるためのインターバルに変換するためのタイミングコンポーネントを有する2レベルアーキテクチャを概略的に表すブロック図である。 1つの実施例に従う、リッチなメディア間の滑らかな遷移を提供するためのシステムを概略的に表すブロック図である。 1つの実施例に従う、ハンドオフ動作を遂行するときの動作フローを概略的に表すブロック図である。 1つの実施例に従う、ハンドオフ動作を使用しての2つのアニメーション間の遷移の表示である。 1つの実施例に従う、階層化されたアニメーション間の関係の表示である。 1つの実施例に従う、2つのアニメーションの合成の表示である。

Claims (11)

  1. ユーザ・インターフェース・エレメントの第1のアニメーションと前記ユーザ・インターフェース・エレメントの第2のアニメーションとの間で遷移させるためのコンピュータにて実現される方法であって、該方法は、
    前記ユーザ・インターフェース・エレメントの前記第1のアニメーションを開始するステップであって、前記ユーザ・インターフェース・エレメントの前記第1のアニメーションは第1のユーザ・インターフェース・エレメントのプロパティの値を調節することを含み、前記プロパティは前記値が調節されたときに前記ユーザ・インターフェース・エレメントのサイズに影響を与えるサイズ・プロパティである、ステップと、
    前記第2のアニメーションが開始されてかつ前記第1のアニメーションがまだユーザ・インターフェース・エレメントのサイズ・プロパティの値を調節している時、取られるべきアクションを指定するハンドオフ・ビヘイビアを設定するステップと、
    前記第1のアニメーションが実行している間に前記第2のアニメーションに対するトリガを検出するステップであって、前記第1および第2のアニメーションが前記ユーザ・インターフェース・エレメントの前記サイズ・プロパティの値を調節し、前記トリガは前記ユーザ・インターフェース・エレメントと対話するユーザに応答して生成されるイベントである、ステップと、
    前記第1のアニメーションが実行している間に、前記ユーザ・インターフェース・エレメントの前記プロパティの値を再計算するステップと、
    前記値が再計算されるたびに、前記プロパティの再計算された値を格納するステップと、
    前記第2のアニメーションが、前記再計算された値を使用することを含んで、前記指定されたハンドオフ・ビヘイビアを使用して前記第2のアニメーションを実行させるステップと、を含み、
    前記ハンドオフ・ビヘイビアは、
    前記第1のアニメーションが連続されて、前記第1のアニメーションの各描写サイクルについて、前記第2のアニメーションが第1のアニメーションの出力値をその「フロム」の値として使用することを示し、前記第2のアニメーションの出力値が前記プロパティを描写するための値として使用されることを示すコンポーズ・ハンドオフ・ビヘイビアと、
    前記第1のアニメーションが解除されて、前記第2のアニメーションが「ツー」及び「フロム」の値が指定されていない時、ベースの「ツー」及び「フロム」の値を使用することを示すリプレース・ハンドオフ・ビヘイビアと、
    第1のアニメーションの前記プロパティの現在値が獲得されて、そして前記第1のアニメーションが解除されて、前記第2のアニメーションが獲得された前記値を「フロム」の値として使用し且つ指定されていない時にベースの値を「ツー」の値のために使用することを示すスナップショット及びリプレース・ハンドオフ・ビヘイビアと、
    第1のアニメーションの前記プロパティの現在値が獲得されて、そして前記プロパティの前記現在値に影響を与えることなく前記第1のアニメーションが連続されて、前記第2のアニメーションが獲得された前記値を「フロム」の値として使用し且つ指定されていない時にベースの値を「ツー」の値のために使用し、前記第2のアニメーションが終了する時、前記第1のアニメーションが前記プロパティのアニメーションを開始することを示すスナップショット及びリテイン・ハンドオフ・ビヘイビアと、
    第1のアニメーションの前記プロパティの現在値が獲得されて、そして前記第1のアニメーションが停止されて、前記第2のアニメーションが獲得された前記現在値スナップショットを「フロム」の値として使用し且つ指定されていない時にベースの値を「ツー」の値のために使用し、前記第2のアニメーションが終了する時、前記第1のアニメーションは停止されたときの前記第1のアニメーションの状態からの前記プロパティのアニメーションをすることを示すスナップショット及びリテイン/停止ハンドオフ・ビヘイビアと
    前記第1のアニメーションと前記第2のアニメーションの重み付けられた平均値を使用することを示すブレンド・ハンドオフ・ビヘイビアと、
    既存のアニメーションが完了するまでペンディングのアニメーションを待ち行列に入れることを示すキュー・ハンドオフ・ビヘイビアと、
    の中から1つが選択されることを特徴とする方法。
  2. ユーザ・インターフェース・エレメントの第1のアニメーションと前記ユーザ・インターフェース・エレメントの第2のアニメーションとの間で遷移させるためのコンピュータにて実現される方法であって、該方法は、
    前記ユーザ・インターフェース・エレメントの前記第1のアニメーションを開始するステップであって、前記ユーザ・インターフェース・エレメントの前記第1のアニメーションは第1のユーザ・インターフェース・エレメントのプロパティの値を調節することを含み、前記プロパティは前記値が調節されたときに前記ユーザ・インターフェース・エレメントのサイズに影響を与えるサイズ・プロパティである、ステップと、
    前記第2のアニメーションが開始されてかつ前記第1のアニメーションがまだユーザ・インターフェース・エレメントのサイズ・プロパティの値を調節している時、取られるべきアクションを指定するハンドオフ・ビヘイビアを設定するステップと、
    前記第1のアニメーションが実行している間に前記第2のアニメーションに対するトリガを検出するステップであって、前記第1および第2のアニメーションが前記ユーザ・インターフェース・エレメントの前記サイズ・プロパティの値を調節し、前記トリガは前記ユーザ・インターフェース・エレメントと対話するユーザに応答して生成されるイベントである、ステップと、
    前記第1のアニメーションが実行している間に、前記ユーザ・インターフェース・エレメントの前記プロパティの値を再計算するステップと、
    前記値が再計算されるたびに、前記プロパティの再計算された値を格納するステップと、
    前記第2のアニメーションが、前記再計算された値を使用することを含んで、前記指定されたハンドオフ・ビヘイビアを使用して前記第2のアニメーションを実行させるステップと、を含み、
    更に、前記第1のアニメーションが、前記第2のアニメーションが実行している間に、前記プロパティの値に影響を及ぼすことなく実行するのを許すステップを含む、ことを特徴とする方法。
  3. ユーザ・インターフェース・エレメントの第1のアニメーションと前記ユーザ・インターフェース・エレメントの第2のアニメーションとの間で遷移させるためのコンピュータにて実現される方法であって、該方法は、
    前記ユーザ・インターフェース・エレメントの前記第1のアニメーションを開始するステップであって、前記ユーザ・インターフェース・エレメントの前記第1のアニメーションは第1のユーザ・インターフェース・エレメントのプロパティの値を調節することを含み、前記プロパティは前記値が調節されたときに前記ユーザ・インターフェース・エレメントのサイズに影響を与えるサイズ・プロパティである、ステップと、
    前記第2のアニメーションが開始されてかつ前記第1のアニメーションがまだユーザ・インターフェース・エレメントのサイズ・プロパティの値を調節している時、取られるべきアクションを指定するハンドオフ・ビヘイビアを設定するステップと、
    前記第1のアニメーションが実行している間に前記第2のアニメーションに対するトリガを検出するステップであって、前記第1および第2のアニメーションが前記ユーザ・インターフェース・エレメントの前記サイズ・プロパティの値を調節し、前記トリガは前記ユーザ・インターフェース・エレメントと対話するユーザに応答して生成されるイベントである、ステップと、
    前記第1のアニメーションが実行している間に、前記ユーザ・インターフェース・エレメントの前記プロパティの値を再計算するステップと、
    前記値が再計算されるたびに、前記プロパティの再計算された値を格納するステップと、
    前記第2のアニメーションが、前記再計算された値を使用することを含んで、前記指定されたハンドオフ・ビヘイビアを使用して前記第2のアニメーションを実行させるステップと、を含み、
    あるプロパティに対するアニメーションは論理的に複数の層に編成され、ある層は、その層内の全てのアニメーションが退去したとき選択的に除去できる、ことを特徴とする方法。
  4. ユーザ・インターフェース・エレメントの第1のアニメーションと前記ユーザ・インターフェース・エレメントの第2のアニメーションとの間で遷移させるためのコンピュータにて実現される方法であって、該方法は、
    前記ユーザ・インターフェース・エレメントの前記第1のアニメーションを開始するステップであって、前記ユーザ・インターフェース・エレメントの前記第1のアニメーションは第1のユーザ・インターフェース・エレメントのプロパティの値を調節することを含み、前記プロパティは前記値が調節されたときに前記ユーザ・インターフェース・エレメントのサイズに影響を与えるサイズ・プロパティである、ステップと、
    前記第2のアニメーションが開始されてかつ前記第1のアニメーションがまだユーザ・インターフェース・エレメントのサイズ・プロパティの値を調節している時、取られるべきアクションを指定するハンドオフ・ビヘイビアを設定するステップと、
    前記第1のアニメーションが実行している間に前記第2のアニメーションに対するトリガを検出するステップであって、前記第1および第2のアニメーションが前記ユーザ・インターフェース・エレメントの前記サイズ・プロパティの値を調節し、前記トリガは前記ユーザ・インターフェース・エレメントと対話するユーザに応答して生成されるイベントである、ステップと、
    前記第1のアニメーションが実行している間に、前記ユーザ・インターフェース・エレメントの前記プロパティの値を再計算するステップと、
    前記値が再計算されるたびに、前記プロパティの再計算された値を格納するステップと、
    前記第2のアニメーションが、前記再計算された値を使用することを含んで、前記指定されたハンドオフ・ビヘイビアを使用して前記第2のアニメーションを実行させるステップと、を含み、
    更に、前記第2のアニメーションが実行している間に第3のアニメーションに対するトリガを検出するステップを含み、前記第1および第2のアニメーションは1つの層の部分であり、前記第3のアニメーションは別の層の部分であり、前記第2のアニメーションに起因する前記プロパティの値は前記第3のアニメーションに対する「フロム」値として用いられ、前記第3のアニメーションに起因する前記プロパティの値は前記ビジュアルオブジェクトをレンダリングするときの前記プロパティに対するレンダリング値として用いられる、ことを特徴とする方法。
  5. コンピュータに請求項1〜4の何れか1項に記載のステップを実行させるためのプログラムを記録した1つまたは複数のコンピュータ読み取り可能な記録媒体。
  6. コンピュータに請求項1〜4の何れか1項に記載のステップを実行させるためのプログラム。
  7. 第1のアニメーションおよび第2のアニメーションを処理するシステムであって、
    表示されるべきビジュアルオブジェクトのプロパティに対する値を格納するプロパティシステムと、
    前記ビジュアルオブジェクトを、表示装置を介して表示するために用いるデータを提供するグラフィックサブシステムと、
    前記表示装置を介して表示されるとき、前記ビジュアルオブジェクトをアニメーティングするために用いられるビジュアルオブジェクトのプロパティの一連の値を計算するアニメーションシステムと、を含み、
    前記プロパティはアニメーション中に値が調節されるとビジュアルオブジェクトのサイズを変えるサイズ・プロパティであり、
    前記アニメーションシステムは、前記第1のアニメーションが実行している間に前記第2のアニメーションに対するトリガを検出し、前記第1のアニメーションの実行に起因する前記プロパティの値を格納し、前記第2のアニメーションを、前記プロパティの前記格納された値を「フロム」値として使用して開始し、
    前記「フロム」値は前記第2のアニメーションの開始ポイントであり、前記第1のアニメーションおよび前記第2のアニメーションはグラフィカル・ユーザ・インターフェィス上のビジュアルオブジェクトのアニメーションであり、
    前記アニメーションシステムは、前記第1のアニメーションが、前記第2のアニメーシ
    ョンが実行している間に、前記プロパティの値に影響を及ぼすことなく実行するのを許す、ことを特徴とするシステム。
  8. 第1のアニメーションおよび第2のアニメーションを処理するシステムであって、
    表示されるべきビジュアルオブジェクトのプロパティに対する値を格納するプロパティシステムと、
    前記ビジュアルオブジェクトを、表示装置を介して表示するために用いるデータを提供するグラフィックサブシステムと、
    前記表示装置を介して表示されるとき、前記ビジュアルオブジェクトをアニメーティングするために用いられるビジュアルオブジェクトのプロパティの一連の値を計算するアニメーションシステムと、を含み、
    前記プロパティはアニメーション中に値が調節されるとビジュアルオブジェクトのサイズを変えるサイズ・プロパティであり、
    前記アニメーションシステムは、前記第1のアニメーションが実行している間に前記第2のアニメーションに対するトリガを検出し、前記第1のアニメーションの実行に起因する前記プロパティの値を格納し、前記第2のアニメーションを、前記プロパティの前記格納された値を「フロム」値として使用して開始し、
    前記「フロム」値は前記第2のアニメーションの開始ポイントであり、前記第1のアニメーションおよび前記第2のアニメーションはグラフィカル・ユーザ・インターフェィス上のビジュアルオブジェクトのアニメーションであり、
    前記アニメーションシステムは、前記第2のアニメーションが実行している間に第3のアニメーションに対するトリガを検出し、前記第1および第2のアニメーションは1つの層の部分であり、前記第3のアニメーションは別の層の部分であり、前記第2のアニメーションに起因する前記プロパティの値は前記第3のアニメーションに対する「フロム」値として用いられ、前記第3のアニメーションに起因する前記プロパティの値は前記ビジュアルオブジェクトをレンダリングするための前記プロパティに対するレンダリング値として用いられる、ことを特徴とするシステム。
  9. ビジュアルエレメントをアニメーティングするためのコンピュータにて実現される方法
    であって、該方法は、
    グラフィカル・ユーザ・インターフェイス上で表示されるビジュアルエレメントに対してセットのトリガ可能なアニメーションを定義するステップであって、前記セットは、1つあるいは複数のトリガ可能なアニメーションの第1のサブセットおよびトリガ可能なアニメーションの1つあるいは複数の他のサブセットを含み、前記第1のサブセットのトリガ可能なアニメーションの各々は、前記ビジュアルエレメントとのユーザ対話に応答して生成されるイベントトリガあるいはプロパティトリガのいずれかにてトリガ可能であり、前記1つあるいは複数の他のサブセットのトリガ可能なアニメーションの各々は、前記ビジュアルエレメントとのユーザ対話に応答して生成されるプロパティトリガにてトリガ可能であり、前記各アニメーション中にサイズ・プロパティの値を再計算して値が調節されると前記ビジュアルオブジェクトのサイズが変えられる、ステップと、
    再計算されたプロパティを格納するステップと、
    そこから引き続くアニメーションを開始するための「フロム」位置を決定するために前記再計算された値を使用するステップと、を含み、
    1つのサブセットのアニメーションからもう1つのサブセットのアニメーションへと遷移するために合成ハンドオフ・ビヘイビアが用いられ、
    前記セットのサブセットの1つの第2のアニメーションは、開始されたとき、選択的に、そのサブセットの第1のアニメーションによる影響を受けたプロパティ値のスナップショットを得るようにされ、前記第1のアニメーションは、前記第2のアニメーションが開始されても引き続いて実行する、ことを特徴とする方法。
  10. コンピュータに請求項に記載のステップを実行させるためのプログラムを記録した1つまたは複数のコンピュータ読み取り可能な記録媒体。
  11. コンピュータに請求項に記載のステップを実行させるためのプログラム。
JP2008521509A 2005-07-13 2006-07-11 アニメーション間の滑らかな遷移 Expired - Fee Related JP4937256B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/181,197 US7477254B2 (en) 2005-07-13 2005-07-13 Smooth transitions between animations
US11/181,197 2005-07-13
PCT/US2006/026815 WO2007008853A2 (en) 2005-07-13 2006-07-11 Smooth transitions between animations

Publications (3)

Publication Number Publication Date
JP2009501388A JP2009501388A (ja) 2009-01-15
JP2009501388A5 JP2009501388A5 (ja) 2009-08-06
JP4937256B2 true JP4937256B2 (ja) 2012-05-23

Family

ID=37637866

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008521509A Expired - Fee Related JP4937256B2 (ja) 2005-07-13 2006-07-11 アニメーション間の滑らかな遷移

Country Status (9)

Country Link
US (1) US7477254B2 (ja)
EP (1) EP1908020A4 (ja)
JP (1) JP4937256B2 (ja)
KR (1) KR101246988B1 (ja)
CN (1) CN101223555B (ja)
BR (1) BRPI0613106A2 (ja)
MX (1) MX2008000515A (ja)
RU (1) RU2420806C2 (ja)
WO (1) WO2007008853A2 (ja)

Families Citing this family (45)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060232589A1 (en) * 2005-04-19 2006-10-19 Microsoft Corporation Uninterrupted execution of active animation sequences in orphaned rendering objects
FR2899364B1 (fr) * 2006-03-28 2008-12-26 Streamezzo Sa Procede de calcul des parametres d'animation des objets d'une scene mulitmedia.
US9019300B2 (en) * 2006-08-04 2015-04-28 Apple Inc. Framework for graphics animation and compositing operations
US8130226B2 (en) * 2006-08-04 2012-03-06 Apple Inc. Framework for graphics animation and compositing operations
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
CA2680008A1 (en) * 2007-03-15 2008-09-25 Thomson Licensing Methods and apparatus for automated aesthetic transitioning between scene graphs
US20090079744A1 (en) * 2007-09-21 2009-03-26 Microsoft Corporation Animating objects using a declarative animation scheme
AU2007237356A1 (en) * 2007-12-05 2009-06-25 Canon Kabushiki Kaisha Animated user interface control elements
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
US20100235769A1 (en) * 2009-03-16 2010-09-16 Microsoft Corporation Smooth layout animation of continuous and non-continuous properties
DE102009048834A1 (de) * 2009-10-09 2011-04-14 Volkswagen Ag Verfahren und Anzeigeeinrichtung zum Anzeigen von Informationen
US20110093560A1 (en) * 2009-10-19 2011-04-21 Ivoice Network Llc Multi-nonlinear story interactive content system
WO2011049799A1 (en) * 2009-10-20 2011-04-28 Qwiki, Inc. Method and system for assembling animated media based on keyword and string input
US20110096076A1 (en) * 2009-10-27 2011-04-28 Microsoft Corporation Application program interface for animation
KR101108480B1 (ko) * 2010-02-24 2012-01-31 (주)투비소프트 객체 지향적 컴포넌트 애니메이션 방법 및 이를 위한 기록매체
CN101833447B (zh) * 2010-04-08 2012-12-26 广东欧珀移动通信有限公司 一种利用补间动画实现桌面Widget动画的方法
CN102483855B (zh) * 2010-07-15 2016-04-13 松下电器(美国)知识产权公司 动画控制装置、动画控制方法及集成电路
US8922564B2 (en) * 2010-12-01 2014-12-30 Microsoft Corporation Controlling runtime execution from a host to conserve resources
US10169901B2 (en) * 2010-12-17 2019-01-01 Microsoft Technology Licensing, Llc Staggered animation scheduling
CN103765856B (zh) * 2011-09-06 2017-12-15 瑞典爱立信有限公司 用于具有多层或多个流的渐进媒体下载的装置和方法
US8601366B2 (en) * 2011-09-08 2013-12-03 Microsoft Corporation Visualization and editing of composite layouts
US9400584B2 (en) 2011-09-09 2016-07-26 Microsoft Technology Licensing, Llc Alias selection in multiple-aliased animations
US20130063446A1 (en) * 2011-09-10 2013-03-14 Microsoft Corporation Scenario Based Animation Library
US20130076755A1 (en) * 2011-09-27 2013-03-28 Microsoft Corporation General representations for data frame animations
US10115217B2 (en) 2011-10-28 2018-10-30 Microsoft Technology Licensing, Llc Layering animation properties in higher level animations
US9268848B2 (en) 2011-11-02 2016-02-23 Microsoft Technology Licensing, Llc Semantic navigation through object collections
US20130111382A1 (en) * 2011-11-02 2013-05-02 Microsoft Corporation Data collection interaction using customized layouts
US9645978B2 (en) * 2011-11-16 2017-05-09 Microsoft Technology Licensing, Llc Techniques for the automatic animation of changes to document content
US10394877B2 (en) 2012-12-19 2019-08-27 Oath Inc. Method and system for storytelling on a computing device via social media
US9761034B2 (en) * 2013-06-09 2017-09-12 Apple Inc. Animation emulating live web page content resizing
US10157593B2 (en) 2014-02-24 2018-12-18 Microsoft Technology Licensing, Llc Cross-platform rendering engine
US10013789B2 (en) * 2015-11-20 2018-07-03 Google Llc Computerized motion architecture
CN105678828B (zh) * 2015-12-30 2020-03-31 合一网络技术(北京)有限公司 一种创建过渡动画的方法及装置
US10573051B2 (en) * 2017-08-16 2020-02-25 Google Llc Dynamically generated interface transitions
CN107729064A (zh) * 2017-10-26 2018-02-23 北京恒泰实达科技股份有限公司 多进程动画切换方法、装置及显示屏
EP3635528A1 (en) * 2018-08-21 2020-04-15 Google LLC Dynamically generated interface transitions
CN111589143B (zh) * 2020-05-15 2022-07-26 腾讯科技(深圳)有限公司 动画播放方法、装置、设备及存储介质
CN111935549B (zh) * 2020-09-22 2022-06-28 北京百度网讯科技有限公司 播放序列的更新方法、装置
CN114296668A (zh) * 2021-03-11 2022-04-08 海信视像科技股份有限公司 一种显示设备
CN113018855B (zh) * 2021-03-26 2022-07-01 完美世界(北京)软件科技发展有限公司 一种虚拟角色的动作切换方法和装置
CN115390957A (zh) * 2021-05-25 2022-11-25 华为技术有限公司 一种应用程序动效衔接的方法及装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051759A (ja) * 1999-08-12 2001-02-23 Nec Corp 操作反応音生成装置及び操作反応音生成プログラムを記録した記録媒体

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5818462A (en) * 1994-07-01 1998-10-06 Digital Equipment Corporation Method and apparatus for producing complex animation from simpler animated sequences
US6057833A (en) * 1997-04-07 2000-05-02 Shoreline Studios Method and apparatus for providing real time enhancements and animations over a video image
US6011562A (en) * 1997-08-01 2000-01-04 Avid Technology Inc. Method and system employing an NLE to create and modify 3D animations by mixing and compositing animation data
US6441927B1 (en) * 1998-08-07 2002-08-27 Hewlett-Packard Company Appliance and method for viewing captured images
US7432940B2 (en) * 2001-10-12 2008-10-07 Canon Kabushiki Kaisha Interactive animation of sprites in a video production
US7443401B2 (en) * 2001-10-18 2008-10-28 Microsoft Corporation Multiple-level graphics processing with animation interval generation
US6957392B2 (en) * 2002-01-16 2005-10-18 Laszlo Systems, Inc. Interface engine providing a continuous user interface
US20060221081A1 (en) * 2003-01-17 2006-10-05 Cohen Irun R Reactive animation
US7173623B2 (en) * 2003-05-09 2007-02-06 Microsoft Corporation System supporting animation of graphical display elements through animation object instances
US7219340B2 (en) * 2003-10-23 2007-05-15 Microsoft Corporation Changeable class and pattern to provide selective mutability in computer programming environments

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001051759A (ja) * 1999-08-12 2001-02-23 Nec Corp 操作反応音生成装置及び操作反応音生成プログラムを記録した記録媒体

Also Published As

Publication number Publication date
BRPI0613106A2 (pt) 2010-12-21
EP1908020A4 (en) 2017-02-22
EP1908020A2 (en) 2008-04-09
KR20080026597A (ko) 2008-03-25
JP2009501388A (ja) 2009-01-15
RU2420806C2 (ru) 2011-06-10
KR101246988B1 (ko) 2013-03-25
WO2007008853A3 (en) 2007-10-11
RU2008101466A (ru) 2009-07-20
MX2008000515A (es) 2008-03-06
CN101223555A (zh) 2008-07-16
US20070013699A1 (en) 2007-01-18
CN101223555B (zh) 2012-11-14
US7477254B2 (en) 2009-01-13
WO2007008853A2 (en) 2007-01-18

Similar Documents

Publication Publication Date Title
JP4937256B2 (ja) アニメーション間の滑らかな遷移
JP4694355B2 (ja) コンピュータディスプレイ出力におけるアニメーションおよびメディアの調整
US7262775B2 (en) System supporting animation of graphical display elements through animation object instances
JP5015150B2 (ja) 対話式マルチメディア環境の状態変化への宣言式応答
CN109300181B (zh) 用户界面和内容项的计算机生成显示组件的动画
US20080303827A1 (en) Methods and Systems for Animating Displayed Representations of Data Items
US20080303826A1 (en) Methods and Systems for Animating Displayed Representations of Data Items
US20110285727A1 (en) Animation transition engine
US20200142572A1 (en) Generating interactive, digital data narrative animations by dynamically analyzing underlying linked datasets
US7743387B2 (en) Inheritance context for graphics primitives
CN116206016A (zh) 动画中特效事件处理方法及装置
JP2003216975A (ja) 動作情報処理装置及び動作情報処理方法、記憶媒体、並びにコンピュータ・プログラム
Tang EMO: Elastic manipulation objects

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090612

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20090612

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

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110804

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110915

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111124

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

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

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

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4937256

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

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