(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-03-25
(45)【発行日】2024-04-02
(54)【発明の名称】三次元形状データの編集装置、及び三次元形状データの編集プログラム
(51)【国際特許分類】
G06T 17/10 20060101AFI20240326BHJP
【FI】
G06T17/10
(21)【出願番号】P 2019149096
(22)【出願日】2019-08-15
【審査請求日】2022-07-21
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】高橋 智也
【審査官】橘 高志
(56)【参考文献】
【文献】特開2019-106177(JP,A)
【文献】特表2002-538915(JP,A)
【文献】佐川 立昌,光学的情報付き距離画像のロバストな適応的統合,電子情報通信学会論文誌 (J85-D-II) 第12号,第J85-D-II巻 第12号,日本,社団法人電子情報通信学会,2002年12月01日,1781~1790
(58)【調査した分野】(Int.Cl.,DB名)
G06T 17/10
(57)【特許請求の範囲】
【請求項1】
プロセッサを備え、
前記プロセッサは、三次元形状の表面を複数の平面及び曲面の少なくとも一方の形成面を用いて構成された三次元形状データに基づいて、複数に分割された三次元の領域毎に、前記領域の予め定めた場所から前記形成面で構成された物体の三次元形状の前記形成面までの距離を設定
し、
前記予め定めた場所から前記距離で表される位置にある前記形成面が、前記距離の計測点となる前記予め定めた場所を含む前記領域に干渉している場合、前記形成面が干渉している前記領域に三次元要素を配置し、前記形成面で構成された前記物体の三次元形状を、三次元要素で構成された三次元形状に変換する
三次元形状データの編集装置。
【請求項2】
前記プロセッサは、前記領域の各々に、前記領域の性質を表す属性を設定する
請求項
1記載の三次元形状データの編集装置。
【請求項3】
前記プロセッサは、三次元要素が配置された前記領域の各々に、前記領域の性質を表す属性を設定する
請求項
1記載の三次元形状データの編集装置。
【請求項4】
前記プロセッサは、三次元の前記領域毎の前記属性を参照し、前記属性が三次元要素の配置を不要とする予め定めた条件を満たす場合、前記予め定めた条件を満たす前記属性が設定された前記領域に三次元要素を配置しないようにする
請求項
2記載の三次元形状データの編集装置。
【請求項5】
前記プロセッサは、前記領域に設定された前記距離を変更することで、三次元要素で構成された前記物体の三次元形状、及び前記三次元要素で構成された三次元形状から前記形成面を用いて構成した新たな三次元形状の少なくとも一方を変形する
請求項1~請求項
4の何れか1項に記載の三次元形状データの編集装置。
【請求項6】
プロセッサを備え、
前記プロセッサは、三次元形状の表面を複数の平面及び曲面の少なくとも一方の形成面を用いて構成された三次元形状データに基づいて、複数に分割された三次元の領域毎に、前記領域の予め定めた場所から前記形成面で構成された物体の三次元形状の前記形成面までの距離を設定し、
前記領域に設定された前記距離を変更することで、三次元要素で構成された前記物体の三次元形状、及び前記三次元要素で構成された三次元形状から前記形成面を用いて構成した新たな三次元形状の少なくとも一方を変形する
三次元形状データの編集装置。
【請求項7】
前記プロセッサは、前記予め定めた場所から前記距離で表される位置にある前記形成面が、前記距離の計測点となる前記予め定めた場所を含む前記領域に干渉している場合、前記形成面が干渉している前記領域に三次元要素を配置し、前記形成面で構成された前記物体の三次元形状を、三次元要素で構成された三次元形状に変換する
請求項6記載の三次元形状データの編集装置。
【請求項8】
前記プロセッサは、前記領域の各々に、前記領域の性質を表す属性を設定する
請求項7記載の三次元形状データの編集装置。
【請求項9】
前記プロセッサは、三次元要素が配置された前記領域の各々に、前記領域の性質を表す属性を設定する
請求項7記載の三次元形状データの編集装置。
【請求項10】
前記プロセッサは、三次元の前記領域毎の前記属性を参照し、前記属性が三次元要素の配置を不要とする予め定めた条件を満たす場合、前記予め定めた条件を満たす前記属性が設定された前記領域に三次元要素を配置しないようにする
請求項8記載の三次元形状データの編集装置。
【請求項11】
前記プロセッサは、前記領域に設定された前記距離に対して値を加算、減算、乗算、除算、置換、及び比較の少なくとも1種の演算をすることで、三次元要素で構成された前記物体の三次元形状及び前記三次元要素で構成された三次元形状から前記形成面を用いて構成した新たな三次元形状の少なくとも一方を変形する
請求項
5~請求項10の何れか1項に記載の三次元形状データの編集装置。
【請求項12】
前記プロセッサは、前記領域の性質を表す属性に応じて、前記値を変化させる
請求項
11記載の三次元形状データの編集装置。
【請求項13】
前記プロセッサは、形状の異なる前記物体の三次元形状を含む前記領域に設定された前記距離を前記領域毎に比較し、
各領域に共通した選択規則に基づいて、前記領域毎に何れか一方の前記距離を選択し、
選択した前記距離を前記領域における新たな前記距離とすることで、三次元要素で構成された前記物体の三次元形状を変形する
請求項
5~請求項10の何れか1項に記載の三次元形状データの編集装置。
【請求項14】
前記プロセッサは、前記距離を変更する前記領域の範囲を指定する
請求項
5~請求項
13の何れか1項に記載の三次元形状データの編集装置。
【請求項15】
プロセッサを備え、
前記プロセッサは、
複数に分割された三次元の領域毎に、前記領域の予め定めた場所から、複数の平面及び曲面の少なくとも一方の形成面で構成された物体の三次元形状の前記形成面までの距離が設定された前記領域に配置された三次元要素で構成された三次元形状を、前記形成面を用いて構成した新たな三次元形状に変換
し、
前記領域のうち、三次元要素が配置される第1の領域と、三次元要素が配置されていない第2の領域の境界に前記形成面を配置し、
前記第1の領域と前記第2の領域の境界に配置された前記形成面の頂点を、前記第1の領域と前記第2の領域にそれぞれ設定されている前記距離の比率に応じて補正する
三次元形状データの編集装置。
【請求項16】
前記プロセッサは、前記領域の性質を表す属性に応じて、前記距離の比率を補正する
請求項
15記載の三次元形状データの編集装置。
【請求項17】
コンピュータに、
三次元形状の表面を複数の平面及び曲面の少なくとも一方の形成面を用いて構成された三次元形状データに基づいて、複数に分割された三次元の領域毎に、前記領域の予め定めた場所から前記形成面で構成された物体の三次元形状の前記形成面までの距離を設定
し、前記予め定めた場所から前記距離で表される位置にある前記形成面が、前記距離の計測点となる前記予め定めた場所を含む前記領域に干渉している場合、前記形成面が干渉している前記領域に三次元要素を配置し、前記形成面で構成された前記物体の三次元形状を、三次元要素で構成された三次元形状に変換する処理を実行させるための三次元形状データの編集プログラム。
【請求項18】
コンピュータに、
三次元形状の表面を複数の平面及び曲面の少なくとも一方の形成面を用いて構成された三次元形状データに基づいて、複数に分割された三次元の領域毎に、前記領域の予め定めた場所から前記形成面で構成された物体の三次元形状の前記形成面までの距離を設定し、
前記領域に設定された前記距離を変更することで、三次元要素で構成された前記物体の三次元形状、及び前記三次元要素で構成された三次元形状から前記形成面を用いて構成した新たな三次元形状の少なくとも一方を変形する処理を実行させるための三次元形状データの編集プログラム。
【請求項19】
コンピュータに、
複数に分割された三次元の領域毎に、前記領域の予め定めた場所から、複数の平面及び曲面の少なくとも一方の形成面で構成された物体の三次元形状の前記形成面までの距離が設定された前記領域に配置された三次元要素で構成された三次元形状を、前記形成面を用いて構成した新たな三次元形状に変換
し、前記領域のうち、三次元要素が配置される第1の領域と、三次元要素が配置されていない第2の領域の境界に前記形成面を配置し、前記第1の領域と前記第2の領域の境界に配置された前記形成面の頂点を、前記第1の領域と前記第2の領域にそれぞれ設定されている前記距離の比率に応じて補正する処理を実行させるための三次元形状データの編集プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、三次元形状データの編集装置、及び三次元形状データの編集プログラムに関する。
【背景技術】
【0002】
特許文献1には、境界表現方式で形状表現され且つテクスチャの付与された複数の3次元データを1つの3次元データに合成する方法であって、前記複数の3次元データを、境界表現方式の形状表現から、ボリュームを構成する複数のボクセルの特徴量を用いたボリューム方式の形状表現に変換し、その際に前記ボクセルの特徴量に前記テクスチャの属性を付与し、前記ボクセルの特徴量を混合することによって前記複数の3次元データを統合し、統合された3次元データを境界表現方式の形状表現に逆変換する、ことを特徴とする3次元データの合成方法が開示されている。
【0003】
特許文献2には、他の図形物体と共に表示された図形物体を変形させるためのシステムにおいて、図形物体を、体積要素を伴う体積のある物体として特徴づけるためのコンピュータを含む手段と、前記の体積要素のうちの選ばれた1つを選択して動かすために前記コンピュータに結合されているユーザインターフェースと、前記ユーザインターフェースに応答して、前記ユーザインターフェースにより指定された量だけ前記の選択された体積要素を運動させ、その運動の結果として前記図形物体を変形させるための図形物体変形手段と、前記図形物体の変形時に図形物体同士の衝突を検出して防止するための手段と、要素同士の相対的位置をその弾力性に基づいて弛緩させるための弛緩手段と、前記弛緩手段の出力に結合されて、前記の体積のある図形物体を動かし、変形させ、弛緩させた結果を再現するためのディスプレイを含む手段とから成ることを特徴とする図形物体を迅速に変形させるためのシステムが開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2001-84395号公報
【文献】特開平10-208078号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
物体の三次元形状を表す場合に、例えば直方体または立方体といった三次元要素を組み合わせて定義した三次元形状データが用いられることがある。
【0006】
三次元要素の組み合わせによって三次元形状を表した場合、物体の曲面部分も三次元要素で表すことになるため、例えば曲面部分を含む物体の表面を三角形等の形状をしたポリゴンを組み合わせて表すよりも、滑らかな表面にするのが困難である。
【0007】
また、三次元要素で構成した三次元形状データを編集した場合、複数の平面及び曲面の少なくとも一方の形成面を用いて構成された元の三次元形状データと異なる形状になるため、元の三次元形状を保持しておくだけでは不足である。
【0008】
したがって、三次元要素で構成される三次元形状データをポリゴンで構成した三次元形状データに変換することがある。しかしながら、この変換に例えば三次元要素の有無のパターンに対してポリゴンを当てはめて連続した平面を生成するMC(Marching Cubes)法のような従来の変換手法を用いた場合、そのままでは物体の曲面部分や凹凸部分が三次元要素の形状に沿って表される等、元の物体の三次元形状と異なる形状になってしまう場合がある。
【0009】
本発明は、三次元要素で構成された物体の三次元形状を、ポリゴンで構成した三次元形状に変換することができる三次元形状データの編集装置、及び三次元形状データの編集プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
第1態様に係る三次元形状データの編集装置はプロセッサを備え、前記プロセッサは、三次元形状の表面を複数の平面及び曲面の少なくとも一方の形成面を用いて構成された三次元形状データに基づいて、複数に分割された三次元の領域毎に、前記領域の予め定めた場所から前記形成面で構成された物体の三次元形状の前記形成面までの距離を設定する。
【0011】
第2態様に係る三次元形状データの編集装置は、第1態様に係る三次元形状データの編集装置において、前記プロセッサは、前記予め定めた場所から前記距離で表される位置にある前記形成面が、前記距離の計測点となる前記予め定めた場所を含む前記領域に干渉している場合、前記形成面が干渉している前記領域に三次元要素を配置し、前記形成面で構成された前記物体の三次元形状を、三次元要素で構成された三次元形状に変換する。
【0012】
第3態様に係る三次元形状データの編集装置は、第2態様に係る三次元形状データの編集装置において、前記プロセッサは、前記領域の各々に、前記領域の性質を表す属性を設定する。
【0013】
第4態様に係る三次元形状データの編集装置は、第2態様に係る三次元形状データの編集装置において、前記プロセッサは、三次元要素が配置された前記領域の各々に、前記領域の性質を表す属性を設定する。
【0014】
第5態様に係る三次元形状データの編集装置は、第3態様に係る三次元形状データの編集装置において、前記プロセッサは、三次元の前記領域毎の前記属性を参照し、前記属性が三次元要素の配置を不要とする予め定めた条件を満たす場合、前記予め定めた条件を満たす前記属性が設定された前記領域に三次元要素を配置しないようにする。
【0015】
第6態様に係る三次元形状データの編集装置は、第1態様~第5態様の何れかの態様に係る三次元形状データの編集装置において、前記プロセッサは、前記領域に設定された前記距離を変更することで、三次元要素で構成された前記物体の三次元形状、及び前記三次元要素で構成された三次元形状から前記形成面を用いて構成した新たな三次元形状の少なくとも一方を変形する。
【0016】
第7態様に係る三次元形状データの編集装置は、第6態様に係る三次元形状データの編集装置において、前記プロセッサは、前記領域に設定された前記距離に対して値を加算、減算、乗算、除算、置換、及び比較の少なくとも1種の演算をすることで、三次元要素で構成された前記物体の三次元形状及び前記三次元要素で構成された三次元形状から前記形成面を用いて構成した新たな三次元形状の少なくとも一方を変形する。
【0017】
第8態様に係る三次元形状データの編集装置は、第7態様に係る三次元形状データの編集装置において、前記プロセッサは、前記領域の性質を表す属性に応じて、前記値を変化させる。
【0018】
第9態様に係る三次元形状データの編集装置は、第6態様に係る三次元形状データの編集装置において、前記プロセッサは、形状の異なる前記物体の三次元形状を含む前記領域に設定された前記距離を前記領域毎に比較し、各領域に共通した選択規則に基づいて、前記領域毎に何れか一方の前記距離を選択し、選択した前記距離を前記領域における新たな前記距離とすることで、三次元要素で構成された前記物体の三次元形状を変形する。
【0019】
第10態様に係る三次元形状データの編集装置は、第6態様~第9態様の何れかの態様に係る三次元形状データの編集装置において、前記プロセッサは、前記距離を変更する前記領域の範囲を指定する
【0020】
第11態様に係る三次元形状データの編集装置はプロセッサを備え、前記プロセッサは、複数に分割された三次元の領域毎に、前記領域の予め定めた場所から、複数の平面及び曲面の少なくとも一方の形成面で構成された物体の三次元形状の前記形成面までの距離が設定された前記領域に配置された三次元要素で構成された三次元形状を、前記形成面を用いて構成した新たな三次元形状に変換する。
【0021】
第12態様に係る三次元形状データの編集装置は、第11態様に係る三次元形状データの編集装置において、前記プロセッサは、前記領域のうち、三次元要素が配置される第1の領域と、三次元要素が配置されていない第2の領域の境界に前記形成面を配置し、前記第1の領域と前記第2の領域の境界に配置された前記形成面の頂点を、前記第1の領域と前記第2の領域にそれぞれ設定されている前記距離の比率に応じて補正する。
【0022】
第13態様に係る三次元形状データの編集装置は、第12態様に係る三次元形状データの編集装置において、前記プロセッサは、前記領域の性質を表す属性に応じて、前記距離の比率を補正する。
【0023】
第14態様に係る三次元形状データの編集プログラムは、コンピュータに、三次元形状の表面を複数の平面及び曲面の少なくとも一方の形成面を用いて構成された三次元形状データに基づいて、複数に分割された三次元の領域毎に、前記領域の予め定めた場所から前記形成面で構成された物体の三次元形状の前記形成面までの距離を設定させるためのプログラムである。
【0024】
第15態様に係る三次元形状データの編集プログラムは、コンピュータに、複数に分割された三次元の領域毎に、前記領域の予め定めた場所から、複数の平面及び曲面の少なくとも一方の形成面で構成された物体の三次元形状の前記形成面までの距離が設定された前記領域に配置された三次元要素で構成された三次元形状を、前記形成面を用いて構成した新たな三次元形状に変換させるためのプログラムである。
【発明の効果】
【0025】
第1態様、及び第14態様によれば、三次元形状の表面を複数の平面及び曲面の少なくとも一方の形成面を用いて構成された三次元形状データを、三次元要素で構成された三次元形状データに変換できる、という効果を有する。
【0026】
第11態様、及び第15態様によれば、三次元要素で構成された物体の三次元形状を、ポリゴンで構成した三次元形状に変換できる、という効果を有する。
【0027】
第2態様によれば、物体の三次元形状に沿って三次元要素を配置することができる、という効果を有する。
【0028】
第3態様によれば、三次元要素が配置されない領域に対して領域の性質を対応付けることができる、という効果を有する。
【0029】
第4態様によれば、三次元要素に対して領域の性質を対応付けることができる、という効果を有する。
【0030】
第5態様によれば、領域の属性にあわせて三次元形状を変形することができる、という効果を有する。
【0031】
第6態様によれば、複数の平面及び曲面の少なくとも一方の形成面を用いて構成された物体における当該形成面の配置を修正することで物体の三次元形状を変形する場合と比較して、物体の三次元形状を容易に破綻なく変形することができる、という効果を有する。
【0032】
第7態様によれば、複数の平面及び曲面の少なくとも一方の形成面を用いて構成された物体における当該形成面の配置を修正することで物体の三次元形状を変形する場合と比較して、変形したい範囲と連続する周辺領域に影響を与えず三次元形状を変形することができる、という効果を有する。
【0033】
第8態様によれば、領域の属性に応じて三次元要素の配置位置を調整することができる、という効果を有する。
【0034】
第9態様によれば、複数の平面及び曲面の少なくとも一方の形成面を用いて構成された物体同士の当該形成面の配置を修正することで物体同士を合成する場合と比較して、物体同士を容易に破綻なく合成することができる、という効果を有する。
【0035】
第10態様によれば、複数の平面及び曲面の少なくとも一方の形成面を用いて構成された物体における当該形成面の配置を修正することで物体の三次元形状を変形する場合と比較して、平面及び曲面の区切りや境界に制限されることなく変形したい範囲の形状だけを変形することができる、という効果を有する。
【0036】
第12態様によれば、三次元要素で構成された物体の形状が変形されていても、複数の平面及び曲面の少なくとも一方の形成面で構成した新たな三次元形状に変換できる、という効果を有する。
【0037】
第13態様によれば、領域の属性に応じて形成面の配置位置を調整することができる、という効果を有する。
【図面の簡単な説明】
【0038】
【
図2】ポリゴンによって表される物体の三次元形状の一例を示す図である。
【
図3】ボクセルによって表される物体の三次元形状の一例を示す図である。
【
図4】ボクセル変換処理の流れの一例を示すフローチャートである。
【
図5】物体が配置された三次元座標空間を複数の領域に分割した分割例を示す図である。
【
図6】領域のSDF、及び領域とポリゴンで構成された物体との干渉状態について説明した図である。
【
図8】ボクセル変換処理により生成される物体の三次元形状データの一例を示す図である。
【
図9】ポリゴン配置処理の流れの一例を示すフローチャートである。
【
図10】ポリゴン配置処理の説明に用いる三次元形状データの一例を示す図である。
【
図12】ボクセルで構成された物体にポリゴンを配置した例を示す図である。
【
図13】ポリゴン配置処理によって生成されるポリゴンで構成された物体の三次元形状データの一例を示す図である。
【
図14】ポリゴン補正処理の流れの一例を示すフローチャートである。
【
図15】ポリゴン補正処理の説明に用いる三次元形状データの一例を示す図である。
【
図16】ポリゴン配置処理によって生成されるポリゴンで構成された物体の三次元形状データの他の一例を示す図である。
【
図18】第1の判定領域におけるポリゴンの補正について説明した図である。
【
図20】第2の判定領域におけるポリゴンの補正について説明した図である。
【
図22】第3の判定領域におけるポリゴンの補正について説明した図である。
【
図23】ポリゴン補正処理によって生成されるポリゴンで構成された物体の三次元形状データの一例を示す図である。
【
図24】ポリゴンの変形処理の説明に用いる三次元形状データの一例を示す図である。
【
図25】三次元形状データによって定義される物体の形状についての留意点を説明する図である。
【
図26】物体を縮小させた三次元形状データの一例を示す図である。
【
図27】物体を拡大させた三次元形状データの一例を示す図である。
【
図28】領域毎に減算する値を指定することによって得られる三次元形状データの一例を示す図である。
【
図29】演算対象の領域を複数のグループに分割した例を示す図である。
【
図30】グループ毎にSDFを置き換えることによって得られる三次元形状データの一例を示す図である。
【
図31】ポリゴンの変形処理の説明に用いる三次元形状データの他の一例を示す図である。
【
図32】領域に設定されたSDFの符号を判定させることによって得られる三次元形状データの一例を示す図である。
【
図33】2つの三次元形状データを合成することによって得られる三次元形状データの一例を示す図である。
【発明を実施するための形態】
【0039】
以下、本実施の形態について図面を参照しながら説明する。なお、同じ構成要素及び同じ処理には全図面を通して同じ符合を付与し、重複する説明を省略する。
【0040】
まず、
図1を参照して、本実施の形態に係る三次元形状データの編集装置10の構成について説明する。
【0041】
編集装置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が接続されている。
【0042】
不揮発性メモリ12Dは、不揮発性メモリ12Dに供給される電力が遮断されても、記憶した情報が維持される記憶装置の一例であり、例えば半導体メモリが用いられるがハードディスクを用いてもよい。不揮発性メモリ12Dは、必ずしもコンピュータ12に内蔵されている必要はなく、例えばメモリカードのようにコンピュータ12に着脱される可搬型の記憶装置であってもよい。
【0043】
操作部14は、編集装置10のユーザから指示を受け付ける機能部であり、例えばマウス、キーボード、及びタッチパネル等の入力デバイスを含んで構成される。
【0044】
表示部16は、CPU12Aによって処理された情報を表示する機能部であり、例えば液晶ディスプレイ、及び有機EL(Electro Luminescence)ディスプレイ等の表示デバイスを含んで構成される。
【0045】
通信部18は、例えばインターネット及びLAN(Local Area Network)といった通信回線に接続され、通信回線に接続された外部装置とデータ通信を行うためのインターフェースを有する。
【0046】
図2は、三次元形状データによって表される物体2の三次元形状の一例を示す図である。
図2に示すように、編集装置10は、物体2の三次元形状をX軸、Y軸、及びZ軸によって表されるXYZ座標を用いて表す。以降では、XYZ座標を「三次元座標空間」といい、物体2の三次元形状のことを単に「物体2の形状」という。
【0047】
三次元形状データのデータフォーマットとして、例えばポリゴン4を組み合わせて物体2の表面を構成するデータフォーマットが用いられることがある。
【0048】
ポリゴン4とは、物体2の形状を構成する平面または曲面の各々の形成面のことである。ポリゴン4の形状に制約はないが、例えば三角形や四角形といった多角形が用いられ、複数のポリゴン4を組み合わせることによって物体2の形状が構成される。すなわち、ポリゴン4を用いて物体2の形状を定義した三次元形状データには、例えば各々のポリゴン4の位置及び配置方向、隣り合うポリゴン4との接続に関する情報等が含まれる。
【0049】
なお、ポリゴンのほか、スプライン曲面やベジェ曲面などの関数曲面を組み合わせて物体2の表面を構成するデータフォーマットを用いてもよい。
【0050】
編集装置10でポリゴン4を用いて物体2の形状を定義した三次元形状データを編集して物体2の形状を変形しようとした場合、隣り合うポリゴン4同士は頂点と辺を共有しながら物体2の形状を表しているため、ユーザが変形したい箇所の物体2の形状を変形させると、変形した箇所と隣り合うポリゴン4にも変形の影響が次々波及し、変形させる意図のない箇所まで物体2の形状が変形してしまうことがある。
【0051】
したがって、編集装置10は、ポリゴン4を用いて物体2の形状を定義した三次元形状データを、ボクセル6を用いて定義した三次元形状データに変換し、ボクセル6で構成された三次元形状データを編集することで物体2の形状を変形させる。
【0052】
ボクセル6とは、物体2の三次元形状を構成する基本要素であり、例えば正方体が用いられるが、正方体に限らず、直方体、三角錐、球、及び円柱等の他の三次元要素を用いてもよい。すなわち、ボクセル6は三次元要素の一例である。
【0053】
ボクセル6を積み上げることで所望の物体2の三次元形状が表現される。また、各ボクセル6には、例えば色、強度、材質、質感等のボクセル6の性質を表す属性を設定してもよい。ボクセル6の有無及びボクセル6の属性によって、物体2の色や材質等が表現される。
【0054】
「材質」とは、樹脂、金属、ゴム等の材料のジャンルを表す情報、ABS、PLA等の材料名を表す情報、市販されている材料の商品名、商品番号等を表す情報、ISO、JIS等の規格で定められている材料名、略称、番号等の材料を表す情報、熱伝導率、導電率、磁性等の材料特性を表す情報の少なくとも1つの情報を含む。
【0055】
また、「質感」とは、物体2の反射率、透過率、光沢、表面性状等の色だけではない物性情報や触り心地を表す属性を表す。
【0056】
なお、属性には、周期、数式、及び他の三次元形状データの少なくとも1つの情報を用いて設定される属性パターンを含む。属性パターンとは、一定周期の繰り返し、グラデーション、数式で表される傾斜や極点による表現、他の三次元形状データ等に従って三次元形状データの色、材質、質感等を連続的に変更すること、三次元形状データの指示された範囲を指示された形状で充填すること又は連続的に変更すること、の少なくとも1つを含む。
【0057】
上述したように、物体2の形状はボクセル6の集合によって表されるが、具体的には、例えば三次元座標空間におけるX、Y、Zの座標の要素値によって表される。
【0058】
図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に対応付けられた属性を含む。
【0059】
なお、物体2の形状は、必ずしも三次元座標空間における座標(X、Y、Z)によって表される必要はなく、例えば座標(X、Y、Z)に一意に対応付けたインデックス番号で表してもよい。この場合、例えばインデックス番号に対応付けられた値が“1”であれば、インデックス番号で表される位置にボクセル6が存在することを表す。このインデックス番号が後ほど説明する領域8を識別するための番号となる。
【0060】
なお、三次元座標空間は、X、Y、Zといった3次元の直交座標に限定するものではなく、例えばrとθを用いた極座標を用いてもよい。この場合、三次元座標空間がX、Y、Zのピッチごとに1、2、3...とインデックス番号で表せるのと同様に、r、θのピッチごとにインデックス番号を対応付け、インデックス番号で表される位置に1以上の値を指定してボクセル6が存在することを表せばよい。なお、1以上の値にそれぞれ異なる形状のボクセル6を対応付けておけば、設定した値に対応する形状のボクセル6が三次元座標空間の指定した位置に配置されることになる。
【0061】
ボクセル6で定義された三次元形状データを修正して物体2の形状を変形させる場合、当該三次元形状データはボクセル6の有無によって物体2の形状を表すことから、ポリゴン4で定義された三次元形状データを修正して物体2の形状を変形させる場合のように、ユーザが変形したい箇所以外に変形の影響が波及するような状況が生じない。すなわち、ボクセル6で定義された三次元形状データに対しボクセル6の追加及び削除等の編集を行うことで物体2の形状を変形させる場合、ユーザが変形したい箇所だけを変形させることができる。
【0062】
また、ポリゴン4で定義された三次元形状データを修正して物体2の形状を変形させた場合、ポリゴン4の接続状態が変化し、ポリゴン4同士の辺及び頂点が接続できずに物体2の表面に隙間が空いたり、ポリゴン4同士が交差してしまったりする状況が発生することがあるが、ボクセル6で定義された三次元形状データを修正して物体2の形状を変形させた場合には、こうした状況は発生しない。
【0063】
しかしながら、ボクセル6で定義された三次元形状データはボクセル6の組み合わせによって物体2の形状を表すことから、ポリゴン4を用いて物体2を構成した場合と比較して、構成される物体2の曲面部分に凹凸が生じやすくなり、物体2の形状をボクセル6で構成する前の形状と異なる場合がある。
【0064】
したがって、編集装置10では、物体2の変形はボクセル6で定義した三次元形状データを用いて実行し、ボクセル6で定義した三次元形状データをポリゴン4で定義した新たな三次元形状データに変換する。
【0065】
なお、ボクセル6で定義された三次元形状データに対し、実際にボクセル6を追加及び削除することで三次元形状そのものを変形してもよく、また、ボクセル6で定義された三次元形状は変形させず、ポリゴン4で定義した新たな三次元形状データに変換する際に、任意の変形を反映させた新たな三次元形状データを生成してもよい。
【0066】
図4は、ポリゴン4を用いて物体2の形状を定義した三次元形状データを、ボクセル6を用いて定義した三次元形状データに変換する場合に、編集装置10のCPU12Aによって実行されるボクセル変換処理の流れの一例を示すフローチャートである。
【0067】
図4に示すボクセル変換処理を規定する編集プログラムは、例えば編集装置10のROM12Bに予め記憶されている。編集装置10のCPU12Aは、ROM12Bに記憶される編集プログラムを読み込み、ボクセル変換処理を実行する。
【0068】
まず、ステップS10において、CPU12Aは、ポリゴン4で定義された三次元形状データによって表される物体2(以降、「ポリゴン4で構成された物体2」という)が配置された三次元座標空間を複数の領域8に分割する。
【0069】
図5は、ポリゴン4で構成された物体2が配置された三次元座標空間を複数の領域8に分割した分割例を示す図である。
図5の例では、三次元座標空間をXY平面、XZ平面、及びYZ平面に沿って格子状に分割した例を示している。また、
図5の例では、X軸及びZ軸を含むXZ平面に対向する方向からポリゴン4で構成された物体2を眺めた状態を示している。分割された各々の領域8は3次元形状で表される領域8(この例の場合は正方体)となるが、説明の便宜上、以降の説明では
図5に示すように、複数の領域8によって分割された物体2をXZ平面と直交する方向から眺めた場合の状況を表す二次元的に示した図を用いて説明する。従って、実際にはY軸方向に物体2の奥行きがあることに注意する。
【0070】
図5では、ポリゴン4で構成された物体2が配置された三次元座標空間をXY平面、XZ平面、及びYZ平面に沿って格子状に分割した例を示したが、三次元座標空間を複数の領域8に分割する方法はこれに限られない。
【0071】
例えばX、Y、Z方向で異なる間隔に分割してもよく、また、三次元座標空間をXY平面、XZ平面、及びYZ平面の何れの平面にも沿わない平面で分割してもよい。また、三次元座標空間を曲面で複数の領域8に分割してもよい。更には、分割した領域8の形状が球体、円柱、三角柱や五角柱といった多角柱、三角錐、及び円錐等、予め定めた任意の形状になるように三次元座標空間を分割してもよい。以降では一例として、三次元座標空間を一辺の長さが10mmの立方体となるような複数の領域8に分割した例を前提にして説明を行う。
【0072】
ステップS20において、CPU12Aは、ステップS10で分割した領域8の中から何れか1つの領域8を選択する。ステップS20で選択した領域8を選択領域8ということにする。
【0073】
ステップS30において、CPU12Aは、選択領域8にポリゴン4で構成された物体2が干渉しているか否かを判定する。
【0074】
選択領域8に物体2が干渉するとは、物体2の輪郭を表すポリゴン4が選択領域8に接触または含まれる状態をいう。
【0075】
ポリゴン4で構成された物体2が選択領域8に干渉しているか否かを判定するため、一例として、CPU12Aは、選択領域8に対して距離を算出する。符号付で距離値を管理する既知の手法として、符号付距離場(Signed Distance Field:SDF)がある。
【0076】
SDFは三次元形状の位置関係を表す公知の手法であり、選択領域8に含まれる予め定めた場所から、最も近いポリゴン4までの距離を選択領域8の符号付距離場として設定する。この際、CPU12Aは、距離を計測するための基準点(以降、「計測点」という)となる予め定めた場所が物体2の内部に含まれる場合にはプラスの符号を算出した距離に設定し、物体2の内部に含まれない場合にはマイナスの符号を算出した距離に設定する。
【0077】
すなわち、選択領域8に設定した距離が0以上の値であれば、ポリゴン4で構成された物体2が選択領域8に干渉していることになる。また、選択領域8に設定した距離が0未満の場合であっても、選択領域8に設定した距離の大きさが選択領域8の内部に含まれる場所までの距離以下であれば、ポリゴン4で構成された物体2が選択領域8に干渉していることにしてもよい。もちろん、符号の定義は逆でもよいし、符号無しの距離値と、物体2の外側及び内側といった情報を別に管理してもよい。
【0078】
また、選択領域8とポリゴン4で構成された物体2が干渉しているか否かの判定はこれに限らず、状況に応じて判定基準が設定される。例えば、計測点から最も近いポリゴン4までのベクトルと、選択領域8を形成する各頂点までのベクトルとの内積を取り、符号が一致しているかどうかで選択領域8とポリゴン4の干渉を判定してもよい。また、ポリゴン4上に点群を発生させ、点が含まれる選択領域8をポリゴン4と干渉していると判定してもよい。
【0079】
図6は、領域8のSDF、及び領域8とポリゴン4で構成された物体2との干渉状態について説明した図である。
図6では一例としてステップS10で分割した三次元座標空間の複数の領域8のうち、領域8A、領域8B、領域8C、及び領域8Dの4つの領域8に着目している。また、距離の計測点となる予め定めた場所を、各々の領域8A~8Dの中心、すなわち立方体で表される領域8の中心に設定している。
【0080】
図6の例において、領域8に設定されたSDFの符号がプラスであれば、選択領域8とポリゴン4で構成された物体2は干渉していると判定し、領域8に設定されたSDFの符号がマイナスであれば、選択領域8とポリゴン4で構成された物体2は干渉していないと判定するように判定基準を定義したとする。
【0081】
この場合、領域8Cは設定されたSDFの符号がプラスであるため、ポリゴン4で構成された物体2と干渉していることになる。領域8A、領域8B、及び領域8Dは、それぞれ設定されたSDFの符号がマイナスであるため、ポリゴン4で構成された物体2とは干渉していないことになる。以降では、本定義に従い、選択領域8とポリゴン4で構成された物体2とが干渉しているか否かを判定する例について説明する。
【0082】
なお、干渉に関する判定基準の他の定義例として、
図6の例において、領域8に設定されたSDFの符号がマイナスであっても、物体2の輪郭を表すポリゴン4が少しでも領域8に接触または含まれれば領域8に物体2が干渉すると定義してもよい。なお、CPU12Aは、各領域8におけるSDFの計測点から見た方向毎に、領域8の表面までの距離、すなわち、領域8に物体2の輪郭を表すポリゴン4が接触するまでの距離を記憶している。
【0083】
この判定基準に従えば、まず、領域8Cは設定されたSDFの符号がプラスであるため、ポリゴン4で構成された物体2と干渉していると判定される。
【0084】
領域8AはSDFの符号がマイナスであり、かつ、SDFの大きさが、領域8Aの計測点から最も遠い位置にある領域8Aの頂点までの距離を超えていることから、ポリゴン4で構成された物体2と干渉していないと判定される。
【0085】
領域8BはSDFの符号がマイナスであるが、SDFの大きさが領域8Bの計測点を中心した領域8Bの内接円の半径と同じであることから、ポリゴン4で構成された物体2と干渉していると判定される。
【0086】
領域8DもSDFの符号がマイナスであるが、SDFの大きさが領域8Dの計測点を中心した領域8Dの内接円の半径よりも小さいため、ポリゴン4で構成された物体2と干渉していると判定される。
【0087】
更に、干渉に関する判定基準の他の定義例として、
図6の例において、領域8に設定されたSDFの符号がマイナスであっても、距離が予め定めた値(例えば選択領域8の各辺の1/3以下)であれば領域8に物体2が干渉すると定義してもよい。
【0088】
この判定基準に従えば、領域8Cは設定されたSDFの符号がプラスであるため、ポリゴン4で構成された物体2と干渉していると判定される。
【0089】
領域8A及び領域8Bは設定されたSDFの符号がマイナスで、かつ、領域8の1辺のサイズが1と仮定した時、SDFの大きさが1/3を超えるためポリゴン4で構成された物体2と干渉していないと判定される。
【0090】
領域8Dは設定されたSDFの符号がマイナスであっても、SDFの大きさが1/3以下であることから、ポリゴン4で構成された物体2と干渉していると判定される。
【0091】
このように、CPU12Aは、領域8とポリゴン4で構成された物体2との干渉の有無を定義する予め定めた判定基準に従って、選択領域8とポリゴン4で構成された物体2が干渉しているか否かを判定する。領域8とポリゴン4で構成された物体2との干渉の有無を定義する判定基準は編集装置10を操作するユーザによって設定され、例えば不揮発性メモリ12Dに記憶される。
【0092】
ステップS30の判定処理で、選択領域8にポリゴン4で構成された物体2が干渉していると判定された場合には、ステップS40に移行する。
【0093】
ステップS40において、CPU12Aは、選択領域8にボクセル6を配置してステップS50に移行する。選択領域8に配置するボクセル6の三次元形状と選択領域8の三次元形状は同じであることが好ましいが、異なる三次元形状であってもよい。ここでは一例として、ボクセル6の三次元形状と選択領域8の三次元形状は同じであるとする。
【0094】
図7は、選択領域8として領域8Cが選択された場合のボクセル6の配置状況を示す図である。
図6を用いて説明したように、領域8Cはポリゴン4で構成された物体2と干渉していると判定されるため、領域8Cにはボクセル6が配置される。本実施の形態における説明では、
図7に示すように網掛けが行われている領域8はボクセル6が配置されている領域8であることを示している。
【0095】
なお、CPU12Aは、選択領域8に対応する箇所の物体2の性質に応じた属性をボクセル6に設定する。ボクセル6に設定する属性として少なくとも選択領域8のSDFが設定され、この他、例えば物体2の色、強度、材質、質感、透過率、及び歪み量等、ユーザが指定した属性が設定される。
【0096】
透過率とは、物体2に入射した光量のうち、物体2の表面で反射されずに物体2を透過する光量の割合であり、物体2の見え方を表す属性の一例である。透過率が高い物体2ほど、物体2の後ろにある背景が物体2を通じて見えやすくなる。
【0097】
歪み量とは、物体2に作用する力によって発生する歪みの程度を表したものであり、物体2に対する力のかかり具合を示す属性の一例である。
【0098】
ボクセル6に属性を設定することは、ボクセル6が配置された選択領域8に対して属性を設定することでもあるため、選択領域8に属性を設定することでもある。
【0099】
一方、ステップS30の判定処理で、選択領域8にポリゴン4で構成された物体2が干渉していないと判定された場合には、ステップS40の処理を実行せずにステップS50に移行する。すなわち、ポリゴン4で構成された物体2が干渉していないと判定された選択領域8にはボクセル6が配置されないことになる。本実施の形態における説明では、網掛けが行われていない領域8(
図7の例では領域8A、領域8B、及び領域8Dに相当)は、ボクセル6が配置されない領域8であることを示している。
【0100】
なお、CPU12Aは、ポリゴン4で構成された物体2と干渉していないと判定された選択領域8に対しても、少なくとも選択領域8のSDFを含む属性を設定する。また、CPU12Aは、ポリゴン4で構成された物体2と干渉していないと判定された選択領域8に、ユーザによって予め指定された属性を設定してもよい。すなわち、ボクセル6が配置されない領域8にも属性が設定される。
【0101】
ステップS50において、CPU12Aは、ステップS10で分割した複数の領域8のうち、まだステップS20で選択されていない未選択領域が存在するか否かを判定する。未選択領域が存在する場合にはステップS20に移行し、ステップS10で分割した複数の領域8の中から、まだ選択していない領域8を選択する。
【0102】
ステップS10で分割した複数の領域8がステップS20の処理ですべて選択されるまでステップS20~ステップS50の処理を繰り返し実行することで、ポリゴン4で構成された物体2と干渉する領域8に対してボクセル6が配置される。すなわち、ポリゴン4を用いて物体2の形状を定義した三次元形状データが、ボクセル6を用いて物体2の形状を定義した三次元形状データに変換される。
【0103】
ステップS50の判定処理で、ステップS10で分割した複数の領域8がすべて選択されたと判定された場合には、
図4に示すボクセル変換処理を終了する。
【0104】
図8は、
図4に示したボクセル変換処理によって、
図5に示したポリゴン4で構成された三次元座標空間上の物体2を、ボクセル6で構成するように変換した一例を示す図である。説明の便宜上、
図8では三次元座標空間を粗く分割した例を示しているが、領域8を細かく分割していけば、より詳細に物体2の三次元形状を構成できるようになる。
【0105】
なお、CPU12Aは、ポリゴン4で構成された物体2と干渉している領域8であっても、当該領域8に設定される属性に応じて、ボクセル6を配置しないようにしてもよい。逆に、CPU12Aは、ポリゴン4で構成された物体2と干渉していない領域8であっても、当該領域8に設定される属性に応じて、ボクセル6を配置してもよい。
【0106】
例えば、予め定めた値より大きい歪み量が設定される領域8にボクセル6を配置した場合、隣り合うボクセル6を破壊するような応力が発生することがある。したがって、あえてボクセル6を配置しないようにすれば、ボクセル6を配置しなかったことにより生じた空間が周囲のボクセル6の変形に対する緩衝地帯となり、力の作用により物体2に生じる亀裂等を抑制する効果が得られる。
【0107】
また、強度が予め定めた値に達していない物体2の箇所と隣接する領域8であって、物体2と干渉していない領域8にあえてボクセル6を配置すれば、強度不足が推定される物体2の箇所が補強されることになる。
【0108】
CPU12Aは、このようにして生成したボクセル6で構成した物体2の三次元形状データをユーザの指示に従って変形した上で、変形後の物体2を、滑らかな曲面を含んだ三次元形状データとして使用する必要がある際には、ポリゴン4で構成した新たな三次元形状データに変換する。
【0109】
なお、ユーザはボクセル6で構成した物体2の形状を必ずしもポリゴン4で構成した新たな三次元形状データに変換する必要はなく、編集装置10で領域8に属性を設定し、ボクセル6のまま使用するだけでもよい。ボクセル6で構成した物体2の形状の変換方法については、後ほど詳細に説明する。
【0110】
まず、ボクセル6で構成した物体2の三次元形状データをポリゴン4で構成した物体2の三次元形状データに変換する例について説明する。ここでは一例として、ボクセル6で構成した物体2の形状は変形させずに、属性だけを設定してポリゴン4で構成した物体2の三次元形状データに変換するものとする。
【0111】
図9は、編集装置10のCPU12Aによって実行されるポリゴン配置処理の流れの一例を示すフローチャートである。
図9に示すポリゴン配置処理を規定する編集プログラムは、例えば編集装置10のROM12Bに予め記憶されている。編集装置10のCPU12Aは、ROM12Bに記憶される編集プログラムを読み込み、ポリゴン配置処理を実行する。
【0112】
ここでは、
図10に示すような領域8とボクセル6の配置関係が見られる物体2の三次元形状データの例を用いて、ポリゴン配置処理の説明を行う。
図10から
図13における各図の領域8には説明の便宜上、副参照符号を割り当てている。各々の領域8を区別して説明する必要がある場合には、例えば
図10において“1”の副参照符号が割り当てられた左下の領域8を領域8-1と表すことで、他の領域8と区別する。
【0113】
図9のステップS110において、CPU12Aは、ボクセル6で構成された物体2が配置され、かつ、複数の領域8に分割された三次元座標空間から判定領域20を1つ選択する。
【0114】
判定領域20とは、MC法においてボクセル6からポリゴン4に変換する変換単位であり、例えばX軸方向、Y軸方向、及びZ軸方向にそれぞれ2個ずつ、合計8個の領域8を含む範囲を判定領域20として設定する。
図10では、例えば領域8-1、領域8-2、領域8-9、及び領域8-10、並びに、それぞれ領域8-1、領域8-2、領域8-9、及び領域8-10の後ろにあるY軸方向に沿って配置されたそれぞれ1つずつの領域8からなる合計8個の領域8が判定領域20として選択されている。ポリゴン配置処理の説明において、ステップS110で選択した判定領域20を選択判定領域20という。
【0115】
ステップS120において、CPU12Aは、選択判定領域20に境界面が存在するか否かを判定する。
【0116】
境界面とは、ボクセル6が配置されている領域8とボクセル6が配置されていない領域8が隣り合っている面のことである。
図10の例で言えば、領域8-1と領域8-9が隣り合う面、及び領域8-9と領域8-10が隣り合う面は境界面の一例である。ボクセル6が配置されている領域8-1、領域8-2、及び領域8-10は本実施の形態に係る第1の領域の一例であり、ボクセル6が配置されていない領域8-9は本実施の形態に係る第2の領域の一例である。選択判定領域20に境界面が存在する場合には、ステップS130に移行する。
【0117】
なお、CPU12Aは、ボクセル6が配置されている領域8の属性を参照し、属性がボクセル6の配置を不要とする条件を満たす場合には、当該条件を満たす属性が設定された領域8からボクセル6を削除して、選択判定領域20に境界面が存在するか否かを判定してもよい。
【0118】
具体的には、既に説明したように、領域8に設定されている歪み量が予め定めた値より大きい場合には、当該領域8に配置されているボクセル6を削除してもよい。また、領域8に設定されている透過率が予め定めた値より大きい場合には、当該領域8に配置されているボクセル6を削除しても物体2の見た目の形状に与える影響は少ないことから、当該領域8に配置されているボクセル6を削除してもよい。
【0119】
なお、CPU12Aは、ボクセル6の配置を不要とする条件を満たした領域8が存在する場合、当該領域8に配置されているボクセル6を実際に削除する必要はなく、ボクセル6が存在しないものとみなして、選択判定領域20に境界面が存在するか否かを判定してもよい。
【0120】
ステップS130において、CPU12Aは、選択判定領域20に含まれる境界面同士にまたがるポリゴン4をボクセル6上に配置して、ステップS140に移行する。
【0121】
図11は、領域8-1と領域8-9が隣り合う面、及び領域8-9と領域8-10が隣り合う面にポリゴン4を配置した例を示す図である。CPU12Aは、予め用意されているポリゴン4の配置パターンの中から、例えば各々の境界面の中心26にポリゴン4の頂点が配置されるような配置パターンを選択してポリゴン4を配置する。なお、ここでは便宜上、MC法に基づいて配置されるポリゴン4をMC面、配置されるポリゴン4の頂点をMC頂点と呼ぶことにする。
【0122】
一方、選択判定領域20に境界面が存在しない場合、ステップS130の処理を実行することなくステップS140に移行する。すなわち、選択判定領域20に境界面が存在しない場合には、選択判定領域20に含まれる何れの領域8にもポリゴン4が配置されない。
【0123】
ステップS140において、CPU12Aは、複数の領域8に分割された三次元座標空間の中に、まだステップS110で選択した判定領域20に含まれない未選択の領域8が存在するか否かを判定する。未選択の領域8が存在する場合にはステップS110に移行し、ステップS110で新たな判定領域20を選択する。この場合、CPU12Aは、X軸方向、Y軸方向、及びZ軸方向の何れか予め定めた方向に判定領域20を領域1つ分だけずらして新たな判定領域20を選択する。なお、判定領域20が予め定めた方向における最後の領域8を含み、これ以上予め定めた方向に判定領域20をずらすことができなくなった場合には、当該予め定めた方向と異なる方向に判定領域20を領域1つ分だけずらした上で、予め定めた方向とは反対の方向に向かって判定領域20をずらすことを繰り返し、分割された領域8全体を選択すればよい。
【0124】
ステップS140の判定処理で、判定領域20に含まれない未選択の領域8は存在しないと判定された場合、
図9に示すポリゴン配置処理を終了する。
【0125】
図12は、
図10に示した各領域8に対して判定領域20を領域1つ分ずらしながら、境界面上にポリゴン4を配置した例を示す図である。CPU12Aは、隣り合う判定領域20で同じ境界面にポリゴン4を配置する場合、当該ポリゴン4の頂点が一致するように配置する。なお、三次元座標空間のY軸方向にも複数の領域8が存在するが、説明の便宜上、XZ平面と直交する方向から眺めた場合に見える前方の領域8についてのみ
図10に示している。
【0126】
図13は、ポリゴン配置処理によって
図10に示した各領域8に対して最終的に配置されたポリゴン4の配置例を示す図である。
【0127】
ポリゴン配置処理によって得られた物体2の三次元形状データは、単に境界面の中心26にポリゴン4の頂点が来るようにポリゴン4を配置したものであるため、編集装置10で物体2の形状を変形しなかったとしても元の物体2の形状と異なる形状を示すことがある。したがって、ポリゴン補正処理を実行する。
【0128】
図14は、編集装置10のCPU12Aによって実行されるポリゴン補正処理の流れの一例を示すフローチャートである。
図14に示すポリゴン補正処理を規定する編集プログラムは、例えば編集装置10のROM12Bに予め記憶されている。編集装置10のCPU12Aは、ROM12Bに記憶される編集プログラムを読み込み、ポリゴン補正処理を実行する。
【0129】
ここでは、
図15に示すような領域8とボクセル6の配置関係が見られる物体2の三次元形状データの例を用いてポリゴン補正処理の説明を行う。
図15から
図23における各図の領域8に記載された数値は、各々の領域8に設定されたSDFであり、輪郭22は、元の物体2をXZ平面に沿って切断した場合の輪郭線を示す。
【0130】
図16は、
図15に示したボクセル6で構成された物体2の三次元形状データに対して、
図9に示したポリゴン配置処理でポリゴン4を配置した例を示す図である。ポリゴン配置処理では、境界面の中心26にポリゴン4の頂点が来るようにポリゴン4が配置されるため、
図16に示すようにボクセル6の周囲にポリゴン4が配置され、ポリゴン4によって物体2の輪郭22が示されることになる。
図15に示す元の物体2の輪郭22と
図16のポリゴン4で表される物体2の輪郭22を比較すればわかるように、ポリゴン配置処理によって物体2の形状をボクセル6からポリゴン4で構成するように変換しただけでは、変換された三次元形状データによって表される物体2の形状は元の物体2の形状と異なることがある。
【0131】
したがって、ステップS210において、CPU12Aは、ポリゴン配置処理でポリゴン4に変換された後の物体2が配置される、複数の領域8に分割された三次元座標空間から判定領域20を1つ選択する。判定領域20の選択方法は、
図9のステップS110で説明した選択方法と同じである。ポリゴン補正処理の説明において、ステップS210で選択した判定領域20を選択判定領域20という。
【0132】
図17は、
図16で示されるようなポリゴン4が配置された三次元形状データから選択した判定領域20の一例を示す図である。説明の便宜上、判定領域20に含まれる各々の領域8を区別するため、ポリゴン補正処理の説明では、判定領域20に含まれる各々の領域8にアルファベットの副参照符号を割り当てて説明することがある。
【0133】
ステップS220において、CPU12Aは、選択判定領域20にポリゴン4が存在するか否かを判定する。選択判定領域20にポリゴン4が存在する場合にはステップS230に移行する。
【0134】
ステップS230において、CPU12Aは、境界面の中心26と接触するように配置されているポリゴン4の頂点の位置を、境界面を形成する隣り合う2つの領域8(「対領域」という)にそれぞれ設定されているSDFの大きさの比率に応じて移動させ、ポリゴン4の配置を補正する。
【0135】
図18は、
図17に示した判定領域20を抽出した図である。判定領域20に含まれる領域8Aと領域8Dからなる対領域、及び領域8Bと領域8Cからなる対領域を例にして対領域の境界面の中心26と接触するポリゴン4の頂点の移動例について説明する。
【0136】
まず、領域8Aと領域8Dからなる対領域の場合、CPU12Aは、領域8AにおけるSDFの計測点と領域8DにおけるSDFの計測点の距離(「領域間距離」という)を算出する。CPU12Aは、算出した領域間距離において領域8AのSDFの大きさと領域8DのSDFの大きさの比率に従った地点を補正点24と定め、領域8Aと領域8Dからなる対領域によって形成された境界面の中心26に接触するポリゴン4の頂点を補正点24の位置に移動させる。
【0137】
すなわち、領域間距離を7:3に分割した地点が、領域8Aと領域8Dからなる対領域によって形成された境界面の中心26に接触するポリゴン4の頂点の補正点24となる。
【0138】
同様に、領域8Bと領域8Cからなる対領域の場合、領域8BのSDFは“-0.2”、領域8CのSDFは“+0.7”であることから、領域8Bと領域8Cの領域間距離を2:7に分割した地点が、領域8Bと領域8Cからなる対領域によって形成された境界面の中心26に接触するポリゴン4の頂点の補正点24となる。
【0139】
CPU12Aは、算出した各々の補正点24の位置にポリゴン4の頂点が来るようにポリゴン4の配置を補正する。この補正により、ポリゴン4の配置が
図17に示した判定領域20におけるポリゴン4の配置よりも物体2の輪郭22に近づいてくることがわかる。
【0140】
一方、ステップS220の判定処理で、選択判定領域20にポリゴン4が存在しないと判定された場合には、ステップS230の処理を実行することなくステップS240に移行する。
【0141】
ステップS240において、CPU12Aは、複数の領域8に分割された三次元座標空間の中に、まだステップS210で選択した判定領域20に含まれない未選択の領域8が存在するか否かを判定する。未選択の領域8が存在する場合にはステップS210に移行し、ステップS210で新たな判定領域20を選択する。新たな判定領域20の選択方法は、
図9のステップS140で説明した選択方法と同じである。すなわち、判定領域20に含まれていない未選択の領域8が存在しなくなるまでステップS210~ステップS240の処理を繰り返し実行する。
【0142】
図19は、
図17に示した判定領域20をX軸方向に領域1つ分ずらした判定領域20の例を示す図である。
図19に示す判定領域20には、領域8Bと領域8Cからなる対領域、及び領域8Eと領域8Hからなる対領域が存在する。
【0143】
図20は、
図19に示した判定領域20を抽出した図である。領域8Bと領域8Cからなる対領域によって形成された境界面の中心26に接触するポリゴン4の頂点に対する補正点24の算出は既に説明した通りである。
【0144】
領域8Eと領域8Hからなる対領域の場合、領域8EのSDFは“-0.6”、領域8HのSDFは“+0.4”であることから、領域8Eと領域8Hの領域間距離を6:4に分割した地点が、領域8Eと領域8Hからなる対領域によって形成された境界面の中心26に接触するポリゴン4の頂点の補正点24となる。
【0145】
図21は、
図19に示した判定領域20を更にX軸方向に領域1つ分ずらした判定領域20の例を示す図である。
図21に示す判定領域20には、領域8Eと領域8Hからなる対領域、及び領域8Gと領域8Hからなる対領域が存在する。
【0146】
図22は、
図21に示した判定領域20を抽出した図である。領域8Eと領域8Hからなる対領域によって形成された境界面の中心26に接触するポリゴン4の頂点に対する補正点24の算出は既に説明した通りである。
【0147】
領域8Gと領域8Hからなる対領域の場合、領域8GのSDFは“-0.3”、領域8HのSDFは“+0.4”であることから、領域8Gと領域8Hの領域間距離を3:4に分割した地点が、領域8Gと領域8Hからなる対領域によって形成された境界面の中心26に接触するポリゴン4の頂点の補正点24となる。
【0148】
このように判定領域20をずらしながら判定領域20に含まれない未選択の領域8が存在しなくなるまでステップS210~ステップS240の処理を繰り返し実行することで、最終的に
図23に示すような位置に頂点が来るように補正されたポリゴン4が得られ、ポリゴン補正処理を実行する前の物体2の形状が元の物体2の形状に近づくようになる。
【0149】
ステップS240の判定処理で、判定領域20に含まれない未選択の領域8は存在しないと判定された場合、物体2の形状を構成するすべてのポリゴン4の配置が補正されたことになるため、
図14に示すポリゴン補正処理を終了する。
【0150】
なお、説明の便宜上、
図9に示したポリゴン配置処理の終了後に
図14に示したポリゴン補正処理を実行するように説明したが、
図9におけるステップS110と
図14におけるステップS210の判定領域は同じ領域のことを示しており、かつ、
図9のステップS130でポリゴンを配置した時点で、ステップS220の判定が肯定判定になることは自明であることから、
図9のステップ130を実行した直後に引き続き
図14のステップS230を実行するように、ポリゴン配置処理とポリゴン補正処理を分離せず1つにまとめて処理するようにしてもよい。この場合、当然のことながら、
図9のステップS120の判定処理で選択判定領域20に境界面が存在しないと判定された場合には、ステップS130及び
図14のステップS230の処理を実行することなくステップS140に移行する。
【0151】
なお、CPU12Aは、
図14のステップS230の処理でポリゴン4の配置を補正する場合、領域8の属性に応じて、対領域における領域間距離の比率を補正してもよい。例えば領域8に設定されている物体2の硬さが高いほど、少ない容積で所望の強度が得られることになる。換言すれば、物体2の硬い箇所を削ったとしても所望の強度が得られることになる。
【0152】
したがって、領域8に設定されている物体2の硬さが予め定めた値以上であれば、CPU12Aは当該領域8のSDFの値を元のSDFの値より小さくし、ポリゴン4の頂点がSDFを修正した領域8におけるSDFの計測点、すなわち、領域8の中心により近づくようにしてもよい。
【0153】
逆に、領域8に設定されている物体2の硬さが予め定めた値未満であれば、CPU12Aは当該領域8のSDFの値を元のSDFの値より大きくし、ポリゴン4の頂点がSDFを修正した領域8の中心から遠ざかるようにしてもよい。すなわち、物体2に厚みを持たせることで、物体2の硬さが予め定めた値未満の箇所を補強する。
【0154】
次に、編集装置10におけるボクセル6で構成した物体2の形状の変形処理について説明する。
【0155】
図24は、三次元座標空間における各領域8に設定されたSDFを含む三次元形状データの一例を示す図である。
図24~
図33において、各々の領域8に記載されている値は、対応する領域8のSDFを示す。また、
図24~
図33において、SDFの符号がプラスに設定されている領域8は、
図4に示したボクセル変換処理によってボクセル6が配置される領域8であることから、網掛けで示されている領域が物体2の形状を示す。
【0156】
既に説明したように、物体2の輪郭線を形成するポリゴン4の配置は、
図14に示したポリゴン補正処理によって対領域のSDFの大きさの比率に従って補正される。したがって、
図24に示すようなSDFを有する三次元形状データによって生成されるポリゴン4で構成された物体2の形状は、
図25に示すように、物体2の輪郭線が領域8の境界に一致しないこともある。例えば領域8に設定されているSDFの符号がプラスで、SDFの大きさが、領域8の中心から領域8の境界までの距離を表す値よりも大きい場合、物体2の輪郭線は領域8の中心から見て領域8の境界よりも遠くに配置される。しかしながら、物体2の変形処理の説明においては、説明の便宜上、生成される物体2の輪郭線を領域8の境界にあわせて表示する。
【0157】
今、
図4に示したボクセル変換処理により、各領域8に
図24に示すようなSDFが設定された三次元形状データが存在するものとする。編集装置10のCPU12Aは、領域8に設定されたSDFを変更することで物体2の形状を変形させる。
【0158】
具体的には、CPU12Aは、
図24に示した各領域8のSDFに対して指定した値を用いた演算を行うことで物体2の形状を変形させる。ここで、演算とは加算、減算、乗算、除算、置換、及び比較の少なくとも1つ、若しくはこれらの組み合わせのことを指す。
【0159】
図26は、
図24に示す三次元形状データの各領域8におけるSDFから一律に“2”を減算した三次元形状データの例を示す図である。この場合、SDFの符号がプラスとなる領域8の数が
図24でSDFの符号がプラスとなる領域8の数よりも減少することから、
図24に示した物体2の形状を縮小した三次元形状データが得られることになる。
【0160】
また、
図27は、
図24に示す三次元形状データの各領域8におけるSDFに対して一律に“1”を加算した三次元形状データの例を示す図である。この場合、SDFの符号がプラスとなる領域8の数が
図24でSDFの符号がプラスとなる領域8の数よりも増加することから、
図24に示した物体2の形状を拡大した三次元形状データが得られることになる。
【0161】
領域8のSDFを演算する値に制約はなく、ユーザが指定した値の他、ユーザに指定された範囲に含まれる各々の領域8に設定されたSDFの最大値、最小値、及び平均値等の統計量を加算量及び減算量として使用してもよい。
【0162】
上記では、各々の領域8に一律に同じ値を加算または減算した例を示したが、領域8毎に加算する値または減算する値を変えるようにしてもよい。
【0163】
図28は、
図24に示す三次元形状データの各領域8におけるSDFに対して、上の行から下の行に向かって行毎に減算する値を大きくした三次元形状データの例を示す図である。なお、
図28では、最も上の行の行番号が“1”、行番号1の行の下に位置する行の行番号が“2”というように、下に位置する行ほど1つずつ増加する行番号が対応付けられている。
【0164】
行番号1の行に含まれる各領域8ではSDFから“0.1”を減算し、行番号2の行に含まれる各領域8ではSDFから“0.2”を減算し、行番号M(Mは1以上の整数)の行に含まれる各領域8ではSDFから“0.1M”を減算するというように行番号に応じてSDFの減算量を0.1ずつ増加させると、下に位置する行に含まれる領域8のSDFほど符号がマイナスになりやすくなるため、物体2の形状が先細りするように勾配がつけられた三次元形状データが得られることになる。
【0165】
このように領域8のSDFに対する減算量や加算量に勾配をつけることで、強度を高めたい物体2の箇所は太く、強度が劣っても問題のない物体の箇所は細くする他、金型の抜き勾配を付ける、などというように、ユーザが所望する目的に応じた物体2の形状が得られる。CPU12Aは、領域8に設定されている属性(例えば強度)を参照し、SDFに対する減算量や加算量を属性の内容に応じて領域8毎に変更させればよい。
【0166】
なお、ここでは一例として領域8に設定されたSDFの演算を行うことで物体2の形状を変形させる例を説明したが、CPU12Aは、例えば何らかの数式に従ったり、比較結果に応じて演算を分岐させたりすることで、領域8のSDFを変更してボクセル6の配置を変え、物体2の形状を変形させてもよい。
【0167】
当然のことながら、物体2の選択領域8に対する演算は、全体を一度に対象とすることに限定されず、ユーザが指定した範囲のみに演算を行う他、一定の曲率、SDF値、ボクセル6の集合数で表される太さ、または厚さ等の条件に合致した特定の範囲のみに演算をすることも容易に考えられる。
【0168】
また、編集装置10のCPU12Aは、領域8に設定されたSDFを他の値に置き換えることで物体2の形状を変形させる。
【0169】
図29は、
図24に示す三次元形状データで表される各領域8を、複数のグループ28A~グループ28Gに分割した例を示す図である。グループ28A、グループ28C、及びグループ28Gに含まれる各領域8のSDFを“-1.0”に置き換え、グループ28B、グループ28D、及びグループ28Fに含まれる各領域8のSDFを“+1.0”に置き換えれば、物体2が
図30に示すような形状に変形される。
【0170】
SDFを置き換える範囲は、例えばユーザによって指定される。また、SDFを置き換える範囲の形状に制約はなく、直方体に限らず、正方体、三角錐、球、及び円柱等、任意の三次元形状によって指定される。また、必ずしもSDFを置き換える範囲を三次元形状で指定する必要もなく、例えば矩形、円、三角形、台形、及びひし形等の任意の二次元形状で指定してもよい。
【0171】
SDFを置き換える範囲を指定する場合、領域8の境界に沿って範囲を指定する必要もなく、例えば領域8と交差するように領域8の中間を通るような範囲を指定してもよい。
【0172】
更に、SDFを置き換える範囲を領域8毎に指定してもよく、領域8のSDF値、または属性値によって指定してもよい。例えばSDFが±0.5以内、表示色が赤、歪み量が一定以上、元の三次元形状の形成面の曲率、三次元要素から変換されるポリゴンで構成される新たな三次元形状の曲率等の条件に合致する領域8の集合を、SDFを置き換える範囲として設定してもよい。
【0173】
また、編集装置10のCPU12Aは、領域8に設定されたSDFの符号を反転することで、物体2の形状を変形させる。
【0174】
図31は、三次元座標空間における各領域8に設定されたSDFを含む三次元形状データの一例を示す図である。
図31に示すような三次元形状データに対して、各領域8に設定されたSDFの符号を反転させたものが
図32である。
【0175】
図31においてマイナスのSDFがプラスのSDFに変換され、プラスのSDFがマイナスのSDFに変換されることから、
図31においてボクセル6が配置される領域8にはボクセル6を配置せず、ボクセル6が配置されていない領域8にボクセル6が配置することで得られる物体2の形状に変換される。すなわち、
図32に示す物体2の形状は、
図31に示す物体の形状と嵌合するような形状(「対になる形状」ともいう)となる。
【0176】
当然のことながら、SDFの符号を反転させる範囲の指定方法に制約はなく、SDFを置き換える範囲の指定方法で説明した指定方法が適用される。
【0177】
また、編集装置10のCPU12Aは、それぞれ物体2の形状を含む三次元座標空間の領域8毎に領域8に設定されたSDFを比較し、各領域8に共通する予め定めた選択規則に基づいて、比較する領域8毎に何れか1つのSDFを選択し、選択したSDFを比較した領域8における新たなSDFとして設定することで物体2の形状を変形させる。
【0178】
例えば
図24に示したような三次元形状データと、
図32に示したような三次元形状データがあったとする。なお、ここでは各々の三次元形状データにおける三次元座標空間の原点が共通であることを前提に説明を行うが、ユーザが任意の位置に合わせても良いし、選択領域8のサイズや座標系が異なってもよい。ピッチまたは座標系が一致していない場合は、例えばNearest Neighbor、Bilinear、Bicubic等といった補間処理を組み合わせてもよいし、座標変換を行ってもよいし、異なる座標系同士で選択規則を設けてもよい。
【0179】
CPU12Aは、
図24に示した三次元形状データと
図32に示した三次元形状データにおける同じ位置にある領域8のSDFを比較して、領域8毎に何れか一方のSDFを当該領域8の新たなSDFとする三次元形状データを生成する。
【0180】
図33は、
図24に示した三次元形状データと
図32に示した三次元形状データにおける同じ位置にある領域8のSDFのうち、小さいSDFを新たなSDFとして各領域8に設定することで得られる三次元形状データの例を示す図である。
【0181】
この場合、
図33に示すように、
図24に示した三次元形状データで表される物体と、
図32に示した三次元形状データで表される物体2が重複する箇所、すなわち、共通部分を示す物体2の三次元形状データが得られる。
【0182】
比較対象となるSDFの中から、小さい方のSDFを選択するという選択規則は、本実施の形態に係る各領域8に共通した選択規則の一例であり、例えば、大きい方のSDFを選択してもよい。この場合、比較対象となる2つの物体2を合体させた三次元形状データが得られる。
【0183】
または、各領域8ないし三次元要素に設定されている属性に応じた選択規則としてもよい。例えば領域8に特定の材料を示す属性が設定されている場合に比較対象となるSDFの中から大きい方のSDFを選択するようにすれば、特定の材料が連続している物体2を合体させた三次元形状データが得られる。また、三次元要素の配置は一切変更せず、各領域8に設定されている属性のみを比較対象とすることで、物体2の三次元形状は変えずに色や材料の配置のみを変更することができる。
【0184】
なお、CPU12Aは、SDFを比較する領域を指定してもよい。SDFを比較する範囲の指定方法に制約はなく、SDFを置き換える範囲の指定方法で説明した指定方法が適用される。
【0185】
また、編集装置10は、必ずしも
図4に示したボクセル変換処理を実装する必要なく、編集対象となるボクセル6で構成された三次元形状データを受け付け、受け付けた三次元形状データに対して物体2の変形処理、ポリゴン配置処理、及びポリゴン補正処理の少なくとも1つの処理を実行してもよい。
【0186】
このように本実施の形態に係る編集装置10によれば、ポリゴン4で構成された元の物体2の三次元形状データを直接編集して物体2の形状を変形するのではなく、ボクセル6で構成された物体2の三次元形状データに変換してから物体2の形状を変形する。また、本実施の形態に係る編集装置10は、ボクセル6で構成された物体2の三次元形状データをポリゴン4で構成された物体2の三次元形状データに変換する場合、ポリゴン4の頂点の位置を、対領域にそれぞれ設定されているSDFの大きさの比率に応じて補正する。
【0187】
なお、本実施の形態に係る編集装置10はSDFに基づいてボクセル6を配置する領域8を決定したが、領域8とポリゴン4の干渉状態を表す値であればSDF以外の値を用いてボクセル6を配置する領域8を決定してもよい。
【0188】
以上、実施の形態を用いて本発明について説明したが、本発明は実施の形態に記載の範囲には限定されない。本発明の要旨を逸脱しない範囲で実施の形態に多様な変更または改良を加えることができ、当該変更または改良を加えた形態も本発明の技術的範囲に含まれる。例えば、本発明の要旨を逸脱しない範囲で処理の順序を変更してもよい。
【0189】
実施の形態では、一例として各処理をソフトウェアで実現する形態について説明したが
図4、
図9、及び
図14に示した各フローチャートと同等の処理を、例えばASIC(Application Specific Integrated Circuit)、FPGA(Field Programmable Gate Array)、またはPLD(Programmable Logic Device)に実装し、ハードウェアで処理させるようにしてもよい。この場合、各処理をそれぞれソフトウェアで実現した場合と比較して、処理の高速化が図られる。
【0190】
このように、汎用的なプロセッサの一例であるCPU12Aを、例えばASIC、FPGA、PLD、GPU(Graphics Processing Unit)、及びFPU(Floating Point Unit)といった特定の処理に特化した専用のプロセッサに置き換えてもよい。
【0191】
また、各実施の形態におけるプロセッサの動作は、1つのCPU12Aによって実現されるのではなく、複数のプロセッサによって実現されるものであってもよい。更に、各実施形態におけるプロセッサの動作は、物理的に離れた位置に存在する複数のコンピュータ12に含まれるプロセッサが協働して実現するものであってもよい。
【0192】
上述した実施の形態では、三次元形状データの編集プログラムがROM12Bにインストールされている形態を説明したが、これに限定されるものではない。三次元形状データの編集プログラムは、コンピュータで読み取り可能な記憶媒体に記録された形態で提供することも可能である。例えば三次元形状データの編集プログラムを、CD(Compact Disc)-ROM、またはDVD(Digital Versatile Disc)-ROM等の光ディスクに記録した形態で提供してもよい。また、三次元形状データの編集プログラムを、例えばUSB(Universal Serial Bus)メモリやメモリカードといった可搬型の半導体メモリに記録した形態で提供してもよい。
【0193】
更に、編集装置10は通信部18を通じて、通信回線に接続された外部装置から本実施の形態に係る三次元形状データの編集プログラムを取得するようにしてもよい。
【符号の説明】
【0194】
2 物体、4 ポリゴン、6 ボクセル、8 領域、10 編集装置、12 コンピュータ、12A CPU、12B ROM、12C RAM、12D 不揮発性メモリ、14 操作部、16 表示部、18 通信部、20 判定領域、22 輪郭、24 補正点、26 領域の中心、28 グループ