(57)【要約】【課題】複数の法線ベクトルが定義される曲面パッチからなる３次元モデルの変形操作において、形状の歪みの発生を低減する。【解決手段】立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みを検出する面要素の歪み検出装置であって、面要素上の異なる位置でそれぞれの法線ベクトルを求める手段と、隣接する前記法線ベクトルの相対関係を示す値を算出する手段と、前記隣接する法線ベクトルの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面要素に歪みが発生したと判定する面要素歪み発生判定手段と、を備える。【選択図】図１４
2008033678.tif 000002
【特許請求の範囲】
【請求項１】
立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みを検出する面要素の歪み検出装置であって、
面要素上の異なる位置でそれぞれの法線ベクトルを求める手段と、
隣接する前記法線ベクトルの相対関係を示す値を算出する手段と、
前記隣接する法線ベクトルの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面要素に歪みが発生したと判定する面要素歪み発生判定手段と、
を備えることを特徴とする面要素の歪み検出装置。
【請求項２】
前記歪みが発生した面要素を表示する手段をさらに備えることを特徴とする請求項１に記載の面要素の歪み検出装置。
【請求項３】
前記面要素が複数集合して形成される面データについて、前記面要素歪み発生判定手段によって歪みの発生がないと判定された場合、前記面要素の法線ベクトルと前記面要素に隣接する面要素の法線ベクトルとの相対関係を示す値を算出する手段と、
前記面要素の法線ベクトルと前記面要素に隣接する面要素の法線ベクトルとの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面データに歪みが発生したと判定する手段と、を備えることを特徴とする請求項１または２に記載の面要素の歪み検出装置。
【請求項４】
前記歪みが発生したと判定された隣接する２つの面要素を表示する手段をさらに備えることを特徴とする請求項３に記載の面要素の歪み検出装置。
【請求項５】
前記相対関係は隣接する法線ベクトル間の角度であることを特徴とする請求項１から４のいずれかに記載の面要素の歪み検出装置。
【請求項６】
立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みを検出する面要素の歪み検出装置であって、
前記面要素が複数集合して形成される面データにおいて、面要素と面要素との境界線である稜線を抽出する稜線抽出手段と、
前記稜線抽出手段により抽出された稜線の曲率を算出する曲率算出手段と、
前記曲率算出手段によって算出された曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前記稜線に歪みが発生したと判定する稜線歪み判定手段と、を備えることを特徴とする面要素の歪み検出装置。
【請求項７】
立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みを検出する面要素の歪み検出装置であって、
前記面要素が複数集合して形成される面データから頂点を抽出する手段と、
前記頂点近傍において面要素と面要素との境界線である稜線を抽出する近傍稜線抽出手段と、
前記頂点での前記面データの法線ベクトルと前記頂点近傍での前記稜線の接線ベクトルとから平面を形成し、形成された平面上に前記稜線を投影する投影手段と、
前記投影手段により投影された平面上の稜線の曲率を算出する投影曲率算出手段と、
前記投影曲率算出手段によって算出された曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前
記稜線に歪みが発生したと判定する稜線歪み判定手段と、を備えることを特徴とする面要素の歪み検出装置。
【請求項８】
歪みが発生した稜線に関連する面要素を表示する手段をさらに備えることを特徴とする請求項６または７に記載の面要素の歪み検出装置。
【請求項９】
前記面要素はポリゴンまたはサーフェイスのいずれかとしたことを特徴とする請求項１から７のいずれかに記載の面要素の歪み検出装置。
【請求項１０】
立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みをコンピュータが検出する面要素の歪み検出方法であって、前記コンピュータが、
入力手段からの面要素の歪み検出の指示入力に応じて、面要素上の異なる位置でそれぞれの法線ベクトルを求める工程と、
隣接する前記法線ベクトルの相対関係を示す値を算出する工程と、
前記隣接する法線ベクトルの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面要素に歪みが発生したと判定する面要素歪み判定工程と、を実行することを特徴とする面要素の歪み検出方法。
【請求項１１】
面要素が複数集合して形成される面データについて、前記面要素歪み発生判定工程において歪みの発生がないと判定された場合、前記面要素の法線ベクトルと前記面要素に隣接する面要素の法線ベクトルとの相対関係を示す値を算出する工程と、
前記面要素の法線ベクトルと前記面要素に隣接する面要素の法線ベクトルとの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面データに歪みが発生したと判定する工程と、をさらに実行することを特徴とする請求項１０に記載の面要素の歪み検出方法。
【請求項１２】
立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みをコンピュータが検出する面要素の歪み検出方法であって、前記コンピュータが、
面要素が複数集合して形成される面データについて  面要素と面要素との境界線である稜線を抽出する稜線抽出工程と、
前記稜線抽出工程において抽出された稜線の曲率を算出する曲率算出工程と、
前記曲率算出工程によって算出された曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前記稜線に歪みが発生したと判定する稜線歪み判定工程と、を実行することを特徴とする面要素の歪み検出方法。
【請求項１３】
立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みをコンピュータが検出する面要素の歪み検出方法であって、前記コンピュータが、
面要素が複数集合して形成される面データから頂点を抽出する工程と、
前記頂点近傍において面要素と面要素との境界線である稜線を抽出する近傍稜線抽出工程と、
前記頂点での前記面データの法線ベクトルと前記稜線の前記頂点近傍での接線ベクトルとから平面を形成し、形成された平面上に前記稜線を投影する投影工程と、
前記投影工程により投影された平面上の稜線の曲率を算出する投影曲率算出工程と、
前記投影曲率算出工程において算出された曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前記稜線に歪みが発生したと判定する稜線歪み判定工程と、実行することを特徴とする面要
素の歪み検出方法。
【請求項１４】
立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みを検出するコンピュータ実行可能なプログラムであって、コンピュータに、
入力手段からの面要素の歪み検出の指示入力に応じて、面要素上でそれぞれの法線ベクトルを求める工程と、
隣接する前記法線ベクトルの相対関係を示す値を算出する工程と、
前記隣接する法線ベクトルの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面要素に歪みが発生したと判定する工程と、を実行させることを特徴とする面要素の歪みを検出させるコンピュータ実行可能なプログラム。
【請求項１５】
面要素が複数集合して形成される面データについて、前記面要素歪み発生判定工程において歪みの発生がないと判定された場合、前記面要素の法線ベクトルと前記面要素に隣接する面要素の法線ベクトルとの相対関係を示す値を算出する工程と、
前記面要素の法線ベクトルと前記面要素に隣接する面要素の法線ベクトルとの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面データに歪みが発生したと判定する工程と、をさらに実行することを特徴とする請求項１４に記載の面要素の歪みを検出させるコンピュータ実行可能なプログラム。
【請求項１６】
立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みを検出するコンピュータ実行可能なプログラムであって、コンピュータに、
面要素と面要素との境界線である稜線を抽出する稜線抽出工程と、
前記稜線抽出工程により抽出された稜線の曲率を算出する曲率算出工程と、
前記曲率算出工程によって算出された曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前記稜線に歪みが発生したと判定する稜線歪み判定工程と、を実行させることを特徴とするコンピュータ実行可能なプログラム。
【請求項１７】
立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みを検出するコンピュータ実行可能なプログラムであって、コンピュータに、
面要素が複数集合して形成される面データから頂点を抽出する工程と、
前記頂点近傍において面要素と面要素との境界線である稜線を抽出する近傍稜線抽出工程と、
前記頂点での前記面データの法線ベクトルと前記稜線の前記頂点近傍での接線ベクトルとから平面を形成し、形成された平面上に前記稜線を投影する投影工程と、
前記投影工程により投影された平面上の稜線の曲率を算出する投影曲率算出工程と、
前記投影曲率算出工程において算出された曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前記稜線に歪みが発生したと判定する稜線歪み判定工程と、を実行させることを特徴とするコンピュータ実行可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、設計支援技術に関する。
【背景技術】
【０００２】
画像データを滑らかに変化させて変形する処理技術としてモーフィングが知られている。さらに、このモーフィング技術を３次元ＣＡＤ（Computer Aided Design）に適用した
システムも知られている。そのようなシステムでは、ポインティングデバイスのような操作手段によってユーザ操作を受け付け、３次元モデルを変形する。このような３次元モデルは、一般に、ポリゴン、パッチ（ポリゴンそのもの、または、複数のポリゴンの組合せ）、サーフェイスと呼ばれる曲面等を組み合わせて形成される。
【０００３】
一般に３次元ＣＡＤでは、立体モデルが作成されたのち、種々の解析のため、立体モデルが、複数のメッシュ（例えば、テトラメッシュ等）に分解される。そして、解析が実行されるが、解析結果が満足できるものでない場合、立体モデルに変更を加える必要が生じることがある。この場合、３次元ＣＡＤによって元の立体モデルを変更したのでは、再度メッシュへの分解が必要となり、工数が多くなる。そこで、メッシュに分解された状態で、３次元形状をモーフィングにより変形することが行われている。
【０００４】
しかし、従来のモーフィング技術を適用したＣＡＤシステムでは、３次元形状データの変形処理の結果、形状データの表面、すなわち、３次元形状を構成するポリゴン、あるいはパッチにシワ、たるみ、あるいは、よたり等の形状の歪みが発生することがあった。このような形状の歪みは、３次元形状の見映えと品質を悪くする。特に、変形後の３次元形状を利用してＣＡＥ（Computer Aided Engineering）による解析を実行する際に、表面を修正・整備する必要が生じ、工数が大きくなる場合がある。
【０００５】
このような３次元形状の変形操作に関連する技術としては、例えば、下記特許文献１が知られている。
【特許文献１】特開平１１−１９５０５４号公報
【特許文献２】特開２００５−２７５５９６号公報
【特許文献３】特開２０００−１７２７４２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記従来の技術では、平面形状のパッチ、あるいはポリゴンが想定されているため、３次元形状の変形に伴い、３次元形状を構成するパッチ、あるいは、パッチに含まれるポリゴンの伸縮限界を超える変形を受けた場合に、歪みを認識できないことがある。例えば、本来、パッチ（あるいはポリゴン）内に、複数の法線ベクトルが定義される曲面の場合には、従来の技術では、パッチ自体、ポリゴン自体の歪みを把握できない場合がある。また、伸縮限界を超えた変形操作がなされたことを検知できない場合がある。
【０００７】
本発明の目的は、複数の法線ベクトルが定義されるパッチあるいはポリゴンからなる３次元モデルの変形操作において、パッチあるいはポリゴンの伸縮限界を検知し、パッチあるいはポリゴンのシワ、たるみのような形状の歪みの発生を低減する技術を提供することである。
【課題を解決するための手段】
【０００８】
本発明は前記課題を解決するために、以下の手段を採用した。すなわち、本発明は、立
体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みを検出する面要素の歪み検出装置であって、面要素上の異なる位置でそれぞれの法線ベクトルを求める手段と、隣接する前記法線ベクトルの相対関係を示す値を算出する手段と、前記隣接する法線ベクトルの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面要素に歪みが発生したと判定する面要素歪み発生判定手段と、を備えることを特徴とする面要素の歪み検出装置である。
【０００９】
本発明によれば、面要素上の異なる位置でそれぞれの法線ベクトルを求め、隣接する前記法線ベクトルの相対関係を示す値を算出し、前記隣接する法線ベクトルの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面要素に歪みが発生したと判定する。したがって、面要素内に、限度を超えた歪みが発生したか否かを定量的に判定できる。
【００１０】
その場合、前記歪みが発生した面要素を表示する手段をさらに備えてもよい。これにより、ユーザに歪みの発生を報知し、ユーザの注意を喚起できる。
【００１１】
前記面要素が複数集合して形成される面データについて、前記面要素歪み発生判定手段によって歪みの発生がないと判定された場合、前記面要素の法線ベクトルと前記面要素に隣接する面要素の法線ベクトルとの相対関係を示す値を算出する手段と、前記面要素の法線ベクトルと前記面要素に隣接する面要素の法線ベクトルとの相対関係を示す値が予め設定した所定の値を超えた場合に、前記面データに歪みが発生したと判定する手段と、を備えてもよい。
【００１２】
このような構成により、例えば、面要素内で歪みが発生していないと判定された場合でも、隣接する面要素との関係から歪みの発生を定量的に判定できる。
【００１３】
前記相対関係は隣接する法線ベクトル間の角度が望ましい。法線ベクトル間の角度を判定することで、面要素上の変形を検知できるからである。
【００１４】
また、本発明は、立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要素の歪みを検出する面要素の歪み検出装置であって、前記面要素が複数集合して形成される面データにおいて、面要素と面要素との境界線である稜線を抽出する稜線抽出手段と、前記稜線抽出手段により抽出された稜線の曲率を算出する曲率算出手段と、前記曲率算出手段によって算出された曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前記稜線に歪みが発生したと判定する稜線歪み判定手段と、を備えるようにしてもよい。
【００１５】
すなわち、本発明では、面要素と面要素との境界線である稜線を抽出し、抽出された稜線の曲率を算出し、その曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前記稜線に歪みが発生したと判定する。このため、面要素と面要素との境界に歪みが発生したか否かを定量的に判定できる。ここで、曲率の変化とは、例えば、１つの稜線上での曲率の方向の変化、曲率の大きさの変化等をいう。また、曲率の変化とは、例えば、稜線上の変曲点の数の変化、及び多さ（例えば３つ以上）等をもいう。また、稜線歪み判定手段が、稜線ごとに曲率を逐一記録しておき、前回判定時点と今回時点での曲率の差分を曲率の変化としてもよい。
【００１６】
また、本発明は、立体モデルの少なくとも一部分を被覆する面要素の組合せによって、前記立体モデルの表面を形成する、そのような設計支援装置によって作成された前記面要
素の歪みを検出する面要素の歪み検出装置であって、前記面要素が複数集合して形成される面データから頂点を抽出する手段と、前記頂点近傍において面要素と面要素との境界線である稜線を抽出する近傍稜線抽出手段と、前記頂点での前記面データの法線ベクトルと前記頂点近傍での前記稜線の接線ベクトルとから平面を形成し、形成された平面上に前記稜線を投影する投影手段と、前記投影手段により投影された平面上の稜線の曲率を算出する投影曲率算出手段と、前記投影曲率算出手段によって算出された曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前記稜線に歪みが発生したと判定する稜線歪み判定手段と、を備えるものでもよい。
【００１７】
本発明によれば、平面上に前記稜線を投影し、投影された平面上の稜線の曲率を算出し、その曲率が予め設定した所定の値を超えた場合、および前記曲率の変化が所定の限度を超えた場合の少なくともいずれか一方の場合に、前記稜線に歪みが発生したと判定するので、稜線の歪みを定量的に判定できる。
【００１８】
なお、本発明は、以上のいずれかの処理をコンピュータに実行させるプログラムであってもよい。また、本発明は、そのようなプログラムを記録したコンピュータ読み取り可能な記録媒体、例えば、ＣＤ−ＲＯＭ、ＤＶＤ、フラッシュメモリカード等であってもよい。また、本発明は、コンピュータがそのような処理を実行する方法として実現してもよい。
【発明の効果】
【００１９】
本発明によれば、複数の法線ベクトルが定義されるパッチあるいはポリゴンからなる３次元モデルの変形操作において、パッチあるいはポリゴンの伸縮限界を検知し、パッチあるいはポリゴンのシワ、たるみのような形状の歪みの発生を低減することができる。
【発明を実施するための最良の形態】
【００２０】
以下、図面を参照して本発明を実施するための最良の形態（以下、実施形態という）に係る設計支援装置について説明する。以下の実施形態の構成は例示であり、本発明は実施形態の構成に限定されない。
【００２１】
＜発明の骨子＞
本設計支援装置は、ポリゴンあるいはポリゴンを組み合わせたパッチによって構成されている立体モデルに対して、ポインティングデバイスのような操作手段によってユーザ操作を受け付け、３次元モデルを変形（モーフィング）する。立体モデルを構成するポリゴンは、曲面ポリゴンと呼ばれるものであり、ポリゴン面内に複数方向の法線ベクトルを有している。
【００２２】
図１は、曲面ポリゴンで構成されている立体モデルを変形した例である。図１の符号Ｃ１で示される円形内で、歪みが発生している。図２は、図１の曲面ポリゴンをメッシュに分割した例を示す。この例では、曲面ポリゴンは、複数の三角形のメッシュを組み合わせて構成される。このような曲面は、例えば、ベジエ曲面として知られている。
【００２３】
ベジエ曲線は制御点と呼ばれる複数の点（一連の点）にしたがって定義される多項式曲線であり、さらに、ベジエ曲面は２次元状に配置された複数の点に基づいて定義される曲面である。なお、本実施形態では、曲面を構成する単位をパッチといい、パッチは、１または複数の曲面ポリゴンから構成される。すなわち、複数の曲面ポリゴン（例えば、３次三角ベジエ曲面）を複数個集めてパッチを構成する場合もある。
【００２４】
このような曲面ポリゴンで被覆されている立体モデルの変形時に、本設計支援装置は、
それぞれの曲面ポリゴン内の複数の法線ベクトルを監視する。そして、隣接する法線ベクトル間の角度の値、および立体モデル変形に伴って生じる隣接する法線ベクトル間の角度の変化率（元の角度に対する変化した角度の割合）を求める。そして、隣接する法線ベクトル間の角度が所定値を超えた場合、および隣接する法線ベクトル間の角度の変化率が所定値を越えた場合に、曲面ポリゴンの面に歪みが発生したと判定する。
【００２５】
図３に、三角形のパッチによる立体モデルの例を示す。図３では、三角形の平面で構成された多面体が示されている。図３では、簡易に表示するため、三角形のパッチを平面で表示している。しかし、一般にパッチ、あるいは、曲面ポリゴンは、制御点を基に、多項式によって定義される曲面であるため、実際には、図３のそれぞれの三角形内で複数の法線を有している。図３に、曲面ポリゴン上の法線を矢印で示す。
【００２６】
本設計支援装置は、このような個々の曲面ポリゴン内の法線ベクトルを監視し、曲面ポリゴンの歪み発生を検知する。
【００２７】
さらに、本設計支援装置は、以上の法線ベクトルの監視の結果、各ポリゴン自体に歪みの発生がないことを確認した上で、注目する曲面ポリゴンとその曲面ポリゴンに隣接する曲面ポリゴンとにおいて、それぞれ代表となる法線ベクトルを選出し、２つの隣接する曲面ポリゴン間で、同様に歪みの発生を検知する。
【００２８】
すなわち、２つの隣接する曲面ポリゴンに属する法線ベクトル間の角度が所定の所定値を超えた場合、および隣接する法線ベクトル間の角度の変化率が所定値を越えた場合に、曲面ポリゴンの面に歪みが発生したと判定する。
【００２９】
さらにまた、曲面ポリゴン上に注目するサンプル点を設定し、そのサンプル点またはサンプル点の近傍を通る稜線を抽出して、稜線の曲率を求める。そして、曲率が所定値を越えたときに、曲面ポリゴンの面に歪みが発生したと判定する。ここで、稜線は、曲面ポリゴンと曲面ポリゴンとの間の境界線をいう。
【００３０】
このようにして、３次元形状の変形に際して、曲面ポリゴンの歪みが検知された場合、設計支援装置は、曲面ポリゴンの歪みが検知されたことを示す警告を表示する。この警告により、ユーザは、歪みが発生したことを認識し、立体モデルの変形を停止する。そして、ユーザは、変形操作の手順を変更することによって、曲面ポリゴンの歪みがない変形された立体モデルを得る。
【００３１】
または、ユーザは、歪みが発生したことを認識した上で変形作業を続行し、作業完了した後に、曲面ポリゴンの歪みが発生した箇所を修正すればよい。
【００３２】
以上の機能は、コンピュータ上に実現されるＣＡＤシステムの１つの機能として、コンピュータ上で実行されるコンピュータプログラムによって実現される。ここで、コンピュータは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、メモリ、入出力インターフェース、入出力インターフェースに接続される外部記憶装置、表示装置、入力装置、通信装置等を有する。
【００３３】
外部記憶装置は、例えば、ハードディスク駆動装置である。また、外部記憶装置は、着脱可能な記憶媒体の駆動装置、例えば、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等の駆動装置を含む。さらに、外部記憶装置として、フラッシュメモリカードの入出力装置を用いてもよい。
【００３４】
表示装置は、例えば、ＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）、液晶ディスプレイ等である。また、入力装置は、キーボード、ポインティングデバイス等である。ポインティングデバイスには、マウス、ジョイスティック、タッチパネル、静電方式のフラットなポインティングデバイス、スティック形状のポインティングデバイス等を含む。通信装置は、例えば、ＬＡＮ基板等である。
【００３５】
＜立体モデルの曲面のデータ構造＞
図４から図１０により、本設計支援装置が立体モデルの曲面を規定するときのデータ構造例を示す。図４は、３次ベジエ曲線を示している。一般に、ｎ＋１個の制御点を基に、多項式で規定される曲線をｎ次ベジエ曲線という。ｎ次ベジエ曲線は、以下の一般式である数１によって与えられる。ここで、Ｑｎは、制御点の位置ベクトルであり、ｔはパラメータであり、Ｐは、ｎ次ベジエ曲線上の位置ベクトルである。
【００３６】
【数１】
2008033678.tif 000003
【００３７】
例えば、３次ベジエ曲線Ｐは、Ｐ＝（１−ｔ）3Ｑ０＋３ｔ（１−ｔ）2 Ｑ１＋３ｔ2（１−ｔ）Ｑ２＋ｔ3Ｑ３で与えられる。
【００３８】
図５に、４角形パッチによる３次ベジエ曲面の例を示す。一般に、（ｎ＋１）×（ｎ＋１）個の配列状の制御点によって構成されるベジエ曲面をｎ次ベジエ曲面という。４角形パッチによるｎ次ベジエ曲面は、以下の一般式である数２によって与えられる。ここで、Ｑｉｊは、制御点の位置ベクトルであり、ｕおよびｖはパラメータであり、Ｐは、ｎ次ベジエ曲面上の位置ベクトルである。
【００３９】
【数２】
2008033678.tif 000004
【００４０】
４角形パッチによる３次ベジエ曲面は、１６個の制御点（４個の内部制御点）を有する。このような四角形のベジエ曲面を接続することによって立体モデルの表面を形成できる。
【００４１】
図６に、３次四角パッチとのその内部制御点の配置を示す。また、図７に、４次四角パッチとのその内部制御点の配置を示す。四角パッチの場合には、内部制御点は、次数が３次、４次、５次・・・のように次数が増えるとともに、４、９、１６・・・と増加する。
【００４２】
図８に、三角形パッチによる３次ベジエ曲面の例を示す。三角形パッチによるｎ次ベジエ曲面は、以下の一般式である数３によって与えられる。ここで、Ｑｉｊｋは、制御点の位置ベクトルであり、ｕ、ｖおよびｗはパラメータである。
【００４３】
【数３】
2008033678.tif 000005
【００４４】
三角形パッチによる３次ベジエ曲面は、１０個の制御点（１個の内部制御点）を有する。このような三角形のベジエ曲面を接続することによって立体モデルの表面を形成できる。
【００４５】
図９に、３次三角パッチとのその内部制御点の配置を示す。また、図１０に、４次三角パッチとのその内部制御点の配置を示す。三角パッチの場合には、内部制御点は、次数が３次、４次、５次、６次・・・のように次数が増えるとともに、１、３、６、９・・・と増加する。
【００４６】
本設計支援装置は、ｎ次ベジエ曲面（例えば、図６に示した三角形状の３次ベジエ曲面）を曲面ポリゴン（パッチともいう）として、そのような曲面ポリゴンを組み合わせて立体モデルを構成する。なお、複数の曲面ポリゴンを組み合わせてパッチを構成し、そのようなパッチによって立体モデルを構成してもよい。
【００４７】
＜歪み検出機能＞
本設計支援装置は、曲面ポリゴン内の法線の角度の一致・不一致、法線の角度の変化率、サンプル点付近の複数の曲面ポリゴン間での法線の一致・不一致、それらの法線間の角度の変化率、およびサンプル点またはサンプル点近傍の稜線での曲率の変化率から、歪みの発生を検知する。なお、本実施形態では、２以上の曲面ポリゴンの境界線を稜線と呼ぶ。
（１）曲面ポリゴン内の法線一致チェック
単一の曲面ポリゴンについては、その内部の複数の法線ベクトルは、いずれも一致するか、または、それらの法線ベクトル間の角度の相違は、所定の基準値（Ｅ１）以内の場合が多い。
【００４８】
そこで、本設計支援装置は、それぞれの曲面ポリゴン内に複数の位置にて法線ベクトルを算出し、法線ベクトル間の角度が、所定の基準値（Ｅ１）以内か否かを判定する。今、曲面ポリゴン上の位置ベクトルをＳ（ｕ，ｖ）とすると、その位置での法線ベクトルは、以下の数４で与えられる。
【００４９】
【数４】
2008033678.tif 000006
【００５０】
すなわち、曲面ポリゴン（表面形状）上の位置ベクトルを線要素ｕ方向と、線要素ｖ方向で、それぞれ偏微分し、その外積を求めればよい。さらに、法線ベクトル間の角度は、法線ベクトルの内積と逆三角関数とによって求めればよい。これにより、曲面ポリゴン内での歪みの発生を検知する。
（２）曲面ポリゴン間の法線一致チェック
曲面ポリゴン内での歪みの発生が検知されない場合であっても、曲面ポリゴン間の位置
関係で歪みが発生する場合がある。通常、立体モデルの表面を被覆する隣接する曲面ポリゴンについては、本来稜線で不連続に傾きが変化した部分（面が折れ曲がった箇所）以外の箇所では、それぞれの曲面ポリゴンの法線ベクトルが一致するか、法線ベクトル間の角度の相違は、所定の基準値（Ｅ１）以内の場合が多い。一方、本来稜線で不連続に傾きが変化した部分では、それぞれの曲面ポリゴンの法線ベクトル間の角度の相違は、前記基準津Ｅ１より大きな基準値（Ｅ２）以上となることが多い。そこで、一般的な立体形状に関する経験則をコンピュータ上の処理に組み込む。
【００５１】
図１１に、指定のサンプル点Ｐａとその周囲に存在する複数の曲面ポリゴン１１−１５の法線ベクトルＮ１−Ｎ５との関係を示す。この場合、サンプル点Ｐｓの法線ベクトルは、以下の数５で与えられる。
【００５２】
【数５】
2008033678.tif 000007
【００５３】
数５は、複数の法線ベクトルの重み加算を示している。重みは、例えば、個々のパッチの面積によって決定してもよい。また、重みを１としてもよい。これらの法線ベクトルＮ１−Ｎ５、およびサンプル点ＰＡの法線ベクトルＮＡとの間で、それらの間の角度が基準値Ｅ１から基準値Ｅ２の範囲にあるか否かによって歪みの発生を検知する。
（３）稜線上の法線一致チェック
２つの曲面ポリゴンの境界に位置する稜線上で、曲面ポリゴンの法線を複数個求め、法線間の角度が所定の基準値（Ｅ１）以内か否かを判定する。処理手順は、法線を求める位置が稜線上にあること以外は、上記（１）と同様である。
（４）稜線の曲率解析
曲面パッチの境界線である稜線上で稜線の曲率を求める。そして、変形操作時に稜線の曲率を監視し、曲率が基準値より大きい点を検知する。あるいは、曲率の変化の大きな点（例えば、曲率方向の内積＜０の点、すなわち、角度９０度より大きな変化）を検知する。すなわち、曲率の変化として、１つの稜線上での曲率の方向の変化を検知してもよい。また、１つの稜線上の大きさの変化を検知してもよい。すなわち、稜線上で、曲率の方向が、極端に大きく変化し、あるいは、曲率の値が極端に大きく変化する点を検知してもよい。さらに、稜線上の変曲点の数の変化等を検出し、変曲点数が所定以上の稜線を歪みの検出された稜線としてもよい。さらにまた、稜線歪み判定手段が、稜線ごとに曲率を逐一記録しておき、前回判定時点と今回時点での曲率の差分を曲率の変化としてもよい。
【００５４】
曲率は、曲線上の点の位置ベクトルＰに対して、その２次微分として求めることができる。曲線上の点の位置ベクトルＰの曲線の長さｓによる１次微分Ｐ’＝ｄＰ／ｄｓは、以下の数６で与えられる。ここで、ピードット（ベクトルＰの上部に黒丸を付加したもの）は、ベクトルＰの時間微分を表す。ピードットは、曲線の接線方向のベクトルを表し、数６は、接線方向の単位ベクトルとなっている。
【００５５】
【数６】
2008033678.tif 000008
【００５６】
数６をさらに、曲線の長さｓによって微分すると、曲率となる。曲率Ｒ＝Ｐ”を以下の数７で示す。ここで、ピーツードット（ベクトルＰの上部に黒丸を２個付加したもの）は、ベクトルＰの２次の時間微分（加速度）を表す。
【００５７】
【数７】
2008033678.tif 000009
【００５８】
曲率Ｒは、以下の数８の形式で表すこともできる。
【００５９】
【数８】
2008033678.tif 000010
【００６０】
曲線上の点の位置ベクトルをＰとした場合、曲率Ｒ＝Ｐ”、速度ピードット、加速度ピーツードットの関係は、概念的には、図１２に示すことができる。ここで、速度ピードットは、曲線の接線方向のベクトルであり、曲率Ｐ”は、接線と直交する方向である。
【００６１】
速度ピードットに対して、その加速度ピーツードットを求め、速度ピードットを一辺とし、対辺が加速度ピーツードットの先端を通る長方形２２を作図する。この場合に、速度ピードットの先端２１を通り、長方形２２の対角線２３に直交する直線２４と、速度ピードットの曲線との接点２０から引いた速度ピードットに直交する直線２５との交点２６を求める。この場合、接点２０から交点２６までの長さが曲率Ｐ”になる。
（５）曲面ポリゴンの曲率解析
図１３に、曲面ポリゴンの曲率解析の概念を示す図である。曲面ポリゴン、すなわち、パッチは、例えば、１以上のベジエ曲面で構成される。稜線と異なり、曲面ポリゴンでは、一般式による曲率解析（数７、数８参照）ができない。そこで、本実施形態の設計支援装置では、以下の手順で、曲面ポリゴンの曲率解析を実行する。
（ａ）解析の対象となる立体モデルの領域を特定する。これは、例えば、ユーザ操作によって対象となる解析領域の選択を受ければよい。
（ｂ）上記解析領域に含まれる曲面ポリゴンの頂点、例えば、ベジエ曲面の外部制御点（稜線上の制御点）を抽出する。
（ｃ）各頂点にて、法線ベクトルＮ（頂点ごとに区別する場合は、法線Ｎｋという）を求める。
（ｄ）各頂点に接続される稜線Ｌ（稜線ごとに区別する場合は、稜線Ｌｉという）を求める。また、頂点から所定距離のすべての稜線を選択してもよい。そして、頂点近傍での稜線Ｌの接線Ｔ（稜線ごとに区別する場合は、接線Ｔｉという）を求める。
（ｅ）稜線Ｌを頂点の法線Ｎと稜線Ｌの接線Ｔがなす平面に投影する。これによって、３次元空間上の稜線Ｌが平面上の投影線となる。この投影線上の曲率を数７、または数８によって算出する。さらに、投影線上の曲率の最大値Ｒ（稜線ごとに区別する場合は、曲率の最大値Ｒｉという）を求める。
（ｆ）このような曲率の最大値のうち、解析領域内のすべての頂点について、それぞの頂点に接続されるすべての稜線に対して、（ｃ）〜（ｅ）を繰り返す。これによって、解析領域内での最大の曲率を求め、これを曲面ポリゴンの曲率とする。この曲面ポリゴンが所
定の基準値Ｅ３を越えるか否かによって、歪みの発生を判定する。なお、（ｃ）〜（ｅ）を繰り返して得られた曲率Ｒｉをヒストグラムで表示して歪みの発生状況を表示してもよい。
【００６２】
＜処理フロー＞
図１４に、本設計支援装置による立体モデルの変形操作処理の処理フローを示す。これらの処理は、設計支援装置のＣＰＵ上で実行されるコンピュータプログラムとして実現される。
【００６３】
この処理では、まず、ユーザが、ポインティングデバイス等の入力装置を操作し、表示装置の画面上で立体モデルに変形を加える。設計支援装置は、入力装置を通じたユーザの入力を検知し、立体モデルを順次変形させる。すなわち、モーフィングが実行される（Ｓ１）。
【００６４】
このモーフィングの過程で、設計支援装置は、歪み発生検知処理を実行する（Ｓ２）。この処理を実行する設計支援装置のＣＰＵが、本発明の面要素の歪み検出装置に相当する。そして、歪みが検知された場合に、設計支援装置は、表示装置に警告を表示する（Ｓ３）。その場合、立体モデル上で、歪みの発生したと判断される箇所（パッチ等）の色を変えて表示してもよい。さらに、この場合、スピーカから音を出力して注意を喚起してもよい。この処理を実行する設計支援装置のＣＰＵが、本発明の歪みが発生した面要素を表示する手段に相当する。
【００６５】
警告が表示されると、ユーザは、変形操作を停止し、作業をやり直す（Ｓ４）。このような設計支援装置のガイドにより、ユーザは、面にシワ、たるみ等の歪みのないデータを作成できる（Ｓ７）。
【００６６】
ただし、警告が表示された場合でも、ユーザがそのまま作業を続行してもよい。その場合、ユーザは、立体モデルの歪みを軽減するため、入力装置を通じて画面上の立体モデルを修正する作業を実行する必要がある（Ｓ６）。しかし、その場合でも、Ｓ３での警告によって、立体モデルのどの位置に歪みが生じているのかをユーザが概ね認識しているので、修正作業の効率が従来よりも向上する。このような修正作業により、ユーザは、面にシワ、たるみ等の歪みのないデータを作成できる（Ｓ７）。
【００６７】
図１５に、歪み発生検知処理（図１４のＳ２）の詳細を示す。歪み発生検知処理は、ユーザが立体モデルの変形操作を実行するときに、立体モデルの変形とともに、繰り返し実行される。これにより、所定のインターバルで、曲面ポリゴンの歪みが検知される。
【００６８】
歪み発生検知処理では、設計支援装置は、まず、曲面ポリゴン内の法線ベクトルチェック処理を実行する（Ｓ２１）。次に、設計支援装置は、曲面ポリゴン間の法線ベクトルチェック処理を実行する（Ｓ２２）。次に、設計支援装置は、稜線上の法線ベクトルチェック処理を実行する（Ｓ２３）。次に、設計支援装置は、稜線上の曲率解析処理を実行する（Ｓ２４）。さらに、設計支援装置は、曲面ポリゴンの曲率解析処理を実行する（Ｓ２５）。
【００６９】
以上の処理は、Ｓ２１−Ｓ２５の順序で実行される必要はなく、実行順序を入れ替えてもよい。また、Ｓ２１−Ｓ２５のすべての処理を実行する必要はない。それぞれの処理を異なる時間間隔で独立に実行してもよい。
【００７０】
また、Ｓ２１の曲面ポリゴン内の補正ベクトルチェック処理において、歪みの発生がなかった場合に（それぞれの曲面ポリゴン内では、法線ベクトルが略一致していた場合に）
、Ｓ２２の曲面ポリゴン間の法線ベクトルチェック処理を実行するようにしてもよい。そのようにすることで、曲面ポリゴン内の法線ベクトルの一致を確認した上で（曲面ポリゴン内に単一の法線ベクトルが存在することが確認された後）、曲面ポリゴン間での法線ベクトルを比較できる。
【００７１】
図１６に、曲面ポリゴン内の法線ベクトルチェック処理（図１５のＳ２１）の詳細を示す。この処理では、設計支援装置は、歪み発生検知対象の曲面ポリゴンを選択する（Ｓ２１１）。曲面ポリゴンの選択の仕方としては、例えば、全曲面ポリゴンを選択の対象としてもよい。また、例えば、ランダムに所定個数の曲面ポリゴンを選択の対象としてもよい。また、例えば、ユーザが入力装置で指定した立体モデル上の領域に含まれる曲面ポリゴンを選択の対象としてもよい。なお、本実施形態では、曲面ポリゴンは、それぞれの曲面ポリゴンを識別する識別情報と、曲面ポリゴンを構成する制御点の個数（曲面の次数）と、制御点の座標とによって規定される。
【００７２】
次に、本設計支援装置は、曲面ポリゴン内のサンプル点を設定する（Ｓ２１２）。サンプル点は、例えば、曲面ポリゴンＳ（ｕ，ｖ）上で、事前に設定されたｕ，ｖの値（例えば、ユーザの設定値、あるいは、システムのデフォルトのパラメータ）にしたがって、決定すればよい。設計支援装置が、サンプル点として制御点そのものを指定するようにしてもよい。
【００７３】
次に、設計支援装置は、各サンプル点での各法線ベクトルを算出する（Ｓ２１３）。法線ベクトルの算出は、数４にしたがって算出する。この処理を実行する設計支援装置の不図示のＣＰＵが、本発明の法線ベクトルを求める手段に相当する。
【００７４】
次に、設計支援装置は、法線ベクトル相互の間の角度を算出する（Ｓ２１４）。法線ベクトル間の角度は、内積計算と逆三角関数による。この処理を実行する設計支援装置のＣＰＵが、本発明の法線ベクトルの相対関係を示す値を算出する手段に相当する。
【００７５】
そして、設計支援装置は、それらの角度がいずれも基準値Ｅ１より大きいか否かを判定する（Ｓ２１５）。基準値Ｅ１は、例えば、ユーザ指定値、あるいは、システムのデフォルトのパラメータである。基準値Ｅ１は、歪みとして許容できる経験値から設定すればよい。この処理を実行する設計支援装置のＣＰＵが、本発明の面要素歪み発生判定手段に相当する。
【００７６】
そして、いずれかの法線ベクトル間の角度が、基準値Ｅ１より大きい場合、当該曲面ポリゴンを歪みありの表示とし、曲面ポリゴンの識別情報、あるいは、制御点の座標とともにエラーコードを設定する（Ｓ２１６）。曲面ポリゴンを歪みありとする表示としては、例えば、その曲面ポリゴンの表示色を変更すればよい。エラーコードは、例えば、図１４のＳ３の警告表示で読み出され、表示装置に表示される。なお、曲面ポリゴンの表示色の変更を図１４のＳ３の時点で実行してもよい。
【００７７】
次に、設計支援装置は、チェック対象の曲面ポリゴンをすべてチェックしたか否かを判定する。チェック対象の曲面ポリゴンをすべてチェックしていない場合、設計支援装置は、制御をＳ２１１に戻す。一方、チェック対象の曲面ポリゴンをすべてチェックした場合、設計支援装置は、処理を終了する。
【００７８】
図１７に、曲面ポリゴン間の法線ベクトルチェック処理（図１５のＳ２２）の詳細を示す。この処理では、設計支援装置は、立体モデル上で監視対象のサンプル点を選択する（Ｓ２２１）。サンプル点の選択の仕方としては、例えば、全曲面ポリゴンから１点ずつ所定の点（例えば、稜線上の１つの制御点）を選択し、監視対象としてもよい。また、例え
ば、ランダムに所定個数の曲面ポリゴンを選択し、それらに含まれる所定の点をそれぞれ１つずつ選択して監視対象としてもよい。また、例えば、ユーザが入力装置で指定した立体モデル上の領域に含まれる曲面ポリゴンから所定の点を選択の対象としてもよい。また、図１５のＳ２１の処理で、曲面ポリゴン内に歪みが検出されなかったものを抽出して、本処理の対象としてもよい。
【００７９】
次に、本設計支援装置は、サンプル点周囲の曲面ポリゴンを検索する（Ｓ２２２）。曲面ポリゴンは、Ｓ２２１で選択されたサンプル点が所属する曲面ポリゴンを抽出すればよい。
【００８０】
次に、設計支援装置は、各曲面ポリゴンで法線ベクトルを算出する（Ｓ２２３）。法線ベクトルは、例えば、それぞれの曲面ポリゴン内の内部制御点のいずれか、あるいは、曲面ポリゴンの重心位置等において、算出すればよい。法線ベクトルの算出は、数４にしたがって算出する。
【００８１】
次に、設計支援装置は、法線ベクトル相互の間の角度を算出する（Ｓ２２４）。法線ベクトル間の角度は、内積計算および逆三角関数したがって求める。
【００８２】
そして、設計支援装置は、それらの角度がいずれも基準値Ｅ１〜Ｅ２の範囲にあるか否かを判定する（Ｓ２１５）。基準値Ｅ１、Ｅ２は、例えば、ユーザ指定値、あるいは、システムのデフォルトのパラメータである。基準値Ｅ１は、歪みとして許容できる経験値から設定すればよい。また、基準値Ｅ２は、本来、曲面ポリゴン間に、折れ目がある場合に、そのような折れ目を境界線とする２つのポリゴンをチェックの対象から除外するための値（十分に大きな角度、例えば、２０度以上の値）を設定すればよい。この処理を実行する設計支援装置のＣＰＵが、本発明の面データに歪みが発生したと判定する手段に相当する。
【００８３】
そして、いずれかの法線ベクトル間の角度が、基準値Ｅ１〜Ｅ２の範囲にある場合、当該曲面ポリゴンを歪みありの表示とし、曲面ポリゴンの識別情報、あるいは、制御点の座標とともにエラーコードを設定する（Ｓ２１６）。このようにして、設計支援装置は、許容値を超える法線ベクトルの角度の差違から歪みを検知するともに、本来折れ目として存在していた箇所を除外し、誤ったエラー表示を低減できる。
【００８４】
次に、設計支援装置は、チェック対象のサンプル点をすべてチェックしたか否かを判定する。チェック対象の曲面ポリゴンをすべてチェックしていない場合、設計支援装置は、制御をＳ２２１に戻す。一方、チェック対象の曲面ポリゴンをすべてチェックした場合、設計支援装置は、処理を終了する。
【００８５】
なお、稜線ベクトルのチェック処理（図１５のＳ２３）の処理は、曲面ポリゴン内の法線ベクトルチェック処理（図１６）において、サンプル点を稜線上に限定すればよい。したがって、チェック手順は、図１６の場合と同様であるので、その説明を省略する。
【００８６】
図１８に、稜線上の曲率解析処理（図１５のＳ２４）の詳細を示す。この処理では、設計支援装置は、サンプル点を選択する（Ｓ２４１）。この処理は、図１７のＳ２２１と同様である。
【００８７】
次に、設計支援装置は、サンプル点周囲の稜線を選択する（Ｓ２４２）。この処理では、例えば、サンプル点周囲の曲面ポリゴンを検索し、その曲面ポリゴンに所属する稜線を選択すればよい。選択する稜線の数は、例えば、サンプル点に所定個数の上限を定めておけばよい。また、サンプル点から所定距離のすべての稜線を選択してもよい。この処理を
実行する設計支援装置のＣＰＵが、本発明の稜線抽出手段に相当する。
【００８８】
次に、設計支援装置は、稜線上で曲率の最大値Ｒを求める（Ｓ２４３）。最大値は、例えば、稜線上で所定間隔ごとに曲率を求めて、その最大値を選択すればよい。あるいは、稜線の両端から二分法において、曲率が増加する方向に絞り込んでいってもよい。そして、曲率の増加率が所定の限度に収まった時点で、曲率の最大値として判定すればよい。曲率は、数７あるいは数８にしたがって求めればよい。この処理を実行する設計支援装置のＣＰＵが、本発明の稜線歪み判定手段に相当する。
【００８９】
次に、設計支援装置は、曲率の最大値Ｒが所定の基準値Ｅ３を越えたか否かを判定する（Ｓ２４５）。この処理を実行する設計支援装置のＣＰＵが、本発明の曲率算出手段に相当する。曲率の最大値Ｒが所定の基準値Ｅ３を越えた場合、設計支援装置は、当該稜線を含む曲面ポリゴンを歪みありとして表示し、曲面ポリゴンの識別情報、あるいは、制御点の座標とともにエラーコードを設定する（Ｓ２４６）。
【００９０】
なお、上記処理では、曲率の大きさが所定の基準値Ｅ３を越えたか否かを判定したが、これに代えて曲率の変化が所定の限度を超えたか否かを判定してもよい。
【００９１】
さらにまた、当所から折れている部位をチェックの対象から除外するようにしてもよい。すなわち、Ｓ２４２およびＳ２４３の処理で、変形操作開始時にすでに曲率が、所定の限界値Ｅ４を超えているものを除外してもよい。また、Ｓ２４５の判定で、変形操作開始時にすでに曲率の最大値Ｒが所定の限界値Ｅ４を超えている場合に、その曲率の最大値Ｒを無視するようにしてもよい。
【００９２】
また、立体モデルの変形操作時に屈曲操作がなされた場合に、その屈曲操作によって折られた部位をチェックの対象から除外するようにしてもよい。すなわち、変形操作とともに、曲率を監視し、Ｓ２４２およびＳ２４３の処理で、曲率が所定の限界値Ｅ４を超えているものを除外すればよい。また、変形操作ともに、曲率を監視し、Ｓ２４５の判定で、曲率の最大値Ｒが所定の限界値Ｅ４を超えている場合に、その曲率の最大値Ｒを無視すればよい。
【００９３】
次に、設計支援装置は、サンプル点の周囲で、監視対象の稜線をすべてチェックしたか否かを判定する（Ｓ２４７）。監視対象のすべての稜線をチェックしていない場合、設計支援装置は、制御をＳ２４２に戻す。当該サンプル点の周囲で監視対象のすべての稜線をチェックした場合、設計支援装置は、チェック対象のすべてのサンプル点をチェックしたか否かを判定する（Ｓ２４８）。
【００９４】
チェック対象のすべてのサンプル点をチェックしていない場合、設計支援装置は、制御をＳ２４１に戻す。一方、チェック対象のすべてのサンプル点をチェックした場合、設計支援装置は、処理を終了する。
【００９５】
図１９に、曲面ポリゴン（パッチ）の曲率解析処理（図１５のＳ２５）の詳細を示す。この処理では、設計支援装置は、入力装置を通じたユーザ操作によって、立体モデル上での解析対象となる解析領域の指定を受ける（変形操作前に事前に設定を受けておいてもよい）（Ｓ２５０）。
【００９６】
次に、設計支援装置は、解析領域内の頂点を選択する（Ｓ２５１）。そして、設計支援装置は、頂点の法線Ｎｉと、その頂点につながる稜線Ｌｉ（または頂点近傍の稜線）の接線Ｔｉを算出する（Ｓ２５２）。この処理を実行する設計支援装置のＣＰＵが近傍稜線抽出手段に相当する。
【００９７】
次に、設計支援装置は、稜線Ｌｉを法線Ｎｋと接線Ｔｉのなす平面に投影し、平面上で投影線上の最大の曲率Ｒｉを求める（Ｓ２５３）。投影線上の最大の曲率Ｒｉは、図１８のＳ２４３と同様の手順で求めればよい。すなわち、投影線上で、所定の間隔で、順次数７または数８にしたがって曲率Ｒｉを求めてもよい。また、投影線上で両端から二分法にて、曲率Ｒｉが最大となる方向を探索してもよい。この処理を実行する設計支援装置のＣＰＵが投影曲率算出手段に相当する。
【００９８】
次に、設計支援装置は、頂点周囲の稜線すべてをチェックしたか否かを判定する（Ｓ２５４）。頂点周囲の稜線すべてのチェックが終了していない場合、設計支援装置は、制御をＳ２５２に戻し、次の稜線に対して処理を繰り返す。
【００９９】
頂点周囲の稜線すべてのチェックが終了した場合、設計支援装置は、チェック対象である解析領域の頂点すべてをチェックしたか否かを判定する（Ｓ２５５）。解析領域のすべての頂点のチェックが終了していない場合、設計支援装置は、制御をＳ２５１に戻し、次の頂点に対して処理を繰り返す。
【０１００】
チェック対象のすべての頂点のチェックが終了した場合、設計支援装置は、求めた稜線ごとの最大の曲率Ｒｉのうちの最大値Ｒｍａｘを求める（Ｓ２５６）。そして、設計支援装置は、稜線ごとの最大の曲率Ｒｉのうちの最大値Ｒｍａｘが、所定の基準値Ｅ３を越えるか否かを判定する（Ｓ２５７）。この処理を実行する設計支援装置のＣＰＵが、本発明の稜線歪み判定手段に相当する。最大値Ｒｍａｘが基準値Ｅ３を越える場合、設計支援装置は、当該曲面ポリゴンを歪みありの表示とし、曲面ポリゴンの識別情報とともにエラーコードを設定する（Ｓ２５８）。
【０１０１】
なお、上記処理では、曲率の大きさが所定の基準値Ｅ３を越えたか否かを判定したが、これに代えて曲率の変化が所定の限度を超えたか否かを判定してもよい。
【０１０２】
さらにまた、当所から折れている部位をチェックの対象から除外するようにしてもよい。すなわち、Ｓ２５３の処理で、変形操作開始時にすでに最大の曲率Ｒｉが、所定の限界値Ｅ４を超えているものを除外してもよい。また、Ｓ２５７の判定で、変形操作開始時にすでに最大の曲率がＲｉが所定の限界値Ｅ４を超えている場合に、その最大の曲率Ｒｉを無視するようにしてもよい。
【０１０３】
また、立体モデルの変形操作時に、屈曲操作がなされた場合に、その屈曲操作によって折られた部位をチェックの対象から除外するようにしてもよい。すなわち、変形操作ともに、曲率を監視し、Ｓ２５３の処理で、最大の曲率Ｒｉが所定の限界値Ｅ４を超えているものを除外すればよい。また、変形操作ともに、曲率を監視し、Ｓ２５７の判定で、最大の曲率Ｒｉが所定の限界値Ｅ４を超えている場合に、その最大の曲率Ｒｉを無視すればよい。
【０１０４】
以上述べたように、本実施形態の設計支援装置は、立体モデルの変形操作時に、立体モデルを構成する曲面ポリゴン内の歪みの発生を監視する。歪みは、曲面ポリゴン上の複数点の法線ベクトルの角度（または角度の変化量）が所定の基準値を超えたか否かによって判断される。そして、曲面ポリゴンの歪みの発生が検知された場合、警告表示される。
【０１０５】
さらに、曲面ポリゴン内の歪みが検知されなかった場合でも、本設計支援装置は、曲面ポリゴン間の法線ベクトルの角度を求め、その角度（または角度の変化量）が基準値Ｅ１〜Ｅ２の範囲にあるか否かを判定することによって歪みの発生を検知する。この場合、法線ベクトル間の角度（または角度の変化量）が基準値Ｅ１を越えた場合、歪みが許容量を
超えたと判断できる。また、法線ベクトル間の角度（または角度の変化量）が基準値Ｅ２を越えた場合には、本来、２つの曲面ポリゴンは、折れた状態の位置関係にあり、歪み検出の対象から除外することができる。このようにして、本設計支援装置は、不要な警告表示を抑制した状態で、検知すべき歪みの発生を報告できる。
【０１０６】
さらに、本設計支援装置は、曲面ポリゴン間の境界線である稜線上の複数の法線ベクトル間で角度を解析し、その角度（または角度の変化率）が所定の基準値Ｅ１を越えたか否かによって歪みの発生を検知する。
【０１０７】
さらに、本設計支援装置は、曲面ポリゴン間の境界線である稜線の曲率を監視し、曲率が所定の基準値Ｅ１を越えたか否かによって曲面ポリゴンの歪みの発生を検知する。またはその曲率の変化が所定の限度を越えたか否かによって曲面ポリゴンの歪みの発生を検知する。
【０１０８】
さらに、本設計支援装置は、曲面領域上で頂点の法線ベクトルと、その頂点近傍での稜線の接線とが構成する平面に、その稜線を投影し、稜線の曲率を求め、曲率が所定の基準値Ｅ１を越えたか否かによって曲面ポリゴンの歪みの発生を検知する。またはその曲率の変化が所定の限度を越えたか否かによって曲面ポリゴンの歪みの発生を検知する。このようにして、例えば、特定の領域の指定を受けて、その領域を被覆する曲面全体の歪みを監視することができる。
【０１０９】
このように、本設計支援装置は、複数の判断基準によって立体モデル上の歪みの発生を監視し、歪みが発生した場合には、その旨を警告できる。その結果、ユーザは、変形操作を停止し、そのような歪みの発生のない操作手順で変形操作を再開すればよい。また、ユーザは、そのまま変形操作を継続し、変形操作完了後に、歪みの発生が検知された付近を再度変形操作することによって歪みを除去できる。
【０１１０】
さらに、当所から折れている部位を除外し、あるいは、変形操作の過程で屈曲操作がなされたときに、その屈曲操作によって折られた部位を除外することで、不要なエラー表示を低減でき、本来の認識されるべきエラー表示が多数のノイズ的なエラー表示に埋もれてしまう弊害を低減できる。
【０１１１】
＜変形例＞
上記実施形態では、ユーザによる変形操作とともに、曲面ポリゴン内の法線ベクトル、異なる曲面ポリゴン間の法線ベクトルを監視し、法線ベクトルの角度、角度の変化率から歪みの発生を検知した。また、ユーザによる変形操作とともに、稜線の曲率、曲面ポリゴンの曲率を監視し、歪みの発生を検知した。
【０１１２】
しかし、このような処理に代えて、変形操作とは切り離して、すでに存在する立体モデル上で歪みが発生しているか否かを判定してもよい。判定処理の手順は、変形操作とは切り離して実施すること以外は、上記実施形態と同様である。
【０１１３】
図２０は、データ作成時の法線ベクトルによる歪み検知処理の概念を説明する図である。設計支援装置は、検査対象部分、例えば、円で示された箇所に存在する曲面ポリゴンに対して、複数のサンプル点で法線ベクトルを算出し、相互の角度が所定の基準値以内かどうかを判定すればよい。また、稜線の曲率が所定の基準値以内かどうかを判定すればよい。
【０１１４】
図２１に、そのようなデータ作成時の法線ベクトルによる歪み検知処理の手順を示す。この処理では、設計支援装置は、ユーザ操作に応答して製品データの作図を実行する（Ｓ
８０）。そして、製品データの作図を完了する（Ｓ８１）。
【０１１５】
すると、設計支援装置は、上記図１５−図１８で説明した不具合のある面（歪みの発生した面）をすべて摘出する（Ｓ８２）。
【０１１６】
ユーザは、摘出結果を基に、面を修正し、立体モデルを整備する操作を実施する。設計支援装置は、そのユーザ操作を受け付けて、面の修正・整備を実行する（Ｓ８３）。
【０１１７】
なお、このように立体モデルの全体で歪みを検出する代わりに、所定の作業単位ごと、あるいは、立体モデルの部分ごとに歪みを検出してもよい（Ｓ９１）。ユーザは、そのような作業単位ごと、部分ごとに、面を修正し、立体モデルを整備する操作を実施する。設計支援装置は、そのユーザ操作を受け付けて、そのような作業単位ごと、部分ごとに、面の修正・整備を実行する（Ｓ９２）。このような作業を繰り返して、製品データの作成が完了する（Ｓ９３）。
【０１１８】
このような処理によって、シワ、よたりというような歪みのない製品データを作成できる。
【０１１９】
上記実施形態では、曲面ポリゴンによって３次元モデルを構成する設計支援装置を例にして、立体モデル変形時のの歪み、あるいは立体モデル形成時の歪みを検出する処理を説明した。しかし、３次元モデルとしては、曲面ポリゴンによって構成されるものに限定される分けではない。例えば、曲面ポリゴンを組み合わせる代わりに、スプライン曲線等の曲線、円、楕円、多項式関数による曲線を所定の回転軸で回転した曲面、上記曲線を所定方向に移動した軌跡である曲面等の組合せによって３次元モデルを構成した場合でも、本発明の実施は可能である。例えば、それぞれの曲面上で、所定の間隔で、サンプル点を設定し、隣接サンプル点間で法線ベクトルの角度、角度の変化等を監視すればよい。また、法線ベクトルとサンプル点近傍の曲面の接線ベクトルから平面を形成し、そのような平面への曲面の投影によって投影された稜線を形成し、図１９と同様の手順で、曲率を監視すればよい。
【図面の簡単な説明】
【０１２０】
【図１】曲面ポリゴンで構成されている立体モデルを変形した例を示す図である。
【図２】曲面ポリゴンをメッシュに分割した例を示す図である。
【図３】三角形のパッチによる立体モデルの例を示す図である。
【図４】３次ベジエ曲線を示す図である。
【図５】４角形パッチによる３次ベジエ曲面の例を示す図である。
【図６】３次四角パッチとのその内部制御点の配置を示す図である。
【図７】４次四角パッチとのその内部制御点の配置を示す図である。
【図８】三角形パッチによる３次ベジエ曲面の例を示す図である。
【図９】３次三角パッチとのその内部制御点の配置を示す図である。
【図１０】４次三角パッチとのその内部制御点の配置を示す図である。
【図１１】サンプル点とその周囲に存在する複数の曲面ポリゴンとの関係を示す図である。
【図１２】曲線上の点の位置ベクトルと、その１次微分、２次微分の関係を示す図である。
【図１３】曲面ポリゴンの曲率解析の概念を示す図である。
【図１４】立体モデルの変形操作処理の処理フローを示す図である。
【図１５】歪み発生検知処理の詳細を示す図である。
【図１６】曲面ポリゴン内の法線ベクトルチェック処理の詳細を示す図である。
【図１７】曲面ポリゴン間の法線ベクトルチェック処理の詳細を示す図である。
【図１８】稜線上の曲率解析処理の詳細を示す図である。
【図１９】曲面ポリゴン（パッチ）の曲率解析処理の詳細を示す図である。
【図２０】データ作成時の法線ベクトルによる歪み検知処理の概念を説明する図である。
【図２１】データ作成時の法線ベクトルによる歪み検知処理の手順を示す図である。
【図１】
2008033678.tif 000011
【図２】
2008033678.tif 000012
【図３】
2008033678.tif 000013
【図４】
2008033678.tif 000014
【図５】
2008033678.tif 000015
【図６】
2008033678.tif 000016
【図７】
2008033678.tif 000017
【図８】
2008033678.tif 000018
【図９】
2008033678.tif 000019
【図１０】
2008033678.tif 000020
【図１１】
2008033678.tif 000021
【図１２】
2008033678.tif 000022
【図１３】
2008033678.tif 000023
【図１４】
2008033678.tif 000024
【図１５】
2008033678.tif 000025
【図１６】
2008033678.tif 000026
【図１７】
2008033678.tif 000027
【図１８】
2008033678.tif 000028
【図１９】
2008033678.tif 000029
【図２０】
2008033678.tif 000030
【図２１】
2008033678.tif 000031