(58)【調査した分野】(Int.Cl.,DB名)
前記設定手段は、全体が前記輪郭ポリラインの内部に存在する第1ピクセルに対して第1の輝度値を設定し、全体が前記輪郭ポリラインの外部に存在する第1ピクセルに対して前記第1の輝度値より小さい第2の輝度値を設定する、請求項1又は請求項2に記載の三次元造形装置。
前記設定手段は、一部が前記輪郭ポリラインの内部又は外部に存在する第1ピクセルに対して、該第1ピクセルにおける前記輪郭ポリラインの内部に含まれる領域の大きさに基づいた輝度値を設定する、請求項3に記載の三次元造形装置。
前記設定手段は、前記スライスデータに基づいて三次元造形物を作製する三次元造形装置に用いられる光源の特性に基づいて設定された補正値を用いて、各第1ピクセルに対して設定された輝度値のうちの少なくとも一部の輝度値を補正する、請求項1から請求項5のいずれかに記載の三次元造形装置。
【背景技術】
【0002】
従来より、可視光または紫外光などの光の照射により硬化する性質を有する光硬化性樹脂を用いた三次元造形装置が知られている。
【0003】
こうした三次元造形装置では、例えば、以下のような手法により三次元造形物を作製するようにしていた。
【0004】
即ち、貯留槽に貯留された光硬化性樹脂に対して光を照射することにより、貯留槽に貯留された光硬化性樹脂に浸漬されて三次元造形物の土台となるベース部材表面に、所定の液層厚さ分だけ光硬化性樹脂を硬化して硬化層を形成する。
【0005】
さらに、所定の液層厚さ分だけベース部材を移動させた後、光硬化性樹脂に対して光を照射し、先に硬化した硬化層上に新たな硬化層を形成する。
【0006】
こうした硬化層上に新たな硬化層を形成するという動作を順次繰り返して、硬化層を積層することにより三次元造形物を作製するようになされている。
【0007】
なお、こうした三次元造形装置としては、例えば、特開平6−246838号公報(特許文献1)に詳細な内容が開示されている。なお、特開平6−246838号公報に記載された内容は、引用によりその内容の全体が本明細書に組み込まれる。
【0008】
ここで、こうした三次元造形装置において、硬化層を形成する場合には、例えば、ベクトルイメージを描きながら光硬化性樹脂にレーザー光を照射し、光硬化性樹脂を所定の液層厚さで所定の形状に硬化するようにしていた。
【0009】
具体的には、三次元造形装置においては、プロジェクターから2次元画像を投影したり、あるいは、2次元のXY平面上を移動させるXY駆動装置またはガルバノミラーなどを用いてレーザー光を移動させることによって、光硬化樹脂を硬化させて3次元形状を形成するようにしている。
【0010】
ここで、1つの硬化層を形成する場合には、例えば、硬化層の形状を表すデータに基づいて、まず、光硬化性樹脂に対して、硬化層の輪郭に沿ってレーザー光を走査して硬化層の輪郭を形成する。その後、当該輪郭内の領域でレーザー光を走査して当該領域内の光硬化性樹脂を硬化して、所定の形状の硬化層を形成するようにしていた。
【0011】
なお、こうした硬化層の形状を表すデータとは、作製する対象の三次元造形物を所定の間隔で切断した断面を表す断面形状のデータであり、本明細書においては、こうした三次元造形物の断面を表す断面形状のデータを「スライスデータ」と称することとする。
【0012】
上記したスライスデータは、一般には、3次元CAD(Computer Aided Design)システムによって作成されるデータたる、作製する対象の三次元造形物のポリゴンメッシュから生成される。
【0013】
そして、スライスデータを生成するためのポリゴンメッシュは全て三角面により構成されており、このポリゴンメッシュからスライスデータを生成して三次元造形装置において造形処理を行うためには、ポリゴンメッシュが完全なソリッドモデルとしての条件を満たしている必要がある。
【0014】
ここで、「ポリゴンメッシュが完全なソリッドモデルとしての条件を満たしている」とは、ポリゴンメッシュを構成する全ての三角面は互いに辺で接続しており、全ての辺にはそれぞれ三角面が2つ接続している状態を意味する。
【0015】
ところで、三次元造形装置において実際に運用されているポリゴンメッシュは、上記した完全なソリッドモデルとしての条件を満たしていない場合がある。
【0016】
そして、その場合には、スライスデータを生成する前に、作業者が市販されている修正用ソフトウェアなどを用いて、完全なソリッドモデルとしての条件を満たしていないポリゴンメッシュに対して修正を施し、予め完全なソリッドモデルとしての条件を満たすポリゴンメッシュを作成する必要があった。
【0017】
しかしながら、作業者がポリゴンメッシュの修正用ソフトウェアで修正作業を施しても、スライスデータを生成できるようにするために必要な修正を施すことは容易ではなく、作業者は高度な修正作業を強いられるという問題点が指摘されていた。
【0018】
また、市販されている修正用ソフトウェアは極めて高価であり、こうした修正用ソフトウェア自体を購入することも容易ではないという問題点も指摘されていた。
【発明を実施するための形態】
【0034】
以下、添付の図面を参照しながら、本発明の様々な実施形態によるスライスデータ作成装置、スライスデータ作成方法、プログラムおよびコンピューター読み取り可能な記録媒体の実施の形態の一例を詳細に説明することとする。
【0035】
図1には、本発明の実施の形態の一例によるスライスデータ作成装置のハードウェア構成を表すブロック構成説明図が示されている。
【0036】
即ち、本発明の一実施形態によるスライスデータ作成装置10は、公知のパーソナルコンピューターや汎用のコンピューターなどで実現されており、その動作を中央処理装置(CPU)12を用いて制御するように構成されている。
【0037】
そして、このCPU12には、バス14を介して、CPU12の制御のためのプログラムや各種のデータなどを記憶するリードオンリメモリ(ROM)やCPU12のためのワーキングエリアとして用いられる記憶領域などを備えたランダムアクセスメモリ(RAM)などから構成される記憶装置16と、CPU12の制御に基づいて各種の表示を行うCRTや液晶パネルなどの画面を備えた表示装置18と、表示装置18の表示画面上における任意の位置を指定する入力装置たるマウスなどのポインティングデバイス20と、任意の文字を入力するための入力装置たるキーボードなどの文字入力デバイス22と、外部に接続される各種機器の入出力インターフェース回路(I/O)24とが接続されている。
【0038】
また、このスライスデータ作成装置10においては、ハードディスクなどの外部記憶装置26がI/O24を介して接続されている。
【0039】
さらに、スライスデータ作成装置10においては、コンパクトディスク(CD)やデジタルバーサタイルディスク(DVD)などのようなコンピューター読み取り可能な記録媒体(以下、単に「記録媒体」と適宜に称する。)28へCPU12の制御に基づき作成された各種データを書き込んで記憶させたり、記憶媒体28に記憶された各種データを記憶装置16へ書き込むためのリードライト装置30がI/O24を介して接続されている。
【0040】
さらにまた、スライスデータ作成装置10においては、このスライスデータ作成装置10により作成されたスライスデータを用いて三次元造形物を作製する三次元造形装置100がI/O24を介して接続されている。
【0041】
なお、この三次元造形装置100としては、従来より公知の三次元造形装置を用いることができるので、その詳細な説明は省略することとする。
【0042】
また、以下の説明においては、スライスデータ作成装置10の理解を容易にするために、記憶装置16にスライスデータ作成装置10によるスライスデータの作成の処理を実行するためのプログラムや当該スライスデータの作成の処理に用いる各種データが予め記憶されているものとする。
【0043】
なお、スライスデータ作成装置10によるスライスデータの作成の処理を実行するためのプログラムや当該スライスデータの作成の処理に用いる各種データは、通信により外部からスライスデータ作成装置10の記憶装置16のランダムアクセスメモリへ読み込むようにしてもよい。
【0044】
次に、
図2を参照しながら、本発明の実施の形態の一例による三次元造形用スライスデータ作成装置10について、詳細に説明することとする。
【0045】
この
図2には、本発明の実施の形態の一例によるスライスデータ作成装置10の機能的構成を表すブロック構成説明図が示されている。
【0046】
このスライスデータ作成装置10は、STL(Stereolithography)ファイルからポリゴンメッシュのデータを読み込み、三次元造形装置100による光造形で使用するスライスデータを生成するものである。
【0047】
なお、一般に、三次元造形装置における光造形の手法としては、ラスター方式とベクター方式とが知られている。
【0048】
ここで、ラスター方式においては2次元画像を投影するプロジェクター装置が用いられ、また、ベクター方式にはレーザーポインターをXY方向に走査する装置やガルバノミラーでレーザー光を高速に走査する装置が用いられている。
【0049】
このスライスデータ作成装置10で生成されるスライスデータは、上記したいずれの方式を採用する三次元造形装置における三次元光造形においても利用することができるものである。
【0050】
具体的には、スライスデータ作成装置10においては、作製する対象の三次元造形物たる三次元モデルの下端から上端までを細かな間隔で輪切りにした複数の輪郭形状を得て、次に、それらの内部を塗りつぶしたビットマップ画像を得る処理が行われることになる。
【0051】
なお、
図3には、上記したスライスデータの生成から光造形までの処理の流れを概念的に例示する説明図が示されている。
【0052】
スライスデータ作成装置10は、ラピッドプロトタイピングに用いられるSTLファイルからポリゴンメッシュを読み込んで、本発明の一実施形態によるノンマニフォールドの修正の処理などを施したポリゴンメッシュを生成するポリゴンメッシュ生成部42と、ポリゴンメッシュ生成部42で生成したポリゴンメッシュをスライスして輪郭形状を取得する輪郭抽出部44と、輪郭抽出部44にて抽出された輪郭形状の内部をビットマップで塗りつぶす塗り潰しデータ生成部46とを有して構成されており、最終的に塗り潰しデータ生成部46で生成されたデータが三次元造形装置100の光造形で用いられるスライスデータとして、三次元造形装置100へ出力される。
【0053】
以下、ポリゴンメッシュ生成部42、輪郭抽出部44ならびに塗り潰しデータ生成部46において行われる処理の詳細について説明する。
【0054】
(1)ポリゴンメッシュ生成部42における処理
ポリゴンメッシュ生成部42においては、STLファイルからポリゴンメッシュの情報を読み込み、読み込んだポリゴンメッシュに対してスライスデータを生成するために必要な調整を行うものであり、以下に
図13に示すフローチャートを参照しながらその技術内容を詳細に説明する。
【0055】
なお、以下の説明の理解を容易にするために、まず、スライスデータを生成するために必要な内部表現方法として、ポリゴンメッシュの境界表現について説明する。
【0056】
即ち、スライスデータ作成装置10においては、ポリゴンメッシュの情報を
図4に示す公知の境界表現で管理するようにしている。
【0057】
即ち、頂点(V
i)は3次元座標値(幾何)を持ち、稜線(E
i)は両端の頂点の情報(位相)を持つ。
【0058】
また、面(F
i)は、面を囲む3本の稜線の情報(位相)を持つ。なお、面の稜線データの持つ順序は、面の法線ベクトルの進行方向の右回りになるようにする。
【0059】
(1−1)STLファイルのロード(読み込み)・・・ステップS1302
ポリゴンメッシュ生成部42においては、まず、STLファイルをロードしてポリゴンメッシュの情報を読み込む。
【0060】
ここで、STLファイルフォーマット仕様は公知の技術であるので、その詳細な説明は省略するが、STLファイルフォーマット仕様に従って、上記において説明したポリゴンメッシュの境界表現となるように、頂点と面とのデータを作成するとともに、各面についてそれを構成する3本の稜線のデータも作成する。
【0061】
なお、上記した頂点、面および稜線のデータの作成処理については公知の技術であるので、その詳細な説明は省略する。
【0062】
(1−2)重複頂点と重複稜線の統合・・・ステップS1304
上記(1−1)、即ち、ステップS1302で作成したデータの状態では、隣り合う面と座標値が同じ頂点が重複して存在しているため、それらを1つに統合する処理を行う。それに伴い、各稜線の頂点の情報を更新する。その結果、隣り合う面の境界の稜線も同じ頂点の構成となり重複するので、それらも統合して面と稜線間の位相情報も更新する。
【0063】
なお、上記した重複頂点と重複稜線の統合の処理については公知の技術であるので、その詳細な説明は省略する。
【0064】
(1−3)ノンマニフォールドの修正・・・ステップS1306
ソリッドモデルで扱われるポリゴンメッシュは二多様体であり、1つの稜線に三角面は必ず2つ接続するが、稀に頂点の座標値が非常に接近している場合などは4つ以上接続してしまう場合がある。
【0065】
そのような立体は非多様体(ノンマニフォールド)と呼ばれるが、上記(1−2)、即ち、ステップS1304の処理で説明した重複頂点と重複稜線の統合の処理を単純に行うと、そのような状態になることがある。
【0066】
図5(a)には、2つの四面体が接近して、本来は別の稜線が1つに重なっている例が示されている。
【0067】
この場合には、輪郭抽出部44の処理に関して後述する輪郭ポリラインの取得が正常に行われないことになる。
【0068】
即ち、スライス平面と各稜線との交差点を面の接続情報に従ってつなぐ際に、接続進行方向がこの稜線で複数に分岐することになり、ポリラインの取得結果が不定になるためである。つまり、全ての交点を辿れずに、終了してしまう場合がある。
【0069】
そこで、
図5(b)に示すように、面が4つ以上接続している稜線Eがあれば、その複製E’を作り、それぞれの稜線に面が2つ接続するように位相情報を変更する。
【0070】
その2つの面のペアの選び方は、その稜線に接続する1つの面を選んだとき、その面の裏側にあるもっとも近いものを採用する。
【0071】
そうすることで、例えば、
図5(a)(b)に示す例では、本来の1つの三角柱を構成する面が選ばれ、その面と接続する位相情報が再構築される。
【0072】
ここで、裏側にあるもっとも近いペアの面を選ぶ方法は、以下に説明する通りである。なお、「n」は稜線に接続している「面の数−1」を示す。したがって、
図5(a)(b)に示す例では、「n=3」となる。
【0073】
(I)稜線に接続する各面F
0〜F
nについて、それぞれ稜線に属さない頂点P0〜Pnを選ぶ。
【0074】
(II)頂点P
0〜P
nから稜線へ下ろした垂線の足P’
0〜P’
nを求める。
【0075】
(III)
【数1】
の単位ベクトル
【数2】
と、面の法線
【数3】
の逆方向ベクトルとの外積
【数4】
を求める。
【数5】
【0076】
(IV)
【数2】
から
【数4】
の右回りに、
【数6】
の中から最も近い角度にあるベクトルを選ぶ。
【0077】
ここで、その角度は次のように求められる数値の大きさで評価できる。
【数7】
【0078】
dot
iは、
【数2】
と
【数8】
の内積である。
【0079】
【数2】
と
【数8】
の外積が
【数4】
と同じ向きならば1−dot
iを求め、そうでなければ3+dot
iを求める。
【0080】
このように得られた値は、0以上4未満の範囲をとり、0度以上360度未満の角度に比例する、
【数4】
の右回りを正として
【数2】
から
【数8】
への角度の大きさを示す。
【0081】
例えば、
図5に示す例の場合では、
【数9】
がもっとも近いベクトルに選ばれ、その結果、面F
0のペアは面F
1に選ばれる。選ばれた2つの面についての位相情報を稜線Eの複製E’に移動する。
【0082】
図5(b)では稜線が切り離されるイメージを表現するため離して描かれているが、実際には稜線の頂点の座標は移動しない。即ち、頂点の要素は共通のまま、稜線の要素を複製することになる。
【0083】
そして、面が6つ、8つと接続している場合は、上記した稜線の分離操作を残りの接続面数が2つになるまで繰り返す。
【0084】
なお,以上の結果では、頂点の要素はそのままで稜線だけが複製されることになり、このような位相情報はソリッドモデルとしては正しいとはいえない。
【0085】
しかしながら、ここではスライス面と稜線との交点算出とそれらの接続情報を得ることが目的であるので、この情報を用いることにする。
【0086】
(2)輪郭抽出部44における処理
輪郭抽出部44においては、ポリゴンメッシュ生成部42の処理による境界表現により生成されたポリゴンメッシュを任意のZ座標の平面で切断し、そのときの輪郭形状(輪郭ポリライン)を得る処理を行う。
【0087】
さらに、輪郭抽出部44においては、ポリラインの内部を適切に塗りつぶすことができるように交差部分などを削除し、最後に出力データの座標系にマッピングする処理を行う。
【0088】
以下に、
図14に示すフローチャートを参照しながら、その技術内容について詳細に説明する。
【0089】
(2−1)輪郭ポリラインの生成・・・ステップS1402
(2−1−1)稜線と平面との交差点
ポリゴンメッシュの各稜線と、スライス面(法線ベクトルがZ軸に平行な平面)との交差点の座標を求める。その結果は、各稜線と関連付けて保持する。
【0090】
(2−1−2)交差点を繋いで輪郭ポリラインを生成
輪郭ポリラインの進行方向は、ポリゴンメッシュをZ軸上方から下方に見て右回りに囲むようにする。交差座標が関連付けられている稜線に着目し、その稜線に接続する面の他方の稜線にも交差座標が関連付けられている場合、それら2点の交差点を繋いで1つの切断線分を得る。そのときの交差点を繋ぐ方向は次のように決定する。
【0091】
・両稜線のZ上方の端点が同じ座標の場合(
図6(a)を参照する。)
【0092】
終点側の稜線の下向きのベクトル
【数9】
から始点側の稜線の下向きのベクトル
【数2】
へ回転する方向が、面の法線ベクトル
【数10】
と同じ向きになるように、始点終点を選ぶ。
【0093】
・両稜線のZ下方の端点が同じ座標の場合(
図6(b)を参照する。)
始点側の稜線の上向きのベクトル
【数2】
から終点側の綾線の上向きのベクトル
【数9】
へ回転する方向が、面の法線ベクトル
【数10】
と同じ向きになるように、始点終点を選ぶ。
【0094】
これらの処理を、追跡を開始した交点に戻るまで繰り返す。
【0095】
(2−2)ポリラインの合成・・・ステップS1404
次に、上記の処理により得られた切断面のポリラインを塗り潰す準備をする。
【0096】
ここで、ラピッドプロトタイピングで用いられるソリッドモデルのポリゴンメッシュは、位相情報に矛盾がないことが理想である。
【0097】
そのようなモデルを平面で切断した場合の輪郭は完全に閉じた交差のない1つのポリラインになり、その内部を塗り潰すことは公知のスキャンコンバージョン処理などにより容易にできる。
【0098】
しかしながら,実際にCADシステムなどで運用されるSTLデータでは、微細なポリゴンが密集し座標値が非常に接近している箇所などがあり、ポリラインが自己交差することがある。
【0099】
また、複数の形状が互いに潜り込んで配置されている場合なども多く、その場合は複数のポリラインが交差することになる。
【0100】
このような状況で単純なスキャンコンバージョン処理により塗り潰しを行うと、順に線分と交差する度にポリラインの内外を判定するため、本来のモデルの内部を正しく塗り潰すことはできない(
図7を参照する。)。
【0101】
そこで、本発明の一実施形態による「(2−2)ポリラインの合成」、即ち、ステップS1404の処理では、そのような交差点で別のポリラインに分割して内部に残る線分を削除し、モデルの外形の輪郭のみを辿るポリラインに合成する。
【0102】
(2−2−1)自己交差の解消(
図8(a)を参照する。)
まず、1つのポリラインについて、以下の分割合成処理を行う。複数ある場合は、それぞれについて行う。
【0103】
(I)自己交差点でポリラインを分割
各ポリラインについて、そのポリラインが交差する点である自己交差点で、複数のポリラインに分割(Separate)する。分割されたポリラインは、端点が開いた状態になる。
【0104】
(II)裏返し・重複部分の判定と削除
ポリラインのある一つの線分に着目し、次の処理を繰り返す。
【0105】
(i)線分の中点の座標を通るXまたはY方向のスキャンラインを引き、それと交差するすべての線分について交差点の座標を求める。
【0106】
(ii)スキャンライン上の交差点を座標値の昇順でソートする。
【0107】
(iii)各交差点での内外判定値を設定する。スキャンラインの方向ベクトルと、交差点の属する線分の方向ベクトルとの外積を求める。そのZ成分がプラス(
図8で紙面の裏側から表側方向)の場合は「ON」、マイナス(
図8で紙面の表側から裏側方向)の場合は「OFF」を設定する。
【0108】
(iv)交差点の座標値が小さい方から塗り潰しステータスを設定する。最初のステータス値を「0」とする。交差点の内外判定値が「ON」ならば「1」を加え、「OFF」ならば「1」を引く。
【0109】
(v)着目線分が属する交差点の内外判定が「OFF」でステータス値が「−1以下」の場合、または内外判定が「ON」でステータス値が「0以下」の場合は、その線分が属するポリラインは裏返しになっており、本来モデルを囲む輪郭線ではないので、これを削除(Delete)する。
【0110】
また、内外判定が「OFF」でステータス値が「1以上」の場合、または内外判定が「ON」でステータス値が「2以上」の場合は、その線分が属するポリラインは重複分であるので、これを削除する。
【0111】
これらをまとめると、結局削除すべきポリラインは次のように判定できる。
【0112】
内外判定=OFF,ステータス=0以外、または、
内外判定=ON,ステータス=1以外
【0113】
(2−2−2)他のポリラインとの交差の解消(
図8(b)を参照する。)
個々の閉じたポリラインについて自己交差を解消した後、他のポリライン同士との交差を解消する。
【0114】
この場合、自己交差の場合のように裏返しになる部分は発生しないが、重複する部分はありうる。
【0115】
これも自己交差の場合と同様に、スキャンラインによる判定を行うことができる。
【0116】
(2−2−3)合成(
図8(c)を参照する。)
全ての線分について判定と削除処理が終わったならば、残った開ポリラインをつないで閉じたポリラインを形成する。
【0117】
(2−3)出力座標系へマッピング・・・ステップS1406
次に,上記した(2−2−3)の処理により合成された輪郭ポリラインを出力するビットマップ出力用画像座標系に当てはめる。
【0118】
(2−3−1)ワールド座標値を出力画像座標系の値へ変換
ワールド座標値を(X
w,Y
w)、ワールド→画像座標スケーリング係数を(s
x,s
y)、画像座標原点の平行移動量を(t
x,t
y)とおくと、画像座標値を(u,v)は次式で求められる。
【数11】
【0119】
図9(b)(c)に示すように、画像座標系にはビットマップ用とベクトル用との2種類ある(なお、
図9(a)は、ワールド座標系を示している。)。それぞれに変換行列Hを求めておく。
【0120】
ここで、ワールド座標系の幅、高さをそれぞれW,H[mm]、ビットマップ用画像座標系の幅、高さをそれぞれw
bmp,h
bmpとおくと、変換行列Hの各パラメータは以下のとおりとなる。
【数12】
【0121】
なお、w
bmp,h
bmpにはプロジェクターの画像サイズを用いる。
【0122】
(2−3−2)座標値のレンズ歪補正
プロジェクターを使用して造形する場合は、調査済みの歪み係数を用いて画像座標の変更を行う。また、その画像座標から、対応するワールド座標値を計算する。
【0123】
本来の画像座標(u,v)と、レンズの放射方向への歪曲後の画像座標(u
d,v
d)の関係は次式で表される。
【数13】
【0124】
ここで、(u
0,v
0)は放射歪の中心座標、r
2=x
2+y
2,x,yは正規化画像座標値、k
1,k
2は予め求めておくべき放射方向歪み係数である。
【0125】
本発明の一実施形態においては、レンズにより歪む座標値を逆に補正することで投影後の座標が本来の値になるようにしたいので、上記した式(2)の逆変換を行う。これには、ニュートン法による3次方程式の解法を用いる。
【0126】
(2−3−3)画像座標系範囲でクリッピング
三次元モデルの輪郭ポリライン全域が出力画像座標系に収まらない場合は、その境界線でクリップする。
図10には公知のリエントラント型多角形クリッピング(パイプラインクリッピング)の処理を示す説明図が示されているが、この
図10に示すように、画像座標範囲の上辺、下辺、左辺、右辺それぞれ順にポリラインをクリップしていく。ただしそれらの順序は問わないものとする。
【0127】
(3)塗り潰しデータの生成部46(輝度設定部46)における処理
塗り潰しデータ生成46(輝度設定部46)においては、上記した処理で得られた輪郭ポリラインの内部を塗り潰すビットマップデータを生成する。
【0128】
即ち、輪郭ポリラインで囲まれた領域の内部を、公知のスキャンコンバージョンに基づく処理により塗りつぶすビットマップデータを生成するものであるが、以下にその技術内容について詳細に説明する。
【0129】
(3−1)ピクセルデータベースの作成
図11にはスキャンコンバージョンによるポリラインの塗り潰しの処理を示す説明図が示されているが、
図11において、1つの正方形のマスがビットマップ画像の1つのピクセルを表すものとする。
【0130】
これらピクセルの角が、ポリラインで囲まれた領域内部にあるかそうでないかのデータを設定する。
【0131】
ピクセルの各エッジに、ポリラインとの交差座標を計算し設定する。そして、ピクセルエッジに沿った横方向/縦方向のスキャンラインを座標値の小さい方から大きい方向へ辿り、交差座標を通る毎にそこに「ON」/「OFF」のステータスを交互に設定する。
【0132】
「ON」から「OFF」の間にあるピクセルの角は、多角形の内部であるので「IN」(
図11中の白抜きの丸)を,そうでないピクセルの角はポリラインの外部なので「OUT」のステータスを設定する.
【0133】
(3−2)ビットマップの各ピクセルに輝度値を設定
ビットマップの各ピクセルに輝度値の設定については、IN/OUTステータスによって、8bitグレースケールビットマップの各ピクセルの値を、例えば、次に示す第1の手法〜第3の手法を用いて設定することができる。
【0134】
(第1の手法:2値化処理を用いた手法)
第1の手法では、4つの角のすべてが「IN」であるピクセルには、第1の輝度値(例えば255)が設定される。また、4つの角のすべてが「OUT」であるピクセルには、第2の輝度値(例えば0)が設定される。これら以外のピクセル、すなわち、4つの角のうちのいずれかの角が「IN」及び「OUT」の両方であるピクセルには、第1の輝度値(例えば255)が設定される。
この手法を用いた場合には、全体が輪郭ポリラインの内部に存在するピクセルには、第1の輝度値(例えば255)が設定され、全体が輪郭ポリラインの外部に存在するピクセルには、第2の輝度値(例えば0)が設定される。さらに、一部が輪郭ポリラインの内部又は外部に存在するピクセルには、第1の輝度値(例えば255)が設定される。
なお、第1の輝度値としては、1つの値(例えば255)ではなく、ある範囲を有する値(例えば250〜255)の中から選択された値を用いてもよい。同様に、第2の輝度値としては、1つの値(例えば0)ではなく、ある範囲を有する値(例えば0〜5)の中から選択された値を用いてもよい。これは、後述する第2の手法及び第3の手法にも同様に適用可能である。
【0135】
(第2の手法:2値化処理を用いた手法)
第2の手法は、4つの角のうちのいずれかの角が「IN」及び「OUT」の両方であるピクセルに第2の輝度値(例えば0)が設定される点のみにおいて、第1の手法と相違する。
この手法を用いた場合には、第1の手法を用いた場合と同様に、全体が輪郭ポリラインの内部に存在するピクセルには、第1の輝度値(例えば255)が設定され、全体が輪郭ポリラインの外部に存在するピクセルには、第2の輝度値(例えば0)が設定される。ところが、第2の手法を用いた場合には、第1の手法を用いた場合とは異なり、一部が輪郭ポリラインの内部又は外部に存在するピクセルには、第2の輝度値(例えば0)が設定される。
この第2の手法を用いた場合には(第1の手法を用いた場合にも同様に)、後述する第3の手法に比べて、実行すべき処理がより簡単となるので、処理速度を向上させることができる。
【0136】
(第3の手法:アンチエイリアシング処理を用いた手法)
第3の手法は、4つの角のうちのいずれかの角が「IN」及び「OUT」の両方であるピクセル、すなわち、一部が輪郭ポリラインの内部又は外部に存在するピクセルに、このピクセルにおける輪郭ポリラインの内部に含まれる領域の大きさに基づいた輝度値が設定される点において、第1の手法及び第2の手法と相違する。
かかるピクセルに対しては、例えば次の処理が行われる。
図15は、本発明の一実施形態に係るスライスデータ作成装置において一部が輪郭ポリラインの内部又は外部に含まれるピクセルに対する輝度値を決定する方法の一例を模式的に示す図である。
(1)そのピクセルを16×16=256個に細分化した細分化ピクセル群に分割する。
(2)この16×16のグリッドを1つの画像とみなし、スキャンコンバージョンにより内外判定を行う。すなわち、各細分化ピクセル(各グリッド)の4つの角(グリッド点)の各々が輪郭ポリラインPの内部(「IN」)及び外部(「OUT」)のいずれに存在するかを、スキャンコンバージョンにより判定する。
(3)「IN」と判定されたグリッド点を有する(
図15のグレー領域内にある)細分化ピクセルの総数nを計算する。min(n,255)をそのピクセルの輝度値とする。
この手法を用いた場合には、第1の手法及び第2の手法を用いた場合と同様に、全体が輪郭ポリラインの内部に存在するピクセルには、第1の輝度値(例えば255)が設定され、全体が輪郭ポリラインの外部に存在するピクセルには、第2の輝度値(例えば0)が設定される。ところが、第3の手法を用いた場合には、第1の手法及び第2の手法を用いた場合とは異なり、一部が輪郭ポリラインの内部又は外部に存在するピクセルには、このピクセルにおける輪郭ポリラインの内部に含まれる領域の大きさに基づいた輝度値が設定される。例えば、
図16(a)において、一部が輪郭ポリラインPの内部又は外部に存在する3つのピクセル301、302、303には、第1の輝度値及び第2の輝度値ではなく、それぞれ、「128」、「128」及び「224」という輝度値が設定されている。
この第3の手法を用いた場合には、図形の輪郭部分が滑らかに表現されたアンチエイリアシング画像が得られる。なお、上記第1の手法又は上記第2の手法を用いた場合には、図形の輪郭部分にジャギーが存在する画像が得られる。
なお、上述したアンチエイリアシング処理は、一部が輪郭ポリラインの内部又は外部に存在するピクセルのすべてに対して実行可能なものであるが、これに代えて、このようなピクセルのすべてに対してではなく任意の一部のピクセルに対してのみ実行されるものとしてもよい。
【0137】
(3−3)ビットマップの各ピクセルに設定された輝度値の変更(再設定)
三次元造形装置のプロジェクタの光源から投影される光の強度は、必ずしも光硬化性材料における投影面(液面)全域にわたって一様である訳ではなく、一般的には投影面の中心から周辺に近づくほど暗くなる傾向がある。よって、投影面において一様な強度の光が投影されるようにするためには、投影面のうち明るい部分に対応するピクセルに対する輝度値を予め低く設定しておくことが好ましい。
そこで、本発明の様々な実施形態では、スライスデータ生成装置10は、上述したアンチエイリアシング処理が施されたビットマップ画像(上記第3の手法により輝度が設定された画像)に対して以下に示すようなシェーディング補正を行う。なお、ここで説明するシェーディング補正は、上記第1の手法及び上記第2の手法のいずれかにより輝度が設定された画像に対しても実行可能なものである。
【0138】
スライスデータ生成装置10は、まず、例えば
図17に示すような光量測定値テーブルを(ソフトウェアにおいて)保持している。この光量測定値テーブルは、
図17に示すように、例えば1366×768ピクセルの入力画像を14×8個のブロック領域に分割し、各ブロック領域に対して割り当てられた光量測定値(単位は%)を記憶するものである。各ブロック領域に割り当てられた光量測定値は、その値が大きい(小さい)程、そのブロック領域が明るい(暗い)領域であることを示す。
なお、このようなこの光量測定値テーブルは、例えば、プロジェクタの出力端にパワーメータを設置した上で、プロジェクタが14×8個のブロック領域の画像を順次投影したときに、パワーメータが各ブロック領域の光量を測定することによって、得られたものとすることができる。
別の実施形態では、光量測定値テーブルに代えて、これと等価な光量設計値テーブルを用いることができる。この光量設計値テーブルは、プロジェクタの製造者により提供されたものであって、プロジェクタに入力される入力画像における各ブロック領域に対して割り当てられた光量設計値を記憶するものである。
【0139】
各ブロック領域に割り当てられた光量測定値(光量設計値)とは逆の光量分布の値(光量補正値)を、プロジェクタに入力される入力画像における対応するピクセルに対して掛け合わせることによって、光硬化性材料における投影面での光量分布が均一になる。
よって、スライスデータ生成装置10は、各ブロック領域の光量補正値をそのブロック領域に割り当てられた光量測定値(光量設計値)から次の式を用いて算出する。
光量補正値(%)=100%−(光量測定値−光量測定値の最小値)―――(式A)
このような光量補正値を用いると、光量測定値(光量設計値)が最も小さい(最も暗い)ブロック領域に含まれるピクセルの光量(輝度値)は、最大の割合(100%)が掛け合わされることにより変化しない一方、光量測定値(光量設計値)が大きい(明るい)ブロック領域に含まれるピクセルの光量(輝度値)は、その光量測定値(光量設計値)に反比例した割合が掛け合わされることにより、その光量測定値(光量設計値)に応じて小さく(暗く)補正されることになる。
【0140】
図16に示した例を用いて具体的に説明すると、
図16(a)に例示された4×4=16個のアンチエイリアシング処理後のビットマップ画像における各ピクセルに対して、上記光量測定値(光量設計値)テーブルから、
図16(b)に例示された光量測定値(光量設計値)が読み取られる。これらの光量測定値(光量設計値)から
図16(c)に示された光量補正値が上記式Aを用いて算出される。
図16(a)に示されたビットマップ画像における各ピクセルに設定された輝度値に対して、
図16(c)に示された光量補正値のうちの対応する補正値を掛け合わせることにより、
図16(d)に示されたシェーディング補正後のビットマップデータ(ビットマップ画像)が得られる。なお、上述したシェーディング補正は、ビットマップ画像におけるすべてのピクセルに対して実行可能なものであるが、これに代えて、ビットマップ画像における任意のピクセルのみに対して実行されるものとしてもよい。
また、本実施形態では、ビットマップ画像における各ピクセルに設定された輝度値に対して、単に、対応する光量補正値を掛け合わせる例について説明した。しかし、別の実施形態では、光量補正値をそのまま用いるのではなく、運用する装置の都合等に合わせて(例えば、プロジェクタの光量と入力画像の輝度値との実測された関係に基づいて)、光量補正値に対して、更に、係数を掛け合わたり、関数を適用することができる。すなわち、光量補正値を用いた別式を導出し、ビットマップ画像における各ピクセルに設定された輝度値に対して、かかる別式により算出された値を掛け合わせることができる。
【0141】
そして、スライスデータ生成装置10は、塗り潰しデータの生成部46における処理で生成されたデータ(ビットマップデータ)を光造形用のスライスデータとして三次元造形装置100へ出力する。なお、スライスデータ生成装置10は、上記第1の手法〜上記第3の手法のいずれかにより輝度が設定されたビットマップデータをスライスデータとして三次元造形装置100に出力してもよいし、さらに、これに加えて、上述したシェーディング補正が施されたビットマップデータをスライスデータとして三次元造形装置100に出力してもよい。
【0142】
三次元造形装置100としては、例えば、特許公報第4049654号に開示されたものを利用することができる。なお、特許公報第4049654号に記載された内容は、引用によりその内容の全体が本明細書に組み込まれる。
図18は、本発明の一実施形態に係る三次元造形装置100の構成の一例を示す模式図である。
図18に示すように、三次元造形装置100は、主に、スライスデータ生成装置10からスライスデータを入力する入力部500と、入力したスライスデータを用いて輝度値の設定を行う設定部505と、デジタルミラー素子510と、光を照射する光源520と、光源520からの光を平行光にしてデジタルミラー素子510に照射するレンズ530と、デジタルミラー素子510により反射された光を収束させるレンズ540と、光硬化性材料554を収容する容器550と、を含む。
【0143】
設定部505は、入力したスライスデータを用いて、三次元造形装置100(プロジェクタ)により取り扱われるデジタル画像を構成する各ピクセルに対して輝度値を設定するものである。
スライスデータ作成装置10により作成されるビットマップ画像を構成する各ピクセルと、三次元造形装置100(プロジェクタ)により取り扱われるデジタル画像を構成する各ピクセルとは、
図16(d)と
図16(e)との比較から明らかであるように、相互に形状が異なることにより、1対1で対応していない。すなわち、スライスデータを構成する各ピクセルは略正方形状であるのに対して、三次元造形装置100(プロジェクタ)により取り扱われるデジタル画像を構成する各ピクセルは略菱形状であるため、両者は1対1で対応しない。
そこで、設定部505は、スライスデータ作成装置10から入力したスライスデータ(ビットマップ画像)を用いて、三次元造形装置100(プロジェクタ)により取り扱われるデジタル画像を構成する各ピクセルに対して輝度値を設定する。具体的には、スライスデータ作成装置10から入力したスライスデータ(ビットマップ画像)を構成するピクセルを「第1ピクセル」とし、三次元造形装置100(プロジェクタ)により取り扱われるデジタル画像を構成するピクセルを「第2ピクセル」とすると、設定部505は、各第2ピクセルに対して、複数の第1ピクセルのうち対応する2つ以上の第1ピクセルに対して設定された輝度値を用いた補間処理により、輝度値を設定する。例えば、
図16(d)及び
図16(e)を参照すると、
図16(e)において太枠が付された1つの略菱形状のピクセルに対する輝度値は、
図16(d)において同じく太枠が付された4つの略正方形状ピクセルに対して設定された輝度値(255、237、224、237)を用いたバイリニア法による補間処理により、「238」に設定される。なお、
図16には、設定部505が、各第2ピクセルに対して、複数の第1ピクセルのうち対応する「4つ」の第1ピクセルに対して設定された輝度値を用いた補間処理により、輝度値を設定する例が示されているが、設定部505は、各第2ピクセルに対して、複数の第1ピクセルのうち対応する「任意の数(複数)の」第1ピクセルに対して設定された輝度値を用いた補間処理により、輝度値を設定するようにしてもよい。
なお、補間処理としては、バイリニア法によるものだけでなく、ニアレストネイバー及びバイキュービック法等を含む任意の手法によるものを用いることができる。
【0144】
デジタルミラー素子510は、マトリックス状に配列された複数の可動ミラー群(複数の反射手段)512と、可動ミラー群512を行方向に制御する行制御部514と、可動ミラー群512を列方向に制御する列制御部516と、行制御部514及び列制御部516を制御する制御部518と、を含む。
【0145】
可動ミラー群512の各々は、各第2ピクセルに対応付けて配置されており、光源520により発せられた光を反射させて光硬化性材料554の液面552に導く第1の位置(オン位置)と、光源520により発せられた光を光硬化性材料554の液面552に導かない第2の位置(オフ位置)と、の間において回動自在に支持されている。
【0146】
制御部518は、可動ミラー群512の各可動ミラーの回動(ミラー角度)を、この可動ミラーに対応する第2ピクセルに対して設定部505により設定された輝度値に基づいて、行制御部514及び列制御部516を介して制御する。具体的には、制御部518は、より大きな(小さな)輝度値が設定された第2ピクセルに対応する可動ミラー512が、より長い(短い)時間、第1(第2)の位置に位置するように、行制御部514及び列制御部516を制御する。これにより、液面552におけるこの第2ピクセルに対応する位置は、より長い(短い)時間、光の照射を受けることにより、その硬化量が多く(少なく)なる。
【0147】
このように、本発明の実施形態によれば、スライスデータ生成装置により生成されたスライスデータを構成する各第1ピクセルと、三次元造形装置において用いられるデジタル画像を構成する各第2ピクセルとが、形状等の違いによって1対1に対応しない場合であっても、各第2ピクセルに対して、複数の第1ピクセルのうち対応する2つ以上の第1ピクセルに対して設定された輝度値を用いた補間処理により、輝度値を設定する。これにより、三次元造形装置は、スライスデータ生成装置から入力したスライスデータに基づいて、適切に三次元造形物を作製することができる。なお、上述したビットマップ画像に対するアンチエイリアシング処理を行わない場合であっても、上述した各第2ピクセルに対して複数の第1ピクセルのうち対応する2つ以上の第1ピクセルに対して設定された輝度値を用いた補間処理により輝度値を設定するという処理を実行することによって、輪郭ポリラインのエッジ付近に対応する「第2ピクセル」の輝度値が輪郭ポリラインの外部に位置する「第1ピクセル」の輝度値を用いて実質的に補正されることにより、最終的に得られる3次元造形物の輪郭部分が滑らかに形成されるという効果が得られる。上述したビットマップ画像に対するアンチエイリアシング処理を行う場合には、このような効果に加えて、上述したアンチエイリアシング処理に起因する効果が相まって、最終的に得られる3次元造形物の輪郭部分がより滑らかに形成されるという効果が得られる。
【0148】
なお、以上において説明した本実施の形態の一例による一連の三次元造形用スライスデータ生成処理のプログラムの実装に際しては、プラットフォームに依存しないようにSTL(Standard Template Library)とOpenCVという一般的なライブラリのみを利用し、ユーザーインターフェースと三次元造形装置の制御についてのみプラットフォームに応じた実装を行うようにすることができる(
図12を参照する。)。このようにすることで、様々なプラットフォームへの実装が容易になる。
【0149】
即ち、ソリッドモデルのポリゴンメッシュから三次元造形用スライスデータを計算し取得するソフトウェアに、本発明の様々な実施形態による手法をプログラムすることもできる。
【0150】
また、上記においてその詳細な説明は省略したが、作業者の作業を容易にするとともに作業者に安心感を与えるために、三次元造形物の上端から下端までを一定のピッチでスライスした場合の輪郭形状を表示装置18上に表示するようにしてもよい。
【0151】
そして、この表示結果としては、その内部を正常に塗り潰すことができるように自動で修正された外形のみを表示するようにしてもよい。
【0152】
以上において説明したように、本発明の様々な実施形態による手法においては、完全なソリッドモデルとしての条件を満たしていないポリゴンメッシュに対して高度な修正作業を行うことなしにスライスデータを生成することができる。
【0153】
したがって、本発明の様々な実施形態による手法においては、ポリゴンメッシュを修正するために特別なソフトウェアを用意する必要がなく、作業者は高度なソフトウェア操作のスキルを必要としない。
【0154】
また、本発明の様々な実施形態による手法においては、本発明の様々な実施形態に係る処理により修正された修正後の輪郭形状を三次元造形前に表示することで、三次元造形が可能であることを作業者に理解させることができ、作業者を安心させることができる。
【0155】
そして、こうした本発明の様々な実施形態による手法は、光造形だけでなくラスターで描画を行う様々な製品にも適用可能であり、また、様々なプラットフォームへの移植も容易である。