以下、図面を参照して、本発明を実施するための形態例を詳細に説明する。
図1は、本実施形態に係る三次元造形システム1の構成図である。図1に示すように、三次元造形システム1は、三次元形状データの生成装置10及び三次元造形装置100を備える。なお、生成装置10は、後述する三次元閾値マトリクスの生成装置としての機能も有する。本実施形態では、生成装置10が三次元形状データの生成装置として機能すると共に三次元閾値マトリクスの生成装置としても機能する場合について説明するが、両者を別個の装置としてもよい。
次に、図2を参照して、本実施形態に係る三次元形状データの生成装置10の構成について説明する。
生成装置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、及び記憶部20が接続されている。
操作部14は、例えばマウス及びキーボードを含んで構成される。
表示部16は、例えば液晶ディスプレイ等で構成される。
通信部18は、三次元造形装置100等の外部装置とデータ通信を行うためのインターフェースである。
記憶部20は、ハードディスク等の不揮発性の記憶装置で構成され、後述する三次元形状データの生成プログラム、三次元閾値マトリクスの生成プログラム、三次元形状データ(ボクセルデータ)、及び生成した三次元閾値マトリクス等を記憶する。CPU12Aは、記憶部20に記憶された三次元形状データの生成プログラム又は三次元閾値マトリクスの生成プログラムを読み込んで実行する。
次に、生成装置10が三次元閾値マトリクスの生成装置として機能する場合におけるCPU12Aの機能構成について説明する。
図3に示すように、CPU12Aは、機能的には、基本形状受付部50、生成部52、パラメータ受付部54、算出部56、及び肉厚受付部58を備える。
基本形状受付部50は、複数のボクセルで表される三次元形状の三次元形状データと、基本形状に対応して閾値が三次元領域に配置された三次元閾値マトリクスと、の比較結果から複数のボクセルの造形の有無を算出する場合に用いる三次元閾値マトリクスを生成するための基本形状を受け付ける。例えばユーザーは、表示部16に表示された複数の基本形状の中から所望の基本形状を選択する。
生成部52は、基本形状に対応する位置から離れるに従って閾値が徐々に変化するように三次元閾値マトリクスを生成する。
パラメータ受付部54は、三次元閾値マトリクスの閾値の数を決定するためのパラメータ、例えば三次元閾値マトリクスのボクセルピッチを受け付ける。
算出部56は、基本形状を含む予め定めた形状を複数のボクセルで表したパターンピースのサイズ及びパラメータ受付部54が受け付けたパラメータを用いて三次元閾値マトリクスのサイズを算出する。
肉厚受付部58は、基本形状の肉厚を受け付ける。なお、肉厚とは、例えば基本形状の骨格部分の厚みをいう。例えば基本形状の骨格部分が直方形状の場合は直方形状の幅をいい、基本形状の骨格部分が球の場合は球の直径をいう。
肉厚受付部58が肉厚を受け付けた場合、生成部52は、肉厚受付部58が受け付けた肉厚に対応するパターンピースの各ボクセルについて、隣接するボクセルの有無の数を用いて三次元閾値マトリクスを生成する。
図4には、三次元形状をボクセルの集合で表した三次元形状データ(ボクセルデータ)によって表された三次元形状32を示した。図4に示すように、三次元形状32は、複数のボクセル34で構成される。
ここで、ボクセル34は、三次元形状32の基本要素であり、例えば直方体が用いられるが、直方体に限らず、球又は円柱等を用いてもよい。ボクセル34を積み上げることで所望の三次元形状が表現される。
三次元形状を造形する三次元造形法としては、例えば熱可塑性樹脂を溶かし積層させることで三次元形状を造形する熱溶解積層法(FDM:Fused Deposition Modeling)、粉末状の金属材料にレーザービームを照射し、焼結することで三次元形状を造形するレーザー焼結法(SLS法:Selective Laser Sintering)等が適用されるが、他の三次元造形法を用いても良い。本実施形態では、熱溶解積層法を用いて三次元形状を造形する場合について説明する。
次に、三次元形状データの生成装置10により生成された三次元形状データを用いて三次元形状を造形する三次元造形装置について説明する。
図5には、本実施の形態に係る三次元造形装置100の構成を示した。三次元造形装置100は、熱溶解積層法により三次元形状を造形する装置である。
図5に示すように、三次元造形装置100は、吐出ヘッド102、吐出ヘッド駆動部104、造形台106、造形台駆動部108、取得部110、及び制御部112を備える。なお、吐出ヘッド102、吐出ヘッド駆動部104、造形台106、及び造形台駆動部108は造形部の一例である。
吐出ヘッド102は、三次元形状40を造形するための造形材料を吐出する造形材吐出ヘッドと、サポート材を吐出するサポート材吐出ヘッドと、を含む。サポート材は、三次元形状のオーバーハング部分(「張り出し部分」ともいう)を、造形が完了するまで支持する用途で用いられ、造形完了後に除去される。
吐出ヘッド102は、吐出ヘッド駆動部104によって駆動され、XY平面上を二次元に走査される。また、造形材吐出ヘッドは、複数種類の属性(例えば色)の造形材料に対応して複数の吐出ヘッドを備える場合がある。
造形台106は、造形台駆動部108によって駆動され、Z軸方向に昇降される。
取得部110は、三次元形状データの生成装置10が生成した三次元形状データ及びサポート材データを取得する。
制御部112は、取得部110が取得した三次元形状データに従って造形材料が吐出されると共に、サポート材データに従ってサポート材が吐出されるように、吐出ヘッド駆動部104を駆動して吐出ヘッド102を二次元に走査させると共に、吐出ヘッド102による造形材料及びサポート材の吐出を制御する。
また、制御部112は、各層の造形が終了する毎に、造形台駆動部108を駆動して造形台106を予め定めた積層間隔分降下させる。これにより、三次元形状データに基づく三次元形状が造形される。
次に、図6を参照して、本実施の形態に係る生成装置10が、三次元形状データの生成装置として機能する場合における作用について説明する。CPU12Aにより三次元形状データの生成プログラムを実行させることで、図6に示す生成処理が実行される。なお、図6に示す生成処理は、例えば、ユーザーの操作により生成プログラムの実行が指示された場合に実行される。また、本実施形態では、サポート材データの生成処理については説明を省略する。
また、本実施形態では、各ボクセルには、第1の属性値としてボクセルの強度を表す強度値が各々設定されており、第2の属性値としてボクセルの造形の有無を算出する場合について説明する。
ステップS100では、造形対象の三次元形状に対応するボクセルデータを例えば記憶部20から読み出すことにより取得する。なお、通信部18を介して外部装置からボクセルデータを通信により取得してもよい。
ステップS102では、ステップS100で取得したボクセルデータから三次元形状の表示データを生成し、表示部16に表示させる。
ステップS103では、後述する調整係数を受け付ける受付画面を表示部16に表示させ、ユーザーによる調整係数の入力を受け付ける。調整係数は、互いに直交するX軸、Y軸、及びZ軸の3軸の軸毎に設定する。なお、ユーザーがX軸、Y軸、及びZ軸の軸毎に調整係数を入力するようにしてもよいし、1つの調整係数を入力すると、入力した調整係数がX軸、Y軸、及びZ軸の全ての軸の調整係数として設定されるようにしてもよい。
ステップS104では、各ボクセルの造形の有無を算出する際に用いられる三次元閾値マトリクスを設定する。三次元閾値マトリクスには、予め定めた基本形状に対応して閾値が三次元領域に配置されている。
図7には、一例として三次元閾値マトリクスMを示した。図7に示すように、三次元閾値マトリクスMは、7層の閾値テーブルZ1~Z7から構成されている。
図8には、閾値テーブルZ1~Z7の一例を示した。後述するように、各ボクセルの造形の有無を算出する際には、閾値テーブルZ1~Z7をディザマトリクスとして、各閾値テーブルに対応する各層のボクセルデータに対して所謂ハーフトーン処理と同様の処理を実行する。すなわち、閾値テーブルの各閾値と、対応するボクセルの強度値と、を比較し、強度値が閾値以上であれば、そのボクセルの造形を「有り」とし、強度値が閾値未満の場合は、そのボクセルの造形を「無し」とする。ここで、本実施形態では、強度値が取り得る値が「0」以上であるものとする。この場合、閾値が「0」の場合は、その閾値に対応するボクセルの造形は必ず「有り」となる。従って、閾値が「0」の部分が基本形状に相当することとなる。
図8の例では、全ての層の中心に閾値「0」が設定され、Z軸方向において中央の層である4層目の閾値テーブルZ4は、XY平面において十字形状に閾値「0」が設定されている。すなわち、基本形状に対応する位置の閾値が、閾値が取り得る値の範囲の最小値に設定されている。従って、三次元閾値マトリクスMが設定された場合において、例えば各ボクセルの強度値が全て「0」であったとすると、図9に示すように、「■」で示す位置に造形材料が吐出されることとなる。従って、三次元閾値マトリクスMの基本形状は、図10に示すような基本形状Kとなる。
なお、図8に示すように、閾値テーブルZ1~Z7の基本形状に対応した位置以外の閾値は全て「35」以上となっている。このため、例えば各ボクセルの強度値が全て「35」未満の場合は、全て図10に示すような基本形状Kとなる。また、例えば各ボクセルの強度値が全て「50」であった場合は、図11に示すように、「■」で示す位置に造形材料が吐出されることとなる。従って、三次元閾値マトリクスMの基本形状は、図12に示すように、図10に示す基本形状Kを太らせた基本形状K2となる。
また、図8に示すように、閾値テーブルZ1~Z7に設定された閾値のうち、基本形状に対応する位置以外の閾値は、中心から外側に向かうに従って大きくなるように設定されている。従って、三次元閾値マトリクスMに設定された各閾値は、三次元閾値マトリクスMで示される三次元領域の中心から外側に向かうに従って大きくなるように設定されている。すなわち、三次元閾値マトリクスMに設定された各閾値は、三次元閾値マトリクスMで示される三次元領域の中心から外側に向かうに従って、造形が「有り」となるボクセルの割合が少なくなるように設定されている。換言すれば、三次元閾値マトリクスMで示される三次元領域の中心に向かうに従って強度が高くなるように閾値が設定されている。なお、三次元閾値マトリクスのサイズが小さくなるに従って、基本形状のサイズは小さくなり三次元形状が密な構造となるため硬くなる。一方、三次元閾値マトリクスのサイズが大きくなるに従って、基本形状のサイズは大きくなり三次元形状が粗な構造となるため柔らかくなる。従って、硬くしたい部分については、サイズが小さい三次元閾値マトリクスを設定し、柔らかくしたい部分については、サイズが大きい三次元閾値マトリクスを設定してもよい。
本実施形態では、記憶部20には、様々な種類の基本形状に対応した三次元閾値マトリクスが記憶されている。ユーザーは、操作部14を操作して、所望の基本形状、すなわち三次元閾値マトリクスを選択する。なお、選択する三次元閾値マトリクスは1つに限らず、三次元形状の部分毎に複数の三次元閾値マトリクスを選択してもよい。
ステップS106では、ボクセルデータで表される複数のボクセルの各々に設定された強度値と、ステップS104で設定された三次元閾値マトリクスと、ステップS103で受け付けた調整係数と、に基づいて、複数のボクセルの各々について造形の有無を算出する。具体的には、前述したように、閾値テーブルZ1~Z7をディザマトリクスとして、各閾値テーブルに対応する各層のボクセルデータに対して所謂ハーフトーン処理と同様の処理を各々実行する。すなわち、閾値テーブルの閾値と、閾値に対応する位置のボクセルの強度値と、を比較し、強度値が閾値以上であれば、そのボクセルの造形を「有り」とし、強度値が閾値未満の場合は、そのボクセルの造形を「無し」とする処理を閾値テーブルの各閾値について行う。
ここで、ボクセルの第1の属性値をV1(i、j、k)、三次元閾値マトリクスの閾値をMt(l、m、n)、第2の属性値をV2(i、j、k)とした場合、次式により第2の属性値、すなわち造形の有無を算出する。
V2(i、j、k)=VmaxM、V1(i、j、k)<Mt(l、m、n)
・・・(1)
V2(i、j、k)=VmaxP、V1(i、j、k)≧Mt(l、m、n)
・・・(2)
ここで、iはX軸の座標値、jはY軸の座標値、kはZ軸の座標値である。また、l、m、nは、三次元閾値マトリクスの閾値のX座標、Y座標、Z座標を示し、次式で表される。
l=MOD(Ax×i、Mx) ・・・(3)
m=MOD(Ay×j、My) ・・・(4)
n=MOD(Az×k、Mz) ・・・(5)
ここで、MOD(a、b)は、aをbで除算した場合の剰余を表す。従って、lは、Ax×iをMxで除算した場合の剰余である。同様に、mは、Ay×jをMyで除算した場合の剰余である。同様に、nは、Az×kをMzで除算した場合の剰余である。なお、Mxは三次元閾値マトリクスのX軸方向のサイズ、すなわちX軸方向の閾値の数である。同様に、Myは三次元閾値マトリクスのY軸方向のサイズ、すなわちY軸方向の閾値の数である。同様に、Mzは三次元閾値マトリクスのZ軸方向のサイズ、すなわちZ軸方向の閾値の数である。
また、Ax、Ay、Azは次式で表される。
Ax=Ax0×V1(i、j、k)/VmaxP+1 ・・・(6)
Ay=Ay0×V1(i、j、k)/VmaxP+1 ・・・(7)
Az=Az0×V1(i、j、k)/VmaxP+1 ・・・(8)
ここで、Ax0はX軸の調整係数、Ay0はY軸の調整係数、Az0はZ軸の調整係数であり、0≦Ax0≦Bx、0≦Ay0≦By、0≦Az0≦Bzである。Bxは調整係数Axが取り得る値の最大値である。同様に、Byは調整係数Ayが取り得る値の最大値、Bzは調整係数Azが取り得る値の最大値である。本実施形態では、一例としてBx=By=Bz=1である場合について説明するが、調整係数の最大値は1に限られるものではない。なお、全ての調整係数を「0」とした場合、すなわち、Ax0=Ay0=Az0=0とした場合は、三次元閾値マトリクスの周期は調整されない。また、調整係数が0より大きくなるに従って、調整の度合いが大きくなる。従って、調整の度合いの最大値を大きくするには、Bx、By、Bzの値を大きくすればよい。
また、VmaxMは、V1(i、j、k)が取り得る値の上限値に負の符号「-」を付した値である。本実施形態では、一例としてV1(i、j、k)が8ビットで表され、0~255の値を取り得るものとする。従って、VmaxM=-255である。また、VmaxPは、V1(i、j、k)が取り得る値の上限値に正の符号「+」を付した値である。従って、VmaxP=+255である。なお、VmaxMは、「造形無し」を意味し、VmaxPは、「造形有り」を意味する。
このように、第1の属性値V1(i、j、k)が閾値Mt(l、m、n)未満の場合は、第2の属性値V2(i、j、k)はVmaxMとなり、「造形無し」となる。また、第1の属性値V1(i、j、k)が閾値Mt(l、m、n)以上の場合は、第2の属性値V2(i、j、k)はVmaxPとなり、「造形有り」となる。
例えば図13に示すように、閾値マトリクスMt1と、ボクセルの第1の属性値V1と、を比較した場合について説明する。なお、調整係数はAx0=Ay0=Az0=0、すなわち三次元閾値マトリクスMt1の周期を調整しない場合について説明する。
図13に示す三次元閾値マトリクスMt1は、基本形状に対応する閾値「0」から徐々に変化するように、多値で設定されている。具体的には、閾値マトリクスMt1は、一例として4種類の閾値「0」、「80」、「160」、「255」で構成されており、基本形状に対応する閾値「0」からの距離が大きくなるに従って閾値が大きくなるマトリクスである。そして、各ボクセルの第1の属性値V1は、一様に「70」であるとする。この場合、図13に示すように、第2の属性値V2は、X方向及びY方向共に中央のボクセル1個分が「造形有り」となり、十字形状となる。
また、図14に示すように、各ボクセルの第1の属性値V1が一様に「90」であるとする。この場合、第2の属性値V2は、X方向及びY方向共に中央のボクセル3個分が「造形有り」となり、図13に示した十字形状よりも肉厚が大きい十字形状となる。
次に、図15に示すように、閾値マトリクスの閾値が、基本形状に対応する第1の閾値である閾値「0」と、基本形状以外に対応する第2の閾値である閾値「255」と、の2値で設定されている閾値マトリクスMt2を用いた場合について説明する。なお、調整係数はAx0=Ay0=Az0=0、すなわち三次元閾値マトリクスMt2の周期を調整しない場合について説明する。
図15に示すように、第1の属性値V1は、図15のX方向において左端から右端にかけて値が大きくなるように、「0」~「255」の値が設定されているものとする。この場合、図15に示すように、閾値マトリクスMt2の周期が調整されないため、基本形状が規則的にX方向に2個並んだ形状に相当するボクセルの第2の属性値V2が「造形有り」となる。
また、図15の例において、調整係数をAx0=Ay0=Az0=1、すなわち三次元閾値マトリクスMt2の周期を調整する場合は、第1の属性値V1と比較される三次元閾値マトリクスMt2の座標スケールが変化する。このため、図16に示すように、X方向において右端に向かうに従って基本形状が密となる形状に相当するボクセルの第2の属性値V2が「造形有り」となる。
このように、調整係数及び閾値マトリクスを変えることで、三次元形状によって実現される物性値がきめ細かく調整される。
ステップS108では、ステップS106で算出した各ボクセルの造形の有無を表すデータをボクセルデータとして三次元造形装置100に送信する。
三次元造形装置100の取得部110は、三次元形状データの生成装置10から送信されたボクセルデータを取得する。また、制御部112は、取得部110が取得したボクセルデータに従って造形材料が吐出されるように、吐出ヘッド駆動部104を駆動して吐出ヘッド102を二次元に走査させると共に、吐出ヘッド102による造形材料の吐出を制御する。これにより、三次元形状が造形される。
次に、図17を参照して、本実施の形態に係る生成装置10が、三次元閾値マトリクスの生成装置として機能する場合における作用について説明する。CPU12Aにより三次元閾値マトリクスの生成プログラムを実行させることで、図17に示す生成処理が実行される。なお、図17に示す生成処理は、例えば、ユーザーの操作により生成プログラムの実行が指示された場合に実行される。
ステップS200では、三次元閾値マトリクスを生成する際の条件を設定するための設定画面として、例えば図18に示すような設定画面60を表示部16に表示させる。図18に示すように、設定画面60は、パターンピースを選択するためのパターンピース選択領域62、パターンピースが定義された外部ファイルの読み込みを指示するための外部ファイル読み込みボタン64、三次元閾値マトリクスのボクセルピッチを入力するためのボクセルピッチ入力欄66、パターンピースを変調させる際に基準となる基準肉厚を入力するための基準肉厚入力領域68、最小肉厚を維持するように指示するためのチェックボックス70、最大肉厚を維持するよう指示するためのチェックボックス72、隣接するボクセルとの接触の種類に応じて重み付けすることを指示するためのチェックボックス74、隣接するボクセルとの接続強度(リンク値)に基づいて重み付けすることを指示するためのチェックボックス76、三次元閾値マトリクスの生成処理の実行を指示するための実行ボタン78、及び設定画面60に入力した値を取り消すためのキャンセルボタン80を含んで構成される。
図18の例では、5個のパターンピースP1~P3が表示されており、ユーザーが操作部14を操作することによりパターンピースP1が選択された状態を示している。また、スライドバーSBを左右に動かすことで他のパターンピースも表示される。更に、パターンピースが定義された外部ファイルを読み込むことによりパターンピースを受け付けても良い。この場合、外部ファイル読み込みボタン64を押下して外部ファイルを指定すればよい。
ここで、パターンピースとは、基本形状を含む予め定めた形状を複数のボクセルで表したものである。なお、予め定めた形状としては立方体が挙げられるが、立方体以外の直方体等、他の形状でもよい。
本実施形態では、一例として図19に示すような三本柱状の基本形状を有するパターンピースP1が選択された場合について説明する。
また、ユーザーは、パターンピースの選択の他に、ボクセルピッチ入力欄66に三次元閾値マトリクスのボクセルピッチを入力する。また、必要に応じて基準肉厚入力領域68に基準肉厚を入力する。なお、複数の基準肉厚を入力してもよい。
また、ユーザーは、必要に応じてチェックボックス70をチェックして最小肉厚を維持するように指示したり、チェックボックス72をチェックして最大肉厚を維持するよう指示したりする。また、ユーザーは、必要に応じてチェックボックス74をチェックして、隣接するボクセルとの接触の種類に応じて重み付けすることを指示したり、チェックボックス76をチェックして、隣接するボクセルとの接続強度に基づいて重み付けすることを指示したりする。
ステップS202では、パターンピースが選択されたか否かを判定する。すなわち、ユーザーが操作部14を操作することによりパターンピース選択領域62から所望のパターンピースを選択したか否か及び外部ファイル読み込みボタン64を押下して外部ファイルが指示されたか否かを判定する。
そして、パターンピースが選択された場合はステップS204へ移行し、パターンピースが選択されていない場合はステップS222へ移行する。
ステップS204では、選択されたパターンピースが定義されたファイルを記憶部20から読み込む。
ステップS206では、ボクセルピッチ入力欄66に三次元閾値マトリクスのボクセルピッチが入力されたか否かを判定する。本実施形態では、ボクセルピッチ入力欄66には、X、Y、Z軸の各方向に共通の値を入力する場合について説明するが、軸毎にボクセルピッチの入力欄を設けてもよい。また、本実施形態では、ボクセルピッチが一例として1mm当たりのボクセル数である場合について説明するが、1ボクセル当たりのサイズでもよい。すなわち、三次元閾値マトリクスの閾値の数を決定するためのパラメータであればよい。
そして、ボクセルピッチが入力された場合はステップS208へ移行し、ボクセルピッチが入力されていない場合はステップS222へ移行する。
ステップS208では、三次元閾値マトリクスの閾値の数を算出する。具体的には、ステップS204で読み込んだパターンピースのサイズと、ボクセルピッチ入力欄66に入力されたボクセルピッチと、に基づいて三次元閾値マトリクスの閾値の数を算出する。ここで、パターンピースのサイズは予め定められており、一例として単位がミリメートルであるものとする。従って、パターンピースのサイズにボクセルピッチを乗算することにより、X、Y、Z軸の各方向共通の三次元閾値マトリクスの閾値の数を算出する。なお、ボクセルピッチが1ボクセル当たりのサイズの場合には、パターンピースのサイズをボクセルピッチで除算することにより三次元閾値マトリクスの閾値の数を算出すればよい。
ステップS210では、実行ボタン78が押下されたか否かを判定する。そして、実行ボタン78が押下された場合はステップS212へ移行し、実行ボタン78が押下されていない場合はステップS218へ移行する。
ステップS212では、ステップS204で読み込んだパターンピースのX、Y、Z軸の各方向のボクセル数が、ステップS208で算出したボクセル数となるようにパターンピースを複数のボクセルに分割する。このとき、パターンピースの肉厚が、基準肉厚入力領域68に入力された肉厚となるように複数のボクセルに分割する。なお、基準肉厚入力領域68に何も入力されていない場合は、予め定めた肉厚、例えば1mmを基準肉厚として用いてもよい。
また、本実施形態では、パターンピースのX、Y、Z軸の各方向のボクセル数が25個の場合について説明する。図20には、パターンピースP1のZ方向中心位置のXY平面における断面を示した。図20に示すパターンピースP1では、基本肉厚が1mmのパターンピースのXY平面における断面を示した。図20に示すように、基本形状に相当する位置のボクセルには「1」、すなわち「ボクセル有り」が設定され、基本形状以外に相当する位置のボクセルには「0」、すなわち「ボクセル無し」が設定されている。
ステップS214では、パターンピースを構成する各ボクセルについて、隣接するボクセルの有無の数を算出する。
図21に示すように、処理対象の中心となる注目ボクセルBXの周囲には、ボクセル番号「1」~「26」の26個のボクセルが存在する。このため、本実施形態では、各ボクセルについて、周囲の26個のボクセルと、注目ボクセルBXの数を合計した27個のボクセルのうち、「1」、すなわち「ボクセル有り」が設定されているボクセルの数を算出する。
そして、ステップS216では、各ボクセルについて算出した周囲の「ボクセル有り」のボクセルの数を、三次元形状データのボクセルの属性値が取り得る値の最大値で正規化した値を閾値とする。
例えば周囲の「ボクセル有り」のボクセル数の最大値をNmax、周囲の「ボクセル有り」のボクセル数をN、三次元形状データのボクセルの属性値が取り得る値の最大値をBmax、閾値をTHとした場合、次式により閾値THを算出する。
TH={(Nmax-N)/Nmax}×Bmax ・・・(1)
なお、周囲の「ボクセル有り」のボクセル数が取り得る値は「0」~「27」なので、Nmaxは「27」である。また、三次元形状データのボクセルの属性値が取り得る値が「0」~「255」であるとすると、Bmaxは「255」である。また、上記(1)式により算出された閾値THを適宜調整してもよい。例えば、算出された閾値THの下1桁目又は小数点以下を四捨五入したり、切り上げたり、切り捨てたりしてもよい。また、閾値THを他の閾値と一致しない範囲で増減させてもよい。このように閾値THを算出することにより、閾値が「0」~「255」の範囲で且つ28階調の閾値が設定された三次元閾値マトリクスが生成される。なお、各ボクセルについて、周囲のボクセルのうち「ボクセル無し」が設定されているボクセルの数を算出し、周囲の「ボクセル無し」の最大値である「27」から、周囲の「ボクセル無し」のボクセルの数を減算した値を用いて閾値THを算出してもよい。
図22には、三次元閾値マトリクスの一例を示した。図22に示す三次元閾値マトリクスM1は、「0」~「255」の範囲で且つ28階調の閾値を有する三次元閾値マトリクスである。
また、図22に示すように、三次元閾値マトリクスM1は、基本形状に対応する位置から離れるに従って閾値が徐々に変化するように、具体的には、基本形状の中心部から外縁部に向かうに従って閾値が徐々に大きくなるように閾値が設定されている。
このようにして生成された三次元閾値マトリクスM1の肉厚と閾値との関係を図23に示した。図23に示すように、閾値の中間値が基準肉厚として設定された1mmに相当する。
また、基準肉厚入力領域68に複数の基準肉厚が入力された場合は、各基準肉厚に対応するパターンピースの各ボクセルについて、周囲の「ボクセル有り」のボクセル数を算出する。そして、各パターンピースの各ボクセルについて算出した周囲の「ボクセル有り」のボクセル数を、同じ位置毎に各々積算する、すなわち総和を算出する。そして、算出した総和を用いて上記(1)式により閾値を算出する。これにより、パターンピースの数がn個の場合は、閾値の階調数は28×nとなる。例えば図18に示すように、基準肉厚が0.5mm、1.0mm、2.0mmの三種類の基準肉厚が設定された場合について説明する。この場合、図24に示すように、基準肉厚が0.5mm、1.0mm、2.0mmのパターンピースP1-1、P1-2、P1-3が設定され、閾値の階調数は、28×3=84となる。
図25には、パターンピースP1-1、P1-2、P1-3を用いて生成された三次元閾値マトリクスM2を示した。また、図26には、三次元閾値マトリクスM2の肉厚と閾値との関係を示した。この場合、図26に示すように、閾値の中間値が基準肉厚1mmに相当し、閾値の最大値の75%の値が基準肉厚2mmに相当し、閾値の最大値の25%の値が基準肉厚0.5mmに相当する。
また、チェックボックス70がチェックされ、最小肉厚を維持するように設定されていた場合は、造形される三次元形状が最小肉厚以上となるように閾値を設定する。具体的には、生成された三次元閾値マトリクスの各閾値のうち、最小肉厚未満となる位置の閾値の全てを閾値の最小値である「0」に設定する。このように閾値が設定された三次元閾値マトリクスを用いて三次元形状を造形することにより、最小肉厚以上の肉厚を有する三次元形状が造形される。
また、チェックボックス72がチェックされ、最大肉厚を維持するように設定されていた場合は、造形される三次元形状が最大肉厚以下となるように閾値を設定する。具体的には、生成された三次元閾値マトリクスの各閾値のうち、最大肉厚を超える位置の閾値の全てを、例えば閾値の最大値である「255」よりも大きい「256」に設定する。このように閾値が設定された三次元閾値マトリクスを用いて三次元形状を造形することにより、最大肉厚以下の肉厚を有する三次元形状が造形される。
図27には、図24に示す基準肉厚が0.5mm、1.0mm、2.0mmの三種類のパターンピースP1-1、P1-2、P1-3が設定されると共に、最小肉厚及び最大肉厚を維持するように設定された場合に生成された三次元閾値マトリクスM3を示した。図27に示す三次元閾値マトリクスM3は、図25に示した三次元閾値マトリクスM2、すなわち最小肉厚及び最大肉厚を維持するように設定されていない場合に生成された三次元閾値マトリクスM2と比較すると、最小肉厚である0.5mm未満となる位置の閾値の全てが閾値の最小値である「0」に設定されていると共に、最大肉厚である2.0mmを超える位置の閾値の全てが閾値の最大値である「255」よりも大きい「256」に設定されている。
また、図28には、三次元閾値マトリクスM3の肉厚と閾値との関係を示した。この場合、図28に示すように、閾値の最大値「256」未満、すなわち閾値「255」以下が最大肉厚の2mm以下に相当し、閾値の最小値「0」以上が最小肉厚0.5mm以上に相当する。
また、チェックボックス74がチェックされていた場合、パターンピースの各ボクセルについて算出した隣接するボクセルの有無の数を、隣接するボクセルとの接触の種類に応じて重み付けする。例えば、接触の種類が、面接触、線接触、及び点接触の順に重みが大きくなるように重み付けする。具体的には、隣接するボクセルの有無の数を算出する場合に、面接触するボクセル、線接触するボクセル、点接触するボクセルの各々について、隣接するボクセルの有無の数を算出する。そして、面接触するボクセルの有無の数には第1の係数a1を乗算し、線接触するボクセルの有無の数には第2の係数a2を乗算し、線接触するボクセルの有無の数には第3の係数a3を乗算する。ここで、a1>a2>a3である。これにより、面接触、線接触、及び点接触の順に重みが大きくなるように重み付けされる。
ここで、例えば図21に示す注目ボクセルBXに対して面接触するボクセルは、ボクセル番号5、11、13、14、16、22のボクセルである。また、注目ボクセルBXに対して線接触するボクセルは、ボクセル番号2、4、6、8、10、12、15、17、19、21、23、25のボクセルである。また、注目ボクセルBXに対して点接触するボクセルは、ボクセル番号1、3、7、9、18、20、24、26のボクセルである。この場合、面接触するボクセル番号5、11、13、14、16、22のボクセルの有無の数に係数a1が乗算される。また、線接触するボクセル番号2、4、6、8、10、12、15、17、19、21、23、25のボクセルの有無の数に係数a2が乗算される。また、点接触するボクセル番号1、3、7、9、18、20、24、26のボクセルの有無の数に係数a3が乗算される。
また、チェックボックス76がチェックされていた場合、パターンピースの各ボクセルについて算出した隣接するボクセルの有無の数を、隣接するボクセルとの接続強度に基づいて閾値を重み付けする。接続強度は、パターンピースの各ボクセルに予め設定されており、隣接するボクセル毎に接続強度が予め設定されている。この場合、隣接するボクセルの有無の数を算出する際に、隣接するボクセルの接続強度が強いほど大きくなり、接続強度が小さくなるほど小さくなる係数を乗算する。これにより、接続強度が大きいほど重み付けが大きくなる。
ステップS218では、キャンセルボタン80が押下されたか否かを判定する。そして、キャンセルボタン80が押下された場合はステップS220へ移行し、キャンセルボタン80が押下されていない場合はステップS222へ移行する。
ステップS220では、設定画面60に入力された条件をリセットする。
ステップS222では、本ルーチンを終了するか否かを判定する。例えば画面を閉じる操作がされたか否かを判定することにより本ルーチンを終了するか否かを判定する。そして、本ルーチンを終了すると判定された場合は本ルーチンを終了し、本ルーチンを終了すると判定されていない場合はステップS202へ移行する。
このように、本実施形態では、受け付けたパターンピースの各ボクセルについて、隣接するボクセルの有無の数を算出することにより三次元閾値マトリクスを生成する。これにより、三次元閾値マトリクスをユーザーの操作によって1つ1つ作成する場合と比較して、効率良く三次元閾値マトリクスが生成される。
以上、各実施形態を用いて本発明について説明したが、本発明は各実施形態に記載の範囲には限定されない。本発明の要旨を逸脱しない範囲で各実施形態に多様な変更または改良を加えることができ、当該変更または改良を加えた形態も本発明の技術的範囲に含まれる。
例えば、本実施形態では、三次元形状データを生成する生成装置10と三次元形状データに基づいて三次元形状を造形する三次元造形装置100とが別個の構成の場合について説明したが、三次元造形装置100が生成装置10の機能を備えた構成としてもよい。
すなわち、三次元造形装置100の取得部110がボクセルデータを取得し、制御部112が図6の生成処理を実行して三次元形状データを生成してもよい。
また、例えば、図6に示した三次元形状データの生成処理をASIC(Application Specific Integrated Circuit)等のハードウエアで実現するようにしてもよい。この場合、ソフトウエアで実現する場合に比べて、処理の高速化が図られる。
また、各実施形態では、三次元形状データの生成プログラムが記憶部20にインストールされている形態を説明したが、これに限定されるものではない。本実施形態に係る三次元形状データの生成プログラムを、コンピュータ読取可能な記憶媒体に記録した形態で提供してもよい。例えば、本発明に係る三次元形状データの生成プログラムを、CD(Compact Disc)-ROM及びDVD(Digital Versatile Disc)-ROM等の光ディスクに記録した形態、若しくはUSB(Universal Serial Bus)メモリ及びメモリカード等の半導体メモリに記録した形態で提供してもよい。また、本実施形態に係る三次元形状データの生成プログラムを、通信部18に接続された通信回線を介して外部装置から取得するようにしてもよい。