(57)【要約】  適用後はアクティブコンテンツの対話性が保持される、ボタン、コンボボックス、ビデオ、編集フィールドなどのアクティブコンテンツに視覚エフェクトを適用するための方法およびシステム。また、本開示は、開発者が新しい視覚エフェクトを構築し、それをアクティブコンテンツに適用させるための機構も提供する。
2009508256.tif 000002
【特許請求の範囲】
【請求項１】
視覚要素に視覚エフェクトを適用するための方法であって、
それぞれが変換関数を含む１つまたは複数のエフェクトと、入力と、出力とを含む有向非巡回グラフを提供するステップと、
前記入力で前記視覚要素を提供するステップと、
前記有向非巡回グラフ内に前記１つまたは複数のエフェクトのうちの次のエフェクトがあるかどうか判断するステップと、前記次のエフェクトがある場合には、
前記次のエフェクトの入力に前記視覚要素を提供するステップと、
前記視覚要素のフォーマットが前記次のエフェクトに適合するかどうか判断し、そうでない場合は、前記視覚要素を適合するフォーマットに変換するステップと、
前記視覚要素を前記次のエフェクトで修正するために前記次のエフェクトの前記変換関数を前記視覚要素に適用するステップと、
前記有向非巡回グラフ内に前記１つまたは複数のエフェクトのうちの別の次のエフェクトがなくなるまで前記判断ステップを繰り返すステップと、
前記出力で前記視覚要素を提供するステップとを備えることを特徴とする方法。
【請求項２】
前記変換関数は双方向変換関数であることを特徴とする請求項１に記載の方法。
【請求項３】
前記視覚要素はビットマップであることを特徴とする請求項１に記載の方法。
【請求項４】
出力としての前記視覚要素はユーザインターフェースに表示されることを特徴とする請求項１に記載の方法。
【請求項５】
入力としての前記視覚要素は記憶装置から提供され、出力としての前記視覚要素は前記記憶装置内に格納されることを特徴とする請求項１に記載の方法。
【請求項６】
前記視覚要素はビデオを含むことを特徴とする請求項１に記載の方法。
【請求項７】
前記視覚要素はビットマップに変換されることを特徴とする請求項１に記載の方法。
【請求項８】
出力としての前記視覚要素はその対話機能性を保持することを特徴とする請求項７に記載の方法。
【請求項９】
前記視覚要素はアニメーション化されることを特徴とする請求項１に記載の方法。
【請求項１０】
コンピュータ読取り可能媒体においてコンピュータ実行可能命令で実施されることを特徴とする請求項１に記載の方法。
【請求項１１】
視覚要素上のヒットイベントの座標を変換するための方法であって、
それぞれが双方向変換関数を含む１つまたは複数のエフェクトと、入力と、出力とを含む有向非巡回グラフを提供するステップと、
前記視覚要素に前記１つまたは複数のエフェクトを適用するステップと、
前記入力で前記ヒットイベントの前記座標を提供するステップと、
前記有向非巡回グラフ内に前記１つまたは複数のエフェクトのうちの前のエフェクトがあるかどうか判断するステップと、前記前のエフェクトがある場合には、
前記前のエフェクトの入力に前記座標を提供するステップと、
前記前のエフェクトに基づいて前記座標を修正するために、前記前のエフェクトの前記双方向変換関数を前記座標に適用するステップと、
前記有向非巡回グラフ内に前記１つまたは複数のエフェクトのうちの別の前のエフェクトがなくなるまで前記判断ステップを繰り返すステップと、
前記出力で前記座標を提供するステップとを備えることを特徴とする方法。
【請求項１２】
前記視覚要素はビットマップであることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記視覚要素はビデオを含むことを特徴とする請求項１１に記載の方法。
【請求項１４】
前記ヒットイベントはユーザ入力の結果であることを特徴とする請求項１１に記載の方法。
【請求項１５】
コンピュータ読取り可能媒体においてコンピュータ実行可能命令で実施されることを特徴とする請求項１１に記載の方法。
【請求項１６】
アクティブコンテンツに視覚エフェクトを適用するためのシステムであって、
入力と出力とを含むエフェクトオブジェクトであって、１つまたは複数の他のエフェクトオブジェクト、あるいは１つまたは複数のエフェクトプリミティブを含むエフェクトオブジェクトと、
有向非巡回グラフを形成するために、前記１つまたは複数の他のエフェクトオブジェクトのうちのエフェクトオブジェクトと、前記１つまたは複数のエフェクトプリミティブのうちのエフェクトプリミティブと、前記入力と、前記出力との間の結合を確立する手段と、
前記入力に前記アクティブコンテンツを提供する手段と、
前記有向非巡回グラフを構成する、前記１つまたは複数の他のエフェクトオブジェクトのうちの前記エフェクトオブジェクトあるいは前記１つまたは複数のエフェクトプリミティブのうちの前記エフェクトプリミティブのそれぞれの変換関数を前記アクティブコンテンツに適用して、変換されたアクティブコンテンツをもたらす手段と、
前記変換されたアクティブコンテンツを前記出力に提供する手段とを備えることを特徴とするシステム。
【請求項１７】
前記変換関数が双方向変換関数であることを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記変換されたアクティブコンテンツへのヒットイベントの座標を前記エフェクトオブジェクトに提供する手段と、
前記１つまたは複数の他のエフェクトオブジェクトのうちの前記エフェクトオブジェクトあるいは前記有向非巡回グラフを備える前記１つまたは複数のエフェクトプリミティブのうちの前記エフェクトプリミティブのそれぞれの前記双方向変換関数を前記ヒットイベントの座標に適用して、変換された座標をもたらす手段と、
前記変換された座標をヒットテスト機能に提供する手段とをさらに備えることを特徴とする請求項１７に記載のシステム。
【請求項１９】
前記アクティブコンテンツはビデオを含むことを特徴とする請求項１６に記載のシステム。
【請求項２０】
コンピュータ読取り可能媒体においてコンピュータ実行可能命令として実施されることを特徴とする請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、アクティブコンテンツに視覚エフェクトを適用するための方法およびシステムに関する。
【背景技術】
【０００２】
アプリケーション開発者は、ユーザがユーザインターフェースを他のユーザインターフェースと区別する他とは異なる要素を含むユーザインターフェースを実装し、かつ／またはユーザがユーザインターフェースを介してアプリケーションを扱うときのユーザ体験を向上させたいと望むことがある。開発者がユーザインターフェースをカスタマイズすることを望み得る１つのやり方は、ユーザインターフェースの変化を知らせ、またはユーザインターフェースの要素を修正するために発生する視覚エフェクトを作成することである。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、現在のプラットフォームは、ユーザインターフェースの一部として使用されるコンテンツへの視覚エフェクトの適用をサポートしていない。
【課題を解決するための手段】
【０００４】
下記は、読者に基本的な理解を促すために、本開示の簡略化された要約を提示している。この要約は、本開示の広範な概要ではなく、また本発明の重要な／重大な要素を識別するものでも、本発明の範囲を定めるものでもない。その唯一の目的は、本明細書で開示されるいくつかの概念を、下記に提示されたより詳細な説明の序文として、簡略化された形で提示することである。
【０００５】
本開示は、ボタン、コンボボックス、ビデオ、編集フィールドなどのアクティブコンテンツに視覚エフェクトを適用するための方法およびシステムであって、適用後はアクティブコンテンツの対話機能性が保持される、方法およびシステムについて述べる。また本開示は、開発者が新しい視覚エフェクトを構築し、それをアクティブコンテンツに適用させるための機構を提供する。こうした視覚エフェクトは、たとえば、ブラー、グロー、フラッシュ、爆発、拡大、縮小、フェード、濃淡、渦巻き、波、結合、スパークル、あるいはアクティブコンテンツに適用され得る他の視覚エフェクトを含む。
【０００６】
付随する特徴の多くは、添付の図面に関連して考慮された以下の詳細な説明を参照することによってそれがよりよく理解されると、容易に理解されよう。
【０００７】
この説明は、添付の図面を考慮して読まれる以下の詳細な説明からよりよく理解される。
【０００８】
同じ参照符号は、添付の図面中の同様の部分を示すために使用されている。
【発明を実施するための最良の形態】
【０００９】
添付図面に関連して以下に示された詳細な説明は、本発明の諸実施例についての説明として意図されており、本発明の諸実施例が解釈され使用され得る形だけを表すためのものではない。この説明は、実施例の諸機能、および実施例を構成し操作するためのステップのシーケンスについて述べている。しかし、同じまたは等価の機能およびシーケンスが、異なる実施例によって遂行されてもよい。
【００１０】
本発明の諸実施例は、本明細書では、コンピュータシステムで実施されるものとして述べられ示されているが、述べられたシステムは、限定ではなく、一例として示されている。当業者には理解されるように、本発明の諸実施例は、様々な異なるタイプのコンピューティングシステムおよびグラフィックスシステム内に適用することに適している。
【００１１】
以下に明示的に定義される、この説明全体を通して使用される複数の用語がある。下記の定義は、当技術分野では周知であり得るどのような代替の定義にも取って代わるものである。
【００１２】
アクティブコンテンツ−何らかの形のユーザ対話をサポートすることができ、または何らかの形でアニメーション化されるボタン、コンボボックス、編集フィールド、チェックボックス、画像、ビデオなどの視覚要素。アクティブコンテンツは、画面に表示されずにメモリ内でレンダリングされてもよい。
【００１３】
Ｅｆｆｅｃｔ−Ｅｆｆｅｃｔは、ＥｆｆｅｃｔＧｒａｐｈ（すなわち有向非巡回グラフ（ＤＡＧ：Ｄｉｒｅｃｔ  Ａｃｙｃｌｉｃ  Ｇｒａｐｈ））を含むオブジェクトである。
【００１４】
ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ−これは、基本のエフェクトである。ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅは、子を含まない。ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅは、エフェクト開発者が一般に作成するものである。これは、エフェクトのために実際のピクセル処理を行うオブジェクトである。
【００１５】
エフェクト−この用語は一般に、ＥｆｆｅｃｔまたはＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅが使用されまたは指定され得るときに使用される。
【００１６】
ＥｆｆｅｃｔＧｒａｐｈ−これは、エフェクトグラフ全体を指す（すなわちＤＡＧのうちのＤＡＧ内の最上位Ｅｆｆｅｃｔである一部のＥｆｆｅｃｔ）。
【００１７】
ピン（ｐｉｎ）−これは、Ｅｆｆｅｃｔを共に接続し、または他の目的のためにＥｆｆｅｃｔが露出する（ＩＭＩＬＢｉｔｍａｐＥｆｆｅｃｔｉｎｐｕｔＣｏｎｎｅｃｔｏｒを介した）接続点を表すために使用される。
【００１８】
ラスターグラフィックス−これは、画像をピクセルの集まりとして、一般に矩形格子またはビットマップの形で表現するものである。この用語は一般に、用語「ベクトルグラフィックス」と対比して使用される。
【００１９】
ベクトルグラフィックス−形状モデリングとしても知られており、これは、コンピュータグラフィックスで画像を表すために点、線、曲線および多角形などの幾何プリミティブを使用することである。この用語は一般に、用語「ラスターグラフィックス」と対比して使用される。
【００２０】
視覚要素−これは、ボタン、編集フィールド、画像、メニュー、アイコンなどのグラフィカル構成体、あるいはメモリまたはディスプレイ、電子キャンバス、ユーザインターフェースなどでレンダリングされた他の任意の対話型のまたはアニメーション化されたグラフィカル構成体である。視覚要素は、ラスターグラフィックス要素、ベクトルグラフィックス要素、または他の任意のタイプのグラフィカル構成体であってもよい。
【００２１】
図１は例示的なＥｆｆｅｃｔオブジェクト１００を示すブロック図である。Ｅｆｆｅｃｔは、有向非巡回グラフ（ＤＡＧ）を形成する、１０４ａ〜１０４ｄなどの１つまたは複数のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅの集まりである。このエフェクトＤＡＧは一般に、ＩＭＩＬＢｉｔｍａｐＥｆｆｅｃｔ  １０６を露出（ｅｘｐｏｓｅ）する単一のオブジェクト１００の内部でカプセル化される。Ｅｆｆｅｃｔ１００の内部の各要素は、別のＥｆｆｅｃｔ（すなわちＩＭＩＬＢｉｔｍａｐＥｆｆｅｃｔを露出する）、またはＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ（すなわちＩＭＩＬＢｉｔｍａｐＥｆｆｅｃｔＰｒｉｍｉｔｉｖ  １０７を露出する）である。それぞれのエフェクトは、入力１０８などの０個以上の入力、および出力１０９などの出力を有することができる。それぞれの入力／出力ピンは、例１０１および１０２などのＩＭＩＬＢｉｔｍａｐＥｆｆｅｃｔＣｏｎｎｅｃｔｏｒによって記述される。これらは、エフェクトＤＡＧを通るデータフロー経路を形成するために、例示的な接続１１０によるように共に接続される。
【００２２】
Ｅｆｆｅｃｔ１００は、ボタン、編集フィールド、ビデオグラフィックスなどの視覚要素、あるいはディスプレイ、キャンバス、ユーザインターフェースなどの他の任意の対話型のまたはアニメーション化された視覚要素（１つまたは複数）を含めて、ビットマップの形のアクティブコンテンツへの視覚効果を提供するために使用されてもよい。Ｅｆｆｅｃｔ１００は、ビットマップが決して表示されずにメモリ内のビットマップに視覚エフェクトを適用するために使用されることもできる。さらに、Ｅｆｆｅｃｔ１００は、その入力の属性について記述する他のプロパティを見せてもよい。たとえば、ＢｉｔｍａｐＥｆｆｅｃｔは、カラーヒストグラム情報または顔検出情報を発し得る。提供される特定のエフェクトは一般に、Ｅｆｆｅｃｔ、およびたとえば例示的なＥｆｆｅｃｔ  １００などのＥｆｆｅｃｔに含まれたＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅによって決まる。
【００２３】
一般に、視覚要素のビットマップは、入力１０１など、例示的なＥｆｆｅｃｔ  １００の入力で提供される。入力ビットマップは、エフェクト（またはＥｆｆｅｃｔが１０４ａ〜１０４ｄなどの複数のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ、または他のＥｆｆｅｃｔを含む場合にはエフェクトの集まり）を提供するためにＥｆｆｅｃｔ  １００によって処理され、エフェクト（１つまたは複数）を含むビットマップが、出力１０２などのＥｆｆｅｃｔ  １００の出力で提供される。
【００２４】
図２は、様々な入力および出力ピンを含む例示的なエフェクトオブジェクト２００を示すブロック図である。出力画像を単に露出するのではなく、ピン２１０などの１組の入力／出力ピンを露出することの利点は、エフェクトを実際には実行せず、こうしたピンによって、エフェクトの入力および出力フォーマットならびに他の情報を求めて問い合わせることが可能になることである。それぞれのピンは、複数フォーマットの画像を受け入れ／生成してもよい。ピンが受け入れ／生成するフォーマットは、ＩＭＩＬＢｉｔｍａｐＥｆｆｅｃｔＩｎｐｕｔＣｏｎｎｅｃｔｏｒまたはＩＭＩＬＢｉｔｍａｐＥｆｆｅｃｔＯｕｔｐｕｔＣｏｎｎｅｃｔｏｒインターフェースのＧｅｔＦｏｒｍａｔ（）およびＧｅｔＮｕｍｂｅｒＦｏｒｍａｔｓ（）メソッドによってカプセル化することができる。それぞれのピンは、最適なフォーマット、すなわちエフェクトがその入力／出力で受け入れ／生成することを好むフォーマットを有することもできる。接続された２つのピンが同じ最適フォーマットを有する場合は、そのフォーマットが一般に使用される。そうでない場合は、エフェクトグラフの最後に要求された初期出力フォーマットに一般に基づいて、他の何らかの一致するフォーマットが決定される。互いに一致するフォーマットがない場合は、図３に関連して示されるように、あるエフェクトの出力から次のエフェクトの入力にデータが流れるときに変換が行われる。
【００２５】
図３は、それぞれが様々な入力および出力フォーマットをサポートする２つのＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅを含む例示的なエフェクトオブジェクト３００を示すブロック図である。２つの出力フォーマット、ＭＩＬＰｉｘｅｌＦｏｒｍａｔ２４ｂｂｐＢＧＲ、すなわちアスタリスクによって示された最適出力、および第２の出力フォーマット、すなわちＭＩＬＰｉｘｅｌＦｏｒｍａｔ３２ｂｐｐＡＲＧＢをサポートするＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ１が示されている。２つの入力フォーマット、すなわちＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ１の最適出力フォーマットの最適出力フォーマットと同じである最適入力フォーマットをサポートするＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ２が示されている。ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅｌとＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ２の間の接続３１０は、その両方がＭＩＬＰｉｘｅｌＦｏｒｍａｔ２４ｂｐｐＢＧＲの最適フォーマットタイプを共有するので、フォーマット変換を引き起こさない。ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅｌは、その最適フォーマットの出力を求められ、その結果は、ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ２に渡される。
【００２６】
単一の出力フォーマット、ＭＩＬＰｉｘｅｌＦｏｒｍａｔ３２ｂｐｐＧｒａｙ（アスタリスクによって示されたその最適フォーマット）をサポートするＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ２が示されており、エフェクト３００の単一の出力３３０に接続３２０されている。しかし、エフェクト３００の唯一の出力フォーマットは、ＰｒｉｍｉｔｉｖｅＥｆｆｅｃｔ２の唯一の出力フォーマットとは異なるＭＩＬＰｉｘｅｌＦｏｒｍａｔ３２ｂｐｐＡＲＧＢである。したがって、ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ２の出力とエフェクトグラフ全体３００の出力との間で変換が行われる。
【００２７】
フォーマット不一致がどのように対処されるかの一例では、グラフと、グラフ出力に接続されたエフェクトとの間で最適フォーマットが一致しない場合は、要求された最後のフォーマット（すなわち図３に示されるようなＭＩＬＰｉｘｅｌＦｏｒｍａｔ３２ｂｐｐＧｒａｙ）が要求される。要求された最後の出力フォーマットが、グラフの出力として存在しない場合は、ランダムなフォーマットが選択されてもよい。
【００２８】
それぞれの出力ピン（ＩＭＩＬＢｉｔｍａｐＥｆｆｅｃｔＯｕｔｐｕｔＣｏｎｎｅｃｔｏｒ）は、それがグラフの非巡回の性質を保持する限り、ＤＡＧ内の別のエフェクトの入力ピンにリンクすることができる。このリンケージは、１対多（すなわち単一の出力接続は複数の入力接続にリンクすることができるが、その逆は行われない）であり得る。
【００２９】
図４は、例示的なエフェクトオブジェクト４００を示すブロック図である。この実施例では、エフェクトオブジェクト４００は、Ｃ＋＋などのコードで実装された実際のエフェクトコード４１０のアンマネージドの実装を含む、Ｃ＃（Ｃシャープ）など、マネージドコードを使用して構築されたラッパー４２０で構成される。例示的なオブジェクト４００は、単一の入力４０１と単一の出力４９０とを含む。代替実施例では、複数の入力および／または出力が提供されてもよい。フォーマット変換が必要とされまたは提供される場合、こうした変換コードは一般に、ラッパー４２０に含まれる。あるいは、変換コードは、アンマネージドコード部分４１０に含まれてもよく、または他の何らかのモジュールによって提供されてもよい。
【００３０】
エフェクトオブジェクト４００の一部として、変換関数Ｆ（ｐ）４３０も含まれる。一実施例では、変換関数４３０は、アンマネージドコード４１０の一部として含まれる。変換４３０は、視覚要素に何らかの新しい視覚エフェクトを提供するために、一般にビットマップの形の入力視覚要素を変換する関数である。一般に、こうした変換関数４３０は、ラスターグラフィック構成体、ベクトルグラフィック構成体などである視覚要素に適用されてもよい。
【００３１】
たとえば、ユーザインターフェース内にボタンを提供し、マウスがボタンの上に置かれたときにボタンを「輝かせる」ことが望ましいと仮定する。こうした場合、グローエフェクトオブジェクトが作成され、ボタンに関連付けられることができ、グローエフェクトの変換機能は、それが輝いているように見えるようにするためのボタンビットマップへの操作を実施する。ボタンの機能性は変化しないままであり、ボタンの視覚的な側面だけがエフェクトによって修正されることに留意されたい。すなわち、ユーザは依然として、ボタンの上でマウスカーソルをホバーし、ボタンのクリックなどを行い、ボタンは期待通りに動作する。
【００３２】
従来のユーザインターフェースでは、マウスクリックやキーストロークなどの何らかのユーザ入力が視覚要素またはアクティブコンテンツに適用されるべきかどうか判断するために、「ヒットテスト」が一般に使用される。すなわち、ユーザがたとえばボタンをクリックするとき、クリックがボタンに対して行われたかどうか判断するために、ヒットテストコードがマウスクリックの座標をテストする。そうである場合は、ボタンは、押下された状態にそれ自体を再描画し、そのボタンに関連する機能を開始するなど、それに応じて応答する。
【００３３】
ボタンに関連する視覚エフェクトの場合には、ヒットテストが期待通りに動作し続けることが重要である。グローエフェクトオブジェクトの実施例を使用すると、マウスカーソルがボタンの上でホバーするとき、関連するグローエフェクトオブジェクトによって、ボタンが輝いている外観を呈するようにしてもよい。またボタンは、グローエフェクトに加えて、一般にそうであるように、マウスオーバーイベントにより強調表示する。ボタンをクリックすると、予想された結果が同様に生じる。一実施例では、エフェクトオブジェクトは、要素のプロパティとして視覚要素に関連付けられてもよい。
【００３４】
図５は、爆発エフェクトが適用される前およびその後の例示的なボタンを示すブロック図である。関連する視覚エフェクトを複数の断片に分割し、時間とともにそれをユーザインターフェース全体に分散させる爆発エフェクトを生じさせるエフェクトオブジェクトについて考慮されたい。図５は、こうしたエフェクトの前および後の実施例を示している。
【００３５】
フレーム５０１、すなわち「前」フレームでは、爆発エフェクトが適用される前の、恐らくはマウスオーバーイベント、またはボタンへのクリックイベントの結果として従来のボタン５０２を含むユーザインターフェース（ＵＩ：ｕｓｅｒ  ｉｎｔｅｒｆａｃｅ）５００が示されている。フレーム５０２、すなわち「後」フレームは、爆発エフェクトが適用された後のボタン５０４を含む、同じユーザインターフェース５００を示している。ボタン５０４は、ＵＩ  ５００上でそれぞれ互いに分離されている３つの断片５０４ａ〜５０４ｃに分割されて示されている。
【００３６】
爆発エフェクトは、入力ボタンビットマップの各ビットを、複数の断片などの新しい位置にマッピングする爆発変換関数によって一部実施される。こうしたマッピングは、爆発の「離れていく」様子のように、恐らく断片がＵＩのどこかに「落ちつく」まで、時間とともに変化してもよい。
【００３７】
変換に関係なく、ボタンは、期待通りに動作し続ける。すなわち、ユーザは、爆発したボタン５０４のいずれの断片をもクリックしてもよく、ボタンは、それが爆発していないかのように動作する。これは、ヒットテストコードが期待通りに動作し続けることを示唆している。これは、Ｅｆｆｅｃｔオブジェクトを通過するユーザイベント、およびボタンが「ヒット」されたかどうか判断する変換機能によって容易にされる。一般に、これは、変換関数を逆に解くことによって、または双方向変換関数を使用することによって行われる。
【００３８】
変換関数は、アファイン変換を実施しても、非アファイン変換を実施してもよい。たとえば、アファイン変換は、ビットマップの拡大、縮小、伸張または回転を含んでもよい。非アファイン変換は、ブラー、グロー、変形、濃淡、薄暗い色、フェード、スパークル、微光、フラッシュ、モーフなどのエフェクト、あるいはビットマップの要素が何らかのやり方で追加され、削除されかつ／または修正される他のいずれかの類似のエフェクトを含んでもよい。さらに、変換関数は、消失、縮小、脱落、線または点への移行などのエフェクトを提供する場合など、入力ビットマップの元のビットのすべてを変換するとは限らないことがある。他の可能な変換は、渦巻き、波、分解、複製、複数のビットマップを１つに併合するなどを含む。一部の場合では、エフェクトは、入力ビットマップからのビットが複数の位置、任意の位置（１つまたは複数）にマッピングされ、またはすべて除去される結果をもたらすことがある。上記実施例のすべてにおいて、変換関数は、ヒットテスト機能が期待通りに動作し続けることを保証するために、修正されたビットマップが何らかのユーザ入力によって「ヒット」されるかどうか示す能力をも提供する。
【００３９】
図６は、視覚要素に１つまたは複数のエフェクトを提供するための例示的な方法６００を示すブロック図である。図１に示され、また本明細書の下記の方法６００についての説明で使用されたＥｆｆｅｃｔオブジェクト１００などのＥｆｆｅｃｔオブジェクトは、こうした方法６００を活用してもよい。
【００４０】
ブロック６１０で、方法６００は、Ｅｆｆｅｃｔオブジェクト１００の入力で視覚要素ビットマップが提供されることから開始する。これは、任意の数の従来のソフトウェアプロセスおよび／または技術によって行われてもよい。
【００４１】
ブロック６２０で、テストが、ビットマップの処理のためにＥｆｆｅｃｔオブジェクト１００  ＤＡＧに含まれた次のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅがあるかどうか判断する。図１に示されるように、Ｅｆｆｅｃｔオブジェクトは、ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅおよび／または他のＥｆｆｅｃｔオブジェクトを含んでもよく、その入力の１つまたは複数はＥｆｆｅｃｔオブジェクト１００の入力に接続され、それぞれの出力は、１つまたは複数の追加のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅおよび／またはＥｆｆｅｃｔ入力に、あるいはＥｆｆｅｃｔオブジェクト１００の出力に接続される。次のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅがある場合、方法６００は、ブロック６５０で継続する。そうでない場合は、方法６００は、ブロック６３０で継続する。
【００４２】
ブロック６３０で、テストが、Ｅｆｆｅｃｔオブジェクト１００  ＤＡＧに含まれた次のＥｆｆｅｃｔオブジェクトがあるかどうか判断する。次のＥｆｆｅｃｔオブジェクト、たとえば「Ｅｆｆｅｃｔ  Ｂ」がある場合は、この方法は、Ｅｆｆｅｃｔ  Ｂについて、ブロック６１０で継続する。そうでない場合は、方法６００は、ブロック６４０で継続する。
【００４３】
ブロック６４０で、入力ビットマップはＥｆｆｅｃｔオブジェクト１００による処理を完了しており、処理されたビットマップが、出力で提供される。これは、任意の数の従来のソフトウェアプロセスおよび／または技術によって行われてもよい。
【００４４】
ブロック６５０で、前のいずれかのＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅおよび／またはＥｆｆｅｃｔによって処理されたかもしれないビットマップが、次のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅの入力で提供される。これは、任意の数の従来のソフトウェアプロセスおよび／または技術によって行われてもよい。
【００４５】
ブロック６６０で、テストが、ビットマップがＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅによる処理に受入れ可能なフォーマットであるかどうか判断する。そうである場合は、方法６００は、ブロック６８０で継続する。そうでない場合は、方法６００は、ブロック６７０で継続する。
【００４６】
ブロック６７０で、ビットマップは、次のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅによる処理に受入れ可能なフォーマットに変換され、または再フォーマットされる。一実施例では、ビットマップは、最適フォーマットに再フォーマットされてもよい。
【００４７】
ブロック６８０で、図４に示された変換関数Ｆ（ｐ）４３０などの変換関数が入力ビットマップに適用され、その結果一般に、エフェクト（１つまたは複数）がビットマップに適用され、またはエフェクト（１つまたは複数）を含む新しいビットマップが入力マップから生成される。方法６００は、ブロック６２０で継続する。
【００４８】
図７は、エフェクト（１つまたは複数）が適用された視覚要素への正確なヒットテストのために、ヒットした座標を変換するための例示的な方法７００を示すブロック図である。エフェクト（１つまたは複数）を伴わないものとは別に、エフェクト（１つまたは複数）を伴う視覚要素がユーザインターフェース上に置かれ得るので、適切なヒットテストを保証するために、マウスクリックやホバーオーバーイベントなど、ヒットした座標の変換が一般に求められる。図１に示され、また本明細書の下記の方法７００についての説明で使用されたＥｆｆｅｃｔオブジェクト１００などのＥｆｆｅｃｔオブジェクトは、こうした方法７００を活用してもよい。
【００４９】
ブロック７１０で、方法７００は、マウスクリックやマウスオーバーイベントなどのユーザイベントの座標が、Ｅｆｆｅｃｔオブジェクト１００の入力に提供されることから開始する。これは、任意の数の従来のソフトウェアプロセスおよび／または技術によって行われてもよい。
【００５０】
ブロック７２０で、テストが、座標の変換のために、Ｅｆｆｅｃｔオブジェクト１００  ＤＡＧに含まれた前のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅがあるかどうか判断する。図１に示されるように、例示的なＥｆｆｅｃｔオブジェクト  １００などのＥｆｆｅｃｔオブジェクトは、ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅおよび／または他のＥｆｆｅｃｔオブジェクトを含んでもよく、その入力の１つまたは複数はＥｆｆｅｃｔオブジェクト１００の入力に接続され、それぞれの出力は、１つまたは複数の追加のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅおよび／またはＥｆｆｅｃｔ入力に、あるいはＥｆｆｅｃｔオブジェクト１００の出力に接続される。方法７００は、ＤＡＧ内のこうした最後のエフェクトオブジェクトから開始し、座標変換を達成するために前に進む。「前の」エフェクトオブジェクトは、Ｅｆｆｅｃｔオブジェクトの出力で開始し、ＤＡＧ内のいずれかのエフェクトオブジェクトを通過してＥｆｆｅｃｔオブジェクトの入力に向かって戻るＤＡＧ内のエフェクトオブジェクトである。たとえば、ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ１０４ｄは、Ｅｆｆｅｃｔオブジェクト１００の出力１０２より前であり、ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ  １０４ａ、１０４ｂおよび１０４ｃは、１０４ｄより前であり、ＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅ  １０４ｂもまた、１０４ｃの前である。前のＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅがある場合は、方法７００は、ブロック７３０で継続する。そうでない場合は、方法７００は、ブロック７４０で継続する。
【００５１】
ブロック７３０で、図４に示された変換関数Ｆ（ｐ）４３０などの変換関数が、ユーザビットマップの座標に適用される。一般に変換関数は、逆に適用される。方法７００は、ブロック７２０で継続する。
【００５２】
ブロック７４０で、テストが、Ｅｆｆｅｃｔオブジェクト１００  ＤＡＧ内に含まれた前のＥｆｆｅｃｔオブジェクトがあるかどうか判断する。前のＥｆｆｅｃｔオブジェクト、たとえば「Ｅｆｆｅｃｔ  Ａ」がある場合は、この方法は、Ｅｆｆｅｃｔ  Ａについて、ブロック７１０で継続する。そうでない場合は、方法７００は、ブロック７５０で継続する。
【００５３】
ブロック７５０で、方法７００は、変換されたユーザイベントの座標をヒットテストコードなどに提供する。
【００５４】
図８は、この説明による１つまたは複数の実装形態で使用されてもよい汎用コンピューティング環境８００を示すブロック図である。コンピューティングシステム環境８００は、適切なコンピューティング環境の一例にすぎず、特許請求の範囲に記載された主題の使用または機能性の範囲に関する限定を示唆するものではない。コンピューティングシステム環境８００は、例示的な動作環境８００に示された構成要素のいずれか１つまたはその組合せに関する依存性または要件を有するものと解釈すべきでない。
【００５５】
述べられた技術およびオブジェクトは、他の複数の汎用または特別目的コンピューティングシステム環境または構成で動作することができる。使用に適し得るよく知られているコンピューティングシステム、環境および／または構成の例には、それだけに限らないが、パーソナルコンコンピュータ、サーバコンピュータ、手持ち型またはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブル家電、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、上記システムまたは装置のいずれかを含む分散コンピューティング環境などが含まれる。
【００５６】
以下の説明は、コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で述べることができる。一般に、プログラムモジュールは、特定のタスクを実施し、または特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。述べられた実装形態は、通信ネットワークによってリンクされたリモート処理装置によってタスクが実施される分散コンピューティング環境内で実施することもできる。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶装置を含むローカルとリモートの両方のコンピュータ記憶媒体に位置してもよい。
【００５７】
図８を参照すると、本発明を実施するための例示的なシステムが、コンピュータ８１０の形の汎用コンピューティング装置を含んでいる。コンピュータ８１０の構成要素には、それだけに限らないが、処理装置８２０、システムメモリ８３０、およびシステムメモリを含めて様々なシステム構成要素を処理装置８２０に結合するシステムバス８２１が含まれてもよい。システムバス８２１は、メモリバスまたはメモリコントローラ、周辺バスおよび様々なバスアーキテクチュアのいずれかを使用したローカルバスを含めて、複数のタイプのバス構造のいずれかであってもよい。限定するためではなく、例を挙げると、こうしたアーキテクチュアには、業界標準アーキテクチュア（ＩＳＡ：Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、マイクロチャネルアーキテクチュア（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）バス、拡張ＩＳＡ（ＥＩＳＡ：Ｅｎｈａｎｃｅｄ  ＩＳＡ）バス、ビデオ電子規格協会（ＶＥＳＡ：Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ）ローカルバス、およびメザニンバスとしても知られている周辺コンポーネント相互接続（ＰＣＩ：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バスが含まれる。
【００５８】
コンピュータ８１０は一般に、様々なコンピュータ読取り可能媒体を含む。コンピュータ読取り可能媒体は、コンピュータ８１０によってアクセスすることができる任意の使用可能な媒体を含むことができ、揮発性と不揮発性媒体、取外し可能と取外し不可能媒体を含む。限定するためではなく、例を挙げると、コンピュータ読取り可能媒体には、コンピュータ記憶媒体および通信媒体が含まれてもよい。コンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュールまたは他のデータなどの情報を格納するための任意の方法または技術で実装された揮発性と不揮発性、取外し可能と取外し不可能の媒体を含む。コンピュータ記憶媒体には、それだけに限らないが、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を格納するために使用することができ、またコンピュータ８１０によってアクセスすることができる他の任意の媒体が含まれる。通信媒体は一般に、コンピュータ読取り可能命令、データ構造体および／またはプログラムを実施する。上記内容のいずれかの組合せもまた、コンピュータ読取り可能媒体の範囲内に含まれるべきである。
【００５９】
システムメモリ８３０は、読出し専用メモリ（ＲＯＭ：ｒｅａｄ  ｏｎｌｙ  ｍｅｍｏｒｙ）８３１およびランダムアクセスメモリ（ＲＡＭ：ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ）８３２などの揮発性および／または不揮発性メモリの形のコンピュータ記憶媒体を含む。起動時などにコンピュータ８１０内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入出力システム（ＢＩＯＳ：ｂａｓｉｃ  ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｓｙｓｔｅｍ）８３３は一般に、ＲＯＭ８３１に格納される。ＲＡＭ８３２は一般に、処理装置８２０によって直ちにアクセス可能であり、かつ／またはそれによる操作を現在受けているデータおよび／またはプログラムモジュールを含む。限定するためではなく、例示として、図８は、オペレーティングシステム８３４、アプリケーションプログラム８３５、他のプログラムモジュール８３６およびプログラムデータ８３７を示している。
【００６０】
コンピュータ８１０は、他の取外し可能／取外し不可能、揮発性／不揮発性のコンピュータ記憶媒体を含むこともできる。例示するためだけに、図８は、取外し不可能な不揮発性の磁気媒体から読み出しまたはそこに書き込むハードディスクドライブ８４１、取外し可能な不揮発性の磁気ディスク８５２から読み出しまたはそこに書き込む磁気ディスクドライブ８５１、およびＣＤ−ＲＯＭや他の光学媒体などの取外し可能な不揮発性の光ディスク８５６から読み出しまたはそこに書き込む光ディスクドライブ８５５を示している。例示的な動作環境で使用することができる他の取外し可能／取外し不可能、揮発性／不揮発性コンピュータ記憶媒体には、それだけに限らないが、磁気テープ、カセット、フラッシュメモリカード、デジタル多用途ディスク（ＤＶＤ：ｄｉｇｉｔａｌ  ｖｅｒｓａｔｉｌｅ  ｄｉｓｋ）、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどが含まれる。ハードディスクドライブ８４１は一般に、インターフェース８４０などの取外し不可能メモリインターフェースを介してシステムバス８２１に一般に接続され、磁気ディスクドライブ８５１および光ディスクドライブ８５５は一般に、インターフェース８５０などの取外し可能メモリインターフェースによってシステムバス８２１に接続される。
【００６１】
上記に議論され、図８に示されたドライブおよびその関連するコンピュータ記憶媒体は、コンピュータ読取り可能命令、データ構造体、プログラムモジュールおよびコンピュータ８１０のための他のデータの記憶域を提供する。図８で、たとえば、ハードディスクドライブ８４１は、オペレーティングシステム８４４、アプリケーションプログラム８４５、他のプログラムモジュール８４６およびプログラムデータ８４７を格納するものとして示されている。これらの構成要素は、オペレーティングシステム８３４、アプリケーションプログラム８３５、他のプログラムモジュール８３６およびプログラムデータ８３７と同じであることも、それとは異なることもあることに留意されたい。オペレーティングシステム８４４、アプリケーションプログラム８４５、他のプログラムモジュール８４６およびプログラムデータ８４７には、少なくともそれらがそれぞれ異なるコピーであることを示すために、ここでは異なる番号が付与されている。ユーザは、キーボード８６２、および一般にマウス、トラックボールまたはタッチパッドと呼ばれるポインティング装置８６１などの入力装置を介して、コンピュータ８１０にコマンドおよび情報を入力してもよい。他の入力装置（図示せず）は、マイクロホン、ジョイスティック、ゲームパッド、衛星放送アンテナ、スキャナなどを含み得る。これらおよび他の入力装置はしばしば、システムバス８２１に結合されたユーザ入力インターフェース８６０を介して処理装置８２０に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（ＵＳＢ：ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ）などの他のインターフェースおよびバス構造によって接続されてもよい。モニタ８９１または他のタイプの表示装置もまた、ビデオインターフェース８９０などのインターフェースを介してシステムバス８２１に接続される。モニタに加えて、コンピュータは、出力周辺インターフェース８９５によって接続されてもよいスピーカ８９７およびプリンタ８９６などの他の周辺出力装置を含むこともできる。パーソナルコンピュータ８１０への入力装置として、画像８６４のシーケンスをキャプチャすることができるカメラ８６３（デジタル／電子静止またはビデオカメラ、またはフィルム／写真スキャナなど）も含まれてもよい。さらに、１つのカメラだけが示されているが、パーソナルコンピュータ８１０への入力装置として複数のカメラが含まれ得る。１つまたは複数のカメラからの画像８６４は、適切なカメラインターフェース８６５を介してコンピュータ８１０に入力される。このインターフェース８６５は、システムバス８２１に接続され、それによって、画像がＲＡＭ  ８３２、またはコンピュータ８１０に関連する他のデータ記憶装置のうちの１つに送られ、そこに格納されることが可能になる。しかし、画像データは、カメラ８６３の使用を必要とせずに、上記コンピュータ読取り可能媒体のいずれかからも同様にコンピュータ８１０に入力され得ることに留意されたい。
【００６２】
コンピュータ８１０は、リモートコンピュータ８８０など、１つまたは複数のリモートコンピュータへの論理接続を使用して、ネットワーク化された環境内で動作してもよい。リモートコンピュータ８８０は、パーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイス、または他の一般的なネットワークノードとすることができ、また図８にはメモリ記憶装置８８１だけが示されているが、コンピュータ８１０に関して上記で述べた要素の多くまたはすべてを一般に含む。図８に示された論理接続は、ローカルエリアネットワーク（ＬＡＮ：ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ）８７１と広域ネットワーク（ＷＡＮ：ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ）８７３とを含むが、他のネットワークを含むこともできる。こうしたネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
【００６３】
ＬＡＮネットワーキング環境内で使用される場合は、コンピュータ８１０は、ネットワークインターフェースまたはアダプタ８７０を介してＬＡＮ  ８７１に接続される。広域ネットワーキング環境内で使用される場合は、コンピュータ８１０は一般に、モデム８７２、またはインターネットなどのＷＡＮ  ８７３を介して通信を確立する他の手段を含む。内部にあることも、外部にあることもあるモデム８７２は、ユーザ入力インターフェース８６０または他の適切な機構を介してシステムバス８２１に接続されてもよい。ネットワーク化された環境では、コンピュータ８１０に関して示したプログラムモジュール、またはその一部は、リモートメモリ記憶装置（図示せず）内に格納されてもよい。限定のためではなく、例示として、図８は、リモートアプリケーションプログラム８８５をメモリ装置８８１内に常駐するものとして示している。示されたネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用されてもよいことが理解されよう。
【００６４】
１つまたは複数の例示的な実装形態を示し、本明細書でそれについて述べたが、本明細書に添付された特許請求の範囲の精神および範囲から逸脱せずに、本発明に様々な変更が行われ得ることが理解されよう。
【図面の簡単な説明】
【００６５】
【図１】例示的なＥｆｆｅｃｔオブジェクトを示すブロック図である。
【図２】様々な入力および出力ピンを含む例示的なエフェクトオブジェクトを示すブロック図である。
【図３】それぞれが様々な入力および出力フォーマットをサポートする、２つのＥｆｆｅｃｔＰｒｉｍｉｔｉｖｅを含む例示的なエフェクトオブジェクトを示すブロック図である。
【図４】例示的なエフェクトオブジェクトを示すブロック図である。
【図５】爆発エフェクトの適用前および適用後の例示的なボタンを示すブロック図である。
【図６】視覚要素に１つまたは複数のエフェクトを提供するための例示的な方法を示すブロック図である。
【図７】エフェクト（１つまたは複数）が適用された視覚要素への正確なヒットテストのためにヒット座標を変換するための例示的な方法を示すブロック図である。
【図８】この説明による１つまたは複数の実装形態で使用してもよい汎用コンピューティング環境を示すブロック図である。
【図１】
2009508256.tif 000003
【図２】
2009508256.tif 000004
【図３】
2009508256.tif 000005
【図４】
2009508256.tif 000006
【図５】
2009508256.tif 000007
【図６】
2009508256.tif 000008
【図７】
2009508256.tif 000009
【図８】
2009508256.tif 000010
【国際調査報告】
2009508256.tif 000011
2009508256.tif 000012