(57)【要約】【課題】三次元形状を編集する際に、意図しない編集が行われてしまうことを抑制する。【解決手段】編集装置１０は、三次元形状データで表された複数の三次元形状３２のうち、編集対象である三次元形状３２Ａと、三次元形状３２Ａと干渉する三次元形状３２Ｂと、の干渉領域３６を抽出し、抽出した干渉領域３６が消滅しないように三次元形状３２Ａの編集を制御する。【選択図】図３
2018190316.tif 000002
【特許請求の範囲】
【請求項１】
三次元形状データで表された複数の三次元形状のうち、編集対象である第１の三次元形状と、前記第１の三次元形状と干渉する第２の三次元形状と、の干渉領域を抽出する抽出手段と、
前記抽出手段により抽出された前記干渉領域が消滅しないように前記第１の三次元形状の編集を制御する制御手段と、
を備えた三次元形状データの編集装置。
【請求項２】
前記抽出手段で前記干渉領域が１つ以上抽出される場合、１つ又は複数の前記干渉領域を前記第２の三次元形状との干渉の監視対象として選択する選択手段を備えた
請求項１記載の三次元形状データの編集装置。
【請求項３】
前記選択手段は、選択した前記干渉領域から前記第１の三次元形状に対する編集の基準となる基準点及び基準軸を設定する
請求項２記載の三次元形状データの編集装置。
【請求項４】
前記制御手段は、前記基準点が前記第２の三次元形状から離間しないように前記第１の三次元形状の編集を制御する
請求項３記載の三次元形状データの編集装置。
【請求項５】
前記干渉領域が消滅することを許可する指示を受け付ける受付手段を備え、
前記制御手段は、前記受付手段により前記指示が受け付けられた場合、前記干渉領域が消滅する編集を前記第１の三次元形状に対して許可する
請求項１〜請求項４の何れか１項に記載の三次元形状データの編集装置。
【請求項６】
前記制御手段は、前記第２の三次元形状と干渉する第３の三次元形状に、前記第１の三次元形状を干渉させる編集を許可する
請求項１〜請求項５の何れか１項に記載の三次元形状データの編集装置。
【請求項７】
前記制御手段は、前記第１の三次元形状と干渉する第３の三次元形状を、前記第２の三次元形状と干渉させる編集を許可する
請求項１〜請求項５の何れか１項に記載の三次元形状データの編集装置。
【請求項８】
前記抽出手段は、三次元形状同士が干渉する領域のうち、同じ属性を有する領域を前記干渉領域として抽出する
請求項１〜請求項７の何れか１項に記載の三次元形状データの編集装置。
【請求項９】
前記抽出手段は、三次元形状をビット列で表すことで、ビット演算によって干渉領域を抽出する
請求項１〜請求項７の何れか１項に記載の三次元形状データの編集装置。
【請求項１０】
コンピュータを、請求項１〜請求項９の何れか１項に記載の三次元形状データの編集装置の各手段として機能させるための三次元形状データの編集プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、三次元形状データの編集装置、及び三次元形状データの編集プログラムに関する。
【背景技術】
【０００２】
特許文献１には、三次元形状を図形表示させる三次元形状表示装置において、三次元形状を二次元平面に平行投影した形状を表示する形状表示部と、前記形状表示部で表示された形状と共に、計測基準となる尺度線分を表示する尺度線分表示部とを備え、表示された前記尺度線分と前記二次元平面に平行投影された形状とを比較することによって大きさを簡易的に計測できるようにしたことを特徴とする三次元形状表示装置が開示されている。
【０００３】
特許文献２には、他の図形物体とともに表示された図形物体を変形させるためのシステムにおいて、図形物体を体積要素を伴う体積のある物体として特徴づけるためのコンピュータを含む手段と、前記の体積要素のうちの選ばれた１つを選択して動かすために前記コンピュータに結合されているユーザーインターフェースと、前記ユーザーインターフェースに応答して、前記ユーザーインターフェースにより指定された量だけ前記の選択された体積要素を運動させ、その運動の結果として前記図形物体を変形させるための図形物体変形手段と、前記図形物体の変形時に図形物体同士の衝突を検出して防止するための手段と、要素同士の相対的位置をその弾力性に基づいて弛緩させるための弛緩手段と、前記弛緩手段の出力に結合されて、前記の体積のある図形物体を動かし、変形させ、弛緩させた結果を再現するためのディスプレイを含む手段とから成ることを特徴とする図形物体を迅速に変形させるためのシステムが開示されている。
【０００４】
特許文献３には、第１の立体画像と第２の立体画像を位置合わせ（ｒｅｇｉｓｔｒａｔｉｏｎ）する方法であって、各画像はグレイスケールのボクセル（ｖｏｘｅｌ）値の３次元配列であり、（ａ）複数の前記ボクセル（ｖｏｘｅｌ）値の整列したペアに変異確率を定義するステップが設けられ、前記ボクセル（ｖｏｘｅｌ）値の整列したペアは前記第１の画像からのボクセル（ｖｏｘｅｌ）値と前記第２の画像からの空間的に対応したボクセル（ｖｏｘｅｌ）値とから成り、各変異確率は前記第１の画像のボクセル（ｖｏｘｅｌ）値が前記第２の画像の空間的に対応したボクセル（ｖｏｘｅｌ）値に対応する尤度及びその逆に関係し、前記定義付けは前記第１の画像と前記第２の画像の選択された幾何学的関係に基づいて定義され、（ｂ）前記第１の画像に対する前記第２の画像の幾何学的関係を定義する第１の変換を選択するステップが設けられ、（ｃ）前記変異確率を使って整列したボクセル（ｖｏｘｅｌ）のペアの所定の集まりに対して尤度の計量を計算するステップが設けられ、前記尤度の前記計量は前記第２の画像を前提として前記第１の画像を得る確率及びその逆を表し、（ｄ）前記第１の画像に対する前記第２の画像の幾何学的関係を定義する異なる変換を選択するステップが設けられ、（ｅ）前記第１の画像に対する前記第２の画像の幾何学的関係を定義する最適な変換が求まるまで（ｃ）と（ｄ）のステップを反復するステップが設けられ、前記最適な変換は前記尤度の最適な計量を与える方法が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−１０２９７９号公報
【特許文献２】特開平１０−２０８０７８号公報
【特許文献３】特表２００４−５０８８５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年、３Ｄプリンタの普及により、デジタルデータから直接最終製品を製造することが行われ始めているが、３Ｄプリンタでは、製造する造形物の三次元形状データを事前に作成する必要がある。
【０００７】
一般的なユーザが一から造形物のモデリングを行って三次元形状データを生成するのは困難であるが、既に用意されている三次元形状データに基づく造形物を変形させて三次元形状データを生成するのは比較的容易である。しかしながら、造形物を構成する三次元形状に対して自由な編集が許可される場合、本来目標としている造形物の機能又は形状を損なうような編集が行われることがある。
【０００８】
本発明は、三次元形状データで表される三次元形状を編集する際に、意図しない編集が行われてしまうことを抑制する三次元形状データの編集装置、及び三次元形状データの編集プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、請求項１に記載の三次元形状データの編集装置の発明は、三次元形状データで表された複数の三次元形状のうち、編集対象である第１の三次元形状と、前記第１の三次元形状と干渉する第２の三次元形状と、の干渉領域を抽出する抽出手段と、前記抽出手段により抽出された前記干渉領域が消滅しないように前記第１の三次元形状の編集を制御する制御手段と、を備える。
【００１０】
請求項２に記載の発明は、前記抽出手段で前記干渉領域が１つ以上抽出される場合、１つ又は複数の前記干渉領域を前記第２の三次元形状との干渉の監視対象として選択する選択手段を備える。
【００１１】
請求項３に記載の発明は、前記選択手段は、選択した前記干渉領域から前記第１の三次元形状に対する編集の基準となる基準点及び基準軸を設定する。
【００１２】
請求項４に記載の発明は、前記制御手段は、前記基準点が前記第２の三次元形状から離間しないように前記第１の三次元形状の編集を制御する。
【００１３】
請求項５に記載の発明は、前記干渉領域が消滅することを許可する指示を受け付ける受付手段を備え、前記制御手段は、前記受付手段により前記指示が受け付けられた場合、前記干渉領域が消滅する編集を前記第１の三次元形状に対して許可する。
【００１４】
請求項６に記載の発明は、前記制御手段は、前記第２の三次元形状と干渉する第３の三次元形状に、前記第１の三次元形状を干渉させる編集を許可する。
【００１５】
請求項７に記載の発明は、前記制御手段は、前記第１の三次元形状と干渉する第３の三次元形状を、前記第２の三次元形状と干渉させる編集を許可する。
【００１６】
請求項８に記載の発明は、前記抽出手段は、三次元形状同士が干渉する領域のうち、同じ属性を有する領域を前記干渉領域として抽出する。
【００１７】
請求項９に記載の発明は、三次元形状をビット列で表すことで、ビット演算によって干渉領域を抽出する。
【００１８】
請求項１０に記載の三次元形状データの編集プログラムの発明は、コンピュータを、請求項１〜請求項９の何れか１項に記載の三次元形状データの編集装置の各手段として機能させる
【発明の効果】
【００１９】
請求項１及び請求項１０に記載の発明によれば、三次元形状データで表される三次元形状を編集する際に、意図しない編集が行われてしまうことを抑制することができる、という効果を有する。
【００２０】
請求項２に記載の発明によれば、編集によって消滅しないように制御される三次元形状の干渉領域を選択することができる、という効果を有する。
【００２１】
請求項３に記載の発明によれば、干渉領域が消滅しないように編集を行うための基準点及び基準軸を設定することができる、という効果を有する。
【００２２】
請求項４に記載の発明によれば、基準点が他の三次元形状から離間する編集を許可する場合と比較して、干渉領域を有する三次元形状を容易に作成することができる、という効果を有する。
【００２３】
請求項５に記載の発明によれば、編集の過程においても三次元形状の干渉領域が消滅することを許可しない場合と比較して、三次元形状の編集に関する操作性が向上する、という効果を有する。
【００２４】
請求項６に記載の発明によれば、干渉する複数の三次元形状を１つの三次元形状として取り扱わない場合と比較して、三次元形状の編集に関する自由度が向上する、という効果を有する。
【００２５】
請求項７に記載の発明によれば、干渉する複数の三次元形状を１つの三次元形状として取り扱わない場合と比較して、三次元形状の編集に関する自由度が向上する、という効果を有する。
【００２６】
請求項８に記載の発明によれば、属性を考慮することなく三次元形状の編集を行う場合と比較して、属性が干渉する領域を有する三次元形状を容易に作成することができると共に、属性が設定されている三次元形状に対して意図しない編集が行われてしまうことを抑制することができる、という効果を有する。
【００２７】
請求項９に記載の発明によれば、ビット演算によって干渉領域を抽出することができる、という効果を有する。
【図面の簡単な説明】
【００２８】
【図１】編集装置の構成例を示す図である。
【図２】三次元形状の一例を示す図である。
【図３】第１実施形態に係る三次元形状データの編集処理の流れの一例を示すフローチャートである。
【図４】三次元形状の編集例を示す図である。
【図５】三次元形状をビット列で表現した場合の一例を示す図である。
【図６】三次元形状を表すビット列のＡＮＤ演算例を示す図である。
【図７】三次元形状を表すビット列の表現例を示す図である。
【図８】三次元形状が離間する編集例を示す図である。
【図９】干渉領域が複数存在する三次元形状の一例を示す図である。
【図１０】干渉領域が複数存在する三次元形状の編集例を示す図である。
【図１１】干渉領域が１つになった三次元形状の編集例を示す図である。
【図１２】第２実施形態に係る三次元形状データの編集処理の流れの一例を示すフローチャートである。
【図１３】基準点の一例を示す図である。
【図１４】干渉領域の範囲外に基準点を設定した場合の編集例を示す図である。
【図１５】拡大編集に伴う基準点及び基準軸の一例を示す図である。
【図１６】干渉領域の範囲外に基準点を設定した場合の拡大編集例を示す図である。
【図１７】縮小編集に伴う基準点及び基準軸の一例を示す図である。
【図１８】干渉領域の範囲外に基準点を設定した場合の縮小編集例を示す図である。
【図１９】ベースとなる三次元形状が複数の三次元形状で構成された三次元形状の一例を示す図である。
【図２０】編集対象となる三次元形状が複数の三次元形状で構成された三次元形状の一例を示す図である。
【図２１】三次元形状を離間させる編集が望まれる三次元形状の一例を示す図である。
【図２２】三次元形状を離間させる編集が望まれる三次元形状の一例を示す図である。
【図２３】第３実施形態に係る三次元形状データの編集処理の流れの一例を示すフローチャートである。
【図２４】離間編集許可が与えられた場合の三次元形状の編集例を示す図である。
【図２５】属性を有する三次元形状の一例を示す図である。
【図２６】同じ属性を干渉させる編集例を示す図である。
【図２７】第４実施形態に係る三次元形状データの編集処理の流れの一例を示すフローチャートである。
【図２８】三次元形状を表すビット列の一例を示す図である。
【発明を実施するための形態】
【００２９】
以下、図面を参照して、本発明を実施するための形態例を詳細に説明する。
【００３０】
＜第１実施形態＞
まず、図１を参照して、本実施の形態に係る三次元形状データの編集装置１０の構成について説明する。
【００３１】
編集装置１０は、例えばパーソナルコンピュータ等で構成され、コントローラ１２を備える。コントローラ１２は、ＣＰＵ（Central Processing Unit）１２Ａ、ＲＯＭ（Read Only Memory）１２Ｂ、ＲＡＭ（Random Access Memory）１２Ｃ、不揮発性メモリ１２Ｄ、及び入出力インターフェース（Ｉ／Ｏ）１２Ｅを備える。そして、ＣＰＵ１２Ａ、ＲＯＭ１２Ｂ、ＲＡＭ１２Ｃ、不揮発性メモリ１２Ｄ、及びＩ／Ｏ１２Ｅがバス１２Ｆを介して各々接続されている。
【００３２】
また、Ｉ／Ｏ１２Ｅには、操作部１４、表示部１６、通信部１８、及び記憶部２０が接続されている。なお、ＣＰＵ１２Ａは抽出手段、制御手段、及び選択手段の一例であり、操作部１４は受付手段の一例である。
【００３３】
操作部１４は、編集装置１０のユーザから指示を受け付ける、例えばマウス、キーボード、及びタッチパネル等の入力デバイスを含んで構成される。
【００３４】
表示部１６は、例えば液晶ディスプレイ及び有機ＥＬ（Electro Luminescence）ディスプレイ等の表示デバイスを含んで構成される。
【００３５】
通信部１８は、例えばインターネット及びＬＡＮ(Local Area Network)といった通信回線に接続され、通信回線に接続されたパーソナルコンピュータ等の外部装置とデータ通信を行うためのインターフェースを有する。
【００３６】
記憶部２０は、ハードディスク等の不揮発性の記憶装置を含み、編集装置１０で生成された三次元形状データ等を記憶する。
【００３７】
図２は、三次元形状データによって表される三次元形状３２の一例を示す図である。図２に示すように、編集装置１０は、三次元形状３２をＸ軸、Ｙ軸、及びＺ軸によって表されるＸＹＺ座標（以降、「三次元座標空間」という）を用いて表す。
【００３８】
本実施形態では、三次元形状データのデータフォーマットとして、三次元形状３２をボクセル３４の集合によって表現するデータフォーマットを用いた場合について説明するが、他のデータフォーマットを用いてもよい。
【００３９】
ここで、ボクセル３４とは、三次元形状３２の基本要素であり、例えば直方体が用いられるが、直方体に限らず、球や円柱等を用いてもよい。ボクセル３４を積み上げることで所望の三次元形状３２が表現される。また、各ボクセル３４には、例えば色、強度、材質、質感等のボクセル３４の性質を表す属性が指定されており、ボクセル３４の有無及びボクセル３４の属性によって、三次元形状３２の色や材質等が表現される。
【００４０】
ここで、「材質」とは、樹脂、金属、ゴム等の材料のジャンルを表す情報、ＡＢＳ、ＰＬＡ等の材料名を表す情報、市販されている材料の商品名、商品番号等を表す情報、ＩＳＯ、ＪＩＳ等の規格で定められている材料名、略称、番号等の材料を表す情報、熱伝導率、導電率、磁性等の材料特性を表す情報の少なくとも１つの情報を含む。
【００４１】
また、「質感」とは、三次元形状データの反射率、透過率、光沢、表面性状等の色だけではない見た目やさわり心地を表す属性を表す。
【００４２】
なお、属性には、周期、数式、及び他の三次元形状データの少なくとも１つの情報を用いて設定される属性パターンを含む。属性パターンとは、一定周期の繰り返し、グラデーション、数式で表される傾斜や極点による表現、他の三次元形状データ等に従って三次元形状データの色、材質、質感等を連続的に変更すること、三次元形状データの指示された範囲を指示された形状で充填すること又は連続的に変更すること、の少なくとも１つを含む。
【００４３】
上述したように、三次元形状３２はボクセル３４の集合によって表されるが、具体的には、例えば三次元座標空間におけるＸ、Ｙ、Ｚの座標の要素値によって表される。三次元座標空間における座標を（Ｘ、Ｙ、Ｚ）で表せば、座標（Ｘ、Ｙ、Ｚ）にボクセル３４が存在する場合は「（Ｘ、Ｙ、Ｚ）＝１」とする。一方、座標（Ｘ、Ｙ、Ｚ）にボクセル３４が存在しない場合は「（Ｘ、Ｙ、Ｚ）＝０」とすることで、三次元形状３２が表される。すなわち、三次元形状データは、ボクセル３４の有無を示す座標（Ｘ、Ｙ、Ｚ）の要素値と、要素値が“１”のボクセル３４に対応付けられた属性とを含む。
【００４４】
なお、三次元形状３２は、必ずしも三次元座標空間における座標（Ｘ、Ｙ、Ｚ）によって表される必要はなく、例えば座標（Ｘ、Ｙ、Ｚ）に一意に対応付けたインデックス番号で表してもよい。この場合、例えばインデックス番号に対応付けられた値が“１”であれば、インデックス番号で表される位置にボクセル３４が存在することを表す。
【００４５】
また、三次元形状３２の形状に制約はなく、三次元形状データを用いて表現される形状であれば、どのような形状であってもよい。
【００４６】
次に、三次元形状３２を表す三次元形状データの編集処理の作用について説明する。以降の説明では、三次元座標空間で行われる三次元形状データの編集を分かりやすく説明するため、三次元形状３２をＸＺ平面に投影した投影図を用いて説明することにする。ＸＺ平面の投影図では、三次元形状３２のＹ軸方向の形状が表されないが、三次元形状データをＹ軸方向に向かって編集した場合にも、以降に説明するＸＺ平面上での三次元形状データの編集と同じ処理が行われる。
【００４７】
また、以降の説明では、異なる三次元形状３２が互いに干渉するように三次元形状データを編集する場合について説明する。ここで、「干渉」とは、一方の三次元形状３２の何れかの箇所が、他方の三次元形状３２に接触する状態をいう。具体的には、一方の三次元形状３２の表面が、他方の三次元形状３２の表面に接触する状態や、三次元形状３２同士の何れかの箇所が重複する状態をいう。
【００４８】
複数の三次元形状３２を含んで一体的に構成される造形物の編集を行う際に、編集によって、何れの三次元形状３２とも干渉しない三次元形状３２が生成されると、当該三次元形状３２は造形物から分離してしまい、造形物を構成するパーツとして目的を果たさなくなる。
【００４９】
したがって、異なる三次元形状３２が互いに干渉するように三次元形状データを編集するという制約、換言すれば、異なる三次元形状３２の干渉する領域（干渉領域）が消滅しないように三次元形状データを編集するという制約は、複数の三次元形状３２を含んで一体的に構成される造形物を編集する上で必要な制約となる。
【００５０】
本制約は、異なる三次元形状３２を組み合わせてひとつながりの三次元形状データを作成し、一塊の造形物を造形する場合に適用されることが望ましい。つまり、複数の独立したパーツが組み立てられた状態の造形物の三次元形状データを作成する場合はこの限りではない。ただし、複数の独立したパーツ群に含まれる１つのパーツの三次元形状データを作成する場合には必要な制約となる．
【００５１】
図３は、編集装置１０で行われる三次元形状データの編集処理の流れの一例を示すフローチャートである。三次元形状データの編集処理を規定する編集プログラムはＲＯＭ１２Ｂに予め記憶されており、例えばユーザから三次元形状３２の編集開始指示を受け付けると、ＣＰＵ１２Ａが編集プログラムをＲＯＭ１２Ｂから読み出して実行する。
【００５２】
まず、ステップＳ１０において、ＣＰＵ１２Ａは、編集に伴う三次元形状３２の操作量を取得する。
【００５３】
ここで、「編集」とは、三次元形状３２の少なくとも一部に対して、変形、拡大、縮小、移動、回転、追加、削除、置換、及び合成等の処理を施すことにより三次元形状３２の少なくとも一部の形状を変更することを含む。
【００５４】
また、「編集」とは、三次元位置情報に付与される色、強度、材質、及び質感等の少なくとも１つの属性の少なくとも一部に対して、追加、削除、変更、置換、及び合成等の処理を施すことにより三次元形状３２の少なくとも一部の属性を変更することを含む。
【００５５】
図４は、三次元形状３２を移動する編集例を示す図である。三次元形状３２は、三次元形状３２Ａ及び三次元形状３２Ｂを含んで構成される。例えば三次元形状３２Ａを三次元形状３２Ｂと干渉させたままＸ軸方向に沿って移動させる場合の移動範囲は、三次元形状３２Ａの表面と三次元形状３２Ｂの表面とが接触する距離Ｘ1の範囲内に制限される。三次元形状３２Ａが距離Ｘ1だけ移動すると、三次元形状３２Ａ’の位置まで移動するが、三次元形状３２Ａの移動距離が距離Ｘ1以下であれば、何れの距離においても三次元形状３２Ａが三次元形状３２Ｂと干渉することになる。
【００５６】
ＣＰＵ１２Ａは、複数の三次元形状３２のうち、ユーザによってマウス等で選択された少なくとも１つの三次元形状３２（この場合、三次元形状３２Ａ）を編集対象として認識する。また、ＣＰＵ１２Ａは、マウスの移動量及び移動方向を、選択された三次元形状３２Ａの操作量として操作部１４から取得する。なお、三次元形状３２のうち、編集対象として選択されなかった三次元形状３２には編集が加えられないため、「ベースとなる三次元形状３２Ｂ」ということがある。
【００５７】
ステップＳ２０において、ＣＰＵ１２Ａは、ステップＳ１０で取得した操作量に対応する三次元形状３２Ａの編集が、ベースとなる三次元形状３２Ｂと干渉するような編集であるか否かを判定する。そして、ＣＰＵ１２Ａは、判定結果を例えばＲＡＭ１２Ｃに記憶する。三次元形状３２Ａが三次元形状３２Ｂと干渉しているか否かは、例えばビット演算によって判定される。
【００５８】
図５は、図４に示した三次元形状３２をボクセル３４の有無を表すビット列で表現した場合の一例を示す図である。上述したように、対応する座標に三次元形状３２を造形するボクセル３４の一部でも存在する場合は、座標の要素値は“１”となり、対応する座標にボクセル３４がまったく存在しない場合は、座標の要素値は“０”となる。
【００５９】
ＣＰＵ１２Ａは、ステップＳ１０で取得した操作量から編集後の三次元形状３２Ａの位置を算出し、仮に、三次元形状３２Ａが算出した位置にあるとみなした場合の三次元形状３２Ａと三次元形状３２Ｂを、三次元座標空間におけるビット列で表す。そして、ＣＰＵ１２Ａは、三次元形状３２Ａを表すビット列と、三次元形状３２Ｂを表すビット列とに対してＡＮＤ演算を行うことで干渉領域を抽出し、三次元形状３２Ａに対して三次元形状３２Ｂと干渉するような編集が行われたか否かを判定する。
【００６０】
図６は、三次元座標空間から抽出した同じ空間における三次元形状３２Ａと三次元形状３２Ｂのビット列の一例を示す図である。
【００６１】
ＣＰＵ１２Ａは、三次元形状３２Ａのビット列と三次元形状３２Ｂのビット列とをＡＮＤ演算し、得られた演算結果の中に“１”が含まれる場合に、三次元形状３２Ａと三次元形状３２Ｂが干渉していると判定する。ここでは、ＸＺ平面に投影された三次元形状３２Ａ、３２Ｂのビット列の内の１行を例にしたが、Ｙ軸方向にもビット列が存在し、そのいずれかのビット列のＡＮＤ演算結果の中に“１”が含まれた場合に、三次元形状３２Ａと三次元形状３２Ｂが干渉していると判定することは言うまでもない。
【００６２】
なお、三次元形状を表すデータフォーマットがボクセル３４以外のデータフォーマットで表されている場合であっても、図６に示すように三次元形状をビット列で表したうえでＡＮＤ演算することにより、高速に干渉領域を抽出することができるメリットがあるため、三次元形状をボクセル化して判定してもよい。この場合、三次元形状全体をボクセル化してもよいし、必要な範囲のみをボクセル化してもよい。
【００６３】
例えば三次元形状３２Ａを内包する範囲をバウンディングボックスＡとして、三次元形状３２Ｂを内包する範囲をバウンディングボックスＢとした場合、「必要な範囲」とは、バウンディングボックスＡとバウンディングボックスＢが交わる領域に含まれる三次元形状３２Ａ、３２Ｂの部分をいう。三次元形状のボクセル化は一時的でもよく、例えば干渉判定が終了した際に破棄してもよいし、ボクセル化したデータを次回の干渉判定に備えて記憶しておいてもよい。
【００６４】
なお、干渉領域を抽出するために三次元形状をボクセル化することは必須ではない。三次元形状の必要な範囲をビット列で表せれば十分である。例えば必要な範囲内に対して、三次元形状が存在する座標の値を“１”、三次元形状が存在しない座標の値を“０”とするビットとして扱ってもよい。
【００６５】
また、干渉領域を抽出するために、ビット列のＡＮＤ演算を行うことも必須ではない。例えば、三次元形状３２Ａ、３２Ｂを構成する点、線、及び面等の構成要素のうち、互いに十分近い範囲に含まれる構成要素同士の接触判定を行い、接触または交差していることを判定することで干渉領域を抽出してもよい。ここで「十分近い範囲」とは、予め定めた範囲でもよいし、編集対象となっている三次元形状３２Ａ、３２Ｂの大きさから導いてもよい。例えば自らの大きさの一回り外側の範囲としてもよい。または、ステップＳ１０により取得される操作量に基づいて範囲を導いてもよい。
【００６６】
このように、三次元形状同士の干渉領域を抽出する方法については特に制限はなく、三次元形状同士の接触判定に用いられる公知の手法が適用される。
【００６７】
なお、ＣＰＵ１２ＡはＡＮＤ演算を行う場合、図７に示すように、編集対象である三次元形状３２Ａの輪郭と隣接する座標（ハッチングで示した座標）の要素値を“０”から“１”に変更した上でＡＮＤ演算を行う。これは、三次元形状３２Ａと三次元形状３２Ｂが互いの表面で接触する場合も干渉状態にあると判定するためである。こうした座標の要素値の変更は、ビット列のＡＮＤ演算の際に一時的に行う変更であり、ＣＰＵ１２Ａは、ＡＮＤ演算終了後に、三次元形状３２Ａを表す座標の要素値を変更前の要素値に戻す。
【００６８】
ステップＳ３０において、ＣＰＵ１２Ａは、ステップＳ２０の干渉判定によって、三次元形状３２Ａと三次元形状３２Ｂとの間に干渉領域が存在しないと判定した場合、ステップＳ６０に移行する。この場合、図８に示すように、ユーザによって、例えば三次元形状３２Ａが三次元形状３２Ｂから離間するような移動が行われたことを示す。
【００６９】
したがって、ステップＳ６０において、ＣＰＵ１２Ａは、編集対象である三次元形状３２Ａを、ベースとなる三次元形状３２Ｂから離間させずに編集するように、表示部１６に警告を表示する。または、警告を表示したうえで、自動的に三次元形状３２Ａ、３２Ｂが干渉する位置まで操作を戻してもよいし、三次元形状３２Ａ、３２Ｂの干渉領域が消滅する直前の位置で操作を制限してもよい。なお、ＣＰＵ１２Ａは、音声で警告を通知するようにしてもよい。
【００７０】
そして、ステップＳ１０に移行して、ＣＰＵ１２Ａは、編集に伴う次の操作量を取得するまで待機する。すなわち、ＣＰＵ１２Ａは、直前にステップＳ１０で取得した操作量に対応した編集を実行しない。
【００７１】
なお、ステップＳ２０の干渉判定は、ステップＳ１０でユーザによる操作が行われている間、リアルタイムで都度判定してもよい。ユーザによってマウス等で選択された少なくとも１つの三次元形状３２を編集対象として認識した時点で、編集に伴い三次元形状３２が三次元座標空間内を移動した場合の干渉判定を座標毎に行って、予め干渉範囲が消滅しない操作量の限度を算出しておき、ステップＳ３０の干渉領域の有無の判定に用いてもよい。もちろん、ユーザによる操作が終了した時点で１度だけ干渉判定を行ってもよい。
【００７２】
一方、ステップＳ３０の判定処理において、三次元形状３２Ａと三次元形状３２Ｂとの間に干渉領域が存在すると判定した場合には、ステップＳ４０に移行する。
【００７３】
ステップＳ４０において、ＣＰＵ１２Ａは、ステップＳ１０で取得した操作量（例えば移動量）に対応する三次元形状３２Ａの編集を実行する。編集の実行に伴って、ＣＰＵ１２Ａは、編集内容に従った三次元形状データを生成すると共に、編集後の三次元形状３２Ａの位置を表すビット列の更新を行う。
【００７４】
ステップＳ５０において、ＣＰＵ１２Ａは、操作部１４を介してユーザから編集の終了指示を受け付けたか否かを判定し、編集の終了指示を受け付けていない場合にはステップＳ１０に移行して、編集に伴う次の操作量を取得するまで待機する。一方、編集の終了指示を受け付けた場合には、生成した三次元形状データを記憶部２０に記憶して、図３に示した三次元形状データの編集処理を終了する。
【００７５】
図３に示した三次元形状データの編集処理では、図４のように干渉領域が１箇所しか存在しない三次元形状３２ついて説明したが、干渉領域が複数存在する場合であっても同様の処理が実行される。
【００７６】
図９は、干渉領域が２つ存在する三次元形状３２の一例を示す図である。三次元形状３２は、三次元形状３２Ａ及び三次元形状３２Ｂの２つのパーツを含んで構成され、干渉領域３６Ａ及び干渉領域３６Ｂを有する。以降では、干渉領域３６Ａ及び干渉領域３６Ｂを特に区別する必要がない場合には、「干渉領域３６」ということにする。
【００７７】
例えば干渉領域３６が２つ存在することを三次元形状３２の編集の制約条件とした場合、ＣＰＵ１２Ａは、図３のステップＳ２０で干渉領域３６が２箇所抽出された際に、三次元形状３２Ａが三次元形状３２Ｂと干渉していると判定すればよい。したがって、編集装置１０は、図９に示した三次元形状３２Ａを移動させ、図１０に示すように２つの干渉領域３６Ａ、３６Ｂが存在する三次元形状３２への編集を許可する。
【００７８】
一方、編集装置１０は、図９に示した三次元形状３２Ａを移動させ、図１１に示すように１つの干渉領域３６しか存在しない三次元形状３２に修正する編集に対しては警告を表示して、三次元形状３２の編集を許可しないようにする。
【００７９】
しかし、干渉領域３６が少なくとも１つ存在すればよいことを三次元形状３２の編集の制約条件とした場合には、編集装置１０は、図１１に示した三次元形状３２への編集を許可する。
【００８０】
このように編集装置１０は、干渉領域３６が消滅しないように三次元形状３２の編集を制御する。したがって、編集対象である三次元形状３２Ａがベースとなる三次元形状３２Ｂから離間しないため、編集装置１０は、ユーザが意図しない編集が行われることを抑制する。
【００８１】
＜第２実施形態＞
第１実施形態では、三次元形状３２の移動を例にして編集装置１０での三次元形状データの編集について説明した。第２実施形態では、基準点及び基準軸を用いて三次元形状データの編集を行う編集装置１０について説明する。
【００８２】
上述したように、編集装置１０での編集には三次元形状３２の移動の他、変形、拡大、縮小、回転、追加、削除、置換、及び合成等が含まれる。こうした編集の中には、例えば三次元形状３２の回転、拡大、及び縮小等のように、特定の点及び軸を用いて三次元形状３２を変形する等の処理が含まれる。この場合、三次元形状３２の編集を行う際に、編集の基準となる特定の点及び軸を設定する必要がある。
【００８３】
以降では、三次元形状３２の編集を行う上で編集の基準となる特定の点を「基準点」といい、編集の基準となる軸を「基準軸」という。
【００８４】
次に、編集装置１０での基準点及び基準軸を用いた編集処理の作用について説明する。
【００８５】
図１２は、編集装置１０で行われる基準点及び基準軸を用いた三次元形状データの編集処理の流れの一例を示すフローチャートである。三次元形状データの編集処理を規定する編集プログラムはＲＯＭ１２Ｂに予め記憶されており、例えばユーザから三次元形状３２の編集開始指示を受け付けると、ＣＰＵ１２Ａが編集プログラムをＲＯＭ１２Ｂから読み出して実行する。なお、ここでは、編集開始指示で指定される編集内容は、例えば回転等に代表される基準点及び基準軸を用いる編集であるものとし、編集対象となる三次元形状３２はユーザによって予め選択されているものとする。
【００８６】
図１２に示す編集処理が、第１実施形態において説明した図３の編集処理と異なる点は、ステップＳ２及びＳ４が追加された点であり、その他の処理については図３で説明した編集処理と同じ処理を行う。したがって、以降では、図３に示した編集処理とは異なる点を中心に、図１２に示す編集処理について説明する。
【００８７】
まず、ステップＳ２において、ＣＰＵ１２Ａは、編集前における三次元形状３２の干渉領域３６を取得する。既に説明したように、三次元形状３２の干渉領域３６は、三次元座標空間における複数の三次元形状３２のビット列をＡＮＤ演算することで取得される。
【００８８】
例えば、図１３に示すように、三次元形状３２が三次元形状３２Ａ及び三次元形状３２Ｂの２つのパーツを含んで構成される場合、干渉領域３６が取得される。
【００８９】
ステップＳ４において、ＣＰＵ１２Ａは、ステップＳ２で選択した干渉領域３６の範囲内から編集の基準点を設定する。また、ＣＰＵ１２Ａは、設定した基準点に対して基準軸を設定する。図１３の例では干渉領域３６の輪郭面に設定された点が基準点３８であり、基準点３８を通過し、Ｘ、Ｙ、Ｚ軸の各々の方向に沿った線分が基準軸Ｘ’、Ｙ’、Ｚ’となる。なお、図１３において基準軸Ｙ’は図示していないが、基準軸Ｙ’は、基準軸Ｘ’及び基準軸Ｚ’とそれぞれ直交する方向に沿った基準軸である。
【００９０】
図１３の例では、基準点及び基準軸を用いた三次元形状３２の編集のうち、基準軸Ｙ’周りの回転を例とした説明を示しているが、基準軸Ｘ’及び基準軸Ｚ’周りの回転も同様の制御によって行われることは言うまでもない。
【００９１】
基準点３８は、干渉領域３６の範囲内であれば何れの位置に設定してもよく、干渉領域３６の輪郭面に限らず、干渉領域３６の内部に設定してもよいことは言うまでもない。例えば干渉領域３６の重心点、又は三次元座標空間の原点に最も近い点等を基準点３８に設定してもよい。
【００９２】
図１４に示すように、例えば基準点３８を干渉領域３６とは異なる三次元形状３２Ａの箇所に設定し、基準点３８を通過するＹ軸方向の基準軸を回転軸として三次元形状３２Ａを回転させたとする。この場合、三次元形状３２Ａが三次元形状３２Ａ’で表される位置まで回転すると、三次元形状３２Ａは三次元形状３２Ｂから離間してしまい、三次元形状３２Ａ、３２Ｂを含んで一体的に構成される造形物の編集に適用される制約条件が満たされなくなってしまう。
【００９３】
したがって、ＣＰＵ１２Ａは、基準点３８を三次元形状３２の干渉領域３６に設定することが好ましい。
【００９４】
以降、ＣＰＵ１２Ａは、ステップＳ１０で操作量の一例である三次元形状３２Ａの回転量を取得し、ステップＳ４で設定した基準軸を回転軸として、三次元形状３２Ａを取得した回転量だけ回転させる編集を行う。なお、ＣＰＵ１２Ａは、ステップＳ２０で三次元形状３２に対して干渉領域３６が存在するか判定し、干渉領域３６が消滅するような編集が行われないよう制御する。
【００９５】
図１３及び図１４の例では、基準点及び基準軸を用いた三次元形状３２の編集のうち、基準軸Ｙ’周りの回転を例とした説明を行ったが、基準軸Ｘ’及び基準軸Ｚ’周りの回転も同様の制御によって行われることは言うまでもない。また、上記では、三次元形状３２Ａを回転させる編集を例にして、基準点３８及び基準軸の設定について説明したが、三次元形状３２Ａを拡大及び縮小する編集等においても基準点３８及び基準軸が設定される。
【００９６】
図１５は、三次元形状３２Ａを拡大する編集例を示す図である。図１５に示す例では、干渉領域３６の輪郭面に設定された点が基準点３８であり、Ｘ軸に沿った線分（基準軸Ｘ’）が基準軸４０となる。なお、基準軸４０は、ユーザが指定した拡大方向に沿って設定すればよい。図１５に示すように、基準点３８は干渉領域３６の範囲内に設定されている。したがって、三次元形状３２Ａの頂点Ｑが基準軸４０の方向に沿ってＱ’の位置に来るような拡大率で、基準点３８を中心にして三次元形状３２Ａを拡大しても、三次元形状３２Ａを拡大した三次元形状３２Ａ’が三次元形状３２Ｂから離間することはない。
【００９７】
しかしながら、図１６に示すように、基準点３８を干渉領域３６とは異なる三次元形状３２Ａの箇所に設定し、基準点３８を中心にして三次元形状３２Ａの頂点ＱがＱ’の位置に来るような拡大率で三次元形状３２Ａを拡大すると、拡大後の三次元形状３２Ａ’が、三次元形状３２Ｂを貫通するような編集が行われることがある。この場合、三次元形状３２Ａと三次元形状３２Ｂとの間に干渉領域３６は存在するが、ベースとなる三次元形状３２Ｂを三次元形状３２Ａ’が貫通してしまい、三次元形状３２Ｂから突起している三次元形状３２Ａを拡大するという当初の目的から外れた編集となる。したがって、編集装置１０は、基準点３８を三次元形状３２の干渉領域３６に設定することが好ましい。
【００９８】
図１７は、三次元形状３２Ａを縮小する編集例を示す図である。図１７に示す例では、干渉領域３６の輪郭面に設定された点が基準点３８であり、Ｘ軸に沿った線分（基準軸Ｘ’）が基準軸４０となる。なお、基準軸４０は、ユーザが指定した縮小方向に沿って設定すればよい。図１７に示すように、基準点３８は干渉領域３６の範囲内に設定されている。したがって、三次元形状３２Ａの頂点Ｑが基準軸４０の方向に沿ってＱ’の位置に来るような縮小率で、基準点３８を中心にして三次元形状３２Ａを縮小しても、三次元形状３２Ａを縮小した三次元形状３２Ａ’が三次元形状３２Ｂから離間することはない。
【００９９】
しかしながら、図１８に示すように、基準点３８を干渉領域３６とは異なる三次元形状３２Ａの箇所に設定し、基準点３８を中心にして三次元形状３２Ａの頂点ＱがＱ’の位置に来るような縮小率で三次元形状３２Ａを縮小すると、縮小後の三次元形状３２Ａ’が、三次元形状３２Ｂから離間するような編集が行われることがある。したがって、編集装置１０は、基準点３８を三次元形状３２の干渉領域３６に設定することが好ましい。
【０１００】
なお、上述した例では、編集装置１０が基準点３８を１つ設定したが、干渉領域３６毎に基準点３８の候補を表示部１６に複数提示し、少なくとも１つの基準点３８をユーザに選択させるようにしてもよい。
【０１０１】
また、編集装置１０では、ユーザが指示した方向に従って基準軸４０を設定したが、ユーザの指示によらずに、編集装置１０で基準軸４０を設定するようにしてもよい。編集装置１０は、例えばどのような操作量に対しても、干渉領域３６が存在するような編集が行われる軸を基準軸４０として設定すればよい。編集装置１０が基準軸４０を設定することで、ユーザが意図しない編集が行われることが抑制されるため、三次元形状３２の編集に対する操作性が向上する。
【０１０２】
このように編集装置１０は、基準点３８及び基準軸４０を用いた三次元形状データの編集を行う場合、干渉領域３６の範囲内に基準点３８を設定すると共に、例えば三次元形状３２の回転軸及び対称軸といった編集の基準となる基準軸４０を設定する。したがって、編集対象である三次元形状３２Ａがベースとなる三次元形状３２Ｂから離間しないため、編集装置１０は、ユーザが意図しない編集が行われることを抑制する。
【０１０３】
なお、図１５〜図１８に示した例では、基準軸Ｘ’の方向に沿った三次元形状３２の拡大及び縮小について説明したが、基準軸Ｙ’及び基準軸Ｚ’の方向に沿った三次元形状３２の拡大及び縮小も同様の制御によって行われることは言うまでもない。
【０１０４】
＜第１実施形態及び第２実施形態の変形例＞
第１実施形態及び第２実施形態に係る三次元形状３２は、編集対象である三次元形状３２Ａ及びベースとなる三次元形状３２Ｂが共に１つである構成例を示したが、複数の三次元形状３２で構成されることもある。
【０１０５】
図１９は、ベースとなる三次元形状３２Ｂが、三次元形状３２Ｂ−１及び三次元形状３２Ｂ−２を含んで構成された三次元形状３２の例を示す図である。
【０１０６】
三次元形状３２Ｂ−１及び三次元形状３２Ｂ−２に干渉領域３６が存在する場合、編集装置１０は、三次元形状３２Ｂ−１及び三次元形状３２Ｂ−２を１つの一体化された三次元形状３２Ｂとして取り扱う。
【０１０７】
すなわち、編集装置１０は、図３及び図１２に示したステップＳ２０の判定処理において、三次元形状３２Ｂ−１及び三次元形状３２Ｂ−２を組み合わせた形状を三次元形状３２Ｂとみなしてビット列を生成する。したがって、図１９に示すように、編集装置１０は、三次元形状３２Ｂ−１に干渉している三次元形状３２Ａを三次元形状３２Ｂ−２に移動する編集を許可する。
【０１０８】
一方、図２０は、編集対象である三次元形状３２Ａが、三次元形状３２Ａ−１及び三次元形状３２Ａ−２を含んで構成された三次元形状３２の例を示す図である。
【０１０９】
三次元形状３２Ａ−１及び三次元形状３２Ａ−２に干渉領域３６が存在する場合、編集装置１０は、三次元形状３２Ａ−１及び三次元形状３２Ａ−２を１つの一体化された三次元形状３２Ａとして取り扱う。
【０１１０】
すなわち、編集装置１０は、図３及び図１２に示したステップＳ２０の判定処理において、三次元形状３２Ａ−１及び三次元形状３２Ａ−２を組み合わせた形状を三次元形状３２Ａとみなしてビット列を生成する。したがって、図２０に示すように、編集装置１０は、当初三次元形状３２Ａ−２が三次元形状３２Ｂに干渉している三次元形状３２Ａを回転し、三次元形状３２Ａ−１を三次元形状３２Ｂに干渉させる編集を許可する。
【０１１１】
このように、複数の三次元形状を１つの三次元形状として取り扱うことで、三次元形状３２に対する編集の自由度が向上する。
【０１１２】
＜第３実施形態＞
第１実施形態及び第２実施形態に係る編集装置１０、並びにその変形例では、編集対象である三次元形状３２Ａがベースとなる三次元形状３２Ｂから離間しないように編集を制御した。
【０１１３】
しかしながら、三次元形状３２の編集内容によっては、編集対象である三次元形状３２Ａがベースとなる三次元形状３２Ｂから一時的に離間する編集を行いたいことがある。
【０１１４】
図２１は、三次元形状３２Ａ及び三次元形状３２Ｂを含んで構成される三次元形状３２の一例を示す図である。
【０１１５】
三次元形状３２Ｂは、２つの突起部３２Ｂ1、３２Ｂ2を有するＵ字形をした三次元形状であり、一方の突起部３２Ｂ1の先端に、三次元形状３２Ａが取り付けられている。
【０１１６】
三次元形状３２Ａを三次元形状３２Ｂの他方の突起部３２Ｂ2に移動させる場合、第１実施形態及び第２実施形態に係る編集装置１０では、三次元形状３２Ａが三次元形状３２Ｂから離間しないように、三次元形状３２Ａを矢印Ｆ１で示す経路に沿って移動させる必要がある。しかし、矢印Ｆ１で示す経路よりも矢印Ｆ２で示す経路の方が短いため、遠回りして三次元形状３２Ａを移動させることにストレスを感じるユーザが現れる場合がある。
【０１１７】
図２２も、三次元形状３２Ａ及び三次元形状３２Ｂを含んで構成される三次元形状３２の一例を示す図である。
【０１１８】
三次元形状３２Ｂの中央には開口部が設けられており、開口部を挟んだ三次元形状３２Ｂの一方の端部に、三次元形状３２Ａが取り付けられている。
【０１１９】
三次元形状３２Ａを、開口部を挟んだ位置にある他方の端部に移動させる場合、第１実施形態及び第２実施形態に係る編集装置１０では、三次元形状３２Ａが三次元形状３２Ｂから離間しないように、三次元形状３２Ａを矢印Ｆ１で示す経路に沿って移動させる必要がある。しかし、矢印Ｆ１で示す経路よりも、開口部を横断する矢印Ｆ２で示す経路の方が短いため、遠回りして三次元形状３２Ａを移動させることにストレスを感じるユーザが現れる場合がある。
【０１２０】
以降では、干渉領域３６が編集途中で一時的に消滅することを許可する編集装置１０Ａの作用について説明する。編集装置１０Ａの構成は、図１に示した編集装置１０と同じ構成を有する。
【０１２１】
図２３は、編集装置１０Ａで行われる三次元形状データの編集処理の流れの一例を示すフローチャートである。三次元形状データの編集処理を規定する編集プログラムはＲＯＭ１２Ｂに予め記憶されており、例えばユーザから三次元形状３２の編集開始指示を受け付けると、ＣＰＵ１２Ａが編集プログラムをＲＯＭ１２Ｂから読み出して実行する。
【０１２２】
図２３に示す編集処理が、第１実施形態において説明した図３の編集処理と異なる点は、ステップＳ３５、Ｓ７０、Ｓ８０、及びＳ９０が追加された点である。その他の処理については、図３で説明した編集処理と同じ処理を行う。したがって、以降では、図３に示した編集処理とは異なる点を中心に、図２３に示す編集処理について説明する。
【０１２３】
ステップＳ３０で、編集対象である三次元形状３２Ａに干渉領域３６が存在しないと判定された場合、ステップＳ３５に移行する。
【０１２４】
ステップＳ３５において、ＣＰＵ１２Ａは、三次元形状３２Ａを三次元形状３２Ｂから離間させ、干渉領域３６が消滅するような編集を許可する離間編集許可を受け付けたか否かを判定する。離間編集許可は、ユーザが操作部１４を操作することでＣＰＵ１２Ａに通知される。
【０１２５】
離間編集許可を受け付けていない場合はステップＳ６０に移行し、編集装置１０と同じく、ＣＰＵ１２Ａは、編集対象である三次元形状３２Ａがベースとなる三次元形状３２Ｂから離間しないように編集を制御する。
【０１２６】
一方、離間編集許可を受け付けている場合にはステップＳ４０に移行し、編集を実行する。すなわち、三次元形状３２Ａが三次元形状３２Ｂから離間するような編集が行われている場合であっても、離間編集許可があればそのまま編集を実行する。したがって、図２１及び図２２の矢印Ｆ２で示した経路に沿って三次元形状３２Ａを移動させる等の編集が許可されることになる。
【０１２７】
ステップＳ５０で編集の終了が判定され、編集の終了指示を受け付けた場合にはステップＳ７０に移行する。
【０１２８】
ステップＳ７０において、ＣＰＵ１２Ａは、ステップＳ２０と同じ処理を実行して、編集終了時における三次元形状３２Ａが、ベースとなる三次元形状３２Ｂと干渉する位置にあるか否かを判定する。
【０１２９】
ステップＳ８０において、ＣＰＵ１２Ａは、ステップＳ７０の干渉判定によって、三次元形状３２Ａと三次元形状３２Ｂとの間に干渉領域３６が存在しないと判定した場合、ステップＳ９０に移行する。
【０１３０】
ステップＳ９０において、ＣＰＵ１２Ａは、ステップＳ６０と同じく、編集対象である三次元形状３２Ａを、ベースとなる三次元形状３２Ｂから離間させずに編集するように、表示部１６に警告を表示する。そして、ステップＳ１０に移行して、ＣＰＵ１２Ａは、編集に伴う次の操作量を取得するまで待機する。すなわち、ＣＰＵ１２Ａは、編集の終了時において、三次元形状３２Ａが三次元形状３２Ｂから離間していないことを確認する。三次元形状３２Ａが三次元形状３２Ｂから離間している場合には、編集の終了指示を受け付けたとしても、三次元形状３２Ａが三次元形状３２Ｂに干渉するまで、ユーザに三次元形状３２の編集を継続させる。
【０１３１】
または、三次元形状３２Ａが三次元形状３２Ｂから離間している場合に編集の終了指示を受け付けた場合、三次元形状３２Ａが最寄りの三次元形状３２Ｂに干渉するようにＣＰＵ１２Ａで自動的に編集してから、三次元形状３２の編集を終了するようにしてもよい。この場合、三次元形状３２が自動的に干渉するように編集されることを事前に通知するメッセージ、又は三次元形状３２が自動的に干渉するように編集されたことを通知するメッセージをユーザに提供することが好ましい。
【０１３２】
一方、ステップＳ８０の判定処理が肯定判定の場合には、図２３に示した三次元形状データの編集処理を終了する。
【０１３３】
なお、編集装置１０Ａにおいても、複数の三次元形状で構成された三次元形状３２Ａを１つの一体化された三次元形状３２Ａとして取り扱ってもよい。また、編集装置１０Ａは、複数の三次元形状で構成された三次元形状３２Ｂを１つの一体化された三次元形状３２Ｂとして取り扱ってもよい。
【０１３４】
図２４は、ベースとなる三次元形状３２Ｂが、三次元形状３２Ｂ−１及び三次元形状３２Ｂ−２で構成された三次元形状３２の例を示す図である。
【０１３５】
編集装置１０Ａは、三次元形状３２Ｂ−１及び三次元形状３２Ｂ−２を、１つの一体化された三次元形状３２Ｂとして取り扱う。したがって、編集装置１０Ａは、図２４の矢印Ｆ２で示す経路に沿って三次元形状３２Ａが三次元形状３２Ｂ−１から離間し、三次元形状３２Ｂ−２に移動する編集を許可する。
【０１３６】
このように編集装置１０Ａは、ユーザから離間編集許可を受け付けた場合、編集対象である三次元形状３２Ａがベースとなる三次元形状３２Ｂから離間する編集を許可する。編集装置１０Ａは、編集の終了指示を受け付けた後、三次元形状３２Ａが三次元形状３２Ｂに干渉しているか否かを判定し、干渉していなければユーザに編集のやり直しを促す。したがって、編集装置１０Ａは、編集の自由度を高めた上で、ユーザが意図しない編集が行われることを抑制する。
【０１３７】
ここでは、三次元形状３２Ａの移動を例にして編集装置１０Ａの作用を説明したが、回転、拡大、及び縮小等の他の編集に対しても、図２３に示した編集処理が適用されることは言うまでもない。
【０１３８】
＜第４実施形態＞
第１実施形態及び第２実施形態に係る編集装置１０、並びに、第３実施形態に係る編集装置１０Ａは、例えば図２５に示すように、三次元形状３２Ａと三次元形状３２Ｂの一部でも干渉していれば三次元形状３２Ａ、３２Ｂ同士が干渉していると判定した。
【０１３９】
既に説明したように、三次元形状３２を構成する各々のボクセル３４には様々な属性が指定されている。したがって、図２５に示す三次元形状３２Ａ、３２Ｂに、それぞれ異なる材質Ｍ１及び材質Ｍ２で構成された領域が指定されているとする。
【０１４０】
この場合、同じ材料同士を接続した方が、異なる材料同士を接続するよりも接続が容易で、且つ、接続箇所の強度も保てることがある。したがって、状況によっては図２６に示すように、例えば材質が“Ｍ２”と指定された領域同士が干渉するように三次元形状データの編集を行いたい場面が発生することがある。
【０１４１】
第４実施形態では、同じ属性を有する領域が干渉するように三次元形状データの編集を行う編集装置１０Ｂについて説明する。なお、編集装置１０Ｂの構成は、図１に示した編集装置１０と同じ構成を有する。
【０１４２】
図２７は、編集装置１０Ｂで行われる三次元形状データの編集処理の流れの一例を示すフローチャートである。三次元形状データの編集処理を規定する編集プログラムはＲＯＭ１２Ｂに予め記憶されており、例えばユーザから三次元形状３２の編集開始指示を受け付けると、ＣＰＵ１２Ａが編集プログラムをＲＯＭ１２Ｂから読み出して実行する。
【０１４３】
図２７に示す編集処理が、第１実施形態において説明した図３の編集処理と異なる点は、ステップＳ５が追加され、ステップＳ２０がステップＳ２０Ａに置き換えられた点である。その他の処理については、図３で説明した編集処理と同じ処理を行う。したがって、以降では、図３に示した編集処理とは異なる点を中心に、図２５に示した三次元形状３２を例にして図２７に示す編集処理を説明する。
【０１４４】
まず、ステップＳ５において、ＣＰＵ１２Ａは三次元形状３２Ａ及び三次元形状３２Ｂのそれぞれの属性を取得する。取得する属性の種類は、例えばユーザによって操作部１４から指定される。図２５の例では、同じ材質を有する領域を干渉させる編集を行うことから、属性の種類としては「材質」が取得され、判定対象となる材質として、例えば「材質Ｍ２」が取得される。
【０１４５】
ステップＳ２０Ａにおいて、ＣＰＵ１２Ａは、ステップＳ１０で取得した操作量から編集後の三次元形状３２Ａの位置を算出し、仮に、三次元形状３２Ａが算出した位置にあるとみなした場合の三次元形状３２Ａと三次元形状３２Ｂを、三次元座標空間におけるビット列で表す。この際、ＣＰＵ１２Ａは、ステップＳ５で取得した属性に関するビット列で、三次元形状３２Ａ及び三次元形状３２Ｂを表す。
【０１４６】
図２８は、図２５に示す三次元形状３２を表すビット列の一例を示す図である。図２８では、属性の判定対象である“Ｍ２”の材質が割り当てられている三次元形状３２の座標の要素値を“１”に設定し、その他の座標の要素値を“０”に設定している。
【０１４７】
ＣＰＵ１２Ａは、三次元形状３２Ａを表すビット列と、三次元形状３２Ｂを表すビット列とに対してＡＮＤ演算を行うことで、材質Ｍ２が干渉する干渉領域３６を抽出する。そして、ＣＰＵ１２Ａは、材質Ｍ２の属性を有する三次元形状３２Ａの領域が、同じく材質Ｍ２の属性を有する三次元形状３２Ｂの領域と干渉するような編集が行われたか否かを判定する。
【０１４８】
なお、ＣＰＵ１２ＡはＡＮＤ演算を行う場合、編集対象である三次元形状３２Ａの材質Ｍ２の領域と隣接する座標の要素値も“１”に変更した上でＡＮＤ演算を行う。これにより、三次元形状３２Ａのうち材質Ｍ２で構成される領域と、三次元形状３２Ｂのうち材質Ｍ２で構成される領域と表面で接触する場合も、干渉状態にあると判定される。
【０１４９】
以降、ステップＳ３０で材質Ｍ２の干渉が認められない場合にはステップＳ６０で警告を表示し、ＣＰＵ１２Ａは、三次元形状３２Ａの材質Ｍ２の領域が三次元形状３２Ｂの材質Ｍ２の領域から離間しないように編集を制御する。
【０１５０】
このように第４実施形態に係る編集装置１０Ｂによれば、同じ属性が干渉する領域を三次元形状３２の干渉領域として抽出する。干渉領域の判定対象となる属性を様々に選択することで、目的に応じた三次元形状３２の編集が行われる。
【０１５１】
なお、干渉領域の判定対象となる属性は複数選択してもよい。この場合、図２７のステップＳ２０Ａにおいて、選択した複数種類の属性のうち、少なくとも１つの属性を含む領域が干渉していれば干渉領域３６として抽出してもよく、また、選択した全ての属性を含む領域が干渉している場合に限り、干渉領域３６として抽出してもよい。
【０１５２】
以上、各実施形態を用いて本発明について説明したが、本発明は各実施形態に記載の範囲には限定されない。本発明の要旨を逸脱しない範囲で各実施形態に多様な変更または改良を加えることができ、当該変更または改良を加えた形態も本発明の技術的範囲に含まれる。
【０１５３】
例えば、図３、図１２、図２３、及び図２７に示した三次元形状データの編集処理をＡＳＩＣ（Application Specific Integrated Circuit）等のハードウエアで実現するようにしてもよい。この場合、ソフトウエアで実現する場合に比べて、処理の高速化が図られる。
【０１５４】
また、各実施形態では、三次元形状データの編集プログラムがＲＯＭ１２Ｂにインストールされている形態を説明したが、これに限定されるものではない。本発明に係る編集プログラムを、コンピュータ読取可能な記憶媒体に記録した形態で提供してもよい。例えば、本発明に係る編集プログラムを、ＣＤ(Compact Disc)−ＲＯＭ及びＤＶＤ(Digital Versatile Disc)−ＲＯＭ等の光ディスクに記録した形態、若しくはＵＳＢ(Universal Serial Bus)メモリ及びメモリカード等の半導体メモリに記録した形態で提供してもよい。また、本発明に係る編集プログラムを、通信部１８に接続された通信回線を介して外部装置から取得するようにしてもよい。
【符号の説明】
【０１５５】
１０（１０Ａ、１０Ｂ）・・・編集装置、１２・・・コントローラ、１２Ａ・・・ＣＰＵ、１２Ｂ・・・ＲＯＭ、１２Ｃ・・・ＲＡＭ、１２Ｄ・・・不揮発性メモリ、１４・・・操作部、１６・・・表示部、１８・・・通信部、２０・・・記憶部、３２（３２Ａ、３２Ｂ）・・・三次元形状、３４・・・ボクセル、３６（３６Ａ、３６Ｂ）・・・干渉領域、３８・・・基準点、４０・・・基準軸
【図１】
2018190316.tif 000003
【図２】
2018190316.tif 000004
【図３】
2018190316.tif 000005
【図４】
2018190316.tif 000006
【図５】
2018190316.tif 000007
【図６】
2018190316.tif 000008
【図７】
2018190316.tif 000009
【図８】
2018190316.tif 000010
【図９】
2018190316.tif 000011
【図１０】
2018190316.tif 000012
【図１１】
2018190316.tif 000013
【図１２】
2018190316.tif 000014
【図１３】
2018190316.tif 000015
【図１４】
2018190316.tif 000016
【図１５】
2018190316.tif 000017
【図１６】
2018190316.tif 000018
【図１７】
2018190316.tif 000019
【図１８】
2018190316.tif 000020
【図１９】
2018190316.tif 000021
【図２０】
2018190316.tif 000022
【図２１】
2018190316.tif 000023
【図２２】
2018190316.tif 000024
【図２３】
2018190316.tif 000025
【図２４】
2018190316.tif 000026
【図２５】
2018190316.tif 000027
【図２６】
2018190316.tif 000028
【図２７】
2018190316.tif 000029
【図２８】
2018190316.tif 000030