(58)【調査した分野】(Int.Cl.,DB名)
造形する3次元造形物の3次元モデルを所定の間隔にスライスし、前記3次元造形物の輪郭を示す輪郭線によって構成されたスライスモデルにおいて、前記スライスモデル内の領域を、造形する造形領域と造形しない非造形領域とに分けるスライスモデルの領域判定装置であって、
前記輪郭線には、前記3次元造形物の造形領域の外郭の形状を示す島輪郭線と、前記3次元造形物の穴の形状を示す穴輪郭線とが含まれ、
前記スライスモデルを記憶する記憶部と、
前記記憶部に記憶された前記スライスモデルの前記輪郭線から、所定の輪郭線を抽出し、抽出した前記所定の輪郭線を対象輪郭線に設定する対象輪郭線設定部と、
前記対象輪郭線設定部によって設定された前記対象輪郭線が前記島輪郭線であるか否かを判定する第1輪郭線判定部と、
前記第1輪郭線判定部によって前記対象輪郭線が前記島輪郭線であると判定された場合、前記対象輪郭線を最も隣接した位置で外側から囲む直近外囲輪郭線が設定されているか否かを判定する直近外囲輪郭線判定部と、
前記直近外囲輪郭線判定部によって、前記直近外囲輪郭線が設定されていると判定された場合、前記直近外囲輪郭線が前記島輪郭線であるか否かを判定する第2輪郭線判定部と、
前記第2輪郭線判定部によって、前記直近外囲輪郭線が前記島輪郭線であると判定された場合、前記対象輪郭線を前記スライスモデルから削除し、前記対象輪郭線を削除したスライスモデルを前記記憶部に記憶する削除部と、
前記記憶部に記憶された前記スライスモデルの領域を前記造形領域と前記非造形領域とに分ける領域判定部と、
を備えた、スライスモデルの領域判定装置。
前記記憶部に記憶された前記スライスモデルの前記島輪郭線と前記穴輪郭線とにおいて、前記島輪郭線の周回方向を一の方向に設定し、前記穴輪郭線の周回方向を前記一の方向とは逆の他の方向に設定する周回方向設定部を備え、
前記第1輪郭線判定部は、前記対象輪郭線設定部によって設定された前記対象輪郭線の周回方向が前記周回方向設定部によって設定された前記一の方向の場合、前記対象輪郭線は前記島輪郭線であると判定し、
前記第2輪郭線判定部は、前記直近外囲輪郭線の周回方向が前記周回方向設定部によって設定された前記一の方向の場合、前記直近外囲輪郭線は前記島輪郭線であると判定する、請求項1または2に記載されたスライスモデルの領域判定装置。
造形する3次元造形物の3次元モデルを所定の間隔にスライスし、前記3次元造形物の輪郭を示す輪郭線によって構成されたスライスモデルにおいて、前記スライスモデル内の領域を、造形する造形領域と造形しない非造形領域とに分けるスライスモデルの領域判定方法であって、
前記輪郭線には、前記3次元造形物の造形領域の外郭の形状を示す島輪郭線と、前記3次元造形物の穴の形状を示す穴輪郭線とが含まれ、
前記スライスモデルを記憶する記憶工程と、
前記記憶工程で記憶した前記スライスモデルの前記輪郭線から所定の輪郭線を抽出し、抽出した前記所定の輪郭線を対象輪郭線に設定する対象輪郭線設定工程と、
前記対象輪郭線設定工程で設定した前記対象輪郭線が前記島輪郭線であるか否かを判定する第1輪郭線判定工程と、
前記第1輪郭線判定工程において前記対象輪郭線が前記島輪郭線であると判定した場合、前記対象輪郭線を最も隣接した位置で外側から囲む直近外囲輪郭線が設定されているか否かを判定する直近外囲輪郭線判定工程と、
前記直近外囲輪郭線判定工程において前記直近外囲輪郭線が設定されていると判定した場合、前記直近外囲輪郭線が前記島輪郭線であるか否かを判定する第2輪郭線判定工程と、
前記第2輪郭線判定工程において前記直近外囲輪郭線が前記島輪郭線であると判定した場合、前記対象輪郭線を前記スライスモデルから削除し、前記対象輪郭線を削除したスライスモデルを記憶する削除工程と、
前記記憶工程または前記削除工程で記憶した前記スライスモデルの領域を前記造形領域と前記非造形領域とに分ける領域判定工程と、
を包含する、スライスモデルの領域判定方法。
前記記憶工程で記憶した前記スライスモデルの前記島輪郭線と前記穴輪郭線とにおいて、前記島輪郭線の周回方向を一の方向に設定し、前記穴輪郭線の周回方向を前記一の方向とは逆の他の方向に設定する周回方向設定工程を包含し、
前記第1輪郭線判定工程では、前記対象輪郭線設定工程で設定した前記対象輪郭線の周回方向が前記周回方向設定工程で設定した前記一の方向の場合、前記対象輪郭線は前記島輪郭線であると判定し、
前記第2輪郭線判定工程では、前記直近外囲輪郭線の周回方向が前記周回方向設定工程で設定した前記一の方向の場合、前記直近外囲輪郭線は前記島輪郭線であると判定する、請求項5または6に記載されたスライスモデルの領域判定方法。
【背景技術】
【0002】
従来から、3次元造形物を造形する3次元造形装置が知られている。この種の3次元造形装置では、例えば、コンピュータ支援設計装置(CAD装置)を用いて、3次元造形物を造形するための3次元モデルのデータを作成している(例えば、特許文献1参照)。そして、3次元モデルを所定の間隔でスライスすることで、3次元造形物の断面形状に対応したスライスモデルのデータを作成している。3次元造形装置は、スライスモデルのデータに沿った断面形状の樹脂材料を硬化させながら順次積層することによって、所望の3次元造形物を造形する。
【0003】
図8(a)は、3次元造形物A100の平面図である。
図8(b)は、3次元造形物A100の側面図である。この3次元造形物A100の形状は、直径が異なる2つの円柱形状のものを上下方向に並べた形状である。3次元造形物A100の形状は、平面視において、中央部分が切り抜かれた形状である。
図9は、
図8(b)の位置PT100で3次元造形物A100をスライスしたスライスモデルSM100を示した図である。なお、
図8(a)、
図8(b)、
図9において、斜線が引かれた領域は造形領域である。スライスモデルSM100は、3次元造形物A100の形状を示す輪郭線によって構成されている。この輪郭線には、例えば、3次元造形物A100の造形領域の外郭を示す輪郭線L101と、3次元造形物A100の穴の形状を示す輪郭線L102とが含まれる。以下の説明において、3次元造形物の造形領域の外郭を示す輪郭線を「島輪郭線」と称する。3次元造形物の穴の形状を示す輪郭線を「穴輪郭線」と称する。
【0004】
図9において、島輪郭線L101と穴輪郭線L102との間の領域D101は造形領域である。穴輪郭線L102よりも内側の領域D102は、穴を示しており、造形されない非造形領域である。
【0005】
例えば、スライスモデルSM100において、輪郭線L101、L102が島輪郭線か穴輪郭線かを識別するために、それぞれの輪郭線L101、L102において周回方向が設定されている。例えば、島輪郭線L101の周回方向は時計回りの方向に設定されている。また、穴輪郭線L102の周回方向は反時計回りの方向に設定されている。コンピュータプログラムは、設定された輪郭線の周回方向によって、輪郭線が島輪郭線か穴輪郭線かを判定している。
【0006】
ところで、コンピュータプログラムにおいて、スライスモデルSM100の領域を造形領域と非造形領域とに分けるために、輪郭線L101、L102に対して交差し、かつ、所定の方向(例えば、
図9では、左から右へ向かう方向)に走査する直線状の走査線SL100を設定する。また、コンピュータプログラムには、スライスモデルSM100の領域を造形領域と非造形領域とに分けるための変数n(ここでは、内部レベルnという。)が設定されている。例えば、内部レベルnの初期値は「0」である。走査線SL100を所定の方向に走査して輪郭線L101、L102と交差した際、輪郭線L101、L102がどの方向から走査線SL100と交差したかを判定する。ここでは、輪郭線が一の方向(
図9では、下から上へ向かう方向)から走査線SL100と交差した場合、内部レベルnの値に「1」を加算する。一方、輪郭線が一の方向とは異なる他の方向(
図9では、上から下へ向かう方向)から走査線SL100と交差した場合、内部レベルnの値に「1」を減算する。
図9のスライスモデルSM100では、交差点P101、P103において、内部レベルnの値に「1」が加算される。そして、交差点P102、P104において、内部レベルnの値に「1」が減算される。コンピュータプログラムは、内部レベルnの値が「0」以外の場合、内部レベルnに対応した領域(
図9では、領域D101)を造形領域と判定し、内部レベルnの値が「0」の場合、内部レベルnに対応した領域(
図9では、領域D102)を非造形領域と判定する。
【発明の概要】
【発明が解決しようとする課題】
【0008】
図10は、
図8(b)の位置PT110で3次元造形物A100をスライスしたスライスモデルSM110を示した図である。
図8(b)において、位置PT110は、3次元造形物A100を構成する2つの円柱形状のものの境目となる位置である。そのため、
図10のスライスモデルSM110には、下側の円柱形状のものの上端の外郭を示す島輪郭線L111と、上側の円柱形状のものの下端の外郭を示す島輪郭線L112とが設けられている。
図10において、斜線が引かれた領域は、造形領域である。
図10では、島輪郭線L111と穴輪郭線L113との間には、他の島輪郭線L112が設けられている。スライスモデルSM110において、島輪郭線L111と島輪郭線L112との間の領域D111、および、島輪郭線L112と穴輪郭線L113との間の領域D112は、造形領域である。一方、穴輪郭線L113よりも内側の領域D113は、非造形領域である。
【0009】
コンピュータプログラムは、スライスモデルSM110の輪郭線に対して交差するような走査線SL110を設定する。そして、走査線SL110を走査して内部レベルnの値が推移することで、スライスモデルSM110の領域を造形領域と非造形領域とに分けている。このとき、交差点P111、P112において、内部レベルnの値にそれぞれ「1」が加算されるため、交差点P112では、内部レベルnの値が「2」となる。交差点P113において、内部レベルnの値に「1」が減算されるため、内部レベルnの値が「1」となる。同様にして、交差点P114では内部レベルnの値が「2」、交差点P115では内部レベルnの値が「1」、交差点P116では内部レベルnの値が「0」となる。
【0010】
コンピュータプログラムは、内部レベルnの値が「0」の場合、内部レベルnに対応した領域が非造形領域であると判定する。上述したように、スライスモデルSM110において、本来、領域D113は非造形領域である。しかしながら、領域D113では内部レベルnの値が「1」であるため、コンピュータプログラムは、領域D113を造形領域と判定してしまうおそれがあった。
【0011】
本発明はかかる点に鑑みてなされたものであり、その目的は、造形する3次元造形物の3次元モデルを所定の間隔でスライスしたスライスモデルにおいて、スライスモデルの領域を造形領域と非造形領域とに適切に分けることが可能なスライスモデルの領域判定装置、3次元造形システム、および、スライスモデルの領域判定方法を提供することである。
【課題を解決するための手段】
【0012】
本発明に係るスライスモデルの領域判定装置は、造形する3次元造形物の3次元モデルを所定の間隔にスライスし、前記3次元造形物の輪郭を示す輪郭線によって構成されたスライスモデルにおいて、前記スライスモデル内の領域を、造形する造形領域と造形しない非造形領域とに分けるスライスモデルの領域判定装置である。前記輪郭線には、前記3次元造形物の造形領域の外郭の形状を示す島輪郭線と、前記3次元造形物の穴の形状を示す穴輪郭線とが含まれている。前記領域判定装置は、記憶部と、対象輪郭線設定部と、第1輪郭線判定部と、直近外囲輪郭線判定部と、第2輪郭線判定部と、削除部と、領域判定部とを備えている。前記記憶部は、前記スライスモデルを記憶する。前記対象輪郭線設定部は、前記記憶部に記憶された前記スライスモデルの前記輪郭線から、所定の輪郭線を抽出し、抽出した前記所定の輪郭線を対象輪郭線に設定する。前記第1輪郭線判定部は、前記対象輪郭線設定部によって設定された前記対象輪郭線が前記島輪郭線であるか否かを判定する。前記直近外囲輪郭線判定部は、前記第1輪郭線判定部によって前記対象輪郭線が前記島輪郭線であると判定された場合、前記対象輪郭線を最も隣接した位置で外側から囲む直近外囲輪郭線が設定されているか否かを判定する。前記第2輪郭線判定部は、前記直近外囲輪郭線判定部によって、前記直近外囲輪郭線が設定されていると判定された場合、前記直近外囲輪郭線が前記島輪郭線であるか否かを判定する。前記削除部は、前記第2輪郭線判定部によって、前記直近外囲輪郭線が前記島輪郭線であると判定された場合、前記対象輪郭線を前記スライスモデルから削除し、前記対象輪郭線を削除したスライスモデルを前記記憶部に記憶する。前記領域判定部は、前記記憶部に記憶された前記スライスモデルの領域を前記造形領域と前記非造形領域とに分ける。
【0013】
従来では、例えば、
図10のような島輪郭線L111と穴輪郭線L113との間に他の島輪郭線L112が設けられているスライスモデルSM110の場合、領域D113は非造形領域であるにも関わらず、領域D113を造形領域と判定するおそれがある。これは、島輪郭線L112が最も隣接した位置で島輪郭線L111によって外側から囲まれているためだと考えられる。このことは、
図8(b)の位置PT110のように、3次元造形物A100を構成する複数の形状のものの境目の位置で3次元造形物A100をスライスしたスライスモデルSM110の場合に起こり得ると考えられる。島輪郭線L112は、造形領域を判定する上で不必要な輪郭線である。そこで、前記領域判定装置では、直近外囲輪郭線判定部によって、島輪郭線である対象輪郭線を最も隣接した位置で外側から囲む直近外囲輪郭線が設定されているか否かを判定する。ここで、「直近外囲輪郭線」とは、対象輪郭線を外側から囲む輪郭線のうち、最も隣接した位置で対象輪郭線を囲む輪郭線、すなわち、直近の位置で対象輪郭線を外側から囲む輪郭線である。第2輪郭線判定部は、直近外囲輪郭線判定部によって直近外囲輪郭線が設定されていると判定された場合、直近外囲輪郭線が島輪郭線であるか否かを判定する。そして、直近外囲輪郭線が島輪郭線である場合、削除部は、対象輪郭線をスライスモデルから削除している。よって、
図10の島輪郭線L112のような造形領域を判定する上で不必要な島輪郭線をスライスモデルから削除することができる。したがって、例えば、
図10のスライスモデルSM110のように、島輪郭線L112が最も隣接した位置で島輪郭線L111によって外側から囲まれている場合であっても、スライスモデルSM110の領域を造形領域と非造形領域とに確実に分けることができる。
【0014】
本発明の好ましい一態様によれば、前記直近外囲輪郭線判定部は、走査線設定部と、カウント部と、第1外囲判定部と、距離算出部と、第2外囲判定部とを備えている。前記走査線設定部は、前記対象輪郭線上の所定の点から所定の方向に向かうように走査線を設定する。前記カウント部は、前記走査線設定部によって設定された前記走査線と、前記スライスモデルの前記輪郭線のうち前記対象輪郭線以外の一の輪郭線とが交差する交差点をカウントする。前記第1外囲判定部は、前記カウント部によってカウントされた前記交差点の数が奇数の場合、前記一の輪郭線は前記対象輪郭線を外側から囲むように配置されていると判定し、前記カウント部によってカウントされた前記交差点の数が偶数の場合、前記一の輪郭線は前記対象輪郭線を外側から囲むように配置されていないと判定する。前記距離算出部は、前記第1外囲判定部によって前記一の輪郭線が前記対象輪郭線を外側から囲むように配置されていると判定された場合、前記対象輪郭線と前記一の輪郭線との間の距離を算出する。前記第2外囲判定部は、前記第1外囲判定部によって前記一の輪郭線が前記対象輪郭線を外側から囲むように配置されていると判定された前記一の輪郭線が複数ある場合、前記距離算出部によって算出された前記距離のうち最も小さい値の距離に対応した前記一の輪郭線が前記直近外囲輪郭線であると判定する。前記第2輪郭線判定部は、前記第2外囲判定部によって判定された前記直近外囲輪郭線が前記島輪郭線であるか否かを判定する。
【0015】
上記態様では、スライスモデル上に設定された走査線と、対象輪郭線以外の一の輪郭線とが交差する交差点の数が奇数の場合、その一の輪郭線は、対象輪郭線を外側から囲む輪郭線である。対象輪郭線を外側から囲む一の輪郭線が複数ある場合、複数の一の輪郭線のうち対象輪郭線に対して最も近くに位置する一の輪郭線を、直近外囲輪郭線と判定することができる。さらに、直近外囲輪郭線が島輪郭線である場合、対象輪郭線をスライスモデルから削除することができる。
【0016】
本発明の好ましい他の一態様によれば、前記記憶部に記憶された前記スライスモデルの前記島輪郭線と前記穴輪郭線とにおいて、前記島輪郭線の周回方向を一の方向に設定し、前記穴輪郭線の周回方向を前記一の方向とは逆の他の方向に設定する周回方向設定部を備えている。前記第1輪郭線判定部は、前記対象輪郭線設定部によって設定された前記対象輪郭線の周回方向が前記周回方向設定部によって設定された前記一の方向の場合、前記対象輪郭線は前記島輪郭線であると判定する。前記第2輪郭線判定部は、前記直近外囲輪郭線の周回方向が前記周回方向設定部によって設定された前記一の方向の場合、前記直近外囲輪郭線は前記島輪郭線であると判定する。
【0017】
上記態様によれば、第1輪郭線判定部は、対象輪郭線の周回方向が一の方向であるか否かを判定することで、対象輪郭線が島輪郭線であるか否かを容易に判定することができる。また、第2輪郭線判定部は、直接外囲輪郭線の周回方向が一の方向であるか否かを判定することで、直接外囲輪郭線が島輪郭線であるか否かを容易に判定することができる。
【0018】
本発明に係る3次元造形システムは、3次元造形物を造形する3次元造形装置と、上述した何れかに記載されたスライスモデルの領域判定装置と、を備えている。
【0019】
上記態様によれば、上述した何れかに記載されたスライスモデルの領域判定装置を備えた3次元造形システムを提供することができる。
【0020】
本発明に係るスライスモデルの領域判定方法は、造形する3次元造形物の3次元モデルを所定の間隔にスライスし、前記3次元造形物の輪郭を示す輪郭線によって構成されたスライスモデルにおいて、前記スライスモデル内の領域を、造形する造形領域と造形しない非造形領域とに分けるスライスモデルの領域判定方法である。前記輪郭線には、前記3次元造形物の造形領域の外郭の形状を示す島輪郭線と、前記3次元造形物の穴の形状を示す穴輪郭線とが含まれている。前記領域判定方法は、記憶工程と、対象輪郭線設定工程と、第1輪郭線判定工程と、直近外囲輪郭線判定工程と、第2輪郭線判定工程と、削除工程と、領域判定工程とを包含する。前記記憶工程では、前記スライスモデルを記憶する。前記対象輪郭線設定工程では、前記記憶工程で記憶した前記スライスモデルの前記輪郭線から所定の輪郭線を抽出し、抽出した前記所定の輪郭線を対象輪郭線に設定する。前記第1輪郭線判定工程では、前記対象輪郭線設定工程で設定した前記対象輪郭線が前記島輪郭線であるか否かを判定する。前記直近外囲輪郭線判定工程では、前記第1輪郭線判定工程において前記対象輪郭線が前記島輪郭線であると判定した場合、前記対象輪郭線を最も隣接した位置で外側から囲む直近外囲輪郭線が設定されているか否かを判定する。前記第2輪郭線判定工程では、前記直近外囲輪郭線判定工程において前記直近外囲輪郭線が設定されていると判定した場合、前記直近外囲輪郭線が前記島輪郭線であるか否かを判定する。前記削除工程では、前記第2輪郭線判定工程において前記直近外囲輪郭線が前記島輪郭線であると判定した場合、前記対象輪郭線を前記スライスモデルから削除し、前記対象輪郭線を削除したスライスモデルを記憶する。前記領域判定工程では、前記記憶工程または前記削除工程で記憶した前記スライスモデルの領域を前記造形領域と前記非造形領域とに分ける。
【0021】
本発明の好ましい他の一態様によれば、前記直近外囲輪郭線判定工程は、走査線設定工程と、カウント工程と、第1外囲判定工程と、距離算出工程と、第2外囲判定工程とを包含する。前記走査線設定工程では、前記対象輪郭線上の所定の点から所定の方向に向かうように走査線を設定する。前記カウント工程では、前記走査線設定工程で設定した前記走査線と、前記スライスモデルの前記輪郭線のうち前記対象輪郭線以外の一の輪郭線とが交差する交差点をカウントする。前記第1外囲判定工程では、前記カウント工程でカウントした前記交差点の数が奇数の場合、前記一の輪郭線は前記対象輪郭線を外側から囲むように配置されていると判定し、前記カウント工程でカウントした前記交差点の数が偶数の場合、前記一の輪郭線は前記対象輪郭線を外側から囲むように配置されていないと判定する。前記距離算出工程では、前記第1外囲判定工程で前記一の輪郭線が前記対象輪郭線を外側から囲むように配置されていると判定した場合、前記対象輪郭線と前記一の輪郭線との間の距離を算出する。前記第2外囲判定工程では、前記第1外囲判定工程で前記一の輪郭線が前記対象輪郭線を外側から囲むように配置されていると判定した前記一の輪郭線が複数ある場合、前記距離算出工程で算出した前記距離のうち最も小さい値の距離に対応した前記一の輪郭線が前記直近外囲輪郭線であると判定する。前記第2輪郭線判定工程において、前記第2外囲判定工程で判定した前記直近外囲輪郭線が前記島輪郭線であるか否かを判定する。
【0022】
本発明の好ましい他の一態様によれば、前記記憶工程で記憶した前記スライスモデルの前記島輪郭線と前記穴輪郭線とにおいて、前記島輪郭線の周回方向を一の方向に設定し、前記穴輪郭線の周回方向を前記一の方向とは逆の他の方向に設定する周回方向設定工程を包含する。前記第1輪郭線判定工程では、前記対象輪郭線設定工程で設定した前記対象輪郭線の周回方向が前記周回方向設定工程で設定した前記一の方向の場合、前記対象輪郭線は前記島輪郭線であると判定する。前記第2輪郭線判定工程では、前記直近外囲輪郭線の周回方向が前記周回方向設定工程で設定した前記一の方向の場合、前記直近外囲輪郭線は前記島輪郭線であると判定する。
【発明の効果】
【0023】
本発明によれば、造形する3次元造形物の3次元モデルを所定の間隔でスライスしたスライスモデルにおいて、スライスモデルの領域を造形領域と非造形領域とに適切に分けることができる。
【発明を実施するための形態】
【0025】
以下、図面を参照しながら、本発明の実施形態に係るスライスモデルの領域判定装置(以下、領域判定装置という。)を備えた3次元造形システムについて説明する。なお、ここで説明される実施形態は、当然ながら特に本発明を限定することを意図したものではない。また、同じ作用を奏する部材・部位には同じ符号を付し、重複する説明は適宜省略または簡略化する。
【0026】
図1は、本実施形態に係る3次元造形システム10の断面図である。
図2は、3次元造形システム10の平面図である。
図3は、3次元造形システム10のブロック図である。なお、図面中の符号F、Rr、L、Rは、それぞれ前、後、左、右を示している。ただし、これらは説明の便宜上の方向に過ぎず、3次元造形システム10の設置態様を何ら限定するものではない。
【0027】
3次元造形システム10は、3次元造形物を造形するシステムである。
図1に示すように、3次元造形システム10は、3次元造形装置10Aと、領域判定装置100(
図3参照)とを備えている。3次元造形装置10Aは、3次元造形物の断面形状を用意し、液体の光硬化性樹脂を硬化させて断面形状に対応した形状の樹脂層を順次積層することによって、3次元造形物を造形する装置である。ここで、「断面形状」とは、3次元造形物を所定の厚み(例えば、0.1mm)ごとにスライスしたときの断面の形状である。「光硬化性樹脂」とは、所定の波長を含む光が照射されると、硬化する樹脂である。3次元造形装置10Aは、台11と、槽12と、ホルダ13と、光学装置14と、制御装置16とを備えている。
【0028】
台11は、ケース25に支持されている。台11には、光硬化性樹脂23に照射する光を通過させる開口21が形成されている。槽12は、液体の光硬化性樹脂23を収容する。槽12は、台11上に取り付け可能に載置されている。
図2に示すように、槽12は、台11に載置された状態において、台11の開口21を覆う。槽12は、光を透過させることのできる材料、例えば、透明な材料によって形成されているとよい。
【0029】
図1に示すように、ホルダ13は、槽12の上方、かつ、台11の開口21の上方に配置されている。ホルダ13は、下降したときに槽12内の光硬化性樹脂23に浸漬し、上昇するときに、光が照射されて硬化した光硬化性樹脂23を吊り上げるように昇降自在に構成されている。ここでは、台11には、上下方向に延びた支柱41が設けられている。支柱41の前方には、スライダ42が取り付けられている。スライダ42は、支柱41に沿って昇降自在であり、モータ43によって上方または下方に移動する。ここでは、ホルダ13は、スライダ42に取り付けられており、支柱41の前方に配置されている。ホルダ13は、モータ43によって上方または下方に移動する。
【0030】
光学装置14は、台11の下方に配置されている。光学装置14は、槽12内に収容された液体の光硬化性樹脂23に所定の波長からなる光を照射する装置である。光学装置14は、台11の下方に設けられたケース25に収容されている。光学装置14は、プロジェクタ31と、ミラー32とを備えている。プロジェクタ31は、光を発する光源であり、台11の前部の下方に配置されている。プロジェクタ31は、ホルダ13よりも前方に配置されている。プロジェクタ31の後部には、レンズ34が配置されている。プロジェクタ31は、レンズ34を通じて前方から後方に向かって光を発する。ミラー32は、プロジェクタ31から発せられた光を槽12に向かって反射させる部材である。ミラー32は、台11に形成された開口21の下方、かつ、プロジェクタ31の後方に配置されている。プロジェクタ31から発せられた光は、ミラー32によって反射され、台11の開口21を通じて槽12内の光硬化性樹脂23に照射される。
【0031】
制御装置16は、ホルダ13が取り付けられたスライダ42を昇降自在に制御するモータ43、および、光学装置14のプロジェクタ31に接続されている。制御装置16は、モータ43を駆動することによって、スライダ42およびホルダ13を上方または下方に移動させる。制御装置16は、プロジェクタ31から発せられる光のエネルギー、光度、光量、光の波長帯域、光の形状、光を照射させる位置および光を発するタイミングなどを制御する。なお、制御装置16の構成は特に限定されない。例えば、制御装置16は、コンピュータであり、中央演算処理装置(以下、CPUという。)と、CPUが実行するプログラムなどを格納したROMと、RAMなどを備えていてもよい。
【0032】
以上、本実施形態に係る3次元造形装置10Aの構成について説明した。本実施形態に係る3次元造形装置10Aでは、造形する3次元造形物に対応した3次元モデルのデータ(以下、造形物モデルという。)を用意する。そして、造形物モデルを所定の間隔で水平方向にスライスすることによって、3次元造形物の断面形状に対応した2次元のスライスモデルのデータを複数作成する。ただし、造形物モデルをスライスする方向は、水平方向に限定されず、例えば、垂直方向であってもよい。ここでは、スライスモデルのデータとは、STLデータのことである。以下、2次元のスライスモデルのデータを単に「スライスモデル」とも称する。
【0033】
ところで、
図9に示すように、例えば、造形する3次元造形物A100のスライスモデルSM100は、3次元造形物A100(
図8(a)および(b)参照)の形状を示す輪郭線によって構成されている。この輪郭線には、例えば、3次元造形物A100の外郭を示す島輪郭線L101と、3次元造形物A100の穴の形状を示す穴輪郭線L102とが含まれている。島輪郭線L101よりも内側であって、穴輪郭線L102よりも外側の領域D101は、光硬化性樹脂23が硬化する領域、すなわち、造形領域である。一方、穴輪郭線L102よりも内側の領域(ただし、穴輪郭線L102よりも内側に他の島輪郭線がある場合、穴輪郭線L102よりも内側であって、他の島輪郭線よりも外側の領域)D102は穴であり、その領域は光硬化性樹脂23が硬化しない領域、すなわち、造形されない非造形領域である。
【0034】
ここでは、スライスモデルSM100において、島輪郭線L101と穴輪郭線L102とを識別するために、それぞれの輪郭線において周回方向が設定されている。例えば、島輪郭線L101の周回方向は時計回りであり、穴輪郭線L102の周回方向は反時計回りである。ただし、島輪郭線L101の周回方向と穴輪郭線L102の周回方向とは異なっていればよい。例えば、島輪郭線L101の周回方向が反時計回りであり、穴輪郭線L102の周回方向が時計回りであってもよい。
【0035】
なお、スライスモデルの輪郭線の周回方向が分からないため、その輪郭線が島輪郭線か穴輪郭線かが分からない場合には、以下の手順で輪郭線を判定することができる。
図4は、スライスモデルSM11の輪郭線L11が島輪郭線であるか穴輪郭線であるかを判定するための手順を示した図である。以下では、
図4のスライスモデルSM11を用いて、スライスモデルSM11の輪郭線L11が島輪郭線であるか穴輪郭線であるかを判定(以下、輪郭線判定という。)する手順について説明する。ここでは、輪郭線判定をするために、「三角形の符号付き面積」を用いる。「三角形の符号付き面積」とは、三角形の面積にプラスまたはマイナスの符号を付加した面積のことである。例えば、
図4に示すような多角形を構成する輪郭線L11の場合、まず、成す角度が鋭角である任意の凸頂点を抽出する。ここでは、例えば、頂点pを抽出する。次に、頂点pと隣合う頂点qおよび頂点rを抽出する。ここで、三角形△pqrの符号付き面積を求める。三角形△pqrの符号付き面積をSとすると、面積Sは、以下の式(1)で表される。
S=(p.x−r.x)・(q.y−r.y)−(q.x−r.x)・(p.y−r.y) ・・・(1)
上記式(1)において、p.xおよびp.yはそれぞれ頂点pのx座標およびy座標、q.xおよびq.yはそれぞれ頂点qのx座標およびy座標、r.xおよびr.yはそれぞれ頂点rのx座標およびy座標を示している。ここで、面積Sが「0」より小さい場合、すなわち、面積Sが負である場合、輪郭線L11は島輪郭線であると判定する。一方、面積Sが「0」より大きい場合、すなわち、面積Sが正である場合、輪郭線L11は穴輪郭線であると判定する。次に、三角形△pqrの符号付き面積Sと、輪郭線L11の周回方向とを関連付ける。面積Sが負である場合、輪郭線L11の周回方向を、例えば、一の方向(ここでは、時計回りの方向)とし、面積Sが正である場合、輪郭線L11の周回方向を一の方向とは逆の方向(ここでは、反時計回りの方向)とする。
【0036】
上述したように、
図10のスライスモデルSM110では、島輪郭線L111と穴輪郭線L113との間には、他の島輪郭線L112が設けられている。ここでは、島輪郭線L111と島輪郭線L112との間の領域D111、および、島輪郭線L112と穴輪郭線L113との間の領域D112は、造形領域である。一方、穴輪郭線L113よりも内側の領域D113は、非造形領域である。
【0037】
例えば、
図10のように走査線SL110を設定し、走査線SL110を走査して内部レベルnの値を推移させる。そして、内部レベルnの値に基づいて、スライスモデルSM110の領域を造形領域と非造形領域に分ける。このとき、
図10に示すように、交差点P112では、内部レベルnの値が「2」となる。そして、交差点P113では内部レベルnの値が「1」となり、交差点P114では内部レベルnの値が「2」となる。本来、領域D113は非造形領域である。しかし、領域D113では内部レベルnの値が「1」であるため、コンピュータプログラムは、領域D113を造形領域と判定してしまうおそれがある。
【0038】
このようにコンピュータプログラムが造形領域を誤判定する理由として、島輪郭線L111と穴輪郭線L113との間に、他の島輪郭線L112が設けられていることが考えられる。この島輪郭線L112は、
図8(b)の位置PT110のように、3次元造形物A100を構成する複数の形状のものの境目となる位置でスライスしたスライスモデルSM110を作成した際に設けられる輪郭線である。島輪郭線L112が設けられていることによって、コンピュータプログラムはスライスモデルSM110の造形領域を誤判定する。島輪郭線L112は、スライスモデルSM110の造形領域を判定する際、不必要となる輪郭線である。ここでは、島輪郭線L112を最も隣接した位置で外側から囲む直近外囲輪郭線が島輪郭線である場合、島輪郭線L112は不必要な輪郭線であるといえる。
図10のスライスモデルSM110の場合、島輪郭線L112に対する直近外囲輪郭線が島輪郭線L111であるため、島輪郭線L112は、不必要な輪郭線である。この不必要な島輪郭線L112をスライスモデルSM110から削除することで、スライスモデルSM110の領域を、造形領域と非造形領域とに正確に分けることができる。
【0039】
そこで、本実施形態では、
図3に示すように、領域判定装置100を用いて、不必要な輪郭線をスライスモデルから削除した後、スライスモデルのどの領域が造形領域であり、どの領域が非造形領域であるかを判定(以下、領域判定という。)する。領域判定装置100は、造形する3次元造形物の3次元モデルを所定の間隔にスライスしたスライスモデルにおいて、スライスモデルのどの領域が造形領域であり、どの領域が非造形領域であるかを判定する装置である。領域判定装置100は、3次元造形装置10Aと別体であってもよく、3次元造形装置10Aに内蔵されていてもよい。例えば、領域判定装置100は、コンピュータであり、CPUが実行するプログラムなどを格納したROMとRAMなどを備えていてもよい。ここでは、コンピュータ内に保存されたプログラムを使用して、スライスモデルの領域を判定する。領域判定装置100は、3次元造形システム10のための専用のコンピュータであってもよく、汎用のコンピュータであってもよい。
【0040】
図5は、スライスモデルにおいて、不必要な輪郭線を削除した後に、領域判定を行う手順を示したフローチャートである。
図6は、スライスモデルSM21の一例を示した図である。なお、
図6において、スライスモデルSM21の造形領域は、斜線で示された領域である。ここでは、
図6のスライスモデルSM21を用いて、領域判定装置100が、スライスモデルSM21の不必要な輪郭線を削除した後で、スライスモデルSM21のどの領域が造形領域であり、どの領域が非造形領域であるかを判定する手順について説明する。
【0041】
図6のスライスモデルSM21は、輪郭線L(1)〜L(7)によって構成されている。輪郭線L(1)〜L(7)のうち、輪郭線L(1)〜L(4)、L(6)およびL(7)は、島輪郭線である。輪郭線L(5)は穴輪郭線である。ここでは、島輪郭線L(1)に対する直近外囲輪郭線が島輪郭線L(2)である。また、島輪郭線L(6)に対する直近外囲輪郭線が島輪郭線L(7)である。よって、
図6のスライスモデルSM21では、不必要な島輪郭線、すなわち、削除対象となる島輪郭線は、島輪郭線L(1)、L(6)である。
【0042】
まず、ステップS101では、スライスモデルを作成する。ここでは、造形する3次元造形物の3次元モデルを所定の間隔で水平方向にスライスすることによって、3次元造形物の断面形状に沿った2次元のスライスモデルを複数作成する。なお、
図6のスライスモデルSM21は、作成した複数のスライスモデルのうちの1つである。
【0043】
次に、ステップS102では、スライスモデルSM21の各輪郭線において、周回方向を設定する。ここでは、島輪郭線L(1)〜L(4)、L(6)およびL(7)の周回方向をそれぞれ時計回りに設定する。一方、穴輪郭線L(5)の周回方向を反時計回りに設定する。
【0044】
次に、各輪郭線L(1)〜L(7)を対象にして、以下のステップS103〜S108の処理を行う。ここでは、輪郭線L(1)を対象にして、以下のステップS103〜S108の手順を説明する。以下において、対象となる輪郭線のことを「対象輪郭線」と称する。
【0045】
まず、ステップS103では、対象輪郭線L(1)が島輪郭線であるか穴輪郭線であるかを判定する。ここでは、まず、領域判定装置100は、スライスモデルSM21の輪郭線L(1)〜L(7)のうち対象輪郭線となる輪郭線L(1)を抽出し、抽出した輪郭線L(1)を対象輪郭線に設定する。領域判定装置100は、対象輪郭線L(1)の周回方向によって、対象輪郭線L(1)が島輪郭線か穴輪郭線かを判定する。対象輪郭線L(1)が島輪郭線であると判定された場合、次にステップS104の処理を行う。ここでは、対象輪郭線L(1)は島輪郭線であるため、次にステップS104の処理を行う。一方、仮に、対象輪郭線L(1)が穴輪郭線であると判定された場合、以下のステップS104〜S108の処理は行わず、次の輪郭線L(2)を対象輪郭線に設定してステップS103〜S108の処理を行う。例えば、対象輪郭線が輪郭線L(5)である場合、対象輪郭線L(5)は穴輪郭線であるため、以下のステップS104〜S108の処理は行わず、次の輪郭線L(6)を対象輪郭線に設定してステップS103〜S108の処理を行う。
【0046】
次に、ステップS104では、対象輪郭線L(1)を外側から囲む輪郭線を求める。ここで、「対象輪郭線を外側から囲む輪郭線」とは、閉じた空間を形成する輪郭線であり、その閉じた空間に対象輪郭線が収まっている輪郭線のことをいう。ここではまず、対象輪郭線L(1)に対して、走査線SL21を設定する。この走査線SL21の一端は、対象輪郭線L(1)上の所定の点である。走査線SL21の一端の位置、すなわち、所定の点の位置は特に限定されない。例えば、走査線SL21の一端の位置は、対象輪郭線L(1)の最左点P21の位置である。走査線SL21は、点P21から所定の方向に走査する線である。例えば、所定の方向は
図6において点P21から左方に向かう方向である。しかし、この所定の方向は特に限定されず、例えば、点P21から右方に向かう方向または点P21から上方に向かう方向であってもよい。
【0047】
走査線SL21を設定した後、走査線SL21が対象輪郭線L(1)以外の輪郭線L(2)〜L(7)とそれぞれいくつ交差したかを、輪郭線L(2)〜L(7)ごとにカウントする。例えば、
図6では、走査線SL21と輪郭線L(2)とは、点P22で交差しており、交差した点(以下、交差点ともいう。)の数は、「1」である。同様に、走査線SL21と輪郭線L(3)、走査線SL21と輪郭線L(4)、走査線SL21と輪郭線L(5)、走査線SL21と輪郭線L(6)、走査線SL21と輪郭線L(7)が交差した点の数は、ぞれぞれ、「2」、「0」、「1」、「1」、「3」である。本実施形態では、交差点の数が奇数である輪郭線が対象輪郭線L(1)を外側から囲む輪郭線であると判定される。
図6では、走査線SL21と輪郭線L(2)、L(5)〜L(7)との交差点の数がそれぞれ奇数である。よって、ここでは、輪郭線L(2)、L(5)〜L(7)が対象輪郭線L(1)を外側から囲む輪郭線であると判定される。なお、対象輪郭線L(1)を外側から囲む輪郭線に関する情報は、領域判定装置100に記憶される。一方、交差点の数が偶数である輪郭線は対象輪郭線L(1)を外側から囲まない輪郭線であると判定される。
図6では、走査線SL21と輪郭線L(3)、L(4)との交差点の数がそれぞれ偶数である。ここでは、輪郭線L(3)、L(4)は、対象輪郭線L(1)よりも外側に配置されているが、対象輪郭線L(1)を外側から囲んではいない。よって、輪郭線L(3)、L(4)は対象輪郭線L(1)を外側から囲まない輪郭線であると判定される。
【0048】
次に、ステップS105では、対象輪郭線L(1)を外側から囲む輪郭線L(2)、L(5)〜L(7)の中で、対象輪郭線L(1)に対する直近外囲輪郭線Lminを求める。ここでは、まず、対象輪郭線L(1)と輪郭線L(2)、L(5)〜L(7)との間の最小距離をそれぞれ求める。詳しくは、対象輪郭線L(1)上における走査線SL21の一端P21と輪郭線L(2)、L(5)〜L(7)との間の最小距離をそれぞれ求める。そして、一端P21と輪郭線L(2)、L(5)〜L(7)との間のそれぞれの最小距離のうち、最も値が小さい最小距離の輪郭線を直近外囲輪郭線Lminとする。
図6のスライスモデルSM21では、対象輪郭線L(1)と、対象輪郭線L(1)を外側から囲む輪郭線L(2)、L(5)〜L(7)との間のそれぞれの最小距離のうち、最も値が小さい最小距離の輪郭線は、輪郭線L(2)である。よって、この場合、輪郭線L(2)が対象輪郭線L(1)に対する直近外囲輪郭線Lminとなる。
【0049】
次に、ステップS106では、直近外囲輪郭線Lminが島輪郭線であるか否かを判定する。ここでは、直近外囲輪郭線Lminの周回方向によって、直近外囲輪郭線Lminが島輪郭線か穴輪郭線かを判定する。直近外囲輪郭線Lminの周回方向が時計回りであり、直近外囲輪郭線Lminが島輪郭線であると判定された場合、次にステップS107に進む。ここでは、直近外囲輪郭線Lminは、輪郭線L(2)である。輪郭線L(2)は島輪郭線である。そのため、この場合、次にステップS107に進む。一方、直近外囲輪郭線Lminの周回方向が反時計回りであり、直近外囲輪郭線Lminが穴輪郭線であると判定された場合、次にステップS108に進む。例えば、対象輪郭線が輪郭線L(3)の場合、直近外囲輪郭線Lminは、輪郭線L(5)となる。輪郭線L(5)は穴輪郭線である。そのため、対象輪郭線が輪郭線L(3)である場合、次にステップS108に進む。
【0050】
直近外囲輪郭線Lminが島輪郭線であると判定された場合、次にステップS107では、対象輪郭線L(1)をスライスモデルSM21から削除する。ここでは、直近外囲輪郭線Lmin(輪郭線L(2))は島輪郭線であるため、直近外囲輪郭線Lminが対象輪郭線L(1)を最も隣接した位置で外側から囲む輪郭線であるといえる。そのため、対象輪郭線L(1)が設けられていることによって、領域判定装置100が造形領域を誤判定するおそれがある。よって、
図6のスライスモデルSM21において、対象輪郭線L(1)は不必要な輪郭線である。そのため、ステップS107では、領域判定装置100は、対象輪郭線L(1)をスライスモデルSM21から削除する。
【0051】
直近外囲輪郭線Lminが穴輪郭線である、すなわち、島輪郭線ではないと判定された場合、次にステップS108では、対象輪郭線L(1)をスライスモデルSM21から削除せずに、ステップS108の処理を終了する。
【0052】
ステップS107またはステップS108の処理が終了した後、対象輪郭線を変更し、輪郭線の数の分、ステップS103〜S108の処理を繰り返し行う。
【0053】
なお、
図6のスライスモデルSM21では、輪郭線L(1)に対する直近外囲輪郭線が島輪郭線L(2)であるため、輪郭線L(1)はスライスモデルSM21から削除される。同様に、輪郭線L(6)に対する直近外囲輪郭線が島輪郭線L(7)であるため、輪郭線L(6)もスライスモデルSM21から削除される。不必要な輪郭線を削除した後のスライスモデルSM21’は、
図7に示すとおりである。なお、
図7では、造形領域は斜線で示された領域である。不必要な輪郭線を削除した後のスライスモデルSM21’は、領域判定装置100に記憶されている。
【0054】
輪郭線の数の分、ステップS103〜S108の処理を繰り返し行い、不必要な輪郭線を削除した後、ステップS109では、領域判定装置100は、従来技術と同様の方法で、スライスモデルSM21’のどの領域が造形領域であり、どの領域が非造形領域であるかを判定するとよい。例えば、
図7に示すように、輪郭線L(2)〜L(5)、L(7)と交差するように領域判定用の走査線SL22を設定する。そして、走査線SL22を
図7の左から右への方向に走査することで、内部レベルnの値を推移させる。ここでは、内部レベルnの値は
図7に示したように推移している。そして、内部レベルnの値が「0」以外の場合、その内部レベルnに対応した領域を造形領域と判定する。一方、内部レベルnの値が「0」の場合、その内部レベルnに対応した領域を非造形領域と判定する。このようにして、
図6のスライスモデルSM21を
図7のスライスモデルSM21’に変更した後、スライスモデルSM21’の領域を造形領域と非造形領域とに適切に分けることができる。
【0055】
なお、ステップS102〜ステップS109の処理は、他のスライスモデルに対しても行われる。このようにして、3次元造形物の断面形状に沿った複数のスライスモデルにおける領域を造形領域と非造形領域とに分ける。
【0056】
なお、領域判定装置100によって各スライスモデルの領域を造形領域と非造形領域とに分けた後、各スライスモデルに沿って3次元造形物を造形する。例えば、
図7のスライスモデルSM21’を使用して、スライスモデルSM21’に対応した断面形状を造形する。具体的には、造形領域D21〜D24に対応する領域に位置する光硬化性樹脂23にプロジェクタ31から発せられた光を照射させることで、造形領域D22〜D24に対応する領域に位置する光硬化性樹脂23を硬化させる。一方、非造形領域D25に対応する領域に位置する光硬化性樹脂23には、プロジェクタ31から発せられた光を照射させない。このことによって、非造形領域D25に対応する位置には、造形させないようにする。
【0057】
なお、本実施形態では、
図3に示すように、領域判定装置100は、記憶部52と、周回方向設定部54と、対象輪郭線設定部56と、第1輪郭線判定部58と、直近外囲輪郭線判定部60と、第2輪郭線判定部62と、削除部64と、領域判定部66とを備えている。
【0058】
記憶部52は、3次元造形システム10が造形しようとする3次元造形物の造形物モデル、および、造形物モデルを所定の間隔にスライスしたスライスモデルを記憶している。また、記憶部52には、
図5のステップS104において、対象輪郭線を外側から囲む輪郭線に関する情報が記憶されている。記憶部52には、不必要な輪郭線が削除された後のスライスモデルSM21’が記憶されている。
【0059】
周回方向設定部54は、記憶部52によって記憶されたスライスモデルSM21の島輪郭線L(1)〜L(4)、L(6)およびL(7)と、穴輪郭線L(5)とにおいて、互いに異なる周回方向を設定する。ここでは、周回方向設定部54は、島輪郭線L(1)〜L(4)、L(6)およびL(7)の周回方向を時計回りに設定し、穴輪郭線L(5)の周回方向を反時計回りに設定する。本実施形態では、時計回りが本発明の「一の方向」に対応する。反時計回りが本発明の「一の方向とは逆の他の方向」に対応する。なお、周回方向設定部54は、
図5のステップS102の処理を行う。
【0060】
対象輪郭線設定部56は、記憶部52に記憶されたスライスモデルSM21の輪郭線L(1)〜L(7)から、所定の輪郭線を抽出し、抽出した輪郭線を対象輪郭線に設定する。上述した例では、ステップS103のうち、輪郭線L(1)を対象輪郭線として設定する処理を行う。ここでは、輪郭線L(1)が上記所定の輪郭線に対応する。
【0061】
第1輪郭線判定部58は、
図5のステップS104のうち、対象輪郭線設定部56によって設定された対象輪郭線L(1)が島輪郭線であるか否かを判定する処理を行う。ここでは、第1輪郭線判定部58は、対象輪郭線L(1)の周回方向が時計回りの場合、対象輪郭線L(1)は島輪郭線であると判定する。例えば、対象輪郭線が輪郭線L(5)の場合、輪郭線L(5)の周回方向が反時計回りであるため、第1輪郭線判定部58は、対象輪郭線である輪郭線L(5)は穴輪郭線であると判定する。
【0062】
直近外囲輪郭線判定部60は、第1輪郭線判定部58によって対象輪郭線L(1)が島輪郭線であると判定された場合、対象輪郭線L(1)に対する直近外囲輪郭線Lminが設定されているか否かを判定する。具体的には、直近外囲輪郭線判定部60は、走査線設定部60aと、カウント部60bと、第1外囲判定部60cと、距離算出部60dと、第2外囲判定部60eとを備えている。直近外囲輪郭線判定部60は、走査線設定部60aと、カウント部60bと、第1外囲判定部60cと、距離算出部60dと、第2外囲判定部60eとによって、対象輪郭線L(1)に対する直近外囲輪郭線Lminが設定されているか否かを判定する。なお、
図6のスライスモデルSM21において、輪郭線L(7)は、他の輪郭線によって外側から囲まれていない。そのため、対象輪郭線が輪郭線L(7)の場合、直近外囲輪郭線判定部60は、対象輪郭線L(7)に対する直近外囲輪郭線は設定されていないと判定する。
【0063】
走査線設定部60aは、
図5のステップS104のうち走査線SL21を設定する処理を行う。走査線設定部60aは、対象輪郭線L(1)上の所定の点から所定の方向に向かうように走査線SL21を設定する。ここで、上記所定の点とは、例えば、対象輪郭線L(1)の最左点P21である。上記所定の方向とは、例えば、
図6において、最左点P21から左方に向かう方向である。
【0064】
カウント部60bは、
図5のステップS104のうち、走査線設定部60aによって設定された走査線SL21と、スライスモデルSM21の輪郭線のうち対象輪郭線L(1)以外の輪郭線L(2)〜L(7)とが交差する交差点を、輪郭線L(2)〜L(7)ごとにカウントする処理を行う。
【0065】
第1外囲判定部60cは、
図5のステップS104のうち、カウント部60bによってカウントされた交差点の数が奇数の場合、対応する輪郭線(
図6では、輪郭線L(2)、L(5)〜L(7))は対象輪郭線L(1)を外側から囲むように配置されていると判定する処理を行う。第1外囲判定部60cは、ステップS104のうち、カウント部60bによってカウントされた交差点の数が偶数の場合、対応した輪郭線(
図6では、輪郭線L(3)、L(4))は対象輪郭線L(1)を外側から囲むように配置されていないと判定する処理を行う。
【0066】
距離算出部60dは、
図5のステップS105のうち、第1外囲判定部60cによって対象輪郭線L(1)を外側から囲むように配置されていると判定された輪郭線と、対象輪郭線L(1)との間の距離を算出する処理を行う。ここで、「距離」とは最小距離のことをいう。例えば、
図6において、対象輪郭線が輪郭線L(1)の場合、対象輪郭線L(1)を外側から囲むように配置されている輪郭線は、輪郭線L(2)、L(5)〜L(7)である。よって、ここでは、距離算出部60dは、対象輪郭線L(1)と輪郭線L(2)、L(5)〜L(7)との間の最小距離をそれぞれ求める。
【0067】
第2外囲判定部60eは、距離算出部60dで算出した対象輪郭線L(1)と輪郭線L(2)、L(5)〜L(7)との間のそれぞれの距離のうち、最も小さい値の距離に対応した輪郭線を直近外囲輪郭線Lminと判定する。ここでは、対象輪郭線L(1)と輪郭線L(2)との間の距離が最も小さい値である。そのため、第2外囲判定部60eは、輪郭線L(2)を直近外囲輪郭線Lminに設定する。
【0068】
第2輪郭線判定部62は、直近外囲輪郭線判定部60によって、直近外囲輪郭線Lminが設定されていると判定された場合、直近外囲輪郭線Lminが島輪郭線であるか否かを判定する。ここでは、第2輪郭線判定部62は、直近外囲輪郭線判定部60の第2外囲判定部60eによって判定された直近外囲輪郭線Lminが島輪郭線であるか否かを判定する。第2輪郭線判定部62は、直近外囲輪郭線Lminの周回方向が時計回りである場合、直近外囲輪郭線Lminは島輪郭線であると判定する。一方、第2輪郭線判定部62は、直近外囲輪郭線Lminの周回方向が反時計回りである場合、直近外囲輪郭線Lminは穴輪郭線であると判定する。第2輪郭線判定部62は、
図5のステップS106の処理を行う。
【0069】
削除部64は、第2輪郭線判定部62によって、直近外囲輪郭線Lminが島輪郭線であると判定された場合、対象輪郭線L(1)をスライスモデルSM21から削除する。
図6のスライスモデルSM21では、輪郭線L(1)および輪郭線L(6)がスライスモデルSM21から削除される。そして、削除部64は、対象となる輪郭線L(1)および輪郭線L(6)を削除したスライスモデルSM21’(
図7参照)を記憶部52に記憶する。削除部64は、
図5のステップS107の処理を行う。
【0070】
領域判定部66は、記憶部52に記憶されたスライスモデルSM21’、すなわち、削除部64によって輪郭線L(1)および輪郭線L(6)が削除されたスライスモデルSM21’の領域を造形領域と非造形領域とに分ける。領域判定部66がスライスモデルSM21’の領域を判定する方法は特に限定されず、例えば、
図5のステップS109のような従来の方法であってもよい。
【0071】
以上、従来では、例えば、
図10のような島輪郭線L111と穴輪郭線L113との間に他の島輪郭線L112が設けられているスライスモデルSM110の場合、領域D113は非造形領域であるにも関わらず、領域D113を造形領域と判定するおそれがある。これは、島輪郭線L112が最も隣接した位置で島輪郭線L111によって外側から囲まれているためだと考えられる。このことは、
図8(b)の位置PT110のように3次元造形物A100を構成する複数の形状のものの境目の位置で3次元造形物A100をスライスしたスライスモデルSM110の場合に起こり得ると考えられる。島輪郭線L112は、造形領域を判定する上で不必要な輪郭線である。そこで、
図6に示すように、領域判定装置100では、直近外囲輪郭線判定部60によって、島輪郭線である対象輪郭線L(1)に対する直近外囲輪郭線Lminが設定されているか否かを判定する。第2輪郭線判定部62は、直近外囲輪郭線判定部60によって直近外囲輪郭線Lminが設定されていると判定された場合、直近外囲輪郭線Lminが島輪郭線であるか否かを判定する。そして、削除部64は、直近外囲輪郭線Lminが島輪郭線である場合、対象輪郭線L(1)をスライスモデルSM21から削除している。よって、
図6の島輪郭線L(1)のような造形領域を判定する上で不必要な島輪郭線をスライスモデルSM21から削除することができる。したがって、例えば、
図6のスライスモデルSM21のように、島輪郭線L(1)が最も隣接した位置で島輪郭線L(2)によって外側から囲まれている場合であっても、スライスモデルSM21の領域を造形領域と非造形領域とに確実に分けることができる。
【0072】
本実施形態では、スライスモデルSM21上の所定の位置P21から所定の方向(例えば、
図6の左方へ向かう方向)に向かうように設定された走査線SL21と、対象輪郭線L(1)以外の一の輪郭線とが交差する交差点の数が奇数の場合、その一の輪郭線は、対象輪郭線L(1)を外側から囲む輪郭線である。
図6のスライスモデルSM21では、対象輪郭線L(1)を外側から囲む輪郭線は、輪郭線L(2)、L(5)〜L(7)である。ここでは、対象輪郭線L(1)を外側から囲む輪郭線L(2)、L(5)〜L(7)のうち、対象輪郭線L(1)に対して最も近くに位置する輪郭線が対象輪郭線L(1)に対する直近外囲輪郭線Lminであると判定することができる。
図6のスライスモデルSM21では、直近外囲輪郭線Lminは、輪郭線L(2)である。よって、直近外囲輪郭線Lmin(輪郭線L(2))が島輪郭線である場合、対象輪郭線L(1)をスライスモデルSM21から削除することができる。
【0073】
本実施形態では、周回方向設定部54は、島輪郭線の周回方向を時計回りに設定する。また、周回方向設定部54は、穴輪郭線の周回方向を反時計回りに設定する。よって、第1輪郭線判定部58は、対象輪郭線L(1)の周回方向が時計回りか反時計回りかを判定することで、対象輪郭線L(1)が島輪郭線であるか否かを容易に判定することができる。また、第2輪郭線判定部62は、直近外囲輪郭線Lminの周回方向が時計回りか反時計回りかを判定することで、直近外囲輪郭線Lminが島輪郭線であるか否かを容易に判定することができる。