以下に図面を参照して、本発明にかかる空間抽出プログラム、空間抽出方法および空間抽出装置の実施の形態を詳細に説明する。
(空間抽出方法の一実施例)
図1は、空間抽出方法の一実施例を示す説明図である。空間抽出装置100は、シミュレーション空間上に配置された複数の部品から形成される3次元形状の内部空間を抽出するコンピュータである。
ここで、シミュレーション空間とは、コンピュータ上でシミュレーションされる仮想的な3次元空間である。具体的には、例えば、シミュレーション空間は、3次元形状の設計を行うためのCAD(Computer Aided Design)ソフトウェアによって空間抽出装置100内に仮想的に設定された空間である。シミュレーション空間には、例えば、X軸とY軸とZ軸とからなる3次元の直交座標系が定義される。
3次元形状とは、PC(Personal Computer)、タブレットPC、サーバ、携帯情報端末、スマートフォン、自動車、家電製品などの機械製品やビルなどの建物などをコンピュータ上に仮想化したモデルである。3次元形状は、例えば、3次元のCADソフトウェアにおける3次元のCADのデータで表現される。また、3次元形状は、複数の部品から形成される。各部品は、例えば、位置データ、材料データ、色データなどを含む3次元のCADデータで表現される。3次元形状のデータおよび部品のデータは、空間抽出装置100がアクセス可能な記憶装置に記憶される。3次元形状のデータは、図3で詳細に説明される。
3次元形状には、穴や隙間が存在してもよい。ここで、穴とは、3次元形状の内部と外部をつなぐ空間のことである。また、隙間とは、3次元形状を構成する部品と部品との間の内部と外部をつなぐ空間のことである。また、内部空間とは、3次元形状の内側に存在する空間のことである。
図1の例で、左上図は3次元形状101の一例を示す。図1の例で、3次元形状101は、部品102、103、104から形成され、部品102には、複数の穴が存在し、部品102と103の間には隙間が存在する。右上図は、切断面110における3次元形状101の断面図である。以下の例では、3次元形状101の断面図を使用して説明する。
空間抽出装置100は、3次元形状101の部品を膨張させ、膨張させた部品を取り除いた空間の中で、内部に配置された部品に接する第1の空間を再度膨張させることにより、3次元形状の内部空間を抽出する。また、空間抽出装置100は、第1の空間を膨張させた空間と3次元形状を取り除いた第2の空間中で、第1の空間と重複しない空間を、第1の空間を膨張させた空間に連結することにより、3次元形状の内部空間を抽出することもできる。
(1)空間抽出装置100は、3次元形状101の内部と外部とをつなぐ穴または隙間が塞がるように、各部品の面を外側に所定サイズ分膨張させた膨張形状を生成する。所定サイズは、穴または隙間を塞ぐために選ばれた値であり、例えば、入力装置を用いたユーザの操作入力により空間抽出装置100が取得することができる。所定サイズは、例えば、部品の穴の直径または隙間の幅の中で最大のものの半分とすることができる。
膨張とは、部品の各面を外側に膨らませることである。このため、穴または隙間を形成する面が外側に膨らむことにより、穴または隙間が塞がれるようになる。また、膨張形状とは、部品を膨張させたものであり、1つの部品から1つの膨張形状が生成される。
図1の例では、空間抽出装置100は、部品102、103、104の各面を外側に膨張させ、膨張形状111、112、113を生成する。部品102、103、104の膨張により、部品102の穴、および部品102と103の間の隙間は塞がれる。
(2)空間抽出装置100は、シミュレーション空間から、生成した各部品の膨張形状を除く第1の空間集合を抽出する。シミュレーション空間から、生成した各部品の膨張形状を除くとは、シミュレーション空間の中で、生成した各部品の膨張形状が存在しない空間を求めることである。生成した各部品の膨張形状が存在しない空間は、シミュレーション空間から、生成した各部品の膨張形状の差集合演算を行うことで求めることができる。
図1の例では、空間抽出装置100は、シミュレーション空間から膨張形状111、112、113を除く第1の空間集合121、122を抽出する。
(3)空間抽出装置100は、抽出した第1の空間集合のうち3次元形状の内部に配置された部品の膨張形状に接する空間を、当該空間の面を外側に所定サイズ分膨張させた膨張空間を生成することにより、3次元形状の内部空間を抽出する。ここで、接するとは、膨張形状と空間が面で交わることを意味する。3次元形状の内部に配置された部品とは、当該部品を構成するすべての面が外部に面していない部品である。3次元形状が、スマートフォン、携帯情報端末である場合、内部に配置された部品は、例えば、スピーカー等の音源である。この場合、空間抽出装置100が抽出した3次元形状の内部空間は、音源空間となる。音源空間とは、3次元形状の内部空間の中で音源に接する内部空間である。
また、空間抽出装置100は、3次元形状の部品を膨張させる際、3次元形状の各部品のすべての面を等距離に膨張させることが好ましい。3次元形状の各部品のすべての面を等距離に膨張させることは、3次元形状の各部品の面を拡大して、膨張させる場合よりも、塞いではいけない箇所が塞がれることを防止して、音源空間の抽出精度を向上する効果を有する。この効果は以下の図10A〜図12Bにて詳細に説明される。
図1の例では、3次元形状の内部に配置された部品は、部品104であり、部品104の膨張形状112に接する空間は、第1の空間集合121である。空間抽出装置100は、第1の空間集合121の面を外側に所定サイズ分膨張させた膨張空間131を生成し、3次元形状の内部空間を抽出する。
空間抽出装置100は、膨張空間131を3次元形状の内部空間とすることにより処理を終えてもよい。しかしながら、膨張空間131だけでは、3次元形状の内部空間をすべて含んでいないため、空間抽出装置100は、さらに以下(4)、(5)の処理を続けることにより、3次元形状の内部空間の抽出精度を向上することができる。
(4)空間抽出装置100は、シミュレーション空間から、生成した膨張空間および3次元形状を除く第2の空間集合を抽出する。シミュレーション空間から、生成した膨張空間および3次元形状を除くとは、シミュレーション空間の中で生成した膨張空間および3次元形状が存在しない空間を求めることである。生成した膨張空間および3次元形状が存在しない空間は、シミュレーション空間から、生成した膨張空間および3次元形状の差集合演算を行うことで求めることができる。
図1の例では、空間抽出装置100は、シミュレーション空間から膨張空間131と3次元形状101の差集合演算を行うことにより、第2の空間集合141、142、143を抽出する。
(5)空間抽出装置100は、抽出した第2の空間集合のうち第1の空間集合のいずれの空間とも重複しない空間と、膨張空間とを連結することにより、3次元形状の内部空間を抽出する。第1の空間集合のいずれの空間とも重複しない空間とは、すべての第1の空間集合と共通の空間が存在しない集合のことである。第1の空間集合と面、線または点のみを共通にする空間は、面、線または点は空間でないため、重複しない空間である。また、第1の空間集合のいずれの空間とも重複しない空間と、膨張空間とを連結することとは、2つの空間を合わせて1つの空間にすることである。2つの空間は、例えば、和集合演算を行うことにより、1つの空間にすることができる。
図1の例では、第2の空間集合143は第1の空間集合122と重複し、第2の空間集合141、142は第1の空間集合121、122のいずれとも重複しない。このため、空間抽出装置100は、第2の空間集合141、142と膨張空間131とを連結することにより、3次元形状の内部空間151を抽出する。
(1)〜(5)の処理により抽出された3次元形状の内部空間151は、第2の空間集合141、142を含んでいる。一方、(1)〜(3)の処理により抽出された膨張空間131は、第2の空間集合141、142を含んでいない。第2の空間集合141、142は、3次元形状の内部空間に含まれる空間であるため、(4)、(5)の処理を行うことにより、3次元形状の内部空間の抽出精度を向上させることができる。
上述したように、従来技術では、例えば、3次元形状全体を包含する空間全体から、3次元形状の差集合演算行い、空間を算出すると、穴や隙間があるために装置外部の空間まで算出されてしまう。このため、装置の内部空間を算出するために、相応の技術と工数を要する。また、例えば、空間を算出する前に3次元形状から穴や隙間を検索して、穴や隙間を埋めた3次元形状から、装置内部の音源に接する内部空間を算出する方法がある。しかし、インナーループになっていない穴や隙間を検索することができないため、内部空間を算出できない場合がある。なお、インナーループとは、ループとなり閉じている複数の曲線から定義される曲面において、内側で穴を表す輪郭のことである。
そこで、空間抽出装置100は、3次元形状を形成する各部品の面を所定サイズ分膨張させて穴や隙間を塞ぎ、膨張させた部品を除く空間の中で内部の音源に接する空間を所定サイズ分膨張させる。
これにより、空間抽出装置100は、穴や隙間がある3次元形状から、相応の技術と工数を要することなく、3次元形状の内部空間を抽出することができる。
また、携帯電話、スマートフォン等の製品は、小型化、薄型化、軽量化により十分な音源空間を確保しづらくなっている。このため、製品の音響品質が確保しづらくなっている。さらに、開発期間の短期化も進んでおり、音響品質の検証に十分な期間を取ることができない。従って、設計の早い段階から、音源周囲の部品に穴や部品間の隙間がある3次元形状から、音源空間を予測し、音源空間を十分に確保しておくことで音響品質を高めることが求められている。
例えば、空間抽出装置100は、音源周囲の部品に穴や部品間に隙間がある3次元形状から、音源空間を抽出することができる。このため、設計の早い段階から音源空間を予測し、音源空間を十分に確保しておくことで音響品質を高めることが可能になる。
また、空間抽出装置100は、膨張空間および3次元形状を除く第2の空間集合を抽出し、第2の空間集合のうち第1の空間集合のいずれの空間とも重複しない空間を膨張空間と連結することにより、3次元形状の内部空間を抽出することもできる。これにより、第2の空間集合を膨張空間に連結することができるため、空間抽出装置100は、3次元形状の内部空間の抽出精度を向上することができる。
(空間抽出装置100のハードウェア構成例)
図2は、空間抽出装置100のハードウェア構成例を示すブロック図である。図2において、空間抽出装置100は、CPU(Central Processing Unit)201と、ROM(Read−Only Memory)202と、RAM(Random Access Memory)203と、磁気ディスクドライブ204と、磁気ディスク205と、I/F(Interface)206と、入力装置207と、出力装置208と、を有する。また、各部はバス200によってそれぞれ接続される。
ここで、CPU201は、空間抽出装置100の全体の制御を司る。ROM202は、ブートプログラムなどのプログラムを記憶する。RAM203は、CPU201のワークエリアとして使用される。磁気ディスクドライブ204は、CPU201の制御にしたがって磁気ディスク205に対するデータのリード/ライトを制御する。磁気ディスク205は、磁気ディスクドライブ204の制御で書き込まれたデータを記憶する。
I/F206は、通信回線を通じてLAN(Local Area Network)、WAN(Wide Area Network)、インターネットなどのネットワーク220に接続され、このネットワーク220を介して他の装置に接続される。そして、I/F206は、ネットワーク220と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。I/F206には、例えばモデムやLANアダプタなどを採用することができる。
入力装置207は、キーボード、マウス、タッチパネルなどユーザの操作により、各種データの入力を行うインターフェースである。また、入力装置207は、カメラから画像や動画を取り込むこともできる。また、入力装置207は、マイクから音声を取り込むこともできる。出力装置208は、CPU201の指示により、データを出力するインターフェースである。出力装置208には、ディスプレイやプリンタが挙げられる。なお、空間抽出装置100は、上述した構成部のほか、例えば、SSD(Solid State Drive)、光ディスクなどを有することにしてもよい。
(3次元形状のデータ300の記憶内容)
図3は、3次元形状のデータ300の記憶内容の一例を示す説明図である。3次元形状のデータ300は、3次元形状を形成する部品群を階層構造化して示す情報である。部品群の下層には、部品の設計情報301が含まれている。部品の設計情報301は、例えば、3次元形状を形成する部品の形状データ、属性データなどを含む3次元CADのデータである。形状データには、例えば、部品の形状を特定する情報が含まれている。属性データには、例えば、音源などの部品の属性を特定する情報が含まれている。
形状データは、例えば、頂点データ301−1と、面データ301−2と、稜線データ301−3とを含む。頂点データ301−1は、X軸とY軸とZ軸とからなる直交座標系において、部品の頂点の座標位置を示す情報である。例を挙げると、頂点は座標位置(X,Y,Z)で示される。面データ301−2は、部品の面を構成する頂点を示す情報である。例を挙げると、面は構成する4つの頂点で示される。稜線データ301−3は、部品の線を構成する頂点を示す情報である。例を挙げると、稜線は構成する2つの頂点で示される。3次元形状のデータ300は、例えば、3次元CADソフトウェアにより生成され、RAM203、磁気ディスク205などの記憶装置に記憶される。
(縮小空間配列400の記憶内容)
図4は、縮小空間配列400の記憶内容の一例を示す説明図である。縮小空間配列400は、縮小空間を形成する縮小空間群を階層構造化して示す情報である。縮小空間群の下層には、縮小空間の設計情報401が含まれている。縮小空間の設計情報401は、例えば、縮小空間の形状データなどを含む3次元CADデータである。形状データには、例えば、縮小空間の形状を特定する情報が含まれている。縮小空間配列400は、例えば、RAM203、磁気ディスク205などの記憶装置に記憶される。
形状データは、例えば、頂点データ401−1と、面データ401−2と、稜線データ401−3とを含む。頂点データ401−1は、X軸とY軸とZ軸とからなる直交座標系において、縮小空間内の頂点の座標位置を示す情報である。例を挙げると、頂点は座標位置(X,Y,Z)で示される。面データ401−2は、縮小空間内の面を構成する頂点を示す情報である。例を挙げると、面は構成する4つの頂点で示される。稜線データ401−3は、縮小空間内の線を構成する頂点を示す情報である。例を挙げると、稜線は構成する2つの頂点で示される。
(空間抽出装置100の機能的構成例)
図5は、空間抽出装置100の機能的構成例を示すブロック図である。図5において、空間抽出装置100は、取得部501と、膨張形状生成部502と、縮小空間抽出部503と、検索部504と、膨張空間生成部505と、余空間抽出部506と、選択部507と、音源空間抽出部508と、を含む構成である。この制御部となる機能(取得部501〜音源空間抽出部508)は、具体的には、例えば、図2に示したROM202、RAM203、磁気ディスク205などの記憶装置に記憶されたプログラムをCPU201に実行させることにより、または、I/F206により、その機能を実現する。各機能部の処理結果は、例えば、RAM203、磁気ディスク205などの記憶装置に記憶される。
なお、図1の第1の空間は、図5の縮小空間に対応し、図1の第2の空間は、図5の膨張空間に対応する。
取得部501は、所定のサイズを取得する機能を有する。取得部501は、例えば、3次元形状において、塞ぎたい穴の直径または隙間の幅を、所定サイズとして取得する。取得部501は、複数の穴または複数の隙間が存在するとき、穴の直径または隙間の幅の中で最大のものを取得する。
具体的には、例えば、取得部501が、図2に示した入力装置207を用いたユーザの操作入力により、または、ネットワーク220を介した外部のコンピュータから塞ぎたい穴や隙間の大きさを取得する。
図6Aは、3次元形状600の一例を示す説明図である。本例では、3次元形状600は、部品601、部品602、音源603を含む。部品601は9つの穴を有し、部品601と部品602の間には隙間が存在する。また、音源603は、部品602に埋め込まれている。
図6Bは、図6Aの3次元形状600の一例の断面を示す説明図である。本例は、切断面610における図6Aの3次元形状の断面図である。以下の例では、3次元形状600の断面図を使用して説明する。
図6A、図6Bの例では、取得部501は、部品601の穴の直径、および部品601と部品602の間の隙間の幅の中で最大のものを取得する。
膨張形状生成部502は、取得部501が取得した大きさの半分だけ3次元形状の各部品を膨張させ、膨張形状を生成する機能を有する。膨張形状生成部502は、3次元形状のデータ300から部品を取り出して、各部品の面を外側に取得した大きさの半分だけ膨張させ、膨張形状を生成し、生成した膨張形状を膨張形状配列に記憶する。
膨張形状配列は3次元形状のデータ300と同じデータ構造を有し、膨張形状群を階層構造化して示す情報である。膨張形状群の下層には、膨張形状の設計情報が含まれている。膨張形状の設計情報は、例えば、3次元形状を構成する部品の形状データ、属性データなどを含む3次元CADのデータである。形状データには、例えば、部品の形状を特定する情報が含まれている。属性データには、例えば、音源などの部品の属性を特定する情報が含まれている。また、膨張形状配列は、例えば、RAM203、磁気ディスク205などの記憶装置に記憶される。
また、膨張形状生成部502は、3次元形状の部品を膨張させる際、3次元形状の各部品のすべての面を等距離に膨張させることが好ましい。3次元形状の各部品のすべての面を等距離に膨張させることは、3次元形状の各部品の面を拡大して、膨張させる場合よりも、塞いではいけない箇所が塞がれることを防止して、音源空間の抽出精度を向上する効果を有する。この効果は以下の図10A〜図12Bにて詳細に説明される。
図7Aは、部品701のすべての面を等距離に膨張させた膨張形状702の一例を示す説明図である。すべての面を等距離に膨張させているため、部品701のすべての点において、部品701と膨張形状702との間の距離は同一である。例えば、A点での部品701と膨張形状702との間の距離は、B点での部品701と膨張形状702との間の距離と同一である。
図7Bは、部品701の面を拡大して膨張させた膨張形状703の一例を示す説明図である。各部品の面を拡大して、膨らませているため、部品701の点において、部品701と膨張形状703との間の距離が異なる場合が存在する。例えば、A点での部品701と膨張形状703との間の距離αは、B点での部品701と膨張形状703との間の距離√(2α2)より短くなっている。
図8Aは、膨張形状801、802の一例を示す説明図である。図8Aの例では、図6Bの3次元形状の部品601、部品602、音源603は、取得部501が取得した大きさの半分だけ、部品601、部品602、音源603のすべての面を等距離に膨張させた膨張形状である。膨張形状801は部品601を膨張させたものであり、膨張形状802は部品602および音源603を膨張させたものである。
縮小空間抽出部503は、膨張形状生成部502が生成した膨張形状から、縮小空間を抽出する機能を有する。縮小空間抽出部503は、膨張形状配列から膨張形状を取り出して、3次元形状を包含する空間全体から膨張形状の差集合演算を行うことにより、縮小空間を抽出し、抽出した縮小空間を縮小空間配列400に記憶する。
図8Bは、縮小空間811、812の一例を示す説明図である。図8Bの例では、縮小空間抽出部503が、3次元形状を包含する空間全体から膨張形状801、802の差集合演算を行うことにより、縮小空間811と縮小空間812を抽出する。
検索部504は、縮小空間抽出部503が抽出した縮小空間の中から音源縮小空間を検索する機能を有する。検索部504は、縮小空間配列400から縮小空間を取り出して、取り出した縮小空間のうち、音源603の膨張形状に接するものを検索し、検索した縮小空間を音源縮小空間として、音源縮小空間配列に記憶する。
音源縮小空間配列は、縮小空間配列400と同じデータ構造を有し、音源縮小空間群を階層構造化して示す情報である。音源縮小空間群の下層には、音源縮小空間の設計情報が含まれている。音源縮小空間の設計情報は、例えば、音源縮小空間の形状データなどを含む3次元CADデータである。形状データには、例えば、音源縮小空間の形状を特定する情報が含まれている。音源縮小空間配列は、例えば、RAM203、磁気ディスク205などの記憶装置に記憶される。
図8Cは、音源縮小空間821の一例を示す説明図である。図8Cの例では、検索部504は、縮小空間811を、音源603の膨張形状に接するため、音源縮小空間821として検索する。
膨張空間生成部505は、検索部504が検索した音源縮小空間を、取得部501が取得した大きさの半分だけ膨張させ、音源膨張空間を生成する機能を有する。膨張空間生成部505は、音源縮小空間配列から音源縮小空間を取り出して、膨張させ、生成した音源膨張形状を音源膨張空間配列に記憶する。
音源膨張空間配列は、縮小空間配列400と同じデータ構造を有し、音源膨張空間群を階層構造化して示す情報である。音源膨張空間群の下層には、音源膨張空間の設計情報が含まれている。音源膨張空間の設計情報は、例えば、音源膨張空間の形状データなどを含む3次元CADデータである。形状データには、例えば、音源膨張空間の形状を特定する情報が含まれている。音源膨張空間配列は、例えば、RAM203、磁気ディスク205などの記憶装置に記憶される。
また、膨張空間生成部505は、音源縮小空間を膨張させる際、音源縮小空間のすべての面を等距離に膨張させることが好ましい。
図8Dは、音源膨張空間831の一例を示す説明図である。図8Dの例では、膨張空間生成部505が、図8Cの音源縮小空間821を、取得部501が取得した大きさの半分だけ音源縮小空間のすべての面を等距離に膨張させた音源膨張空間831である。
余空間抽出部506は、膨張空間生成部505が生成した音源膨張空間から、余空間を抽出する機能を有する。余空間抽出部506は、音源膨張空間配列から音源膨張空間を取り出して、3次元形状を包含する空間全体から、3次元形状と音源膨張空間との差集合演算を行うことにより、余空間を抽出し、抽出した余空間を余空間配列に記憶する。
余空間配列は、縮小空間配列400と同じデータ構造を有し、余空間配列は、余空間群を階層構造化して示す情報である。余空間群の下層には、余空間の設計情報が含まれている。余空間の設計情報は、例えば、余空間の形状データなどを含む3次元CADデータである。形状データには、例えば、余空間の形状を特定する情報が含まれている。余空間配列は、例えば、RAM203、磁気ディスク205などの記憶装置に記憶される。
図8Eは、余空間841〜847の一例を示す説明図である。図8Eの例では、余空間抽出部506が、3次元形状を包含する空間全体から、3次元形状600と音源膨張空間831との差集合演算を行い、余空間841〜余空間847を抽出する。
選択部507は、余空間抽出部506が抽出した余空間の中から音源余空間を選択する機能を有する。選択部507は、余空間配列から余空間を取り出して、取り出した余空間のうち、縮小空間と重複する空間を有しないものを選択し、選択した余空間を音源余空間として、音源余空間配列に記憶する。
音源余空間配列は、縮小空間配列400と同じデータ構造を有し、音源余空間配列は、音源余空間群を階層構造化して示す情報である。音源余空間群の下層には、音源余空間の設計情報が含まれている。音源余空間の設計情報は、例えば、音源余空間の形状データなどを含む3次元CADデータである。形状データには、例えば、音源余空間の形状を特定する情報が含まれている。音源余空間配列は、例えば、RAM203、磁気ディスク205などの記憶装置に記憶される。
図8Fは、音源余空間852〜857の一例を示す説明図である。図8Fの例では、選択部507が、余空間841〜余空間847から、縮小空間811、812と重複する空間を有しない、音源余空間852〜音源余空間857を抽出する。
音源空間抽出部508は、選択部507が選択した音源余空間から、音源空間を抽出する機能を有する。音源空間抽出部508は、音源余空間配列から音源余空間を取り出して、音源膨張空間配列から音源膨張空間を取り出して、取り出した音源余空間と取り出した音源膨張空間との和集合演算を行うことにより、音源空間を抽出する。音源空間抽出部508は、抽出した音源空間を音源空間配列に記憶する。
音源空間配列は、縮小空間配列400と同じデータ構造を有し、音源空間配列は、音源空間群を階層構造化して示す情報である。音源空間群の下層には、音源空間の設計情報が含まれている。音源空間の設計情報は、例えば、音源空間の形状データなどを含む3次元CADデータである。形状データには、例えば、音源空間の形状を特定する情報が含まれている。音源空間配列は、例えば、RAM203、磁気ディスク205などの記憶装置に記憶される。
図9は、音源空間901の一例を示す説明図である。図9の例では、音源空間抽出部508が、音源膨張空間831と音源余空間852〜音源余空間857との和集合演算を行うことにより、音源空間901を抽出する。
(3次元形状の各部品のすべての面を等距離に膨張させることによる効果)
以下に図10A〜図12Bを参照して、3次元形状の各部品のすべての面を等距離に膨張させることによる効果を詳細に説明する。
図10Aは、他の3次元形状1000の一例を示す説明図である。図10Aに示す3次元形状1000は、9つの穴と1つの隙間を有し、図6Aに示す3次元形状600と比べて、凹部1001を有している。図10Bは、図10Aの3次元形状1000の一例の断面を示す説明図である。本例は、切断面1010における図10Aの3次元形状の断面図である。以下の例では、3次元形状の断面図を使用して説明する。
図10Bに示す3次元形状1000は、穴の直径が3cmであり、隙間の幅が1.5cmである。また、凹部1001の入り口の大きさは、図10Bの黒い円の中で示されるように3.5cmである。穴の直径と隙間の直径の最大値は3cmであるため、取得部501は、3cmを取得する。膨張形状生成部502は、取得部501が取得した3cmの半分、つまり1.5cmだけ3次元形状1000の各部品を膨張させる。
図11Aは、3次元形状1000の各部品を膨張した膨張形状1101の一例を示す説明図である。膨張形状1101は、3次元形状1000の各部品の面を拡大して膨張されたものである。膨張形状1101は、各部品の面が1.5cm拡大されるため、3次元形状1000の直径3cmの穴および幅1.5cmの隙間は塞がれている。しかしながら、各部品の面が1.5cm拡大されるため、凹部1001の入り口の部分は、それぞれ約2.12cm拡大され、和は3.5cmの入り口の大きさより大きくなる。このため、図11Aの黒い円の中で示されるように拡大された凹部1102の入り口は塞がれる。
図11Bは、図11Aの膨張形状1101から抽出された音源空間1103の一例を示す説明図である。拡大された凹部1102の入り口は塞がれているため、縮小空間抽出部503は、図11Aの膨張形状1101から、拡大された凹部1102が含まれていない縮小空間を生成する。このため、膨張空間生成部505が生成する膨張空間にも、拡大された凹部1102は含まれず、音源空間抽出部508が最終的に抽出する音源空間1103にも凹部1001は含まれない。
図12Aは、3次元形状1000の各部品のすべての面を等距離に膨張させた膨張形状1201の一例を示す説明図である。膨張形状1201は、各部品のすべての面が等距離に1.5cm膨張されるため、3次元形状1000の直径3cmの穴および幅1.5cmの隙間は塞がれている。また、各部品のすべての面が等距離に1.5cm膨張されるため、凹部1001の入り口の部分も、それぞれ1.5cm膨張され、和は3.5cmの入り口の大きさより小さい。このため、図12Aの黒い円の中で示されるように拡大された凹部1202の入り口は塞がれない。
図12Bは、図12Aの膨張形状1201から抽出された音源空間1203の一例を示す説明図である。拡大された凹部1202の入り口は塞がれないため、縮小空間抽出部503は、図12Aの膨張形状1201から、拡大された凹部1202が含まれる縮小空間を生成する。このため、膨張空間生成部505が生成する膨張空間にも、拡大された凹部1202は含まれ、音源空間抽出部508が最終的に抽出する音源空間1203に凹部1001は含まれる。
このように、凹部1001の入り口の大きさが、穴の直径や隙間の幅の最大値と同じような大きさであっても、空間抽出装置100は、凹部1001を含んだ音源空間1203を抽出することができる。凹部1001は、音源空間に含まれる空間である。このため、凹部1001を含む音源空間を抽出する、部品のすべての面を等距離に膨張させる方法は、凹部1001を含まない音源空間を抽出する、部品の面を拡大して膨張させる方法により、精度を向上させて音源空間を抽出することができる。
(空間抽出装置100の空間抽出処理手順の一例)
図13、図14は、空間抽出装置100の空間抽出処理手順の一例を示すフローチャートである。図13、図14のフローチャートにおいて、まず、取得部501は、所定サイズを取得する(ステップS1301)。
膨張形状生成部502は、3次元形状のデータ300から部品データを1つ取得する(ステップS1302)。膨張形状生成部502は、取得部501が取得した所定サイズの半分だけ取得した部品データを膨張させ、膨張形状を生成する(ステップS1303)。膨張形状生成部502は、生成した膨張形状を膨張形状配列に記憶する(ステップS1304)。膨張形状生成部502は、3次元形状のデータ300のすべての部品データの膨張が終了したか否かを確認する(ステップS1305)。すべての部品データの膨張が終了しない場合(ステップS1305:No)、膨張形状生成部502は、ステップS1302に戻り、次の部品の膨張を行う。すべての部品データの膨張が終了した場合(ステップS1305:Yes)、膨張形状生成部502は、ステップS1306に進む。
縮小空間抽出部503は、膨張形状から、縮小空間を抽出する(ステップS1306)。縮小空間抽出部503は、膨張形状配列から膨張形状を取り出して、3次元形状を包含する空間全体から膨張形状の差集合演算を行うことにより、縮小空間を抽出する。縮小空間抽出部503は、抽出した縮小空間を縮小空間配列400に記憶する(ステップS1307)。
検索部504は、縮小空間配列400から縮小空間を1つ取得する(ステップS1308)。検索部504は、取得した縮小空間が、膨張形状生成部502が膨張させた音源に接するか否かを確認する(ステップS1309)。縮小空間が、膨張させた音源に接しない場合(ステップS1309:No)、ステップS1311に進む。縮小空間が、膨張させた音源に接する場合(ステップS1309:Yes)、検索部504は、当該縮小空間を音源縮小空間配列に記憶する(ステップS1310)。検索部504は、すべての縮小空間に対して、膨張させた音源に接するか否かの確認が終了したか否かを確認する(ステップS1311)。すべての縮小空間の確認が終了しない場合(ステップS1311:No)、検索部504は、ステップS1308に戻り、次の縮小空間の確認を行う。すべての縮小空間の確認が終了した場合(ステップS1311:Yes)、検索部504は、ステップS1312に進む。
膨張空間生成部505は、音源縮小空間配列から音源縮小空間を1つ取得する(ステップS1312)。膨張空間生成部505は、取得部501が取得した所定サイズの半分だけ取得した音源縮小空間を膨張させ、音源膨張空間を生成する(ステップS1313)。膨張空間生成部505は、生成した音源膨張空間を音源膨張空間配列に記憶する(ステップS1314)。膨張空間生成部505は、音源縮小空間配列のすべての音源縮小空間の膨張が終了したか否かを確認する(ステップS1315)。すべての音源縮小空間の膨張が終了しない場合(ステップS1315:No)、膨張空間生成部505は、ステップS1312に戻り、次の音源縮小空間の膨張を行う。すべての音源縮小空間の膨張が終了した場合(ステップS1315:Yes)、膨張空間生成部505は、ステップS1316に進む。
余空間抽出部506は、音源膨張空間から、余空間を抽出する(ステップS1316)。余空間抽出部506は、音源膨張空間配列から音源膨張空間を取り出して、3次元形状を包含する空間全体から、3次元形状と音源膨張空間との差集合演算を行うことにより、余空間を抽出する。余空間抽出部506は、抽出した余空間を余空間配列に記憶する(ステップS1317)。
選択部507は、余空間配列から余空間を1つ取得する(ステップS1318)。選択部507は、取得した余空間が縮小空間のいずれかと重複する空間を有するか否かを確認する(ステップS1319)。余空間が縮小空間のいずれかと重複する空間を有する場合(ステップS1319:Yes)、選択部507は、ステップS1321に進む。余空間が縮小空間のいずれかと重複する空間を有しない場合(ステップS1319:No)、選択部507は、当該余空間を音源余空間配列に記憶する(ステップS1320)。選択部507は、すべての余空間に対して、縮小空間のいずれかと重複する空間を有するか否かの確認が終了したか否かを確認する(ステップS1321)。すべての余空間の確認が終了しない場合(ステップS1321:No)、選択部507は、ステップS1318に戻り、次の余空間の確認を行う。すべての余空間の確認が終了した場合(ステップS1321:Yes)、選択部507は、ステップS1322に進む。
音源空間抽出部508は、選択部507が選択した音源余空間から、音源空間を抽出する(ステップS1322)。音源空間抽出部508は、音源余空間配列から音源余空間を取り出して、音源膨張空間配列から音源膨張空間を取り出して、取り出した音源余空間と取り出した音源膨張空間との和集合演算を行うことにより、音源空間を抽出する。これにより、本フローチャートによる一連の処理は終了する。本フローチャートを実行することにより、空間抽出装置100は、穴や隙間のある3次元形状から、音源空間を抽出する。
以上説明したように、空間抽出装置100によれば、3次元形状の各面を所定サイズ分膨張させて穴や隙間を塞ぎ、膨張させた3次元形状内の音源のある空間を所定サイズ分膨張させることにより、3次元形状内の音源空間を抽出する。これにより、音源周囲の部品に穴や部品間に隙間がある3次元形状から、音源空間を抽出することができる。そして、設計の早い段階から、音源空間を予測し、音源空間を十分に確保しておくことで音響品質を高めることが可能になる。
また、空間抽出装置100は、膨張前後の面間の距離が等距離になるように膨張形状を生成することもできる。これにより、凹部の入り口の大きさが、穴の直径や隙間の幅の最大値と同じような大きさであっても、空間抽出装置100は、凹部を含んだ音源空間を抽出することができ、精度を向上させて音源空間を抽出することができる。
また、空間抽出装置100は、穴の最大の直径または隙間の最大の幅の中で、大きい方の半分の大きさ以上の所定サイズで、3次元形状の各部品の面を外側に膨張させる。これにより、空間抽出装置100は、3次元形状の内部と外部とをつなぐ穴または隙間が塞がるように、3次元形状の各部品を膨張させることができる。
また、空間抽出装置100は、所定サイズを1回取得して3次元形状の各部品の面を外側に膨張させるが、所定サイズを複数回取得してもよい。この場合、最初の所定サイズで3次元形状の各部品の面を外側に膨張させ、3次元形状の内部と外部とをつなぐ穴または隙間が塞がっていない場合、所定サイズを大きくして、再度膨張させ、穴または隙間が塞がれるまで繰り返す。これにより、所定サイズの値をユーザが選ばなくてもよくなる。また、穴または隙間が塞がっているか否かは、例えば、空間抽出装置100が膨張形状を出力装置208に作画して、ユーザが確認することにより行うことができる。
また、所定サイズが大きすぎることにより、抽出された空間が外部の空間を含む場合、、例えば、ユーザが所定サイズを小さく設定し直して、抽出される空間が外部の空間を含まなくなるまで空間抽出処理を繰り返し実行させることにしてもよい。このように、抽出された空間が外部の空間を含む場合に、ユーザが、抽出された空間から外部の空間を除くなどの面倒な作業を行うことなく、所定サイズを変更するだけで効率良く内部空間を抽出することができる。
なお、本実施の形態で説明した空間抽出プログラムは、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本空間抽出プログラムは、磁気ディスク、光ディスク、USB(Universal Serial Bus)フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、本空間抽出プログラムは、インターネット等のネットワークを介して配布してもよい。
上述した実施の形態に関し、さらに以下の付記を開示する。
(付記1)シミュレーション空間上に配置された複数の部品から形成される3次元形状の内部空間を抽出する空間抽出プログラムであって、
前記3次元形状の内部と外部とをつなぐ穴または隙間が塞がるように、各部品の面を外側に所定サイズ分膨張させた膨張形状を生成し、
前記シミュレーション空間から、生成した前記各部品の膨張形状を除く第1の空間集合を抽出し、
抽出した前記第1の空間集合のうち前記3次元形状の内部に配置された部品の膨張形状に接する空間を、当該空間の面を外側に前記所定サイズ分膨張させた膨張空間を生成することにより、前記3次元形状の内部空間を抽出する、
処理をコンピュータに実行させることを特徴とする空間抽出プログラム。
(付記2)前記膨張形状を生成する処理は、前記3次元形状の内部と外部とをつなぐ穴または隙間が塞がるように、各部品の面を外側に所定サイズ分膨張させて、膨張前後の面間の距離が等距離になるように前記膨張形状を生成し、
前記内部空間を抽出する処理は、抽出した前記第1の空間集合のうち前記3次元形状の内部に配置された部品の膨張形状に接する空間を、当該空間の面を外側に前記所定サイズ分膨張させて、膨張前後の面間の距離が等距離になるように前記膨張形状を生成することを特徴とする付記1に記載の空間抽出プログラム。
(付記3)前記コンピュータに、
前記シミュレーション空間から、生成した前記膨張空間および前記3次元形状を除く第2の空間集合を抽出し、
抽出した前記第2の空間集合のうち前記第1の空間集合のいずれの空間とも重複しない空間と、前記膨張空間とを連結することにより、前記3次元形状の内部空間を抽出する、
処理を実行させることを特徴とする付記1または2に記載の空間抽出プログラム。
(付記4)前記所定サイズは、前記穴の最大の直径または前記隙間の最大の幅の中で、大きい方の半分の大きさ以上であることを特徴とする付記1〜3のいずれか一つに記載の空間抽出プログラム。
(付記5)シミュレーション空間上に配置された複数の部品から形成される3次元形状の内部空間を抽出する空間抽出方法であって、
前記3次元形状の内部と外部とをつなぐ穴または隙間が塞がるように、各部品の面を外側に所定サイズ分膨張させた膨張形状を生成し、
前記シミュレーション空間から、生成した前記各部品の膨張形状を除く第1の空間集合を抽出し、
抽出した前記第1の空間集合のうち前記3次元形状の内部に配置された部品の膨張形状に接する空間を、当該空間の面を外側に前記所定サイズ分膨張させた膨張空間を生成することにより、前記3次元形状の内部空間を抽出する、
処理をコンピュータが実行することを特徴とする空間抽出方法。
(付記6)シミュレーション空間上に配置された複数の部品から形成される3次元形状の内部空間を抽出する空間抽出装置であって、
前記3次元形状の内部と外部とをつなぐ穴または隙間が塞がるように、各部品の面を外側に所定サイズ分膨張させた膨張形状を生成し、
前記シミュレーション空間から、生成した前記各部品の膨張形状を除く第1の空間集合を抽出し、
抽出した前記第1の空間集合のうち前記3次元形状の内部に配置された部品の膨張形状に接する空間を、当該空間の面を外側に前記所定サイズ分膨張させた膨張空間を生成することにより、前記3次元形状の内部空間を抽出する制御部、
を有することを特徴とする空間抽出装置。
(付記7)シミュレーション空間上に配置された複数の部品から形成される3次元形状の内部空間を抽出する空間抽出プログラムを記録したコンピュータに読み取り可能な記録媒体であって、
前記3次元形状の内部と外部とをつなぐ穴または隙間が塞がるように、各部品の面を外側に所定サイズ分膨張させた膨張形状を生成し、
前記シミュレーション空間から、生成した前記各部品の膨張形状を除く第1の空間集合を抽出し、
抽出した前記第1の空間集合のうち前記3次元形状の内部に配置された部品の膨張形状に接する空間を、当該空間の面を外側に前記所定サイズ分膨張させた膨張空間を生成することにより、前記3次元形状の内部空間を抽出する、
処理を前記コンピュータに実行させる空間抽出プログラムを記録したことを特徴とする前記コンピュータに読み取り可能な記録媒体。