(57)【特許請求の範囲】
【請求項１】
ｎ次元の３角形メッシュデータを生成する３角形メッシュ生成方法であって、
ハードウェアとして、プログラムにしたがって動作するＣＰＵと、前記プログラムと前記３角形メッシュデータを記憶するメモリとを備え、ソフトウェアとして３角形メッシュ生成プログラムとＯＳを備え、
前記３角形メッシュ生成システムが前記３角形メッシュ生成プログラムにしたがって前記ｎ次元の３角形メッシュデータを生成するに際して、
３角形メッシュで用いる複数のｎ次元の頂点座標を前記メモリ上の座標テーブルに格納するステップと、前記３角形メッシュで用いるｎ次元の法線ベクトルを前記メモリ上のベクトルテーブルに格納するステップと、前記座標テーブルへのインデックス情報と頂点座標インデックス数とを３角形ストリップ形式で前記メモリ上の頂点座標インデックステーブルに格納するステップと、前記ベクトルテーブルへのインデックス情報を３角形ストリップ形式で前記メモリ上の法線ベクトルインデックステーブルに格納するステップと、前記頂点座標の各頂点に隣接する３角形へのインデックス情報を前記メモリ上の隣接３角形インデックステーブルに格納するステップと、から成り立ち、
さらに、前記各頂点に隣接する３角形へのインデックス情報の生成の際には、前記隣接３角形インデックステーブルの各要素ｖｔ［ｉ］に３角形インデックス配列の先頭アドレスを設定し、前記頂点座標インデックステーブルのインデックス番号ｋの値を０にし、前記インデックス番号０の示す頂点である隣接３角形インデックステーブルの要素ｖｔ［ｔ［ｋ］］の示す配列に前記インデックス番号ｋを追加する追加ステップを行い、続いて、ｋの値を１つ増やして前記インデックス番号ｋが前記頂点座標インデックス数であるｎｖより小さければ前記頂点座標インデックステーブルの次のインデックス番号ｋについて前記追加ステップを実行し、同様の繰り返しで前記インデックス番号ｋが前記頂点座標インデックス数ｎｖに達すると隣接する３角形へのインデックス情報の生成を終了し、
前記隣接３角形インデックステーブルを介することにより、非多様体３角形メッシュに対しても、３角形ストリップ形式のまま、隣接３角形を参照することを可能とする
ことを特徴とする３角形メッシュ生成方法。
【請求項２】
請求項１に記載の３角形メッシュ生成方法によった３角形メッシュ生成を実行させるようにプログラミングされていることを特徴とするプログラム。
【請求項３】
請求項２に記載のプログラムを記憶したことを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、汎用の情報処理装置や専用の３次元形状処理装置などを用いて実現される３角形メッシュ生成・参照技術に係わり、特に、３角形メッシュデータのデータ構造に関する。
【０００２】
【従来の技術】
３次元形状モデルなどを表示するための方式としては、パーソナルコンピュータ上で標準的なＯｐｅｎＧＬ（非特許文献１参照）などグラフィックスライブラリにより提供されている３角形メッシュ方式が一般的である。ＯｐｅｎＧＬで提供されている３角形メッシュ方式には、データ形式から見て、３角形セット形式、３角形ストリップ形式などがあり、なかでも、３角形ストリップ形式が表示速度およびデータ量の点で有利である。３角形セット形式に比べると、２倍から３倍の効率（表示速度およびデータ量）を得ることができる。
特開平６−２３１２１２号公報に示された従来技術はこのような３角形ストリップ形式を用いた一つであり、３角形メッシュを構成している各３角形の隣接状態を検出し、演算処理効率の良い頂点列を生成している。３角形ストリップ形式では頂点データの重複を避けることによりデータ量を減らすために３角形メッシュを構成する複数の３角形を１本または複数本のストリップ（一筆書き）で描いた場合の頂点列で表現するが、その際のストリップの設定が演算処理効率に影響するのである。
一方、干渉計算、距離計算、衝突検出などの応用においては、３角形メッシュ中の隣接する３角形の参照が必要となるので、隣接３角形参照が困難な３角形ストリップ形式は用いられず、３角形セット形式に対して頂点毎の隣接３角形へのリンク情報を加えたものがよく用いられている（図１４参照）。この形式の問題点は次のとおりである。
（１）３角形セット形式の約２倍の記憶領域が必要になる。
（２）３角形ストリップ形式の２〜３倍の表示時間が必要になる。
【特許文献１】
特開平６−２３１２１２号公報
【非特許文献１】
三浦憲二郎、ＯｐｅｎＧＬ３Ｄグラフィックス入門、朝倉書店、１９９５
【０００３】
【発明が解決しようとする課題】
前記した従来技術の問題を解決するために、当出願者は、先願において、３角形の隣には稜線を挟んで必ず１枚の別の３角形が存在することを前提にした２多様体（two-manifold）の３角形メッシュについては、３角形ストリップ形式のまま、隣接３角形への参照を可能にした。しかし、３角形メッシュとしてはより一般的な非多様体（non-manifold）の３角形メッシュにおいては、次に示す非多様体頂点や非多様体稜線が存在するので、３角形の隣には稜線を挟んで常に３角形が存在するというわけではない。したがって、この方法は一般的な非多様体３角形メッシュには利用できない。
（１）非多様体頂点：２枚以上の３角形（Ａ、Ｂ）が１個の頂点（ｖ０）で連結されている状態（図１５参照）
（２）非多様体稜線：３枚以上の３角形（Ａ、Ｂ、Ｃ）が１本の稜線（ｅ０）で連結されている状態（図１６参照）
本発明の目的は、このような従来技術の問題を解決することにあり、具体的には、非多様体３角形メッシュに対しても、３角形ストリップ形式のまま、隣接３角形の参照が可能な３角形メッシュ生成・参照技術を提供することにある。
【０００４】
【課題を解決するための手段】
前記課題を解決するために、本発明では、ｎ次元の３角形メッシュデータを生成する３角形メッシュ生成方法であって、
ハードウェアとして、プログラムにしたがって動作するＣＰＵと、前記プログラムと前記３角形メッシュデータを記憶するメモリとを備え、ソフトウェアとして３角形メッシュ生成プログラムとＯＳを備え、
前記３角形メッシュ生成システムが前記３角形メッシュ生成プログラムにしたがって前記ｎ次元の３角形メッシュデータを生成するに際して、
３角形メッシュで用いる複数のｎ次元の頂点座標を前記メモリ上の座標テーブルに格納するステップと、前記３角形メッシュで用いるｎ次元の法線ベクトルを前記メモリ上のベクトルテーブルに格納するステップと、前記座標テーブルへのインデックス情報と頂点座標インデックス数とを３角形ストリップ形式で前記メモリ上の頂点座標インデックステーブルに格納するステップと、前記ベクトルテーブルへのインデックス情報を３角形ストリップ形式で前記メモリ上の法線ベクトルインデックステーブルに格納するステップと、前記頂点座標の各頂点に隣接する３角形へのインデックス情報を前記メモリ上の隣接３角形インデックステーブルに格納するステップと、から成り立ち、
さらに、前記各頂点に隣接する３角形へのインデックス情報の生成の際には、前記隣接３角形インデックステーブルの各要素ｖｔ［ｉ］に３角形インデックス配列の先頭アドレスを設定し、前記頂点座標インデックステーブルのインデックス番号ｋの値を０にし、前記インデックス番号０の示す頂点である隣接３角形インデックステーブルの要素ｖｔ［ｔ［ｋ］］の示す配列に前記インデックス番号ｋを追加する追加ステップを行い、続いて、ｋの値を１つ増やして前記インデックス番号ｋが前記頂点座標インデックス数であるｎｖより小さければ前記頂点座標インデックステーブルの次のインデックス番号ｋについて前記追加ステップを実行し、同様の繰り返しで前記インデックス番号ｋが前記頂点座標インデックス数ｎｖに達すると隣接する３角形へのインデックス情報の生成を終了し、
前記隣接３角形インデックステーブルを介することにより、非多様体３角形メッシュに対しても、３角形ストリップ形式のまま、隣接３角形を参照することを可能とする３角形メッシュ生成方法とした。
【０００５】
また、本発明の構成例では、各頂点に隣接する３角形のインデックス情報生成の際には、前記３角形インデックステーブルの各要素ｖｔ［ｉ］に配列の先頭アドレスを設定し、３角形ストリップの各要素ｔ［ｊ］について、３角形｛ｔ［ｊ−２］、ｔ［ｊ−１］、ｔ［ｊ］｝が縮退３角形でない場合だけ、前記３角形インデックステーブルの要素ｖｔ［ｔ［ｊ］］の示す配列に３角形ストリップのインデックスｊを追加する構成にした。
また、３角形メッシュ生成方法により生成されたｎ次元の３角形メッシュデータ構造のインデックスがｉである頂点ｖ［ｉ］に隣接する３角形を参照する３角形メッシュ参照方法において、ｖｔ［ｉ］の示す配列のすべての要素ｖｔ［ｉ］［ｊ］について、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２］、ｔ［ｖｔ［ｉ］［ｊ］−１］、ｔ［ｖｔ［ｉ］［ｊ］］｝、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−１］、ｔ［ｖｔ［ｉ］［ｊ］］、ｔ［ｖｔ［ｉ］［ｊ］＋１］｝、および３角形｛ｔ［ｖｔ［ｉ］［ｊ］］、ｔ［ｖｔ［ｉ］［ｊ］＋１］、ｔ［ｖｔ［ｉ］［ｊ］＋２］｝を隣接３角形として設定する構成にした。
【０００６】
また、本発明の構成例では、３角形メッシュ生成方法により生成されたｎ次元の３角形メッシュデータ構造のインデックスがｉである頂点ｖ［ｉ］に隣接する３角形を参照する３角形メッシュ参照方法において、ｖｔ［ｉ］の示す配列のすべての要素ｖｔ［ｉ］［ｊ］について、ｋ＝０からはじめて、ｋ＝１までは、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝を隣接３角形として設定し、ｋ＝２以後は、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝が縮退３角形の場合、ｋの値を１増やして３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝を隣接３角形として設定し、さらにｋを１増やし、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝が縮退３角形でない場合、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝を隣接３角形として設定する構成にした。
また、情報処理装置上で実行されるプログラムにおいて、上述した３角形メッシュ生成方法によった３角形メッシュ生成を実行させるようにプログラミングされている構成にした。また、情報処理装置上で実行されるプログラムにおいて、上述した３角形メッシュ参照方法によった３角形メッシュ参照を実行させるようにプログラミングされている構成にした。また、プログラムを記憶した記憶媒体において上述したプログラムを記憶した。
【０００７】
【発明の実施の形態】
以下、図面により本発明の実施の形態を詳細に説明する。
図１は、本発明の一実施例を示すｎ次元空間に生成される３角形メッシュのデータ構造図である。図示したように、このデータ構造は、３角形メッシュ生成で用いる複数のｎ次元の頂点座標のデータを格納する座標テーブル１、３角形メッシュ生成で用いるｎ次元の法線ベクトルのデータを格納するベクトルテーブル２、座標テーブル１へのインデックス情報を３角形ストリップ形式で格納する頂点座標インデックステーブル３、ベクトルテーブル２へのインデックス情報を３角形ストリップ形式で格納する法線ベクトルインデックステーブル４、および前記頂点座標の各頂点に隣接する３角形へのインデックス情報を格納する隣接３角形インデックステーブル５から構成される。
図２は、図１に示した座標テーブル１のデータ構造図である。図示したように、この座標テーブル１には、座標数（＝ｎｃ）と、座標０から座標ｎｃ−１の順にｎｃ個の座標の座標値を格納している。なお、これらの座標値は、それぞれ（ｘ成分、ｙ成分、ｚ成分）の３成分から構成され（この例は３次元の場合である）、各成分は浮動小数点の数値またはベクトル量子化圧縮をおこなった値で示されている。
図３は、図１に示したベクトルテーブル２のデータ構造図である。図示したように、このベクトルテーブル２には、ベクトルの数（＝ｎｕ）と、ベクトル０からベクトルｎｕ−１の順にｎｕ個のｎ次元のベクトルの値を格納している。これらのベクトルの値は、それぞれ（ｘ成分、ｙ成分、ｚ成分）の３成分で構成され、各成分は浮動小数点の数値またはベクトル量子化圧縮をおこなった値で示されている。
図４は、図１に示した頂点座標インデックステーブル３のデータ構造図である。図示したように、この頂点座標インデックステーブル３には、頂点座標インデックス数（＝ｎｖ）と、頂点座標インデックス０から頂点座標インデックスｎｖ−１の順で座標テーブル１へのｎｖ個のインデックス情報を３角形ストリップ形式により格納する。なお、３角形ストリップ形式では、３角形メッシュの各３角形の頂点座標を格納した座標テーブル１へのインデックス情報とストリップの最後（区切り）を表すデリミタ（＝−１）が格納されている。インデックス情報が連続的に羅列されるが、そのうちの各連続する３点が３角形の３つの頂点である。１本のストリップですべての頂点を通過できないこともあるので、そのような場合にはストリップは複数本になり、その場合、ストリップの区切りを「−１」で表現するのである。また、１本のストリップが少しでも多くの頂点を通過するために同一頂点を複数回通過することもあるし、複数のストリップが同一頂点を通過したりすることもあるので、前記したｎｖの値は座標数ｎｃよりも大きくなる。
【０００８】
図５は、図１に示した法線ベクトルインデックステーブル４のデータ構造図である。図示したように、この法線ベクトルインデックステーブル４には、法線ベクトルインデックス数（＝ｎｎ）と、法線ベクトルインデックス０から法線ベクトルインデックスｎｎ−１の順でベクトルテーブル２へのｎｎ個のインデックス情報を３角形ストリップ形式で格納する。なお、３角形ストリップ形式では、３角形メッシュの各３角形の頂点位置での法線ベクトルを格納したベクトルテーブル２へのインデックス情報とストリップの最後（区切り）を表すデリミタ（＝−１）が格納されている。
図６は、図１に示した３角形インデックステーブル５のデータ構造図である。図示したように、この３角形インデックステーブル５には、頂点数（３角形インデックス数）（＝ｎｃ）と、隣接３角形インデックス０（頂点０に隣接する３角形インデックス配列の先頭アドレス）から隣接３角形インデックスｎｔ−１の順でｎｔ個の隣接３角形インデックス情報へのインデックス情報を格納する。なお、一つの頂点について３角形へのインデックス値が一つでなく、配列となるのは、前記したように、一つの頂点をストリップが複数回通過することがあるからである。各頂点を通るストリップの一つまたは複数のインデックスの値は図４に示した頂点座標インデックステーブル３から得ることができる。
【０００９】
図７は、本発明の一実施例を示す、３角形メッシュ生成・参照処理を実行する３角形メッシュ処理システムの構成ブロック図である。図示したように、この３角形メッシュ処理システムは、ハードウェアとして、プログラムに従って動作するＣＰＵ１１、そのプログラム（ソフトウェア）や本発明のデータ構造の３角形メッシュデータなどを記憶するメモリ（例えばＲＡＭおよびハードディスク記憶装置）１２、データや各種指示を入力するキーボード１３、３次元形状モデルなどを表示するディスプレイ装置１４、着脱可能な記憶媒体（記憶メディア）を駆動してその記憶媒体から例えば３次元形状データやプログラムなどを読み込む媒体駆動装置（ドライブ）１５などを備え、プログラム（ソフトウェア）として、３角形メッシュ生成プログラム１６、３角形メッシュ参照プログラム１７、およびＯＳ（オペレーティングシステム）１８などを備える。
このような３角形メッシュ処理システムが３角形メッシュ生成プログラム１６に従ってｎ次元の３角形メッシュを生成する際の動作フローを図８に示す。以下、図８に従ってこの動作フローを説明する。
まず、３角形メッシュで用いる頂点座標を図２に示したデータ構造で座標テーブル１に格納する（Ｓ１）。既に生成されている頂点座標をデータ中の先頭から順に取り出し、取り出し順に座標テーブル１の座標０から順に格納するのである。
続いて、既に生成されている、３角形メッシュで用いる法線ベクトルを頂点座標の場合と同様にして図３に示したデータ構造でベクトルテーブル２に格納する（Ｓ２）。さらに、頂点座標を格納した座標テーブル１へのインデックス情報を頂点座標インデックステーブル３に図４に示したデータ構造で３角形ストリップ形式により格納する（Ｓ３）。複数の３角形から成る３角メッシュの複数の辺を一筆書きで描く際の通過頂点を示す頂点座標インデックス（アドレス値）を通貨順に区切り記号を付けずに連ねて格納するのである（但し、ストリップが複数本になる場合にはストリップ間にデリミタ（＝−１）を付ける。
次に、３角形メッシュで用いる法線ベクトルを格納したベクトルテーブル２へのインデックス情報を法線ベクトルインデックステーブル４に図５に示したデータ構造で３角形ストリップ形式により格納する（Ｓ４）。さらに、隣接３角形へのインデックス情報を３角形インデックステーブル５に図６に示したデータ構造で格納する（Ｓ５）。
こうして、ｎ次元空間の３角形メッシュデータの生成が完了すると、そのデータをハードディスク装置に保存する。
【００１０】
図９は前記した各頂点に隣接する３角形のインデックス情報生成の動作フローである。以下、図９に従って、この動作フローを説明する。
まず、３角形インデックステーブル５（図６参照）の各要素ｖｔ［ｉ］に３角形インデックス配列の先頭アドレスを設定する（Ｓ１１）。そして、図４に示した頂点座標インデックステーブル３のインデックス番号ｋの値を０にして（Ｓ１２）、頂点座標インデックス０の示す頂点である３角形インデックステーブルの要素ｖｔ［ｔ［ｋ］］の示す配列にそのインデックス番号ｋ（１回目は０）を追加する（Ｓ１４）。
続いて、ｋの値を１増やし（Ｓ１５）、ｋがｎｖより小さければ（Ｓ１３で「はい」）頂点座標インデックステーブル３の次のインデックス番号ｋについてステップＳ１４を実行する。以下、同様に繰り返し、ｋがｎｖに達すると（Ｓ１３で「いいえ」）この動作フローを終了させる。
図１０は各頂点に隣接する３角形のインデックス情報生成の他の動作フローである。以下、図１０に従って、この動作フローを説明する。なお、以下において、｛ｘ、ｙ、ｚ｝は３角形を表す３頂点である。
まず、３角形インデックステーブル５（図６参照）の各要素ｖｔ［ｉ］に３角形インデックス配列の先頭アドレスを設定する（Ｓ２１）。そして、図４に示した頂点座標インデックステーブル３のインデックス番号ｋの値を０にする（Ｓ２２）。
続いて、当該ストリップ上の当該要素ｔ［ｋ］について、３角形｛ｔ［ｋ−２］、ｔ［ｋ−１］、ｔ［ｋ］｝が縮退３角形でない場合だけ（Ｓ２４で「いいえ」）、３角形インデックステーブルの要素ｖｔ［ｔ［ｋ］］の示す配列に３角形ストリップのインデックス番号ｋを追加する（Ｓ２５）。そして、ｋの値を１増やし（Ｓ２６）、ｋがｎｖより小さければ（Ｓ２３で「はい」）頂点座標インデックステーブル３の次のインデックス番号ｋについてステップＳ２４以下を実行する。以下、同様に繰り返し、ｋがｎｖに達すると（Ｓ２３で「いいえ」）この動作フローを終了させる。
【００１１】
図１１は図８および図９に示した動作フローにより生成されたｎ次元の３角形メッシュデータ構造のインデックスがｉである頂点ｖ［ｉ］に隣接する３角形を参照する動作フローである。以下、この動作フローについて説明する。なお、以下において、｛ｘ、ｙ、ｚ｝は３角形を表す３頂点、ｘ［ｉ］はｘテーブル内のｉ番目の要素とする。
まず、隣接３角形インデックステーブル５の要素ｖｔ［ｉ］の示す３角形インデックス配列中の順番を示すｊを０、要素ｖｔ［ｉ］の示す３角形インデックス配列の要素数をｊｍａｘとする（Ｓ３１）。そして、ｖｔ［ｉ］［ｊ］について、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２］、ｔ［ｖｔ［ｉ］［ｊ］−１］、ｔ［ｖｔ［ｉ］［ｊ］］｝を隣接３角形とし（Ｓ３３）、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−１］、ｔ［ｖｔ［ｉ］［ｊ］］、ｔ［ｖｔ［ｉ］［ｊ］＋１］｝を隣接３角形とし（Ｓ３４）、３角形｛ｔ［ｖｔ［ｉ］［ｊ］］、ｔ［ｖｔ［ｉ］［ｊ］＋１］、ｔ［ｖｔ［ｉ］［ｊ］＋２］｝を隣接３角形とする（Ｓ３５）。
続いて、ｊの値を１増やし（Ｓ３６）、次の要素について同様に繰り返す。そして、ｊの値がｊｍａｘになると（Ｓ３２で「いいえ」）、この動作フローを終了させる。
こうして、頂点を指示することにより、その頂点に隣接する隣接３角形を参照することが可能になる。
【００１２】
図１２は図８および図１０に示した動作フローにより生成されたｎ次元の３角形メッシュデータ構造のインデックスがｉである頂点ｖ［ｉ］に隣接する３角形を参照する動作フローである。以下、この動作フローについて説明する。なお、以下において、｛ｘ、ｙ、ｚ｝は３角形を表す３頂点、ｘ［ｉ］はｘテーブル内のｉ番目の要素とする。
まず、隣接３角形インデックステーブル５の要素ｖｔ［ｉ］の示す３角形インデックス配列中の順番を示すｊを０、要素ｖｔ［ｉ］の示す３角形インデックス配列の要素数をｊｍａｘとする（Ｓ４１）。さらに、以下に示すｋ（前記した図９、図１０記載のｋとは別である）の値を０にする（Ｓ４３）。そして、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝が縮退３角形でないならば、その３角形を隣接３角形とする（Ｓ４５）。
続いて、ｋの値を１増やし（Ｓ４６）、ｋ＝１の場合についてステップＳ４５を実行する。そして、ｋ＝２になると（Ｓ４４で「いいえ」）、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝が縮退３角形か否かを判定し（Ｓ４７）、縮退３角形であるならば（Ｓ４７で「はい」）、ｋの値を１増やし（Ｓ４８）、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝を隣接３角形とする（Ｓ４９）。さらに、ｋの値を１増やし（Ｓ５０）、ステップＳ４７へ戻る。
それに対して、ｋ＝２のときのステップＳ４７において、またはステップＳ５０実行後のステップＳ４７において、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝が縮退３角形でないと判定されたならば（Ｓ４７で「いいえ」）、
そのときの３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝を隣接３角形とする（Ｓ５１）。そして、ｊの値を１増やし（Ｓ５２）、次の要素について同様に繰り返す。そして、ｊの値がｊｍａｘになると（Ｓ４２で「いいえ」）、この動作フローを終了させる。
【００１３】
以上、図７に示した構成の３角形メッシュ処理システムについて説明したが、図１３に示したように二つ（または二つ以上）の情報処理装置（コンピュータ）を用い、そのうちの情報処理装置２１には３角形メッシュ生成プログラム１６を備えて図１などに示したデータ構成の３角形メッシュデータを生成し、その３角形メッシュデータを通信リンクを介して情報処理装置２２へ転送し、その情報処理装置２２には３角形メッシュ参照プログラムを備え、転送されてきた３角形メッシュデータを参照する構成も可能である。なお、前記通信リンクとしては、インターネット、イントラネット、広域ネットワーク、ローカル・エリア・ネットワーク、無線周波数リンク、赤外線リンク、またはシリアル通信リンクが適用可能である。
また、説明したような３角形メッシュ生成・参照方法に従ってプログラミングした３角形メッシュ生成・参照プログラムを着脱可能な記憶媒体に記憶し、その記憶媒体をこれまで本発明によった３角形メッシュ生成・参照をおこなえなかったパーソナルコンピュータなど情報処理装置に装着することにより、または、そのようなプログラムをネットワークを介してそのような情報処理装置へ転送することにより、そのような情報処理装置においても本発明によった３角形メッシュ生成・参照をおこなうことができる。
【００１４】
【発明の効果】
以上説明したように、本発明によれば、ｎ次元の３角形メッシュデータを生成する３角形メッシュ生成システムにおいて、３角形メッシュで用いる複数のｎ次元の頂点座標を格納する座標テーブルと、その３角形メッシュで用いるｎ次元の法線ベクトルを格納するベクトルテーブルと、前記座標テーブルへのインデックス情報を３角形ストリップ形式で格納する頂点座標インデックステーブルと、前記ベクトルテーブルへのインデックス情報を３角形ストリップ形式で格納する法線ベクトルインデックステーブルと、前記頂点座標の各頂点に隣接する３角形のデータへのインデックス情報を格納する隣接３角形インデックステーブルとにより３角形メッシュデータ構造が構成されるので、その隣接３角形インデックステーブルを介することにより、非多様体３角形メッシュに対しても、３角形ストリップ形式のまま、隣接３角形を参照することが可能になり、したがって、３角形ストリップ形式と同様の表示時間で表示することが可能になるし、データ量も従来の３角形ストリップ形式の２倍くらいに収めることができる。
また、座標テーブルおよびベクトルテーブルに格納するデータが、浮動小数点のデータまたはベクトル量子化圧縮したデータであるので、従来と同様なデータを格納できる。また、３角形メッシュを表した前記データ構造のデータを記憶しておくことができるので、表示の度ごとにデータ生成をおこなう必要がなくなる。
【００１５】
また、本発明によれば、３角形メッシュを表した前記データ構造のデータを、通信リンクを介して転送できるので、例えば３角形メッシュデータを生成する情報処理装置とその３角形メッシュデータを参照する情報処理装置とを別にすることが可能になる。また、通信リンクが、インターネット、イントラネット、広域ネットワーク、ローカル・エリア・ネットワーク、無線周波数リンク、赤外線リンク、またはシリアル通信リンクであるので、そのような通信リンクを用いることにより、例えば３角形メッシュデータを生成する情報処理装置とその３角形メッシュデータを参照する情報処理装置とを別にすることが可能になる。
また、ｎ次元の３角形メッシュを生成する際、３角形メッシュで用いる複数のｎ次元の頂点座標を座標テーブルに格納するとともに、３角形メッシュで用いるｎ次元の法線ベクトルをベクトルテーブルに格納し、座標テーブルへのインデックス情報を３角形ストリップ形式で頂点座標インデックステーブルに格納し、ベクトルテーブルへのインデックス情報を３角形ストリップ形式で法線ベクトルインデックステーブルに格納し、頂点座標の各頂点に隣接する３角形へのインデックス情報を隣接３角形インデックステーブルに格納することができるので、上述した効果と同様の効果を得ることができる。
また、本発明によれば、各頂点に隣接する３角形のインデックス情報生成の際、３角形インデックステーブルの各要素に配列の先頭アドレスを設定し、３角形ストリップの各要素ｔ［ｊ］について、３角形インデックステーブルの要素ｖｔ［ｔ［ｊ］］の示す配列に３角形ストリップのインデックスｊを追加するようにしているので、プログラムとそのプログラムに従って動作するＣＰＵなどを用いて容易に実現できる。
また、各頂点に隣接する３角形のインデックス情報生成の際、３角形インデックステーブルの各要素ｖｔ［ｉ］に配列の先頭アドレスを設定し、３角形ストリップの各要素ｔ［ｊ］について、３角形｛ｔ［ｊ−２］、ｔ［ｊ−１］、ｔ［ｊ］｝が縮退３角形でない場合だけ、３角形インデックステーブルの要素ｖｔ［ｔ［ｊ］］の示す配列に３角形ストリップのインデックスｊを追加するようにしているので、非多様体３角形メッシュが混在していても、プログラムとそのプログラムに従って動作するＣＰＵなどを用いて容易に実現できる。
【００１６】
また、本発明によれば、上述した３角形メッシュ生成方法により生成されたｎ次元の３角形メッシュデータ構造のインデックスがｉである頂点ｖ［ｉ］に隣接する３角形を参照する際、ｖｔ［ｉ］の示す配列のすべての要素ｖｔ［ｉ］［ｊ］について、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２］、ｔ［ｖｔ［ｉ］［ｊ］−１］、ｔ［ｖｔ［ｉ］［ｊ］］｝、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−１］、ｔ［ｖｔ［ｉ］［ｊ］］、ｔ［ｖｔ［ｉ］［ｊ］＋１］｝、および３角形｛ｔ［ｖｔ［ｉ］［ｊ］］、ｔ［ｖｔ［ｉ］［ｊ］＋１］、ｔ［ｖｔ［ｉ］［ｊ］＋２］｝を隣接３角形として設定できるので、頂点ｖ［ｉ］に隣接する３角形を容易に参照できる。また、同様に上述した３角形メッシュ生成方法により生成されたｎ次元の３角形メッシュデータ構造のインデックスがｉである頂点ｖ［ｉ］に隣接する３角形を参照する際、ｖｔ［ｉ］の示す配列のすべての要素ｖｔ［ｉ］［ｊ］について、ｋ＝０からはじめて、ｋ＝１までは、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝を隣接３角形として設定し、ｋ＝２以後は、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝が縮退３角形の場合、ｋの値を１増やして３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝を隣接３角形として設定し、さらにｋを１増やし、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝が縮退３角形でない場合、３角形｛ｔ［ｖｔ［ｉ］［ｊ］−２＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］−１＋ｋ］、ｔ［ｖｔ［ｉ］［ｊ］＋ｋ］｝を隣接３角形として設定できるので、縮退３角形が混在する場合でも頂点ｖ［ｉ］に隣接する３角形を容易に参照できる。
【００１７】
また、本発明によれば、上述した３角形メッシュ生成方法によった３角形メッシュ生成を実行させるようにプログラミングされているプログラムを情報処理装置上で実行させることができるので、情報処理装置を用いて同様の効果を得ることができる。
また、同様に、上述した３角形メッシュ参照方法によった３角形メッシュ参照を実行させるようにプログラミングされているプログラムを情報処理装置上で実行させることができるので、情報処理装置を用いて同様の発明の効果を得ることができる。
また、上述した本発明のプログラムを着脱可能な記憶媒体に記憶することができるので、その記憶媒体を３角形メッシュ生成、または３角形メッシュ参照をおこなえなかったパーソナルコンピュータなど情報処理装置に装着することにより、そのような情報処理装置においても同様の発明の効果を得ることができる。
【図面の簡単な説明】
【図１】本発明の一実施例を示す、３角形メッシュデータのデータ構造図。
【図２】本発明の一実施例を示す、３角形メッシュデータ要部のデータ構造図。
【図３】本発明の一実施例を示す、他の３角形メッシュデータ要部のデータ構造図。
【図４】本発明の一実施例を示す、他の３角形メッシュデータ要部のデータ構造図。
【図５】本発明の一実施例を示す、他の３角形メッシュデータ要部のデータ構造図。
【図６】本発明の一実施例を示す、他の３角形メッシュデータ要部のデータ構造図。
【図７】本発明の一実施例を示す、３角形メッシュ処理システムの構成ブロック図。
【図８】本発明の一実施例を示す、３角形メッシュ生成方法の動作フロー図。
【図９】本発明の一実施例を示す、３角形メッシュ生成方法の他の動作フロー図。
【図１０】本発明の一実施例を示す、３角形メッシュ生成方法の他の動作フロー図。
【図１１】本発明の一実施例を示す、３角形メッシュ生成方法の他の動作フロー図。
【図１２】本発明の一実施例を示す、３角形メッシュ生成方法の他の動作フロー図。
【図１３】本発明の他の実施例を示す、３角形メッシュ処理システムの構成ブロック図。
【図１４】従来技術の一例を示す、３角形メッシュ生成方法の説明図。
【図１５】本発明が解決しようとする課題を説明するための説明図。
【図１６】本発明が解決しようとする課題を説明するための他の説明図。
【符号の説明】
１  座標テーブル
２  ベクトルテーブル
３  頂点座標インデックステーブル
４  法線ベクトルインデックステーブル
５  隣接３角形インデックステーブル
１１  ＣＰＵ
１２  メモリ
１６  ３角形メッシュ生成プログラム
１７  ３角形メッシュ参照プログラム
【図１】
0004316923.tif 000002
【図２】
0004316923.tif 000003
【図３】
0004316923.tif 000004
【図４】
0004316923.tif 000005
【図５】
0004316923.tif 000006
【図６】
0004316923.tif 000007
【図７】
0004316923.tif 000008
【図８】
0004316923.tif 000009
【図９】
0004316923.tif 000010
【図１０】
0004316923.tif 000011
【図１１】
0004316923.tif 000012
【図１２】
0004316923.tif 000013
【図１３】
0004316923.tif 000014
【図１４】
0004316923.tif 000015
【図１５】
0004316923.tif 000016
【図１６】
0004316923.tif 000017