IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士ゼロックス株式会社の特許一覧

特許7521215三次元形状データ処理装置、及び三次元形状データ処理プログラム
<>
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図1
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図2
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図3
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図4
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図5
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図6
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図7
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図8
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図9
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図10
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図11
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図12
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図13
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図14
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図15
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図16
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図17
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図18
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図19
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図20
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図21
  • 特許-三次元形状データ処理装置、及び三次元形状データ処理プログラム 図22
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-16
(45)【発行日】2024-07-24
(54)【発明の名称】三次元形状データ処理装置、及び三次元形状データ処理プログラム
(51)【国際特許分類】
   G06T 17/20 20060101AFI20240717BHJP
【FI】
G06T17/20
【請求項の数】 11
(21)【出願番号】P 2020051913
(22)【出願日】2020-03-23
(65)【公開番号】P2021149886
(43)【公開日】2021-09-27
【審査請求日】2023-02-28
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】東方 良介
(72)【発明者】
【氏名】高橋 智也
(72)【発明者】
【氏名】氷治 直樹
(72)【発明者】
【氏名】田中 靖幸
(72)【発明者】
【氏名】横瀬 太郎
【審査官】益戸 宏
(56)【参考文献】
【文献】特開2001-022961(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 17/20
(57)【特許請求の範囲】
【請求項1】
プロセッサを備え、
前記プロセッサは、
物体が含まれる空間を、少なくとも1つの大きさが他の大きさと異なる複数の三次元領域で分割して表現された三次元形状データを受け付け、
隣接する前記三次元領域によって構成された三次元領域群に含まれる各々の前記三次元領域の予め定めた位置を頂点として形成される単位形状を、前記空間から漏れなく、かつ、重複しないように抽出し、
抽出した各々の前記単位形状に基づいて、前記物体の表面を平面で表される形成面で構成する場合、前記単位形状の頂点同士を接続する辺の中点を新たな頂点とする前記形成面によって、前記物体の表面を構成する
三次元形状データ処理装置。
【請求項2】
プロセッサを備え、
前記プロセッサは、
属性値が分布する空間を、少なくとも1つの大きさが他の大きさと異なる複数の三次元領域で分割して表現された属性分布を受け付け、
隣接する前記三次元領域によって構成された三次元領域群に含まれる各々の前記三次元領域の予め定めた位置を頂点として形成される単位形状を、前記空間から漏れなく、かつ、重複しないように抽出し、
抽出した各々の前記単位形状に基づいて、前記属性分布に対応した物体の形状を平面で表される形成面で構成する場合、前記単位形状の頂点同士を接続する辺の中点を新たな頂点とする前記形成面によって、前記物体の表面を構成する
三次元形状データ処理装置。
【請求項3】
前記プロセッサは、
すべての前記三次元領域から外郭に位置しない前記三次元領域の頂点を基準頂点として抽出すると共に、前記基準頂点に接する予め定められた個数の前記三次元領域によって構成された前記三次元領域群毎に前記単位形状を抽出する
請求項1または請求項2記載の三次元形状データ処理装置。
【請求項4】
前記予め定めた位置を前記三次元領域の中心に設定した
請求項1~請求項3の何れか1項に記載の三次元形状データ処理装置。
【請求項5】
前記プロセッサは、前記単位形状の頂点数が予め定められた個数に満たない場合、前記単位形状の少なくとも1つの頂点に他の頂点が重複したことによって、重複した頂点同士を接続する辺が退縮したものとみなして、前記単位形状に前記形成面を割り付ける
請求項1~請求項4の何れか1項に記載の三次元形状データ処理装置。
【請求項6】
前記プロセッサは、前記単位形状の重複した頂点同士を接続する辺が退縮したことにより、前記単位形状に面積を有さない前記形成面が割り付く場合、面積を有さない前記形成面を前記単位形状から削除する
請求項記載の三次元形状データ処理装置。
【請求項7】
前記プロセッサは、面積を有さない前記形成面を前記単位形状に割り付けないようにする
請求項記載の三次元形状データ処理装置。
【請求項8】
前記プロセッサは、前記形成面で表される前記物体の三次元形状の内側と外側に位置する隣接する各々の前記三次元領域における前記予め定めた位置から前記物体の表面までの距離の比率に応じて、前記単位形状に割り付けた前記形成面の頂点の位置を補正する
請求項~請求項の何れか1項に記載の三次元形状データ処理装置。
【請求項9】
前記プロセッサは、前記単位形状に割り付けた前記形成面の頂点の位置を補正したことによって、前記形成面が面積を有さなくなった場合、面積を有さなくなった前記形成面を前記単位形状から削除する
請求項記載の三次元形状データ処理装置。
【請求項10】
コンピュータに、
物体が含まれる空間を、少なくとも1つの大きさが他の大きさと異なる複数の三次元領域で分割して表現された三次元形状データを受け付け、
隣接する前記三次元領域によって構成された三次元領域群に含まれる各々の前記三次元領域の予め定めた位置を頂点として形成される単位形状を、前記空間から漏れなく、かつ、重複しないように抽出し、
抽出した各々の前記単位形状に基づいて、前記物体の表面を平面で表される形成面で構成する場合、前記単位形状の頂点同士を接続する辺の中点を新たな頂点とする前記形成面によって、前記物体の表面を構成する処理を実行させる
三次元形状データ処理プログラム。
【請求項11】
コンピュータに、
属性値が分布する空間を、少なくとも1つの大きさが他の大きさと異なる複数の三次元領域で分割して表現された属性分布を受け付け、
隣接する前記三次元領域によって構成された三次元領域群に含まれる各々の前記三次元領域の予め定めた位置を頂点として形成される単位形状を、前記空間から漏れなく、かつ、重複しないように抽出し、
抽出した各々の前記単位形状に基づいて、前記属性分布に対応した物体の形状を平面で表される形成面で構成する場合、前記単位形状の頂点同士を接続する辺の中点を新たな頂点とする前記形成面によって、前記物体の表面を構成する処理を実行させる
三次元形状データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、三次元形状データ処理装置、及び三次元形状データ処理プログラムに関する。
【背景技術】
【0002】
非特許文献1には、異なる解像度のボクセルを含むボリュームデータにMarching-Cubes法を適応可能にすることで、生成されるポリゴンモデルに対して局所的な精度の調整を行う手法が開示されている。
【先行技術文献】
【非特許文献】
【0003】
【文献】齋藤満明、“多重解像度Marching-Cubes法”慶応義塾大学 環境情報学部
【発明の概要】
【発明が解決しようとする課題】
【0004】
物体の三次元形状を表す場合に、例えば直方体または立方体といった同じ大きさの三次元領域(「ボクセル」という)を組み合わせて定義した三次元形状データが用いられることがある。
【0005】
ボクセルによって物体の三次元形状を表した場合、物体の表面だけでなく物体の内部状態も表されるため、例えばポリゴンを用いて物体の表面だけを定義した三次元形状データに比べて、三次元形状データを記憶するために必要となるメモリ容量が増加する。したがって、ボクセルで定義された三次元形状データのデータ量、及び三次元形状データのデータ演算量を低減するために、例えば物体を構成するボクセルの大きさを物体の場所に応じて変化させるような手法が用いられる。
【0006】
一方で、ボクセルによって物体の三次元形状を表した場合、物体の表面もボクセルで表すことになるため、物体の表面をポリゴンで表すよりも滑らかに表現するのが困難となる。したがって、物体を構成するボクセルの大きさを物体の場所に応じて変化させた三次元形状データをポリゴンで構成した三次元形状データに変換することがある。
【0007】
しかしながら、三次元形状データに用いられているボクセルの大きさが異なることから、この変換に例えばボクセルの属性パターンに対してポリゴンを当てはめて平面を生成するMC(Marching Cubes)法を適用した場合、ポリゴン間に隙間のような不整合部分を生じることがある。
【0008】
本発明は、物体の三次元形状が大きさの異なる三次元領域によって表現されている場合であっても、最初から不整合部分が生じないように物体の表面を構成することができる三次元形状データ処理装置、及び三次元形状データ処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
第1態様に係る三次元形状データ処理装置はプロセッサを備え、前記プロセッサは、物体が含まれる空間を、少なくとも1つの大きさが他の大きさと異なる複数の三次元領域で分割して表現された三次元形状データを受け付け、隣接する前記三次元領域によって構成された三次元領域群に含まれる各々の前記三次元領域の予め定めた位置を頂点として形成される単位形状を、前記空間から漏れなく、かつ、重複しないように抽出し、抽出した各々の前記単位形状に基づいて、前記物体の表面を平面で表される形成面で構成する。
【0010】
第2態様に係る三次元形状データ処理装置はプロセッサを備え、前記プロセッサは、属性値が分布する空間を、少なくとも1つの大きさが他の大きさと異なる複数の三次元領域で分割して表現された属性分布を受け付け、隣接する前記三次元領域によって構成された三次元領域群に含まれる各々の前記三次元領域の予め定めた位置を頂点として形成される単位形状を、前記空間から漏れなく、かつ、重複しないように抽出し、抽出した各々の前記単位形状に基づいて、前記属性分布に対応した物体の形状を平面で表される形成面で構成する。
【0011】
第3態様に係る三次元形状データ処理装置は、第1態様または第2態様に係る三次元形状データ処理装置において、前記プロセッサは、すべての前記三次元領域から外郭に位置しない前記三次元領域の頂点を基準頂点として抽出すると共に、前記基準頂点に接する予め定められた個数の前記三次元領域によって構成された前記三次元領域群毎に前記単位形状を抽出する。
【0012】
第4態様に係る三次元形状データ処理装置は、第1態様~第3態様の何れかの態様に係る三次元形状データ処理装置において、前記予め定めた位置を前記三次元領域の中心に設定する。
【0013】
第5態様に係る三次元形状データ処理装置は、第1態様~第4態様の何れかの態様に係る三次元形状データ処理装置において、前記プロセッサは、前記単位形状の頂点同士を接続する辺の中点を新たな頂点とする前記形成面によって、前記物体の表面を構成する。
【0014】
第6態様に係る三次元形状データ処理装置は、第5態様に係る三次元形状データ処理装置において、前記プロセッサは、前記単位形状の頂点数が予め定められた個数に満たない場合、前記単位形状の少なくとも1つの頂点に他の頂点が重複したことによって、重複した頂点同士を接続する辺が退縮したものとみなして、前記単位形状に前記形成面を割り付ける。
【0015】
第7態様に係る三次元形状データ処理装置は、第6態様に係る三次元形状データ処理装置において、前記プロセッサは、前記単位形状の重複した頂点同士を接続する辺が退縮したことにより、前記単位形状に面積を有さない前記形成面が割り付く場合、面積を有さない前記形成面を前記単位形状から削除する。
【0016】
第8態様に係る三次元形状データ処理装置は、第6態様に係る三次元形状データ処理装置において、前記プロセッサは、面積を有さない前記形成面を前記単位形状に割り付けないようにする。
【0017】
第9態様に係る三次元形状データ処理装置は、第5態様~第8態様の何れかの態様に係る三次元形状データ処理装置において、前記プロセッサは、前記形成面で表される前記物体の三次元形状の内側と外側に位置する隣接する各々の前記三次元領域における前記予め定めた位置から前記物体の表面までの距離の比率に応じて、前記単位形状に割り付けた前記形成面の頂点の位置を補正する。
【0018】
第10態様に係る三次元形状データ処理装置は、第9態様に係る三次元形状データ処理装置において、前記プロセッサは、前記単位形状に割り付けた前記形成面の頂点の位置を補正したことによって、前記形成面が面積を有さなくなった場合、面積を有さなくなった前記形成面を前記単位形状から削除する。
【0019】
第11態様に係る三次元形状データ処理プログラムは、コンピュータに、物体が含まれる空間を、少なくとも1つの大きさが他の大きさと異なる複数の三次元領域で分割して表現された三次元形状データを受け付け、隣接する前記三次元領域によって構成された三次元領域群に含まれる各々の前記三次元領域の予め定めた位置を頂点として形成される単位形状を、前記空間から漏れなく、かつ、重複しないように抽出し、抽出した各々の前記単位形状に基づいて、前記物体の表面を平面で表される形成面で構成する処理を実行させる。
【0020】
第12態様に係る三次元形状データ処理プログラムは、コンピュータに、属性値が分布する空間を、少なくとも1つの大きさが他の大きさと異なる複数の三次元領域で分割して表現された属性分布を受け付け、隣接する前記三次元領域によって構成された三次元領域群に含まれる各々の前記三次元領域の予め定めた位置を頂点として形成される単位形状を、前記空間から漏れなく、かつ、重複しないように抽出し、抽出した各々の前記単位形状に基づいて、前記属性分布に対応した物体の形状を平面で表される形成面で構成する処理を実行させる。
【発明の効果】
【0021】
第1態様、第2態様、第11態様、及び第12態様によれば、物体の三次元形状が大きさの異なる三次元領域によって表現されている場合であっても、最初から不整合部分が生じないように物体の表面を構成することができる、という効果を有する。
【0022】
第3態様によれば、大きさの異なる三次元領域から単位形状を漏れなく、かつ、重複しないように抽出することができる、という効果を有する。
【0023】
第4態様によれば、予め定めた位置を三次元領域の中心以外の場所にする場合と比較して、予め定めた位置を容易に特定することができる、という効果を有する。
【0024】
第5態様によれば、三次元領域を用いて物体の形状を表す場合と比較して、三次元形状データで表される物体の形状を実際の物体の形状に近づけることができる、という効果を有する。
【0025】
第6態様によれば、単位形状の頂点数が8つ未満の場合であってもMarching Cubes法を適用することができる、という効果を有する。
【0026】
第7態様によれば、面積を有さない形成面を単位形状から削除しない場合と比較して、三次元形状データのデータ量を低減することができる、という効果を有する。
【0027】
第8態様によれば、面積を有さない形成面を単位形状に一旦割り付けた後に単位形状から削除する場合と比較して、三次元形状データの変換に伴う演算量を低減することができる、という効果を有する。
【0028】
第9態様によれば、単位形状の頂点同士を接続する辺の中点を頂点とする形成面によって物体の表面を構成する場合と比較して、三次元形状データで表される物体の形状を実際の物体の形状に近づけることができる、という効果を有する。
【0029】
第10態様によれば、面積を有さない形成面を単位形状から削除しない場合と比較して、形成面の頂点の位置を補正した三次元形状データのデータ量を低減することができる、という効果を有する。
【図面の簡単な説明】
【0030】
図1】三次元形状データ処理装置の構成例を示す図である。
図2】物体の三次元形状の一例を示す図である。
図3】ボクセルで構成された物体の三次元形状の一例を示す図である。
図4】ポリゴンで構成された物体の三次元形状の一例を示す図である。
図5】不整合部分を有するポリゴンの一例を示す図である。
図6】不整合部分を有するポリゴンの修正例を示す図である。
図7】三次元形状データ処理の流れの一例を示すフローチャートである。
図8】ボクセルデータの一例を示す図である。
図9】SDFの一例を示す図である。
図10】本実施の形態に係るSDFの表示例を示す図である。
図11】同じ大きさのボクセルによって構成された判定領域の一例を示す図である。
図12】異なる大きさのボクセルによって構成された判定領域の一例を示す図である。
図13】ボクセルデータから抽出した基準頂点の例を示す図である。
図14】8つの頂点を有する単位形状に対するポリゴンの割り付けパターンの一例を示す平面図である。
図15】8つ未満の頂点しか有さない単位形状に対するポリゴンの割り付けパターンの一例を示す平面図である。
図16】三次元形状データ処理を実行することで得られるポリゴンデータによって表された物体の輪郭線の一例を示す図である。
図17】面積を有さないポリゴンの一例を示す図である。
図18】面積を有さないポリゴンの生成過程例を示す図である。
図19】ポリゴン補正処理の説明に用いる図である。
図20】ポリゴン補正処理を行うボクセルの拡大図である。
図21】ポリゴン補正処理の実行結果例を示す図である。
図22】属性分布の一例を示す図である。
【発明を実施するための形態】
【0031】
以下、本実施の形態について図面を参照しながら説明する。なお、同じ構成要素及び同じ処理には全図面を通して同じ符号を付与し、重複する説明を省略する。
【0032】
まず、図1を用いて、本実施の形態に係る三次元形状データ処理装置1(以降、「処理装置1」という)の構成について説明する。
【0033】
処理装置1は、例えばコンピュータ10で構成される。コンピュータ10は、プロセッサの一例であるCPU(Central Processing Unit)11、ROM(Read Only Memory)12、RAM(Random Access Memory)13、不揮発性メモリ14、及び入出力インターフェース(I/O)15を備える。そして、CPU11、ROM12、RAM13、不揮発性メモリ14、及びI/O15がバス16を介して各々接続されている。また、I/O15には、操作部17、表示部18、及び通信部19が接続されている。
【0034】
不揮発性メモリ14は、不揮発性メモリ14に供給される電力が遮断されても、記憶した情報が維持される記憶装置の一例であり、例えば半導体メモリが用いられるがハードディスクを用いてもよい。不揮発性メモリ14は、必ずしもコンピュータ10に内蔵されている必要はなく、例えばメモリカードのようにコンピュータ10に着脱可能な可搬型の記憶装置であってもよい。
【0035】
操作部17は、処理装置1のユーザから指示を受け付ける機能部であり、例えばマウス、キーボード、及びタッチパネル等の入力デバイスを含んで構成される。
【0036】
表示部18は、CPU11によって処理された情報を表示する機能部であり、例えば液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイ、及びプロジェクタ等の表示デバイスを含んで構成される。
【0037】
通信部19は、例えばインターネットや社内LAN(Local Area Network)といった通信回線に接続され、通信回線に接続された外部装置とデータ通信を行うためのインターフェースを有する。
【0038】
図2は、物体2の三次元形状の一例を示す図である。物体2の三次元形状はX軸、Y軸、及びZ軸によって表される三次元座標を用いて表される。以降では、空間の位置を三次元座標によって指定し、物体2の三次元形状のことを単に「物体2の形状」ということにする
【0039】
処理装置1は、物体2の形状を表す三次元形状データとして、例えばボクセル4を用いて物体2の形状を表したデータに対応している。
【0040】
図3は、図2に示した物体2の形状を、ボクセル4で構成された三次元形状データで表した場合の形状の一例を示す図である。
【0041】
ボクセル4とは、空間を分割する三次元領域の1つ1つであり、例えば立方体が用いられるが、立方体に限らず、直方体、三角錐、球、及び円柱等の他の三次元領域を用いてもよい。物体2の形状は、物体2と干渉するボクセル4の集合によって表される。「干渉」とは、ボクセル4に物体2の一部が接触または含まれる状態であり、物体2が干渉しているボクセル4を「オン状態のボクセル4」といい、物体2が干渉していないボクセル4を「オフ状態のボクセル4」という。すなわち、オン状態のボクセル4の集合によって物体2の形状が表される。なお、物体2が存在する空間はボクセル4単位で分割されていることから、空間内にはオン状態のボクセル4だけでなく、オフ状態のボクセル4も存在する。
【0042】
上記のように、例えばボクセル4の表面が物体2と接触しているだけでも当該ボクセル4をオン状態として取り扱ってもよいが、以降では一例として、ボクセル4の中心点と物体2が干渉している場合にボクセル4をオン状態として取り扱い、ボクセル4の表面が物体2と接触しているだけではボクセル4をオフ状態として取り扱う。
【0043】
このようにオン状態のボクセル4を積み上げることで所望の物体2の三次元形状が表現される。また、各ボクセル4には、例えば色、強度、材質、質感等のボクセル4の性質を表す属性を設定してもよい。オン状態のボクセル4の属性によって、物体2の色や材質等が表現される。また、オフ状態のボクセル4の属性によって、物体2の周囲の情報、例えば照度や気流の流れといった情報が表現される。オン状態及びオフ状態という情報もボクセル4の属性の一例である。
【0044】
物体2の形状はボクセル4の集合によって表されるが、具体的には、例えば空間の位置を指定する座標と対応付けられた要素値によって表される。空間におけるボクセル4の中心点の座標を(X,Y,Z)で表せば、例えばオン状態のボクセル4を「(X,Y,Z)≧1」で表し、オフ状態のボクセル4を「(X,Y,Z)=0」とすることで、物体2の形状が表される。すなわち、ボクセル4を用いて物体2の形状を定義する三次元形状データは、物体2との干渉状態を示す座標(X,Y,Z)の要素値と、ボクセル4に対応付けられた属性を含む。
【0045】
物体2が存在する空間は必ずしも座標(X,Y,Z)によって表される必要はなく、例えば座標(X,Y,Z)と一意に対応付けたインデックス番号で表してもよい。この場合、例えばインデックス番号に対応付けられた値が“1”であれば、インデックス番号で表される位置に中心点を有するボクセル4を表す。
【0046】
また、空間の位置を表す座標は、X軸、Y軸、Z軸といった3次元の直交座標に限定するものではなく、例えばrとθを用いた極座標を用いてもよい。この場合、空間がX軸、Y軸、Z軸のピッチごとに1、2、3...とインデックス番号で表せるのと同様に、r、θのピッチごとにインデックス番号を対応付け、インデックス番号で表される位置に1以上の値を指定してオン状態のボクセル4が存在することを表せばよい。
【0047】
一方、ボクセル4を積み上げて物体2の形状を表した場合、曲線に沿った物体2の表面もボクセル4で表すことになるため、物体2の表面をポリゴンで表した場合に比べて、凸凹の少ない表面を実現することが困難になる。
【0048】
したがって、実際の物体2の形状と三次元形状データで表される物体2の形状の類似性を重視する場合、例えばMC(Marching Cubes)法のようにボクセル4で構成された物体2の表面にポリゴンを割り付ける公知のアルゴリズムを用いて、ボクセル4で構成された物体2の三次元形状データをポリゴンで構成された物体2の三次元形状データに変換することがある。
【0049】
図4は、図2に示した物体2の形状を、ポリゴン6で構成された三次元形状データで表した場合の形状の一例を示す図である。
【0050】
ポリゴン6とは、物体2の表面を構成する形成面のことであり、ポリゴン6の形状に制約はないが、例えば三角形や四角形といった多角形が用いられ、物体2の表面に沿って複数のポリゴン6を組み合わせることによって物体2の形状が構成される。すなわち、ポリゴン6を用いて物体2の形状を定義した三次元形状データには、例えば各々のポリゴン6の位置及び配置方向や、隣り合うポリゴン6との接続に関する情報等が含まれる。ポリゴン6は平面に限らず曲面であってもよいが、ここでは一例として平面を用いることにする。
【0051】
上述したように、ボクセル4で構成された三次元形状データで物体2の形状を表した場合、ボクセル4毎に対応する物体2の色や材料、及び物体2にかかる応力といった情報をボクセル4の属性として保存して利用することができる。
【0052】
例えばボクセル4で構成された物体2の三次元形状データを用いて物体2に関する解析を行う場合、物体2の三次元形状データが、より多くの地点の属性を含む高精度モデルであるほど詳細な解析が行われることになる。そのためには、空間を分割するボクセル4の大きさをできるだけ小さくして単位体積あたりのボクセル4の数、すなわちボクセル密度を上げればよい。
【0053】
しかしながら、ボクセル4の大きさを小さくすれば、それに伴い三次元形状データのデータ量が増加するため、処理装置1のRAM13や不揮発性メモリ14の容量を圧迫することになり、また、処理装置1での三次元形状データの処理に要する時間が長くなる。したがって、処理装置1では、空間全体を同じ大きさのボクセル4で一律に分割するのではなく、対応付けられる属性の密度が低くても物体2の解析に影響が少ないと考えられる箇所は他の箇所よりも大きいボクセル4で分割し、詳細な解析結果を得たい箇所は他の箇所よりも小さいボクセル4で分割することで、解析精度と処理時間及びデータ量とのバランスを考慮した物体2の三次元形状データが得られる。
【0054】
この場合、ボクセルの大きさを表す属性を各々のボクセル4に対応付けておけば、ボクセル4の大きさを表すことができる。
【0055】
一方で、空間を分割するボクセル4の大きさが異なる場合、ボクセル4で構成された物体2の三次元形状データからポリゴン6で構成された物体2の三次元形状データへの変換にMC法を用いた場合、そのままでは物体2の表面に不整合部分が生じることがある。不整合部分とは、物体2の表面を構成する隣接するポリゴン6との間に隙間が生じたり、ポリゴン6同士が交差したり、折れ曲がって重なったりするような箇所のことをいう。
【0056】
図5は不整合部分を有するポリゴン6の一例を示す図である。図5の例ではボクセル4Aと、ボクセル4Aよりも小さい4つのボクセル4であって、それぞれ同じ大きさのボクセル4B、4C、4D、及び4Eが存在している。MC法を適用し、例えば頂点5の周囲のボクセル4Aにポリゴン6Aが割り付けられ、ボクセル4Bにポリゴン6Bを割り付けられた場合、図5に示すようにポリゴン6Aとポリゴン6Bとの間に隙間が生じることがある。
【0057】
こうした隣接するポリゴン6同士の間に生じる隙間をなくすためには、例えば図6に示すように、ボクセル4Bに接するポリゴン6Aの2つの頂点を、ボクセル4Aの辺に沿って当該ボクセル4Aのそれぞれの辺に位置するポリゴン6Bの頂点まで移動させることになる。しかしながら、大きさの異なるボクセル4に対してMC法を適用してとりあえずポリゴン6を割り付け、その後、ポリゴン6の不整合部分を検出し、ポリゴン6の不整合部分を各々調整するのは、最初からポリゴン6の不整合部分が生じないように物体2の表面を構成する場合と比較して、変換に要する工程数が増加し処理時間の増加につながる。また、大きさの異なるボクセル4Aと4Bに位置するポリゴン6の数が一致しない場合、単なるポリゴンの調整だけでなく、ポリゴン6の分割や削除といった処理が必要となり、さらなる不整合を発生させる可能性が高い。
【0058】
これに対して処理装置1は、以降に説明する処理によって、物体2の形状が大きさの異なるボクセル4によって表現されている場合であっても、最初からポリゴン6の不整合部分が生じないように物体2の表面をポリゴン6で構成する。
【0059】
図7は、少なくとも1つの大きさが他の大きさと異なる複数のボクセル4で構成された三次元形状データ(以降、単に「ボクセルデータ」という)で表される物体2の表面にポリゴン6を割り付ける場合に、処理装置1のCPU11によって実行される三次元形状データ処理の流れの一例を示すフローチャートである。
【0060】
三次元形状データ処理を規定する三次元形状データ処理プログラムは、例えば処理装置1のROM12に予め記憶されている。処理装置1のCPU11は、ROM12に記憶される三次元形状データ処理プログラムを読み込み、三次元形状データ処理を実行する。
【0061】
なお、ボクセルデータは予め不揮発性メモリ14に記憶されており、CPU11は、不揮発性メモリ14からボクセルデータを取得するものとして説明するが、通信部19を通じて通信回線に接続された外部装置からボクセルデータを取得してもよい。
【0062】
ステップS10において、CPU11は、不揮発性メモリ14に記憶されているボクセルデータを取得し、RAM13に記憶する。以降、CPU11は、RAM13に記憶されたボクセルデータに対して処理を行う。
【0063】
図8は、不揮発性メモリ14から取得したボクセルデータの一例を示す図である。既に説明したように、物体2は立体であり、ボクセル4A及びボクセル4Bは三次元領域(一例として立方体)であるが、説明の便宜上、例えばボクセルデータによって表される物体2及びボクセル4を上方から眺めた場合(空間をZ軸方向に沿って原点方向を眺めた方向)の物体2内部を通過するXY平面における物体2とボクセル4の配置を表している。以降では、こうした図を平面図ということにする。
【0064】
なお、ボクセル4を区別して説明する必要がある場合には、上記のようにボクセル4A及びボクセル4Bと表記し、ボクセル4A及びボクセル4Bのように大きさの異なるボクセル4を区別して説明する必要がない場合には、総称して「ボクセル4」と表記する。
【0065】
説明に用いるボクセルデータは、レベルA(図8では「LV-A」と表示)のボクセル4AとレベルB(図8では「LV-B」と表示)のボクセル4Bというように大きさの異なる2種類のボクセル4によって構成されており、ボクセル4Aはボクセル4Bより大きいボクセル4である。一例として、図8に示した各ボクセル4のZ軸方向には同じ種類のボクセル4が積み上げられているものとするが、異なる種類のボクセル4が積み上げられていてもよい。また、図8では2種類の大きさのボクセル4を示したが、3つ以上の異なる大きさのボクセル4が用いられてもよく、その大きさに制約はない。
【0066】
また、図8では割り切れる比率の大きさが相似のボクセル4が組み合わせられている例を示しているが、ボクセル4は、3次元領域を表す一形態に過ぎず、これに限定するものではない。例えば大きさがぴったり一致することのない、すべてがバラバラなサイズ、形状の3次元領域の組み合わせであってもいいし、3次元空間に離散的に分布している点群から隣接している点を任意に組み合わされた時に形成される3次元領域であってもよい。
【0067】
各ボクセル4内の符号は、ボクセル4と物体2の位置関係を表す符号付距離場(Signed Distance Field:SDF)の符号を表す。具体的にはボクセル4の中心点から、最も近い物体2の表面までの距離が各ボクセル4の符号付距離場の大きさとして設定される。また、ボクセル4の中心点が物体2の内部に含まれる場合には距離にプラスの符号が設定され、ボクセル4の中心点が物体2の内部に含まれない場合には距離にマイナスの符号が設定される。すなわち、SDFの符号がプラスであればそのボクセル4はオン状態であり、SDFの符号がマイナスであればそのボクセル4はオフ状態であることを表している。
【0068】
なお、距離の基準はボクセル4の中心点であることを限定するものではなく、例えばボクセル4を3次元格子と見たとき、格子点から最も近い物体2の表面までの距離としてもよいし、3次元領域が立方体以外の任意形状であった場合、重心点などを用いてもよい。
【0069】
図9は、図8の領域7に含まれる4つのボクセル4B-1、4B-2、4B-3、及び4B-4を拡大した図である。
【0070】
図9において、ボクセル4B-1の中心点9Aから最も近い物体2の表面までの距離、及びボクセル4B-2の中心点9Bから最も近い物体2の表面までの距離をそれぞれ0.7、ボクセル4B-3の中心点9Cから最も近い物体2の表面までの距離を0.3、ボクセル4B-4の中心点9Dから最も近い物体2の表面までの距離を0.2とする。また、ボクセル4B-3の中心点9Cは物体2の内部に含まれているものとする。この場合、ボクセル4B-1及びボクセル4B-2のSDFはそれぞれ“-0.7”となり、ボクセル4B-3のSDFは“0.3”、ボクセル4B-4のSDFは“-0.2”となる。
【0071】
図10は、このようにして計算した図8の領域7に含まれる4つのボクセル4B-1、4B-2、4B-3、及び4B-4のSDFに着目した図である。図8に示す各ボクセル4では、図10に示すように各ボクセル4のSDFの符号だけが表示されSDFの大きさ(以降、「SDFの絶対値」という)が省略されている。しかしながら、実際には各ボクセル4にSDFの絶対値が対応付けられている。こうしたSDFはボクセル4の属性の一例である。
【0072】
なお、SDFの符号の定義は逆でもよいし、各ボクセル4は、符号無しの距離と物体2の外側及び内側といった情報を個別に管理してもよい。
【0073】
ステップS20において、CPU11は、ステップS10で取得したボクセルデータから判定領域を選択する。判定領域とは、MC法においてボクセル4からポリゴン6に変換する変換単位のことであり、CPU11は、例えば空間におけるX軸方向、Y軸方向、及びZ軸方向にボクセル4をそれぞれ2個ずつ、合計8個のボクセル4を含む範囲を判定領域として設定する。図8に示した領域7をX軸方向、Y軸方向、及びZ軸方向にそれぞれ2個ずつボクセル4Bを含んだ領域とすれば領域7は判定領域に相当することから、以降では「判定領域7」ということにする。
【0074】
図11は、隣接するそれぞれ同じ大きさのボクセル4Bによって構成された判定領域7の一例を示す図である。CPU11は、判定領域7に含まれる各々のボクセル4の予め定めた位置を頂点として形成される形状(以降、「単位形状8」という)を判定領域7に対して設定する。単位形状8の頂点の位置に制約はないが、一例として、CPU11は各ボクセル4の中心点9が単位形状8の頂点となるように設定する。したがって、図11に示すように8つのボクセル4Bで構成された判定領域7であれば、各ボクセル4Bの中心点を頂点とする立方体が単位形状8となる。
【0075】
単位形状8の頂点は各ボクセル4の中心点9であることから、以降では、単位形状8の頂点を「頂点9」と表すことにする。
【0076】
立方体のように頂点数が8つある単位形状8に対してはMC法が適用できるため、そのまま従来のMC法を用いることで、単位形状8に対してポリゴン6が割り付けられる。
【0077】
しかしながら、図8に示したようにステップS10で取得したボクセルデータには大きさの異なるボクセル4が存在する。したがって、CPU11は、X軸、Y軸、及びZ軸方向の何れか1方向に隣接するボクセル4の大きさが異なるような境界で判定領域7を設定する場合には、隣接するボクセル4の共通性を考慮して判定領域7を設定する。
【0078】
図12は、X軸方向に隣接するボクセル4の大きさが異なる境界における判定領域7の一例を示す図である。図12の4つのボクセル4Bに注目すれば、Y軸方向及びZ軸方向には同じ大きさのボクセル4Bが隣接しているが、X軸方向には異なる大きさのボクセル4Aが隣接している。4つのボクセル4BについてX軸方向に隣接するボクセル4はすべて同じボクセル4Aとなる。この場合、CPU11は実際には同じボクセル4Aであるが、仮想的に各々のボクセル4Bに対してそれぞれ個別のボクセル4Aが隣接し、隣接するこれらのボクセル4Aは位置が重複したボクセル4であると捉える。したがって、X軸方向にもそれぞれ2個ずつボクセル4が含まれることになり、図12に示すような判定領域7が構成される。
【0079】
図12に示す判定領域7に対して単位形状8を設定する場合、単位形状8は四角錐となる。このようにCPU11で扱う単位形状8には、立方体のように頂点数が8つの形状だけでなく、四角錐のように頂点数が8つ未満の形状も存在する。
【0080】
一方、単位形状8の頂点数が8つ未満の場合、MC法を単位形状8に適用することができない。したがって、CPU11は後述するような単位形状8の頂点9の取り扱いを行うことで、例えば四角錐のように見かけ上の頂点数が8つ未満の単位形状8であっても頂点数が8つあると捉えてMC法を適用し、ボクセルデータからポリゴンデータへの変換を行う。なお、ポリゴンデータとはポリゴン6で構成された三次元形状データのことである。
【0081】
ボクセルデータからポリゴンデータへの変換を行うためには、CPU11は、こうした複数種類の形状を有する単位形状8をボクセルデータから漏れなく、かつ、重複しないように抽出する必要がある。そのためCPU11は、ボクセルデータに対して漏れなく、かつ、重複しないように判定領域7を設定する。
【0082】
具体的には、CPU11は、ステップS10で取得したボクセルデータを構成するすべてのボクセル4から外郭に位置しないボクセル4の頂点を基準頂点として抽出する。外郭に位置しないボクセル4の頂点とは、空間を分割する各々のボクセル4を1つのボクセル集合体と捉えた場合に、ボクセル集合体の最外郭、すなわち、ボクセル集合体の表面に露出していない頂点のことである。図12の例の場合、X軸、Y軸、及びZ軸方向にそれぞれのボクセル4で囲まれた頂点が基準頂点3となる。
【0083】
CPU11は、ボクセルデータを構成するすべてのボクセル4を順に走査して、各々のボクセル4の位置関係からボクセルデータに含まれるすべての基準頂点3を抽出する。図13は、図8に示したボクセルデータから基準頂点3を抽出した状況を示す図である。
【0084】
CPU11は、ボクセルデータからすべての基準頂点3を抽出した後、各々の基準頂点3に対して、基準頂点3に接するすべてのボクセル4を基準頂点3に対応した判定領域7として設定する。図12の例の場合、基準頂点3に接するボクセル4は1つのボクセル4Aと4つのボクセル4Bになるため、図12に示した各々のボクセル4を含む範囲が判定領域7となる。このように、基準頂点3に接する各々のボクセル4によって構成された判定領域7は三次元領域群の一例である。
【0085】
その後、CPU11は判定領域7毎に単位形状8を抽出することで、ボクセルデータから単位形状8を漏れなく、かつ、重複しないように抽出する。なお、単位形状8が重複するとは、単位形状8が完全に一致する場合と隣接する単位形状8の一部が交差する状態をいう。
【0086】
図7のステップS20でボクセルデータから単位形状8を抽出した後、ステップS30において、CPU11は、抽出した単位形状8に対してポリゴン6を割り付け、ボクセルデータによって表される物体2の表面をポリゴン6で構成する。
【0087】
単位形状8に対するポリゴン6の割り付けに関して、CPU11はMC法を適用する。すなわち、CPU11は、単位形状8の頂点9同士を接続する辺の中点を新たな頂点(「MC頂点」という)とした形状のポリゴン6を、単位形状8が抽出された判定領域7を構成するボクセル4の状態パターンに基づいて単位形状8に当てはめて整合した平面を生成する。ボクセル4の状態パターンとは、複数のボクセル4のオン状態及びオフ状態の組み合わせパターンのことをいう。
【0088】
図14は、8つの頂点9を有する単位形状8が抽出された判定領域7を構成するボクセル4の状態パターンに基づいて、単位形状8にポリゴン6を割り付ける場合の割り付けパターンの一例を示す平面図である。図14の判定領域7にはそれぞれ大きさが異なる3種類のボクセル4A、ボクセル4B、及びボクセル4Cが含まれており、判定領域7にはボクセル4Bが2つ含まれるため、一方のボクセル4Bをボクセル4B-1、他方のボクセル4Bを4B-2と表している。
【0089】
4つのボクセル4の状態パターンの組み合わせは16通りとなるため、図14(A)~図14(P)が各々のボクセル4の状態パターンを表している。また、例えば図14(B)のボクセル4B-1のように陰影がつけられたボクセル4はオン状態のボクセル4を表し、図14(B)のボクセル4B-2のように陰影がつけられていないボクセル4はオフ状態のボクセル4を表している。
【0090】
なお、図14(C)~図14(P)には、それぞれ図14(A)及び図14(B)と同じ要素に図14(A)及び図14(B)に示した同じ符号が対応付けられるが、その記載を省略している。
【0091】
なお、ここではMC法に基づいて16通りの状態パターンとしているが、原理的には、オン状態のボクセル4とオフ状態のボクセル4の中心点間を結ぶ線分の中点をMC頂点としてポリゴン6を生成している。よって、割り切れる比率や相似でないサイズのボクセル4や、立方体以外の任意形状のボクセル4(3次元領域)の組み合わせを用いた場合、状態パターンをあらかじめ網羅して何種類存在するかを特定しておく必要はなく、使用する判定領域7に基づき形成される単位形状8の各頂点同士がオン状態かオフ状態のみに基づいてポリゴン6の割り付け処理を行えばよい。
【0092】
CPU11は、図14(A)~図14(P)に示す各々のボクセル4の状態パターンに基づいて、オン状態とオフ状態のボクセル4同士の中心点9を接続する辺の中点をMC頂点22とするポリゴン6を単位形状8に割り付ける。
【0093】
例えば図14(B)ではボクセル4B-1がオン状態で、ボクセル4A、ボクセル4B-2、及びボクセル4Cがそれぞれオフ状態となっている。したがって、CPU11は、ボクセル4B-1の中心点9Bとボクセル4Aの中心点9Aを接続する辺の中点であるMC頂点22Aと、ボクセル4B-1の中心点9Bとボクセル4Cの中心点9Cを接続する辺の中点であるMC頂点22Bを頂点とするポリゴン6を単位形状8に割り付ける。CPU11は、図14に示した他のボクセル4の状態パターンについても、図14(B)を例に説明した方法により単位形状8にポリゴン6を割り付ける。なお、図14(A)及び図14(I)に示すボクセル4の状態パターンの場合、判定領域7にオン状態とオフ状態のボクセル4が混在していないため、単位形状8にポリゴン6が割り付けられない。
【0094】
一方、図12に示したような判定領域7では、各々のボクセル4Bに隣接するボクセル4はすべて同じボクセル4Aとなるため、各々のボクセル4Bに隣接するボクセル4の中心点9Aの位置が重複する。したがって、図12に示した判定領域7から得られる単位形状8は四角錐となる。
【0095】
このような場合、CPU11は、単位形状8の頂点9のうち、各々のボクセル4Bに隣接するボクセル4Aをボクセルデータ上では各々のボクセル4Bにそれぞれ異なるボクセル4Aが隣接しているものとして処理する。すなわち、CPU11は、各々のボクセル4Bにそれぞれ異なる個別のボクセル4Aが仮想的に4つ隣接し、各々のボクセル4Aの位置が同じであるため各々のボクセル4Aの中心点9も重複して、見かけ上は単位形状8の頂点9が8つ未満になっているものと捉える。
【0096】
したがって、CPU11は、見かけ上の単位形状8の頂点数が8つ未満であっても、データ上では単位形状8の少なくとも1つの頂点9に他の頂点9が重複しているだけであると捉え、実際には単位形状8の頂点9は8つあるものとして取り扱う。すなわち、図12に示した単位形状8は、各々のボクセル4Bに隣接するそれぞれ異なる個別のボクセル4Aの中心点9A同士が重複することにより、中心点9A同士を接続する辺が退縮した結果、四角錐に見えているだけである。
【0097】
CPU11は、このように単位形状8の頂点9の取り扱うことで、見かけ上の頂点数が8つ未満の単位形状8に対してもMC法を適用する。
【0098】
図15は、見かけ上、8つ未満の頂点9を有する単位形状8が抽出された判定領域7を構成するボクセル4の状態パターンに基づいて、単位形状8にポリゴン6を割り付ける場合の割り付けパターンの一例を示す平面図である。図15の判定領域7にはそれぞれ大きさが異なる3種類のボクセル4A、ボクセル4B、及びボクセル4Cが含まれている。
【0099】
3つのボクセル4の状態パターンの組み合わせは8通りとなるため、図15(A)~図15(H)が各々のボクセル4の状態パターンを表している。また、例えば図15(B)のボクセル4Bのように陰影がつけられたボクセル4はオン状態のボクセル4を表し、図15(B)のボクセル4Aのように陰影がつけられていないボクセル4はオフ状態のボクセル4を表している。
【0100】
なお、図15(C)~図15(H)には、それぞれ図15(A)及び図15(B)と同じ要素に図15(A)及び図15(B)に示した同じ符号が対応付けられるが、その記載を省略している。
【0101】
例えば図15(B)では、ボクセル4Bがオン状態でボクセル4A及びボクセル4Cがそれぞれオフ状態となっている。したがって、CPU11は、ボクセル4Bの中心点9Bとボクセル4Aの中心点9Aを接続する辺の中点であるMC頂点22Aと、ボクセル4Bの中心点9Bとボクセル4Cの中心点9Cを接続する辺の中点であるMC頂点22Bを頂点とするポリゴン6を単位形状8に割り付ける。CPU11は、図15に示した他のボクセル4の状態パターンについても、図15(B)を例に説明した方法により単位形状8にポリゴン6を割り付ける。なお、図15(A)及び図15(E)に示すボクセル4の状態パターンの場合、判定領域7にオン状態とオフ状態のボクセル4が混在していないため、単位形状8にポリゴン6が割り付けられない。
【0102】
上記の処理を抽出したすべての単位形状8に対して実施することで、CPU11は、ボクセルデータによって表される物体2の表面をポリゴン6で構成し、図7に示した三次元形状データ処理を終了する。
【0103】
図16は、図13に示したボクセルデータに対して図7に示した三次元形状データ処理を実行することで得られる、ポリゴンデータによって表された物体2の輪郭線24の一例を示す図である。
【0104】
説明の便宜上、図16の中段に位置するX軸方向に並んだ3つのボクセル4Aをそれぞれボクセル4A-1、ボクセル4A-2、及びボクセル4A-3とする。また、X軸方向に並んだ各段のボクセル4Bを図16の上段左から下段右までの並び順に4B-1、4B-2、・・・、4B-64とする。
【0105】
輪郭線24は、実際の物体2の形状に対して、MC頂点22-1~MC頂点22-24を頂点とするポリゴン6で構成された物体2の形状を表す。なお、MC頂点22-1は、ボクセル4B-25の中心点9とボクセル4A-1の中心点9を接続する辺の中点に位置し、MC頂点22-2は、ボクセル4A-1の中心点9とボクセル4A-3の中心点9を接続する辺の中点に位置する。同様に、MC頂点22-3~MC頂点22-6は、ボクセル4A-1の中心点9と、ボクセル4B-33、ボクセル4B-34、ボクセル4B-35、及びボクセル4B-36とを接続するそれぞれの辺の中点に位置し、MC頂点22-7~MC頂点22-10は、ボクセル4A-2の中心点9と、ボクセル4B-37、ボクセル4B-38、ボクセル4B-39、及びボクセル4B-40とを接続するそれぞれの辺の中点に位置する。なお、MC頂点22-11は、ボクセル4A-2のX軸方向に隣接する図示しないオフ状態のボクセル4Aとボクセル4A-2の中心点を接続する線分の中心点である。
【0106】
このように、処理装置1は、物体2の存在する空間が大きさの異なるボクセル4によって分割されている場合であっても、最初から不整合部分が生じないように物体2の表面を構成したポリゴンデータを生成することができる。
【0107】
なお、見かけ上の頂点数が8つ未満の単位形状8に対してMC法を適用した場合、単位形状8の重複した頂点9同士を接続する辺が退縮したものとみなして単位形状8にポリゴン6を割り付けるため、辺の縮退の状況によっては、ポリゴン6として形式的に直線や点といった面積を有さない要素が割り付くことがある。ポリゴン6は多角形で表されるため、厳密に言えば面積を有さない直線や点はポリゴン6ではないが、単位形状8の重複した頂点9同士を接続する辺の縮退に伴って、元々面積を有するポリゴン6が面積を有さないポリゴン6になったと捉えることができる。したがって、こうした直線や点も面積を有さないポリゴン6に含まれることになる。
【0108】
図17は、ボクセルデータからポリゴンデータへの変換に伴い、面積を有さないポリゴン6が生じる例を示した図である。
【0109】
図17に示す判定領域7は、大きさの異なるボクセル4Aとボクセル4Bで構成され、ボクセル4Bより大きいボクセル4Aはボクセル4A-1及びボクセル4A-2を含み、ボクセル4Bはボクセル4B-1、ボクセル4B-2、ボクセル4B-3、ボクセル4B-4を含む。この場合、ボクセル4B-1の中心点9B-1、ボクセル4B-2の中心点9B-2、ボクセル4B-3の中心点9B-3、ボクセル4B-4の中心点9B-4、ボクセル4A-1の中心点9A-1、及びボクセル4A-2の中心点9A-2を頂点9とする図17に示すような単位形状8が判定領域7から抽出される。
【0110】
ボクセル4A-1、ボクセル4B-1、及びボクセル4B-4をそれぞれオン状態のボクセル4とし、ボクセル4A-2、ボクセル4B-2、及びボクセル4B-3をそれぞれオフ状態のボクセル4とすれば、処理装置1は、単位形状8の頂点9B-1と頂点9B-2を接続した辺の中点22Xと、頂点9B-4と頂点9B-3を接続した辺の中点22Yと、頂点9A-1と頂点9A-2を接続した辺の中点22Zを頂点とする三角形のポリゴン6を単位形状8に割り付ける。
【0111】
しかしながら、ボクセル4B-1及びボクセル4B-4は共にボクセル4A-1と隣接し、ボクセル4B-2及びボクセル4B-3は共にボクセル4A-2と隣接していることから、処理装置1は、ボクセルデータ上ではボクセル4B-1及びボクセル4B-4にそれぞれ異なるボクセル4A-1が隣接しているものとして処理する。また、処理装置1は、ボクセル4B-2及びボクセル4B-3に関しても、ボクセルデータ上ではボクセル4B-2及びボクセル4B-3にそれぞれ異なるボクセル4A-2が隣接しているものとして処理する。したがって、データ上は図18に示すようなポリゴン6Aとポリゴン6Bが図17に示した単位形状8に割り付けられることになる。
【0112】
一方、データ処理上存在する仮想的な2つのボクセル4A-1及び2つのボクセル4A-2において、一方のボクセル4A-1の中心点9A-1が他方のボクセル4A-1の中心点9A-1と重複し、一方のボクセル4A-2の中心点9A-2が他方のボクセル4A-2の中心点9A-2と重複することに伴い、ポリゴン6BのMC頂点22αがMC頂点22Zと重複する。結果として一方のポリゴン6Bが潰れてMC頂点22YとMC頂点22Zを接続する直線となる。したがって、見かけ上はポリゴン6Aだけが単位形状8に存在するように見えるが、ポリゴンデータ上では直線で表されるポリゴン6Bも単位形状8に割り付けられたままになっている。
【0113】
したがって、CPU11は、単位形状8に面積を有さないポリゴン6が割り付く場合、面積を有さないポリゴン6を単位形状8から削除する。
【0114】
なお、CPU11は、ポリゴンデータを生成する場合に、面積を有さないポリゴン6が生成されることが予めわかっている場合、面積を有さないポリゴン6を単位形状8に割り付けないようにしてもよい。
【0115】
<変形例>
図7に示した三次元形状データ処理では、オン状態のボクセル4とオフ状態のボクセル4の境界に位置する単位形状8の辺の中点をMC頂点22とするポリゴン6を割り付けるため、図16に示したように、実際の物体2の形状とポリゴンデータによって表される物体2の形状がずれることがある。したがって、処理装置1は三次元形状データ処理によってボクセルデータをポリゴンデータに変換した後、ポリゴンデータを補正するポリゴン補正処理を実行してもよい。
【0116】
図19は、三次元形状データ処理を行った後のボクセルデータとポリゴンデータの一例を示す図であり、図16と同じ図である。一例として、以降では領域25の範囲に含まれるボクセル4に注目してポリゴン補正処理の説明を行う。
【0117】
図20は、図19に示す領域25に含まれるボクセル4を拡大した拡大図である。図20では、符号しか表示していなかった各ボクセル4のSDFの絶対値も表示している。
【0118】
図20に示すように、三次元形状データ処理では、オン状態のボクセル4とオフ状態のボクセル4の境界、すなわち、物体2の形状の内側と外側に位置する隣接するボクセル4の中心点9同士を接続する辺の中点にポリゴン6のMC頂点22を配置した。すなわち、三次元形状データ処理においてCPU11は、物体2の形状の内側と外側で隣接するボクセル4の中心点9を接続する辺を5:5の比率で分割した位置にポリゴン6のMC頂点22を設定する。
【0119】
これに対して、ポリゴン補正処理では、物体2の形状の内側と外側で隣接するボクセル4の中心点9を接続する辺を、隣接するボクセル4の中心点9から物体2の表面までの距離、すなわち、各々のボクセル4に対応付けられているSDFの絶対値の比率に応じて、ポリゴン6のMC頂点22の位置を補正する。
【0120】
図21に示した例において、オフ状態のボクセル4B-17とオン状態のボクセル4B-18におけるそれぞれのSDFの絶対値は“0.9”と“0.1”であるため、CPU11は、ボクセル4B-17の中心点9とボクセル4B-18の中心点9を接続する辺を9:1の比率に分割する位置にMC頂点22-23が配置されるように、MC頂点22-23の位置を補正する。同様に、例えばオフ状態のボクセル4B-25とオン状態のボクセル4A-1におけるそれぞれのSDFの絶対値は“0.5”と“0.7”であるため、CPU11は、ボクセル4B-25の中心点9とボクセル4A-1の中心点9を接続する辺を5:7の比率に分割する位置にMC頂点22-1が配置されるように、MC頂点22-1の位置を補正する。
【0121】
このようにして各MC頂点22の位置を補正すれば、図21に示すような物体2の形状を表す補正後の輪郭線26が得られる。図21に示すように、ポリゴン補正処理を行うことで、輪郭線26が三次元形状データ処理によって得られる物体2の形状の輪郭線24よりも実際の物体2における形状の輪郭線に近づくことがわかる。
【0122】
なお、CPU11はポリゴン補正処理を行い、MC頂点22の位置を補正したことによって面積を有さないポリゴン6が生じた場合、面積を有さないポリゴン6を単位形状8から削除してもよい。
【0123】
これまでは、空間に物体2の形状を表す三次元形状データが存在することを前提にして三次元形状データ処理の説明を行ったが、物体2に関する何らかの属性値を対応付けた空間内の属性分布から、物体2のポリゴンデータを生成するようにしてもよい。
【0124】
図22は、三次元座標によって表される空間内に、各地点における属性と対応付けられた属性点28が分布した状況例を表した図である。各々の属性点28(図22の例の場合、属性点28A、28B、28C、及び28D)には属性値が対応付けられており、属性点28が位置する座標に、対応する属性の属性値が存在することを表している。すなわち、属性点28が存在しない座標には属性そのものが存在しないことを意味する。属性点28に対応付けられる属性の種類に制約はなく、例えばSDFや温度分布であってもよい。
【0125】
CPU11は、属性分布が存在する空間を、少なくとも1つの大きさが他の大きさと異なる複数のボクセル4で分割する。こうして分割された空間に対して、CPU11はMC法を適用し、属性分布から物体2の形状を構成する。
【0126】
すなわち、CPU11は、空間を分割するボクセル4に対して判定領域7を順次設定し、判定領域7毎に単位形状8を抽出する。既に説明したように、CPU11は、複数種類の形状を有する単位形状8をボクセルデータから漏れなく、かつ、重複しないように抽出するため、ボクセルデータを構成するすべてのボクセル4を順に走査して、各々のボクセル4の位置関係からボクセルデータに含まれるすべての基準頂点3を抽出し、基準頂点3毎に、基準頂点3に接するすべてのボクセル4を基準頂点3に対応した判定領域7として設定する。
【0127】
なお、ボクセル4による空間の分割状況によって属性点28を含むボクセル4と属性点28を含まないボクセル4が生じる。そこで、CPU11は、属性点28を含むボクセル4をオン状態のボクセル4として扱い、属性点28を含まないボクセル4をオフ状態のボクセルとして扱う。図22の例の場合、ボクセル4A、4B、4C、及び4Dがオン状態のボクセル4であり、ボクセル4Eがオフ状態のボクセル4となる。
【0128】
CPU11は、判定領域7を構成するボクセル4の状態パターンに基づいて単位形状8に当てはめて整合した平面を生成する。
【0129】
このようにCPU11は、属性分布が存在する空間を少なくとも1つの大きさが他の大きさと異なる複数のボクセル4で分割し、分割後のボクセルデータに対して図7に示した三次元形状データ処理を適用することで、属性分布からポリゴン6で表される物体2の形状が構成される。
【0130】
以上、実施の形態を用いて本発明について説明したが、本発明は実施の形態に記載の範囲には限定されない。本発明の要旨を逸脱しない範囲で実施の形態に多様な変更または改良を加えることができ、当該変更または改良を加えた形態も本発明の技術的範囲に含まれる。例えば、本発明の要旨を逸脱しない範囲で処理の順序を変更してもよい。
【0131】
実施の形態では、一例として三次元形状データ処理をソフトウェアで実現する形態について説明したが図7に示したフローチャートと同等の処理を、例えばASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、またはPLD(Programmable Logic Device)に実装し、ハードウェアで処理させるようにしてもよい。この場合、三次元形状データ処理をソフトウェアで実現した場合と比較して、処理の高速化が図られる。
【0132】
このように、汎用的なプロセッサの一例であるCPU11を、例えばASIC、FPGA、PLD、GPU(Graphics Processing Unit)、及びFPU(Floating Point Unit)といった特定の処理に特化した専用のプロセッサに置き換えてもよい。
【0133】
また、実施の形態におけるプロセッサの動作は、1つのCPU11によって実現されるのではなく、複数のプロセッサによって実現されるものであってもよい。更に、実施の形態におけるプロセッサの動作は、物理的に離れた位置に存在する複数のコンピュータ10に含まれるプロセッサが協働して実現するものであってもよい。
【0134】
上述した実施の形態では、三次元形状データ処理プログラムがROM12にインストールされている形態を説明したが、これに限定されるものではない。三次元形状データ処理プログラムは、コンピュータで読み取り可能な記憶媒体に記録された形態で提供することも可能である。例えば三次元形状データ処理プログラムを、CD(Compact Disc)-ROM、またはDVD(Digital Versatile Disc)-ROM等の光ディスクに記録した形態で提供してもよい。また、三次元形状データ処理プログラムを、例えばUSB(Universal Serial Bus)メモリやメモリカードといった可搬型の半導体メモリに記録した形態で提供してもよい。
【0135】
更に、処理装置1は通信部19を通じて、通信回線に接続された外部装置から本実施の形態に係る三次元形状データ処理プログラムを取得するようにしてもよい。
【符号の説明】
【0136】
1 三次元形状データ処理装置(処理装置)、2 物体、3 基準頂点、4 ボクセル、5 頂点、6 ポリゴン、7 判定領域(領域)、8 単位形状、9 ボクセルの中心点(単位形状の頂点)、10 コンピュータ、11 CPU、12 ROM、13 RAM、14 不揮発性メモリ、15 I/O、16 バス、17 操作部、18 表示部、19 通信部、22 MC頂点(単位形状の頂点間を接続する辺の中点)、24 (三次元形状データ処理によって得られる物体の形状の)輪郭線、25 領域、26 (物体の形状を表す補正後の)輪郭線、28 属性点
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22