(57)【要約】【課題】ストローク曲線をグラフィックス処理システムで表示できるようにレンダリングする方法を提供する。【解決手段】サーフェス空間6内の1つまたは複数のサンプリング点のそれぞれについて、投影空間12内の対応するサンプリング位置が決定され、投影空間12内のサンプリング位置のストローク曲線の投影形態の長さに沿った位置に対応するストローク曲線の投影形態の長さに沿った位置における投影空間12内のストローク曲線の投影形態の定義済み方向のエクステントを推定するために、所定の情報が使用される。次いで、推定されたエクステントは、注目しているサンプリング位置が、ストローク曲線の範囲内に入るかどうかを判定するために使用され、これにより、好適なレンダリングデータをサンプリング点に割り当てることができる。【選択図】図1
2011028756.tif 000002
【特許請求の範囲】
【請求項１】
グラフィックス処理システムにおいて表示できるようにストローク曲線をレンダリングする方法であって、
表示されるユーザ空間内で定義されている入力ストローク曲線を受け取るステップと、
表示できるようにサーフェス空間内への受け取った変換を使用して前記受け取ったストローク曲線を投影するステップと、
前記サーフェス空間内の1つまたは複数のサンプリング点のそれぞれについて、
投影空間内の対応するサンプリング位置を決定するステップと、
所定の情報を使用して、前記投影空間内の前記サンプリング位置の前記ストローク曲線の投影形態の長さに沿った位置に対応する表示される前記ストローク曲線の前記投影形態の前記長さに沿った前記位置で前記投影空間内に表示される前記ストローク曲線の前記投影形態の定義済み方向におけるエクステントを推定するステップと、
前記投影空間内に表示される前記ストローク曲線の前記投影形態の前記定義済み方向における前記推定されたエクステントを使用して前記投影空間内の前記サンプリング位置が前記ストローク曲線の前記投影形態の範囲に入るかどうかを判定するステップと、
表示できるように前記受け取ったストローク曲線をレンダリングするためのデータを、前記判定に従って前記投影空間内の前記サンプリング位置に対応するサーフェス空間内の前記サンプリング点に割り当てるステップとを含む方法。
【請求項２】
入力ストローク曲線を前記受け取るステップは、
ユーザ空間内の複数の制御点の前記位置と曲線の種類を示す情報とユーザ空間内の前記ストローク幅を示す情報とを受け取るステップを含む請求項1に記載の方法。
【請求項３】
投影空間内の対応するサンプリング位置を前記決定するステップは、
サーフェス空間内の前記サンプリング点をユーザ空間内の対応する位置にマッピングし、次いで、ユーザ空間内の前記対応する位置を前記投影空間内の対応する位置にマッピングするステップを含む請求項1または2に記載の方法。
【請求項４】
ユーザ空間内の前記対応する位置を前記投影空間内の対応する位置に前記マッピングするステップは、
ユーザ空間内の前記サンプリング点を等質空間内に置くステップと、
変換を前記等質空間内の前記サンプリング点に適用するステップと、
等質空間内の前記変換されたサンプリング点を、パースペクティブ分割を前記等質空間内の前記サンプリング点に適用することによって前記投影空間内に投影するステップとを含む請求項3に記載の方法。
【請求項５】
前記投影空間内の前記対応するサンプリング位置は、事前定義の、または所定の変換を使用して決定される請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記ストローク曲線の前記投影形態は、ユーザ空間内で定義されているような前記ストローク曲線上の少なくとも2つの点が、前記投影空間内の選択された位置に配置されているユーザ空間内の前記ストローク曲線の変換形態である請求項1から5のいずれか一項に記載の方法。
【請求項７】
前記ストローク曲線の前記投影形態は、ユーザ空間内で定義されているような前記ストローク曲線上の少なくとも2つの点に関連付けられている前記法線ベクトルの相対的配向が、前記投影空間内で前記法線ベクトルが互いに平行になるように変更されているユーザ空間内の前記ストローク曲線の変換形態である請求項1から6のいずれか一項に記載の方法。
【請求項８】
所定の情報を使用して表示される前記ストローク曲線の投影形態の定義済み方向の前記エクステントを前記推定するステップは、
所定の情報を使用して、第2の軸方向の前記サンプリング点の前記位置に対応する前記投影空間内のその第2の軸方向に沿った位置における前記ストローク曲線の前記投影形態の前記投影空間内の第1の軸方向における前記エクステントを推定するステップを含む請求項1から7のいずれか一項に記載の方法。
【請求項９】
前記所定の情報は、前記ストローク曲線の前記投影形態の上側境界の推定を表す前記定義済み方向に沿った第1の位置、および前記ストローク曲線の前記投影形態の下側境界の推定を表す前記定義済み方向に沿った第2の位置を決定するために使用される請求項1から8のいずれか一項に記載の方法。
【請求項１０】
前記所定の情報は、前記投影空間内の定義済み方向に沿った複数の点のそれぞれについて1つまたは複数のデータ構造体に格納される請求項1から9のいずれか一項に記載の方法。
【請求項１１】
前記1つまたは複数のデータ構造体は、1つまたは複数の一次元グラフィックステクスチャを含む請求項10に記載の方法。
【請求項１２】
表示できるようにストローク曲線をレンダリングする際にグラフィックス処理システムとともに使用する1つまたは複数のグラフィックステクスチャを構成する方法であって、
ユーザ空間内でストローク曲線を定義するステップと、
前記ストローク曲線が定義済みの変換形態を有するように前記ストローク曲線を変換するための変換を決定するステップと、
前記ストローク曲線の前記変換形態の長さに沿った複数の点のそれぞれにおける前記ストローク曲線の前記変換形態の1つまたは複数の定義済み方向の前記エクステントの推定を決定する際に使用するための情報を決定するステップと、
それぞれがテクセルの配列を含む1つまたは複数のグラフィックステクスチャを生成し、格納するステップであって、前記1つまたは複数のテクスチャのそれぞれのテクセルは前記ストローク曲線の前記変換形態の前記長さに沿った前記複数の点のうちの少なくとも1つに関連付けられ、前記少なくとも1つの点に対する前記決定された情報の一部または全部を含む、ステップとを含む方法。
【請求項１３】
グラフィックス処理システムで表示できるようにストローク曲線をレンダリングする方法であって、ストローク曲線の1つまたは複数の事前定義された形態のそれぞれについて、また前記グラフィックス処理システムにアクセス可能な形で、前記ストローク曲線の投影形態の長さに沿った複数の位置のそれぞれにおいて前記投影空間内の前記ストローク曲線の投影形態の定義済み方向のエクステントを推定するための所定の情報と前記ストローク曲線に対し事前定義されたユーザ-投影変換とが、前記所定の情報および事前定義されたユーザ-投影変換が関係する前記曲線に対する識別子に関連して、格納され、
アプリケーションがストローク曲線の前記事前定義された形態のうちの1つに対応するストローク曲線がレンダリングされることを要求し、前記グラフィックス処理システムに、レンダリングされる前記ストローク曲線を識別する識別子、レンダリングされる前記ストローク曲線を表示できるようにサーフェス空間に変換するための定義済みユーザ-サーフェス変換、および前記ストローク曲線に対する望ましいユーザ空間ストローク幅を提供するステップと、
前記グラフィックス処理システムがレンダリングされる前記ストローク曲線に対する前記提供された識別子を使用して、前記曲線に対する前記格納されている所定のエクステント推定情報およびユーザ-投影変換を取り出し、次いで、前記情報を前記指定されたユーザ-サーフェス変換およびユーザ空間ストローク幅と一緒に使用して表示できるように前記ストローク曲線をレンダリングするステップとを含む方法。
【請求項１４】
グラフィックス処理システムで表示できるようにストローク曲線をレンダリングするための装置であって、
表示されるユーザ空間内で定義されている入力ストローク曲線を受け取るための手段と、
表示できるようにサーフェス空間内への受け取った変換を使用して前記受け取ったストローク曲線を投影するための手段と、
前記サーフェス空間内の1つまたは複数のサンプリング点のそれぞれについて、投影空間内の対応するサンプリング位置を決定するための手段と、
所定の情報を使用して、前記投影空間内のサンプリング位置の前記ストローク曲線の投影形態の長さに沿った位置に対応する表示される前記ストローク曲線の前記投影形態の長さに沿った前記位置で前記投影空間内に表示される前記ストローク曲線の前記投影形態の定義済み方向におけるエクステントを推定するための手段と、
前記投影空間内に表示される前記ストローク曲線の前記投影形態の前記定義済み方向における前記推定されたエクステントを使用して前記投影空間内のサンプリング位置が前記ストローク曲線の前記投影形態の範囲に入るかどうかを判定するための手段と、
表示できるように前記受け取ったストローク曲線をレンダリングするためのデータを、前記判定に従って前記投影空間内のサンプリング位置に対応するサーフェス空間内のサンプリング点に割り当てるための手段とを備える装置。
【請求項１５】
入力ストローク曲線を受け取るための前記手段は、
ユーザ空間内の複数の制御点の前記位置と曲線の種類を示す情報とユーザ空間内の前記ストローク幅を示す情報とを受け取るための手段を含む請求項14に記載の装置。
【請求項１６】
投影空間内の対応するサンプリング位置を決定するための前記手段は、
サーフェス空間内の前記サンプリング点をユーザ空間内の対応する位置にマッピングするための手段と、
ユーザ空間内の前記サンプリング点を等質空間内に置くための手段と、
変換を前記等質空間内の前記サンプリング点に適用するための手段と、
等質空間内の前記変換されたサンプリング点を、パースペクティブ分割を前記等質空間内の前記サンプリング点に適用することによって前記投影空間内に投影するための手段とを備える請求項14または15に記載の装置。
【請求項１７】
前記ストローク曲線の前記投影形態は、ユーザ空間内で定義されているような前記ストローク曲線上の少なくとも2つの点が、前記投影空間内の選択された位置に配置されているユーザ空間内の前記ストローク曲線の変換形態である請求項14から16のいずれか一項に記載の装置。
【請求項１８】
前記ストローク曲線の前記投影形態は、ユーザ空間内で定義されているような前記ストローク曲線上の少なくとも2つの点に関連付けられている前記法線ベクトルの相対的配向が、前記投影空間内で前記法線ベクトルが互いに平行になるように変更されているユーザ空間内の前記ストローク曲線の変換形態である請求項14から17のいずれか一項に記載の装置。
【請求項１９】
所定の情報を使用して表示される前記ストローク曲線の投影形態の定義済み方向の前記エクステントを推定するための前記手段は、
所定の情報を使用して、第2の軸方向の前記サンプリング点の前記位置に対応する前記投影空間内のその第2の軸方向に沿った位置における前記ストローク曲線の前記投影形態の前記投影空間内の第1の軸方向における前記エクステントを推定するための手段を含む請求項14から18のいずれか一項に記載の装置。
【請求項２０】
所定の情報を使用して、前記ストローク曲線の投影形態の定義済み方向の前記エクステントを推定するための前記手段は、前記ストローク曲線の前記投影形態の前記上側境界の推定を表す前記定義済み方向に沿った第1の位置、および前記ストローク曲線の前記投影形態の前記下側境界の推定を表す前記定義済み方向に沿った第2の位置を決定するための手段を含む請求項14から19のいずれか一項に記載の装置。
【請求項２１】
前記所定の情報は、前記投影空間内の定義済み方向に沿った複数の点のそれぞれについて1つまたは複数のデータ構造体に格納される請求項14から20のいずれか一項に記載の装置。
【請求項２２】
前記1つまたは複数のデータ構造体は、1つまたは複数の一次元グラフィックステクスチャを含む請求項21に記載の装置。
【請求項２３】
表示できるようにストローク曲線をレンダリングする際にグラフィックス処理システムとともに使用する1つまたは複数のグラフィックステクスチャを構成するための装置であって、
ユーザ空間内でストローク曲線を定義するための手段と、
前記ストローク曲線が定義された変換形態を有するように前記ストローク曲線を変換するための変換を決定するための手段と、
前記ストローク曲線の前記変換形態の長さに沿った複数の点のそれぞれにおける前記ストローク曲線の前記変換形態の1つまたは複数の定義済み方向のエクステントの推定を決定する際に使用するための情報を決定するための手段と、
それぞれがテクセルの配列を含む1つまたは複数のグラフィックステクスチャを生成し、格納するための手段であって、前記1つまたは複数のテクスチャのそれぞれのテクセルは前記ストローク曲線の前記変換形態の前記長さに沿った前記複数の点のうちの少なくとも1つに関連付けられ、前記少なくとも1つの点に対する前記決定された情報の一部または全部を含む、手段とを備える装置。
【請求項２４】
ストローク曲線をレンダリングするためのグラフィックス処理システムであって、ストローク曲線の1つまたは複数の事前定義された形態のそれぞれについて、また前記グラフィックス処理システムにアクセス可能な形で、前記ストローク曲線の投影形態の長さに沿った複数の位置のそれぞれにおいて投影空間内の前記ストローク曲線の前記投影形態の定義済み方向のエクステントを推定するための所定の情報と前記ストローク曲線に対し事前定義されたユーザ-投影変換とが、前記所定の情報および事前定義されたユーザ-投影変換が関係する前記曲線に対する識別子に関連して、格納され、
ストローク曲線の前記事前定義された形態のうちの1つに対応するストローク曲線がレンダリングされることを要求するアプリケーションから、レンダリングされる前記ストローク曲線を識別する識別子、レンダリングされる前記ストローク曲線を表示できるようにサーフェス空間に変換するための定義済みユーザ-サーフェス変換、および前記ストローク曲線に対する望ましいユーザ空間ストローク幅を受け取るための手段と、
レンダリングされる前記ストローク曲線に対する前記提供された識別子を使用して前記曲線に対する前記格納されている所定のエクステント推定情報およびユーザ-投影変換を取り出し、次いで、前記情報を前記指定されたユーザ-サーフェス変換およびユーザ空間ストローク幅と一緒に使用して表示できるように前記ストローク曲線をレンダリングするための手段とを備えるシステム。
【請求項２５】
グラフィックス処理システムで使用できるようにストローク曲線を定義するためのデータ構造体であって、
与えられた空間の他方の軸方向に沿った複数の位置に対し前記与えられた空間内の一方の軸方向におけるストローク曲線のエクステントを推定するために使用するデータ値の配列を含むデータ構造体。
【請求項２６】
表示できるようにストローク曲線をレンダリングするときにグラフィックス処理システム内で使用するためのグラフィックステクスチャであって、前記テクスチャのそれぞれのテクセルは、前記曲線上の点における定義済み空間内で定義されているストローク曲線の定義済み方向のエクステントの推定を決定する際に使用するための情報が関連付けられているグラフィックステクスチャ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータグラフィックスシステムで画像をレンダリングするプロセスに関するものであり、具体的には、このようなシステムにおけるストローク曲線のレンダリングに関するものである。
【背景技術】
【０００２】
近年、コンピュータグラフィックスにおいてベクターグラフィックスを使用することが次第に一般的になってきている。当技術分野で知られているように、ベクターグラフィックスがラスターグラフィックスに勝る重要な利点の1つが、解像度に依存しない画像、つまり、本質的に画質を落とすことなく無制限にスケーリング可能な画像を構成できることである。例えば、TrueType(商標)などのコンピュータフォント内の個々の文字(例えば、英字)は、典型的には、事前定義ベクターイメージとして格納される。次いで、それぞれの格納されるイメージ、例えば、英字が、望み通りに操作され(スケーリング、回転など)、所望のイメージが表示デバイス、例えば、画面、プリンタなどに表示される。
【０００３】
ベクターグラフィックスは、個別に定義された幾何学的オブジェクトの使用に基づいており、また経路を形成するようにアンカー点で連結される、1つまたは複数の線分、例えば、直線または二次(ベジエ)曲線、楕円弧、三次(ベジエ)曲線などの曲線によって典型的には記述される。
【０００４】
ベクターグラフィックスオブジェクト/経路は、本明細書では「ユーザ空間」と称される空間内で定義され、操作される。しかし、ベクターグラフィックスオブジェクト/経路をビデオディスプレイまたはプリンタに出力するために、これらのオブジェクト/経路は、画面上に表示するのに適した形式、またはプリンタに出力するのに適した形式に変換される必要がある。この変換は、典型的には、ユーザ空間内で定義されたオブジェクト/経路を、オブジェクト/経路が表示される出力表示のパースペクティブ(幾何学的形状)に対応する、通例「サーフェス空間」と称される、他の空間に投影することを伴う。ユーザ空間とサーフェス空間との間の変換は、典型的には、「ユーザ-サーフェス変換」と称される。
【０００５】
ベクターグラフィックスオブジェクト/経路は、いったんサーフェス空間表現に変換された後、レンダリングされる。
【０００６】
このプロセスは、当技術分野で知られているように、典型的には、オブジェクト/経路のサーフェス空間表現を覆う、三角形などの1つまたは複数のグラフィックスプリミティブを生成するステップと、プリミティブ内の複数のサンプリング点に対しプリミティブをラスター処理し、その後、サンプリング点をサンプリングしてそれぞれのサンプリング点が投影されたオブジェクト/経路内に入るかどうかを判定するステップを伴う。この判定に基づき、オブジェクト/経路を正しく表示できるように適宜、複数のサンプリング点に対し赤色、緑色、および青色(RGB)値および「アルファ」透明度値などのデータが割り当てられる。これらのプロセスは、一般に、ラスター処理およびシェーディングとそれぞれ称される。
【０００７】
(3Dグラフィックスの文献では、「ラスター処理」という用語は、ときには、サンプル位置およびシェーディングへの両方のオブジェクト変換を指すために使用される。しかし、ここでの「ラスター処理」は、サンプリング点アドレスのみへのオブジェクトデータの変換を指すために使用される。)
【０００８】
これらのプロセスは、典型的には、当技術分野で知られているように、グラフィックス処理オペレーション(シェーディングなど)の実行対象となる「フラグメント」と通常称される個別のグラフィック構成要素を使用してサンプリング点を表現することにより実行される。したがって、これらのフラグメントは、実際に、(グラフィックスパイプラインを通過する)グラフィックス処理システムによって処理されるグラフィック構成要素である。
【０００９】
それぞれのフラグメントは処理されるシーンの1つの「ピクセル」に事実上相当するものと考えるのは道理にかなっている。それぞれのフラグメントは、単一の、または複数のサンプリング点に対応しうる。それぞれのフラグメントは、最終的な表示に含まれる単一ピクセル(画素)に対応しうる(ピクセルは、最終的な表示内において特異点であるため、グラフィックスプロセッサのオペレーション対象のフラグメントと表示のピクセルとの間に1対1のマッピングがありうる)。しかし、より典型的には、フラグメントと表示ピクセルとの間に1対1対応関係がない場合もありえ、例えば、縮小などの特定の形式の後処理が最終画像を表示するのに先立ってレンダリングされた画像に対し実行される。
【００１０】
ベクターグラフィックスにおいてよく見られる2種類のオブジェクトは、「塗りつぶし」オブジェクトと「ストローク」オブジェクトである。塗りつぶすプロセスは、色、勾配、パターン、または画像からなる単一ブロックをオブジェクトまたは閉路内の領域に適用することを伴う。その一方、ストローク操作のプロセスは、事実上、経路に沿って特定の幅の直線形のペン先をドラッグすることにより幅を経路に付け加えるものとして考えることができる。より具体的には、ペン先の中心点は、その経路を辿り、ペン先は、経路に常に垂直になるように向き付けられる。したがって、それと同等のことだが、ストローク経路の境界も、経路上のある1つの点まで引くことができる、(ストローク幅wのストローク経路に対して)長さが(高々)w/2である、経路に対して垂直な直線の始点の集合によって定義することができる。
【００１１】
ストローク経路のレンダリング、特にストローク曲線のレンダリングは、従来から、CPUに大きな負荷がかかるオペレーションなのである。例えば、ストローク経路をレンダリングする一般的な方法の1つは、CPU上で経路を複数の個別の直線または塗りつぶされた経路に細分し、次いでそれぞれを別々にレンダリングする方法である。しかし、これは大きな処理能力を要するオペレーションである。ストローク経路をレンダリングするためによく使用される方法としては、ほかに、曲線レンダリング専用のハードウェアを使用する方法がある。しかし、この方法は、上述の細分法に関わる性能の低下に対する解決策とはなるが、これは、例えばグラフィックス処理システムで常に利用可能である、または望ましいものであるとは限らない専用のハードウェアを必要とする。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
そこで、出願人は、例えば、追加の専用ハードウェアを使用する必要をなくし、しかも知られている細分法と比べて性能レベルを改善できる、ストローク経路、特にストローク曲線をレンダリングするためのさらなる技術を考案する余地があると確信している。
【課題を解決するための手段】
【００１３】
本発明の第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または固定ディスク上のコンピュータシステムにプリインストールされている、例えば市販ソフトウェアとして配布されるか、あるいはサーバーまたはネットワーク、例えばインターネットまたはワールドワイドウェブ上の電子掲示板から配布されうることも企図される。
【０２５９】
次に、本発明の多数の好ましい実施形態について、付属の図面を参照しつつ、実例のみを使って説明する。
【図面の簡単な説明】
【０２６０】
【図１】ストローク曲線をユーザ空間内におけるその定義からディスプレイ上の曲線出力へレンダリングするプロセスの概略を示す図である。
【図２】ユーザ空間内のストローク曲線から投影空間内の望ましい形態への変換を示す図である。
【図３】ユーザ空間内のストローク曲線を等質ユーザ空間内に配置することを示す図である。
【図４】図3の等質ユーザ空間内のストローク曲線から等質投影空間内の望ましい形態への、つまり、後述のような行列Rによって変換されることによる変換を示す図である。
【図５】本発明の第1の実施形態によるパースペクティブ分割を介した図4の変換されたストローク曲線の、等質投影空間から投影空間内への投影を示す図である。
【図６】本発明の第2の実施形態によるパースペクティブ分割を介した図4の変換されたストローク曲線の、等質投影空間から投影空間内への投影を示す図である。
【図７】投影空間内の受け取ったストローク曲線の投影形態およびストローク曲線をレンダリングする際に使用するためのデータを含む関連付けられているテクスチャの一部分を示す図である。
【発明を実施するための形態】
【０２６１】
類似の参照番号は、断りのない限り、図中の類似のコンポーネントに使用される。
【０２６２】
図1は、1つまたは複数の事前定義されたストローク曲線が表示できるようにレンダリングされる本発明の一実施形態の主要プロセスの概略を示している。本発明の技術を使用してレンダリングされる事前定義されたストローク曲線は、例えば、フォントセットにおける文字、例えば、英字、数字、記号などの一部分、または衛星ナビゲーション(satnav)システムにおけるマップ上のラベル、例えば、矢印などの一部分とすることが可能である。
【０２６３】
本実施形態では、つまり、図1に示されているものでは、レンダリングされる事前定義されたストローク経路が示されており、このストローク経路は6つの個別の線分1a〜1fから形成され、これらの線分が集まって英字「e」を形成する。
【０２６４】
そこで、本発明の一実施形態のレンダリング技術が、1aとして識別される線分に関して説明されるが、英字の他の線分、例えば、1b〜1fのそれぞれは、同様に、そのような技術を使用して、あるいは必要に応じて他のレンダリング技術を使用してレンダリングされることは理解されるであろう。
【０２６５】
本実施形態では、線分1aは、二次ベジエ曲線2であり、この曲線は、最初に、曲線の開始および終了制御点c0およびc2の位置と、中間制御点c1の位置と、ストローク幅wとによって2Dユーザ空間4内に定義される。ただし、それにもかかわらず、本発明の技術は、他の種類のストローク曲線、例えば、楕円弧、三次曲線、およびBスプライン(例えば、NURBS)をレンダリングするために使用できることは理解されるであろう。
【０２６６】
表示するストローク曲線をレンダリングするために、最初に、ストローク曲線、または典型的には、制御点c0、c1、およびc2のユーザ空間内での位置および曲線の種類などの、ストローク曲線を定義する情報をグラフィックス処理システムに入力する。
【０２６７】
レンダリングプロセス中、当技術分野で知られているように、ユーザ空間内で定義されているようなストローク曲線2は、ストローク曲線が表示されるディスプレイの同じパースペクティブ(幾何学的形状)を有する2Dサーフェス空間6内に投影される。ユーザ空間2からサーフェス空間4へストローク曲線を投影する変換は、本明細書ではユーザ-サーフェス変換(TUS)と称され、使用中のグラフィックス処理システムに送られる。
【０２６８】
ストローク曲線がサーフェス空間内に投影された後、サーフェス空間6内の投影されたストローク曲線7にぴったりくっつき、それを覆う図1に示されているポリゴン8などの(1つまたは複数の)プリミティブが生成される。
【０２６９】
次いで、当技術分野で知られているように、プリミティブ8が、複数のサンプリング点へとラスター処理され、ラスター処理プロセスで定義されているサンプリング点が、ストローク曲線を表示するために、最終的に、適宜シェーディングされる(それらがサーフェス空間内のストローク曲線を境界とする領域内に入っているとみなされるかどうかに基づいて)。
【０２７０】
本実施形態では、本発明により、サーフェス空間内のサンプリング点がサーフェス空間内のストローク曲線の範囲内に入るかどうかの判定は、投影空間内へのユーザ空間ストローク曲線の特定の投影に関係する所定の情報を使用することによって行われる。ユーザ空間ストローク曲線の投影空間内への投影は、本実施形態ではx軸である、投影空間内の垂直(「長さ」)方向に沿った与えられた位置について、本実施形態ではy軸に沿っている、投影空間内の定義済み「幅」方向に沿った曲線の投影形態のエクステントを推定することができる形態となるように考案されている。次いで、投影空間内のy軸(幅方向)に沿ったストローク曲線の投影形態のこの推定されたエクステントを使用して、以下でさらに詳しく説明されるように、サンプリング点がストローク曲線の範囲内に入るとみなされるべきかどうかを判定することができる。
【０２７１】
次に、この所定の情報がとる形態、およびその情報が生成される仕方について説明する。
【０２７２】
本実施形態では、図2に示されているように、ストローク曲線の投影形態は、ユーザ空間ストローク曲線の開始制御点c0が投影空間内の第1の位置にマッピングされ、ユーザ空間ストローク曲線の終了制御点c2が投影空間内の第2の位置にマッピングされるようなユーザ空間ストローク曲線の投影10の特定の形態である。本実施形態では、第1の位置、つまり、始点c0が投影される位置は(0,0)(投影空間内の原点)-デカルト座標で与えられる投影空間内の座標-であり、第2の位置、つまり、終点c2が投影される位置は投影空間内の(1,0)である。しかし、第1の位置および第2の位置は、好きなように選択することができ、またレンダリングされる異なるストローク曲線同士の間で変わりうることは理解されるであろう。
【０２７３】
さらに、ストローク曲線の投影形態は、ユーザ空間ストローク曲線内の開始および終了制御点に対する法線ベクトルnc0およびnc2が、これらの法線ベクトルが投影空間12内のy軸と平行になる(またy軸に沿って上方を指す)(つまり、投影空間内の定義済み「幅」方向と平行になる)ように再配向されるユーザ空間ストローク曲線の投影である。曲線の2つの終点に関連付けられているユーザ空間法線ベクトルのこのような再配向を行うと、理解されるように、その結果、(ユーザ空間内で定義されているような)曲線の他の法線ベクトルも、(図2に示されているように)投影空間内のy軸により平行になるように(またy軸にほぼ平行になるように)再配向されることになる。
【０２７４】
本実施形態では、ストローク曲線の投影形態は、とりわけ、ストローク曲線をユーザ空間内に出現するとともに投影空間内のその望ましい投影形態に変換するか、または少なくともそのような投影形態に向かう形で変換する変換(「ユーザ-投影」変換)によってストローク曲線のユーザ空間形態に関係付けられる。言い換えると、この配置構成は、ストローク曲線の投影形態が、とりわけ、特定の「ユーザ-投影」変換を使用することによってユーザ空間内で定義されているようなストローク曲線から生成されうるような構成であるということである。
【０２７５】
さらに、本実施形態では、ユーザ空間ストローク曲線を投影空間内のその投影形態にマッピングするときに使用されるユーザ-投影変換は、等質空間内で適用される(多くのコンピュータグラフィックスプロセッサに対し通例実行されるように)。これは、当技術分野で知られているように、行列乗算を使用して、回転とスケーリングの両方、さらには変換とパースペクティブも表すことができるという利点を有している。このために、ユーザ空間内で定義されているような曲線は、最初に等質ユーザ空間内に置かれ、次いで関連するユーザ-投影変換が、それに適用され、曲線が等質投影空間内に配置される。次いで、こうして変換された曲線は、当技術分野で知られているように、パースペクティブ分割を適用され、変換された曲線を等質投影空間から投影空間内に投影することができる。
【０２７６】
このプロセスは、図3、4、および5に例示されている。
【０２７７】
図3は、3D等質ユーザ空間14内に置かれている(2D)ユーザ空間4内のストローク曲線2を示している。
【０２７８】
次いで、図4に示されているように、等質空間14内のストローク曲線2が、ユーザ-投影変換Rを使用して等質投影空間14'内のストローク曲線の変換形態16に変換される。
【０２７９】
次いで、変換されたストローク曲線16が、パースペクティブ分割を用いて2D投影空間12内に投影される。これは、図5に示されている。
【０２８０】
(ここで、図4および5は、わかりやすくするために、ストローク曲線のその変換され投影された形態における中心線100から見たストローク曲線の片側のみを示していることに留意されたい。しかし、当業者であれば理解するように、実際には、ストローク曲線16の下側半分は、ストローク曲線の変換され、投影された形態内に(適宜)存在する。)
【０２８１】
本実施形態においてストローク曲線をレンダリングするときに使用される所定の情報を計算する際の第1のステップは、したがって、ユーザ空間4内で定義されているようなストローク曲線2を投影空間12内のその望ましい投影形態に投影するときに等質空間内で適用されるであろうユーザ-投影変換Rを決定することである。
【０２８２】
ユーザ-投影変換の導出は、実施形態では以下のように実行される。
【０２８３】
表示されるストローク曲線は、ユーザ空間内にA=(a1,a2)およびB=(b1,b2)での開始および終了制御点を有し、点AおよびBにおけるユーザ空間単位法線ベクトルは、iおよびjをユーザ空間の直交座標系の基底ベクトルとして、ベクトルc=c1i+c2jおよびベクトルd=d1i+d2jとなるものと仮定しよう。上述のように、ユーザ空間内のこの曲線が次のように投影空間に投影されうるような変換が望ましい。
i)ユーザ空間内の点Aが投影空間内の点(0,0)にマッピングされる。
ii)ユーザ空間内の点Bが投影空間内の点(1,0)にマッピングされる。
iii)ユーザ空間内の法線ベクトルcは、投影空間内で垂直であり(つまり、y軸に平行であり)、無限小のエクステントに対して正しいスケールを有する、つまり、ε→0のときにユーザ空間内の(A+εc)→投影空間内の(0,ε)となる。
iv)ユーザ空間内の法線ベクトルdは、投影空間内で垂直であり、無限小のエクステントに対して正しいスケールを有する、つまり、ε→0のときにユーザ空間内の(B+εd)→投影空間内の(1,ε)となる。
【０２８４】
理解されるように、このようなユーザ-投影変換(本明細書ではRで表される)は、2つの個別の変換、つまり、条件(i)および(ii)を満たすように曲線を回転し、平行移動し、スケーリングするアフィン変換Mと曲線の投影形態の2つの終点の位置を影響を受けないようにしながら条件(iii)および(iv)を強制する射影変換Pの結果として表すことができる。
【０２８５】
同次座標を使用することによって、つまり、2Dユーザ空間内の点を3D等質空間内に表現することによって、ユーザ-投影変換Rを
【０２８６】
【数１】
2011028756.tif 000003
【０２８７】
として表すことができる。
行列Mはアフィンであるため、
【０２８８】
【数２】
2011028756.tif 000004
【０２８９】
となる。
行列Mの計算は、線形代数における標準的な演習問題であり、例えば、適当に構成されたプロセッサを使用することによって、特定の曲線について容易に決定することができる。
【０２９０】
例えば、行列Mは、M=MsMrMtと表すことが可能であるが、ただし、行列Mtは、点Aを、投影空間内の位置(0,0)で終わるように平行移動し(つまり、パースペクティブ分割の後に)、行列Mrは、(平行移動された)曲線を、点Bが投影空間内のX軸上に置かれるように、投影空間内の原点(φ,φ)を中心として回転し(つまり、パースペクティブ分割の後に)、最後に、行列Msは、(平行移動され、回転された)曲線を、点Bが投影空間内の位置(1,0)に置かれるようにスケーリングする(つまり、パースペクティブ分割の後に)。
【０２９１】
行列Pを参照すると、最初に、行列Pは、曲線の変換された終点の位置に影響を及ぼしてはならないことが理解されるであろう。言い換えると、
PM(a1 a2 1)T=P(0 0 1)T=(0 0 1)T、および
PM(b1 b2 1)T=P(1 0 1)T=(1 0 1)Tである。
したがって、行列Pの要素P12、P23、およびP31がゼロでなければならないことは、当業者にとっては明らかであろう。したがって、
【０２９２】
【数３】
2011028756.tif 000005
【０２９３】
である。
【０２９４】
行列P上で上記の条件(iii)および(iv)を強制することによって、一組の連立一次方程式を形成することができる。これらの方程式を解くことによって、
【０２９５】
【数４】
2011028756.tif 000006
【０２９６】
である行列Pに対してただ1つの解がありうると判断することができ、
ただし、c'=Mc、つまり、M(c1 c2 0)T=(c1' c2' 0)T、および
d'=Md、つまり、M(d1 d2 0)T=(d1' d2' 0)Tである。
(理解されるように、c2'またはd2'のいずれかがゼロである、つまり、ストローク曲線の終点における法線ベクトルが、行列Mを適用した後に水平となる場合、(少なくともそのユーザ空間形態において)曲線をレンダリングするために本実施形態の技術を使用することが可能でない。このような事象においては、初期ストローク曲線は、好ましくは細分化され、次いで、2つの個別のストローク曲線としてレンダリングされる。)
【０２９７】
上記に続いて、曲線が等質投影空間14'から投影空間内への変換された曲線の投影(パースペクティブ分割による)の後に投影空間12において望ましい形態を有するように、等質ユーザ空間14内に置かれているようなストローク曲線をユーザ空間4から好適な形態に変換する「ユーザ-投影」変換が知られる。次いで、この変換は、好ましくは、それが関係する曲線に対する識別子に関連して、将来使用するために格納される。
【０２９８】
次に、本実施形態において使用されるストローク曲線の投影形態に関係する所定の情報を算出するための次のステップについて、図3、4、および5を参照しつつ説明することにする。
【０２９９】
本実施形態において使用されるストローク曲線の投影形態に関係する所定の情報の算出を例示するために、ユーザ空間ストローク曲線2上の点pを考える。ユーザ空間4内で位置(p1, p2)にあるこの点pは、図3に示されているように、関連付けられている(単位)法線ベクトルn(ただし、||n||=1)を有する。曲線2の境界上に対応する点qがあり、これは、曲線2の境界へ法線ベクトルnに沿って押し出されたときの点pに対応する(つまり、wが定義済みユーザ空間ストローク幅である、距離w/2に対して)。したがって、ユーザ空間4内で位置(q1,q2)にあるqは、点pから法線ベクトルnに沿って距離w/2のところにある。
【０３００】
等質ユーザ空間14において、ユーザ-投影変換行列Rによって曲線が変換される前に、点pが点(p1 p2 1)Tにあり、法線ベクトルnが(n1 n2 0)Tであると考えることができる。次いで、曲線が行列Rによって変換されると(図4に示されているように変換されたストローク曲線16を形成するために)、等質投影空間14'において、
p→p'=Rp=(p1' p2' p3')T、および
n→n'=Rn=(n1' n2' n3')Tとなる。
【０３０１】
したがって、等質投影空間14'内のユーザ空間ストローク曲線2の変換形態16において、ユーザ空間4内の境界点qに対応する曲線16の境界上の点q'は、ユーザ空間ストローク幅の半分に等しい距離だけ変換された法線ベクトルn'に沿って押し出されたときの点p'に対応し、したがって、
【０３０２】
【数５】
2011028756.tif 000007
【０３０３】
となる。
【０３０４】
ここでまた、2D空間内、つまり、投影空間12内で表されるように、等質投影空間14'内の変換された曲線16に対しパースペクティブ分割が施された場合、図5に示されているように、等質投影空間14'内の点p'は、
【０３０５】
【数６】
2011028756.tif 000008
【０３０６】
に対応する、投影空間12内の位置p"に投影され(当技術分野で知られているように、パースペクティブ分割が等質空間内の第3の座標で等質空間内の第1の座標および第2の座標を除算することを伴うからである)、等質投影空間14'内の点q'は、投影空間12内の点q"に投影され、それに応じて位置
【０３０７】
【数７】
2011028756.tif 000009
【０３０８】
となる。
【０３０９】
射影変換、つまり、R行列の成分行列Pが終点の法線ベクトルを再配向し、これにより、これらの法線ベクトルが投影空間12内のy軸に平行になり、したがって、上述のように、例えば、ベクトルn"(ユーザ空間ストローク曲線2内の点pにおける法線ベクトルnの投影形態である)を投影空間12内のy軸により近く(および近似して)揃えられるので、ユーザ空間内の点pの投影空間内のx軸上の位置におけるy方向の投影空間12内の投影されたストローク曲線18の上側エッジ(境界)の位置の近似的尺度は、投影空間内の点q"のy方向の位置によって与えることができ、この位置は、(点p"における曲線の中心線の)点p"のy位置に投影空間内の単位法線ベクトルn"のy成分を足してユーザ空間ストローク幅の半分
【０３１０】
【数８】
2011028756.tif 000010
【０３１１】
を掛けたものに等しいことは理解されるであろう。
【０３１２】
言い換えると、図5に示されているように、点s"の投影空間12内のy位置(座標)(投影空間内の点p"のx位置におけるy方向の投影されたストローク曲線18の「真の」境界である)は、点q"と同じy位置(座標)を有する投影空間内の点r"のy位置によって近似することができる。
【０３１３】
したがって、点r"の位置を点p"のx位置(長さ位置)におけるy軸(幅方向)に沿った投影されたストローク曲線18の上側エッジ(境界)の位置の近似として使用することができる。
【０３１４】
図5からわかるように、投影空間内の点r"の位置は、点p"のx座標と点q"のy座標によって与えられる。したがって、上記から、点r"の投影空間内の座標は、
【０３１５】
【数９】
2011028756.tif 000011
【０３１６】
で与えられる。
【０３１７】
r"のy座標、ひいては投影空間12内の投影されたストローク曲線18の上側境界のy軸に沿った位置の推定は、したがって、ユーザ空間ストローク幅w、等質投影空間14'内の点p'の第2の座標p2'および第3の座標p3'、ならびに等質投影空間14'内の単位法線ベクトルn'の第2の成分n2'および第3の成分n3'がわかっている場合に導出可能である。
【０３１８】
同様に、投影空間12内の投影されたストローク曲線18の下側境界のy軸に沿った位置の推定(図5に示されていない)は、r"(下側)として示されている、曲線の中心線100の下のr"への等価な点の位置によって与えられうる(この用語における点r"はr"(上側)として示されている)。
【０３１９】
【数１０】
2011028756.tif 000012
【０３２０】
ここでもまた、曲線の下側境界の投影空間内の望ましいy位置
【０３２１】
【数１１】
2011028756.tif 000013
【０３２２】
は、ユーザ空間ストローク幅w、等質投影空間14'内の点p'の第2の座標p2'および第3の座標p3'、ならびに等質投影空間14'内の単位法線ベクトルn'の第2の成分n2'および第3の成分n3'がわかると導出することができる。
【０３２３】
次いで、点p"、つまり、r"(上側)およびr"(下側)におけるストローク曲線の投影形態の境界(エッジ)に対するこれら2つの推定された上側および下側のy値を使用して、各x位置におけるストローク曲線の投影形態によって覆われるy位置の推定範囲を導出することができる(この後、y位置のこの範囲を、上述のようにサンプリング点と突き合わせてテストすることができる)。
【０３２４】
したがって、投影空間内の各x位置(
【０３２５】
【数１２】
2011028756.tif 000014
【０３２６】
に対応する)についてこれら4つの座標値(スカラー値である)のそれぞれを、(つまり、そのx位置を使用してこれらを検索することができるように)決定し格納することによって、その情報を、ユーザ空間ストローク幅w(知られているパラメータとなる)と一緒に使用し、注目しているx位置におけるストローク曲線の投影形態によって覆われるy軸に沿った位置の範囲を一緒に定義する最大のy値と最小のy値を推定することができる。
【０３２７】
したがって、この実施形態において、ストローク曲線に沿った与えられた位置に関して、格納され、使用される所定の「エクステント推定」情報は、これら4つの座標値、つまり、p2'、p3'、n2'、およびn3'を含む。
【０３２８】
この配置構成では、p2'およびp3'は、実際に、注目している「長さ」位置におけるストローク曲線の投影形態の中心線のy位置を表し(導出するために使用されうる)、n2'およびn3'は、実際に、注目している「長さ」位置におけるストローク曲線の投影形態の中心線に対する、変換され投影された単位法線ベクトルのy成分を表す(導出するために使用されうる)。
【０３２９】
したがって、x軸(投影空間内の)に沿った複数の位置に関して、値p2'、p3'、n2'、およびn3'を計算し、格納することによって、サーフェス空間6内のサンプリング点がストローク曲線の範囲内に入っているかどうかを判定するために、以下でさらに詳しく説明される方法で、使用されうる情報(上述の所定の「エクステント推定」情報)を含むデータストアを構築することが可能であることがわかるであろう。
【０３３０】
出願人は、上記のプロセスにおいて調整係数を適用することによって投影されたストローク曲線の上側および下側エッジのより正確な推定を得ることができるとさらに認識した。これにより、特に、より広い幅を有するストローク曲線、またより広い範囲の曲線形状および太さに対し、レンダリング品質を高めることができる。
【０３３１】
そこで、図6を参照しつつ説明されている、他の好ましい実施形態では、投影されたストローク曲線の上側境界のy軸に沿った位置、つまり、点s"の位置は、投影空間12内の点u"のy座標であるものとして推定され、ここで、u"は等質投影空間14'内の点u'の投影であり、以下のように定義される。
i)u"はp"から幅(y軸)方向に沿って置かれている、つまり、u"のx座標は、p"のx座標と同じである。
ii)q'およびu'を通過する直線の方向は、点p'において等質投影空間14'内の変換された曲線16の中心線100に対する接線t'に平行である。
【０３３２】
上記の第2の条件では、
u'= q'+λt'
であることが要求されると理解されるが、ただし、λは何らかのスカラー値である。
【０３３３】
そこで、第2の条件を、
【０３３４】
【数１３】
2011028756.tif 000015
【０３３５】
であることを要求する、第1の条件に適用することで、
【０３３６】
【数１４】
2011028756.tif 000016
【０３３７】
が得られ、これを書き換えると、
【０３３８】
【数１５】
2011028756.tif 000017
【０３３９】
となり、したがって
【０３４０】
【数１６】
2011028756.tif 000018
【０３４１】
となる。そうして、
【０３４２】
【数１７】
2011028756.tif 000019
【０３４３】
が得られる。
【０３４４】
上述のように、投影空間12内の投影されたストローク曲線18の上側および下側の境界のy軸に沿った位置の改善された推定は、
【０３４５】
【数１８】
2011028756.tif 000020
【０３４６】
によって得られ、それぞれ、
【０３４７】
【数１９】
2011028756.tif 000021
【０３４８】
および
【０３４９】
【数２０】
2011028756.tif 000022
【０３５０】
となる。
【０３５１】
この場合、したがって、与えられた「長さ」位置に関して、算出され、格納される所定のエクステント推定情報は、値p2'、p3'、
【０３５２】
【数２１】
2011028756.tif 000023
【０３５３】
、および
【０３５４】
【数２２】
2011028756.tif 000024
【０３５５】
となる。
【０３５６】
この配置構成において、単位法線ベクトル成分n2'、n3'に適用される係数
【０３５７】
【数２３】
2011028756.tif 000025
【０３５８】
は、上述のように、実際には、とりわけ等質投影空間内の接線ベクトルt'に基づく調整係数である、つまり、これは、とりわけ単位法線ベクトルn'に単位接線ベクトルt'に基づく調整係数を適用する。
【０３５９】
本実施形態では、所定のエクステント推定データ(上述のいずれかの形態の)が、1Dグラフィックステクスチャの形態で格納される。例えば、本実施形態では、グラフィックステクスチャは、4チャネル(RGBA)テクスチャであり、テクスチャのそれぞれのテクセルは、投影空間内のx軸に沿った与えられた位置に関連付けられる。それぞれのテクセルの赤色チャネルは、p2'値(それぞれのx位置に対する)を格納するために使用されるが、緑色チャネル、青色チャネル、およびαチャネルは、それぞれ、p3'、n2'、およびn3'値、またはp3'、
【０３６０】
【数２４】
2011028756.tif 000026
【０３６１】
、および
【０３６２】
【数２５】
2011028756.tif 000027
【０３６３】
を格納するために使用される。他の配置構成も、もちろん、可能である。例えば、4つの1チャネル(グレースケール)グラフィックステクスチャを使用することで、所定のデータを格納することが可能である。
【０３６４】
したがって、表示される特定のストローク曲線2に対し、本実施形態では、投影空間内のx軸に沿った複数の等間隔に並ぶ点について、投影空間内のそのストローク曲線の特定の投影形態に対する上述の所定のデータを含むテクスチャが作成されることは理解されるであろう。このようなテクスチャの一例が図7に示されているが、x軸上の4つの例示的な点、例えば、
【０３６５】
【数２６】
2011028756.tif 000028
【０３６６】
である、p1x"、p2x"、p3x"、およびp4x"についてデータが格納される。
【０３６７】
次いで、上述のように、この所定の(および格納されている)データを使用して、投影空間内のx軸上の点に対するy軸に沿ったストローク曲線18の投影形態のエクステントの近似的測定量を求め、これにより、その点においてストローク曲線の投影形態によって覆われる投影空間内のy位置の範囲を推定することができる。
【０３６８】
例えば、ここでもまた図4を参照すると、点p1x'で曲線によって覆われるy位置の範囲は、範囲
【０３６９】
【数２７】
2011028756.tif 000029
【０３７０】
であると推定されうる。
【０３７１】
次いで、曲線によって覆われるy位置の範囲のこの推定を使用して、投影空間内のある点がストローク曲線の投影形態の範囲内にあると考えるべきかどうかを判定することができる。
【０３７２】
例えば、図7内の投影空間内の点Aがストローク曲線の投影形態18の範囲内にあるかどうかを判定するために、y軸上の点Aの位置を、上で与えられた範囲である、投影空間内のx軸上の点Aの位置において曲線によって覆われている投影空間内のy位置の範囲と比較し、その結果に基づいて判定を下すことができる。点Aの場合、
【０３７３】
【数２８】
2011028756.tif 000030
【０３７４】
であることがわかり(図7から)、したがって、点Aは、ストローク曲線の投影形態の範囲内にないと考えられる。
【０３７５】
次に、本実施形態の技術を使用して受け取ったストローク曲線をレンダリングする方法について説明する。
【０３７６】
本実施形態において、アプリケーションは、例えば、複数の制御点および制御点と制御点との間に描画される線分の種類に関して、レンダリングされる必要があるストローク曲線の記述を作成またはロードし、この情報をグラフィックス処理システムに受け渡す。例えば、図1を参照すると、このアプリケーションは、この場合には、本発明の技術を使用してそれぞれレンダリングされる、線分1a〜1fを記述する情報をシステムに送信する。
【０３７７】
グラフィックス処理システムは、次に、線分1a〜1fの1つまたは複数が、本発明の技術を使用してレンダリングされるために複数の線分の部分に細分化される必要があるかどうかを判定し、細分化が必要であるとみなされた線分を細分化する。例えば、線分1a〜1fのうちの1つが、自己交差部分または尖点を持つ三次曲線であるか、または自己重複する曲線である場合、その線分は、典型的には、細分化される必要がある。
【０３７８】
次いで、システムは、ID番号などのハンドルを個別の線分または線分の一部のそれぞれに割り当てて、それぞれの曲線がシステム内で一意に識別されるようにする。
【０３７９】
グラフィックス処理システムは、次に、曲線をその投影形態に変換する際に使用されるR行列(ユーザ-投影変換)を決定し、それを実行させて、次いで、曲線の投影形態に関して、上で説明されているような適切な所定の情報を決定し、その所定の情報を含む要求されている1つまたは複数のテクスチャを作成する。これは、個別の線分または線分の一部のそれぞれに対して実行される。それぞれの線分に対する各R行列および(複数の)グラフィックステクスチャが、使用中のシステムによってアクセスできるような形で格納され、格納された情報は注目している線分(曲線)に割り当てられたハンドル(ID)に関連付けられる。
【０３８０】
これは、好ましくは、アプリケーションがレンダリングを要求することがあるそれぞれの曲線について繰り返される。
【０３８１】
あるいは、グラフィックス処理システムが受け取ることが可能な複数のストローク曲線のそれぞれに対するR行列および所定の情報(例えば、(複数の)テクスチャ)は、システムの外部において予め決定し、例えば、CD-ROMまたは同様のものなどの取り外し可能記憶媒体に格納することが可能である。次いで、媒体上に格納されている情報を、実行時に計算する代わりに、必要に応じて、また必要な場合に、例えば、アプリケーション側でグラフィックス処理システムに入力することが可能である。
【０３８２】
その後、アプリケーション側で、表示のため曲線をレンダリングすることを要求した場合、アプリケーションは、グラフィックス処理システムに、ユーザ-サーフェス変換(Tus)、ユーザ空間ストローク幅w、およびレンダリングされる曲線のハンドル(ID)を受け渡す。これらの情報断片のそれぞれを同時にシステムに受け渡すことも可能であるが、レンダリングプロセスにおいて異なる段階でシステムに受け渡すことがより一般的であることはもちろん理解されるであろう。
【０３８３】
レンダリングされる曲線のハンドル(ID)は、アプリケーションによって受け取られ、次いで、レンダリングされる曲線に関係する格納されているR行列および所定の情報(1つまたは複数のテクスチャ)を選択するためにグラフィックス処理システムによって使用される。次いで、グラフィックス処理システムは、以下でさらに詳しく説明されているように、その情報を使用して、表示する曲線をレンダリングする。
【０３８４】
例えば、ここでもまた図1を参照しつつ、受け取ったユーザ空間ストローク曲線2をレンダリングするために、曲線は、アプリケーションから受け取ったとおりにユーザ-サーフェス変換を使用してサーフェス空間6内に最初に投影される。
【０３８５】
次いで、サーフェス空間6内の曲線の投影7を覆う(1つまたは複数の)プリミティブ8が生成され、(複数の)プリミティブがラスター処理され、サーフェス空間内で複数のサンプリング点を定義する。
【０３８６】
次いで、サーフェス空間6内のサンプリング点のそれぞれが、最初にユーザ-サーフェス変換の逆変換を適用し、次いで、(説明されているように、その曲線に使用されるテクスチャとともに格納されている)レンダリングされる特定の曲線に対するユーザ-投影変換Rを適用することによって、ストローク曲線の投影形態が定義される投影空間12内の対応する位置にマッピングされる。変換は、好ましくは、プリミティブの頂点に関してのみ実行され、そのときに、例えば、および好ましくは、当技術分野で知られているようなラスター処理ハードウェアによって、プリミティブ内のサンプリング位置が補間される。
【０３８７】
この後に、サーフェス空間内のそれぞれのサンプリング点位置に対応する投影空間内のサンプリング点位置(つまり、サーフェス空間内のストローク曲線を覆う(複数の)プリミティブ内の)が知られることになる。次いで、上述の方法で注目しているストローク曲線に対する(複数の)テクスチャ内に格納されている曲線のその形態に関して所定の情報を使用して、投影空間内のサンプリング位置を投影空間内のストローク曲線の投影形態と突き合わせてテストすることができる。
【０３８８】
そこで、投影空間内のサンプリング位置毎に、適切な(複数の)テクスチャをサンプリングして(検索としてサンプリング位置のx位置を使用して)、x軸上の要求された位置に対する4つの格納されているデータ値を取得する。
【０３８９】
そこで、例えば、図7に示されている投影空間内のサンプリング位置Aを考えると、検索としてそのサンプリング位置の投影空間内のx位置、つまり、p1x"を使用して、注目している曲線に対するテクスチャをサンプリングし、x軸上の要求された位置に対する上述の4つのデータ値を取得する。
【０３９０】
本実施形態では、テクスチャは、双線形フィルタリングを使用してサンプリングされ、投影空間内のサンプリング位置がデータの集合が直接的には格納されていないx軸に沿った位置にある場合に、これにより、投影空間内のx軸に沿った与えられた位置に対し使用される関連するデータ値を適宜補間することができる(図4の点Bの場合など)。他のフィルタリングまたは補間法も、もちろん、使用可能である。
【０３９１】
次いで、テクスチャをサンプリングすることで導出された4つのデータ値をユーザ空間内で定義されているような曲線のストローク幅w(曲線を定義するためにグラフィックス処理システムが受け取る)と一緒に使用して、上述の方法でx軸上の位置に対する投影空間内のy軸に沿ったストローク曲線の投影形態のエクステントを推定する、つまり、注目しているx軸上の位置において投影されたストローク曲線の上側および下側境界の推定を表すy軸上の最小値および最大値を決定する。
【０３９２】
次いで、考えられているサンプリング点のx軸上の位置に対する投影空間内のy軸に沿ったストローク曲線の投影形態の推定されたエクステント、つまり、決定された最大および最小のy値を、上述のように、投影空間内の注目しているサンプリング点のy位置と比較して、投影空間内のサンプリング位置が、ストローク曲線の投影形態の範囲内に入ると考えるべきであるかどうかを判定する。
【０３９３】
次いで、この判定、つまり、投影空間内のサンプリング位置が、ストローク曲線の投影形態の範囲内に入ると考えるべきかどうかの結果に基づいて、サーフェス空間内の対応するサンプリング位置に関して対応する決定を下し、そのサーフェス空間サンプリング位置を、それに応じて、ストローク曲線の内側にあるものとして保持するか、ストローク曲線の外側にあるものとして破棄することができる。次いで、好適なシェーディングデータ、例えば、RGBA値を、サーフェス空間内の対応するサンプリング点に割り当てることができる。
【０３９４】
このプロセスは、ストローク曲線を適切に表示するために、サーフェス空間内のそれぞれの望ましいサンプリング点について(つまり、実際には、サーフェス空間内のストローク曲線を覆う1つまたは複数のプリミティブ内のサーフェス空間内のそれぞれのサンプリング点について)繰り返される。
【０３９５】
本発明のプロセスは、従来の既存のグラフィックス処理システムを含む、任意の好適なグラフィックス処理システムを使用して実装されうる。
【０３９６】
例えば、プログラム可能なグラフィックハードウェアでは、これらのプロセスをフラグメントシェーダーで実装できる。(この方法で実装する場合、つまり、フラグメントシェーダーでフラグメントの受理および拒否を行うときに、標準的なマルチサンプルアンチエイリアシングが結果として無効にされた場合、曲線の境界に近いフラグメントに対する被覆値を決定することによって、必要ならば、それを修正することが可能である。)
【０３９７】
固定機能ハードウェアでは、本発明のプロセスは、レンダリングパイプラインを通る1つまたは複数のパスを使用して実装することができる。
【０３９８】
本実施形態は、ストローク曲線の任意の望ましい形態をレンダリングするために使用されうるが、繰り返しレンダリングする必要のあるストローク曲線のレンダリングに特に適用可能である(なぜなら、格納されている所定の情報を使用するからである)。上述のように、本発明は、特に、ただしもっぱらというわけではないが、(例えば、フォントの、英字などの文字の全部または一部を形成する)フォントを構成するために使用されるストローク曲線のレンダリングに適していると確信している。したがって、特に好ましい一実施形態では、表示されるストローク曲線は、フォントの文字に関係するストローク曲線である。同様に、好ましい一実施形態では、それぞれがフォントの文字に関係するストローク曲線に関係する事前定義された情報(例えば、テクスチャ)の複数の集合などが格納され、使用される。
【０３９９】
当業者であれば理解するように、本明細書において上で説明されているように本発明のさまざまな修正、変更、および追加が可能である。
【０４００】
例えば、好ましい一実施形態では、上述の等質投影空間におけるパースペクティブ分割値は、たすき掛けされるが、これは、推定プロセスを最適化するのに役立つ。これが実行される場合、それらの値はすべて、必ず厳密に正の値であることが好ましい。これは、例えば、ユーザによって投影変換に変換された後に、曲線をレンダリングするために使用される境界プリミティブがすべて正の第3のスカラー値を有しているかどうかのチェックを、少なくともそれらの値がそのときに頂点と頂点との間で線形補間されている場合に行うことによって達成されうる(その場合には、境界プリミティブの頂点に対する値をチェックすることで、プリミティブ内のすべての値も同様に正であることが確認されるはずだからである)。
【０４０１】
同様に、本発明は、事実上ユーザ空間ストローク幅wの一次有理関数であるものを使用してストローク曲線の投影形態のy方向における関連するエクステントを推定することに関して上で説明されているが(上述のように、この目的のために使用される曲線の投影形態のエッジ(境界)のy位置は、ユーザ空間ストローク幅wの一次関数であるため)、その代わりに、ユーザ空間ストローク幅の他の関数を使用して必要ならば投影空間内のストローク曲線の投影形態のエクステント推定することが可能であろう。例えば、必要ならば、二次有理近似式を使用することも可能である。
【０４０２】
二次などのより高次の近似式を使用すると、例えば、図6に示されている点u"と点s"との間のギャップをより適切に補正することによって、ストローク曲線の投影形態の関連するエクステントの推定をより正確に行うことができる(したがって、より正確にレンダリングすることができる)と思われる。
【０４０３】
例えば、「ツーパス」アプローチを使用して本発明のテストおよび比較ステップを実行することも可能である。
【０４０４】
このような一実施形態では、第1パスを使用することで、ユーザ空間ストローク幅wおよび関連する1つまたは複数のテクスチャ内の所定のデータを使用するx軸に沿った位置の通常のサンプリングのために、上述のように、最小および最大y値を決定することが可能である。次いで、所定のデータを格納するテクスチャに関して上で説明されているのと同様の方法で、これらの最大および最小y値を他の1つのテクスチャ(または、必要なら、複数のテクスチャ)内に格納することが可能である(つまり、これにより、他のテクスチャのそれぞれのテクセルが特定のx位置に対する最小y値および最大y値のいずれかを表すスカラー値を格納し、他のそのテクスチャが、テストされるx軸に沿った位置を使用してサンプリングされる)。
【０４０５】
次いで、上述のように、プリミティブ、例えば、境界ポリゴン8をラスター処理し、他のテクスチャをサンプリングして特定のx位置に対する格納されている最大および最小のy値を検索することによってサンプリング点がストローク曲線の範囲内にあるかどうかを判定し、サンプリング点のy位置をこの判定された範囲と比較することによって、第2パスでこのテクスチャをサンプリングすることが可能である。
【０４０６】
このようにして、つまり「ツーステップ」アプローチを使用して、本発明を実行すると、セットアップのオーバーヘッドが生じ、またドメインのサンプリングが潜在的に非一様になる可能性があることと引き換えに、処理の一部がフラグメント毎の演算(2Dドメイン)からx毎の演算(1Dドメイン)に移される。
【０４０７】
上述のように、本発明の本実施形態では、投影空間内へのストローク曲線の投影は、投影空間の基底ベクトルの1つ、つまりx軸に沿った2つの別々の位置にストローク曲線の終点を置く形態である。さらに、ストローク曲線の終点に関連付けられている法線ベクトルは、投影空間の他の基底ベクトル、つまり、y軸に沿って置かれるように再配向される。
【０４０８】
上記のことからわかるように、法線ベクトルがy軸方向に近づくように再配向することは、点r"およびu"が、曲線の投影形態の「真の」エッジ点s"に近づくことを意味し、したがって、本発明で使用される推定結果がより正確なものとなる。したがって、この方法でストローク曲線の投影形態の法線ベクトルを再配向するために、R行列が射影成分、つまり行列Pを含むことが好ましい。しかし、他の実施形態では、R行列は、このようにしてユーザ空間法線ベクトルを再配向しないことも企図される(例えば、R行列は、単純にアフィン行列Mからなるものとしてもよい)。この場合、ストローク曲線の「推定された」投影形態は、ユーザ-投影変換が上述のように法線ベクトルを再配向する場合と比べてあまり正確でないこともあるが、出願人は、本発明のこのような配置構成が、少なくともいくつかの事例において、ストローク曲線を文句のない形でレンダリングするためにそのまま使用されうることを発見した。
【０４０９】
本発明は、ラスター処理ベースの技術を使用する実施形態に関して説明されているが、本発明はレイトレーシングベースの技術と併せて使用できることも企図されている。このような技術において、当技術分野で知られているように、観察者の目を始点とする光線の経路は、サーフェス(画面)空間内のそれぞれの位置を通り、シーン内に入る軌跡を辿り、これにより、何に当たり、ひいては観察者が何を見たかが決定される。したがって、シーンが、ストローク曲線を含む場合、光線がストローク曲線に当たったか、当たり損ねたかの判定を行わなければならず、理解されるように、このような判定は、本発明の技術を使用して行うことができる。
【０４１０】
上記から、本発明は、少なくともその好ましい実施形態において、ストローク曲線をレンダリングするための、とりわけ、従来の固定機能3Dグラフィックスハードウェア上で、また未修正の既存のハードウェアグラフィックスアクセラレータ上で、従来の技術で可能な方法に比べて実質的により効率的な(CPUの負荷に関して)方法を用いて実装されうる方法および装置を実現することがわかる。
【０４１１】
特に、本発明は、少なくともその好ましい実施形態において、所定の情報の一次元テーブルのみを必要とする。これにより、とりわけ、メモリ効率が高まる。
【０４１２】
さらに、所定の情報は、ストローク曲線の平行移動、回転、および一様なスケーリングに対し不変であり、またユーザ空間内の曲線のストローク幅への変更にも不変である。
【０４１３】
本発明を実装するためのサンプリング点演算毎のグラフィックス処理も、比較的簡単であり、したがって、例えば、固定機能グラフィックスハードウェアだけを使用して実装することができる。
【０４１４】
これは、少なくとも本発明の好ましい実施形態において、ユーザ空間内の曲線への法線を投影空間内の望ましい方向に対しほぼ平行になるようにする投影空間へのユーザ空間内のストローク曲線の射影変換を使用することによって、達成される。法線を平行に近づけることによって、比較的大きなストローク幅であっても、一次近似式から十分に正確な結果を得ることができる。
【０４１５】
次いで、ストローク曲線の投影形態に関係する所定の情報が導出され、好ましくは1Dテクスチャとして符号化されている検索テーブルの形態で格納される。次いで、表示できるようにストローク曲線をレンダリングするときにこのテクスチャをサンプリングして、与えられたサンプリング位置がストローク曲線内に入ると考えるべきかどうかを判定することを可能にする情報を導出することができる。
【符号の説明】
【０４１６】
A  サンプリング位置
M  アフィン変換
n'  単位法線ベクトル
n2'  第2の成分
n3'  第3の成分
n"  単位法線ベクトル
p  点
p1x"、p2x"、p3x"、およびp4x"  点
p2'  第2の座標
p3'  第3の座標
p'  点
p"  位置
P  射影変換
P12、P23、およびP31  要素
q'  点
q"  点
r"  点
R  ユーザ-投影変換
s"  点
t'  接線
u'  点
u"  点
w  ストローク幅
1a〜1f  線分
2  二次ベジエ曲線、ストローク曲線
4  サーフェス空間、ユーザ空間
6  2Dサーフェス空間
7  投影ストローク曲線
8  ポリゴン、プリミティブ
10  投影
12  投影空間
14  3D等質ユーザ空間
14'  等質投影空間
16  変換形態、曲線
18  投影されたストローク曲線
100  中心線
【図１】
2011028756.tif 000031
【図２】
2011028756.tif 000032
【図３】
2011028756.tif 000033
【図４】
2011028756.tif 000034
【図５】
2011028756.tif 000035
【図６】
2011028756.tif 000036
【図７】
2011028756.tif 000037
【外国語明細書】
2011028756.tif 000038
2011028756.tif 000039
2011028756.tif 000040
2011028756.tif 000041
2011028756.tif 000042
2011028756.tif 000043
2011028756.tif 000044
2011028756.tif 000045
2011028756.tif 000046
2011028756.tif 000047
2011028756.tif 000048
2011028756.tif 000049
2011028756.tif 000050
2011028756.tif 000051
2011028756.tif 000052
2011028756.tif 000053
2011028756.tif 000054
2011028756.tif 000055
2011028756.tif 000056
2011028756.tif 000057
2011028756.tif 000058
2011028756.tif 000059
2011028756.tif 000060
2011028756.tif 000061
2011028756.tif 000062
2011028756.tif 000063
2011028756.tif 000064
2011028756.tif 000065
2011028756.tif 000066
2011028756.tif 000067
2011028756.tif 000068
2011028756.tif 000069
2011028756.tif 000070
2011028756.tif 000071
2011028756.tif 000072
2011028756.tif 000073
2011028756.tif 000074
2011028756.tif 000075
2011028756.tif 000076
2011028756.tif 000077
2011028756.tif 000078
2011028756.tif 000079
2011028756.tif 000080
2011028756.tif 000081
2011028756.tif 000082
2011028756.tif 000083
2011028756.tif 000084
2011028756.tif 000085
2011028756.tif 000086
2011028756.tif 000087
2011028756.tif 000088
2011028756.tif 000089
2011028756.tif 000090
2011028756.tif 000091
2011028756.tif 000092
2011028756.tif 000093
2011028756.tif 000094
2011028756.tif 000095
2011028756.tif 000096
2011028756.tif 000097
2011028756.tif 000098
2011028756.tif 000099
2011028756.tif 000100
2011028756.tif 000101
2011028756.tif 000102
2011028756.tif 000103
2011028756.tif 000104
2011028756.tif 000105
2011028756.tif 000106
2011028756.tif 000107
2011028756.tif 000108
2011028756.tif 000109
2011028756.tif 000110
2011028756.tif 000111
2011028756.tif 000112
2011028756.tif 000113
2011028756.tif 000114
2011028756.tif 000115
2011028756.tif 000116
2011028756.tif 000117
2011028756.tif 000118
2011028756.tif 000119
2011028756.tif 000120
2011028756.tif 000121
2011028756.tif 000122
2011028756.tif 000123
2011028756.tif 000124
2011028756.tif 000125
2011028756.tif 000126
2011028756.tif 000127