JP2004102763A - Data structure of triangular mesh, triangular mesh data generating method and reference method, program, recording medium and system - Google Patents
Data structure of triangular mesh, triangular mesh data generating method and reference method, program, recording medium and system Download PDFInfo
- Publication number
- JP2004102763A JP2004102763A JP2002265187A JP2002265187A JP2004102763A JP 2004102763 A JP2004102763 A JP 2004102763A JP 2002265187 A JP2002265187 A JP 2002265187A JP 2002265187 A JP2002265187 A JP 2002265187A JP 2004102763 A JP2004102763 A JP 2004102763A
- Authority
- JP
- Japan
- Prior art keywords
- triangle
- index
- mesh
- vertex
- triangles
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Image Generation (AREA)
Abstract
Description
【0001】
【発明の属する技術分野】
本発明は、三角形メッシュのデータ構造、三角形メッシュデータ生成方法およびその参照方法、プログラム、記録媒体並びにシステム関し、具体的には、3次元形状モデル生成装置や3次元形状モデル表示装置等に利用可能な三角形メッシュのデータ構造、三角形メッシュデータ生成方法およびその参照方法、プログラム、記録媒体並びにシステムに関し、形状計測装置や仮想現実感装置にも応用できる。
【0002】
【従来の技術】
3Dモデルを表示するための形式としては、PC上で標準的なOpenGLなどのグラフィックスライブラリによりサポートされている三角形メッシュ形式が一般的である(非特許文献1参照)。
とりわけ、三角形メッシュデータを三角形ストリップ形式で表現すると、表示速度、サイズの点で有利であり、三角形セット形式に比べると、2倍から3倍の効率を得ることができる。
【0003】
一方、干渉計算、距離計算、衝突検出などの応用においては、三角形メッシュ内の隣接する三角形への参照が必要となるので、三角形ストリップ形式はあまり用いられずに、三角形セット形式に隣接三角形へのリンクを加えたものがよく用いられている。
例えば、図1(2)に示すような4つの三角形(A,B,C,D)を図1(1)に示すように接続した図形において、三角形Aは、3つの頂点v0、v1、v2の座標データに加えて、各頂点における隣接三角形が何であるかを示すリンクも加えている(図1(3)参照)。
頂点v0、v1に対して、隣接三角形は三角形Bである。
頂点v1、v2に対して、隣接三角形は三角形Dである。
頂点v2、v0に対して、隣接三角形は三角形Cである。
【0004】
【非特許文献1】
三浦憲二郎著、「OpenGL 3Dグラフィックス入門」、
朝倉書店、1995年
【0005】
【発明が解決しようとする課題】
しかしながら、上述のような三角形セット形式に隣接三角形へのリンクを加えた形式には、次の問題点がある。
(1)三角形セット形式の約2倍の記憶領域が必要になる。
(2)三角形ストリップ形式の約2〜3倍の表示時間が必要になる。
【0006】
本発明は、上述のような実情を考慮してなされたものであって、三角形メッシュデータを表現する三角形ストリップ形式のまま、隣接三角形への参照を可能にする三角形メッシュのデータ構造、三角形メッシュデータ生成方法およびその参照方法、プログラム、記録媒体並びにシステムを提供することを目的とする。
【0007】
【課題を解決するための手段】
上記の課題を解決するために、本発明の請求項1の三角形メッシュのデータ構造は、n次元空間の三角形メッシュを格納するデータ構造であって、n次元の座標を格納する座標テーブルと、n次元のベクトルを格納するベクトルテーブルと、前記三角形メッシュの各三角形の頂点座標を格納した前記座標テーブルへのインデックスを三角形ストリップ形式により格納する頂点座標インデックステーブルと、前記三角形メッシュの頂点位置における法線ベクトルを格納した前記ベクトルテーブルへのインデックスを三角形ストリップ形式により格納する法線ベクトルインデックステーブルと、隣接三角形へのインデックスを格納する三角形インデックステーブルとを含むことを特徴とする。
【0008】
また、本発明の請求項2の三角形メッシュのデータ構造は、n次元空間の三角形メッシュを格納するデータ構造であって、前記三角形メッシュの各三角形の頂点座標を三角形ストリップ形式により格納する頂点座標テーブルと、前記三角形メッシュの各三角形の頂点位置における法線ベクトルを三角形ストリップ形式により格納する法線ベクトルテーブルと、前記頂点座標テーブルと前記法線ベクトルテーブルにおける各々の三角形ストリップ形式のサイズを格納するサイズテーブルと、隣接三角形へのインデックスを格納する三角形インデックステーブルとを含むことを特徴とする。
【0009】
また、本発明の請求項3は、請求項1または2に記載の三角形メッシュのデータ構造において、前記座標テーブル、前記ベクトルテーブル、前記頂点座標テーブル、前記法線ベクトルテーブルは、それぞれ浮動小数点表現および/またはベクトル量子化圧縮がなされていることを特徴とする。
【0010】
また、本発明の請求項4は、請求項1、2または3に記載の三角形メッシュのデータ構造において、三角形メッシュデータをコンピュータの記憶装置に保存するために用いられることを特徴とする。
また、本発明の請求項5は、請求項1、2または3に記載の三角形メッシュのデータ構造において、コンピュータから通信リンクを通して送信されることを特徴とする。
また、本発明の請求項6は、請求項1、2または3に記載の三角形メッシュのデータ構造において、コンピュータから通信リンクを通して受信されることを特徴とする。
【0011】
また、本発明の請求項7の三角形メッシュデータ生成方法は、n次元空間の三角形メッシュデータを生成する三角形メッシュデータ生成方法において、前記三角形メッシュの各三角形の頂点座標を座標テーブルに格納し、前記三角形メッシュの各三角形の頂点位置における法線ベクトルをベクトルテーブルに格納し、前記三角形メッシュの各三角形の頂点座標を格納した前記座標テーブルへのインデックスを三角形ストリップ形式により頂点座標インデックステーブルに格納し、前記三角形メッシュの頂点位置における法線ベクトルを格納した前記ベクトルテーブルへのインデックスを三角形ストリップ形式により法線ベクトルインデックステーブルに格納し、隣接三角形へのインデックスを三角形インデックステーブルに格納することを特徴とする。
【0012】
また、本発明の請求項8の三角形メッシュデータ生成方法は、n次元空間の三角形メッシュデータを生成する三角形メッシュデータ生成方法において、前記三角形メッシュの各三角形の頂点座標を三角形ストリップ形式により頂点座標テーブルに格納し、前記三角形メッシュの各三角形の頂点位置における法線ベクトルを三角形ストリップ形式により法線ベクトルテーブルに格納し、前記頂点座標テーブルと前記法線ベクトルテーブルにおける各々の三角形ストリップ形式のサイズをサイズテーブルに格納し、隣接三角形へのインデックスを三角形インデックステーブルに格納することを特徴とする。
【0013】
また、本発明の請求項9は、請求項7または8に記載の三角形メッシュデータ生成方法において、前記頂点座標インデックステーブルまたは前記座標テーブルをtで表し、前記三角形インデックステーブルをaで表し、ある三角形の3つの頂点のうち最初の頂点が格納されているtのインデックスをiで表したとき、
前記隣接三角形へのインデックスを三角形インデックステーブルに格納する方法は、
(1)三角形ストリップの最初の三角形へのインデックスをisとしたとき、この三角形の2頂点{t[is]、t[is+1]}を共有する三角形のインデックスをa[is]に設定し、
(2)三角形ストリップのすべての三角形へのインデックスをiとしたとき、これらの三角形の2頂点{t[i]、t[i+2]}を共有する三角形のインデックスをa[i+1]に設定し、
(3)三角形ストリップの最後の三角形へのインデックスをieとしたとき、この三角形の2頂点{t[ie+1]、t[ie+2]}を共有する三角形のインデックスをa[ie+2]に設定することを特徴とする。
【0014】
また、本発明の請求項10の三角形メッシュデータ参照方法は、請求項7、8または9に記載の三角形メッシュデータ生成方法で生成された三角形メッシュデータの三角形に隣接した三角形を参照する三角形メッシュデータ参照方法において、前記頂点座標インデックステーブルまたは前記座標テーブルをtで表し、前記三角形インデックステーブルをaで表し、ある三角形の3つの頂点のうち最初の頂点が格納されているtのインデックスをiで表したとき、三角形{t[i]、t[i+1]、t[i+2]}に隣接する三角形は、次の3つの隣接三角形であることを特徴とする。
(1)1つ目の隣接三角形
隣接三角形を三角形{t[a[i+1]]、t[a[i+1]+1]、t[a[i+1]+2]}とする。
(2)2つ目の隣接三角形
(イ)三角形{t[i−1]、t[i]、t[i+1]}が存在し縮退していない場合、隣接三角形を三角形{t[i−1]、t[i]、t[i+1]}とする。
(ロ)三角形{t[i−1]、t[i]、t[i+1]}が存在するが縮退しており、三角形{t[i−2]、t[i−1]、t[i]}が存在する場合、隣接三角形を三角形{t[i−2]、t[i−1]、t[i]}とする。
(ハ)三角形{t[i−1]、t[i]、t[i+1]}が存在しないか、あるいは、三角形{t[i−1]、t[i]、t[i+1]}が存在するが縮退し、三角形{t[i−2]、t[i−1]、t[i]}が存在しない場合、隣接三角形を三角形{t[a[i]]、t[a[i]+1]、t[a[i]+2]}とする。
(3)3つ目の隣接三角形
(イ)三角形{t[i+1]、t[i+2]、t[i+3]}が存在し縮退していない場合、隣接三角形を三角形{t[i+1]、t[i+2]、t[i+3]}とする。
(ロ)三角形{t[i+1]、t[i+2]、t[i+3]}が存在するが縮退しており、三角形{t[i+2]、t[i+3]、t[i+4]}が存在する場合、隣接三角形を三角形{t[i+2]、t[i+3]、t[i+4]}とする。
(ハ)三角形{t[i+1]、t[i+2]、t[i+3]}が存在しないか、あるいは、三角形{t[i+1]、t[i+2]、t[i+3]}が存在するが縮退しており、三角形{t[i+2]、t[i+3]、t[i+4]}が存在しない場合、隣接三角形を三角形{t[a[i+2]]、t[a[i+2]+1]、t[a[i+2]+2]}とする。
【0015】
また、本発明の請求項11のプログラムは、コンピュータに、請求項7、8、9または10に記載の三角形メッシュデータ生成方法を実行させるためのプログラムである。
また、本発明の請求項12の記録媒体は、請求項11に記載の三角形メッシュデータ生成プログラムを記録したコンピュータ読み取り可能な記録媒体である。また、本発明の請求項13のプログラムは、コンピュータに、請求項10に記載の三角形メッシュデータ参照方法を実行させるためのプログラムである。
また、本発明の請求項14の記録媒体は、請求項13に記載の三角形メッシュデータ参照プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0016】
また、本発明の請求項15のシステムは、n次元空間の三角形メッシュデータを生成および/または参照する1つ以上のコンピュータシステムであって、各コンピュータシステムは、プロセスを実行する中央処理装置と、記憶装置と、前記記憶装置に格納された請求項11記載のプログラムと、前記記憶装置に格納された請求項13記載のプログラムと、前記記憶装置に格納された請求項1、2または3に記載の三角形メッシュのデータ構造を持つ三角形メッシュデータとを有することを特徴とする。
また、本発明の請求項16は、請求項15に記載のシステムにおいて、2つ以上のコンピュータシステムが通信リンクで接続されたことを特徴とする。
また、本発明の請求項17は、請求項16に記載のシステムにおいて、前記通信リンクは、インターネット、イントラネット、広域ネットワーク、ローカルエリアネットワーク、無線周波数リンク、赤外線リンクおよびシリアル通信リンクのいずれかを含むことを特徴とする。
【0017】
以上のような構成により、三角形メッシュデータを使用した干渉計算、距離計算、衝突検出などに応用するときも、三角形セット形式と比較して表示速度、サイズの点で有利な三角形ストリップ形式のまま、隣接三角形を参照することができる。
また、三角形ストリップ形式で表現する記憶容量の約2倍程度で三角形メッシュデータを格納することができる。
【0018】
【発明の実施の形態】
以下、図面を参照して本発明の一実施形態について説明する。
<実施形態1>
(1)三角形メッシュのデータ構造
図2は、本発明の実施形態1に係るn次元空間の三角形メッシュのデータ構造を説明するための図である。
n次元空間の三角形メッシュのデータ構造は、n次元空間の座標を格納する座標テーブルと、n次元のベクトルを格納するベクトルテーブルと、三角形メッシュの各三角形の頂点座標を格納する座標テーブルへのインデックスを三角形ストリップ形式により格納する頂点座標インデックステーブルと、三角形メッシュの各三角形の頂点位置における法線ベクトルを格納するベクトルテーブルへのインデックスを三角形ストリップ形式により格納する法線ベクトルインデックステーブルと、隣接三角形へのインデックスを格納する三角形インデックステーブルとで構成する。
【0019】
図3は、図2のn次元空間の三角形メッシュのデータ構造における座標テーブルのデータ構造を説明するための図である。
図3に示した座標テーブルには、座標数(=nc)と、座標0から座標nc−1の順に座標を格納している。また、これらの座標は、それぞれ(x成分、y成分、z成分)の3成分から構成され、各成分は浮動小数点数あるいはベクトル量子化圧縮が行われている。
【0020】
図4は、図2のn次元空間の三角形メッシュのデータ構造におけるベクトルテーブルのデータ構造を説明するための図である。
図4のベクトルテーブルは、ベクトルの数(=nu)と、ベクトル0からベクトルnu−1の順にn次元のベクトルを格納している。これらのベクトルは、それぞれ(x成分、y成分、z成分)の3成分で構成され、各成分は浮動小数点数あるいはベクトル量子化圧縮が行われている。
【0021】
図5は、図2のn次元空間の三角形メッシュのデータ構造における頂点座標インデックステーブルのデータ構造を説明するための図である。
図5の頂点座標インデックステーブルのデータ構造は、頂点座標インデックス数(=nv)と、頂点座標インデックス0から頂点座標インデックスnv−1の順で座標テーブルへのインデックスを三角形ストリップ形式により格納する。三角形ストリップ形式では、三角形メッシュの各三角形の頂点座標を格納した座標テーブルへのインデックスとストリップの最後を表すデリミタ(=−1)が格納されている。
【0022】
図6は、図2のn次元空間の三角形メッシュのデータ構造における法線ベクトルインデックステーブルのデータ構造を説明するための図である。
図6の法線ベクトルインデックステーブルのデータ構造は、法線ベクトルインデックス数(=nn)と、法線ベクトルインデックス0から法線ベクトルインデックスnn−1の順でベクトルテーブルへのインデックスを三角形ストリップ形式で格納する。三角形ストリップ形式では、三角形メッシュの各三角形の頂点位置での法線ベクトルを格納したベクトルテーブルへのインデックスとストリップの最後を表すデリミタ(=−1)が格納されている。
【0023】
図7は、図2のn次元空間の三角形メッシュのデータ構造における三角形インデックステーブルのデータ構造を説明するための図である。
図7の三角形インデックステーブルのデータ構造は、三角形インデックス数(=nt)と、三角形インデックス0から三角形インデックスnt−1の順で隣接三角形へのインデックスを格納する。
【0024】
(2)三角形メッシュデータ生成方法
図8は、本発明の実施形態1に係るn次元空間の三角形メッシュデータの生成方法を説明するためのフローチャートである。
まず、三角形メッシュで用いる頂点座標の座標値を座標テーブルに図2(図3)の形式で格納する(ステップS1)。
三角形メッシュで用いる法線ベクトルをベクトルテーブルに図2(図4)の形式で格納する(ステップS2)。
三角形メッシュで用いる頂点座標を格納した座標テーブルへのインデックスを頂点座標インデックステーブルに三角形ストリップ形式により図2(図5)の形式で格納する(ステップS3)。
三角形メッシュで用いる法線ベクトルを格納したベクトルテーブルへのインデックスを法線ベクトルインデックステーブルに三角形ストリップ形式により図2(図6)の形式で格納する(ステップS4)。
隣接三角形へのインデックスを三角形インデックステーブルに図2(図7)の形式で格納する(ステップS5)。
以上により、n次元空間の三角形メッシュデータを生成できた。
【0025】
(3)隣接三角形のインデックス作成方法
まず、図9を参照して、1つの三角形ストリップに対して隣接した三角形を求める方法を説明する。
図9(A)に示したように、3つの三角形A1,A2,A3(以下、形状Tと呼ぶ)が1つの三角形ストリップで表現されており、その隣接三角形として5つの三角形B1,B2,B3,B4,B5があるとする。
【0026】
この形状Tの三角形ストリップ表現は、図9(B)のような順番で配列tに頂点座標(P0,P1,P2,P3,P4)を格納する。
即ち、三角形A1の各頂点(P0,P1,P2)を配列t[0]〜t[2]、三角形A2の各頂点(P1,P2,P3)を配列t[1]〜t[3]、三角形A3の各頂点(P2,P3,P4)を配列t[2]〜t[4]、ストリップの最後を示すために配列t[5]に−1を格納している。
また、この形状Tの隣接した三角形を格納する配列(三角形インデックステーブル)をaとする(図9(C))。
【0027】
このような状態で、隣接三角形を次の手順で求める。
(イ)三角形ストリップtの最初の三角形(A1)について
最初の2つの頂点{t[0]、t[1]}を共有する三角形(B1)を探し、そのインデックスをa[0]に設定する。
【0028】
(ロ)三角形ストリップtのすべての三角形(A1,A2,A3)について
三角形を表す3つの頂点を{t[i]、t[i+1]、t[i+2]}とすると、2頂点{t[i+2]、t[i]}を共有する三角形を探し、そのインデックスをa[i+1]に設定する。このときのiは、三角形の3つの座標のうち先頭座標を示す配列tのインデックスとする(例では、i=0,1,2)。
三角形A1(i=0)については、頂点P2と頂点P0を共有する隣接三角形B5をa[1]に設定する。
三角形A2(i=1)ついては、頂点P2と頂点P0を共有する隣接三角形B2をa[2]に設定する。
三角形A3(i=2)については、頂点P2と頂点P0を共有する隣接三角形B4をa[3]に設定する。
【0029】
(ハ)三角形ストリップの最後の三角形(A3)について
三角形を表す3つの頂点を{t[ie]、t[ie+1]、t[ie+2]}とすると、2頂点{t[ie+1]、t[ie+2]}を共有する三角形(B3)を探し、そのインデックスをa[ie+2]に設定する。このときのieは、最後の三角形の3つの座標のうち先頭座標を示す配列tのインデックスとする(例では、ie=2)。
三角形A3(ie=2)については、頂点P3と頂点P4を共有する隣接三角形B3をa[4]に設定する。
以上の操作によって、形状Tの隣接三角形の配列は、図9(C)のように設定される。
【0030】
図10は、隣接した三角形を求める方法を説明するためのフローチャートである。これは、本実施形態1の図8のステップS5および後述する実施形態2の図16のステップS54における「隣接三角形のインデックス作成方法」に適用される。
以下、次の記法を用いて説明する。
・配列t
三角形ストリップ形式で三角形の頂点座標を格納した頂点座標インデックステーブルを表す。
・配列a
隣接三角形のインデックスを格納する三角形インデックステーブルを表す。
・インデックスi
ある三角形の3つの頂点のうち最初の頂点が格納されている三角形ストリップtのインデックスである。
・フラグf
f=0のときは、三角形ストリップの先頭の三角形の処理をしているときを表す。
f=1のときは、三角形ストリップの2番目以降の三角形の処理をしているときを表し、1つの三角形ストリップの処理が終了すると、f=0に戻される。
【0031】
まず、配列t(頂点座標インデックステーブル)のインデックスiを0に初期化して、頂点座標インデックステーブルの先頭を指すように設定し、フラグfを0に初期化する(ステップS11)。
次に、配列a(三角形インデックステーブル)の要素すべてに(−1)を設定して初期化する(ステップS12)。
【0032】
まだ頂点座標インデックステーブル中の三角形の処理が終わっていないかを調べる(ステップS13)。即ち、(i+3)<n(頂点座標インデックステーブルの要素数)であるかを調べる。
(i+3)≧nである場合は(ステップS13のNO)、処理を終了する。
【0033】
一方、(i+3)<nである場合(ステップS13のYES)、三角形ストリップの三角形{t[i]、t[i+1]、t[i+2]}について、2頂点{t[i]、t[i+2]}を共有する三角形を頂点座標インデックステーブルの中から探し、その三角形の3頂点の最初の頂点を格納しているインデックスをa[i+1]に設定する(ステップS14)。
【0034】
フラグf=0であるかを調べ(ステップS15)、f=0であれば、三角形ストリップの最初の三角形の処理であるから、三角形ストリップの最初の三角形{t[i]、t[i+1]、t[i+2]}について、最初の2頂点{t[i]、t[i+1]}を共有する三角形を頂点座標インデックステーブルの中から探し、その三角形の3頂点の最初の頂点を格納しているインデックスをa[i]に設定する(ステップS16)。
フラグf=1とし、三角形ストリップの2番目以降の三角形の処理を行うように設定する(ステップS17)。
【0035】
1つの三角形ストリップが最後になったかを調べる(ステップS18)。
1つの三角形ストリップの最後にはデリミタ(−1)が設定されているので、処理中の三角形の4番目の頂点(t[i+3])がデリミタ(−1)のとき、その三角形ストリップが終了したと判断できる。
1つの三角形ストリップが最後になった場合(ステップS18のYES)、三角形ストリップの最後の三角形{t[i]、t[i+1]、t[i+2]}について、2頂点{t[i+1]、t[i+2]}を共有する三角形を頂点座標インデックステーブルの中から探し、その三角形の3頂点の最初の頂点を格納しているインデックスをa[i+2]に設定する(ステップS19)。
次の三角形ストリップを処理するために、フラグf=0に初期化し、次の三角形ストリップの先頭のインデックスを4つ進め(i=i+4)(ステップS20,S21)、ステップS13へ戻る。
一方、1つの三角形ストリップが最後でなかった場合(ステップS18のNO)、次の三角形を処理するためにインデックスを1つ進め(i=i+1)(ステップS22)、ステップS13へ戻る。
【0036】
以上により、三角形ストリップにより表現された頂点座標インデックステーブルから、隣接する三角形インデックステーブルを作成することができた。
【0037】
(4)隣接三角形の参照方法
図11は、本実施形態1および後述する実施形態2のn次元の三角形メッシュのデータ構造において、ある三角形に隣接した三角形を参照するための処理手順を説明するためのフローチャートである。
以下、次の記法を用いて説明する。
・配列t
三角形ストリップ形式で三角形の頂点座標を格納した頂点座標インデックステーブルを表す。
・配列a
隣接三角形のインデックスを格納する三角形インデックステーブルを表す。
・インデックスi
ある三角形の3つの頂点のうち最初の頂点が格納されている三角形ストリップtのインデックスである。
【0038】
図11を用いて、頂点座標インデックステーブルのインデックスがiである三角形{t[i]、t[i+1]、t[i+2]}に隣接する三角形を参照する方法について説明する。
まず、{t[a[i+1]]、t[a[i+1]+1]、t[a[i+1]+2]}を最初の隣接三角形とする(ステップS31)。
【0039】
三角形{t[i−1]、t[i]、t[i+1]}が存在し(ステップS32のYES)、縮退していない場合(ステップS32のYES,S33のNO)、この三角形{t[i−1]、t[i]、t[i+1]}を2番目の隣接三角形とする(ステップS34)。
【0040】
また、三角形{t[i−1]、t[i]、t[i+1]}が存在するが縮退しており、三角形{t[i−2]、t[i−1]、t[i]}が存在する場合(ステップS32のYES,S33のYES,S35のYES)、三角形{t[i−2]、t[i−1]、t[i]}を2番目の隣接三角形とする(ステップS36)。
【0041】
また、三角形{t[i−1]、t[i]、t[i+1]}が存在しない場合(ステップS32のNO)、または、三角形{t[i−1]、t[i]、t[i+1]}が存在するが縮退しており、三角形{t[i−2]、t[i−1]、t[i]}が存在しない場合(ステップS32のYES,S33のYES,S35のNO)、三角形{t[a[i]]、t[a[i]+1]、t[a[i]+2]}を2番目の隣接三角形とする(ステップS37)。
【0042】
さらに、三角形{t[i+1]、t[i+2]、t[i+3]}が存在し縮退していない場合(ステップS38のYES,S39のNO)、三角形{t[i+1]、t[i+2]、t[i+3]}を3番目の隣接三角形とする(ステップS40)。
また、三角形{t[i+1]、t[i+2]、t[i+3]}が存在するが縮退しており、三角形{t[i+2]、t[i+3]、t[i+4]}が存在する場合(ステップS38のYES,S39のYES,S41のYES)、三角形{t[i+2]、t[i+3]、t[i+4]}を3番目の隣接三角形とする(ステップS42)。
また、三角形{t[i+1]、t[i+2]、t[i+3]}が存在しない場合(ステップS38のNO)、または、三角形{t[i+1]、t[i+2]、t[i+3]}が存在するが縮退しており、三角形{t[i+2]、t[i+3]、t[i+4]}が存在しない場合(ステップS38のYES,S39のYES,S41のNO)、{t[a[i+2]]、t[a[i+2]+1]、t[a[i+2]+2]}を3番目の隣接三角形とする(ステップS43)。
【0043】
以上により、ある三角形に隣接した三角形を参照することができる。
【0044】
<実施形態2>
(1)三角形メッシュのデータ構造
図12は、本発明の実施形態2に係るn次元空間の三角形メッシュのデータ構造を説明するための図である。
n次元空間の三角形メッシュのデータ構造は、n次元空間の三角形の頂点座標を三角形ストリップ形式により格納する頂点座標テーブルと、n次元の三角形の頂点位置での法線ベクトルを三角形ストリップ形式により格納する法線ベクトルテーブルと、頂点座標テーブルと法線ベクトルテーブルにおける各々の三角形ストリップ形式のサイズを格納するサイズテーブルと、隣接三角形へのインデックスを格納する三角形インデックステーブルとで構成する。
【0045】
図13は、図12のn次元空間の三角形メッシュのデータ構造における頂点座標テーブルのデータ構造を説明するための図である。
図13に示した頂点座標テーブルには、頂点座標数(=nv)と、頂点座標0から頂点座標nv−1の順にn次元空間の三角形の頂点座標を三角形ストリップ形式により格納している。また、これらの頂点座標は、それぞれ(x成分、y成分、z成分)の3成分から構成され、各成分は浮動小数点数あるいはベクトル量子化圧縮が行われている。三角形ストリップ形式では、三角形メッシュの頂点座標とストリップの最後を表すデリミタ(=−1)が格納されている。
【0046】
図14は、図12のn次元空間の三角形メッシュのデータ構造における法線ベクトルテーブルのデータ構造を説明するための図である。
図14の法線ベクトルテーブルは、法線ベクトルの数(=nn)と、法線ベクトル0から法線ベクトルnn−1の順にn次元の三角形の頂点位置での法線ベクトルを三角形ストリップ形式で格納している。これらの法線ベクトルは、それぞれ(x成分、y成分、z成分)の3成分で構成され、各成分は浮動小数点数あるいはベクトル量子化圧縮が行われている。三角形ストリップ形式では、法線ベクトルとストリップの最後を表すデリミタ(=−1)が格納されている。
【0047】
図15は、図12のn次元空間の三角形メッシュのデータ構造におけるサイズテーブルのデータ構造を説明するための図である。
図15のサイズテーブルのデータ構造は、サイズテーブルの要素数を示すサイズ数(ns)と、サイズ0からサイズns−1の順で頂点座標テーブルと法線ベクトルテーブルにおける各々の三角形ストリップ形式のサイズを格納する。
【0048】
三角形インデックステーブルのデータ構造は、三角形インデックス数(=nt)と、三角形インデックス0から三角形インデックスnt−1の順で隣接三角形へのインデックスを格納しており、上述した図2(図7)と同じ形式を持っている。ただし、このインデックスは、本実施形態2では頂点座標テーブルへのインデックスである。
【0049】
(2)三角形メッシュデータ生成方法
図16は、本発明の実施形態2に係るn次元空間の三角形メッシュデータの生成方法を説明するためのフローチャートである。
まず、三角形メッシュで用いる頂点座標の座標値を頂点座標テーブルに三角形ストリップ形式を用いて図12(図13)の形式で格納する(ステップS51)。
三角形メッシュで用いる法線ベクトルを法線ベクトルテーブルに三角形ストリップ形式を用いて図12(図14)の形式で格納する(ステップS52)。
頂点座標テーブルと法線ベクトルテーブルにおける各々の三角形ストリップ形式のサイズをサイズテーブルに図12(図15)の形式で格納する(ステップS53)。
隣接三角形へのインデックスを三角形インデックステーブルに図12(図7)の形式で格納する(ステップS54)。
以上により、n次元空間の三角形メッシュデータを生成できた。
【0050】
本実施形態2における隣接三角形のインデックス作成方法や隣接三角形の参照方法は、上述の実施形態1の(3)および(4)で説明した方法によって実施できる。
ただし、実施形態1の頂点座標インデックステーブル(図5)の代わりに頂点座標テーブル(図13)を使う。
【0051】
<実施形態3>
本発明は上述した実施形態のみに限定されたものではない。上述した実施形態を構成する三角形メッシュデータ生成方法または参照方法をそれぞれプログラム化し、あらかじめCD−ROM等の記録媒体に書き込んでおき、コンピュータに搭載したCD−ROMドライブのような媒体駆動装置にこのCD−ROM等を装着して、これらのプログラムをコンピュータのメモリあるいは記憶装置に格納し、それを実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラム自体が上述した実施形態を実現することになり、そのプログラムおよびそのプログラムを記録した記録媒体も本発明を構成することになる。
【0052】
なお、記録媒体としては半導体媒体(例えば、ROM、不揮発性メモリカード等)、光媒体(例えば、DVD、MO、MD、CD−R等)、磁気媒体(例えば、磁気テープ、フレキシブルディスク等)のいずれであってもよい。
【0053】
また、ロードしたプログラムを実行することにより上述した実施形態が実現されるだけでなく、そのプログラムの指示に基づき、オペレーティングシステム等が実際の処理の一部または全部を行い、その処理によって上述した実施形態が実現される場合も含まれる。
【0054】
また、上述した実施形態を実現するプログラムが、機能拡張ボードや機能拡張ユニットに備わるメモリにロードされ、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって、上述した実施形態が実現される場合も含まれる。
【0055】
さらに、上述したプログラムをサーバコンピュータの磁気ディスク等の記憶装置に格納しておき、通信網で接続された利用者のコンピュータからダウンロード等の形式で頒布する場合、このサーバコンピュータの記憶装置も本発明の記録媒体に含まれる。
【0056】
また、上述した三角形メッシュの生成方法を実施するための第1のコンピュータと三角形メッシュの参照方法を実施するための第2のコンピュータを通信リンクで接続し、第1のコンピュータで生成して得られる図2または図11の形式で格納された三角形メッシュデータを通信リンクによって第2のコンピュータへ送る。
第2のコンピュータは、この三角形メッシュデータを受信し、三角形メッシュにおける隣接三角形を参照する。
ここで、通信リンクの例として、シリアルリンク(RS−232)、パラレルリンク、無線リンク、赤外線リンク、ネットワーク(ローカルエリアネットワーク、広域ネットワーク、イントラネット、インターネット)がある。
このようにすると、一方のコンピュータで作成された曲面から作成された三角形メッシュデータを他方のコンピュータで受信して、表示や加工等を行うことができる。
また、上述の第1のコンピュータと第2のコンピュータとを同じものとしてもよい。
【0057】
【発明の効果】
以上説明したように本発明によれば、三角形メッシュデータを使用した干渉計算、距離計算、衝突検出などに応用するときも、三角形セット形式と比較して表示速度、サイズの点で有利な三角形ストリップ形式のまま、隣接三角形を参照することができる。
また、三角形ストリップ形式で表現する記憶容量の約2倍程度で三角形メッシュデータを格納することができる。
さらに、3次元CADシステムに本発明の三角形メッシュのデータ構造を使用することによって、コンパクトな3次元データを実現できる。
【図面の簡単な説明】
【図1】三角形セット形式に隣接三角形へのリンクを加えた表現形式を説明するための図である。
【図2】本発明の実施形態1に係るn次元の三角形メッシュのデータ構造を示す図である。
【図3】座標テーブルのデータ構造を示す図である。
【図4】ベクトルテーブルのデータ構造を示す図である。
【図5】頂点座標インデックステーブルのデータ構造を示す図である。
【図6】法線ベクトルインデックステーブルのデータ構造を示す図である。
【図7】三角形インデックステーブルのデータ構造を示す図である。
【図8】本発明の実施形態1に係るn次元の三角形メッシュデータ生成方法の処理手順を示すフローチャートである。
【図9】1つの三角形ストリップに対して隣接した三角形を求める方法を説明するための図である。
【図10】隣接三角形インデックスの作成方法の処理手順を示すフローチャートである。
【図11】隣接三角形の参照方法の処理手順を示すフローチャートである。
【図12】本発明の実施形態2に係るn次元の三角形メッシュのデータ構造を示す図である。
【図13】図11における頂点座標テーブルのデータ構造を示す図である。
【図14】図11における法線ベクトルテーブルのデータ構造を示す図である。
【図15】図11における三角形ストリップのサイズテーブルのデータ構造を示す図である。
【図16】本発明の実施形態2に係るn次元の三角形メッシュデータ生成方法の処理手順を示すフローチャートである。
【符号の説明】[0001]
TECHNICAL FIELD OF THE INVENTION
The present invention relates to a triangular mesh data structure, a triangular mesh data generation method and a reference method thereof, a program, a recording medium, and a system, and more specifically, can be used for a three-dimensional shape model generation device, a three-dimensional shape model display device, and the like. A data structure of a triangular mesh, a method of generating triangular mesh data and a reference method thereof, a program, a recording medium, and a system can be applied to a shape measuring device and a virtual reality device.
[0002]
[Prior art]
As a format for displaying a 3D model, a triangle mesh format supported by a graphics library such as standard OpenGL on a PC is generally used (see Non-Patent Document 1).
In particular, when the triangle mesh data is expressed in a triangle strip format, it is advantageous in terms of display speed and size, and it is possible to obtain twice to three times the efficiency as compared with the triangle set format.
[0003]
On the other hand, in applications such as interference calculation, distance calculation, and collision detection, it is necessary to refer to adjacent triangles in the triangle mesh.Therefore, the triangle strip format is not often used. What added a link is often used.
For example, in a figure in which four triangles (A, B, C, D) as shown in FIG. 1 (2) are connected as shown in FIG. 1 (1), the triangle A has three vertices v0, v1, v2. In addition to the coordinate data, a link indicating what the adjacent triangle at each vertex is is also added (see FIG. 1 (3)).
For the vertices v0 and v1, the adjacent triangle is triangle B.
For vertices v1 and v2, the adjacent triangle is triangle D.
For vertices v2 and v0, the adjacent triangle is triangle C.
[0004]
[Non-patent document 1]
Kenjiro Miura, "Introduction to OpenGL 3D Graphics",
Asakura Shoten, 1995
[0005]
[Problems to be solved by the invention]
However, the format in which a link to an adjacent triangle is added to the above-described triangle set format has the following problems.
(1) Approximately twice the storage area of the triangle set format is required.
(2) About 2-3 times as long as the display time of the triangular strip format is required.
[0006]
The present invention has been made in view of the above-described circumstances, and has a triangle mesh data structure that enables reference to adjacent triangles in a triangle strip format expressing triangle mesh data. An object of the present invention is to provide a generation method, a reference method thereof, a program, a recording medium, and a system.
[0007]
[Means for Solving the Problems]
In order to solve the above problem, a data structure of a triangle mesh according to
[0008]
The data structure of the triangle mesh according to
[0009]
According to a third aspect of the present invention, in the data structure of the triangular mesh according to the first or second aspect, the coordinate table, the vector table, the vertex coordinate table, and the normal vector table each include a floating-point expression and And / or is characterized by being subjected to vector quantization compression.
[0010]
According to a fourth aspect of the present invention, in the data structure of the triangular mesh according to the first, second, or third aspect, the data is used for storing the triangular mesh data in a storage device of a computer.
According to a fifth aspect of the present invention, in the data structure of the triangular mesh according to the first, second or third aspect, the data is transmitted from a computer via a communication link.
According to a sixth aspect of the present invention, in the data structure of the triangular mesh according to the first, second or third aspect, the data is received from a computer via a communication link.
[0011]
Further, according to a triangle mesh data generation method of the present invention, in the triangle mesh data generation method for generating triangle mesh data in an n-dimensional space, vertex coordinates of each triangle of the triangle mesh are stored in a coordinate table; A normal vector at a vertex position of each triangle of the triangle mesh is stored in a vector table, and an index to the coordinate table storing vertex coordinates of each triangle of the triangle mesh is stored in a vertex coordinate index table in a triangle strip format, An index into the vector table storing the normal vector at the vertex position of the triangle mesh is stored in a normal vector index table in a triangle strip format, and an index to an adjacent triangle is stored in a triangle index table. To.
[0012]
According to a eighth aspect of the present invention, in the triangle mesh data generating method for generating triangular mesh data in an n-dimensional space, the vertex coordinates of each triangle of the triangle mesh are stored in a vertex coordinate table in a triangle strip format. The normal vector at the vertex position of each triangle of the triangle mesh is stored in a normal vector table in a triangle strip format, and the size of each triangle strip format in the vertex coordinate table and the normal vector table is determined by the size. It is stored in a table, and an index to an adjacent triangle is stored in a triangle index table.
[0013]
According to a ninth aspect of the present invention, in the triangle mesh data generation method according to the seventh or eighth aspect, the vertex coordinate index table or the coordinate table is represented by t, the triangle index table is represented by a, and a triangle When the index of t at which the first vertex of the three vertices is stored is represented by i,
A method of storing an index to the adjacent triangle in a triangle index table includes:
(1) When the index to the first triangle of the triangle strip is is, the index of the triangle sharing the two vertices {t [is], t [is + 1]} of this triangle is set to a [is],
(2) Assuming that the indices to all the triangles of the triangle strip are i, the indices of the triangles sharing the two vertices {t [i], t [i + 2]} of these triangles are set to a [i + 1],
(3) Assuming that the index to the last triangle of the triangle strip is ie, the index of a triangle sharing two vertices {t [ie + 1], t [ie + 2]} of this triangle is set to a [ie + 2]. Features.
[0014]
According to a tenth aspect of the present invention, there is provided a triangle mesh data referencing method which refers to a triangle adjacent to a triangle of the triangle mesh data generated by the triangle mesh data generating method according to the seventh, eighth or ninth aspect. In the reference method, the vertex coordinate index table or the coordinate table is represented by t, the triangle index table is represented by a, and the index of t at which the first vertex of the three vertices of a triangle is stored is represented by i. Then, the triangles adjacent to the triangle {t [i], t [i + 1], t [i + 2]} are characterized by the following three adjacent triangles.
(1) First adjacent triangle
Let the adjacent triangles be triangles {t [a [i + 1]], t [a [i + 1] +1], t [a [i + 1] +2]}.
(2) Second adjacent triangle
(A) If the triangles {t [i-1], t [i], t [i + 1]} exist and do not degenerate, the adjacent triangles are set as triangles {t [i-1], t [i], t [ i + 1]}.
(B) Triangles {t [i-1], t [i], t [i + 1]} exist but are degenerate, and triangles {t [i-2], t [i-1], t [i] ]}, The neighboring triangles are set as triangles {t [i-2], t [i-1], t [i]}.
(C) The triangle {t [i-1], t [i], t [i + 1]} does not exist, or the triangle {t [i-1], t [i], t [i + 1]} exists. However, if the triangle {t [i-2], t [i-1], t [i]} does not exist, the adjacent triangle is changed to the triangle {t [a [i]], t [a [i] ". +1], t [a [i] +2]}.
(3) Third adjacent triangle
(A) When the triangles {t [i + 1], t [i + 2], t [i + 3]} exist and are not degenerated, the adjacent triangles are defined as triangles {t [i + 1], t [i + 2], t [i + 3]}. I do.
(B) When triangles {t [i + 1], t [i + 2], t [i + 3]} exist but are degenerated, and triangles {t [i + 2], t [i + 3], t [i + 4]} exist. , And the adjacent triangle is a triangle {t [i + 2], t [i + 3], t [i + 4]}.
(C) The triangle {t [i + 1], t [i + 2], t [i + 3]} does not exist, or the triangle {t [i + 1], t [i + 2], t [i + 3]} exists but degenerates If there are no triangles {t [i + 2], t [i + 3], t [i + 4]}, the neighboring triangles are defined as triangles {t [a [i + 2]], t [a [i + 2] +1], t [a [I + 2] +2]}.
[0015]
Further, a program according to claim 11 of the present invention is a program for causing a computer to execute the triangle mesh data generation method according to claim 7, 8, 9 or 10.
A recording medium according to a twelfth aspect of the present invention is a computer-readable recording medium recording the triangular mesh data generation program according to the eleventh aspect. A program according to a thirteenth aspect of the present invention is a program for causing a computer to execute the triangle mesh data reference method according to the tenth aspect.
A recording medium according to a fourteenth aspect of the present invention is a computer-readable recording medium that records the triangular mesh data reference program according to the thirteenth aspect.
[0016]
The system of claim 15 of the present invention is one or more computer systems for generating and / or referencing triangular mesh data in n-dimensional space, each computer system comprising: a central processing unit for executing a process; 14. The storage device, the program according to claim 11 stored in the storage device, the program according to claim 13 stored in the storage device, and the storage device according to
According to a sixteenth aspect of the present invention, in the system according to the fifteenth aspect, two or more computer systems are connected by a communication link.
According to a seventeenth aspect of the present invention, in the system according to the sixteenth aspect, the communication link includes any one of the Internet, an intranet, a wide area network, a local area network, a radio frequency link, an infrared link, and a serial communication link. It is characterized by the following.
[0017]
With the above configuration, even when applied to interference calculation using triangular mesh data, distance calculation, collision detection, etc., it remains in the triangle strip format, which is advantageous in terms of display speed and size compared to the triangle set format, Adjacent triangles can be referenced.
Further, the triangle mesh data can be stored with about twice the storage capacity expressed in the triangle strip format.
[0018]
BEST MODE FOR CARRYING OUT THE INVENTION
Hereinafter, an embodiment of the present invention will be described with reference to the drawings.
<First embodiment>
(1) Data structure of triangle mesh
FIG. 2 is a diagram for explaining a data structure of a triangular mesh in an n-dimensional space according to the first embodiment of the present invention.
The data structure of the triangle mesh in the n-dimensional space is an index into a coordinate table that stores the coordinates of the n-dimensional space, a vector table that stores the n-dimensional vector, and a coordinate table that stores the vertex coordinates of each triangle of the triangle mesh. A vertex coordinate index table that stores in a triangle strip format, a normal vector index table that stores an index to a vector table that stores a normal vector at a vertex position of each triangle of a triangle mesh in a triangle strip format, and an adjacent triangle. And a triangle index table that stores the index of the triangle.
[0019]
FIG. 3 is a diagram for explaining the data structure of the coordinate table in the data structure of the triangular mesh in the n-dimensional space in FIG.
The coordinate table shown in FIG. 3 stores the number of coordinates (= nc) and coordinates in the order of
[0020]
FIG. 4 is a diagram for explaining the data structure of the vector table in the data structure of the triangular mesh in the n-dimensional space in FIG.
The vector table in FIG. 4 stores the number of vectors (= nu) and n-dimensional vectors in the order from
[0021]
FIG. 5 is a diagram for explaining the data structure of the vertex coordinate index table in the data structure of the triangular mesh in the n-dimensional space in FIG.
The data structure of the vertex coordinate index table in FIG. 5 stores the number of vertex coordinate indices (= nv) and indices to the coordinate table in the order of vertex coordinate
[0022]
FIG. 6 is a diagram for explaining the data structure of the normal vector index table in the data structure of the triangular mesh in the n-dimensional space in FIG.
The data structure of the normal vector index table shown in FIG. 6 is as follows: the number of normal vector indexes (= nn) and the indexes into the vector table in the order of
[0023]
FIG. 7 is a diagram for explaining the data structure of the triangle index table in the data structure of the triangle mesh in the n-dimensional space in FIG.
The data structure of the triangle index table in FIG. 7 stores the number of triangle indices (= nt) and indexes to adjacent triangles in the order of
[0024]
(2) Triangular mesh data generation method
FIG. 8 is a flowchart illustrating a method for generating triangular mesh data in an n-dimensional space according to the first embodiment of the present invention.
First, the coordinate values of the vertex coordinates used in the triangular mesh are stored in the coordinate table in the format of FIG. 2 (FIG. 3) (step S1).
The normal vectors used in the triangular mesh are stored in the vector table in the format of FIG. 2 (FIG. 4) (step S2).
An index to the coordinate table storing the vertex coordinates used in the triangle mesh is stored in the vertex coordinate index table in the form of FIG. 2 (FIG. 5) in a triangle strip format (step S3).
The index to the vector table storing the normal vectors used in the triangle mesh is stored in the normal vector index table in the form of FIG. 2 (FIG. 6) in a triangle strip format (step S4).
The index to the adjacent triangle is stored in the triangle index table in the format shown in FIG. 2 (FIG. 7) (step S5).
As described above, the triangle mesh data in the n-dimensional space can be generated.
[0025]
(3) Index creation method for adjacent triangles
First, with reference to FIG. 9, a description will be given of a method for obtaining adjacent triangles for one triangle strip.
As shown in FIG. 9A, three triangles A 1 , A 2 , A 3 (Hereinafter referred to as a shape T) is represented by one triangle strip, and five triangles B as its adjacent triangles 1 , B 2 , B 3 , B 4 , B 5 Suppose there is.
[0026]
The triangular strip representation of the shape T is obtained by adding the vertex coordinates (P 0 , P 1 , P 2 , P 3 , P 4 ) Is stored.
That is, the triangle A 1 Each vertex (P 0 , P 1 , P 2 ) In the arrays t [0] to t [2], triangle A 2 Each vertex (P 1 , P 2 , P 3 ) With arrays t [1] to t [3], triangle A 3 Each vertex (P 2 , P 3 , P 4 ) Are stored in arrays t [2] to t [4], and -1 is stored in array t [5] to indicate the end of the strip.
Also, an array (triangle index table) for storing adjacent triangles of the shape T is represented by a (FIG. 9C).
[0027]
In such a state, the adjacent triangle is obtained by the following procedure.
(A) The first triangle (A 1 )about
A triangle (B that shares the first two vertices {t [0], t [1]}} 1 ) And set its index to a [0].
[0028]
(B) All triangles (A 1 , A 2 , A 3 )about
Assuming that three vertices representing a triangle are {t [i], t [i + 1], t [i + 2]}, a triangle sharing two vertices {t [i + 2], t [i]} is searched for, and its index is set to a Set to [i + 1]. At this time, i is an index of the array t indicating the leading coordinate among the three coordinates of the triangle (in the example, i = 0, 1, 2).
Triangle A 1 For (i = 0), the vertex P 2 And vertex P 0 Adjacent triangles B that share 5 Is set to a [1].
Triangle A 2 (I = 1) for the vertex P 2 And vertex P 0 Adjacent triangles B that share 2 Is set to a [2].
Triangle A 3 For (i = 2), the vertex P 2 And vertex P 0 Adjacent triangles B that share 4 Is set to a [3].
[0029]
(C) The last triangle of the triangle strip (A 3 )about
Assuming that three vertices representing a triangle are {t [ie], t [ie + 1], t [ie + 2]}, a triangle (B) sharing two vertices {t [ie + 1], t [ie + 2]} 3 ) And set its index to a [ie + 2]. In this case, ie is set as an index of the array t indicating the start coordinate among the three coordinates of the last triangle (ie = 2 in the example).
Triangle A 3 For (ie = 2), the vertex P 3 And vertex P 4 Adjacent triangles B that share 3 Is set to a [4].
By the above operation, the arrangement of the adjacent triangles of the shape T is set as shown in FIG.
[0030]
FIG. 10 is a flowchart for explaining a method of obtaining adjacent triangles. This is applied to the “adjacent triangle index creation method” in step S5 of FIG. 8 of the first embodiment and step S54 of FIG. 16 of the second embodiment described later.
Hereinafter, description will be made using the following notation.
・ Array t
It represents a vertex coordinate index table storing the vertex coordinates of a triangle in a triangle strip format.
・ Array a
5 shows a triangle index table storing indexes of adjacent triangles.
・ Index i
This is the index of the triangle strip t in which the first vertex of the three vertices of a triangle is stored.
・ Flag f
When f = 0, it indicates that the processing of the first triangle of the triangle strip is being performed.
When f = 1, it indicates that the processing of the second and subsequent triangles of the triangle strip is being performed, and when the processing of one triangle strip is completed, f = 0 is returned.
[0031]
First, the index i of the array t (vertex coordinate index table) is initialized to 0, set to point to the top of the vertex coordinate index table, and the flag f is initialized to 0 (step S11).
Next, (-1) is set to all elements of the array a (triangle index table) and initialized (step S12).
[0032]
It is checked whether the processing of the triangle in the vertex coordinate index table has not been completed yet (step S13). That is, it is checked whether (i + 3) <n (the number of elements in the vertex coordinate index table).
If (i + 3) ≧ n (NO in step S13), the process ends.
[0033]
On the other hand, if (i + 3) <n (YES in step S13), two vertices {t [i], t [i + 2] for the triangle {t [i], t [i + 1], t [i + 2]} of the triangle strip. ] Is searched for in the vertex coordinate index table, and the index storing the first vertex of the three vertices of the triangle is set to a [i + 1] (step S14).
[0034]
It is checked whether or not the flag f = 0 (step S15). If f = 0, the processing is the processing of the first triangle of the triangle strip, so the first triangle of the triangle strip Δt [i], t [i + 1], For t [i + 2]}, a triangle sharing the first two vertices {t [i], t [i + 1]} is searched from the vertex coordinate index table, and the first three vertices of the triangle are stored. The index is set to a [i] (step S16).
The flag f = 1 is set, and processing is performed so as to process the second and subsequent triangles of the triangle strip (step S17).
[0035]
It is checked whether one triangle strip is the last (step S18).
Since the delimiter (-1) is set at the end of one triangle strip, when the fourth vertex (t [i + 3]) of the triangle being processed is the delimiter (-1), the triangle strip ends. Can be determined.
If one triangle strip is the last (YES in step S18), two vertices {t [i + 1], t are set for the last triangle {t [i], t [i + 1], t [i + 2]} of the triangle strip. A triangle sharing [i + 2]} is searched from the vertex coordinate index table, and an index storing the first of three vertices of the triangle is set to a [i + 2] (step S19).
In order to process the next triangle strip, the flag is initialized to f = 0, the leading index of the next triangle strip is advanced by four (i = i + 4) (steps S20, S21), and the process returns to step S13.
On the other hand, if one triangle strip is not the last (NO in step S18), the index is advanced by one to process the next triangle (i = i + 1) (step S22), and the process returns to step S13.
[0036]
As described above, an adjacent triangle index table can be created from the vertex coordinate index table represented by the triangle strip.
[0037]
(4) How to refer to adjacent triangles
FIG. 11 is a flowchart for explaining a processing procedure for referring to a triangle adjacent to a certain triangle in the data structure of the n-dimensional triangle mesh according to the first embodiment and a second embodiment described later.
Hereinafter, description will be made using the following notation.
・ Array t
It represents a vertex coordinate index table storing the vertex coordinates of a triangle in a triangle strip format.
・ Array a
5 shows a triangle index table storing indexes of adjacent triangles.
・ Index i
This is the index of the triangle strip t in which the first vertex of the three vertices of a triangle is stored.
[0038]
A method of referring to a triangle adjacent to a triangle {t [i], t [i + 1], t [i + 2]} whose index in the vertex coordinate index table is i will be described with reference to FIG.
First, {t [a [i + 1]], t [a [i + 1] +1], t [a [i + 1] +2]} is set as the first adjacent triangle (step S31).
[0039]
If there is a triangle {t [i-1], t [i], t [i + 1]} (YES in step S32) and it is not degenerated (YES in step S32, NO in S33), this triangle {t [ i-1], t [i], t [i + 1]} are set as the second adjacent triangle (step S34).
[0040]
Also, triangles {t [i-1], t [i], t [i + 1]} exist but are degenerated, and triangles {t [i-2], t [i-1], t [i] If} exists (YES in step S32, YES in S33, YES in S35), the triangle {t [i-2], t [i-1], t [i]} is set as the second adjacent triangle ( Step S36).
[0041]
If there is no triangle {t [i-1], t [i], t [i + 1]} (NO in step S32), or triangles {t [i-1], t [i], t [ i + 1]} exists but is degenerated, and the triangles {t [i-2], t [i-1], t [i]} do not exist (YES in step S32, YES in S33, NO in S35). ), And the triangle {t [a [i]], t [a [i] +1], t [a [i] +2]} as the second adjacent triangle (step S37).
[0042]
Further, when triangles {t [i + 1], t [i + 2], t [i + 3]} exist and are not degenerated (YES in step S38, NO in S39), triangles {t [i + 1], t [i + 2], Let t [i + 3]} be the third adjacent triangle (step S40).
Also, when triangles {t [i + 1], t [i + 2], t [i + 3]} exist but are degenerated, and triangles {t [i + 2], t [i + 3], t [i + 4]} exist ( The triangle {t [i + 2], t [i + 3], t [i + 4]} is set as the third adjacent triangle (YES in step S38, YES in S39, YES in S41) (step S42).
If there is no triangle {t [i + 1], t [i + 2], t [i + 3]} (NO in step S38), or triangle {t [i + 1], t [i + 2], t [i + 3]} If it exists but is degenerate and the triangle {t [i + 2], t [i + 3], t [i + 4]} does not exist (YES in step S38, YES in S39, NO in S41), {t [a [i + 2] ]], T [a [i + 2] +1], t [a [i + 2] +2]} are set as the third adjacent triangle (step S43).
[0043]
As described above, a triangle adjacent to a certain triangle can be referred to.
[0044]
<
(1) Data structure of triangle mesh
FIG. 12 is a diagram for explaining a data structure of a triangular mesh in an n-dimensional space according to the second embodiment of the present invention.
The data structure of the triangle mesh in the n-dimensional space includes a vertex coordinate table for storing the vertex coordinates of the triangle in the n-dimensional space in a triangle strip format, and a normal vector at the vertex position of the n-dimensional triangle in a triangle strip format. It is composed of a normal vector table, a size table for storing the size of each triangle strip format in the vertex coordinate table and the normal vector table, and a triangle index table for storing an index to an adjacent triangle.
[0045]
FIG. 13 is a diagram for explaining the data structure of the vertex coordinate table in the data structure of the triangular mesh in the n-dimensional space in FIG.
The vertex coordinate table shown in FIG. 13 stores the number of vertex coordinates (= nv) and the vertex coordinates of triangles in an n-dimensional space in the order of vertex coordinates 0 to vertex coordinates nv-1 in a triangle strip format. Each of these vertex coordinates is composed of three components (x component, y component, and z component), and each component is subjected to a floating point number or vector quantization compression. In the triangle strip format, vertex coordinates of a triangle mesh and a delimiter (= -1) indicating the end of the strip are stored.
[0046]
FIG. 14 is a diagram for explaining the data structure of the normal vector table in the data structure of the triangular mesh in the n-dimensional space in FIG.
The normal vector table of FIG. 14 shows the number of normal vectors (= nn) and the normal vectors at the vertices of an n-dimensional triangle in the order of
[0047]
FIG. 15 is a diagram for explaining the data structure of the size table in the data structure of the triangular mesh in the n-dimensional space in FIG.
The data structure of the size table in FIG. 15 includes a size number (ns) indicating the number of elements of the size table, and a size of each triangle strip format in the vertex coordinate table and the normal vector table in the order of
[0048]
The data structure of the triangle index table stores the number of triangle indices (= nt) and indices to adjacent triangles in the order of
[0049]
(2) Triangular mesh data generation method
FIG. 16 is a flowchart illustrating a method for generating triangular mesh data in an n-dimensional space according to the second embodiment of the present invention.
First, the coordinate values of the vertex coordinates used in the triangle mesh are stored in the vertex coordinate table in the form of FIG. 12 (FIG. 13) using the triangle strip format (step S51).
The normal vectors used in the triangle mesh are stored in the normal vector table in the form of FIG. 12 (FIG. 14) using the triangle strip format (step S52).
The size of each triangle strip format in the vertex coordinate table and the normal vector table is stored in the size table in the format of FIG. 12 (FIG. 15) (step S53).
The index to the adjacent triangle is stored in the triangle index table in the format shown in FIG. 12 (FIG. 7) (step S54).
As described above, the triangle mesh data in the n-dimensional space can be generated.
[0050]
The method of creating the index of the adjacent triangle and the method of referring to the adjacent triangle in the second embodiment can be performed by the methods described in (3) and (4) of the first embodiment.
However, a vertex coordinate table (FIG. 13) is used instead of the vertex coordinate index table (FIG. 5) of the first embodiment.
[0051]
<
The present invention is not limited to only the above-described embodiments. The method for generating or referencing the triangular mesh data constituting the above-described embodiment is programmed and written in advance on a recording medium such as a CD-ROM, and the CD is stored in a medium drive such as a CD-ROM drive mounted on a computer. -It goes without saying that the object of the present invention can be achieved also by installing a ROM or the like, storing these programs in a memory or a storage device of a computer, and executing the programs.
In this case, the program itself read from the recording medium implements the above-described embodiment, and the program and the recording medium on which the program is recorded also constitute the present invention.
[0052]
As a recording medium, a semiconductor medium (for example, ROM, non-volatile memory card, etc.), an optical medium (for example, DVD, MO, MD, CD-R, etc.), a magnetic medium (for example, magnetic tape, flexible disk, etc.) Either one may be used.
[0053]
Further, not only the above-described embodiment is realized by executing the loaded program, but also, based on an instruction of the program, the operating system or the like performs part or all of the actual processing, and the processing performs the above-described execution. The case where a form is realized is also included.
[0054]
Further, a program for implementing the above-described embodiment is loaded into a memory provided in the function expansion board or the function expansion unit, and a CPU or the like provided in the function expansion board or the function expansion unit executes actual processing based on an instruction of the program. It also includes a case where some or all of the processes are performed and the above-described embodiment is realized by the processing.
[0055]
Further, when the above-described program is stored in a storage device such as a magnetic disk of a server computer and distributed in a form such as download from a user's computer connected via a communication network, the storage device of the server computer is also provided by the present invention. Included in the recording medium.
[0056]
In addition, a first computer for performing the above-described triangle mesh generation method and a second computer for performing the triangle mesh reference method are connected by a communication link, and are generated and obtained by the first computer. The triangular mesh data stored in the format of FIG. 2 or FIG. 11 is sent to the second computer via the communication link.
The second computer receives the triangle mesh data and refers to neighboring triangles in the triangle mesh.
Here, examples of the communication link include a serial link (RS-232), a parallel link, a wireless link, an infrared link, and a network (local area network, wide area network, intranet, Internet).
With this configuration, the triangular mesh data created from the curved surface created by one computer can be received by the other computer, and can be displayed and processed.
Further, the first computer and the second computer may be the same.
[0057]
【The invention's effect】
As described above, according to the present invention, when applied to interference calculation using triangle mesh data, distance calculation, collision detection, etc., a triangle strip which is advantageous in terms of display speed and size as compared with the triangle set format is also provided. It is possible to refer to adjacent triangles as they are.
Further, the triangle mesh data can be stored with about twice the storage capacity expressed in the triangle strip format.
Further, by using the data structure of the triangular mesh of the present invention in a three-dimensional CAD system, compact three-dimensional data can be realized.
[Brief description of the drawings]
FIG. 1 is a diagram for explaining an expression format in which a link to an adjacent triangle is added to a triangle set format.
FIG. 2 is a diagram illustrating a data structure of an n-dimensional triangular mesh according to the first embodiment of the present invention.
FIG. 3 is a diagram showing a data structure of a coordinate table.
FIG. 4 is a diagram showing a data structure of a vector table.
FIG. 5 is a diagram showing a data structure of a vertex coordinate index table.
FIG. 6 is a diagram showing a data structure of a normal vector index table.
FIG. 7 is a diagram showing a data structure of a triangle index table.
FIG. 8 is a flowchart illustrating a processing procedure of an n-dimensional triangle mesh data generation method according to the first embodiment of the present invention.
FIG. 9 is a diagram for explaining a method of obtaining adjacent triangles for one triangle strip.
FIG. 10 is a flowchart illustrating a processing procedure of a method for creating an adjacent triangle index.
FIG. 11 is a flowchart illustrating a processing procedure of a method of referring to an adjacent triangle.
FIG. 12 is a diagram showing a data structure of an n-dimensional triangular mesh according to the second embodiment of the present invention.
13 is a diagram showing a data structure of a vertex coordinate table in FIG.
FIG. 14 is a diagram showing a data structure of a normal vector table in FIG. 11;
FIG. 15 is a diagram showing a data structure of a size table of a triangle strip in FIG. 11;
FIG. 16 is a flowchart illustrating a processing procedure of an n-dimensional triangle mesh data generation method according to the second embodiment of the present invention.
[Explanation of symbols]
Claims (17)
前記隣接三角形へのインデックスを三角形インデックステーブルに格納する方法は、
(1)三角形ストリップの最初の三角形へのインデックスをisとしたとき、この三角形の2頂点{t[is]、t[is+1]}を共有する三角形のインデックスをa[is]に設定し、
(2)三角形ストリップのすべての三角形へのインデックスをiとしたとき、これらの三角形の2頂点{t[i]、t[i+2]}を共有する三角形のインデックスをa[i+1]に設定し、
(3)三角形ストリップの最後の三角形へのインデックスをieとしたとき、この三角形の2頂点{t[ie+1]、t[ie+2]}を共有する三角形のインデックスをa[ie+2]に設定することを特徴とする三角形メッシュデータ生成方法。9. The triangle mesh data generation method according to claim 7, wherein the vertex coordinate index table or the coordinate table is represented by t, the triangle index table is represented by a, and a first vertex of three vertices of a triangle is determined. When the stored index of t is represented by i,
A method of storing an index to the adjacent triangle in a triangle index table includes:
(1) When the index to the first triangle of the triangle strip is is, the index of the triangle sharing the two vertices {t [is], t [is + 1]} of this triangle is set to a [is],
(2) Assuming that the indices to all the triangles of the triangle strip are i, the indices of the triangles sharing the two vertices {t [i], t [i + 2]} of these triangles are set to a [i + 1],
(3) Assuming that the index to the last triangle of the triangle strip is ie, the index of a triangle sharing two vertices {t [ie + 1], t [ie + 2]} of this triangle is set to a [ie + 2]. Characteristic triangle mesh data generation method.
(1)1つ目の隣接三角形
隣接三角形を三角形{t[a[i+1]]、t[a[i+1]+1]、t[a[i+1]+2]}とする。
(2)2つ目の隣接三角形
(イ)三角形{t[i−1]、t[i]、t[i+1]}が存在し縮退していない場合、隣接三角形を三角形{t[i−1]、t[i]、t[i+1]}とする。
(ロ)三角形{t[i−1]、t[i]、t[i+1]}が存在するが縮退しており、三角形{t[i−2]、t[i−1]、t[i]}が存在する場合、隣接三角形を三角形{t[i−2]、t[i−1]、t[i]}とする。
(ハ)三角形{t[i−1]、t[i]、t[i+1]}が存在しないか、あるいは、三角形{t[i−1]、t[i]、t[i+1]}が存在するが縮退し、三角形{t[i−2]、t[i−1]、t[i]}が存在しない場合、隣接三角形を三角形{t[a[i]]、t[a[i]+1]、t[a[i]+2]}とする。
(3)3つ目の隣接三角形
(イ)三角形{t[i+1]、t[i+2]、t[i+3]}が存在し縮退していない場合、隣接三角形を三角形{t[i+1]、t[i+2]、t[i+3]}とする。
(ロ)三角形{t[i+1]、t[i+2]、t[i+3]}が存在するが縮退しており、三角形{t[i+2]、t[i+3]、t[i+4]}が存在する場合、隣接三角形を三角形{t[i+2]、t[i+3]、t[i+4]}とする。
(ハ)三角形{t[i+1]、t[i+2]、t[i+3]}が存在しないか、あるいは、三角形{t[i+1]、t[i+2]、t[i+3]}が存在するが縮退しており、三角形{t[i+2]、t[i+3]、t[i+4]}が存在しない場合、隣接三角形を三角形{t[a[i+2]]、t[a[i+2]+1]、t[a[i+2]+2]}とする。10. A triangle mesh data reference method for referring to a triangle adjacent to a triangle of the triangle mesh data generated by the triangle mesh data generation method according to claim 7, 8 or 9, wherein the vertex coordinate index table or the coordinate table is represented by t. When the triangle index table is represented by a and the index of t at which the first vertex of the three vertices of a triangle is stored is represented by i, the triangle {t [i], t [i + 1], t A triangle mesh data reference method, wherein the triangle adjacent to [i + 2] 三角形 is the following three adjacent triangles.
(1) The first adjacent triangle The adjacent triangle is a triangle {t [a [i + 1]], t [a [i + 1] +1], t [a [i + 1] +2]}.
(2) The second adjacent triangle (a) When the triangle {t [i-1], t [i], t [i + 1]} exists and is not degenerated, the adjacent triangle is set to the triangle {t [i-1]. ], T [i], t [i + 1]}.
(B) Triangles {t [i-1], t [i], t [i + 1]} exist but are degenerate, and triangles {t [i-2], t [i-1], t [i] ]}, The neighboring triangles are set as triangles {t [i-2], t [i-1], t [i]}.
(C) The triangle {t [i-1], t [i], t [i + 1]} does not exist, or the triangle {t [i-1], t [i], t [i + 1]} exists. However, if the triangle {t [i-2], t [i-1], t [i]} does not exist, the adjacent triangle is changed to the triangle {t [a [i]], t [a [i] ". +1], t [a [i] +2]}.
(3) The third adjacent triangle (a) If the triangle {t [i + 1], t [i + 2], t [i + 3]} exists and is not degenerate, the adjacent triangle is changed to the triangle {t [i + 1], t [ i + 2], t [i + 3]}.
(B) When triangles {t [i + 1], t [i + 2], t [i + 3]} exist but are degenerated, and triangles {t [i + 2], t [i + 3], t [i + 4]} exist. , And the adjacent triangle is a triangle {t [i + 2], t [i + 3], t [i + 4]}.
(C) The triangle {t [i + 1], t [i + 2], t [i + 3]} does not exist, or the triangle {t [i + 1], t [i + 2], t [i + 3]} exists but degenerates If there are no triangles {t [i + 2], t [i + 3], t [i + 4]}, the neighboring triangles are defined as triangles {t [a [i + 2]], t [a [i + 2] +1], t [a [I + 2] +2]}.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002265187A JP4010913B2 (en) | 2002-09-11 | 2002-09-11 | Triangular mesh data generation method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002265187A JP4010913B2 (en) | 2002-09-11 | 2002-09-11 | Triangular mesh data generation method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2004102763A true JP2004102763A (en) | 2004-04-02 |
JP4010913B2 JP4010913B2 (en) | 2007-11-21 |
Family
ID=32264396
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002265187A Expired - Fee Related JP4010913B2 (en) | 2002-09-11 | 2002-09-11 | Triangular mesh data generation method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4010913B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113847921A (en) * | 2020-06-28 | 2021-12-28 | 蘑菇车联信息科技有限公司 | Method for establishing map object three-dimensional model and electronic equipment |
-
2002
- 2002-09-11 JP JP2002265187A patent/JP4010913B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113847921A (en) * | 2020-06-28 | 2021-12-28 | 蘑菇车联信息科技有限公司 | Method for establishing map object three-dimensional model and electronic equipment |
Also Published As
Publication number | Publication date |
---|---|
JP4010913B2 (en) | 2007-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8659599B2 (en) | System and method for generating a manifold surface for a 3D model of an object using 3D curves of the object | |
US20050108215A1 (en) | Automated derivative view rendering system | |
JP2006228231A (en) | Three-dimensional image special effect representing method and device, vrml node and generation method for it | |
JP2006059319A (en) | Information processor, program, and recording medium | |
KR20200067222A (en) | Compression and decompression of indexes in the graphics pipeline | |
JP2000200034A (en) | Three-dimensional mapping system and method thereof, and recording medium where three-dimensional mapping program is stored | |
CN112700519A (en) | Animation display method and device, electronic equipment and computer readable storage medium | |
JP4010913B2 (en) | Triangular mesh data generation method | |
JP2008305347A (en) | Method and device for generating interference discrimination information | |
US11900514B2 (en) | Digital content editing using a procedural model | |
US20240112397A1 (en) | Spatial test of bounding volumes for rasterization | |
JP2004102834A (en) | Structure of triangular mesh data, method of compressing and expanding triangular mesh data, program, recording medium, and system | |
JP4218800B2 (en) | Data compression apparatus, data compression method, data expansion apparatus, data expansion method, n-dimensional shape model processing apparatus, program, and recording medium | |
US6847359B1 (en) | Image processing apparatus and image capturing apparatus, which approximate object shapes using a plurality of polygon patches | |
US6567082B1 (en) | Incremental resolution changes in multi-resolution meshes with update records | |
JP4834257B2 (en) | 3D mesh generation method, rotating machine magnetic field analysis method, 3D mesh generation apparatus, rotating machine magnetic field analysis apparatus, computer program, and recording medium | |
JP2004021149A (en) | Image processing apparatus and image processing method | |
FI117579B (en) | Process, device and computer program for processing a computer-aided polygon model | |
JP4166207B2 (en) | Animation playback device and animation playback program | |
JPWO2004107221A1 (en) | Grid division method, grid division apparatus, grid division program, computer-readable recording medium recording the program, data conversion program, and computer-readable recording medium recording the program | |
JP4348880B2 (en) | File management program, computer-readable recording medium storing file management program, and file management method | |
KR100803216B1 (en) | Method and apparatus for authoring 3d graphic data | |
Singh et al. | Octree based voxel model for representation of spatial conflicts across multiple design domains | |
CN114359461A (en) | File format conversion method, conversion device and computer storage medium | |
CN117992123A (en) | Instruction execution method, instruction execution device, electronic equipment and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050210 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20070626 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20070806 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20070904 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20070904 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100914 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110914 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120914 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130914 Year of fee payment: 6 |
|
LAPS | Cancellation because of no payment of annual fees |