JP2004102834A - 三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステム - Google Patents
三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステム Download PDFInfo
- Publication number
- JP2004102834A JP2004102834A JP2002266002A JP2002266002A JP2004102834A JP 2004102834 A JP2004102834 A JP 2004102834A JP 2002266002 A JP2002266002 A JP 2002266002A JP 2002266002 A JP2002266002 A JP 2002266002A JP 2004102834 A JP2004102834 A JP 2004102834A
- Authority
- JP
- Japan
- Prior art keywords
- vertex
- boundary
- triangle
- polyline
- mesh
- 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.)
- Pending
Links
Images
Abstract
【課題】データサイズが増大してもハードディスク等の保存装置のスペース効率、表示速度および転送速度を低下させることなく、n次元空間の三角形メッシュデータの圧縮、保存、転送、伸張の処理を施すことができるデータ構造を提供する。
【解決手段】三角形メッシュのデータ構造は、三角形メッシュの頂点位置における座標を表す頂点座標テーブルと、三角形メッシュ上の領域ごとの曲面情報を表す曲面情報テーブルと、境界ポリラインを表す頂点座標インデックス配列と、三角形メッシュを表す頂点座標インデックス配列とを含み、n次元空間の曲面から生成された三角形メッシュデータを格納する。
【選択図】 図1
【解決手段】三角形メッシュのデータ構造は、三角形メッシュの頂点位置における座標を表す頂点座標テーブルと、三角形メッシュ上の領域ごとの曲面情報を表す曲面情報テーブルと、境界ポリラインを表す頂点座標インデックス配列と、三角形メッシュを表す頂点座標インデックス配列とを含み、n次元空間の曲面から生成された三角形メッシュデータを格納する。
【選択図】 図1
Description
【0001】
【発明の属する技術分野】
本発明は、三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステムに関し、具体的には、3次元形状モデル生成装置や3次元形状モデル表示装置等に利用可能な三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステムに関し、形状計測装置や仮想現実感装置にも応用できる。
【0002】
【従来の技術】
曲面および曲線は、3次元形状モデルを表現する手段としてCAD(ComputerAided Design)で広く利用されている(例えば、非特許文献1参照)。3次元形状モデルを表示するためには、曲面を三角形メッシュ形式のデータに、曲線をワイヤーフレーム形式のデータに変換して行うのが一般的である。
【0003】
また、近年、設計部門以外での利用も視野に入れたCADデータ専用ビューワ(3Dビューワ)も登場している。
また、三角形メッシュ形式およびワイヤーフレーム形式により構成されるビューワ専用ファイルを用いるビューワは、一旦、CADファイルから専用ファイルに変換しておけば、毎回の変換プロセスを省略でき、CADビューワよりも高速な表示を実現している。
【0004】
この3Dビューワでは表示に必要のないデータを省略し、さらに圧縮を行うことにより、表示の高速化およびデータの軽量化を実現しているものもある。
しかし、3次元形状モデルの利用が高まり、大規模で複雑な3次元形状モデルを扱うようになるにしたがってデータ量が増加する傾向にあり、さらにデータを圧縮することが望まれている。
【0005】
【非特許文献1】
鳥谷浩志・千代倉弘明「3次元CADの基礎と応用」、共立出版、
1991年。
【0006】
【発明が解決しようとする課題】
本発明は、上述の実情を考慮してなされたものであって、データサイズが増大してもハードディスク等の保存装置のスペース効率、表示速度および転送速度を低下させることなく、n次元空間の三角形メッシュデータの圧縮、保存、転送、伸張の処理を施すことができる三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステムを提供することを目的とする。
【0007】
【課題を解決するための手段】
上述の課題を解決するために、本発明の請求項1の三角形メッシュのデータ構造は、n次元空間の三角形メッシュを表すデータ構造であって、三角形メッシュの頂点位置における座標を表す頂点座標テーブルと、三角形メッシュ上の領域ごとの曲面情報を表す曲面情報テーブルと、境界ポリラインを表す頂点座標インデックス配列と、三角形メッシュを表す頂点座標インデックス配列とを含んでなることを特徴とする。
【0008】
また、本発明の請求項2は、請求項1に記載の三角形メッシュのデータ構造において、前記頂点座標テーブルは、浮動小数点表現および/またはベクトル量子化圧縮がなされていることを特徴とする。
【0009】
また、本発明の請求項3は、請求項1に記載の三角形メッシュのデータ構造において、前記曲面情報テーブルは、三角形メッシュの領域数と、前記領域ごとにその領域の示す曲面タイプが所定の複数種類のタイプのいずれかであることを表す曲面タイプフラグ配列と、前記曲面タイプが示す曲面の種類ごとに、三角形メッシュの向きを表す向きフラグ配列と、前記曲面タイプごとの曲面配列とを含んでなることを特徴とする。
【0010】
また、本発明の請求項4は、請求項3に記載の三角形メッシュのデータ構造において、前記曲面タイプは、平面、円柱面、円錐面とし、前記曲面タイプごとの曲面配列は、平面を表す平面配列と、円柱面を表す円柱面配列と、円錐面を表す円錐面配列とからなり、前記平面配列の各要素は、原点座標と法線ベクトルを持ち、前記円柱面配列の各要素は、中心座標と軸ベクトルと半径値を持ち、前記円錐面配列の各要素は、頂点座標と軸ベクトルと軸方向に1進んだ場所での半径値を持つことを特徴とする。
【0011】
また、本発明の請求項5は、請求項1に記載の三角形メッシュのデータ構造において、前記境界ポリラインを表す頂点座標インデックス配列は、インデックスラインストリップ形式またはインデックスラインセット形式のいずれかであることを特徴とする。
【0012】
また、本発明の請求項6は、請求項1に記載の三角形メッシュのデータ構造において、前記三角形メッシュを表す頂点座標インデックス配列は、三角形インデックスセット形式、三角形インデックスストリップ形式または三角形インデックスファン形式のいずれかであることを特徴とする。
【0013】
また、本発明の請求項7は、請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造において、三角形メッシュをコンピュータの記憶装置に保存するために用いられることを特徴とする。
また、本発明の請求項8は、請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造において、コンピュータから通信リンクを通して送信されることを特徴とする。
また、本発明の請求項9は、請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造において、コンピュータから通信リンクを通して受信されることを特徴とする。
【0014】
また、本発明の請求項10の三角形メッシュデータ圧縮方法は、曲面から生成した三角形メッシュデータを圧縮する三角形メッシュデータ圧縮方法において、三角形メッシュの頂点位置における座標の情報からなる頂点座標テーブルを保存し、三角形メッシュ上の領域ごとの曲面情報を表す曲面情報テーブルを保存し、前記領域について、
(1)曲面情報が平面であり、境界を構成する外部境界が1本である
(2)曲面情報が平面であり、外部境界と内部境界が1本ずつである
(3)曲面情報が円柱面であり、境界を構成する外部境界が2本である
(4)曲面情報が円錐面であり、境界を構成する外部境界が1本である
(5)曲面情報が円錐面であり、境界を構成する外部境界が2本である
のいずれかであるとき、この領域の境界ポリラインを構成する頂点座標インデックス配列を保存し、
前記領域について、上記(1)から(5)のいずれでもないときには、三角形を構成する頂点座標インデックス配列を保存することを特徴とする。
【0015】
また、本発明の請求項11の三角形メッシュデータ伸張方法は、曲面から生成した三角形メッシュデータを伸張する三角形メッシュデータ伸張方法において、三角形メッシュの頂点位置における座標の情報からなる頂点座標テーブルを読み込み、三角形メッシュ上の領域に対応する曲面情報が保存されている場合は、この領域の曲面情報を読み込み、この領域の境界ポリラインを構成する頂点座標インデックス配列を読み込み、前記境界ポリラインを構成する頂点座標インデックス配列から三角形メッシュを構成する頂点座標インデックス配列を生成する、
三角形メッシュ上の領域に対応する曲面情報が保存されていない場合は、三角形メッシュを構成する頂点座標インデックス配列を読み込むことを特徴とする。
【0016】
また、本発明の請求項12は、請求項11に記載の三角形メッシュデータ伸張方法において、前記境界ポリラインを構成する頂点座標インデックス配列から三角形メッシュを構成する頂点座標インデックス配列を生成する方法は、前記領域の曲面情報と境界情報を用いて境界ポリラインのペアを作成し、前記ペアの境界ポリラインを用いて、このペアの境界ポリライン間を埋める三角形メッシュを生成することを特徴とする。
【0017】
また、本発明の請求項13は、請求項12に記載の三角形メッシュデータ伸張方法において、前記曲面情報と境界情報を用いて境界ポリラインのペアを作成する方法は、
前記曲面情報が平面である場合は、境界が外部境界1本であれば、外部境界を2分割して境界ポリラインのペアとし、境界が外部境界と内部境界1本ずつであれば、それぞれの境界を併せて境界ポリラインのペアとする、
前記曲面情報が円柱面である場合は、境界が外部境界2本であれば、それぞれの境界を併せて境界ポリラインのペアとする、
前記曲面情報が円錐面である場合は、境界が外部境界1本であれば、外部境界と円錐面の先端を境界ポリラインのペアとし、境界が外部境界2本であれば、それぞれの境界を併せて境界ポリラインのペアとすることを特徴とする。
【0018】
また、本発明の請求項14は、請求項12に記載の三角形メッシュデータ伸張方法において、前記ペアの境界ポリラインを用いて、このペアの境界ポリライン間を埋める三角形メッシュを生成する方法は、
まず、前記境界ポリラインが閉じている場合、2本の境界ポリラインの頂点同士で、曲面パラメータ空間上での距離が最も短い頂点(カレント頂点1、カレント頂点2)を求め、それらの頂点間を繋いで辺を生成し、カレント頂点1を終了点1として保存し、カレント頂点2を終了点2として保存する、
前記境界ポリラインが開いる場合、一方の境界ポリライン(ポリライン1)を構成する頂点の終点をカレント頂点1とし、他方の境界ポリライン(ポリライン2)を構成する頂点の始点をカレント頂点2として、カレント頂点1とカレント頂点2の間を繋いで辺を生成し、ポリライン1を構成する頂点の始点を終了点1として保存し、ポリライン2を構成する頂点の終点を終了点2として保存する、
次に、
カレント頂点1からポリライン2のカレント頂点2の始点に近い方の隣接する候補頂点2への距離およびカレント頂点2からポリライン1のカレント頂点1の終点に近い方の隣接する候補頂点1への距離を曲面パラメータ空間上で計算し、
(1)頂点ペアを結んだ線分が境界ポリラインに交差しなければ、その頂点ペアを結んで辺を生成して三角形メッシュを生成し、
(イ)辺を生成した候補頂点が終了点でない場合、その候補頂点を新たにカレント頂点とし、そのカレント頂点に隣接する頂点を新たに候補頂点とする、
(ロ)辺を生成した候補頂点が終了点である場合、その候補頂点を新たにカレント頂点とし、候補頂点は存在しないものとする、
(2)頂点ペアを結んだ線分がポリラインに交差すれば、
(イ)交差したポリライン上の候補頂点が終了点でない場合、交差したポリライン上のカレント頂点と候補頂点に隣接する頂点を結んで辺を生成することにより三角形メッシュを生成し、辺を生成した候補頂点に隣接する頂点を新たに候補頂点にし、元の候補頂点をポリラインから削除する、
(ロ)交差したポリライン上の候補頂点が終了点である場合、候補頂点は存在しないものとし、終了点をカレント頂点により更新し、元の候補頂点をポリラインから削除する、
上記の(1)または(2)の結果、どちらか一方でもカレント頂点が終了点ではない場合、
候補頂点が2つとも存在すれば、最短距離ペアの取得以降の処理を繰り返し、
候補頂点が2つ存在しなければ、存在する候補頂点と、逆のポリライン上のカレント頂点をペアとして取得して、ペア間の線分の交差判定以降を繰り返し、
上記の(1)または(2)の結果、いずれもカレント頂点が終了点である場合には処理を終了することを特徴とする。
【0019】
また、本発明の請求項15は、請求項14に記載の三角形メッシュデータ伸張方法において、前記線分とポリラインの交差判定方法は、三角形を構成する3頂点のうち2頂点を含む2つの境界ポリラインから三角形を仮に生成し、曲面パラメータ空間上で、三角形を構成する頂点の格納順に逐次、次の頂点座標から前の頂点座標を減ずることで得られる2本のベクトルの外積ベクトルを計算することにより三角形の法線ベクトルを計算し、前記外積ベクトルのZ成分が負ならば交差したと判定し、正ならば交差しないと判定することを特徴とする。
【0020】
また、本発明の請求項16は、請求項14に記載の三角形メッシュデータ伸張方法において、前記三角形を生成するとき、この三角形を構成する頂点の格納順序を、この三角形を構成する3頂点のうち2頂点を含む境界ポリライン上における順序と同じにすることを特徴とする。
【0021】
また、本発明の請求項17のプログラムは、コンピュータに、請求項10に記載された三角形メッシュデータ圧縮方法を実行させるためのプログラムである。また、本発明の請求項18の記録媒体は、請求項17に記載の三角形メッシュデータ圧縮プログラムを記録したコンピュータ読み取り可能な記録媒体である。また、本発明の請求項19のプログラムは、コンピュータに、請求項11乃至16のいずれか1に記載された三角形メッシュデータ伸張方法を実行させるためのプログラムである。
また、本発明の請求項20の記録媒体は、請求項19に記載の三角形メッシュデータ伸張プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0022】
また、本発明の請求項21のシステムは、n次元空間の三角形メッシュのデータを圧縮および/または伸張する1つ以上のコンピュータシステムであって、各コンピュータシステムは、プロセスを実行する中央処理装置と、記憶装置と、前記記憶装置に格納された請求項17記載のプログラムと、前記記憶装置に格納された請求項19記載のプログラムと、前記記憶装置に格納された請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造を持つ三角形メッシュデータとを有することを特徴とする。
また、本発明の請求項22は、請求項21に記載のシステムにおいて、2つ以上のコンピュータシステムが通信リンクで接続されたことを特徴とする。
また、本発明の請求項23は、請求項22に記載のシステムにおいて、前記通信リンクは、インターネット、イントラネット、広域ネットワーク、ローカルエリアネットワーク、無線周波数リンク、赤外線リンクおよびシリアル通信リンクのいずれかを含むことを特徴とする。
【0023】
以上のような構成により、三角形メッシュの圧縮および伸張を行なうことができる。
三角形メッシュのデータ構造を使用すると、データサイズが減少し、ハードディスク等保存装置のスペース効率が向上する。
また、データサイズが減少したため、表示速度および転送速度が向上する。
さらに、3次元CADシステムに三角形メッシュのデータ構造を使用することによって、コンパクトな3次元データを実現できる。
【0024】
【発明の実施の形態】
以下の(1)〜(10)の前提に基づき、本発明の構成および動作を説明する。
(1)本発明で扱う曲線および曲面は、一般的な3次元CADシステムで扱えるものであり、CADシステムにおいては、曲面(surface)は面(face)により、曲線(curve)は稜線(edge)により、それぞれ保持されているものとする。
【0025】
(2)CADシステムにおいては、面の境界には必ず稜線が存在するので、曲面の境界をあらわす曲線は得ることができるものとする。
(3)CADシステムにおいて、3次元空間上の点から曲線パラメータ空間、曲面パラメータ空間におけるパラメータ座標もそれぞれ得ることができるものとする。
【0026】
(4)CADシステムにおいて、円のような周期的曲線や、円柱・円錐・球面のような周期的曲面が存在するが、これらの周期性の方向を得ることができるものとする。
(5)本発明で扱う三角形メッシュとは、CADの曲面データを近似した三角形の集まりである。
(6)本発明で扱うワイヤーフレームとは、CADの曲線データを近似したライン(線分)またはポリライン(折れ線を表す連結された線分)の集まりである。
【0027】
(7)本発明で扱う境界ポリラインは、面の境界を表す稜線が保持している曲線から生成したもので、面が保持する曲面ごとに向きを持った閉じたループを構成できるものとする。
閉じたループの向きは、曲面の外部境界を表す外側の境界ポリラインの場合、反時計回りとする(図15参照)。逆に曲面の内部境界を表す内側の境界ポリラインの場合、時計回りとする(図15参照)。ただし、3次元空間において円錐台の側面を構成する円錐面、円柱の側面を構成する円柱面の場合は(図16(A)参照)、外部境界が2つあるとし、図15と同様にU、Vによるパラメータ空間では境界ポリラインの向きを反時計回りとする(図16(B)参照)。
【0028】
(8)閉じたポリライン、開いたポリラインの区別は、ポリラインに付加したフラグより識別できるものとする。また、ポリラインの向きはポリラインを構成する頂点の格納順により表現するものとする。
(9)本発明で扱う三角形は、面の表の方向からみて反時計回りに頂点を格納するものとする(図17参照)。
(10)“A mod B”の標記は、「整数Aを整数Bで割った余り」を意味するものとする。
【0029】
図1は、本発明の一実施形態に係るn次元空間の三角形メッシュのデータ構造を説明するための図である。
n次元空間の三角形メッシュのデータ構造は、三角形メッシュの頂点位置における座標からなる頂点座標テーブルと、三角形メッシュ上の領域ごとの曲面情報テーブルと、境界ポリラインを表す頂点座標インデックス配列と、三角形メッシュを表す頂点座標インデックス配列から構成される。
【0030】
図2は、図1のn次元空間の三角形メッシュのデータ構造における頂点座標テーブルのデータ構造を説明するための図である。
図2に示した頂点座標テーブルには、頂点座標の数(=n)と、頂点座標0から頂点座標n−1の順に格納されている。また、これらの頂点座標は、それぞれ(x成分、y成分、z成分)の3成分から構成され、各成分は浮動小数点あるいはベクトル量子化圧縮が行われている。
【0031】
図3は、図1のn次元空間の三角形メッシュのデータ構造における曲面情報テーブルのデータ構造を説明するための図である。
図3に示した曲面情報テーブルのデータ構造には、三角形メッシュの領域数(=na)と、領域0に対応する曲面タイプフラグ0から領域na−1に対応する曲面タイプフラグna−1までの曲面タイプフラグ配列(要素数=na)と、向きフラグ0から向きフラグnsf−1までの三角形メッシュの向きフラグ配列(要素数=nsf=npl+ncy+nco)と、平面0から平面npl−1までの平面配列(要素数=npl)と、円柱0から円柱ncy−1までの円柱面配列(要素数=ncy)と、円錐面0から円錐面nco−1までの円錐面配列(要素数=nco)から構成される。
【0032】
曲面タイプフラグ配列(要素数=na)の各要素は、三角形メッシュの各領域に対応し、その領域の曲面タイプを平面、円柱面、円錐面、その他曲面を表す4種類の整数値のいずれかで表す。
三角形メッシュの向きフラグ配列(要素数=nsf)は、三角形メッシュの各領域の曲面タイプが示す曲面の種類(平面、円柱面、円錐面)ごとに、三角形メッシュの各領域の向きを表し、各フラグは三角形メッシュの向きと曲面の向きが一致するか否かを表す論理値である。
【0033】
図4は、図3の曲面情報テーブルのデータ構造における平面配列(要素数=npl)、円柱面配列(要素数=ncy)、円錐面配列(要素数=nco)の各データ構造の各要素を説明する図である。
平面配列(要素数=npl)の各要素は、原点座標のx、y、z成分と法線ベクトルのx、y、z成分から構成される。
円柱面配列(要素数=ncy)の各要素は、中心座標のx、y、z成分、軸ベクトルのx、y、z成分、半径値から構成される。
円錐面配列(要素数=nco)の各要素は、頂点座標のx、y、z成分、軸ベクトルのx、y、z成分、軸ベクトル方向に1進んだ場所での半径値から構成される。各値はすべて浮動小数点形式で格納される。
【0034】
図5は、図1のn次元空間の三角形メッシュのデータ構造における境界ポリラインおよび三角形メッシュそれぞれの頂点座標インデックステーブルのデータ構造を説明するための図である。
境界ポリライン頂点座標インデックステーブルおよび三角形メッシュ頂点座標インデックステーブルはそれぞれ、頂点座標インデックス数(=nv)と、頂点座標インデックス0から頂点座標インデックスnv−1までのインデックスの値が整数値で格納されている。
【0035】
境界ポリライン頂点座標インデックステーブルは、インデックスラインセット形式またはインデックスラインストリップ形式のいずれかの形式で表される。
インデックスラインセット形式は、線分の始点座標、終点座標を格納している頂点座標テーブルへのインデックスが順に格納される。
インデックスラインストリップ形式は、ポリラインの各頂点座標を格納している頂点座標テーブルへのインデックス+1およびストリップの最後を表すデリミタ(=0)が格納される。
【0036】
三角形メッシュ頂点座標インデックステーブルは、三角形インデックスセット形式、三角形インデックスストリップ形式または三角形インデックスファン形式のいずれかの形式で表される。
三角形インデックスセット形式は、各三角形の頂点座標を格納している頂点座標テーブルへのインデックスが格納される。
三角形インデックスストリップ形式または三角形インデックスファン形式は、三角形の頂点座標を格納している頂点座標テーブルへのインデックス+1およびストリップまたはファンの最後を表すデリミタ(=0)が格納される。
また、三角形は、メッシュ上の領域ごとにまとまって格納される。
【0037】
上述の三角形メッシュのデータ構造を用いることで、三角形メッシュのデータ圧縮および伸張が可能となり、データサイズが減少し、ハードディスク等保存装置のスペース効率が向上する。
以下、上述した三角形メッシュのデータ構造をもとに、三角形メッシュデータの圧縮方法および伸張方法を説明する。
【0038】
図6は、本発明の実施形態に係る三角形メッシュのデータの圧縮方法を説明するためのフローチャートである。
まず、三角形メッシュの頂点位置における座標からなる頂点座標テーブルを図2の形式で保存する(ステップS1)。
次に、三角形メッシュ上の領域ごとに曲面情報と境界情報に応じて頂点座標インデックス配列の保存処理を行なうため、カウンタiを0に初期化する(ステップS2)。
カウンタiが領域数nより小さいかを判定し(ステップS3)、カウンタiが領域数nより小さい場合(ステップS3のYES)、領域iの曲面情報と境界情報とが次に示す5つの条件のいずれかであるかを調べる(ステップS4)。
(1)曲面情報が平面であり、境界を構成する外部境界が1本である、
(2)曲面情報が平面であり、外部境界と内部境界が1本ずつである、
(3)曲面情報が円柱面であり、境界を構成する外部境界が2本である、
(4)曲面情報が円錐面であり、境界を構成する外部境界が1本である、
(5)曲面情報が円錐面であり、境界を構成する外部境界が2本である、
上記のいずれかの場合(ステップS4のYES)、領域iの曲面情報を図3の形式で保存し(ステップS5)、領域iの境界ポリラインを構成する頂点座標インデックス配列を図5の形式で保存する(ステップS6)。
【0039】
一方、曲面情報と境界情報が前述(1)から(5)のいずれでもない場合(ステップS4のNO)、領域iの三角形を構成する頂点座標インデックス配列を図5の形式で保存する(ステップS7)。
【0040】
ステップS6またはステップS7の後、カウンタiを1増加し(ステップS8)、再びステップS3へ戻り、領域数がnになるまでステップS3からS8を繰り返す。
以上により、曲面から生成した三角形メッシュデータを圧縮することができる。
【0041】
図7は、本発明の実施形態に係る三角形メッシュデータの伸張方法を説明するためのフローチャートである。
まず、図2の形式の三角形メッシュの頂点位置における座標からなる頂点座標テーブルを読み込む(ステップS11)。
次いで、三角形メッシュ上の領域ごとに頂点座標インデックステーブルを読み込むために、カウンタiを0で初期化する(ステップS12)。
【0042】
カウンタiが領域数nより小さいかを判定し(ステップS13)、カウンタiが領域数nより小さい場合(ステップS13のYES)、領域iの曲面情報が保存されているかを調べる(ステップS14)。
領域iに対する曲面情報が保存されている場合(ステップS14のYES)、領域iの曲面情報を読み込み(ステップS15)、領域iの境界ポリラインを構成する頂点座標インデックス配列を読み込み(ステップS16)、境界ポリラインを構成する頂点座標インデックス配列から、三角形メッシュを構成する頂点座標インデックス配列を生成する(ステップS17)。
【0043】
一方、領域iに対する曲面情報が保存されていない場合(ステップS14のNO)、三角形を構成する頂点座標インデックス配列を読み込む(ステップS18)。
【0044】
ステップS17またはステップS18の後、カウンタiを1増加し(ステップS19)、再びステップS13へ戻り、領域数がnになるまでステップS13からS19を繰り返す。
以上により、三角形メッシュデータ圧縮方法によって作成された圧縮データを伸張することができる。
【0045】
図8は、図7のステップS15からS17で読み込まれた曲面の境界ポリラインから三角形メッシュを生成する方法を説明するためのフローチャートである。まず、対象領域の曲面情報と境界情報を用いて、境界ポリラインのペアを作成する(ステップS21)。
次いで、作成した境界ポリラインのペアを用いて、このペアの境界ポリライン間を埋める三角形メッシュを生成する(ステップS22)。
以上により、三角形メッシュを生成することができる。
【0046】
図9は、図8のステップS21における曲面情報と境界情報を用いて境界ポリラインのペアを作成する方法を説明するためのフローチャートである。
まず、曲面情報が平面である場合(ステップS31のYES)、境界が外部境界1本であるかを調べる(ステップS32)。
境界が外部境界1本であれば(ステップS32のYES)、外部境界を2分割して開いた境界ポリラインを作成し、これらをペアとする。ここで、分割は、1本のポリラインの端点がもう一本のポリラインの端点と重複するように行い、ポリラインの向きを分割前と同一とする(ステップS33)。
【0047】
一方、境界が外部境界1本でない場合(ステップS32のNO)、外部境界と内部境界が1本ずつであるので、それぞれの境界を併せて境界ポリラインのペアとする(ステップS34)。
【0048】
曲面情報が円柱面である場合(ステップS35のYES)、境界が外部境界2本であるので、それぞれの境界を併せて境界ポリラインのペアとする(ステップS36)。
曲面情報が平面でも円柱面でもない場合(ステップS35のNO)、必ず円錐面であるから、境界が外部境界1本である場合(ステップS37のYES)は、外部境界と円錐面の先端を境界ポリラインのペアとする(ステップS38)。
曲面情報が円錐面で、境界が外部境界1本でない場合(ステップS37のNO)、外部境界が2本であるので、それぞれの境界を併せて境界ポリラインのペアとする(ステップS39)。
以上により、境界ポリラインのペアを作成することができる。
【0049】
図10は、図8のステップS22における2本のポリライン間に三角形メッシュを生成する方法を説明するためのフローチャートである。
以下の処理では、n1,n2をそれぞれポリライン1、ポリライン2を構成する頂点の数として説明する。
【0050】
ペアの境界ポリラインが閉じている場合(ステップS41のYES)、2本の境界ポリラインの頂点同士で、曲面パラメータ空間上での距離が最も短い頂点をカレント頂点1、カレント頂点2として求め、その頂点間を繋いで辺を生成する(ステップS42)。
このときのカレント頂点1のポリライン1上での位置をi(0≦i≦n1−1)とし、このときのカレント頂点2のポリライン2上での位置をj(0≦j≦n2−1)とし、カレント頂点1を終了点1として保存し、カレント頂点2を終了点2として保存する(ステップS43)。
【0051】
一方、ペアの境界ポリラインが開いている場合(ステップS41のNO)、ポリライン1を構成する頂点の終点をカレント頂点1とし、ポリライン2を構成する頂点の始点をカレント頂点2とし、カレント頂点1、カレント頂点2の間を繋いで辺を生成する(ステップS44)。このときのカレント頂点1のポリライン1上での位置をi(=n1−1)とし、このときのカレント頂点2のポリライン2上での位置をj(=0)とする。
ポリライン1を構成する頂点の始点を終了点1として保存し、ポリライン2を構成する頂点の終点を終了点2として保存する(ステップS45)。
【0052】
以後、頂点数がn1個のポリライン1においては、i(0≦i≦n1−1)番目の頂点に隣接する頂点を((i−1) mod n1)番目の頂点として求め、頂点数がn2個のポリライン2においては、j(0≦j≦n2−1)番目の頂点に隣接する頂点を((j+1) mod n2)番目の頂点として求めるものとする。
【0053】
カレント頂点1からポリライン2のカレント頂点2に隣接する候補頂点2への線分の距離およびカレント頂点2からポリライン1のカレント頂点1に隣接する候補頂点1への線分の距離を曲面パラメータ空間上で計算し、短いほうの線分の頂点ペアを取得する(図11(A)参照)(ステップS46)。
【0054】
取得した頂点ペアを結んだ線分がポリラインに交差しなければ(ステップS47のYES)、その頂点ペアを結んで辺を生成することで三角形メッシュを生成し(図11(B)参照)(ステップS48)、辺を生成した候補頂点が終了点である場合(ステップS49のYES)、その候補頂点を新たにカレント頂点とする(ステップS50)。このとき候補頂点は存在しないものとする。
また、辺を生成した候補頂点が終了点でない場合(ステップS49のNO)、その候補頂点を新たにカレント頂点とし、そのカレント頂点に隣接する頂点を新たに候補頂点とする(図11(B)参照)(ステップS51)。
【0055】
一方、取得した頂点ペアを結んだ線分がポリラインに交差すれば(ステップS47のNO)、交差したポリライン上の候補頂点が終了点でない場合(ステップS52のNO)、交差したポリライン上のカレント頂点と候補頂点に隣接する頂点を結んで辺を生成することにより三角形メッシュを生成し(図11(C)、(D)参照)(ステップS53)、辺を生成した候補頂点に隣接する頂点を新たに候補頂点とし、元の候補頂点をポリラインから削除する(図11(D)参照)(ステップS54)。
交差したポリライン上の候補頂点が終了点である場合(ステップS52のYES)、終了点をカレント頂点により更新し、元の候補頂点をポリラインから削除する(ステップS55)。このとき候補頂点は存在しないものとする。
【0056】
どちらか一方でもカレント頂点が終了点ではない場合(ステップS56のYES)、候補頂点が2つとも存在するとき(ステップS57のYES)は、ステップS46へ戻る。
また、候補頂点が2つ存在しない場合(ステップS57のNO)、存在する候補頂点と、逆のポリライン上のカレント頂点をペアとして取得し、ステップS47へ戻る(ステップS58)。
以上により三角形メッシュを生成できる。
【0057】
図10のステップS48およびステップ53で、2本の境界ポリライン間に三角形メッシュを生成する場合、三角形の頂点の格納順は、図17に示す通り反時計回りにする必要がある(図12参照)。そのために、三角形を構成する頂点の格納順序を、三角形を構成する3頂点のうち2頂点を含む境界ポリライン上における順序と同じにする。
ここで境界が外部ポリラインであるか内部ポリラインであるかの区別は必要ない。
【0058】
図13は、図10における線分と境界ポリラインの交差判定方法を説明するためのフローチャートである。
三角形を構成する3頂点のうち2頂点を含む2つの境界ポリラインから三角形を仮に生成する(ステップS61)。
曲面パラメータ空間上で、三角形を構成する頂点の格納順に逐次、次の頂点座標から前の頂点座標を減ずることで得られる2本のベクトルの外積ベクトルを計算して、三角形の法線ベクトルを計算する(ステップS62)。
この外積ベクトルのZ成分が負ならば(ステップS63のYES)、交差したと判定する。
一方、この外積ベクトルのZ成分が正ならば(ステップS63のNO)、交差しないと判定する。
以上により線分とポリラインの交差判定ができる。
【0059】
本発明は上述した実施形態のみに限定されたものではない。上述した実施形態を構成する圧縮方法または伸張方法の各機能をそれぞれプログラム化し、あらかじめCD−ROM等の記録媒体に書き込んでおき、コンピュータに搭載したCD−ROMドライブのような媒体駆動装置にこのCD−ROM等を装着して、これらのプログラムをコンピュータのメモリあるいは記憶装置に格納し、それを実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラム自体が上述した実施形態の機能を実現することになり、そのプログラムおよびそのプログラムを記録した記録媒体も本発明を構成することになる。
【0060】
なお、記録媒体としては半導体媒体(例えば、ROM、不揮発性メモリカード等)、光媒体(例えば、DVD、MO、MD、CD−R等)、磁気媒体(例えば、磁気テープ、フレキシブルディスク等)のいずれであってもよい。
【0061】
また、ロードしたプログラムを実行することにより上述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、オペレーティングシステム等が実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれる。
【0062】
また、上述した実施形態の機能を実現するプログラムが、機能拡張ボードや機能拡張ユニットに備わるメモリにロードされ、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって、上述した実施形態の機能が実現される場合も含まれる。
【0063】
さらに、上述したプログラムをサーバコンピュータの磁気ディスク等の記憶装置に格納しておき、通信網で接続された利用者のコンピュータからダウンロード等の形式で頒布する場合、このサーバコンピュータの記憶装置も本発明の記録媒体に含まれる。
【0064】
また、上述した三角形メッシュデータ圧縮方法を実施するための第1のコンピュータと三角形メッシュデータ伸張方法を実施するための第2のコンピュータを通信リンクで接続し、第1のコンピュータで圧縮して得られる図1の形式で格納された圧縮データを通信リンクによって第2のコンピュータへ送る。
第2のコンピュータは、この圧縮データを受信し、伸張して三角形メッシュを生成する。
ここで、通信リンクの例として、シリアルリンク(RS−232)、パラレルリンク、無線リンク、赤外線リンク、ネットワーク(ローカルエリアネットワーク、広域ネットワーク、イントラネット、インターネット)がある。
このようにすると、一方のコンピュータで作成された曲面から作成された三角形メッシュデータの圧縮データを他方のコンピュータで受信して伸張することにより、表示や加工等を行うことができる。
【0065】
図14は、本発明を3次元CADシステムに適用した場合の三角形メッシュの圧縮結果の表示例と、その圧縮結果を伸張した場合の表示例である。
図14(A)は、圧縮されたデータを伸張せずに表示したものであり、領域の境界ポリライン、曲面情報が存在しない領域の三角形メッシュを表示している。図14(B)は、圧縮されたデータを伸張して表示したものであり、曲面情報が存在しない領域の三角形メッシュおよび領域の境界ポリラインから生成した三角形メッシュを表示している。
【0066】
【発明の効果】
以上説明したように本発明によれば、三角形メッシュの圧縮および伸張を行なうことができる。
本発明の三角形メッシュのデータ構造を使用すると、データサイズが減少し、ハードディスク等保存装置のスペース効率が向上する。
また、データサイズが減少したため、表示速度および転送速度が向上する。
さらに、3次元CADシステムに本発明の三角形メッシュのデータ構造を使用することによって、コンパクトな3次元データを実現できる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るn次元空間の三角形メッシュのデータ構造を説明するための図である。
【図2】図1のn次元空間の三角形メッシュのデータ構造における頂点座標テーブルのデータ構造を説明するための図である。
【図3】図1のn次元空間の三角形メッシュのデータ構造における曲面情報テーブルのデータ構造を説明するための図である。
【図4】図3の曲面情報テーブルのデータ構造における平面配列、円柱面配列、円錐面配列の各データ構造の各要素を説明するための図である。
【図5】図1のn次元空間の三角形メッシュのデータ構造における境界ポリラインおよび三角形メッシュそれぞれの頂点座標インデックステーブルのデータ構造を説明するための図である。
【図6】本発明の実施形態に係る三角形メッシュのデータの圧縮方法を説明するためのフローチャートである。
【図7】本発明の実施形態に係る三角形メッシュのデータの伸張方法を説明するためのフローチャートである。
【図8】図7の曲面の境界ポリラインから三角形メッシュを生成する方法を説明するためのフローチャートである。
【図9】図8の曲面情報と境界情報を用いて境界ポリラインのペアを作成する方法を説明するためのフローチャートである。
【図10】図8の2本のポリライン間に三角形メッシュを生成する方法を説明するためのフローチャートである。
【図11】2本のポリライン間に三角形メッシュを生成する方法を説明するための図である。
【図12】2本のポリライン間に三角形メッシュを生成する方法を説明するための図である。
【図13】線分とポリラインの交差判定方法を説明するためのフローチャートである。
【図14】本発明を3次元CADシステムに適用した場合の三角形メッシュの圧縮結果の表示例と、その圧縮結果を伸張した場合の表示例である。
【図15】境界ポリラインの向きを説明するための図である。
【図16】周期性を持つ境界ポリラインの向きを説明するための図である。
【図17】三角形の頂点の格納順序を説明するための図である。
【発明の属する技術分野】
本発明は、三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステムに関し、具体的には、3次元形状モデル生成装置や3次元形状モデル表示装置等に利用可能な三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステムに関し、形状計測装置や仮想現実感装置にも応用できる。
【0002】
【従来の技術】
曲面および曲線は、3次元形状モデルを表現する手段としてCAD(ComputerAided Design)で広く利用されている(例えば、非特許文献1参照)。3次元形状モデルを表示するためには、曲面を三角形メッシュ形式のデータに、曲線をワイヤーフレーム形式のデータに変換して行うのが一般的である。
【0003】
また、近年、設計部門以外での利用も視野に入れたCADデータ専用ビューワ(3Dビューワ)も登場している。
また、三角形メッシュ形式およびワイヤーフレーム形式により構成されるビューワ専用ファイルを用いるビューワは、一旦、CADファイルから専用ファイルに変換しておけば、毎回の変換プロセスを省略でき、CADビューワよりも高速な表示を実現している。
【0004】
この3Dビューワでは表示に必要のないデータを省略し、さらに圧縮を行うことにより、表示の高速化およびデータの軽量化を実現しているものもある。
しかし、3次元形状モデルの利用が高まり、大規模で複雑な3次元形状モデルを扱うようになるにしたがってデータ量が増加する傾向にあり、さらにデータを圧縮することが望まれている。
【0005】
【非特許文献1】
鳥谷浩志・千代倉弘明「3次元CADの基礎と応用」、共立出版、
1991年。
【0006】
【発明が解決しようとする課題】
本発明は、上述の実情を考慮してなされたものであって、データサイズが増大してもハードディスク等の保存装置のスペース効率、表示速度および転送速度を低下させることなく、n次元空間の三角形メッシュデータの圧縮、保存、転送、伸張の処理を施すことができる三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステムを提供することを目的とする。
【0007】
【課題を解決するための手段】
上述の課題を解決するために、本発明の請求項1の三角形メッシュのデータ構造は、n次元空間の三角形メッシュを表すデータ構造であって、三角形メッシュの頂点位置における座標を表す頂点座標テーブルと、三角形メッシュ上の領域ごとの曲面情報を表す曲面情報テーブルと、境界ポリラインを表す頂点座標インデックス配列と、三角形メッシュを表す頂点座標インデックス配列とを含んでなることを特徴とする。
【0008】
また、本発明の請求項2は、請求項1に記載の三角形メッシュのデータ構造において、前記頂点座標テーブルは、浮動小数点表現および/またはベクトル量子化圧縮がなされていることを特徴とする。
【0009】
また、本発明の請求項3は、請求項1に記載の三角形メッシュのデータ構造において、前記曲面情報テーブルは、三角形メッシュの領域数と、前記領域ごとにその領域の示す曲面タイプが所定の複数種類のタイプのいずれかであることを表す曲面タイプフラグ配列と、前記曲面タイプが示す曲面の種類ごとに、三角形メッシュの向きを表す向きフラグ配列と、前記曲面タイプごとの曲面配列とを含んでなることを特徴とする。
【0010】
また、本発明の請求項4は、請求項3に記載の三角形メッシュのデータ構造において、前記曲面タイプは、平面、円柱面、円錐面とし、前記曲面タイプごとの曲面配列は、平面を表す平面配列と、円柱面を表す円柱面配列と、円錐面を表す円錐面配列とからなり、前記平面配列の各要素は、原点座標と法線ベクトルを持ち、前記円柱面配列の各要素は、中心座標と軸ベクトルと半径値を持ち、前記円錐面配列の各要素は、頂点座標と軸ベクトルと軸方向に1進んだ場所での半径値を持つことを特徴とする。
【0011】
また、本発明の請求項5は、請求項1に記載の三角形メッシュのデータ構造において、前記境界ポリラインを表す頂点座標インデックス配列は、インデックスラインストリップ形式またはインデックスラインセット形式のいずれかであることを特徴とする。
【0012】
また、本発明の請求項6は、請求項1に記載の三角形メッシュのデータ構造において、前記三角形メッシュを表す頂点座標インデックス配列は、三角形インデックスセット形式、三角形インデックスストリップ形式または三角形インデックスファン形式のいずれかであることを特徴とする。
【0013】
また、本発明の請求項7は、請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造において、三角形メッシュをコンピュータの記憶装置に保存するために用いられることを特徴とする。
また、本発明の請求項8は、請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造において、コンピュータから通信リンクを通して送信されることを特徴とする。
また、本発明の請求項9は、請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造において、コンピュータから通信リンクを通して受信されることを特徴とする。
【0014】
また、本発明の請求項10の三角形メッシュデータ圧縮方法は、曲面から生成した三角形メッシュデータを圧縮する三角形メッシュデータ圧縮方法において、三角形メッシュの頂点位置における座標の情報からなる頂点座標テーブルを保存し、三角形メッシュ上の領域ごとの曲面情報を表す曲面情報テーブルを保存し、前記領域について、
(1)曲面情報が平面であり、境界を構成する外部境界が1本である
(2)曲面情報が平面であり、外部境界と内部境界が1本ずつである
(3)曲面情報が円柱面であり、境界を構成する外部境界が2本である
(4)曲面情報が円錐面であり、境界を構成する外部境界が1本である
(5)曲面情報が円錐面であり、境界を構成する外部境界が2本である
のいずれかであるとき、この領域の境界ポリラインを構成する頂点座標インデックス配列を保存し、
前記領域について、上記(1)から(5)のいずれでもないときには、三角形を構成する頂点座標インデックス配列を保存することを特徴とする。
【0015】
また、本発明の請求項11の三角形メッシュデータ伸張方法は、曲面から生成した三角形メッシュデータを伸張する三角形メッシュデータ伸張方法において、三角形メッシュの頂点位置における座標の情報からなる頂点座標テーブルを読み込み、三角形メッシュ上の領域に対応する曲面情報が保存されている場合は、この領域の曲面情報を読み込み、この領域の境界ポリラインを構成する頂点座標インデックス配列を読み込み、前記境界ポリラインを構成する頂点座標インデックス配列から三角形メッシュを構成する頂点座標インデックス配列を生成する、
三角形メッシュ上の領域に対応する曲面情報が保存されていない場合は、三角形メッシュを構成する頂点座標インデックス配列を読み込むことを特徴とする。
【0016】
また、本発明の請求項12は、請求項11に記載の三角形メッシュデータ伸張方法において、前記境界ポリラインを構成する頂点座標インデックス配列から三角形メッシュを構成する頂点座標インデックス配列を生成する方法は、前記領域の曲面情報と境界情報を用いて境界ポリラインのペアを作成し、前記ペアの境界ポリラインを用いて、このペアの境界ポリライン間を埋める三角形メッシュを生成することを特徴とする。
【0017】
また、本発明の請求項13は、請求項12に記載の三角形メッシュデータ伸張方法において、前記曲面情報と境界情報を用いて境界ポリラインのペアを作成する方法は、
前記曲面情報が平面である場合は、境界が外部境界1本であれば、外部境界を2分割して境界ポリラインのペアとし、境界が外部境界と内部境界1本ずつであれば、それぞれの境界を併せて境界ポリラインのペアとする、
前記曲面情報が円柱面である場合は、境界が外部境界2本であれば、それぞれの境界を併せて境界ポリラインのペアとする、
前記曲面情報が円錐面である場合は、境界が外部境界1本であれば、外部境界と円錐面の先端を境界ポリラインのペアとし、境界が外部境界2本であれば、それぞれの境界を併せて境界ポリラインのペアとすることを特徴とする。
【0018】
また、本発明の請求項14は、請求項12に記載の三角形メッシュデータ伸張方法において、前記ペアの境界ポリラインを用いて、このペアの境界ポリライン間を埋める三角形メッシュを生成する方法は、
まず、前記境界ポリラインが閉じている場合、2本の境界ポリラインの頂点同士で、曲面パラメータ空間上での距離が最も短い頂点(カレント頂点1、カレント頂点2)を求め、それらの頂点間を繋いで辺を生成し、カレント頂点1を終了点1として保存し、カレント頂点2を終了点2として保存する、
前記境界ポリラインが開いる場合、一方の境界ポリライン(ポリライン1)を構成する頂点の終点をカレント頂点1とし、他方の境界ポリライン(ポリライン2)を構成する頂点の始点をカレント頂点2として、カレント頂点1とカレント頂点2の間を繋いで辺を生成し、ポリライン1を構成する頂点の始点を終了点1として保存し、ポリライン2を構成する頂点の終点を終了点2として保存する、
次に、
カレント頂点1からポリライン2のカレント頂点2の始点に近い方の隣接する候補頂点2への距離およびカレント頂点2からポリライン1のカレント頂点1の終点に近い方の隣接する候補頂点1への距離を曲面パラメータ空間上で計算し、
(1)頂点ペアを結んだ線分が境界ポリラインに交差しなければ、その頂点ペアを結んで辺を生成して三角形メッシュを生成し、
(イ)辺を生成した候補頂点が終了点でない場合、その候補頂点を新たにカレント頂点とし、そのカレント頂点に隣接する頂点を新たに候補頂点とする、
(ロ)辺を生成した候補頂点が終了点である場合、その候補頂点を新たにカレント頂点とし、候補頂点は存在しないものとする、
(2)頂点ペアを結んだ線分がポリラインに交差すれば、
(イ)交差したポリライン上の候補頂点が終了点でない場合、交差したポリライン上のカレント頂点と候補頂点に隣接する頂点を結んで辺を生成することにより三角形メッシュを生成し、辺を生成した候補頂点に隣接する頂点を新たに候補頂点にし、元の候補頂点をポリラインから削除する、
(ロ)交差したポリライン上の候補頂点が終了点である場合、候補頂点は存在しないものとし、終了点をカレント頂点により更新し、元の候補頂点をポリラインから削除する、
上記の(1)または(2)の結果、どちらか一方でもカレント頂点が終了点ではない場合、
候補頂点が2つとも存在すれば、最短距離ペアの取得以降の処理を繰り返し、
候補頂点が2つ存在しなければ、存在する候補頂点と、逆のポリライン上のカレント頂点をペアとして取得して、ペア間の線分の交差判定以降を繰り返し、
上記の(1)または(2)の結果、いずれもカレント頂点が終了点である場合には処理を終了することを特徴とする。
【0019】
また、本発明の請求項15は、請求項14に記載の三角形メッシュデータ伸張方法において、前記線分とポリラインの交差判定方法は、三角形を構成する3頂点のうち2頂点を含む2つの境界ポリラインから三角形を仮に生成し、曲面パラメータ空間上で、三角形を構成する頂点の格納順に逐次、次の頂点座標から前の頂点座標を減ずることで得られる2本のベクトルの外積ベクトルを計算することにより三角形の法線ベクトルを計算し、前記外積ベクトルのZ成分が負ならば交差したと判定し、正ならば交差しないと判定することを特徴とする。
【0020】
また、本発明の請求項16は、請求項14に記載の三角形メッシュデータ伸張方法において、前記三角形を生成するとき、この三角形を構成する頂点の格納順序を、この三角形を構成する3頂点のうち2頂点を含む境界ポリライン上における順序と同じにすることを特徴とする。
【0021】
また、本発明の請求項17のプログラムは、コンピュータに、請求項10に記載された三角形メッシュデータ圧縮方法を実行させるためのプログラムである。また、本発明の請求項18の記録媒体は、請求項17に記載の三角形メッシュデータ圧縮プログラムを記録したコンピュータ読み取り可能な記録媒体である。また、本発明の請求項19のプログラムは、コンピュータに、請求項11乃至16のいずれか1に記載された三角形メッシュデータ伸張方法を実行させるためのプログラムである。
また、本発明の請求項20の記録媒体は、請求項19に記載の三角形メッシュデータ伸張プログラムを記録したコンピュータ読み取り可能な記録媒体である。
【0022】
また、本発明の請求項21のシステムは、n次元空間の三角形メッシュのデータを圧縮および/または伸張する1つ以上のコンピュータシステムであって、各コンピュータシステムは、プロセスを実行する中央処理装置と、記憶装置と、前記記憶装置に格納された請求項17記載のプログラムと、前記記憶装置に格納された請求項19記載のプログラムと、前記記憶装置に格納された請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造を持つ三角形メッシュデータとを有することを特徴とする。
また、本発明の請求項22は、請求項21に記載のシステムにおいて、2つ以上のコンピュータシステムが通信リンクで接続されたことを特徴とする。
また、本発明の請求項23は、請求項22に記載のシステムにおいて、前記通信リンクは、インターネット、イントラネット、広域ネットワーク、ローカルエリアネットワーク、無線周波数リンク、赤外線リンクおよびシリアル通信リンクのいずれかを含むことを特徴とする。
【0023】
以上のような構成により、三角形メッシュの圧縮および伸張を行なうことができる。
三角形メッシュのデータ構造を使用すると、データサイズが減少し、ハードディスク等保存装置のスペース効率が向上する。
また、データサイズが減少したため、表示速度および転送速度が向上する。
さらに、3次元CADシステムに三角形メッシュのデータ構造を使用することによって、コンパクトな3次元データを実現できる。
【0024】
【発明の実施の形態】
以下の(1)〜(10)の前提に基づき、本発明の構成および動作を説明する。
(1)本発明で扱う曲線および曲面は、一般的な3次元CADシステムで扱えるものであり、CADシステムにおいては、曲面(surface)は面(face)により、曲線(curve)は稜線(edge)により、それぞれ保持されているものとする。
【0025】
(2)CADシステムにおいては、面の境界には必ず稜線が存在するので、曲面の境界をあらわす曲線は得ることができるものとする。
(3)CADシステムにおいて、3次元空間上の点から曲線パラメータ空間、曲面パラメータ空間におけるパラメータ座標もそれぞれ得ることができるものとする。
【0026】
(4)CADシステムにおいて、円のような周期的曲線や、円柱・円錐・球面のような周期的曲面が存在するが、これらの周期性の方向を得ることができるものとする。
(5)本発明で扱う三角形メッシュとは、CADの曲面データを近似した三角形の集まりである。
(6)本発明で扱うワイヤーフレームとは、CADの曲線データを近似したライン(線分)またはポリライン(折れ線を表す連結された線分)の集まりである。
【0027】
(7)本発明で扱う境界ポリラインは、面の境界を表す稜線が保持している曲線から生成したもので、面が保持する曲面ごとに向きを持った閉じたループを構成できるものとする。
閉じたループの向きは、曲面の外部境界を表す外側の境界ポリラインの場合、反時計回りとする(図15参照)。逆に曲面の内部境界を表す内側の境界ポリラインの場合、時計回りとする(図15参照)。ただし、3次元空間において円錐台の側面を構成する円錐面、円柱の側面を構成する円柱面の場合は(図16(A)参照)、外部境界が2つあるとし、図15と同様にU、Vによるパラメータ空間では境界ポリラインの向きを反時計回りとする(図16(B)参照)。
【0028】
(8)閉じたポリライン、開いたポリラインの区別は、ポリラインに付加したフラグより識別できるものとする。また、ポリラインの向きはポリラインを構成する頂点の格納順により表現するものとする。
(9)本発明で扱う三角形は、面の表の方向からみて反時計回りに頂点を格納するものとする(図17参照)。
(10)“A mod B”の標記は、「整数Aを整数Bで割った余り」を意味するものとする。
【0029】
図1は、本発明の一実施形態に係るn次元空間の三角形メッシュのデータ構造を説明するための図である。
n次元空間の三角形メッシュのデータ構造は、三角形メッシュの頂点位置における座標からなる頂点座標テーブルと、三角形メッシュ上の領域ごとの曲面情報テーブルと、境界ポリラインを表す頂点座標インデックス配列と、三角形メッシュを表す頂点座標インデックス配列から構成される。
【0030】
図2は、図1のn次元空間の三角形メッシュのデータ構造における頂点座標テーブルのデータ構造を説明するための図である。
図2に示した頂点座標テーブルには、頂点座標の数(=n)と、頂点座標0から頂点座標n−1の順に格納されている。また、これらの頂点座標は、それぞれ(x成分、y成分、z成分)の3成分から構成され、各成分は浮動小数点あるいはベクトル量子化圧縮が行われている。
【0031】
図3は、図1のn次元空間の三角形メッシュのデータ構造における曲面情報テーブルのデータ構造を説明するための図である。
図3に示した曲面情報テーブルのデータ構造には、三角形メッシュの領域数(=na)と、領域0に対応する曲面タイプフラグ0から領域na−1に対応する曲面タイプフラグna−1までの曲面タイプフラグ配列(要素数=na)と、向きフラグ0から向きフラグnsf−1までの三角形メッシュの向きフラグ配列(要素数=nsf=npl+ncy+nco)と、平面0から平面npl−1までの平面配列(要素数=npl)と、円柱0から円柱ncy−1までの円柱面配列(要素数=ncy)と、円錐面0から円錐面nco−1までの円錐面配列(要素数=nco)から構成される。
【0032】
曲面タイプフラグ配列(要素数=na)の各要素は、三角形メッシュの各領域に対応し、その領域の曲面タイプを平面、円柱面、円錐面、その他曲面を表す4種類の整数値のいずれかで表す。
三角形メッシュの向きフラグ配列(要素数=nsf)は、三角形メッシュの各領域の曲面タイプが示す曲面の種類(平面、円柱面、円錐面)ごとに、三角形メッシュの各領域の向きを表し、各フラグは三角形メッシュの向きと曲面の向きが一致するか否かを表す論理値である。
【0033】
図4は、図3の曲面情報テーブルのデータ構造における平面配列(要素数=npl)、円柱面配列(要素数=ncy)、円錐面配列(要素数=nco)の各データ構造の各要素を説明する図である。
平面配列(要素数=npl)の各要素は、原点座標のx、y、z成分と法線ベクトルのx、y、z成分から構成される。
円柱面配列(要素数=ncy)の各要素は、中心座標のx、y、z成分、軸ベクトルのx、y、z成分、半径値から構成される。
円錐面配列(要素数=nco)の各要素は、頂点座標のx、y、z成分、軸ベクトルのx、y、z成分、軸ベクトル方向に1進んだ場所での半径値から構成される。各値はすべて浮動小数点形式で格納される。
【0034】
図5は、図1のn次元空間の三角形メッシュのデータ構造における境界ポリラインおよび三角形メッシュそれぞれの頂点座標インデックステーブルのデータ構造を説明するための図である。
境界ポリライン頂点座標インデックステーブルおよび三角形メッシュ頂点座標インデックステーブルはそれぞれ、頂点座標インデックス数(=nv)と、頂点座標インデックス0から頂点座標インデックスnv−1までのインデックスの値が整数値で格納されている。
【0035】
境界ポリライン頂点座標インデックステーブルは、インデックスラインセット形式またはインデックスラインストリップ形式のいずれかの形式で表される。
インデックスラインセット形式は、線分の始点座標、終点座標を格納している頂点座標テーブルへのインデックスが順に格納される。
インデックスラインストリップ形式は、ポリラインの各頂点座標を格納している頂点座標テーブルへのインデックス+1およびストリップの最後を表すデリミタ(=0)が格納される。
【0036】
三角形メッシュ頂点座標インデックステーブルは、三角形インデックスセット形式、三角形インデックスストリップ形式または三角形インデックスファン形式のいずれかの形式で表される。
三角形インデックスセット形式は、各三角形の頂点座標を格納している頂点座標テーブルへのインデックスが格納される。
三角形インデックスストリップ形式または三角形インデックスファン形式は、三角形の頂点座標を格納している頂点座標テーブルへのインデックス+1およびストリップまたはファンの最後を表すデリミタ(=0)が格納される。
また、三角形は、メッシュ上の領域ごとにまとまって格納される。
【0037】
上述の三角形メッシュのデータ構造を用いることで、三角形メッシュのデータ圧縮および伸張が可能となり、データサイズが減少し、ハードディスク等保存装置のスペース効率が向上する。
以下、上述した三角形メッシュのデータ構造をもとに、三角形メッシュデータの圧縮方法および伸張方法を説明する。
【0038】
図6は、本発明の実施形態に係る三角形メッシュのデータの圧縮方法を説明するためのフローチャートである。
まず、三角形メッシュの頂点位置における座標からなる頂点座標テーブルを図2の形式で保存する(ステップS1)。
次に、三角形メッシュ上の領域ごとに曲面情報と境界情報に応じて頂点座標インデックス配列の保存処理を行なうため、カウンタiを0に初期化する(ステップS2)。
カウンタiが領域数nより小さいかを判定し(ステップS3)、カウンタiが領域数nより小さい場合(ステップS3のYES)、領域iの曲面情報と境界情報とが次に示す5つの条件のいずれかであるかを調べる(ステップS4)。
(1)曲面情報が平面であり、境界を構成する外部境界が1本である、
(2)曲面情報が平面であり、外部境界と内部境界が1本ずつである、
(3)曲面情報が円柱面であり、境界を構成する外部境界が2本である、
(4)曲面情報が円錐面であり、境界を構成する外部境界が1本である、
(5)曲面情報が円錐面であり、境界を構成する外部境界が2本である、
上記のいずれかの場合(ステップS4のYES)、領域iの曲面情報を図3の形式で保存し(ステップS5)、領域iの境界ポリラインを構成する頂点座標インデックス配列を図5の形式で保存する(ステップS6)。
【0039】
一方、曲面情報と境界情報が前述(1)から(5)のいずれでもない場合(ステップS4のNO)、領域iの三角形を構成する頂点座標インデックス配列を図5の形式で保存する(ステップS7)。
【0040】
ステップS6またはステップS7の後、カウンタiを1増加し(ステップS8)、再びステップS3へ戻り、領域数がnになるまでステップS3からS8を繰り返す。
以上により、曲面から生成した三角形メッシュデータを圧縮することができる。
【0041】
図7は、本発明の実施形態に係る三角形メッシュデータの伸張方法を説明するためのフローチャートである。
まず、図2の形式の三角形メッシュの頂点位置における座標からなる頂点座標テーブルを読み込む(ステップS11)。
次いで、三角形メッシュ上の領域ごとに頂点座標インデックステーブルを読み込むために、カウンタiを0で初期化する(ステップS12)。
【0042】
カウンタiが領域数nより小さいかを判定し(ステップS13)、カウンタiが領域数nより小さい場合(ステップS13のYES)、領域iの曲面情報が保存されているかを調べる(ステップS14)。
領域iに対する曲面情報が保存されている場合(ステップS14のYES)、領域iの曲面情報を読み込み(ステップS15)、領域iの境界ポリラインを構成する頂点座標インデックス配列を読み込み(ステップS16)、境界ポリラインを構成する頂点座標インデックス配列から、三角形メッシュを構成する頂点座標インデックス配列を生成する(ステップS17)。
【0043】
一方、領域iに対する曲面情報が保存されていない場合(ステップS14のNO)、三角形を構成する頂点座標インデックス配列を読み込む(ステップS18)。
【0044】
ステップS17またはステップS18の後、カウンタiを1増加し(ステップS19)、再びステップS13へ戻り、領域数がnになるまでステップS13からS19を繰り返す。
以上により、三角形メッシュデータ圧縮方法によって作成された圧縮データを伸張することができる。
【0045】
図8は、図7のステップS15からS17で読み込まれた曲面の境界ポリラインから三角形メッシュを生成する方法を説明するためのフローチャートである。まず、対象領域の曲面情報と境界情報を用いて、境界ポリラインのペアを作成する(ステップS21)。
次いで、作成した境界ポリラインのペアを用いて、このペアの境界ポリライン間を埋める三角形メッシュを生成する(ステップS22)。
以上により、三角形メッシュを生成することができる。
【0046】
図9は、図8のステップS21における曲面情報と境界情報を用いて境界ポリラインのペアを作成する方法を説明するためのフローチャートである。
まず、曲面情報が平面である場合(ステップS31のYES)、境界が外部境界1本であるかを調べる(ステップS32)。
境界が外部境界1本であれば(ステップS32のYES)、外部境界を2分割して開いた境界ポリラインを作成し、これらをペアとする。ここで、分割は、1本のポリラインの端点がもう一本のポリラインの端点と重複するように行い、ポリラインの向きを分割前と同一とする(ステップS33)。
【0047】
一方、境界が外部境界1本でない場合(ステップS32のNO)、外部境界と内部境界が1本ずつであるので、それぞれの境界を併せて境界ポリラインのペアとする(ステップS34)。
【0048】
曲面情報が円柱面である場合(ステップS35のYES)、境界が外部境界2本であるので、それぞれの境界を併せて境界ポリラインのペアとする(ステップS36)。
曲面情報が平面でも円柱面でもない場合(ステップS35のNO)、必ず円錐面であるから、境界が外部境界1本である場合(ステップS37のYES)は、外部境界と円錐面の先端を境界ポリラインのペアとする(ステップS38)。
曲面情報が円錐面で、境界が外部境界1本でない場合(ステップS37のNO)、外部境界が2本であるので、それぞれの境界を併せて境界ポリラインのペアとする(ステップS39)。
以上により、境界ポリラインのペアを作成することができる。
【0049】
図10は、図8のステップS22における2本のポリライン間に三角形メッシュを生成する方法を説明するためのフローチャートである。
以下の処理では、n1,n2をそれぞれポリライン1、ポリライン2を構成する頂点の数として説明する。
【0050】
ペアの境界ポリラインが閉じている場合(ステップS41のYES)、2本の境界ポリラインの頂点同士で、曲面パラメータ空間上での距離が最も短い頂点をカレント頂点1、カレント頂点2として求め、その頂点間を繋いで辺を生成する(ステップS42)。
このときのカレント頂点1のポリライン1上での位置をi(0≦i≦n1−1)とし、このときのカレント頂点2のポリライン2上での位置をj(0≦j≦n2−1)とし、カレント頂点1を終了点1として保存し、カレント頂点2を終了点2として保存する(ステップS43)。
【0051】
一方、ペアの境界ポリラインが開いている場合(ステップS41のNO)、ポリライン1を構成する頂点の終点をカレント頂点1とし、ポリライン2を構成する頂点の始点をカレント頂点2とし、カレント頂点1、カレント頂点2の間を繋いで辺を生成する(ステップS44)。このときのカレント頂点1のポリライン1上での位置をi(=n1−1)とし、このときのカレント頂点2のポリライン2上での位置をj(=0)とする。
ポリライン1を構成する頂点の始点を終了点1として保存し、ポリライン2を構成する頂点の終点を終了点2として保存する(ステップS45)。
【0052】
以後、頂点数がn1個のポリライン1においては、i(0≦i≦n1−1)番目の頂点に隣接する頂点を((i−1) mod n1)番目の頂点として求め、頂点数がn2個のポリライン2においては、j(0≦j≦n2−1)番目の頂点に隣接する頂点を((j+1) mod n2)番目の頂点として求めるものとする。
【0053】
カレント頂点1からポリライン2のカレント頂点2に隣接する候補頂点2への線分の距離およびカレント頂点2からポリライン1のカレント頂点1に隣接する候補頂点1への線分の距離を曲面パラメータ空間上で計算し、短いほうの線分の頂点ペアを取得する(図11(A)参照)(ステップS46)。
【0054】
取得した頂点ペアを結んだ線分がポリラインに交差しなければ(ステップS47のYES)、その頂点ペアを結んで辺を生成することで三角形メッシュを生成し(図11(B)参照)(ステップS48)、辺を生成した候補頂点が終了点である場合(ステップS49のYES)、その候補頂点を新たにカレント頂点とする(ステップS50)。このとき候補頂点は存在しないものとする。
また、辺を生成した候補頂点が終了点でない場合(ステップS49のNO)、その候補頂点を新たにカレント頂点とし、そのカレント頂点に隣接する頂点を新たに候補頂点とする(図11(B)参照)(ステップS51)。
【0055】
一方、取得した頂点ペアを結んだ線分がポリラインに交差すれば(ステップS47のNO)、交差したポリライン上の候補頂点が終了点でない場合(ステップS52のNO)、交差したポリライン上のカレント頂点と候補頂点に隣接する頂点を結んで辺を生成することにより三角形メッシュを生成し(図11(C)、(D)参照)(ステップS53)、辺を生成した候補頂点に隣接する頂点を新たに候補頂点とし、元の候補頂点をポリラインから削除する(図11(D)参照)(ステップS54)。
交差したポリライン上の候補頂点が終了点である場合(ステップS52のYES)、終了点をカレント頂点により更新し、元の候補頂点をポリラインから削除する(ステップS55)。このとき候補頂点は存在しないものとする。
【0056】
どちらか一方でもカレント頂点が終了点ではない場合(ステップS56のYES)、候補頂点が2つとも存在するとき(ステップS57のYES)は、ステップS46へ戻る。
また、候補頂点が2つ存在しない場合(ステップS57のNO)、存在する候補頂点と、逆のポリライン上のカレント頂点をペアとして取得し、ステップS47へ戻る(ステップS58)。
以上により三角形メッシュを生成できる。
【0057】
図10のステップS48およびステップ53で、2本の境界ポリライン間に三角形メッシュを生成する場合、三角形の頂点の格納順は、図17に示す通り反時計回りにする必要がある(図12参照)。そのために、三角形を構成する頂点の格納順序を、三角形を構成する3頂点のうち2頂点を含む境界ポリライン上における順序と同じにする。
ここで境界が外部ポリラインであるか内部ポリラインであるかの区別は必要ない。
【0058】
図13は、図10における線分と境界ポリラインの交差判定方法を説明するためのフローチャートである。
三角形を構成する3頂点のうち2頂点を含む2つの境界ポリラインから三角形を仮に生成する(ステップS61)。
曲面パラメータ空間上で、三角形を構成する頂点の格納順に逐次、次の頂点座標から前の頂点座標を減ずることで得られる2本のベクトルの外積ベクトルを計算して、三角形の法線ベクトルを計算する(ステップS62)。
この外積ベクトルのZ成分が負ならば(ステップS63のYES)、交差したと判定する。
一方、この外積ベクトルのZ成分が正ならば(ステップS63のNO)、交差しないと判定する。
以上により線分とポリラインの交差判定ができる。
【0059】
本発明は上述した実施形態のみに限定されたものではない。上述した実施形態を構成する圧縮方法または伸張方法の各機能をそれぞれプログラム化し、あらかじめCD−ROM等の記録媒体に書き込んでおき、コンピュータに搭載したCD−ROMドライブのような媒体駆動装置にこのCD−ROM等を装着して、これらのプログラムをコンピュータのメモリあるいは記憶装置に格納し、それを実行することによっても、本発明の目的が達成されることは言うまでもない。
この場合、記録媒体から読出されたプログラム自体が上述した実施形態の機能を実現することになり、そのプログラムおよびそのプログラムを記録した記録媒体も本発明を構成することになる。
【0060】
なお、記録媒体としては半導体媒体(例えば、ROM、不揮発性メモリカード等)、光媒体(例えば、DVD、MO、MD、CD−R等)、磁気媒体(例えば、磁気テープ、フレキシブルディスク等)のいずれであってもよい。
【0061】
また、ロードしたプログラムを実行することにより上述した実施形態の機能が実現されるだけでなく、そのプログラムの指示に基づき、オペレーティングシステム等が実際の処理の一部または全部を行い、その処理によって上述した実施形態の機能が実現される場合も含まれる。
【0062】
また、上述した実施形態の機能を実現するプログラムが、機能拡張ボードや機能拡張ユニットに備わるメモリにロードされ、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって、上述した実施形態の機能が実現される場合も含まれる。
【0063】
さらに、上述したプログラムをサーバコンピュータの磁気ディスク等の記憶装置に格納しておき、通信網で接続された利用者のコンピュータからダウンロード等の形式で頒布する場合、このサーバコンピュータの記憶装置も本発明の記録媒体に含まれる。
【0064】
また、上述した三角形メッシュデータ圧縮方法を実施するための第1のコンピュータと三角形メッシュデータ伸張方法を実施するための第2のコンピュータを通信リンクで接続し、第1のコンピュータで圧縮して得られる図1の形式で格納された圧縮データを通信リンクによって第2のコンピュータへ送る。
第2のコンピュータは、この圧縮データを受信し、伸張して三角形メッシュを生成する。
ここで、通信リンクの例として、シリアルリンク(RS−232)、パラレルリンク、無線リンク、赤外線リンク、ネットワーク(ローカルエリアネットワーク、広域ネットワーク、イントラネット、インターネット)がある。
このようにすると、一方のコンピュータで作成された曲面から作成された三角形メッシュデータの圧縮データを他方のコンピュータで受信して伸張することにより、表示や加工等を行うことができる。
【0065】
図14は、本発明を3次元CADシステムに適用した場合の三角形メッシュの圧縮結果の表示例と、その圧縮結果を伸張した場合の表示例である。
図14(A)は、圧縮されたデータを伸張せずに表示したものであり、領域の境界ポリライン、曲面情報が存在しない領域の三角形メッシュを表示している。図14(B)は、圧縮されたデータを伸張して表示したものであり、曲面情報が存在しない領域の三角形メッシュおよび領域の境界ポリラインから生成した三角形メッシュを表示している。
【0066】
【発明の効果】
以上説明したように本発明によれば、三角形メッシュの圧縮および伸張を行なうことができる。
本発明の三角形メッシュのデータ構造を使用すると、データサイズが減少し、ハードディスク等保存装置のスペース効率が向上する。
また、データサイズが減少したため、表示速度および転送速度が向上する。
さらに、3次元CADシステムに本発明の三角形メッシュのデータ構造を使用することによって、コンパクトな3次元データを実現できる。
【図面の簡単な説明】
【図1】本発明の一実施形態に係るn次元空間の三角形メッシュのデータ構造を説明するための図である。
【図2】図1のn次元空間の三角形メッシュのデータ構造における頂点座標テーブルのデータ構造を説明するための図である。
【図3】図1のn次元空間の三角形メッシュのデータ構造における曲面情報テーブルのデータ構造を説明するための図である。
【図4】図3の曲面情報テーブルのデータ構造における平面配列、円柱面配列、円錐面配列の各データ構造の各要素を説明するための図である。
【図5】図1のn次元空間の三角形メッシュのデータ構造における境界ポリラインおよび三角形メッシュそれぞれの頂点座標インデックステーブルのデータ構造を説明するための図である。
【図6】本発明の実施形態に係る三角形メッシュのデータの圧縮方法を説明するためのフローチャートである。
【図7】本発明の実施形態に係る三角形メッシュのデータの伸張方法を説明するためのフローチャートである。
【図8】図7の曲面の境界ポリラインから三角形メッシュを生成する方法を説明するためのフローチャートである。
【図9】図8の曲面情報と境界情報を用いて境界ポリラインのペアを作成する方法を説明するためのフローチャートである。
【図10】図8の2本のポリライン間に三角形メッシュを生成する方法を説明するためのフローチャートである。
【図11】2本のポリライン間に三角形メッシュを生成する方法を説明するための図である。
【図12】2本のポリライン間に三角形メッシュを生成する方法を説明するための図である。
【図13】線分とポリラインの交差判定方法を説明するためのフローチャートである。
【図14】本発明を3次元CADシステムに適用した場合の三角形メッシュの圧縮結果の表示例と、その圧縮結果を伸張した場合の表示例である。
【図15】境界ポリラインの向きを説明するための図である。
【図16】周期性を持つ境界ポリラインの向きを説明するための図である。
【図17】三角形の頂点の格納順序を説明するための図である。
Claims (23)
- n次元空間の三角形メッシュを表すデータ構造であって、三角形メッシュの頂点位置における座標を表す頂点座標テーブルと、三角形メッシュ上の領域ごとの曲面情報を表す曲面情報テーブルと、境界ポリラインを表す頂点座標インデックス配列と、三角形メッシュを表す頂点座標インデックス配列とを含んでなることを特徴とする三角形メッシュのデータ構造。
- 請求項1に記載の三角形メッシュのデータ構造において、前記頂点座標テーブルは、浮動小数点表現および/またはベクトル量子化圧縮がなされていることを特徴とする三角形メッシュのデータ構造。
- 請求項1に記載の三角形メッシュのデータ構造において、前記曲面情報テーブルは、三角形メッシュの領域数と、前記領域ごとにその領域の示す曲面タイプが所定の複数種類のタイプのいずれかであることを表す曲面タイプフラグ配列と、前記曲面タイプが示す曲面の種類ごとに、三角形メッシュの向きを表す向きフラグ配列と、前記曲面タイプごとの曲面配列とを含んでなることを特徴とする三角形メッシュのデータ構造。
- 請求項3に記載の三角形メッシュのデータ構造において、前記曲面タイプは、平面、円柱面、円錐面とし、前記曲面タイプごとの曲面配列は、平面を表す平面配列と、円柱面を表す円柱面配列と、円錐面を表す円錐面配列とからなり、前記平面配列の各要素は、原点座標と法線ベクトルを持ち、前記円柱面配列の各要素は、中心座標と軸ベクトルと半径値を持ち、前記円錐面配列の各要素は、頂点座標と軸ベクトルと軸方向に1進んだ場所での半径値を持つことを特徴とする三角形メッシュのデータ構造。
- 請求項1に記載の三角形メッシュのデータ構造において、前記境界ポリラインを表す頂点座標インデックス配列は、インデックスラインストリップ形式またはインデックスラインセット形式のいずれかであることを特徴とする三角形メッシュのデータ構造。
- 請求項1に記載の三角形メッシュのデータ構造において、前記三角形メッシュを表す頂点座標インデックス配列は、三角形インデックスセット形式、三角形インデックスストリップ形式または三角形インデックスファン形式のいずれかであることを特徴とする三角形メッシュのデータ構造。
- 請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造において、三角形メッシュをコンピュータの記憶装置に保存するために用いられることを特徴とする三角形メッシュのデータ構造。
- 請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造において、コンピュータから通信リンクを通して送信されることを特徴とする三角形メッシュのデータ構造。
- 請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造において、コンピュータから通信リンクを通して受信されることを特徴とする三角形メッシュのデータ構造。
- 曲面から生成した三角形メッシュデータを圧縮する三角形メッシュデータ圧縮方法において、三角形メッシュの頂点位置における座標の情報からなる頂点座標テーブルを保存し、三角形メッシュ上の領域ごとの曲面情報を表す曲面情報テーブルを保存し、前記領域について、
(1)曲面情報が平面であり、境界を構成する外部境界が1本である
(2)曲面情報が平面であり、外部境界と内部境界が1本ずつである
(3)曲面情報が円柱面であり、境界を構成する外部境界が2本である
(4)曲面情報が円錐面であり、境界を構成する外部境界が1本である
(5)曲面情報が円錐面であり、境界を構成する外部境界が2本である
のいずれかであるとき、この領域の境界ポリラインを構成する頂点座標インデックス配列を保存し、
前記領域について、上記(1)から(5)のいずれでもないときには、三角形を構成する頂点座標インデックス配列を保存することを特徴とする三角形メッシュデータ圧縮方法。 - 曲面から生成した三角形メッシュデータを伸張する三角形メッシュデータ伸張方法において、
三角形メッシュの頂点位置における座標の情報からなる頂点座標テーブルを読み込み、三角形メッシュ上の領域に対応する曲面情報が保存されている場合は、この領域の曲面情報を読み込み、この領域の境界ポリラインを構成する頂点座標インデックス配列を読み込み、前記境界ポリラインを構成する頂点座標インデックス配列から三角形メッシュを構成する頂点座標インデックス配列を生成する、
三角形メッシュ上の領域に対応する曲面情報が保存されていない場合は、三角形メッシュを構成する頂点座標インデックス配列を読み込むことを特徴とする三角形メッシュデータ伸張方法。 - 請求項11に記載の三角形メッシュデータ伸張方法において、前記境界ポリラインを構成する頂点座標インデックス配列から三角形メッシュを構成する頂点座標インデックス配列を生成する方法は、前記領域の曲面情報と境界情報を用いて境界ポリラインのペアを作成し、前記ペアの境界ポリラインを用いて、このペアの境界ポリライン間を埋める三角形メッシュを生成することを特徴とする三角形メッシュデータ伸張方法。
- 請求項12に記載の三角形メッシュデータ伸張方法において、前記曲面情報と境界情報を用いて境界ポリラインのペアを作成する方法は、前記曲面情報が平面である場合は、境界が外部境界1本であれば、外部境界を2分割して境界ポリラインのペアとし、境界が外部境界と内部境界1本ずつであれば、それぞれの境界を併せて境界ポリラインのペアとする、
前記曲面情報が円柱面である場合は、境界が外部境界2本であれば、それぞれの境界を併せて境界ポリラインのペアとする、
前記曲面情報が円錐面である場合は、境界が外部境界1本であれば、外部境界と円錐面の先端を境界ポリラインのペアとし、境界が外部境界2本であれば、それぞれの境界を併せて境界ポリラインのペアとすることを特徴とする三角形メッシュデータ伸張方法。 - 請求項12に記載の三角形メッシュデータ伸張方法において、前記ペアの境界ポリラインを用いて、このペアの境界ポリライン間を埋める三角形メッシュを生成する方法は、
まず、前記境界ポリラインが閉じている場合、2本の境界ポリラインの頂点同士で、曲面パラメータ空間上での距離が最も短い頂点(カレント頂点1、カレント頂点2)を求め、それらの頂点間を繋いで辺を生成し、カレント頂点1を終了点1として保存し、カレント頂点2を終了点2として保存する、
前記境界ポリラインが開いる場合、一方の境界ポリライン(ポリライン1)を構成する頂点の終点をカレント頂点1とし、他方の境界ポリライン(ポリライン2)を構成する頂点の始点をカレント頂点2として、カレント頂点1とカレント頂点2の間を繋いで辺を生成し、ポリライン1を構成する頂点の始点を終了点1として保存し、ポリライン2を構成する頂点の終点を終了点2として保存する、
次に、
カレント頂点1からポリライン2のカレント頂点2の始点に近い方の隣接する候補頂点2への距離およびカレント頂点2からポリライン1のカレント頂点1の終点に近い方の隣接する候補頂点1への距離を曲面パラメータ空間上で計算し、
(1)頂点ペアを結んだ線分が境界ポリラインに交差しなければ、その頂点ペアを結んで辺を生成して三角形メッシュを生成し、
(イ)辺を生成した候補頂点が終了点でない場合、その候補頂点を新たにカレント頂点とし、そのカレント頂点に隣接する頂点を新たに候補頂点とする、
(ロ)辺を生成した候補頂点が終了点である場合、その候補頂点を新たにカレント頂点とし、候補頂点は存在しないものとする、
(2)頂点ペアを結んだ線分がポリラインに交差すれば、
(イ)交差したポリライン上の候補頂点が終了点でない場合、交差したポリライン上のカレント頂点と候補頂点に隣接する頂点を結んで辺を生成することにより三角形メッシュを生成し、辺を生成した候補頂点に隣接する頂点を新たに候補頂点にし、元の候補頂点をポリラインから削除する、
(ロ)交差したポリライン上の候補頂点が終了点である場合、候補頂点は存在しないものとし、終了点をカレント頂点により更新し、元の候補頂点をポリラインから削除する、
上記の(1)または(2)の結果、どちらか一方でもカレント頂点が終了点ではない場合、
候補頂点が2つとも存在すれば、最短距離ペアの取得以降の処理を繰り返し、
候補頂点が2つ存在しなければ、存在する候補頂点と、逆のポリライン上のカレント頂点をペアとして取得して、ペア間の線分の交差判定以降を繰り返し、
上記の(1)または(2)の結果、いずれもカレント頂点が終了点である場合には処理を終了することを特徴とする三角形メッシュデータ伸張方法。 - 請求項14に記載の三角形メッシュデータ伸張方法において、前記線分とポリラインの交差判定方法は、三角形を構成する3頂点のうち2頂点を含む2つの境界ポリラインから三角形を仮に生成し、曲面パラメータ空間上で、三角形を構成する頂点の格納順に逐次、次の頂点座標から前の頂点座標を減ずることで得られる2本のベクトルの外積ベクトルを計算することにより三角形の法線ベクトルを計算し、前記外積ベクトルのZ成分が負ならば交差したと判定し、正ならば交差しないと判定することを特徴とする三角形メッシュデータ伸張方法。
- 請求項14に記載の三角形メッシュデータ伸張方法において、前記三角形を生成するとき、この三角形を構成する頂点の格納順序を、この三角形を構成する3頂点のうち2頂点を含む境界ポリライン上における順序と同じにすることを特徴とする三角形メッシュデータ伸張方法。
- コンピュータに、請求項10に記載された三角形メッシュデータ圧縮方法を実行させるためのプログラム。
- 請求項17に記載の三角形メッシュデータ圧縮プログラムを記録したコンピュータ読み取り可能な記録媒体。
- コンピュータに、請求項11乃至16のいずれか1に記載された三角形メッシュデータ伸張方法を実行させるためのプログラム。
- 請求項19に記載の三角形メッシュデータ伸張プログラムを記録したコンピュータ読み取り可能な記録媒体。
- n次元空間の三角形メッシュのデータを圧縮および/または伸張する1つ以上のコンピュータシステムであって、各コンピュータシステムは、プロセスを実行する中央処理装置と、記憶装置と、前記記憶装置に格納された請求項17記載のプログラムと、前記記憶装置に格納された請求項19記載のプログラムと、前記記憶装置に格納された請求項1乃至6のいずれか1に記載の三角形メッシュのデータ構造を持つ三角形メッシュデータとを有することを特徴とするシステム。
- 請求項21に記載のシステムにおいて、2つ以上のコンピュータシステムが通信リンクで接続されたことを特徴とするシステム。
- 請求項22に記載のシステムにおいて、前記通信リンクは、インターネット、イントラネット、広域ネットワーク、ローカルエリアネットワーク、無線周波数リンク、赤外線リンクおよびシリアル通信リンクのいずれかを含むことを特徴とするシステム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002266002A JP2004102834A (ja) | 2002-09-11 | 2002-09-11 | 三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002266002A JP2004102834A (ja) | 2002-09-11 | 2002-09-11 | 三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004102834A true JP2004102834A (ja) | 2004-04-02 |
Family
ID=32264973
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002266002A Pending JP2004102834A (ja) | 2002-09-11 | 2002-09-11 | 三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004102834A (ja) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9621924B2 (en) | 2012-04-18 | 2017-04-11 | Thomson Licensing | Vextex correction method and apparatus for rotated three-dimensional (3D) components |
US9866840B2 (en) | 2013-01-10 | 2018-01-09 | Thomson Licensing | Method and apparatus for vertex error correction |
CN109934923A (zh) * | 2017-12-15 | 2019-06-25 | 中国科学院沈阳自动化研究所 | 适用于生物材料3d打印的模型分层以及轨迹填充方法 |
CN110689594A (zh) * | 2019-01-04 | 2020-01-14 | 中国人民解放军战略支援部队信息工程大学 | 一种确定三角形格网的离散线的方法和装置 |
CN113127945A (zh) * | 2021-05-18 | 2021-07-16 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时布料仿真的方法及其系统 |
CN114707254A (zh) * | 2022-06-01 | 2022-07-05 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种基于模板构造法的二维边界层网格生成方法及系统 |
CN116542183A (zh) * | 2023-07-04 | 2023-08-04 | 中国空气动力研究与发展中心计算空气动力研究所 | 非结构二阶曲面多面体网格重构方法、系统、设备及介质 |
-
2002
- 2002-09-11 JP JP2002266002A patent/JP2004102834A/ja active Pending
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9621924B2 (en) | 2012-04-18 | 2017-04-11 | Thomson Licensing | Vextex correction method and apparatus for rotated three-dimensional (3D) components |
US9866840B2 (en) | 2013-01-10 | 2018-01-09 | Thomson Licensing | Method and apparatus for vertex error correction |
CN109934923A (zh) * | 2017-12-15 | 2019-06-25 | 中国科学院沈阳自动化研究所 | 适用于生物材料3d打印的模型分层以及轨迹填充方法 |
CN109934923B (zh) * | 2017-12-15 | 2022-10-11 | 中国科学院沈阳自动化研究所 | 适用于生物材料3d打印的模型分层以及轨迹填充方法 |
CN110689594A (zh) * | 2019-01-04 | 2020-01-14 | 中国人民解放军战略支援部队信息工程大学 | 一种确定三角形格网的离散线的方法和装置 |
CN113127945A (zh) * | 2021-05-18 | 2021-07-16 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时布料仿真的方法及其系统 |
CN113127945B (zh) * | 2021-05-18 | 2022-07-19 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时布料仿真的方法及其系统 |
CN114707254A (zh) * | 2022-06-01 | 2022-07-05 | 中国空气动力研究与发展中心计算空气动力研究所 | 一种基于模板构造法的二维边界层网格生成方法及系统 |
CN116542183A (zh) * | 2023-07-04 | 2023-08-04 | 中国空气动力研究与发展中心计算空气动力研究所 | 非结构二阶曲面多面体网格重构方法、系统、设备及介质 |
CN116542183B (zh) * | 2023-07-04 | 2023-09-12 | 中国空气动力研究与发展中心计算空气动力研究所 | 非结构二阶曲面多面体网格重构方法、系统、设备及介质 |
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 | |
US10535176B2 (en) | Animation techniques for mobile devices | |
US20090184956A1 (en) | Method, medium, and system for compressing and decoding mesh data in three-dimensional mesh model | |
BRPI0612280A2 (pt) | deformação ampla de malha utilizando laplaciano de gráfico volumétrico | |
JPWO2006062199A1 (ja) | 3次元画像データ圧縮装置、該方法、該プログラム及び記録媒体 | |
JP7138169B2 (ja) | グラフィックスパイプラインにおけるインデックスの圧縮及び復元 | |
JP7307194B2 (ja) | 動画キャラクターの駆動方法並びにその、装置、機器及びコンピュータプログラム | |
JP2000331191A (ja) | 可逆な丸め操作による曲面モデルの生成方法及びその曲面モデルからの格子ポリゴンモデル生成方法及びそれらの方法を実行するための記録媒体、及び曲面モデルの伝送/表示方法 | |
CA2357962C (en) | System and method for the coordinated simplification of surface and wire-frame descriptions of a geometric model | |
Lee et al. | Parallel mesh simplification using embedded tree collapsing | |
WO2011104746A1 (ja) | 画像表示装置 | |
JP2004102834A (ja) | 三角形メッシュのデータ構造、三角形メッシュデータ圧縮方法および伸張方法、プログラム、記録媒体およびシステム | |
JP4218800B2 (ja) | データ圧縮装置、データ圧縮方法、データ伸張装置、データ伸張方法、n次元形状モデル処理装置並びにプログラムおよび記録媒体 | |
JP4017467B2 (ja) | 三角形メッシュデータの圧縮方法及びプログラム | |
US6567082B1 (en) | Incremental resolution changes in multi-resolution meshes with update records | |
JPWO2013038548A1 (ja) | 描画装置、描画方法及び描画プログラム | |
JP2655056B2 (ja) | テクスチャデータ生成装置 | |
JP4479957B2 (ja) | 曲面細分割装置 | |
FI117579B (fi) | Menetelmä, laite ja tietokoneohjelma tietokoneavusteisen polygonimallin prosessointiin | |
US20070159484A1 (en) | Method for processing computer aided polygon model | |
WO2023073875A1 (ja) | 3次元cadシステム | |
JP4097477B2 (ja) | 三角形メッシュデータの圧縮方法及び伸長方法、プログラム、コンピュータ、及びシステム | |
JP2003187266A (ja) | 3次元形状処理装置およびデータ処理方法 | |
JP2004102763A (ja) | 三角形メッシュのデータ構造、三角形メッシュデータ生成方法およびその参照方法、プログラム、記録媒体並びにシステム | |
JP3949013B2 (ja) | 3次元形状処理装置、3次元形状処理方法、プログラムおよび記録媒体 |