JP6569389B2 - ポリゴンモデル構造化装置および立体物造形用データ削減装置 - Google Patents

ポリゴンモデル構造化装置および立体物造形用データ削減装置 Download PDF

Info

Publication number
JP6569389B2
JP6569389B2 JP2015165056A JP2015165056A JP6569389B2 JP 6569389 B2 JP6569389 B2 JP 6569389B2 JP 2015165056 A JP2015165056 A JP 2015165056A JP 2015165056 A JP2015165056 A JP 2015165056A JP 6569389 B2 JP6569389 B2 JP 6569389B2
Authority
JP
Japan
Prior art keywords
vertex
polygon
coordinate
value
polygons
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.)
Active
Application number
JP2015165056A
Other languages
English (en)
Other versions
JP2017045138A (ja
Inventor
茂出木 敏雄
敏雄 茂出木
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dai Nippon Printing Co Ltd
Original Assignee
Dai Nippon Printing Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dai Nippon Printing Co Ltd filed Critical Dai Nippon Printing Co Ltd
Priority to JP2015165056A priority Critical patent/JP6569389B2/ja
Publication of JP2017045138A publication Critical patent/JP2017045138A/ja
Application granted granted Critical
Publication of JP6569389B2 publication Critical patent/JP6569389B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Generation (AREA)

Description

本発明は、立体物を表すデータを基に、樹脂等を加工して立体物を造形する3Dプリンタ等の立体物造形装置の利用に際して、立体物造形装置への出力用データを削減するための技術に関する。
近年、立体物を表すデータをもとに、樹脂や石膏等を加工して造形する3Dプリンタが立体物造形装置として普及してきている。3Dプリンタの医療応用として、医療診断で撮影されるCT/MRI画像(DICOM形式3次元ボクセルデータ)を基に3Dプリンタ出力用モデリングデータを作成し、手術シミュレーション・医学教育・インフォームドコンセント向けの臓器模型を出力したり、体内埋め込み用の人工臓器(血管、骨、関節など)を作成したりする試みが始まっている。
立体物造形用データである3Dプリンタ出力用モデリングデータは、ポリゴンの集合体で表現されたポリゴンモデルである。CT/MRI画像から臓器模型の3Dプリンタ出力用モデリングデータを作成する方法としては、特許文献1、特許文献2に示されるように、対象とする臓器領域のボクセルを抽出し、Marching Cube法(特許文献3など)により臓器領域の境界面を多面体(三角形の集合)で近似したサーフェースに変換して表面形状を表現したサーフェースデータを得る手法が一般的である。
特許第3690501号公報 特開2012−216102号公報 米国特許第7209136号公報 特開平8−153211号公報 特許第3350473号公報 特許第4463597号公報 特許第5018721号公報 特開平11−232489号公報
上記のサーフェース変換手法では512の3乗程度のボクセルを基に、3次元的に三角形を生成する方法をとるため、三角形ポリゴンが膨大になり、CG分野においては、画面描画の際に時間がかかり対話操作の応答性が悪くなるという問題が指摘されている。これは3Dプリンタ出力においても問題を起こし、プリンタ出力前処理(ポリゴンから積層造形用のデータに変換する処理)に時間がかかり、場合によりワークメモリーオーバーフローを引き起こして出力不能になる。
これに対してCG分野においては、画面の解像度に合せてポリゴン分割を粗くして曲面を表現したり、可視化に供しないポリゴンを事前に削除したりする方法がとられる。例えば、平板オブジェクトでは、単一面だけで表現し裏面を構成するポリゴンを省略したり、特許文献4のように、視点方向から隠面にあたり可視化に供しないポリゴンを事前に削除したり、特許文献5のように、他のポリゴンによって隠される内側のポリゴンを判定して事前に削除し、描画対象ポリゴンを削減する方法が提案されている。また、特許文献6のように、微細な凹凸表現に対してポリゴンを用いず、テクスチャやバンプマッピングで代用する方法が提案されている。
しかし、3Dプリンタ出力においては、画面より細かい解像度が要求され、ポリゴンにより閉空間を構成する必要があるため、平板オブジェクトにおいて、裏面を構成するポリゴンを省略することはできない。また、造形物は種々のアングルから鑑賞されるため基本的に隠面は存在せず、造形物内部にも別の形状を造形可能なため、CG分野で提案されているオクルージョンカリングという手法は意味をもたない。微細な凹凸に対しても陰影などで視覚的に擬似表現することはできず、ポリゴン形状で表現せざるを得ない。特許文献7のように、建築模型においては極端にポリゴンを削減したデフォルメされた表現が要望される場合もあるが、医療応用ではそれなりにリアリティが要求される。そのため、特許文献8のように、造形物の外観を損なわない程度に、三角形ポリゴン自体を削減する手法をとらざるを得ない。
三角形ポリゴンの削減にあたっては、特許文献8の手法が基本になる。これは、(1)与えられたポリゴンから削減しても全体形状にあまり影響を与えない三角形および稜線を探索する処理と、(2)対象稜線を削減するとともにそれと頂点を共有する隣接三角形を探索し補正を行う処理との2種の探索処理を所望のデータ量に削減されるまで繰り返す。特許文献8の手法では、双方の処理において削除候補とする稜線と頂点を共有する隣接三角形を探索する処理を必要とし、与えられたポリゴン数の2乗に比例して処理負荷が増大するという問題を抱えていた。
処理負荷を削減する方法として、削減対象の入力ポリゴンモデルのデータ量を少なくすれば良いため、入力ポリゴンモデルを分割して処理をすればよい。特許文献1では、ポリゴンに変換前のボクセル画像の段階で分割を行い、分割されたボクセルデータごとにサーフェース変換を行ってポリゴンを削減する手法を提案している。これにより確かに高速化は実現できるが、ボクセル分割された境界部にサーフェースが形成されてしまうため、ポリゴンデータを統合させると、造形物上において分割境界部に対応する不連続な亀裂が発生してしまうという問題がある(ただし、CG用途においては、レンダリングにより境界部は目立たない。)。
また、見かけ上は単一の閉空間にまとまって見えても、データ的には複数の閉空間に分離されている場合がある。例えば、主たる閉空間に接触した小空間が存在する場合、そのまま3Dプリンタから出力すれば支障無いが、特許文献8等によりポリゴン削減を施すと、小空間が削られて主たる閉空間からの距離が長くなり、完全に遊離した状態になることがある。この状態で3Dプリンタから出力すると、3Dプリンタからの出力前処理でエラー停止したり、空中に浮遊するよう造形指示された小空間が出力途上で落下し出力トラブルを発生させたりする可能性がある(ただし、CG用途においては、特に問題を生じない。)。
特に、ポリゴンモデルのデータ量の削減には、大きな処理負荷を要することが多いため、出力される立体物が精密さを問わないものである場合には、画像データの間引きのように、一定間隔でポリゴンを削除するという手法も考えられる。しかし、二次元の画像データの間引きと異なり、3次元構造を表現したポリゴンモデルの場合、削除したポリゴンに隣接するポリゴンの補正を行わなければ、削除した部分が空白になってしまい、意図した立体物を出力することができない。
例えば、図40(a)に示すような2D画像データと、図40(b)に示すような3Dポリゴンモデルを比較してみる。図40の2D画像データと3Dポリゴンモデルを、1/4程度に間引くと、それぞれ図41(a)に示すような2D画像データ、3Dポリゴンモデルが得られる。図41に示した2D画像データと3Dポリゴンモデルは、そのままでは空白が生じるため、図42に示すように補間することになる。2D画像データを補間した場合、図42(a)に示すように、画素間を補間するだけでよい。しかし、3Dポリゴンモデルの場合は、削除したポリゴンと頂点を共有するポリゴンを探索し、図42(b)に示すように、ポリゴン形状の補正をすることが必要となる。しかしながら、削除したポリゴンと頂点を共有するポリゴンを探索するには大きな処理負荷を要するという問題があった。
ポリゴンモデルは、ポリゴンと、そのポリゴンの頂点の座標値を対応付けた形態で記録されているため、ポリゴンを削除する際、その演算処理負荷が高い。そのため、ポリゴンの削減にあたり、事前に異なる形態に構造化しておくことが望まれる。
そこで、本発明は、ポリゴンを削減して立体物造形用データを得るためにデータの構造化を効率的に行うポリゴンモデル構造化装置、およびポリゴンで構成されたポリゴンモデルから、少ない処理負荷で、効率的にポリゴンを削減して立体物造形用データを得ることが可能な立体物造形用データ削減装置を提供することを課題とする。
上記課題を解決するため、本発明第1の態様では、
ポリゴンと当該ポリゴンを構成する頂点の座標値との対応関係としてポリゴンモデルを表現した頂点座標配列データを、ポリゴンを特定するポリゴンIDと、前記ポリゴンモデル内で各頂点を特定する頂点IDを対応付けた頂点構成テーブルと、頂点の座標値と頂点IDを対応付けた頂点座標テーブルで表現される形態に構造化する装置であって、
前記頂点座標配列データから前記頂点の座標値を抽出し、当該抽出された座標値からハッシュ値を算出するハッシュ値算出手段と、
前記算出されたハッシュ値を用いて前記頂点座標テーブルを参照し、前記ハッシュ値で特定される既登録の頂点IDに対応する頂点座標テーブル上の座標値と、前記抽出された座標値を照合する座標値照合手段と、
前記座標値照合手段による照合の結果、両座標値が一致する既登録の頂点IDが存在する場合は、前記頂点構成テーブルに、前記既登録の頂点IDとポリゴンIDを対応付けて記録し、前記座標値照合手段による照合の結果、両座標値が一致する既登録の頂点IDが存在しない場合は、前記頂点構成テーブルに、新規な頂点IDを記録する頂点構成テーブル処理手段と、
前記頂点構成テーブル処理手段が新規な頂点IDを記録した場合、前記頂点座標テーブル上の頂点IDの位置に前記座標値を前記ハッシュ値で特定可能な形態で記録するようにしている頂点座標テーブル処理手段と、
を有することを特徴とするポリゴンモデル構造化装置を提供する。
本発明第1の態様によれば、頂点座標配列データから頂点の座標値を抽出し、抽出された座標値からハッシュ値を算出し、算出されたハッシュ値を用いて頂点座標テーブルを参照し、ハッシュ値で特定される既登録の頂点IDに対応する頂点座標テーブル上の座標値と、抽出された座標値を照合し、照合の結果、両座標値が一致する既登録の頂点IDが存在する場合は、頂点構成テーブルに、既登録の頂点IDとポリゴンIDを対応付けて記録するようにし、照合の結果、両座標値が一致する既登録の頂点IDが存在しない場合は、頂点構成テーブルに、新規な頂点IDを記録するようにし、新規な頂点IDを記録した場合、頂点座標テーブル上の頂点IDの位置に座標値をハッシュ値で特定可能な形態で記録するようにしたので、ハッシュ値が異なる既登録の頂点IDの座標値とは一致する可能性が無いため、照合対象から外すことができ、ハッシュ値が同一となる既登録の頂点IDだけに照合対象を絞り込むことができ、ポリゴンと当該ポリゴンを構成する頂点の座標値との対応関係で表現した頂点座標配列データを、ポリゴンを特定するポリゴンIDと、ポリゴンモデル内で各頂点を特定する頂点IDを対応付けた頂点構成テーブルと、頂点の座標値と頂点IDを対応付けた頂点座標テーブルで表現される形態に効率的に構造化することが可能となる。
また、本発明第2の態様では、前記頂点座標テーブルには、頂点IDに対応して座標値が記録されるとともに、当該座標値をもとに前記ハッシュ値算出手段により算出されるハッシュ値が同一の他の座標値を前記頂点IDより最近傍に記録した単一の頂点IDがリンク先として対応付けられていることを特徴とする。
本発明第2の態様によれば、頂点座標テーブルには、頂点IDに対応して座標値が記録されるとともに、座標値をもとに算出されるハッシュ値が同一の他の座標値を前記頂点IDより最近傍に記録した単一の頂点IDがリンク先として対応付けられているので、同一ハッシュ値を持つ頂点IDに対応する座標値だけを迅速に抽出することができ、効率的な照合を行うことが可能となる。
また、本発明第3の態様では、前記頂点座標テーブルに加え先頭位置テーブルを設け、前記先頭位置テーブルには、前記ハッシュ値算出手段により算出されるハッシュ値に対応して、前記頂点座標テーブル上に最初に記録されている前記ハッシュ値になる頂点IDがリンク先として対応付けられていることを特徴とする。
本発明第3の態様によれば、頂点座標テーブルに加え先頭位置テーブルを設け、先頭位置テーブルには、算出されるハッシュ値に対応して、頂点座標テーブル上に最初に記録されているハッシュ値になる頂点IDがリンク先として対応付けられているので、頂点座標テーブル内で照合対象となる同一ハッシュ値を持つ頂点IDに対応する座標値だけを迅速に抽出することが可能となる。
また、本発明第4の態様では、前記ハッシュ値算出手段は、前記座標値が(x、y、z)なる3次元の値で構成され、かつ各々の成分が、XminからXmax、YminからYmax、ZminからZmaxの範囲の実数値をもつ場合、各成分をhx=(x−Xmin)・S/(Xmax−Xmin),hy=(y−Ymin)・S/(Ymax−Ymin),hz=(z−Zmin)・S/(Zmax−Zmin)なる式で所定の整数S段階(hx, hy, hz)に分類し、ハッシュ値h=hx+hy・S+hz・S2として算出するようにしていることを特徴とする。
本発明第4の態様によれば、座標値が(x、y、z)なる3次元の値で構成され、かつ各々の成分が、XminからXmax、YminからYmax、ZminからZmaxの範囲の実数値をもつ場合、各成分をhx=(x−Xmin)・S/(Xmax−Xmin),hy=(y−Ymin)・S/(Ymax−Ymin),hz=(z−Zmin)・S/(Zmax−Zmin)なる式で所定の整数S段階(hx, hy, hz)に分類し、ハッシュ値h=hx+hy・S+hz・S2として算出するようにしているので、3次元のポリゴンモデルにおける各頂点を空間的に均等分類して偏りのないハッシュ値を求めることが可能となる。
また、本発明第5の態様では、
前記ポリゴンモデル構造化装置により得られた頂点構成テーブルと頂点座標テーブルを用いて、ポリゴンの集合として表現されたポリゴンモデルのデータを、立体物の造形のために削減する装置であって、
前記頂点座標テーブルに記録されている頂点と同一座標となる重複先の頂点との対応関係を記録する頂点重複テーブルを定義する頂点重複テーブル定義手段と、
前記頂点構成テーブルに記録されているポリゴンに対して一部のポリゴンを削除対象ポリゴンとして設定する削除対象ポリゴン設定手段と、
前記頂点構成テーブルを参照して前記削除対象ポリゴンに対応する2つ以上の頂点を削除対象頂点として特定し、前記削除対象頂点を基に前記頂点座標テーブルを参照して複数の前記削除対象頂点の平均点を求め、前記削除対象頂点の1つを代表頂点とし、前記代表頂点以外の前記削除対象頂点の情報を頂点座標テーブルから削除するとともに、前記代表頂点の頂点IDに、前記平均点の座標値を対応付けて記録する頂点座標テーブル更新手段と、
前記頂点重複テーブルにおいて、前記代表頂点以外の前記削除対象頂点の重複先を前記代表頂点に設定する頂点重複テーブル更新手段と、
前記頂点構成テーブルの各頂点IDの値を、前記頂点重複テーブルに設定された重複先に変更し、変更された結果、同一ポリゴンに対応する頂点IDが2つ以上重複する場合、当該ポリゴンを前記頂点構成テーブルより削除する頂点構成テーブル更新手段と
を有することを特徴とする立体物造形用データ削減装置を提供する。
本発明第5の態様によれば、ポリゴンモデル構造化装置により得られた頂点構成テーブルと頂点座標テーブルを用い、頂点座標テーブルに記録されている頂点と同一座標となる重複先の頂点との対応関係を記録する頂点重複テーブルを定義し、頂点構成テーブルに記録されているポリゴンに対して所定の間隔で一部のポリゴンを削除対象ポリゴンとして設定し、頂点構成テーブルを参照して削除対象ポリゴンに対応する頂点を削除対象頂点として特定し、削除対象頂点を基に頂点座標テーブルを参照して複数の削除対象頂点の平均点を求め、削除対象頂点の1つを代表頂点とし、代表頂点以外の削除対象頂点の情報を頂点座標テーブルから削除するとともに、代表頂点の頂点IDに、平均点の座標値を対応付けて記録するようにし、頂点重複テーブルにおいて、代表頂点以外の削除対象頂点の重複先を代表頂点に設定するようにし、頂点構成テーブルの各頂点IDの値を、更新された頂点重複テーブルに設定された重複先に変更し、変更された結果、同一ポリゴンに対応する頂点IDが2つ以上重複する場合、そのポリゴンを頂点構成テーブルより削除するようにし、更新された頂点構成テーブルの各頂点IDを、更新された頂点座標テーブルを参照しながら座標値に置換することにより、ポリゴンモデルを更新するようにしたので、設定された削除対象ポリゴンの削除対象頂点と共有する頂点をもつ補正対象のポリゴンの探索負荷を減少させることができる。このため、出力造形物の品質の劣化を抑えながら、ポリゴンで構成されたポリゴンモデルから、少ない処理負荷で、効率的にポリゴンを削減して立体物造形用データを得ることが可能となる。特に、医療用のCT/MRI画像をもとに生成されたサーフェースデータ等のポリゴンモデルを効率良く3Dプリンタ等の立体物造形装置に出力することが可能となる。
また、本発明第6の態様では、
前記立体物造形用データ削減装置と、
前記立体物造形用データ削減装置から出力されたポリゴンモデルを用いて立体物を造形する立体物造形装置と、
を有することを特徴とする立体物造形システム
を有することを特徴とする立体物造形システムを提供する。
本発明第6の態様によれば、立体物造形用データ削減装置と、立体物造形用データ削減装置から出力されたポリゴンモデルを用いて立体物を造形する立体物造形装置により立体物造形システムを実現するようにしたので、ボードコンピュータを組み込んだ3Dプリンタ等の形態で、立体物造形システムを提供することが可能となる。
本発明によれば、ポリゴンと当該ポリゴンを構成する頂点の座標値との対応関係で表現したデータを、ポリゴンを特定するポリゴンIDと、ポリゴンモデル内で各頂点を特定する頂点IDを対応付けたテーブルと、頂点の座標値と頂点IDを対応付けたテーブルで表現される形態に効率的に構造化することが可能となる。
本発明の一実施形態に係る立体物造形用データ削減装置のハードウェア構成図である。 本発明の一実施形態に係る立体物造形用データ削減装置の構成を示す機能ブロック図である。 DICOM形式ボクセルデータからポリゴンモデルへの変換の様子を示す図である。 DICOM形式ボクセルデータを、複数のスライス画像として示した図である。 DICOM形式ボクセルデータを、4つの形態で表示した例である。 図5に示したDICOM形式ボクセルデータを「3D-Slicer」により変換して得られたSTLデータを示す図である。 領域別ポリゴンモデル(STLデータ)を示す図である。 領域別STLデータを合成したポリゴンモデル(STLデータ)のレンダリング像を示す図である。 本発明の一実施形態に係る立体物造形用データ削減装置の処理概要を示すフローチャートである。 処理対象とするポリゴン群の一例を示す図である。 図10に示したポリゴン群を実現するための頂点座標配列データを示す図である。 ステップS20におけるポリゴン削減処理の詳細を示すフローチャートである。 ポリゴンモデルの構造化の詳細を示すフローチャートである。 ポリゴン群とハッシュ値の関係を示す図である。 初期化時の各テーブルの状態を示す図である。 各テーブルの変化の様子を示す図である。 各テーブルの変化の様子を示す図である。 各テーブルの変化の様子を示す図である。 各テーブルの変化の様子を示す図である。 各テーブルの変化の様子を示す図である。 ポリゴンモデルの構造化の結果を示す図である。 頂点重複テーブルの初期化時における頂点構成テーブル、頂点座標テーブル、頂点重複テーブルを示す図である。 P6とP16の2つの削除対象ポリゴンが設定された状態のポリゴン群を示す図である。 ポリゴンP6が削除された状態の頂点構成テーブル、頂点座標テーブル、頂点重複テーブルを示す図である。 ポリゴンP16が削除された状態の頂点構成テーブル、頂点座標テーブル、頂点重複テーブルを示す図である。 頂点重複テーブルを用いた頂点構成テーブル更新の例を示す図である。 削除対象ポリゴンに隣接するポリゴンに関する、頂点構成テーブル更新の例を示す図である。 ポリゴン削除処理後の頂点座標配列データを示す図である。 ポリゴン削除処理後のポリゴン群の状態を示す図である。 P6とP16の2つの削除対象ポリゴンの一辺が削除対象辺として設定された状態のポリゴン群を示す図である。 削除対象辺DEが削除された状態の頂点構成テーブル、頂点座標テーブル、頂点重複テーブルを示す図である。 削除対象辺JKが削除された状態の頂点構成テーブル、頂点座標テーブル、頂点重複テーブルを示す図である。 頂点重複テーブルを用いた頂点構成テーブル更新の例を示す図である。 削除対象ポリゴンに隣接するポリゴンに関する、頂点構成テーブル更新の例を示す図である。 ポリゴン削除処理後の頂点座標配列データを示す図である。 ポリゴン削除処理後のポリゴン群の状態を示す図である。 ポリゴン削減処理により生じる問題を説明するための図である。 隔離された小体積グループの削除処理の詳細を示すフローチャートである。 図38のステップS44における最小間隔の算出処理の詳細を示すフローチャートである。 2D画像データと3Dポリゴンモデルを示す図である。 2D画像データと3Dポリゴンモデルに対して間引き削除を行った状態を示す図である。 間引き削除された2D画像データと3Dポリゴンモデルに対して補間処理を行った状態を示す図である。
以下、本発明の好適な実施形態について図面を参照して詳細に説明する。
<1.装置構成>
図1は、本発明の一実施形態に係る立体物造形用データ削減装置200を含む立体物造形システムのハードウェア構成図である。本実施形態に係る立体物造形用データ削減装置200は、汎用のコンピュータで実現することができ、図1に示すように、CPU(Central Processing Unit)1と、コンピュータのメインメモリであるRAM(Random Access Memory)2と、CPU1が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置3と、キーボード、マウス等のキー入力I/F(インターフェース)4と、3Dプリンタやデータ記憶媒体等の外部装置とデータ通信するためのデータ入出力I/F(インターフェース)5と、液晶ディスプレイ等の表示デバイスである表示部6と、を備え、互いにバスを介して接続されている。
3Dプリンタ7は、汎用の3Dプリンタであり、立体物の三次元形状をポリゴンの集合で表現したポリゴンモデルである立体物造形用データを基に樹脂、石膏等の素材を加工して立体物を造形する立体物造形装置である。3Dプリンタ7は、データ処理部7aと出力部7bを有している。3Dプリンタ7のデータ処理部7aは、データ入出力I/F5に接続されており、データ入出力I/F5から受け取った削減された立体物造形用データを基に、出力部7bが立体物を造形するようになっている。
図1では、立体物造形用データ削減装置200と3Dプリンタ7は分離した形態で示されているが、現在市販されている殆どの3Dプリンタ製品には立体物造形用データ削減装置200の構成要素である、CPU1、RAM2、記憶装置3、キー入力I/F4(汎用コンピュータ向けキーボード・マウスではなく、テンキーレベルの数種のボタン)、データ入出力I/F5、表示部6(数行の文字を表示可能な小型液晶パネル、タッチパネルを重畳させキー入力I/F4を兼ねることも多い)も小規模ながら重複して備えている。従って、3Dプリンタ7自体が外部記憶媒体経由で立体物造形用データを直接受け取り、単独で立体物を造形する運用も可能になっている(特に民生用の3Dプリンタではこちらの形態の方が多い)。すなわち、図1に示した立体物造形システムを1つの筐体に収めて、“3Dプリンタ”という製品として流通することも多い。
図2は、本実施形態に係る立体物造形用データ削減装置の構成を示す機能ブロック図である。図2において、10は制御手段、20はグループ分類手段、30はポリゴンモデル構造化手段、40は頂点重複テーブル定義手段、50は削除対象ポリゴン設定手段、60は頂点座標テーブル更新手段、70は頂点重複テーブル更新手段、80は頂点構成テーブル更新手段、90はポリゴンモデル更新手段、100はグループ合成手段、110はポリゴンモデル合成手段、120は領域別ポリゴンモデル記憶手段、130は合成ポリゴンモデル記憶手段である。図2に示した立体物造形用データ削減装置は、ポリゴンモデル構造化手段30のみを単独で機能させることによりポリゴンモデル構造化装置として機能する。
制御手段10は、立体物造形用データ削減装置全体の制御を行う。グループ分類手段20は、削除対象ポリゴンの選定対象のポリゴンモデルに対して、各グループに属するポリゴンがそのグループ内の他のいずれかのポリゴンと、ポリゴンを構成する辺(2頂点)を共有するようにグループ分類する。ポリゴンモデル構造化手段30は、ポリゴンモデルから、各ポリゴンに含まれる各頂点を、同一座標の頂点を同一値とする頂点IDで表現し、ポリゴンを構成する各頂点を頂点IDで表現してポリゴンと対応付けて記録した頂点構成テーブルと、頂点構成テーブルに付与された頂点IDと座標値を対応付けて記録した頂点座標テーブルを作成する。頂点重複テーブル定義手段40は、頂点座標テーブルに記録されている頂点IDと同一座標となる重複先の頂点IDとの対応関係を記録する頂点重複テーブルを定義する。削除対象ポリゴン設定手段50は、頂点構成テーブルに記録されているポリゴンに対して所定の間隔で一部のポリゴンを削除対象ポリゴンとして設定する。
頂点座標テーブル更新手段60は、頂点構成テーブルを参照して削除対象ポリゴンを構成する複数の頂点IDを削除対象頂点として特定し、削除対象頂点を基に頂点座標テーブルを参照して複数の削除対象頂点の平均点を求め、削除対象頂点の1つを代表頂点とし、代表頂点以外の削除対象頂点の情報を頂点座標テーブルから削除するとともに、代表頂点の頂点IDに、平均点の座標値を対応付けて記録する。頂点重複テーブル更新手段70は、頂点重複テーブルにおいて、代表頂点以外の全ての削除対象頂点の重複先を代表頂点に設定する。頂点構成テーブル更新手段80は、頂点構成テーブルの中で、更新された頂点重複テーブルにおいて更新された頂点IDの値を、更新された重複先に変更し、変更された結果、ポリゴンを構成する同一の値をもつ頂点IDが2つ以上重複する場合、当該ポリゴンを頂点構成テーブルより削除する。ポリゴンモデル更新手段90は、更新された頂点構成テーブルの各頂点IDを、更新された頂点座標テーブルを参照しながら座標値に置換することにより、間引かれたポリゴンの配列で表現されたポリゴンモデルを作成する。
グループ合成手段100は、分類された各グループに対するポリゴンモデル構造化手段30、頂点重複テーブル定義手段40、削除対象ポリゴン設定手段50、頂点座標テーブル更新手段60、頂点重複テーブル更新手段70、頂点構成テーブル更新手段80、ポリゴンモデル更新手段90による一連の処理の実行により作成された複数のグループの更新されたポリゴンモデルを、領域別に単一の領域別ポリゴンモデルに合成する。ポリゴンモデル合成手段110は、複数セットの更新された領域別ポリゴンモデルを単一の合成ポリゴンモデルに合成する。制御手段10、グループ分類手段20、ポリゴンモデル構造化手段30、頂点重複テーブル定義手段40、削除対象ポリゴン設定手段50、頂点座標テーブル更新手段60、頂点重複テーブル更新手段70、頂点構成テーブル更新手段80、ポリゴンモデル更新手段90、グループ合成手段100、ポリゴンモデル合成手段110は、CPU1が、記憶装置3に記憶されているプログラムを実行することにより実現される。
領域別ポリゴンモデル記憶手段120は、領域別ポリゴンモデルを記憶した記憶手段であり、記憶装置3により実現される。領域別ポリゴンモデルとは、1つの領域を1セットとして構成されたポリゴンモデルである。合成ポリゴンモデル記憶手段130は、複数セットの領域別ポリゴンモデルを合成した単一のポリゴンモデルである合成ポリゴンモデルを記憶する記憶手段であり、記憶装置3により実現される。合成ポリゴンモデル記憶手段130に記憶される合成ポリゴンモデルは、3Dプリンタ7への出力に削減された立体物造形用データとなる。領域別ポリゴンモデル記憶手段120に記憶された領域別ポリゴンモデル、合成ポリゴンモデル記憶手段130に記憶される合成ポリゴンモデルは、いずれもポリゴンの集合体であり、ポリゴン単位で各ポリゴンが有する頂点を記録した形式となっている。
図2に示した各構成手段は、現実には図1に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。なお、本明細書において、コンピュータとは、CPU等の演算処理部を有し、データ処理が可能な装置を意味し、パーソナルコンピュータなどの汎用コンピュータだけでなく、製品としての“3Dプリンタ”に組み込まれたボードコンピュータも含む。
図1に示した記憶装置3には、CPU1を動作させ、コンピュータを、立体物造形用データ削減装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、CPU1は、制御手段10、グループ分類手段20、ポリゴンモデル構造化手段30、頂点重複テーブル定義手段40、削除対象ポリゴン設定手段50、頂点座標テーブル更新手段60、頂点重複テーブル更新手段70、頂点構成テーブル更新手段80、ポリゴンモデル更新手段90、グループ合成手段100、ポリゴンモデル合成手段110としての機能を実現することになる。また、記憶装置3は、領域別ポリゴンモデル記憶手段120、合成ポリゴンモデル記憶手段130として機能するだけでなく、立体物造形用データ削減装置としての処理に必要な様々なデータを記憶する。
<2.処理動作>
<2.1.前処理>
次に、図1、図2に示した立体物造形用データ削減装置の処理動作について説明する。まず、医療用ボクセルデータからサーフェースデータである領域別ポリゴンモデルを作成する前処理について説明する。サーフェースデータとは、サーフェースモデリングにより立体構造を表面形状として表現したデータであり、多角形のデータであるポリゴンにより構成されるポリゴンモデルである。前処理は、コンピュータが公知のプログラムを実行することにより行われる。ここでは、公知のプログラムとして、米国ハーバード大学が中心に開発したオープンソースソフトウェアである「3D-Slicer」を用いた場合を例にとって説明する。まず、コンピュータが、全体ボクセルデータから、特定臓器領域のボクセルデータを抽出する。次に、コンピュータが、特定臓器領域のボクセルデータをポリゴンモデルであるサーフェースデータに変換する。このようにして得られた領域別ポリゴンモデルは、領域別ポリゴンモデル記憶手段120に格納される。前処理は、図1に示した立体物造形用データ削減装置を実現するコンピュータに、上記プログラムを実行させることにより行ってもよいし、図1に示した立体物造形用データ削減装置を実現するコンピュータとは別のコンピュータにより実行し、得られた領域別ポリゴンモデルを記憶装置3により実現される領域別ポリゴンモデル記憶手段120に格納するようにしてもよい。
本実施形態では、医療用ボクセルデータとして医用画像データ交換に関する国際標準規格であるDICOM形式のボクセルデータを用いる。また、ポリゴンモデルであるサーフェースデータとしてSTL(Standard Triangulated Language)データを用いる。STLデータとは、元来3Dグラフィックス分野におけるモデリングデータ交換に関する業界標準で、最近では3Dプリンタでも標準的に使用されるようになったもので、三次元形状を三角形のポリゴンの集合体で表現したデータである。そして、コンピュータが上記「3D-Slicer」を実行することにより、図3(a)に示すようなDICOM形式ボクセルデータから、図3(b)に示すような領域別のボクセルデータを抽出し、サーフェースモデル変換を行って図3(c)に示すようなポリゴンモデル(STLデータ)が得られる。領域別のボクセルデータの抽出、サーフェースモデル変換には、特許文献3等に記載されたMarching Cube法が用いられている。
図4〜図8に、「3D-Slicer」による処理画面の一例を示す。図4は、「3D-Slicer」の処理対象となるDICOM形式ボクセルデータを、複数のスライス画像として示した図である。図4の例では、人体頭部のサジタル像を256枚のスライス画像で示している。各スライス画像は、512×512画素で構成されている。
図5は、DICOM形式ボクセルデータを、4つの形態で表示した例である。図5において、上部に表示されているのは、ボリュームレンダリング像である。下部に表示されているのは、左側から順にアキシャル像、サジタル像、コロナル像である。
図6は、図5に示したDICOM形式ボクセルデータを「3D-Slicer」により変換して得られたポリゴンモデルのSTLデータを示す図である。図6において、上部に表示されているのは、STLデータのサーフェースレンダリング像である。図6の例では、眼球・脳領域しきい値:626.75以上(MRI撮影でボクセル値10bits幅の場合)、眼球結合組織Lしきい値:298.36-458.74、眼球結合組織Rしきい値:298.36-431.32を設定することにより、領域(組織)別に分類された領域別STLデータをサーフェースレンダリングしたものを示している。
図7は、「3D-Slicer」により得られた領域別STLデータをシェーディングにより陰影表現した図である。図8は、領域別STLデータを合成したポリゴンモデル(STLデータ)のサーフェースレンダリング像を示す図である。図8に示すFront Viewは、図6の上部に示したものと同一である。前処理の後は、図7に示したような領域別ポリゴンモデルが領域別ポリゴンモデル記憶手段120に記憶される。
<2.2.処理概要>
次に、図1、図2に示した立体物造形用データ削減装置の処理動作について説明する。図9は、本発明の一実施形態に係る立体物造形用データ削減装置の処理概要を示すフローチャートである。まず、グループ分類手段20が、領域別ポリゴンモデル記憶手段120から、1つの領域についての領域別ポリゴンモデルを読み込み、複数のグループに分類する(ステップS10)。次に、各グループのポリゴンモデルに対して、ポリゴンモデル構造化手段30、頂点重複テーブル定義手段40、削除対象ポリゴン設定手段50、頂点座標テーブル更新手段60、頂点重複テーブル更新手段70、頂点構成テーブル更新手段80、ポリゴンモデル更新手段90が、ポリゴン削減処理を実行する(ステップS20)。制御手段10が、全グループについてポリゴン削減処理が終了したか否かを判定し(ステップS30)、全グループについて終了していない場合は、未処理のグループに対してステップS20のポリゴン削減処理を実行する。全グループに対するポリゴン削減処理が終了した場合は、グループ合成手段100が、隔離された小体積グループの削除を行う(ステップS40)。続いて、グループ合成手段100は、全グループのポリゴンモデルの合成を行う(ステップS50)。制御手段10が、全領域について処理が終了したか否かを判定し(ステップS60)、全領域について終了していない場合は、未処理の領域に対してステップS10〜S50の処理を実行する。全領域に対する処理が終了した場合は、ポリゴンモデル合成手段110が、全領域の領域別ポリゴンモデルの合成を行う(ステップS70)。
<2.3.グループ分類処理>
まず、ステップS10において、グループ分類手段20がグループ分類処理を行う。具体的には、領域別ポリゴンモデルを、ポリゴンが接続されていない部分から、複数のグループに分類する。グループ分類処理の具体的な手法としては、公知の様々な手法を用いることができる。
<2.4.ポリゴン削減処理>
<2.4.1.ポリゴン単位削除>
次に、ステップS20におけるポリゴンモデル構造化手段30、頂点重複テーブル定義手段40、削除対象ポリゴン設定手段50、頂点座標テーブル更新手段60、頂点重複テーブル更新手段70、頂点構成テーブル更新手段80、ポリゴンモデル更新手段90によるポリゴン削減処理について説明する。ポリゴン削減処理におけるポリゴンの削除の手法として、ポリゴン単位削除と稜線単位削除の2方式が存在する。まず、ポリゴン単位削除について説明する。
図10は、処理対象とするポリゴン群の一例を示す図である。ポリゴンモデルは、図11に示されるように空間における三次元の値をもつポリゴン群であるが、図10の例では、紙面上での説明の便宜上、二次元空間に投影したポリゴン群を示している。図10の例では、削減前、18個の三角形のポリゴンからなるポリゴン群を示している。図10において、大文字のアルファベットA〜Nは特定のポリゴンに属する形式でなく、座標が異なる頂点を識別するために示している。大文字のアルファベットA〜Nは、ポリゴン群全体において頂点を識別するために、便宜上付されたものであり、後述する頂点座標配列データや、頂点構成テーブル、頂点座標テーブル、頂点重複テーブルには記録されていない(一部記載されているものは、理解を容易にするために便宜上用いられている。)。また、図10、図11には、ポリゴンIDP1〜P18、頂点A〜Nを各ポリゴンIDに対応付けて表現されたポリゴン別頂点番号V1a〜V18cが記載されている。ポリゴン別頂点番号V1a〜V18cは、説明の便宜上設けたものであり、頂点座標配列データ、頂点構成テーブル、頂点座標テーブル、頂点重複テーブルには記録されていない。
図11は、図10に示したポリゴン群を実現するための頂点座標配列データを示す図である。頂点座標配列データは、ポリゴンモデルを規定するデータであり、ポリゴンの集合体であるポリゴンモデルを配列構造で定義している。すなわち、図11は、STLデータの構造を示している。図11に示すように、頂点座標配列データは、ポリゴンを識別するポリゴン識別情報であるポリゴンIDP1〜P18に対応付けて、ポリゴンを構成する第1頂点、第2頂点、第3頂点の3つの頂点別に各座標値が記録されている。
ポリゴン別頂点番号は、その頂点が属するポリゴンのIDが特定される形式で頂点を表現したものである。具体的には、図10に示すように、頂点を示すVの後に、対応するポリゴンIDに含まれる数字、そして第1頂点、第2頂点、第3頂点の別を示すa、b、cのいずれかの小文字のアルファベットで表現する。例えば、図11の1行目に示すように、ポリゴンID“P1”のポリゴン(ポリゴンP1)の第1頂点は、“V1a”と表現される。頂点番号“V1a”に数字“1”が入っているため、ポリゴンP1の頂点であることが明確になっている。このポリゴン別頂点番号は、実際に頂点座標配列データに記録されているものではなく、図10との対応関係、頂点がどのポリゴンに所属するかを明らかにするため、便宜上図面に掲載したものである。また、図11の頂点座標配列データにおいて、各頂点の座標は、図10で示したA〜Nのいずれかに対応するため、各頂点の座標値にA〜Nを識別するアルファベットの小文字を添えて表現している。例えば、図11の1行目に示すように、ポリゴンP1の第1頂点V1aの座標値は、図10において“D”と表示されているので、“(Xd,Yd,Zd)”と表現される。各ポリゴンごとに、構成される3つの頂点に対応付けて3つの頂点の座標値が記録されている。
上記のような規則に従って作成されるため、頂点座標配列データにおいては、同一座標の頂点が複数箇所に重複して記録されることになる。例えば、図10に示した頂点Dは、6つのポリゴンP1,P2,P4,P5,P6,P7に共有されるため、座標値“(Xd,Yd,Zd)”は、頂点V1a,V2a,V4b,V5c,V6c,V7cとして6箇所に記録される。
図12は、ポリゴン単位削除の場合におけるポリゴン削減処理の詳細を示すフローチャートである。まず、ポリゴンモデル構造化手段30が、ポリゴンモデルの構造化を行う(ステップS22)。ポリゴンモデルの構造化とは、ポリゴンモデルを実現するデータである頂点座標配列データを、頂点構成テーブルおよび頂点座標テーブルで構成される構造に変換することにより、ポリゴンモデルにおける頂点関係(トポロジー・位相情報)が座標値(数値データ)から分離され、あるポリゴンの頂点の修正により影響を受ける周辺のポリゴンの頂点の探索が容易になり、編集し易い構造に組み替えることを意味する。
図13は、ステップS22のポリゴンモデルの構造化の詳細を示すフローチャートである。ステップS22のポリゴンモデルの構造化は、ポリゴンモデル構造化手段30により行われる。まず、頂点構成テーブル、頂点座標テーブル、頂点IDの初期化を行う(S101)。頂点構成テーブルは、各ポリゴンに含まれる各頂点を、同一座標の頂点を同一値とする頂点IDで表現し、ポリゴンを構成する各頂点を頂点IDで表現してポリゴンと対応付けて記録したテーブルである。頂点IDは、頂点を識別するための頂点識別情報であり、頂点を一意に特定することができれば、どのようなものを用いてもよいが、演算処理の効率化のため、本実施形態では、0から始まるシリアルな整数値を用いている。頂点座標テーブルは、頂点構成テーブルに付与された頂点IDと座標値を対応付けて記録したテーブルである。頂点構成テーブル、頂点座標テーブルの初期化は、各項目が記録されていない状態にすることを意味する。また、頂点IDの初期化として現在の頂点ID=0に設定する。さらに、ハッシュ値とリンク先頂点IDを対応付けた先頭位置テーブルも初期化する。先頭位置テーブルの初期化は、リンク先頂点IDを全て“−1”に設定することにより行われる。頂点座標テーブルと先頭位置テーブルの2つのテーブルによりハッシュ値別頂点座標テーブルを実現する。
次に、頂点座標配列データよりポリゴンIDと、そのポリゴンIDに対応する1つの頂点座標値を抽出する(S102)。例えば、図11に示した頂点座標配列データからは、ポリゴンID“P1”と第1頂点の頂点座標値(Xd,Yd,Zd)が抽出される。
続いて、抽出された頂点座標値(Xd,Yd,Zd)よりハッシュ値を算出する(S103)。具体的には、まず、ポリゴンモデル内の全てのポリゴンの3次元座標値x,y,zの最大値Xmax,Ymax,Zmax、最小値Xmin,Ymin,Zminを求める。これは、図11に示したような頂点配列データの座標ごとの最大値、最小値を求めることになる。そして、座標値x,y,zの値を均等なS段階に分類し、整数値hx,hy,hz(0≦hx,hy,hz≦S−1)に変換する。整数Sとしては、例えばS=32を設定することができる。具体的には、以下の〔数式1〕に従った処理を実行することにより、hx,hy,hzを算出する。ただし、〔数式1〕に従った処理の後、小数点以下を切り捨てた値を、整数値hx,hy,hzとして得るものとする。
〔数式1〕
hx=(x−Xmin)・S/(Xmax−Xmin)
hy=(y−Ymin)・S/(Ymax−Ymin)
hz=(z−Zmin)・S/(Zmax−Zmin)
そして、以下の〔数式2〕に従った処理を実行することにより、ハッシュ値hを算出する。
〔数式2〕
h=hx+hy・S+hz・S2(0≦h≦S3−1)
次に、算出されたハッシュ値を用いて先頭位置テーブルを参照する(S104)。そして、そのハッシュ値に対応するリンク先頂点IDが先頭位置テーブルに登録されているか否かを判定する(S105)。ハッシュ値に対応するリンク先頂点ID(図中“リンク頂点ID”と表示)が“−1”、すなわち初期状態である場合は、そのハッシュ値に対応するリンク先頂点IDが未登録、すなわち既登録でないことを意味する。
この場合、先頭位置テーブルに頂点IDの記録を行う(S106)。具体的には、先頭位置テーブルのハッシュ値に対応するリンク先頂点IDに、現在の頂点ID(初期状態では“0”)を書き込む。続いて、頂点座標テーブルの現在の頂点IDの位置にステップS102で抽出した座標値を書き込む。この時、頂点座標テーブルにもリンク先頂点IDを書き込む欄があるが、初期状態の“−1”のままにする。また、頂点構成テーブルにステップS102で抽出したポリゴンIDと、現在の頂点IDを書き込む。ここでは、新規な頂点IDとして記録されることになる。そして、現在の頂点IDをインクリメントする(S107)。
一方、ステップS105において、ハッシュ値に対応するリンク先頂点IDが“−1”でない場合は、そのハッシュ値に対応するリンク先頂点IDが既登録であることを意味する。この場合、ステップS102で抽出した座標値と、頂点座標テーブルにおける既登録のリンク先頂点IDに対応する座標値が一致するか否かを判定する(S108)。判定の結果、両座標値が一致する場合は、頂点構成テーブルのポリゴンID、頂点順の位置に、現在の頂点IDを記録する(S109)。ステップS108における判定の結果、両座標値が異なる場合は、頂点座標テーブルのリンク先頂点IDを参照し、リンク先頂点IDが0以上であるか否かを判定する(S110)。判定の結果、リンク先頂点IDが0以上である場合は、その値を頂点IDとし、ステップS108に戻って、その頂点IDに対応する座標値とステップS102で抽出した座標値を照合する。ステップS110における判定の結果、リンク先頂点IDが負値(例えば“−1”)である場合は、頂点座標テーブルのその頂点IDに対応するリンク先頂点IDに現在の頂点IDを記録し、ステップS107に戻って、頂点座標テーブルの現在の頂点IDの位置にステップS102で抽出した座標値を記録する。この時、頂点座標テーブルの現在の頂点IDにおけるリンク先頂点IDについては、初期状態の“−1”のままにする。また、頂点構成テーブルにステップS102で抽出したポリゴンIDと頂点IDを記録する。そして、頂点IDをインクリメントする。
ステップS107またはS109の処理を終えたら、全ポリゴンに対して処理を終えたか否かを判定する(S111)。具体的には、まず、頂点順をインクリメントし、頂点順が“2”を超えたら、ポリゴンIDをインクリメントして頂点順を“0”にする。ポリゴンIDがポリゴン総数を超えていなければ、ステップS102に戻って処理を繰り返す。ポリゴンIDがポリゴン総数を超えていれば、全ポリゴンに対して処理を終えたと判定して処理を終了する。
ポリゴンモデル構造化手段30は、ハッシュ値算出手段、座標値照合手段、頂点構成テーブル処理手段、頂点座標テーブル処理手段を備えており、図13に示したポリゴンモデルの構造化処理は、これらの手段が連携することにより実現される。
図13に示したステップS22のポリゴンモデルの構造化処理の具体例について説明する。図10に示したポリゴン群が、その頂点の座標値により図14に示すようなハッシュ値をとる場合を例にとって説明する。図14の例では、説明の都合上2次元で表現し、上記〔数式2〕においてS=2とすると、h=hx+hy・2となり、頂点A,B,D,Eのハッシュ値がh=0、頂点C,Fのハッシュ値がh=1、頂点G,H,J,L,Mのハッシュ値がh=2、頂点I,K,Nのハッシュ値がh=3であることを示している。実際には上記〔数式2〕において、S=32に設定し、h=hx+hy・32+hz・1024となり、ハッシュ値hは、0〜32767の値をとるが、以下では、説明を簡略化するため、ハッシュ値は前述の0〜3の値をとるものとして説明していく。
図15は、S101における初期化時の各テーブルの状態を示す図である。図15(a)は頂点構成テーブル、図15(b)は先頭位置テーブル、図15(c)は頂点座標テーブルを示している。先頭位置テーブルには、ハッシュ値に頂点IDが対応付けられてリンク先頂点IDとして記録されている。ここでは、図14に示したようにハッシュ値が0〜3の値をとるため、先頭位置テーブルには、全てのハッシュ値0〜3に対応付けてリンク先頂点IDとして“−1”が記録されている。頂点座標テーブルには、頂点IDに対応付けられて頂点座標が記録されるとともに、リンク先頂点IDが記録されている。
図15(a)に示すように、頂点構成テーブルは、ポリゴンIDに対応付けて3つの頂点IDが記録されるようになっているが、頂点順は、左から0,1,2となっており、図11に示した第1頂点、第2頂点、第3頂点に対応している。ステップS101における初期化の際、頂点順=0に初期化される。ステップS102において、頂点座標配列データより、ポリゴンP1の第1頂点の座標値(Xd,Yd,Zd)を抽出して、ステップS103において、ハッシュ値“0”が算出されたものとする。ステップS104において、ハッシュ値“0”で先頭位置テーブルを参照すると、ステップS105において、リンク先の頂点IDが登録されていないため、先頭位置テーブルのハッシュ値“0”に対応付けて、ステップS106において、現在の頂点ID“0”をリンク先として記録する。
そして、ステップS107において、頂点座標テーブルにおける現在の頂点ID“0”の位置に、ステップS102において抽出した座標値(Xd,Yd,Zd)を記録し、リンク先頂点IDとして“−1”を記録する。さらに、ステップS107において、現在のポリゴンID“P1”の現在の頂点順“0”の位置に、現在の頂点ID“0”を記録する。この結果、各テーブルは、図16に示すような状態となる。そして、頂点IDをインクリメントして現在の頂点IDを“0”→“1”とする。また、頂点順をインクリメントして現在の頂点順を“0”→“1” とする。現在のポリゴンIDは“P1”であり、“P13”を超えていないため、ステップS111において、全ポリゴンに対して処理終了していないと判断され、ステップS102に戻る。
ステップS102において、頂点座標配列データより、現在のポリゴンID“P1”、現在の頂点順“1”に基づき、ポリゴンP1の第2頂点の座標値(Xb,Yb,Zb)を抽出する。そして、ステップS103において、座標値(Xb,Yb,Zb)に対してハッシュ値“0”が算出されたものとする。ステップS104において、ハッシュ値“0”で先頭位置テーブルを参照すると、ステップS105において、リンク先の頂点IDとして“0”が既登録であるため、ステップS108において、既登録の頂点ID“0”に対応する頂点座標テーブルの座標値(Xd,Yd,Zd)と、ステップS102で抽出した座標値(Xb,Yb,Zb)を照合する。照合の結果、不一致であるので、ステップS110において、頂点座標テーブルのリンク先の頂点IDが0以上であるか負の値であるかを判定する。
図16に示すように、リンク先の頂点IDが“−1”であるので、ステップS107において、頂点座標テーブルの現在の頂点ID“1”の位置に、ステップS102において抽出した座標値(Xb,Yb,Zb)を記録し、リンク先頂点IDとして“−1”を記録する。さらに、ステップS107において、頂点構成テーブルの、現在のポリゴンID“P1”の現在の頂点順“1”の位置に、現在の頂点ID“1”を記録する。この結果、各テーブルは、図17に示すような状態となる。そして、頂点IDをインクリメントして現在の頂点IDを“1”→“2”とする。また、頂点順をインクリメントして現在の頂点順を“1”→“2” とする。現在のポリゴンIDは“P1”であり、“P13”を超えていないため、ステップS111において、全ポリゴンに対して処理終了していないと判断され、ステップS102に戻る。
ポリゴンID“P1”、頂点ID“2”、頂点順“2”の場合は、ポリゴンID“P1”、頂点ID“1”、頂点順“1”の場合と同様に処理され、各テーブルは、図18に示すような状態となる。そして、頂点IDをインクリメントして現在の頂点IDを“2”→“3”とする。また、頂点順は、1つのポリゴンについて“0”“1”“2”の3つの値のみをとるため、ポリゴンIDをインクリメントして“P1”→“P2”とし、頂点順をリセットして現在の頂点順を“2”→“0” とする。現在のポリゴンIDは“P2”となり、“P18”を超えていないため、ステップS111において、全ポリゴンに対して処理終了していないと判断され、ステップS102に戻る。
ステップS102において、頂点座標配列データより、現在のポリゴンID“P2”、現在の頂点順“0”に基づき、ポリゴンP2の第1頂点の座標値(Xd,Yd,Zd)を抽出する。そして、ステップS103において、座標値(Xd,Yd,Zd)に対してハッシュ値“0”が算出されたものとする。ステップS104において、ハッシュ値“0”で先頭位置テーブルを参照すると、ステップS105において、リンク先の頂点IDとして“0”が既登録であるため、ステップS108において、既登録の頂点ID“0”に対応する頂点座標テーブルの座標値(Xd,Yd,Zd)と、ステップS102で抽出した座標値(Xd,Yd,Zd)を照合する。照合の結果、一致するので、ステップS109において、頂点座標テーブルの座標値が一致した頂点ID“0”を、頂点構成テーブルの、現在のポリゴンID“P2”の現在の頂点順“0”の位置に記録する。この結果、各テーブルは、図19に示すような状態となる。
上記のようにして、ポリゴンP18まで処理を行ってステップS111の判定により処理を終了する。このとき、各テーブルは、図20に示すような状態となる。すなわち、ハッシュ値が同一の他の座標値を頂点IDより最近傍に記録した単一の頂点IDがリンク先として対応付けられているものとなる。上記説明のように、ポリゴンモデルの構造化処理においては、ステップS108において座標値の照合を行い、不一致であれば頂点座標テーブルに登録するが、一致している場合は、次々に照合を繰り返していく。この処理は、頂点座標テーブルが大きくなり、既登録の座標値が多くなる程、負荷が高くなることになる。本実施形態では、ハッシュ値を用いてハッシュ値別頂点座標テーブルを参照することにより、頂点座標テーブルの全ての座標値の照合を行うことなく、ハッシュ値が異なる座標値とは一致しないことが自明なため照合対象から除外することができ、同一ハッシュ値の頂点座標テーブルのみを参照すればよいことになる。頂点座標テーブルの中で同一ハッシュ値をもつ座標値は、本実施形態では高々1/4程度であるが、前述の通り実際には上記〔数式2〕において、S=32に設定することが多く、そうすると頂点座標テーブルの中で同一ハッシュ値をもつ座標値は1/32767程度に削減され、全件と照合する場合に比べ照合時間も1/32767程度に短縮されることになる。このため、ポリゴンモデルの構造化処理を桁違いに高速に行うことが可能となる。
図20の例で、ハッシュ値が“0”の場合、図20(c)の頂点座標テーブルでは、リンク先頂点IDに従って、頂点ID“0”“1”“2”“6”のものだけ照合すれば、頂点座標の登録が可能となる。図20(b)に示した先頭位置テーブルを削除し、図20(c)に示した頂点座標テーブルよりリンク先頂点IDの欄を削除することにより、図21に示したような頂点構成テーブルと頂点座標テーブルを得ることができ、ポリゴンモデルの構造化は完了する。
次に、頂点重複テーブル定義手段40が、頂点重複テーブルを初期化する(ステップS23)。頂点重複テーブルは、頂点IDと重複先を対応付けたテーブルであり、初期値として、重複先がないことを示す“−1”が設定される。重複先がないことを示すことができれば、初期値として、“−1”以外を設定してもよい。図22に、頂点重複テーブルの初期化時点における頂点構成テーブル、頂点座標テーブル、頂点重複テーブルを示す。
頂点重複テーブルの初期化が行われたら、削除対象ポリゴンを設定し、頂点座標テーブルおよび頂点重複テーブルの更新を行う(ステップS24)。まず、削除対象ポリゴン設定手段50が、削除対象ポリゴンを設定する。削除対象ポリゴンの設定は、様々な手法で行うことができる。例えば、頂点構成テーブルに記録されたポリゴンから所定の間隔で間引くように設定することができる。例えば、4個ごとに間引く指定がなされている場合、4つの間隔で1つ間引く。すなわち3つ間を空けて1つ削除する設定を行う。ここでは、図23に示すように、削除対象ポリゴン設定手段50が、ポリゴンP6とポリゴンP16の2つのポリゴンを削除対象ポリゴンとして設定した場合を例にとって説明する。この例は、10個ごとに間引く指定がなされている場合に対応する。この場合、削除対象ポリゴン設定手段50は、ポリゴンP6から9個間を空けてポリゴンP16を削除する設定を行う。図23において、O、PはそれぞれポリゴンP6、ポリゴンP16の3頂点の平均座標を有する平均点を示している。削除対象ポリゴン設定手段50は、設定された削除対象ポリゴンを頂点構成テーブルから削除する。具体的には、図24に示すように、頂点構成テーブルからポリゴンP6の頂点IDを削除する。
続いて、頂点座標テーブル更新手段60が、削除された頂点IDに含まれていた頂点IDの内容を変更することにより頂点座標テーブルを更新する。具体的には、削除された頂点IDに含まれていた全ての頂点IDの平均座標を算出し、平均座標をもつ平均点を求める。そして、削除された頂点IDに含まれていた頂点のうち1つを代表頂点とし、代表頂点の頂点IDの座標値を平均座標の値で更新する。代表頂点は、削除された頂点IDに含まれていた頂点のいずれとしてもよいが、頂点IDが最小の値とすることが好ましい。特に、頂点IDが数字のみの場合、効率的に処理を行うことが可能となる。そして、他の頂点IDの頂点座標を頂点座標テーブルから削除する。この結果、図24に示すように、頂点座標テーブルの頂点ID“0”の頂点座標として、平均点Oを示す平均座標値(Xo,Yo,Zo)が記録され、頂点ID“6”“7”の頂点座標としてNULL値(図では空白)が記録される。
次に、頂点重複テーブル更新手段70が、代表頂点以外の頂点IDの重複先を代表頂点の頂点IDに設定する。代表頂点の頂点IDが“0”で、他の頂点の頂点IDが“6”“7”である場合、図24に示すように、頂点重複テーブルの頂点ID“6”“7”の重複先として、それぞれ“0”が記録される。
図25〜図27を用いて、2つ目の削除対象ポリゴンであるポリゴンP16を削除する場合について説明する。ポリゴンP6の場合と同様に、まず、削除対象ポリゴン設定手段50が、頂点構成テーブルから削除対象ポリゴンP16を削除する。具体的には、図25に示すように、頂点構成テーブルからポリゴンP16の頂点IDを削除する。
続いて、頂点座標テーブル更新手段60が、削除されたポリゴンP16の頂点IDに含まれていた全ての頂点IDの平均座標を算出し、平均座標をもつ平均点を求める。そして、削除された頂点IDに含まれていた頂点IDのうち1つの頂点IDを代表頂点の頂点IDとして“9”の座標値を平均座標の値で更新する。そして、他の頂点ID“10”“13”の頂点座標を頂点座標テーブルから削除する。この結果、図25に示すように、頂点座標テーブルの頂点ID“9”の頂点座標として、平均点Pを示す頂点IDの平均座標値(Xp,Yp,Zp)が記録され、頂点ID“10”“13”の頂点座標としてNULL値(図では空白)が記録される。
次に、頂点重複テーブル更新手段70が、代表頂点以外の頂点IDの重複先を代表頂点の頂点IDに設定する。代表頂点の頂点IDが“9”で、他の頂点の頂点IDが“10”“13”である場合、図25に示すように、頂点重複テーブルの頂点ID“10”“13”の重複先として、それぞれ“9”が記録される。
2つの削除対象ポリゴンが頂点構成テーブルから削除されたら、頂点構成テーブル更新手段80が、頂点重複テーブルを参照し、頂点構成テーブルの頂点IDの中で頂点重複テーブルにおいて重複先が設定されている頂点IDを変更する(ステップS25)。具体的には、頂点重複テーブルの重複先が初期値“−1”以外であるものについて、頂点構成テーブル上の頂点IDを、重複先の頂点IDに変更する。この結果、図26に示すように、ポリゴンP5,P7,P8,P9,P10,P11,P15,P17,P18に対応する頂点IDが変更される。
頂点IDの変更後、頂点構成テーブル更新手段80は、頂点IDに同一の値をもつ頂点IDが複数含まれるポリゴンを頂点構成テーブルから削除する。これは、ポリゴンが三角形である場合、3つの頂点中2つ以上の頂点が同一であれば、ポリゴンとして成り立たないためである。図26の例では、頂点構成テーブルにおいて、ポリゴンP5,P7,P10,P11,P15,P17の頂点IDに同一頂点IDが含まれている。例えば、ポリゴンP5の頂点構成には、頂点ID“0”が2つ含まれている。頂点IDに同一頂点IDが複数含まれるポリゴンを頂点構成テーブルから削除した結果、頂点構成テーブルは図27に示すような状態に更新される。図27に示すように、当初の頂点構成テーブルからはポリゴンP5,P6,P7,P10,P11,P15,P16,P17が削除されている。
頂点構成テーブルが更新されたら、ポリゴンモデル更新手段90が、頂点座標配列データを更新する(ステップS26)。具体的には、頂点座標テーブルを参照して、頂点構成テーブルの各頂点IDを頂点座標に置き換える。図27に示した頂点構成テーブル、図27に示した頂点座標テーブルからは図28に示したような頂点座標配列データが得られることになる。これを図11に示した元の頂点座標配列データと置き換える。この結果、図23に示したポリゴン群は、図29に示すようなポリゴン群に変更されることになる。図23に示したポリゴン群において設定された削除対象ポリゴンP6,P16だけでなく、ポリゴンP5,P7,P11,P15,P16,P17が削除されていることがわかる。
頂点座標配列データが更新されたら、制御手段10が、削減後の全ポリゴン数が、設定された目標値以下となっているか否かを判定する(ステップS27)。目標値としては、事前に任意の値を設定することができる。判定の結果、全ポリゴン数が目標値以下となっていない場合は、ステップS24に戻って、削除対象ポリゴン設定手段50が、残っているポリゴンの中から、他のポリゴンを削除対象ポリゴンとして設定する。ステップS27における判定の結果、全ポリゴン数が目標値以下である場合は、ポリゴン削減処理を終了する。図12のフローチャートに従った処理を実行することにより、各グループについて設定された目標値以下になるように、ポリゴン数が削減されることになる。ポリゴンモデルの構造化処理が行われていなければ、削除対象ポリゴンの3つの補正対象頂点と同一座標となる頂点の探索に大きな処理負荷を要することになる。ポリゴンモデルの構造化処理を行うことにより、処理負荷を大幅に削減することが可能となる。
<2.4.2.稜線単位削除>
次に、稜線単位削除について説明する。ここで、稜線とは、ポリゴンの辺を意味する。図30は、処理対象とするポリゴン群の一例を示す図である。図30に示したポリゴン群は、図23に示したものと同一のポリゴン構成となっており、ポリゴンを構成する全ての頂点の平均点でなく、削除対象辺の中点をO,Pとしている点のみが異なっている。稜線単位削除の場合も、ポリゴン単位削除の場合と同様、頂点座標配列データは、図11に示したようなものとなっている。
上記のような規則に従って作成されるため、頂点座標配列データにおいては、同一座標の頂点が複数箇所に記録されることになる。例えば、図10、図11に示した頂点Dは、6つのポリゴンP1,P2,P4,P5,P6,P7に共有されるため、座標“(Xd,Yd,Zd)”は、頂点V1a,V2a,V4b,V5c,V6c,V7cとして6箇所に記録される。
稜線単位削除の場合におけるポリゴン削減処理の概要は、図12に示したフローチャートと同様であり、ポリゴン単位削除の場合と比較して、ステップS24の処理が大きく異なるだけである。まず、ポリゴン単位削除の場合と同様に、ポリゴンモデル構造化手段30が、ポリゴン構造化テーブルの作成を行う(ステップS22)。具体的には、ポリゴン単位削除の場合と同様にして、頂点リンクテーブルを用いて、頂点構成テーブルおよび頂点座標テーブルを作成する。
さらに、頂点重複テーブル定義手段40が、ポリゴン単位削除の場合と同様にして頂点重複テーブルを初期化する(ステップS23)。この結果。図22に示したような、頂点構成テーブル、頂点座標テーブル、頂点重複テーブルが得られる。
頂点重複テーブルの初期化が行われたら、削除対象ポリゴンを設定し、頂点座標テーブルおよび頂点重複テーブルの更新を行う(ステップS24)。まず、削除対象ポリゴン設定手段50が、ポリゴン単位削除の場合と同様にして削除対象ポリゴンを設定する。ここでは、図30に示すように、ポリゴンP6とポリゴンP16の2つのポリゴンが削除対象ポリゴンとして設定されている場合を例にとって説明する。ここからは、ポリゴン単位削除の場合と異なる処理が行われる。削除対象ポリゴンが設定されると、さらに、削除対象ポリゴン設定手段50は、削除対象ポリゴンの1辺を削除対象辺として選定する。削除対象辺の選定は、様々な手法により行うことができるが、本実施形態では、削除対象ポリゴンを構成する全ての辺のうち最短のものを選定している。図30において、O、PはそれぞれポリゴンP6、ポリゴンP16の削除対象辺の両端2頂点の平均座標を有する平均点(削除対象辺の中点)を示している。次に、削除対象ポリゴン設定手段50は、頂点構成テーブルから削除対象ポリゴンを削除する。具体的には、図31に示すように、頂点構成テーブルからポリゴンP6の全ての頂点IDを削除する。
続いて、頂点座標テーブル更新手段60が、削除された頂点IDに含まれていた頂点IDのうち、削除対象辺の両端の2頂点の頂点IDの内容を変更することにより頂点座標テーブルを更新する。具体的には、削除された頂点IDに含まれていた削除対象辺の両端の2頂点の頂点IDの平均座標を算出し、平均座標をもつ平均点を求める。削除対象辺の2頂点の平均点は、削除対象辺の中点でもある。そして、削除された頂点IDに含まれていた頂点IDのうち1つの頂点IDを代表頂点として、代表頂点の頂点IDの座標値を平均座標の値で更新する。そして、他の頂点IDの頂点座標を頂点座標テーブルから削除する。この結果、図31に示すように、頂点座標テーブルにおいて代表頂点である頂点ID“0”の頂点座標として、平均点Oを示す平均座標値(Xo,Yo,Zo)が記録され、もう一方の頂点ID“6”の頂点座標としてNULL値(図では空白)が記録される。
次に、頂点重複テーブル更新手段70が、代表頂点以外の頂点IDの重複先を代表頂点の頂点IDに設定する。代表頂点の頂点IDが“0”で、他の頂点の頂点IDが“6”である場合、図31に示すように、頂点重複テーブルの頂点ID“6”の重複先として“0”が記録される。
図32〜図34を用いて、2つ目の削除対象ポリゴンであるポリゴンP16を削除する場合について説明する。ポリゴンP6の場合と同様に、まず、削除対象ポリゴン設定手段50が、頂点構成テーブルから削除対象ポリゴンP16を削除する。具体的には、図32に示すように、頂点構成テーブルからポリゴンP16の全ての頂点IDを削除する。
続いて、頂点座標テーブル更新手段60が、削除されたポリゴンP16の頂点IDに含まれていた頂点IDのうち、削除対象辺の両端の2頂点の頂点IDの平均座標を算出し、平均座標をもつ平均点を求める。そして、削除された頂点IDに含まれていた頂点IDのうち、削除対象辺の1つの頂点を代表頂点として代表頂点である頂点ID“9”の座標値を平均座標の値で更新する。そして、他の頂点ID“10”の頂点座標を頂点座標テーブルから削除する。この結果、図32に示すように、頂点座標テーブルの頂点ID“9”の頂点座標として、平均点Pを示す頂点IDの平均座標値(Xp,Yp,Zp)が記録され、頂点ID“10”の頂点座標としてNULL値(図では空白)が記録される。
次に、頂点重複テーブル更新手段70が、代表頂点以外の頂点IDの重複先を代表頂点の頂点IDに設定する。代表頂点の頂点IDが“9”で、他の頂点の頂点IDが“10”である場合、図32に示すように、頂点重複テーブルの頂点ID“10”の重複先として“9”が記録される。
2つの削除対象ポリゴンが頂点構成テーブルから削除されたら、頂点構成テーブル更新手段80が、頂点重複テーブルを参照し、頂点構成テーブルの頂点構成の中で、頂点重複テーブルに重複先が設定されている各頂点IDを変更する(ステップS25)。具体的には、頂点重複テーブルの重複先が初期値“−1”以外であるものについて、頂点構成テーブル上の頂点IDを、重複先の頂点IDに変更する。この結果、図33に示すように、ポリゴンP5,P9,P10,P11,P17に対応する頂点IDが変更される。
頂点IDの変更後、頂点構成テーブル更新手段は、頂点IDに同一の値をもつ頂点IDが複数含まれるポリゴンを頂点構成テーブルから削除する。これは、ポリゴンが三角形である場合、3つの頂点中2つ以上の頂点が同一であれば、ポリゴンとして成り立たないためである。図33の例では、頂点構成テーブルにおいて、ポリゴンP5,P10の頂点IDに同一の値をもつ頂点IDが含まれている。例えば、ポリゴンP5の頂点構成には、頂点ID“0”が2つ含まれている。頂点IDに同一の値をもつ頂点IDが複数含まれるポリゴンを頂点構成テーブルから削除した結果、頂点構成テーブルは図34に示すような状態に更新される。図34に示すように、当初の頂点構成テーブルからはポリゴンP5,P6,P10,P16が削除されている。
頂点構成テーブルが更新されたら、ポリゴンモデル更新手段90が、頂点座標配列データを更新する(ステップS26)。具体的には、頂点座標テーブルを参照して、頂点構成テーブルの各頂点IDを頂点座標に置き換える。図34に示した頂点構成テーブル、図34に示した頂点座標テーブルからは図35に示したような頂点座標配列データが得られることになる。これを図11に示した元の頂点座標配列データと置き換える。この結果、図30に示したポリゴン群は、図36に示すようなポリゴン群に変更されることになる。図30に示したポリゴン群において設定された削除対象ポリゴンP6,P16だけでなく、ポリゴンP5,P16が削除されていることがわかる。
頂点座標配列データが更新されたら、制御手段10が、削減後の全ポリゴン数が、設定された目標値以下となっているか否かを判定する(ステップS27)。目標値としては、事前に任意の値を設定することができる。判定の結果、全ポリゴン数が目標値以下となっていない場合は、ステップS24に戻って、削除対象ポリゴン設定手段50が、残っているポリゴンの中から、他のポリゴンを削除対象ポリゴンとして選定する。ステップS27における判定の結果、全ポリゴン数が目標値以下である場合は、ポリゴン削減処理を終了する。図12のフローチャートに従った処理を実行することにより、各グループについて設定された目標値以下になるように、ポリゴン数が削減されることになる。ポリゴンモデルの構造化処理が行われていなければ、削除対象ポリゴンの削除対象辺の2つの補正対象頂点と同一座標となる頂点の探索に大きな処理負荷を要することになる。ポリゴンモデルの構造化処理を行うことにより、処理負荷を大幅に削減することが可能となる。
<2.5.小体積グループ削除処理>
次に、ステップS40におけるグループ合成手段100による隔離された小体積グループの削除処理について説明する。ここで、隔離された小体積グループの削除処理の説明に先立ち、隔離された小体積グループの削除処理を行う理由について説明しておく。図37は、ポリゴン削減処理により生じる問題を説明するための図である。図37(a)は、ステップS10のグループ分類処理を終えた直後の2グループのポリゴン群を示している。図37(a)の例では、頂点D、E、Kを含む左側のグループと、頂点D’、E’、K’を含む右側のグループが存在する。頂点DとD’、頂点EとE’、頂点KとK’がそれぞれ3Dプリンタの解像度以下である場合、この2グループのポリゴン群を3Dプリンタで出力すると、頂点DとD’、頂点EとE’、頂点KとK’は樹脂等により連結され、2グループは連結した物体として出力される。すなわち、2グループは物理的には接着されている。
図37(a)に示した右側のグループのポリゴン群に対して、ステップS20におけるポリゴン削減処理を実行すると、図37(b)に示すように、ポリゴンE’FK’が削除対象ポリゴンとして選定される。さらに、図37(c)に示すように、削除対象ポリゴンE’FK’の最短辺E’Fが削除対象辺として選定され、辺E’Fの中点Oが算出される。そして、図37(d)に示すように、削除対象ポリゴンE’FK’と、削除頂点共有ポリゴンD’E’Fが削除される。
図37(a)と図37(d)を比較するとわかるように、左右の2つのグループは、ポリゴン削減処理前に比べて、ポリゴン削減処理後には、より離れてしまっている。図37(d)に示した2グループの距離が、3Dプリンタの解像度を超えると、2グループのポリゴン群を3Dプリンタで出力した場合、2グループは別の物体として出力される。2つのグループがともに大きな物体となれば、問題はない。しかし、一つが非常に小さな物体となる場合、例えば、一方のグループが本体であって、他方のグループが本体に付属するヒゲのようなものである場合、本体と別に出力されたヒゲは、3Dプリンタ内に紛れ込み、機械詰まり等の問題を引き起こす恐れがある。このような問題を除去するため、上述のヒゲのような隔離された小体積グループの削除処理を行うのである。
図38は、グループ合成手段100による隔離された小体積グループの削除処理(ステップS40)の詳細を示すフローチャートである。グループ合成手段100は、まず、グループごとに全ポリゴンの全頂点を対象として、X、Y、Zぞれぞれの方向の最大値および最小値を算出する(ステップS41)。この結果、グループgに対して、最小値Xmin(g)、最大値Xmax(g)、最小値Ymin(g)、最大値Ymax(g)、最小値Zmin(g)、最大値Zmax(g)が得られる。次に、グループ合成手段100は、グループごとに外接直方体の体積を算出する(ステップS42)。具体的には、以下の〔数式3〕に従った処理を実行することにより、グループgの外接直方体の体積V(g)を算出する。
〔数式3〕
V(g)=(Xmax(g)−Xmin(g))×(Ymax(g)−Ymin(g))×(Zmax(g)−Zmin(g))
グループ合成手段100は、全グループに対してステップS41、S42の処理を実行する。これにより、全グループについて、外接直方体の体積が得られる。次に、グループ合成手段100は、全グループの中で外接直方体の体積が最小となるグループを特定する(ステップS43)。そして、グループ合成手段100は、特定したグループと他の全てのグループとの最小間隔を算出する(ステップS44)。ステップS44における最小間隔の算出処理の詳細については後述する。
続いて、グループ合成手段100は、ステップS44において算出された最小間隔が所定のしきい値以上か否かを判定する(ステップS45)。最小間隔と比較するための所定のしきい値としては、3Dプリンタ出力時に0.2mmに相当する数値とすることが好ましい。判定の結果、最小間隔が所定のしきい値以上である場合は、体積最小のグループが、最も近いグループとも所定の距離以上離れていることになるので、グループ合成手段100は、体積最小のグループを削除する処理を行う(ステップS46)。ステップS45における判定の結果、最小間隔が所定のしきい値未満である場合は、体積最小のグループが、最も近いグループと3Dプリンタの解像度以下に近接していることになるので、グループ合成手段100は、体積最小のグループを削除する処理を行わない。
ステップS46におけるグループの削除を行った場合、削除を行わなかった場合のいずれにおいても、そのグループについては処理済みとする。そして、ステップS43に戻って、未処理のグループの中で外接直方体の体積が最小となるグループを特定する。ステップS43〜ステップS46の処理を繰り返し、全てのグループに対する処理を終えたら、隔離された小体積グループの削除処理を終了する。
ステップS44における最小間隔の算出処理の詳細について説明する。図39は、図38のステップS44における最小間隔の算出処理の詳細を示すフローチャートである。グループ合成手段100は、初期値として、最小間隔を示す変数dminに所定以上の値を設定する。dminに与える初期値としては、グループ間の最小間隔としてあり得ない大きな値を設定しておけばよい。そして、グループ合成手段100は、全グループの中から、グループgより体積が大きい1つのグループhを抽出する(ステップS47)。この結果、グループhについて、最小値Xmin(h)、最大値Xmax(h)、最小値Ymin(h)、最大値Ymax(h)、最小値Zmin(h)、最大値Zmax(h)が得られる。次に、グループ合成手段100は、X、Y、Zの各方向別に2グループ間の差分の最小値を算出する(ステップS48)。具体的には、以下の〔数式4〕に従った処理を実行することにより、X方向の差分の最小値dx、Y方向の差分の最小値dy、Z方向の差分の最小値dzを算出する。
〔数式4〕
dx=Min{|Xmax(g)−Xmin(h)|,|Xmin(g)−Xmax(h)|}
dy=Min{|Ymax(g)−Ymin(h)|,|Ymin(g)−Ymax(h)|}
dz=Min{|Zmax(g)−Zmin(h)|,|Zmin(g)−Zmax(h)|}
続いて、グループ合成手段100は、算出された方向別最小値のうち最大のものをグループ間最小値とし、グループ間最小値を、既に処理済みの他のグループ間における全グループ間最小値と比較し、小さい方を全グループ間最小値とする処理を行う(ステップS49)。具体的には、ステップS48において算出された3つの方向別最小値dx、dy、dzのうち、最大の値をとるグループ間最小値Max(dx、dy、dz)とdminを比較し、Max(dx、dy、dz)<dminの場合、dmin=Max(dx、dy、dz)とする。これにより、dminには、グループ間最小値の中で最小の値となる全グループ間最小値が記録されることになる。
ステップS47、S48、S49の処理を繰り返して実行し、グループgより体積が大きい全てのグループに対する処理を終えたら、図39に示した最小間隔の算出処理を終了し、図38のステップS45に進んで、最小間隔dminとしきい値との比較を行うことになる。
<2.6.ポリゴンモデルの合成>
図9の処理概要に示したように、ステップS50においては、グループ合成手段100が、全グループのポリゴンモデルの合成を行って更新された領域別ポリゴンモデルを得る。また、ステップS70においては、ポリゴンモデル合成手段110が、全領域の領域別ポリゴンモデルの合成を行って合成ポリゴンモデルを得る。いずれの合成処理も、ヘッダ部を除く領域別ポリゴンモデルを単純に結合し、ヘッダ部に合算されたポリゴン数を記録することにより行われる(ただし、これはバイナリ形式のSTLフォーマットの場合で、ASCII形式のSTLフォーマットではヘッダ部を除く領域別ポリゴンモデルを単純に結合するだけである)。合成ポリゴンモデル記憶手段130に記憶された合成ポリゴンモデルを3Dプリンタ7に出力することにより、3Dプリンタ7は効率的に立体物を造形することができる。造形された立体物については、ほとんど劣化は見られなかった。
<3.変形例等>
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、処理対象のポリゴンを三角形としたが、四角形以上の多角形であってもよい。
また、上記実施形態では、図1に示したようなハードウェア構成に専用のプログラムを組み込むことにより、立体物造形用データ削減装置を実現したが、図1に示したようなハードウェア構成に、ポリゴンモデル構造化手段を実現するプログラムを組み込むことにより、ポリゴンモデル構造化装置を実現するようにしてもよい。
また、上記実施形態では、複数のグループの更新されたポリゴンモデルに対して、外接直方体の体積が所定のしきい値未満であるものを削除するようにしたが、削除しないようにすることも可能である。
1・・・CPU(Central Processing Unit)
2・・・RAM(Random Access Memory)
3・・・記憶装置
4・・・キー入力I/F
5・・・データ入出力I/F
6・・・表示部
7・・・3Dプリンタ(立体物造形装置)
7a・・・データ処理部
7b・・・出力部
10・・・制御手段
20・・・グループ分類手段
30・・・ポリゴンモデル構造化手段
40・・・頂点重複テーブル定義手段
50・・・削除対象ポリゴン設定手段
60・・・頂点座標テーブル更新手段
70・・・頂点重複テーブル更新手段
80・・・頂点構成テーブル更新手段
90・・・ポリゴンモデル更新手段
100・・・グループ合成手段
110・・・ポリゴンモデル合成手段
120・・・領域別ポリゴンモデル記憶手段
130・・・合成ポリゴンモデル記憶手段
200・・・立体物造形用データ削減装置

Claims (7)

  1. ポリゴンと当該ポリゴンを構成する頂点の座標値との対応関係としてポリゴンモデルを表現した頂点座標配列データを、ポリゴンを特定するポリゴンIDと、前記ポリゴンモデル内で各頂点を特定する頂点IDを対応付けた頂点構成テーブルと、頂点の座標値と頂点IDを対応付けた頂点座標テーブルで表現される形態に構造化する装置であって、
    前記頂点座標配列データから前記頂点の座標値を抽出し、当該抽出された座標値からハッシュ値を算出するハッシュ値算出手段と、
    前記算出されたハッシュ値を用いて前記頂点座標テーブルを参照し、前記ハッシュ値で特定される既登録の頂点IDに対応する頂点座標テーブル上の座標値と、前記抽出された座標値を照合する座標値照合手段と、
    前記座標値照合手段による照合の結果、両座標値が一致する既登録の頂点IDが存在する場合は、前記頂点構成テーブルに、前記既登録の頂点IDとポリゴンIDを対応付けて記録し、前記座標値照合手段による照合の結果、両座標値が一致する既登録の頂点IDが存在しない場合は、前記頂点構成テーブルに、新規な頂点IDを記録する頂点構成テーブル処理手段と、
    前記頂点構成テーブル処理手段が新規な頂点IDを記録した場合、前記頂点座標テーブル上の頂点IDの位置に前記座標値を前記ハッシュ値で特定可能な形態で記録するようにしている頂点座標テーブル処理手段と、
    を有することを特徴とするポリゴンモデル構造化装置。
  2. 前記頂点座標テーブルには、頂点IDに対応して座標値が記録されるとともに、当該座標値をもとに前記ハッシュ値算出手段により算出されるハッシュ値が同一の他の座標値を前記頂点IDより最近傍に記録した単一の頂点IDがリンク先として対応付けられていることを特徴とする請求項1に記載のポリゴンモデル構造化装置。
  3. 前記頂点座標テーブルに加え先頭位置テーブルを設け、前記先頭位置テーブルには、前記ハッシュ値算出手段により算出されるハッシュ値に対応して、前記頂点座標テーブル上に最初に記録されている前記ハッシュ値になる頂点IDがリンク先として対応付けられていることを特徴とする請求項1または請求項2のいずれかに記載のポリゴンモデル構造化装置。
  4. 前記ハッシュ値算出手段は、前記座標値が(x、y、z)なる3次元の値で構成され、かつ各々の成分が、XminからXmax、YminからYmax、ZminからZmaxの範囲の実数値をもつ場合、各成分をhx=(x−Xmin)・S/(Xmax−Xmin),hy=(y−Ymin)・S/(Ymax−Ymin),hz=(z−Zmin)・S/(Zmax−Zmin)なる式で所定の整数S段階(hx, hy, hz)に分類し、ハッシュ値h=hx+hy・S+hz・S2として算出するようにしていることを特徴とする請求項1から請求項3のいずれか一項に記載のポリゴンモデル構造化装置。
  5. 請求項1から請求項4のいずれか一項に記載のポリゴンモデル構造化装置により得られた頂点構成テーブルと頂点座標テーブルを用いて、ポリゴンの集合として表現されたポリゴンモデルのデータを、立体物の造形のために削減する装置であって、
    前記頂点座標テーブルに記録されている頂点と同一座標となる重複先の頂点との対応関係を記録する頂点重複テーブルを定義する頂点重複テーブル定義手段と、
    前記頂点構成テーブルに記録されているポリゴンに対して一部のポリゴンを削除対象ポリゴンとして設定する削除対象ポリゴン設定手段と、
    前記頂点構成テーブルを参照して前記削除対象ポリゴンに対応する2つ以上の頂点を削除対象頂点として特定し、前記削除対象頂点を基に前記頂点座標テーブルを参照して複数の前記削除対象頂点の平均点を求め、前記削除対象頂点の1つを代表頂点とし、前記代表頂点以外の前記削除対象頂点の情報を頂点座標テーブルから削除するとともに、前記代表頂点の頂点IDに、前記平均点の座標値を対応付けて記録する頂点座標テーブル更新手段と、
    前記頂点重複テーブルにおいて、前記代表頂点以外の前記削除対象頂点の重複先を前記代表頂点に設定する頂点重複テーブル更新手段と、
    前記頂点構成テーブルの各頂点IDの値を、前記頂点重複テーブルに設定された重複先に変更し、変更された結果、同一ポリゴンに対応する頂点IDが2つ以上重複する場合、当該ポリゴンを前記頂点構成テーブルより削除する頂点構成テーブル更新手段と
    を有することを特徴とする立体物造形用データ削減装置。
  6. 請求項5に記載の立体物造形用データ削減装置と、
    前記立体物造形用データ削減装置から出力されたポリゴンモデルを用いて立体物を造形する立体物造形装置と、
    を有することを特徴とする立体物造形システム。
  7. コンピュータを、請求項1から請求項4のいずれか一項に記載のポリゴンモデル構造化装置として機能させるためのプログラム。
JP2015165056A 2015-08-24 2015-08-24 ポリゴンモデル構造化装置および立体物造形用データ削減装置 Active JP6569389B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2015165056A JP6569389B2 (ja) 2015-08-24 2015-08-24 ポリゴンモデル構造化装置および立体物造形用データ削減装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015165056A JP6569389B2 (ja) 2015-08-24 2015-08-24 ポリゴンモデル構造化装置および立体物造形用データ削減装置

Publications (2)

Publication Number Publication Date
JP2017045138A JP2017045138A (ja) 2017-03-02
JP6569389B2 true JP6569389B2 (ja) 2019-09-04

Family

ID=58211418

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015165056A Active JP6569389B2 (ja) 2015-08-24 2015-08-24 ポリゴンモデル構造化装置および立体物造形用データ削減装置

Country Status (1)

Country Link
JP (1) JP6569389B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11521351B2 (en) * 2017-07-10 2022-12-06 Hewlett-Packard Development Company, L.P. Associating object property data with locations
JP6762570B2 (ja) * 2018-06-04 2020-09-30 株式会社アクセル 画像処理装置、画像処理方法、及び画像処理プログラム
CN110356008B (zh) * 2019-07-03 2020-07-10 浙江大学 一种基于哈希表的散乱线段快速拼接方法
CN112465954A (zh) * 2020-12-04 2021-03-09 北京爱奇艺科技有限公司 一种模型简化方法、装置、电子设备及存储介质
CN114311682B (zh) * 2022-03-03 2022-08-02 深圳市创想三维科技股份有限公司 模型生成方法、装置、设备和存储介质

Also Published As

Publication number Publication date
JP2017045138A (ja) 2017-03-02

Similar Documents

Publication Publication Date Title
JP6569389B2 (ja) ポリゴンモデル構造化装置および立体物造形用データ削減装置
US8175734B2 (en) Methods and system for enabling printing three-dimensional object models
JP4780106B2 (ja) 情報処理装置及び情報処理方法、画像処理装置及び画像処理方法、並びにコンピュータ・プログラム
CN108352082B (zh) 将3d对象推挤到平面中的技术
JP6565494B2 (ja) 立体物造形用データ削減装置
JP2014064957A (ja) 生体データモデル作成方法及びその装置並びに生体データモデルのデータ構造及び生体データモデルのデータ格納装置並びに三次元データモデルの負荷分散方法及びその装置
CN110751733A (zh) 用于将3d扫描对象转换为化身的方法和装置
JP2016099648A (ja) 立体物造形用データ削減装置
EP3444735A1 (en) Method and module for transforming a shape of an object
CN114782645A (zh) 虚拟数字人制作方法、相关设备及可读存储介质
JP6613727B2 (ja) 立体物造形用データ削減装置
JP2012245374A (ja) 生体データモデル作成方法及びその装置並びに生体データモデルのデータ構造及び生体データモデルのデータ格納装置並びに三次元データモデルの負荷分散方法及びその装置
JPH0623989B2 (ja) 境界表現ソリツド・モデリング・システム
Amiri et al. Connectivity maps for subdivision surfaces
JP2015158778A (ja) 立体物造形用データ最適化装置
CN116612253A (zh) 点云融合方法、装置、计算机设备和存储介质
CN115082640B (zh) 基于单张图像的3d人脸模型纹理重建方法及设备
JP6565495B2 (ja) 立体物造形用データ分離装置
Bærentzen Volume sculpting: intuitive, interactive 3D shape modelling
JP2003228725A (ja) 3次元画像処理システム
JP2016099841A (ja) 立体物造形用データ削減装置
Abderrahim et al. Interactive multiresolution visualization of 3D Mesh
KR100450210B1 (ko) 3차원 스캔 얼굴모델의 합성 시스템과 그 방법 및 3차원스캔 얼굴모델의 합성기능을 갖춘 프로그램이 수록된기록매체
KR100848304B1 (ko) 다해상도 곡면 트리밍을 이용한 곡면 조각 변형 효과 표현장치 및 그 방법
JP6638341B2 (ja) 立体物造形用データ出力規制装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180625

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190620

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: 20190709

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190722

R150 Certificate of patent or registration of utility model

Ref document number: 6569389

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150