(57)【特許請求の範囲】
【請求項１】
モデルとして表現されるオブジェクトを彫塑する方法であって、
階層距離フィールドを前記モデルから生成パラメータにしたがって生成するステップと、
前記階層距離フィールドを編集パラメータにしたがって編集するステップとを含み、
前記生成するステップは、
前記オブジェクトのモデルをオブジェクト距離フィールドに変換するステップと、
前記オブジェクト距離フィールドをオブジェクト文字枠により囲むステップと、
前記画定されたオブジェクト距離フィールドを、各セルが前記オブジェクト距離フィールドのディテールと対応するサイズと前記オブジェクト文字枠に対する位置を有する複数のセルに分割するステップと、
各セルについて、前記画定されたオブジェクト距離フィールドの１組の値を選択するステップと、
各セルについて、前記セルにより囲まれた距離フィールドを再構築する方法を特定するステップと、
各セルについて、前記サイズ、前記位置、前記組の値、および前記距離フィールドを再構築する方法をメモリに記憶して、前記セルの再構築方法を前記値に適用することによって前記オブジェクトの距離フィールドの再構築を可能とするステップとを含み、
前記編集するステップは、
前記オブジェクト文字枠に対する位置および方位を有するツール文字枠により囲まれたツール距離フィールドならびに編集演算により表現されるサーフェイスを有する編集ツールを特定するステップと、
前記ツール距離フィールドを前記オブジェクト距離フィールドと交差させて編集用文字枠を決定するステップと、
前記再構築方法を前記編集用文字枠により囲まれた前記オブジェクト距離フィールドのセルの値に適用することによって、前記編集用文字枠内の前記オブジェクト距離フィールドを再構築するステップと、
前記編集用文字枠により囲まれた前記オブジェクト距離フィールドを、前記ツール距離フィールドの位置および方位、ならびに編集演算にしたがって、変形するステップと、
前記変形されたオブジェクト距離フィールドについて前記階層距離フィールドを生成するステップとを含む、
モデルとして表現されるオブジェクトを彫塑する方法。
【請求項２】
前記分割するステップは前記編集に動的に適応する、請求項１記載の方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は、グラフィカルオブジェクトの彫塑一般に関し、特に、距離フィールドとして表されたグラフィカルオブジェクトの彫塑に関するものである。
【０００２】
【従来の技術】
サーフェイス表現
オブジェクトまたはモデルの「形状」の表現は、コンピュータ支援の設計および操作、数理物理学、物理的モデリング、コンピュータグラフィックス等の多くの分野で必要とされている。形状表現は、一般に、パラメトリックサーフェイスモデル、暗示的(implicit)サーフェイス、サンプリングされたボリュームデータの３つが一般的である。
【０００３】
パラメトリックサーフェイスモデル
パラメトリックサーフェイスモデルは、オブジェクトのサーフェイスを、ポリゴン、スプラインパッチ、またはパラメトリック的に定義される細分化(subdivision)サーフェイス等のプリミティブの集合として定義する。ほとんどのグラフィックスシステムは、パラメトリック表現を使用している。Alyn Rockwoodが「“ソリッドモデルにおける暗示的混合(blending)サーフェイスの変位方法(The displacement method for implicit blending surfaces in solid models)", ACM Transactions on Graphics, Vol. 8, No. 4, 1989」で述べたように、「パラメトリックサーフェイスは、通常、描画、モザイク化(tessellate)、細分化しやすく、境界を引きやすく、または、サーフェイスの‘どの部分’の知識を必要とする点でどのオペレーションも実行しやすい。」しかしながら、パラメトリックサーフェイスモデルは、組み合わせ、塑造または変形が困難である。さらに、パラメトリックサーフェイスモデルは、オブジェクトの内面を表現できないことからソリッドオブジェクトには使用できない。
【０００４】
暗示的サーフェイス
暗示的サーフェイスは、陰関数ｆ（ｘ）により表される。該関数は、サーフェイスを含む空間に亘って定義される。オブジェクトサーフェイスは、陰関数の同一(iso-)サーフェイス、すなわち、ｆ（ｘ）＝ｃとして表現される。Implicitサーフェイスは、オブジェクトの内面を表現することが可能であり、オブジェクト形状同士をモーフィングすることが可能であり、オブジェクトにＣＳＧ（ｃｏｎｓｔｒｕｃｔｉｖｅ  ｓｏｌｉｄ  ｇｅｏｍｅｔｒｙ）オペレーションを施すことが可能である。また、Implicitサーフェイスは、オブジェクトの内部と(versus)外部を検出することも可能であるが、BloomenthalがIntroduction to Implicit Surfaces, Morgan Kaufman Publishers, 1997で述べているように、「サーフェイスのパラメトリック（２Ｄ）空間からオブジェクトのジオメトリック（３Ｄ）空間への自然変換は、基本的に便利であり、パラメトリックサーフェイスの普及を部分的に支えているが、…暗示的サーフェイスのメカニズムに匹敵するものではない。」言い換えれば、暗示的サーフェイスを定義する式において、オブジェクト空間におけるサーフェイスに点を置きにくく、さらに、任意のいくつかのオブジェクトの陰関数を求めることは困難となる可能性がある。
【０００５】
サンプリングされたボリュームデータ
サンプリングされたボリュームデータは、均一または不均一なグリッドのサンプリングされた強度値のアレイでオブジェクトおよびモデルを表現する。ボリュームデータは、通常、３Ｄ画像データまたは数値シミュレーションから生成される。Implicitサーフェイスと同様に、サンプリングされたボリュームデータは、オブジェクト内面を表現し、暗示的サーフェイスが使用される同様の多数の方法でサンプリングされたボリュームデータを使用し得る。しかしながら、オブジェクト表現の精度は、サンプリングの解像度により制限される。サンプリングされたデータは、通常、強度ベースであるため、オブジェクトが、サンプリングされた強度値により背景と、さらに他のオブジェクトと区別される。これは、一般に、サンプリングされた強度がオブジェクトサーフェイスで急激に変化することで、高空間数端数をデータに導入することを意味する。レンダリングされた画像においてアーチファクトのエイリアシングおよびエッジのギザギザを回避するためには、高速サンプリングレートが必要とされる。高速サンプリングレートはメモリ要件を増大させるとともにレンダリング時間がかかることから、表現されたサーフェイスの品質は、メモリ要件およびレンダリング速度と相殺せざるを得ない。
【０００６】
距離フィールドおよび距離マップ
スカラーフィールドは、所与の領域に亘って定義される一価Ｎ次元関数である。
距離フィールドは、オブジェクト“Ｓ”のサーフェイス“．Ｓ”までの「距離」を表現する。「距離」とは、サーフェイス“．Ｓ”上のすべての点“ｑ”について、Ｄ（ｐ，Ｓ）＝ｍｉｎａｂｕｓ｛‖ｐ−ｑ‖｝により、フィールドのどメインに格納される“ｐ”ごとに定義される。ここで、ｍｉｎａｂｕｓ｛Ａ｝は、最小絶対量を有する集合Ａの符号付き要素を求め、“‖〜‖”は、以下の特性を有する距離メトリックを表す、すなわち、距離メトリックは、“．Ｓ”上のいずれにおいてもゼロ値を有し、該メトリックは、Ｓの内部と外部とで区別が可能なように符号がつけられている。距離フィールドのゼロ以外の同一サーフェイスのサーフェイスは、スカラーオフセットを距離フィールドに加えることによって容易に特定される。
【０００７】
サンプリングされた距離フィールドは、サンプリング位置の暗示的または明示的表現のいずかにしたがう距離フィールドからサンプリングされた１組の値である。サンプリングされた値は、距離フィールドの勾配および／または距離フィールドの他の空間導関数等の距離値と関連する距離計算を含んでもよい。
【０００８】
距離メトリックの一例は、ユークリッド距離であり、この場合、任意の点“ｐ”の距離フィールドは、“ｐ”からオブジェクトサーフェイス上の最も近い点までの符号付きユークリッド距離となる。距離マップは、サンプル位置が均一グリッド上にあるサンプリングされたユークリッド距離フィールドであると定義される。距離マップは、いくつかの用途に利用されてきた。
【０００９】
たとえば、Lengyelらは、「“ラスタ化コンピュータグラフィックスハードウェアを用いたリアルタイムロボット動き計画(Real-time robot motion planning using rasterizing computer graphics hardware)", SIGGRAPH, pp. 327-335, 1990」においてロボットの経路計画の距離マップを使用した。他にも。２つのオブジェクト間をモーフィングする距離マップを使用している。たとえば、「“サーフェイスモデルの距離フィールド操作(Distance field manipulation of surface models)", Payneら, IEEE Computer Graphics and Applications, １９９２年１月」を参照されたい。また、距離マップは、Breenらが「“ＣＳＧモデルの距離ボリュームへの３Ｄスキャン変換(3D scan conversion of CSG models into distance volumes)", IEEE Volume Visualization Symposium議事録、１９９８」で論じているように、オフセットサーフェイスを生成するためにも使用されてきた。Gibsonは、「“サンプリングされたボリュームでの平滑面表現に距離マップを使用する (Using distance map for smooth surface representation in sampled volumes)", IEEE Volume Visualization Symposium議事録、１９９８」において、ボリュームレンダリングの精巧なサーフェイスを表すために距離マップを使用した。「“二進数セグメントデータからの距離マップの算出(Calculating distance maps from binary segmented data)", MERL Technical Report TR99-26, １９９９年４月」においてGibsonにより、二進数のサンプリングされたボリュームデータから距離マップを生成する４つの方法が比較されている。
【００１０】
ユークリッド距離フィールドがサーフェイス上でゆっくりと変化しているため、距離マップは、サンプリングされた強度値のエイリアシングの問題を被らない。平滑面は、該面が低曲率を有する限り、比較的粗雑な距離マップから精巧に再構築され得る。しかしながら、距離マップは定期的にサンプルされるため、サンプルされたボリュームと同一の問題の一部を被る。たとえば、距離マップのサイズは、オブジェクトのボリュームと表されるべき最も精密なディテールの組み合わせにより決定される。このため、精密なディテールのサーフェイスをいくつか有するボリュームには、ボリュームのごく僅か一部が精密なディテールサーフェイスに占められていても大きな距離マップが必要である。さらに、距離マップは、典型的には、ボリュームレンダリング技術を用いることでレンダリングされる。ボリュームレンダリング技術は、非常に遅いことがあり、相当サイズのボリュームを高品質でレンダリングするのに１コマあたり数秒乃至数分間要することがある。
【００１１】
階層オブジェクト表現の空間データ構造
メモリを効率よく使用するために空間データを階層的に編成し、レンダリングし、物理的モデリングを行う多数の方法が周知である。空間データ構造の例が、ともに１９８９年にAddison-Wesleyから出版されたSametによる２冊の書籍「空間データ構造の設計および分析(The Design and Analysis of Spatial Data Structures)」および「空間データ構造の応用(Applications of Spatial Data Structures)」に提示されている。
【００１２】
オクトリにより、三次元空間を８等分サイズのオクタントまたはノードに再帰的に分解してデータを階層編成する。領域オクトリは、ボリューム画像の均一な領域に対応するノードにデータを分割する。画像データが二値である場合、得られたツリーは、内部ノードと外部ノードの２種類のノードを有する。三色オクトリにより、ノードを内部ノード、外部ノード、またはオブジェクトサーフェイスと交差する境界ノードに色分けする。境界ノードは、最高解像度のボリュームデータに再帰的に細分化される。オブジェクトサーフェイスは、境界リーフノードを描画することによりレンダリングされる。
【００１３】
三色オクトリは、内部および外部領域に要する記憶容量を縮小するため、またレンダリングおよび衝突検出を高速化する効率のよい構造を提供するためにボリュームデータに応用されてきた。しかしながら、均一のグリッド上の境界ノードによりサーフェイスを表現した結果、サンプリングされたボリュームに見られるものと同様の問題が生じる。レンダリングされた画像は、サーフェイスが非常に高周波数でサンプリングされない限り、アーチファクトのエイリアシングを受ける。サンプリングレートは、境界ノードの解像度に対応し、サーフェイスに存在するディテールの量よりむしろレンダリングされた画像の要求される最も高い解像度により決定される。このため、三色オクトリ表現では、比較的平坦面であっても相当量のメモリ容量が必要となる可能性がある。
【００１４】
サンプリングされたボリュームデータをポリゴンモデルに変換する
最初にLorensenとClineにより、「“マーチングキューブ：高解像度３Ｄサーフェイス構造アルゴリズム(Marching Cubes: a high resolution 3D surface construction algorithm)", Computer Graphics, 21(4)pp. 163-169, 1987」に記載されたマーチングキューブアルゴリズムおよびその後継アルゴリズムは、一定にサンプリングされたボリュームの同一サーフェイスに三角モデルを当てはめる際に最も一般的に使用される方法である。同一サーフェイスを含むセルごとに、ルックアップテーブルにより、該セルの中の同一サーフェイスに近似する三角形の組を決定する。この方法は、トポロジカルな曖昧さを解決するとともに亀裂のないサーフェイスを保証するものであることから、直線グリッド上のサンプリングされたボリュームに限定される。
【００１５】
Gibsonは、「“制約された弾性ＳｕｒｆａｃｅＮｅｔ：二値のセグメントデータから平滑面を生成する(Constrained Elastic SurfaceNets: generating smooth surfaces from binary segmented data)"MICCAI '98議事録, pp. 888-898, 1998」において、二値のサンプリングされたボリュームを三角モデルに変換する方法を提示した。該方法は、一定にサンプリングされたボリュームにおいて二値オブジェクトのサーフェイスに亘って、被リンクノード網を張り巡らせる。ノードの位置は、元のノードの配置により定義される制約においてＳｕｒｆａｃｅＮｅｔの形状を平滑になるよう調整される。該方法は、サーフェイスをグレイスケールデータに当てはめることができない。
【００１６】
点の雲をパラメトリックサーフェイスに変換する
Hoppeらは、「“非編成点からのサーフェイス再構築(Surface reconstruction from unorganized points)", SIGGRAPH '92会報, pp.72-78, 1992」および「“区分的な平滑サーフェイス再構築(Piecewise smooth surface reconstruction)", SIGGRAPH '94会報, pp.295-302, 1994」において、非編成点の集合を三角モデルに変換し、次いで細分化サーフェイスを出力された三角モデルに当てはめる方法を記載している。該方法は、点の雲から距離マップを生成し、次にマーチングキューブを用いて三角モデルを生成する。本方法は、距離マップの解像度によって、さらに非編成点から推測し得る距離マップの精度によって制限される。
【００１７】
暗示的サーフェイスを三角形に変換する
Bloomenthalは、「“暗示的サーフェイスのポリゴン化(Polygonization of implicit surfaces)", Technical Report, Xerox Parc, EDL-88-4, １９８８年１２月」において、単一の陰関数として表現されるサーフェイスを三角形に変換する方法を開示している。中間的一時データ構造において、サーフェイスを交際するセルの頂点において該関数が評価される。中間表現は、陰関数により表現される所望の同一サーフェイスにある１２個のセルエッジの点を一緒にすることによりポリゴン化される。彼は、「サーフェイスを交差し、サーフェイスディテールと比較して小さい初期シードセル」から開始するセルを伝播することによりサーフェイスを追跡している。あるいは、彼は、「サーフェイスを交差するこれらの立方体を細分化する」ことのみによりサーフェイスに収束している。一時データ構造をレンダリングし、編集することについては記載していない。
【００１８】
距離マップをレンダリングする
「“サンプリングされたボリュームでの平滑面表現に距離マップを使用する (Using distance map for smooth surface representation in sampled volumes)", IEEE Volume Visualization Symposium議事録、１９９８」においてGibsonが記載するように、距離マップは、パラメトリックモデルに変換せずに直接レンダリングできる。しかしながら、使用されるボリュームレンダリングアプローチは、相当量のボリュームでは非常に遅い。
【００１９】
パラメトリックサーフェイスのためのサーフェイス編集
パラメトリックサーフェイスの編集は、骨の折れる問題である。光学設計において最も一般的に使用されるパラメトリックサーフェイスは、サーフェイス編集がトリミングと呼ばれるプロセスにより実行される、非均一な有理Ｂ―スプライン（ＮＵＲＢ：ｎｏｎ−ｕｎｉｆｏｒｍ  ｒａｔｉｏｎａｌ  Ｂ−ｓｐｌｉｎｅ）サーフェイスである。しかしながら、「“キャラクタアニメーションにおける細分化サーフェイス(Subdivision surfaces in character animation)", SIGGRAPH '98会報, pp.85-94, 1998」においてDeRoseらが述べるように、個のプロセスは、「高価であり、数値誤差が生じやすい。」
【００２０】
他の種類のパラメトリックサーフェイスを編集する多数の方法が提示されてきたが、一般に、これらは複雑であり、直感的ではないため、編集されたサーフェイスの品質を調節することが困難である。たとえば、Naylorは、「“ＳＣＵＬＰＴ：対話的ソリッドモデリングツール(SCULPT: interactive solid modeling tool)", Graphics Interface '90会報, pp.138-148, 1990」において、ソリッドオブジェクトおよびツールを二値空間区分（ＢＳＰ：ｂｉｎａｒｙ  ｓｐａｃｅｄｐａｒｔｉｔｉｏｎｅｄ）ツリーとして表現している。彼は、ツリーをオブジェクトＢＳＰツリーの中に配置してオブジェクトツリーを編集することにより、ツールとオブジェクト間に結合(union)、相違および交差オペレーションを実行している。彼は、比較的単純なオブジェクトであってもそのソリッドモデルを塑造することがいかに困難であるかを示している。提示されている彫塑されたオブジェクトの例では、彫塑領域の周りのエッジは低解像度であり、きめが粗くなっている。
【００２１】
KhodakovskuyとSchroderは、「“細分化サーフェイスのための微細レベルフィーチャ編集(Fine level feature editing for subdivision surfaces)", Solid Modeling and Application会報, pp. 203-211, 1999」において、細分化サーフェイスを彫塑する方法を提示した。ここでも、彼らのアプローチは、比較的単純なオブジェクトモデルに比較的単純な編集オペレーションを施す場合でもかなり複雑である。この方法を用いて自由形式の彫塑を行うとは想像がつかない。
【００２２】
最近、RavivとElberは、任意に配向された１組の立方体パッチに亘って定義されたスカラー均一三変量Ｂ−スプラインの集合としてオブジェクトを表現する方法を示した。Ｂ−スプラインは、多数の制御係数（典型的には、２１５）により制御され、これらの係数を変更することによってオブジェクト形状が編集される。該方法では、過度のメモリおよび計算回数がなければ隅、小孔等の精巧なディテールの編集を行うことができない。論文において提示された結果は、サーフェイスディテールが乏しいことを示し、報告された編集およびレンダリング時間は非常に遅かった。
【００２３】
サンプリングされたボリュームデータを彫塑する
ボリューメトリックデータを彫塑するいくつかのシステムが開発されている。これらのシステムは、密度１がオブジェクト内面に対応し、密度ゼロがオブジェクト外面に対応する密度マップとしてオブジェクトを表現している。これらのシステムは、通常、核オブジェクトの周りに境界領域を有し、密度がゼロから１に変化することでレンダリング中のアーチファクトのエイリアシングを回避している。これらのシステムはいずれも、変形可能でないボリュームオブジェクトから素材を加減するボリューム編集において、一定にサンプリングされたボリュームを使用している。さらに、Barentzenは、密度マップを格納し、かつレンダリングする際に三色オクトリを使用することを論じている。詳細については、「GalyeanとHughesの“彫塑：対話的ボリューメトリックモデリング技法(Sculpting: an interactive volumetric modeling technique)"SIGGRAPH '91会報」「WangとKaufmanの“ボリューム彫塑(Volume sculpting)"1995 Symposium on Interactive 3D Graphics議事録」「AvilaとSobierajskiの“ボリューム視覚化のための触覚的対話方法(A haptic interaction method for volume visualization)"IEEE Volume Visualization '96会報」および「Baerentzenの“オクトリベースのボリューム彫塑(Octree-based volume sculpting)"Late-breaking Hot Topics, IEEE Visualization '98会報」を参照されたい。
【００２４】
これらのシステムには、いくつかの制限がある。第一に、フィルタリングされた境界領域を使用することで、エイリアシングを減少させるが、平滑化され、隅およびエッジが丸くなる。平滑化は、データに使用されるフィルタの結果であり、低域フィルタの代わりに距離マップを使用することにより減退される可能性がある。第二に、オブジェクトは均一グリッドに格納されるため、オブジェクトサーフェイスの解像度は、グリッド解像度により制限される。このため、密度マップには、ボリュームのごく僅か一部が精密なディテールサーフェイスに占められていても、精密なディテールが存在する場合には大きなボリュームが必要である。第三に、ボリュームサイズが大きいことから、密度アップのレンダリングは遅い。Barentzenの提案したオクトリベースの密度マップは、これらの問題を軽減するが、三色オクトリの問題があてはまる。さらに、編集は、予め定められた最も高解像度のオクトリにより制限される。
【００２５】
Schroederらは、米国特許第５，５４２，０３６号「掃引されたボリュームおよび掃引されたサーフェイスの暗示的モデリング(Implicit modeling of swept volumes and swept surfaces)」において、掃引されたボリュームのコンピュータモデルを計算する方法を記載している。合成距離マップは、オブジェクトが空間を通して掃引される超過時間にオブジェクトまでの最小距離をサンプル点ごとに割り当てることにより計算される。掃引されたボリュームのサーフェイスは、LorensenとClineのマーチングキューブアルゴリズムにより三角形に変換される。距離マップは、固定解像度であり、一定にサンプリングされるため、距離マップの問題があてはまる。
【００２６】
Colburnは、米国特許第４，７９１，５８３号「コンボリューション積分を用いてコンピュータモデル化されたソリッドオブジェクトをグローバルに混合(blend)する方法(Method for global blending of computer modeled solid objects using a convolution integral)」において、ボリュームデータの編集方法と類似点をいくつか有するソリッドモデルのエッジおよび隅に突条および丸みを形成する方法を提示している。該方法では、ソリッドオブジェクトは、オクトリで表現され、各境界セルには、該オブジェクトが占めるそのボリュームのパーセントにより決定される値が割り当てられる。丸みは、元のオブジェクトサーフェイスと直角の光線に沿った各点においてセル値のコンボリューションを球体ガウスフィルタで評価することにより達成される。丸みのあるサーフェイスは、コンボリューションを一定の同一値に評価する各光線上の点を通して再構築される。該方法は、特に、ソリッドモデルのエッジおよび隅の丸みおよび突条を追加したことに制限される。さらに、オブジェクト表現の解像度は、境界セルのサイズにより制限されるため、再構築されたサーフェイスの精度が制限される。
【００２７】
【発明が解決しようとする課題】
従来技術の問題の概要
上述した３つの一般的なサーフェイス表現のそれぞれには限界がある。パラメトリックサーフェイスモデルは、内面を表現せず、内部と(vs)外部を検出する容易な手段を提供する。Implicitサーフェイスには、サーフェイスの表現から３Ｄ空間の点への自然な変換がないため、パラメトリックサーフェイスに比べてレンダリングしづらい。サンプリングされたボリュームデータは、アーチファクトを受けやすいため、サーフェイスを精巧に表現するためには高周波数でサンプリングしなければならない。これらの高速サンプリングレートでは。大量のメモリ容量および長時間のレンダリング時間を要する。
【００２８】
距離マップは、サンプリングされたボリュームにおけるアーチファクトのエイリアシングを低減し得るが、距離マップは、均一グリッド上でサンプリングされるため、メモリ要件と、表現可能な最も微細なディテールとの相殺が依然として必要である。さらに、距離マップのボリュームレンダリングは、遅く、リアルタイムの対話性を制限する。レンダリングレートを向上し、オブジェクト内面および外面に必要な記憶容量を減少するために、三色オクトリを距離マップとともに使用してもよい。
【００２９】
その解像度を局部サーフェイスディテールに合わせることが可能な境界リーフノードを許容することにより、さらに記憶容量を減少することは望ましい。たとえば、オブジェクト全体のサーフェイスを過度に高解像度で表現する必要なく、大きな比較的平滑なオブジェクトの精密な局面を表現することが可能であれば望ましい。したがって、境界リーフノードの解像度をサーフェイスの局部ディテールに適合するように、ディテール指向のサンプリングされた距離フィールドを表現する必要がある。
【００３０】
上述したように、ボリューメトリック表現は、グラフィカルオブジェクトを編集および彫塑するのによく適している。しかしながら、既存の密度マップ方法は、エッジおよび隅の過度な平滑化、さらにデータ記憶およびレンダリング要件から、問題がある。さらに、サンプリングされたデータの解像度は予め定められているため、編集中に達成可能なディテールは編集開始以前に制限される。
【００３１】
このため、グラフィカルオブジェクトを彫塑するディテール指向型ボリューム表現の必要がある。該表現は、編集中に先鋭の隅を形成または除去しても表現を解像度要件に局部的に適応することができるように柔軟性がなくてはならない。
オブジェクト表現と同様に、上記構成により表現されたオブジェクトを編集し、これと対話し、さらにレンダリングする技法が要求される。さらに、新たな表現と標準的な表現とを相互に変換する方法が要求される。
【００３２】
【課題を解決するための手段】
モデルとして表現されるオブジェクトを彫塑する方法が提供される。階層距離フィールドは、生成パラメータにしたがって該モデルから生成される。前記階層距離フィールドは、編集パラメータにしたがって編集され、階層距離フィールドは、編集中にレンダリングされる。
【００３３】
前記階層距離フィールドを生成するために、オブジェクト距離フィールドは、オブジェクト文字枠で囲まれる。囲まれた該オブジェクト距離フィールドは、複数のセルに分割される。各セルは、前記オブジェクト距離フィールドのディテールと対応するサイズとオブジェクト文字枠に対する位置を有する。
【００３４】
囲まれたオブジェクト距離フィールドの１組の値は、セルごとにサンプリングされる。前記セルにより囲まれた距離フィールドの部分を再構築する方法は、セルごとに特定される。該サイズ、位置、上記組の値、およびセルごとの再構築方法はメモリに記憶され、前記セルの再構築方法を値に適用することによってオブジェクト距離フィールドの再構築が可能になる。
【００３５】
一実施態様において、本発明は、距離フィールドが任意の精度をもって表されることを可能としながら、メモリーの使用に関して効率的なサンプルされた距離フィールドの適応するデータ構造表現を提供する。
【００３６】
特に、階層データ構造は、彫塑によって導入されるオブジェクトのディテールに動的に適応する。追加のディテールが導入されたセルはさらに分割、ディテールが削除されたセルは結合される。
【００３７】
【発明の実施の形態】
実施の形態１．
階層距離フィールドへの序論
本発明は、ディテール指向型階層距離フィールド（ＨＤＦ）を提供する。以下において、これらの距離フィールドをメモリに記憶するために使用されるデータ構造をまず説明する。次に、データ構造に適用され得る基本動作を記載し、次いでデータ構造を生成し、変換し、レンダリングし、編集する詳細および方法を説明する。最後に、ディテール指向型階層距離フィールドにより彫塑および色管理を行うアプリケーションを具体的に挙げる。
【００３８】
図１は、オブジェクト１０１と関連づけられた距離フィールドの部分を囲む文字枠１００を示す。２Ｄでは、文字枠１００は、原点１０３および軸１０４と１０５により囲まれる何らかの領域座標空間にある。文字枠が囲む空間は、領域座標空間の座標の意味で定義される。文字枠のサイズおよび位置は、その頂点１０９により特定される。
【００３９】
本例において、空間は二次元であり、オブジェクトはグラフィカル要素（三角形）である。本発明がさらに高次元を有する空間および他のタイプのオブジェクトまたはモデル、たとえば、カラーモデルに拡大し得ることが理解されるはずである。オブジェクトサーフェイスは、オブジェクトの境界として定義される。二次元空間では、境界は、オブジェクトの外側エッジである。三次元以上の高次元空間では、境界は、オブジェクトの三次元以上の高次元サーフェイスである。
【００４０】
オブジェクト１０１と関連づけられた印を付した距離フィールドは、空間１０７における任意の点からオブジェクト１０１のサーフェイス上の最も近接する点１０８間での距離１０６を表す。距離フィールドの印は、オブジェクトサーフェイスの内側と外側の点を区別する。たとえば、正の距離は、サーフェイスの内側の点と関連づけられ、負の距離は、サーフェイスの外側の点と関連づけられ、距離ゼロは、サーフェイス上にある点と関連づけられる。
【００４１】
コンピュータ上で距離フィールドを表すために、距離フィールドは、文字枠１００内の代表的な位置においてサンプリングされ得る。１つのアプローチは、距離フィールドを囲む文字枠をセルに分割し、セルの頂点で距離フィールドをサンプリングすることである。文字枠が一定の配列の直線状セルに分割される場合、記憶される距離値は、距離マップを表す。しかしながら、セルは、直方体、球体、または任意の多面体を含むいずれの形状としてもよく、またセルは必ずしも文字枠に完全居住していなくてもよいことが理解されるはずである。
【００４２】
任意の精度で距離フィールドを表現させつつ、メモリ使用の観点から効率的であるサンプリングされた距離フィールドのデータ構造表現を提供することをも特的とする。より詳細には、本明細書中で説明される階層距離フィールド（ＨＤＦ）において、距離フィールドは、所定の精度で再構築できるような十分に高解像度でサンプリングされ、サンプリングは、距離フィールドがよりディテールを有する領域ではより高速のサンプリングレートを使用し、距離フィールドが平滑に変化する領域ではより低速のサンプリングレートを使用するようにディテール指向である。
【００４３】
したがって、図２に示すように、オブジェクト１０１を表す距離フィールドを囲む文字枠１００は、文字枠に対して各種のサイズおよび位置を有するセル２０１〜２０２に分割されている。大きなセル２０１は、距離フィールドディテールが比較的ゆっくりと変換する場合に使用され、小さいセル２０２は、距離フィールドがよりディテールを有し。かつ高解像度が望まれるオブジェクトのコーナー付近で使用される。
【００４４】
距離フィールドを分割するセルは、メモリ記憶およびアクセスをより効率よくするために空間データ構造に編成され得る。たとえば、図３に示すように、セルは、２Ｄ距離フィールドの４ツリー、３Ｄ距離フィールドのオクトリ等のツリー３００としてメモリに配列される。後述するように、被リンクリスト等の他のデータ構造を使用して、ＨＤＦのセルを記憶してもよい。
【００４５】
ツリー３００は、図１の文字枠（セル）１００を表す単一のトップレベルルートセル３０１を含む。ルートノードを除くすべてのセルには親セルがあり、各セルは、葉セル（たとえば、３０３）であるか、あるいは４（または８）つの子セルを有する（たとえば、セル３０２は、親セル３０１と子セル３０４を有する）。図示のように、ある特定のセルは、外部セル３１１、内部セル３１２またはサーフェイスセル３１３としてラベル付けされてもよい。図中、塗りつぶされていないセルは外部セルを示し、黒く塗りつぶされたセルは内部セルを示し、線の入ったセルはサーフェイスセルを示す。外部セルは、図１のオブジェクト１０１の完全に外側にあるセルを表す。内部セルは、全体的にオブジェクトの内側にあるセルを表す。サーフェイスセル３１３は、距離フィールドがゼロの値を含む場合にオブジェクトサーフェイスの一部を含む。
【００４６】
本発明によれば、各セルには、セルと関連づけられたサンプリングされた少数の距離値からセル内の距離フィールドの部分を再構築する方法が関連づけられる。再構築された距離フィールドは、オブジェクトサーフェイス、オブジェクトサーフェイスまでの距離、オブジェクトサーフェイスの方向および距離フィールドと関連づけられたオブジェクトに関する他の特性を再構築するために使用可能である。
【００４７】
図２および図３の図は、２つの重要な分野において従来技術と異なる。
【００４８】
まず、空間データ構造における従来技術は、距離フィールド値を記憶しない。
代わりに、既知の三色ツリーは、どのノードがサーフェイスノードであるか、そしてどのノードが内部または外部ノードであるかを示すにすぎない。サーフェイスは、サーフェイスノードに対応する画素を単に描画することによってレンダリングされる。この結果、画像の解像度は、ツリーが派生されたグリッドの解像度と単に同じである。本発明に係る階層距離フィールドにより、各セル内の連続距離フィールドを、セルの距離値および再構築方法から再構築し得る。サーフェイスをレンダリングまたは処理する際、これは、サーフェイスセルの解像度が比較的低くてもサーフェイスの再構築をより精度よくおこなうことができる。
【００４９】
第二に、各セルのサイズはディテール指向である。すべてのセルの解像度が同一である既知の距離マップと異なり、または、サーフェイスノードがすべてツリーの最高解像度レベルにある既知の三色ツリーと異なり、階層距離フィールドにおけるサーフェイスセルのサイズは、セルが囲む距離フィールドのディテールにより決定される。低解像度（大きい）セルは、平滑面の付近の平滑に変化するフィールドを表すために使用され、高解像度（小さい）セルは、コーナー、高曲率面または高空間周波数成分を有する距離フィールドの部分等のサーフェイスディテールの付近の距離フィールドを表すために使用可能である。子の本発明音口調は、従来の距離マップに亘ってメモり記憶およびアクセス要件を大幅に低減する。
【００５０】
階層距離フィールドデータ構造
図４は、階層距離フィールド（ＨＤＦ）４００を示す。ＨＤＦ４００は、ＨＤＦヘッダ５００とセルデータ６００を含む。上述したように、セルは、ＨＤＦのドメインの境界を画定された連結領域である。一例として、一定の直交グリッドは、ＨＤＦのドメインを、各セルが距離フィールドのディテールに対応するサイズと文字枠に対する位置を有する１組の矩形セルに分割し得る。
【００５１】
ＨＤＦヘッダ
図５に示すように、ＨＤＦヘッダ５００は、ＨＤＦの文字枠１００を囲む文字枠仕様５１０と、距離メトリック識別子５２０と、再構築方法識別子５３０と、セル形状識別子５４０と、空間編成情報５５０と、セルデータ６００へのポインタ５６０と、を含むことができる。
【００５２】
距離メトリック識別子５２０により特定される距離メトリックは、以下５２１、すなわち、ユークリッド距離、平方ユークリッド、マンハッタン距離、チェスボード距離または上記の距離フィールドについて上述された特性を有する任意の単一値Ｎ次関数、の１つとし得る。
【００５３】
再構築方法識別子５３０により特定される再構築方法は、以下５３１、すなわち、一次、双一次、三線、二次、四次、八次(triquadratic)、三次、二立方(bicubic)、三立方(tricubic)、またはサンプリングされた距離フィールドからサンプル値の重み付け和等の任意の再構築フィルタ、の１つとし得る。
【００５４】
セル形状識別子５４０により特定されるセル形状は、以下５４１、すなわち、可能な形状をほんのいくつか挙げると、Ｎ次直方体、四面体、六面体、Ｎ次多面体、または球体、の１つとし得る。
【００５５】
空間変性情報５５０は、ＨＤＦを表すために使用される空間分割、分割を表すために使用される階層構造およびＨＤＦの位置を画定する。空間変性の例５５１として、スパース固定グリッド４ツリーまたはオクトリ、スパース固定グリッドウェーブレット構造４ツリーまたはオクトリ、被リンクセルリストまたは連続セルリストがある。
【００５６】
ＨＤＦセルデータ５６０へのポインタは、スパース固定グリッドツリー３００のルートセル３０１へのポインタとし得る。各種フィールドの好ましい形式には、アスタリスク「＊」のマークをつけた。
【００５７】
ツリーセルデータ
図６に示すように、セルデータ６００は、セルと関連づけられたＭ個のサンプル点Ｐ１，Ｐ２．．．ＰＭのサンプリングされた値６０１〜６０６を含み得る。各サンプル点のサンプル値は、距離フィールドベクトル６１０、外観パラメータ６２０、計算パラメータ６３０等の属性を含み得る。さらに、セルデータ６００は、セルの子セルへのポインタ、セルの親セルへのポインタ等のツリー３００のポインタ６４０を含み得る。他のセルデータとしては、セルタイプ識別子６５０、階層におけるセルのレベル、セルのサーフェイス表現誤差等のアプリケーション特化セルデータ６６１へのポインタ６６０が挙げられる。
【００５８】
距離フィールドベクトル６１０は、距離フィールドの値、距離フィールドの勾配および距離フィールドの他の一部導関数６１１を含み得る。外観パラメータ６２０は、所与のサンプル点における色、輝度、透明度、テクスチャ座標等の値６２１を含み得る。計算パラメータ６３０は、質量、位置、方位、角速度、質量、弾性またはヤング率のような物理的特性等物理的モデリング中に使用される値６３１を含み得る。物理的モデリングは、剛体力学および動的変形を含み得る。
【００５９】
セルタイプ識別子６５０により特定されるセルタイプは、以下６５１、すなわち、内部（全体的にオブジェクト１０１のサーフェイスの内部にあるセル）、外部（全体的にオブジェクト１０１のサーフェイスの外部にあるセル）およびサーフェイス（オブジェクト１０１のサーフェイスにより交差されるセル）、の１つとし得る。
【００６０】
ウェーブレットツリー
ウェーブレットスパース固定グリッドツリーは、ＨＤＦの位置を囲む文字枠１００と、ルートノードへのポインタと、ウェーブレット基識別子と、を含み得る。
ウェーブレット基識別子により特定されるウェーブレット基は、以下、すなわち、Haar基、Daubechies基または他のいずれの任意のウェーブレット基関数、の１つとし得る。このタイプのツリーのセルベースは、距離フィールドベクトル６１０がウェーブレット距離ディテール係数で表される以外は図６に示すものと同一である。
【００６１】
被リンクリスト
あるいは、ＨＤＦデータ構造は、被リンクリストとして編成され得る。この場合、該構造は、ＨＤＦの位置を囲む文字枠１００と、被リンクリストへのポインタと、を含む。また、この表現では、セルデータ６００のポインタ６４０は、リストの次のセルとリストの前のセルを含み得る。
【００６２】
データ構造拡張
好ましいデータ構造への拡張として、ＨＤＦは、再構築方法識別子５３０を格納し得る。該識別子は、セルごとに特定され得る。セルが再構築方法識別子も特定する場合、セルの方法は、ＨＤＦヘッダ５００において特定される方法５３０に優先する。このセルごとの再構築方法識別子は、そのセル内の距離フィールドにより表されるサーフェイスディテールに特に当てはまる再構築方法を特定し得る。たとえば、サーフェイス近傍で使用される再構築方法は、かなり歪曲されたサーフェイスまたはコーナーの近くで使用される方法と異なる。再構築方法は、先鋭なコーナー、丸みを帯びたコーナーまたはスパイク等のセル内の特徴をサーフェイスに形成する、あるいは、サーフェイス上の隆起、亀裂、溝、リッジ等の特定の外観を生成するために特殊化される。
【００６３】
メモリレイアウト
図７は、文字枠１００内のＨＤＦの空間区分とメモリに記憶されたデータ構造７１０の間の関係を示す。ＨＤＦは、頂点ａ，ｂ，ｃおよびｄを有するセル７００を含む。さらに、セルは、ディテール指向の子セルｅ，ｆ，ｇおよびｈに分割される。データ構造７１０は、セルタイプ識別子７１１と、サンプル点ａ，ｂ，ｃおよびｄにおけるサンプリングされた距離値７１２と、子セルｅ，ｆ，ｇおよびｈへのポインタ７１３を含む。
【００６４】
図８は、ルートセル３０１およびそのセルデータ６００を有する４ツリー形式のＨＤＦの可能なメモリレイアウト８００と、それぞれセルデータを有する子セルを示す。８０１で表されるボックスは、メモリアドレスを表す。図８において、サブツリー８０３の黒く塗りつぶされたセル８０２は、メモリセルデータ構造と図３のＨＤＦの関係を示す。
【００６５】
図９は、被リンクリスト形式９１０でのＨＤＦの可能なメモリレイアウト９００を示す。９０１で表されるボックスは、メモリアドレスを表す。
【００６６】
基本的方法
本項および図１０は、本発明に係る階層距離フィールド上で実行され得る基本的方法を説明する。以下の表記を使用する。各方法について、太字の語は、方法１０１０の名称であり、方法の主題を括弧１０２０で示し、本方法により戻されるデータタイプが１０３０である。「＊」で表す方法は、列挙された変数へのポインタである。データタイプには以下がある。
Ｐｏｉｎｔ          −領域座標系における（たとえば、ｘ，ｙ，ｚ）位置、
Ｖｅｃｔｏｒ        −（たとえば、３Ｄ）ベクトル、
Ｂｏｏｌｅａｎ      −ＴＲＵＥまたはＦＡＬＳＥ値、
ＨＤＦ              −階層距離フィールドデータ構造、そして
Ｃｅｌｌ            −上述したようなＨＤＦデータ構造のセル。
Ｆｌｏａｔ          −浮動小数点値、
Ｉｎｔｅｇｅｒ      −整数値、
ＢｉｔＶｅｃｔｏｒ  −１ビットｏｎ／ｏｆｆ状態変数のベクトル、
Ｍａｔｒｉｘ        −浮動小数点値の（たとえば、４×４）マトリクス、
ＯｂｊＤｉｓｔＡｎｄＰａｒａｍＦｕｎｃｔｉｏｎ
−オブジェクトサーフェイスまでの最短距離、そのオブジェクトの外観および計算パラメータを主点で算出する関数。
【００６７】
クエリおよびＨＤＦにおける点の配置方法（１００１）
ＰｏｉｎｔＩｎＨＤＦ
点ｐがＨＤＦの文字枠にあるとき、ブーリアンＴＲＵＥを、そうでなければＦＡＬＳＥを戻す。
【００６８】
ＰｏｉｎｔＩｎＨＤＦＣｅｌｌ
ＨＤＦ階層からセルの暗示的空間範囲、あるいは、ＨＤＦ階層から計算された空間範囲を使用して、ルートセルからｐを含む葉セルにＨＤＦツリーをトラバースし、ｐを含むＨＤＦ葉セルを戻す。
【００６９】
ＰｏｉｎｔＩｎＨＤＦＣｅｌｌＡｔＳｏｍｅＦｉｘｅｄＬｅｖｅｌ
所与のレベルであって、セルが子を有しない場合に低解像度レベルであるｐを含むＨＤＦセルを戻す。ツリーをルートセルからｐを含む葉セルにトラバースし、所与のレベルに対するセルレベルをチェックする。葉セルの最初の直面したものとセルを所与のレベルで戻す。
【００７０】
ＰｏｉｎｔＩｎＨＤＦＣｅｌｌＡｔＦｉｘｅｄＥｒｒｏｒＴｏｌｅｒａｎｃｅそのサーフェイス表現６６１が所与の許容誤差より小さいｐを含むＨＤＦセルを戻す。ツリーをルートセルからｐを含む葉セルにトラバースし、所与の許容誤差に対するセルレベルをチェックする。そのサーフェイス表現誤差が所与の許容誤差より小さい第１のセルを戻す。
【００７１】
ＨＤＦセルのコンテントを変更する方法
ＨＤＦのセルのコンテントを変更するために、上述のクエリ方法で点ｐを含むセルを決定した後、図５および図６に示すセルの要素の任意のものに新たなコンテントを直接割り当てることができる。
【００７２】
距離およびパラメータを再構築して補間する方法（１００２）
ＤｉｓｔａｎｃｅＴｏＳｕｒｆａｃｅＩｎＳｕｒｆａｃｅＣｅｌｌ
ＨＤＦまたはセルの再構築方法を使用して、所与のサーフェイスセルにおける点ｐで距離フィールド値を計算する。
【００７３】
ＤｉｓｔａｎｃｅＴｏＳｕｒｆａｃｅＩｎＮｏｎＳｕｒｆａｃｅＣｅｌｌ
所与の許容誤差に対して、非サーフェイスセルにおけるサーフェイス表現誤差をチェックする。サーフェイス表現誤差が所与の許容誤差より小さい場合、ＤｉｓｔａｎｃｅＴｏＳｕｒｆａｃｅＩｎＳｕｒｆａｃｅＣｅｌｌを使用して距離フィールド値を計算する。サーフェイス表現誤差が所与の許容誤差より大きい場合、ＬｏｃａｔｅＣｌｏｓｅｓｔＰｏｉｎｔ−ＯｎＳｕｒｆａｃｅ方法（以下）を用いて最も近接する点を求め、ｐからその点までの距離を計算する。
【００７４】
ＰｏｉｎｔＩｎｓｉｄｅＯｊｅｃｔ
セルがサーフェイスセルである場合、ＤｉｓｔａｎｃｅＴｏＳｕｒｆａｃｅＩｎＳｕｒｆａｃｅＣｅｌｌを使用してｐにおける距離値を計算する。計算された距離の印を内側／外側テストとして使用する。セルが非サーフェイスセルである場合、セルタイプ（内部または外部）を使用して、ｐがサーフェイスの内側であるか外側であるかを決定する。ｐがオブジェクトの内側であればＴＲＵＥを、そうでなければＦＡＬＳＥを戻す。
【００７５】
ＲｅｃｏｎｓｔｒｕｃｔＡｐｐｅａｒａｎｃｅＰａｒａｍｓ
ＨＤＦまたはセルの再構築方法を使用して、所与のセル内のｐにおいて外観パラメータを再構築する。
【００７６】
ＲｅｃｏｎｓｔｒｕｃｔＣｏｍｐｕｔａｔｉｏｎａｌＰａｒａｍｓ
ＨＤＦまたはセルの再構築方法を使用して、所与のセル内のｐにおいて計算パラメータを再構築する。
【００７７】
ＣｏｍｐｕｔｅＨＤＦＧｒａｄｉｅｎｔ
ＨＤＦまたはセルの再構築方法を使用して、ｐにおいて距離フィールドの勾配を再構築する。たとえば、三線再構築方法および中心差勾配フィルタを使用して、コーナー頂点（０，０，０）と（１，１，１）とで画定される文字枠を有する直方体セル内の（ｘ，ｙ，ｚ）点における勾配（ｄｘ，ｄｙ，ｄｚ）を、８つのコーナー頂点からのサンプリングされた距離値から以下のように計算し得る。
0004563554.tif 000002
式中、ｄijkは、頂点（ｉ，ｊ，ｋ）におけるサンプリングされた距離である。
【００７８】
ＣｏｍｐｕｔｅＨＤＦＰａｒｔｉａｌＤｅｒｉｖａｔｉｖｅｓ
ＨＤＦまたはセルの再構築方法を使用して、ｂｉｔＶｅｃｔｏｒ“ｗｈｉｃｈｐａｒｔｉａｌｓ”により特定された距離フィールドの一部導関数を計算する。「ｗｈｉｃｈｐａｒｔｉａｌ」ＢｉｔＶｅｃｔｏｒにおける各ビットが、関連する位置武道関するを計算するかどうかを特定するように、すべての可能なまたは所望の一部導関数および／または混在型一部導関数計算が列挙される。
【００７９】
オブジェクトサーフェイス上の最も近接する点を求める方法（１００３）
ＬｏｃａｔｅＣｌｏｓｅｓｔＰｏｉｎｔＯｎＳｕｒｆａｃｅ
本方法は、距離フィールドの距離値および勾配を使用して、最も近接のサーフェイス点を探索する。該方法は、最も近接のサーフェイス点の位置を戻す。１つのアプローチにおいて、勾配の方向の点ｐから投光して光線がサーフェイスを交差する位置を決定する。このアプローチは、ｐを含むセルにおけるサーフェイス表現誤差が十分小さい場合によく機能する。子のアプローチが位置許容誤差ｅｐｓＰｏｓｉｔｉｏｎＥｒｒｏｒを満足しない場合、代替のアプローチにより、所与のサーフェイス−光線交差点を制約された最適アルゴリズムにおける開始点として使用する。この最適方法は、ｐと候補位置ｑの間の距離を最小化する。ここで、ｑは、サーフェイス上にあると制約される。制約された最適アプローチの必要をなくすために、ＨＤＦは、サーフェイス表現誤差が、本方法により照会される可能性のあるすべてのセル、たとえば、外部およびサーフェイスセルについて十分に小さくなるように生成される。
【００８０】
ＨＤＦの分割、結合および切り捨て方法（１００４）
ＰｏｉｎｔＢａｓｅｄＰａｒｔｉｔｉｏｎＰｒｅｄｉｃａｔｅ
「ＯｂｊＤｉｓｔＡｎｄＰａｒａｍＦｕｎｃｔｉｏｎ」を入力とすることで、テスト点における距離およびパラメータ値の集合｛Ｄ１｝を計算する。ＨＤＦまたはセルの再構築方法およびセルのデータを使用して、テスト点における距離およびパラメータ値の集合｛Ｄ２｝を計算する。集合｛Ｄ１｝と｛Ｄ２｝の差がすべて許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓより小さい場合、セルを分割する必要がないことを示すＴＲＵＥを戻す。
【００８１】
ＣｅｌｌＢａｓｅｄＰａｒｔｉｔｉｏｎＰｒｅｄｉｃａｔｅ
予測点の集合および有効点の集合をセルのサンプル点から選択する。予測点および有効点の結合体は、セルのサンプル点すべてであり、これらの点の２つの集合の交差はＮＵＬＬ集合となるはずである。セルの再構築方法より低次の再構築方法Ｒを選択する。予測点に適用される方法Ｒを使用して有効点の位置における距離およびパラメータ値の集合｛Ｄ｝を計算する。集合｛Ｄ｝と祐子有頂天における実際の距離およびパラメータ値の差が、すべて許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓより小さい場合、セルを分割する必要がないことを示すＴＲＵＥを戻す。
【００８２】
ＧｒａｄｉｅｎｔＢａｓｅｄＰａｒｔｉｔｉｏｎＰｒｅｄｉｃａｔｅ
「ＯｂｊＤｉｓｔＡｎｄＰａｒａｍＦｕｎｃｔｉｏｎ」を入力とすることで、テスト点における距離フィールドの勾配の集合｛Ｇ１｝を計算する。ＨＤＦまたはセルのＣｏｍｐｕｔｅＨＤＦＧｒａｄｉｅｎｔ方法およびセルのデータを使用して、テスト点における距離フィールドの勾配の集合｛Ｇ２｝を計算する。
【００８３】
集合｛Ｇ１｝と｛Ｇ２｝の差がすべて許容誤差ｅｐｓＧｒａｄｉｅｎｔより小さい場合、セルを分割する必要がないことを示すＴＲＵＥを戻す。
【００８４】
ＦｅａｔｕｒｅＢａｓｅｄＰａｒｔｉｏｎＰｒｅｄｉｃａｔｅ
セルのサイズを計算する。このサイズをそのセル内の距離フィールドの最小特徴のサイズと比較する。セルがセルのサイズより小さい特徴を含まなければ、セルを分割する必要がないことを示すＴＲＵＥを戻す。
【００８５】
ＰａｒｔｉｏｎＣｅｌｌ
親セルの子を生成して初期化し、そのポインタを親セルに追加する・
【００８６】
ＣｏｍｂｉｎｅＰｒｅｄｉｃａｔｅ
親セルのすべての子が内部セルであり、サーフェイス表現誤差および親セルのパラメータ値における予測された再構築誤差が許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓより小さい場合、親セルタイプを内部に設定し、ＴＲＵＥを戻す。そうでなく、親セルのすべての子が外部セルであり、サーフェイス表現誤差および親セルのパラメータ値における予測された再構築誤差が許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓより小さい場合、親セルタイプを外部に設定し、ＴＲＵＥを戻す。そうでなく、親セルの子の一部が内部であり、一部が外部であり、サーフェイス表現誤差および親セルのパラメータ値における予測された再構築誤差が許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓより小さい場合、親セルタイプをサーフェイスに設定し、ＴＲＵＥを戻す。
【００８７】
ＣｏｍｂｉｎｅＣｅｌｌ
親セルをその子セルからのいずれの必要なデータにより変形し、親セルの子セルを削除する。
【００８８】
ＢｕｉｌｄＬｅｖｅｌＯｆＤｅｔａｉｌＨＤＦ
所与のＨＤＦの切り捨て部分を戻す。ＨＤＦの切り捨て部分において、所与の許容誤差を満足する誤差セルの下部にあるツリーの枝を切り捨てる。
【００８９】
ＢｕｉｌｄＬｅｖｅｌＯｆＤｅｔａｉｌＳｕｒｆａｃｅＣｅｌｌＬｉｓｔ
所与の許容誤差にしたがって切り捨てられたＨＤＦから葉ノードセルのリストを戻す。
【００９０】
ＢｕｉｌｄＭａｘＬｅｖｅｌＨＤＦ
所与の最大レベルより解像度が大きいツリーの枝を切り捨てた場合、所与のＨＤＦの切り捨て部分を戻す。
【００９１】
ＢｕｉｌｄＭａｘＬｅｖｅｌＳｕｒｆａｃｅＣｅｌｌＬｉｓｔ
所与の最大レベルで切り捨てられたＨＤＦから葉ノードセルのリストを戻す。
【００９２】
ＢｕｉｌｄＶｉｅｗＤｅｐｅｎｄｅｎｔＨＤＦ
本方法は、ビュー依存の許容誤差を満足するために切り捨てられたＨＤＦを戻す。各セルの許容値は異なり、セルがビューワ、遠近法における突出（perspective projection）等からどれほど離れているかによって異なる。ＨＤＦをトップダウンでトラバースしながら、各セルについて、viewingパラメータ、たとえば、ｅｙｅＰｏｓｉｔｉｏｎおよびＯｂｊＴｏＳａｍｐｌｅＳｐａｃｅＴｒａｎｓｆｏｒｍ、およびセルのサーフェイス表現誤差および外観パラメータにおける予測された再構築誤差を使用して最大サンプル空間誤差、最大法線誤差、および外観パラメータの最大誤差を計算する。セルの下部のＨＤＦツリーの枝は、これらの予測された最大誤差が対応する許容誤差、たとえば、ｅｐｓｓａｍｐｌｅＳｐａｃｅＥｒｒｏｒ；ｅｐｓＮｏｒｍａｌおよびｅｐｓＰａｒａｍｓより小さい場合、切り捨てられる。
【００９３】
レンダリング方法（１００５）
ＩｓＳｕｒｆａｃｅＣｅｌｌＢａｃｋＦａｃｉｎｇ
サーフェイスセルのサンプル点におけるサンプリングされた距離値および再構築方法を使用して、サーフェイスセル内のサーフェイスがすべて光線方向から離れるように対向するかを決定する。本方法は、サーフェイスセル内のサーフェイスがすべて光線方向から離れるように対向する場合にＴＲＵＥを戻す。この情報は、後面間引き(culling)に使用され、レンダリング負荷を低減する。たとえば、セルのサーフェイスが、サンプリングされた距離値、再構築方法およびセルのサーフェイス表現誤差の何らかの組み合わせにより決定されるように十分に平面であれば、セルのサーフェイスがバックフェースしているかどうかを、セルの中心の勾配と光線方向のドット積を計算することにより決定し得る。セルのサーフェイスが十分に平面でなければ、セルはさらに分割され、本方法を再帰的に適用し得る。
【００９４】
階層距離フィールドを生成する
次の２つの項では、上述した基本的方法を使用してどのようにＨＤＦを生成し得るかを説明している。ＨＤＦは、トップダウンまたはボトムアップにより生成される。典型的には、ＨＤＦをパラメトリック形式またはオブジェクトのサーフェイスの暗示的表現から生成する場合にトップダウン順が使用され、ＨＤＦを画像または距離マップから生成する場合にボトムアップ順が使用され得る。
【００９５】
トップダウン生成は、以下のように要約される。文字枠１００内の空間は、等サイズのセル、たとえば、２Ｄでは四分円、３Ｄでは八分円等に再帰的に分割される。各レベルの分割において、オブジェクト１０１のサーフェイスがある特定のセルを交差するかを決定するためのテストがなされる。交差しなければ、セルに、外部または内部セルのいずれかとしてラベル付けされる。そうでなければ、所定レベルの解像度に達したか、すなわちセルの再構築方法を使用してセルのサンプル値から再構築されたサーフェイスが実際のサーフェイスの許容誤差内にあるかを決定するために、別のテストがなされる。なければ分割が繰り返され、そうでなければ、セルにサーフェイスセルとしてラベル付けされる。
【００９６】
ボトムアップ生成は、所定レベルの解像度に達するまで文字枠内の空間を等サイズのセルに再帰的に分割することにより開始される。セルは、内部、外部またはサーフェイスセルをほぼラベル付けされる。次に、隣接するセルをグループ化したものは、組み合わされたセルのサーフェイス表現誤差が指定された許容誤差より小さい場合に再帰的に組み合わされる。指定された許容誤差は、アプリケーションによって、さらに組み合わされたセルが外部、内部またはサーフェイスセルであるかによって異なる場合がある。隣接のセルを組み合わせることができない場合、セルはツリーに葉セルとして残留する。
【００９７】
トップダウン
初期化
図１１は、本発明に係るＨＤＦをトップダウン順に生成する方法１１００を示す。方法１１００への入力は、オブジェクト記述またはモデル１１０１である。該モデルは、たとえば、陰関数、ポリゴン、二立方体パッチ等とし得る。ステップ１１１０において、文字枠（Ｂ枠）１１１１が得られる。文字枠は、モデルから計算されてもよく、あるいは。文字枠は、モデルとともに明示的に記憶されてもよい。ステップ１１２０において、距離およびパラメータ関数ＤｉｓｔＡｎｄＰａｒａｍＦｕｎｃ１１２１が得られる。この関数は、オブジェクトまたはモデルのサーフェイスまでの距離、外観パラメータおよび計算パラメータを決定するためにＨＤＦ生成中に使用される。ステップ１１３０は、文字枠ならびに距離およびパラメータ関数を使用してＨＤＦのルートセル１１３１を割り当て、計算する。ルートセル１１３１は、生成方法１１００のメインループ１１２０の入力である。
【００９８】
メインループ
トップダウン生成方法１１００のメインループ１１２０は、後述するいずれの入力セルについての他の方法により呼び出されてもよい。たとえば、編集ツールをＨＤＦに適用する方法が、距離フィールドの一部をツールにより編集した後にメインループ１１２０を呼びだしてもよい。
【００９９】
ステップ１１４０は、作業リストＬ１１４１に入力セル１１３１を追加する。
ステップ１１５０は、現行のセルＣ１１５１を作業リストＬから削除する。リストが空であれば、ステップ１１９０において生成が完了する。ステップ１１６０は、セルＣをＨＤＦ構造に追加する。
【０１００】
ステップ１１７０は、セルＣをテストして、分割すべきかを決定する。一般に、該テストは、セルのサンプル値がオブジェクトサーフェイス、外観または計算パラメータ、すなわちディテールを特定された許容誤差であるｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓ１１７２内で特定する化を決定する分割属性(predicate)に基づく。ＨＤＦを分割し、結合し、切り捨てる基本的方法（１００４）における分割属性のいくつかの例を、「ＰｏｉｎｔＢａｓｅｄＰａｒｔｉｔｉｏｎＰｒｅｄｉｃａｔｅ」「ＣｅｌｌＢａｓｅｄＰａｒｔｉｔｉｏｎＰｒｅｄｉｃａｔｅ」としてとして図１０に示す。これらの分割属性は、予測値を記憶または算出された距離およびパラメータ値とセルのテスト点において比較する。これらの分割属性では、テスト点の仕様、距離許容誤差（ｅｐｓＤｉｓｔ）およびＰａｒａｍ得た許容誤差（ｅｐｓＰａｒａｍ）１１７２が入力として必要である。
【０１０１】
テスト１１７０は、ＴＲＵＥまたはＦＡＬＳＥ１１７１として評価する。テストがＦＡＬＳＥであれば（１１７３）、セルＣ１１５１は、十分に分割され、作業リストＬの次のセルを削除することにより、ステップ１１５０において本プロセスは続行される。そうではなく、テストがＴＲＵＥであれば（１１７４）、セルＣ１１５１はステップ１１８０において分割されて子セル１１８１を生成し、メインループ１１２０によるさらなる処理のために子セルを作業リストＬに追加することにより、ステップ１１４０において本プロセスは続行される
【０１０２】
子の生成方法の利点として、距離情報を必要な場合にのみ算出できるため、メモリおよび計算の節約になり、ＨＤＦは、距離フィールドの最高値がより高速のサンプリングレートを必要とする場合に任意の深さにさらに分割されるため、距離フィールドの表現において任意のディテール指向の精度を提供し得る。
【０１０３】
ボトムアップ
完全居住されたＨＤＦを生成する
図１２は、本発明に係るＨＤＦをボトムアップ順に生成する方法１２００を示す。トップダウン方法と同様に、方法１２００への入力は、オブジェクト記述またはモデル１２０１である。該モデルは、たとえば、陰関数、ポリゴン、二立方体パッチ等とし得る。あるいは、オブジェクト記述を画像としてもよい。ステップ１２１０において、文字枠（Ｂ枠）１２１１が得られる。文字枠は、モデルから計算されてもよく、あるいは。文字枠は、モデルとともに明示的に記憶されてもよい。ステップ１２２０において、距離およびパラメータ関数ＤｉｓｔＡｎｄＰａｒａｍＦｕｎｃ１２２１が得られる。この関数は、オブジェクトまたはモデルのサーフェイスまでの距離、外観パラメータおよび計算パラメータを決定するためにＨＤＦ生成中に使用される。
【０１０４】
ステップ１２３０において、文字枠１２１１ならびに距離およびパラメータ関数を使用して、ユーザ指定の最高解像度レベル１２３１で完全居住されたＨＤＦを構築する。この際、高解像度レベルツリー構造の深さを制限し、入力オブジェクト記述が画像の場合、最高解像度を入力画像の解像度として選択し得る。ＨＤＦに完全居住するため、文字枠は、ＨＤＦの葉セルすえｂてが特定された最高解像度レベルになるまで再帰的に分割される。セルのデータは、図５および図６に示すとおりである。
【０１０５】
完全居住のＨＤＦのセルを組み合わせる
完全居住のＨＤＦを生成した後、ある特定の解像度レベルのセルの子を可能な限り組み合わせることができる。これは、ボトムアップ順で以下のようになされる。
【０１０６】
ステップ１２４０において、現行の解像度レベル１２４１を特定された最高解像度レベル１２３１の１つ下のレベルに設定される。
【０１０７】
ステップ１２５０において、現行レベルのセルＣ１２５１をＨＤＦから選択する。ステップ１２６０は、上述したＣｏｍｂｉｎｅＰｒｅｄｉｃａｔｅ方法をセルＣの子に適用して、子セルを組み合わせることができるかをテストする。子のテストは、ＴＲＵＥ１２６１またはＦＡＬＳＥ１２６２として評価される。
【０１０８】
ＦＡＬＳＥの場合、セルＣの子は組み合わされず、現行レベルの次のセルが選択される。現行レベルで選択されるセルがこれ以上なければ（１２５２）、ステップ１２７０において、現行レベル１２４１を次に低い解像度レベルにデクリメントする。デクリメントされたレベルはテストされ、ステップ１２７５においてツリーのルートレベルであるかを決定する。ＴＲＵＥの場合（１２７６）、ステップ１２９０においてＨＤＦ生成が完了される。そうでなくＦＡＬＳＥの場合（１２７７）、デクリメントされたレベルは現行レベルとなり、子のレベルのセルが処理される（１２７８）。
【０１０９】
ＣＯｍｂｉｎｅＰｒｅｄｉｃａｔｅ方法がステップ１２６９においてＴＲＵＥと評価すると（１２６１）、セルＣの子は、ステップ１２８０においてＣｏｍｂｉｎｅＣｅｌｌ方法を使用してＣに結合される。
【０１１０】
図１３および図１４は、それぞれ結合前後の２ＤオブジェクトのＨＤＦを表すツリーを示す。図３に示すように、塗りつぶされていないセルは外部セルを示し、黒く塗りつぶされているセルは内部セルを示し、線の入ったセルはサーフェイスセルを示す。
【０１１１】
図１５（ａ）、（ｂ）及び（ｃ）は、それぞれ図１３および図１４のＨＤＦを生成するために使用された２Ｄオブジェクト、結合されていないＨＤＦおよび結合されたＨＤＦのオブジェクトの文字枠の対応する分割を示す。ツリー構造の葉セルでもあるサーフェイスセルが従来技術のようにツリーの最高解像度レベルにあるように制限されなず、ここでは葉セルはいずれのレベルにあってもよいことは、図１４および図１５（ｃ）から明らかとなるはずである。
【０１１２】
ボトムアップ方法は、簡単であるが、完全居住の階層距離フィールドを記憶するために十分なメモリが必要であり、完全居住の階層距離フィールドの生成が必要であり、最終的な解像度は、完全居住の階層距離フィールドの予め指定された最高解像度により制限される。
【０１１３】
ＨＤＦを標準サーフェイス表現に変換する
以下の項では、ＨＤｆを表現ジオメトリックサーフェイス表現に変換する４つの方法を説明する。
【０１１４】
ＨＤＦをサーフェイス表現に変換する方法
図１６は、ＨＤＦを所望のサーフェイス表現に変換する方法１６００を示す。所望の表現としては、ポリゴン（三角形）、二立方体パッチ、ポイントサンプル等が挙げられる。変換方法１６００への入力１６０１は、ＨＤＦ、許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓである。
【０１１５】
ステップ１６１０は、所与の許容誤差ｅｓｐＤｉｓｔおよびｅｐｓＰａｒａｍｓと一致するディテールのレベル（ＬＯＤ）を満足するサーフェイスセル１６１１を選択する。たとえば、これらのセルは、そのサーフェイス表現誤差が所与の許容誤差より小さくなるように選択される。ステップ１６２０は、選択されたセルそれぞれにＮ個の「点」でシードを与え、該セルを点で注釈する（１６２１）。シート点は、最終的には所望のサーフェイス表現のパラメトリックパッチの頂点（たとえば、三角形）になる。シード点の数は、画像から突出したときにはセルのサイズから、すなわちセルサイズからユーザにより選択される（１６１５）。シード点の初期位置は一定またはランダムとし得る。
【０１１６】
ステップ１６３０は、シード点の位置および数を変更して、サーフェイスエネルギーの総和を減少する。これは、点が削除可能であり、サーフェイスディテールの高い（たとえば、高曲率）の位置で点が追加可能であり、サーフェイスディテールの低い（たとえば、低曲率）の位置から点が削除可能であることを意味する。サーフェイスエネルギーは、通常、分子間間隔の関数１６３２であり、相互作用点からの寄与は通常制限された力間の作用の領域１６３１に亘ってのみゼロ以外である。この領域は、エネルギー関数が隣接する点にどの程度作用するかを決定する。ステップ１６３０の出力１６３３は、新たなシード点の位置およびステップ１６３０から生じるサーフェイスエネルギーの変化量であるサーフェイスエネルギーデルタで注釈されたサーフェイスセルである。
【０１１７】
ステップ１６４０は、サーフェイスエネルギーデルタがサーフェイスエネルギーの所与のしきい値変化量ｅｐｓＥｎｅｒｇｙ１６４１以下であるかを決定する。ＦＡＬＳＥの場合（１６４２）、ステップ１６３０において続行され、ＴＲＵＥになる（１６４３）まで点を変化する。ＴＲＵＥの場合、出力は、その最終位置１６４４での点で注釈されたサーフェイスセルである。
【０１１８】
ステップ１６５０は、上述した基本的方法を使用して最終的な点位置で外観パラメータおよび距離フィールド勾配を再構築する。サーフェイス点、その位置、外観パラメータおよびサーフェイス法線の集合を仮定して、所望のサーフェイス表現１６９０は、ステップ１６６０において、サーフェイス再構築方法を使用して、属性をつけたサーフェイス点１６５１から生成される。たとえば、所望のサーフェイス表現が三角形であれば、周知のドロネー三角形分割方法１６６１を使用し得る。
【０１１９】
ＨＤＦをパラメトリックパッチに変換する方法
図１７は、ＨＤＦをパラメトリックパッチ１７９０に変換する方法１７００を示す。変換方法１７００への入力１７０１は、ＨＤＦと許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓである。ステップ１７０２は、許容誤差ｅｐｓＰａｔｃｈＩｎｉｔをユーザ選択または所与の距離許容誤差ｅｐｓＤｉｓｔから導出することにより設定する。許容誤差ｅｐｓＰａｔｃｈＩｎｉｔは、一般にｅｐｓＤｉｓｔより制限されないため、ステップ１７１０により選択されるサーフェイスセルは、所与の許容誤差ｅｐｓＤｉｓｔを使用することで選択されたと思われる場合より低解像度レベルとなり得る。許容誤差が満たされない場合サーフェイスパッチを次にさらに分割するため、このより大きなサーフェイスパッチによる初期化は、必ずしも最終的なパラメトリックパッチの精度を制限しないがｅｐｓＤｉｓｔを使用して生成されたと思われるパッチより大きい可能性があり得る。
【０１２０】
ステップ１７１０は、許容誤差ｅｐｓＰａｔｃｈＩｎｉｔおよびｅｐｓＰａｒａｍｓと一致するディテールのレベル（ＬＯＤ）を満たすサーフェイスセル１７１１を選択する。ステップ１７２０は、各サーフェイスセルの中心のパッチコーナー頂点を初期化し、各パッチコーナー頂点にその初期サーフェイスセル１７２１で注釈する。
【０１２１】
ステップ１７３０は、隣接するサーフェイスセルからのパッチ頂点をリンクしてベジェ三角サーフェイスパッチまたは二立方体ベジェパッチ１７３１を形成する。二立方体ベジェパッチが形成される場合、形成されるいずれの三角パッチを退化四辺形(degenerate quadrilaterals)として表すことができる。ステップ１７３０の出力１７３１は、その対応する初期サーフェイスセルにより注釈された頂点からなるパラメトリックパッチの被リンクメッシュおよびパッチ頂点間のリンクの表現である。
【０１２２】
ステップ１７４０は、隣接する頂点部分のエネルギー寄与、ＨＤＦ同一サーフェイスからの頂点の距離および頂点をサーフェイスセルの内側に保持するための制約にしたがってメッシュ１７３１の総エネルギーを最小化することによって緩和されたサーフェイスメッシュ１７４１を生成する。サーフェイスメッシュの各頂点の位置を調整した後、サーフェイスエネルギーの変化をｅｐｓＥｎｅｒｇｙ１７４２と比較する。サーフェイスメッシュエネルギーデルタがｅｐｓＥｎｅｒｇｙより大きい場合、位置調整を繰り返す。そうでなければ、緩和されたサーフェイスメッシュ１７４１を出力する。
【０１２３】
ステップ１７５０は、ＨＤＦの再構築された勾配から頂点法線を計算子、パッチ頂点およびその法線を出力する（１７５１）。
【０１２４】
ステップ１７６０は、パッチ頂点および法線からパラメトリックパッチを生成し、その対応するパッチがＨＤＦにより表されるサーフェイスにどの程度適合するするかによって良好または不良として頂点をタグ付けする。各パッチについて、ステップ１７６０は、まず、パッチ頂点および法線からパッチのパラメトリック等式を生成する（１７５１）。次に、パラメトリック等式とＨＤＦ同一サーフェイスとの適合度の程度を計算する。パラメトリック表現とＨＤｆ同一サーフェイスとの適合度の誤差が所与の許容誤差ｅｐｓＦｉｔを越える場合、パッチは、サーフェイスを良好に表現し、さらに分割される必要がある。この場合、パッチ頂点は不良としてタグ付けされ、そうでなければパッチ頂点は良好としてタグ付けされる。
【０１２５】
ステップ１７７０は、不良としてタグ付けされた頂点によりすべてのサーフェイスセルをさらに分割し、被リンクサーフェイスメッシュ１７３１を更新し（１７７１）、すべてのパッチ頂点が良好としてタグ付けされ最終的なパラメトリックパッチ１７９０が出力されるまで、ステップ１７４０において繰り返す（１７７２）。
【０１２６】
ＳｕｒｆａｃｅＮｅｔを使用してＨＤＦを変換する方法
図１８は、ＳｕｒｆａｃｅＮｅｔを使用してＨＤＦを三角モデルに変換する方法１８００を示す。変換方法１８００への入力１８０１は、ＨＤＦおよび許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓである。
【０１２７】
ステップ１８１０は、諸四許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓと一致するディテールのレベル（ＬＯＤ）を満足するサーフェイスセル１８１１を選択する。ステップ１８２０は、その初期サーフェイスセル１８２１で注釈されたＮ個のＳｕｒｆａｃｅＮｅｔノードで選択された各セルを初期化する。ノードの数Ｎは、画像に突出される婆陰はセルのサイズから、すなわちセルサイズから、ユーザにより選択され得る（１８１５）。
【０１２８】
ステップ１８５０は、隣接するＳｕｒｆａｃｅＮｅｔノード同士のリンクを確立することによりＳｕｒｆａｃｅＮｅｔを打ち立てる（１８３１）。このステップは、三角形の頂点がノードに対応し、かつ三角形の頂点がＳｕｒｆａｃｅＮｅｔのリンクにより決定される場合にはサーフェイス三角リストも生成する。
【０１２９】
ステップ１８４０は、総サーフェイスエネルギーを減少するようノードの位置を変更する。ＳｕｒｆａｃｅＮｅｔエネルギーにおけるエネルギーへの寄与は、隣接ノードの間隔によるエネルギー１８４１、ノードとＨＤＦ同一サーフェイスの距離１８４２、ノードをその初期サーフェイスセルの内側に保持する制約１８４３を含み得る。ＳｕｒｆａｃｅＮｅｔのノードをすべて調整した後のＳｕｒｆａｃｅＮｅｔエネルギーの変更は、「ＳｕｒｆａｃｅＮｅｔエネルギーデルタ」１８４１である。
【０１３０】
ステップ１８５０は、ＳｕｒｆａｃｅＮｅｔエネルギーデルタが所与の許容値ｅｐｓＥｎｅｒｇｙ１８５１より小さいかをテストする。ＦＡＬＳＥの場合（１８５２）、ステップ１８４０において続行され、ＴＲＵＥ（１８５３）になるまでノード位置を変更する。ＴＲＵＥになると（１８５３）、ＳｕｒｆａｃｅＮｅｔノードの最終位置が出力される。
【０１３１】
ステップ１８６０は、上述した基本的方法を使用して外観パラメータおよび距離フィールド勾配を最終ノード位置で再構築して、最終的な三角頂点１８６１を生成する。これらの最終頂点をサーフェイス三角リスト１８３２に適用することによって、最終三角モデル１８９０が生成される。
【０１３２】
プリミティブルックアップテーブルを使用してＨＤＦを変換する方法
図２５は、四辺形プリミティブにより表されるサーフェイスの部分２５００を示す。本図は、隣接するプリミティブの頂点が共有されない場合にパッチされたパラメトリック表現に現れる可能性のあるサーフェイス「ギャップ」または「亀裂」を示す。たとえば、２５０２および２５０３により共有される頂点２５１０が２５０１により共有されないため、プリミティブ２５０１、２５０２および２５０３の間にはギャップ２５０４がある。頂点２５１０を配置するために使用される同一サーフェイスの数値的誤差または曲率により、頂点２５１０は２５０１のエッジ２５２０上にない結果になり、この結果ギャップ２５０４が生じる。
【０１３３】
ＨＤＦをパラメトリック表現に変換する場合、ギャップは、ＨＤＦツリー構造において解像度が異なる隣接のセルから生成されたプリミティブ間には、ギャップが導入され得る。以下の方法では、プリミティブルックアップテーブルを使用してサーフェイスプリミティブを生成する際のギャップ問題に取り組む。
【０１３４】
図２６は、プリミティブルックアップテーブル２６３０を使用してＨＤＦをジオメトリックプリミティブのリスト２６６０に変換する方法２６００を示す。変換方法２６００への入力２６０１は、ＨＤＦおよび許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓである。
【０１３５】
ステップ２６１０は、所与の許容誤差ｅｓｐＤｉｓｔおよびｅｐｓＰａｒａｍｓ２６０１と一致するディテールのレベル（ＬＯＤ）を満足するＨＤＦのサーフェイスセル２６１１を選択する。選択された各セルには、曖昧性−解像度コード（ＡＣＣ）がマークされる。ＡＣＣは、サーフェイスセルの処理中にトポロジカルな曖昧性を解決するために使用される。
【０１３６】
ステップ２６２０は、プリミティブルックアップテーブル２６３０を使用して、各セルの同一サーフェイスおよびそのＡＲＣ２６２１を表すプリミティブのリスト２６３１を生成する。サーフェイスセルおよびその関連のプリミティブ２６４０は、次にステップ２６５０に渡され、ＨＤＦツリーにおいて異なるレベルを有する隣接するセルの頂点を検証してサーフェイスのギャップを検出する。ギャップが存在する場合、追加のプリミティブを生成してギャップを埋める。これらの追加プリミティブをプリミティブのリスト２６４０に追加することで最終的なプリミティブのリスト２６６０を形成する。
【０１３７】
ＨＤＦが大きなセルを有する同一サーフェイスの平坦領域を表し、かつすべてのセルがサーフェイスの最も微細なディテールの解像度であることを必要としないため、本方法は、たとえば三角形のプリミティブ、そして定期的にサンプリングされたボリュームをプリミティブに変換するマーチングキューブ（「“マーチングキューブ：高解像度３Ｄサーフェイス構築アルゴリズム(Marching Cubes: A high Resolution 3D surface Construction Algorithm)", SIGGRAPH 1987会報, Computer Graphics, Vol. 21(4): pp. 163-169, 1987」を参照されたい）等の従来のアルゴリズムの生成を大幅に減らすことができる。
【０１３８】
レンダリング
以下の項では、階層距離フィールドをレンダリングする４つの方法を説明する。
【０１３９】
分析投光法を使用してＨＤＦをレンダリングする
図１９に示すように、ＨＤＦをレンダリングする１つの方法１９００は分析投光法を使用する。ステップ１９１０は、視点１９０１および画像面パラメータ１９０２を入力として光線１９１１を生成する。ステップ１９２０は、ＨＤＦを通して投光する。光線がＨＤＦを通過すると、サーフェイスセルが検出される。ＨＤＦにおいてサーフェイスセルが見られるレベルで、サーフェイスセルのサイズを決定するために文字枠パラメータが使用される。このステップの出力はサーフェイスセル１９２１および関連の光線１９２２である。
【０１４０】
ステップ１９３０は、上述した基本的方法「ＤｉｓｔａｎｃｅＴｏＳｕｒｆａｃｅＩｎＳｕｒｆａｃｅＣｅｌｌ」を使用する等式発生器を使用して光線に沿って距離フィールドを再パラメータ化する。ステップ１９４０は、光線１９２２がサーフェイスセルにおいて距離フィールドの同一サーフェイスを交差する点１９４１を識別する。ステップ１９５０は、上述した基本的方法のいくつかを使用して、交差線１９４１においてセル１９２１の外観パラメータ、たとえば、距離フィールドの勾配を生成する。
【０１４１】
分析陰影関数１９６０は、光線交差点１９４１、これらの交差点の外観パラメータ１９５１およびグラフィックス系により特定される光位置および色１９５２等の写景パラメータからのそれぞれの画素について色および不透明度値１９６１を生成する。値１９６１は、ステップ１９７０において合成され、ディスプレイ１９８０に送信可能な画像１９７１を生成する。
【０１４２】
被サンプリング投光法を使用してＨＤＦをレンダリングする
図２０に示すように、方法２０００は、被サンプリング投光法を使用してＨＤＦをレンダリングする。ステップ２０１０は、視点２００１および画像面パラメータ２００２を入力として光線２０１１を生成する。ステップ２０２０は、ＨＤＦを通して投光する。光線がＨＤＦを通過すると、サーフェイスセルが検出される。ＨＤＦにおいてサーフェイスセルが見られるレベルで、サーフェイスセルのサイズを決定するために文字枠パラメータが使用される。このステップの出力はサーフェイスセル２０２１および関連の光線２０２２である。
【０１４３】
ステップ２０４０は、光線サンプルレート２０４１を入力として光線サンプル点２０４２を生成する。ステップ２０５０は、セル２０２１を入力とし、かつ光線サンプル点を入力として上述した基本的方法を使用して距離および外観パラメータを生成する。
【０１４４】
被サンプリング陰影関数２０６０は、光線サンプル点２０４２、これらのサンプル点の距離および外観パラメータ２０５１およびグラフィックス系により特定される光位置および色２０５２等の写景パラメータからのそれぞれの画素について色および不透明度値２０６１を生成する。値２０６１は、ステップ２０７０において合成され、ディスプレイ２０８０に送信可能な画像２０７１を生成する。
【０１４５】
近似ジオメトリプリミティブを使用してＨＤＦをレンダリングする
図２１に示すように、方法２１００は、ジオメトリプリミティブを使用してＨＤＦをレンダリングする。ステップ２１１０は、カメラパラメータ２１０１、ＨＤＦおよび許容誤差ｅｐｓＤｉｓｔおよびｅｐｓＰａｒａｍｓを入力として取る。
所与の許容誤差とともに任意のビュー依存の許容誤差を満足するサーフェイスセルは、被リンクセルリスト２１１１に記憶される。
【０１４６】
ステップ２１２０は、被リンクセルリンク２１１１のサーフェイスセルをジオメトリプリミティブ２１２２のリストに変換する。プリミティブ２１２２は、たとえば、頂点が色、法線、テクスチャ座標等で注釈された三角形とし得る。変換２１２１の方法は。上述した変換方法の１つとし得る。
【０１４７】
たとえばＯｐｅｎＧＬのレンダリングエンジン２１７０は、レンダリング状態２１６０を入力として表示（２１８０）可能な画像２１７１を生成する。
【０１４８】
階層距離フィールドを編集する
図２３は、ＨＤＦを編集するツールを適用する方法２３００を示す。ステップ２３１０は、オブジェクトＨＤＦ２３１１を入力とし、かつツール２３１２の記述をＨＤＦ、陰関数またはその他の表現のいずれかとして取り、オブジェクトＨＤＦ２３１１およびツール表現２３１２が交差する領域の編集用文字枠２３１３を生成する。ステップ２３２０は、この交差領域に対応するオブジェクトＨＤＦの編集されたサブセットを生成し、２３３０においてオブジェクトＨＤＦ２３２２の現行の対応サブセットを交換する。
【０１４９】
ステップ２３２０は、各セル内のサンプル点の距離値が以下のように計算されるという違いはあるが、上述したトップダウン生成方法１２２０のメインループ等の生成方法を使用し得る。
【０１５０】
生成中に考察される各セルの各サンプル点２３２１は、上述した基本的な方法のいくつかを使用して２３４０および２３５０により照会され、サンプル点２３２１におけるオブジェクト２３１１およびツール２３１２の距離値を求める。次に、ステップ２３６０の編集関数にしたがってオブジェクト距離値ｄO２３４１およびツール距離値ｄT２３５１を組み合わせる。編集関数のいくつかの例として、対応する編集関数ｄnew＝ｍｉｎ（ｄO，−ｄT）として、ツール形状をオブジェクト形状から差し引いたもの、対応する編集関数ｄnew＝ｍｉｎ（ｄO，ｄT）として、オブジェクト形状とツール形状を交差したもの、対応する編集関数ｄnew＝ｍａｘ（ｄO，ｄT）として、ツール形状をオブジェクト形状に追加したもの、がある。サーフェイスの平滑性または外観パラメータに影響を及ぼす他の編集関数も可能である。
【０１５１】
得られた新たな距離値である新たなｄO２３６１は、生成２３２０において使用されるサンプル点の編集されたオブジェクトのサンプル値である。
【０１５２】
階層距離フィールドを彫塑するアプリケーション
図２２に示すように、ＨＤＦは、編集パラメータ２２０１を入力として取り、かつ新たなツール形状を打ち立て（２２１１）、現行のツール形状を変更（２２１２）し、ツール位置および方位を変更（２２１３）し、ツール動作を変更（２２１４）し、ツールをＨＤＦに適用（２２１５）するよう要求を出す編集制御関数２２１０を含む方法２２００にしたがって、ツールを適用することにより編集可能である。
【０１５３】
新たなツール形状を打ち立てる
ステップ２２２０は、要求されたツール形状をツール形状データベース２２２１から読み出す。ツール形状は、たとえば三角形、二立方体パッチ、陰関数等の標準的な一般形式としてデータベースに記憶され得る。ツール形状は、たとえば、ツール２２２２のＨＤＦ表現を生成するパラメータとして、またはツール２２２３の陰関数表現（ＩＦ）を生成するパラメータとして読み出される。
【０１５４】
ステップ２２３０は、ＨＤＦツール２２３１をツールパラメータ２２２２から生成し、ステップ２２４０は、ＨＤＦ陰関数ツール２２４１をツールパラメータ２２２３から生成する。いずれの場合においても、ステップ２２５０は、データベース２２５１にツール形状を記憶する。
【０１５５】
現行のツール形状を変更する
現行のツール形状を変更するために、要求されたツールは、ツールデータベース２２５１からメモリマネージャ２２５０を介して検索され、ステップ２２６０は、ツール状態２２７０の新たな形状タイプおよび表現２２５９を背呈する。ツール状態２２７０として、形状タイプ（たとえば、ＨＤＦタイプかＩＦタイプか）、ツールの表現（たとえば、ツールのＨＤＦかＩＦか）、編集演算、ツール位置および方位等が挙げられる。
【０１５６】
ツール状態を変更する
ツールの位置または方位およびツールの編集演算は、ツール状態２２７０においてそれぞれステップ２２８０および２２８１を介して変更可能である。
【０１５７】
ツールを適用する
ステップ２３００は、所定の状態２２７０を有するツールを適用してＨＤＦを編集する。編集されたＨＤＦは、編集された領域２２９４の文字枠等の所定のレンダリングパラメータにしたがってレンダリング可能である（２２９５）。
【０１５８】
階層距離フィールドの彫塑システム
図２４は、ＨＤＦを彫塑するアプリケーションのシステム２４００を示す。２４１０において、アプリケーションまたは該アプリケーションのユーザは、アプリケーションにより彫塑される初期ＨＤＦを生成するパラメータ２４２１、レンダリングのパラメータ２４２３、編集パラメータ２４２２、編集されたＨＤＦを他の標準形式に変換するパラメータ２４２４等の該システムのパラメータを設定し得る。また、ステップ２４１０は、初期ＨＤＦを生成する、あるいは、レンダリング、編集または標準形式への変換を実行するよう本システムに要求２４１１を開始することも可能である。これらの要求および関連のパラメータは、ディスパッチャ２４２０により生成方法１１００、編集方法２２００、レンダリング方法１９００および変換方法１５００に適宜分配される。これらの方法は、アプリケーションの要求に応じてＨＤＦに作用する。
【０１５９】
色階調を階層距離フィールドで表す
コンピュータグラフィックスの一部は、スキャナ、ディスプレイモニタ、プリンタ等の入出力装置上でカラー再生物に対処する。カラーは、たとえば、色合い等のスポットカラー、レンダリングソフトウェアにより生成される合成カラー、スキャナから写真のディジタル化されたカラーがあり得る。一般に、入出力装置は、すべての可視色のサブセットのみを受けて示すことが可能である。この各色の弓状または円弧状のものを装置の色階調と呼ぶ。ある特定のレンダリングシステムまたは入力システムにより生成された色は、目的の表示装置の階調に属してもよく、またされなくてもよい。色がこの階調に属さない場合、目的の表示装置により正しく再生されず、不本意な結果を引き起こす。
【０１６０】
この問題に対処するために、色をテストして目的のレンダリング装置の階調に属するかどうかを決定することができることが好ましい。また、アプリケーションにより、代替の色を示唆するか、あるいはデバイスカラーの階調に適合するよう階調外の色を自動的に修正することも望ましい。数百万色を含む高解像度ディジタル化画像の場合、テストまたは修正プロセスは非常に高速でなければならない。さらに、色階調に属するように色を変更する場合、元のレンダリングまたは入力システムの元の意図または色の美的感覚と一致するようになされなければならない。
【０１６１】
従来技術では、色空間における離散サンプル点における「内側階調」と「外側階調」とのブーリアンテスト結果を符号化するデバイスカラーの階調のために、三次元ルックアップテーブル（ＬＵＴ）が生成される。ＬＵＴの各次元または軸は、ＲＧＢ、ＨＳＶ等の三刺激色のチャネルを表す。ＬＵＴを使用して所与の色をテストする場合、ＬＵＴのサンプル点に色がなければ、補間体系（たとえば、三線補間）を使用してＬＵＴの隣接するサンプル点からのブーリアンテスト結果が平均され、所与の色のブーリアンテスト結果を予測する。従来技術では、ブーリアンテストの結果が「内側階調」である場合、色がそのまま表示される。結果が「外側階調」である場合、アプリケーションは、手動による補間を行ってレンダリングカラーを調整する必要があるか、あるいは、何らかの代わりのアルゴリズムを用いて所与の色を装置の色階調に含まれる色と交換することをユーザに警告する。
【０１６２】
上記の従来技術の有する問題の１つは、ＬＵＴが、基本的にサンプリングされた二値のボリュームとして色の色階調を表すことである。ここで、サンプル値は、「内側階調」または「外側階調」のいずれかとし得る。上述したように、サンプリングされたボリュームのサンプル値がオブジェクトサーフェイスで急激に変化すると、ボリュームが十分に高速のサンプリングレートでサンプリングされない限り、サーフェイスを厳密に再構築することができない。実際、従来技術のカラーＬＵＴ等サンプリングされた二値のボリュームは、空間周波数成分が無限であり、サーフェイスは決して厳密に再構築されることがない。この結果、ブーリアンＬＵＴテストは、装置の色階調のサーフェイス付近の色には色階調内側と色階調外側の厳正なテストを行うことができず、表示された画像には色の誤りが顕著である。
【０１６３】
Lindbloomに対して１９９８年４月１４日付で発行された米国特許題５，７４０，０７６号「グラフィカルデータ処理システムにおける色階調を記述するシステム(System for describing a color gamut in a graphical data processing system)」において、上述の問題に一部対処している。ここで、非連続関数ではなく連続関数のサンプルが居住した三次元ＬＵＴを使用することで、色階調が分析される。選び出された関数は、サンプルカラーと色階調のサーフェイスの最も近接カラーとの差を符号化したものである。言い換えれば、ＬＵＴは、装置の色階調のサーフェイスの距離マップを記憶する。
【０１６４】
定期的にサンプリングされる距離マップを使用してデバイスカラーの階調の距離フィールドを表すことは、距離マップについて上述した問題にすべて当てはまる。さらに、本システムにおいて、所与の入力カラーを分析して、グラフィカル処理システムにより使用される３つの出力、すなわち、階調面からの補間された距離、「内側階調」と「外側階調」とのブーリアンテスト結果、そして多数の（少なくとも２つ）の距離範囲の１つに距離を分類すること、を生成する。これらの出力のそれぞれは、レンダリングシステムにおいてユーザが行う色の変更をガイドするためにグラフィカルインタフェースにおいて使用される。本システムは、階調の外にある所与の色を階調内の色と交換する方法を含まない。
【０１６５】
図２７は、色の階調２７０１を表すためにどのようにディテール指向型階層距離フィールド２７００を利用し得るかを示す。このアプリケーションでは、セルの値は、階調面の最も近接する点までの印を付けた距離を表す。利点として、階調ＨＤＦは。従来技術に比べてはるかに良好なサーフェイスのディテール２７０２をメモリ費用を低下して表すことができる。上述した基本的な方法の一部を使用して、所与のカラーが色の階調の内側にあるか、あるいは外側にあるかをテストすることが可能であり、所与のカラーが色調の外側にある場合、色の色調面の最も近接する点を見つけ、これをカラー代用アルゴリズムにより使用して所与のカラーを任意に交換することができる。
【０１６６】
階層距離フィールドの利点
本発明に係る階層距離フィールドは、パラメトリックサーフェイスと、陰関数と、サンプリングされたボリュームのそれぞれの利点を組み合わせたものである。
ＨＤＦは、スパースデータ構造を使用してオブジェクト内部を所望のレベルの解像度に表すことができる。ＨＤＦにより、オブジェクトの内側と外側を区別化することが容易である。ＨＤＦは、その空間編成により従来のサーフェイス表現への変換が容易かつ自然である。サンプリングされたボリュームにおけるＨＤＦ表現を使用することで、従来技術の方法の強度ベースの表現に比べて正確かつ厳密なサーフェイス表現をより低速のサンプリングレートで行うことが可能である。
固定された解像度ではなく局所的なサーフェイスディテールに適度にサンプリングすることによって、ＨＤＦは、比較的平坦面付近でも低速のサンプリングレートとなり、この結果、メモリ要件が大幅に低減する。ＨＤＦデータ構造は、メモリ記憶およびアクセスを効率よく提供する。ＨＤＦは、大きなオブジェクトの実践的なサンプリング表現を微細なサーフェイスディテールで可能とする。たとえば、１メートル程度の寸法を有する比較的平坦なオブジェクトは、該オブジェクトがミリメートルの解像度でサーフェイスディテールをいくらか有する場合であってもＨＤＦにより効率よく表される。
【０１６７】
具体的な用語および例を用いることで本発明を説明した。本発明の精神および範囲内で他の様々な適用および変形がなされることが理解されるはずである。したがって、本発明の真の精神および範囲内に包含されるものとしてこのような変更および変形をすべて網羅することを添付の特許請求の範囲の目的とする。
【図面の簡単な説明】
【図１】  本発明に係るディテール指向型階層距離フィールド（ＨＤＦ）により表現されるオブジェクトを囲む文字枠である。
【図２】  本発明に係るＨＤＦの分割セルを囲む文字枠である。
【図３】  好ましい実施形態に係るＨＤＦのツリー図である。
【図４】  ＨＤＦのヘッダおよびセルデータのブロック図である。
【図５】  ＨＤＦヘッダのブロック図である。
【図６】  セルデータのブロック図である。
【図７】  ＨＤＦセルおよびセルデータをリンクするブロック図である。
【図８】  ＨＤＦを格納するメモリのブロック図である。
【図９】  リンクリストとしての、ＨＤＦを格納するメモリのブロック図である。
【図１０】  基本ＨＤＦ操作のブロック図である。
【図１１】  ＨＤＦを形成するトップダウン方法のフロー図である。
【図１２】  ＨＤＦを形成するボトムアップ方法のフロー図である。
【図１３】  完全居住のＨＤＦのグラフである。
【図１４】  組み合わせた後のＨＤＦのグラフである。
【図１５】  組み合わされなかったサーフェイスセルと組み合わされたサーフェイスセルのブロック図である。
【図１６】  シードを与えられた頂点を用いてＨＤＦを変換する方法のフロー図である。
【図１７】  パラメトリックパッチを用いてＨＤＦを変換する方法のフロー図である。
【図１８】  サーフェイス網を用いてＨＤＦを変換する方法のフロー図である。
【図１９】  分析投光法を用いてＨＤＦを変換する方法のフロー図である。
【図２０】  サンプリングされた投光法を用いてＨＤＦを変換する方法のフロー図である。
【図２１】  近似ジオメトリプリミティブを用いてＨＤＦを変換する方法のフロー図である。
【図２２】  ＨＤＦを編集する方法のフロー図である。
【図２３】  編集ツールをＨＤＦを適用する方法のフロー図である。
【図２４】  ＨＤＦを彫塑する方法のフロー図である。
【図２５】  異なる解像度における隣接セルの図である。
【図２６】  プリミティブルックアップを用いてＨＤＦを変換する方法のフロー図である。
【図２７】  色の階調を表すＨＤＦの分割セルを囲む文字枠の図である。
【符号の説明】
１００  文字枠、１０１  オブジェクト、５００  ＨＤＦヘッダ、６００  セルデータ。
【図１】
0004563554.tif 000003
【図２】
0004563554.tif 000004
【図３】
0004563554.tif 000005
【図４】
0004563554.tif 000006
【図５】
0004563554.tif 000007
【図６】
0004563554.tif 000008
【図７】
0004563554.tif 000009
【図８】
0004563554.tif 000010
【図９】
0004563554.tif 000011
【図１０】
0004563554.tif 000012
【図１１】
0004563554.tif 000013
【図１２】
0004563554.tif 000014
【図１３】
0004563554.tif 000015
【図１４】
0004563554.tif 000016
【図１５】
0004563554.tif 000017
【図１６】
0004563554.tif 000018
【図１７】
0004563554.tif 000019
【図１８】
0004563554.tif 000020
【図１９】
0004563554.tif 000021
【図２０】
0004563554.tif 000022
【図２１】
0004563554.tif 000023
【図２２】
0004563554.tif 000024
【図２３】
0004563554.tif 000025
【図２４】
0004563554.tif 000026
【図２５】
0004563554.tif 000027
【図２６】
0004563554.tif 000028
【図２７】
0004563554.tif 000029