特許第6972647号(P6972647)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

特許6972647三次元形状データの編集装置、及び三次元形状データの編集プログラム
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6972647
(24)【登録日】2021年11月8日
(45)【発行日】2021年11月24日
(54)【発明の名称】三次元形状データの編集装置、及び三次元形状データの編集プログラム
(51)【国際特許分類】
   G06F 30/10 20200101AFI20211111BHJP
   G06F 30/20 20200101ALI20211111BHJP
   B29C 64/393 20170101ALI20211111BHJP
   B33Y 50/00 20150101ALI20211111BHJP
   G06T 19/00 20110101ALI20211111BHJP
【FI】
   G06F30/10 100
   G06F30/20
   B29C64/393
   B33Y50/00
   G06T19/00 C
【請求項の数】11
【全頁数】26
(21)【出願番号】特願2017-94495(P2017-94495)
(22)【出願日】2017年5月11日
(65)【公開番号】特開2018-190316(P2018-190316A)
(43)【公開日】2018年11月29日
【審査請求日】2020年3月27日
(73)【特許権者】
【識別番号】000005496
【氏名又は名称】富士フイルムビジネスイノベーション株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】特許業務法人太陽国際特許事務所
(72)【発明者】
【氏名】高橋 智也
【審査官】 松浦 功
(56)【参考文献】
【文献】 特開平02−129764(JP,A)
【文献】 特開平07−168866(JP,A)
【文献】 特開2002−251419(JP,A)
【文献】 特開平06−019527(JP,A)
【文献】 特開平05−233733(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 30/00 −30/28
B29C 64/393
B33Y 50/00
G06T 15/00 −19/20
(57)【特許請求の範囲】
【請求項1】
三次元形状データで表された複数の三次元形状のうち、編集対象である第1の三次元形状と、前記第1の三次元形状と予め領域が重複して干渉する第2の三次元形状と、の干渉領域を抽出する抽出手段と、
前記第1の三次元形状の編集中に、前記抽出手段により抽出された前記干渉領域が消滅しないように前記第1の三次元形状の編集を制御する制御手段と、
を備えた三次元形状データの編集装置。
【請求項2】
前記抽出手段で前記干渉領域が1つ以上抽出される場合、1つ又は複数の前記干渉領域を前記第2の三次元形状との干渉の監視対象として選択する選択手段を備えた
請求項1記載の三次元形状データの編集装置。
【請求項3】
前記選択手段は、選択した前記干渉領域から前記第1の三次元形状に対する編集の基準となる基準点及び基準軸を設定する
請求項2記載の三次元形状データの編集装置。
【請求項4】
前記制御手段は、前記基準点が前記第2の三次元形状から離間しないように前記第1の三次元形状の編集を制御する
請求項3記載の三次元形状データの編集装置。
【請求項5】
前記干渉領域が消滅することを許可する指示を受け付ける受付手段を備え、
前記制御手段は、前記受付手段により前記指示が受け付けられた場合、前記第1の三次元形状の編集終了時に前記干渉領域が存在すれば、前記第1の三次元形状の編集中に前記干渉領域が消滅する編集を前記第1の三次元形状に対して許可する
請求項1〜請求項4の何れか1項に記載の三次元形状データの編集装置。
【請求項6】
前記制御手段は、前記第2の三次元形状と予め領域が重複して干渉する第3の三次元形状も前記第2の三次元形状として取り扱い、前記第2の三次元形状を構成する前記第3の三次元形状に、前記第1の三次元形状を干渉させる編集を許可する
請求項1〜請求項5の何れか1項に記載の三次元形状データの編集装置。
【請求項7】
前記制御手段は、前記第1の三次元形状と予め領域が重複して干渉する第3の三次元形状も前記第1の三次元形状として取り扱い、前記第1の三次元形状を構成する前記第3の三次元形状を、前記第2の三次元形状と干渉させる編集を許可する
請求項1〜請求項5の何れか1項に記載の三次元形状データの編集装置。
【請求項8】
前記抽出手段は、三次元形状同士が干渉する領域のうち、同じ属性を有する領域を前記干渉領域として抽出する
請求項1〜請求項7の何れか1項に記載の三次元形状データの編集装置。
【請求項9】
前記抽出手段は、三次元形状をビット列で表すことで、ビット演算によって干渉領域を抽出する
請求項1〜請求項7の何れか1項に記載の三次元形状データの編集装置。
【請求項10】
前記干渉領域は、一方の三次元形状の内部まで他方の三次元形状の箇所が入り込んでいる領域である
請求項1〜請求項9の何れか1項に記載の三次元形状データの編集装置。
【請求項11】
コンピュータを、請求項1〜請求項10の何れか1項に記載の三次元形状データの編集装置の各手段として機能させるための三次元形状データの編集プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、三次元形状データの編集装置、及び三次元形状データの編集プログラムに関する。
【背景技術】
【0002】
特許文献1には、三次元形状を図形表示させる三次元形状表示装置において、三次元形状を二次元平面に平行投影した形状を表示する形状表示部と、前記形状表示部で表示された形状と共に、計測基準となる尺度線分を表示する尺度線分表示部とを備え、表示された前記尺度線分と前記二次元平面に平行投影された形状とを比較することによって大きさを簡易的に計測できるようにしたことを特徴とする三次元形状表示装置が開示されている。
【0003】
特許文献2には、他の図形物体とともに表示された図形物体を変形させるためのシステムにおいて、図形物体を体積要素を伴う体積のある物体として特徴づけるためのコンピュータを含む手段と、前記の体積要素のうちの選ばれた1つを選択して動かすために前記コンピュータに結合されているユーザーインターフェースと、前記ユーザーインターフェースに応答して、前記ユーザーインターフェースにより指定された量だけ前記の選択された体積要素を運動させ、その運動の結果として前記図形物体を変形させるための図形物体変形手段と、前記図形物体の変形時に図形物体同士の衝突を検出して防止するための手段と、要素同士の相対的位置をその弾力性に基づいて弛緩させるための弛緩手段と、前記弛緩手段の出力に結合されて、前記の体積のある図形物体を動かし、変形させ、弛緩させた結果を再現するためのディスプレイを含む手段とから成ることを特徴とする図形物体を迅速に変形させるためのシステムが開示されている。
【0004】
特許文献3には、第1の立体画像と第2の立体画像を位置合わせ(registration)する方法であって、各画像はグレイスケールのボクセル(voxel)値の3次元配列であり、(a)複数の前記ボクセル(voxel)値の整列したペアに変異確率を定義するステップが設けられ、前記ボクセル(voxel)値の整列したペアは前記第1の画像からのボクセル(voxel)値と前記第2の画像からの空間的に対応したボクセル(voxel)値とから成り、各変異確率は前記第1の画像のボクセル(voxel)値が前記第2の画像の空間的に対応したボクセル(voxel)値に対応する尤度及びその逆に関係し、前記定義付けは前記第1の画像と前記第2の画像の選択された幾何学的関係に基づいて定義され、(b)前記第1の画像に対する前記第2の画像の幾何学的関係を定義する第1の変換を選択するステップが設けられ、(c)前記変異確率を使って整列したボクセル(voxel)のペアの所定の集まりに対して尤度の計量を計算するステップが設けられ、前記尤度の前記計量は前記第2の画像を前提として前記第1の画像を得る確率及びその逆を表し、(d)前記第1の画像に対する前記第2の画像の幾何学的関係を定義する異なる変換を選択するステップが設けられ、(e)前記第1の画像に対する前記第2の画像の幾何学的関係を定義する最適な変換が求まるまで(c)と(d)のステップを反復するステップが設けられ、前記最適な変換は前記尤度の最適な計量を与える方法が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2004−102979号公報
【特許文献2】特開平10−208078号公報
【特許文献3】特表2004−508856号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
近年、3Dプリンタの普及により、デジタルデータから直接最終製品を製造することが行われ始めているが、3Dプリンタでは、製造する造形物の三次元形状データを事前に作成する必要がある。
【0007】
一般的なユーザが一から造形物のモデリングを行って三次元形状データを生成するのは困難であるが、既に用意されている三次元形状データに基づく造形物を変形させて三次元形状データを生成するのは比較的容易である。しかしながら、造形物を構成する三次元形状に対して自由な編集が許可される場合、本来目標としている造形物の機能又は形状を損なうような編集が行われることがある。
【0008】
本発明は、三次元形状データで表される三次元形状を編集する際に、意図しない編集が行われてしまうことを抑制する三次元形状データの編集装置、及び三次元形状データの編集プログラムを提供することを目的とする。
【課題を解決するための手段】
【0009】
上記目的を達成するために、請求項1に記載の三次元形状データの編集装置の発明は、三次元形状データで表された複数の三次元形状のうち、編集対象である第1の三次元形状と、前記第1の三次元形状と予め領域が重複して干渉する第2の三次元形状と、の干渉領域を抽出する抽出手段と、前記第1の三次元形状の編集中に、前記抽出手段により抽出された前記干渉領域が消滅しないように前記第1の三次元形状の編集を制御する制御手段と、を備える。
【0010】
請求項2に記載の発明は、前記抽出手段で前記干渉領域が1つ以上抽出される場合、1つ又は複数の前記干渉領域を前記第2の三次元形状との干渉の監視対象として選択する選択手段を備える。
【0011】
請求項3に記載の発明は、前記選択手段は、選択した前記干渉領域から前記第1の三次元形状に対する編集の基準となる基準点及び基準軸を設定する。
【0012】
請求項4に記載の発明は、前記制御手段は、前記基準点が前記第2の三次元形状から離間しないように前記第1の三次元形状の編集を制御する。
【0013】
請求項5に記載の発明は、前記干渉領域が消滅することを許可する指示を受け付ける受付手段を備え、前記制御手段は、前記受付手段により前記指示が受け付けられた場合、前記第1の三次元形状の編集終了時に前記干渉領域が存在すれば、前記第1の三次元形状の編集中に前記干渉領域が消滅する編集を前記第1の三次元形状に対して許可する。
【0014】
請求項6に記載の発明は、前記制御手段は、前記第2の三次元形状と予め領域が重複して干渉する第3の三次元形状も前記第2の三次元形状として取り扱い、前記第2の三次元形状を構成する前記第3の三次元形状に、前記第1の三次元形状を干渉させる編集を許可する。
【0015】
請求項7に記載の発明は、前記制御手段は、前記第1の三次元形状と予め領域が重複して干渉する第3の三次元形状も前記第1の三次元形状として取り扱い、前記第1の三次元形状を構成する前記第3の三次元形状を、前記第2の三次元形状と干渉させる編集を許可する。
【0016】
請求項8に記載の発明は、前記抽出手段は、三次元形状同士が干渉する領域のうち、同じ属性を有する領域を前記干渉領域として抽出する。
【0017】
請求項9に記載の発明は、三次元形状をビット列で表すことで、ビット演算によって干渉領域を抽出する。
請求項10に記載の発明は、前記干渉領域は、一方の三次元形状の内部まで他方の三次元形状の箇所が入り込んでいる領域である。
【0018】
請求項11に記載の三次元形状データの編集プログラムの発明は、コンピュータを、請求項1〜請求項10の何れか1項に記載の三次元形状データの編集装置の各手段として機能させる
【発明の効果】
【0019】
請求項1及び請求項11に記載の発明によれば、三次元形状データで表される三次元形状を編集する際に、意図しない編集が行われてしまうことを抑制することができる、という効果を有する。
【0020】
請求項2に記載の発明によれば、編集によって消滅しないように制御される三次元形状の干渉領域を選択することができる、という効果を有する。
【0021】
請求項3に記載の発明によれば、干渉領域が消滅しないように編集を行うための基準点及び基準軸を設定することができる、という効果を有する。
【0022】
請求項4に記載の発明によれば、基準点が他の三次元形状から離間する編集を許可する場合と比較して、干渉領域を有する三次元形状を容易に作成することができる、という効果を有する。
【0023】
請求項5に記載の発明によれば、編集の過程においても三次元形状の干渉領域が消滅することを許可しない場合と比較して、三次元形状の編集に関する操作性が向上する、という効果を有する。
【0024】
請求項6に記載の発明によれば、干渉する複数の三次元形状を1つの三次元形状として取り扱わない場合と比較して、三次元形状の編集に関する自由度が向上する、という効果を有する。
【0025】
請求項7に記載の発明によれば、干渉する複数の三次元形状を1つの三次元形状として取り扱わない場合と比較して、三次元形状の編集に関する自由度が向上する、という効果を有する。
【0026】
請求項8に記載の発明によれば、属性を考慮することなく三次元形状の編集を行う場合と比較して、属性が干渉する領域を有する三次元形状を容易に作成することができると共に、属性が設定されている三次元形状に対して意図しない編集が行われてしまうことを抑制することができる、という効果を有する。
【0027】
請求項9に記載の発明によれば、ビット演算によって干渉領域を抽出することができる、という効果を有する。
【図面の簡単な説明】
【0028】
図1】編集装置の構成例を示す図である。
図2】三次元形状の一例を示す図である。
図3】第1実施形態に係る三次元形状データの編集処理の流れの一例を示すフローチャートである。
図4】三次元形状の編集例を示す図である。
図5】三次元形状をビット列で表現した場合の一例を示す図である。
図6】三次元形状を表すビット列のAND演算例を示す図である。
図7】三次元形状を表すビット列の表現例を示す図である。
図8】三次元形状が離間する編集例を示す図である。
図9】干渉領域が複数存在する三次元形状の一例を示す図である。
図10】干渉領域が複数存在する三次元形状の編集例を示す図である。
図11】干渉領域が1つになった三次元形状の編集例を示す図である。
図12】第2実施形態に係る三次元形状データの編集処理の流れの一例を示すフローチャートである。
図13】基準点の一例を示す図である。
図14】干渉領域の範囲外に基準点を設定した場合の編集例を示す図である。
図15】拡大編集に伴う基準点及び基準軸の一例を示す図である。
図16】干渉領域の範囲外に基準点を設定した場合の拡大編集例を示す図である。
図17】縮小編集に伴う基準点及び基準軸の一例を示す図である。
図18】干渉領域の範囲外に基準点を設定した場合の縮小編集例を示す図である。
図19】ベースとなる三次元形状が複数の三次元形状で構成された三次元形状の一例を示す図である。
図20】編集対象となる三次元形状が複数の三次元形状で構成された三次元形状の一例を示す図である。
図21】三次元形状を離間させる編集が望まれる三次元形状の一例を示す図である。
図22】三次元形状を離間させる編集が望まれる三次元形状の一例を示す図である。
図23】第3実施形態に係る三次元形状データの編集処理の流れの一例を示すフローチャートである。
図24】離間編集許可が与えられた場合の三次元形状の編集例を示す図である。
図25】属性を有する三次元形状の一例を示す図である。
図26】同じ属性を干渉させる編集例を示す図である。
図27】第4実施形態に係る三次元形状データの編集処理の流れの一例を示すフローチャートである。
図28】三次元形状を表すビット列の一例を示す図である。
【発明を実施するための形態】
【0029】
以下、図面を参照して、本発明を実施するための形態例を詳細に説明する。
【0030】
<第1実施形態>
まず、図1を参照して、本実施の形態に係る三次元形状データの編集装置10の構成について説明する。
【0031】
編集装置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を介して各々接続されている。
【0032】
また、I/O12Eには、操作部14、表示部16、通信部18、及び記憶部20が接続されている。なお、CPU12Aは抽出手段、制御手段、及び選択手段の一例であり、操作部14は受付手段の一例である。
【0033】
操作部14は、編集装置10のユーザから指示を受け付ける、例えばマウス、キーボード、及びタッチパネル等の入力デバイスを含んで構成される。
【0034】
表示部16は、例えば液晶ディスプレイ及び有機EL(Electro Luminescence)ディスプレイ等の表示デバイスを含んで構成される。
【0035】
通信部18は、例えばインターネット及びLAN(Local Area Network)といった通信回線に接続され、通信回線に接続されたパーソナルコンピュータ等の外部装置とデータ通信を行うためのインターフェースを有する。
【0036】
記憶部20は、ハードディスク等の不揮発性の記憶装置を含み、編集装置10で生成された三次元形状データ等を記憶する。
【0037】
図2は、三次元形状データによって表される三次元形状32の一例を示す図である。図2に示すように、編集装置10は、三次元形状32をX軸、Y軸、及びZ軸によって表されるXYZ座標(以降、「三次元座標空間」という)を用いて表す。
【0038】
本実施形態では、三次元形状データのデータフォーマットとして、三次元形状32をボクセル34の集合によって表現するデータフォーマットを用いた場合について説明するが、他のデータフォーマットを用いてもよい。
【0039】
ここで、ボクセル34とは、三次元形状32の基本要素であり、例えば直方体が用いられるが、直方体に限らず、球や円柱等を用いてもよい。ボクセル34を積み上げることで所望の三次元形状32が表現される。また、各ボクセル34には、例えば色、強度、材質、質感等のボクセル34の性質を表す属性が指定されており、ボクセル34の有無及びボクセル34の属性によって、三次元形状32の色や材質等が表現される。
【0040】
ここで、「材質」とは、樹脂、金属、ゴム等の材料のジャンルを表す情報、ABS、PLA等の材料名を表す情報、市販されている材料の商品名、商品番号等を表す情報、ISO、JIS等の規格で定められている材料名、略称、番号等の材料を表す情報、熱伝導率、導電率、磁性等の材料特性を表す情報の少なくとも1つの情報を含む。
【0041】
また、「質感」とは、三次元形状データの反射率、透過率、光沢、表面性状等の色だけではない見た目やさわり心地を表す属性を表す。
【0042】
なお、属性には、周期、数式、及び他の三次元形状データの少なくとも1つの情報を用いて設定される属性パターンを含む。属性パターンとは、一定周期の繰り返し、グラデーション、数式で表される傾斜や極点による表現、他の三次元形状データ等に従って三次元形状データの色、材質、質感等を連続的に変更すること、三次元形状データの指示された範囲を指示された形状で充填すること又は連続的に変更すること、の少なくとも1つを含む。
【0043】
上述したように、三次元形状32はボクセル34の集合によって表されるが、具体的には、例えば三次元座標空間におけるX、Y、Zの座標の要素値によって表される。三次元座標空間における座標を(X、Y、Z)で表せば、座標(X、Y、Z)にボクセル34が存在する場合は「(X、Y、Z)=1」とする。一方、座標(X、Y、Z)にボクセル34が存在しない場合は「(X、Y、Z)=0」とすることで、三次元形状32が表される。すなわち、三次元形状データは、ボクセル34の有無を示す座標(X、Y、Z)の要素値と、要素値が“1”のボクセル34に対応付けられた属性とを含む。
【0044】
なお、三次元形状32は、必ずしも三次元座標空間における座標(X、Y、Z)によって表される必要はなく、例えば座標(X、Y、Z)に一意に対応付けたインデックス番号で表してもよい。この場合、例えばインデックス番号に対応付けられた値が“1”であれば、インデックス番号で表される位置にボクセル34が存在することを表す。
【0045】
また、三次元形状32の形状に制約はなく、三次元形状データを用いて表現される形状であれば、どのような形状であってもよい。
【0046】
次に、三次元形状32を表す三次元形状データの編集処理の作用について説明する。以降の説明では、三次元座標空間で行われる三次元形状データの編集を分かりやすく説明するため、三次元形状32をXZ平面に投影した投影図を用いて説明することにする。XZ平面の投影図では、三次元形状32のY軸方向の形状が表されないが、三次元形状データをY軸方向に向かって編集した場合にも、以降に説明するXZ平面上での三次元形状データの編集と同じ処理が行われる。
【0047】
また、以降の説明では、異なる三次元形状32が互いに干渉するように三次元形状データを編集する場合について説明する。ここで、「干渉」とは、一方の三次元形状32の何れかの箇所が、他方の三次元形状32に接触する状態をいう。具体的には、一方の三次元形状32の表面が、他方の三次元形状32の表面に接触する状態や、三次元形状32同士の何れかの箇所が重複する状態をいう。
【0048】
複数の三次元形状32を含んで一体的に構成される造形物の編集を行う際に、編集によって、何れの三次元形状32とも干渉しない三次元形状32が生成されると、当該三次元形状32は造形物から分離してしまい、造形物を構成するパーツとして目的を果たさなくなる。
【0049】
したがって、異なる三次元形状32が互いに干渉するように三次元形状データを編集するという制約、換言すれば、異なる三次元形状32の干渉する領域(干渉領域)が消滅しないように三次元形状データを編集するという制約は、複数の三次元形状32を含んで一体的に構成される造形物を編集する上で必要な制約となる。
【0050】
本制約は、異なる三次元形状32を組み合わせてひとつながりの三次元形状データを作成し、一塊の造形物を造形する場合に適用されることが望ましい。つまり、複数の独立したパーツが組み立てられた状態の造形物の三次元形状データを作成する場合はこの限りではない。ただし、複数の独立したパーツ群に含まれる1つのパーツの三次元形状データを作成する場合には必要な制約となる.
【0051】
図3は、編集装置10で行われる三次元形状データの編集処理の流れの一例を示すフローチャートである。三次元形状データの編集処理を規定する編集プログラムはROM12Bに予め記憶されており、例えばユーザから三次元形状32の編集開始指示を受け付けると、CPU12Aが編集プログラムをROM12Bから読み出して実行する。
【0052】
まず、ステップS10において、CPU12Aは、編集に伴う三次元形状32の操作量を取得する。
【0053】
ここで、「編集」とは、三次元形状32の少なくとも一部に対して、変形、拡大、縮小、移動、回転、追加、削除、置換、及び合成等の処理を施すことにより三次元形状32の少なくとも一部の形状を変更することを含む。
【0054】
また、「編集」とは、三次元位置情報に付与される色、強度、材質、及び質感等の少なくとも1つの属性の少なくとも一部に対して、追加、削除、変更、置換、及び合成等の処理を施すことにより三次元形状32の少なくとも一部の属性を変更することを含む。
【0055】
図4は、三次元形状32を移動する編集例を示す図である。三次元形状32は、三次元形状32A及び三次元形状32Bを含んで構成される。例えば三次元形状32Aを三次元形状32Bと干渉させたままX軸方向に沿って移動させる場合の移動範囲は、三次元形状32Aの表面と三次元形状32Bの表面とが接触する距離X1の範囲内に制限される。三次元形状32Aが距離X1だけ移動すると、三次元形状32A’の位置まで移動するが、三次元形状32Aの移動距離が距離X1以下であれば、何れの距離においても三次元形状32Aが三次元形状32Bと干渉することになる。
【0056】
CPU12Aは、複数の三次元形状32のうち、ユーザによってマウス等で選択された少なくとも1つの三次元形状32(この場合、三次元形状32A)を編集対象として認識する。また、CPU12Aは、マウスの移動量及び移動方向を、選択された三次元形状32Aの操作量として操作部14から取得する。なお、三次元形状32のうち、編集対象として選択されなかった三次元形状32には編集が加えられないため、「ベースとなる三次元形状32B」ということがある。
【0057】
ステップS20において、CPU12Aは、ステップS10で取得した操作量に対応する三次元形状32Aの編集が、ベースとなる三次元形状32Bと干渉するような編集であるか否かを判定する。そして、CPU12Aは、判定結果を例えばRAM12Cに記憶する。三次元形状32Aが三次元形状32Bと干渉しているか否かは、例えばビット演算によって判定される。
【0058】
図5は、図4に示した三次元形状32をボクセル34の有無を表すビット列で表現した場合の一例を示す図である。上述したように、対応する座標に三次元形状32を造形するボクセル34の一部でも存在する場合は、座標の要素値は“1”となり、対応する座標にボクセル34がまったく存在しない場合は、座標の要素値は“0”となる。
【0059】
CPU12Aは、ステップS10で取得した操作量から編集後の三次元形状32Aの位置を算出し、仮に、三次元形状32Aが算出した位置にあるとみなした場合の三次元形状32Aと三次元形状32Bを、三次元座標空間におけるビット列で表す。そして、CPU12Aは、三次元形状32Aを表すビット列と、三次元形状32Bを表すビット列とに対してAND演算を行うことで干渉領域を抽出し、三次元形状32Aに対して三次元形状32Bと干渉するような編集が行われたか否かを判定する。
【0060】
図6は、三次元座標空間から抽出した同じ空間における三次元形状32Aと三次元形状32Bのビット列の一例を示す図である。
【0061】
CPU12Aは、三次元形状32Aのビット列と三次元形状32Bのビット列とをAND演算し、得られた演算結果の中に“1”が含まれる場合に、三次元形状32Aと三次元形状32Bが干渉していると判定する。ここでは、XZ平面に投影された三次元形状32A、32Bのビット列の内の1行を例にしたが、Y軸方向にもビット列が存在し、そのいずれかのビット列のAND演算結果の中に“1”が含まれた場合に、三次元形状32Aと三次元形状32Bが干渉していると判定することは言うまでもない。
【0062】
なお、三次元形状を表すデータフォーマットがボクセル34以外のデータフォーマットで表されている場合であっても、図6に示すように三次元形状をビット列で表したうえでAND演算することにより、高速に干渉領域を抽出することができるメリットがあるため、三次元形状をボクセル化して判定してもよい。この場合、三次元形状全体をボクセル化してもよいし、必要な範囲のみをボクセル化してもよい。
【0063】
例えば三次元形状32Aを内包する範囲をバウンディングボックスAとして、三次元形状32Bを内包する範囲をバウンディングボックスBとした場合、「必要な範囲」とは、バウンディングボックスAとバウンディングボックスBが交わる領域に含まれる三次元形状32A、32Bの部分をいう。三次元形状のボクセル化は一時的でもよく、例えば干渉判定が終了した際に破棄してもよいし、ボクセル化したデータを次回の干渉判定に備えて記憶しておいてもよい。
【0064】
なお、干渉領域を抽出するために三次元形状をボクセル化することは必須ではない。三次元形状の必要な範囲をビット列で表せれば十分である。例えば必要な範囲内に対して、三次元形状が存在する座標の値を“1”、三次元形状が存在しない座標の値を“0”とするビットとして扱ってもよい。
【0065】
また、干渉領域を抽出するために、ビット列のAND演算を行うことも必須ではない。例えば、三次元形状32A、32Bを構成する点、線、及び面等の構成要素のうち、互いに十分近い範囲に含まれる構成要素同士の接触判定を行い、接触または交差していることを判定することで干渉領域を抽出してもよい。ここで「十分近い範囲」とは、予め定めた範囲でもよいし、編集対象となっている三次元形状32A、32Bの大きさから導いてもよい。例えば自らの大きさの一回り外側の範囲としてもよい。または、ステップS10により取得される操作量に基づいて範囲を導いてもよい。
【0066】
このように、三次元形状同士の干渉領域を抽出する方法については特に制限はなく、三次元形状同士の接触判定に用いられる公知の手法が適用される。
【0067】
なお、CPU12AはAND演算を行う場合、図7に示すように、編集対象である三次元形状32Aの輪郭と隣接する座標(ハッチングで示した座標)の要素値を“0”から“1”に変更した上でAND演算を行う。これは、三次元形状32Aと三次元形状32Bが互いの表面で接触する場合も干渉状態にあると判定するためである。こうした座標の要素値の変更は、ビット列のAND演算の際に一時的に行う変更であり、CPU12Aは、AND演算終了後に、三次元形状32Aを表す座標の要素値を変更前の要素値に戻す。
【0068】
ステップS30において、CPU12Aは、ステップS20の干渉判定によって、三次元形状32Aと三次元形状32Bとの間に干渉領域が存在しないと判定した場合、ステップS60に移行する。この場合、図8に示すように、ユーザによって、例えば三次元形状32Aが三次元形状32Bから離間するような移動が行われたことを示す。
【0069】
したがって、ステップS60において、CPU12Aは、編集対象である三次元形状32Aを、ベースとなる三次元形状32Bから離間させずに編集するように、表示部16に警告を表示する。または、警告を表示したうえで、自動的に三次元形状32A、32Bが干渉する位置まで操作を戻してもよいし、三次元形状32A、32Bの干渉領域が消滅する直前の位置で操作を制限してもよい。なお、CPU12Aは、音声で警告を通知するようにしてもよい。
【0070】
そして、ステップS10に移行して、CPU12Aは、編集に伴う次の操作量を取得するまで待機する。すなわち、CPU12Aは、直前にステップS10で取得した操作量に対応した編集を実行しない。
【0071】
なお、ステップS20の干渉判定は、ステップS10でユーザによる操作が行われている間、リアルタイムで都度判定してもよい。ユーザによってマウス等で選択された少なくとも1つの三次元形状32を編集対象として認識した時点で、編集に伴い三次元形状32が三次元座標空間内を移動した場合の干渉判定を座標毎に行って、予め干渉範囲が消滅しない操作量の限度を算出しておき、ステップS30の干渉領域の有無の判定に用いてもよい。もちろん、ユーザによる操作が終了した時点で1度だけ干渉判定を行ってもよい。
【0072】
一方、ステップS30の判定処理において、三次元形状32Aと三次元形状32Bとの間に干渉領域が存在すると判定した場合には、ステップS40に移行する。
【0073】
ステップS40において、CPU12Aは、ステップS10で取得した操作量(例えば移動量)に対応する三次元形状32Aの編集を実行する。編集の実行に伴って、CPU12Aは、編集内容に従った三次元形状データを生成すると共に、編集後の三次元形状32Aの位置を表すビット列の更新を行う。
【0074】
ステップS50において、CPU12Aは、操作部14を介してユーザから編集の終了指示を受け付けたか否かを判定し、編集の終了指示を受け付けていない場合にはステップS10に移行して、編集に伴う次の操作量を取得するまで待機する。一方、編集の終了指示を受け付けた場合には、生成した三次元形状データを記憶部20に記憶して、図3に示した三次元形状データの編集処理を終了する。
【0075】
図3に示した三次元形状データの編集処理では、図4のように干渉領域が1箇所しか存在しない三次元形状32ついて説明したが、干渉領域が複数存在する場合であっても同様の処理が実行される。
【0076】
図9は、干渉領域が2つ存在する三次元形状32の一例を示す図である。三次元形状32は、三次元形状32A及び三次元形状32Bの2つのパーツを含んで構成され、干渉領域36A及び干渉領域36Bを有する。以降では、干渉領域36A及び干渉領域36Bを特に区別する必要がない場合には、「干渉領域36」ということにする。
【0077】
例えば干渉領域36が2つ存在することを三次元形状32の編集の制約条件とした場合、CPU12Aは、図3のステップS20で干渉領域36が2箇所抽出された際に、三次元形状32Aが三次元形状32Bと干渉していると判定すればよい。したがって、編集装置10は、図9に示した三次元形状32Aを移動させ、図10に示すように2つの干渉領域36A、36Bが存在する三次元形状32への編集を許可する。
【0078】
一方、編集装置10は、図9に示した三次元形状32Aを移動させ、図11に示すように1つの干渉領域36しか存在しない三次元形状32に修正する編集に対しては警告を表示して、三次元形状32の編集を許可しないようにする。
【0079】
しかし、干渉領域36が少なくとも1つ存在すればよいことを三次元形状32の編集の制約条件とした場合には、編集装置10は、図11に示した三次元形状32への編集を許可する。
【0080】
このように編集装置10は、干渉領域36が消滅しないように三次元形状32の編集を制御する。したがって、編集対象である三次元形状32Aがベースとなる三次元形状32Bから離間しないため、編集装置10は、ユーザが意図しない編集が行われることを抑制する。
【0081】
<第2実施形態>
第1実施形態では、三次元形状32の移動を例にして編集装置10での三次元形状データの編集について説明した。第2実施形態では、基準点及び基準軸を用いて三次元形状データの編集を行う編集装置10について説明する。
【0082】
上述したように、編集装置10での編集には三次元形状32の移動の他、変形、拡大、縮小、回転、追加、削除、置換、及び合成等が含まれる。こうした編集の中には、例えば三次元形状32の回転、拡大、及び縮小等のように、特定の点及び軸を用いて三次元形状32を変形する等の処理が含まれる。この場合、三次元形状32の編集を行う際に、編集の基準となる特定の点及び軸を設定する必要がある。
【0083】
以降では、三次元形状32の編集を行う上で編集の基準となる特定の点を「基準点」といい、編集の基準となる軸を「基準軸」という。
【0084】
次に、編集装置10での基準点及び基準軸を用いた編集処理の作用について説明する。
【0085】
図12は、編集装置10で行われる基準点及び基準軸を用いた三次元形状データの編集処理の流れの一例を示すフローチャートである。三次元形状データの編集処理を規定する編集プログラムはROM12Bに予め記憶されており、例えばユーザから三次元形状32の編集開始指示を受け付けると、CPU12Aが編集プログラムをROM12Bから読み出して実行する。なお、ここでは、編集開始指示で指定される編集内容は、例えば回転等に代表される基準点及び基準軸を用いる編集であるものとし、編集対象となる三次元形状32はユーザによって予め選択されているものとする。
【0086】
図12に示す編集処理が、第1実施形態において説明した図3の編集処理と異なる点は、ステップS2及びS4が追加された点であり、その他の処理については図3で説明した編集処理と同じ処理を行う。したがって、以降では、図3に示した編集処理とは異なる点を中心に、図12に示す編集処理について説明する。
【0087】
まず、ステップS2において、CPU12Aは、編集前における三次元形状32の干渉領域36を取得する。既に説明したように、三次元形状32の干渉領域36は、三次元座標空間における複数の三次元形状32のビット列をAND演算することで取得される。
【0088】
例えば、図13に示すように、三次元形状32が三次元形状32A及び三次元形状32Bの2つのパーツを含んで構成される場合、干渉領域36が取得される。
【0089】
ステップS4において、CPU12Aは、ステップS2で選択した干渉領域36の範囲内から編集の基準点を設定する。また、CPU12Aは、設定した基準点に対して基準軸を設定する。図13の例では干渉領域36の輪郭面に設定された点が基準点38であり、基準点38を通過し、X、Y、Z軸の各々の方向に沿った線分が基準軸X’、Y’、Z’となる。なお、図13において基準軸Y’は図示していないが、基準軸Y’は、基準軸X’及び基準軸Z’とそれぞれ直交する方向に沿った基準軸である。
【0090】
図13の例では、基準点及び基準軸を用いた三次元形状32の編集のうち、基準軸Y’周りの回転を例とした説明を示しているが、基準軸X’及び基準軸Z’周りの回転も同様の制御によって行われることは言うまでもない。
【0091】
基準点38は、干渉領域36の範囲内であれば何れの位置に設定してもよく、干渉領域36の輪郭面に限らず、干渉領域36の内部に設定してもよいことは言うまでもない。例えば干渉領域36の重心点、又は三次元座標空間の原点に最も近い点等を基準点38に設定してもよい。
【0092】
図14に示すように、例えば基準点38を干渉領域36とは異なる三次元形状32Aの箇所に設定し、基準点38を通過するY軸方向の基準軸を回転軸として三次元形状32Aを回転させたとする。この場合、三次元形状32Aが三次元形状32A’で表される位置まで回転すると、三次元形状32Aは三次元形状32Bから離間してしまい、三次元形状32A、32Bを含んで一体的に構成される造形物の編集に適用される制約条件が満たされなくなってしまう。
【0093】
したがって、CPU12Aは、基準点38を三次元形状32の干渉領域36に設定することが好ましい。
【0094】
以降、CPU12Aは、ステップS10で操作量の一例である三次元形状32Aの回転量を取得し、ステップS4で設定した基準軸を回転軸として、三次元形状32Aを取得した回転量だけ回転させる編集を行う。なお、CPU12Aは、ステップS20で三次元形状32に対して干渉領域36が存在するか判定し、干渉領域36が消滅するような編集が行われないよう制御する。
【0095】
図13及び図14の例では、基準点及び基準軸を用いた三次元形状32の編集のうち、基準軸Y’周りの回転を例とした説明を行ったが、基準軸X’及び基準軸Z’周りの回転も同様の制御によって行われることは言うまでもない。また、上記では、三次元形状32Aを回転させる編集を例にして、基準点38及び基準軸の設定について説明したが、三次元形状32Aを拡大及び縮小する編集等においても基準点38及び基準軸が設定される。
【0096】
図15は、三次元形状32Aを拡大する編集例を示す図である。図15に示す例では、干渉領域36の輪郭面に設定された点が基準点38であり、X軸に沿った線分(基準軸X’)が基準軸40となる。なお、基準軸40は、ユーザが指定した拡大方向に沿って設定すればよい。図15に示すように、基準点38は干渉領域36の範囲内に設定されている。したがって、三次元形状32Aの頂点Qが基準軸40の方向に沿ってQ’の位置に来るような拡大率で、基準点38を中心にして三次元形状32Aを拡大しても、三次元形状32Aを拡大した三次元形状32A’が三次元形状32Bから離間することはない。
【0097】
しかしながら、図16に示すように、基準点38を干渉領域36とは異なる三次元形状32Aの箇所に設定し、基準点38を中心にして三次元形状32Aの頂点QがQ’の位置に来るような拡大率で三次元形状32Aを拡大すると、拡大後の三次元形状32A’が、三次元形状32Bを貫通するような編集が行われることがある。この場合、三次元形状32Aと三次元形状32Bとの間に干渉領域36は存在するが、ベースとなる三次元形状32Bを三次元形状32A’が貫通してしまい、三次元形状32Bから突起している三次元形状32Aを拡大するという当初の目的から外れた編集となる。したがって、編集装置10は、基準点38を三次元形状32の干渉領域36に設定することが好ましい。
【0098】
図17は、三次元形状32Aを縮小する編集例を示す図である。図17に示す例では、干渉領域36の輪郭面に設定された点が基準点38であり、X軸に沿った線分(基準軸X’)が基準軸40となる。なお、基準軸40は、ユーザが指定した縮小方向に沿って設定すればよい。図17に示すように、基準点38は干渉領域36の範囲内に設定されている。したがって、三次元形状32Aの頂点Qが基準軸40の方向に沿ってQ’の位置に来るような縮小率で、基準点38を中心にして三次元形状32Aを縮小しても、三次元形状32Aを縮小した三次元形状32A’が三次元形状32Bから離間することはない。
【0099】
しかしながら、図18に示すように、基準点38を干渉領域36とは異なる三次元形状32Aの箇所に設定し、基準点38を中心にして三次元形状32Aの頂点QがQ’の位置に来るような縮小率で三次元形状32Aを縮小すると、縮小後の三次元形状32A’が、三次元形状32Bから離間するような編集が行われることがある。したがって、編集装置10は、基準点38を三次元形状32の干渉領域36に設定することが好ましい。
【0100】
なお、上述した例では、編集装置10が基準点38を1つ設定したが、干渉領域36毎に基準点38の候補を表示部16に複数提示し、少なくとも1つの基準点38をユーザに選択させるようにしてもよい。
【0101】
また、編集装置10では、ユーザが指示した方向に従って基準軸40を設定したが、ユーザの指示によらずに、編集装置10で基準軸40を設定するようにしてもよい。編集装置10は、例えばどのような操作量に対しても、干渉領域36が存在するような編集が行われる軸を基準軸40として設定すればよい。編集装置10が基準軸40を設定することで、ユーザが意図しない編集が行われることが抑制されるため、三次元形状32の編集に対する操作性が向上する。
【0102】
このように編集装置10は、基準点38及び基準軸40を用いた三次元形状データの編集を行う場合、干渉領域36の範囲内に基準点38を設定すると共に、例えば三次元形状32の回転軸及び対称軸といった編集の基準となる基準軸40を設定する。したがって、編集対象である三次元形状32Aがベースとなる三次元形状32Bから離間しないため、編集装置10は、ユーザが意図しない編集が行われることを抑制する。
【0103】
なお、図15図18に示した例では、基準軸X’の方向に沿った三次元形状32の拡大及び縮小について説明したが、基準軸Y’及び基準軸Z’の方向に沿った三次元形状32の拡大及び縮小も同様の制御によって行われることは言うまでもない。
【0104】
<第1実施形態及び第2実施形態の変形例>
第1実施形態及び第2実施形態に係る三次元形状32は、編集対象である三次元形状32A及びベースとなる三次元形状32Bが共に1つである構成例を示したが、複数の三次元形状32で構成されることもある。
【0105】
図19は、ベースとなる三次元形状32Bが、三次元形状32B−1及び三次元形状32B−2を含んで構成された三次元形状32の例を示す図である。
【0106】
三次元形状32B−1及び三次元形状32B−2に干渉領域36が存在する場合、編集装置10は、三次元形状32B−1及び三次元形状32B−2を1つの一体化された三次元形状32Bとして取り扱う。
【0107】
すなわち、編集装置10は、図3及び図12に示したステップS20の判定処理において、三次元形状32B−1及び三次元形状32B−2を組み合わせた形状を三次元形状32Bとみなしてビット列を生成する。したがって、図19に示すように、編集装置10は、三次元形状32B−1に干渉している三次元形状32Aを三次元形状32B−2に移動する編集を許可する。
【0108】
一方、図20は、編集対象である三次元形状32Aが、三次元形状32A−1及び三次元形状32A−2を含んで構成された三次元形状32の例を示す図である。
【0109】
三次元形状32A−1及び三次元形状32A−2に干渉領域36が存在する場合、編集装置10は、三次元形状32A−1及び三次元形状32A−2を1つの一体化された三次元形状32Aとして取り扱う。
【0110】
すなわち、編集装置10は、図3及び図12に示したステップS20の判定処理において、三次元形状32A−1及び三次元形状32A−2を組み合わせた形状を三次元形状32Aとみなしてビット列を生成する。したがって、図20に示すように、編集装置10は、当初三次元形状32A−2が三次元形状32Bに干渉している三次元形状32Aを回転し、三次元形状32A−1を三次元形状32Bに干渉させる編集を許可する。
【0111】
このように、複数の三次元形状を1つの三次元形状として取り扱うことで、三次元形状32に対する編集の自由度が向上する。
【0112】
<第3実施形態>
第1実施形態及び第2実施形態に係る編集装置10、並びにその変形例では、編集対象である三次元形状32Aがベースとなる三次元形状32Bから離間しないように編集を制御した。
【0113】
しかしながら、三次元形状32の編集内容によっては、編集対象である三次元形状32Aがベースとなる三次元形状32Bから一時的に離間する編集を行いたいことがある。
【0114】
図21は、三次元形状32A及び三次元形状32Bを含んで構成される三次元形状32の一例を示す図である。
【0115】
三次元形状32Bは、2つの突起部32B1、32B2を有するU字形をした三次元形状であり、一方の突起部32B1の先端に、三次元形状32Aが取り付けられている。
【0116】
三次元形状32Aを三次元形状32Bの他方の突起部32B2に移動させる場合、第1実施形態及び第2実施形態に係る編集装置10では、三次元形状32Aが三次元形状32Bから離間しないように、三次元形状32Aを矢印F1で示す経路に沿って移動させる必要がある。しかし、矢印F1で示す経路よりも矢印F2で示す経路の方が短いため、遠回りして三次元形状32Aを移動させることにストレスを感じるユーザが現れる場合がある。
【0117】
図22も、三次元形状32A及び三次元形状32Bを含んで構成される三次元形状32の一例を示す図である。
【0118】
三次元形状32Bの中央には開口部が設けられており、開口部を挟んだ三次元形状32Bの一方の端部に、三次元形状32Aが取り付けられている。
【0119】
三次元形状32Aを、開口部を挟んだ位置にある他方の端部に移動させる場合、第1実施形態及び第2実施形態に係る編集装置10では、三次元形状32Aが三次元形状32Bから離間しないように、三次元形状32Aを矢印F1で示す経路に沿って移動させる必要がある。しかし、矢印F1で示す経路よりも、開口部を横断する矢印F2で示す経路の方が短いため、遠回りして三次元形状32Aを移動させることにストレスを感じるユーザが現れる場合がある。
【0120】
以降では、干渉領域36が編集途中で一時的に消滅することを許可する編集装置10Aの作用について説明する。編集装置10Aの構成は、図1に示した編集装置10と同じ構成を有する。
【0121】
図23は、編集装置10Aで行われる三次元形状データの編集処理の流れの一例を示すフローチャートである。三次元形状データの編集処理を規定する編集プログラムはROM12Bに予め記憶されており、例えばユーザから三次元形状32の編集開始指示を受け付けると、CPU12Aが編集プログラムをROM12Bから読み出して実行する。
【0122】
図23に示す編集処理が、第1実施形態において説明した図3の編集処理と異なる点は、ステップS35、S70、S80、及びS90が追加された点である。その他の処理については、図3で説明した編集処理と同じ処理を行う。したがって、以降では、図3に示した編集処理とは異なる点を中心に、図23に示す編集処理について説明する。
【0123】
ステップS30で、編集対象である三次元形状32Aに干渉領域36が存在しないと判定された場合、ステップS35に移行する。
【0124】
ステップS35において、CPU12Aは、三次元形状32Aを三次元形状32Bから離間させ、干渉領域36が消滅するような編集を許可する離間編集許可を受け付けたか否かを判定する。離間編集許可は、ユーザが操作部14を操作することでCPU12Aに通知される。
【0125】
離間編集許可を受け付けていない場合はステップS60に移行し、編集装置10と同じく、CPU12Aは、編集対象である三次元形状32Aがベースとなる三次元形状32Bから離間しないように編集を制御する。
【0126】
一方、離間編集許可を受け付けている場合にはステップS40に移行し、編集を実行する。すなわち、三次元形状32Aが三次元形状32Bから離間するような編集が行われている場合であっても、離間編集許可があればそのまま編集を実行する。したがって、図21及び図22の矢印F2で示した経路に沿って三次元形状32Aを移動させる等の編集が許可されることになる。
【0127】
ステップS50で編集の終了が判定され、編集の終了指示を受け付けた場合にはステップS70に移行する。
【0128】
ステップS70において、CPU12Aは、ステップS20と同じ処理を実行して、編集終了時における三次元形状32Aが、ベースとなる三次元形状32Bと干渉する位置にあるか否かを判定する。
【0129】
ステップS80において、CPU12Aは、ステップS70の干渉判定によって、三次元形状32Aと三次元形状32Bとの間に干渉領域36が存在しないと判定した場合、ステップS90に移行する。
【0130】
ステップS90において、CPU12Aは、ステップS60と同じく、編集対象である三次元形状32Aを、ベースとなる三次元形状32Bから離間させずに編集するように、表示部16に警告を表示する。そして、ステップS10に移行して、CPU12Aは、編集に伴う次の操作量を取得するまで待機する。すなわち、CPU12Aは、編集の終了時において、三次元形状32Aが三次元形状32Bから離間していないことを確認する。三次元形状32Aが三次元形状32Bから離間している場合には、編集の終了指示を受け付けたとしても、三次元形状32Aが三次元形状32Bに干渉するまで、ユーザに三次元形状32の編集を継続させる。
【0131】
または、三次元形状32Aが三次元形状32Bから離間している場合に編集の終了指示を受け付けた場合、三次元形状32Aが最寄りの三次元形状32Bに干渉するようにCPU12Aで自動的に編集してから、三次元形状32の編集を終了するようにしてもよい。この場合、三次元形状32が自動的に干渉するように編集されることを事前に通知するメッセージ、又は三次元形状32が自動的に干渉するように編集されたことを通知するメッセージをユーザに提供することが好ましい。
【0132】
一方、ステップS80の判定処理が肯定判定の場合には、図23に示した三次元形状データの編集処理を終了する。
【0133】
なお、編集装置10Aにおいても、複数の三次元形状で構成された三次元形状32Aを1つの一体化された三次元形状32Aとして取り扱ってもよい。また、編集装置10Aは、複数の三次元形状で構成された三次元形状32Bを1つの一体化された三次元形状32Bとして取り扱ってもよい。
【0134】
図24は、ベースとなる三次元形状32Bが、三次元形状32B−1及び三次元形状32B−2で構成された三次元形状32の例を示す図である。
【0135】
編集装置10Aは、三次元形状32B−1及び三次元形状32B−2を、1つの一体化された三次元形状32Bとして取り扱う。したがって、編集装置10Aは、図24の矢印F2で示す経路に沿って三次元形状32Aが三次元形状32B−1から離間し、三次元形状32B−2に移動する編集を許可する。
【0136】
このように編集装置10Aは、ユーザから離間編集許可を受け付けた場合、編集対象である三次元形状32Aがベースとなる三次元形状32Bから離間する編集を許可する。編集装置10Aは、編集の終了指示を受け付けた後、三次元形状32Aが三次元形状32Bに干渉しているか否かを判定し、干渉していなければユーザに編集のやり直しを促す。したがって、編集装置10Aは、編集の自由度を高めた上で、ユーザが意図しない編集が行われることを抑制する。
【0137】
ここでは、三次元形状32Aの移動を例にして編集装置10Aの作用を説明したが、回転、拡大、及び縮小等の他の編集に対しても、図23に示した編集処理が適用されることは言うまでもない。
【0138】
<第4実施形態>
第1実施形態及び第2実施形態に係る編集装置10、並びに、第3実施形態に係る編集装置10Aは、例えば図25に示すように、三次元形状32Aと三次元形状32Bの一部でも干渉していれば三次元形状32A、32B同士が干渉していると判定した。
【0139】
既に説明したように、三次元形状32を構成する各々のボクセル34には様々な属性が指定されている。したがって、図25に示す三次元形状32A、32Bに、それぞれ異なる材質M1及び材質M2で構成された領域が指定されているとする。
【0140】
この場合、同じ材料同士を接続した方が、異なる材料同士を接続するよりも接続が容易で、且つ、接続箇所の強度も保てることがある。したがって、状況によっては図26に示すように、例えば材質が“M2”と指定された領域同士が干渉するように三次元形状データの編集を行いたい場面が発生することがある。
【0141】
第4実施形態では、同じ属性を有する領域が干渉するように三次元形状データの編集を行う編集装置10Bについて説明する。なお、編集装置10Bの構成は、図1に示した編集装置10と同じ構成を有する。
【0142】
図27は、編集装置10Bで行われる三次元形状データの編集処理の流れの一例を示すフローチャートである。三次元形状データの編集処理を規定する編集プログラムはROM12Bに予め記憶されており、例えばユーザから三次元形状32の編集開始指示を受け付けると、CPU12Aが編集プログラムをROM12Bから読み出して実行する。
【0143】
図27に示す編集処理が、第1実施形態において説明した図3の編集処理と異なる点は、ステップS5が追加され、ステップS20がステップS20Aに置き換えられた点である。その他の処理については、図3で説明した編集処理と同じ処理を行う。したがって、以降では、図3に示した編集処理とは異なる点を中心に、図25に示した三次元形状32を例にして図27に示す編集処理を説明する。
【0144】
まず、ステップS5において、CPU12Aは三次元形状32A及び三次元形状32Bのそれぞれの属性を取得する。取得する属性の種類は、例えばユーザによって操作部14から指定される。図25の例では、同じ材質を有する領域を干渉させる編集を行うことから、属性の種類としては「材質」が取得され、判定対象となる材質として、例えば「材質M2」が取得される。
【0145】
ステップS20Aにおいて、CPU12Aは、ステップS10で取得した操作量から編集後の三次元形状32Aの位置を算出し、仮に、三次元形状32Aが算出した位置にあるとみなした場合の三次元形状32Aと三次元形状32Bを、三次元座標空間におけるビット列で表す。この際、CPU12Aは、ステップS5で取得した属性に関するビット列で、三次元形状32A及び三次元形状32Bを表す。
【0146】
図28は、図25に示す三次元形状32を表すビット列の一例を示す図である。図28では、属性の判定対象である“M2”の材質が割り当てられている三次元形状32の座標の要素値を“1”に設定し、その他の座標の要素値を“0”に設定している。
【0147】
CPU12Aは、三次元形状32Aを表すビット列と、三次元形状32Bを表すビット列とに対してAND演算を行うことで、材質M2が干渉する干渉領域36を抽出する。そして、CPU12Aは、材質M2の属性を有する三次元形状32Aの領域が、同じく材質M2の属性を有する三次元形状32Bの領域と干渉するような編集が行われたか否かを判定する。
【0148】
なお、CPU12AはAND演算を行う場合、編集対象である三次元形状32Aの材質M2の領域と隣接する座標の要素値も“1”に変更した上でAND演算を行う。これにより、三次元形状32Aのうち材質M2で構成される領域と、三次元形状32Bのうち材質M2で構成される領域と表面で接触する場合も、干渉状態にあると判定される。
【0149】
以降、ステップS30で材質M2の干渉が認められない場合にはステップS60で警告を表示し、CPU12Aは、三次元形状32Aの材質M2の領域が三次元形状32Bの材質M2の領域から離間しないように編集を制御する。
【0150】
このように第4実施形態に係る編集装置10Bによれば、同じ属性が干渉する領域を三次元形状32の干渉領域として抽出する。干渉領域の判定対象となる属性を様々に選択することで、目的に応じた三次元形状32の編集が行われる。
【0151】
なお、干渉領域の判定対象となる属性は複数選択してもよい。この場合、図27のステップS20Aにおいて、選択した複数種類の属性のうち、少なくとも1つの属性を含む領域が干渉していれば干渉領域36として抽出してもよく、また、選択した全ての属性を含む領域が干渉している場合に限り、干渉領域36として抽出してもよい。
【0152】
以上、各実施形態を用いて本発明について説明したが、本発明は各実施形態に記載の範囲には限定されない。本発明の要旨を逸脱しない範囲で各実施形態に多様な変更または改良を加えることができ、当該変更または改良を加えた形態も本発明の技術的範囲に含まれる。
【0153】
例えば、図3図12図23、及び図27に示した三次元形状データの編集処理をASIC(Application Specific Integrated Circuit)等のハードウエアで実現するようにしてもよい。この場合、ソフトウエアで実現する場合に比べて、処理の高速化が図られる。
【0154】
また、各実施形態では、三次元形状データの編集プログラムがROM12Bにインストールされている形態を説明したが、これに限定されるものではない。本発明に係る編集プログラムを、コンピュータ読取可能な記憶媒体に記録した形態で提供してもよい。例えば、本発明に係る編集プログラムを、CD(Compact Disc)−ROM及びDVD(Digital Versatile Disc)−ROM等の光ディスクに記録した形態、若しくはUSB(Universal Serial Bus)メモリ及びメモリカード等の半導体メモリに記録した形態で提供してもよい。また、本発明に係る編集プログラムを、通信部18に接続された通信回線を介して外部装置から取得するようにしてもよい。
【符号の説明】
【0155】
10(10A、10B)・・・編集装置、12・・・コントローラ、12A・・・CPU、12B・・・ROM、12C・・・RAM、12D・・・不揮発性メモリ、14・・・操作部、16・・・表示部、18・・・通信部、20・・・記憶部、32(32A、32B)・・・三次元形状、34・・・ボクセル、36(36A、36B)・・・干渉領域、38・・・基準点、40・・・基準軸
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28