本発明の第1の態様によれば、グラフィックス処理システムにおいて表示できるようにストローク曲線をレンダリングする方法が提供され、この方法は、
表示されるユーザ空間内で定義されている入力ストローク曲線を受け取るステップと、
表示できるようにサーフェス空間内への受け取った変換を使用して受け取ったストローク曲線を投影するステップと、
サーフェス空間内の1つまたは複数のサンプリング点のそれぞれについて、
投影空間内の対応するサンプリング位置を決定するステップと、
所定の情報を使用して、投影空間内のサンプリング位置のストローク曲線の投影形態の長さに沿った位置に対応する表示されるストローク曲線の投影形態の長さに沿った位置で投影空間内に表示されるストローク曲線の投影形態の定義済み方向におけるエクステントを推定するステップと、
投影空間内に表示されるストローク曲線の投影形態の定義済み方向における推定されたエクステントを使用して投影空間内のサンプリング位置がストローク曲線の投影形態の範囲に入るかどうかを判定するステップと、
表示できるように受け取ったストローク曲線をレンダリングするためのデータを、前記判定に従って投影空間内のサンプリング位置に対応するサーフェス空間内のサンプリング点に割り当てるステップとを含む。
本発明の第2の態様によれば、グラフィックス処理システムにおいて表示できるようにストローク曲線をレンダリングするための装置が実現され、この装置は、
表示されるユーザ空間内で定義されている入力ストローク曲線を受け取るための手段と、
表示できるようにサーフェス空間内への受け取った変換を使用して受け取ったストローク曲線を投影するための手段と、
サーフェス空間内の1つまたは複数のサンプリング点のそれぞれについて、投影空間内の対応するサンプリング位置を決定するための手段と、
所定の情報を使用して、投影空間内のサンプリング位置のストローク曲線の投影形態の長さに沿った位置に対応する表示されるストローク曲線の投影形態の長さに沿った位置で投影空間内に表示されるストローク曲線の投影形態の定義済み方向におけるエクステントを推定するための手段と、
投影空間内に表示されるストローク曲線の投影形態の定義済み方向における推定されたエクステントを使用して投影空間内のサンプリング位置がストローク曲線の投影形態の範囲に入るかどうかを判定するための手段と、
表示できるように受け取ったストローク曲線をレンダリングするためのデータを、前記判定に従って投影空間内のサンプリング位置に対応するサーフェス空間内のサンプリング点に割り当てるための手段とを備える。
本発明では、表示されるユーザ空間内で定義された入力ストローク曲線は、最初に入力ストローク曲線をサーフェス空間(例えば、ストローク曲線が表示される画面に対応する)に変換することによってレンダリングされる。当業者であれば理解するように、これは、ストローク曲線をレンダリングするための知られている従来の技術に類似している。
しかし、本発明では、サーフェス空間内のストローク曲線と直接突き合わせてサーフェス空間内のサンプリング点をテストして曲線の範囲内に入るかどうかを調べるよりはむしろ、サーフェス空間のサンプリング点を「投影」空間内の対応するサンプリング位置にマッピングし、次いで、「投影」空間内のそれらの対応するサンプリング位置を投影空間内に表示されるストローク曲線の投影形態と突き合わせてテストする。
したがって、本発明では、ストローク曲線は、実際には1つまたは複数のサンプリング位置のそれぞれについて投影空間内の対応するサンプリング位置が投影空間内のストローク曲線の投影形態の範囲内に入るかどうかを判定することによって表示できるようにレンダリングされる。
特に、出願人は、サンプリング点がサーフェス空間内のストローク曲線の範囲内にあるかどうかの判定は実際には「投影」空間内のストローク曲線の投影形態に関して間接的に実行されうること、さらに、これは、どのサーフェス空間のサンプリング点がストローク曲線の範囲内に入るか入らないかを判定する効率的で、直截的な方法をもたらしうることを認識している。
さらに、サンプリング位置が投影空間内のストローク曲線の投影形態の範囲内に入るかどうかの判定は、所定の情報を使用して、ストローク曲線の投影形態の長さに沿った適切な位置、つまり、ストローク曲線の投影形態の長さに沿った位置が投影空間内のサンプリング位置と同である位置でストローク曲線の投影形態の定義済み方向(例えば、および好ましくは、さらに以下で説明されるように、「幅」方向)のエクステントを推定することによって本発明で実行される。
ここでもまた、以下でさらに説明するように、出願人は、この方法で表示できるようにストローク曲線をレンダリングすることが可能であるだけでなく、多くの利点ももたらしうることを認識している。
次いで、投影空間内のサンプリング位置がストローク曲線の投影形態の範囲内に入るかどうかの判定の結果を使用して、ストローク曲線を表示するための好適なレンダリングデータをサーフェス空間内の対応するサンプリング位置に割り当てる。
本発明には、多数の利点がある。
第1に、本発明では、所定の情報を使用してストローク曲線の投影形態の定義された(例えば、幅)方向のエクステントを、その長さに沿ったいくつかの点において推定するが、このエクステントは、以下でさらに詳しく説明されるように、事実上、一次元であるものとしてよく、したがって、一次元テーブル(例えば、および好ましくは、一連の「長さ」位置に対する「幅」値を導出するための情報を格納する)として格納され、また一次元「検索」を使用して取り出せる。これは、格納されなければならないデータの量に関して、また使用中のそのデータを取り出すことに関して利点を有する。
同様に、以下でさらに説明されるように、本発明において表示できるようにストローク曲線をレンダリングするときに本発明の所定の情報を使用する必要がある計算は、比較的実装しやすく、既存の、知られているグラフィックス処理技術およびハードウェアを使用して実装されうる。したがって、本発明は、以下でさらに説明されるように、知られている、既存のグラフィックス処理技術およびハードウェアとともに使用するのに適しており、また有利である。
したがって、以下でさらに説明されるように、本発明は、標準的なグラフィックス処理システムにおいて、例えば大きな修正または追加をこのようなシステムに加えることなく、都合よく、効果的に実装されうる。
さらに、本発明は、例えば、「力ずく」の細分化およびテセレーションの技術を使用する場合と比べて、また専用の曲線レンダリング用ハードウェアを必要とすることもなく、ストローク曲線をレンダリングするための、また特に、フォントの文字、またはフォントの文字の一部分を形成する曲線などの、1つまたは複数のアプリケーションによって繰り返し(複数回)必要とされるストローク曲線をレンダリングするための、より効率的で使い勝手のよいメカニズムを実現することができる。
本発明で使用されるストローク曲線の投影形態に関係する所定の情報は、以下でさらに説明されるように、これが関係する曲線の平行移動、回転、および一様なスケーリングに対し、またユーザ空間内で定義されているような対応する曲線のストローク幅への変更に対し不変にされうる。このことは、例えば、本発明の方法における所定の情報の与えられた集合を使用することで、ユーザ空間内で定義されているように対応するストローク曲線のさまざまな異なる形態を表示できるようにレンダリングし、それによって、本発明の有効性および有用性をさらに高めることができる。
本発明は、一般に、表示されるストローク曲線の任意好適な、また望ましい形態に対し使用されうるが、以下でさらに説明されるように、好ましくは表示されるフォントの文字(例えば、英字)またはフォントの文字の一部分を定義するストローク曲線などの、繰り返し、また頻繁に使用される可能性の高いストローク曲線を表示するためのレンダリングに特に適している。
本発明を使用してレンダリングする表示されるストローク曲線は、当業者であれば理解するように、典型的には、曲線が表示されることを必要とするアプリケーションによってグラフィックス処理システムに供給されるか、またはグラフィックス処理システムに対して指示される。この段階では、ストローク曲線は、上述のように、「ユーザ空間」内で定義される。
ユーザ空間内で定義されているようなストローク曲線は、好ましくは曲線の位置および曲線に関係する1つまたは複数のパラメータなどに関して、任意の好適な、望ましい方法で定義されうる。
例えば、上述のように、表示されるストローク曲線は、典型的には、中心曲線および関連するユーザ空間ストローク幅によってユーザ空間内で定義される。中心曲線は、始点と終点との間に引かれる曲線の種類を示す情報と一緒に、典型的には始点、終点、および1つまたは複数の中間点を含むユーザ空間内の複数の制御点の位置によって典型的には定義される。例えば、ストロークの中心曲線として、直線、二次ベジエ曲線(単一の中間制御点を必要とする)、三次ベジエ曲線(2つの中間制御点を必要とする)、楕円弧、および(非一様有理)Bスプラインが挙げられる。
したがって、好ましい一実施形態では、本発明は、ユーザ空間内で複数の制御点の位置の形態で表示できるようにレンダリングされるユーザ空間内で定義されているストローク曲線、曲線の種類を示す情報、およびユーザ空間内のストローク幅を示す情報を受け取るステップまたは受け取るための手段を含む。
本発明のプロセスを使用して表示できるようにレンダリングされる(ユーザ空間内で定義されている)ストローク曲線は、例えば曲線を描画することを必要とするアプリケーションによって最初に定義または指示されるようなストローク曲線であってもよい。
しかし、本発明を使用して表示できるようにレンダリングされるストローク曲線は、ユーザ空間内で定義されている例えば初期曲線から派生する曲線とすることも可能である。言い換えると、本発明のプロセスを使用してレンダリングされるストローク曲線は、本発明の方法で処理される形態に他の曲線または初期曲線を変換することによって導出されている可能性があることも企図される。例えば、好ましい一実施形態では、本発明を使用してレンダリングされるストローク曲線は、アフィン変換(および特に、平行移動、回転、および/または一様スケーリングの成分からなる変換)を前の曲線に適用することによって導出されうる。
レンダリングされるストローク曲線が、例えば曲線を描画する必要ことを必要するアプリケーションによって最初に定義されるか、または指示されるような他の曲線または初期曲線の一部であることもありうる。
例えば、当業者であれば理解するように、アプリケーションは、多くの場合、端と端とを接して接続された多数の好適な線分、例えば、限定はしないが、直線、二次ベジエ曲線、三次ベジエ曲線、楕円弧、および(非一様有理)Bスプラインのうちの1つまたは複数などを含むストローク経路をレンダリングする必要がある。次いで、それぞれのそのような線分は、本発明の技術を使用してレンダリングされる「入力」ストローク曲線を形成することができる。
このような一実施形態において、ストローク経路全体を構成するそれぞれのセグメントは、本発明の技術を使用して処理されレンダリングされうる(つまり、ストローク経路のそれぞれの線分が、本発明の方法で個別に処理されレンダリングされる)。あるいは、他の実施形態では、ストローク経路の一部のみ、例えば、ストローブ経路を形成する線分の1つまたは複数が、本発明の技術を使用して処理され、レンダリングされ、1つまたは複数の他のレンダリング技術が、ストローク経路の残り部分(例えば、他の線分)をレンダリングするために使用される。
特に好ましい実施形態において、本発明は、本発明の方法で表示できるように1つまたは複数のストローク曲線からなる集合、好ましくは複数のストローク曲線を処理することを含み、曲線を一緒にして、またはいくつかの実施形態では他の線分と組み合わせて得られる集合が、好ましくはフォントの文字(例えば、英字)などの、表示されるストローク経路またオブジェクト全体を形成する。言い換えると、この集合に含まれる1つまたは複数のストローク曲線のそれぞれは、例えば経路またはオブジェクト全体のセグメントを形成し、1つまたは複数のストローク曲線のそれぞれは、本発明の方法でレンダリングされ、処理される。
同様に、本発明を使用してレンダリングされるストローク曲線は、ユーザ空間内で定義されている初期曲線を細分化することによって導出することができることも企図される。
例えば、出願人は、自己交差部分つまり尖点を持つ三次曲線などのいくつかの曲線、および自己重複する曲線(つまり、ストローク曲線が自分自身と重なる程度まで曲がる曲線-ストローク曲線の一方の領域がストローク曲線の他方の領域と重なる(その中に侵入する)については、本発明の技術を使用して十分な正確さで直接的に処理することができない場合があることを認識している。しかし、そのような曲線は、そのような初期曲線がその後それぞれが個別にレンダリングされる複数のより好適な曲線セクションまたはセグメントに最初に分割される場合に、本発明の技術を使用してレンダリングすることが可能な場合があることが認識されている。
したがって、特に好ましい一実施形態では、本発明は、さらに、ユーザ空間内で定義されているストローク曲線を複数のストローク曲線セグメントに細分化するステップまたは細分化するための手段をさらに備え、ストローク曲線セグメントの1つまたは複数が本発明の方法で処理されレンダリングされる。ストローク曲線を細分化する適切な方法に関する決定は、好ましくは、性能(例えば、ストローク曲線をレンダリングするのに要する時間)と品質(例えば、レンダリングされた形態におけるストローク曲線の品質)との間の望ましいトレードオフの関係などの1つまたは複数の事前定義基準に基づいてグラフィックス処理システムによって行われる。
したがって、本明細書で「表示できるようにレンダリングされる入力ストローク曲線」への言及は、文脈上他の意味に解すべき場合を除き、本発明の特定の処理を受けるべき曲線であることを意味し、そのような曲線としては、例えば、注目しているアプリケーションによって最初に定義されているような曲線、例えば、注目しているアプリケーションによって最初に定義されているような曲線または経路の一部分、またはその曲線のサブセクションなどの最初に定義された曲線から導出された、または関係する曲線であってもよいことに留意されたい。
ストローク曲線を表示するためにユーザ空間内で定義されているように表示されるべき入力ストローク曲線をサーフェス空間表現に投影することは、例えば当技術分野ですでに知られているように、所望の、また好適な方法で実行されうる。したがって、これは、適切な「ユーザ-サーフェス」空間変換を使用(実装)してユーザ空間内で定義されているようなストローク曲線をサーフェス空間内に投影することによって実行することが可能であり、または好ましくは実行される。この「ユーザ-サーフェス」は、好ましくは、当技術分野で知られているように、(同時にまたは異なる時期に)レンダリングされるストローク曲線とともにグラフィックス処理システムに入力されるか、またはグラフィックス処理システムに対し指示される。(言い換えると、ユーザ-サーフェス変換は、グラフィックス処理システムによって決定されず、代わりに、ユーザ空間内で定義されているようなストローク曲線をサーフェス空間内のその望ましい形態に投影するために必要なマッピングを指示する事前定義変換としてシステムに入力されるか、またはシステムに対し指示される。)
表示されるストローク曲線のサーフェス空間内への変換(投影)が生成された後に、サーフェス空間内の1つまたは複数の、および典型的には複数の、サンプリング点が、実際に、サーフェス空間内に出現するときにストローク曲線と突き合わせてテストされる(ただし、本発明の技術を使用して)。
実際に、レンダリングされる曲線と突き合わせてテストされるサーフェス空間内のサンプリング点は、望ましい、また好適な形態をとることができ、望み通りに、また任意の好適な方法で導出され、生成されうる。これは、例えば、グラフィックス処理システムがイメージを表示できるようにレンダリングする動作をする特定のメカニズムに依存しうる。
例えば、レイキャスティングシステムの場合、それぞれのサンプリング点は、「光線」に対応することが可能であり、好ましくは対応し、次いで、それぞれの光線(サンプリング点)は、本発明の方法でストローク曲線の投影形態と突き合わせてテストされる。(当技術分野で知られているように、レイキャスティングは、画面上のそれぞれのピクセルから始まって、観察者の眼から、そのピクセルを通り、シーン内に入る経路(光線)をトレースし、何に当たったかを(したがって、観察者が何を見たかを)判断する技術である。したがって、それぞれの光線が、実際に、テストされるサンプリング点を定義する。)
その一方で、ポリゴンラスター処理ベースのグラフィックス処理システムの場合、サンプリング点は、例えば、サーフェス空間内の投影されたストローク曲線を覆う1つまたは複数のプリミティブを最初に生成し、次いで、本発明の方法でストローク曲線と突き合わせてテストするためにその1つまたは複数のプリミティブをラスター処理して(当技術分野で知られているように)サンプリング点を生成することによって生成されるものとしてもよく、また好ましくは生成される。
この場合、本発明は、特に好ましい一実施形態において、サーフェス空間内で投影されたストローク曲線を覆う1つまたは複数のプリミティブを生成するステップ、または生成するための手段と、サーフェス空間内の1つまたは複数のプリミティブ内の1つまたは複数のサンプリング点のそれぞれについて、その後に、(本発明の方法でストローク曲線の投影形態と突き合わせてその後テストされる)投影空間内の対応するサンプリング位置を決定するステップ、または決定するための手段とをさらに備える。
また、レイキャスティングシステムの場合に、例えば、テストされるサンプリング点を生成するときにサーフェス空間内の投影されたストローク曲線を覆う境界プリミティブを生成する必要はないが、例えば、境界プリミティブを最初に生成し、次いで必要ならば境界プリミティブと交差する光線(サンプリング点)に対し本発明の方法でテストのみを行うことも可能であることに留意されたい。実際、これにより、レイキャスティングシステムにおける本発明の改善された実装を容易に行うことができるが、それは、曲線の境界プリミティブと突き合わせて光線を最初にテストし、次いで、光線(サンプリング点)が最初に境界プリミティブと交差する場合に曲線「それ自体」と突き合わせて光線のテストのみを行うことが効率である場合があるからである。
サーフェス空間内に現れるときにストローク曲線を覆う1つまたは複数のグラフィックスプリミティブが、生成される場合、それらの1つまたは複数のグラフィックスプリミティブは、サーフェス空間内に現れるときにストローク曲線を覆う1つまたは複数の境界ボックスを定義すること、および/またはサーフェス空間内に現れるときにストローク曲線の端点にぴったり合わさる境界ポリゴンを定義する、つまり始点および終了(制御)点のところで境界ポリゴンを定義することなど、任意の好適な、望ましい技術を使用して生成され、定義されうる。
次いで、サーフェス空間内の(複数の)プリミティブ内のサンプリング点(当業者であれば理解するように、最終的に、適宜曲線を表示するようにシェーディング処理される)が、「投影」空間内の対応するサンプリング位置(場所)にマッピングされる。言い換えると、ストローク曲線を表示するために評価されるサーフェス空間内のそれぞれのサンプリング点(例えば、および好ましくは、サーフェス空間内のストローク曲線を覆う生成された1つまたは複数のプリミティブ内のそれぞれの(適切な)サンプリング点)は、投影空間内の適切な対応するサンプリング位置にマッピングされる(次いで、投影空間のサンプリング位置が、表示されるストローク曲線に対応する投影空間内のストローク曲線の投影形態と突き合わせてテストされる(以下でさらに説明されるように))。
サーフェス空間内のサンプリング位置に対応する投影空間内のサンプリング位置は、任意の好適な、または望ましい方法で決定されうる。これは、例えば、投影空間内のサンプリング位置をテストする際に突き合わせる表示されるストローク曲線の「投影」形態の性質に依存しうる。
特に好ましい一実施形態では、サーフェス空間内のサンプリング点に対応する投影空間内のサンプリング位置は、サーフェス空間内のサンプリング点をユーザ空間内の対応する位置に最初にマッピングし、次いで、ユーザ空間内の対応する位置をストローク曲線の投影形態が定義される投影空間内の対応する位置にマッピングすることによって決定される。
この配置構成では、サーフェス空間内のサンプリング点は、好ましくは、受け取ったストローク曲線をサーフェス空間に投影するために使用される変換の逆変換を使用して(つまり、「ユーザ-サーフェス」の逆の変換を使用して)ユーザ空間内の対応する位置にマッピングされる。(上述のように、「ユーザ-サーフェス」変換は、グラフィックス処理システムに渡されるか、または指示され、この逆変換は、このプロセスの一部として使用される。適切な逆「ユーザ-サーフェス」変換(つまり、「サーフェス-ユーザ」変換)は、したがって、グラフィックス処理システムに直接的に知られるか、またはグラフィックス処理システムによって導出可能である)。
次いで、投影空間内の対応する位置へのユーザ空間内の対応する位置のマッピングは、好ましくは、少なくとも一部は、他の変換をそのサンプリング位置に適用することによって実行され、この変換は、実際には、サンプリング位置をユーザ空間内のその初期位置から投影空間内のその等価の位置(または、少なくとも、投影空間内の対応する位置を直接的に決定するために使用することができる変換された位置)に変換する。
この後者の変換は、本明細書では、「ユーザ-投影」変換と称され、以下でさらに詳しく説明されるように、実際には、ユーザ空間内で定義されているようなストローク曲線を投影空間内におけるその投影形態に変換するときにプロセスの全部または一部として適用されなければならない変換である。
特に好ましい実施形態では(以下でさらに詳しく説明されるように)、この「ユーザ-投影」変換は、等質空間内で(「ユーザ空間」ストローク曲線(およびサンプリング点)の等質空間表現に)適用されることが意図されており、したがって、特に好ましい一実施形態では、ユーザ空間内のサンプリング点を投影空間内の対応する位置にマッピングするステップまたはマッピングするための手段は、最初に、ユーザ空間内のサンプリング点を「等質空間」内に置くステップまたは置くための手段と、(サンプリング点が「等質投影空間」内にあるとみなせるように)(適切な)ユーザ-投影変換を等質ユーザ空間内のサンプリング点に適用するステップまたは適用するための手段と、次いで、適切なパースペクティブ分割を等質投影空間内のサンプリング点に適用することによって等質投影空間内のそのように変換されたサンプリング点を投影空間内に投影するステップまたは投影するための手段とを備える。
以下でさらに詳しく説明されるように、それぞれの与えられた曲線は、典型的には、それ固有の特定の「ユーザ-投影」変換を有し、与えられた曲線に使用されるユーザ-投影変換は、グラフィックス処理システムによって受け取られた後に表示される曲線に関係する情報から直接的に計算されうるか、または必要に応じて、また必要なときに使用できるように事前に決定して、予め格納しておくことも可能である。
最も好ましくは、与えられた定義済みの曲線に対する1つまたは複数の、および好ましくは複数の、事前定義「ユーザ-投影」変換は、好ましくは変換が適用される1つまたは複数の曲線の指示と一緒に、グラフィックス処理システム内の、またはグラフィックス処理システムによってアクセス可能なデータストア(メモリ)内に格納される。次いで、レンダリングされる特定の曲線に対する「ユーザ-投影」変換が、好ましくは、レンダリングプロセス実行中に(例えば、関連するサンプリング点を投影空間にマッピングするときに)必要に応じて、また必要なときに、データストア(メモリ)から取り出される(検索される)。
これは、出願人が、本明細書で説明されているように、本発明は繰り返しレンダリングする必要のあるストローク曲線をレンダリングする際に特定の利点を有することを認識しているため、可能であり、また望ましいことである。例えば、アプリケーション(例えば、電子ドキュメント)とともに使用される特定のフォントの英字、数字、記号など、または特定のフォントの英字、数字、記号などの一部分を形成するストローク曲線、および/またはラベル、またはその一部分を衛星ナビゲーション(satnav)アプリケーションのマップ上に形成するストローク曲線は、典型的には、再びレンダリングされる必要があり、再び使用される。
このことは、本発明を使用してレンダリングされうる、およびレンダリングされるストローク曲線が、予め、つまり、任意のレンダリングオペレーションの開始前に、知られている可能性のあることを意味する。したがって、それぞれのそのような曲線によって必要とされる「ユーザ-投影」変換は、予め決定されて、グラフィックス処理システムにより後から使用できるように格納され、また適切な変換は、例えば表示されるストローク曲線に関する情報とともに、例えばグラフィックス処理システムに供給または指示されるか、あるいは表示されるストローク曲線が受け取られた後グラフィックス処理システムによってデータストアから取り出されて検索されうる。
したがって、特に好ましい一実施形態では、事前定義の、または所定の変換が、ストローク曲線の投影形態と突き合わせてテストするためにユーザ空間内のサンプリング点を投影空間内の対応するサンプリング位置にマッピングするときに使用される。
同様に、特に好ましい一実施形態では、サーフェス空間内のサンプリング点を投影空間内の対応するサンプリング位置にマッピングするステップまたはマッピングするための手段は、好ましくは事前定義のユーザ空間からサーフェス空間への(ユーザ-サーフェス)変換の逆変換の形態の、1つまたは複数の事前定義の、または所定の変換を使用し、次いで定義済みの「ユーザ-投影」変換を使用することを含む。
当業者であれば理解するように、「ユーザ-サーフェス」変換および「ユーザ-投影」変換は、上では別々に説明されているが、これらの変換は、実際には、別々に適用することも、また単一の「サーフェス-投影」変換に組み合わせることも可能である。
次いで、投影空間内の対応するサンプリング位置が、決定された後、このサンプリング位置は、投影空間内の表示されるストローク曲線の投影形態と突き合わせてテストされる。
出願人は、ユーザ空間曲線の投影形態をサンプリング位置をテストするときに使用されるストローク曲線の形態として使用することで、ユーザ空間内で定義されているような対応するストローク曲線における変化、またはそのようなストローク曲線の変換の少なくともいくつかの形態に対しプロセス(および特に、本発明のプロセスで使用される曲線に関係する所定の情報)を不変にできることを発見した。例えば、これにより、ユーザ空間内で定義されているような対応するストローク曲線の異なる形態(例えば、幅、スケール、向きなど)に対し同じ所定の情報を使用することが可能になり、またこのことは、例えば、ユーザ空間内で定義されているストローク曲線に適用されうるサーフェス空間へのそれぞれの変換について与えられたストローク曲線に関係する所定の情報の異なる集合を導出して格納する必要はないことも意味しうる。
ストローク曲線の投影形態が定義されている(およびサンプリング位置がテストされる)投影空間は、例えば、ストローク曲線の投影形態の性質および/またはその曲線に関して使用される所定の情報の性質に応じて、任意の好適な、望ましい形態をとりうる。
サンプリング位置が表示されるストローク曲線の投影形態と突き合わせてテストされる投影空間への本明細書における言及は、文脈上他の意味に解すべき場合を除き、所定の「エクステント」(例えば、幅)推定情報が関係するストローク曲線の特定の形態が定義されている空間を単純に指示することが意図されており、また特に、そうでない場合には投影空間の任意の特定の特性または要求条件を暗示することは意図されていないことに留意されたい。
好ましい一実施形態では、本発明の投影空間は、本発明でも考えられる「ユーザ空間」および「サーフェス空間」(「等質ユーザ空間」および「等質投影空間」)とは異なる「空間」である。しかし、当業者であれば、このことが本質的でなく、いくつかの状況では、投影空間は、例えば、ユーザ空間と同じ(等価)であってもよいことを理解するであろう。
好ましい一実施形態では、投影空間は二次元であり、これにより、本発明が特に適している(フォントなどに対する)ストローク曲線の定義が関係する典型的には二次元のユーザ空間と「マッチ」させることができる。したがって、投影空間は、好ましくは、表示されるストローク曲線の投影形態(投影空間内のサンプリング位置)の定義が関係する2つの、好ましくは直交する軸を有する。好ましい一実施形態では、投影空間は、デカルト座標空間であり、この場合、投影空間方向の2本の軸は、その空間内においてx軸とy軸である。
したがって、特に好ましい一実施形態では、本発明において使用されるストローク曲線の投影形態は、定義済みの二次元の投影空間内へのユーザ空間内のストローク曲線の投影である。
本発明におけるストローク曲線の投影形態として使用される投影空間内の「ユーザ空間」ストローク曲線の投影形態は、任意の好適な、望ましい形態をとりうるが、これは、その長さに沿った1つまたは複数の点に対する定義済み(例えば、および好ましくは、「幅」)方向のそのエクステントを推定することを可能にする情報によって表されうるような形態とすべきである(本発明では、この形態の所定の情報を使用して、ストローク曲線の投影形態と突き合わせて投影空間内のサンプリング点をテストするので)。
しかし、出願人は、以下でさらに説明されるように、ストローク曲線のいくつかの投影形態は、本発明の文脈において特に有利であることを認識している。
例えば、出願人は、ストローク曲線の投影形態が、ストローク曲線の終点が特定の、好ましくは事前定義された位置に置かれているような形態、最も好ましくは、同じ軸上に置かれているような形態であることが有利であると認識している。
したがって、特に好ましい一実施形態では、ストローク曲線の投影形態は、曲線の終点を投影空間内の定義済み位置に置くストローク曲線の一形態である。最も好ましくは、ストローク曲線の投影形態の終点は両方とも、好ましくはx軸上など、投影空間内の同じ軸上に置かれる。
以下でさらに説明されるように、本発明におけるストローク曲線の投影形態に関連して使用される所定の情報から、表示されるストローク曲線のより正確な表現(したがってその曲線のより正確なレンダリング)を得るために、ストローク曲線の対応する投影形態において可能な限り互いに平行になるように、最も好ましくは投影されるストローク曲線のエクステントが推定される投影空間内の定義済み(例えば、「幅」)方向(例えば、および好ましくは、以下でさらに説明されるように、軸方向(好ましくはy軸など)に平行になるように、ユーザ空間内のストローク曲線の中心曲線上の法線を向き付けることが有利であることもさらに認識されている。
本質的に、これは、以下で説明されるように、この曲線に対し法線方向にあるユーザ空間がストローク曲線の対応する投影形態における注目している定義済み、例えば幅(例えば、軸)方向に平行な場合に、その方向のストローク曲線の投影形態のエクステントが、スケーリング係数に応じて、ユーザ空間定義済みストローク幅(知られているパラメータである)に対応しているべきであるからである。次いで、これにより、以下でさらに説明されるように、本発明におけるストローク曲線の投影形態に関して使用される所定の情報を用いて、関連する点におけるストローク曲線のエクステント(幅)のより正確な推定を行うことができる。したがって、関連する定義済み、例えば幅(例えば軸)方向にできる限り平行になるように、ユーザ空間の法線を、ストローク曲線の対応する投影形態内に出現するときに曲線に揃えることが好ましい。
理想的には、ストローク曲線の対応する投影形態におけるあらゆるユーザ空間法線は、投影空間内の関連する定義済み、例えば幅(例えば軸)方向に平行となるが、これは、容易に可能にはなりえず、したがって、出願人は、ユーザ空間法線のうちの少なくとも2つが、互いに平行になるように、最も好ましくは望ましい方向に平行になるように配置されることが好ましいと認識しているが、それというのも、このようになされた場合には、他の法線も同様にその方向に近づくべきであり、特にこれが曲線の終点に対する法線に関してなされる場合にはそうであるからである。
したがって、特に好ましい一実施形態では、ストローク曲線の投影形態は、ユーザ空間内の対応するストローク曲線の終点に関連付けられている法線ベクトルが互いに平行になるように、また最も好ましくは投影空間内の特定の、好ましくは所定のもしくは選択された方向(この方向は、好ましくは、所定の情報によってストローク曲線の投影形態のエクステントを決定することができる投影空間内の定義済み(例えば「幅」)方向である)に沿って(平行になるように)置かれるように構成されるストローク曲線の一形態である。以下でさらに説明されるように、これらの法線ベクトルは、ストローク曲線の投影形態における投影空間の、好ましくはy軸などの、軸に平行に好ましくは置かれる。
特に好ましい一実施形態では、ストローク曲線の投影形態は、とりわけ、特定の(および好適な)変換をストローク曲線に適用することによってユーザ空間内で定義されているようにストローク曲線から生成される。言い換えると、ストローク曲線の投影形態は、少なくとも一部は、ユーザ空間内で定義されているようなストローク曲線の変換バージョンである。
この変換は、上述の「ユーザ-投影」変換となり、それは、好ましくは、上述のようにサンプリング位置をユーザ空間から投影空間にマッピングするときに使用される。
「ユーザ-投影」変換は、ストローク曲線の投影形態を生成するためにユーザ空間内のストローク曲線に直接適用されうる場合がある。しかし、上述のように、特に好ましい一実施形態において、この変換は、等質空間内で実行されることが意図されており、したがって、ユーザ空間内で定義されているようなストローク曲線からストローク曲線の投影形態を生成するプロセスは、それに加えて、最初に曲線を「等質ユーザ空間」内に置くことと(ユーザ空間内で定義されているようなストローク曲線の等質空間表現を生成すること)と、「等質投影空間」内に曲線を形成するためにユーザ-投影変換が等質ユーザ空間内の曲線に適用された後に、等質投影空間内の変換された曲線にパースペクティブ分割を施して曲線を投影空間内に(その投影形態に)投影することとを伴う。
したがって、特に好ましい一実施形態において、ストローク曲線の投影形態は、最初にユーザ空間(このユーザ空間は、例えば、および好ましくは二次元空間である)内で定義されているようなストローク曲線を等質ユーザ空間(例えば、および好ましくは、三次元空間)内に置くことによって生成されうる(および好ましくは生成される)。次いで、等質ユーザ空間内の曲線は、好ましくは、(「ユーザ-投影」変換を使用して)変換され、等質投影空間内のそのように変換された曲線にパースペクティブ分割を(例えば、当技術分野で知られている方法で)施してそれを投影空間内に投影し(曲線がここでもまたユーザ空間と同じ次元の空間内で表現されるように)、投影空間内に曲線の投影形態を生成する。
この場合、「ユーザ-投影」変換は、等質ユーザ空間内の曲線に適用される変換となる(つまり、等質空間内に置かれたときの曲線のユーザ空間形態)。
出願人は、このことが有利なのは、ユーザ空間内のストローク曲線の、投影空間内のその対応する投影形態へのマッピングが、等質空間、つまり、ユーザ空間より1つ多い次元を有している空間を介して実行される場合であることを認識している。例えば、ユーザ空間内のストローク曲線を等質空間を介してその望ましい投影形態に変換することは、変換プロセスに関連付けられうるさまざまな数学的演算を使用することが容易になる場合があるので、有利である。これは、例えば、従来のコンピュータグラフィックスにおける同次座標の使用(例えば、パースペクティブ変換)に類似しており、この場合、1つの空間内の三次元座標は、等質空間内の四次元座標として表現される。
ストローク曲線の投影形態を生成するときに使用される「ユーザ-投影」変換は、例えばストローク曲線の望ましい投影形態に応じて、任意の好適な、望ましい形態をとりうる。しかし、上述の理由から、「ユーザ-投影」変換は、好ましくは、ストローク曲線を上述のようにストローク曲線の特定の対応する投影形態に変換する(または、変換が曲線の等質ユーザ空間表現に適用される場合には、その曲線を、パースペクティブ分割を施したときに上述のように曲線の特定の投影形態を形成する形態に変換する(この場合、等質空間内で適用される「ユーザ-投影」変換は、その曲線が投影空間内で望ましい形態を必ず有するような変換でなければならない(つまり、パースペクティブ分割の後に)))。
したがって、上述のように、好ましい一実施形態では、「ユーザ-投影」変換は、結果としてユーザ空間内で定義されているようなストローク曲線上の少なくとも2つの点が投影空間内の所定の、または事前定義された位置にマッピングされる(例えば、パースペクティブ分割の後に、ただし、それが変換に続いて実行されるべきである場合)ことになる変換を含む。
したがって、この変換は、ストローク曲線の(中心曲線)上の第1の点(好ましくは曲線の一方の端点)を受け取って、それを第1の事前定義された位置にマッピングし(パースペクティブ分割の後に、ただし、それが変換に続いて実行されるべきである場合)、またストローク曲線の(中心曲線)上の第2の点(好ましくは曲線の他方の端点)を受け取って、それを第2の事前定義されて位置にマッピングする(パースペクティブ分割の後に、ただし、それが変換に続いて実行されるべきである場合)。最も好ましくは、ユーザ-投影変換は、曲線の開始と終了の制御点を、好ましくはx軸などの同じ軸上の(別々の)点にマッピングする(パースペクティブ分割の後に、ただし、それが変換に続いて実行されるべきである場合)。
同様に、上述のように、「ユーザ-投影」変換は、それに加えて、またはいくつかの実施形態では、その代わりに、互いにより平行な変換に続いて(およびパースペクティブ分割の後に、ただし、それが変換に続いて実行されるべきである場合)ユーザ空間内で定義されているようなストローク曲線の法線ベクトルを形成するような、また好ましくは、それらが投影空間内の定義済み(例えば「幅」)方向(好ましくは軸方向)により平行となるような(ここでもまた、適宜、パースペクティブ分割に続いて)変換である。
これは、好ましくは、ストローク曲線上の2つの点に関連付けられている法線ベクトル、好ましくは曲線の2つの端点に関連付けられている法線ベクトルが、変換に続いて(およびパースペクティブ分割の後に、ただし、それが変換に続いて実行されるべきである場合)正確に平行にされる(および好ましくは望ましい、例えば「幅」(例えば「軸」)方向に平行にされる)ように「ユーザ-投影」変換を定義することによって、上述のように実現される。そのような変換に続いて他の法線ベクトルは投影空間内に出現するときに正確に平行にならない場合があるが、出願人は、そのような変換であっても、結果として、それらの法線ベクトルは整列度が改善されるように向き付けられるであろうことを発見した。
したがって、好ましい一実施形態では、本発明において使用するためにユーザ空間内のストローク曲線を投影空間内のその対応する投影形態に投影するプロセスの全部または一部として使用される「ユーザ-投影」変換は、ストローク曲線上の2つまたはそれ以上の点、例えば、および好ましくは、ストローク曲線の始点と終点に関連付けられている法線ベクトルの相対的配向を変える変換を含む。特に好ましい一実施形態では、この変換は、それらの法線ベクトルが曲線の変換形態において互いに平行になるように(同じ方向を指すように)、また最も好ましくは、それらの法線ベクトルが所定の情報によってストローク曲線の投影形態のエクステントを推定することができる投影空間内の定義済み(例えば、幅)方向(例えば、軸方向)に沿った方向を指すようにそれらの法線ベクトルの相対的配向を変える変換である。
したがって、投影空間が直交するx軸およびy軸に関して定義されている本発明の好ましい実施形態では、「ユーザ-投影」変換は、好ましくは、ユーザ空間内のストローク曲線の開始と終了の制御点に関連付けられている法線ベクトルを、ストローク曲線の対応する投影形態において法線ベクトルが互いに平行になるように、また投影空間内の軸の1つ、例えば、および好ましくは、y軸に平行になるように向きを変更する変換である。
(当業者であれば理解するように、上述のようなストローク曲線の2つまたはそれ以上の点の法線ベクトルの向きを変える「ユーザ-投影」変換では、曲線上のそれぞれの点においてなす法線ベクトルの角度は(特定の点における曲線の接線に関して)90°からストローク曲線の変換形態における90°以外の角度に変更され、この角度は典型的には曲線上の点毎に異なる。しかし、ストローク曲線の変換形態におけるこれらのベクトルは、したがって、従来の意味では「法線ベクトル」でない可能性がある、つまり、ストローク曲線の変換形態に対し法線方向にないが、それでも、本明細書では便宜上そのまま「法線ベクトル」と称される。そのため、例えば「法線ベクトル」と称されるストローク曲線の変換(および投影)形態におけるベクトルは、したがって、文脈上他の意味に解すべき場合を除き、ストローク曲線の「ユーザ空間」形態における法線ベクトルに対応するベクトルである。)
したがって、「ユーザ-投影」変換は、好ましくは、ストローク曲線上の少なくとも2つの点を所定の、または事前定義された位置にマッピングする変換、および/または対応する変換されたストローク曲線において平行になるようにストローク曲線上の2つまたはそれ以上の点に関連付けられている法線ベクトルの相対的配向を変える変換を含む(両方の場合において、パースペクティブ分割的の後、それが「投影」曲線生成プロセスの一部として実行されるべきである場合)。特に好ましい一実施形態では、ユーザ-投影変換は、これらのアクションの両方を、好ましくはユーザ空間内のストローク曲線上の同じ2つまたはそれ以上の点に関して、実行する変換を含む。
ユーザ空間内のストローク曲線を投影空間内の本発明で使用するためのその対応する投影形態にマッピングするときに使用される上記の「ユーザ-投影」変換は、例えば、アフィン変換(成分)と射影変換(成分)として表すことができる。変換のアフィン成分は、ストローク曲線上の少なくとも2つの点が変換によって所定の、または事前定義された位置にマッピングされるという条件を満たすために使用されるが、変換の射影成分は、(少なくとも、変換が等質空間内で実行される場合にはパースペクティブ分割の後に)曲線上の少なくとも2つの点のユーザ空間法線ベクトルが曲線の投影形態において平行である(好ましくは、与えられた方向に平行である)という条件を満たすために使用される。しかし、理解されるように、変換は、任意の好適な、また望ましい方法で表すことができる(および計算することができる)。
「ユーザ-投影」変換が、ストローク曲線の投影形態を生成するために使用されうる(使用される)場合、上述のように、サーフェス空間内のサンプリング点を投影空間内の対応するサンプリング位置にマッピングするプロセス(の全部または一部)に好ましくは使用されるのがその「ユーザ-投影」変換である。
したがって、特に好ましい一実施形態において、上述のように、複数のそのようなユーザ-投影変換は、レンダリングできることが望まされている各ストローク曲線について導出され、格納される(次いで、各ストローク曲線をレンダリングするときにサンプリング位置をユーザ空間から投影空間にマッピングする場合に、適宜使用される)。当業者であれば理解するように、これらの変換は、ユーザ空間内で定義されているようにそのストローク曲線またはそれぞれのストローク曲線に対し任意の好適な、望ましい方法で容易に導出されうる。
本発明では、投影空間内のサンプリング位置を、投影空間内のストローク曲線の投影形態と突き合わせてテストして、それらが投影空間内のストローク曲線の投影形態の範囲内に入るかどうかを調べることは、ストローク曲線の投影形態と突き合わせてサンプリング位置をテストすることによって直接的に実行されないが、その代わりに、所定の情報を使用して注目しているサンプリング位置に対応をするストローク曲線の投影形態の長さに沿った位置で定義されている方向におけるストローク曲線の投影形態のエクステントを推定することによって実行される。
本発明で使用されるストローク曲線の投影形態の定義済み方向におけるエクステントを推定するために使用される所定の情報は、任意の好適な、望ましい形態をとることができる、つまり、所定の情報だけを使用するか、または他の情報と組み合わせて(以下でさらに詳しく説明されるように)使用することで、ストローク曲線の投影形態の相対的エクステントを推定することができる任意の形態をとることができる。
ここで、所定の情報より、定義済み方向においてストローク曲線の投影形態のエクステントを推定することができるものとして所定の情報に言及しているが、この言及は、所定の情報によって、与えられた方向における曲線のエクステントを推定することができることを示すことが意図されていることに留意されたい。定義されている方向が、曲線に関して任意の好適な、望ましい方向であってもよいが、最も好ましくは、曲線の「長さ」に沿っているということに対して、「幅」を一般的には横切る方向である(つまり、定義されている方向は、曲線の長さには沿っていないが、一般的には、曲線の幅を横切るものと考えることができる)。したがって、特に好ましい一実施形態では、本発明において使用される所定の情報を使用することで、ストローク曲線の投影形態の幅方向におけるエクステントを推定することができる。
しかし、この方向を「幅」方向であるとして定義することは、所定の情報を使用して曲線の中心線に対する正確な法線方向の曲線のエクステントを推定することができることを要求することは意図されていないことにも留意されたい(これは、曲線上のいくつかの点に関する場合であるが、以下でさらに説明されるように、典型的には、曲線に沿ったすべての点についての場合ではない)。実際には、所定の情報を使用してユーザ空間内で定義されているようなストローク幅を推定できることを要求することも意図されていない。
むしろ、以下でさらに説明されるように、一般的にその幅を横切る方向のストローク曲線のエクステントは、以下でさらに説明されるように、これはストローク曲線の少なくともいくつかの形態の効率的で、十分に正確なレンダリングを行いやすくすることが判明しているため、推定されうるということがその意図である。
所定の情報が関係する定義済み(例えば、幅)方向は、好ましくは、曲線に沿っては変化しない、つまり、好ましくは、単一の定義済み(例えば、幅)方向があり、所定の情報を使用して、曲線の長さに沿ったいくつかの点におけるその単一の定義済み方向の曲線のエクステントを決定することができる。
したがって、好ましい一実施形態では、所定の情報が関係する定義済み(例えば、幅)方向は、ストローク曲線の投影形態に沿ったすべての点について同じ方向である。
同様に、ストローク曲線の投影形態の「長さ」に沿った位置に対する言及は、ストローク曲線の投影形態の、幅を横切ることから区別されるような、長さに沿って一般的に広がる位置を指すことが意図されており、それらの位置に対するさらなる制約または要求条件のあることを意味するわけではないことも理解されるべきである。
言い換えると、一般に、その投影形態において、ストローク曲線は、実際には、与えられた方向に一般的には広がると考えることができ、曲線に関して「長さ」方向となるのがこの方向である。次いで、「幅」方向は、一般的にその長さ方向を横切るか、またはその長さ方向に垂直である方向であることが意図されているが、「長さ」方向に正確に垂直である必要はない(が、正確に垂直であってもよい)。
好ましい一実施形態では、「長さ」方向は、ストローク曲線の投影形態の始点と終点とを結ぶ(直)線であるとみなされる。
特に好ましい一実施形態では、定義済み(「幅」)方向は、その投影形態におけるストローク曲線の法線におおよそ平行である方向とみなされる。次いで、「長さ」方向は、その方向に一般的に垂直である、また好ましい一実施形態では垂直である方向である。
本発明において使用され、定義されているような曲線に沿った点において定義済み(例えば、幅)方向(例えば、y方向)のストローク曲線の投影形態のエクステントは、事実上、その点におけるその方向の曲線の「幅」を表すものとみなすことができる(実際に、これによりその点におけるその方向の曲線の「幅」を推定することができる)が、ストローク曲線の投影形態の「押し出し」方向がその点における定義済み方向(例えば、y軸)に垂直である(スケーリング係数を適用される)場合に、この「エクステント」指示(例えば、曲線の「yエクステント」は、ストローク曲線のユーザ空間定義済みストローク幅wにのみ対応することにも留意されたい。したがって、本発明では、曲線の「長さ」方向に沿ったそれぞれの点におけるユーザ空間ストローク幅を単純に格納し、使用することはしないが、むしろ、それぞれの点における適切な方向の曲線のエクステントを推定できる値(または複数の値)を使用する。
特に好ましい一実施形態では、所定の情報を使用してストローク曲線の投影形態のエクステントを推定することができるがその際によりどころとする定義済み(例えば「幅」)方向は、投影空間の軸のうちの1つに平行である。したがって、特に好ましい一実施形態では、所定の情報を使用して投影空間の軸の1つに平行な方向のストローク曲線の投影形態のエクステントを推定することができる(したがって、本発明おいて参照される定義済み(例えば「幅」)方向は、その軸の方向となる)。この場合、ストローク曲線の投影形態の「長さ」に沿った対応する方向は、好ましくは、投影空間の他の軸に平行である。
したがって、特に好ましい一実施形態では、本発明は、所定の情報を使用して第2の軸方向における注目しているサンプリング点の位置に対応する投影空間内のその第2の軸方向に沿った位置のストローク曲線の投影形態の投影空間内の第1の軸方向(定義済み(例えば、「幅」)方向となる)におけるエクステントを推定するステップまたは推定するための手段を備える。投影空間が二次元であり、直交するx軸およびy軸を有する好ましい場合において、第1の軸方向(定義済み「幅」方向)は、例えば、および好ましくは、y軸に沿った方向であり、また第2の軸方向(「長さ」方向)は、x軸に沿った方向である(またはその逆である)ものとしてもよい。
そこで、本発明の第3の態様によれば、グラフィックス処理システムにおいて表示するストローク曲線をレンダリングする方法が提供され、この方法は、
表示されるユーザ空間内で定義されている入力ストローク曲線を受け取るステップと、
表示できるようにサーフェス空間内への受け取った変換を使用して受け取ったストローク曲線を投影するステップと、
サーフェス空間内の1つまたは複数のサンプリング点のそれぞれについて、
投影空間内の対応するサンプリング位置を決定するステップと、
所定の情報を使用して、投影空間内のサンプリング位置の投影空間の第2の軸方向に沿った位置に対応する投影空間の第2の軸方向に沿った位置における投影空間内の表示されるストローク曲線の投影形態の投影空間の第1の軸方向におけるエクステントを推定するステップと、
表示されるストローク曲線の投影形態の投影空間の第1の軸方向における推定されたエクステントを使用して投影空間内のサンプリング位置がストローク曲線の投影形態の範囲に入るかどうかを判定するステップと、
表示できるように受け取ったストローク曲線をレンダリングするためのデータを、前記判定に従って投影空間内のサンプリング位置に対応するサーフェス空間内のサンプリング点に割り当てるステップとを含む。
本発明の第4の態様によれば、グラフィックス処理システムにおいて表示するストローク曲線をレンダリングするための装置が実現され、この装置は、
表示されるユーザ空間内で定義されている入力ストローク曲線を受け取るための手段と、
表示できるようにサーフェス空間内への受け取った変換を使用して受け取ったストローク曲線を投影するための手段と、
サーフェス空間内の1つまたは複数のサンプリング点のそれぞれについて、投影空間内の対応するサンプリング位置を決定するための手段と、
所定の情報を使用して、投影空間内のサンプリング位置の投影空間の第2の軸方向に沿った位置に対応する投影空間の第2の軸方向に沿った位置における投影空間内の表示されるストローク曲線の投影形態の投影空間内の第1の軸方向におけるエクステントを推定するための手段と、
表示されるストローク曲線の投影形態の投影空間の第1の軸方向における推定されたエクステントを使用して投影空間内のサンプリング位置がストローク曲線の投影形態の範囲に入るかどうかを判定するための手段と、
表示できるように受け取ったストローク曲線をレンダリングするためのデータを、前記判定に従って投影空間内のサンプリング位置に対応するサーフェス空間内のサンプリング点に割り当てるための手段とを備える。
当業者であれば理解するように、本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、第1の軸方向は、好ましくは、投影空間内のy軸に沿っており、第2の軸方向は、好ましくはx軸に沿っている。
これらの配置構成では、ストローク曲線の投影形態は、事実上、他方の軸方向(例えば、x方向)の曲線のエクステントに沿ったさまざまな位置における一方の軸方向(例えば、y方向)のそのエクステントに関して定義されることは理解されるであろう。
言い換えると、中心経路およびその経路に沿った固定垂直ストローク幅に関してストローク曲線を定義する(上述のように、通常は、そのような曲線がユーザ空間内で定義される方法である)のではなく、本発明では、これらの実施形態においては少なくとも、他方の軸方向の曲線に沿った1つまたは複数の点において一方の軸方向の曲線のエクステントを決定することを可能にするストローク曲線の定義を使用する。
出願人は、この方法でストローク曲線を表現し、定義することが可能であり、ストローク曲線のそれぞれの定義はストローク曲線をレンダリングするのに役立ち、また少なくともストローク曲線のいくつかの形態については、実際に十分に正確なレンダリング結果をもたらしうることを認識している。
そこで、本発明は、ストローク曲線のそのような定義の使用に拡大適用される。
そこで、本発明の第5の態様によれば、グラフィックス処理システムにおいて使用するストローク曲線を定義する方法が提供され、この方法は、
与えられた空間の一方の軸方向に沿った複数の位置に対し与えられた空間の他方の軸方向における曲線のエクステントを推定するために使用する情報に関して曲線を定義するステップを含む。
本発明の第6の態様によれば、グラフィックス処理システムにおいて使用するストローク曲線を定義するための装置が実現され、この装置は、
与えられた空間の一方の軸方向に沿った複数の位置に対し与えられた空間の他方の軸方向における曲線のエクステントを推定するために使用する情報に関してストローク曲線を定義するための手段を備える。
本発明の第7の態様によれば、グラフィックス処理システムにおいて使用するストローク曲線を定義するためのデータ構造が構成され、このデータ構造は、
与えられた空間の一方の軸方向に沿った複数の位置に対し与えられた空間内の他方の軸方向におけるストローク曲線のエクステントを推定するために使用するデータ構造の配列を含む。
当業者であれば理解するように、本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。したがって、例えば、与えられた空間は、好ましくは二次元であり、2つの軸方向は、好ましくは直交しており、好ましくは直交座標空間内のx軸およびy軸(またはその逆)に沿ったものである。
本発明で使用される所定の「エクステント推定」情報を使用すると、ストローク曲線の投影形態の長さに沿った位置における関連する定義済み(例えば、幅)方向のストローク曲線の投影形態のエクステントを任意の好適な、望ましい方法で推定することができる可能性がある。
特に好ましい一実施形態では、所定の情報を使用することで、ストローク曲線の投影形態が覆う定義済み、例えば、幅(例えば、軸)方向における位置の範囲を推定することができる。(次いで、位置のこの範囲を投影空間内のサンプリング点の位置と突き合わせてテストし、サンプリング点が曲線の範囲内に入っているかどうかを調べることができる。)
ストローク曲線の投影形態によってその長さに沿った特定の位置において覆われる定義済み、例えば、幅方向における位置の範囲は、任意の好適な、望ましい方法で推定されうる(所定の情報はそれに応じて構成される)。
特に好ましい一実施形態では、ストローク曲線の投影形態が覆う定義済み方向における位置の最大値および最小値を推定するために、所定の情報を使用することができ、また好ましくは使用する。
特に好ましい一実施形態では、これは、所定の情報を使用して関連する定義済み、例えば、幅(例えば、軸)方向の(曲線の中心線のそれぞれの側に対する)曲線の外側境界(エッジ)の位置を推定することによって行われる。
例えば、所定の情報は、好ましくは、ストローク曲線の投影形態の第1の(例えば、上側の)外側境界の推定を表す定義済み、例えば、幅(例えば、軸)方向に沿った第1の位置、およびストローク曲線の投影形態の他の(例えば、下側の)外側境界の推定を表す定義済み、例えば、幅(例えば、軸)方向に沿った第2の位置を決定するために使用される。
そこで、定義済み、例えば、幅方向のストローク曲線の投影形態によって覆われる位置の範囲は、曲線のそれらの推定された境界の間の位置の範囲となる。
理解されるように、曲線の投影形態の中心線から曲線に沿った与えられた点における曲線の一方の(例えば、上側の)外側エッジ(境界)までの定義済み、例えば、幅方向に沿った距離は、中心線からその点における曲線の他方の(例えば、下側の)外側エッジまでの幅方向に沿った距離と同じであってもよいが、少なくともストローク曲線の投影形態が等質空間を介して生成される場合には、曲線の中心線上の与えられた点から曲線の投影形態内のそれぞれのエッジまでの距離が、ストローク曲線が等質投影空間内に出現すると投影空間内に投影される場合に行われるパースペクティブ分割のせいで異なることは比較的よくあることだと言える。
したがって、曲線のそれぞれのエッジ(外側境界)の位置を独立して推定するのが好ましく、単純に一方の境界の位置を推定してからその位置を曲線のそれぞれの側(曲線の上および下)にとることはしない(これは、必要ならば実行することも可能であるが)。
したがって、例えば、x軸およびy軸を有する投影空間を使用する場合、所定の「エクステント推定」情報によって、好ましくは、与えられたx位置で曲線によって覆われる投影空間内の最小および最大のy値を推定することができるが、ただし、このy値は、注目している点におけるストローク曲線の投影形態の下側および上側の外側境界(エッジ)のy軸上の位置の推定を表す。
所定の「エクステント推定」情報それ自体によって、定義済み、例えば、幅方向のストローク曲線の投影形態のエクステントの推定を決定することが可能な場合がある。しかし、特に好ましい一実施形態では、ストローク曲線の投影形態の関連するエクステントの推定を行うために、所定の情報が、他の情報と一緒に使用される。
特に好ましい一実施形態では、関連する定義済み、例えば、幅(例えば、軸)方向のストローク曲線のエクステントを推定するために、ストローク曲線の投影形態に関係する所定の情報が、(上述のように、グラフィックス処理システムによって認識される)表示される曲線のユーザ空間内のストローク幅と一緒に使用されるべきである(および使用される)。
以下でさらに説明されるように、表示される曲線のユーザ空間内のストローク幅と併せて使用されるべき所定の情報使用することは、特に有利であるが、それは、これにより、ユーザ空間内の望ましいストロークに関係なく所定の情報を注目しているストローク曲線に対し使用することができるからである(ストローク曲線の投影形態のエクステントを推定する際に望ましいストローク幅が考慮されるので)。言い換えると、これにより、所定の情報を、所定の情報が対応する曲線の望ましいユーザ空間ストローク幅の変化に対して不変であるようにできるということである。
(この場合、所定の情報およびストローク曲線に対するユーザ空間ストローク幅(グラフィックス処理システムによって受け取られるような)は、実際には、投影空間内のサンプリング位置をテストする際に突き合わせるストローク曲線の「投影」形態のエクステントを決定するために組み合わせて使用される。)
定義済み方向のストローク曲線の投影形態のエクステントを推定するときに使用される所定の「エクステント推定」情報は、例えば、ストローク曲線の投影形態の長さに沿った関連する位置において投影空間内のストローク曲線の投影形態によって覆われる位置の範囲を推定することを可能にする任意の好適な、望ましい形態をとりうる。
特に好ましい一実施形態において、また本明細書の説明から理解されるように、ストローク曲線の投影形態への変換が等質空間を介して実行される場合に、所定の「エクステント推定」情報を使用するプロセスは、等質投影空間内の曲線の中心点および(調整された-以下で説明されるように)単位法線を決定するステップと、それをユーザ空間ストローク幅と一緒に使用して等質投影空間内の曲線の境界の位置を推定するステップと、次いで、パースペクティブ分割によってその推定された曲線境界点を投影空間内に投影し、投影空間内のサンプリング点の(マッピングされた)位置を投影空間内のそのように推定された曲線境界点と突き合わせてテストする(その後、これを曲線の他方のエッジ(境界点)について繰り返す)ステップとを含むことができ、好ましくは含む。
したがって、特に好ましい一実施形態では、定義済み(例えば、幅)方向のストローク曲線の投影形態のエクステントを推定するために使用される所定の「エクステント推定」情報は、ストローク曲線がストローク曲線の等質投影空間形態内に出現するときにユーザ空間内のストローク曲線の単位法線ベクトルの等質投影空間内の関連する(例えば、幅)方向のストローク曲線の等質投影空間の長さに沿った各位置における成分を推定するために使用されうる情報を含む。
以下でさらに説明されるように、出願人は、曲線の中心線からストローク曲線の外側エッジまでの距離は、注目している位置における曲線の単位法線ベクトル(の等質投影空間形態)の関連する成分をユーザ空間ストローク幅wの半分だけスケーリングすることによって推定されうることを認識している(単位法線ベクトルをユーザ空間ストローク幅の半分でスケーリングすることにより、曲線の中心線上の点から曲線の境界上の点まで法線ベクトルが延びるので)。
したがって、単位法線ベクトル成分情報を、(知られることになる)ユーザ空間内のストローク曲線の幅と一緒に使用して、望ましい方向のストローク曲線の等質投影空間のエクステントを推定することができる。
さらに、単位法線ベクトルの関連するエクステント(成分)を使用可能にする所定の情報が決定され使用される場合に、それが有利であるのは、これにより、その情報を注目している特定の曲線のすべての望ましいユーザ空間ストローク幅に対し使用できるようになるからである(例えば、レンダリングすることが望まれているそれぞれの異なるストローク幅について情報の集合を決定し、格納しなければならない場合と比べて)。
さらに、以下でさらに説明されるように、出願人は、ストローク曲線の関連する、例えば、幅方向に沿った距離のそのような推定が、その点において、関連する、例えば、幅方向のストローク曲線の等質投影空間形態の中心線の位置に「追加される」場合に、ストローク曲線の等質投影空間形態によって覆われる関連する方向の境界位置が推定されうることを認識している。
したがって、特に好ましい一実施形態では、ストローク曲線の投影形態に関して使用される所定の情報は、関連する長さ位置におけるストローク曲線の等質投影空間形態の中心線の関連する(例えば、幅)方向での位置を推定することを可能にする情報も含む(つまり、ストローク曲線の等質投影空間形態の中心線の「幅」方向における位置を推定するために使用される情報を含む)。
次いで、この情報を、例えば、その位置におけるユーザ空間内の対応するストローク曲線の単位法線ベクトルの等質投影空間内の成分の推定とともに、またユーザ空間内のストローク幅とともに使用して、上述のように、投影空間内で表示されるストローク曲線の投影形態に収まるy値の範囲を推定することができる。
したがって、本発明の特に好ましい一実施形態において、投影空間内の与えられた方向のストローク曲線のエクステントを推定するときに使用される所定の情報は、ストローク曲線の等質投影空間形態の中心線上の点の位置を推定するために使用される情報、およびストローク曲線の等質投影空間形態上のその点においてストローク曲線の等質投影空間形態内に出現するときにユーザ空間単位法線ベクトルの定義済み(例えば、幅)方向成分を推定するために使用される情報を含む。
出願人は、曲線の長さに沿った位置におけるストローク曲線の等質投影空間形態の関連する、例えば、幅方向に沿ったエクステントのより正確な推定は、以下でさらに説明されるように、曲線の単位法線ベクトルの関連する方向の成分を推定するときに調整係数を適用することによって行われうることをさらに認識している。このようなより正確な推定があれば、レンダリング品質が向上し、例えば、これは、レンダリングされるストローク曲線の幅が比較的大きいときにとりわけ望ましい場合がある。
したがって、特に好ましい一実施形態では、所定の「エクステント推定」情報は、曲線に対するユーザ空間単位法線ベクトルの等質投影空間形態の関連する方向における成分の調整された推定を決定することを可能にする情報を含む。最も好ましくは、これにより、実質的に、調整係数を加えた(または引いた)単位法線ベクトルの成分を決定することができる。
これらの配置構成において行われる調整(および適用される調整係数)は、望み通りに選択され、導出されうる。しかし、特に好ましい一実施形態において、また以下でさらに説明されるように、これは、曲線の長さに沿った関連する位置で曲線の中心線への接線ベクトル(および好ましくは、このプロセスが等質空間を介して実行される場合に等質投影空間内に出現するような接線ベクトル)に基づき、またはそのような接線ベクトルを使用する。
最も好ましくは、調整(係数)は、実際には、曲線の長さに沿った関連する位置で曲線の中心線に対する単位接線ベクトルの関連する(例えば、幅)方向における成分を使用するか、または考慮する。次いで、以下でさらに説明されるように、これは、対応する単位法線ベクトル成分の推定を「調整」し、次いで、ストローク曲線の関連するエクステントのより正確な推定が行われる。
(ここでもまた、単位接線ベクトルの関連する成分を使用する所定の情報を使用することが有利であるが、それは、その情報を注目している特定の曲線の望ましいすべてのユーザ空間ストローク幅に対し使用することができるからである。)
したがって、特に好ましい一実施形態では、ストローク曲線の等質投影空間形態の長さに沿った位置における定義済み、例えば、幅方向のストローク曲線の投影形態のエクステントを推定するときに使用される所定の情報は、ストローク曲線に沿った関連する位置におけるストローク曲線の単位法線ベクトルに基づく、または関係する情報を、好ましくはストローク曲線に沿った関連する位置における曲線の中心線に対する単位接線ベクトルに基づく、または関係する情報と一緒に含む。
特に好ましい一実施形態では、調整係数(成分)は、接線ベクトルと、「法線」ベクトルが投影空間内の定義済み(幅)方向から逸脱する程度の両方に依存する。
本発明で使用される所定の情報が、ストローク曲線の等質投影空間形態の中心線の位置および曲線の等質投影空間形態内のユーザ空間単位法線ベクトルの成分を推定することを可能にすることを意図されている場合、この所定の情報は、実際には、投影空間内に表示される対応するストローク曲線の中心線(経路)の投影に関係し、次いでこれを、表示されるストローク曲線の定義済みユーザ空間ストローク幅wと一緒に使用して、投影空間内のサンプリング位置をテストする際に突き合わせる表示されるストローク曲線の「実際の」投影形態を実際に「生成する」。
所定の「エクステント推定」情報それ自体は、ストローク曲線の投影形態に関係する情報を推定することを可能にする任意の好適な形態をとりうる。
上述のように、ストローク曲線の投影形態が等質空間内で実行される変換を介して導出される特に好ましい一実施形態では、所定の「エクステント推定」情報は、等質投影空間内の曲線の変換形態に関して導出される情報を含む。とりわけ、出願人は、そのような配置構成において等質投影空間内の曲線の変換形態に関係する所定の情報を導出し、格納することによって、投影空間内のストローク曲線の投影形態に対して上述の対応する情報を導出することがそれでも容易に可能であるが、それは、その情報が実際には等質投影空間内の曲線に関係する情報に基づいてパースペクティブ分割を実行するか、またはその情報を使用することによって、または実際に、等質投影空間内の曲線に関係する情報を直接使用することによって導出可能であるからである。
例えば、所定の情報を使用して、曲線の中心線の定義済み(例えば、幅)方向の位置を曲線の長さに沿った与えられた位置において推定することができる場合には、例えば、x軸、y軸、およびz軸で定義された三次元等質投影空間の場合、等質投影空間内の与えられたx位置における曲線の中心線の位置のy成分およびz成分を使用して、投影空間内の曲線の中心曲線上のそのx位置においてy位置を推定することができるが、それは、投影空間内のy位置が、等質投影空間内のz成分によって分割される等質投影空間内のy成分となるからである。したがって、例えば、等質投影空間内の曲線の位置のy成分およびz成分を所定の「エクステント推定」情報として格納すると、これにより、注目しているx位置に対する投影空間内の曲線の中心線の対応するy位置を推定することができる。
ユーザ空間法線ベクトルの関連する成分の場合についても同様のコメントがあてはまる。ここでもまた、等質投影空間内の曲線の変換形態内のユーザ空間単位法線ベクトルが、x成分、y成分、およびz成分を有する場合、与えられたx(長さ)位置におけるパースペクティブ分割に続く投影空間内のその単位法線ベクトルのy成分は、等質投影空間内の変換された単位法線ベクトルのz成分で除算された等質投影空間内の変換された単位法線ベクトルのy成分によって与えられる。したがって、ここでもまた、等質投影空間内の曲線の変換形態内の単位法線ベクトルのy成分およびz成分を所定の「エクステント推定」情報として格納しておくと、その情報を使用して、投影空間内の単位法線ベクトルの対応する成分を簡単に導出することができる。
さらに、上述のように、調整係数が単位法線ベクトルに適用される場合、以下でさらに説明されるように、そのような調整係数を簡単に導出して、これを等質投影空間内の転換された曲線の単位法線ベクトルのそれぞれの成分(例えば、y成分およびz成分)に適用することができ、その後、この調整成分は、上述のように、投影空間内のストローク曲線の投影形態に関して使用される対応する単位法線ベクトル成分を導出するためにそのまま使用されうる。
したがって、特に好ましい一実施形態では、本発明において格納され使用される所定の「エクステント推定」情報は、等質投影空間内の曲線の「長さ」に沿った(等質投影空間内の軸方向に沿った)与えられた位置について、その位置における等質投影空間内の曲線の変換形態内の曲線の中心線の位置に関係する情報、およびその位置における等質投影空間内の曲線の変換形態内の単位法線ベクトルに関係する情報を含む。後者は、好ましくは、注目している位置における等質投影空間内の変換された曲線の中心線への接線ベクトルに基づく、または関係する係数を含む。
したがって、本発明の特に好ましい一実施形態では、表示できるように与えられたストローク曲線をレンダリングするときに使用される投影空間内のストローク曲線の投影形態が、等質空間を介した投影空間内へのユーザ空間内のストローク曲線の投影を含む場合、投影空間内の定義済み方向のストローク曲線のエクステントを推定するときに使用される所定の情報は、等質投影空間内で変換されたようなストローク曲線の中心線上の点の位置に関係する(少なくとも部分的には定義する)情報、および等質投影空間内の変換されたストローク曲線上のその点のユーザ空間単位法線ベクトルの等質投影空間内の方向に関係する(少なくとも部分的には定義する)情報を含む。
ここで、上記の説明から理解されるように、上記のように投影空間内でストローク曲線と突き合わせてサンプリング点のテストが「論理的に」行われるが、そのようなテストの実施に際して、投影空間それ自体の、または投影空間それ自体に関係する座標または所定の情報を使用しなくてもよいが(これを実行することもできるが)、例えば、上記のように、例えば、等質投影空間からの、または等質投影空間に関係する座標および所定の情報を、その代わりに使用するか、またはその所定の情報も使用することができることにも留意されたい。したがって、例えば、本発明のプロセスを実行する際に、等質投影空間からの座標を使用する(それらの座標についてパースペクティブ分割を物理的に実行しない)等価なテストを使用することも可能である。(しかし、サンプリング点のテストは、そのまま、投影空間内で実行されており(ストローク曲線の投影形態と突き合わせて)、等質投影空間に関係する情報を使用してテストが実行されうるというだけである。)
上述のように、二次元ユーザ空間、およびそれゆえ三次元等質空間について、ストローク曲線の長さに沿った与えられた位置に対する所定の情報は、それに応じて、好ましくは、等質投影空間内の変換されたストローク曲線の長さに沿った位置において等質投影空間内のストローク曲線の中心線の位置の成分(例えば、および好ましくは、y成分およびz成分)をそれぞれ表す2つのスカラー値を含む(これらの値を投影空間内のストローク曲線の中心線の幅方向の位置を推定するために一緒に使用することができる)。
同様に、この所定の情報は、注目している位置における等質投影空間内の変換されたストローク曲線の単位法線ベクトルの2つの成分(例えば、および好ましくは、y成分およびz成分)をそれぞれ表す、または関係する2つのスカラー値をさらに含む。好ましくは、これら2つの値は、投影空間内のストローク曲線の投影形態の長さに沿った位置に対応する等質投影空間内のストローク曲線に沿った位置における等質投影空間内の変換された曲線の中心線への接線ベクトルに基づく調整係数を含む(考慮したものである)。
したがって、特に好ましい一実施形態では、曲線の長さに沿った与えられた点について格納されている所定の情報は、4つの離散値を含む。
上記の実施形態において、定義済み、例えば、幅方向のストローク曲線の投影形態のエクステントは、ユーザ空間ストローク幅の一次有理関数として推定されうることは理解されるであろう(ストローク幅は、関連する推定された「単位」ベクトル値をスケーリングするために使用されるからである)。しかし、ユーザ空間ストローク幅の他の関数を使用することが可能であることも企図される。例えば、推定の精度を上げるために、したがって、必要ならば、レンダリング品質を高めるために、代わりに、二次(またはそれ以上の次数の)有理近似を使用することも可能である。(二次(またはそれ以上の次数の)有理近似は、理解されるように、等質投影空間内の曲線への接線と曲線それ自体との間のギャップを考慮し、さらには法線ベクトルの微分について補正する)。
上記のことから理解されるように、所定の「エクステント推定」情報は、好ましくは、例えば、および好ましくは、ストローク曲線の投影形態の中心線の幅(例えば、軸)方向の位置ならびに関連する「長さ」位置におけるストローク曲線の投影形態の定義済み、例えば、幅方向のエクステントを推定するために、個別に、または組み合わせて、および単独でまたは(好ましくは)他のデータとともに使用されうる複数の離散値(好ましくは4つの離散データ値)の形の情報である。
表示されるストローク曲線の投影形態に関して使用するための所定の情報は、グラフィックス処理システムによって使用するのに適した方法で構成され、格納されうる。特に好ましい一実施形態では、例えば、および好ましくは上述の形態の、複数の離散データ値またはデータ値の集合が、表示されるストローク曲線の与えられた形態に対して使用できるように格納される。
最も好ましくは、適切な「エクステント(例えば、幅)推定」データ(例えば、より好ましくは上述の所定の情報を)が、投影空間内のストローク曲線の関連する「長さ」方向に沿った複数の、好ましくは等間隔に並ぶ点に関して(およびしたがって、最も好ましくは、投影空間内の軸方向、例えばx軸に沿って等間隔に並ぶ複数の点について)用意され、格納される。
複数の点について、および好ましくは、複数の等間隔に並ぶ点について「エクステント(例えば、幅)推定」データを格納することには、多くの利点がある。例えば、情報は、関連する長さ方向に沿って複数の点について格納されるため、情報は、一次元(1D)データ構造体として(つまり、単一の方向に沿った複数の点のそれぞれに対するデータの集合として)格納されうる。
同様に、この方法で所定の「幅推定」データを格納することによって、単一のパラメータ、つまり、注目している曲線の関連する長さ方向に沿った位置の尺度を使用してデータを取り出す(「検索する」)ことができる。したがって、例えば、所定の「エクステント(幅)推定」データが、投影空間内の、例えばx軸に沿った、複数の点について格納されている場合、その特定のx値に適したエクステント(幅)推定データをデータ構造体内で検索するために、投影空間内のサンプリング位置の関連するx値を使用することができる。
したがって、特に好ましい一実施形態では、所定のエクステント(「幅」)推定データは、投影空間内の与えられた、好ましくは選択された方向(「長さ方向」となる)に沿って等間隔に並ぶ複数の点のそれぞれについて格納される(この方向は、好ましくは、投影空間内において軸、例えば、x軸に平行である)。
「エクステント推定」データは、好ましくは、それが関係する適切な「長さ」方向を参照することで取り出せる(識別される)ように格納される。これは、例えば、「エクステント推定」データの各集合を「長さ」方向、例えば、x値に沿ったその対応する位置に関連付けることによって、および/または各長さ位置に対応する配列内にデータを格納することによって達成されうる。
次いで、これにより、例えば、与えられたサンプリング点がストローク曲線の投影形態の範囲内に入るかどうかを判定することが望まれている場合に、使用される投影空間内のサンプリング位置の関連する長さ方向に沿った位置、例えば、そのx座標で、データストア内の適切な所定のエクステント(「幅」)推定データをサンプリングする(検索する)ことができる。次いで、取り出された所定の「エクステント推定」情報を使用することで、例えば、および好ましくは上述の方法で、サンプリング位置の投影空間内の「長さ」方向に沿った位置におけるストローク曲線の投影形態の関連する(幅)方向のエクステントを決定することができる。
複数の点のそれぞれに対する所定のエクステント(例えば、「幅」)推定データは、任意の好適な、望ましい方法で格納されうる。しかし、特に好ましい一実施形態では、データは、1つまたは複数のグラフィックステクスチャの形態で、また最も好ましくは、1つまたは複数の1D(一次元)グラフィックステクスチャの形態で格納される。これは、所定のデータをテクスチャの形態で格納することで、グラフィックス処理システムに通例組み込まれている既存のテクスチャマッピングプロセスを本発明の方法でストローク曲線をレンダリングするために使用できるという点で特に有利であり、また有益である。
例えば、および好ましくは、テクスチャ内のそれぞれのテクセルには、与えられた長さ位置について適切なエクステント(例えば、幅)推定データを格納することができ、次いで、通常の方法で、適切な長さ位置を使用して、適切な1つまたは複数のテクセルを検索し(テクスチャをサンプリングし)適切な所定のエクステント(幅)推定情報を取り出すことができる。
この点に関して、好ましい一実施形態において、それぞれがレンダリングされる与えられたストローク曲線に関係する(および関連付けられている)複数のこのようなデータ構造体(例えば、テクスチャ)が用意され、グラフィックス処理システムによって使用するために格納されることは理解されるであろう。それぞれのこのようなデータ構造体は、別々に(例えば、個別のテクスチャとして)格納されうるか、または複数のこのようなデータ構造体は、例えば同じテクスチャ内に次々に、一緒に(単一構造全体の中に)格納されうる。同様に、それぞれのデータ構造体(例えば、テクスチャ)は、単一の曲線に対する、または複数の曲線に対するデータを格納することができる。
テストされる与えられたサンプリング位置に関して使用される適切な所定の情報が識別され、必要に応じて取り出せる。
しかし、好ましい一実施形態では、および上述のように、注目しているサンプリング位置のストローク曲線の投影形態の「長さ」方向に沿った相対的位置は、その位置におけるストローク曲線の投影形態の定義済み、例えば幅方向のエクステントを推定するために使用される所定の情報を取り出すか、またはサンプリングする(検索する)ために使用される。
したがって、例えば、投影空間内の与えられたサンプリング位置(x1,y1)に対する、本発明の好ましい実施形態の場合のような直交するx軸およびy軸を有する投影された空間に関して定義されたストローク曲線の投影形態の場合に、サンプリング位置のx位置x1は、好ましくは、サンプリング位置のx位置x1に対応するストローク曲線の投影形態の長さに沿った位置におけるストローク曲線の投影形態の幅方向のエクステントを推定するための情報を検索するために使用される。
当業者であれば理解するように、所定の情報がグラフィックステクスチャの形態で格納されている場合、この「検索」は、通常の方法で、対応するサンプリング位置に対するテクスチャをサンプリングすることによって簡単に行える。
理解されるように、エクステント(例えば、幅)推定データが格納される曲線の長さに沿った点の個数が有限であるため、考察されているサンプリング点の投影空間内の正確な位置に対するエクステント推定データが格納されないことがありえ、また実際に、多くの場合にその可能性がありうる。
したがって、一実施形態では、使用される所定の情報は、テストされるサンプリング位置のその位置までの最も近い点に関係する格納済み情報であってもよい。
しかし、好ましい一実施形態では、例えば、考察されているちょうどその「長さ」位置についてデータ値の集合が格納されていない場合に、精度を高めるために、所定の情報を検索する際に、補間またはフィルタ処理プロセスが使用される。
例えば、特に好ましい一実施形態では、格納されている所定の情報(例えば、テクスチャ)は、線形フィルタリングなどの好適なフィルタリングまたは補間プロセスを使用してサンプリングされる。これにより、同じ格納されているデータをそのまま使用しながら、レンダリングの精度を高めることができる。(実際、標準的なテクスチャサンプリングおよびフィルタリング技術がこの方法で情報を取り出すためにそのときに使用できることは、所定の情報を格納するためにグラフィックステクスチャを使用するうえでの利点となっている。)
データがグラフィックステクスチャとして格納される場合、双線形フィルタリングなどの標準的なテクスチャフィルタリング技術を使用することができ、また好ましくは使用する。
(また、所定の情報が格納される曲線の長さ方向に沿った点の数を増やすことによって、格納されているデータの絶対分解能を高めることも可能であろう。しかし、こうすることが、常に望ましいわけではない。したがって、所定の情報をサンプリングする際のフィルタリングまたは補間プロセスの使用は、格納されているデータの絶対分解能を高めなくてもレンダリング精度を高める代替手段となる。)
ストローク曲線の投影形態の定義済み(例えば、幅)方向における推定されたエクステントを使用することで、任意の好適な、望ましい方法で「投影」空間内のサンプリング位置がストローク曲線の投影形態の範囲に入るかどうかを判定することができる。
しかし、好ましい一実施形態では、ストローク曲線の投影形態の定義済み(例えば、幅)方向の推定されてエクステントを、上述のように、ストローク曲線の投影形態が覆う定義済み(幅)方向の位置の範囲を決定するために使用し、次いで、位置のその範囲を、その方向に沿った注目しているサンプリング位置の対応する位置と比較して、そのサンプリング位置が位置のその範囲(したがって、ストローク曲線の投影形態)内に入るかどうかを調べる。上述のように、好ましくは、ストローク曲線によって覆われる位置の範囲は、曲線の境界点の推定結果を求めることによって推定される。
上述のように、関連する定義済み(幅)方向のストローク曲線の投影形態によって覆われる位置の範囲は、定義済み(例えば、幅)方向の曲線の投影形態の推定されたエクステント、および曲線の長さに沿ったその点における定義済み(例えば、幅)方向のストローク曲線の投影形態の中心曲線の位置を使用することによって決定することが可能であり、好ましくは決定される。
したがって、例えば、ストローク曲線の投影形態が、x軸およびy軸(直交座標の)に関して定義されている好ましい事例では、投影空間内のサンプリング位置(x1,y1)について、所定の情報は、好ましくは、サンプリング位置のx位置x1における曲線の投影形態によって覆われるy位置(値)の範囲を推定し、投影空間内のy位置のその推定された範囲を、次いで、投影空間内のサンプリング位置のy位置y1と比較して、サンプリング位置のy位置、ひいてはサンプリング位置全体が、ストローク曲線の投影形態の範囲内に入るかどうかを判定するために使用される。
投影空間内のサンプリング位置が、位置の決定された範囲内に入る場合に、サンプリング位置は、ストローク曲線の投影形態の範囲内に入るとみなすことができる。あるいは、サンプリング位置が決定された範囲の外にある場合、サンプリング点は、ストローク曲線の投影形態の範囲外にあるとみなすことができる。
投影空間内のサンプリング位置が、ストローク曲線の投影形態の範囲内にあるかどうかが判定された後、次いで、その情報を使用して、サーフェス空間内の対応するサンプリング位置をそれに応じてレンダリング(シェーディング)する、つまり、対応するサンプリング位置(投影空間内の)がストローク曲線の(推定された)投影形態の範囲内に入っている、またその逆であると判明した場合にその対応するサンプリング位置をストローク曲線の内側にあるものとして表示することができる。例えば、その後に、赤色、緑色、および青色(RGB)値ならびに「アルファ」(透明度)値などのデータを、判定の結果に基づいてサーフェス空間内のサンプリング点のそれぞれに割り当てることができる。
特に好ましい一実施形態では、この判定の結果は、実際には、適宜ストローク曲線に関してさらに処理がなされないように対応するサーフェス空間サンプリング位置を保持するか、または破棄するために使用される。好ましくは、この判定の結果、サーフェス空間サンプリング位置がストローク曲線の内側にあるとみなすべきであることが判明した場合、プリミティブ内の対応する位置はそれに応じてシェーディング処理される(例えば、着色される)が、ストローク曲線の外側にあるとみなされる場合、プリミティブ内の位置はシェーディング処理されず、注目しているストローク曲線に必要な特性を有する(例えば、および好ましくは、ストローク曲線に関する処理がさらに行われないように破棄される)。
他の実施形態では、ストローク曲線の外側にあるとみなされる場合にサンプリング点をさらに処理されないように破棄する代わりに、注目しているサンプリング点をシェーディング処理して、完全に透明にし、ひいては、実際に、不可視にすることが可能である。
上記のことから、少なくとも本発明の好ましい実施形態において、サーフェス空間内のサンプリング点に対する投影空間内の対応するサンプリング位置は、好ましくは、表示されるストローク曲線の投影形態に関係する所定の情報を検索するために使用され、次いで、その情報は、投影空間内のサンプリング点の位置に関連付けられているストローク曲線の投影形態の長さに沿った点におけるストローク曲線の投影形態の定義済み(例えば、幅)方向のエクステントを推定するために使用される。次いで、好ましくはストローク曲線の投影形態の推定されたエクステントを使用してストローク曲線の投影形態が覆う定義済み(例えば、「幅」)方向の位置の範囲を推定し、次いで、サンプリング位置が位置のその範囲内に入っているかどうかを判定することによって、投影空間内のサンプリング点がストローク曲線の投影形態の範囲内にあるかどうかを判定するために、定義済み方向におけるストローク曲線の投影形態の推定されたエクステントが好ましくは使用される。
したがって、特に好ましい一実施形態では、本発明は、
投影空間内の関連するサンプリング点の投影空間内の一方の軸に沿った位置を使用して投影空間内の第1の軸に沿ったその位置におけるストローク曲線の投影空間内の第2の軸に沿ったエクステント推定するために使用される所定の情報を検索するステップまたは検索するための手段と、
投影空間内の第1の軸に沿ったその位置におけるストローク曲線の投影形態の投影空間内の第2の軸に沿った推定されたエクステントを投影空間内の第2の軸に沿った投影空間内のサンプリング位置の位置とを比較して投影空間内のサンプリング位置が投影空間内のストローク曲線の投影形態の範囲内に入るかどうかを判定するステップまたは判定するための手段とを備える。
例えば、直交座標系(つまり、x軸とy軸)を使用するこのような配置構成において、位置(x1,y1)を有するテストされる与えられたサンプリング位置について、サンプリング位置のx座標x1を使用することで、x位置x1におけるy方向のストローク曲線の投影形態のエクステントを推定することを可能にする情報を検索し、次いで、テストされるサンプリング位置の、y位置y1と比較された、x位置x1におけるストローク曲線の投影形態の推定された「yエクステント」(好ましくは、上述のように、曲線が覆うと考えられるべきであるy値の範囲に関して決定される)を検索し、これにより、そのサンプリング位置がストローク曲線の投影形態の範囲内にあるかどうかを調べることになる。
当業者であれば理解するように、このテストステップ(つまり、所定の情報を検索し使用して、サンプリング点がストローク曲線の投影形態の範囲内にあるかどうかを判定するステップ)は、テストされるサーフェス空間内のサンプリング点毎に繰り返されなければならない。したがって、これは、実際に、表示できるようにストローク曲線をレンダリングするために、複数のサンプリング位置について実行されるのが典型的である。
本発明は、当業者であれば理解するように、また上述のように、表示できるように与えられた、単一のストローク曲線のレンダリングをもっぱら参照しつつ上で説明されているが、本発明は、ストローク曲線の複数の異なる形態に適用可能であり、好ましい一実施形態では、複数の異なるストローク曲線のそれぞれをレンダリングするために使用されうる。
したがって、特に好ましい一実施形態では、それぞれがレンダリングされる異なるストローク曲線を表す所定の情報(例えば、テクスチャ)の複数の異なる集合が用意され、グラフィックス処理システムによって使用するために格納される。次いで、描画される与えられた曲線に対し、その曲線に最も適している所定の情報(例えば、テクスチャ)が識別され、選択され、曲線をレンダリングするために使用されうる。したがって、本発明の方法で曲線の好適な範囲を表すことによって、好ましくは表示できるように与えられたフォントをレンダリングするのに必要なストローク曲線などの、一定範囲のストローク曲線をレンダリングすることが可能であるべきである。
ストローク曲線を表す所定の情報(例えば、テクスチャ)の集合が、好ましくは、予め生成され、次いで、グラフィックス処理システムで使用できるように適宜格納され、例えば、および好ましくは、グラフィックス処理システムが使用できる他のテクスチャマップとともに格納される。次いで、所定の情報(例えば、テクスチャ)の与えられた集合が選択され、注目しているストローク曲線がレンダリングされるときになって、適宜使用されうる。
表示できるようにレンダリングされる与えられたストローク曲線に使用される所定の情報(例えば、テクスチャ)の適切な集合が識別され、必要に応じて選択されうる。例えば、ストローク曲線を描画することを必要とするアプリケーションでは、所定の情報(例えば、1つまたは複数のテクスチャ)のどの(1つまたは複数の)集合を使用すべきかをグラフィックス処理システムに指示することが可能である。
上述のことから、本発明は、実際には、ストローク曲線それ自体の投影形態と突き合わせて投影空間内のサンプリング点をテストしないが、むしろ、ストローク曲線の投影形態に関係するか、またはストローク曲線の投影形態から導出される所定の情報を使用して、サンプリング位置をテストすることは理解されるであろう。さらに、この所定の情報は、実際には、ユーザ空間において定義されているようなストローク曲線の(または少なくともその曲線の中心経路の)定義済み投影形態を使用することによって導出される。
そこで、本発明の第8の態様によれば、グラフィックス処理システムにおいて表示するストローク曲線をレンダリングする方法が提供され、この方法は、
表示されるユーザ空間内で定義されている入力ストローク曲線を受け取るステップと、
表示できるようにサーフェス空間内への受け取った変換を使用して受け取ったストローク曲線を投影するステップと、
サーフェス空間内の1つまたは複数のサンプリング点のそれぞれについて、
投影空間内の対応するサンプリング位置を決定するステップと、
投影空間内のサンプリング位置の位置を使用して、ストローク曲線の定義済み投影から導出された情報を含む所定の情報の集合をサンプリングするステップと、
サンプリングされた所定の情報を使用して、投影空間内のサンプリング位置がストローク曲線の投影形態の範囲内に入るかどうかを判定するステップと、
表示できるように受け取ったストローク曲線をレンダリングするためのデータを、前記判定に従って投影空間内のサンプリング位置に対応するサーフェス空間内のサンプリング点に割り当てるステップとを含む。
本発明の第9の態様によれば、グラフィックス処理システムにおいて表示するストローク曲線をレンダリングするための装置が実現され、この装置は、
表示されるユーザ空間内で定義されている入力ストローク曲線を受け取るための手段と、
表示できるようにサーフェス空間内への受け取った変換を使用して受け取ったストローク曲線を投影するための手段と、
サーフェス空間内の1つまたは複数のサンプリング点のそれぞれについて、投影空間内の対応するサンプリング位置を決定するための手段と、
投影空間内のサンプリング位置の位置を使用して、ストローク曲線の定義済み投影から導出された情報を含む所定の情報の集合をサンプリングするための手段と、
サンプリングされた所定の情報を使用して、投影空間内のサンプリング位置がストローク曲線の投影形態の範囲内に入るかどうかを判定するための手段と、
表示できるように受け取ったストローク曲線をレンダリングするためのデータを、前記判定に従って投影空間内のサンプリング位置に対応するサーフェス空間内のサンプリング点に割り当てるための手段とを備える。
当業者であれば理解するように、本発明のこれらの態様および実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能のどれか1つを備えることができ、好ましくは備える。したがって、例えば、所定の情報の集合は、好ましくは、グラフィックステクスチャの形態で、好ましくは1Dテクスチャとして格納される。
上述のように、本発明では、所定の「エクステント(例えば、幅)推定」情報を1つまたは複数のグラフィックステクスチャの形態で格納することは、特に有利であり、また有益であるため、特に好ましい。
実際、この形態のグラフィックステクスチャ、つまり、グラフィックス処理システムによるストローク曲線のレンダリングにおいて使用する幅推定データを含むグラフィックステクスチャの使用は、新規性があり、それ自体有利でありうると確信する。さらに、このようなテクスチャは、上述のように、予め生成され、そこで、例えば、グラフィックス処理システムとともに使用するための必需品それ自体として、例えば、グラフィックス処理システムによる使用のためにロードされるテクスチャの集合として備えられうる。
したがって、本発明は、そのようなテクスチャの構成およびそのようなテクスチャそれ自体に及ぶ。
したがって、本発明の第10の態様によれば、表示できるようにストローク曲線をレンダリングするときにグラフィックス処理システム内で使用するためのグラフィックステクスチャが形成され、テクスチャのそれぞれのテクセルは、曲線上の点における定義済み空間内で定義されているストローク曲線の定義済み方向のエクステントの推定を決定する際に使用するための情報が関連付けられている。
本発明の第11の態様によれば、表示するストローク曲線をレンダリングするときにグラフィックス処理システムとともに使用するためのグラフィックステクスチャを構成する方法が提供され、この方法は、
ユーザ空間内でストローク曲線を定義するステップと、
ストローク曲線が定義済みの変換形態を有するようにストローク曲線を変換するための変換を決定するステップと、
ストローク曲線の変換形態の長さに沿った複数の点のそれぞれにおけるストローク曲線の変換形態の1つまたは複数の定義済み方向のエクステントの推定を決定する際に使用するための情報を決定するステップと、
それぞれがテクセルの配列を含む1つまたは複数のグラフィックステクスチャを生成し、格納するステップであって、それらの1つまたは複数のテクスチャのそれぞれのテクセルはストローク曲線の変換形態の長さに沿った複数の点のうちの少なくとも1つに関連付けられ、その少なくとも1つの点に対する決定された情報の一部または全部を含む、ステップとを含む。
本発明の第12の態様によれば、表示するストローク曲線をレンダリングするときにグラフィックス処理システムとともに使用するためのグラフィックステクスチャを構成するための装置が作製され、この装置は、
ユーザ空間内でストローク曲線を定義するための手段と、
ストローク曲線が定義済みの変換形態を有するようにストローク曲線を変換するための変換を決定するための手段と、
ストローク曲線の変換形態の長さに沿った複数の点のそれぞれにおけるストローク曲線の変換形態の1つまたは複数の定義済み方向のエクステントの推定を決定する際に使用するための情報を決定するための手段と、
それぞれがテクセルの配列を含む1つまたは複数のグラフィックステクスチャを生成し、格納するための手段であって、それらの1つまたは複数のテクスチャのそれぞれのテクセルはストローク曲線の変換形態の長さに沿った複数の点のうちの少なくとも1つに関連付けられ、その少なくとも1つの点に対する決定された情報の一部または全部を含む、手段とを備える。
当業者であれば理解するように、本発明のこれらの態様および実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能のどれか1つを備えることができ、好ましくは備える。したがって、例えば、ストローク曲線の変換形態は、好ましくは上述のとおりであり、変換は、好ましくは、等質空間内で実行される。同様に、このプロセスは、好ましくは、ストローク曲線を等質空間内に置くステップと、等質空間内で曲線を変換するステップと、パースペクティブ分割を使って、変換された曲線を投影空間内に投影するステップと、次いで、ストローク曲線の投影形態および/または変換形態の長さに沿った複数の点のそれぞれにおけるストローク曲線の投影形態および/または変換形態(等質投影空間形態)の1つまたは複数の定義済み方向のエクステントの推定を決定する際に使用するための情報を決定するステップとを伴う。
同様に、グラフィックステクスチャは、好ましくは、1Dテクスチャを含み、それぞれのテクセルについて格納されている情報は、好ましくは本明細書で説明されている(複数の)形態の、最も好ましくはそのテクセルが関係する点における投影空間内のストローク曲線の定義済み(例えば、「幅」)方向のエクステントを推定するために、他の情報、例えば、ユーザ空間内のストローク曲線のストローク幅と一緒に使用できる、複数の、最も好ましくは4つのデータ値を含む。ストローク曲線をその変換形態に変換するために決定された変換も、好ましくは格納される(それが関係する曲線に関連付けられる)。
曲線の長さに沿った与えられた点に対する所定の情報は、グラフィックステクスチャの単一テクセル内に格納することも可能である。例えば、4チャネルグラフィックステクスチャでは(RGBAを格納する)、上述のように4つの値を格納するためにそれぞれのテクセルを使用することが可能である。
あるいは、単一グラフィックステクスチャまたは複数のグラフィックステクスチャのいずれかの複数のテクセル内に、投影空間内の1つの点に対する所定の情報、例えば、4つの値を格納することが可能である。例えば、単一チャネル(グレースケール)グラフィックステクスチャでは、上述の4つの値(所定の情報のアイテム)を格納するためにグラフィックステクスチャの4つの個別のテクセルを使用することが可能である。
上述のように、単一グラフィックステクスチャを使用して、任意の数のストローク曲線のレンダリングで使用するための所定の幅推定データを格納することが可能であるが、特に好ましい一実施形態では、単一ストローク曲線のみに対する幅推定データを格納するために、単一グラフィックステクスチャが使用される。言い換えると、それぞれのグラフィックステクスチャは、好ましくは、特定のストローク曲線のみをレンダリングするのに必要な情報を含む。
例えば、本発明のグラフィックス処理システムでは、好ましくは、複数のグラフィックステクスチャを使用し(複数のグラフィックステクスチャにアクセスすることができ)、それぞれのテクスチャは、特定のストローク曲線、例えば、特定のフォントの英字、数字、記号など、または特定のフォントの英字、数字、記号などの一部分を形成するストローク曲線をレンダリングする際に使用するための情報を含む。
この方法でグラフィックステクスチャを構成することは、適宜、例えば、新しいフォントが関連するグラフィックステクスチャ(新しいフォントをレンダリングするための)をシステムで使用するためにすでに利用可能になっている複数のテクスチャに追加することによって作成される(レンダリングが望まれている)場合にグラフィックス処理システムを更新することができるという点で特に有益である。
理解されるように、グラフィックス処理システムによって使用される、複数のデータ構造体、例えば、グラフィックステクスチャを構成し、必要に応じてグラフィックス処理システムに送ることができる。
例えば、好ましい一実施形態では、例えばグラフィックステクスチャの一部または全部が、グラフィックス処理システムそれ自体によって構成されうるが、好ましくは構成され、次いで、システムの好適なデータストア(例えば、メモリ)内に格納されるか、またはシステムによってアクセス可能である。
この場合、ストローク曲線がレンダリングされることを必要とするアプリケーションでは、例えば、1つまたは複数の線分を含みうる、レンダリングされるストローク経路を最初に定義することができる。好ましくは、ストローク経路は、ユーザ空間内の1つまたは複数の制御点の位置、制御点の間に描画される(制御点によって定義される)曲線(直線)の種類に関する情報、およびユーザ空間内のストローク幅を示す情報によって定義される。次いで、レンダリングされるストローク経路を定義するこの情報は、好ましくは、アプリケーションによって、ストローク曲線をレンダリングするグラフィックス処理システムに受け渡される。
好ましくは、グラフィックス処理システムは、次いで、アプリケーションから届いた情報に基づいて、アプリケーションによって最初に定義されたようなストローク曲線が、例えば、ストローク経路を形成する複数の個別の線分に細分化される必要があるかどうかを判定し、および/またはレンダリングされる特定のストローク曲線がその現在の形態ではレンダリングされえないという理由があり、また必要であれば、この判定結果に基づいて必要に応じて最初に定義されているようなストローク曲線をレンダリングされる複数の個別のストローク曲線に細分化する。
次いで、受け取ったストローク曲線、または細分化の後に生成された個別のストローク曲線のそれぞれは、好ましくは、グラフィックス処理システムによって、識別子、例えば、特定の識別(ID)番号を割り当てられる(提供される)。この識別子は、好ましくはアプリケーションにも受け渡されるが、曲線を(例えば、将来において)識別するために、グラフィックス処理システム(実装)、またアプリケーションによって使用される。
次いで、グラフィックス処理システムは、好ましくは、本発明により1つまたは複数の曲線をレンダリングするために必要な情報を決定し、この情報を注目している各曲線の識別子、例えば、ID番号に関連付ける。例えば、システムは、好ましくは、レンダリングされる曲線毎に、ユーザ-投影変換および例えば、1つまたは複数の特別に構成されたグラフィックステクスチャの形態の、所定の情報を決定する。次いで、この情報は、格納され、本発明の方法で曲線をレンダリングするためにその時点で(および将来において)使用する注目している曲線に関連付けられうる。
複数のデータ構造体、例えば、グラフィックステクスチャ、およびユーザ-投影変換は、グラフィックス処理システムの外部から決定され、使用のためグラフィックス処理システムに送られうることも企図される。これは、例えば、任意の好適なプロセッサまたはホストシステムなどのコンピュータシステム上で実行されうる。次いで、生成されたデータ構造体などが、例えば、フラッシュメモリカード、CD-ROM、ROM、または同様のものなどの携帯型のコンピュータ可読媒体上に格納され、次いで、この携帯型のコンピュータ可読媒体上の情報は、使用のためグラフィックス処理システムの(またはグラフィックス処理システムによってアクセス可能な)好適なデータストア(例えば、メモリ)に転送されうる。それに加えて、またはその代わりに、このようなデータ転送を、必要ならば、例えば、インターネット、無線などを介して実行することができる。
これは、曲線(およびひいてはテクスチャ)がすべて事前定義されている場合と同様に、フォントをレンダリングするため使用されるテクスチャ(例えば)に特に適しうる。
これらの配置構成において、ストローク曲線をレンダリングするのに先立ち、グラフィックス処理システムは、ストローク曲線をレンダリングするときに使用される所定の「エクステント推定」情報を含む格納されているデータ構造体(好ましくは、グラフィックステクスチャの形態をとる)と、(ストローク曲線の投影形態が定義されている「投影空間」にサンプリング点をマッピングするために使用する)ストローク曲線をレンダリングするときに使用するための事前定義済みユーザ-投影変換の両方に、この情報が利用可能であるストローク曲線毎に、アクセスすることができることは理解されるであろう。(上述のように、ユーザ-投影変換および/または所定の情報は、システムそれ自体によって決定(計算)されうるか、あるいは例えば、コンピュータ可読媒体から取得することが可能である。)
この情報は、好ましくは、ストローク曲線に対する与えられた識別子に基づいて取り出せるように適切な1つまたは複数の識別子に関連付けて格納される。
次いで、表示するストローク曲線をレンダリングするために、曲線を必要とするアプリケーション側では、好ましくは、ユーザ-サーフェス変換、ユーザ空間ストローク幅、およびレンダリングされるそれらの1つまたは複数の曲線の1つまたは複数の識別子、例えば、(複数の)ID番号を指定し、この情報をグラフィックス処理システムに受け渡す。これらの情報断片は、システムに同時に受け渡してもよいし、あるいは、当業者であれば理解するように、異なる時期に受け渡してもよい。
次いで、グラフィックス処理システムは、この受け取った1つまたは複数の曲線識別子を使用して、注目している1つまたは複数の曲線に関連付けられている格納済みの所定のレンダリング情報、例えば、ユーザ-投影変換および1つまたは複数の特別に構成されているテクスチャを検索する(取り出す)ことができ、またその情報を使用することで、例えば、および好ましくは、上述の方法で、表示する1つまたは複数のストローク曲線をレンダリングすることができる。
そこで、本発明の他の態様によれば、グラフィックス処理システムで表示できるようにストローク曲線をレンダリングする方法が提供され、この方法では、ストローク曲線の1つまたは複数の事前定義された形態のそれぞれについて、またグラフィックス処理システムにアクセス可能な形で、ストローク曲線の投影形態の長さに沿った複数の位置のそれぞれにおいて投影空間内のストローク曲線の投影形態の定義済み方向のエクステントを推定するための所定の情報とストローク曲線に対し事前定義されたユーザ-投影変換とが、所定の情報および事前定義されたユーザ-投影変換が関係する曲線に対する識別子に関連して、格納され、この方法は、
アプリケーションがストローク曲線の事前定義された形態のうちの1つに対応するストローク曲線がレンダリングされることを要求し、グラフィックス処理システムに、レンダリングされるストローク曲線を識別する識別子、レンダリングされるストローク曲線を表示できるようにサーフェス空間に変換するための定義済みユーザ-サーフェス変換、およびストローク曲線に対する望ましいユーザ空間ストローク幅を提供するステップと、
グラフィックス処理システムがレンダリングされるストローク曲線に対する提供された識別子を使用してその曲線に対する格納されている所定のエクステント推定情報およびユーザ-投影変換を取り出し、次いで、その情報を指定されたユーザ-サーフェス変換およびユーザ空間ストローク幅と一緒に使用して表示できるようにストローク曲線をレンダリングするステップとを含む。
本発明の他の態様によれば、ストローク曲線をレンダリングするためのグラフィックス処理システムが実現され、このシステムにおいて、ストローク曲線の1つまたは複数の事前定義された形態のそれぞれについて、またグラフィックス処理システムにアクセス可能な形で、ストローク曲線の投影形態の長さに沿った複数の位置のそれぞれにおいて投影空間内のストローク曲線の投影形態の定義済み方向のエクステントを推定するための所定の情報とストローク曲線に対し事前定義されたユーザ-投影変換とが、所定の情報および事前定義されたユーザ-投影変換が関係する曲線に対する識別子に関連して、格納され、このシステムは、
ストローク曲線の事前定義された形態のうちの1つに対応するストローク曲線がレンダリングされることを要求するアプリケーションから、レンダリングされるストローク曲線を識別する識別子、レンダリングされるストローク曲線を表示できるようにサーフェス空間に変換するための定義済みユーザ-サーフェス変換、およびストローク曲線に対する望ましいユーザ空間ストローク幅を受け取るための手段と、
レンダリングされるストローク曲線に対する提供された識別子を使用してその曲線に対する格納されている所定のエクステント推定情報およびユーザ-投影変換を取り出し、次いで、その情報を指定されたユーザ-サーフェス変換およびユーザ空間ストローク幅と一緒に使用して表示できるようにストローク曲線をレンダリングするための手段とを備える。
当業者であれば理解するように、本発明のこれらの態様は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能の任意の1つまたは複数あるいはすべてを備えることができ、好ましくは備える。そこで、例えば、所定の情報などは、好ましくは、本明細書で説明されている方法のうちの1つまたは複数で表示できるようにストローク曲線をレンダリングするために使用される。
本発明は、ストローク曲線の任意の望ましい形態をレンダリングするために使用されうる。上述のように、本発明は、特に、ただしもっぱらというわけではないが、(例えば、フォントの、英字などの文字の全部または一部を形成する)フォントを構成するために使用されるストローク曲線のレンダリングに適していると考えられる。したがって、特に好ましい一実施形態で、本発明で表示されるストローク曲線は、フォントの文字に関係するストローク曲線である。同様に、好ましい一実施形態では、それぞれがフォントの文字に関係するストローク曲線に関係する事前定義された情報(例えば、テクスチャ)の複数の異なる集合などが格納され、使用される。
当業者であれば理解するように、本明細書において上で説明されているように本発明のさまざまな修正、変更、および追加が可能である。
例えば、好ましい一実施形態では、等質投影空間内の変換されたストローク曲線を投影形態に投影するためにパースペクティブ分割において使用される値、例えば典型的には、3D等質空間に対する第3の座標値は、好ましくは、たすき掛けされるが、これは、推定プロセスを最適化するのに役立つ。これが実行される場合、それらの値(つまり、パースペクティブ分割で使用される値)はすべて、必ず厳密に正の値であることが好ましい。これは、例えば、等質空間内で、上述のように、適切に変換された後に、曲線をレンダリングするために使用されるプリミティブ(例えば、境界ポリゴン)がすべて、正の第3の座標値(またはパースペクティブ分割で使用されている何らかの値)を有することをチェックすることによって達成されうる。これらの値が、頂点と頂点との間で線形補間される場合、好ましくは、境界ポリゴンの頂点に対する値のみが、直接チェックされる(これらの値が正であれば、それにより必ず、それらのプリミティブ内のすべての値も同様に正でなければならないからである)。
例えば、「ツーパス」アプローチを使用して本発明のテストステップを実装することも可能であり、その場合、定義済み、例えば幅の、方向の曲線のエクステントの中間検索テーブルが、指定された曲線スケールおよび線幅に基づいて導出される。
例えば、「ワンパス」アプローチでは、サーフェス空間内のサンプリング点がストローク曲線の範囲内に入っているかどうかを判定するために、テクスチャにおける関連する所定のデータが、好ましくは、ユーザ空間ストローク幅と組み合わされ、これにより、ストローク曲線の投影形態によってその長さに沿った関連する位置において覆われる、例えば幅の、方向の位置の範囲を決定する(例えば、幅方向に沿った第1(最大)の位置および第2(最小)の位置を決定するために)。次いで、幅方向に沿ったサンプリング点の位置を、好ましくは、決定された第1(最大)の位置および第2(最小)の位置と比較し、その結果を使用して、サンプリング点がストローク曲線の範囲内にあるかどうかを判定する。
「ツーパス」アプローチでは、(例えば)1つまたは複数のグラフィックステクスチャ内の格納されている所定の情報を、情報が格納されている「長さ」方向に沿った位置のそれぞれについて、ユーザ空間ストローク幅と一緒に使用し、第1の「パス」において、ストローク曲線の投影形態によってその長さに沿ったそれぞれの位置において覆われる幅方向の位置の範囲を決定し、テクスチャ内に格納することができる(例えば、幅方向に沿った第1(最大)の位置と第2(最小)の位置とを決定するために)。
次いで、「長さ」方向に沿った位置のそれぞれについて決定された第1(最大)の位置および第2(最小)の位置(例えば、2つのスカラー値)を格納する第1のパスで構成されたこのテクスチャを第2の「パス」で使用して、(構成されたテクスチャをサンプリングして、サンプリング点に対する幅方向に沿った第1(最大)の値および第2(最小)の値を取得し、得られたエクステントを幅方向に沿ったサンプリング点の位置と比較することによって)サンプリング点がストローク曲線の範囲内に入るかどうかを判定することができる。
このようにして「ツーパス」アプローチを使用して本発明を実行すると、セットアップのオーバーヘッドが生じ、またドメインのサンプリングが潜在的に非一様になる可能性があることと引き換えに、処理の一部がフラグメント毎の演算(2Dドメイン)からx毎の演算(1Dドメイン)に移されるので、いくつかの事例では有益な場合がある。
本発明のこれらの方法およびシステムは、グラフィックス処理システム上で、またはグラフィックス処理システム内で、任意の好適な、望ましい方法により実行され、実装されうる。例えば、グラフィックス処理システムは、本発明のステップを実行するように適切にプログラムされているプログラム可能なフラグメントシェーダーハードウェアを備えることが可能である。あるいは、グラフィックス処理システムは、好適な固定機能ハードウェアを備えることが可能である。
例えば、サーフェス空間サンプリング点を上述のようにサーフェス空間内のストローク曲線の範囲内に入るものとして保持するか破棄するかを決定する「比較および破棄」プロセスは、例えば、プログラム可能なフラグメントシェーダーハードウェアを有するグラフィックス処理システムの場合に比較および条件付き破棄ルーチンを使用して、実行することが可能である。
本発明が、例えば、標準的なマルチサンプルアンチエイリアシングを無効にするような方法でフラグメントシェーダーで実装される場合、それを、例えば、必要ならば曲線の境界に近いフラグメントに対する被覆値を決定することによって補正することが可能である。
固定機能ハードウェアを有するグラフィックス処理システムでは、このオペレーションは、例えば、望ましいシーケンスにおけるそれぞれのサンプリング点に関して必要なオペレーションを実行するようにサンプリング点を1回または複数回グラフィックスレンダリングパイプラインに通すことによって実装することが可能である。
特に好ましい一実施形態では、本発明のさまざまな機能は、表示デバイスのフレームバッファに書き込まれるデータを生成して出力する単一のグラフィックス処理プラットフォーム上で実行される。
本発明は、「パイプライン化された」構成を有するレンダラーなど、任意の形態または構成のレンダラーに適用可能である(この場合、レンダラーは、レンダリングパイプラインの形態をとる)。好ましい一実施形態では、これは、ハードウェアグラフィックスレンダリングパイプラインに適用される。本発明のさまざまな機能および要素は、例えば、および好ましくは、適切な機能ユニット、処理ロジック、回路、プロセッサ、マイクロプロセッサ装置などを使用することによって必要に応じて実装されうる。
上述のように、本発明は、ラスター処理ベースレンダリングまたはレイトレーシング、即時モードレンダリング、遅延モードレンダリング、タイルベースレンダリングなど、すべてのレンダリング形式に適用可能である。
上記から理解されるように、本発明は、もっぱらというわけではないが、3Dグラフィックスプロセッサおよび処理デバイスに特に適用可能であり、それに応じて、本明細書で説明されている本発明の態様のうちの任意の1つまたは複数の態様の装置を含む、または本明細書で説明されている本発明の態様のうちの任意の1つまたは複数の態様に従って動作する、3Dグラフィックスプロセッサおよび3Dグラフィックス処理プラットフォームに拡大適用される。上述の特定の機能を実行するためにハードウェアが必要であるとすると、そのような3Dグラフィックスプロセッサは、他の何らかの方法で、3Dグラフィックスプロセッサが備える、通常の機能ユニットなどの任意の1つまたは複数またはすべてを備えることができる。
本発明は、同様にして、2Dグラフィックスプロセッサおよび2Dグラフィックス処理に拡大適用される。
当業者であれば、本発明の説明されている態様および実施形態はすべて、適宜、本明細書で説明されている好ましい、およびオプションの機能の任意の1つまたは複数あるいはすべてを備えることができ、好ましくは備えることも理解するであろう。
本発明による方法は、少なくとも部分的にはソフトウェア、例えばコンピュータプログラムを使用して実装されうる。そのため、他の態様から見たときに、本発明は、データ処理手段にインストールされたときに本明細書で説明されている方法を実行するように特に適合されたコンピュータソフトウェア、データ処理手段上でプログラム要素が実行されたときに本明細書で説明されている方法を実行するコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、およびデータ処理システム上でプログラムが実行されたときに本明細書で説明されている1つまたは複数の方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムを提供することがわかる。データプロセッサは、マイクロプロセッサシステム、プログラマブルFPGA(フィールドプログラマブルゲートアレイ)などとしてもよい。
本発明は、また、データ処理手段を備えるグラフィックスプロセッサ、レンダラー、またはマイクロプロセッサシステムを動作させるために使用されたときに前記データ処理手段と併せて前記プロセッサ、レンダラー、またはシステムに本発明の方法のステップを実行させるそのようなソフトウェアを含むコンピュータソフトウェアキャリアに拡大適用される。このようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROM、またはディスクなどの物理的記憶媒体とすることが可能であるか、またはケーブル上の電子信号、光信号、または衛星もしくは同様のものなどへの無線信号などの信号とすることが可能である。
さらに、本発明の方法のステップすべてが、コンピュータソフトウェアによって実行される必要はないことは理解されるであろうし、したがって、さらに広い観点から、本発明は、本明細書で説明されている方法の複数のステップのうちの少なくとも1つを実行するために、コンピュータソフトウェアおよびコンピュータソフトウェアキャリア上にインストールされたそのようなソフトウェアを提供する。
したがって、本発明は、コンピュータシステムとともに使用するためコンピュータプログラム製品として適宜実現されうる。そのような実装は、コンピュータ可読媒体、例えば、ディスケット、CD-ROM、ROM、またはハードディスクなどの、有形の媒体上に固定された、あるいは限定はしないが、光またはアナログ通信回線を含む有形の媒体上で、あるいは限定はしないが、マイクロ波、赤外線、または他の伝送技術を含む無線技術の無形の手段を使用して、モデムまたは他のインターフェイスデバイスを介して、コンピュータシステムに伝送可能な、一連のコンピュータ可読命令を含むことができる。これら一連のコンピュータ可読命令は、本明細書ですでに説明されている機能の全部または一部を実現する。
当業者であれば、このようなコンピュータ可読命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するために多くのプログラミング言語で作成されうることを理解するであろう。さらに、このような命令は、限定はしないが半導体、磁気、または光を含む、現在の、または将来の任意のメモリ技術を使用して格納されるか、または、限定はしないが光、赤外線、またはマイクロ波を含む、現在の、または将来の任意の通信技術を使用して伝送されうる。このようなコンピュータプログラム製品は、印刷または電子文書を添付した取り外し可能媒体、例えばシステムROMまたは固定ディスク上のコンピュータシステムにプリインストールされている、例えば市販ソフトウェアとして配布されるか、あるいはサーバーまたはネットワーク、例えばインターネットまたはワールドワイドウェブ上の電子掲示板から配布されうることも企図される。
次に、本発明の多数の好ましい実施形態について、付属の図面を参照しつつ、実例のみを使って説明する。