(57)【特許請求の範囲】
【請求項１】
ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、
出力を規制すべきポリゴンモデルである規制モデルが登録された規制モデルデータベースと、
出力対象のポリゴンモデルである対象モデルに含まれるポリゴンの数が所定の値以下になるようにポリゴンを削減するポリゴン削減手段と、
前記ポリゴンが削減された対象モデルに対して、当該対象モデルの基準点が３次元座標の原点になるように前記対象モデルを移動させ、前記基準点から最も遠いポリゴンまでの最長距離より所定の微小量だけ縮小した範囲に含まれるポリゴンを前記基準点から見た方向を主軸候補として複数抽出し、抽出された主軸候補のうち所定の条件を満足する１つの主軸候補を主軸として選出し、選出された主軸が所定の長さになるように前記対象モデルをスケーリング調整し、前記主軸の方向が第１の軸に一致するように前記対象モデルを回転させることにより、正規化された対象モデルを作成するポリゴン正規化手段と、
前記正規化された対象モデルを前記規制モデルデータベースに登録されている規制モデルと照合し、出力を規制すべきか否かを判定するポリゴンモデル照合手段と、
を備えることを特徴とする立体物造形用データ出力規制装置。
【請求項２】
前記対象モデルの基準点は、各ポリゴンの頂点座標の平均であるポリゴン平均座標を、前記対象モデルに含まれるポリゴンについて算出した平均値として与えられるものであることを特徴とする請求項１に記載の立体物造形用データ出力規制装置。
【請求項３】
前記ポリゴン正規化手段は、前記対象モデル内で所定の順番にポリゴンが配置されたポリゴン配列上で先頭に位置するポリゴンに対応する主軸候補を、前記所定の条件を満足する１つの主軸候補とするようにしていることを特徴とする請求項１または請求項２に記載の立体物造形用データ出力規制装置。
【請求項４】
前記ポリゴン正規化手段は、抽出された複数の主軸候補の各々に対して、主軸候補が所定の長さになるように前記対象モデルをスケーリング調整し、前記主軸候補の方向が前記第１の軸に一致するように前記対象モデルを回転させた後に、回転後の前記対象モデルが第２の軸と第３の軸で形成される２次元座標系に投影された前記基準点から最も遠いポリゴンまでの最長距離方向を副軸候補として各主軸候補ごとに選出するようにし、前記基準点から３次元的距離が最長であるか、または、それぞれ対応する主軸候補との内積値が最も大きい副軸候補を特定し、当該副軸候補に対応する主軸候補を、前記所定の条件を満足する１つの主軸候補とするようにしていることを特徴とする請求項１または請求項２に記載の立体物造形用データ出力規制装置。
【請求項５】
前記ポリゴン正規化手段は、前記選出された主軸の方向を、前記第１の軸の正または負の一方の特定方向に一致させるため、前記第１の軸と第２の軸で形成される２次元座標系に投影された前記主軸の方向が前記第１の軸の前記特定方向に一致するように前記対象モデルを回転させた後に、前記第１の軸と第３の軸で形成される２次元座標系に投影された前記主軸の方向が前記第１の軸の前記特定方向に一致するように前記対象モデルを回転させるようにしていることを特徴とする請求項１から請求項４のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項６】
前記ポリゴン正規化手段は、前記選出された主軸の方向が前記第１の軸の前記特定方向に一致するように前記対象モデルを回転させた後に、前記第２の軸と前記第３の軸で形成される２次元座標系に投影された基準点から最も遠いポリゴンまでの最長距離方向が前記第３の軸の前記特定方向に一致するように前記対象モデルを更に回転させるようにしていることを特徴とする請求項５に記載の立体物造形用データ出力規制装置。
【請求項７】
前記ポリゴン照合手段は、角度に依存しない角度非依存照合処理と、角度に依存する角度依存照合処理を行う２種の処理から構成され、前記角度非依存照合処理で適合した場合のみ、前記角度依存照合処理を実行するようにしていることを特徴とする請求項１から請求項６のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項８】
前記ポリゴン照合手段は、前記角度非依存照合処理として、前記対象モデルを構成するポリゴンの面積の総和値と、前記規制モデルを構成するポリゴンの面積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合判定するようにしていることを特徴とする請求項７に記載の立体物造形用データ出力規制装置。
【請求項９】
前記ポリゴン照合手段は、前記角度非依存照合処理として、前記対象モデルを構成するポリゴンを底面として前記基準点を頂点とする角錐の体積の総和値と、前記規制モデルを構成するポリゴンを底面として前記基準点を頂点とする角錐の体積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合判定するようにしていることを特徴とする請求項７に記載の立体物造形用データ出力規制装置。
【請求項１０】
前記ポリゴン照合手段は、前記角度非依存照合処理として、前記対象モデルを構成するポリゴンの面積の総和値と、前記規制モデルを構成するポリゴンの面積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合判定し、
適合判定された場合のみ、
前記対象モデルを構成するポリゴンを底面として前記基準点を頂点とする角錐の体積の総和値と、前記規制モデルを構成するポリゴンを底面として前記基準点を頂点とする角錐の体積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合判定するようにしていることを特徴とする請求項７に記載の立体物造形用データ出力規制装置。
【請求項１１】
前記ポリゴン照合手段は、前記角度依存照合処理として、前記対象モデル、前記規制モデルそれぞれについて、構成するポリゴンの頂点座標の平均であるポリゴン平均座標が最も近いポリゴン同士でポリゴン平均座標間の距離を算出し、ポリゴン平均座標間の距離の総和値を算出し、前記総和値の１ポリゴンあたりの平均値が所定のしきい値より小さい場合に適合判定するようにしていることを特徴とする請求項７から請求項１０のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１２】
前記ポリゴン照合手段は、前記角度依存照合処理として、前記対象モデル、前記規制モデルそれぞれについて、構成するポリゴンの頂点座標の平均であるポリゴン平均座標が最も近いポリゴン同士で、対応する頂点間の距離を算出し、当該距離の全ポリゴンについての総和値を算出し、前記総和値の１ポリゴンあたりの平均値が所定のしきい値より小さい場合に適合判定するようにしていることを特徴とする請求項７から請求項１０のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１３】
前記規制モデルに含まれるポリゴンの数が所定の値以下になるようにポリゴンを削減する第２のポリゴン削減手段と、
前記ポリゴンが削減された規制モデルに対して、当該規制モデルの基準点が３次元座標の原点になるように前記規制モデルを移動させ、前記基準点から最も遠いポリゴンまでの最長距離より所定の微小量だけ縮小した範囲に含まれる距離となるポリゴンの方向を主軸候補として複数抽出し、抽出された主軸候補のうち所定の条件を満足する１つの主軸候補を主軸として選出し、選出された主軸が所定の長さになるように前記規制モデルをスケーリング調整し、前記主軸の方向が第１の軸に一致するように前記規制モデルを回転させることにより、正規化された規制モデルを作成する第２のポリゴン正規化手段と、を備えた規制モデル正規化装置により正規化された規制モデルを受信し、受信した規制モデルを前記規制モデルデータベースに登録する規制モデル登録手段を更に有することを特徴とする請求項１から請求項１２のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１４】
前記ポリゴン削減手段によるポリゴン削減前の対象モデルを、接続された立体物造形装置に出力する手段と、
前記立体物造形装置による立体物の造形処理と並行して実行される前記ポリゴンモデル照合手段により、出力を規制すべきであると判定された場合に、前記立体物造形装置に、前記ポリゴン削減前の対象モデルの出力中止命令を出力する手段と、
を更に備えることを特徴とする請求項１から請求項１２のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１５】
ネットワークを介して対象モデルを受信する対象モデル受信手段と、
前記ポリゴンモデル照合手段により判定された出力適否に基づくデータを前記対象モデルの送信元に送信する出力適否データ送信手段と、
を更に有することを特徴とする請求項１から請求項１４のいずれか一項に記載の立体物造形用データ出力規制装置。
【請求項１６】
コンピュータを、請求項１から請求項１５のいずれか一項に記載の立体物造形用データ出力規制装置として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、立体物を表すデータを基に、樹脂等を加工して立体物を造形する３Ｄプリンタ等の立体物造形装置の利用に際して、立体物造形装置からの出力に不適切なものを判別するための技術に関する。
【背景技術】
【０００２】
近年、立体物を表すデータを基に、樹脂や石膏等を加工して造形する３Ｄプリンタが立体物造形装置として普及してきている。３Ｄプリンタの医療応用として、医療診断で撮影されるCT/MRI画像（DICOM形式３次元ボクセルデータ）を基に３Ｄプリンタ出力用モデリングデータを作成し、手術シミュレーション・医学教育・インフォームドコンセント向けの臓器模型を出力したり、体内埋め込み用の人工臓器（血管、骨、関節など）を作成したりする試みが始まっている。
【０００３】
３Ｄプリンタには、インターネットを介して情報だけでなく、モノを遠隔地に間接的に伝搬できる革新性を備えている。そのため、これまで税関で規制されていた銃砲・刀剣などの危険物がデータ形態で国境を越えて流布され、３Ｄプリンタによりモノとして容易に入手可能になるという問題が発生している。
【０００４】
具体的には、あるＷＥＢサイトにて３Ｄプリンタを用いて所定のモデルの拳銃を製造できるＳＴＬ（Standard Triangulated Language）が無償で公開されている。金属製に比べて射程距離などは多少劣るが、３Ｄプリンタで作成された弾丸でも殺傷能力はそれなりにある。更に、現状の３Ｄプリンタで造形可能な材料は樹脂・石膏に限定され、金属が使用できないという欠点が裏目に出て、空港の金属探知機で見逃されるという問題も指摘されている。今後、民生用の３Ｄプリンタが普及するにあたり、３Ｄプリンタ側に投入される出力データの形状認証と危険物の出力規制などのセキュリティ機能をもたせることが求められる。
【０００５】
これに対して、ウィルス対策ツールと類似した手法で出力可否判定を行うシステムを構築する方法が考えられ、その実現にあたり、ポリゴン照合技術が必要になるが、ポリゴン照合には、従来より次の問題が知られている。３Ｄプリンタ出力用のポリゴンデータ（ＳＴＬ形式など）では、３次元座標値が絶対寸法でないためスケールがまちまちで、座標原点やアングルも使用されるＣＡＤや出力予定のプリンタの特性に合せて種々に設定される。そのため、たとえソースが同一の３Ｄモデルであっても、ポリゴンデータの作成方法が異なると、表現される総ポリゴン数も変化し、ポリゴンデータの座標値比較で同一性を判定することは一般に難しい。
【０００６】
そこで、特許文献１のように、重心からの慣性モーメントなど特徴パラメータによるアングル・スケールに依存しない比較手法が提案されている。また、特許文献２では、ポリゴンモデルの重心からの距離分布や隣接面とのクリーズ角などの特徴量を抽出してアングル・スケールに依存しない比較を行う手法が提案されている。特許文献３では、３次元モデルを複数アングルに２次元投影した画像に対してフーリエ変換を行い特徴抽出して比較する手法が提案されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特許第３６１０２７０号公報
【特許文献２】特開２０００−２２２４２８号公報
【特許文献３】特許第５０２４７６７号公報
【特許文献４】特願２０１４−３８０７６号
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記従来の技術は、いずれも類似形状検索の用途であり、検索されたデータを採択するか否かは人間の判断に委ねられている。人間による判断を加えない場合、これらの既存手法を適用してしまうと精度が粗すぎて、過剰に出力拒否判定をされてしまうという問題が発生する。また、出願人は、これらの問題を解決して出力規制を適正に行う技術を開発しているが（特許文献４参照）、その精度には、改善の余地がある。
【０００９】
そこで、本発明は、人間による判断を行わなくても、的確にポリゴンモデルの出力規制を行うことが可能な立体物造形用データ出力規制装置を提供することを課題とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明第１の態様では、ポリゴンの集合として表現されたポリゴンモデルを立体物造形装置に立体物造形用データとして出力する際に、規制すべきか否かを判定する装置であって、出力を規制すべきポリゴンモデルである規制モデルが登録された規制モデルデータベースと、出力対象のポリゴンモデルである対象モデルに含まれるポリゴンの数が所定の値以下になるようにポリゴンを削減するポリゴン削減手段と、前記ポリゴンが削減された対象モデルに対して、当該対象モデルの基準点が３次元座標の原点になるように前記対象モデルを移動させ、前記基準点から最も遠いポリゴンまでの最長距離より所定の微小量（ｄ）だけ縮小した範囲に含まれるポリゴンを前記基準点から見た方向を主軸候補として複数抽出し、抽出された主軸候補のうち所定の条件を満足する１つの主軸候補を主軸として選出し、選出された主軸が所定の長さになるように前記対象モデルをスケーリング調整し、前記主軸の方向が第１の軸に一致するように前記対象モデルを回転させることにより、正規化された対象モデルを作成するポリゴン正規化手段と、前記正規化された対象モデルを前記規制モデルデータベースに登録されている規制モデルと照合し、出力を規制すべきか否かを判定するポリゴンモデル照合手段と、を備えることを特徴とする立体物造形用データ出力規制装置を提供する。
【００１１】
本発明第１の態様によれば、規制モデルが登録された規制モデルデータベースを備え、対象モデルに含まれるポリゴンの数が所定の値以下になるようにポリゴンを削減し、ポリゴンが削減された対象モデルに対して、対象モデルの基準点が３次元座標の原点になるように対象モデルを移動させ、基準点から最も遠いポリゴンまでの最長距離より所定の微小量（ｄ）だけ縮小した範囲に含まれるポリゴンを前記基準点から見た方向を主軸候補として複数抽出し、抽出された主軸候補のうち所定の条件を満足する１つの主軸候補を主軸として選出し、選出された主軸が所定の長さになるように対象モデルをスケーリング調整し、主軸の方向が第１の軸（例えばＺ軸）に一致するように対象モデルを回転させることにより、所定の位置、スケール、傾きに正規化された対象モデルを作成し、正規化された対象モデルを規制モデルデータベースに登録されている規制モデルと照合し、出力を規制すべきか否かを判定するようにしたので、ウィルス対策ツールと類似した手法でパターンファイル（規制モデルデータベース）を構築し、３Ｄプリンタ等の立体物造形装置に出力予定のポリゴンモデルに対してブラックリスト（規制モデルデータベース）に登録されている各ポリゴンモデルと照合し、出力可否判定を行うことが可能となる。特に、向きを揃えるための主軸を、最長距離より若干短い複数の主軸候補を抽出し、そのうち１つを主軸として選出するので、対象モデルと規制モデルの向きが合う可能性が高まる。このため、立体物造形装置に出力予定のポリゴンモデルのスケールまたはアングルが規制モデルデータベースに登録されている規制モデルのものと異なっていても、適切か否かの判断を行うことができ、人間による判断を行わなくても、的確にポリゴンモデルの出力規制を行うことが可能となる。
【００１２】
また、本発明第２の態様では、前記対象モデルの基準点は、各ポリゴンの頂点座標の平均であるポリゴン平均座標を、前記対象モデルに含まれるポリゴンについて算出した平均値として与えられるものであることを特徴とする。
【００１３】
本発明第２の態様によれば、対象モデルの基準点は、各ポリゴンの頂点座標の平均であるポリゴン平均座標を、対象モデルに含まれるポリゴンについて算出した平均値として与えられるようにしたので、立体物造形装置に出力予定のポリゴンモデルの各頂点が規制モデルデータベースに登録されている規制モデルのものと若干異なっていても、適切か否かの判断を行うことができ、対象モデルの重心に近い位置を基準点として迅速に算出することが可能となる。
【００１４】
また、本発明第３の態様では、前記ポリゴン正規化手段は、前記対象モデル内で所定の順番にポリゴンが配置されたポリゴン配列上で先頭に位置するポリゴンに対応する主軸候補を、前記所定の条件を満足する１つの主軸候補とするようにしていることを特徴とする。
【００１５】
本発明第３の態様によれば、複数抽出された主軸候補のうち、対象モデル内で所定の順番にポリゴンが配置されたポリゴン配列上で先頭に位置するポリゴンに対応する主軸候補を主軸として選出するようにしたので、複数の最長距離となる主軸候補より単一の候補を主軸としてユニークに選出することが可能になり、主軸の選出においてバラツキが発生することなく、規制モデルとの照合を的確に行うことが可能となる。
【００１６】
また、本発明第４の態様では、前記ポリゴン正規化手段は、抽出された複数の主軸候補の各々に対して、主軸候補が所定の長さになるように前記対象モデルをスケーリング調整し、前記主軸候補の方向が前記第１の軸（例えばＺ軸）に一致するように前記対象モデルを回転させた後に、回転後の前記対象モデルが第２の軸（例えばＸ軸）と第３の軸（例えばＹ軸）で形成される（ＸＹ）２次元座標系に投影された前記基準点から最も遠いポリゴンまでの最長距離方向を副軸候補として各主軸候補ごとに選出するようにし、前記基準点から３次元的距離が最長であるか、または、それぞれ対応する主軸候補との内積値が最も大きい副軸候補を特定し、当該副軸候補に対応する主軸候補を、前記所定の条件を満足する１つの主軸候補とするようにしていることを特徴とする。
【００１７】
本発明第４の態様によれば、抽出された複数の主軸候補の各々に対して、主軸候補が所定の長さになるようにスケーリング調整し、主軸候補の方向が第１の軸に一致するように回転させた後に、回転後の対象モデルが第２の軸と第３の軸で形成される２次元座標系に投影された基準点から最も遠いポリゴンまでの最長距離方向を副軸候補として各主軸候補ごとに選出し、基準点から３次元的距離が最長であるか、または、それぞれ対応する主軸候補との内積値が最も大きい副軸候補を特定し、その副軸候補に対応する主軸候補を、主軸として選出するようにしたので、副軸の３次元的な距離も長く副軸との３次元的な方向が近い主軸候補を主軸として選出することができ、規制モデルとの照合を的確に行うことが可能となる。
【００１８】
また、本発明第５の態様では、前記ポリゴン正規化手段は、前記選出された主軸の方向を、前記第１の軸（例えばＺ軸）の正または負の一方の特定方向に一致させるため、前記第１の軸と第２の軸（例えばＸ軸）で形成される（ＸＺ）２次元座標系に投影された前記主軸の方向が前記第１の軸の前記特定方向に一致するように前記対象モデルを回転させた後に、前記第１の軸と第３の軸（例えばＹ軸）で形成される（ＹＺ）２次元座標系に投影された前記主軸の方向が前記第１の軸の前記特定方向に一致するように前記対象モデルを回転させるようにしていることを特徴とする。
【００１９】
本発明第５の態様によれば、選出された主軸の方向を、第１の軸（例えばＺ軸）の特定方向に一致させるため、第１の軸と第２の軸（例えばＸ軸）で形成される（ＸＺ）２次元座標系に投影された主軸の方向が第１の軸の特定方向に一致するように対象モデルを回転させた後に、第１の軸と第３の軸（例えばＹ軸）で形成される（ＹＺ）２次元座標系に投影された主軸の方向が第１の軸の特定方向に一致するように対象モデルを回転させるようにしたので、立体物造形装置に出力予定のポリゴンモデルおよび規制モデルデータベースに登録されている規制モデルに対して、各々少なくとも立体物の長手方向のアングルを揃えた上で照合を行うことが可能となる。
【００２０】
また、本発明第６の態様では、前記ポリゴン正規化手段は、前記主軸の方向が前記第１の軸（例えばＺ軸）の前記特定方向に一致するように前記対象モデルを回転させた後に、前記第２の軸（例えばＸ軸）と前記第３の軸（例えばＹ軸）で形成される（ＸＹ）２次元座標系に投影された基準点から最も遠いポリゴンまでの最長距離方向が前記第３の軸の前記特定方向に一致するように前記対象モデルを更に回転させるようにしていることを特徴とする。
【００２１】
本発明第６の態様によれば、主軸の方向が第１の軸（例えばＺ軸）の特定方向に一致するように対象モデルを回転させた後に、第２の軸（例えばＸ軸）と第３の軸（例えばＹ軸）で形成される（ＸＹ）２次元座標系に投影された基準点から最も遠いポリゴンまでの最長距離方向が第３の軸の特定方向に一致するように対象モデルを更に回転させるようにしたので、立体物造形装置に出力予定のポリゴンモデルおよび規制モデルデータベースに登録されている規制モデルに対して、各々アングルを完全に一致させた上で照合を行うことが可能となる。
【００２２】
また、本発明第７の態様では、前記ポリゴン照合手段は、角度（アングル）に依存しない角度非依存照合処理と、角度に依存する角度依存照合処理を行う２種の処理から構成され、前記角度非依存照合処理で適合した場合のみ、前記角度依存照合処理を実行するようにしていることを特徴とする。
【００２３】
本発明第７の態様によれば、ポリゴン照合として、はじめに角度（アングル）に依存しない角度非依存照合処理を行い、角度非依存照合処理で適合（類似）した場合のみ、角度依存照合処理を実行するようにしたので、大きく異なるモデルについては、少ない処理負荷で迅速に非類似と判定することができ、全体として効率的な判定が可能となる。
【００２４】
また、本発明第８の態様では、前記ポリゴン照合手段は、前記角度非依存照合処理として、前記対象モデルを構成するポリゴンの面積の総和値と、前記規制モデルを構成するポリゴンの面積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合判定するようにしていることを特徴とする。
【００２５】
本発明第８の態様によれば、角度非依存照合処理として、対象モデルを構成するポリゴンの面積の総和値と、規制モデルを構成するポリゴンの面積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合（類似）判定するようにしたので、比較的簡易な演算によりしきい値と比較する値を算出することができ、迅速な適否判定が可能となる。
【００２６】
また、本発明第９の態様では、前記ポリゴン照合手段は、前記角度非依存照合処理として、前記対象モデルを構成するポリゴンを底面として前記基準点を頂点とする角錐の体積の総和値と、前記規制モデルを構成するポリゴンを底面として前記基準点を頂点とする角錐の体積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合判定するようにしていることを特徴とする。
【００２７】
本発明第９の態様によれば、角度非依存照合処理として、対象モデルを構成するポリゴンを底面として基準点を頂点とする角錐の体積の総和値と、規制モデルを構成するポリゴンを底面として基準点を頂点とする角錐の体積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合（類似）判定するようにしたので、比較的簡易な演算によりしきい値と比較する値を算出することができ、迅速な適否判定が可能となる。
【００２８】
また、本発明第１０の態様では、前記ポリゴン照合手段は、前記角度非依存照合処理として、前記対象モデルを構成するポリゴンの面積の総和値と、前記規制モデルを構成するポリゴンの面積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合（類似）判定し、適合判定された場合のみ、前記対象モデルを構成するポリゴンを底面として前記基準点を頂点とする角錐の体積の総和値と、前記規制モデルを構成するポリゴンを底面として前記基準点を頂点とする角錐の体積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合（類似）判定するようにしていることを特徴とする。
【００２９】
本発明第１０の態様によれば、角度非依存照合処理として、対象モデルを構成するポリゴンの面積の総和値と、規制モデルを構成するポリゴンの面積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合（類似）判定し、適合判定された場合のみ、対象モデルを構成するポリゴンを底面として基準点を頂点とする角錐の体積の総和値と、規制モデルを構成するポリゴンを底面として基準点を頂点とする角錐の体積の総和値を算出し、２つの総和値の差分の絶対値が所定のしきい値より小さい場合に適合（類似）判定するようにしたので、迅速かつ確実にしきい値と比較する値を算出することができ、迅速な適否判定が可能となる。
【００３０】
また、本発明第１１の態様では、前記ポリゴン照合手段は、前記角度依存照合処理として、前記対象モデル、前記規制モデルそれぞれについて、構成するポリゴンの頂点座標の平均であるポリゴン平均座標が最も近いポリゴン同士でポリゴン平均座標間の距離を算出し、ポリゴン平均座標間の距離の総和値を算出し、前記総和値の１ポリゴンあたりの平均値が所定のしきい値より小さい場合に適合（類似）判定するようにしていることを特徴とする。
【００３１】
本発明第１１の態様によれば、角度依存照合処理として、対象モデル、規制モデルそれぞれについて、構成するポリゴンの頂点座標の平均であるポリゴン平均座標が最も近いポリゴン同士でポリゴン平均座標間の距離を算出し、ポリゴン平均座標間の距離の総和値を算出し、総和値の１ポリゴンあたりの平均値が所定のしきい値より小さい場合に適合（類似）判定するようにしたので、簡易な角度非依存照合で類似と判定されたモデルに対して再判定を行い、規制する必要のないポリゴンモデルを誤って規制することがないように判定精度を上げることが可能となる。規制すべきポリゴンモデルに対して見逃して出力を許可してしまう場合は、少なくともユーザからのクレームは起こらないが、その逆の場合は、ユーザからのクレーム発生につながり本技術を搭載した３Ｄプリンタ装置に対する信頼性も失われる。本発明第１１の態様によれば、そのような信頼の失墜を防ぐことに貢献できる。
【００３２】
また、本発明第１２の態様では、前記ポリゴン照合手段は、前記角度依存照合処理として、前記対象モデル、前記規制モデルそれぞれについて、構成するポリゴンの頂点座標の平均であるポリゴン平均座標が最も近いポリゴン同士で、対応する頂点間の距離を算出し、当該距離の全ポリゴンについての総和値を算出し、前記総和値の１ポリゴンあたりの平均値が所定のしきい値より小さい場合に適合（類似）判定するようにしていることを特徴とする。
【００３３】
本発明第１２の態様によれば、角度依存照合処理として、対象モデル、規制モデルそれぞれについて、構成するポリゴンの頂点座標の平均であるポリゴン平均座標が最も近いポリゴン同士で、対応する頂点間の距離を算出し、距離の全ポリゴンについての総和値を算出し、総和値の１ポリゴンあたりの平均値が所定のしきい値より小さい場合に適合（類似）判定するようにしたので、簡易な角度非依存照合で類似と判定されたモデルに対して再判定を行い、規制する必要のないポリゴンモデルを誤って規制することがないように本発明第９の態様より更に判定精度を上げることが可能となる。
【００３４】
また、本発明第１３の態様では、前記規制モデルに含まれるポリゴンの数が所定の値以下になるようにポリゴンを削減する第２のポリゴン削減手段と、前記ポリゴンが削減された規制モデルに対して、当該規制モデルの基準点が３次元座標の原点になるように前記規制モデルを移動させ、前記基準点から最も遠いポリゴンまでの最長距離より所定の微小量（ｄ）だけ縮小した範囲に含まれる距離となるポリゴンの方向を主軸候補として複数抽出し、抽出された主軸候補のうち所定の条件を満足する１つの主軸候補を主軸として選出し、選出された主軸が所定の長さになるように前記規制モデルをスケーリング調整し、前記主軸の方向が第１の軸（例えばＺ軸）に一致するように前記規制モデルを回転させることにより、正規化された規制モデルを作成する第２のポリゴン正規化手段と、を備えた規制モデル正規化装置により正規化された規制モデルを受信し、受信した規制モデルを前記規制モデルデータベースに登録する規制モデル登録手段を更に有することを特徴とする。
【００３５】
本発明第１３の態様によれば、規制モデルに含まれるポリゴンの数が所定の値以下になるようにポリゴンを削減する第２のポリゴン削減手段、ポリゴンが削減された規制モデルに対して、規制モデルの基準点が３次元座標の原点になるように規制モデルを移動させ、基準点から最も遠いポリゴンまでの最長距離より所定の微小量（ｄ）だけ縮小した範囲に含まれる距離となるポリゴンの方向を主軸候補として複数抽出し、抽出された主軸候補のうち所定の条件を満足する１つの主軸候補を主軸として選出し、選出された主軸が所定の長さになるように規制モデルをスケーリング調整し、主軸の方向が第１の軸（例えばＺ軸）に一致するように規制モデルを回転させることにより、所定の位置、スケール、傾きに正規化された規制モデルを作成する第２のポリゴン正規化手段を備えた規制モデル正規化装置を別途用意し、この規制モデル正規化装置から正規化された規制モデルを受信し、受信した規制モデルを規制モデルデータベースに登録するようにしたので、規制モデルデータベースの更新を遠隔地から迅速に行うことが可能となる。
【００３６】
また、本発明第１４の態様では、前記ポリゴン削減手段によるポリゴン削減前の対象モデルを、接続された立体物造形装置に出力する手段と、前記立体物造形装置による立体物の造形処理と並行して実行される前記ポリゴンモデル照合手段により、出力を規制すべきであると判定された場合に、前記立体物造形装置に、前記ポリゴン削減前の対象モデルの出力中止命令を出力する手段と、を更に備えることを特徴とする。
【００３７】
本発明第１４の態様によれば、ポリゴン削減前の対象モデルを、接続された立体物造形装置に出力し、並行して実行されるポリゴンモデル照合手段による照合の結果、出力を規制すべきであると判定された場合に、立体物造形装置に、ポリゴン削減前の対象モデルの出力中止命令を出力するようにしたので、時間のかかる立体物の造形を遅延させることなく、出力不適の場合にのみ、出力を中止することが可能となる。
【００３８】
また、本発明第１５の態様では、ネットワークを介して対象モデルを受信する対象モデル受信手段と、前記ポリゴンモデル照合手段により判定された出力適否に基づくデータを前記対象モデルの送信元に送信する出力適否データ送信手段と、を更に有することを特徴とする。
【００３９】
本発明第１５の態様によれば、ネットワークを介して対象モデルを受信し、出力適否判定により得られた出力適否に基づくデータを対象モデルの送信元に送信するようにしたので、出力適否の判定をクラウド型で提供することができ、出力側で複雑な処理を行う必要がない。更に、規制モデルデータベースをクラウド側で一元管理でき、３Ｄプリンタ等の立体物造形装置ごとに接続されている出力制御用ＰＣ内で規制モデルデータベースを管理する必要がないため、常に最新の規制モデルデータベースに基づいて出力適否判定を行うことが可能になる。
【発明の効果】
【００４０】
本発明によれば、人間による判断を行わなくても、的確にポリゴンモデルの出力規制を行うことが可能となる。
【図面の簡単な説明】
【００４１】
【図１】本発明の一実施形態に係る立体物造形用データ出力規制装置１００を含む立体物造形システムのハードウェア構成図である。
【図２】本発明の一実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。
【図３】本発明の一実施形態に係る立体物造形用データ出力規制装置の処理概要を示すフローチャートである。
【図４】ステップＳ１００のポリゴン削減処理の詳細を示すフローチャートである。
【図５】ポリゴン削減手段１０によるグループ分類処理の詳細を示すフローチャートである。
【図６】ポリゴン削除の基本原理を示す図である。
【図７】ポリゴン削除処理の詳細を示すフローチャートである。
【図８】ポリゴン削除処理により生じる問題を説明するための図である。
【図９】隔離された小体積グループの削除処理の詳細を示すフローチャートである。
【図１０】図９のステップＳ４４における最小間隔の算出処理の詳細を示すフローチャートである。
【図１１】従来のポリゴン正規化の問題点を示す図である。
【図１２】ステップＳ２００のポリゴン正規化処理の第１の手法を示すフローチャートである。
【図１３】第１の手法によるポリゴン正規化処理の概要を示す図である。
【図１４】第１の手法によるポリゴン正規化処理の概要を示す図である。
【図１５】ステップＳ２００のポリゴン正規化処理の第２の手法を示すフローチャートである。
【図１６】第２の手法によるポリゴン正規化処理の概要を示す図である。
【図１７】第２の手法によるポリゴン正規化処理の概要を示す図である。
【図１８】第２の手法によるポリゴン正規化処理の概要を示す図である。
【図１９】ポリゴン照合処理の概要を示すフローチャートである。
【図２０】総面積に基づくポリゴン照合処理の詳細を示すフローチャートである。
【図２１】体積に基づくポリゴン照合処理の詳細を示すフローチャートである。
【図２２】座標値に基づくポリゴン照合処理の詳細を示すフローチャートである。
【図２３】変形例における立体物造形用データ出力規制装置を含む立体物造形システムのハードウェア構成図である。
【図２４】クラウド型の立体物造形システムのハードウェア構成図である。
【図２５】クラウド型の立体物造形システムの機能ブロック図である。
【図２６】正規化前のオリジナルのポリゴンモデルを示す図である。
【図２７】図２６の規制モデル、対象モデルに対して、従来方式により正規化を行った状態を示す図である。
【図２８】図２６の規制モデル、対象モデルに対して、本実施形態の第１の手法により正規化を行った状態を示す図である。
【発明を実施するための形態】
【００４２】
以下、本発明の好適な実施形態について図面を参照して詳細に説明する。
＜１．装置構成＞
図１は、本発明の一実施形態に係る立体物造形用データ出力規制装置１００を含む立体物造形システムのハードウェア構成図である。本実施形態に係る立体物造形用データ出力規制装置１００は、汎用のコンピュータで実現することができ、図１に示すように、ＣＰＵ（Central Processing Unit）１と、コンピュータのメインメモリであるＲＡＭ（Random Access Memory）２と、ＣＰＵ１が実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置３と、キーボード、マウス等のキー入力Ｉ／Ｆ（インターフェース）４と、３Ｄプリンタやデータ記憶媒体等の外部装置とデータ通信するためのデータ入出力Ｉ／Ｆ（インターフェース）５と、液晶ディスプレイ等の表示デバイスである表示部６と、を備え、互いにバスを介して接続されている。
【００４３】
３Ｄプリンタ７は、汎用の３Ｄプリンタであり、立体物を表現したポリゴンモデルである立体物造形用データを基に樹脂、石膏等の素材を加工して立体物を造形する立体物造形装置である。３Ｄプリンタ７は、データ処理部７ａと出力部７ｂを有している。３Ｄプリンタ７のデータ処理部７ａは、データ入出力Ｉ／Ｆ５に接続されており、データ入出力Ｉ／Ｆ５から受け取った立体物造形用データを基に、出力部７ｂが立体物を造形するようになっている。図１では、立体物造形用データ出力規制装置１００と３Ｄプリンタ７は分離した形態で示されているが、現在市販されている殆どの３Ｄプリンタ製品には立体物造形用データ出力規制装置１００の構成要素である、ＣＰＵ１、ＲＡＭ２、記憶装置３、キー入力Ｉ／Ｆ４（汎用コンピュータ向けキーボード・マウスではなく、テンキーレベルの数種のボタン）、データ入出力Ｉ／Ｆ５、表示部６（数行の文字を表示可能な小型液晶パネル、タッチパネルを重畳させキー入力Ｉ／Ｆ４を兼ねることも多い）も小規模ながら重複して備えている。従って、３Ｄプリンタ７自体が外部記憶媒体経由で立体物造形用データを直接受け取り、単独で立体物を造形する運用も可能になっている（特に民生用の３Ｄプリンタではこちらの形態の方が多い）。すなわち、図１に示した立体物造形システムを１つの筐体に収めて、“３Ｄプリンタ”という製品として流通することも多い。
【００４４】
図２は、本実施形態に係る立体物造形用データ出力規制装置の構成を示す機能ブロック図である。図２において、１０はポリゴン削減手段、２０はポリゴン正規化手段、３０はポリゴンモデル照合手段、４０は対象モデル記憶手段、５０は規制モデルデータベースである。
【００４５】
ポリゴン削減手段１０は、対象モデル記憶手段４０に記憶されたポリゴンモデルである対象モデルを構成するポリゴンを削減する。ポリゴン正規化手段２０は、ポリゴンが削減されたポリゴンモデルに対して、所定の位置、スケール、アングルに正規化する処理を行う。ポリゴンモデル照合手段３０は、正規化後のポリゴンモデルを、規制モデルデータベース５０内のポリゴンモデルである各規制モデルと照合し、出力適否の判定を行う。
【００４６】
ポリゴン削減手段１０、ポリゴン正規化手段２０、ポリゴンモデル照合手段３０は、ＣＰＵ１が、記憶装置３に記憶されているプログラムを実行することにより実現される。対象モデル記憶手段４０は、出力適否の判定対象となるポリゴンモデルである対象モデルを記憶した記憶手段であり、記憶装置３により実現される。ポリゴンモデルとは、ポリゴンの集合により三次元空間における所定の立体形状を表現したデータであり、３Ｄプリンタ等の立体物造形装置に立体物造形用データとして出力されるものである。本実施形態では、ポリゴンモデルのデータ形式としてＳＴＬ（Standard Triangulated Language）を採用している。規制モデルデータベース５０は、規制対象となるポリゴンモデルである規制モデルを記憶してデータベース化したものであり、記憶装置３により実現される。
【００４７】
図２に示した各構成手段は、現実には図１に示したように、コンピュータおよびその周辺機器等のハードウェアに専用のプログラムを搭載することにより実現される。すなわち、コンピュータが、専用のプログラムに従って各手段の内容を実行することになる。なお、本明細書において、コンピュータとは、ＣＰＵ等の演算処理部を有し、データ処理が可能な装置を意味し、パーソナルコンピュータなどの汎用コンピュータだけでなく、製品としての“３Ｄプリンタ”に組み込まれたボードコンピュータも含む。
【００４８】
図１に示した記憶装置３には、ＣＰＵ１を動作させ、コンピュータを、立体物造形用データ出力規制装置として機能させるための専用のプログラムが実装されている。この専用のプログラムを実行することにより、ＣＰＵ１は、ポリゴン削減手段１０、ポリゴン正規化手段２０、ポリゴンモデル照合手段３０としての機能を実現することになる。また、記憶装置３は、対象モデル記憶手段４０、規制モデルデータベース５０として機能するだけでなく、立体物造形用データ出力規制装置としての処理に必要な様々なデータを記憶する。
【００４９】
＜２．処理動作＞
＜２．１．前処理＞
次に、図１、図２に示した立体物造形用データ出力規制装置の処理動作について説明する。まず、規制モデルデータベース５０に登録する対象となるポリゴンモデルである規制モデルを作製する。これは、規制対象となるポリゴンモデルである規制モデルについて、ポリゴンの削減、ポリゴンの正規化をすることにより行われる。この結果、規制モデルを構成するポリゴンの数が、所定数以下となり、正規化されて規制モデルデータベース５０に登録される。規制モデルのポリゴンの削減、ポリゴンの正規化については、後述する立体物造形用データ出力規制装置における処理と同様に行うことができる。規制モデルのポリゴンの削減、ポリゴンの正規化は、立体物造形用データ出力規制装置で行ってもよいし、別のコンピュータで同様のプログラムを実行することにより行ってもよい。
【００５０】
＜２．２．処理概要＞
次に、図１、図２に示した立体物造形用データ出力規制装置の処理動作について説明する。図３は、本発明の一実施形態に係る立体物造形用データ出力規制装置の処理概要を示すフローチャートである。まず、ポリゴン削減手段１０が、対象モデル記憶手段４０から、適否判定対象のポリゴンモデルである対象モデルを読み込み、対象モデルを構成するポリゴンを削減する（ステップＳ１００）。次に、ポリゴンが削減された対象モデルの正規化を行う（ステップＳ２００）。続いて、正規化された対象モデルと、規制モデルデータベース５０に登録されたポリゴンモデルである規制モデルとの照合を行う（ステップＳ３００）。
【００５１】
＜２．３．ポリゴン削減処理＞
まず、ステップＳ１００のポリゴン削減処理について説明する。図４は、ポリゴン削減処理の詳細を示すフローチャートである。図４の例では、対象モデルが複数の領域に分類され、領域ごとのポリゴン集合として記録されている場合を示している。領域とは、１つの立体物を複数に分けた領域であり、部品により組み立てられた物品であれば、各部品に相当するものである。まず、ポリゴン削減手段１０が、対象モデル記憶手段４０から、１つの領域について対象モデルのポリゴン集合を読み込み、複数のグループに分類する（ステップＳ１１０）。次に、各グループのポリゴン集合に対して、ポリゴン削減手段１０は、ポリゴン削除処理を実行する（ステップＳ１２０）。ポリゴン削減手段１０は、全グループについてポリゴン削除処理が終了したか否かを判定し（ステップＳ１３０）、全グループについて終了していない場合は、未処理のグループに対してステップＳ１２０のポリゴン削除処理を実行する。全グループに対するポリゴン削除処理が終了した場合は、ポリゴン削減手段１０は、隔離された小体積グループの削除を行う（ステップＳ１４０）。続いて、ポリゴン削減手段１０は、全グループのポリゴン集合の合成を行う（ステップＳ１５０）。ポリゴン削減手段１０が、全領域について処理が終了したか否かを判定し（ステップＳ１６０）、全領域について終了していない場合は、未処理の領域に対してステップＳ１１０〜Ｓ１５０の処理を実行する。全領域に対する処理が終了した場合は、ポリゴン削減手段１０が、全領域の領域別ポリゴン集合の合成を行う（ステップＳ１７０）。
【００５２】
＜２．３．１．グループ分類処理＞
まず、ステップＳ１１０におけるグループ分類処理について説明する。図５は、ポリゴン削減手段１０によるグループ分類処理の詳細を示すフローチャートである。ポリゴン削減手段１０は、まず、初期設定を行う（ステップＳ１１）。具体的には、読み込んだ領域別ポリゴン集合を構成するポリゴン数Ｐ、ポリゴンを特定する変数ｐ（ｐ＝０，・・・，Ｐ−１）、探索ステータスＳｔ（ｐ）、グループ属性Ｇ（ｐ）、グループを特定する変数ｇを設定する。探索ステータスＳｔ（ｐ）は、０、１、２のいずれかの値をとる。Ｓｔ（ｐ）＝０はグループに未分類の状態、Ｓｔ（ｐ）＝１はグループに分類された状態、Ｓｔ（ｐ）＝２は、そのポリゴンに隣接するポリゴンである隣接ポリゴンがグループに分類された状態を示す。さらに、ステップＳ１１においては、ｐ＝０，・・・，Ｐ−１の全てのｐについてＳｔ（ｐ）＝Ｇ（ｐ）＝０、ｇ＝１と初期設定する。
【００５３】
次に、全ポリゴンより、Ｓｔ（ｐ）＝Ｇ（ｐ）＝０となるポリゴンｐを１つ抽出する（ステップＳ１２）。初期状態では、全てＳｔ（ｐ）＝Ｇ（ｐ）＝０であるので、初回は必ず抽出が行われる。Ｓｔ（ｐ）＝Ｇ（ｐ）＝０となるポリゴンｐが複数存在する場合は、例えばｐの値が最も小さいものを抽出する。ステップＳ１２において、Ｓｔ（ｐ）＝Ｇ（ｐ）＝０となるポリゴンｐが存在しない場合、すなわち、全てのｐ＝０，・・・，Ｐ−１について、Ｓｔ（ｐ）＝２である場合、ｇ−１個のグループに分離できたものとしてグループ分類処理を終了する。なお、ステップＳ１２において、Ｓｔ（ｐ）＝１である状態は存在しないため、Ｓｔ（ｐ）は“０”か“２”のいずれかの状態である。Ｓｔ（ｐ）＝Ｇ（ｐ）＝０となるポリゴンｐが抽出できた場合は、抽出したポリゴンｐに対応する探索ステータスＳｔ（ｐ）＝１、グループ属性Ｇ（ｐ）＝ｇに設定する。
【００５４】
ステップＳ１２において、Ｓｔ（ｐ）＝Ｇ（ｐ）＝０となるポリゴンｐを１つ抽出し、抽出したポリゴンｐに対応する探索ステータスＳｔ（ｐ）＝１、グループ属性Ｇ（ｐ）＝ｇに設定した場合は、全ポリゴンより、Ｓｔ（ｑ）＝１となるポリゴンｑを１つ抽出する（ステップＳ１３）。ｑはポリゴンを特定する変数であり、ポリゴンｐと同様、ｑ＝０，・・・，Ｐ−１内のいずれかの整数値をとる。Ｓｔ（ｑ）＝１となるポリゴンｑが複数存在する場合は、例えばｑの値が最も小さいものを抽出する。ステップＳ１３において、Ｓｔ（ｑ）＝１となるポリゴンｑが存在しない場合、すなわち、全てのＳｔ（ｑ）＝０または２である場合、グループを特定する変数ｇを１インクリメント（ｇ←ｇ＋１）する（ステップＳ１４）。そしてステップＳ１２に戻り、次のグループへの分類を行う。
【００５５】
ステップＳ１３において、Ｓｔ（ｑ）＝１となるポリゴンｑを１つ抽出した場合、全ポリゴンより、Ｓｔ（ｒ）＝Ｇ（ｒ）＝０であって、抽出されたポリゴンｑと２頂点を共有する隣接ポリゴンｒを全て抽出する（ステップＳ１５）。ｒはポリゴンを特定する変数であり、ポリゴンｐ、ｑと同様、ｒ＝０，・・・，Ｐ−１内のいずれかの整数値をとる。“ポリゴンｑと２頂点を共有する”とは、ポリゴンｑと一つの辺を共有することを意味する。すなわち、隣接ポリゴンｒは一つの辺を共有することによりポリゴンｑと隣接するポリゴンである。抽出された隣接ポリゴンについては、それぞれ探索ステータスＳｔ（ｒ）＝１、グループ属性Ｇ（ｒ）＝ｇに設定する。
【００５６】
次に、ポリゴンｑの探索ステータスＳｔ（ｑ）＝２に設定する（ステップＳ１６）。すなわち、ポリゴンｑについては、隣接ポリゴンを設定した後の状態とする。そして、ステップＳ１３に戻って、全ポリゴンの中から、Ｓｔ（ｑ）＝１となるポリゴンｑを１つ抽出する。
【００５７】
図５に示したフローチャートでは、ステップＳ１２、Ｓ１３、Ｓ１４で構成されるループと、ステップＳ１３、Ｓ１５、Ｓ１６で構成されるループの２つのループ処理が存在する。ステップＳ１２、Ｓ１３、Ｓ１４で構成されるループでは、グループに未分類のポリゴンを抽出してグループに分類し（ステップＳ１２）、グループに分類済みのポリゴンの中から１つを隣接ポリゴン探索用のポリゴンとして抽出できない場合（ステップＳ１３）は、そのグループに分類すべきポリゴンは、存在しないものとして、次のグループに移行（ｇ←ｇ＋１）する（ステップＳ１４）。ステップＳ１２、Ｓ１３、Ｓ１４で構成されるループでは、連続する一塊のポリゴン群を一つのグループとして分類する。したがって、ステップＳ１３において、Ｓｔ（ｑ）＝１となるポリゴンが存在しない場合には、グループに分類済みのいずれかのポリゴンに隣接するポリゴンが存在しないことになるので、グループｇへの分類を終え、グループｇ＋１への分類に移行するのである。
【００５８】
ステップＳ１３、Ｓ１５、Ｓ１６で構成されるループでは、グループに分類済みのポリゴンの中から１つを隣接ポリゴン探索用のポリゴンｑとして抽出し（ステップＳ１３）、全ポリゴンの中からポリゴンｑと２頂点を共有するポリゴンを隣接ポリゴンｒとして抽出し（ステップＳ１５）、抽出できた場合も抽出できない場合も、探索用のポリゴンｑの探索ステータスＳｔ（ｑ）を、ポリゴンｑに隣接するポリゴンの探索を終えた状態であるＳｔ（ｑ）＝２に設定する。
【００５９】
ステップＳ１２、Ｓ１３、Ｓ１４で構成されるループと、ステップＳ１３、Ｓ１５、Ｓ１６で構成されるループの２つのループ処理を用いることにより、全Ｐ個のポリゴンが、２頂点を共有して連続するポリゴン群ごとにグループに分類される。１頂点しか共有しないポリゴンのみで隣接している場合は、別のグループとして分類されることになる。図５に従った処理を実行することにより領域別ポリゴン集合を構成するポリゴンは複数のグループに分類されることになる。
【００６０】
＜２．３．２．ポリゴン削除処理＞
次に、ステップＳ１２０におけるポリゴン削減手段１０によるポリゴン削除処理について説明する。図６は、ポリゴン削除の基本原理を示す図である。ポリゴン集合は、現実には、空間における三次元の値をもつポリゴン群であるが、図６の例では、説明の便宜上、二次元の値をもつポリゴン群を示している。図６（ａ）の例では、削除前、１８個のポリゴンからなるポリゴン群を示している。
【００６１】
図７は、ポリゴン削減手段１０によるポリゴン削除処理の詳細を示すフローチャートである。まず、ポリゴン削減手段１０は、ポリゴン集合を構成する全ポリゴンを対象として、各ポリゴンの面積および周長を算出する（ステップＳ２１）。次に、ポリゴン削減手段１０は、算出された面積と周長を乗じた値が最小となるポリゴンを削除対象ポリゴンとして選定する（ステップＳ２２）。図６の例では、図６（ｂ）に示すように、３個の頂点Ｅ、Ｊ、Ｋで構成されるポリゴンＥＪＫが削除対象ポリゴンとして選定される。
【００６２】
続いて、ポリゴン削減手段１０は、削除対象ポリゴンの３辺のうち最短の１辺を削除対象辺として選定し、選定した削除対象辺の中点を算出する（ステップＳ２３）。図６の例では、図６（ｃ）に示すように、削除対象ポリゴンＥＪＫの辺ＪＫが削除対象辺として選定される。さらに、辺ＪＫの中点Ｏが算出される。
【００６３】
次に、ポリゴン削減手段１０は、削除対象ポリゴンを削除する（ステップＳ２４）。これによりポリゴン数が１つ削減されることになる。次に、ポリゴン削減手段１０は、削除対象ポリゴンの削除対象辺と頂点を共有していた削除頂点共有ポリゴンを順次選定する（ステップＳ２５）。削除対象ポリゴンの削除対象辺と２頂点を共有（すなわち辺を共有）している削除頂点共有ポリゴンが選定された場合には、ポリゴン削減手段１０は、その削除頂点共有ポリゴンを削除する（ステップＳ２６）。図６の例では、３個の頂点Ｊ、Ｋ、Ｎで構成されるポリゴンＪＫＮが削除される。これによりさらにポリゴン数が１つ削減されることになる。削除対象ポリゴンの削除対象辺と１頂点を共有している削除頂点共有ポリゴンが選定された場合には、ポリゴン削減手段１０は、共有頂点をステップＳ２３で算出された中点に補正し、面積および周長を再算出する（ステップＳ２７）。図６の例では、図６（ｃ）と図６（ｄ）を比較するとわかるように、ポリゴンＥＨＪ→ポリゴンＥＨＯ、ポリゴンＥＦＫ→ポリゴンＥＦＯ、ポリゴンＨＪＭ→ポリゴンＨＯＭ、ポリゴンＪＭＮ→ポリゴンＯＭＮ、ポリゴンＦＫＮ→ポリゴンＦＯＮに変更される。この結果、図６の例では、図６（ａ）の時点では、１８個あったポリゴンが、図６（ｄ）の時点では、１６個に削減される。
【００６４】
ステップＳ２５〜ステップＳ２７の処理を終えたら、ポリゴン削減手段１０は、削減後の全ポリゴン数が、設定された目標値以下となっているか否かを判定する（ステップＳ２８）。目標値としては、事前に任意の値を設定することができる。判定の結果、全ポリゴン数が目標値以下となっていない場合は、ステップＳ２２に戻って、ポリゴン削減手段１０は、残っているポリゴンの中から、面積と周長を乗じた値が最小となるポリゴンを削除対象ポリゴンとして選定する。ステップＳ２８における判定の結果、全ポリゴン数が目標値以下である場合は、ポリゴン削減処理を終了する。図７のフローチャートに従った処理を実行することにより、各グループについて設定された目標値以下になるように、ポリゴン数が削減されることになる。
【００６５】
＜２．３．３．小体積グループ削除処理＞
次に、ステップＳ１４０におけるポリゴン削減手段１０による隔離された小体積グループの削除処理について説明する。ここで、隔離された小体積グループの削除処理の説明に先立ち、隔離された小体積グループの削除処理を行う理由について説明しておく。図８は、ポリゴン削除処理により生じる問題を説明するための図である。図８（ａ）は、ステップＳ１１０のグループ分類処理を終えた直後の２グループのポリゴン群を示している。図８（ａ）の例では、頂点Ｄ、Ｅ、Ｋを含む左側のグループと、頂点Ｄ’、Ｅ’、Ｋ’を含む右側のグループが存在する。頂点ＤとＤ’、頂点ＥとＥ’、頂点ＫとＫ’がそれぞれ３Ｄプリンタの解像度以下である場合、この２グループのポリゴン群を３Ｄプリンタで出力すると、頂点ＤとＤ’、頂点ＥとＥ’、頂点ＫとＫ’は樹脂等により連結され、２グループは連結した物体として出力される。すなわち、２グループは物理的には接着されている。
【００６６】
図８（ａ）に示した右側のグループのポリゴン群に対して、ステップＳ１２０におけるポリゴン削除処理を実行すると、図８（ｂ）に示すように、ポリゴンＥ’ＦＫ’が削除対象ポリゴンとして選定される。さらに、図８（ｃ）に示すように、削除対象ポリゴンＥ’ＦＫ’の最短辺Ｅ’Ｆが削除対象辺として選定され、辺Ｅ’Ｆの中点Ｏが算出される。そして、図８（ｄ）に示すように、削除対象ポリゴンＥ’ＦＫ’と、削除頂点共有ポリゴンＤ’Ｅ’Ｆが削除される。
【００６７】
図８（ａ）と図８（ｄ）を比較するとわかるように、左右の２つのグループは、ポリゴン削除処理前に比べて、ポリゴン削除処理後には、より離れてしまっている。図８（ｄ）に示した２グループの距離が、３Ｄプリンタの解像度を超えると、２グループのポリゴン群を３Ｄプリンタで出力した場合、２グループは別の物体として出力される。２つのグループがともに大きな物体となれば、問題はない。しかし、一つが非常に小さな物体となる場合、例えば、一方のグループが本体であって、他方のグループが本体に付属するヒゲのようなものである場合、本体と別に出力されたヒゲは、３Ｄプリンタ内に紛れ込み、機械詰まり等の問題を引き起こす恐れがある。このような問題を除去するため、上述のヒゲのような隔離された小体積グループの削除処理を行うのである。
【００６８】
図９は、ポリゴン削減手段１０による隔離された小体積グループの削除処理の詳細を示すフローチャートである。ポリゴン削減手段１０は、まず、グループごとに全ポリゴンの全頂点を対象として、Ｘ、Ｙ、Ｚぞれぞれの方向の最大値および最小値を算出する（ステップＳ４１）。この結果、グループｇに対して、最小値Ｘｍｉｎ（ｇ）、最大値Ｘｍａｘ（ｇ）、最小値Ｙｍｉｎ（ｇ）、最大値Ｙｍａｘ（ｇ）、最小値Ｚｍｉｎ（ｇ）、最大値Ｚｍａｘ（ｇ）が得られる。次に、ポリゴン削減手段１０は、グループごとに外接直方体の体積を算出する（ステップＳ４２）。具体的には、以下の〔数式１〕に従った処理を実行することにより、グループｇの外接直方体の体積Ｖ（ｇ）を算出する。
【００６９】
〔数式１〕
Ｖ（ｇ）＝（Ｘｍａｘ（ｇ）−Ｘｍｉｎ（ｇ））×（Ｙｍａｘ（ｇ）−Ｙｍｉｎ（ｇ））×（Ｚｍａｘ（ｇ）−Ｚｍｉｎ（ｇ））
【００７０】
ポリゴン削減手段１０は、全グループに対してステップＳ４１、Ｓ４２の処理を実行する。これにより、全グループについて、外接直方体の体積が得られる。次に、ポリゴン削減手段１０は、全グループの中で外接直方体の体積が最小となるグループを特定する（ステップＳ４３）。そして、ポリゴン削減手段１０は、特定したグループと他の全てのグループとの最小間隔を算出する（ステップＳ４４）。ステップＳ４４における最小間隔の算出処理の詳細については後述する。
【００７１】
続いて、ポリゴン削減手段１０は、ステップＳ４４において算出された最小間隔が所定のしきい値以上か否かを判定する（ステップＳ４５）。最小間隔と比較するための所定のしきい値としては、３Ｄプリンタ出力時に０．２ｍｍに相当する数値とすることが好ましい。判定の結果、最小間隔が所定のしきい値以上である場合は、体積最小のグループが、最も近いグループとも所定の距離以上離れていることになるので、ポリゴン削減手段１０は、体積最小のグループを削除する処理を行う（ステップＳ４６）。ステップＳ４５における判定の結果、最小間隔が所定のしきい値未満である場合は、体積最小のグループが、最も近いグループと３Ｄプリンタの解像度以下に近接していることになるので、ポリゴン削減手段１０は、体積最小のグループを削除する処理を行わない。
【００７２】
ステップＳ４６におけるグループの削除を行った場合、削除を行わなかった場合のいずれにおいても、そのグループについては処理済みとする。そして、ステップＳ４３に戻って、未処理のグループの中で外接直方体の体積が最小となるグループを特定する。ステップＳ４３〜ステップＳ４６の処理を繰り返し、全てのグループに対する処理を終えたら、隔離された小体積グループの削除処理を終了する。
【００７３】
ステップＳ４４における最小間隔の算出処理の詳細について説明する。図１０は、図９のステップＳ４４における最小間隔の算出処理の詳細を示すフローチャートである。ポリゴン削減手段１０は、初期値として、最小間隔を示す変数ｄｍｉｎに所定以上の値を設定する。ｄｍｉｎに与える初期値としては、グループ間の最小間隔としてあり得ない大きな値を設定しておけばよい。そして、ポリゴン削減手段１０は、全グループの中から、グループｇより体積が大きい１つのグループｈを抽出する（ステップＳ４７）。この結果、グループｈについて、最小値Ｘｍｉｎ（ｈ）、最大値Ｘｍａｘ（ｈ）、最小値Ｙｍｉｎ（ｈ）、最大値Ｙｍａｘ（ｈ）、最小値Ｚｍｉｎ（ｈ）、最大値Ｚｍａｘ（ｈ）が得られる。次に、ポリゴン削減手段１０は、Ｘ、Ｙ、Ｚの各方向別に２グループ間の差分の最小値を算出する（ステップＳ４８）。具体的には、以下の〔数式２〕に従った処理を実行することにより、Ｘ方向の差分の最小値ｄｘ、Ｙ方向の差分の最小値ｄｙ、Ｚ方向の差分の最小値ｄｚを算出する。
【００７４】
〔数式２〕
ｄｘ＝Ｍｉｎ｛｜Ｘｍａｘ（ｇ）−Ｘｍｉｎ（ｈ）｜，｜Ｘｍｉｎ（ｇ）−Ｘｍａｘ（ｈ）｜｝
ｄｙ＝Ｍｉｎ｛｜Ｙｍａｘ（ｇ）−Ｙｍｉｎ（ｈ）｜，｜Ｙｍｉｎ（ｇ）−Ｙｍａｘ（ｈ）｜｝
ｄｚ＝Ｍｉｎ｛｜Ｚｍａｘ（ｇ）−Ｚｍｉｎ（ｈ）｜，｜Ｚｍｉｎ（ｇ）−Ｚｍａｘ（ｈ）｜｝
【００７５】
続いて、ポリゴン削減手段１０は、算出された方向別最小値のうち最大のものをグループ間最小値とし、グループ間最小値を、既に処理済みの他のグループ間における全グループ間最小値と比較し、小さい方を全グループ間最小値とする処理を行う（ステップＳ４９）。具体的には、ステップＳ４８において算出された３つの方向別最小値ｄｘ、ｄｙ、ｄｚのうち、最大の値をとるグループ間最小値Ｍａｘ（ｄｘ、ｄｙ、ｄｚ）とｄｍｉｎを比較し、Ｍａｘ（ｄｘ、ｄｙ、ｄｚ）＜ｄｍｉｎの場合、ｄｍｉｎ＝Ｍａｘ（ｄｘ、ｄｙ、ｄｚ）とする。これにより、ｄｍｉｎには、グループ間最小値の中で最小の値となる全グループ間最小値が記録されることになる。
【００７６】
ステップＳ４７、Ｓ４８、Ｓ４９の処理を繰り返して実行し、グループｇより体積が大きい全てのグループに対する処理を終えたら、図１０に示した最小間隔の算出処理を終了し、図９のステップＳ４５に進んで、最小間隔ｄｍｉｎとしきい値との比較を行うことになる。
【００７７】
＜２．３．４．ポリゴン集合の合成＞
図４のフローチャートに示したように、ステップＳ１５０においては、ポリゴン削減手段１０が、全グループのポリゴン集合の合成を行って更新された領域別ポリゴン集合を得る。また、ステップＳ１７０においては、ポリゴン削減手段１０が、全領域の領域別ポリゴン集合の合成を行って合成ポリゴン集合を得る。いずれの合成処理も、ヘッダ部を除く領域別ポリゴン集合を単純に結合し、ヘッダ部に合算されたポリゴン数を記録することにより行われる。合成ポリゴン集合は、ポリゴンが削減された対象モデルとなる。
【００７８】
＜２．４．ポリゴン正規化処理＞
次に、ステップＳ２００のポリゴン正規化処理について説明する。出願人は、上記特許文献４において、対象モデルの基準点から最も遠いポリゴンまでの最長距離が所定の長さになるように対象モデルをスケーリング調整し、最長距離の方向がＺ軸に一致するように対象モデルを回転させることにより、所定の位置、スケール、傾きに正規化し、規制モデルと照合する技術を提案している。特許文献４においては、最長距離の方向を主軸とするため、対象モデルに対称性があると、基準点は一意的に定まるものの、基準点から同一距離をもつポリゴンが複数存在し、基準点から最長距離のポリゴン平均点の方向で定義される主軸は複数の主軸候補の中から、距離計算に含有する誤差成分の大小関係で決定されてしまうため、選択される主軸がモデルごとにバラツキが生じ一意的に定まらない（各ポリゴンのＸＹＺ座標が実数値で記録されているため、スケーリング、回転等の実数乗算を伴う演算操作により誤差が累積し、誤差の累積のされ方がポリゴンごとに異なる）。例えば、規制モデルおよび対象モデルの各々に同一の最長距離をもつ主軸候補が６つ存在する場合、基準点からポリゴン平均点までの距離の大小関係だけで判断しようとすると、６つの候補の中のどれが選択されるかを予測することは数学的に困難で、サイコロを振る感覚で決定される。対象モデル内で所定の順番にポリゴンが配置されたポリゴン配列の先頭（通常ポリゴン番号の最小のもの）から主軸候補を探索し、最初に見つかった最長距離のポリゴンを主軸に選定する方法に統一しても、物理的には同一距離であっても、後続するポリゴンの方が計算誤差分だけ距離がわずかながら長ければ、後続のポリゴンの方向が主軸に選定される可能性がある。すると、規制モデルと対象モデルとで異なった主軸を選定することもあり得る。この場合、互いに異なる主軸を基準にアングル補正が行われるが、完全対称形であれば、異なる主軸を基準に補正された形状も同一になるため照合に支障はない。しかし、非対称な部分があると、異なる主軸を基準に補正された形状の一部が不整合になり適切な照合が行えないという問題がある。
【００７９】
図１１は、従来のポリゴン正規化の問題点を示す図である。図１１（ａ）（ｂ）のいずれも、左側が対象モデル、右側が規制モデルを示している。図１１（ａ）は、対象モデル、規制モデルがともに完全対称形である場合を示している。図１１（ａ）の例では、主軸候補１と主軸候補２の２つの最長距離方向が主軸として選ばれる可能性がある。このとき、図１１（ａ）に示すように、対象モデルでは実線表記の主軸候補１が主軸として選ばれ、規制モデルでは破線表記の主軸候補２が主軸として選ばれたとしても、適切な照合を行うことが可能である。しかし、図１１（ｂ）に示すように完全対称形でない場合は、対象モデルでは実線表記の主軸候補１が主軸として選ばれ、規制モデルでは破線表記の主軸候補２が主軸として選ばれた場合、適切な照合を行うことが難しい。このような問題に対して、本発明では、ポリゴン正規化処理について新たに２通りの手法を提案する。
【００８０】
＜２．４．１．ポリゴン正規化処理（第１の手法）＞
ステップＳ２００におけるポリゴン正規化処理には、２通りの手法がある。まず、第１の手法について説明する。図１２は、ステップＳ２００のポリゴン正規化処理の第１の手法を示すフローチャートである。ここでは、ステップＳ１００においてポリゴン数が削減された対象モデルのポリゴン数Ｎ、ポリゴンを特定する変数ｉ（ｉ＝０，・・・，Ｎ−１）とし、各ポリゴンｉの頂点を（Ｘｋ（ｉ），Ｙｋ（ｉ），Ｚｋ（ｉ））と定義されたものとする。ｋは頂点番号を示しており、本実施形態では、ポリゴンが三角形であるため、ｋ＝０，１，２の３つの値をとる。
【００８１】
まず、ステップＳ１００においてポリゴン数が削減された対象モデルにおける基準点を算出する（ステップＳ２０１）。具体的には、ポリゴンモデルを構成する各ポリゴンについて、頂点の平均となる平均点を算出し、ポリゴンモデルを構成するＮ個のポリゴンの平均点の平均値をポリゴンモデルの基準点として算出する。具体的には、まず、以下の〔数式３〕に従った処理を実行することにより、各ポリゴンの平均点（Ｘｃ（ｉ），Ｙｃ（ｉ），Ｚｃ（ｉ））を算出する。
【００８２】
〔数式３〕
Ｘｃ（ｉ）＝｛Ｘ０（ｉ）＋Ｘ１（ｉ）＋Ｘ２（ｉ）｝／３
Ｙｃ（ｉ）＝｛Ｙ０（ｉ）＋Ｙ１（ｉ）＋Ｙ２（ｉ）｝／３
Ｚｃ（ｉ）＝｛Ｚ０（ｉ）＋Ｚ１（ｉ）＋Ｚ２（ｉ）｝／３
【００８３】
次に、以下の〔数式４〕に従った処理を実行することにより、ポリゴンモデルの基準点（Ｘｇ，Ｙｇ，Ｚｇ）を算出する。
【００８４】
〔数式４〕
Ｘｇ＝｛Σi=0,N-1Ｘｃ（ｉ）｝／Ｎ
Ｙｇ＝｛Σi=0,N-1Ｙｃ（ｉ）｝／Ｎ
Ｚｇ＝｛Σi=0,N-1Ｚｃ（ｉ）｝／Ｎ
【００８５】
上記〔数式４〕において、Σの添え字の“ｉ＝０，Ｎ−１”は、ｉが０からＮ−１の全ての整数をとる場合について、総和を求めることを示している。以下の数式においても同様である。図１３および図１４は、ポリゴン正規化処理の第１の手法の概要を示す図である。図１３および図１４において大きな直方体と小さな直方体で示した物体は、対象モデルの一例である。図１３（ａ）は、ＸＹＺの三次元空間における正規化前の対象モデルを示している。
【００８６】
次に、対象モデルの移動を行う（ステップＳ２０２）。具体的には、基準点（Ｘｇ，Ｙｇ，Ｚｇ）が三次元座標の原点（０，０，０）に位置するように、対象モデルを構成する全てのポリゴンを移動する。具体的には、以下の〔数式５〕に従った処理を実行することにより、対象モデルを移動する。
【００８７】
〔数式５〕
Ｘｋ（ｉ）←Ｘｋ（ｉ）−Ｘｇ
Ｙｋ（ｉ）←Ｙｋ（ｉ）−Ｙｇ
Ｚｋ（ｉ）←Ｚｋ（ｉ）−Ｚｇ
【００８８】
移動後、上記〔数式３〕に従った処理を実行することにより、各ポリゴンの平均点（Ｘｃ（ｉ），Ｙｃ（ｉ），Ｚｃ（ｉ））を再算出する。
【００８９】
次に、原点に移動後の基準点（Ｘｇ，Ｙｇ，Ｚｇ）から各ポリゴンの平均点までの距離を算出し、そのうち最長である最長距離を求める（ステップＳ２０３）。具体的には、以下の〔数式６〕に従った処理を実行することにより、最長距離Ｌｍａｘを算出する。
【００９０】
〔数式６〕
Ｌｍａｘ
＝Ｍａｘi=0,N-1｛（Ｘｃ（ｉ））2＋（Ｙｃ（ｉ））2＋（Ｚｃ（ｉ））2｝1/2
＝｛（Ｘｃ（ｉｍ））2＋（Ｙｃ（ｉｍ））2＋（Ｚｃ（ｉｍ））2｝1/2
【００９１】
上記〔数式６〕において、Ｍａｘの添え字の“ｉ＝０，Ｎ−１”は、ｉが０からＮ−１の全ての整数をとる場合における、最大値を選択することを示している。以下の数式においても同様である。また、“ｉｍ”は、基準点との距離が最大となるポリゴンである最遠ポリゴンのポリゴン番号を示している。
【００９２】
次に、主軸候補を複数抽出する（ステップＳ２０４）。具体的には、基準点（Ｘｇ，Ｙｇ，Ｚｇ）から各ポリゴンの平均点までの距離が、最長距離Ｌｍａｘ−微小量ｄ以上となる主軸候補を全て抽出する。微小量ｄは、浮動小数点演算の誤差等で端数に相違がある程度のものであり、物理的に最長距離Ｌｍａｘと一致するとみなせるものを設定することができる。したがって、微小量ｄとしては、Ｌｍａｘ×０．００００１〜Ｌｍａｘ×０．００１の範囲で設定することができるが、本実施形態では、ｄ＝Ｌｍａｘ×０．０００１に設定している。ステップＳ２０４では、以下の〔数式７〕に示した条件を満たすポリゴンｉに対応する主軸候補を抽出する。
【００９３】
〔数式７〕
｛（Ｘｃ（ｉ））2＋（Ｙｃ（ｉ））2＋（Ｚｃ（ｉ））2｝1/2≧Ｌｍａｘ−ｄ
【００９４】
主軸候補には、基準点と抽出されたポリゴンｉの平均点とを結ぶ線分の長さが〔数式７〕に示した条件を満たすものが全て抽出される。したがって、主軸候補は、方向と長さを持つ線分となる。主軸候補には、最長距離となったものは当然含まれる。すなわち最遠ポリゴンｉｍに対応するものも主軸候補として選ばれる。この結果、図１３（ｂ）に示すように、基準点が原点（０，０，０）と一致し、複数の主軸候補が抽出される。図１３（ｂ）では、主軸候補１と主軸候補２の２つが、主軸候補として抽出された例を示し、その内の一方は必ず最長距離となった最遠ポリゴンｉｍを示すものになっている。
【００９５】
次に、主軸の選定およびスケーリングを行う（ステップＳ２０５）。具体的には、まず、規制モデルと対象モデルとではポリゴン構成が同一であるか、または同一でないとしてもポリゴン配列順序の大幅な入れ替えがないと仮定できる場合（ＣＡＤデータ形式に逆変換され編集された場合など）、ポリゴン配列上で先頭に位置するポリゴンに対応する主軸候補を主軸に選定するという簡便な方法がとれる。ここで、先頭に位置するポリゴンに対応する主軸候補は、主軸候補の探索時に最初に抽出された主軸候補（その長さがＬｍａｘに一致するもの）とは必ずしも一致しない。主軸候補は、その一方の端点がポリゴンの平均点であるため、そのポリゴンのポリゴン番号と対応付けて処理される。主軸候補の探索および主軸の選定処理は２回のプロセスに渡って行われる。第１回目のプロセスでは、基準点から最長距離をもつポリゴンを１つ特定し、この最長距離をＬｍａxとする。この段階で特定されたポリゴンはあくまで主軸候補の１つである。この時、同一の最長距離Ｌｍａxをもつポリゴンが複数存在する場合、ポリゴン番号の小さい順に処理がなされていれば、ポリゴン番号が最小のものが、ポリゴン配列上で先頭に位置するポリゴンに対応する主軸候補として選定されることになる。第２回目のプロセスでは、基準点からの長さがＬｍａｘ−ｄ以上を満たすポリゴンを主軸候補として全て抽出する。この段階で抽出された複数個（２個以上）の主軸候補より、ポリゴン番号が最小のものを主軸として選定する。この段階で抽出された主軸候補が１つしか無い場合、即ち第１回目のプロセスで特定されたポリゴン以外に該当する他のポリゴンが見つからなかった場合は、当該ポリゴン平均点への方向が主軸として決定される。最長距離から所定の範囲内にあるものであれば、どれを選んでも同じであるため、事前に設定した規則に従って、例えばポリゴン番号が２番目に小さいもの、ポリゴン番号が最大のもの、等を選定することも可能である。平均点が（Ｘｃ（Ｔ），Ｙｃ（Ｔ），Ｚｃ（Ｔ））であるポリゴンＴを主軸に選定した場合、以下の〔数式８〕に従った処理を実行することにより、主軸長さＬＴを算出する。
【００９６】
〔数式８〕
ＬＴ＝｛（Ｘｃ（Ｔ））2＋（Ｙｃ（Ｔ））2＋（Ｚｃ（Ｔ））2｝1/2
【００９７】
続いて、スケーリングを行う。具体的には、以下の〔数式９〕に従った処理を実行することにより、主軸長さＬＴが基準長になるように各ポリゴンの頂点座標および平均点座標を補正する。
【００９８】
〔数式９〕
Ｘｋ'（ｉ）＝Ｘｋ（ｉ）×１００／ＬＴ
Ｙｋ'（ｉ）＝Ｙｋ（ｉ）×１００／ＬＴ
Ｚｋ'（ｉ）＝Ｚｋ（ｉ）×１００／ＬＴ
Ｘｃ'（ｉ）＝｛Ｘ０'（ｉ）＋Ｘ１'（ｉ）＋Ｘ２'（ｉ）｝／３
Ｙｃ'（ｉ）＝｛Ｙ０'（ｉ）＋Ｙ１'（ｉ）＋Ｙ２'（ｉ）｝／３
Ｚｃ'（ｉ）＝｛Ｚ０'（ｉ）＋Ｚ１'（ｉ）＋Ｚ２'（ｉ）｝／３
【００９９】
上記〔数式９〕は、上記基準長を“１００”とした場合を示している。ステップＳ２０５の処理により、各ポリゴンｉの頂点は、（Ｘｋ'（ｉ），Ｙｋ'（ｉ），Ｚｋ'（ｉ））、各ポリゴンｉの平均点は（Ｘｃ'（ｉ），Ｙｃ'（ｉ），Ｚｃ'（ｉ））となる。また、対象モデルは、図１３（ｃ）に示すように、主軸が選定され、選定された主軸の長さが基準長に変更される。
【０１００】
次に、ＸＺ座標上で主軸をＺ軸正方向に揃えるようにＹ軸中心回転を行う（ステップＳ２０６）。具体的には、まず、以下の〔数式１０〕に従った処理を実行することにより、主軸とＺ軸正方向との角度Ａｎｇ、主軸ポリゴンＴの平均点Ｚ座標Ｚｃ''Ｔを求める。なお、主軸ポリゴンとは、主軸の一方の端点がそのポリゴンの平均点となるポリゴンである。
【０１０１】
〔数式１０〕
Ａｎｇ＝−ｔａｎ-1（Ｘｃ'（Ｔ）／Ｚｃ'（Ｔ））
Ｚｃ''（Ｔ）＝ｃｏｓ（Ａｎｇ）×Ｚｃ'（Ｔ）−ｓｉｎ（Ａｎｇ）×Ｘｃ'（Ｔ）
【０１０２】
さらに、Ｚｃ''（Ｔ）の値に応じて場合分けし、以下の〔数式１１〕に従った処理を実行することにより、回転後の対象モデルを求める。
【０１０３】
〔数式１１〕
ｉ＝０，・・・，Ｎ−１、ｋ＝０，１，２において、
１）Ｚｃ''（Ｔ）≧０の場合
Ｚｋ''（ｉ）＝ｃｏｓ（Ａｎｇ）×Ｚｋ'（ｉ）−ｓｉｎ（Ａｎｇ）×Ｘｋ'（ｉ）
Ｘｋ''（ｉ）＝ｓｉｎ（Ａｎｇ）×Ｚｋ'（ｉ）＋ｃｏｓ（Ａｎｇ）×Ｘｋ'（ｉ）
Ｚｃ''（Ｔ）＝ｃｏｓ（Ａｎｇ）×Ｚｃ'（Ｔ）−ｓｉｎ（Ａｎｇ）×Ｘｃ'（Ｔ）
Ｘｃ''（Ｔ）＝ｓｉｎ（Ａｎｇ）×Ｚｃ'（Ｔ）＋ｃｏｓ（Ａｎｇ）×Ｘｃ'（Ｔ）
２）Ｚｃ''（Ｔ）＜０の場合
Ｚｋ''（ｉ）＝−ｃｏｓ（Ａｎｇ）×Ｚｋ'（ｉ）＋ｓｉｎ（Ａｎｇ）×Ｘｋ'（ｉ）
Ｘｋ''（ｉ）＝−ｓｉｎ（Ａｎｇ）×Ｚｋ'（ｉ）−ｃｏｓ（Ａｎｇ）×Ｘｋ'（ｉ）
Ｚｃ''（Ｔ）＝−ｃｏｓ（Ａｎｇ）×Ｚｃ'（Ｔ）＋ｓｉｎ（Ａｎｇ）×Ｘｃ'（Ｔ）
Ｘｃ''（Ｔ）＝−ｓｉｎ（Ａｎｇ）×Ｚｃ'（Ｔ）−ｃｏｓ（Ａｎｇ）×Ｘｃ'（Ｔ）
Ｚｃ''（Ｔ）の値に関わらず、平均点を更新する。
Ｘｃ''（ｉ）＝｛Ｘ０''（ｉ）＋Ｘ１''（ｉ）＋Ｘ２''（ｉ）｝／３
Ｚｃ''（ｉ）＝｛Ｚ０''（ｉ）＋Ｚ１''（ｉ）＋Ｚ２''（ｉ）｝／３
【０１０４】
ステップＳ２０６の処理により、対象モデルは、図１３（ｄ）に示すように、主軸がＸＺ平面においてＺ軸正方向と重なるようになる。
【０１０５】
次に、ＹＺ座標上で主軸をＺ軸正方向に揃えるようにＸ軸中心回転を行う（ステップＳ２０７）。具体的には、まず、以下の〔数式１２〕に従った処理を実行することにより、主軸とＺ軸正方向との角度Ａｎｇ、主軸ポリゴンの平均点Ｚ座標Ｚｃ'''（ｍ）を求める。
【０１０６】
〔数式１２〕
Ａｎｇ＝−ｔａｎ-1（Ｙｃ'（Ｔ）／Ｚｃ''（Ｔ））
Ｚｃ'''（Ｔ）＝ｃｏｓ（Ａｎｇ）×Ｚｃ''（Ｔ）−ｓｉｎ（Ａｎｇ）×Ｙｃ'（Ｔ）
【０１０７】
さらに、Ｚｃ'''（Ｔ）の値に応じて場合分けし、以下の〔数式１３〕に従った処理を実行することにより、回転後の対象モデルを求める。
【０１０８】
〔数式１３〕
ｉ＝０，・・・，Ｎ−１、ｋ＝０，１，２において、
１）Ｚｃ'''（Ｔ）≧０の場合
Ｚｋ'''（ｉ）＝ｃｏｓ（Ａｎｇ）×Ｚｋ''（ｉ）−ｓｉｎ（Ａｎｇ）×Ｙｋ'（ｉ）
Ｙｋ''（ｉ）＝ｓｉｎ（Ａｎｇ）×Ｚｋ''（ｉ）＋ｃｏｓ（Ａｎｇ）×Ｙｋ'（ｉ）
２）Ｚｃ'''（Ｔ）＜０の場合
Ｚｋ'''（ｉ）＝−ｃｏｓ（Ａｎｇ）×Ｚｋ''（ｉ）＋ｓｉｎ（Ａｎｇ）×Ｙｋ'（ｉ）
Ｙｋ''（ｉ）＝−ｓｉｎ（Ａｎｇ）×Ｚｋ''（ｉ）−ｃｏｓ（Ａｎｇ）×Ｙｋ'（ｉ）
Ｚｃ''（Ｔ）の値に関わらず、平均点を更新する。
Ｙｃ''（ｉ）＝｛Ｙ０''（ｉ）＋Ｙ１''（ｉ）＋Ｙ２''（ｉ）｝／３
Ｚｃ'''（ｉ）＝｛Ｚ０'''（ｉ）＋Ｚ１'''（ｉ）＋Ｚ２'''（ｉ）｝／３
【０１０９】
ステップＳ２０７の処理により、対象モデルは、図１３（ｅ）に示すように、主軸がＹＺ平面においてＺ軸正方向と重なるようになる。これにより、三次元空間において、対象モデルの主軸は、Ｚ軸正方向と重なることになる。本実施形態では、主軸をＺ軸の正方向に重ねたが、負方向に重ねるようにしてもよい。
【０１１０】
次に、対象モデルの副軸を求める（ステップＳ２０８）。具体的には、ＸＹ平面上で原点（０，０，０）から各ポリゴンの平均点までの距離を算出し、そのうち最長である最長距離の線分を副軸とする。具体的には、以下の〔数式１４〕に従った処理を実行することにより、副軸長さＬｍａｘ２を算出する。
【０１１１】
〔数式１４〕
Ｌｍａｘ２＝Ｍａｘi=0,N-1｛（Ｘｃ''（ｉ））2＋（Ｙｃ（ｉ）''）2｝1/2
＝｛（Ｘｃ''（Ｔ２））2＋（Ｙｃ（Ｔ２）''）2｝1/2
【０１１２】
上記〔数式１４〕において、“Ｔ２”は、ＸＹ平面において基準点（原点）との二次元的距離が最大となるポリゴンのポリゴン番号を示している。副軸は、基準点（原点）と抽出されたポリゴンＴ２の二次元的平均点とを結ぶ線分として特定される。したがって、副軸は、方向と長さを持つ線分となる。ステップＳ２０８の処理により、対象モデルは、図１３（ｆ）に示すように、副軸が決定されることになる。
【０１１３】
次に、ＸＹ座標上で副軸をＹ軸正方向に揃えるようにＺ軸中心回転を行う（ステップＳ２０９）。具体的には、まず、以下の〔数式１５〕に従った処理を実行することにより、副軸とＺ軸正方向との角度Ａｎｇ、副軸ポリゴンの平均点Ｙ座標Ｙｃ'''（Ｔ２）を求める。なお、副軸ポリゴンとは、副軸の一方の端点がそのポリゴンの平均点となるポリゴンである。
【０１１４】
〔数式１５〕
Ａｎｇ＝−ｔａｎ-1（Ｘｃ''（Ｔ２）／Ｙｃ''（Ｔ２））
Ｙｃ'''（Ｔ２）＝ｃｏｓ（Ａｎｇ）×Ｙｃ''（Ｔ２）−ｓｉｎ（Ａｎｇ）×Ｘｃ''（ Ｔ２）
【０１１５】
さらに、Ｙｃ'''（Ｔ２）の値に応じて場合分けし、以下の〔数式１６〕に従った処理を実行することにより、回転後の対象モデルを求める。
【０１１６】
〔数式１６〕
ｉ＝０，・・・，Ｎ−１、ｋ＝０，１，２において、
１）Ｙｃ'''（Ｔ２）≧０の場合
Ｙｋ'''（ｉ）＝ｃｏｓ（Ａｎｇ）×Ｙｋ''（ｉ）−ｓｉｎ（Ａｎｇ）×Ｘｋ''（ｉ）
Ｘｋ'''（ｉ）＝ｓｉｎ（Ａｎｇ）×Ｙｋ''（ｉ）＋ｃｏｓ（Ａｎｇ）×Ｘｋ''（ｉ）
２）Ｙｃ'''（Ｔ２）＜０の場合
Ｙｋ'''（ｉ）＝−ｃｏｓ（Ａｎｇ）×Ｙｋ''（ｉ）＋ｓｉｎ（Ａｎｇ）×Ｘｋ''（ｉ）
Ｘｋ'''（ｉ）＝−ｓｉｎ（Ａｎｇ）×Ｙｋ''（ｉ）−ｃｏｓ（Ａｎｇ）×Ｘｋ''（ｉ）
Ｙｃ'''（Ｔ２）の値に関わらず、平均点を更新する。
Ｘｃ'''（ｉ）＝｛Ｘ０'''（ｉ）＋Ｘ１'''（ｉ）＋Ｘ２'''（ｉ）｝／３
Ｙｃ'''（ｉ）＝｛Ｙ０'''（ｉ）＋Ｙ１'''（ｉ）＋Ｙ２'''（ｉ）｝／３
【０１１７】
ステップＳ２０９の処理により、対象モデルは、図１４（ｇ）に示すように、副軸がＸＹ平面においてＹ軸正方向と重なるようになる。本実施形態では、副軸をＹ軸の正方向に重ねたが、負方向に重ねるようにしてもよい。
【０１１８】
上記処理の結果、正規化された対象モデルが得られる。正規化された対象モデルは、ポリゴン数Ｎ、ポリゴンを特定する変数ｉ（ｉ＝０，・・・，Ｎ−１）とし、各ポリゴンｉの頂点は（Ｘｋ'''（ｉ），Ｙｋ'''（ｉ），Ｚｋ'''（ｉ））と定義される。ｋは頂点番号を示しており、本実施形態では、ポリゴンが三角形であるため、ｋ＝０，１，２の３つの値をとる。また、各ポリゴンｉの平均点は（Ｘｃ'''（ｉ），Ｙｃ'''（ｉ），Ｚｃ'''（ｉ））と定義される。ポリゴン正規化処理の結果、図１４（ｈ）に示すように、対象モデルは、所定の位置、スケール、傾きに正規化される。
【０１１９】
＜２．４．２．ポリゴン正規化処理（第２の手法）＞
次に、ステップＳ２００におけるポリゴン正規化処理の第２の手法について説明する。前述の第１の方法では、規制モデルと対象モデルとでポリゴン構成が同一か、同一でないとしても、ポリゴン配列順序の入れ替えがないと仮定できるという適用条件があり、この仮定が成り立たない場合は全て、以下に述べる第２の手法の適用になる。図１５は、ステップＳ２００のポリゴン正規化処理の第２の手法を示すフローチャートである。第１の手法の場合と同様、ステップＳ１００においてポリゴン数が削減された対象モデルのポリゴン数Ｎ、ポリゴンを特定する変数ｉ（ｉ＝０，・・・，Ｎ−１）とし、各ポリゴンｉの頂点を（Ｘｋ（ｉ），Ｙｋ（ｉ），Ｚｋ（ｉ））と定義されたものとする。ｋは頂点番号を示しており、本実施形態では、ポリゴンが三角形であるため、ｋ＝０，１，２の３つの値をとる。
【０１２０】
まず、ステップＳ１００においてポリゴン数が削減された対象モデルにおける基準点を算出する（ステップＳ２１１）。具体的には、図１２に示した第１の手法のステップＳ２０１と同様、上記〔数式３〕に従った処理を実行することにより、各ポリゴンの平均点（Ｘｃ（ｉ），Ｙｃ（ｉ），Ｚｃ（ｉ））を算出する。
【０１２１】
次に、第１の手法のステップＳ２０１と同様、上記〔数式４〕に従った処理を実行することにより、ポリゴンモデルの基準点（Ｘｇ，Ｙｇ，Ｚｇ）を算出する。
【０１２２】
図１６〜図１８は、ポリゴン正規化処理の第２の手法の概要を示す図である。図１６〜図１８において大きな直方体と小さな直方体で示した物体は、対象モデルの一例である。図１６（ａ）は、ＸＹＺの三次元空間における正規化前の対象モデルを示している。
【０１２３】
次に、対象モデルの移動を行う（ステップＳ２１２）。具体的には、図１２に示した第１の手法のステップＳ２０２と同様、上記〔数式５〕に従った処理を実行することにより、対象モデルを移動する。
【０１２４】
移動後、上記〔数式３〕に従った処理を実行することにより、各ポリゴンの平均点（Ｘｃ（ｉ），Ｙｃ（ｉ），Ｚｃ（ｉ））を再算出する。
【０１２５】
次に、原点に移動後の基準点（Ｘｇ，Ｙｇ，Ｚｇ）から各ポリゴンの平均点までの距離を算出し、そのうち最長である最長距離を求める（ステップＳ２１３）。具体的には、図１２に示した第１の手法のステップＳ２０３と同様、上記〔数式６〕に従った処理を実行することにより、最長距離Ｌｍａｘを算出する。
【０１２６】
次に、主軸候補を複数抽出する（ステップＳ２１４）。具体的には、図１２に示した第１の手法のステップＳ２０４と同様、上記〔数式７〕に示した条件を満たすポリゴンに対応する主軸候補を全て抽出する。
【０１２７】
主軸候補には、基準点と抽出されたポリゴンの平均点とを結ぶ線分の長さが〔数式７〕に示した条件を満たすものが全て抽出される。したがって、主軸候補は、方向と長さを持つ線分となる。主軸候補には、最長距離となったものは当然含まれる。すなわち最遠ポリゴンｉｍに対応するものも主軸候補として選ばれる。この結果、図１６（ｂ）に示すように、基準点が原点（０，０，０）と一致し、複数の主軸候補が抽出される。図１６（ｂ）では、主軸候補１と主軸候補２の２つが、主軸候補として抽出された例を示し、その内の一方は必ず最長距離となった最遠ポリゴンｉｍを示すものになっている。
【０１２８】
次に、各主軸候補に対してスケーリングを行う（ステップＳ２１５）。具体的には、Ｍ個の主軸候補（図１６例ではＭ＝２）より主軸候補ｍを順次選出する（ｍ＝１，．．．，Ｍ）。まず、図１６（ｃ）に示す通り主軸候補１（ｍ＝１）を選出する。主軸候補ｍに対応するポリゴンをｔｍとすると、ｔｍについて、以下の〔数式１７〕に従った処理を実行することにより、主軸候補長さＬ（ｔｍ）を算出する。
【０１２９】
〔数式１７〕
Ｌ（ｔｍ）＝｛（Ｘｃ（ｔｍ））2＋（Ｙｃ（ｔｍ））2＋（Ｚｃ（ｔｍ））2｝1/2
【０１３０】
続いて、スケーリングを行う。具体的には、以下の〔数式１８〕に従った処理を実行することにより、主軸候補長さＬ（ｔｍ）が基準長になるように各ポリゴンの頂点座標および平均点座標を補正する。
【０１３１】
〔数式１８〕
Ｘｋ'（ｉ）＝Ｘｋ（ｉ）×１００／Ｌ（ｔｍ）
Ｙｋ'（ｉ）＝Ｙｋ（ｉ）×１００／Ｌ（ｔｍ）
Ｚｋ'（ｉ）＝Ｚｋ（ｉ）×１００／Ｌ（ｔｍ）
Ｘｃ'（ｉ）＝｛Ｘ０'（ｉ）＋Ｘ１'（ｉ）＋Ｘ２'（ｉ）｝／３
Ｙｃ'（ｉ）＝｛Ｙ０'（ｉ）＋Ｙ１'（ｉ）＋Ｙ２'（ｉ）｝／３
Ｚｃ'（ｉ）＝｛Ｚ０'（ｉ）＋Ｚ１'（ｉ）＋Ｚ２'（ｉ）｝／３
【０１３２】
上記〔数式１８〕は、上記基準長を“１００”とした場合を示している。ステップＳ２１５の処理により、各ポリゴンｉの頂点は、（Ｘｋ'（ｉ），Ｙｋ'（ｉ），Ｚｋ'（ｉ））、各ポリゴンｉの平均点は（Ｘｃ'（ｉ），Ｙｃ'（ｉ），Ｚｃ'（ｉ））となる。また、対象モデルは、図１６（ｃ）に示すように、１つの主軸候補ｍの長さが基準長となる。
【０１３３】
次に、ＸＺ座標上で主軸候補ｍをＺ軸正方向に揃えるようにＹ軸中心回転を行う（ステップＳ２１６）。具体的には、まず、以下の〔数式１９〕に従った処理を実行することにより、主軸候補ｍとＺ軸正方向との角度Ａｎｇ、主軸候補ポリゴンｔｍの平均点Ｚ座標Ｚｃ''（ｔｍ）を求める。なお、主軸候補ポリゴンｔｍとは、主軸候補ｍの一方の端点がそのポリゴンの平均点となるポリゴンである。
【０１３４】
〔数式１９〕
Ａｎｇ＝−ｔａｎ-1（Ｘｃ'（ｔｍ）／Ｚｃ'（ｔｍ））
Ｚｃ''（ｔｍ）＝ｃｏｓ（Ａｎｇ）×Ｚｃ'（ｔｍ）−ｓｉｎ（Ａｎｇ）×Ｘｃ'（ｔｍ）
【０１３５】
さらに、Ｚｃ''（ｔｍ）の値に応じて場合分けし、以下の〔数式２０〕に従った処理を実行することにより、回転後の対象モデルを求める。
【０１３６】
〔数式２０〕
ｉ＝０，・・・，Ｎ−１、ｋ＝０，１，２において、
１）Ｚｃ''（ｔｍ）≧０の場合
Ｚｋ''（ｉ）＝ｃｏｓ（Ａｎｇ）×Ｚｋ'（ｉ）−ｓｉｎ（Ａｎｇ）×Ｘｋ'（ｉ）
Ｘｋ''（ｉ）＝ｓｉｎ（Ａｎｇ）×Ｚｋ'（ｉ）＋ｃｏｓ（Ａｎｇ）×Ｘｋ'（ｉ）
Ｚｃ''（ｔｍ）＝ｃｏｓ（Ａｎｇ）×Ｚｃ'（ｔｍ）−ｓｉｎ（Ａｎｇ）×Ｘｃ'（ｔｍ）
Ｘｃ''（ｔｍ）＝ｓｉｎ（Ａｎｇ）×Ｚｃ'（ｔｍ）＋ｃｏｓ（Ａｎｇ）×Ｘｃ'（ｔｍ）
２）Ｚｃ''（ｔｍ）＜０の場合
Ｚｋ''（ｉ）＝−ｃｏｓ（Ａｎｇ）×Ｚｋ'（ｉ）＋ｓｉｎ（Ａｎｇ）×Ｘｋ'（ｉ）
Ｘｋ''（ｉ）＝−ｓｉｎ（Ａｎｇ）×Ｚｋ'（ｉ）−ｃｏｓ（Ａｎｇ）×Ｘｋ'（ｉ）
Ｚｃ''（ｔｍ）＝−ｃｏｓ（Ａｎｇ）×Ｚｃ'（ｔｍ）＋ｓｉｎ（Ａｎｇ）×Ｘｃ'（ｔｍ）
Ｘｃ''（ｔｍ）＝−ｓｉｎ（Ａｎｇ）×Ｚｃ'（ｔｍ）−ｃｏｓ（Ａｎｇ）×Ｘｃ'（ｔｍ）
Ｚｃ''（ｔｍ）の値に関わらず、平均点を更新する。
Ｘｃ''（ｉ）＝｛Ｘ０''（ｉ）＋Ｘ１''（ｉ）＋Ｘ２''（ｉ）｝／３
Ｚｃ''（ｉ）＝｛Ｚ０''（ｉ）＋Ｚ１''（ｉ）＋Ｚ２''（ｉ）｝／３
【０１３７】
ステップＳ２１６の処理により、対象モデルは、図１６（ｄ）に示すように、主軸候補ｍがＸＺ平面においてＺ軸正方向と重なるようになる。
【０１３８】
次に、ＹＺ座標上で主軸候補ｍをＺ軸正方向に揃えるようにＸ軸中心回転を行う（ステップＳ２１７）。具体的には、まず、以下の〔数式２１〕に従った処理を実行することにより、主軸とＺ軸正方向との角度Ａｎｇ、主軸候補ポリゴンｔｍの平均点Ｚ座標Ｚｃ'''（ｔｍ）を求める。
【０１３９】
〔数式２１〕
Ａｎｇ＝−ｔａｎ-1（Ｙｃ'（ｔｍ）／Ｚｃ''（ｔｍ））
Ｚｃ'''（ｔ）＝ｃｏｓ（Ａｎｇ）×Ｚｃ''（ｔ）−ｓｉｎ（Ａｎｇ）×Ｙｃ'（ｔ）
【０１４０】
さらに、Ｚｃ'''（ｔｍ）の値に応じて場合分けし、以下の〔数式２２〕に従った処理を実行することにより、回転後の対象モデルを求める。
【０１４１】
〔数式２２〕
ｉ＝０，・・・，Ｎ−１、ｋ＝０，１，２において、
１）Ｚｃ'''（ｔｍ）≧０の場合
Ｚｋ'''（ｉ）＝ｃｏｓ（Ａｎｇ）×Ｚｋ''（ｉ）−ｓｉｎ（Ａｎｇ）×Ｙｋ'（ｉ）
Ｙｋ''（ｉ）＝ｓｉｎ（Ａｎｇ）×Ｚｋ''（ｉ）＋ｃｏｓ（Ａｎｇ）×Ｙｋ'（ｉ）
２）Ｚｃ'''（ｔｍ）＜０の場合
Ｚｋ'''（ｉ）＝−ｃｏｓ（Ａｎｇ）×Ｚｋ''（ｉ）＋ｓｉｎ（Ａｎｇ）×Ｙｋ'（ｉ）
Ｙｋ''（ｉ）＝−ｓｉｎ（Ａｎｇ）×Ｚｋ''（ｉ）−ｃｏｓ（Ａｎｇ）×Ｙｋ'（ｉ）
Ｚｃ''（ｔｍ）の値に関わらず、平均点を更新する。
Ｙｃ''（ｉ）＝｛Ｙ０''（ｉ）＋Ｙ１''（ｉ）＋Ｙ２''（ｉ）｝／３
Ｚｃ'''（ｉ）＝｛Ｚ０'''（ｉ）＋Ｚ１'''（ｉ）＋Ｚ２'''（ｉ）｝／３
【０１４２】
ステップＳ２１７の処理により、対象モデルは、図１６（ｅ）に示すように、主軸候補ｍがＹＺ平面においてＺ軸正方向と重なるようになる。これにより、三次元空間において、対象モデルの主軸候補ｍは、Ｚ軸正方向と重なることになる。本実施形態では、主軸候補ｍをＺ軸の正方向に重ねたが、負方向に重ねるようにしてもよい。
【０１４３】
次に、現在処理中の主軸候補ｍに対応する副軸候補ｍを求める（ステップＳ２１８）。具体的には、ＸＺ平面上で原点（０，０，０）から各ポリゴンの平均点までの二次元的な距離を算出し、そのうち最長である最長距離Ｌｍａｘ３をもつポリゴンｔｍ２の平均点の方向を副軸候補ｍとする。具体的には、以下の〔数式２３〕に従った処理を実行することにより、副軸候補ｍに対応するポリゴンをｔｍ２として、副軸候補ｍの長さＬｍａｘ３（最長距離）を算出する。
【０１４４】
〔数式２３〕
Ｌｍａｘ３＝Ｍａｘi=0,N-1｛（Ｘｃ''（ｉ））2＋（Ｙｃ''（ｉ））2｝1/2
＝｛（Ｘｃ''（ｔｍ２））2＋（Ｙｃ''（ｔｍ２））2｝1/2
【０１４５】
ステップＳ２１８の処理により、対象モデルは、図１６（ｆ）に示すように、副軸候補ｍが決定されることになる。続いて、ステップＳ２１５に戻り、次の主軸候補である主軸候補２（ｍ＝２）を選出し、図１６（ｂ）に示す初期状態の対象モデルに戻って、新たな主軸候補２に基づいて同様にスケーリングを行う。その結果を図１７（ｇ）に示す。同様に、ステップＳ２１６に進み、図１７（ｈ）に示すように、主軸候補２がＸＺ平面においてＺ軸正方向と重なるようにする。そしてステップＳ２１７に進み、図１７（ｉ）に示すように、主軸候補２がＹＺ平面においてＺ軸正方向と重なるようにし、三次元空間において、対象モデルの主軸候補２がＺ軸正方向と重なるようにする。更に、ステップＳ２１８に進み、図１７（ｊ）に示すように、主軸候補２に対応する副軸候補２を求める。図１６・１７に示されるモデル例については、２種類の主軸候補と副軸候補のセットを選出するだけで済むが、一般的には、ステップＳ２１４において抽出されたＭ個の主軸候補ｍ（ｍ＝１，．．．，Ｍ）に対して、ステップＳ２１５〜ステップＳ２１８を繰り返して実行し、各主軸候補ｍに対応する副軸候補ｍを得る必要がある。
【０１４６】
次に得られた複数の副軸候補の中から副軸を決定する（ステップＳ２１９）。具体的には、各副軸候補ｍ（ｍ＝１，．．．，Ｍ）について、ＸＹＺ座標上で三次元的な距離Ｌ（ｍ）を算出し、距離Ｌ（ｍ）が最大となる副軸候補ｍを副軸として決定する。ただし、二番目に大きい距離Ｌ（ｍｓ）との差が所定値ｄｄ未満である場合には、最大のＬ（ｍ）をＭＬ（ｍ）としたとき、距離Ｌ（ｍ）がＭＬ（ｍ）−ｄｄ以上になる副軸候補ｍを全て抽出し、抽出された副軸候補ｍそれぞれについて、副軸候補ｍに対応する主軸候補ｍとの内積Ｓ（ｍ）＝（主軸候補ｍベクトル，副軸候補ｍベクトル）を算出し、内積Ｓ（ｍ）の正負符号を考慮してその値が最大となる副軸候補ｍを副軸として決定するとともに、対応する主軸候補ｍが主軸として決定される。即ち、主軸候補の長さが長く、副軸候補の長さが長く、主軸候補と副軸候補とのなす角が０に近い副軸候補ｍが副軸に決定されやすい。ここで、所定値ｄｄとしては、最大のＬ（ｍ）をＭＬ（ｍ）としたとき、ＭＬ（ｍ）×０．００００１〜ＭＬ（ｍ）×０．００１の範囲で設定することができるが、本実施形態では、ｄｄ＝ＭＬ（ｍ）×０．０００１に設定している。距離Ｌ（ｍ）、内積Ｓ（ｍ）は、以下の〔数式２４〕に従った処理を実行することにより算出される。
【０１４７】
〔数式２４〕
Ｌ（ｍ）＝｛（Ｘｃ（ｔｍ２））2＋（Ｙｃ（ｔｍ２））2＋（Ｚｃ（ｔｍ２））2｝1/2
Ｓ（ｍ）＝Ｘｃ（ｔｍ）×Ｘｃ（ｔｍ２）＋Ｙｃ（ｔｍ）×Ｙｃ（ｔｍ２）＋Ｚｃ（ｔｍ）×Ｚｃ（ｔｍ２）
【０１４８】
副軸は、Ｍ個の副軸候補ｍの中から選定したものであるため、基準点（原点）と抽出されたポリゴンの二次元的平均点とを結ぶ線分として特定されており、方向と長さを持つ線分となる。ステップＳ２１９の処理により、対象モデルは、図１７（ｋ）に示す例では、図１６（ｆ）にて抽出された副軸候補１が副軸として決定されることになる。
【０１４９】
副軸が決定したら、その副軸候補ｍ（図１７例ではｍ＝１）を抽出する基になった主軸候補ｍを主軸として選定する。主軸は、主軸候補の中から選定したものであるため、基準点と抽出されたポリゴンの平均点とを結ぶ線分として特定されており、方向と長さを持つ線分となる。
【０１５０】
主軸および副軸が決定したら、ステップＳ２１５に戻り、図１６（ｂ）に示す初期状態の対象モデルに戻って、決定された主軸（主軸候補１）に基づいて同様にステップＳ２１５からステップＳ２１９までの処理をやり直すことになるが、主軸候補１に基づくこれらの一連の処理は、図１６（ｃ）から図１６（ｆ）に示される通り既に実行しているため、これらの処理履歴が保存されていれば、その結果を用いて次のステップＳ２２０に進むことができる。具体的には、図１７（ｋ）の状態から図１６（ｆ）の状態に戻した上でステップＳ２２０に進み、ＸＹ座標上で副軸をＹ軸正方向に揃えるようにＺ軸中心回転を行う（ステップＳ２２０）。具体的には、まず、第１の手法と同様、上記〔数式１５〕においてポリゴンＴ２をｔｍ２に置換した上で、〔数式１５〕に従った処理を実行することにより、副軸とＺ軸正方向との角度Ａｎｇ、最遠ポリゴンの平均点Ｙ座標Ｙｃ'''（ｔｍ２）を求める。
【０１５１】
さらに、Ｙｃ'''（ｔｍ２）の値に応じて場合分けし、第１の手法と同様、上記〔数式１６〕においてポリゴンＴ２をｔｍ２に置換した上で、〔数式１６〕に従った処理を実行することにより、回転後の対象モデルを求める。
【０１５２】
ステップＳ２２０の処理により、対象モデルは、図１７（ｌ）に示すように、副軸がＸＹ平面においてＹ軸正方向と重なるようになる。本実施形態では、副軸をＹ軸の正方向に重ねたが、負方向に重ねるようにしてもよい。
【０１５３】
上記処理の結果、与えられた対象モデルごとに一意的に決定された主軸および副軸に基づいて正規化された対象モデルが得られる。正規化された対象モデルは、ポリゴン数Ｎ、ポリゴンを特定する変数ｉ（ｉ＝０，・・・，Ｎ−１）とし、各ポリゴンｉの頂点は（Ｘｋ'''（ｉ），Ｙｋ'''（ｉ），Ｚｋ'''（ｉ））と定義される。ｋは頂点番号を示しており、本実施形態では、ポリゴンが三角形であるため、ｋ＝０，１，２の３つの値をとる。また、各ポリゴンｉの平均点は（Ｘｃ'''（ｉ），Ｙｃ'''（ｉ），Ｚｃ'''（ｉ））と定義される。ポリゴン正規化処理の結果、図１８（ｍ）に示すように、対象モデルは、所定の位置、スケール、傾きに正規化される。
【０１５４】
＜２．５．ポリゴン照合処理＞
次に、ステップＳ３００のポリゴン照合処理について説明する。図１９は、ポリゴン照合処理の概要を示すフローチャートである。ポリゴン照合処理においては、ポリゴンモデル照合手段３０は、規制モデルデータベース５０に登録された規制モデルを１つずつ抽出し（ステップＳ３０１）、ステップＳ２００において正規化された対象モデルと照合を行う。本実施形態では、ポリゴンモデル照合手段３０は、図１９に示すように、総面積に基づく照合処理（ステップＳ３１０）、体積に基づく照合処理（ステップＳ３２０）、座標値に基づく照合処理（ステップＳ３３０）の３つの照合処理を順に行う。先に行った照合処理の結果、適合（すなわち類似）と判定された場合にのみ、次の照合処理に進む。不適合（すなわち非類似）と判定された場合には、ステップＳ３０１に戻って次の規制モデルとの照合を行う。３つの照合処理のうち、総面積に基づく照合処理および体積に基づく照合処理は、角度に依存しない角度非依存照合処理であり、座標値に基づく照合処理は、角度に依存する角度依存照合処理である。３つの照合処理全てにおいて適合（すなわち類似）と判定された場合は、その対象モデルは、規制モデルと類似していることになるので、出力不適との判定がなされる。規制モデルデータベース５０に登録された全ての規制モデルとの照合が不適合であった場合には、その対象モデルは、どの規制モデルとも非類似になるので、出力適正との判定がなされる。
【０１５５】
＜２．５．１．総面積に基づくポリゴン照合処理＞
まず、図１９に示した３つの照合処理のうち、ステップＳ３１０の総面積に基づくポリゴン照合処理について説明する。図２０は、総面積に基づくポリゴン照合処理の詳細を示すフローチャートである。ステップＳ２００において、正規化された対象モデルは、（Ｘｋ'''（ｉ），Ｙｋ'''（ｉ），Ｚｋ'''（ｉ））で示したが、数式が繁雑になることを避けるため、ステップＳ３００においては、改めて、正規化された対象モデルを、ポリゴン数Ｎ、ポリゴンを特定する変数ｉ（ｉ＝０，・・・，Ｎ−１）とし、各ポリゴンｉの頂点を（Ｘｋ（ｉ），Ｙｋ（ｉ），Ｚｋ（ｉ））と定義されたものとする。ｋは、ｋ＝０，１，２の３つの値をとる頂点番号とする。
【０１５６】
ポリゴンモデル照合手段３０は、まず、正規化された対象モデルを構成する各ポリゴンｉの面積Ｓｐ（ｉ）、Ｎ個のポリゴンの面積Ｓｐ（ｉ）の総和である総面積ＳＮを以下の〔数式２５〕に従った処理を実行することにより算出する（ステップＳ３１１）。
【０１５７】
〔数式２５〕
Ｖｘ＝[Ｙ１（ｉ）−Ｙ０（ｉ）]×[Ｚ２（ｉ）−Ｚ０（ｉ）]−[Ｚ１（ｉ）−Ｚ０（ｉ）]×[ Ｙ２（ｉ）−Ｙ０（ｉ）]
Ｖｙ＝[Ｚ１（ｉ）−Ｚ０（ｉ）]×[Ｘ２（ｉ）−Ｘ０（ｉ）]−[Ｘ１（ｉ）−Ｘ０（ｉ）]×[ Ｚ２（ｉ）−Ｚ０（ｉ）]
Ｖｚ＝[Ｘ１（ｉ）−Ｘ０（ｉ）]×[Ｙ２（ｉ）−Ｙ０（ｉ）]−[Ｙ１（ｉ）−Ｙ０（ｉ）]×[Ｘ２（ｉ）−Ｘ０（ｉ）] 
Ｓｐ（ｉ）＝０．５×[Ｖｘ（ｉ）2＋Ｖｙ（ｉ）2＋Ｖｚ（ｉ）2]1/2
ＳＮ＝Σi=0,N-1Ｓｐ（ｉ）
【０１５８】
次に、ポリゴンモデル照合手段３０は、ステップＳ３１１における処理と同様に、上記〔数式２５〕に従った処理を、変数を変えて、Ｈ個のポリゴンで構成される規制モデルに対して実行し、規制モデルの総面積ＳＨを算出する。（ステップＳ３１２）。
【０１５９】
続いて、ポリゴンモデル照合手段３０は、正規化された対象モデルの総面積ＳＮと規制モデルの総面積ＳＨの面積差分ｄＳを、を以下の〔数式２６〕に従った処理を実行することにより算出する（ステップＳ３１３）。
【０１６０】
〔数式２６〕
ｄＳ＝｜ＳＨ−ＳＮ｜／（ＳＨ＋ＳＮ）
【０１６１】
上記〔数式２６〕においては、後に判定しきい値と比較するために、総面積の和（ＳＨ＋ＳＮ）で除算することにより正規化している。上記〔数式２６〕に示すように面積差分ｄＳは、総面積の差分の絶対値となっている。
【０１６２】
面積差分ｄＳが得られたら、ポリゴンモデル照合手段３０は、面積差分ｄＳと判定しきい値との比較を行う（ステップＳ３１４）。面積差分ｄＳが判定しきい値より小さい場合は、適合と判定し、面積差分ｄＳが判定しきい値以上である場合は、不適合と判定する。判定しきい値としては、適宜設定可能であるが、ここでは、０．０１としてある。
【０１６３】
＜２．５．２．体積に基づく照合処理＞
次に、ステップＳ３２０の体積に基づくポリゴン照合処理について説明する。図２１は、体積に基づくポリゴン照合処理の詳細を示すフローチャートである。ステップＳ３００においては、正規化された対象モデルを、ポリゴン数Ｎ、ポリゴンを特定する変数ｉ（ｉ＝０，・・・，Ｎ−１）とし、各ポリゴンｉの頂点を（Ｘｋ（ｉ），Ｙｋ（ｉ），Ｚｋ（ｉ））と定義しており、さらに、各ポリゴンｉの平均点を、（Ｘｃ（ｉ），Ｙｃ（ｉ），Ｚｃ（ｉ））と定義する。
【０１６４】
ポリゴンモデル照合手段３０は、各ポリゴンについて、各ポリゴンを底面とし、基準点（重心）を頂点とする角錐の体積Ｖ（ｉ）を算出し、Ｎ個のポリゴンについての体積Ｖ（ｉ）の総和ＶＮを算出する（ステップＳ３２１）。具体的には、まず、上記〔数式２５〕に従った処理を実行して各ポリゴンｉの面積Ｓｐ（ｉ）を算出する。そして、以下の〔数式２７〕に従った処理を実行することにより、各ポリゴンの法線ベクトル（Ｎｘ（ｉ），Ｎｙ（ｉ），Ｎｚ（ｉ））を算出する。
【０１６５】
〔数式２７〕
Ｖｓ（ｉ）＝[Ｖｘ（ｉ）2＋Ｖｙ（ｉ）2＋Ｖｚ（ｉ）2]1/2
Ｎｘ（ｉ）＝Ｖｘ（ｉ）／Ｖｓ（ｉ）
Ｎｙ（ｉ）＝Ｖｙ（ｉ）／Ｖｓ（ｉ）
Ｎｚ（ｉ）＝Ｖｚ（ｉ）／Ｖｓ（ｉ）
【０１６６】
角錐の高さは、平均点から原点方向のベクトルとポリゴンの法線ベクトルとの内積の絶対値で算出できるので、以下の〔数式２８〕に従った処理を実行することにより、ポリゴンｉを底面とする角錐の体積Ｖ（ｉ）、およびＮ個のポリゴンについての角錐の体積総和ＶＮを算出する。
【０１６７】
〔数式２８〕
Ｖ（ｉ）＝Ｓｐ（ｉ）｜Ｘｃ（ｉ）×Ｎｘ（ｉ）＋Ｙｃ（ｉ）×Ｎｙ（ｉ）＋Ｚｃ（ｉ）×Ｎｚ（ｉ）｜／３
ＶＮ＝Σi=0,N-1Ｖ（ｉ）
【０１６８】
次に、ポリゴンモデル照合手段３０は、ステップＳ３２１における処理と同様に、上記〔数式２７〕、〔数式２８〕に従った処理を、変数を変えて、Ｈ個のポリゴンで構成される規制モデルに対して実行し、規制モデルの体積総和ＶＨを算出する。（ステップＳ３２２）。
【０１６９】
続いて、ポリゴンモデル照合手段３０は、正規化されたポリゴンモデルの体積総和ＶＮと規制モデルの体積総和ＶＨの体積差分ｄＶを、を以下の〔数式２９〕に従った処理を実行することにより算出する（ステップＳ３２３）。
【０１７０】
〔数式２９〕
ｄＶ＝｜ＶＨ−ＶＮ｜／（ＶＨ＋ＶＮ）
【０１７１】
上記〔数式２９〕においては、後に判定しきい値と比較するために、体積総和の和（ＶＨ＋ＶＮ）で除算することにより正規化している。上記〔数式２９〕に示すように体積差分ｄＶは、体積総和の差分の絶対値となっている。
【０１７２】
体積差分ｄＶが得られたら、ポリゴンモデル照合手段３０は、体積差分ｄＶと判定しきい値との比較を行う（ステップＳ３２４）。体積差分ｄＶが判定しきい値より小さい場合は、適合と判定し、体積差分ｄＶが判定しきい値以上である場合は、不適合と判定する。判定しきい値としては、適宜設定可能であるが、ここでは、０．００１としてある。
【０１７３】
＜２．５．３．座標値に基づく照合処理＞
次に、ステップＳ３３０の座標値に基づくポリゴン照合処理について説明する。図２２は、座標値に基づくポリゴン照合処理の詳細を示すフローチャートである。ここでは、対象モデルの各ポリゴンｉの平均点を、（Ｘｃｎ（ｉ），Ｙｃｎ（ｉ），Ｚｃｎ（ｉ））（ｉ：ポリゴン番号＝０，・・・、Ｎ−１）と定義し、規制モデルの各ポリゴンｊの平均点を、（Ｘｃｈ（ｊ），Ｙｃｈ（ｊ），Ｚｃｈ（ｊ））（ｊ：ポリゴン番号＝０，・・・、Ｈ−１）と定義する。
【０１７４】
ポリゴンモデル照合手段３０は、まず、初期設定を行い、Ｄ＝０，ｉ＝０とする（ステップＳ３３１）。Ｄは判定しきい値と比較する際、距離総和として出力される変数である。ｉ＝０は、対象モデルで最初に処理されるポリゴンのポリゴン番号である。次に、ｊ＝０，ｄｍｉｎ＝ＢＩＧに設定する（ステップＳ３３２）。ｊ＝０は、規制モデルで最初に処理されるポリゴンのポリゴン番号である。ｄｍｉｎは初期値ＢＩＧに設定される。ＢＩＧとしては、ｄｍｉｎとして取り得ない程度の大きな値を設定しておく。
【０１７５】
次に両モデルにおいて特定されたポリゴン同士の平均点座標距離ｄＫを算出する（ステップＳ３３３）。具体的には、以下の〔数式３０〕に従った処理を実行することにより算出する。
【０１７６】
〔数式３０〕
ｄＫ=[(Ｘｃｈ（ｊ）−Ｘｃｎ（ｉ）)2＋(Ｙｃｈ（ｊ）−Ｙｃｎ（ｉ）) 2 ＋(Ｚｃｈ（ｊ）−Ｚｃｎ（ｉ）)2]1/2
【０１７７】
上記〔数式３０〕に示すように平均点座標距離ｄＫは、平均点座標の差分の二乗平方根であり、平均点座標間の距離を示している。次に、算出した平均点座標距離ｄＫとｄｍｉｎを比較する（ステップＳ３３４）。ｄＫがｄｍｉｎより小さい場合は、ｄｍｉｎ＝ｄＫとする（ステップＳ３３５）。そして、ｊを１だけインクリメントして規制モデルの処理対象ポリゴンを変更し（ステップＳ３３６）、規制モデルのポリゴン番号ｊとポリゴン数Ｈを比較する（ステップＳ３３７）。
【０１７８】
比較の結果、ｊがＨより小さい場合は、対象モデルの１つのポリゴンに対して規制モデルの全てのポリゴンの処理が終わっていないため、ステップＳ３３３に戻って、平均点座標距離の算出を行う。対象モデルの１つのポリゴンに対して規制モデルの全てのポリゴンについて、ステップＳ３３３〜ステップＳ３３６の処理を実行した後には、ｊ＝Ｈとなるので、ステップＳ３３８に進む。
【０１７９】
ステップＳ３３３〜ステップＳ３３６の処理を繰り返すことにより、ｄｍｉｎには、対象モデルの１つのポリゴンと規制モデルの各ポリゴンの距離のうち、最小の値である距離最小値が記録される。これは、対象モデルの１つのポリゴンと最も近い規制モデルのポリゴンとの距離となる。次に、この距離最小値ｄｍｉｎをＤに加算する（ステップＳ３３８）。そして、ｉを１だけインクリメントして対象モデルの処理対象ポリゴンを変更し、対象モデルのポリゴン番号ｉとポリゴン数Ｎを比較する（ステップＳ３３９）。
【０１８０】
比較の結果、ｉがＮより小さい場合は、対象モデルの全てのポリゴンに対して処理が終わっていないため、ステップＳ３３２に戻って、対象モデルの次のポリゴンに対して処理を行う。対象モデルの全てのポリゴンについて、ステップＳ３３２〜ステップＳ３３８の処理を実行した後には、ｉ＝Ｎとなるので、ステップＳ３４０に進む。
【０１８１】
ステップＳ３３２〜ステップＳ３３８の処理を繰り返すことにより、Ｄには、対象モデルの各ポリゴンに対する距離最小値ｄｍｉｎの総和が記録される。
【０１８２】
距離総和Ｄが得られたら、ポリゴンモデル照合手段３０は、距離総和Ｄを対象モデルのポリゴン数Ｎで除した値Ｄ／Ｎと判定しきい値との比較を行う（ステップＳ３４０）。Ｄ／Ｎは、距離の総和値である距離総和Ｄの１ポリゴンあたりの平距均値となる。Ｄ／Ｎが判定しきい値より小さい場合は、適合と判定し、Ｄ／Ｎが判定しきい値以上である場合は、不適合と判定する。判定しきい値としては、適宜設定可能であるが、ここでは、１０．０としてある。
【０１８３】
本実施形態では、ポリゴン同士の平均点座標間の距離、およびその総和を算出するようにしたが、平均点に代えてポリゴン同士の対応する頂点間の距離、およびその総和を算出するようにしてもよい。
【０１８４】
＜３．３Ｄプリンタへのデータ出力＞
ポリゴンモデル照合手段３０により出力適正と判定された場合には、立体物造形装置である３Ｄプリンタ７へ対象ポリゴンモデルを出力する。一方、ポリゴンモデル照合手段３０により出力不適と判定された場合には、立体物造形装置である３Ｄプリンタへ対象モデルを出力しない。また、出力適正か否かの判定に時間がかかる場合には、３Ｄプリンタ７で対象モデルの出力を開始し、３Ｄプリンタ７の出力処理(立体物造形処理)と並行して出力適正か否かの判定を行い、出力不適であると判定された場合に出力中止命令を３Ｄプリンタ７に出力するようにしてもよい。この際、オペレータから見れば、対象モデルの出力という一つの命令を行うことにより、３Ｄプリンタにおける立体物造形処理が開始されることが確認できるだけで、並行して出力適正か否かの判定のための処理の実行が開始されることは気付かれない。
【０１８５】
＜４．規制モデルの正規化および登録について＞
上記実施形態では、規制モデルデータベース５０に既に正規化がなされた規制モデルが登録された場合について説明したが、規制モデルデータベース５０に正規化されていない規制モデルを登録しておき、この規制モデルに対して、上記実施形態において対象モデルに対して行ったようにポリゴンの削減、正規化を行い、正規化後の規制モデルと、上記正規化後の対象モデルを用いて照合を行うようにしてもよい。この場合、規制モデルデータベース５０に登録されている正規化されていない各規制モデルは、ポリゴン削減手段１０によりポリゴンが削減され、ポリゴン正規化手段２０により正規化された後、ポリゴンモデル照合手段３０により、正規化後の対象モデルとの照合が行われる。
【０１８６】
また、変形例として、ポリゴンモデル照合手段３０を備えた立体物造形用データ出力規制装置とは、別の場所で規制モデルの正規化を行って正規化された規制モデルを、立体物造形用データ出力規制装置にネットワークを介して送信して登録するようにしてもよい。
【０１８７】
図２３は、変形例における立体物造形用データ出力規制装置を含む立体物造形システムのハードウェア構成図である。図２３に示した立体物造形システムにおいて、立体物造形用データ出力規制装置１０１は、図１に示した立体物造形用データ出力規制装置１００の構成に、インターネット等の公衆ネットワークと通信するためのネットワーク通信部８を備えた構成となっている。規制モデル正規化装置１０２は、汎用のコンピュータで実現することができ、図２３に示すように、ＣＰＵ（Central Processing Unit）１ａと、コンピュータのメインメモリであるＲＡＭ（Random Access Memory）２ａと、ＣＰＵ１ａが実行するプログラムやデータを記憶するためのハードディスク、フラッシュメモリ等の大容量の記憶装置３ａと、キーボード、マウス等のキー入力Ｉ／Ｆ（インターフェース）４ａと、データ記憶媒体等の外部装置とデータ通信するためのデータ入出力Ｉ／Ｆ（インターフェース）５ａと、液晶ディスプレイ等の表示デバイスである表示部６ａと、インターネット等の公衆ネットワークと通信するためのネットワーク通信部８ａを備え、互いにバスを介して接続されている。立体物造形用データ出力規制装置１０１のネットワーク通信部８と規制モデル正規化装置１０２のネットワーク通信部８ａは互いに通信を行い、規制モデル正規化装置１０２から立体物造形用データ出力規制装置１０１へ正規化された規制モデルの送信を行うことが可能になっている。
【０１８８】
図２３では、立体物造形用データ出力規制装置１０１と３Ｄプリンタ７は分離した形態で示されているが、現在市販されている殆どの３Ｄプリンタ製品には立体物造形用データ出力規制装置１０１の構成要素である、ＣＰＵ１、ＲＡＭ２、記憶装置３、キー入力Ｉ／Ｆ４（汎用コンピュータ向けキーボード・マウスではなく、テンキーレベルの数種のボタン）、データ入出力Ｉ／Ｆ５、表示部６（数行の文字を表示可能な小型液晶パネル、タッチパネルを重畳させキー入力Ｉ／Ｆ４を兼ねることも多い）、ネットワーク通信部８（無線ＬＡＮ機能）も小規模ながら重複して備えている。従って、３Ｄプリンタ７自体が外部記憶媒体やインターネット経由で立体物造形用データを直接受け取り、単独で立体物を造形する運用も可能になっている（特に民生用の３Ｄプリンタではこちらの形態の方が多い）。すなわち、図２３に示した立体物造形用データ出力規制装置１０１および３Ｄプリンタ７を１つの筐体に収めて、“３Ｄプリンタ”という製品として流通することも多い。
【０１８９】
規制モデル正規化装置１０２においては、ＣＰＵ１ａが、記憶装置３ａに記憶されているプログラムを実行することにより、第２のポリゴン削減手段、第２のポリゴン正規化手段、規制モデル送信手段が実現される。規制モデル正規化装置１０２で実現される第２のポリゴン削減手段、第２のポリゴン正規化手段は、立体物造形用データ出力規制装置１００で実現されるポリゴン削減手段１０、ポリゴン正規化手段２０と同様の機能を有し、規制モデルのポリゴンを削減し、規制モデルの正規化を行う。規制モデル送信手段は、正規化された規制モデルを立体物造形用データ出力規制装置１０１に送信する。立体物造形用データ出力規制装置１０１では、ネットワーク通信部８が、規制モデル正規化装置１０２から規制モデルを受信すると、ＣＰＵ１が所定のプログラムを実行して規制モデル登録手段として機能し、受信した規制モデルを記憶装置３で実現される規制モデルデータベース５０に登録する。
【０１９０】
＜５．クラウド型の立体物造形システム＞
本発明は、クラウド型の立体物造形システムに適用することも可能である。図２４は、クラウド型の立体物造形システムのハードウェア構成図である。図２４に示した立体物造形システムにおいて、出力制御用ＰＣ２０１は、図２３において立体物造形用データ出力規制装置１０１として示したコンピュータと同等のハードウェア構成を有する。すなわち、出力制御用ＰＣ２０１は、ＣＰＵ１１、ＲＡＭ１２、記憶装置１３、キー入力Ｉ／Ｆ１４、データ入出力Ｉ／Ｆ１５、表示部１６、ネットワーク通信部１８を備え、互いにバスを介して接続されている。
【０１９１】
処理サーバ２０２は、本発明に係る立体物造形用データ出力規制装置としての機能を備えるものであり、汎用のコンピュータに専用のプログラムを組み込むことにより実現することができる。図２４に示すように、ＣＰＵ１１ａ、ＲＡＭ１２ａ、記憶装置１３ａ、キー入力Ｉ／Ｆ１４ａと、データ入出力Ｉ／Ｆ１５ａと、表示部１６ａと、ネットワーク通信部１８ａを備え、互いにバスを介して接続されている。出力制御用ＰＣ２０１のネットワーク通信部１８と処理サーバ２０２のネットワーク通信部１８ａは互いに通信を行い、処理サーバ２０２から出力制御用ＰＣ２０１へ出力適否の判定に基づく出力適否データの送信を行うことが可能になっている。図２４では、出力制御用ＰＣ２０１と３Ｄプリンタ７は分離した形態で示されているが、図２３の例と同様、３Ｄプリンタ製品に出力制御用ＰＣ２０１の構成要素である、ＣＰＵ１１、ＲＡＭ１２、記憶装置１３、キー入力Ｉ／Ｆ１４、データ入出力Ｉ／Ｆ１５、表示部１６、ネットワーク通信部１８を重複して備えていてもよい。
【０１９２】
図２５は、クラウド型の立体物造形システムの機能ブロック図である。クラウド型の立体物造形システムを構成する処理サーバ２０２は、図２に示した立体物造形用データ出力規制装置の各手段に加えて、対象モデル受信手段６０、出力適否データ送信手段７０を備えた構成となっている。図２に示した立体物造形用データ出力規制装置と同等の機能を有するものについては、同一符号を付して説明を省略する。対象モデル受信手段６０は、出力制御用ＰＣ２０１から送信された対象モデルを受信して対象モデル記憶手段４０に登録する手段であり、ＣＰＵ１１ａが所定のプログラムを実行するとともに、ネットワーク通信部１８ａを制御することにより実現される。出力適否データ送信手段７０は、ポリゴンモデル照合手段３０により判定された出力適否に基づくデータを出力制御用ＰＣ２０１に送信する手段であり、ＣＰＵ１１ａが所定のプログラムを実行するとともに、ネットワーク通信部１８ａを制御することにより実現される。
【０１９３】
処理サーバ２０２は、インターネット等のネットワークに接続され、多数の出力制御用ＰＣからアクセス可能になっている。クラウド型の立体物造形システムの「クラウド型」とは、３Ｄプリンタにより立体物を出力する出力側でなく、出力側からネットワークを介した遠隔地のコンピュータにおいて、規制すべきか否かを判定することを意味する。従来のサーバ型コンピュータでは多数のユーザのアクセスが集中すると応答性が遅くなりユーザに迷惑をかけることが多かったが、クラウド型では仮想化技術によりコンピュータの物理的構成を動的に変更することが可能になるため、常に安定した応答性を維持できるという特徴がある。処理サーバ２０２は物理的には複数台のコンピュータにより実現されるのが一般的である。
【０１９４】
図２４、図２５に示したクラウド型の立体物造形システムの処理動作について説明する。出力制御用ＰＣ２０１において、利用者がキー入力Ｉ／Ｆ１４を介して出力したい対象モデルを指定すると、ＣＰＵ１１は、記憶装置１３に記憶されている指定された対象モデルを抽出し、対象モデルを特定する識別情報であるモデルＩＤを付与する。そして、ＣＰＵ１１は、モデルＩＤが付与された対象モデルを、記憶装置１３に事前に設定されているＵＲＬ等のアドレス宛に、ネットワーク通信部１８を介して送信する。並行してＣＰＵ１１は、モデルＩＤが付与された対象モデルを、データ入出力Ｉ／Ｆ１５を介して３Ｄプリンタ７のデータ処理部７ａに送信する。データ処理部７ａ内のプリンタキューには、出力制御用ＰＣ２０１から受信した対象モデルが保持され、出力ジョブとして待機状態となる。この時、３Ｄプリンタ出力における前処理であるポリゴン形式のデータを積層形式のデータに変換する処理のみ実行させるようにし、積層形式のデータに変換された段階で待機状態にする手法もとることができる。このデータ処理負荷もそれなりに高いため、この間に出力適否判定が完了すれば、ユーザ側に余分な待ち時間を感じさせないようすることができる。
【０１９５】
処理サーバ２０２では、対象モデル受信手段６０が、出力制御用ＰＣ２０１から送信された対象モデルを受信すると、その対象モデルを対象モデル記憶手段４０に記憶する。ここからは、図３に示したフローチャートに従って、ポリゴン削減手段１０、ポリゴン正規化手段２０、ポリゴンモデル照合手段３０が処理を行い、受信した対象モデルの出力適否を判定する。出力適否の結果である出力適否データは、ポリゴンモデル照合手段３０から出力適否データ送信手段７０に渡される。そして、出力適否データ送信手段７０は、対象モデルの送信元（アクセス元）である出力制御用ＰＣ２０１に、モデルＩＤを付加した出力適否データを送信する。
【０１９６】
出力制御用ＰＣ２０１では、ネットワーク通信部１８が、処理サーバ２０２から出力適否データを受信すると、ＣＰＵ１１が、受信した出力適否データを、データ入出力Ｉ／Ｆ１５を介して３Ｄプリンタ７のデータ処理部７ａに送信する。データ処理部７ａは、受信した出力適否データに付与されたモデルＩＤでプリンタキュー内の出力ジョブを参照する。そして、出力適否データが“適”である場合、データ処理部７ａは、その出力ジョブを待機状態から出力状態に変更し、出力部７ｂに対象モデルを出力する。出力適否データが“否”である場合、データ処理部７ａは、その出力ジョブを破棄する。すなわち、プリンタキューから削除する。
【０１９７】
＜６．ポリゴンモデル正規化事例＞
図２６〜図２８に、従来と本発明によるポリゴン正規化処理の比較事例を示す。図２６〜図２８のいずれにおいても、左側に規制モデル、右側に対象モデルを示している。図２６は、正規化前のオリジナル（実際にはポリゴン削減後）のポリゴンモデルを示す図である。図２６では、規制モデル、対象モデルは同一のモデルであるが、紙面に対して座標系を揃えてあるが、正規化前であるため、両者は位置、スケール、傾きが異なっている。単純に最長距離を主軸とする場合、図２６の例では、２つの主軸候補１、主軸候補２が存在することになる。
【０１９８】
図２７は、図２６の規制モデル、対象モデルに対して、従来方式により正規化を行った状態を示す図である。２つの主軸候補が存在する場合であっても、従来方式では、最遠ポリゴンに対応する主軸候補を主軸として選択するため、演算処理の誤差により、異なった主軸が選択されてしまう場合がある。図２７の例では、規制モデルでは、主軸候補１が主軸として選択され、対象モデルでは、主軸候補２が主軸として選択されている。このため、両モデルの位置、傾きが揃わない。したがって、このまま照合処理を行っても不適合と判定されてしまう。
【０１９９】
図２８は、図２６の規制モデル、対象モデルに対して、本実施形態の第１の手法により正規化を行った状態を示す図である。２つの主軸候補が存在する場合であっても、本実施形態の第１の手法では、最遠ポリゴンに対応する主軸以外のものが選択される可能性が高いため、演算処理の誤差に影響されず、同一の主軸が選択される可能性が高まる。図２８の例では、規制モデルでは、主軸候補１が主軸として選択され、対象モデルでも、主軸候補１が主軸として選択されている。このため、両モデルの位置、傾きが揃う。したがって、照合処理を行うと適合と判定される。
【０２００】
＜７．変形例等＞
以上、本発明の好適な実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、処理対象のポリゴンを三角形としたが、四角形以上の多角形であってもよい。
【０２０１】
また、上記実施形態では、ポリゴンモデル照合手段３０は、総面積に基づく照合処理、体積に基づく照合処理、座標値に基づく照合処理の３つの照合処理を行うようにしたが、上記３つの照合処理のうち、１つまたは２つの照合処理を実行するようにしてもよい。
【０２０２】
また、上記実施形態では、ポリゴン正規化手段２０は、主軸をＺ軸に合わせ、副軸をＹ軸に合わせて回転するようにしたが、主軸、副軸をそれぞれ異なる軸に合わせるのであれば、主軸をＸ軸またはＹ軸に合わせてもよいし、副軸をＸ軸またはＺ軸に合わせてもよい。
【符号の説明】
【０２０３】
１、１ａ、１１、１１ａ・・・ＣＰＵ（Central Processing Unit）
２、２ａ、１２、１２ａ・・・ＲＡＭ（Random Access Memory）
３、３ａ、１３、１３ａ・・・記憶装置
４、４ａ、１４、１４ａ・・・キー入力Ｉ／Ｆ
５、５ａ、１５、１５ａ・・・データ入出力Ｉ／Ｆ
６、６ａ、１６、１６ａ・・・表示部
７・・・３Ｄプリンタ（立体物造形装置）
７ａ・・・データ処理部
７ｂ・・・出力部
８、８ａ、１８、１８ａ・・・ネットワーク通信部
１０・・・ポリゴン削減手段
２０・・・ポリゴン正規化手段
３０・・・ポリゴンモデル照合手段
４０・・・対象モデル記憶手段
５０・・・規制モデルデータベース
６０・・・対象モデル受信手段
７０・・・出力適否データ送信手段
１００、１０１・・・立体物造形用データ出力規制装置
１０２・・・規制モデル正規化装置
２０１・・・出力制御用ＰＣ
２０２・・・処理サーバ（立体物造形用データ出力規制装置）
【図１】
0006375768.tif 000002
【図２】
0006375768.tif 000003
【図３】
0006375768.tif 000004
【図４】
0006375768.tif 000005
【図５】
0006375768.tif 000006
【図６】
0006375768.tif 000007
【図７】
0006375768.tif 000008
【図８】
0006375768.tif 000009
【図９】
0006375768.tif 000010
【図１０】
0006375768.tif 000011
【図１１】
0006375768.tif 000012
【図１２】
0006375768.tif 000013
【図１３】
0006375768.tif 000014
【図１４】
0006375768.tif 000015
【図１５】
0006375768.tif 000016
【図１６】
0006375768.tif 000017
【図１７】
0006375768.tif 000018
【図１８】
0006375768.tif 000019
【図１９】
0006375768.tif 000020
【図２０】
0006375768.tif 000021
【図２１】
0006375768.tif 000022
【図２２】
0006375768.tif 000023
【図２３】
0006375768.tif 000024
【図２４】
0006375768.tif 000025
【図２５】
0006375768.tif 000026
【図２６】
0006375768.tif 000027
【図２７】
0006375768.tif 000028
【図２８】
0006375768.tif 000029