(57)【要約】【課題】追加の専用ハードウェアを使用する必要をなくし、しかも知られている細分法と比べて性能レベルを改善できる、ストローク経路、特にストローク曲線をレンダリングするためのさらなる技術を提供すること。【解決手段】グラフィックス処理システムで表示するストローク曲線をレンダリングするときに、ユーザー空間2内で定義されている入力ストローク曲線1がシステムによって受け取られる。受け取ったストローク曲線1に対応する正準空間5の部分は、受け取ったストローク曲線1に対応する正準空間5で定義されている正準曲線12の部分を決定することにより決定される。【選択図】図1
2010092480.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス処理システムで表示するストローク曲線をレンダリングする方法であって、
ユーザー空間内で定義されている入力ストローク曲線を受け取るステップと、
前記受け取ったストローク曲線に対応する正準空間の部分を、前記受け取ったストローク曲線に対応する前記正準空間で定義されている正準曲線の部分を決定することにより決定するステップと、
受け取った変換を使用して前記受け取ったストローク曲線をサーフェス空間内に投影するステップと、
サーフェス空間内で前記投影されたストローク曲線を覆う1つまたは複数のプリミティブを定義するステップと、
前記1つまたは複数のプリミティブ内の複数のサンプリング点のそれぞれについて、正準空間内の対応する位置が前記受け取ったストローク曲線に対応する前記正準空間の部分内にあるかどうかを判定するステップと、
正準空間内の対応する位置が前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定する前記ステップに従って、前記受け取ったストローク曲線をレンダリングするためのデータをサーフェス空間内の前記複数のサンプリング点のうちの1つまたは複数に割り当てるステップとを含む方法。
【請求項２】
正準空間内のサンプリング位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定する前記ステップは、正準空間内の前記サンプリング位置まで引くことができる前記正準曲線に垂直な直線の始点となる前記正準曲線上の少なくとも1つの点が、正準空間内に現れるときに前記ストローク曲線のパラメータ範囲内にあるかどうかを判定するステップを含む請求項1に記載の方法。
【請求項３】
正準空間内のサンプリング位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定する前記ステップは、前記正準曲線から前記サンプリング位置まで垂直方向に延びる直線の長さが、正準空間内に現れるときに前記ストローク曲線のストローク幅の半分以下であるかどうかを判定するステップを含む請求項1または2に記載の方法。
【請求項４】
正準空間内のサンプリング位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定する前記ステップは、正準空間内の複数の離散位置について格納されている所定の情報を検索するステップを含む請求項1から3のいずれか一項に記載の方法。
【請求項５】
前記所定の情報は、正準空間内の前記各位置から引くことができる前記曲線に垂直な直線の終点となる前記正準曲線上の1つの点に対するパラメータ値と、前記正準曲線上の前記点と正準空間内の前記各位置との間の垂直距離とのうち少なくとも1つを含む請求項4に記載の方法。
【請求項６】
前記所定の情報は、少なくとも1つのグラフィックステクスチャ内に格納される請求項4または5に記載の方法。
【請求項７】
グラフィックス処理システムで表示するストローク曲線をレンダリングする方法であって、
ユーザー空間内で定義されている入力ストローク曲線を受け取るステップと、
前記受け取ったストローク曲線に対応する正準空間の部分を、前記受け取ったストローク曲線に対応する前記正準空間で定義されている正準曲線の部分を決定することにより決定するステップと、
受け取った変換を使用して前記受け取ったストローク曲線をサーフェス空間内に投影するステップと、
サーフェス空間内で前記投影されたストローク曲線を覆う1つまたは複数のプリミティブを定義するステップと、
次いで、前記1つまたは複数のプリミティブ内の複数のサンプリング点のそれぞれについて、
正準空間内の対応する位置を決定するステップと、
それぞれが前記正準空間内の少なくとも1つの離散位置に関する情報に関連付けられている複数のテクセルを有する1つまたは複数のグラフィックステクスチャの少なくとも1つのテクセルをサンプリングして、正準空間内の前記対応する位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するステップとを含む方法。
【請求項８】
前記受け取ったストローク曲線に基づき正準空間の異なる領域内の複数の離散位置に関する情報をそれぞれが格納する前記グラフィックス処理システムで使用するために利用可能な複数のグラフィックステクスチャからグラフィックステクスチャを1つ選択するステップと、
前記選択されたグラフィックステクスチャのうちの少なくとも1つのテクセルをサンプリングして、正準空間内の前記対応する位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するステップとを含む請求項7に記載の方法。
【請求項９】
表示するストローク曲線をレンダリングする際にグラフィックス処理システムで使用するグラフィックテクスチャを構成する方法であって、
定義されている空間内で曲線を定義するステップと、
前記定義されている空間内の複数の位置のそれぞれについて、前記空間内で定義されている前記曲線に関する情報を決定するステップと、
それぞれのテクセルが前記定義されている空間内の前記複数の位置のうちの少なくとも1つの位置に対応する、前記空間内で定義されている前記曲線に関する前記決定された情報が関連付けられているテクセルの配列を含むグラフィックステクスチャを生成し、格納するステップとを含む方法。
【請求項１０】
前記定義されている曲線に関する前記情報は、前記曲線上の1つまたは複数の点に相対的な前記定義されている空間内の前記少なくとも1つの位置に関する位置情報を含む請求項9に記載の方法。
【請求項１１】
グラフィックス処理システムで表示するストローク曲線をレンダリングするための装置であって、
ユーザー空間内で定義されている入力ストローク曲線を受け取るための手段と、
前記受け取ったストローク曲線に対応する前記正準空間で定義されている正準曲線の部分を決定することにより前記入力ストローク曲線が対応する正準空間の部分を決定するための手段と、
受け取った変換を使用して前記受け取ったストローク曲線をサーフェス空間内に投影するための手段と、
サーフェス空間内で前記投影されたストローク曲線を覆う1つまたは複数のプリミティブを定義するための手段と、
前記1つまたは複数のプリミティブ内の複数のサンプリング点のそれぞれについて、正準空間内の対応する位置が前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するための手段と、
正準空間内の対応する位置が前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかの前記判定に従って、前記受け取ったストローク曲線をレンダリングするためのデータをサーフェス空間内の前記複数のサンプリング点のうちの1つまたは複数に割り当てるための手段とを備える装置。
【請求項１２】
正準空間内のサンプリング位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するための前記手段は、正準空間内の前記サンプリング位置まで引くことができる前記正準曲線に垂直な直線の始点となる前記正準曲線上の少なくとも1つの点が、正準空間内に現れるときに前記ストローク曲線のパラメータ範囲内にあるかどうかを判定するための手段を備える請求項11に記載の装置。
【請求項１３】
正準空間内のサンプリング位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するための前記手段は、前記正準曲線から前記サンプリング位置まで垂直方向に延びる直線の長さが、正準空間内に現れるときに前記ストローク曲線のストローク幅の半分以下であるかどうかを判定するための手段を備える請求項11または12に記載の装置。
【請求項１４】
正準空間内の位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するための前記手段は、正準空間内の複数の離散位置について格納されている所定の情報を検索するための手段を備える請求項11から13のいずれか一項に記載の装置。
【請求項１５】
前記所定の情報は、正準空間内の前記各位置から引くことができる前記曲線に垂直な直線の終点となる前記正準曲線上の1つの点に対するパラメータ値と、前記正準曲線上の前記点と正準空間内の前記各位置との間の垂直距離とのうち少なくとも1つを含む請求項14に記載の装置。
【請求項１６】
前記所定の情報は、少なくとも1つのグラフィックステクスチャ内に格納される請求項14または15に記載の装置。
【請求項１７】
グラフィックス処理システムで表示するストローク曲線をレンダリングするための装置であって、
ユーザー空間内で定義されているストローク曲線を受け取るための手段と、
前記受け取ったストローク曲線に対応する正準空間の部分を、前記受け取ったストローク曲線に対応する前記正準空間で定義されている正準曲線の部分を決定することにより決定するための手段と、
受け取った変換を使用して前記受け取ったストローク曲線をサーフェス空間内に投影するための手段と、
サーフェス空間内で前記投影されたストローク曲線を覆う1つまたは複数のプリミティブを定義するための手段と、
前記1つまたは複数のプリミティブ内の複数のサンプリング点のそれぞれについて、正準空間内の対応する位置を決定するための手段と、
それぞれが前記正準空間内の1つの離散位置に関する情報に関連付けられている複数のテクセルを有する1つまたは複数のグラフィックステクスチャの少なくとも1つのテクセルをサンプリングして、正準空間内の前記対応する位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するための手段とを備える装置。
【請求項１８】
前記受け取ったストローク曲線に基づき正準空間の異なる領域内の複数の離散位置に関する情報をそれぞれが格納する前記グラフィックス処理システムで使用するために利用可能な複数のグラフィックステクスチャからグラフィックステクスチャを1つ選択するための手段と、
前記選択されたグラフィックステクスチャのうちの少なくとも1つのテクセルをサンプリングして、正準空間内の前記対応する位置が、前記受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するための手段とを備える請求項17に記載の装置。
【請求項１９】
表示するストローク曲線をレンダリングする際にグラフィックス処理システムで使用するグラフィックテクスチャを構成するための装置であって、
定義されている空間内で曲線を定義するための手段と、
前記定義されている空間内の複数の位置のそれぞれについて、前記空間内で定義されている前記曲線に関する情報を決定するための手段と、
それぞれのテクセルが前記定義されている空間内の前記複数の位置のうちの少なくとも1つの位置に対応する、前記空間内で定義されている前記曲線に関する前記決定された情報が関連付けられているテクセルの配列を含むグラフィックステクスチャを生成し、格納するための手段とを備える装置。
【請求項２０】
前記情報は、前記曲線上の1つまたは複数の点に相対的な前記定義されている空間内の前記少なくとも1つの位置に関する位置情報を含む請求項19に記載の装置。
【請求項２１】
表示するストローク曲線をレンダリングする際にグラフィックス処理システム内で使用するためのグラフィックステクスチャであって、前記テクスチャのそれぞれのテクセルは、定義された空間内の少なくとも1つの位置を表し、またそのテクセルには、前記少なくとも1つの位置について、前記空間内で定義されている曲線に関する情報が関連付けられているグラフィックステクスチャ。
【請求項２２】
前記情報は、前記曲線上の1つまたは複数の点に相対的な前記定義されている空間内の前記少なくとも1つの位置に関する位置情報を含む請求項21に記載のグラフィックステクスチャ。
【請求項２３】
前記プログラム要素がデータ処理手段上で実行されたときに請求項1から10のいずれか一項に記載の方法を実行するコンピュータソフトウェアコード部分を備えるコンピュータプログラム要素。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスシステムで画像をレンダリングするプロセスに関するものであり、具体的には、このようなシステムにおけるストローク曲線のレンダリングに関するものである。
【背景技術】
【０００２】
近年、コンピュータグラフィックスでは、ベクターグラフィックスを使用することが次第に一般的になってきている。当技術分野で知られているように、ベクターグラフィックスがラスターグラフィックスに勝る重要な利点の1つが、解像度に依存しない画像、つまり、本質的に画質を落とすことなく無制限にスケーリング可能な画像を構成できることである。例えば、TrueType(商標)などのコンピュータフォント内の個々の特徴付け要素は、典型的には、ベクターイメージとして格納される。
【０００３】
ベクターグラフィックスは、個別に定義された幾何学的オブジェクトの使用に基づいており、また経路を形成するようにアンカー点で連結される、1つまたは複数の線分、例えば、直線または曲線(二次(ベジエ)曲線、楕円弧、三次(ベジエ)曲線など)によって典型的には記述される。
【０００４】
ベクターグラフィックスオブジェクト/経路は、「ユーザー空間」と通例称される空間内で定義され、操作される。しかし、ベクターグラフィックスオブジェクト/経路をビデオディスプレイまたはプリンタに出力するために、これらのオブジェクト/経路は、画面上に表示するのに適した形式、またはプリンタに出力するのに適した形式に変換される必要がある。この変換は、典型的には、ユーザー空間内で定義されたオブジェクト/経路を、オブジェクト/経路が表示される出力表示のパースペクティブ(幾何学的形状)に対応する、通例「サーフェス空間」と称される、他の空間に投影することを伴う。ユーザー空間とサーフェス空間との間の変換は、典型的には、「ユーザーサーフェス変換」と称される。
【０００５】
ベクターグラフィックスオブジェクト/経路は、いったんサーフェス空間表現に変換された後、レンダリングされる。
【０００６】
このプロセスは、当技術分野で知られているように、典型的には、オブジェクト/経路のサーフェス空間表現を覆う、三角形などの1つまたは複数のグラフィックスプリミティブを生成するステップと、プリミティブ内の複数のサンプリング点に対しプリミティブをラスター処理し、その後、サンプリング点をサンプリングしてそれぞれのサンプリング点が投影されたオブジェクト/経路内に入るかどうかを判定するステップを伴う。この判定に基づき、オブジェクト/経路を正しく表示できるように適宜、複数のサンプリング点に対し赤色、緑色、および青色(RGB)値および「アルファ」透明度値などのデータが割り当てられる。これらのプロセスは、一般に、ラスター処理およびシェーディングとそれぞれ称される。
【０００７】
(3Dグラフィックスの文献では、「ラスター処理」という用語は、ときには、サンプル位置およびシェーディングへの両方のオブジェクト変換を指すために使用される。しかし、本明細書での「ラスター処理」は、サンプリング点アドレスのみへのオブジェクトデータの変換を指すために使用される。)
【０００８】
これらのプロセスは、典型的には、当技術分野で知られているように、グラフィックス処理オペレーション(シェーディングなど)の実行対象となる「フラグメント」と通常称される個別のグラフィック構成要素を使用してサンプリング点を表現することにより実行される。したがって、これらのフラグメントは、実際に、(グラフィックスパイプラインを通過する)グラフィックス処理システムによって処理されるグラフィック構成要素である。
【０００９】
それぞれのフラグメントは処理されるシーンの1つの「ピクセル」に事実上相当するものと考えるのは道理にかなっている。それぞれのフラグメントは、単一の、または複数のサンプリング点に対応しうる。それぞれのフラグメントは、最終的な表示に含まれる単一ピクセル(画素)に対応しうる(ピクセルは、最終的な表示内において特異点であるため、グラフィックスプロセッサのオペレーション対象のフラグメントと表示のピクセルとの間に1対1のマッピングがありうる)。しかし、より典型的には、フラグメントと表示ピクセルとの間に1対1の対応関係がない場合もありえ、例えば、縮小などの特定の形式の後処理が最終画像を表示するのに先立ってレンダリングされた画像に対し実行される。
【００１０】
ベクターグラフィックスにおいてよく見られる2種類のオブジェクトは、「塗りつぶし」オブジェクトとストロークオブジェクトである。塗りつぶすプロセスは、色、勾配、パターン、または画像からなる単一ブロックをオブジェクトまたは閉路内の領域に適用することを伴う。その一方、ストローク操作のプロセスは、事実上、経路にそって特定の幅の線形のペン先をドラッグすることにより幅を経路に付け加えるものとして考えることができる。より具体的には、ペン先の中心点は、その経路を辿り、ペン先は、経路に常に垂直になるように向き付けられる。したがって、それと同等のことだが、ストローク経路の境界も、経路上のある1つの点まで引くことができる、(幅wのストローク経路に対して)長さが(高々)w/2である、経路に対して垂直な直線の始点の集合によって定義することができる。
【００１１】
ストローク経路のレンダリング、特にストローク曲線のレンダリングは、従来から、CPUに大きな負荷がかかるオペレーションである。例えば、ストローク経路をレンダリングする一般的な方法の1つは、CPU上で経路を複数の個別の直線または塗りつぶされた経路に細分し、次いでそれぞれを別々にレンダリングする方法である。しかし、これは大きな処理能力を要するオペレーションである。ストローク経路をレンダリングするためによく使用される方法としては、ほかに、曲線レンダリング専用のハードウェアを使用する方法がある。しかし、この方法は、上述の細分法に関わる性能の低下に対する解決策とはなるが、これは、例えばグラフィックス処理システムで常に利用可能である、または望ましいものであるとは限らない専用のハードウェアを必要とする。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
そこで、出願人は、例えば、追加の専用ハードウェアを使用する必要をなくし、しかも知られている細分法と比べて性能レベルを改善できる、ストローク経路、特にストローク曲線をレンダリングするためのさらなる技術を考案する余地があると確信している。
【課題を解決するための手段】
【００１３】
本発明の第1の態様によれば、グラフィックス処理システムにおいて表示するストローク曲線をレンダリングする方法が提供され、この方法は、
ユーザー空間内で定義されている入力ストローク曲線を受け取るステップと、
受け取ったストローク曲線に対応する正準空間で定義されている正準曲線の部分を決定することにより受け取ったストローク曲線に対応する正準空間の部分を決定するステップと、
受け取った変換を使用して受け取ったストローク曲線をサーフェス空間内に投影するステップと、
サーフェス空間内で投影されたストローク曲線を覆う1つまたは複数のプリミティブを定義するステップと、
1つまたは複数のプリミティブ内の複数のサンプリング点のそれぞれについて、正準空間内の対応する位置が受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するステップと、
正準空間内の対応する位置が受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定する前記ステップに従って受け取ったストローク曲線をレンダリングするためのデータをサーフェス空間内の複数のサンプリング点のうちの1つまたは複数に割り当てるステップとを含む。
【００１４】
本発明の第2の態様によれば、グラフィックス処理システムにおいて表示するストローク曲線をレンダリングするための装置が実現され、この装置は、
ユーザー空間内で定義されている入力ストローク曲線を受け取るための手段と、
受け取ったストローク曲線に対応する正準空間で定義されている正準曲線の部分を決定することにより入力ストローク曲線が対応する正準空間の部分を決定するための手段と、
受け取った変換を使用して受け取ったストローク曲線をサーフェス空間内に投影するための手段と、
サーフェス空間内で投影されたストローク曲線を覆う1つまたは複数のプリミティブを定義するための手段と、
1つまたは複数のプリミティブ内の複数のサンプリング点のそれぞれについて、正準空間内の対応する位置が受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するための手段と、
正準空間内の対応する位置が受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかの前記判定に従って受け取ったストローク曲線をレンダリングするためのデータをサーフェス空間内の複数のサンプリング点のうちの1つまたは複数に割り当てるための手段とを備える。
【００１５】
本発明では、入力ストローク曲線は、まず最初に入力ストローク曲線を「正準空間」で定義されている定義済み曲線の対応する部分にマッピングすることによりレンダリングされる。次いで、正準空間内における位置がサンプリング(テスト)され、サーフェス空間内の対応する位置が入力ストローク曲線内にあるかどうかの判定が行われる。
【００１６】
これは、サーフェス空間内のサンプリング点が投影されたストローク曲線内にあるかどうかを直接判定する(したがって、レンダリングするためグラフィックス処理システムによって受け取られるありとあらゆるストローク曲線に関する情報を直接決定する)、実現可能でないかまたは容易でないことが多く、上述の従来技術を使用することになる方法とは対照的である。
【００１７】
しかし、出願人は、いくつかの曲線族内のすべての曲線が、平行移動、回転、および均等スケーリングのみを使用して「正準曲線」とここでは称される定義済みの、単一の、または基本的な曲線の少なくとも一部に変換できることを認識している。
【００１８】
したがって、これにより、単一の曲線、つまり正準曲線に関する情報を使用して、レンダリングのためグラフィックス処理システムによって受け取られる複数のストローク曲線に関する情報を決定することができる。言い換えると、例えば、グラフィックス処理システムによって受け取られるレンダリングされるそれぞれの個別のストローク曲線に関してデータを導出または格納することなく、正準曲線に関するデータを導出または格納するだけでよいということである。次いで、このデータは、「正準曲線」が表すストローク曲線の族(集合)に属す個別のストローク曲線のそれぞれをレンダリングするために使用されうる。
【００１９】
さらに、以下でさらに説明されるように、平行移動、回転、および均等スケーリングのみを使用して適切な所定の入力ストローク曲線をそのような対応する正準曲線に変換できるため、それにより、始点および終点などの受け取ったストローク曲線に対応する正準曲線の部分、「ストローク正準曲線セグメント」を使用中に容易に決定できる。同様に、正準空間内に現れるストローク曲線の幅を使用中に容易に決定することができる。
【００２０】
例えば、入力ストローク曲線は、とりわけ、均等スケーリングを使用して、対応する正準曲線にマッピングできるので、ユーザー空間内では単一の値である、ストローク幅は、正準空間内で、典型的には異なる値(ユーザー空間と正準空間との間の変換に関わるスケーリング係数を掛けたユーザー空間内のストローク幅)であるとしても、単一の値のままとなる。(これは、例えば、典型的には非均等スケーリングを含む、ユーザー空間とサーフェス空間との間の変換とは対照的であり、したがって、サーフェス空間内への投影の後のユーザー空間内のストローク曲線の単一幅値は、典型的に、多値をとる(つまり、幅は、ストローク曲線の長さにそって変化する)。)
【００２１】
したがって、本発明では、ストローク曲線をレンダリングするためのより効率的なメカニズムを実現することができるだけでなく、そうするための特に都合のよいメカニズムも実現する。
【００２２】
本発明は、上述のような特性を有する「正準曲線」を導出することができる任意の形式のストローク曲線とともに使用できる。したがって、グラフィックス処理システムによって受け取られる入力ストローク曲線は、適切な関連する正準曲線を持つことができる曲線族からの任意の曲線とすることができる。
【００２３】
この形態の関連する正準曲線を有することができる一曲線族は、二次曲線である。この場合、正準曲線は、基本的二次曲線、つまり、y=x2の形式の曲線である。
【００２４】
したがって、特に好ましい一実施形態では、グラフィックス処理システムによって受け取られるユーザー空間内のストローク曲線は、二次曲線である。
【００２５】
本発明のプロセスへの入力として受け取られるユーザー空間内で定義されているストローク曲線は、望ましい、好適な方法で定義することができる。
【００２６】
例えば、好ましくは、グラフィックス処理システムは、曲線の位置および曲線に関係するパラメータなどのストローク曲線を定義する情報を受け取ることができる。
【００２７】
上述のように、受け取った(または入力された)ストローク曲線は、好ましくは、中心曲線および関連するストローク幅によってユーザー空間内で定義されている。ストローク曲線(ストローク)の中心曲線は、開始制御点と終了制御点との間に引かれる曲線の種類を示す情報とともに、典型的には始点、終点、および1つまたは複数の中間点を含むユーザー空間内の複数の制御点の位置によって好ましくは定義される。例えば、好ましくは、ストロークの中心曲線は、二次ベジエ曲線(単一の中間制御点を必要とする)、三次ベジエ曲線(2つの中間制御点を必要とする)、および楕円弧のうちの1つを含む。
【００２８】
したがって、好ましい一実施形態では、ユーザー空間内で定義されているストローク曲線を受け取るステップまたは受け取るための手段は、ユーザー空間内の複数の制御点の位置、曲線の種類を示す情報、およびユーザー空間内のストローク幅を受け取るステップを含む。
【００２９】
本発明のプロセスへの入力であるユーザー空間内で定義されているストローク曲線は、例えば曲線を描画する必要があるアプリケーションによって最初に定義されるようなストローク曲線であってもよい。
【００３０】
しかし、入力ストローク曲線は、ユーザー空間内で定義されている他の曲線から派生する曲線とすることも可能であろう。例えば、入力ストローク曲線は、他の曲線または初期曲線を、本発明によって受け取られるユーザー空間形式に変換することにより導出されたものであってもよいとも考えられる。
【００３１】
同様に、入力ストローク曲線は、ユーザー空間内で定義されている初期曲線を細分することにより導出することができると考えられる。
【００３２】
例えば、以下でさらに説明されるように、出願人は、対応する曲線が正準空間内にない曲線がレンダリングされる場合に、初期曲線を、それぞれ対応する正準曲線を持つ(関連する正準曲線を有する曲線族の要素である)複数の曲線セクションまたはセグメントに細分することが可能な場合があることを認識している。例えば、三次曲線または楕円曲線は、複数の二次曲線に細分することができる。したがって、これにより、本発明は、直接定義されている(および/または格納されている)または利用可能な直接対応する正準曲線がない可能性のある曲線をレンダリングするために使用できるであろう。
【００３３】
出願人は、さらに、レンダリングされる与えられたストローク曲線をレンダリングのため異なる複数のセクションに分割することが望ましい場合もあることを認識しているが、これは、以下でさらに説明されるように、レンダリングプロセスをさらに簡単なものにできる可能性があるからである。
【００３４】
したがって、特に好ましい一実施形態では、本発明は、さらに、ユーザー空間内で定義されているストローク曲線を複数のストローク曲線セグメントに細分し、複数のストローク曲線セグメントのうちの1つまたは複数のセグメントが本発明の方法で処理されレンダリングされるユーザー空間内で定義される入力ストローク曲線を形成するようにするステップまたはそのための手段を備える。
【００３５】
例えば、好ましくは、ユーザー空間内で定義されているようなストローク曲線は、関連する正準曲線を有する曲線ではない場合、関連する正準曲線を有する曲線族の要素である複数の曲線セグメントに細分できる(細分される)。このような好ましい一実施形態では、ユーザー空間内で定義されているようなストローク曲線が、三次曲線または楕円曲線である場合、このような曲線は、複数の二次曲線に細分され、次いで、本発明を使用してレンダリングされる。
【００３６】
したがって、文脈上問題がない限り、本明細書で言及する入力ストローク曲線は、本発明のレンダリングプロセスに「入力」される曲線を指すことが意図されており、その入力曲線は、例えば、注目するアプリケーションによって最初に定義されているような曲線、またはその曲線の部分セクションなどの初期「ユーザー定義」曲線から導出された曲線としてもよいことに留意されたい。
【００３７】
入力ストローク曲線は、グラフィックス処理システムによって受け取られた後、受け取られたストローク曲線を表す正準空間の対応する部分を決定する必要がある。この決定は、好適な、望ましい任意の方法で実行できる。
【００３８】
特に好ましい一実施形態では、これは、ユーザー空間内で定義されているようにストロークの中心曲線を取り、正準曲線の対応する部分の上に置くために必要な変換を決定することにより行われる。上述のように、この変換(ユーザー正準変換)は、平行移動、回転、および/または均等スケーリングのみを必要とするべきである。
【００３９】
したがって、ユーザー空間内のストローク曲線を正準曲線の該当する部分に変換する変換を決定するステップまたは決定するための手段は、好ましくは、変換の、もしあれば、平行移動部分(成分)を決定するステップを含む。
【００４０】
変換の平行移動部分(成分)は、好適な、望ましい任意の方法で決定できる。しかし、特に好ましい一実施形態では、受け取ったストローク曲線(したがって、正準曲線)が、二次曲線である場合、変換の平行移動部分(成分)は、ユーザー空間内の入力ストローク曲線の天底(つまり、二次曲線に関連する最大の曲率の点)を正準曲線の天底上に移動するために必要な平行移動を決定することにより決定される。
【００４１】
したがって、好ましい一実施形態では、変換の平行移動部分(成分)を決定するステップまたは決定するため手段は、受け取ったストローク曲線の天底(の位置)を決定するステップおよびその天底を正準曲線の天底(の位置)にマッピングするために必要な平行移動を含む。
【００４２】
(これから理解されるように、ユーザー空間内で定義されているようなストローク曲線の天底は、定義されているストロークの中心曲線上(つまり、入力ストローク曲線の開始制御点と終了制御点との間の位置)にあるか、または入力ストローク曲線の中心曲線の補外部分(入力ストローク曲線の開始制御点および終了制御点の外側にある位置)にあるものとしてもよい。同様に、受け取ったストローク曲線に対応する正準曲線の部分は、正準曲線の天底を含むか(前者の場合)、または受け取ったストローク曲線に対応する正準曲線の部分は、正準曲線の天底を含まない場合がある(後者の場合)。)
【００４３】
ユーザー空間内のストローク曲線を正準曲線の該当する部分に変換する変換を決定するステップまたは決定するための手段は、同様に、好ましくは、変換の、もしあれば、回転部分(成分)を決定するステップを含む。
【００４４】
変換の回転部分(成分)も、好適な、望ましい任意の方法で決定できる。しかし、特に好ましい一実施形態では、ここでもまた、受け取ったストローク曲線(したがって、正準曲線)が、二次曲線である場合、変換の回転部分(成分)は、天底から等距離のところにある、天底の反対側の、受け取ったストローク曲線の中心曲線上の2点の間に引かれた直線を、正準曲線について引かれた対応する直線に平行になるようにするために必要な回転を決定することにより決定される。
【００４５】
ユーザー空間内のストローク曲線を正準曲線の該当する部分に変換する変換を決定するステップまたは決定するための手段は、同様に、好ましくは、変換の、もしあれば、均等スケーリング部分(成分)を決定するステップを含む。
【００４６】
変換の均等スケーリング部分(成分)も、好適な、望ましい任意の方法で決定できる。しかし、特に好ましい一実施形態では、ここでもまた、受け取ったストローク曲線(したがって、正準曲線)が、二次曲線である場合、変換の均等スケーリング部分(成分)は、天底から等距離のところにある、天底の反対側の、受け取ったストローク曲線の中心曲線上の2点の間に引かれた第1の直線と第1の直線の中点から天底に引かれた第2の直線の長さの比を決定し、次いでこの比が正準曲線から得られた対応する比に等しくなるようにするために必要なスケーリング係数を決定することにより決定される。
【００４７】
変換の平行移動、回転、および均等スケーリング成分を決定するステップは、必要に応じて任意の順序で実行できる。しかし、本発明の好ましい一実施形態では、平行移動成分が最初に決定され、その後、回転成分、そして最後に均等スケーリング成分が決定される。
【００４８】
入力ストローク曲線の中心曲線を正準曲線にマッピングするために必要な変換が決定された後、入力ストローク曲線に対応する(つまり、入力ストローク曲線が覆う)正準空間の部分は、好ましくは、決定された変換を使用して、入力ストローク曲線の中心曲線の始点および終点に対応する正準曲線上の2つの位置、および正準空間内で入力ストローク曲線が持つ幅(決定されたユーザー正準変換のスケーリング係数を掛けたユーザー空間内の曲線の幅である)を決定することにより決定される。これにより、正準空間内の入力ストローク曲線の位置が得られる。
【００４９】
入力ストローク曲線に対応する正準空間の部分(位置)が決定された後、曲線のレンダリングを行うことができる。
【００５０】
これは、最初に、グラフィックス処理システム(への入力)によって受け取られる変換(ユーザーサーフェス変換)を使用(実装)して、受け取ったストローク曲線をサーフェス空間内に投影することにより行われる。したがって、ユーザーサーフェス変換は、グラフィックス処理システムによって決定されず、代わりに、ユーザー空間内の位置をサーフェス空間内の対応する位置に投影するために必要なマッピングを示す所定の変換としてシステムに入力されるという点で、ユーザー正準変換と異なることは理解されるであろう。
【００５１】
次いで、サーフェス空間内に現れるストローク曲線(投影されたストローク曲線)を覆う1つまたは複数のグラフィックスプリミティブが生成される。これらの1つまたは複数のグラフィックスプリミティブは、投影されたストローク曲線を覆う1つまたは複数の境界ボックスを定義する方法、および/または投影されたストローク曲線の端点、つまり開始および終了(制御)点にぴったり合わさる境界多角形を定義する方法など、好適な、所望の技術を適宜使用して定義されうる。
【００５２】
次に、サーフェス空間内の生成されたプリミティブに対するサンプリング点に対応する正準空間内のサンプリング位置が決定される(したがって、サーフェス空間内のサンプリング点に対応する正準空間内の位置が、正準空間内のストローク曲線の位置に入るかどうかを決定できる)。
【００５３】
正準空間内のサンプリング点に対する対応する位置は、好適な、望ましい任意の方法で決定できる。しかし、好ましくは、対応する位置は、受け取ったストローク曲線をサーフェス空間に投影する(ユーザーサーフェス変換)ために使用される変換の逆変換を使用して、サーフェス空間内のサンプリング点を最初にユーザー空間内の対応する位置にマッピングすることにより決定される。次いで、ユーザー空間内の対応する位置は、好ましくは、ユーザー空間内で定義されているようなストローク曲線を正準曲線の対応する部分に変換する決定された変換(ユーザー正準変換)を使用して、正準空間内の対応する位置にマッピングされる。
【００５４】
したがって、好ましい一実施形態では、サーフェス空間内のサンプリング点に対応する正準空間内の位置を決定するステップまたは決定するための手段は、サーフェス空間内のサンプリング点をユーザー空間内の対応する位置にマッピングし、次いで、ユーザー空間内の対応する位置を正準空間内の対応する位置にマッピングするステップを含む。
【００５５】
このステップに続いて、これから理解されるように、サーフェス空間内のサンプリング点に対応する正準空間内の位置が判明する。
【００５６】
正準空間内の対応するサンプリング位置が決定されると、この位置が、正準空間内に現れるときにストローク曲線内にあるかどうかが判定される。これは、次いで、サーフェス空間内のサンプリング点が、ストローク曲線内にあるかどうかを判定し、したがってそれに応じて、サーフェス空間内のサンプリング点に陰影を付けるために使用できる。
【００５７】
正準空間内のサンプリング位置が、正準空間内に現れるときにストローク曲線内にあるかどうかの判定は、必要に応じて実行することができる。
【００５８】
しかし、出願人は、少なくともいくつかの形態の正準曲線については、正準空間内の離散位置(サンプリング点)毎に、正準曲線上に整数個の点(「解」)が存在し、そこから、正準曲線に垂直な線(直線)を離散位置(サンプリング点)まで引くことが可能であること認識している。さらに、正準曲線上のこれらの1つまたは複数の点(解)は、以下でさらに詳しく説明されるように、正準空間内のサンプリング位置が、正準空間内に現れるときに所定のストローク曲線内にあるかどうかを判定するために使用できる。
【００５９】
最初に、これから理解されるように、正準空間内のストローク曲線、およびより具体的には、正準曲線それ自体の対応するセグメントが、正準空間内の少なくとも1つの特定のパラメータ範囲にわたって延びる。(明確に区別できるパラメータ範囲の数は、正準空間の次元に依存する。)例えば、y=x2の形式の正準曲線では、曲線は「x」値の範囲および「y」(=x2)値の範囲にわたって延び、したがって、「x」と「y」は両方とも、曲線の「パラメータ」として使用できる。
【００６０】
(ここで、特定の正準曲線が延びるパラメータ範囲は、曲線の適当なパラメータ化で表現できることに留意されたい。したがって、y=x2の形式の正準曲線については、軸はパラメータとして使用でき、また好ましくはパラメータとして使用されるが、これは、すべての正準曲線に当てはまるわけではない。)
【００６１】
したがって、正準空間内の所定の位置に関連付けられている正準曲線上の解のパラメータ値を、正準空間内のストローク曲線によって覆われる特定のパラメータ範囲に対してテストし、その位置がこの特定のパラメータ範囲内に入る解を有するかどうかを確認することができる。
【００６２】
当業者であれば理解するように、ストローク曲線は、典型的には、複数のパラメータ範囲(例えば、正準曲線が基本的二次曲線である場合に「x」値および「y」値)によって表されるが、点がストローク曲線によって覆われている正準曲線のセクション内にある場合には曲線のそれぞれのパラメータ範囲内にあるが範囲は定義されているので、1つのパラメータ範囲についてテストするだけで十分である。したがって、例えば、y=x2の形式の正準曲線では、好ましくは、解の「x」値のみが、正準空間内の受け取ったストローク曲線の部分に関連付けられている「x」値の範囲についてテストされる。「x」は、好ましくは、この実施形態でテストされる「パラメータ」として使用されるが、それは、原点の近傍内の正準空間の領域で「y」を使用するよりも正確であるからである。
【００６３】
他の実施形態では、解と正準曲線上の所定の点との間の曲線にそった距離をテストすることができる。例えば、正準曲線が基本的二次曲線である実施形態では、正準空間内の与えられた位置に関連付けられている正準曲線上の天底から解までの曲線にそった距離が決定され、次いで、この距離を、正準空間内に現れるときにストローク曲線によって覆われる特定の距離範囲と比較することができる。
【００６４】
この後者の実施形態は、レンダリングされるストローク曲線が、与えられた点描パターンで点描される(例えば、一連のドットおよび/またはダッシュとして表示される)場合に特に有益である。例えば、好ましい一実施形態では、1つまたは複数の点描パターンを好適な所望の方法で、例えば、1Dテクスチャとして格納し、選択された点描パターンを(適切な変換を使用して)、曲線上の所定の点、例えば、天底に関して正準曲線に適用することができる。正準空間内の与えられた位置に関連付けられている解のそれぞれについて決定されるこの所定の点からの曲線にそった距離を、選択された点描パターンと比較し、それに応じて、サーフェス空間内の対応する位置をレンダリングすることができる(例えば、位置が、正準空間内に現れるときに、またその位置に関連付けられている(複数の)解が、選択された点描パターン内にある場合に、ストローク曲線内にあるかどうかに基づき)。
【００６５】
第2に、上述のように、ストローク経路の境界は、経路上のある1つの点まで引くことができる、経路に対して垂直な、所定の幅の線の始点の集合によって定義される。
【００６６】
したがって、正準空間内の与えられた位置に関連付けられている正準曲線上の解の垂直距離、つまり、正準曲線上の点(解)から離散位置(サンプリング点)に引かれた線(直線)の長さを、正準空間内のストローク曲線のストローク幅の半分に対してテストし、その位置が正準空間内に現れるときにストローク曲線内に入る解を有するかどうかを確認することができる。(正準空間内のストローク曲線のストローク幅は、上述のように、ユーザー空間と正準空間との間の変換のスケーリング係数部分(成分)を掛けたユーザー空間内のストローク幅に等しくなる。)
【００６７】
したがって、出願人は、正準空間内の与えられた離散位置(サンプリング点位置)が正準空間内に現れるときにストローク曲線内にあるかどうかを判定する特に効率的な方法は、サンプリング点位置を終点として引くことができる正準曲線に垂直な線(直線)の始点となる正準曲線上の点を識別し、次いで、正準曲線上のこれらの点のどれかがストローク曲線に対応する正準曲線のセクションのパラメータ範囲内にあるかどうか、および正準曲線上のこれらの点のどれかとサンプリング点位置との間の距離が正準空間内に現れるときにストローク曲線のストローク幅の半分以下であるかどうかを判定することであることを認識している。正準曲線上の識別された点のどれか1つがこれらのテストの両方に通った場合、サンプリング点位置は、正準空間内に現れるときにストローク曲線内にある。
【００６８】
したがって、好ましい一実施形態では、正準空間内のサンプリング位置が、受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するステップは、正準空間内のサンプリング位置を終点として引くことができる正準曲線に垂直な線(直線)の始点となる正準曲線上の任意の点が、正準空間内のストローク曲線によって覆われているパラメータ範囲内に入っているかどうかの判定、および正準空間内のサンプリング位置と、引くことができる正準曲線に垂直な線(直線)の終点となる正準曲線上の1つまたは複数の点との間に引かれた線(直線)の長さが、正準空間内に現れるときにストローク曲線のストローク幅の半分以下であるかどうかの判定のうちの少なくとも一方、および好ましくは両方を含む。テストされる正準空間内のサンプリング位置に対するこれらの要件の両方を満たす点が正準曲線上にある場合、サンプリング位置は、正準空間内に現れるときにストローク曲線内に入っており、それに応じて、サーフェス空間内の対応するサンプリング位置も、ストローク曲線内にある(したがって、サーフェス空間内のサンプリング位置をそれに応じて陰影付けすることができる)。
【００６９】
(出願人は、さらに、特定のストローク曲線をレンダリングするためのプリミティブが、レンダリングされる曲線の端点にぴったり合う境界多角形として、つまり、プリミティブ内でサンプリングされうるすべての点が、レンダリングされる曲線のパラメータ範囲内に入るように定義されている場合に、正準空間内のサンプリング位置が、受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかに関する判定は、正準空間内のサンプリング位置と正準空間内の解との間の距離が、正準空間内に現れるときにレンダリングされる曲線のストローク幅の半分以下であるかどうかを判定する単独のステップで行うことができ、また好ましくは行われることを認識している。)
【００７０】
これから理解されるように、正準空間内のサンプリング位置が、正準空間内のストローク曲線内にあるかどうかを判定するために好ましくは使用される上述の2つのステップ(テスト)は、望む任意の順序で実行できる。好ましい一実施形態では、これら2つのテストは、逐次的に実行され、第2のテストは、第1のテストに通った(つまり、第1のテストに基づき潜在的にストローク曲線内にあると判定された)正準曲線上の(複数の)点((複数の)解)についてのみ実行される。当業者であれば理解するように、これにより、与えられた位置が正準空間内のストローク曲線内にあるかどうかを判定するために実行する必要のあるテストの数を減らすことができる。しかし、代替実施形態では、2つのテストは並行して実行され、第1のテストは第2のテストと同時に実行される。この後者の実施形態は、グラフィックスハードウェアを使用するときには都合がよいものと思われる。
【００７１】
好ましい一実施形態では、正準空間内の与えられた離散位置(サンプリング点位置)に関連付けられている正準曲線上のそのような点(解)の1つまたは複数または全部を必要に応じて上述の方法でテストし、その位置が、正準空間内に現れるときにストローク曲線内にあるかどうかを判定することができる。
【００７２】
例えば、出願人は、入力ストローク曲線のいくつかのセクション、例えば、特定の(複数の)特性を有するストローク曲線の領域に関連付けられていないセクションについて、正準空間内の特定の位置(複数のセクションのうちの1つのセクション内にある)がストローク曲線の部分内にあるかどうかをその位置に関連付けられているそのような複数の可能な点(解)のすべてではなくいくつか、好ましくは1つのみをテストするだけで正しく判定することが可能であることを認識している。好ましくは、このような「テスト」が使用される場合、テストされる点(解)は、正準空間内の各位置に最も近い点(解)、つまり、各位置までの最小垂直距離を有する点(解)である。
【００７３】
出願人は、さらに、入力ストローク曲線の他のセクション、例えば、特定の(複数の)特性を有するストローク曲線の領域に関連付けられているセクションについて、正準空間内の与えられた位置に関連付けられているそのような1つの点(解)(それら複数の領域のうちの1つの領域内にある)は、その位置がストローク曲線の部分内にあることを示しうるが、その位置に関連付けられている他のそのような点(解)は、その位置が正準空間内に現れるときにストローク曲線の外側にあることを示しうることを認識している。したがって、ストローク曲線のそのような領域を正確にレンダリングするためには、その位置に関連付けられている点(解)のうちの少なくとも2つ、好ましくはすべてをテストする必要がある場合がある。
【００７４】
したがって、好ましい一実施形態では、受け取ったストローク曲線をレンダリングするために使用される、または、後述のように、受け取ったストローク曲線の一部をレンダリングするために使用されるレンダリングプロセスは、正準空間内の位置に関連付けられているそのような解を1つのみ、好ましくは最も近いそのような解をテストするステップを含むか、あるいは正準空間内の位置に関連付けられている複数の点(解)のうちの2つ以上、好ましくはすべてをテストするステップを含むことができ、これにより、正準空間内のその位置が、適宜、正準空間内に現れるときにストローク曲線またはその一部の中にあるかどうかを判定することができる。
【００７５】
同様に、曲線をレンダリングするためのプリミティブがどのように生成されるかに応じて、上述のように、正準空間内の位置に対する1つ(それぞれの)与えられた解に関連付けられているデータのすべてではなく、一部のみをテストするだけでよい(またはその(それぞれの)解に関連付けられているデータのすべてをテストする必要がある場合がある)。
【００７６】
同じレンダリングプロセスが、ストローク曲線全体をレンダリングするために使用できる。その代わりに、2つ以上のレンダリングプロセスを使用してストローク曲線をレンダリングすることができ、例えば、第1のレンダリングプロセス(例えば、これより少ない解、例えば、1つのみがテストされる)を使用してストローク曲線の第1の1つまたは複数の部分をレンダリングし、第2の、異なる、レンダリングプロセス(例えば、2つ以上の、好ましくはすべての解がテストされる)を使用して、ストローク曲線の第2の1つまたは複数の部分をレンダリングする。
【００７７】
正準空間内のサンプリング位置が、受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定する、好ましくは上述のステップ(テスト)を含む、ステップが、好適な、所望の方法で実行されうる。しかし、好ましい一実施形態では、これは、プロセスを実行させるための所定の情報(つまり、予め格納されているデータ)を検索することにより行われる。
【００７８】
特に、出願人は、正準空間内の与えられた(サンプリング)位置に対する正準曲線上のそれぞれの「解」のパラメータ位置(または正準曲線上の所定の点からその解までの距離)、およびその解に対する正準空間内の(サンプリング)位置までの垂直距離を予め導出し、格納しておき、次いで、例えば、その位置を正準空間内でテストしなければならないときに検索をかけることができることを認識している。正準空間内の(サンプリング)位置に関するこの格納されている情報は、次いで、考察されている与えられたストローク曲線に対する、パラメータ範囲および正準空間内のストローク幅(の半分)と比較され、これにより、正準空間内の位置が、考察されているストローク曲線内に入っていることを示す正準曲線上の解を有するかどうかを確認することができる。したがって、このようなデータが、正準空間を覆う複数の位置(サンプリング位置の集合)について格納されている場合、格納されている位置は、テストする必要があると思われる正準空間内の与えられた位置について検索できる。
【００７９】
このような情報を予め決定し、格納しておく方法は、これらのテストを実行するための特に便利な、また効果的なメカニズムを提供する。さらに、正準空間内のそれぞれの位置について、上述のように、有限個のこのような「解」があるため、正準空間内の位置に関するこの情報を格納する作業は、比較的管理しやすいものである。
【００８０】
したがって、特に好ましい一実施形態では、所定の情報が、上述のように、正準空間内の複数の離散位置について格納される。最も好ましくは、考慮される/必要とされると予想される正準空間を(実質的に)覆うサンプリング点の正則配列について、このような情報を格納する。
【００８１】
したがって、特に好ましい一実施形態では、正準空間内の複数の位置のうちの少なくとも1つの位置について、曲線に垂直な直線を正準空間内の位置から引いたときの終点となる正準曲線上の1つまたは複数の点のうちの少なくとも1つの点に対するパラメータ値、および正準曲線上の1つまたは複数の点のうちの少なくとも1つの点と正準空間内の各位置との間の垂直距離が格納される。
【００８２】
「解データ」が格納される正準空間内の複数の離散位置のうちの1つまたは複数の位置について、すべてではないが、曲線に垂直な線(直線)を(複数の)各位置から引いたときに終点となる正準曲線上の任意の点がない場合がある(つまり、その点に対する曲線上の解がない場合がある)ことに留意されたい。同じことだが、他の位置より多くの解を有する正準空間内の位置がいくつかありうる。好ましくは、データが格納される与えられた位置について解が全くないか、または少ない場合には、情報が格納されないか、または特に好ましい一実施形態では、(複数の)「欠測」解についての所定の、または定義済み(デフォルト)の情報が、例えば以下でさらに詳しく説明されるように格納される。
【００８３】
同様に、特に好ましい一実施形態では、正準空間内の位置(サーフェス空間内のサンプリング位置に対応する)が、正準空間内に現れるときにストローク曲線内に入るかどうかを判定するステップまたは判定するための手段は、正準空間内の複数の位置について、曲線に垂直な直線を正準空間内の位置から引いたときの終点となる正準曲線上の1つまたは複数の点のうちの少なくとも1つの点に対するパラメータ値、および正準曲線上の1つまたは複数の点のうちの少なくとも1つの点と正準空間内の各位置との間の垂直距離を格納するデータストアを検索するステップを含む。
【００８４】
正準空間内のサンプリング点の配列に関する情報の集合、例えば、データストアは、所望の、好適な方法で格納されうる。しかし、本発明の特に好ましい一実施形態では、正準空間内の複数の離散位置に関する情報は、1つまたは複数のグラフィックテクスチャの形式で格納される。これは、特に有利で、有益であるのは、グラフィックステクスチャが特定の地理的位置の配列に関してデータを格納することを意図されているだけでなく、以下でさらに説明されるように、データをテクスチャの形式で格納することにより、グラフィックス処理システムに通常組み込まれている既存のテクスチャマッピングプロセスを本発明の方法によるストローク曲線のレンダリングに使用できるからである。
【００８５】
そこで、本発明の第3の態様によれば、グラフィックス処理システムにおいて表示するストローク曲線をレンダリングする方法が提供され、この方法は、
ユーザー空間内で定義されている入力ストローク曲線を受け取るステップと、
受け取ったストローク曲線に対応する正準空間で定義されている正準曲線の部分を決定することにより受け取ったストローク曲線に対応する正準空間の部分を決定するステップと、
受け取った変換を使用して受け取ったストローク曲線をサーフェス空間内に投影するステップと、
サーフェス空間内で投影されたストローク曲線を覆う1つまたは複数のプリミティブを定義するステップと、
次いで、1つまたは複数のプリミティブ内の複数のサンプリング点のそれぞれについて、
正準空間内の対応する位置を決定するステップと、
それぞれが正準空間内の少なくとも1つの離散位置に関する情報に関連付けられている複数のテクセルを有する1つまたは複数のグラフィックステクスチャの少なくとも1つのテクセルをサンプリングして、正準空間内の対応する位置が、受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するステップとを含む。
【００８６】
本発明の第4の態様によれば、グラフィックス処理システムにおいて表示するストローク曲線をレンダリングするための装置が実現され、この装置は、
ユーザー空間内で定義されているストローク曲線を受け取るための手段と、
受け取ったストローク曲線に対応する正準空間で定義されている正準曲線の部分を決定することにより受け取ったストローク曲線に対応する正準空間の部分を決定するための手段と、
受け取った変換を使用して受け取ったストローク曲線をサーフェス空間内に投影するための手段と、
サーフェス空間内で投影されたストローク曲線を覆う1つまたは複数のプリミティブを定義するための手段と、
1つまたは複数のプリミティブ内の複数のサンプリング点のそれぞれについて、正準空間内の対応する位置を決定するための手段と、
それぞれが正準空間内の1つの離散位置に関する情報に関連付けられている複数のテクセルを有する1つまたは複数のグラフィックステクスチャの少なくとも1つのテクセルをサンプリングして、正準空間内の対応する位置が、受け取ったストローク曲線に対応する正準空間の部分内にあるかどうかを判定するための手段とを備える。
【００８７】
また、この形式のグラフィックステクスチャを使用するのは、それ自体新しいことであり、また有利な方法であると信じられる。したがって、本発明は、そのようなテクスチャの構成およびそのようなテクスチャそれ自体に及ぶ。
【００８８】
したがって、発明の第5の態様によれば、表示するストローク曲線をレンダリングするときにグラフィックス処理システム内で使用するためのグラフィックステクスチャが形成され、前記テクスチャのそれぞれのテクセルは、定義されている空間内の少なくとも1つの位置を表し、またそのテクセルには、前記少なくとも1つの位置について、前記空間内で定義されている曲線に関する情報が関連付けられている。
【００８９】
本発明の第6の態様によれば、表示するストローク曲線をレンダリングするときにグラフィックス処理システムとともに使用するためのグラフィックステクスチャを構成する方法が提供され、この方法は、
定義されている空間内で曲線を定義するステップと、
前記定義されている空間内の複数の位置のそれぞれについて、前記空間内で定義されている曲線に関する情報を決定するステップと、
それぞれのテクセルが前記定義されている空間内の複数の位置のうちの少なくとも1つの位置に対応する、前記空間内で定義されている曲線に関する決定された情報が関連付けられているテクセルの配列を含むグラフィックステクスチャを生成し、格納するステップとを含む。
【００９０】
本発明の第7の態様によれば、表示するストローク曲線をレンダリングするときにグラフィックス処理システムとともに使用するためのグラフィックステクスチャを構成するための装置が作製され、この装置は、
定義されている空間内で曲線を定義するための手段と、
前記定義されている空間内の複数の位置のそれぞれについて、前記空間内で定義されている曲線に関する情報を決定するための手段と、
それぞれのテクセルが前記定義されている空間内の複数の位置のうちの少なくとも1つの位置に対応する、前記空間内で定義されている曲線に関する決定された情報が関連付けられているテクセルの配列を含むグラフィックステクスチャを生成し、格納するための手段とを備える。
【００９１】
当業者であれば理解するように、本発明のこれらの態様および実施形態は、適宜、本明細書で説明されている本発明の好ましい、およびオプションの機能のどれか1つを備えることができ、好ましくは備える。
【００９２】
例えば、前記空間内で定義されている曲線に関する情報は、好ましくは、曲線上の1つまたは複数の点に相対的な定義されている空間内の少なくとも1つの位置に関する位置情報を含む。
【００９３】
さらに、曲線は、好ましくは、上述のような正準曲線を含み、その曲線上の1つまたは複数の点は、好ましくは、注目する前記空間内の位置を終点として引くことができる曲線に垂直な(線)直線の始点となる曲線上の1つまたは複数の点を含む。
【００９４】
同様に、1つまたは複数のテクスチャ内のそれぞれのテクセルには、そのテクセル位置に対する正準曲線上の(複数の)解について上で説明されている情報が関連付けられている。言い換えると、それぞれのテクセルは、正準空間内の少なくとも1つの位置を表し、正準空間内のその位置に対する正準曲線上の解点に関する情報を格納するということである。例えば、また好ましくは、その情報は、(複数の)解点のパラメータ値、または正準曲線上の所定の点から(複数の)解点までの距離、および(複数の)解点から曲線までの垂直距離である。
【００９５】
例えば、4チャネルテクスチャ(RGBAを格納する)では、テクスチャの赤色および緑色チャネルは、注目する正準空間内の位置に対する1つの解点について、パラメータ位置および曲線までの垂直距離を格納することが可能であり(または逆も同様に)、青色およびアルファチャネルは、曲線上の他の解点に対する対応するデータを格納することが可能である(テクスチャがサポートするデータチャネルがほかにあれば、さらに同様に)。その代わりに、必要ならば、他のテクスチャ、または同じテクスチャの他の部分を使用して、注目する位置に対する他の解のデータを格納することも可能である。
【００９６】
情報が、テクスチャの形式で格納される場合、(複数の)テクスチャは、好適な、所望の任意のサイズとすることができ(つまり、テクセルを望むだけ入れられる)、それぞれのテクセルは、関連付けられているデータ構成要素を望むだけいくつでも有することができる。しかし、それぞれのテクセルは、好ましくは、定義済み(正準)空間内の単一の離散位置に関する情報のみを関連付けられている。
【００９７】
出願人は、さらに、正準空間内の任意の離散位置について、また正準曲線が基本的二次曲線である場合に、正準曲線の半分において各離散位置を終点として引くことができる正準曲線に垂直な線(直線)の始点となる関連付けられている点(解)は0個、1個、または2個のみである(つまり、正準曲線が、鏡映対称軸を中心として分割されている(分けられている)場合に)ことを認識している。
【００９８】
したがって、特に好ましい一実施形態では、正準曲線が鏡映対称軸を有し(例えば、二次正準曲線では天底を通過する)、互いの鏡像となる2つの部分に分割される(分けられる)場合、上述のような情報は、正準曲線を半分にした片方の上のその位置に対する「解」点のみについて、正準空間内で定義されている離散位置(サンプリング位置)毎に格納されるだけである。
【００９９】
したがって、正準空間内のそれぞれの離散位置について、正準曲線上の関連付けられている識別された点(解)のパラメータ値および正準曲線上の関連付けられている識別された点(解)と各離散位置との間の距離が格納される本発明の好ましい実施形態では、この場合に、正準空間内のそれぞれの離散位置(サンプリング位置)に対する高々4つの成分(個別の情報)、つまり、(i)正準曲線上の第1の(例えば、最も近い)識別された点(解)のパラメータ値、(ii)正準曲線上の第1の(例えば、最も近い)識別された点(解)と離散位置との間の距離、(iii)正準曲線上の第2の(例えば、最も遠い)識別された点(解)のパラメータ値、および(iv)正準曲線上の第2の(例えば、最も遠い)識別された点(解)と離散位置との間の距離を格納するだけでよい。これら4つの成分は、これから理解されるように、単一の「4チャネル」グラフィックステクスチャの単一テクセル内に格納できて都合がよいが、それは、そのような単一のテクセルが、上述のように、4つのデータチャネル-赤色チャネル、緑色チャネル、青色チャネル、およびアルファチャネル-を有するからである。
【０１００】
好ましくは、それぞれの離散位置に対する最も近い解に関する情報(または最も近い解がない場合には「欠測解」に関する適切なデータ)は、常に、与えられたテクスチャの(および好ましくは使用されているすべてのテクスチャ内の)それぞれのテクセルの同じ部分(チャネル)に格納され、例えば、それぞれのテクセルの赤色および緑色チャネル内に常に格納される。これにより、それぞれのテクセル(およびテクスチャ)は、同じ共通の、基本構成を有し、これにより、特に特定のサンプリング位置に対する最も近い解のみがテストされる(上述のように)実施形態に関連して、システムが最も近い解に関係する情報を格納するテクセルデータチャネルを簡単にテストすることを可能にすることを保証することができる。
【０１０１】
上述のように、1つまたは複数のテクスチャに関連付けられている正準空間内の離散位置のうちの1つまたは複数の位置について、各離散位置を終点として引くことができる正準曲線に垂直な線(曲線)の始点となる正準曲線上の点(解)がないか、あるいは構成によって1つまたは複数のテクスチャが保持する解の数に比べて正準曲線上の点(解)が少ない。例えば、上述の実施形態では、1つまたは複数のテクスチャは、それぞれのテクセルが好ましくは正準曲線上の2点(解)に関する情報、つまり、単一の離散位置に関連付けられている点(解)の最大数を格納できるように構成されるが、これらのテクセルのうちの1つまたは複数は、1つの点(解)に関する情報を格納するためにのみ必要であるか、またはどのような点(解)であってもそれに関する情報を格納するために必要でない場合すらある、つまり、正準空間内の位置に関連付けられているテクセルは、正準曲線上に関連する点(解)を1つのみ有するか、または全く有しない。
【０１０２】
好ましくは、関連付けられている点(解)の最大数より少ない点(解)を有する離散位置(テクセル)については、所定の、または定義済みの値が、テクセルの関連する「パラメータ」および/または「距離」成分内に格納されるが、結果として、「欠測」解は、正準空間内に現れるときにストローク曲線内に入るかどうかを判定するテストに合格しない。
【０１０３】
例えば、好ましい一実施形態では、正準空間内に現れるときに入力され受け取った曲線のストローク幅の半分より常に大きい値は、そのような「欠測」解の「距離」成分に格納される。このような実施形態におけるテクセルの関連付けられている「パラメータ」成分は、空のままにされるか(未定義状態)、または適宜好適な、望ましい値が格納されうるが、これは、正準空間内に現れるときにストローク曲線の外側にあると判定される「欠測」解に対する2つのテストのうちの1つにのみ不合格であればよいからである。
【０１０４】
これにより、本発明によりテクスチャが使用される場合にスプリアスレンダリング効果を結果としてもたらす「欠測」解を回避しやすくなる。
【０１０５】
グラフィックステクスチャが、上述の方法で使用される場合、テクスチャは、正準空間内の与えられた位置について解データを得るために、必要に応じてサンプリングできる。
【０１０６】
例えば、一実施形態では、テクスチャがサンプリングされたときに得られる情報は、サンプリングされる正準空間内の位置に最も近い位置にあるテクセルに関する格納されている情報であるものとしてもよい。
【０１０７】
しかし、特に好ましい一実施形態では、テクスチャは、当技術分野で知られているような、双線形フィルタリングなどの好適なテクスチャフィルタリングまたは補間プロセス、好ましくは双線形フィルタリングを使用してサンプリングされる。これは、実際に、テクスチャの分解能を高め、したがって、レンダリング精度を向上させる。そのため、特に好ましい一実施形態では、テクスチャは、双線形フィルタリングを使用してサンプリングされる。
【０１０８】
(また、情報が格納される正準空間内の離散位置の数を増やすことにより、テクスチャの絶対分解能を高めることも可能であろう。しかし、こうすることが、常に望ましいわけではない。したがって、テクスチャをサンプリングする際のフィルタリングまたは補間プロセスの使用は、テクスチャの絶対分解能を高めなくてもレンダリング精度を高める代替手段となる。)
【０１０９】
特に好ましい一実施形態では、正準空間内で定義されているそれぞれの離散位置(例えば、それぞれのテクセル)について格納されている情報は、正準曲線上の1つまたは複数の識別された点のそれぞれと各離散位置との間の、絶対距離ではなく、符号付き距離を含む。符号付き距離は、これから理解されるように、2つの点の間の距離(絶対距離)だけでなく、離散位置が正準曲線のどちら側に入るかということも示す。例えば、離散位置が正準曲線の上にある場合、距離には正の値が付けられ、離散位置が正準曲線の下にある場合、距離には負の値が付けられる(またはもちろん、同様にその逆も)。
【０１１０】
符号付き距離を使用すると、フィルタリングまたは補間を使用する際にテクスチャのサンプリングを正確に行いやすくなる。
【０１１１】
出願人は、サンプリングされる際にテクスチャから返される値は、使用されているテクスチャルックアップ(サンプリング)プロセスに依存する、例えば、テクスチャがサンプリングされるときに何らかの形式のフィルタリングまたは補間が適用されるかどうか、またその場合に、適用されるフィルタリングまたは補間のその形式に依存することを認識している。例えば、テクセルの同一の配列について、双線形フィルタリングを使用するテクスチャサンプリングプロセスは、サンプリング位置に最も近い位置にあるテクセルの値を単純に取るテクスチャルックアップと比べて、与えられたサンプリング位置に対する異なるテクセル値を返すことができる。
【０１１２】
これを、本発明の1つまたは複数のテクスチャを構成するときに利用し、優れたレンダリング結果を得ることができる。特に、出願人は、1つまたは複数のテクスチャ内のテクセル値がテクスチャが使用される場合に使用されるテクスチャサンプリングプロセス(フィルタリング)に合わせて手直しまたは最適化できる場合、与えられたテクスチャ分解能に対するストローク曲線をより正確にレンダリングすることが可能になると認識している。
【０１１３】
したがって、好ましい一実施形態では、1つまたは複数のテクスチャは、好ましくは、使用されるテクスチャサンプリング技術に合わせて手直しされる。言い換えると、1つまたは複数のテクスチャは、好ましくは、(複数の)テクスチャとともに使用される特定のテクスチャサンプリング技術を考慮して構成される。
【０１１４】
例えば、1つまたは複数のテクスチャのテクセル値は、好ましくは、例えばテクセル中心で正しい値を持つようにすることを必ず目指すのではなく、選択されたテクスチャサンプリングプロセス(例えば、双線形フィルタリング)でサンプリングした後に最大誤差、および/または局所誤差の総和を最小にするように設定(計算)される。特に好ましい一実施形態では、テクセル値は、サンプリングプロセスを表すために使用されうる費用関数を導出し、次いでシミュレーテッドアニーリング法などの1つまたは複数の最適化アルゴリズムを使用してその費用関数を最小にすることにより決定され、選択(設定)される。
【０１１５】
特に好ましい一実施形態では、それぞれが異なる正準曲線および/または与えられた正準曲線の異なる部分を表す複数の異なるテクスチャが生成され、格納される。次いで、描画される与えられた曲線に対し、その曲線に最も適しているテクスチャが識別され、選択され、曲線をレンダリングするために使用されうる。したがって、テクスチャ内の曲線の好適な範囲を表すことにより、一定範囲のストローク曲線をレンダリングすることが可能であろう。
【０１１６】
好ましい一実施形態では、複数の異なる正準曲線が表され、同じテクスチャマップ内に格納される。これは、テクスチャ内の曲線を空間的に分離し、次いで、当技術分野で知られているように、注目する曲線についてテクスチャ内の適切な領域をサンプリングすることにより行われうる。
【０１１７】
特に好ましい一実施形態では、正準空間の異なる領域内の複数の離散位置に関する情報をそれぞれ格納する複数のテクスチャが、与えられた正準曲線に関して使用され格納される。例えば、正準空間の第1の領域内の複数の離散位置に関する情報を格納する第1のテクスチャが、好ましくは構成(使用)され、正準曲線に関して正準空間の第2の領域内の複数の離散位置に関する情報を格納する少なくとも1つの第2のテクスチャが構成(使用)される。
【０１１８】
正準空間の第1および第2の領域は、明確に区別できる、分離した領域であるか、あるいはその代わりに、部分的に、または完全に重なり合うものとしてもよい。実際、好ましい一実施形態では、第1の領域は、第2の領域に完全に包含される。例えば、正準曲線が基本的二次曲線である実施形態では、第1の領域は、天底から第1のパラメータ位置まで延びる正準空間の領域を覆うことができ、第2の領域は、天底から第2のより大きなパラメータ位置まで延びる正準空間の領域を覆うことができる。
【０１１９】
本発明が使用される場合、好ましくは、(複数の)正準曲線を表す(複数の)テクスチャが予め生成され、次いで、グラフィックス処理システムで使用できるように適宜格納され、例えば、好ましくは、グラフィックス処理システムが使用できる他の(静的)テクスチャマップとともに格納される。次いで、与えられたテクスチャが選択され、適宜、注目するストローク曲線がレンダリングされるときに使用される。
【０１２０】
例えば、上述のような本発明の好ましいステップを使用して、サーフェス空間内の1つまたは複数のプリミティブ内のサンプリング点が、正準空間内に現れるときにストローク曲線内に入るかどうかが判定された後、赤色、緑色、および青色(RGB)の値および「アルファ」(透明度)値などのデータは、この判定に基づきサンプリング点に(ユーザー空間内で定義されているような受け取ったストローク曲線に従って必要に応じて)割り当てることができる。次いで、このプロセスは、好ましくは、サーフェス空間内で定義されている複数のサンプリング点のそれぞれについて繰り返され、それに応じて、ストローク曲線がレンダリングされる。
【０１２１】
したがって、上記から、本発明の好ましい一実施形態では、1つまたは複数のプリミティブは、生成されるサンプリング点およびフラグメントに対しラスター処理され、適切な正準曲線を表すテクスチャおよび正準空間の一部は、プリミティブサンプリング点位置に対応するテクスチャ内のサンプリング位置により1つまたは複数のプリミティブのそれぞれのサンプリング点についてサンプリングされる(当技術分野で知られているような方法で)ことがわかる。(上述のように、テクスチャは、双線形フィルタリングなどの適切なテクスチャフィルタリングプロセス、好ましくは双線形フィルタリングを使用して、サンプリングされるべきである。)
【０１２２】
次いで、サンプリングされたテクスチャ値は、ストローク曲線に対する対応する値(例えば、好ましくは、正準空間内のパラメータ範囲およびストローク幅(の半分))と比較され、それに応じて、サーフェス空間内の対応するサンプリング点が保持されるか、または破棄される。
【０１２３】
この「比較して破棄する」プロセスは、注目するグラフィックス処理システムに望ましい、また好適な方法で実行されうる。例えば、プログラム可能なフラグメントシェーダーハードウェアを有するグラフィックス処理システムでは、比較および条件付き破棄ルーチンを使用することが可能であり、好ましくは使用される。
【０１２４】
固定機能ハードウェアを有するグラフィックス処理システムでは、本発明のこのオペレーションは、例えば、サンプリング点(フラグメント)を何回もグラフィックスレンダリングパイプラインに通すという形で実装されうる。
【０１２５】
例えば、グラフィックスレンダリングパイプラインを通る第1のパスは、(複数の)サンプリング点に対する1つまたは複数の解のうちの1つのパラメータ値が、正準空間内に現れるときにストローク曲線のパラメータ範囲内にあるかどうかをチェックするために使用され、次いで、グラフィックスパイプラインを通る第2のパスは、これが必要な場合に、解とサンプリング位置との間の距離が、ストローク曲線のストローク幅の半分以下であるかどうか(またはもちろん、逆も同様に)チェックするために使用されうる。必要ならば、類似のパスの対を構成し、サンプリング位置に関連付けられている正準曲線上の1つまたは複数の点(解)のうちの他方をチェックする。
【０１２６】
必要ならば、上述のようにテストで使用される情報の絶対値を生成するために、ドット積を使用することができる。例えば、ドット積は、好ましくは、符号付き距離を絶対距離に変換するために使用される。さらに、1つの(その)アルファテストは、好ましくは、上述のようにテストで必要とされる比較を実装するために使用される。
【０１２７】
上述のように、特に好ましい一実施形態では、解がレンダリングパイプラインを通る第1のパスで不合格であった場合、これに対するテストは(パイプラインを2回目に通すことで)それ以上行われない。これは、好ましくは、ステンシルバッファを使用して実装される。
【０１２８】
特に好ましい一実施形態では、本発明のさまざまな機能は、表示デバイスのフレームバッファに書き込まれるデータを生成して出力する単一のグラフィックス処理プラットフォーム上で実行される。
【０１２９】
本発明は、「パイプライン化された」構成を有するレンダラーなど、任意の形態または構成のレンダラーに適用可能である(この場合、レンダラーは、レンダリングパイプラインの形態をとる)。好ましい一実施形態では、これは、ハードウェアグラフィックスパイプラインに適用される。本発明のさまざまな機能および要素などは、例えば、好ましくは、適切な機能ユニット、処理ロジック、プロセッサ、マイクロプロセッサ装置などにより必要に応じて実装されうる。
【０１３０】
本発明は、即時モードレンダリング、遅延モードレンダリング、タイルベースレンダリングなど、すべてのレンダリング形式に適用可能である。
【０１３１】
上記から理解されるように、本発明は、もっぱらというわけではないが、3Dグラフィックスプロセッサおよび処理デバイスに特に適用可能であり、それに応じて、本明細書で説明されている本発明の複数の態様のうちの1つまたは複数の態様の装置を含む、または本明細書で説明されている本発明の複数の態様のうちの1つまたは複数の態様に従って動作する、3Dグラフィックスプロセッサおよび3Dグラフィックス処理プラットフォームにも拡大適用される。上述の特定の機能を実行するためにハードウェアが必要であることを前提条件とすると、そのような3Dグラフィックスプロセッサは、他の何らかの方法で、3Dグラフィックスプロセッサが備える、通常の機能ユニットなどの1つまたは複数またはすべてを備えることができる。
【０１３２】
本発明は、同様にして、2Dグラフィックスプロセッサおよび2Dグラフィックス処理にも拡大適用される。
【０１３３】
当業者であれば、本発明の説明されている態様および実施形態はすべて、適宜、本明細書で説明されている好ましい、およびオプションの機能の1つまたは複数あるいはすべてを備えることができ、好ましくは備えることを理解するであろう。
【０１３４】
本発明による方法は、少なくとも部分的にはソフトウェアを使用して、例えばコンピュータプログラムを使用して実装されうる。そのため、他の態様から見たときに、本発明は、データ処理手段にインストールされたときに本明細書で説明されている方法を実行するように特に適合されたコンピュータソフトウェア、データ処理手段上でプログラム要素が実行されたときに本明細書で説明されている方法を実行するコンピュータソフトウェアコード部分を含むコンピュータプログラム要素、およびデータ処理システム上でプログラムが実行されたときに本明細書で説明されている1つまたは複数の方法のすべてのステップを実行するように適合されたコード手段を含むコンピュータプログラムを提供することがわかる。データプロセッサは、マイクロプロセッサシステム、プログラマブルFPGA(フィールドプログラマブルゲートアレイ)などとしてもよい。
【０１３５】
本発明は、さらに、データ処理手段を備えるグラフィックスプロセッサ、レンダラー、またはマイクロプロセッサシステムを動作させるために使用されたときに前記データ処理手段と併せて前記プロセッサ、レンダラー、またはシステムに本発明の方法のステップを実行させるそのようなソフトウェアを含むコンピュータソフトウェアキャリアにも拡大適用される。このようなコンピュータソフトウェアキャリアは、ROMチップ、CD ROM、またはディスクなどの物理的記憶媒体とすることが可能であるか、またはケーブル上の電子信号、光信号、または衛星もしくは同様のものなどへの無線信号などの信号とすることが可能である。
【０１３６】
さらに、本発明の方法のステップすべてが、コンピュータソフトウェアによって実行される必要はないことは理解されるであろうし、したがって、さらに広い観点から、本発明は、コンピュータソフトウェア、および本明細書で説明されている方法の複数のステップのうちの少なくとも1つを実行するためにコンピュータソフトウェアキャリア上にインストールされたそのようなソフトウェアを提供する。
【０１３７】
したがって、本発明は、コンピュータシステムとともに使用するためコンピュータプログラム製品として適宜具現化されうる。そのような実装は、コンピュータ可読媒体、例えば、ディスケット、CD-ROM、ROM、またはハードディスクなどの、有形の媒体上に固定された、あるいは限定はしないが、光またはアナログ通信回線を含む有形の媒体上で、あるいは限定はしないが、マイクロ波、赤外線、または他の伝送技術を含む無線技術の無形の手段を使用して、モデムまたは他のインターフェイスデバイスを介して、コンピュータシステムに伝送可能な、一連のコンピュータ可読命令を含むことができる。これら一連のコンピュータ可読命令は、本明細書ですでに説明されている機能の全部または一部を具現化する。
【０１３８】
当業者であれば、このようなコンピュータ可読命令は、多くのコンピュータアーキテクチャまたはオペレーティングシステムとともに使用するために多くのプログラミング言語で作成されうることを理解するであろう。さらに、このような命令は、限定はしないが半導体、磁気、または光を含む、現在の、または将来のメモリ技術を使用して格納されるか、または、限定はしないが光、赤外線、またはマイクロ波を含む、現在の、または将来の通信技術を使用して伝送されうる。このようなコンピュータプログラム製品は、印刷または電子文書を添付した取り外し可能媒体、例えばシステムROMまたは固定ディスク上のコンピュータシステムにプリインストールされている、例えば市販ソフトウェアとして配布されるか、あるいはサーバーまたはネットワーク、例えばインターネットまたはワールドワイドウェブ上の電子掲示板から配布されうる。
【０１３９】
次に、本発明の多数の好ましい実施形態について、付属の図面を参照しつつ、実施例のみを使って説明する。
【図面の簡単な説明】
【０１４０】
【図１】本発明の一実施形態の主システムを示す略図である。
【図２ａ】入力ストローク曲線を正準曲線の対応する部分にマッピングするために必要な変換の決定を示す図である。
【図２ｂ】入力ストローク曲線を正準曲線の対応する部分にマッピングするために必要な変換の決定を示す図である。
【図２ｃ】入力ストローク曲線を正準曲線の対応する部分にマッピングするために必要な変換の決定を示す図である。
【図３】ユーザー空間内のストローク曲線から正準空間内の正準曲線の対応する部分への変換を示す略図である。
【図４】正準空間内の二次正準曲線、および正準空間内の特定の位置に関連付けられている正準曲線上の解を示す図である。
【図５】図4の二次正準曲線上に重ね合わされている入力ストローク曲線に対応する正準曲線の部分を示す図である。
【図６】それぞれが特定のテクスチャに関連付けられている独立したセクションへの正準曲線の細分を示す図である。
【図７】好ましい実施形態に関連付けられているレンダリングパイプラインを示す図である。
【発明を実施するための形態】
【０１４１】
類似の参照番号は、断りのない限り、図中の類似のコンポーネントに使用される。
【０１４２】
図1は、本発明の一実施形態の主システムの概略を示している。
【０１４３】
図1に示されているように、ストローク二次ベジエ曲線1の形態のベクターグラフィックスオブジェクトは、最初に、曲線1の開始および終了制御点c0およびc2の位置、中間制御点c1の位置、およびストローク幅wによって2Dユーザー空間2内で定義される。
【０１４４】
表示するストローク曲線1をレンダリングするために、まず最初に、ストローク曲線1、または典型的には、ストローク曲線を定義する情報をグラフィックス処理システムに入力する。
【０１４５】
レンダリングプロセスの実行中、当技術分野で知られているように、ユーザー空間2内で定義されているようなストローク曲線1は、ストローク曲線が表示されるディスプレイの同じパースペクティブ(幾何学的形状)を有する2Dサーフェス空間3内に投影される。ユーザー空間2からサーフェス空間3へストローク曲線1を投影する変換は、ユーザーサーフェス変換(TUS)と一般に呼ばれ、典型的には、非均等スケーリングを伴う。したがって、サーフェス空間3内の投影されたストローク曲線1'のストローク幅は、通常、曲線の長さにそって変化し、ストローク曲線1と同様な単一の定数値を有することはない。
【０１４６】
ストローク曲線1が、サーフェス空間3内に投影され、これにより、投影されたストローク曲線1'を定義した後、サーフェス空間3内で投影されたストローク曲線1'を覆う図1に示されている多角形などのプリミティブ4が生成される。次に、当技術分野で知られているように、プリミティブ4がラスター処理され、ラスター処理プロセスで定義されている複数のサンプリング点が(投影されたストローク曲線1'を境界とする領域内に入っているかどうかに基づき)適宜陰影付けされ、これにより、投影されたストローク曲線1'が表示される。
【０１４７】
本発明の実施形態では、この判定(サーフェス空間3内のサンプリング点が、投影されたストローク曲線1'内に入るかどうかの)は、ユーザー空間2内で定義されているようなストローク曲線1を正準空間5の対応する部分1"(本明細書ではストローク正準曲線セグメントと称する)にマッピングし、次いで、サーフェス空間3内のサンプリング点に対応する正準空間5内の位置が、ストローク正準曲線セグメント1"内に入るかどうかを判定する形で行われる。
【０１４８】
正準空間5内で定義される正準曲線12は、上述のように、定義済みの単一または基本的な曲線であって、平行移動、回転、および/または均等スケーリングのみを使用して、この曲線(または少なくともその一部)に曲線族内のすべての曲線を変換することができる。例えば、ユーザー空間2内で定義されているようなストローク曲線1が二次曲線である本発明の実施形態では、正準曲線12は、曲線y=x2である。
【０１４９】
これから理解されるように、本発明の実施形態を実装するために、ユーザー正準変換(TUC)、つまり、ユーザー空間2内で定義されているようなストローク曲線1を正準曲線12の対応する部分1"にマッピングする変換を決定する必要がある。
【０１５０】
与えられた入力二次ベジエ曲線について本発明の実施形態でユーザー正準変換を導出する方法が図2に示されている。
【０１５１】
当技術分野で知られているように、一般的な二次ベジエ曲線は、式
<x(t), y(t)>=P(t)=P0(1-t)2+2P1t(1-t)+P2t2、ただし、t∈[0,1]
によって定義されるが、正準二次曲線は、式
<x(t'), y(t')>=<t', t'2>
によって定義される。
【０１５２】
ユーザー正準変換は、上述のように、平行移動(行列Mtによって定義される)、回転(行列Mrによって定義される)、および/または均等スケーリング(kを定数、Iを単位行列として、行列Ms=kIによって定義される)のみからなる。
【０１５３】
本発明の実施形態においてユーザー正準変換を決定するプロセスの第1段階は、変換の平行移動成分(平行移動行列Mt)を決定することである。必要な平行移動は、ユーザー空間2内の入力二次ベジエ曲線10の天底(底点)20を正準空間5内の正準曲線12(原点(0,0)における)の天底22へ平行移動するのに必要なものとして決定される-図2(a)を参照。入力曲線10の天底20は、これから理解されるように、最大の曲率を持つ曲線上の点であり、曲線が二次曲線であるため、パラメータtの変化が曲線上の位置の最小の変化をもたらす点でもある。
【０１５４】
入力曲線10上の2点(x,y)と(x+Δx,y+Δy)との間の距離は、
【０１５５】
【数１】
2010092480.tif 000003
【０１５６】
によって与えられ、ΔxおよびΔyがゼロに近づく極限では、曲線上の位置の無限小の変化は
【０１５７】
【数２】
2010092480.tif 000004
【０１５８】
によって与えられるが、ただし、'はtに関する微分を表す。したがって、入力曲線10の天底20の位置は、D'(t)=0となるtの値を計算することにより決定され、これは、(D(t)2)'=0を解くことと同等であり、以下の解を持つ。
ax = x0 -2x1 + x2
ay = y0 - 2y1 + y2
bx = 2x1 - 2x0
by = 2y1 - 2y0
【０１５９】
【数３】
2010092480.tif 000005
【０１６０】
ただし、式中、(x0,y0)は、ユーザー空間2内のストローク曲線1の開始制御点c0の位置であり(その中心曲線は、入力二次ベジエ曲線10である)、(x1,y1)は、ストローク曲線1の中間制御点c1の位置であり、(x2,y2)は、ストローク曲線1の終了制御点c2の位置である。
【０１６１】
x(t)およびy(t)に対する式にtの上記の値を代入すると、ユーザー空間2内の天底20の(x,y)座標を決定することができ、したがって、入力曲線10の天底20を正準曲線12の天底22に(つまり、正準空間5内の原点(0,0)に)移動するために必要な平行移動を決定することができる。
【０１６２】
ユーザー正準変換の平行移動成分が決定されたら、次は、回転成分(つまり、回転行列Mr)を決定する。このプロセスは、図2(b)に示されている。
【０１６３】
必要な回転は、正準空間5内の平行移動された入力曲線14上に、天底22から等距離のところにある2つの一般的な点30、32を配置することにより決定される。次いで、これら2点の間に直線34を引くことができ、必要な回転は、この直線を水平線にするための必要な回転である(つまり、直線上のすべての点が同じy値を持つようにする)。
【０１６４】
そこで、正準曲線12への平行移動された入力曲線14上の座標(列ベクトルとして与えられる)をとる回転行列Mrを以下のようにして計算することができる。
px = 2axt + bx
py =2ayt + by
【０１６５】
【数４】
2010092480.tif 000006
【０１６６】
最後に、ユーザー正準変換の均等スケーリング成分(つまり、スケーリング行列Ms)を決定する。これは、図2(c)に示されている。
【０１６７】
これから理解されるように、正準空間5内へ適当に平行移動され、回転されたユーザー空間2内の入力曲線10、つまり、図2(c)の曲線16は、これで、y=kx2の形をとり、kは、決定すべきスケーリング係数である。したがって、回転行列を計算するために定義された点30と32との間の直線34の長さが、2l1であり、この直線の中点から原点における曲線16の天底へ延びる直線の長さは、l2と定義され、すると、スケーリングの必要なレベルは、
【０１６８】
【数５】
2010092480.tif 000007
【０１６９】
となる。
【０１７０】
ユーザー空間2内で定義されているような入力されたストローク入力曲線1の中心曲線を正準曲線12の対応する部分にマッピングするのに必要なユーザー正準変換、つまり、TUC=MsMrMt=kMrMtが計算された後、ストローク正準曲線セグメント1"によって覆われている正準空間5の実際のセクションが、決定された変換を入力ストローク曲線1のパラメータに適用することにより決定されうる。このプロセスは、図3に例示されている。
【０１７１】
図3に示されているように、ユーザー空間2内で定義されているような、制御点c0、c1、c2およびストローク幅wを有する入力ストローク曲線1は、正準曲線の対応する部分1"へのユーザー正準変換を使用してマッピングされる。ユーザー正準変換の性質上、ストローク正準曲線セグメント1"は、それ自体、単一ストローク幅w"を持つ、正準曲線12上の始点c0"と終点c2"との間に延びるストローク曲線である。
【０１７２】
ストローク正準曲線セグメント1"の始点c0"および終点c2"は、正準空間5内の入力ストローク曲線1のパラメータ(x)範囲を定める。したがって、図3に示されているように、ストローク正準曲線セグメント1"は、パラメータ位置xAおよびxBの間に延びるパラメータ範囲を有する。
【０１７３】
さらに、ストローク正準曲線セグメント1"のストローク幅w"は、ユークリッド距離は均等スケーリングを適用することで均等目盛を持つので、kw、つまり、ユーザー空間内で定義されているような入力ストローク曲線1のストローク幅wにユーザー正準変換のスケーリング係数kを掛けた値に等しい。
【０１７４】
本発明の実施形態では、上述のように、サーフェス空間3内のプリミティブ4内のサンプリング点が、投影されたストローク曲線1'内にあるかどうかを判定するために、サンプリング点が、ユーザーサーフェス変換の逆変換を使用してユーザー空間2内の対応する位置にマッピングされ、次いで、ユーザー空間2内のこの位置は、ユーザー正準変換を使用して正準空間5内の対応する位置にマッピングされる。最後に、正準空間5内の対応する位置が、ストローク正準曲線セグメント1"内にあるかどうかに関する判定が行われる。
【０１７５】
正準空間5内の位置は、正準空間5内の位置から正準曲線12上の点に直線(ストローク正準曲線セグメント1"に対する中心曲線を形成する)を引くことが可能な場合にストローク正準曲線セグメント1"の内側にあるものとして定義され、したがって、この直線は、曲線に対し垂直であり、その長さは、(ストローク正準曲線セグメント1"の)ストローク幅の半分以下である。この条件を満たさない正準空間5内の位置(点)は、ストローク正準曲線セグメント1"の外にある。
【０１７６】
この判定は、本発明の実施形態では正準二次曲線の第2の特性、つまり、正準曲線の平面内の任意の点について、その曲線に垂直な、平面内の点から引くことができる直線の終点となるその曲線上の点の数は、定数Kを上限とするという特性を使用して行われる。したがって、言い換えると、正準空間5内の任意の点((x,y)位置)について、正準曲線12に垂直な直線をその点から正準曲線12上の整数個の点まで引くことが可能である。したがって、正準空間内のそれぞれの(x,y)位置について、n=0,1,2,3として整数n個の解(曲線上のそのような点)があることになる。
【０１７７】
例えば、図4に示されているように、正準空間5内の点40は、3つのそのような解を有する。第1の解、つまり、垂直な直線が曲線10に「ヒット」する場合は、x=x1にあり、点x=x1における点11から曲線10までの結果の直線は、長さd1を有する。第2および第3の解は、それぞれ、x=-x2およびx=-x3にあり、関連付けられている直線はそれぞれ長さd2およびd3を有する。
【０１７８】
したがって、正準空間5内の点(位置)に関連付けられている正準曲線12上のそれぞれの解は、第1にそのパラメータ(x)値と第2に正準空間5内の点(位置)からのその垂直距離の2つの情報によって定義されることに留意されたい。
【０１７９】
正準空間5内の特定の位置に対する正準曲線上のそれぞれの解に関するこれら2つの情報は、図5を参照しつつ以下でさらに詳しく説明されるように、本発明の実施形態において、特定の位置が、ストローク正準曲線セグメント1"内にあるかどうかを判定するために使用される。
【０１８０】
図5は、図4にすでに示されている二次正準曲線上に重ね合わされたストローク正準曲線セグメント1"を示しており、ストローク正準曲線セグメント1"はx値の範囲にxA≦x≦xBにわたって延び、関連付けられているストローク幅w"を有する。
【０１８１】
正準空間内の点40が、ストローク正準曲線セグメント1"内にあるかどうかを判定するために、最初に、点40に関連付けられている解のうちの少なくとも1つが、範囲xA≦x≦xB内に入るかどうかについて判定される。図5に示されているように、点40に対する第1の解は、所望の範囲内にある、x1のパラメータ(x)値を有することがわかる。次に、この第1の解が、ストローク幅w"の半分以下である垂直距離を有するかどうかが判定される。ここでも図5からわかるように、点40に対する垂直距離d1は、w"/2より小さい。したがって、点40は、ストローク正準曲線セグメント1"内にある。
【０１８２】
このようなテストは、正準空間5内で定義されている複数の離散位置に関連付けられている解に対する上記の2つの情報を格納することにより本発明の実施形態において実行される。本発明の実施形態では、これは正準空間5内の位置の正則行列について実行されるが、これは、本質的ではなく、位置は、正準空間5内の所望の点において定義されうる。
【０１８３】
本発明の実施形態では、上記の情報は、1つまたは複数の特別に構成されたグラフィックステクスチャの形式で格納される。上述のように、これが特に有利なのは、この形式でデータを格納することにより、グラフィックス処理システムの既存のテクスチャマッピングプロセスを使用してストローク曲線をレンダリングできるからである。
【０１８４】
当技術分野で知られているように、グラフィックステクスチャのそれぞれのテクセル(テクスチャ要素)は、4つのチャネル、つまり、赤色チャネル、緑色チャネル、青色チャネル、およびアルファチャネルを有し、そのため、一般的に、4つの独立のデータを格納する。本発明の実施形態では、したがって、第1の解に対する値の集合(つまり、パラメータ値および距離)は、テクセルの赤色および緑色チャネル内に格納され、第2の解に対する値の集合は、テクセルの青色およびアルファチャネル内に格納される。
【０１８５】
したがって、2つより多い解を有する正準空間内の任意の位置で、必要な情報をグラフィックステクスチャの2つ以上のテクセル内に格納することが可能であるが、本発明の実施形態では、グラフィックス処理システムで受け取ったすべての入力ストローク曲線は、天底にそって分割されるが、これは、正準空間5内の任意の位置について最大2つしかない非負パラメータ値とともにこれらの解を格納するだけでよい。したがって、本発明の実施形態では、グラフィックステクスチャのテクセルと正準空間5内の位置との間に１対１の対応関係がある。
【０１８６】
例えば、図4の点40に関連付けられている情報を含んでいた本発明の実施形態で使用されるグラフィックステクスチャは、第1の解に対する値の集合、つまり(x1,d1)を格納するだけであり、第2および第3の解に対する値の集合、つまり、(-x2,d2)および(-x3,d3)を格納しない。点40の鏡像である(つまり、y軸で反射されている)、したがって、解(-x1,d1)、(x2,d2)、および(x3,d2)を有する正準空間内の点について、グラフィックステクスチャは、第2および第3の解に対する値の集合を格納するが、第1の解については格納しない。
【０１８７】
本発明の実施形態では、複数のグラフィックステクスチャが、実際に構成されており、それぞれ正準曲線の特定のセクション(パラメータ範囲)に関連付けられている。例えば、図6を参照すると、第1のテクスチャは、0≦x<xAの範囲内の正準曲線12のセクションについて構成され(つまり、陰影付き領域50内で定義されている複数の離散位置に対する解が格納される)、第2のテクスチャは、0≦x<xBの範囲内の正準曲線12のセクションについて構成され、第3のテクスチャは、0≦x<xCの範囲内の正準曲線のセクションについて構成される。このようにして複数のテクスチャを作成すると、ほとんどの状況では、グラフィックス処理システムによって受け取られる入力ストローク曲線1は、天底のところで分割され(必要ならば)、入力ストローク曲線1のそれぞれのセクションは、単一のテクスチャのみを使用してレンダリングされる。
【０１８８】
上述のように、正準空間5内のいくつかの点は、正準曲線12上に関連付けられた複数の解を有することになるが、これらの解すべてをテストして、その点が、ストローク正準曲線セグメント1"内にあるかどうかを判定することが常に必要というわけではないことがわかっている。
【０１８９】
例えば、ストローク曲線が、自己重複領域(中心曲線の曲率半径がストローク幅の半分より小さい場合に生じる)を含まないと判定された場合、特定のサンプリング位置に対する最も近い解が、ストローク正準曲線セグメント1"内にあるかどうかをテストするだけでよい、つまり、テクセルの最初の2つの成分のみがサンプリングされる。
【０１９０】
しかし、ストローク曲線が、自己重複する1つまたは複数の領域を含むと判定された場合、正準空間5内の点に関連付けられている複数の解のうちの1つが、テストされたときに、ストローク正準曲線セグメント1"の内側にあることが判明するが、その点に関連付けられている他の解は、ストローク正準曲線セグメント1"の外側にあることが判明するという可能性が存在する。このような点に関しては、典型的に、正準空間5内の特定のサンプリング位置に関連付けられている解の両方をテストして、それが、ストローク正準曲線セグメント1"内にあるかどうかを判定する必要がある(常にというわけではないけれど)、つまり、テクセルの4つの成分すべてがサンプリングされる。
【０１９１】
同様に、ストローク曲線を覆う(複数の)プリミティブが、曲線の端点に強く束縛されている場合、テストされるそれぞれの解のパラメータ値ではなく、テストされるそれぞれの解の距離値をテストするだけでよいこともある。
【０１９２】
本発明の実施形態では、上述のように、サーフェス空間3内のサンプリング点が、投影されたストローク曲線1'内にあるかどうかを判定するために、サンプリング点を正準空間5内の対応する位置にマッピングする。正準空間5内のこの位置は、関連付けられている解がテクスチャ内に格納される位置に正確に対応することができる。しかし、サーフェス空間3内のサンプリング点に対応する正準空間5内の位置が、関連付けられている解がテクスチャ内に格納される位置に正確に対応しない場合が多い。そこで、テクスチャは、好適なフィルタリングまたは補間プロセスを使用してサンプリングされる。例えば、本発明の実施形態では、双線形補間プロセスを使用してテクスチャをサンプリングし、所望の位置に最も近い4つの位置に関係する格納されているデータを得て、重み付き平均を実行して、所望の位置に対するデータを決定する。次いで、補間されたデータが上述のように使用されて、その位置に対する解のうちの少なくとも1つが、その位置がストローク正準曲線セグメント1"内にあるかどうかを判定する両方のテストに通るかどうかが判定される。解の1つが、両方のテストに通った場合、その位置は、ストローク正準曲線セグメント1"内にあり、それに応じてサーフェス空間3内のサンプリング点が陰影付けされる。
【０１９３】
双線形補間プロセスを適切に実装できるように、本発明の実施形態では、絶対距離ではなく符号付き距離が特別に構成されたテクスチャ内に格納される。言い換えると、それぞれの格納されている値は、正準空間5内の関連付けられている位置が、正準曲線12の上にあるのか、下にあるのかに応じて正または負のいずれかの符号を与えられる。
【０１９４】
これからわかるように、テクスチャ内のテクセルのいくつかは、4つすべての成分に対する定義済みの値を持たない。例えば、正準空間の左下象限、つまり、x<0およびy<0の領域内のサンプリング位置に対応するテクセルは、非負パラメータ値を持つ解がなく、そのようなものとして、テクスチャの4つの成分のどれについても定義された値を持たない。それに加えて、ただ1つの解(最大2つの解ではなく)、例えば、図4および5の点40のみを持つサンプリング点に対応するテクセルは、テクスチャの最初の2つの成分に対する定義された値のみを持つ。これらの「欠測」解を考慮し、テスト手順において偽陽性の結果が生じる可能性を回避するために、関連付けられているテクセル中の「欠測」解の距離成分には、比較対照されるストローク幅(の半分)より大きい値が与えられる。
【０１９５】
また、2つの明確に区別できる解を有し、したがってテクスチャの4つすべての成分に対する定義された値を有するのが、正準空間の左上象限、つまり、x<0およびy>0の領域内のサンプリング位置に対応するテクセルのみであることも理解されるであろう。したがって、2つの別々のテクスチャを作成して、第1のテクスチャに正準空間5の4つの象限すべての中の離散位置に対する第1の解の値の集合を格納し、第2のテクスチャに正準空間の左上象限のみの中の離散位置に対する第2の解の値の集合を格納することにより本発明の実施形態におけるテクスチャ格納を最適化することが可能である。(したがって、第2のテクスチャは、第1のテクスチャのサイズの1/4にすぎない。)
【０１９６】
図7は、本発明の実施形態を使用してストローク曲線をレンダリングするレンダリングパイプラインを例示している。
【０１９７】
最初に、ステップ60で、ストローク曲線をユーザー空間内に定義する。ステップ62で、ストローク曲線を分類し、そこで例えば、二次曲線、楕円弧、または三次曲線であると判定する。ストローク曲線が、楕円弧または三次曲線であると判定された場合、それに応じて曲線を複数の二次曲線セグメントに細分する(ステップ64を参照)。
【０１９８】
次に、レンダリングすべき二次曲線、またはそれぞれの二次曲線セグメントをシステムのグラフィックス処理ユニット(GPU)に入力し、関連付けられているストローク曲線をGPU内で生成する(ステップ66を参照)。次いで、上述の方法で、ユーザーサーフェス変換(ステップ68)を使用して入力ストローク曲線をサーフェス空間内へ変換し、変換されたストローク曲線を覆うプリミティブを生成してラスター処理する(ステップ70)。
【０１９９】
次いで、上述のプロセスを使用することで、ラスター処理プロセスにおいて決定されたサンプリング点のそれぞれが、変換されたストローク曲線内にあるかどうかを判定し、この判定に基づき、サンプリング点を陰影付けする。この後者のステップは、当技術分野で知られているように、典型的には、クリップ処理およびマスク処理(ステップ72)、ペイント生成(ステップ74)、画像補間(ステップ76)、ならびにブレンド処理およびアンチエイリアス処理(ステップ78)のステップに分割される。
【０２００】
本発明のプロセスは、好適な従来からの既存グラフィックス処理システムを使用して実装されうる。
【０２０１】
例えば、プログラム可能なグラフィックハードウェア上で、これらのプロセスをフラグメントシェーダー内に簡単に実装できる。
【０２０２】
固定機能ハードウェアでは、本発明の実施形態は、レンダリングパイプラインを通る多数のパスを使用して実装することができる。例えば、正準空間5内の所望のサンプリング位置に対するそれぞれの解について、第1のパスを使用してパラメータ範囲をチェックし、第2のパスを使用して、曲線までの距離をチェックする(または逆も同様に)ことができる。ドット積を使用して符号付き距離をテストで使用する絶対距離に変換し、アルファテストを使用してさまざまな比較を実行する。ステンシルバッファも使用すると、2つのパスで情報を互いにやり取りして、第1のテストを通った解が第2のテストについて2回目にパイプラインを通るようにできる。
【０２０３】
上記から、本発明は、少なくともその好ましい実施形態において、ストローク経路、および特にストローク曲線を、とりわけ、従来の固定機能3Dグラフィックスハードウェア上で、また未修正の既存のハードウェアグラフィックスアクセラレータ上で、従来の技術で可能な方法に比べて実質的により効率的な(CPUの負荷に関して)方法を用いて、レンダリングするための方法および装置を実現する。
【符号の説明】
【０２０４】
1  ストローク二次ベジエ曲線
1'  ストローク曲線
1"  ストローク正準曲線セグメント
2  2Dユーザー空間
3  2Dサーフェス空間
4  プリミティブ
5  正準空間
10  入力二次ベジエ曲線
11  点
12  正準曲線
14  入力曲線
16  曲線
20  天底(底点)
22  天底
30、32  一般的な点
34  直線
40  点
【図１】
2010092480.tif 000008
【図２ａ】
2010092480.tif 000009
【図２ｂ】
2010092480.tif 000010
【図２ｃ】
2010092480.tif 000011
【図３】
2010092480.tif 000012
【図４】
2010092480.tif 000013
【図５】
2010092480.tif 000014
【図６】
2010092480.tif 000015
【図７】
2010092480.tif 000016
【外国語明細書】
2010092480.tif 000017
2010092480.tif 000018
2010092480.tif 000019
2010092480.tif 000020
2010092480.tif 000021
2010092480.tif 000022
2010092480.tif 000023
2010092480.tif 000024
2010092480.tif 000025
2010092480.tif 000026
2010092480.tif 000027
2010092480.tif 000028
2010092480.tif 000029
2010092480.tif 000030
2010092480.tif 000031
2010092480.tif 000032
2010092480.tif 000033
2010092480.tif 000034
2010092480.tif 000035
2010092480.tif 000036
2010092480.tif 000037
2010092480.tif 000038
2010092480.tif 000039
2010092480.tif 000040
2010092480.tif 000041
2010092480.tif 000042
2010092480.tif 000043
2010092480.tif 000044
2010092480.tif 000045
2010092480.tif 000046
2010092480.tif 000047
2010092480.tif 000048
2010092480.tif 000049
2010092480.tif 000050
2010092480.tif 000051
2010092480.tif 000052
2010092480.tif 000053
2010092480.tif 000054
2010092480.tif 000055
2010092480.tif 000056
2010092480.tif 000057
2010092480.tif 000058
2010092480.tif 000059
2010092480.tif 000060
2010092480.tif 000061
2010092480.tif 000062
2010092480.tif 000063
2010092480.tif 000064
2010092480.tif 000065
2010092480.tif 000066
2010092480.tif 000067
2010092480.tif 000068
2010092480.tif 000069
2010092480.tif 000070
2010092480.tif 000071