(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-08-28
(45)【発行日】2023-09-05
(54)【発明の名称】三次元形状データの編集装置、及び三次元形状データの編集プログラム
(51)【国際特許分類】
G06T 17/20 20060101AFI20230829BHJP
G06F 30/10 20200101ALI20230829BHJP
【FI】
G06T17/20 500
G06F30/10 100
(21)【出願番号】P 2019154810
(22)【出願日】2019-08-27
【審査請求日】2022-07-21
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】高橋 智也
【審査官】橘 高志
(56)【参考文献】
【文献】特開2002-074386(JP,A)
【文献】藤本 敬介 他2名,格子形状の変形によるMarching Cubes法の細部表現能力の向上,情報処理学会論文誌 第49巻 第2号,第49巻 第2号,日本,社団法人情報処理学会,2008年02月15日,1031~1040
(58)【調査した分野】(Int.Cl.,DB名)
G06T 17/20
G06F 30/10
(57)【特許請求の範囲】
【請求項1】
プロセッサを備え、
前記プロセッサは、
複数の平面及び曲面の少なくとも一方の形成面を用いて構成された第1の三次元形状によって表される物体を複数の三次元要素を用いて構成した第2の三次元形状から、前記複数の形成面で表されるように変換した第3の三次元形状に対して、前記第1の三次元形状から抽出された前記物体のエッジに対応したエッジ形成面を特定し、
前記第1の三次元形状で表される前記物体のエッジの形状が再現されるように、前記第3の三次元形状に対して前記エッジ形成面を構成する
三次元形状データの編集装置。
【請求項2】
プロセッサを備え、
前記プロセッサは、
複数の平面及び曲面の少なくとも一方の形成面を用いて構成された第1の三次元形状によって表される物体を、複数の三次元要素を用いて構成した第2の三次元形状に関して、前記第2の三次元形状を前記形成面で表した第3の三次元形状に変換し、
前記第1の三次元形状から前記物体のエッジを抽出し、
変換後の前記第3の三次元形状における前記形成面の中から、抽出した前記物体のエッジに対応したエッジ形成面を特定し、
前記第1の三次元形状で表される前記物体のエッジの形状が再現されるように、前記第3の三次元形状の前記エッジ形成面を構成する
三次元形状データの編集装置。
【請求項3】
前記プロセッサは、前記物体のエッジと対応する前記第2の三次元形状を構成する三次元要素をエッジ三次元要素として抽出し、
抽出したエッジ三次元要素から変換された前記第3の三次元形状における前記形成面を、前記エッジ形成面として特定する
請求項1または請求項2に記載の三次元形状データの編集装置。
【請求項4】
前記プロセッサは、前記物体のエッジから予め定めた範囲以内に存在する前記第3の三次元形状を構成する前記形成面を、前記エッジ形成面として特定する
請求項1または請求項2に記載の三次元形状データの編集装置。
【請求項5】
前記プロセッサは、前記物体のエッジと対応する前記第2の三次元形状を構成する三次元要素をエッジ三次元要素として抽出し、
前記第2の三次元形状を前記第3の三次元形状に変換する際、抽出したエッジ三次元要素から前記形成面を構成する場合に、前記物体のエッジの形状が再現されるように、前記エッジ形成面を構成する
請求項1または請求項2に記載の三次元形状データの編集装置。
【請求項6】
前記プロセッサは、前記第3の三次元形状の前記形成面から前記エッジ形成面を削除し、
前記物体のエッジ上に配置した頂点と、前記エッジ形成面を削除した後に前記第3の三次元形状に残る、削除した前記エッジ形成面の頂点を接続することで前記エッジ形成面を再構成する
請求項1~請求項5の何れか1項に記載の三次元形状データの編集装置。
【請求項7】
前記プロセッサは、前記エッジ形成面の頂点のうち、前記物体のエッジから近い位置にある頂点から順に、前記エッジ形成面の頂点を前記物体のエッジ上の位置まで移動して前記エッジ形成面を再構成する
請求項1~請求項5の何れか1項に記載の三次元形状データの編集装置。
【請求項8】
前記プロセッサは、エッジが近接しているとみなされる予め定めた範囲内に前記物体のエッジが複数存在する場合、前記物体の各々のエッジに対応した前記エッジ形成面を分割し、
前記物体のエッジから近い位置にある頂点から順に、分割後の前記エッジ形成面の各々の頂点を前記物体のエッジ上の位置まで移動して前記エッジ形成面を再構成する
請求項7記載の三次元形状データの編集装置。
【請求項9】
前記プロセッサは、前記物体の各々のエッジ上における頂点の合計値が、前記物体の各々のエッジに対応した前記エッジ形成面の頂点の合計値より大きい場合に、前記物体の各々のエッジに対応した前記エッジ形成面を分割する
請求項8記載の三次元形状データの編集装置。
【請求項10】
前記プロセッサは、前記物体のエッジ上に予め前記エッジ形成面の頂点の移動先となる頂点の位置を設定し、
前記物体のエッジ上に設定した頂点毎に、当該頂点から近い位置にある前記エッジ形成面の頂点から順に、前記エッジ形成面の頂点を前記物体のエッジ上に設定した頂点の位置まで移動して前記エッジ形成面を再構成する
請求項7~請求項9の何れか1項に記載の三次元形状データの編集装置。
【請求項11】
前記プロセッサは、前記物体のエッジにエッジ同士が交差するエッジ交点が存在する場合、前記エッジ交点に再構成後の前記エッジ形成面の頂点が設けられるように前記エッジ形成面を構成する
請求項6~請求項10の何れか1項に記載の三次元形状データの編集装置。
【請求項12】
前記プロセッサは、外角が予め定めた角度以下となる隣り合うエッジ同士を1つの連続したエッジとして扱う
請求項11記載の三次元形状データの編集装置。
【請求項13】
前記プロセッサは、前記第3の三次元形状に前記形成面の異常個所が生じないように、前記エッジ形成面を構成する
請求項6~請求項12の何れか1項に記載の三次元形状データの編集装置。
【請求項14】
コンピュータに、
複数の平面及び曲面の少なくとも一方の形成面を用いて構成された第1の三次元形状によって表される物体を複数の三次元要素を用いて構成した第2の三次元形状から、前記複数の形成面で表されるように変換した第3の三次元形状に対して、前記第1の三次元形状から抽出された前記物体のエッジに対応したエッジ形成面を特定し、
前記第1の三次元形状で表される前記物体のエッジの形状が再現されるように、前記第3の三次元形状に対して前記エッジ形成面を構成させるための三次元形状データの編集プログラム。
【請求項15】
コンピュータに、
複数の平面及び曲面の少なくとも一方の形成面を用いて構成された第1の三次元形状によって表される物体を、複数の三次元要素を用いて構成した第2の三次元形状に関して、前記第2の三次元形状を前記形成面で表した第3の三次元形状に変換し、
前記第1の三次元形状から前記物体のエッジを抽出し、
変換後の前記第3の三次元形状における前記形成面の中から、抽出した前記物体のエッジに対応したエッジ形成面を特定し、
前記第1の三次元形状で表される前記物体のエッジの形状が再現されるように、前記第3の三次元形状の前記エッジ形成面を構成させるための三次元形状データの編集プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、三次元形状データの編集装置、及び三次元形状データの編集プログラムに関する。
【背景技術】
【0002】
特許文献1には、演算装置を使用して解析モデルデータを作成する解析モデルデータ作成方法であって、解析対象の表面形状が定義された形状データを読出す形状データ読出工程と、この形状データ読出工程にて読出された形状データを直方体であるボクセルデータに分割するボクセルデータ分割工程と、このボクセルデータ分割工程にて分割されたボクセルデータの一部又は全部について前記形状データの表面によって切断される切断面を定義する切断面定義工程と、この切断面定義工程で定義された各ボクセルの切断面と当該ボクセルの辺の交点をフィット節点として定義するフィット節点定義工程とを備えたことを特徴とする解析モデル作成方法が開示されている。
【0003】
特許文献2には、複数の部品からなるCADアセンブリモデルをボクセルに分割する方法であって,前記各部品の本来の形状の体積と当該部品のボクセル分割後の体積との誤差が,全部品について一定となるように,部品ごとに異なるボクセルサイズを算出して,各部品をボクセルに分割することを特徴とするボクセル分割処理方法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2000-194881号公報
【文献】特開2002-149718号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
物体の三次元形状を表す場合に、例えば直方体または立方体といった三次元要素を組み合わせて定義した三次元形状データが用いられることがある。
【0006】
三次元要素の組み合わせによって三次元形状を表した場合、物体の曲面部分も三次元要素で表すことになるため、例えば曲面部分を含む物体の表面を三角形等の形状をしたポリゴンを組み合わせて表すよりも、滑らかな表面にするのが困難となる。
【0007】
したがって、三次元要素で構成した三次元形状データをポリゴンで構成した三次元形状データに変換することがある。しかしながら、この変換に例えば三次元要素の有無のパターンに対してポリゴンを当てはめて連続した平面を生成するMC(Marching Cubes)法のような従来の変換手法を用いた場合、そのままでは物体の曲面部分や凹凸部分が三次元要素の形状に沿って表される等、元の物体の三次元形状と異なる形状になってしまうことがある。こうした状況は、特に物体の表面を形成する形成面同士が鋭角で接続されるような物体のエッジでみられる。
【0008】
本発明は、三次元要素を用いて構成された物体の三次元形状を、ポリゴンで構成した三次元形状に変換した場合に、変換後の三次元形状において、元の物体の三次元形状におけるエッジの形状を再現することができる三次元形状データの編集装置、及び三次元形状データの編集プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
第1態様に係る三次元形状データの編集装置はプロセッサを備え、前記プロセッサは、複数の平面及び曲面の少なくとも一方の形成面を用いて構成された第1の三次元形状によって表される物体を複数の三次元要素を用いて構成した第2の三次元形状から、前記複数の形成面で表されるように変換した第3の三次元形状に対して、前記第1の三次元形状から抽出された前記物体のエッジに対応したエッジ形成面を特定し、前記第1の三次元形状で表される前記物体のエッジの形状が再現されるように、前記第3の三次元形状に対して前記エッジ形成面を構成する。
【0010】
第2態様に係る三次元形状データの編集装置はプロセッサを備え、前記プロセッサは、複数の平面及び曲面の少なくとも一方の形成面を用いて構成された第1の三次元形状によって表される物体を、複数の三次元要素を用いて構成した第2の三次元形状に関して、前記第2の三次元形状を前記形成面で表した第3の三次元形状に変換し、前記第1の三次元形状から前記物体のエッジを抽出し、変換後の前記第3の三次元形状における前記形成面の中から、抽出した前記物体のエッジに対応したエッジ形成面を特定し、前記第1の三次元形状で表される前記物体のエッジの形状が再現されるように、前記第3の三次元形状の前記エッジ形成面を構成する。
【0011】
第3態様に係る三次元形状データの編集装置は、第1態様または第2態様に係る三次元形状データの編集装置において、前記プロセッサは、前記物体のエッジと対応する前記第2の三次元形状を構成する三次元要素をエッジ三次元要素として抽出し、抽出したエッジ三次元要素から変換された前記第3の三次元形状における前記形成面を、前記エッジ形成面として特定する。
【0012】
第4態様に係る三次元形状データの編集装置は、第1態様または第2態様に係る三次元形状データの編集装置において、前記プロセッサは、前記物体のエッジから予め定めた範囲以内に存在する前記第3の三次元形状を構成する前記形成面を、前記エッジ形成面として特定する。
【0013】
第5態様に係る三次元形状データの編集装置は、第1態様または第2態様に係る三次元形状データの編集装置において、前記プロセッサは、前記物体のエッジと対応する前記第2の三次元形状を構成する三次元要素をエッジ三次元要素として抽出し、前記第2の三次元形状を前記第3の三次元形状に変換する際、抽出したエッジ三次元要素から前記形成面を構成する場合に、前記物体のエッジの形状が再現されるように、前記エッジ形成面を構成する。
【0014】
第6態様に係る三次元形状データの編集装置は、第1態様~第5態様の何れかの態様に係る三次元形状データの編集装置において、前記プロセッサは、前記第3の三次元形状の前記形成面から前記エッジ形成面を削除し、前記物体のエッジ上に配置した頂点と、前記エッジ形成面を削除した後に前記第3の三次元形状に残る、削除した前記エッジ形成面の頂点を接続することで前記エッジ形成面を再構成する。
【0015】
第7態様に係る三次元形状データの編集装置は、第1態様~第5態様の何れかの態様に係る三次元形状データの編集装置において、前記プロセッサは、前記エッジ形成面の頂点のうち、前記物体のエッジから近い位置にある頂点から順に、前記エッジ形成面の頂点を前記物体のエッジ上の位置まで移動して前記エッジ形成面を再構成する。
【0016】
第8態様に係る三次元形状データの編集装置は、第7態様に係る三次元形状データの編集装置において、前記プロセッサは、エッジが近接しているとみなされる予め定めた範囲内に前記物体のエッジが複数存在する場合、前記物体の各々のエッジに対応した前記エッジ形成面を分割し、前記物体のエッジから近い位置にある頂点から順に、分割後の前記エッジ形成面の各々の頂点を前記物体のエッジ上の位置まで移動して前記エッジ形成面を再構成する。
【0017】
第9態様に係る三次元形状データの編集装置は、第8態様に係る三次元形状データの編集装置において、前記プロセッサは、前記物体の各々のエッジ上における頂点の合計値が、前記物体の各々のエッジに対応した前記エッジ形成面の頂点の合計値より大きい場合に、前記物体の各々のエッジに対応した前記エッジ形成面を分割する。
【0018】
第10態様に係る三次元形状データの編集装置は、第7態様~第9態様の何れかの態様に係る三次元形状データの編集装置において、前記プロセッサは、前記物体のエッジ上に予め前記エッジ形成面の頂点の移動先となる頂点の位置を設定し、前記物体のエッジ上に設定した頂点毎に、当該頂点から近い位置にある前記エッジ形成面の頂点から順に、前記エッジ形成面の頂点を前記物体のエッジ上に設定した頂点の位置まで移動して前記エッジ形成面を再構成する。
【0019】
第11態様に係る三次元形状データの編集装置は、第6態様~第10態様の何れかの態様に係る三次元形状データの編集装置において、前記プロセッサは、前記物体のエッジにエッジ同士が交差するエッジ交点が存在する場合、前記エッジ交点に再構成後の前記エッジ形成面の頂点が設けられるように前記エッジ形成面を構成する。
【0020】
第12態様に係る三次元形状データの編集装置は、第11態様に係る三次元形状データの編集装置において、前記プロセッサは、外角が前記予め定めた角度以下となる前記隣り合うエッジ同士を1つの連続したエッジとして扱う。
【0021】
第13態様に係る三次元形状データの編集装置は、第6態様~第12態様の何れかの態様に係る三次元形状データの編集装置において、前記プロセッサは、前記第3の三次元形状に前記形成面の異常個所が生じないように、前記エッジ形成面を構成する。
【0022】
第14態様に係る三次元形状データの編集プログラムは、コンピュータに、複数の平面及び曲面の少なくとも一方の形成面を用いて構成された第1の三次元形状によって表される物体を複数の三次元要素を用いて構成した第2の三次元形状から、前記複数の形成面で表されるように変換した第3の三次元形状に対して、前記第1の三次元形状から抽出された前記物体のエッジに対応したエッジ形成面を特定し、前記第1の三次元形状で表される前記物体のエッジの形状が再現されるように、前記第3の三次元形状に対して前記エッジ形成面を構成させるためのプログラムである。
【0023】
第15態様に係る三次元形状データの編集プログラムは、コンピュータに、複数の平面及び曲面の少なくとも一方の形成面を用いて構成された第1の三次元形状によって表される物体を、複数の三次元要素を用いて構成した第2の三次元形状に関して、前記第2の三次元形状を前記形成面で表した第3の三次元形状に変換し、前記第1の三次元形状から前記物体のエッジを抽出し、変換後の前記第3の三次元形状における前記形成面の中から、抽出した前記物体のエッジに対応したエッジ形成面を特定し、前記第1の三次元形状で表される前記物体のエッジの形状が再現されるように、前記第3の三次元形状の前記エッジ形成面を構成させるためのプログラムである。
【発明の効果】
【0024】
第1態様、第2態様、第14態様、及び第15態様によれば、三次元要素を用いて構成された物体の三次元形状を、ポリゴンで構成した三次元形状に変換した場合に、変換後の三次元形状において、元の物体の三次元形状におけるエッジの形状を再現することができる、という効果を有する。
【0025】
第3態様によれば、三次元要素で構成された物体の三次元形状データと物体のエッジからエッジ形成面を特定することができる、という効果を有する。
【0026】
第4態様によれば、三次元要素で構成された物体の三次元形状データがない場合でも、複数の平面及び曲面の少なくとも一方の形成面で構成された物体の三次元形状データと物体のエッジからエッジ形成面を特定することができる、という効果を有する。
【0027】
第5態様によれば、三次元要素で構成された物体の三次元形状データと物体のエッジから、元の物体の三次元形状におけるエッジの形状を再現しながらエッジ形成面を構成することができる、という効果を有する。
【0028】
第6態様によれば、エッジ形成面以外の形成面の配置を変えることなく、元の物体の三次元形状におけるエッジの形状を再現することができる、という効果を有する。
【0029】
第7態様によれば、変換後の物体の三次元形状に新たな形成面を追加することなく、元の物体の三次元形状におけるエッジの形状を再現することができる、という効果を有する。
【0030】
第8態様によれば、エッジの近接状況にかかわらず、エッジ形成面の頂点の移動に関して予め定めた同じ処理を行う場合と比較して、ポリゴンで構成された元の物体の三次元形状におけるエッジの形状を精度よく再現することができる、という効果を有する。
【0031】
第9態様によれば、エッジ上における頂点の合計値と、エッジ形成面の頂点の合計値を比較することで、エッジ形成面の頂点の移動だけではエッジの形状を十分再現できない可能性があるか判別することができる、という効果を有する。
【0032】
第10態様によれば、変換後の物体の三次元形状におけるエッジ形成面の頂点の位置を設定することができる、という効果を有する。
【0033】
第11態様によれば、エッジ交点以外にエッジ形成面の頂点を設ける場合と比較して、元の物体の三次元形状におけるエッジの形状を精度よく再現することができる、という効果を有する。
【0034】
第12態様によれば、細切れに抽出されたエッジを連続した1つのエッジとして取り扱うことができる、という効果を有する。
【0035】
第13態様によれば、変換後の物体の三次元形状を、実際にポリゴンで構成可能な形状にすることができる、という効果を有する。
【図面の簡単な説明】
【0036】
【
図2】ポリゴンによって表される物体の三次元形状の一例を示す図である。
【
図3】ボクセルによって表される物体の三次元形状の一例を示す図である。
【
図4】元の物体の三次元形状の一例を示す図である。
【
図6】元の物体の断面の一例を拡大した拡大図である。
【
図7】元の物体の形状をボクセルで構成した変換前の物体における断面の一例を示す断面図である。
【
図8】元の物体と変換前の物体を重ね合わせた場合の断面の一例を示す断面図である。
【
図9】ポリゴン変換処理の流れの一例を示すフローチャートである。
【
図10】第1基準角度を160度に設定した場合に元の物体から抽出されるエッジ例を示す図である。
【
図11】第1基準角度を120度に設定した場合に元の物体から抽出されるエッジ例を示す図である。
【
図12】第1基準角度を90度に設定した場合に元の物体から抽出されるエッジ例を示す図である。
【
図14】分岐のあるエッジの統合例を示す図である。
【
図16】変換後の物体におけるエッジポリゴンの一例を示す図である。
【
図18】変換後の物体からエッジポリゴンを削除した後の状態例を示す図である。
【
図19】削除したエッジポリゴンを新たなポリゴンで再構成した例を示す図である。
【
図20】エッジの周囲に設定される規定範囲の一例を示す図である。
【
図21】分岐点を有するエッジの周囲に設定される規定範囲の一例を示す図である。
【
図22】エッジポリゴンの頂点を移動してエッジポリゴンを再構成した例を示す図である。
【
図23】複数のエッジが近接した変換後の物体の例を示す図である。
【
図24】複数のエッジが近接した様子を拡大した拡大図である。
【発明を実施するための形態】
【0037】
以下、本実施の形態について図面を参照しながら説明する。なお、同じ構成要素及び同じ処理には全図面を通して同じ符合を付与し、重複する説明を省略する。
【0038】
まず、
図1を参照して、本実施の形態に係る三次元形状データの編集装置10の構成について説明する。
【0039】
編集装置10は、例えばコンピュータ12で構成される。コンピュータ12は、プロセッサの一例であるCPU(Central Processing Unit)12A、ROM(Read Only Memory)12B、RAM(Random Access Memory)12C、不揮発性メモリ12D、及び入出力インターフェース(I/O)12Eを備える。そして、CPU12A、ROM12B、RAM12C、不揮発性メモリ12D、及びI/O12Eがバス12Fを介して各々接続されている。また、I/O12Eには、操作部14、表示部16、及び通信部18が接続されている。
【0040】
不揮発性メモリ12Dは、不揮発性メモリ12Dに供給される電力が遮断されても、記憶した情報が維持される記憶装置の一例であり、例えば半導体メモリが用いられるがハードディスクを用いてもよい。不揮発性メモリ12Dは、必ずしもコンピュータ12に内蔵されている必要はなく、例えばメモリカードのようにコンピュータ12に着脱される可搬型の記憶装置であってもよい。
【0041】
操作部14は、編集装置10のユーザから指示を受け付ける機能部であり、例えばマウス、キーボード、及びタッチパネル等の入力デバイスを含んで構成される。
【0042】
表示部16は、CPU12Aによって処理された情報を表示する機能部であり、例えば液晶ディスプレイ、及び有機EL(Electro Luminescence)ディスプレイ等の表示デバイスを含んで構成される。
【0043】
通信部18は、例えばインターネット及びLAN(Local Area Network)といった通信回線に接続され、通信回線に接続された外部装置とデータ通信を行うためのインターフェースを有する。
【0044】
図2は、三次元形状データによって表される物体2の三次元形状の一例を示す図である。
図2に示すように、編集装置10は、物体2の三次元形状をX軸、Y軸、及びZ軸によって表されるXYZ座標を用いて表す。以降では、XYZ座標を「三次元座標空間」といい、物体2の三次元形状のことを単に「物体2の形状」という。
【0045】
三次元形状データのデータフォーマットとして、例えばポリゴン4を組み合わせて物体2の表面を構成するデータフォーマットが用いられることがある。なお、ポリゴンのほか、スプライン曲面やベジェ曲面などの関数曲面を組み合わせて物体2の表面を構成するデータフォーマットを用いてもよい。
【0046】
ポリゴン4とは、物体2の形状を構成する平面または曲面の各々の形成面のことである。ポリゴン4の形状に制約はないが、例えば三角形や四角形といった多角形が用いられ、複数のポリゴン4を組み合わせることによって物体2の形状が構成される。すなわち、ポリゴン4を用いて物体2の形状を定義した三次元形状データには、例えば各々のポリゴン4の位置及び配置方向、隣り合うポリゴン4との接続に関する情報等が含まれる。以降では、物体2の三次元形状のことを単に「物体2の形状」ということにする。
【0047】
ポリゴン4を用いて物体2を定義した三次元形状データは、物体2の形状を定義するのみであり、物体2の内部構造を定義する情報を含まない。しかしながら、三次元形状データの設計上、物体2の形状だけでなく物体2の内部構造も編集装置10で定義したいといった状況が存在する。
【0048】
したがって、編集装置10は物体2の形状を、ボクセル6を用いて定義し、ボクセル6で定義された三次元形状データを編集することで物体2の内部構造を定義する機能を有する。以降では、ボクセル6で構成された物体2の三次元形状データの生成元となった、ポリゴン4で構成された物体2を「元の物体2」ということにする。
【0049】
ボクセル6とは、物体2の形状及び物体2の内部構造を構成する基本要素であり、例えば正方体が用いられるが、正方体に限らず直方体等の多面体、三角錐等の錐体、球、及び角柱等の柱体といった他の三次元要素を用いてもよい。すなわち、ボクセル6は三次元要素の一例である。
【0050】
ボクセル6を積み上げることで所望の物体2の形状が表現される。また、各ボクセル6には、例えば色、強度、材質、質感等のボクセル6の性質を表す属性を設定してもよい。ボクセル6の有無及びボクセル6の属性によって、物体2の色や材質等が表現される。
【0051】
「材質」とは、樹脂、金属、ゴム等の材料のジャンルを表す情報、ABS、PLA等の材料名を表す情報、市販されている材料の商品名、商品番号等を表す情報、ISO、JIS等の規格で定められている材料名、略称、番号等の材料を表す情報、熱伝導率、導電率、磁性等の材料特性を表す情報の少なくとも1つの情報を含む。
【0052】
また、「質感」とは、物体2の反射率、透過率、光沢、表面性状等の色だけではない物性情報や触り心地を表す属性を表す。
【0053】
上述したように、物体2の形状はボクセル6の集合によって表されるが、具体的には、例えば三次元座標空間におけるX、Y、Zの座標の要素値によって表される。
【0054】
図3は、ボクセル6によって表される物体2の形状の一例を示す図である。三次元座標空間における座標を(X、Y、Z)で表せば、座標(X、Y、Z)にボクセル6が存在する場合は例えば「(X、Y、Z)=1」とする。一方、座標(X、Y、Z)にボクセル6が存在しない場合は「(X、Y、Z)=0」とすることで、物体2の形状が表される。すなわち、ボクセル6を用いて物体2の形状を定義する三次元形状データは、ボクセル6の有無を示す座標(X、Y、Z)の要素値と、ボクセル6に対応付けられた属性を含む。
【0055】
なお、物体2の形状は、必ずしも三次元座標空間における座標(X、Y、Z)によって表される必要はなく、例えば座標(X、Y、Z)に一意に対応付けたインデックス番号で表してもよい。この場合、例えばインデックス番号に対応付けられた値が“1”であれば、インデックス番号で表される位置にボクセル6が存在することを表す。
【0056】
なお、三次元座標空間は、X、Y、Zといった3次元の直交座標に限定するものではなく、例えばrとθを用いた極座標を用いてもよい。この場合、三次元座標空間がX、Y、Zのピッチごとに1、2、3...とインデックス番号で表せるのと同様に、r、θのピッチごとにインデックス番号を対応付け、インデックス番号で表される位置に1以上の値を指定してボクセル6が存在することを表せばよい。なお、1以上の値にそれぞれ異なる形状のボクセル6を対応付けておけば、設定した値に対応する形状のボクセル6が三次元座標空間の指定した位置に配置されることになる。
【0057】
このように物体2の形状をボクセル6によって構成すれば、各ボクセル6に属性を設定することで、物体2の形状だけでなく物体2の内部構造が定義される。
【0058】
しかしながら、物体2の形状をボクセル6によって構成した場合、ポリゴン4を用いて物体2を構成した場合と比較して、構成される物体2の表面に凹凸が生じやすくなり、物体2の形状を元の物体2の形状に近づけることが困難になる。特に、物体2のエッジ8は様々な角度となるため、ボクセル6で構成された物体2におけるエッジ8の形状と元の物体2におけるエッジ8の形状の差異は他の部分に比べて顕著に表れる。以下に、この点について説明する。
【0059】
図4は、ボクセル6で構成した物体2の三次元形状データの生成元となる、ポリゴン4で構成された元の物体2の形状例を示す図である。
【0060】
図5は、
図4に示す元の物体2を平面34で切断した場合における断面の一例を表す断面図である。
図5において太線で示した箇所が元の物体2のエッジ8を示す箇所である。
【0061】
図6は、
図5に示す元の物体2の断面のうち領域24Aで示した範囲の断面を拡大して表示した拡大図である。
【0062】
これに対して、
図7は、
図4に示した元の物体2の形状をボクセル6で構成した物体2の形状において、
図5の領域24Aで示される範囲と同じ範囲の断面を拡大して表示した断面図の一例である。
図7に示すように、例えばボクセル6として立方体等の曲線を有さない三次元要素が用いられた場合、ボクセル6の大きさを小さく細分化してみたところで、曲線で表されたエッジ8の形状に近づけることはできるがエッジ8の形状を再現することはできない。エッジ8の形状を再現するとは、再現対象となるエッジ8の形状と同じ形状を表す三次元形状データを生成することである。また、例えばボクセル6として球等の曲面を有する三次元要素が用いられた場合であっても、ボクセル6の曲面における曲率が、曲線で表されたエッジ8の曲率に一致するとは限らないため、エッジ8の形状に近づけることはできるがエッジ8の形状を再現することはできない。
【0063】
また、ボクセル6で構成された物体2の三次元形状をポリゴン4で構成された三次元形状に変換するMC(Marching Cubes)法のような従来の変換手法が存在するが、物体2の表面を形成する形成面同士が鋭角で接続されるような物体2のエッジを再現することはできない。
【0064】
したがって、
図8に示すように、
図7に示したボクセル6で構成された物体2の形状をポリゴン4で構成された三次元形状に変換した場合、領域24Bにおける元の物体2のエッジ8の形状と、当該エッジ8に対応するポリゴン4で構成された物体2の形状には差異が生じることになる。なお、
図8におけるエッジ8は、
図6に示した元の物体2のエッジ8を示している。
【0065】
これに対して、例えば元の物体2の三次元形状データ、及び元の物体2の三次元形状データから作成した、ボクセル6で構成した物体2の三次元形状データを共に編集装置10の不揮発性メモリ12Dに記憶しておけば、物体2の形状を表す場合にはポリゴン4で構成した元の物体2の三次元形状データを使用し、物体2の内部構造を表す場合にはボクセル6で構成した物体2の三次元形状データを使用するというように、用途にあわせて最適な三次元形状データを利用できる。
【0066】
しかしながら、この場合には同じ物体2に対して2種類の三次元形状データを不揮発性メモリ12Dに記憶しておく必要があり、何れか一方の三次元形状データを不揮発性メモリ12Dに記憶しておく場合と比較して、記憶するデータ量が増大する。また、一方の三次元形状データを用いて物体2の形状を編集装置10で編集した場合、もう一方の三次元形状データで表される物体2の形状も連動して編集しなければならず、複雑な処理が必要となる。
【0067】
したがって、以降では、ボクセル6で構成した物体2の三次元形状データのみを不揮発性メモリ12Dに記憶し、ボクセル6で構成した三次元形状データをポリゴン4で定義した三次元形状データに変換しても、元の物体2におけるエッジ8の形状を再現する編集装置10の処理について説明する。
【0068】
図9は、ボクセル6を用いて構成された元の物体2の形状及び内部構造を表す三次元形状データを、ポリゴン4を用いて定義した三次元形状データに変換する場合に、編集装置10のCPU12Aによって実行されるポリゴン変換処理の流れの一例を示すフローチャートである。
【0069】
なお、以降では説明の便宜上、ボクセル6を用いて構成した、元の物体2の形状及び内部構造を表す三次元形状データによって表される物体2を「変換前の物体2」といい、変換前の物体2を表す三次元形状データを変換することによって得られる、ポリゴン4を用いて構成した物体2を「変換後の物体2」ということにする。また、編集装置10のRAM12Cには、元の物体2の三次元形状データが記憶されているものとする。元の物体2の三次元形状データは、
図9に示すポリゴン変換処理のステップS10が終了した時点でRAM12Cから削除してもよい。または、元の物体2の三次元形状データから予めエッジ8を抽出してRAM12Cに記憶しておけば、
図9に示すポリゴン変換処理に元の物体2の三次元形状データは必要なくなるため、ポリゴン変換処理のステップS10は不要となる。
【0070】
図9に示すポリゴン変換処理を規定する編集プログラムは、例えば編集装置10のROM12Bに予め記憶されている。編集装置10のCPU12Aは、ROM12Bに記憶される編集プログラムを読み込み、ポリゴン変換処理を実行する。
【0071】
ステップS10において、CPU12Aは、元の物体2からエッジ8を抽出する。具体的には、CPU12Aは、元の物体2の隣り合うポリゴン4が形成する角度のうち、元の物体2の内部にある内角が第1基準角度以下となる箇所を元の物体2のエッジ8とみなして抽出する。
【0072】
第1基準角度として、例えば140度から160度までの範囲の角度が用いられるがこれに限定されず、ユーザがエッジ8の抽出結果を確認しながら操作部14を操作して、ユーザの注目するエッジ8が抽出されるように第1基準角度を変更するようにしてもよい。また、ユーザが指定した箇所にある元の物体2におけるエッジ8の角度を、CPU12Aが元の物体2の三次元形状データから算出し、算出したエッジ8の角度を第1基準角度として設定してもよい。また、CPU12Aは元の物体2の三次元形状データを用いて、元の物体2を構成する各々のポリゴン4が形成する角度の分布及び角度の偏差の少なくとも一方を算出して第1基準角度を設定してもよい。具体的には、例えば角度を計測した箇所のうち、角度が大きくなる方向に向かって全体のX%(Xは正の実数)の箇所が含まれるような角度や、偏差がZ(Zは実数)となるような角度を第1基準角度として設定してもよい。
【0073】
更に、CPU12Aは、元の物体2におけるユーザが指定した範囲毎に第1基準角度を設定し、各々の範囲に設定した第1基準角度に従って各々の範囲毎にエッジ8を抽出してもよい。ユーザが範囲を指定しない場合には、CPU12Aは、八分木(オクトツリー)を用いて元の物体2を分割してもよく、また、元の物体2を構成する各々のポリゴン4が形成する角度の分布を複数のグループに分割し、分割したグループに含まれる角度を有する箇所の集合を元の物体2の分割範囲としてもよい。
【0074】
図10~
図12は、
図4に示した元の物体2からエッジ8を抽出した抽出結果の一例を示す図である。このうち、
図10は、第1基準角度を160度に設定した場合に抽出されるエッジ8の例を示し、
図11は、第1基準角度を120度に設定した場合に抽出されるエッジ8の例を示す。また、
図12は、第1基準角度を90度に設定した場合に抽出されるエッジ8の例を示す。第1基準角度を小さく設定していくにつれて、抽出されるエッジ8が少なくなり、より角度が急峻に変化するエッジ8だけが抽出されるようになる。
【0075】
しかしながら、元の物体2が、複数のエッジ8が交差したり、エッジ8の曲率が連続的に変化したりするような複雑な形状である場合、連続したエッジ8が細切れに抽出されることがある。
【0076】
したがって、ステップS20において、CPU12AはステップS10で抽出したエッジ8のうち、本来は連続するエッジ8であると推定されるエッジ8同士を統合する。
【0077】
具体的には、CPU12Aは、隣り合うエッジ8によって形成される外角が予め設定される第2基準角度以下で交差する場合に、当該隣り合うエッジ8は本来1つの連続したエッジ8を形成していたものとみなして統合する。
【0078】
ここで、隣り合うエッジ8によって形成される外角とは、隣り合うエッジ8を延長した延長線によって元の物体2の外部に形成される角度のことである。また、第2基準角度とは、隣り合うエッジ8が1つの連続したエッジ8であるか否かを判定するための基準となる角度である。
【0079】
第2基準角度も第1基準角度と同様に、設定される値に限定はなく、ユーザがエッジ8の統合結果を確認しながら操作部14を操作して、ユーザの注目するエッジ8が期待通りに統合されるように第2基準角度を変更するようにしてもよい。また、第2基準角度も第1基準角度と同様に、CPU12Aは、ユーザが指定した隣り合うエッジ8の外角を第2基準角度として設定してもよく、また、各々の隣り合うエッジ8が形成する外角の分布及び外角の偏差の少なくとも一方を用いて第2基準角度を設定してもよい。更に、CPU12Aは、元の物体2におけるユーザが指定した範囲毎に第2基準角度を設定し、各々の範囲に設定した第2基準角度に従って各々の範囲毎にエッジ8を統合してもよい。
【0080】
図13は、抽出されたエッジ8の統合について説明した図である。
図13において、エッジ8-1、エッジ8-2、エッジ8-3、及びエッジ8-4はそれぞれ異なるエッジ8としてCPU12Aに抽出されたエッジ8である。説明の便宜上、エッジ8を区別して説明する必要がある場合には、
図13に示すように各々のエッジ8に対して“-N(Nは正の整数)”の副参照符号を割り当てる。
【0081】
エッジ8-1とエッジ8-2によって形成される外角α1、及び、エッジ8-3とエッジ8-4によって形成される外角α2は共に第2基準角度以下であり、エッジ8-2とエッジ8-3によって形成される外角α3は第2基準角度より大きい角度とする。この場合、エッジ8-1とエッジ8-2がエッジグループ8Aを形成して1つの連続したエッジ8として統合され、エッジ8-3とエッジ8-4がエッジグループ8Bを形成して1つの連続したエッジ8として統合される。このようにエッジ8同士の接続点をエッジ8の交点という
【0082】
なお、
図14に示すように、形成される外角が第2基準角度以下で隣り合うエッジ8が分岐する場合、CPU12Aは連続するエッジ8として、分岐するエッジ8のどちらを選択してもよい。
図14の例で説明すれば、エッジ8-2に外角が共に第2基準角度以下で隣り合うエッジ8-3とエッジ8-5が存在する場合、CPU12Aは、エッジ8-5をエッジ8-2と同じエッジグループ8Cに含めてもよく、エッジ8-3をエッジ8-2と同じエッジグループ8Dに含めてもよい。
【0083】
分岐するエッジ8のどちらを1つの連続するエッジ8として選択するかを決定する選択方法としては、例えば先に外角が第2基準角度以下であると判定した方のエッジ8を選択する選択方法、分岐するエッジ8のうち、最もエッジ8の長さが長くなるエッジ8を選択する選択方法、及び分岐するエッジ8のうち、形成される外角が最も小さいエッジ8を選択する選択方法等が用いられる。
【0084】
ステップS30において、CPU12Aは、ステップS20で統合したエッジ8と変換前の物体2を重ね合わせ、変換前の物体2を構成するボクセル6から、エッジ8と対応する全てのボクセル6を抽出する。
【0085】
エッジ8と対応するボクセル6とは、変換前の物体2において元の物体2のエッジ8を表すボクセル6のことであり、例えばエッジ8が接触するボクセル6、及びエッジ8が内部を通過するボクセル6のことをいう。エッジ8がボクセル6の内部を通過するとは、エッジ8がボクセル6を貫通する状態だけでなく、エッジ8の端点がボクセル6の内部に留まるような状態も含む。また、直接エッジ8がボクセル6と接触または通過していなくてもよく、例えばエッジ8が接触、または通過しているボクセル6から予め定めた範囲内に含まれるボクセル6も、エッジ8と対応するボクセル6として扱ってもよい。具体的にはエッジ8が接触、または通過しているボクセル6から連続するM(Mは自然数)個のボクセルまでの範囲(M近傍という)に含まれるボクセル6を、エッジ8と対応するボクセル6とする。なお、値Mはユーザが設定すればよい。
【0086】
エッジ8とボクセル6の接触及び通過判定には、公知の距離計測方法や交差判定方法が用いられる。例えばCPU12Aはエッジ8上に、変換前の物体2を構成する隣り合うボクセル6の中心間の距離(ボクセルピッチ)以下の間隔で点を発生させ、発生させた点とボクセル6の位置関係から、エッジ8がボクセル6と接触または通過していると判定すればよい。
【0087】
この場合、CPU12Aはボクセル6のサイズを実際のサイズより大きいものと想定して、エッジ8がボクセル6に接触または通過しているかを判定してもよい。または、ボクセル6の中心からエッジ8までの距離が、例えばボクセルピッチの半分というように予め定めた閾値以下の場合に、エッジ8がボクセル6に接触または通過していると判定してもよい。または、エッジ8のベクトルと、始点を同じくするボクセル6の各頂点までのベクトルとの内積を演算し、内積の符号が一致しているか否かにより、エッジ8がボクセル6に接触または通過しているかを判定してもよい。
【0088】
以降では、変換前の物体2を構成するボクセル6のうち、エッジ8と対応するボクセル6のことを特に「エッジボクセル6A」ということにする。エッジボクセル6Aは、エッジ三次元要素の一例である。
【0089】
図15は、エッジボクセル6Aの一例を示す図である。上述したように、エッジ8と対応するボクセル6がエッジボクセル6Aとなる。
【0090】
ステップS40において、CPU12Aは、ボクセル6で構成された変換前の物体2を表す三次元形状データを、ポリゴン4で構成した三次元形状データに変換する。この変換を「ポリゴン変換」といい、変換によって生成された三次元形状データによって表される物体2が変換後の物体2である。
【0091】
ポリゴン変換には、例えばボクセル6の有無のパターンに対してポリゴン4を当てはめて連続した平面を生成するMC(Marching Cubes)法のような公知の変換手法が用いられる。CPU12Aはポリゴン変換を実行する場合、変換後の物体2を構成するポリゴン4が、変換前の物体2を構成する何れのボクセル6から変換されたものであるのかを示す、ポリゴン4とボクセル6の対応情報を生成する。
【0092】
ステップS50において、CPU12Aは生成した対応情報を参照して、変換後の物体2を構成するポリゴン4のうち、エッジボクセル6Aから変換されたポリゴン4(以降、「エッジポリゴン4A」という)を特定する。エッジポリゴン4Aは、エッジ形成面の一例である。
【0093】
図16は、変換後の物体2におけるエッジポリゴン4Aの一例を示す図である。
図16に示すように、エッジポリゴン4Aがエッジ8に沿って特定されていることがわかる。
【0094】
ステップS60において、CPU12Aは、ステップS40で生成した変換後の物体2を構成するポリゴン4から、ステップS50で特定したエッジポリゴン4Aを削除する。
【0095】
図18は、
図17に示すような変換後の物体2からエッジポリゴン4Aを削除した後の状態を示す図である。
図18の領域24Cが、エッジポリゴン4Aを削除した箇所に相当する。
【0096】
ステップS70において、CPU12Aは、エッジ8上に複数の点を配置し、エッジ8上に配置した点と、ステップS60で削除したエッジポリゴン4Aの頂点22があった位置とを接続する新たなポリゴン4を配置することで、変換後の物体2のエッジポリゴン4Aを再構成する。
【0097】
エッジ8上に配置する各々の点には新たに配置するポリゴンAの頂点が置かれることから、エッジ8上に配置する各々の点をエッジ頂点30という。また、削除したエッジポリゴン4Aの頂点22があった点とは、エッジポリゴン4Aを削除した後に変換後の物体2に残る、削除したエッジポリゴン4Aと頂点を共有した隣り合うポリゴン4の頂点の位置によって表される。以降では、削除したエッジポリゴン4Aの頂点22があった位置のことを、削除したエッジポリゴン4Aの頂点22という。
【0098】
CPU12Aは、一例としてエッジ頂点30の間隔をボクセルピッチに設定するが、エッジ頂点30の間隔はこれに限らない。変換後の物体2を構成するポリゴン4の数を減らしたい場合には、エッジ頂点30の間隔をボクセルピッチより長く設定し、エッジ8の形状を精度よく再現する場合には、エッジ頂点30の間隔をボクセルピッチより短く設定すればよい。
【0099】
1つのエッジ8が複数のエッジ8に分岐するエッジ8の分岐点は、物体2の形状がそれまでとは異なる形状に変化を始める位置と言える。したがって、CPU12Aはエッジ8の分岐点が存在する場合には、エッジ8の分岐点にエッジ頂点30を配置する。これにより、エッジ8の分岐点にエッジ頂点30を配置しなかった場合と比較して、変換後の物体2におけるエッジ8の形状が精度よく再現されることになる。また、同様の理由により、CPU12Aは、エッジ8の分岐点に限らず、エッジ8の交点にエッジ頂点30を配置することが好ましい。
【0100】
なお、CPU12Aはエッジ8の形状を再現するにあたり、新たに配置したポリゴン4が交差、反転、または重複する場合、新たなポリゴン4の配置を一旦中止して、新たな配置したポリゴン4が交差、反転、または重複しないように、エッジ頂点30の間隔を調整してもよく、また、新たに配置するポリゴン4の頂点の配置先を別のエッジ頂点30に変更してもよい。更に、CPU12Aは、新たに配置するポリゴン4の配置順を変えてもよい。
【0101】
ポリゴン4の交差、反転、または重複の判定は、例えばBentley-Ottmann法やShamos-Hoey法といった公知の判定方法を用いればよく、CPU12Aは、変換後の物体2の表面に隙間がなくなるまで、ポリゴン4の交差、反転、または重複が起きないようにエッジ8を形成するポリゴン4を繰り返し配置して、エッジポリゴン4Aの再構成を行う。
【0102】
新たに配置したポリゴン4の交差、反転、重複、及び変換後の物体2の表面に現れる隙間は変換後の物体2における異常個所の一例であり、換言すれば、CPU12Aは、変換後の物体2に異常個所が生じないようにエッジポリゴン4Aを構成する。
【0103】
図19は、
図18で示したような削除したエッジポリゴン4Aを、新たなポリゴン4で再構成した例を示す図である。CPU12Aが変換後の物体2に異常個所がなくなるまでエッジポリゴン4Aの再構成をやり直すことで、元の物体2のエッジ8の形状が再現されることになる。
【0104】
以上により、
図9に示したポリゴン変換処理を終了する。なお、上述したポリゴン変換では、一度ポリゴン4に変換した後にエッジポリゴン4Aを特定し、エッジポリゴン4Aを一度削除した後に、新たなエッジポリゴン4Aを再構成した。しかしながら、ポリゴン変換処理はこれに限定されるものではなく、
図9のステップS40で、ボクセル6で構成された変換前の物体2を表す三次元形状データをポリゴン4で構成した三次元形状データに変換する際に、変換後のポリゴン4がエッジポリゴン4Aであるか否かを変換前に予め判定し、エッジポリゴン4であると判定された箇所ではポリゴン4への変換を行わないようにすることで、予めエッジポリゴン4Aが削除された三次元形状データが得られるため、エッジポリゴン4Aを後から削除する処理が不要となる。
【0105】
また、予めステップS70で生成されるようなエッジポリゴン4Aを生成し、
図9のステップS40が終了した時点で
図9のステップS50、S60、S70が終了しているような処理を行ってもよい。以上のように、処理には様々な変形例が存在する。
【0106】
<変形例1>
図9に示したポリゴン変換処理では、CPU12AがステップS30でエッジボクセル6Aを抽出し、ポリゴン4とボクセル6の対応情報に基づいて、変換後の物体2を構成するポリゴン4の中からエッジボクセル6Aに対応するエッジポリゴン4Aを特定した。
【0107】
しかしながら、エッジポリゴン4Aを特定するために、必ずしも変換前の物体2の三次元形状データが必要になるとは限らない。
【0108】
例えばCPU12Aは、
図9のステップS50において、エッジ8から規定範囲以内に存在する変換後の物体2のポリゴン4をエッジポリゴン4Aとして特定してもよい。
【0109】
図20は、エッジ8に対して設定される規定範囲の一例を示す図である。エッジ8-1、エッジ8-2、エッジ8-3、及びエッジ8-4を統合したエッジ8が存在する場合、それぞれエッジ8-1、エッジ8-2、エッジ8-3、及びエッジ8-4を中心軸とみなした半径r(rは実数で、規定範囲に対応した距離を示す)の複数の円柱20と、エッジ8の交点を中心とした半径rの複数の球32によって表される範囲が規定範囲となる。すなわち、規定範囲以内にポリゴン4が存在するとは、ポリゴン4が少しでもエッジ8を取り囲むように仮想的に設定した円柱20若しくは球32と接触または交差する状態をいう。
【0110】
ポリゴン4が規定範囲内に存在するか否かの判定には、公知の距離計測方法や交差判定方法が用いられる。例えばCPU12Aはエッジ8上にボクセルピッチと規定範囲に対応した距離のうち何れか短い方の距離以下の間隔で点を発生させ、発生させた点とポリゴン4の位置関係から、変換後の物体2のポリゴン4が規定範囲以内に存在するか否かを判定すればよい。
【0111】
なお、
図20に示した例ではエッジ8の各交点に球32を設定したが、エッジ8の交点の中でも、外角が第2基準角度を超えるため他の交点よりも隣り合う円柱20との間に隙間が空きやすいエッジ8の分岐点だけに球32を設定してもよい。
【0112】
例えば
図21は、エッジ8-1、エッジ8-2、エッジ8-3、及びエッジ8-4によって形成されるエッジ8の分岐点の一例を示す図である。
図21に示すようなエッジ8が存在する場合、エッジ8の分岐点に設定された球32と、エッジ8-1、エッジ8-2、エッジ8-3、及びエッジ8-4を取り囲むように設定された円柱20によって規定範囲が示されることになる。
【0113】
CPU12Aは、例えば不揮発性メモリ12Dに予め記憶されている規定範囲に対応した距離を参照して規定範囲を設定すればよいが、ユーザがCPU12Aによって特定されるエッジポリゴン4Aを確認しながら規定範囲を変更してもよい。また、CPU12Aは、統合された各々のエッジ8の長さ、統合されたエッジ8の数、並びに、隣り合うエッジ8によって形成される外角の分布及び外角の偏差の少なくとも1つから規定範囲に対応した距離を設定してもよい。
【0114】
このように設定した規定範囲を用いれば、エッジ8と変換後の物体2を構成するポリゴン4との位置関係からエッジポリゴン4Aが特定される。したがって、
図9に示したポリゴン変換処理において、変換前の物体2からエッジボクセル6Aを抽出するステップS30の処理は不要となり、変換後の物体2を構成するポリゴン4と変換前の物体2を構成するボクセル6の対応関係を示す対応情報の生成も不要となる。
【0115】
<変形例2>
図9に示したポリゴン変換処理では、CPU12AがステップS60で変換後の物体2からエッジポリゴン4Aを削除し、ステップS70で削除したエッジポリゴン4Aに代わる新たなポリゴン4をエッジ8に沿って配置することでエッジポリゴン4Aを再構成し、エッジ8の形状を再現した。
【0116】
しかしながら、変換後の物体2においてエッジ8の形状を再現する方法はこれに限られない。以下では、変換後の物体2からエッジポリゴン4Aを削除することなくエッジポリゴン4Aを再構成して、元の物体2のエッジ8の形状を再現する方法について説明する。
【0117】
当該変形例の場合、
図9に示したポリゴン変換処理において、CPU12AはステップS50で変換後の物体2からエッジポリゴン4Aを特定した後、ステップS60を実行することなくステップS70に移行する。
【0118】
ステップS70において、CPU12Aは、ステップS50で特定したエッジポリゴン4Aの頂点22のうち、エッジ8から近い位置にあるエッジポリゴン4Aの頂点22から順に、変換後の物体2に異常個所が発生しないようにエッジポリゴン4Aの頂点22をエッジ8上の位置まで移動させる。これにより、エッジポリゴン4Aが再構成され、元の物体2におけるエッジ8の形状が再現される。
【0119】
例えばエッジ8上におけるエッジポリゴン4Aの頂点22の移動先を、単に移動するエッジポリゴン4Aの頂点22の位置から最短距離にあるエッジ8上の位置にしてしまうと、エッジポリゴン4Aの交差、反転、及び重複が発生しやすくなる。したがって、CPU12Aは、変換後の物体2に異常個所が発生しないようにエッジポリゴン4Aの頂点22の移動先を調整する。
【0120】
また、CPU12Aは、エッジ8上に予めエッジポリゴン4Aの頂点22の移動先の候補となるエッジ頂点30を設定し、ステップS50で特定したエッジポリゴン4Aの頂点22のうち、エッジ8から近い位置にあるエッジポリゴン4Aの頂点22から順にエッジ頂点30まで移動させてもよい。なお、エッジポリゴン4Aを構成する3つの頂点のうち、複数の頂点が同じエッジ頂点30に移動した場合には、そのエッジポリゴン4Aは不要であるとして取り除くことができる。
【0121】
図22は、エッジポリゴン4Aの頂点22をエッジ8上に設定したエッジ頂点30に移動して、エッジポリゴン4Aを再構成する例を示した図である。このようにエッジポリゴン4Aの頂点22を、エッジポリゴン4Aの頂点22から最も近い位置にあるエッジ頂点30に移動して変換後の物体2の形状を変形させることで、元の物体2のエッジ8の形状が再現される。
【0122】
なお、CPU12Aはエッジ8の形状を再現するにあたり、エッジポリゴン4Aの頂点22をエッジ8上に移動させることでエッジポリゴン4Aが交差、反転、または重複する場合、エッジポリゴン4Aの頂点22の移動を一旦中止して、エッジポリゴン4Aが交差、反転、または重複しないように、エッジ頂点30の間隔や数、エッジポリゴン4Aの頂点22の移動順、及びエッジポリゴン4Aの頂点22の移動先となるエッジ頂点30の少なくとも1つを変更する調整を行う。
【0123】
ポリゴン4の交差、反転、または重複の判定は、例えばBentley-Ottmann法やShamos-Hoey法といった公知の判定方法を用いればよく、CPU12Aは、変換後の物体2の表面に隙間がなくなるまで、ポリゴン4の交差、反転、または重複が起きないようにエッジポリゴン4Aの頂点22をエッジ8上に移動してエッジポリゴン4Aの再構成を行う。
【0124】
なお、元の物体2の形状によっては、
図23に示すように複数のエッジ8が近接して抽出されることがある。エッジ8が近接しているとは、エッジ8同士が近づいて、この範囲内に含まれれば近接しているとみなす予め定めた範囲内に複数のエッジ8が含まれることをいう。以降、エッジ8の近接判定に用いる予め定めた範囲のことを「近接範囲」ということにする。
【0125】
複数のエッジ8が近接していると、各々のエッジ8に対して同じポリゴン4がエッジポリゴン4Aとして特定されることがあるため、複数のエッジ8が近接していない場合に得られるエッジポリゴン4Aの数より減少することがある。その上、複数のエッジ8が近接しているということは、1つのエッジ8で形成される形状よりも複雑な形状を表していることになる。したがって、エッジポリゴン4Aの頂点22をエッジ8上に移動させても、移動させるエッジポリゴン4Aの頂点22の数が不足していることで、構成可能なエッジ8の形状に制約が発生し、元の物体2におけるエッジ8の形状が再現されないことがある。
【0126】
このような場合、CPU12Aは、特定したエッジポリゴン4Aを分割してエッジポリゴン4Aの数を増やしてから、変換後の物体2に異常個所が発生しないように、エッジポリゴン4Aの頂点22を何れかのエッジ8に移動させる。
【0127】
エッジポリゴン4Aを分割するか否かの判定に関して、CPU12Aは、近接範囲における各エッジ8のエッジ頂点30の合計値が同じ近接範囲内におけるエッジポリゴン4Aの頂点22の合計値より大きい場合に、現在あるエッジポリゴン4Aの頂点22の移動だけでは元の物体2におけるエッジ8の形状が再現されないと捉え、エッジポリゴン4Aを分割する必要があると判定する。
【0128】
なお、CPU12Aは、エッジ頂点30の合計値またはエッジポリゴン4Aの頂点22の合計値の少なくとも一方に重み係数を乗じた上で、エッジ頂点30の合計値とエッジポリゴン4Aの頂点22の合計値を比較してもよい。例えばCPU12Aは、エッジ8の形状を精度よく再現したい箇所では、エッジ頂点30の合計値に重み係数として“1”より大きい値を乗じる。この場合、重み係数を乗じない場合と比較して、エッジポリゴン4Aを分割した方がよいと判定される確率が上昇するため、重み係数を乗じない場合よりもエッジ8の形状が精度よく再現されることになる。
【0129】
図24は、
図23において2つのエッジ8が近接した領域24Dの範囲を拡大した図である。
図24に示すように、2つのエッジ8には例えばボクセルピッチでエッジ頂点30が設定されており、各々のエッジ8の周囲にはエッジポリゴン4Aが存在する。
【0130】
CPU12Aは、エッジポリゴン4Aを分割する必要があると判定した場合、
図25に示すようにエッジポリゴン4Aを分割して、従来からあるエッジポリゴン4Aの頂点22に加えて、分割により新たに生成されたエッジポリゴン4Aの頂点22Aを生成する。エッジポリゴン4Aの頂点22が増加したことで、エッジポリゴン4Aの頂点22の移動のバリエーションが増えるため、元の物体2におけるエッジ8の形状が精度よく再現されることになる。
【0131】
なお、CPU12Aはエッジポリゴン4Aを分割する場合、すべてのエッジポリゴン4Aを分割するのではなく、例えば面積の大きいエッジポリゴン4Aから順に分割し、エッジポリゴン4Aの頂点22の合計値がエッジ頂点30の合計値以上となった時点で、エッジポリゴン4Aの分割を中止するようにしてもよい。具体的には、CPU12Aは、エッジポリゴン4Aの頂点22の合計値がエッジ頂点30の合計値以上となり、かつ、近接範囲に含まれるエッジポリゴン4Aのうち、分割するエッジポリゴン4Aの割合が予め定めた割合に達した時点で、エッジポリゴン4Aの分割を中止するようにしてもよい。分割するエッジポリゴン4Aの割合はユーザが設定しても、エッジポリゴン4Aの数とエッジ頂点30の数の割合から求めてもよい。また、エッジポリゴン4Aの頂点22の合計数をエッジ頂点30の合計値と比較する際に用いる重み係数を分割前のエッジポリゴン4Aの数に乗じた値を、当該割合の分母に設定してもよい。また、近接範囲に含まれるエッジ8の数に応じて予め定めた割合を用いてもよい。
【0132】
このようにエッジポリゴン4Aを必要以上に分割することを抑制することで、エッジポリゴン4Aの再構成に要する時間が短縮される。
【0133】
編集装置10は、
図9に示したポリゴン変換処理のステップS10で元の物体2からエッジ8を抽出したが、必ずしも編集装置10で元の物体2からエッジ8を抽出する必要はなく、他の装置が元の物体2から抽出したエッジ8に関する情報を受け付けるようにしてもよい。また、編集装置10は、
図9に示したポリゴン変換処理のステップS40で、ボクセル6で構成された変換前の物体2の三次元形状データをポリゴン4で構成した三次元形状データに変換したが、必ずしも編集装置10で当該変換を行う必要はなく、他の装置でポリゴン4に変換された三次元形状データを受け付けるようにしてもよい。
【0134】
編集装置10は、変換前の物体2を表すボクセル6で定義された三次元形状データがない場合であっても、ポリゴン4に変換された三次元形状データを外部の装置から受け付けて、<変形例1>に示した手法によりエッジポリゴン4Aを特定することで、元の物体2におけるエッジ8の形状を再現するようなエッジポリゴン4Aの再構成が可能となる。
【0135】
以上、実施の形態を用いて本発明について説明したが、本発明は実施の形態に記載の範囲には限定されない。本発明の要旨を逸脱しない範囲で実施の形態に多様な変更または改良を加えることができ、当該変更または改良を加えた形態も本発明の技術的範囲に含まれる。例えば、本発明の要旨を逸脱しない範囲で処理の順序を変更してもよい。
【0136】
実施の形態では、一例としてポリゴン変換処理をソフトウェアで実現する形態について説明したが、
図9に示したフローチャートと同等の処理を、例えばASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、またはPLD(Programmable Logic Device)に実装し、ハードウェアで処理させるようにしてもよい。この場合、ポリゴン変換処理をソフトウェアで実現する場合と比較して処理の高速化が図られる。
【0137】
このように、汎用的なプロセッサの一例であるCPU12Aを、例えばASIC、FPGA、PLD、GPU(Graphics Processing Unit)、及びFPU(Floating Point Unit)といった特定の処理に特化した専用のプロセッサに置き換えてもよい。
【0138】
また、実施の形態におけるプロセッサの動作は、1つのCPU12Aによって実現されるのではなく、複数のプロセッサによって実現されるものであってもよい。更に、実施の形態におけるプロセッサの動作は、物理的に離れた位置に存在する複数のコンピュータ12に含まれるプロセッサが協働して実現するものであってもよい。
【0139】
上述した実施の形態では、三次元形状データの編集プログラムがROM12Bにインストールされている形態を説明したが、これに限定されるものではない。三次元形状データの編集プログラムは、コンピュータで読み取り可能な記憶媒体に記録された形態で提供することも可能である。例えば三次元形状データの編集プログラムを、CD(Compact Disc)-ROM、またはDVD(Digital Versatile Disc)-ROM等の光ディスクに記録した形態で提供してもよい。また、三次元形状データの編集プログラムを、例えばUSB(Universal Serial Bus)メモリやメモリカードといった可搬型の半導体メモリに記録した形態で提供してもよい。
【0140】
更に、編集装置10は通信部18を通じて、通信回線に接続された外部装置から本実施の形態に係る三次元形状データの編集プログラムを取得するようにしてもよい。
【符号の説明】
【0141】
2 物体、4 ポリゴン、4A エッジポリゴン、6 ボクセル、6A エッジボクセル、8 エッジ、8A(8B、8C、8D) エッジグループ、10 編集装置、12 コンピュータ、12A CPU、12B ROM、12C RAM、12D 不揮発性メモリ、14 操作部、16 表示部、18 通信部、20 円柱、22(22A) エッジポリゴンの頂点、24A(24B、24C、24D) 領域、30 エッジ頂点、32 球、34 平面、r 半径