(57)【要約】【課題】入力に非多様体的な特徴がある場合、例えば、曲面に境界や分岐がある場合でも、非多様体曲面をパラメトリック表現から陰関数表現へ形状を正しく保持しながら変換することができ、かつ、変形などによって陰関数曲面が更新された場合にも高速に処理でき、形状が複雑な場合でも高速描画ができ、これにより、陰関数場を対話的な速度で表示できる非多様体の陰関数表現方法と陰関数曲面の直接描画方法及びそれらのプログラムを提案する。【解決手段】非多様体の陰関数場をボリュームデータの形で保持し、格子点の間の点における陰関数の値を補間により決定し、かつ補間の対象となる２つの互いに隣接するボクセルでの符号付距離の差が一定幅より大きい場合には、このボクセル間には表面を生成しない。また入力曲面を表裏の判別が出来る曲面パッチに分解し、その表裏にそれぞれ番号を振ってこれらを区別し、最近傍点の面の番号を用いて空間を複数領域に分類する。【選択図】　　　図３
2004133550.tif 000002
【特許請求の範囲】
【請求項１】
非多様体の陰関数場をボリュームデータの形で保持し、格子点の間の点における陰関数の値を補間により決定し、かつ補間の対象となる２つの互いに隣接するボクセルでの符号付距離の差が一定幅より大きい場合には、このボクセル間には表面を生成しない、ことを特徴とする非多様体の陰関数表現方法。
【請求項２】
任意の２つのサンプル点の間隔をｗ、値をそれぞれｕ、ｖ（ｕ≦ｖ）とするとき、
ｕ∈（−∞，ｔ）・・・（２）
ｖ∈［ｔ，∞）・・・（３）
０＜（（−ｕ）−ｔ）＋（ｖ−ｔ）＜αｗ・・・（４）
ただしα（≧１）、
がすべて成立する場合にのみ、これら２つの点の間に表面が存在するものとする、ことを特徴とする請求項１に記載の非多様体の陰関数表現方法。
【請求項３】
ｑ（∈［０，１］）は表面の位置が、ｑ＝０の時に値がｕの格子点上に、ｑ＝１の時に値がｖの格子点上になるように正規化し、表面が存在する位置ｑを、
ｑ＝（ｔ−ｕ）／（ｖ−ｕ）・・・（５）
で求める、ことを特徴とする請求項２に記載の非多様体の陰関数表現方法。
【請求項４】
入力曲面を表裏の判別が出来る曲面パッチに分解し、その表裏にそれぞれ番号を振ってこれらを区別し、最近傍点の面の番号を用いて空間を複数領域に分類する、ことを特徴とする非多様体の陰関数表現方法。
【請求項５】
１．入力の非多様体曲面を分岐線上に沿って分割し、それぞれ分岐を持たない曲面パッチに分解し、
２．得られたパッチに順に番号ｉを振り、パッチの表裏を区別し、表面の番号をｉ＋、裏面の番号をｉ−とし、
３．空間を格子点ｐでサンプリングし、格子点に曲面へのＥｕｃｌｉｄ距離ｄＥ（ｐ）と最近傍点の面の番号ｉ（ｐ）を割り当て、
４．各格子点ｐに対して、６隣接点ｐｎでｉ（ｐｎ）を調べ、ｉ（ｐ）≠ｉ（ｐｎ）　であるような（ｉ（ｐ），ｉ（ｐｎ））の組を列挙し、
５．上で作られた番号の組を別の新たな番号で置換し、ただし置換の結果、最初にｉ＋とｉ−であった番号が同じ番号になる場合にはその組み合わせに対する置換を行わず、これにより、最終的に番号が０から順に並ぶようにし、
６．置換表に従い各格子点ｐでの領域番号ｉ（ｐ）を書き換え、
得られたボリュームの領域番号ｉ（ｐ）と、各ボクセルにおける表面へのＥｕｃｌｉｄ距離ｄＥ（ｐ）から、実数値の陰関数ボリュームを構成する、ことを特徴とする請求項４に記載の非多様体の陰関数表現方法。
【請求項６】
距離を表す実数空間を領域分割し、分割された領域の幅をＤｓとする時、領域ｉに含まれる距離ｄｉｓは
ｄｉｓ∈［Ｄｓｉ，Ｄｓ（ｉ＋１））・・・（６）
であり、各ボクセルの位置ｐで、ｄＥ（ｐ）とｉ（ｐ）から領域付距離ｆｓ（ｐ）を次の式で計算し、
ｆｓ（ｐ）＝ｍｉｎ（ｄＥ，２Ｂ−ε）＋２Ｂｉ（ｐ）・・・（７）
ε（＞０）はｆｓ（ｐ）が式（６）の半開区間に含まれるようにｄＥ（ｐ）を切り捨てるための微小な正の実数に設定する、ことを特徴とする請求項４に記載の非多様体の陰関数表現方法。
【請求項７】
任意の２つのサンプル点の間隔をｗ、値をそれぞれｕ、ｖ（ｕ≦ｖ）とするとき、
ｕ∈（２Ｂｉ，２Ｂ（ｉ＋１））・・・（８）
ｖ∈［２Ｂｊ，２Ｂ（ｊ＋１））・・・（９）
０＜（ｕ−２Ｂｉ）＋（ｖ−２Ｂｊ）＜αｗ・・・（１０）
ただしｉ、ｊ（０≦ｉ≦ｊ≦ｎ−１）、α（≧１）、
がすべて成立する場合にのみ、これら２つの点の間に表面が存在するものとする、ことを特徴とする請求項４に記載の非多様体の陰関数表現方法。
【請求項８】
ｑ（∈［０，１］）は表面の位置が、ｑ＝０の時に値がｕの格子点上に、ｑ＝１の時に値がｖの格子点上になるように正規化し、表面が存在する位置ｑを、
ｑ＝（ｕ−２Ｂｉ）／（（ｕ−２Ｂｉ）＋（ｖ−２Ｂｊ））・・・（１１）
で求める、ことを特徴とする請求項７に記載の非多様体の陰関数表現方法。
【請求項９】
スライス前面のボリュームの値を表すテクスチャＴｆｒｏｎｔとスライス後面のボリュームの値を表すテクスチャＴｂａｃｋを用いてスライス前面とスライス後面で囲まれる領域のボリュームの値を補間して表示する、ことを特徴とする陰関数曲面の直接描画方法。
【請求項１０】
視線とスライス前面及びスライス後面の交点を計算して、スライス前面のテクセル値ｔｆｒｏｎｔとスライス後面のテクセル値ｔｂａｃｋとから、スライス間で視線上にあるボリュームがこの位置で観測される色と透明度に与える影響を計算し、ポリゴン上に表示する、ことを特徴とする請求項９に記載ぼ陰関数曲面の直接描画方法。
【請求項１１】
テクセル値ｔｆｒｏｎｔ、ｔｂａｃｋの組から、観測される色と透明度を計算する処理を前もって行っておき、結果を早見表として２次元テクスチャとしてグラフィクスカード内に保存し、描画時にテクスチャ合成機能を利用して参照する、ことを特徴とする請求項９又は１０に記載ぼ陰関数曲面の直接描画方法。
【請求項１２】
領域付距離場ボリュームで表された陰関数曲面を３Ｄテクスチャとして使える形に変換し、テクセル値ｔｆｒｏｎｔ、ｔｂａｃｋからなる任意の領域付距離の組に対して、それらの間の観測される色と透明度を計算する処理を前もって行って早見表を作成し、これにより描画色を決定する、ことを特徴とする請求項９又は１０に記載ぼ陰関数曲面の直接描画方法。
【請求項１３】
計算機に前記請求項１乃至１３の方法を実行させる、ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、非多様体の陰関数表現方法と陰関数曲面の直接描画方法及びそれらのプログラムに関する。
【０００２】
【従来の技術】
計算機で３次元物体の表面形状を表現する際には、物体の表面の座標値で形状を定義する、パラメトリック表現が広く用いられている。この例として、ＣＡＤ（Ｃｏｍｐｕｔｅｒ−Ａｉｄｅｄ　Ｄｅｓｉｇｎ）で利用される自由曲面表現、仮想現実感モデルや娯楽の分野で利用されるポリゴン表現などが挙げられる。パラメトリック表現はデータ構造が直感的で分かりやすく、比較的少ないデータ量で形状を表現でき、また高速な描画ハードウェアの利用が容易であるという特長がある。
【０００３】
一方、表面形状の変形や集合演算といった処理を行う場合には、陰形式の関数を用いて間接的に曲面を表現する、陰関数表現を用いるほうが便利な場合が多く、モデリングや形状処理、物理シミュレーション等の分野で使われている。この表現形式は、データ構造が単純なため複雑な処理を容易に行うことができ、処理の階層化や並列化に向いているという特長がある。曲面のパラメトリック表現と陰関数表現にはそれぞれ利点と欠点があり、処理に応じて形式を選択できることが望ましく、その際には両者の形式を変換する必要が生じる。
【０００４】
なお、本発明に関連する先行技術文献として、以下のものが挙げられる。
【０００５】
【非特許文献１】
Ｊ．　Ｂｌｏｏｍｅｎｔｈａｌ，　Ｐｏｌｙｇｏｎｉｚａｔｉｏｎ　ｏｆ　ｉｍｐｌｉｃｉｔ　ｓｕｒｆａｃｅｓ，　Ｃｏｍｐｕｔｅｒ　Ａｉｄｅｄ　Ｇｅｏｍｅｔｒｉｃ　Ｄｅｓｉｇｎ，　５：３４１−３５５，１９８８．
【非特許文献２】
Ｊ．　Ｂｌｏｏｍｅｎｔｈａｌ，　Ｉｎｔｒｏｄｕｃｔｉｏｎ　ｔｏ　Ｉｍｐｌｉｃｉｔ　Ｓｕｒｆａｃｅ，　Ｍｏｒｇａｎ　Ｋａｕｆｍａｎｎ　Ｐｕｂｌｉｓｈｅｒｓ，　Ｉｎｃ．，　１９９７．
【非特許文献３】
Ｊ．　Ｂｌｏｏｍｅｎｔｈａｌ　ａｎｄ　Ｋ．　Ｆｅｒｇｕｓｏｎ，　Ｐｏｌｙｇｏｎｉｚａｔｉｏｎ　ｏｆ　ｎｏｎ−ｍａｎｉｆｏｌｄ　ｉｍｐｌｉｃｉｔｓｕｒｆａｃｅｓ，　Ｉｎ　ＳＩＧＧＲＡＰＨ　’９５，　　ｐａｇｅｓ　３０９−３１６，　１９９５．
【非特許文献４】
Ｍ．　Ｂｒａｄｙ，　Ｋ．　Ｊｕｎｇ，　Ｈ．　Ｔ．　Ｎｇｕｙｅｎ　ａｎｄ　Ｔ　Ｎｇｕｙｅｎ，　Ｔｗｏ−ｐｈａｓｅ　ｐｅｒｓｐｅｃｔｉｖｅ　ｒａｙｃａｓｔｉｎｇ　ｆｏｒ　ｉｎｔｅｒａｃｔｉｖｅ　ｖｏｌｕｍｅ　ｎａｖｉｇａｔｉｏｎ，　Ｉｎ　Ｖｉｓｕａｌｉｚａｔｉｏｎ　９７，　ｐａｇｅｓ　２４３−５６，１９９７．
【非特許文献５】
Ｋ．　Ｅｎｇｅｌ，　Ｍ．　Ｋｒａｕｓ　ａｎｄ　Ｔ．　Ｅｒｔｌ，　Ｈｉｇｈ−ｑｕａｌｉｔｙ　ｐｒｅ−ｉｎｔｅｇｒａｔｅｄ　ｖｏｌｕｍｅ　ｒｅｎｄｅｒｉｎｇ　ｕｓｉｎｇ　ｈａｒｄｗａｒｅ−ａｃｃｅｌｅｒａｔｅｄ　ｐｉｘｅｌ　ｓｈａｄｉｎｇ，　Ｉｎ　Ｅｕｒｏｇｒａｐｈｉｃｓ／ＳＩＧＧＲＡＰＨ
Ｗｏｒｋｓｈｏｐ　ｏｎ　Ｇｒａｐｈｉｃｓ　Ｈａｒｄｗａｒｅ　’０１，
ｐａｇｅｓ　９−１６，２００１．
【非特許文献６】
Ｈ．　Ｃ．　Ｈｅｇｅ，　Ｍ．　Ｓｅｅｂａｓ，　Ｄ．　Ｓｔａｌｌｉｎｇ　ａｎｄ　Ｍ．　Ｚｏｃｋｌｅｒ，　Ａ　ｇｅｎｅｒａｌｉｚｅｄ　ｍａｒｃｈｉｎｇ　ｃｕｂｅｓ　ａｌｇｏｒｉｔｈｍ　ｂａｓｅｄ　ｏｎ　ｎｏｎ−ｂｉｎａｒｙ　ｃｌａｓｓｉｆｉｃａｔｉｏｎｓ，　Ｔｅｃｈｎｉｃａｌ　ｒｅｐｏｒｔ，　Ｋｏｎｒａｄ−Ｚｕｓｅ−Ｚｅｎｔｒｕｍ　ｆｕｒ　Ｉｎｆｏｒｍａｔｉｏｎ　ｓｔｅｃｈｎｉｋ（ＺＩＢ），１９９７．
【非特許文献７】
Ｐｈｉｌｉｐｐｅ　Ｌａｃｒｏｕｔｅ　ａｎｄ　Ｍａｒｃ　Ｌｅｖｏｙ，　Ｆａｓｔ　ｖｏｌｕｍｅ　ｒｅｎｄｅｒｉｎｇ　ｕｓｉｎｇ　ａ　ｓｈｅａｒ−ｗａｒｐ　ｆａｃｔｏｒｉｚａｔｉｏｎ　ｏｆ　ｔｈｅ　ｖｉｅｗｉｎｇ　ｔｒａｎｓｆｏｒｍａｔｉｏｎ，　Ｉｎ　ＳＩＧＧＲＡＰＨ　’９４，　ｐａｇｅｓ
４５１−４５８，　１９９４．
【非特許文献８】
Ｗ．　Ｅ．　Ｌｏｒｅｎｓｅｎ　ａｎｄ　Ｈ．　Ｅ．　Ｃｌｉｎｅ，　Ｍａｒｃｈｉｎｇ　ｃｕｂｅｓ：　ａ　ｈｉｇｈ　ｒｅｓｏｌｕｔｉｏｎ　３ｄ　ｓｕｒｆａｃｅ　ｒｅｃｏｎｓｔｒｕｃｔｉｏｎ　ａｌｇｏｒｉｔｈｍ，　Ｉｎ　ＳＩＧＧＲＡＰＨ　’８７，　ｐａｇｅｓ　１６３−１６９，１９８７．
【非特許文献９】
Ｊ．　Ｒｏｓｓｉｇｎａｃ　ａｎｄ　Ｍ．　Ｏ’Ｃｏｎｎｏｒ，　ＳＧＣ：Ａ　ｄｉｍｅｎｓｉｏｎ　ｉｎｄｅｐｅｎｄｅｎｔ　ｍｏｄｅｌ　ｆｏｒ　ｐｏｉｎｔｓｅｔｓ　ｗｉｔｈ　ｉｎｔｅｒｎａｌ　ｓｔｒｕｃｔｕｒｅｓ　ａｎｄ　ｉｎｃｏｍｐｌｅｔｅ　ｂｏｕｎｄａｒｉｅｓ，　Ｉｎ　ＧｅｏｍｅｔｒｉｃＭｏｄｅｌｉｎｇ　ｆｏｒ　Ｐｒｏｄｕｃｔ　Ｅｎｇｉｎｅｅｒｉｎｇ，　ｐａｇｅｓ　１４５−１８０，１９９０．
【非特許文献１０】
Ｈ．　Ｔｕｙ　ａｎｄ　Ｌ．　Ｔｕｙ，　Ｄｉｒｅｃｔ　２ｄ　ｄｉｓｐｌａｙ　ｏｆ　３ｄ　ｏｂｊｅｃｔｓ，　ＩＥＥＥ　Ｍａｇ，　ＣｏｍｐｕｔｅｒＧｒａｐｈｉｃｓ　ａｎｄ　Ａｐｐｌｉｃａｔｉｏｎｓ，４（１０）：２９−３３，１９８４．
【非特許文献１１】
Ａ．　Ｐ．　Ｗｉｔｋｉｎ　ａｎｄ　Ｐ．　Ｓ．　Ｈｅｃｋｂｅｒｔ，　Ｕｓｉｎｇ　ｐａｒｔｉｃｌｅｓ　ｔｏ　ｓａｍｐｌｅ　ａｎｄ　ｃｏｎｔｒｏｌ　ｉｍｐｌｉｃｉｔ　ｓｕｒｆａｃｅｓ，　Ｉｎ　ＳＩＧＧＲＡＰＨ　’９４，　ｐａｇｅｓ　２６９−２７８，１９９４．
【非特許文献１２】
Ｓｈｕｎｔａｒｏ　Ｙａｍａｚａｋｉ，　Ｋｉｗａｍｕ　Ｋａｓｅ　ａｎｄ　Ｋａｔｓｕｓｈｉ　Ｉｋｅｕｃｈｉ，　Ｎｏｎｍａｎｉｆｏｌｄ　ｉｍｐｌｉｃｉｔ　ｓｕｒｆａｃｅｓ　ｂａｓｅｄ　ｏｎ　ｄｉｓｃｏｎｔｉｎｕｏｕｓ　ｉｍｐｌｉｃｉｔｉｚａｔｉｏｎ　ａｎｄ　ｐｏｌｙｇｏｎｉｚａｔｉｏｎ，　Ｉｎ　Ｇｅｏｍｅｔｒｉｃ　Ｍｏｄｅｌｉｎｇ　ａｎｄ　Ｐｒｏｃｅｓｓｉｎｇ，　ｐａｇｅｓ　１３８−１４６．　ＩＥＥＥ，　Ｊｕｌｙ　２００２．
【０００６】
【発明が解決しようとする課題】
陰関数表現をパラメトリック表現に変換する方法に関しては多くの方法が提案されており、特に三角形メッシュへの変換は安定にかつ高速に行うことが可能である。ところが、パラメトリック表現を陰関数表現に変換する方法に関しては必ずしも正しい結果が得られるとは限らない。これは従来の陰関数表現では、関数場の定義に連続な実数値関数を用いているため扱える表面の種類が２−多様体に限られており、入力に非多様体的な特徴がある場合、例えば、曲面に境界がある場合と表面に分岐がある場合には、それらが失われて形状が大きく変わってしまう問題点があった。
【０００７】
一方、陰関数表現はそれ自体が曲面を表すのに十分な情報を持っているが、データとして保持する値が曲面の幾何形状と直接結びついていないため、実際の形状を確認するためには表面を可視化する必要がある。しかし、陰関数曲面を用いて形状設計を行う際には、表面の混合や変形などの処理の過程で逐次更新される変形などの処理によって関数場が変更されるに再メッシュ化を行う必要があり、処理に時間がかかる。また、表面形状が複雑になるほど生成されるポリゴン数が増え、描画速度が遅くなるという問題があった。
【０００８】
本発明は、上述した問題点を解決し要望を満たすために創案されたものである。すなわち本発明の第１の目的は、入力に非多様体的な特徴がある場合、例えば、曲面に境界や分岐がある場合でも、非多様体曲面をパラメトリック表現から陰関数表現へ形状を正しく保持しながら変換する非多様体の陰関数表現方法とそのプログラムを提案することにある。
また本発明の第２の目的は、変形などによって陰関数曲面が更新された場合にも高速に処理でき、形状が複雑な場合でも高速描画ができ、これにより、陰関数場を対話的な速度で表示できる陰関数曲面の直接描画方法とそのプログラムを提案することにある。
【０００９】
【課題を解決するための手段】
本発明によれば、非多様体の陰関数場をボリュームデータの形で保持し、格子点の間の点における陰関数の値を補間により決定し、かつ補間の対象となる２つの互いに隣接するボクセルでの符号付距離の差が一定幅より大きい場合には、このボクセル間には表面を生成しない、ことを特徴とする非多様体の陰関数表現方法が提案される。
この方法により、曲面に境界がある場合に、補間によって不要な面が生成されるのを防止することができる。
【００１０】
本発明の好ましい実施形態によれば、任意の２つのサンプル点の間隔をｗ、値をそれぞれｕ、ｖ（ｕ≦ｖ）とするとき、
ｕ∈（−∞，ｔ）・・・（２）
ｖ∈［ｔ，∞）・・・（３）
０＜（（−ｕ）−ｔ）＋（ｖ−ｔ）＜αｗ・・・（４）
ただしα（≧１）、
がすべて成立する場合にのみ、これら２つの点の間に表面が存在するものとする。
この方法により、補間の対象となる２つの互いに隣接するボクセルでの符号付距離の差が一定幅より大きい場合には、このボクセル間に表面を生成しないようにすることができる。
【００１１】
また、ｑ（∈［０，１］）は表面の位置が、ｑ＝０の時に値がｕの格子点上に、ｑ＝１の時に値がｖの格子点上になるように正規化し、表面が存在する位置ｑを、
ｑ＝（ｔ−ｕ）／（ｖ−ｕ）・・・（５）
で求める。
この方法により、曲面に境界がある場合でも、表面の位置を誤りなく求めることができる。
【００１２】
また本発明によれば、入力曲面を表裏の判別が出来る曲面パッチに分解し、その表裏にそれぞれ番号を振ってこれらを区別し、最近傍点の面の番号を用いて空間を複数領域に分類する、ことを特徴とする非多様体の陰関数表現方法が提供される。
この方法により、表面に分岐がある場合でも、分岐部分において接続している表面の一部が除去されてしまうのを防ぐことができる。
【００１３】
本発明の好ましい実施形態によれば、１．入力の非多様体曲面を分岐線上に沿って分割し、それぞれ分岐を持たない曲面パッチに分解し、
２．得られたパッチに順に番号ｉを振り、パッチの表裏を区別し、表面の番号をｉ＋、裏面の番号をｉ−とし、
３．空間を格子点ｐでサンプリングし、格子点に曲面へのＥｕｃｌｉｄ距離ｄＥ（ｐ）と最近傍点の面の番号ｉ（ｐ）を割り当て、
４．各格子点ｐに対して、６隣接点ｐｎでｉ（ｐｎ）を調べ、ｉ（ｐ）≠ｉ（ｐｎ）　であるような（ｉ（ｐ），ｉ（ｐｎ））の組を列挙し、
５．上で作られた番号の組を別の新たな番号で置換し、ただし置換の結果、最初にｉ＋とｉ−であった番号が同じ番号になる場合にはその組み合わせに対する置換を行わず、これにより、最終的に番号が０から順に並ぶようにし、
６．置換表に従い各格子点ｐでの領域番号ｉ（ｐ）を書き換え、
得られたボリュームの領域番号ｉ（ｐ）と、各ボクセルにおける表面へのＥｕｃｌｉｄ距離ｄＥ（ｐ）から、実数値の陰関数ボリュームを構成する。
【００１４】
この方法により、最近傍点の面の番号を用いて空間を複数領域に分類し、分岐のある曲面を陰関数表現することが可能になる。
【００１５】
また、距離を表す実数空間を領域分割し、分割された領域の幅をＤｓとする時、領域ｉに含まれる距離ｄｉｓは
ｄｉｓ∈［Ｄｓｉ，Ｄｓ（ｉ＋１））・・・（６）
であり、各ボクセルの位置ｐで、ｄＥ（ｐ）とｉ（ｐ）から領域付距離ｆｓ（ｐ）を次の式で計算し、
ｆｓ（ｐ）＝ｍｉｎ（ｄＥ、２Ｂ−ε）＋２Ｂｉ（ｐ）・・・（７）
ε（＞０）はｆｓ（ｐ）が式（６）の半開区間に含まれるようにｄＥ（ｐ）を切り捨てるための微小な正の実数に設定する。
この方法により、曲面に分岐がある場合でも、表面の位置を誤りなく求めることができる。
【００１６】
また、任意の２つのサンプル点の間隔をｗ、値をそれぞれｕ、ｖ（ｕ≦ｖ）とするとき、
ｕ∈（２Ｂｉ，２Ｂ（ｉ＋１））・・・（８）
ｖ∈［２Ｂｊ，２Ｂ（ｊ＋１））・・・（９）
０＜（ｕ−２Ｂｉ）＋（ｖ−２Ｂｊ）＜αｗ・・・（１０）
ただしｉ、ｊ（０≦ｉ≦ｊ≦ｎ−１）、α（≧１）、
がすべて成立する場合にのみ、これら２つの点の間に表面が存在するものとする。
この方法により、補間の対象となる２つの互いに隣接するボクセルでの領域付距離関数の差が一定幅より大きい場合には、このボクセル間に表面を生成しないようにすることができる。
【００１７】
また、ｑ（∈［０，１］）は表面の位置が、ｑ＝０の時に値がｕの格子点上に、ｑ＝１の時に値がｖの格子点上になるように正規化し、表面が存在する位置ｑを、
ｑ＝（ｕ−２Ｂｉ）／（（ｕ−２Ｂｉ）＋（ｖ−２Ｂｊ））・・・（１１）
で求める。
この方法により、曲面に境界がある場合でも、表面の位置を誤りなく求めることができる。
【００１８】
さらに本発明によれば、スライス前面のボリュームの値を表すテクスチャＴｆｒｏｎｔとスライス後面のボリュームの値を表すテクスチャＴｂａｃｋを用いてスライス前面とスライス後面で囲まれる領域のボリュームの値を補間して表示する、ことを特徴とする陰関数曲面の直接描画方法が提供される。
この方法により、スライスが存在しない領域も含めてボリューム全体の影響を描画結果に反映させることができ、モアレを除去することができる。
【００１９】
また、本発明の好ましい実施形態によれば、視線とスライス前面及びスライス後面の交点を計算して、スライス前面のテクセル値ｔｆｒｏｎｔとスライス後面のテクセル値ｔｂａｃｋとから、スライス間で視線上にあるボリュームがこの位置で観測される色と透明度に与える影響を計算し、ポリゴン上に表示する。
この方法により、少ない枚数のスライスを用いた描画でも正しい結果が得られる。
【００２０】
また、テクセル値ｔｆｒｏｎｔ、ｔｂａｃｋの組から、観測される色と透明度を計算する処理を前もって行っておき、結果を早見表として２次元テクスチャとしてグラフィクスカード内に保存し、描画時にテクスチャ合成機能を利用して参照する。
この方法により、計算量を減らし、高速に描画処理できる。
【００２１】
また、領域付距離場ボリュームで表された陰関数曲面を３Ｄテクスチャとして使える形に変換し、テクセル値ｔｆｒｏｎｔ、ｔｂａｃｋからなる任意の領域付距離の組に対して、それらの間の観測される色と透明度を計算する処理を前もって行って早見表を作成し、これにより描画色を決定する。
この方法により、正しい表示結果を、高速に描画処理できる。
【００２２】
更に本発明によれば、計算機に前記請求項１乃至１３の方法を実行させる、ことを特徴とするコンピュータプログラムが提供される。
このコンピュータプログラムを用いることにより、変形などによって陰関数曲面が更新された場合にも高速に処理でき、形状が複雑な場合でも高速描画ができ、これにより、陰関数場を対話的な速度で表示できる。
【００２３】
【発明の実施の形態】
以下、本発明の好ましい実施形態を図面を参照して説明する。
１．　本発明は、領域付距離関数を用いて陰関数ボリュームを生成し、この値を不連続性関数を用いて補間するように拡張することで、非多様体のパラメトリック曲面を陰関数表現する方法を提案する。
また、本発明の方法で定義された陰関数場に対してボリュームレンダリングの方法を応用し、格子点サンプリングされた陰関数場から曲面を直接描画する方法を提案する。この方法を用いると、多様体または非多様体の陰関数曲面を、表面形状の複雑さに依存することなく高速に描画できる。
また具体的なアルゴリズムとして、三角形メッシュを入力とし、陰関数場を格子点サンプリングして得られるボリュームデータを出力する方法について説明する。
この方法はグラフィクスカードのプログラム可能なテクスチャ合成機能を利用して効率的に実装することができ、　対話的な速度で高画質の曲面を表示できる。またその速度は表面の形状によらず一定であり、多様体、及び非多様体曲面を扱うことが出来る。
【００２４】
まとめると、本発明の主な特徴は次の２点である。
（１）パラメトリック曲面を陰関数表現に変換する方法を提案する。特に、任意の三角形メッシュからボリューム化された陰関数場を生成し、そこから陰関数曲面を抽出するアルゴリズムを提案する。
（２）多様体、非多様体の陰関数曲面を、ボリュームレンダリングの方法を応用して描画する方法を提案する。
【００２５】
２．関連研究
２．１　非多様体曲面の陰関数表現
陰関数表現はもともと多様体曲面のみを扱うことを主眼としているが、Ｒｏｓｓｉｇｎａｃらはベクトル値関数を用いることで非多様体曲面を陰関数表現することが可能であることを指摘した［非特許文献９］。これ基づきＢｌｏｏｍｅｎｔｈａｌらは曲面を陰関数曲面として表現する方法を提案した［非特許文献３］。
しかし、一般にパラメトリック表現で与えられる曲面からこの方法が扱える形式の陰関数場を構成する方法は明らかではない。本発明では非多様体曲面の定義を明確にし、この定義に含まれる曲面が十分に実用的であることを述べた後、この定義に含まれる任意のパラメトリック曲面を陰関数表現に変換する方法を提案する。
【００２６】
２．２　陰関数曲面の可視化
陰関数曲面は光線追跡法（ｒａｙ　ｔｒａｃｉｎｇ）による可視化と相性が良く、この方法を用いると高い画質で表面を可視化することが可能である［非特許文献２］。しかしこの方法は、処理に時間がかかるため対話的な速度で描画することは難しい。
表示を簡略化することにより描画速度を大幅に向上する方法として、Ｗｉｔｋｉｎらはｐａｒｔｉｃｌｅ　ｓｙｓｔｅｍを用いた表示方法を提案している［非特許文献１１］。しかし、この方法は陰関数が曲面上で微分可能であること仮定しているため、非多様体へ拡張された陰関数曲面に対しては適用できない。
陰関数曲面を三角形メッシュに変換することにより、描画処理を高速化することが可能である。Ｂｌｏｏｍｅｎｔｈａｌらは曲面を表す陰関数場を四面体分割し、各四面体ごとに三角形メッシュ化する方法を提案しており［非特許文献１］、この方法は一部の非多様体形状に対して拡張されている［非特許文献３］。
一方Ｌｏｒｅｎｓｅｎらは陰関数場の六面体分割を用いて陰関数場を三角形メッシュ化する方法を提案しており［非特許文献８］、後に非多様体形状に拡張されている［非特許文献６］、［非特許文献１２］。
これらの方法では、描画処理の前に関数場からメッシュを生成する必要があるため、変形などの処理によって関数場が変更されるに再メッシュ化を行う必要があり、処理に時間がかかる。また、表面形状が複雑になるほど生成されるポリゴン数が増え、描画速度が遅くなるという問題がある。
【００２７】
本発明の方法では陰関数場から直接、表面を可視化するため、変形などによって陰関数場が更新された場合にも高速に処理できる。また形状の複雑度に無関係に描画することが出来るため、描画速度は一定である。
【００２８】
３．非多様体曲面の陰関数表現
３．１　陰関数曲面
３次元空間内の曲面Ｓ⊂Ｒ３に対して、実数ｔと実数値関数ｆ（ｐ）の組で次を満たすものを考える。
ｐ∈Ｓ　　⇔　　ｆ（ｐ）＝ｔ・・・（１）
ただしｐ∈Ｒ３は３次元空間内の点である。ｆはＳへの距離に応じた値を返す関数と考えることができ、Ｓはｆの値がｔの等値面である。曲面Ｓの式（１）右辺の形式による定義を「陰関数表現」と呼び、このときＳを「陰関数曲面」と呼ぶ。
【００２９】
実数値関数ｆで定義される関数場を計算機で処理する時には、ｆをサンプリングする必要がある。そこで、あらかじめｆ格子点でサンプリングしてボリュームデータの形で保持することにより、陰関数場に対する処理を効率的に行うことが出来る。本発明ではこのボリュームデータを「陰関数ボリューム」と呼び、陰関数場はボリュームで定義されるものとする。陰関数場がボリュームで与えられる場合、格子点の間の点における陰関数の値はサンプル点での値を補間して決定する。即ち、表面での関数値ｔと陰関数ボリュームで陰関数曲面を定義するためには、陰関数場を定義する距離関数と、サンプル点から実際に表面の位置を決定する補間関数の両者が必要である。
【００３０】
ある曲面の陰関数表現の定義は一つではないが、サンプリング幅に対して曲面の形状が複雑な場合にも安定して陰関数場を構成するために、符号付距離関数を用いて陰関数場を生成することが多い。この関数は、曲面へのＥｕｃｌｉｄ距離に、最近傍点が面の表側である場合には正の符号を、裏面にある場合には負の符号を付けた値を返す。この関数を用いて生成された陰関数ボリュームでは、格子点間の値は周辺の格子点での値から線形補間して得ることができる。この様子を２次元で模式化した例を図１及び図９に示す。図中では格子の辺上でのみ関数値を補間して表面の位置を決定し、それらを繋ぐことにより表面を再構成している。
【００３１】
３．２　非多様体曲面
３次元空間で、「集合Ｓが２−多様体である」とは、Ｓ上の任意の点における無限に小さい近傍が２次元の円盤と位相同相であることをいう。以降では、「多様体」という言葉を用いた場合、２−多様体を指すものとする。陰関数場が、サンプリングされた値の線形補間で与えられる場合には、空間内の任意の点で関数値が微分可能である。従って等値面上の任意の点ｐの近傍は法線が∇ｆの微小平面近似することができ、このとき陰関数曲面は多様体である。
一方、「Ｓが非多様体である」とは、表面上のある点の近傍領域において、座標軸が１つ以下しかとれないか、もしくは２次元局所座標系のとり方が３通り以上あることをいう。
【００３２】
本発明で扱う形状はパラメトリック曲面、特に三角形メッシュで表現できる曲面であり、個々の三角形は自己交差を考えない限り、境界以外は多様体である。従って曲面上で多様体の性質を満たさなくなる点が存在するのは「三角形の境界のみ」であり、これは次の２つの場合に分類できる。
【００３３】
（１）表面に境界がある場合：ある三角形の境界上の点が、別のどの三角形の境界上にもない場合。２次元で模式化された例を図２Ａに示す。
（２）表面に分岐がある場合：ある三角形の境界上の点が、別の２つ以上の異なる三角形の境界上にある場合。２次元で模式化された例を図２Ｂに示す。
ただし入力の三角形の集合内の異なる２つの三角形が、その境界以外の点を共有する場合には、共有している点を含む直線に沿ってこれらの三角形を分割することにより、三角形同士の交差は生じないものとする。
図２にある通り、従来の方法を用いてこれらの非多様体形状を陰関数曲面に変換すると形状が大きく変わってしまう。そこで、非多様体曲面を正しく陰関数表現するためには、これらの特徴を陰関数場の中で保持し、また表面として再構成するアルゴリズムを構築する必要がある。
【００３４】
３．３　距離関数と補間関数の設計
３．１節で述べたように、陰関数ボリュームを用いて曲面を陰関数表現するためには、陰関数場を構成するための距離関数と、表面の位置を決定するための補間関数を定義する必要がある。そこでこれらをうまく定めることにより、３．２節で挙げた２つの非多様体の特長を陰関数曲面の枠組みの中で表現する方法を考える。
【００３５】
まず曲面に境界がある場合に関して、従来の陰関数表現では境界部分が延長されて、もともと存在しなかった表面が過剰に生成されてしまう（図２Ａ）。これは、従来の陰関数を用いて定義された陰関数ボリューム中にも正しい表面の位置が定義されているが、補間によって不要な面が生成されていることを意味する。そこで元の曲面が存在しない位置には表面を生成しないように補間関数を拡張することで、表面の境界を表現することが可能である（図３Ａ、図１０Ａ、図１１）。
【００３６】
距離関数として符号付距離を用いた場合には、補間関数として線形補間を用いて表面の位置を決定していた。そこでこれを拡張し、補間の対象となる２つの互いに隣接するボクセルでの符号付距離の差が一定幅より大きい場合には、このボクセル間には表面を生成しないようにする。
【００３７】
即ち任意の２つのサンプル点の間隔をｗ、値をそれぞれｕ、ｖ（ｕ≦ｖ）とするとき、これら２つの点の間に表面が存在するのは
ｕ∈（−∞，ｔ）・・・（２）
ｖ∈［ｔ，∞）・・・（３）
０＜（（−ｕ）−ｔ）＋（ｖ−ｔ）＜αｗ・・・（４）
が成立する場合のみとする。ただしα（≧１）は曲面の陰関数場への変換が誤差を含む場合にも表面を正しく発生させるために導入する係数である。
【００３８】
陰関数場が格子点サンプリングされた値を線形補間した値で与えられる場合、空間内の点における関数値は最大格子点間隔の半分程度の誤差を含むと考えられるため、実験ではα＝１．５を使用した。
【００３９】
上の３つの式を満たすとき、表面が存在する位置は
ｑ＝（ｔ−ｕ）／（ｖ−ｕ）・・・（５）
で求められる。ただしｑ（∈［０，１］）は表面の位置が、ｑ＝０の時に値がｕの格子点上に、ｑ＝１の時に値がｖの格子点上になるように正規化されている。
【００４０】
次に、表面に分岐がある場合に関して、従来の陰関数表現では分岐部分において接続している表面の一部が除去されてしまう（図２Ｂ）。これは、連続な実数値関数を用いて定義された陰関数ボリューム中では分岐を持つ表面の位置を正しく表現できないことが原因である。
【００４１】
曲面が多様体の場合、曲面上の任意の点の近傍において面の表裏を定義することが出来る。したがって表面上の任意の点は、最近傍点がその表側にある領域と裏側にある領域の２つの領域に挟まれる部分に存在し、このような領域分割を符号付距離関数を用いて表現することが出来る。ところが表面に分岐があり非多様体になっている場合には面の裏と表を定義することは出来ないため、特に分岐線上の点の周辺領域を最近傍点の面の方向から２種類に分類することはできない。
【００４２】
入力の曲面を表裏の判別が出来る曲面パッチに分解しその表裏にそれぞれ番号を振ってこれらを区別することにより、最近傍点の面の番号を用いて空間を複数領域に分類すると、分岐のある曲面を陰関数表現することが可能になる（図３Ｂ、図１０Ｂ、図１２）。以下にその領域分割のアルゴリズムを示す。
【００４３】
１．入力の非多様体曲面を分岐線上に沿って分割し、それぞれ分岐を持たない曲面パッチに分解する。
２．得られたパッチに順に番号ｉを振る。パッチの表裏を区別し、表面の番号をｉ＋、裏面の番号をｉ−とする。
３．空間を格子点ｐでサンプリングし、格子点に曲面へのＥｕｃｌｉｄ距離ｄＥ（ｐ）と最近傍点の面の番号ｉ（ｐ）を割り当てる。
４．各格子点ｐに対して、６隣接点ｐｎでｉ（ｐｎ）を調べ、ｉ（ｐ）≠ｉ（ｐｎ）　であるような（ｉ（ｐ），ｉ（ｐｎ））の組を列挙する。
５．上で作られた番号の組を別の新たな番号で置換する。ただし置換の結果、最初にｉ＋とｉ−であった番号が同じ番号になる場合にはその組み合わせに対する置換を行わない。最終的に番号が０から順に並ぶようにする。
６．置換表に従い各格子点ｐでの領域番号ｉ（ｐ）を書き換える。
【００４４】
このようにして得られたボリュームの領域番号ｉ（ｐ）と、各ボクセルにおける表面へのＥｕｃｌｉｄ距離ｄＥ（ｐ）から、実数値の陰関数ボリュームを構成する。そのために、符号付距離を拡張した、「領域付距離」を定義する。領域付距離における「領域」とは符号付距離における正と負の２種類の「符号」を任意の数に拡張したものであり、距離を表す実数空間を領域分割することにより実現する。
【００４５】
分割された領域の幅をＤｓとする時、領域ｉに含まれる距離ｄｉｓは
ｄｉｓ∈［Ｄｓｉ，Ｄｓ（ｉ＋１））・・・（６）
である。
以上のような領域付距離は以下の手順で計算できる。
まずＤｓ＝２Ｂと置き、Ｂ＝Ｂｍａｘ−［ｌｏｇ２ｎ］から領域の大きさを決定する。ただしｎは領域の数である。Ｂｍａｘは十分に大きい数であり、計算機上で表現する場合には領域付距離を表す変数のビット数として与えることができる。
【００４６】
このとき各ボクセルの位置ｐで、ｄＥ（ｐ）とｉ（ｐ）から領域付距離ｆｓ（ｐ）を次の式で計算する。
ｆｓ（ｐ）＝ｍｉｎ（ｄＥ，２Ｂ−ε）＋２Ｂｉ（ｐ）・・・（７）
ただしε（＞０）はｆｓ（ｐ）が式（６）の半開区間に含まれるようにｄＥ（ｐ）　を切り捨てるための微小な正の実数である。実験ではεを格子点間隔、Ｂｍａｘ＝８とした。
【００４７】
領域付距離関数は連続関数ではないため、その値を線形に補間することは出来ない（図１３参照）。そこで、与えられた領域付距離場中の領域数をｎ、距離場の２つのサンプル点の間隔をｗ、値をそれぞれｕ、ｖ（ｕ≦ｖ）とするとき、これら２つの点の間に表面が存在するのは
ｕ∈（２Ｂｉ，２Ｂ（ｉ＋１））・・・（８）
ｖ∈［２Ｂｊ，２Ｂ（ｊ＋１））・・・（９）
０＜（ｕ−２Ｂｉ）＋（ｖ−２Ｂｊ）＜αｗ・・・（１０）
が全て成立するｉ、ｊ（０≦ｉ≦ｊ≦ｎ−１）が存在する場合のみとする。α≧１　は式（５）で用いた係数である。このとき表面が存在する位置は
ｑ＝（ｕ−２Ｂｉ）／（（ｕ−２Ｂｉ）＋（ｖ−２Ｂｊ））・・・（１１）
で求められる。ｑの定義は式（５）と同様である。図１４は上述した領域付距離関数とその条件を示す模式図である。
【００４８】
４．陰関数曲面の可視化
４．１　スライスを用いたボリュームレンダリング法
陰関数ボリュームに対してｒａｙ　ｃａｓｔｉｎｇ法［非特許文献１０］によるボリュームレンダリングの方法を適用することで陰関数曲面を直接、描画することが可能である。ｒａｙ　ｃａｓｔｉｎｇ法では高画質な描画が可能である。
【００４９】
ｒａｙ　ｃａｓｔｉｎｇは任意の視線上での関数値のサンプリングが必要であるため比較的コストの高い計算であるが、Ｌａｃｒｏｕｔｅらはボリュームをｘ、　ｙ、ｚ軸と垂直な３組のスライスの集合で表現して（図４Ａ）、ボリュームのサンプリングをスライス平面上のみで行うことで計算効率を上げて描画を高速化する方法を提案した［非特許文献７］。
【００５０】
この方法はポリゴンとテクスチャマップを用いて効率的に実装することが可能である［非特許文献４］。この方法では、ボリュームのスライスを透明度付き２Ｄテクスチャとしてポリゴンにマップし、得られた半透明ポリゴンの集合を視線に対して奥の方から順にαブレンドしながら表示する。この表示処理ではグラフィクスカードの描画加速を利用できるため、高速に描画できる。またグラフィクスカードを使う場合には、３Ｄテクスチャ機能を利用することで、スライスの方向を固定せずに常に視線方向と垂直なポリゴンを発生させて描画することで（図４Ｂ）、多少の速度の減少と引き換えにより高画質な描画を行うことも可能である。
【００５１】
４．２　Ｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ法［非特許文献５］
スライスを使ったボリュームレンダリングの大きな問題点は、ボリュームの値の補間が、スライス上では任意の解像度で行われるのに対し、スライスと垂直な方向では固定のスライス間隔でしか行われないため、補間精度の不一致によりモアレと呼ばれる縞状の不具合や亀裂が観測される点である。この問題は、発生させるスライスの枚数を、必要な補間精度に応じて変更することにより回避可能であるが、描画速度とスライス枚数は反比例の関係にあり、多くの場合モアレが気にならない程度にスライスを発生させることは現実的ではない。
【００５２】
この問題に対してＥｎｇｅｌらは、各スライスに、そのスライス上でのボリュームの値だけでなく、隣接するスライス上でのボリュームの値も同時にマップし、スライス間に存在するボリュームの影響も考慮することでモアレを除去する、ｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ法を提案した。
【００５３】
図５Ａのようにボリュームをスライス集合で表現し、ｆｒｏｎｔで示されるスライスＳｆｒｏｎｔをポリゴンで描画する状況を考える。従来のスライス法ではこのポリゴンに対し、スライス上でのボリュームの値を表すテクスチャＴｆｒｏｎｔをマップして表示を行うため、スライス間のボリュームの値は描画結果に影響しない。
【００５４】
一方、ｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ法ではＴｆｒｏｎｔと同時にｂａｃｋで示される隣接スライスＳｂａｃｋ上のテクスチャＴｂａｃｋもマップし、２つのテクスチャを用いてＳｆｒｏｎｔとＳｂａｃｋで囲まれる領域のボリュームの値を補間して表示する。その結果、スライスが存在しない領域も含めてボリューム全体の影響を描画結果に反映させることが出来る。実際にある視線での見え方を描画する時には、視線とＳｆｒｏｎｔ、Ｓｂａｃｋの交点を計算して、ｆｒｏｎｔ側のテクセル値ｔｆｒｏｎｔとｂａｃｋ側のテクセル値ｔｂａｃｋから、スライス間で視線上にあるボリュームがこの位置で観測される色と透明度に与える影響を計算して、ポリゴン上に表示する。
【００５５】
例えば図５Ｂにあるように、スライスを用いたボリュームレンダリングの方法で、表面を表示する状況を考える。図の中央の視線での見え方を考えるとき、従来のスライスを用いた方法ではスライスが表面上にはないため表面が描画されない。一方、ｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ法ではスライス間のボクセル値の変化を考慮することが出来るため、少ない枚数のスライスを用いた描画でも正しい結果が得られる。
【００５６】
ｔｆｒｏｎｔ、ｔｂａｃｋの組から、観測される色と透明度を計算する処理を前もって行っておき、結果をｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ　ｔａｂｌｅと呼ばれる早見表として保存しておくことで計算量を減らすことが可能である。またその表は２次元テクスチャとしてグラフィクスカード内に保存しておき、描画時にテクスチャ合成機能を利用して参照することにより高速に描画処理できる。
【００５７】
これを実現するためのグラフィクスカードの設定では、使用するハードウェアはｎＶｉｄｉａ社のＧｅＦｏｒｃｅ３　ＧＰＵで、このグラフィクスカードのテクスチャ合成機能であるＴｅｘｔｕｒｅ　ｈａｄｅｒ機能とＲｅｇｉｓｔｅｒ　Ｃｏｍｂｉｎｅｒｓ機能を、ＮＶＰａｒｓｅを使ってプログラムした。
【００５８】
この設定では図４Ｂにあるスクリーンに垂直なスライスに３Ｄテクスチャマップを行って描画する。また、ボリュームはフォン・シェーディングによって照光処理される。そのため、ボリュームとして与えられるスカラー場の勾配をあらかじめ計算しておく必要がある。各ボクセルにおけるスカラー値ｓと曲面の勾配（ｕｘ、ｕｙ、ｕｚ）が与えられるとき、ここからピクセル値（ｓ、ｕｙ、ｕｚ、ｕｘ）を持つ３Ｄテクスチャを生成し、これを読み込む。
【００５９】
描画時にはマルチテクスチャ機能を利用し、３Ｄテクスチャをテクスチャユニット０と１に読み込み、ユニット０からｔｂａｃｋが、ユニット１からｔｆｒｏｎｔが取り出せるようにテクスチャ座標を与える。ｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎｔａｂｌｅは２Ｄテクスチャで表現してｔｆｒｏｎｔ、ｔｂａｃｋで与えられる任意のスカラー値の組に対する色をＲＧＢチャネルに、透明度をＡチャネルに割り当てる。
【００６０】
ただし照光計算の際にスライス間で勾配を補間するために、Ｂチャネルに勾配を補間する係数を割り当て、色は実際にはＲＧの２チャネルのみで表現する。このテクスチャをユニット３に読み込むと、このユニットに対するテクスチャ座標がグラフィクスハードウェアによって（ｔｆｒｏｎｔ、ｔｂａｃｋ）に設定され、ｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ　ｔａｂｌｅが参照される。
【００６１】
４．３　陰関数曲面の可視化方法
領域付距離場ボリュームで表された陰関数曲面をｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ法で描画するためには、陰関数ボリュームを３Ｄテクスチャとして使える形に変換し、ｔｆｒｏｎｔ、ｔｂａｃｋからなる任意の領域付距離の組に対して、それらの間の描画色を決定するためのｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ　ｔａｂｌｅを作ればよい。
【００６２】
まず陰関数ボリュームに関して、領域付距離は一般に実数で与えられるが、現行のグラフィクスカードでテクスチャとして使うために距離を８ｂｉｔ整数（０−２５５）で量子化する。またシェーディングに必要な勾配は、陰関数場の生成の際に元の曲面の勾配から計算し、同様に量子化しておく。
【００６３】
ｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ　ｔａｂｌｅは２５６×２５６のサイズの２次元のＲＧＢＡテクスチャとして作成する。ＲＧの２つのチャネルに割り当てる色は、領域付距離の距離の組ごとに任意の色を設定でき、表面を均一に描画する時には単一色を与える。Ａチャネルには、スライス間に面が存在しない場合にはＡ＝０（透明）、存在する場合にはＡ＝１（不透明）とする。最後にＢチャネルに割り当てる補間係数として式（１１）から計算される、ｑ∈［０，１］を８ｂｉｔ整数で量子化した値を用いる。
【００６４】
例として図６Ａに示す非多様体曲面を陰関数表現して可視化することを考える。このモデルは球面が平面にはめ込まれた形の非多様体形状であり、空間は３つの領域に分類できる。これに対応するｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎｔａｂｌｅは図６Ｂの通りである。表の横軸がｔｆｒｏｎｔ∈［０，２５５］、縦軸がｔｂａｃｋ∈［０，２５５］に対応し、表の各点の色が描画される表面の色を、色がない部分は表面が存在せずに透明色で描画される組み合わせに対応する。色の濃さは勾配の補間のための係数に対応している。なお、図１５、１６は別のｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎｔａｂｌｅを例示している。
【００６５】
非多様体の陰関数曲面をｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ法で可視化する際には、テクスチャとして与えられるボクセル値の領域付距離が線形補間されないようにする必要がある。例えば図６の非多様体曲面を陰関数ボリュームに変換し、ボクセル値の線形補間を行って可視化した結果が図７Ａである。線形補間によって、領域境界付近に本来存在しない領域に属する距離が生成され、本来存在しない表面が現れている。この不具合は、ボクセル値の線形補間を行わないことで解決することができ、結果として図７Ｂのように正しい表示結果を得ることが出来る。
【００６６】
５．実験結果
上述した本発明の方法に基づき、三角形メッシュを陰関数ボリューム化するソフトウェア、及びそのボリュームを陰関数曲面表示するソフトウェアを実装し、複数のモデルに対して実験を行った。可視化の実験に利用した計算機はＣＰＵ　Ｐｅｎｔｉｕｍ４　１．７ＧＨｚ、主記憶１．０ＧＢ、ＶＰＵ　ＧｅＦｏｒｃｅ４　Ｔｉ４６００、ＶＲＡＭ　１２８ＭＢのＰＣである。可視化のソフトウェアとして描画面に水平なスライスを用いてｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎを行うボリュームレンダラを作成した。
【００６７】
図８は非多様体表面モデルを陰関数表現に変換し、可視化した結果である。上段が入力として与えたパラメトリック表現された表面モデルであり、三角形メッシュを使用した。これらのモデルを領域付距離場を用いて２５６３サイズの陰関数ボリュームに変換し、可視化した結果をそれぞれ下段に示す。
【００６８】
図８Ａ，Ｂに示すモデルには部分的に穴が開いており、表面に境界が存在する非多様体である。従来の陰関数表現では扱うことの出来なかった境界のある曲面を、本発明の方法では表現できている。ただし陰関数場をボリュームでサンプリングしているため、ボクセル幅以下の形状の特徴を正確に表現することは出来ず、特に境界付近の形状は多少変化している。この問題はボリュームのサンプリング密度を高くすることで解消できる。
【００６９】
図８Ｃは、平面と半球面からなる表面形状に対する実験結果である。この表面は境界線と表面の分岐をもつ非多様体であるが、本発明の方法では境界や分岐が正しく表現できることがわかる。距離関数の値と勾配を８ビットで量子化して最近傍点補間しているが、描画色は２つのテクセル値の組み合わせから決定するため、描画面が極端に大きくない限りは結果画像中の量子化ノイズはほとんど目立たない。描画時の色は、表面が存在する領域の対ごとに、表面と裏面を区別して設定することが可能である。この例では全ての組み合わせに異なる色を設定している。
図１７は、本発明による可視化した図を示す図８と同様のディスプレイ上の画像である。
【００７０】
また１２８３と２５６３サイズのボリュームデータに対し可視化処理を行った際の描画速度を表１に示す。発生させるスライス枚数を変更することによって速度は変化するが、多くの実験結果で対話的な速度に必要とされる３０ｆｐｓを達成できた。
【００７１】
【表１】
2004133550.tif 000003
【００７２】
上述したように、本発明では、陰関数曲面を定義する距離関数と補間関数として不連続関数を用いることにより、陰関数表現で非多様体曲面を扱えるように拡張した。またこのように定義された多様体・非多様体陰関数曲面を高速に描画する方法を提案した。
【００７３】
実験で用いた入力のパラメトリック曲面は三角形メッシュのみであるが、本発明の方法は自由曲面にも適用可能である。ただし自由曲面を多様体パッチに分割するアルゴリズムなどの細かい変更は必要であり今後、実験する必要がある。また形状の変形や集合演算を行う際には曲面の陰関数表現が有効であるが、本発明の方法で定義された非多様体陰関数曲面表現に対してもこれらの処理が適用可能である。
【００７４】
従来の陰関数曲面では取り扱うことの出来る形状に制限が多く、表面の境界と表面の分岐という大きな問題に関して、本発明の方法で解決することが可能である。
【００７５】
また、上述した実施例に示すように、本発明の方法に基づき、三角形メッシュを陰関数ボリューム化するソフトウェア、及びそのボリュームを陰関数曲面表示するソフトウェアをコンピュータプログラムとして実装することにより、変形などによって陰関数曲面が更新された場合にも高速に処理でき、形状が複雑な場合でも高速描画ができ、これにより、陰関数場を対話的な速度で表示できる。
【００７６】
【発明の効果】
上述したように、本発明の非多様体の陰関数表現方法と陰関数曲面の直接描画方法及びそれらのプログラムは、入力に非多様体的な特徴がある場合、例えば、曲面に境界や分岐がある場合でも、非多様体曲面をパラメトリック表現から陰関数表現へ形状を正しく保持しながら変換することができ、かつ、変形などによって陰関数曲面が更新された場合にも高速に処理でき、形状が複雑な場合でも高速描画ができ、これにより、陰関数場を対話的な速度で表示できる、等の優れた効果を有する。
【図面の簡単な説明】
【図１】符号付距離場と線形補間で再構築された表面を示す２次元模式図である。
【図２】従来法で陰関数表現された非多様体形状を示す２次元模式図である。
【図３】本発明の方法で陰関数表現された非多様体形状を示す２次元模式図である。
【図４】ボリュームの軸に沿ったスライス生成（Ａ）と、描画面と垂直なスライス生成（Ｂ）の模式図である。
【図５】隣接する２つのスライス上のテクスチャを用いた描画の図である。
【図６】非多様体モデルに対する領域分け（Ａ）と、対応するｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ　ｔａｂｌｅ（Ｂ）のディスプレイ上の画像である。
【図７】領域付距離場の値を線形補間した場合の不具合（Ａ）と、最近傍点をとることでその不具合を防いだ場合（Ｂ）を示すディスプレイ上の画像である。
【図８】入力の三角形メッシュモデル（上段）と、本発明による可視化した図（下段）を示すディスプレイ上の画像である。
【図９】符号付距離場と線形補間で再構築された表面を示す図１と同様の２次元模式図である。
【図１０】本発明の方法で陰関数表現された非多様体形状を示す図３と同様の２次元模式図である。
【図１１】表面に境界がある場合の距離関数とその条件を示す説明図である。
【図１２】表面に分岐がある場合の条件を示す説明図である。
【図１３】本発明による領域付距離関数を示す模式図である。
【図１４】本発明による領域付距離関数とその条件を示す模式図である。
【図１５】線形補間（Ａ）と境界のある表面に対応するｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎｔａｂｌｅ（Ｂ）のディスプレイ上の画像である。
【図１６】線形補間（Ａ）と分岐・境界のある表面に対応するｐｒｅ−ｉｎｔｅｇｒａｔｉｏｎ　ｔａｂｌｅ（Ｂ）のディスプレイ上の画像である。
【図１７】本発明による可視化した図を示す図８と同様のディスプレイ上の画像である。
【図１】
2004133550.tif 000004
【図２】
2004133550.tif 000005
【図３】
2004133550.tif 000006
【図４】
2004133550.tif 000007
【図５】
2004133550.tif 000008
【図６】
2004133550.tif 000009
【図７】
2004133550.tif 000010
【図８】
2004133550.tif 000011
【図９】
2004133550.tif 000012
【図１０】
2004133550.tif 000013
【図１１】
2004133550.tif 000014
【図１２】
2004133550.tif 000015
【図１３】
2004133550.tif 000016
【図１４】
2004133550.tif 000017
【図１５】
2004133550.tif 000018
【図１６】
2004133550.tif 000019
【図１７】
2004133550.tif 000020