(57)【特許請求の範囲】
【請求項１】
造形する３次元造形物の３次元モデルを所定の間隔でスライスし、前記３次元造形物の輪郭を示す輪郭線によって構成されたスライスモデルにおいて、前記スライスモデル内の領域を、造形する造形領域と造形しない非造形領域とに分けるスライスモデルの領域判定装置であって、
前記輪郭線には、前記３次元造形物の造形領域の外郭の形状を示す島輪郭線と、前記３次元造形物の穴の形状を示す穴輪郭線とが含まれ、
前記スライスモデル、変数である内部レベル変数および一時保持変数を記憶する記憶部と、
前記記憶部に記憶された前記スライスモデルの前記島輪郭線と前記穴輪郭線とにおいて、互いに異なる周回方向を設定する周回方向設定部と、
前記記憶部に記憶された前記スライスモデルにおいて、前記輪郭線と交差するように所定の方向に向かって走査させる走査線を設定する走査線設定部と、
前記輪郭線と前記走査線とが交差する交差点を特定する交差点特定部と、
前記交差点特定部によって特定された前記交差点において、前記走査線と交差した前記輪郭線が前記島輪郭線か前記穴輪郭線かを判定する輪郭線判定部と、
前記輪郭線判定部によって、前記走査線と交差した前記輪郭線が前記島輪郭線と判定された場合、前記島輪郭線が前記走査線に対して一の方向から交差した際に、前記内部レベル変数の値に所定の数を加算し、前記島輪郭線が前記走査線に対して前記一の方向とは逆の他の方向から交差した際に、前記内部レベル変数の値に前記所定の数を減算する第１内部レベル設定部と、
前記輪郭線判定部によって、前記走査線と交差した前記輪郭線が前記穴輪郭線と判定された場合、前記穴輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値を前記一時保持変数に代入した後に、前記内部レベル変数に０を代入し、前記穴輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に、前記一時保持変数の値を代入する第２内部レベル設定部と、
前記第１内部レベル設定部および前記第２内部レベル設定部によって設定された前記内部レベル変数において、前記内部レベル変数の値が０以外の値である場合、前記内部レベル変数に対応した領域が前記造形領域であると判定し、前記内部レベル変数の値が０である場合、前記内部レベル変数に対応した領域が前記非造形領域であると判定する領域判定部と、
を備えた、スライスモデルの領域判定装置。
【請求項２】
前記周回方向設定部は、前記島輪郭線の周回方向を一の周回方向に設定し、前記穴輪郭線の周回方向を前記一の周回方向とは逆の他の周回方向に設定し、
前記輪郭線判定部は、前記交差点において前記走査線と交差した前記輪郭線の周回方向が前記一の周回方向の場合、前記交差した前記輪郭線が前記島輪郭線であると判定し、前記交差点において前記走査線と交差した前記輪郭線の周回方向が前記他の周回方向の場合、前記交差した前記輪郭線が前記穴輪郭線であると判定する、請求項１に記載されたスライスモデルの領域判定装置。
【請求項３】
前記第１内部レベル設定部は、前記島輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に１を加算し、前記島輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値に１を減算する、請求項１または２に記載されたスライスモデルの領域判定装置。
【請求項４】
前記走査線設定部は、前記走査線を複数設定する、請求項１から３までの何れか一つに記載されたスライスモデルの領域判定装置。
【請求項５】
３次元造形物を造形する３次元造形装置と、
請求項１から４までの何れか一つに記載されたスライスモデルの領域判定装置と、
を備えた、３次元造形システム。
【請求項６】
造形する３次元造形物の３次元モデルを所定の間隔でスライスし、前記３次元造形物の輪郭を示す輪郭線によって構成されたスライスモデルにおいて、前記スライスモデル内の領域を、造形する造形領域と造形しない非造形領域とに分けるスライスモデルの領域判定方法であって、
前記輪郭線には、前記３次元造形物の造形領域の外郭の形状を示す島輪郭線と、前記３次元造形物の穴の形状を示す穴輪郭線とが含まれ、
前記スライスモデルを記憶する記憶工程と、
前記記憶工程で記憶した前記スライスモデルの前記島輪郭線と前記穴輪郭線とにおいて、互いに異なる周回方向を設定する周回方向設定工程と、
前記記憶工程で記憶した前記スライスモデルにおいて、前記輪郭線と交差するように所定の方向に向かって走査させる走査線を設定する走査線設定工程と、
前記輪郭線と前記走査線とが交差する交差点を特定する交差点特定工程と、
前記交差点特定工程によって特定した前記交差点において、前記走査線と交差した前記輪郭線が前記島輪郭線か前記穴輪郭線かを判定する輪郭線判定工程と、
前記輪郭線判定工程において、前記走査線と交差した前記輪郭線が前記島輪郭線と判定した場合、前記島輪郭線が前記走査線に対して一の方向から交差した際に、変数である内部レベル変数の値に所定の数を加算し、前記島輪郭線が前記走査線に対して前記一の方向とは逆の他の方向から交差した際に、前記内部レベル変数の値に前記所定の数を減算する第１内部レベル設定工程と、
前記輪郭線判定工程において、前記走査線と交差した前記輪郭線が前記穴輪郭線と判定した場合、前記穴輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値を、変数である一時保持変数に代入した後に、前記内部レベル変数に０を代入し、前記穴輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に、前記一時保持変数の値を代入する第２内部レベル設定工程と、
前記第１内部レベル設定工程および前記第２内部レベル設定工程で設定した前記内部レベル変数において、前記内部レベル変数の値が０以外の値である場合、前記内部レベル変数に対応した領域が前記造形領域であると判定し、前記内部レベル変数の値が０である場合、前記内部レベル変数に対応した領域が前記非造形領域であると判定する領域判定工程と、
を包含する、スライスモデルの領域判定方法。
【請求項７】
前記周回方向設定工程において、前記島輪郭線の周回方向を一の周回方向に設定し、前記穴輪郭線の周回方向を前記一の周回方向とは逆の他の周回方向に設定し、
前記輪郭線判定工程では、前記交差点において前記走査線と交差した前記輪郭線の周回方向が前記一の周回方向の場合、前記交差した前記輪郭線が前記島輪郭線であると判定し、前記交差点において前記走査線と交差した前記輪郭線の周回方向が前記他の周回方向の場合、前記交差した前記輪郭線が前記穴輪郭線であると判定する、請求項６に記載されたスライスモデルの領域判定方法。
【請求項８】
前記第１内部レベル設定工程において、前記島輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に１を加算し、前記島輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値に１を減算する、請求項６または７に記載されたスライスモデルの領域判定方法。
【請求項９】
前記走査線設定工程において、前記走査線を複数設定する、請求項６から８までの何れか一つに記載されたスライスモデルの領域判定方法。
【請求項１０】
前記スライスモデルの前記輪郭線には、前記３次元造形物の造形領域の外郭を示す第１島輪郭線と、前記穴輪郭線と、前記第１島輪郭線と前記穴輪郭線との間に設けられ、前記３次元造形物の造形領域の外郭を示す第２島輪郭線とが含まれ、
前記内部レベル変数の初期値を０とし、
前記第１内部レベル設定工程において、前記第１島輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に１を加算し、前記第２島輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に１を加算することで前記内部レベル変数の値を２とし、
前記第２内部レベル設定工程において、前記穴輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値である２を前記一時保持変数に代入した後に、前記内部レベル変数に０を代入し、前記穴輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に前記一時保持変数の値である２を代入し、
前記第１内部レベル設定工程において、前記第２島輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値に１を減算することで前記内部レベル変数の値を１とし、前記第１島輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値に１を減算することで前記内部レベル変数の値を０とする、請求項８に記載されたスライスモデルの領域判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、スライスモデルの領域判定装置、３次元造形システム、および、スライスモデルの領域判定方法に関する。
【背景技術】
【０００２】
従来から、３次元造形物を造形する３次元造形装置が知られている。この種の３次元造形装置では、例えば、コンピュータ支援設計装置（ＣＡＤ装置）を用いて、３次元造形物を造形するための３次元モデルのデータを作成している（特許文献１参照）。そして、３次元モデルを所定の間隔にスライスすることで、３次元造形物の断面形状に対応したスライスモデルのデータを作成している。３次元造形装置は、スライスモデルのデータに沿った断面形状の樹脂材料を順次積層し、樹脂材料を硬化させることによって３次元造形物を造形する。
【０００３】
図１１（ａ）は、３次元造形物Ａ１００の平面図である。図１１（ｂ）は、３次元造形物Ａ１００の側面図である。この３次元造形物Ａ１００の形状は、直径が異なる２つの円柱形状のものを上下方向に並べた形状であり、平面視において中央部分が切り抜かれた形状である。図１２は、図１１（ｂ）の位置ＰＴ１００で３次元造形物Ａ１００をスライスしたスライスモデルＳＭ１００を示した図である。なお、図１１（ａ）、図１１（ｂ）、図１２において、斜線が引かれた領域は造形領域である。スライスモデルＳＭ１００は、３次元造形物Ａ１００の形状を示す輪郭線によって構成されている。この輪郭線には、例えば、３次元造形物Ａ１００の造形領域の外郭を示す輪郭線Ｌ１０１と、３次元造形物Ａ１００の穴の形状を示す輪郭線Ｌ１０２とが含まれる。以下の説明において、３次元造形物の造形領域の外郭を示す輪郭線を「島輪郭線」と称する。３次元造形物の穴の形状を示す輪郭線を「穴輪郭線」と称する。
【０００４】
図１２において、島輪郭線Ｌ１０１と穴輪郭線Ｌ１０２との間の領域Ｄ１０１は造形領域である。穴輪郭線Ｌ１０２よりも内側の領域Ｄ１０２は、穴を示しており、造形されない非造形領域である。
【０００５】
例えば、スライスモデルＳＭ１００において、輪郭線Ｌ１０１、Ｌ１０２が島輪郭線か穴輪郭線かを識別するために、それぞれの輪郭線Ｌ１０１、Ｌ１０２において周回方向が設定されている。例えば、島輪郭線Ｌ１０１の周回方向は時計回りの方向に設定されている。また、穴輪郭線Ｌ１０２の周回方向は反時計回りの方向に設定されている。コンピュータプログラムは、輪郭線の周回方向によって、輪郭線が島輪郭線か穴輪郭線かを判定している。
【０００６】
ところで、コンピュータプログラムにおいて、スライスモデルＳＭ１００の領域を造形領域と非造形領域とに分けるために、輪郭線Ｌ１０１、Ｌ１０２に対して交差し、かつ、所定の方向（図１２では、左から右への方向）に走査する直線状の走査線ＳＬ１００を設定する。また、コンピュータプログラムには、スライスモデルＳＭ１００の領域を造形領域と非造形領域とに分けるための変数ｎ（ここでは、内部レベルｎという。）が設定されている。例えば、内部レベルｎの初期値は「０」である。走査線ＳＬ１００が所定の方向に走査して輪郭線Ｌ１０１、Ｌ１０２と交差した際、輪郭線Ｌ１０１、Ｌ１０２がどの方向から走査線ＳＬ１００に対して交差したかを判定する。ここでは、輪郭線が一の方向（図１２では、下から上へ向かう方向）から走査線ＳＬ１００に対して交差した場合、内部レベルｎの値に「１」を加算する。一方、輪郭線が一の方向とは逆の他の方向（図１２では、上から下へ向かう方向）から走査線ＳＬ１００に対して交差した場合、内部レベルｎの値に「１」を減算する。図１２のスライスモデルＳＭ１００では、交差点Ｐ１０１、Ｐ１０３において内部レベルｎの値に「１」が加算され、交差点Ｐ１０２、Ｐ１０４において内部レベルｎの値に「１」が減算される。そして、コンピュータプログラムは、内部レベルｎの値が「０」以外の場合、内部レベルｎに対応した領域（図１２では、領域Ｄ１０１）を造形領域と判定し、内部レベルｎの値が「０」の場合、内部レベルｎに対応した領域（図１２では、領域Ｄ１０２）を非造形領域と判定する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特表２００３−５３５７１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
図１３は、図１１（ｂ）の位置ＰＴ１１０で３次元造形物Ａ１００をスライスしたスライスモデルＳＭ１１０を示した図である。図１３において、位置ＰＴ１１０は、３次元造形物Ａ１００を構成する２つの円柱形状の境界となる位置である。そのため、図１３のスライスモデルＳＭ１１０には、下側の円柱形状の上端の外郭を示す島輪郭線Ｌ１１１と、上側の円柱形状の下端の外郭を示す島輪郭線Ｌ１１２とが設けられている。図１３において、斜線が引かれた領域は、造形領域である。図１３のスライスモデルＳＭ１１０では、島輪郭線Ｌ１１１と穴輪郭線Ｌ１１３との間には、他の島輪郭線Ｌ１１２が設けられている。ここでは、島輪郭線Ｌ１１１と島輪郭線Ｌ１１２との間の領域Ｄ１１１、および、島輪郭線Ｌ１１２と穴輪郭線Ｌ１１３との間の領域Ｄ１１２は、造形領域である。一方、穴輪郭線Ｌ１１３よりも内側の領域Ｄ１１３は、非造形領域である。
【０００９】
コンピュータプログラムは、スライスモデルＳＭ１１０の輪郭線に対して交差するような走査線ＳＬ１１０を設定する。そして、走査線ＳＬ１１０を走査して内部レベルｎの値が推移することで、スライスモデルＳＭ１１０の領域を造形領域と非造形領域とに分けている。このとき、交差点Ｐ１１１、Ｐ１１２において、内部レベルｎの値にそれぞれ「１」が加算されるため、交差点Ｐ１１２では、内部レベルｎの値が「２」となる。交差点Ｐ１１３において、内部レベルｎの値に「１」が減算されるため、内部レベルｎの値が「１」となる。同様にして、交差点Ｐ１１４では内部レベルｎの値が「２」、交差点Ｐ１１５では内部レベルｎの値が「１」、交差点Ｐ１１６では内部レベルｎの値が「０」となる。
【００１０】
コンピュータプログラムは、内部レベルｎの値が「０」の場合、内部レベルｎに対応した領域が非造形領域であると判定する。スライスモデルＳＭ１１０において、本来、領域Ｄ１１３は非造形領域である。しかしながら、領域Ｄ１１３では内部レベルｎの値が「１」であるため、コンピュータプログラムは、領域Ｄ１１３を造形領域と判定してしまうおそれがあった。
【００１１】
本発明はかかる点に鑑みてなされたものであり、その目的は、造形する３次元造形物の３次元モデルを所定の間隔にスライスしたスライスモデルにおいて、スライスモデルの領域を造形領域と非造形領域とに適切に分けることが可能なスライスモデルの領域判定装置、３次元造形システム、および、スライスモデルの領域判定方法を提供することである。
【課題を解決するための手段】
【００１２】
本発明に係るスライスモデルの領域判定装置は、造形する３次元造形物の３次元モデルを所定の間隔にスライスし、前記３次元造形物の輪郭を示す輪郭線によって構成されたスライスモデルにおいて、前記スライスモデル内の領域を、造形する造形領域と造形しない非造形領域とに分けるスライスモデルの領域判定装置である。前記輪郭線には、前記３次元造形物の造形領域の外郭の形状を示す島輪郭線と、前記３次元造形物の穴の形状を示す穴輪郭線とが含まれている。前記領域判定装置は、記憶部と、周回方向設定部と、走査線設定部と、交差点特定部と、輪郭線判定部と、第１内部レベル設定部と、第２内部レベル設定部と、領域判定部とを備えている。前記記憶部は、前記スライスモデル、変数である内部レベル変数および一時保持変数を記憶する。前記周回方向設定部は、前記記憶部に記憶された前記スライスモデルの前記島輪郭線と前記穴輪郭線とにおいて、互いに異なる周回方向を設定する。前記走査線設定部は、前記記憶部に記憶された前記スライスモデルにおいて、前記輪郭線と交差するように所定の方向に向かって走査させる走査線を設定する。前記交差点特定部は、前記輪郭線と前記走査線とが交差する交差点を特定する。前記輪郭線判定部は、前記交差点特定部によって特定された前記交差点において、前記走査線と交差した前記輪郭線が前記島輪郭線か前記穴輪郭線かを判定する。前記第１内部レベル設定部は、前記輪郭線判定部によって、前記走査線と交差した前記輪郭線が前記島輪郭線と判定された場合、前記島輪郭線が前記走査線に対して一の方向から交差した際に、前記内部レベル変数の値に所定の数を加算し、前記島輪郭線が前記走査線に対して前記一の方向とは逆の他の方向から交差した際に、前記内部レベル変数の値に前記所定の数を減算する。前記第２内部レベル設定部は、前記輪郭線判定部によって、前記走査線と交差した前記輪郭線が前記穴輪郭線と判定された場合、前記穴輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値を前記一時保持変数に代入した後に、前記内部レベル変数に０を代入し、前記穴輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に、前記一時保持変数の値を代入する。前記領域判定部は、前記第１内部レベル設定部および前記第２内部レベル設定部によって設定された前記内部レベル変数において、前記内部レベル変数の値が０以外の値である場合、前記内部レベル変数に対応した領域が前記造形領域であると判定し、前記内部レベル変数の値が０である場合、前記内部レベル変数に対応した領域が前記非造形領域であると判定する。
【００１３】
前記領域判定装置によれば、第２内部レベル設定部によって、穴輪郭線が走査線に対して他の方向から交差した際に、内部レベル変数の値を一時保持変数に代入した後に、内部レベル変数の値に「０」を代入する。そして、穴輪郭線が走査線に対して一の方向から交差した際に、内部レベル変数の値に一時保持変数の値を代入する。よって、スライスモデルにおいて、造形しない非造形領域では内部レベル変数の値を確実に「０」にすることができる。そのため、例えば、図１３のスライスモデルＳＭ１１０のように、島輪郭線Ｌ１１１と穴輪郭線Ｌ１１３との間に、他の島輪郭線Ｌ１１２とがある場合であっても、スライスモデルＳＭ１１０の領域を造形領域と非造形領域とに確実に分けることができる。
【００１４】
本発明の好ましい一態様によれば、前記周回方向設定部は、前記島輪郭線の周回方向を一の周回方向に設定し、前記穴輪郭線の周回方向を前記一の周回方向とは逆の他の周回方向に設定する。前記輪郭線判定部は、前記交差点において前記走査線と交差した前記輪郭線の周回方向が前記一の周回方向の場合、前記交差した前記輪郭線が前記島輪郭線であると判定し、前記交差点において前記走査線と交差した前記輪郭線の周回方向が前記他の周回方向の場合、前記交差した前記輪郭線が前記穴輪郭線であると判定する。
【００１５】
上記態様によれば、走査線と交差した輪郭線の周回方向が一の周回方向か他の周回方向かを判定することで、走査線と交差した輪郭線が島輪郭線か穴輪郭線かを容易に判定することができる。
【００１６】
本発明の好ましい他の一態様によれば、前記第１内部レベル設定部は、前記島輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に１を加算し、前記島輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値に１を減算する。
【００１７】
上記態様によれば、島輪郭線が走査線に対して交差した際に、内部レベル変数の値をより簡単に推移させることができる。
【００１８】
本発明の好ましい他の一態様によれば、前記走査線設定部は、前記走査線を複数設定する。
【００１９】
上記態様によれば、スライスモデルの領域を造形領域と非造形領域とに、より確実に分けることができる。
【００２０】
本発明に係る３次元造形システムは、３次元造形物を造形する３次元造形装置と、上述した何れかに記載されたスライスモデルの領域判定装置と、を備えている。
【００２１】
上記態様によれば、上述した何れかに記載されたスライスモデルの領域判定装置を備えた３次元造形システムを提供することができる。
【００２２】
本発明に係るスライスモデルの領域判定方法は、造形する３次元造形物の３次元モデルを所定の間隔にスライスし、前記３次元造形物の輪郭を示す輪郭線によって構成されたスライスモデルにおいて、前記スライスモデル内の領域を、造形する造形領域と造形しない非造形領域とに分けるスライスモデルの領域判定方法である。前記輪郭線には、前記３次元造形物の造形領域の外郭の形状を示す島輪郭線と、前記３次元造形物の穴の形状を示す穴輪郭線とが含まれている。前記領域判定方法は、記憶工程と、周回方向設定工程と、走査線設定工程と、交差点特定工程と、輪郭線判定工程と、第１内部レベル設定工程と、第２内部レベル設定工程と、領域判定工程とを包含する。前記記憶工程では、前記スライスモデルを記憶する。前記周回方向設定工程では、前記記憶工程で記憶した前記スライスモデルの前記島輪郭線と前記穴輪郭線とにおいて、互いに異なる周回方向を設定する。前記走査線設定工程では、前記記憶工程で記憶した前記スライスモデルにおいて、前記輪郭線と交差するように所定の方向に向かって走査させる走査線を設定する。前記交差点特定工程では、前記輪郭線と前記走査線とが交差する交差点を特定する。前記輪郭線判定工程では、前記交差点特定工程によって特定した前記交差点において、前記走査線と交差した前記輪郭線が前記島輪郭線か前記穴輪郭線かを判定する。前記第１内部レベル設定工程では、前記輪郭線判定工程において、前記走査線と交差した前記輪郭線が前記島輪郭線と判定した場合、前記島輪郭線が前記走査線に対して一の方向から交差した際に、変数である内部レベル変数の値に所定の数を加算し、前記島輪郭線が前記走査線に対して前記一の方向とは逆の他の方向から交差した際に、前記内部レベル変数の値に前記所定の数を減算する。第２内部レベル設定工程では、前記輪郭線判定工程において、前記走査線と交差した前記輪郭線が前記穴輪郭線と判定した場合、前記穴輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値を、変数である一時保持変数に代入した後に、前記内部レベル変数に０を代入し、前記穴輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に、前記一時保持変数の値を代入する。前記領域判定工程では、前記第１内部レベル設定工程および前記第２内部レベル設定工程で設定した前記内部レベル変数において、前記内部レベル変数の値が０以外の値である場合、前記内部レベル変数に対応した領域が前記造形領域であると判定し、前記内部レベル変数の値が０である場合、前記内部レベル変数に対応した領域が前記非造形領域であると判定する。
【００２３】
本発明の好ましい他の一態様によれば、前記周回方向設定工程において、前記島輪郭線の周回方向を一の周回方向に設定し、前記穴輪郭線の周回方向を前記一の周回方向とは逆の他の周回方向に設定する。前記輪郭線判定工程では、前記交差点において前記走査線と交差した前記輪郭線の周回方向が前記一の周回方向の場合、前記交差した前記輪郭線が前記島輪郭線であると判定し、前記交差点において前記走査線と交差した前記輪郭線の周回方向が前記他の周回方向の場合、前記交差した前記輪郭線が前記穴輪郭線であると判定する。
【００２４】
本発明の好ましい他の一態様によれば、前記第１内部レベル設定工程において、前記島輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に１を加算し、前記島輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値に１を減算する。
【００２５】
本発明の好ましい他の一態様によれば、前記走査線設定工程において、前記走査線を複数設定する。
【００２６】
前記スライスモデルの前記輪郭線には、前記３次元造形物の造形領域の外郭を示す第１島輪郭線と、前記穴輪郭線と、前記第１島輪郭線と前記穴輪郭線との間に設けられ、前記３次元造形物の造形領域の外郭を示す第２島輪郭線とが含まれている。前記内部レベル変数の初期値を０とする。前記第１内部レベル設定工程において、前記第１島輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に１を加算し、前記第２島輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に１を加算することで前記内部レベル変数の値を２とする。前記第２内部レベル設定工程において、前記穴輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値である２を前記一時保持変数に代入した後に、前記内部レベル変数に０を代入し、前記穴輪郭線が前記走査線に対して前記一の方向から交差した際に、前記内部レベル変数の値に前記一時保持変数の値である２を代入する。前記第１内部レベル設定工程において、前記第２島輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値に１を減算することで前記内部レベル変数の値を１とし、前記第１島輪郭線が前記走査線に対して前記他の方向から交差した際に、前記内部レベル変数の値に１を減算することで前記内部レベル変数の値を０とする。
【００２７】
上記態様によれば、内部レベル変数の値が「２」であって、穴輪郭線が走査線に対して他の方向から交差した際に、内部レベル変数の値（＝２）を一時保持変数に代入した後に、内部レベル変数の値に「０」を代入する。そして、穴輪郭線が走査線に対して一の方向から交差した際に、内部レベル変数の値に一時保持変数の値（＝２）を代入する。よって、スライスモデルが第１島輪郭線、穴輪郭線、および、第１島輪郭線と穴輪郭線との間に設けられた第２島輪郭線によって構成された場合であっても、造形しない非造形領域では内部レベル変数の値を確実に「０」にすることができる。したがって、スライスモデルの領域を造形領域と非造形領域とに確実に分けることができる。
【発明の効果】
【００２８】
本発明によれば、造形する３次元造形物の３次元モデルを所定の間隔にスライスしたスライスモデルにおいて、スライスモデルの領域を造形領域と非造形領域とに適切に分けることができる。
【図面の簡単な説明】
【００２９】
【図１】本発明の実施形態に係る３次元造形システムの断面図である。
【図２】３次元造形システムの平面図である。
【図３】３次元造形システムのブロック図である。
【図４】スライスモデルの輪郭線が島輪郭線か穴輪郭線かを判別するための手順を示す図である。
【図５】スライスモデルにおいて、どの領域が造形領域であり、どの領域が非造形領域であるかを判定する手順を示したフローチャートである
【図６】３次元造形物の一例を示した図であり、図６（ａ）は、３次元造形物の平面図であり、図６（ｂ）は、３次元造形物の側面図である。
【図７】図６（ｂ）の位置ＰＴ１で３次元造形物をスライスしたスライスモデルを示した図である。
【図８】図８（ａ）および図８（ｂ）は、ベクトルａとベクトルｂとの外積ａ×ｂによって算出されたベクトルの方向について示した図である。
【図９】スライスモデルに複数の走査線を設定した状態を示した図である。
【図１０】スライスモデルの他の一例を示した図である。
【図１１】従来技術を説明する図であり、図１１（ａ）は、３次元造形物の平面図であり、図１１（ｂ）は、３次元造形物の側面図である。
【図１２】従来技術を説明する図であり、図１１（ｂ）の位置ＰＴ１００で３次元造形物をスライスしたスライスモデルを示した図である。
【図１３】従来技術を説明する図であり、図１１（ｂ）の位置ＰＴ１１０で３次元造形物をスライスしたスライスモデルを示した図である。
【発明を実施するための形態】
【００３０】
以下、図面を参照しながら、本発明の実施形態に係るスライスモデルの領域判定装置（以下、領域判定装置という。）を備えた３次元造形システムについて説明する。なお、ここで説明される実施形態は、当然ながら特に本発明を限定することを意図したものではない。また、同じ作用を奏する部材・部位には同じ符号を付し、重複する説明は適宜省略または簡略化する。
【００３１】
図１は、本実施形態に係る３次元造形システム１０の断面図である。図２は、３次元造形システム１０の平面図である。図３は、３次元造形システム１０のブロック図である。なお、図面中の符号Ｆ、Ｒｒ、Ｌ、Ｒは、それぞれ前、後、左、右を示している。ただし、これらは説明の便宜上の方向に過ぎず、３次元造形システム１０の設置態様を何ら限定するものではない。
【００３２】
３次元造形システム１０は、３次元造形物を造形するシステムである。図１に示すように、３次元造形システム１０は、３次元造形装置１０Ａと、領域判定装置１００（図３参照）とを備えている。３次元造形装置１０Ａは、３次元造形物の断面形状を用意し、液体の光硬化性樹脂を硬化させて断面形状に対応した形状の樹脂層を順次積層することによって、３次元造形物を造形する装置である。ここで、「断面形状」とは、３次元造形物を所定の厚み（例えば、０．１ｍｍ）ごとにスライスしたときの断面の形状である。「光硬化性樹脂」とは、所定の波長を含む光が照射されると、硬化する樹脂である。３次元造形装置１０Ａは、台１１と、槽１２と、ホルダ１３と、光学装置１４と、制御装置１６とを備えている。
【００３３】
台１１は、ケース２５に支持されている。台１１には、光硬化性樹脂２３に照射する光を通過させる開口２１が形成されている。槽１２は、液体の光硬化性樹脂２３を収容する。槽１２は、台１１上に取り付け可能に載置されている。図２に示すように、槽１２は、台１１に載置された状態において、台１１の開口２１を覆う。槽１２は、光を透過させることのできる材料、例えば、透明な材料によって形成されているとよい。
【００３４】
図１に示すように、ホルダ１３は、槽１２の上方、かつ、台１１の開口２１の上方に配置されている。ホルダ１３は、下降したときに槽１２内の光硬化性樹脂２３に浸漬し、上昇するときに、光が照射されて硬化した光硬化性樹脂２３を吊り上げるように昇降自在に構成されている。ここでは、台１１には、上下方向に延びた支柱４１が設けられている。支柱４１の前方には、スライダ４２が取り付けられている。スライダ４２は、支柱４１に沿って昇降自在であり、モータ４３によって上方または下方に移動する。ここでは、ホルダ１３は、スライダ４２に取り付けられており、支柱４１の前方に配置されている。ホルダ１３は、モータ４３によって上方または下方に移動する。
【００３５】
光学装置１４は、台１１の下方に配置されている。光学装置１４は、槽１２内に収容された液体の光硬化性樹脂２３に所定の波長からなる光を照射する装置である。光学装置１４は、台１１の下方に設けられたケース２５に収容されている。光学装置１４は、プロジェクタ３１と、ミラー３２とを備えている。プロジェクタ３１は、光を発する光源であり、台１１の前部の下方に配置されている。プロジェクタ３１は、ホルダ１３よりも前方に配置されている。プロジェクタ３１の後部には、レンズ３４が配置されている。プロジェクタ３１は、レンズ３４を通じて前方から後方に向かって光を発する。ミラー３２は、プロジェクタ３１から発せられた光を槽１２に向かって反射させる部材である。ミラー３２は、台１１に形成された開口２１の下方、かつ、プロジェクタ３１の後方に配置されている。プロジェクタ３１から発せられた光は、ミラー３２によって反射され、台１１の開口２１を通じて槽１２内の光硬化性樹脂２３に照射される。
【００３６】
制御装置１６は、ホルダ１３が取り付けられたスライダ４２を昇降自在に制御するモータ４３、および、光学装置１４のプロジェクタ３１に接続されている。制御装置１６は、モータ４３を駆動することによって、スライダ４２およびホルダ１３を上方または下方に移動させる。制御装置１６は、プロジェクタ３１を制御する。制御装置１６は、プロジェクタ３１から発せられる光のエネルギー、光度、光量、光の波長帯域、光の形状、光を照射させる位置および光を発するタイミングなどを制御する。なお、制御装置１６の構成は特に限定されない。例えば、制御装置１６は、コンピュータであり、中央演算処理装置（以下、ＣＰＵという。）と、ＣＰＵが実行するプログラムなどを格納したＲＯＭと、ＲＡＭなどを備えていてもよい。
【００３７】
以上、本実施形態に係る３次元造形装置１０Ａの構成について説明した。本実施形態に係る３次元造形装置１０Ａでは、造形する３次元造形物に対応した３次元モデルのデータ（以下、造形物モデルという。）を用意する。そして、造形物モデルを所定の間隔で水平方向にスライスすることによって、３次元造形物の断面形状に対応した２次元のスライスモデルのデータを複数作成する。ただし、造形物モデルをスライスする方向は、水平方向に限定されず、例えば、垂直方向であってもよい。ここでは、スライスモデルのデータとは、ＳＴＬデータのことである。以下、２次元のスライスモデルのデータを単に「スライスモデル」とも称する。ここでは、３次元造形装置１０Ａは、液体の光硬化性樹脂２３を硬化させて、スライスモデルに沿った断面形状に対応した形状の樹脂層を順次積層することによって、３次元造形物を造形する。
【００３８】
ところで、図１２に示すように、例えば、造形する３次元造形物Ａ１００のスライスモデルＳＭ１００は、３次元造形物Ａ１００（図１１（ａ）および（ｂ）参照）の形状を示す輪郭線によって構成されている。この輪郭線には、例えば、造形領域の外郭を示す島輪郭線Ｌ１０１と、穴の形状を示す穴輪郭線Ｌ１０２とが含まれている。島輪郭線Ｌ１０１よりも内側であって、穴輪郭線Ｌ１０２よりも外側の領域Ｄ１０１は、光硬化性樹脂２３が硬化する領域、すなわち、造形領域である（図１２の斜線部分）。一方、穴輪郭線Ｌ１０２よりも内側の領域（ただし、穴輪郭線Ｌ１０２よりも内側に他の島輪郭線がある場合、穴輪郭線Ｌ１０２よりも内側であって、他の島輪郭線よりも外側の領域）Ｄ１０２は、穴でありその領域には光硬化性樹脂２３が硬化しない領域、すなわち、造形されない非造形領域である。
【００３９】
ここでは、スライスモデルＳＭ１００において、島輪郭線Ｌ１０１と穴輪郭線Ｌ１０２とを識別するために、それぞれの輪郭線において周回方向が設定されている。例えば、島輪郭線Ｌ１０１の周回方向は時計回りであり、穴輪郭線Ｌ１０２の周回方向は反時計回りである。本実施形態では、時計回りが本発明の「一の周回方向」に対応し、反時計回りが本発明の「他の周回方向」に対応する。ただし、島輪郭線Ｌ１０１の周回方向と穴輪郭線Ｌ１０２の周回方向とは異なっていればよく、島輪郭線Ｌ１０１の周回方向が反時計回りであり、穴輪郭線Ｌ１０２の周回方向が時計回りであってもよい。
【００４０】
なお、スライスモデルの輪郭線の周回方向が分からないため、その輪郭線が島輪郭線か穴輪郭線かが分からない場合には、以下の手順で輪郭線を判定することができる。図４は、スライスモデルＳＭ１１の輪郭線Ｌ１１が島輪郭線であるか穴輪郭線であるかを判定するための手順を示した図である。以下では、図４のスライスモデルＳＭ１１を用いて、スライスモデルＳＭ１１の輪郭線Ｌ１１が島輪郭線であるか穴輪郭線であるかを判定（以下、輪郭線判定という。）する手順について説明する。ここでは、輪郭線判定をするために、「三角形の符号付き面積」を用いる。「三角形の符号付き面積」とは、三角形の面積にプラスまたはマイナスの符号を付加した面積のことである。例えば、図４に示すような多角形を構成する輪郭線Ｌ１１の場合、まず、成す角度が鋭角である任意の凸頂点を抽出する。ここでは、例えば、頂点ｐを抽出する。次に、頂点ｐと隣合う頂点ｑおよび頂点ｒを抽出する。ここで、三角形△ｐｑｒの符号付き面積を求める。三角形△ｐｑｒの符号付き面積をＳとすると、面積Ｓは、以下の式（１）で表される。
Ｓ＝（ｐ．ｘ−ｒ．ｘ）・（ｑ．ｙ−ｒ．ｙ）−（ｑ．ｘ−ｒ．ｘ）・（ｐ．ｙ−ｒ．ｙ）  ・・・（１）
上記式（１）において、ｐ．ｘおよびｐ．ｙはそれぞれ頂点ｐのｘ座標およびｙ座標、ｑ．ｘおよびｑ．ｙはそれぞれ頂点ｑのｘ座標およびｙ座標、ｒ．ｘおよびｒ．ｙはそれぞれ頂点ｒのｘ座標およびｙ座標を示している。ここで、面積Ｓが「０」より小さい場合、すなわち、面積Ｓが負である場合、輪郭線Ｌ１１は島輪郭線であると判定する。一方、面積Ｓが「０」より大きい場合、すなわち、面積Ｓが正である場合、輪郭線Ｌ１１は穴輪郭線であると判定する。次に、三角形△ｐｑｒの符号付き面積Ｓと、輪郭線Ｌ１１の周回方向とを関連付ける。面積Ｓが負である場合、輪郭線Ｌ１１の周回方向を、例えば、一の方向（ここでは、時計回りの方向）とし、面積Ｓが正である場合、輪郭線Ｌ１１の周回方向を一の方向とは逆の方向（ここでは、反時計回りの方向）とする。
【００４１】
ところで、コンピュータによって、スライスモデルのどの領域が造形領域であり、どの領域が非造形領域であるかを判定（以下、領域判定という。）するのは、上述した情報（例えば、輪郭線の周回方向などの情報）のみでは困難である。そこで、本実施形態では、領域判定装置１００を用いて、スライスモデルの領域判定を行う。領域判定装置１００は、造形する３次元造形物の３次元モデルを所定の間隔にスライスしたスライスモデルにおいて、スライスモデルのどの領域が造形領域であり、どの領域が非造形領域であるかを判定する装置である。領域判定装置１００は、３次元造形装置１０Ａと別体であってもよく、３次元造形装置１０Ａに内蔵されていてもよい。例えば、領域判定装置１００は、コンピュータであり、ＣＰＵが実行するプログラムなどを格納したＲＯＭとＲＡＭなどを備えていてもよい。ここでは、コンピュータ内に保存されたプログラムを使用して、スライスモデルの領域を判定する。領域判定装置１００は、３次元造形システム１０のための専用のコンピュータであってもよく、汎用のコンピュータであってもよい。
【００４２】
図５は、スライスモデルにおいて、どの領域が造形領域であり、どの領域が非造形領域であるかを判定する手順を示したフローチャートである。図６（ａ）は、３次元造形物Ａの平面図である。図６（ｂ）は、３次元造形物Ａの側面図である。図７は、図６（ｂ）の位置ＰＴ１で３次元造形物ＡをスライスしたスライスモデルＳＭ２１を示した図である。なお、図６（ａ）、図６（ｂ）、図７において、斜線が引かれた領域は造形領域である。３次元造形物Ａは、大きさが異なる２つの柱形状のものを上下方向に並べた形状であり、平面視において中央部分が切り抜かれた形状である。図６（ｂ）において、位置ＰＴ１は、３次元造形物Ａを構成する２つの柱形状のものの境界となる位置である。ここでは、図６（ｂ）の３次元造形物Ａを位置ＰＴ１でスライスしたスライスモデルＳＭ２１を用いて、領域判定装置１００が、スライスモデルＳＭ２１において、どの領域が造形領域であり、どの領域が非造形領域であるかを判定する手順について説明する。
【００４３】
まず、ステップＳ１０１では、スライスモデルを作成する。ここでは、造形する３次元造形物Ａの３次元モデルを所定の間隔で水平方向にスライスすることによって、３次元造形物Ａの断面形状に沿った２次元のスライスモデルを複数作成する。なお、図７のスライスモデルＳＭ２１は、作成した複数のスライスモデルのうちの１つである。スライスモデルＳＭ２１は、島輪郭線Ｌ２１よりも内側に他の島輪郭線Ｌ２２および穴輪郭線Ｌ２３が設けられている。他の島輪郭線Ｌ２２よりも内側に、穴輪郭線Ｌ２３が設けられている。すなわち、島輪郭線Ｌ２１と穴輪郭線Ｌ２３との間に、島輪郭線Ｌ２２が設けられている。なお、本実施形態において、島輪郭線Ｌ２１は本発明の「第１島輪郭線」に対応し、島輪郭線Ｌ２２は本発明の「第２島輪郭線」に対応する。
【００４４】
次に、ステップＳ１０２では、スライスモデルＳＭ２１の各輪郭線において、周回方向を設定する。ここでは、島輪郭線Ｌ２１、Ｌ２２の周回方向をそれぞれ時計回りに設定する。一方、穴輪郭線Ｌ２３の周回方向を反時計回りに設定する。
【００４５】
次に、ステップＳ１０３では、スライスモデルＳＭ２１に対して、走査線ＳＬ２１を設定する。走査線ＳＬ２１は、スライスモデルＳＭ２１の領域を造形領域と非造形領域とに分けるために用いるものである。走査線ＳＬ２１は、スライスモデルＳＭ２１の輪郭線に対して交差し、かつ、所定の方向に走査するように設定される。ここでは、走査線ＳＬ２１の所定の方向は、図７の左から右へ向かう方向である。しかし、走査線ＳＬ２１の所定の方向は特に限定されない。例えば、走査線ＳＬ２１の所定の方向は、図７の右から左への方向であってもよいし、図７の上から下への方向であってもよい。
【００４６】
なお、ここでは、領域判定装置１００には、変数としての内部レベル変数ｎ（以下、内部レベルｎともいう。）が記憶されている。内部レベルｎとは、スライスモデルＳＭ２１の領域を造形領域と非造形領域とに分けるために用いられる変数である。領域判定装置１００は、内部レベルｎの値によって、スライスモデルＳＭ２１において、どの領域が造形領域であり、どの領域が非造形領域であるかを決定する。ここでは、内部レベルｎの初期値は「０」であるが、初期値は「０」に限定されない。
【００４７】
次に、ステップＳ１０４では、走査線ＳＬ２１の所定の方向に沿って、内部レベルｎの値を推移させる。ここでは、まず、走査線ＳＬ２１とスライスモデルＳＭ２１の輪郭線とが交差する交差点Ｐ２１〜Ｐ２６を特定する。走査線ＳＬ２１を所定の方向（ここでは、図７の左から右へ向かう方向）に走査し、走査線ＳＬ２１とスライスモデルＳＭ２１の輪郭線とが交差した場合に、内部レベルｎの値を変化させる。なお、内部レベルｎの値が変更された際、変更後の内部レベルｎの値と、走査線ＳＬ２１と輪郭線とが交差した交差点とを関連付けた状態で、変更後の内部レベルｎの値と上記交差点とは、領域判定装置１００に記憶されている。
【００４８】
ここでは、走査線ＳＬ２１と交差した輪郭線が島輪郭線であるか穴輪郭線であるかによって、内部レベルｎの値の変更の仕方が異なる。そこで、まず、走査線ＳＬ２１と交差した輪郭線が島輪郭線であるか穴輪郭線であるかを判定する。ここでは、走査線ＳＬ２１と交差した輪郭線の周回方向によって、輪郭線の種類を判定する。輪郭線の周回方向が時計回りの方向である場合、交差した輪郭線は島輪郭線であると判定する。一方、輪郭線の周回方向が反時計回りの方向である場合、交差した輪郭線は穴輪郭線であると判定する。
【００４９】
具体的には、例えば、図４に示すようなスライスモデルＳＭ１１の輪郭線Ｌ１１の場合、任意の頂点ｐと、頂点ｐと隣合う頂点ｑ、ｒからなる三角形の符号付き面積Ｓを求める。そして、求めた面積Ｓが正の場合、輪郭線Ｌ１１は穴輪郭線であると判定される。一方、求めた面積Ｓが負の場合、輪郭線Ｌ１１は島輪郭線であると判定される。図７のスライスモデルＳＭ２１では、交差点Ｐ２１、Ｐ２２、Ｐ２５、Ｐ２６において交差した輪郭線を島輪郭線と判定する。そして、交差点Ｐ２３、Ｐ２４において交差した輪郭線を穴輪郭線と判定する。
【００５０】
走査線ＳＬ２１と交差した輪郭線が島輪郭線の場合、次に、島輪郭線が走査線ＳＬ２１にどの方向から交差したのかを判定する。そして、その判定結果によって、内部レベルｎの値に「１」を加算するか、または、減算するかを決定する。例えば、島輪郭線が走査線ＳＬ２１に対して一の方向（ここでは、図７の下から上への方向）ＤＲ１から交差したと判定した場合、内部レベルｎの値に「１」を加算する。一方、島輪郭線が走査線ＳＬ２１に対して一の方向ＤＲ１とは逆の他の方向（ここでは、図７の上から下への方向）ＤＲ２から交差したと判定した場合、内部レベルｎの値に「１」を減算する。
【００５１】
なお、走査線ＳＬ２１と交差した輪郭線が島輪郭線の場合、内部レベルｎの値に「１」を加算するか、または、減算するかは、外積を用いて決定することができる。例えば、走査線ＳＬ２１をベクトルａとし、交差した島輪郭線をベクトルｂとする。そして、外積ａ×ｂを求める。このとき、外積ａ×ｂによって算出されたベクトルの方向によって内部レベルｎの値に「１」を加算するか、または、減算するかを決定する。例えば、図８（ａ）の場合、走査線ＳＬ２１を示すベクトルａがＸ軸方向のプラスへ向かうベクトルであり、走査線ＳＬ２１と交差した島輪郭線を示すベクトルｂがＹ軸方向のプラスへ向かうベクトルである。このとき、外積ａ×ｂによって算出されたベクトルは、Ｚ軸方向のプラスへ向かうベクトルとなる。一方、図８（ｂ）の場合、走査線ＳＬ２１を示すベクトルａがＸ軸方向のプラスへ向かうベクトルであり、走査線ＳＬ２１と交差した島輪郭線を示すベクトルｂがＹ軸方向のマイナスへ向かうベクトルである。このとき、外積ａ×ｂによって算出されたベクトルは、Ｚ軸方向のマイナスへ向かうベクトルとなる。ここでは、外積ａ×ｂによって算出されたベクトルの方向がＺ軸方向のプラスへ向かう方向の場合、内部レベルｎの値に「１」を加算する。一方、外積ａ×ｂによって算出されたベクトルの方向がＺ軸方向のマイナスへ向かう方向の場合、内部レベルｎの値に「１」を減算する。
【００５２】
走査線ＳＬ２１と交差した輪郭線が穴輪郭線の場合、次に、穴輪郭線が走査線ＳＬ２１に対してどの方向から交差したかを判定する。そして、判定結果によって、内部レベルｎの値をどのように変更するのかを決定する。ここでは、領域判定装置１００には、一時保持変数ｍが記憶されている。一時保持変数ｍは、内部レベルｎの値を一時的に保持するための変数である。ここでは、走査線ＳＬ２１が穴輪郭線と交差し、領域が造形領域から非造形領域に変更したとき、内部レベルｎの値を一時保持変数ｍに代入する。その後、内部レベルｎに「０」を代入する。一方、走査線ＳＬ２１が穴輪郭線と交差し、領域が非造形領域から造形領域に変更した場合、内部レベルｎの値に一時保持変数ｍの値を代入する。なお、このとき、内部レベルｎに代入される一時保持変数ｍの値は、同一の穴輪郭線が走査線ＳＬ２１と交差し、領域が造形領域から非造形領域に変更したときに代入された一時保持変数ｍの値である。本実施形態では、非造形領域のときに内部レベルｎの値を「０」にしている。
【００５３】
ここでは、穴輪郭線が走査線ＳＬ２１に対して他の方向（図７では、上から下への方向）ＤＲ２から交差したと判定した場合、内部レベルｎの値を一時保持変数ｍに代入する。その後、内部レベルｎに「０」を代入する。一方、穴輪郭線が走査線ＳＬ２１に対して一の方向（図７では、下から上への方向）ＤＲ１から交差したと判定した場合、内部レベルｎに一時保持変数ｍの値を代入する。
【００５４】
なお、走査線ＳＬ２１と交差した輪郭線が穴輪郭線の場合、内部レベルｎの値の変更を、外積を用いて決定することができる。図８（ａ）および図８（ｂ）において、ベクトルｂが穴輪郭線を示すベクトルとする。このとき、図８（ｂ）に示すように、外積ａ×ｂによって算出されたベクトルの方向がＺ軸方向のマイナスへ向かう方向の場合、内部レベルｎの値を一時保持変数ｍに代入した後に、内部レベルｎに「０」を代入する。一方、図８（ａ）に示すように、外積ａ×ｂによって算出されたベクトルの方向がＺ軸方向のプラスへ向かう方向の場合、内部レベルｎの値に一時保持変数ｍの値を代入する。
【００５５】
図７のスライスモデルＳＭ２１では、交差点Ｐ２１、Ｐ２２において、それぞれ島輪郭線Ｌ２１、Ｌ２２が走査線ＳＬ２１に対して一の方向ＤＲ１から交差している。そのため、交差点Ｐ２１、Ｐ２２において、それぞれ内部レベルｎの値に「１」が加算される。具体的には、交差点Ｐ２１では内部レベルｎ＝１、交差点Ｐ２２では内部レベルｎ＝２となる。そして、交差点Ｐ２３において、穴輪郭線Ｌ２３が走査線ＳＬ２１に対して他の方向ＤＲ２から交差している。そのため、交差点Ｐ２３において、内部レベルｎの値を一時保持変数ｍに代入し、内部レベルｎに「０」が代入される。具体的には、一時保持変数ｍには、「２」が代入される。次に、交差点Ｐ２４において、穴輪郭線Ｌ２３が走査線ＳＬ２１に対して一の方向ＤＲ１から交差している。ここで、交差点Ｐ２４において、内部レベルｎに一時保持変数ｍの値、すなわち、「２」が代入される。そして、交差点Ｐ２５、Ｐ２６において、それぞれ島輪郭線Ｌ２１、Ｌ２２が走査線ＳＬ２１に対して他の方向ＤＲ２から交差している。そのため、交差点Ｐ２５、Ｐ２６では、内部レベルｎの値に「１」が減算される。具体的には、交差点Ｐ２５では内部レベルｎ＝１、交差点Ｐ２６では内部レベルｎ＝０となる。
【００５６】
なお、上述した方法では、スライスモデルＳＭ２１に対して１つの走査線ＳＬ２１を設定している。しかし、設定する走査線ＳＬ２１は、複数であってもよい。例えば、図９に示すように、同一の方向に複数の走査線ＳＬ２１を設定してもよい。ここでは、複数の走査線ＳＬ２１の互いの間隔は、等間隔であるが、異なる間隔であってもよい。また、走査線ＳＬ２１の走査方向とは異なる方向に、他の走査線ＳＬ２２を設定してもよい。例えば、走査線ＳＬ２１の走査方向と直交する方向に他の走査線ＳＬ２２を設定してもよい。この走査線ＳＬ２２の数は特に限定されず、１つであってもよいし、複数であってもよい。このことによって、各走査線において、スライスモデルＳＭ２１の領域を造形領域と非造形領域とに分けることができるため、より詳細に領域を造形領域と非造形領域とに分けることができる。
【００５７】
ステップＳ１０４において、内部レベルｎの値を推移させた後、ステップＳ１０５では、内部レベルｎの値に対応するようにして、スライスモデルのどの領域が造形領域であり、どの領域が非造形領域であるかを判定する。ここでは、内部レベルｎの値が「０」以外の場合、内部レベルｎに対応した領域を造形領域と判定する。一方、内部レベルｎの値が「０」の場合、内部レベルｎに対応した領域を非造形領域と判定する。
【００５８】
図７のスライスモデルＳＭ２１では、島輪郭線Ｌ２１と島輪郭線Ｌ２２との間の領域Ｄ２１、島輪郭線Ｌ２２と穴輪郭線Ｌ２３との間の領域Ｄ２２において、内部レベルｎの値が「０」以外であるため、領域Ｄ２１、Ｄ２２は造形領域と判定される。一方、穴輪郭線Ｌ２３よりも内側の領域Ｄ２３において、内部レベルｎの値が「０」であるため、領域Ｄ２３は非造形領域と判定される。
【００５９】
なお、ステップＳ１０２〜ステップＳ１０５の処理は、他のスライスモデルに対しても行われる。このようにして、３次元造形物Ａの断面形状に沿った複数のスライスモデルにおける領域を造形領域と非造形領域とに分ける。
【００６０】
なお、領域判定装置１００によって各スライスモデルの領域を造形領域と非造形領域とに分けた後、各スライスモデルに沿って３次元造形物Ａを造形する。例えば、図７のスライスモデルＳＭ２１を使用して、スライスモデルＳＭ２１に対応した断面形状を造形する。具体的には、造形領域Ｄ２１、Ｄ２２に対応する領域に位置する光硬化性樹脂２３にプロジェクタ３１から発せられた光を照射させることで、造形領域Ｄ２１、Ｄ２２に対応する領域に位置する光硬化性樹脂２３を硬化させる。一方、非造形領域Ｄ２３に対応する領域に位置する光硬化性樹脂２３には、プロジェクタ３１から発せられた光を照射させない。このことによって、非造形領域Ｄ２３に対応する位置には、造形させないようにする。
【００６１】
以上のような方法を用いることによって、どのようなスライスモデルであっても、そのスライスモデルの領域を造形領域と非造形領域とに分けることができる。図１０は、スライスモデルＳＭ３１の一例を示した図であり、スライスモデルＳＭ３１に、走査線ＳＬ３１を設定した図である。なお、図１０において、造形領域は、斜線が引かれた領域である。例えば、スライスモデルＳＭ３１に対して、図１０のような走査線ＳＬ３１を設定する。そして、走査線ＳＬ３１を図１０の左から右への方向に走査することで、内部レベルｎの値を推移させる。ここでは、内部レベルｎの値は図１０に示したように推移している。ここでは、領域判定装置１００は、一時保持変数ｍと同様の変数ｍ’が設定されている。なお、一時保持変数ｍ、ｍ’は、別々の変数であってもよいし、配列構造を有する１つの変数であってもよい。ただし、一時保持変数ｍ、ｍ’が配列構造を有する１つの変数の場合、その変数は、スタック構造であることが好ましい。例えば、走査線ＳＬ３１と穴輪郭線Ｌ３３とが交差する交差点Ｐ３１において、内部レベルｎの値（ｎ＝２）が一時保持変数ｍに代入され、内部レベルｎには「０」が代入される。そして、走査線ＳＬ３１と島輪郭線Ｌ３４とが交差する交差点Ｐ３２において、内部レベルｎの値に「１」が加算され、ｎ＝１となる。次に、走査線ＳＬ３１と穴輪郭線Ｌ３５とが交差する交差点Ｐ３３において、内部レベルｎの値（ｎ＝１）が一時保持変数ｍ’に代入され、内部レベルｎには「０」が代入される。そして、走査線ＳＬ３１と穴輪郭線Ｌ３５が交差する交差点Ｐ３４において、内部レベルｎに一時保持変数ｍ’が代入され、内部レベルｎ＝１となる。島輪郭線Ｌ３４が交差する交差点Ｐ３５では、内部レベルｎの値に「１」が減算され、ｎ＝０となる。そして、穴輪郭線Ｌ３３が交差する交差点Ｐ３６において、内部レベルｎに一時保持変数ｍが代入され、ｎ＝２となる。なお、他の交差点についての詳しい説明は省略する。そして、内部レベルｎの値が「０」以外の場合、その内部レベルｎに対応した領域を造形領域と判定する。一方、内部レベルｎの値が「０」の場合、その内部レベルｎに対応した領域を非造形領域と判定する。このように、図１０のようなスライスモデルＳＭ３１であっても、領域を造形領域と非造形領域とに適切に分けることができる。
【００６２】
なお、本実施形態では、図３に示すように、領域判定装置１００は、記憶部５２と、周回方向設定部５４と、走査線設定部５６と、交差点特定部５８と、輪郭線判定部６０と、第１内部レベル設定部６２と、第２内部レベル設定部６４と、領域判定部６６とを備えている。
【００６３】
記憶部５２は、３次元造形システム１０が造形しようとする３次元造形物Ａの造形物モデルを記憶している。また、記憶部５２は、変数である内部レベルｎと、一時保持変数ｍとを記憶している。
【００６４】
図７に示すように、周回方向設定部５４は、記憶部５２によって記憶されたスライスモデルＳＭ２１の島輪郭線Ｌ２１、Ｌ２２と穴輪郭線Ｌ２３とにおいて、互い異なる周回方向を設定する。ここでは、周回方向設定部５４は、島輪郭線Ｌ２１、Ｌ２２の周回方向を時計回りに設定し、穴輪郭線Ｌ２３の周回方向を反時計回りに設定する。なお、周回方向設定部５４は、図５のステップＳ１０２の処理を行う。
【００６５】
走査線設定部５６は、記憶部５２によって記憶されたスライスモデルＳＭ２１において、スライスモデルＳＭ２１の輪郭線と交差するように所定の方向（例えば、図７の左から右への方向）に向かって走査させる走査線ＳＬ２１を設定する。なお、走査線設定部５６は、図５のステップＳ１０３の処理を行う。
【００６６】
交差点特定部５８は、図５のステップＳ１０４のうち、スライスモデルＳＭ２１の輪郭線と走査線ＳＬ２１とが交差する交差点Ｐ２１〜Ｐ２６を特定する処理を行う。輪郭線判定部６０は、図５のステップＳ１０４のうち、交差点特定部５８によって特定された交差点Ｐ２１〜Ｐ２６において、走査線ＳＬ２１と交差した輪郭線が島輪郭線か穴輪郭線かを判定する処理を行う。
【００６７】
第１内部レベル設定部６２は、図５のステップＳ１０４のうち、走査線ＳＬ２１と交差した輪郭線が島輪郭線である場合における内部レベルｎの値の変更についての処理を行う。第１内部レベル設定部６２は、輪郭線判定部６０によって、走査線ＳＬ２１と交差した輪郭線が島輪郭線と判定された場合、島輪郭線が走査線ＳＬ２１に対して一の方向ＤＲ１から交差した際に、内部レベルｎの値に所定の数（ここでは、「１」）を加算する。一方、第１内部レベル設定部６２は、島輪郭線が走査線ＳＬ２１に対して一の方向ＤＲ１とは逆の他の方向ＤＲ２から交差した際に、内部レベルｎの値に所定の数（ここでは、「１」）を減算する。ただし、内部レベルｎの値に加算または減算する上記所定の数は、「１」に限定されない。例えば、上記所定の数は、「２」であってもよいし、「１０」であってもよい。
【００６８】
第２内部レベル設定部６４は、図５のステップＳ１０４のうち、走査線ＳＬ２１と交差した輪郭線が穴輪郭線である場合における内部レベルｎの値の変更についての処理を行う。第２内部レベル設定部６４は、輪郭線判定部６０によって、走査線ＳＬ２１と交差した輪郭線が穴輪郭線と判定された場合、穴輪郭線が走査線ＳＬ２１に対して他の方向ＤＲ２から交差した際に、内部レベルｎの値を一時保持変数ｍに代入する。そして、第２内部レベル設定部６４は、内部レベルｎに「０」を代入する。一方、第２内部レベル設定部６４は、穴輪郭線が走査線ＳＬ２１に対して一の方向ＤＲ１から交差した際に、内部レベルｎに、一時保持変数ｍの値を代入する。
【００６９】
領域判定部６６は、第１内部レベル設定部６２および第２内部レベル設定部６４によって設定された内部レベルｎにおいて、内部レベルｎの値が「０」以外である場合、内部レベルｎに対応した領域が造形領域であると判定する。一方、領域判定部６６は、内部レベルｎの値が「０」である場合、内部レベルｎに対応した領域が非造形領域である判定する。なお、領域判定部６６は、図５のステップＳ１０５の処理を行う。
【００７０】
以上、本実施形態では、第２内部レベル設定部６４によって、図７に示すように、穴輪郭線が走査線ＳＬ２１に対して他の方向ＤＲ２から交差した際に、内部レベルｎの値を一時保持変数ｍに代入した後に、内部レベルｎの値に「０」を代入する。そして、穴輪郭線が走査線ＳＬ２１に対して一の方向ＤＲ１から交差した際に、内部レベルｎの値に一時保持変数ｍの値を代入する。よって、スライスモデルＳＭ２１において、造形しない非造形領域では内部レベルｎの値を確実に「０」にすることができる。そのため、例えば、スライスモデルＳＭ２１のように、島輪郭線Ｌ２１と穴輪郭線Ｌ２３との間に、他の島輪郭線Ｌ２２とがある場合であっても、スライスモデルＳＭ２１の領域を造形領域と非造形領域とに確実に分けることができる。
【００７１】
本実施形態では、周回方向設定部５４は、島輪郭線の周回方向を時計回りに設定し、穴輪郭線の周回方向を反時計回りに設定する。このことによって、走査線ＳＬ２１と交差した輪郭線の周回方向が時計回りか反時計回りかを判定することで、走査線ＳＬ２１と交差した輪郭線が島輪郭線か穴輪郭線かを容易に判定することができる。
【００７２】
本実施形態では、第１内部レベル設定部６２は、島輪郭線が走査線ＳＬ２１に対して一の方向ＤＲ１から交差した際（交差点Ｐ２１、Ｐ２２）に、内部レベルｎの値に「１」を加算する。一方、第１内部レベル設定部６２は、島輪郭線が走査線ＳＬ２１に対して他の方向ＤＲ２から交差した際に、内部レベルｎの値に１を減算する。島輪郭線が走査線ＳＬ２１に対して交差した際に、内部レベルｎの値をより簡単に推移させることができる。
【００７３】
本実施形態では、走査線設定部５６は、図９に示すように、走査線ＳＬ２１、ＳＬ２２を複数設定してもよい。このことにより、スライスモデルＳＭ２１の領域を造形領域と非造形領域とにより確実に分けることができる。
【符号の説明】
【００７４】
１０  ３次元造形システム
１０Ａ  ３次元造形装置
１３  ホルダ
１４  光学装置
５２  記憶部
５４  周回方向設定部
５６  走査線設定部
５８  交差点特定部
６０  輪郭線判定部
６２  第１内部レベル設定部
６４  第２内部レベル設定部
６６  領域判定部
１００  領域判定装置（スライスモデルの領域判定装置）
【図１】
0006469499.tif 000002
【図２】
0006469499.tif 000003
【図３】
0006469499.tif 000004
【図４】
0006469499.tif 000005
【図５】
0006469499.tif 000006
【図６】
0006469499.tif 000007
【図７】
0006469499.tif 000008
【図８】
0006469499.tif 000009
【図９】
0006469499.tif 000010
【図１０】
0006469499.tif 000011
【図１１】
0006469499.tif 000012
【図１２】
0006469499.tif 000013
【図１３】
0006469499.tif 000014