(57)【要約】圧縮されたデータに基づいて高速に立体形状を表示することができるようにする。少なくとも１つの面で立体形状を定義した立体形状データ（２）に基づいて、立体形状を構成する面の分割パターンを決定する（ステップＳ２）。同時に、立体形状データ（２）に予め定義された面の頂点の位置とその頂点における法線方向とに基づいて面の曲面形状を決定する（ステップＳ３）。次に、決定された曲面形状を、決定された分割パターンによって分割し、曲面形状に沿った複数の面を生成する（ステップＳ４）。そして、生成された複数の面で構成される立体形状を表示する（ステップＳ５）。
2003067527.tif 000002
【特許請求の範囲】
【請求項１】
物の形状を立体的に表示させる立体形状表示プログラムにおいて、コンピュータに、
少なくとも１つの面で立体形状を定義した立体形状データに基づいて、前記立体形状を構成する前記面の分割パターンを決定すると共に、前記立体形状データに予め定義された前記面の頂点の位置と当該頂点における法線方向とに基づいて前記面の曲面形状を決定し、
決定された前記曲面形状を、決定された前記分割パターンによって分割し、前記曲面形状に沿った複数の面を生成し、
生成された前記複数の面で構成される立体形状を表示する、
処理を実行させることを特徴とする立体形状表示プログラム。
【請求項２】
前記分割パターンの決定の際には、前記面を構成する辺毎の分割数を決定し、前記辺毎の分割数に応じて前記面の分割パターンを決定することを特徴とする請求の範囲第１項記載の立体形状表示プログラム。
【請求項３】
前記分割パターン決定の際には、前記面を構成する前記辺の分割数を、表示精度に関連する操作入力に応じて決定することを特徴とする請求の範囲第２項記載の立体形状表示プログラム。
【請求項４】
前記表示精度に関連する操作入力は、表示倍率の指定であることを特徴とする請求の範囲第３項記載の立体形状表示プログラム。
【請求項５】
前記表示精度に関連する操作入力は、許容誤差の指定であることを特徴とする請求の範囲第３項記載の立体形状表示プログラム。
【請求項６】
前記表示精度に関連する操作入力は、表示画面内での立体形状の動作指示であることを特徴とする請求の範囲第３項記載の立体形状表示プログラム。
【請求項７】
前記分割パターン決定の際には、前記面を構成する前記辺に予め設定されている基底分割数を、前記表示精度に関連する操作入力に応じて増減させることで、前記辺の分割数を決定することを特徴とする請求の範囲第３項記載の立体形状表示プログラム。
【請求項８】
前記分割パターン決定の際には、操作入力によって指定された表示倍率と許容誤差とに応じた係数を決定し、当該係数を前記基底分割数に乗算した値によって前記辺の分割数を決定することを特徴とする請求の範囲第７項記載の立体形状表示プログラム。
【請求項９】
前記分割パターン決定の際には、２のべき乗の値の中から前記辺の分割数を決定することを特徴とする請求の範囲第２項記載の立体形状表示プログラム。
【請求項１０】
前記曲面形状の決定の際には、前記面の頂点に対して予め設定されている接線ベクトルに応じて、前記面を構成する辺の曲線を決定することを特徴とする請求の範囲第１項記載の立体形状表示プログラム。
【請求項１１】
前記立体形状の表示の際には、表示画面内での当該立体形状の移動の有無を判断し、移動している場合には前記立体形状データに予め定義されている立体形状を表示することを特徴とする請求の範囲第１項記載の立体形状表示プログラム。
【請求項１２】
物の形状をコンピュータで立体的に表示させるための立体形状表示方法において、
少なくとも１つの面で立体形状を定義した立体形状データに基づいて、前記立体形状を構成する前記面の分割パターンを決定すると共に、前記立体形状データに予め定義された前記面の頂点の位置と当該頂点における法線方向とに基づいて前記面の曲面形状を決定し、
決定された前記曲面形状を、決定された前記分割パターンによって分割し、前記曲面形状に沿った複数の面を生成し、
生成された前記複数の面で構成される立体形状を表示する、
ことを特徴とする立体形状表示方法。
【請求項１３】
物の形状を立体的に表示する立体形状表示装置において、
少なくとも１つの面で立体形状を定義した立体形状データに基づいて、前記立体形状を構成する前記面の分割パターンを決定する分割パターン決定手段と、
前記立体形状データに予め定義された前記面の頂点の位置と当該頂点における法線方向とに基づいて、前記面の曲面形状を決定する曲面形状決定手段と、
前記曲面形状決定手段で決定された前記曲面形状を、前記分割パターン決定手段で決定された前記分割パターンによって分割し、前記曲面形状に沿った複数の面を生成する面生成手段と、
前記面生成手段で生成された前記複数の面で構成される立体形状を表示する表示手段と、
を有することを特徴とする立体形状表示装置。
【請求項１４】
物の形状を立体的に表示させるための立体形状表示プログラムを記録したコンピュータ読み取り可能な記録媒体において、
前記コンピュータに、
少なくとも１つの面で立体形状を定義した立体形状データに基づいて、前記立体形状を構成する前記面の分割パターンを決定すると共に、前記立体形状データに予め定義された前記面の頂点の位置と当該頂点における法線方向とに基づいて前記面の曲面形状を決定し、
決定された前記曲面形状を、決定された前記分割パターンによって分割し、前記曲面形状に沿った複数の面を生成し、
生成された前記複数の面で構成される立体形状を表示する、
処理を実行させることを特徴とする立体形状表示プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
技術分野
本発明は物の形状を立体的に表示するための立体形状表示プログラム、立体形状表示方法、および立体形状表示装置に関し、特に圧縮されたデータに基づいて元の形状を再現するための立体形状表示プログラム、立体形状表示方法、および立体形状表示装置に関する。
背景技術
近年、各種部品を３次元ＣＡＤ（Ｃｏｍｐｕｔｅｒ−Ａｉｄｅｄ  Ｄｅｓｉｇｎ）で立体的に表現することが一般的となっている。たとえば、複雑な構造の装置を構成する各部品が３次元ＣＡＤデータで表現される。これにより、個々の部品のＣＡＤデータ（ソリッドモデル）を集結し、アセンブリ検討、レイアウト検討、干渉検討などの作業を、コンピュータ上で容易に行うことができる。このような作業はデジタルモックアップと呼ばれ、自動車や航空機産業を中心に盛んに用いられている。
一般にソリッドＣＡＤデータには、高精度の幾何と位相で表したプリサイス表現（Ｐｒｅｃｉｓｅ  Ｒｅｐｒｅｓｅｎｔａｔｉｏｎ）が用いられる。ソリッドＣＡＤデータは、プリサイス表現を基に、パラメトリック変形の為の拘束条件や形状生成履歴を持つ。さらにソリッドＣＡＤデータは、表示を速くするための表示データも保持している。それ故にソリッドＣＡＤが扱う情報量は多く、部品を集結してデジタルモックアップを造るにはデータ量が膨大になる。ソリッドのＣＡＤのデータ量が膨大であると、データの編集は行わずに立体形状を表示させるだけの場合であっても、膨大な量のデータ処理が発生する。
その解決策として自動車や航空機産業では、ＣＡＤデータを表示用ポリゴンデータ（たとえば、ＶＲＭＬ（Ｖｉｒｔｕａｌ  Ｒｅａｌｉｔｙ  Ｍｏｄｅｌｉｎｇ  Ｌａｎｇｕａｇｅ）のデータ）に変換し、その表示用ポリゴンデータをデジタルモックアップ専用のビューア（Ｖｉｅｗｅｒ）を用いて表示している。表示用ポリゴンデータを用いて画面表示させることで、形状の確認作業が容易となる。
ところが、最近のＣＡＤデータの詳細化（より細かい定義でデータ量が増加）は、ハードウェアやソフトウェアの進化を超え、専用ビューアでも製品全体を扱うことが困難になってきた。たとえば、自動車のエンジンの構成を表すＣＡＤデータを、０．１ｍｍの誤差で表示用ポリゴンデータに変換した場合、０．５〜１Ｇｂｙｔｅになる。エンジンだけでも０．５〜１Ｇｂｙｔｅになるため、車両１台分の合計は１０Ｇｂｙｔｅ以上になると推定される。そのため、ビューアを実行するコンピュータには、表示用ポリゴンデータを格納するための大容量のメモリやハードディスク装置が必要となる。
そこで、表示用の立体形状のデータを圧縮する技術が考えられている。立体形状の圧縮表現としてはＢ’ｅｚｉｅｒの三角パッチやＧｒｅｇｏｒｙパッチ（Ｌａｔｔｉｃｅ＝ＸＶＬ）などを用いる方法があり、ハードディスク装置に格納しておくデータ容量を減らすことができるが、データをメモリ読み込み時にポリゴンに展開するためにメモリの削減にはならない。一方、圧縮された立体形状をそのままメモリに保持し、表示倍率に応じてポリゴンを再分割する方法にＳｕｂｄｉｖｉｓｉｏｎ法がある。Ｓｕｂｄｉｖｉｓｉｏｎ法が適している理由は、画面の拡大時に多くの部品は視野（画面）外にある確率が高く、Ｖｉｅｗ  Ｆｒｕｓｔｕｍ  Ｃｕｌｌｉｎｇ（視野外の物体を省く手法）を用いて省かれたＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）資源をポリゴンの再分割計算に割り当てることが出来るからである。
Ｓｕｂｄｉｖｉｓｉｏｎ法の一例として、米国特許６，２２２，５５３号公報に記載された発明がある。この発明では、ＮＵＲＢＳ（Ｎｏｎ−Ｕｎｉｆｏｒｍ  Ｒａｔｉｏｎａｌ  Ｂ−Ｓｐｌｉｎｅｓ）曲線などのコントロールポイントを用いて表現している。そして、１つの形状の中間点からその形状の各辺に向けて引いた線によって、元の形状を分割している。
しかし、従来のＳｕｂｄｉｖｉｓｉｏｎ法は、メモリやファイル容量を少なくすることはできるが、ポリゴンの再分割計算におけるコンピュータの処理負荷が大幅に増加してしまう。しかも、従来のＳｕｂｄｉｖｉｓｉｏｎ法におけるデータ圧縮効果は、Ｗｅｂなどを用い遠隔地から大規模データのコラボレーションを行うには不十分である。
たとえば、米国特許６，２２２，５５３号公報に記載された発明では、ある形状の中間点から各辺に向けて引いた線でその形状を分割するため、分割する必要のない辺（たとえば、直線の辺）が含まれていても全ての辺が分割されてしまう。従って、不必要な分割が発生し、処理負荷の増大を招いている。しかも、ＮＵＲＢＳ曲線などのコントロールポイントは、各辺毎に個別に設定する必要があり、データ量増大の原因となってしまう。
発明の開示
本発明はこのような点に鑑みてなされたものであり、圧縮されたデータに基づいて高速に立体形状を表示することができる立体形状表示プログラム、立体形状表示方法、および立体形状表示装置を提供することを目的とする。
本発明の第１の形態では、上記課題を解決するために、図１に示す様な物の形状を立体的に表示させる処理をコンピュータに実行させる立体形状表示プログラムが提供される。本発明に係る立体形状表示プログラムを実行するコンピュータは、まず、少なくとも１つの面で立体形状を定義した立体形状データ２に基づいて、立体形状を構成する面の分割パターンを決定する（ステップＳ２）。同時に、コンピュータは、立体形状データ２に予め定義された面の頂点の位置とその頂点における法線方向とに基づいて面の曲面形状を決定する（ステップＳ３）。次に、コンピュータは、決定された曲面形状を、決定された分割パターンによって分割し、曲面形状に沿った複数の面を生成する（ステップＳ４）。そして、コンピュータは、生成された複数の面で構成される立体形状を表示する（ステップＳ５）。
このような立体形状表示プログラムを任意のコンピュータで実行させることで、立体形状データ２を構成する面に定義された法線方向などに応じた曲面形状が決定され、その曲面形状が複数の面に分割される。そして、分割された面で構成される立体形状が表示される。
本発明の第２の形態では、物の形状をコンピュータで立体的に表示させるための立体形状表示方法において、少なくとも１つの面で立体形状を定義した立体形状データに基づいて、前記立体形状を構成する前記面の分割パターンを決定すると共に、前記立体形状データに予め定義された前記面の頂点の位置と当該頂点における法線方向とに基づいて前記面の曲面形状を決定し、決定された前記曲面形状を、決定された前記分割パターンによって分割し、前記曲面形状に沿った複数の面を生成し、生成された前記複数の面で構成される立体形状を表示する、ことを特徴とする立体形状表示方法が提供される。
このような立体形状表示方法によれば、立体形状データを構成する面に定義された法線方向などに応じた曲面形状が決定され、その曲面形状が複数の面に分割される。そして、分割された面で構成される立体形状が表示される。
本発明の第３の形態では、物の形状を立体的に表示する立体形状表示装置において、少なくとも１つの面で立体形状を定義した立体形状データに基づいて、前記立体形状を構成する前記面の分割パターンを決定する分割パターン決定手段と、前記立体形状データに予め定義された前記面の頂点の位置と当該頂点における法線方向とに基づいて、前記面の曲面形状を決定する曲面形状決定手段と、前記曲面形状決定手段で決定された前記曲面形状を、前記分割パターン決定手段で決定された前記分割パターンによって分割し、前記曲面形状に沿った複数の面を生成する面生成手段と、前記面生成手段で生成された前記複数の面で構成される立体形状を表示する表示手段と、を有することを特徴とする立体形状表示装置が提供される。
このような立体形状表示装置によれば、分割パターン決定手段により、少なくとも１つの面で立体形状を定義した立体形状データに基づいて、立体形状を構成する面の分割パターンが決定される。また、曲面形状決定手段により、立体形状データに予め定義された面の頂点の位置と当該頂点における法線方向とに基づいて、面の曲面形状が決定される。その後、面生成手段と、曲面形状決定手段で決定された曲面形状を、分割パターン決定手段で決定された分割パターンによって分割し、曲面形状に沿った複数の面が生成される。そして、表示手段により、面生成手段で生成された複数の面で構成される立体形状が表示される。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
発明を実施するための最良の形態
以下、本発明の実施の形態を図面を参照して説明する。
まず、本発明の実施の形態に適用される発明の概要について説明し、その後、本発明の実施の形態の具体的な内容を説明する。
図１は、本実施の形態に適用される発明の概念図である。本発明は、物の形状を立体的に表示させる処理をコンピュータに実行させる立体形状表示プログラムである。この立体形状表示プログラムに基づいて、コンピュータが図１に示すような処理を実行する。
コンピュータは、ＣＡＤデータ１のデータ圧縮を行い、圧縮された立体形状データ２を生成する。立体形状データ２は、ＣＡＤデータ１における形状を定義するデータを圧縮したものである。データ圧縮により、たとえば、複雑な曲面形状が、単純な形状の複数の面に置き換えられる。
その後、コンピュータは、立体形状データ２に基づいて、立体形状を構成する面の分割パターンを決定する（ステップＳ２）。たとえば、面を構成する辺の分割数を決定し、各辺の分割数に応じた面の分割パターンを決定する。
また、コンピュータは、立体形状データ２に予め定義された面の頂点の位置とその頂点における法線方向とに基づいて、面の曲面形状を決定する（ステップＳ３）。たとえば、法線方向に垂直な方向が曲面形状の接線となるように、曲面形状を決定する。なお、法線方向は、一般には、法線ベクトル（単位ベクトル）で定義される。
次に、コンピュータは、決定された曲面形状を、決定された分割パターンによって分割し、曲面形状に沿った複数の面を生成する（ステップＳ４）。そして、コンピュータは、生成された複数の面で構成される立体形状を表示する（ステップＳ５）。
このような立体形状表示プログラムを任意のコンピュータで実行させることで、立体形状データ２を構成する面に定義された法線方向などに応じた曲面形状が決定され、その曲面形状が複数の面に分割される。そして、分割された面で構成される立体形状が表示される。
これにより、元のＣＡＤデータ１で定義された立体形状を、少ないデータ量の立体形状データ２で記録することができる。そして、立体形状データ２に基づいて、ＣＡＤデータ１で定義された形状を少ない誤差で再現することが可能となる。
しかも、立体形状データ２では、立体形状を構成する面の頂点座標と法線方向が設定されている。法線方向は、たとえば、法線ベクトルで定義される。この法線ベクトルは、リアルな画面表示を行うためのグーローシェーディングや光の反射などの計算に必要な情報である。本発明では、立体形状データ２の状態で法線方向が定義されているため、立体形状データ２自体を１つのポリゴンモデルとみなして、そのままリアルに（たとえば、グーローシェーディングを用いる）画面表示することができる。従って、状況に応じて、コンピュータが面の分割の要否を判断し、面の分割を行わない高速表示と、面を分割する高精度の表示とを適宜切り換えることが可能である。
なお、前述した米国特許６，２２２，５５３号公報記載の発明に代表されるように、従来のＳｕｂｄｉｖｉｓｉｏｎ法で圧縮された多くのデータは、法線方向の情報（法線ベクトル）を面の分割に利用していない。そのため、圧縮されたデータに法線ベクトルを含めれば、面の分割に不要なデータを余分にもつことになり、データ容量が増加してしまう。
また、法線方向によって曲面形状を決定することで、元の立体形状を再現するために必要なデータ量を少なく抑えることができる。すなわち、滑らかに接続される２つの面では、ほとんどの場合、その境界の辺の端点において、法線方向の定義情報（法線ベクトル）を共有することができる。したがって、立体形状データ２全体としてのデータ量が削減される。
さらに、本発明では、立体形状データ２で定義されている面毎に分割すればよいため、分割された面のポリゴンデータを逐次３次元表示回路に送ることで、面分割後の高精度の立体形状を表示させることができる。これにより、コンピュータのメインメモリ上に面分割後の立体形状を定義した全てのデータを保持せずにすみ、必要なメモリ容量が少なくてすむ。
さらに、分割パターンを決定する際に、辺の分割数を先に決定し、その辺の分割数に従って面を分割することで、面の無駄な分割を避けることができる。たとえば、直線の辺は分割せずに、曲線で定義された辺を複数に分けることで、面を分割できる。その結果、処理負荷を低減し、表示処理の高速化が可能となる。
以下、本発明の実施の形態について、具体的に説明する。なお、以下の実施の形態では、圧縮された立体形状データにおいて、３辺で構成される面（フェース）と４辺で構成される面とを混在させることができる。そこで、以下、本発明において定義した形式の構造に圧縮されたデータを、ハイブリッドメッシュデータ（混成のメッシュデータ）と呼ぶこととする。
また、立体形状を構成する面の頂点となる位置は、各面を構成する辺の端点でもある。そこで、以下の実施の形態では、面の頂点となる位置を端点と呼ぶこととする。
図２は、本発明の実施の形態のシステム構成図である。図２に示すように、ネットワーク１０を介して複数のコンピュータ１００，１００ａ，１００ｂが接続されている。ネットワーク１０は、たとえば社内ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）やインターネットである。
各コンピュータ１００，１００ａ，１００ｂには３次元ＣＡＤプログラムが実装されており、コンピュータ１００，１００ａ，１００ｂを用いて各種部品などのＣＡＤデータ（ソリッドモデル）を生成することができる。また、各コンピュータ１００，１００ａ，１００ｂには、本発明に係る３次元ＣＡＤデータのビューアが実装されている。コンピュータ１００，１００ａ，１００ｂでビューアを実行することで、ＣＡＤデータの高圧縮率での圧縮保存および圧縮されたデータに基づく３次元モデルの画面表示が行われる。また、ネットワーク１０を介して、圧縮されたデータを各コンピュータ１００，１００ａ，１００ｂ間で受け渡すことで、ＣＡＤを用いた共同設計作業（コラボレーション）を行うことができる。
以下、コンピュータ１００によって本発明を実施する場合の形態について詳しく説明する。
図３は、本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。コンピュータ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０２、ハードディスクドライブ（ＨＤＤ：Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
グラフィック処理装置１０４には、３次元表示回路を内蔵しており、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、３次元の座標データ（ポリゴンデータなど）に基づく画像を生成し、その画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図４は、本発明の実施の形態の機能を示す機能ブロック図である。コンピュータ１００は、ビューア１１０、ビューアアプリケーション部１３０、３次元表示用ＡＰＩ（Ａｐｐｌｉｃａｔｉｏｎ  Ｐｒｏｇｒａｍ  Ｉｎｔｅｒｆａｃｅ）１４０、ＯＳＡＰＩ１５０を有している。
ビューア１１０は、立体形状を表すデータのデータ形式を変換し、データ容量を圧縮する。たとえば、ＶＲＭＬデータ３１やＣＡＤデータ３２を、ハイブリッドメッシュデータに変換する。また、ビューア１１０は、ハイブリッドメッシュデータに基づいて、立体形状を所定の誤差で再現する。再現される立体形状は、複数のポリゴンで構成されるポリゴンモデルである。ビューア１１０内の構成の詳細は後述する。
ビューアアプリケーション部１３０は、ビューア１１０と連携してＣＡＤを用いた設計作業を支援するための付加機能を有している。図４の例では、ビューアアプリケーション部１３０は、付加機能として干渉検討部１３１、計測部１３２、分解図生成部１３３、イラスト生成部１３４などを有している。干渉検討部１３１は、ビューア１１０内から渡された立体形状のデータに基づいて、部品間の干渉の有無を判断する。計測部１３２は、ビューア１１０内から渡された立体形状のデータに基づいて、任意の２点間の距離を計算する。分解図生成部１３３は、ビューア１１０内から渡された立体形状のデータに基づいて、立体形状の分解図を生成する。イラスト生成部１３４は、ビューア１１０内から渡された立体形状のデータに基づいて、立体形状のイラスト画像を生成する。
３次元表示用ＡＰＩ１４０は、ビューア１１０などの各種処理機能と３次元表示を行うためのグラフィック処理装置１０４との間のインタフェースである。具体的には、３次元表示用ＡＰＩ１４０は、ビューア１１０から渡されたポリゴンなどの情報に基づいて、コンピュータ１００における３次元表示処理要求を生成し、その３次元表示処理要求をコンピュータ１００に実行させる。たとえば、３次元表示用ＡＰＩ１４０は、ビューア１１０から渡されたポリゴンの端点座標や色などの情報を、表示命令と共に図３に示すグラフィック処理装置１０４に渡す。すると、グラフィック処理装置１０４が各ポリゴンの透視投影などを行い、複数のポリゴンで構成される立体形状を表す画像（フレーム画像）を生成する。そして、グラフィック処理装置１０４で生成された画像のデータが所定周期でモニタ１１に送信され、立体形状を表す画像がモニタ１１の画面に表示される。３次元表示用ＡＰＩ１４０としては、たとえば、ＯｐｅｎＧＬ（商標）を用いることができる。
ＯＳＡＰＩ１５０は、ＯＳと他の処理機能との間のインタフェースである。具体的には、ＯＳＡＰＩ１５０は、ビューア１１０などから出力される処理要求に対応するＯＳの処理機能を起動し、コンピュータ１００に処理を実行させる。
次に、ビューア１１０の内部構成について説明する。
ビューア１１０は、アプリケーションインタフェース１１１、ハイブリッドメッシュＡＰＩ１１２、ＶＲＭＬデータ変換部１１３、ＣＡＤデータ変換部１１４、ユーザインタフェース１１５、再分割部１１６、表示データ出力部１１７、および、立体構造データ記憶部１２０を有している。
アプリケーションインタフェース１１１は、ビューアアプリケーション部１３０との間のインタフェースである。具体的には、アプリケーションインタフェース１１１は、ハイブリッドメッシュＡＰＩ１１２を介して受け取った立体構造データ（モックアップデータ）を、ビューアアプリケーション部１３０内の干渉検討部１３１などに渡す。また、アプリケーションインタフェース１１１は、ビューアアプリケーション部１３０内の干渉検討部１３１などから受け取った立体構造データをハイブリッドメッシュＡＰＩ１１２に渡す。
ハイブリッドメッシュＡＰＩ１１２は、アプリケーションインタフェース１１１に対して立体構造データ記憶部１２０へのアクセス環境を提供するインタフェースである。具体的には、ハイブリッドメッシュＡＰＩ１１２は、アプリケーションインタフェース１１１を介した要求に応じて、立体構造データ記憶部１２０内のハイブリッドメッシュデータの一部（または全部）のデータをアプリケーションインタフェース１１１に渡す。また、ハイブリッドメッシュＡＰＩ１１２は、アプリケーションインタフェース１１１を介して受け取ったデータを、ハイブリッドメッシュデータの一部（または全部）として立体構造データ記憶部１２０に格納する。
ＶＲＭＬデータ変換部１１３は、ＶＲＭＬデータ３１をハイブリッドメッシュデータに変換する。この変換により、立体形状を表すデータのデータ容量が小さくなる。そして、ＶＲＭＬデータ変換部１１３は、変換後のハイブリッドメッシュデータを、立体構造データ記憶部１２０に格納する。
ＣＡＤデータ変換部１１４は、ＣＡＤデータ３２をハイブリッドメッシュデータに変換する。この変換により、立体形状を表すデータのデータ容量が小さくなる。そして、ＣＡＤデータ変換部１１４は、変換後のハイブリッドメッシュデータを、立体構造データ記憶部１２０に格納する。
ユーザインタフェース１１５は、ＯＳＡＰＩ１５０と連携し、キーボード１２やマウス１３を用いた操作入力の情報を取得する。そして、ユーザインタフェース１１５は、操作入力に応答して、ビューア１１０内の各構成要素に対して、処理要求を出したり、データを渡したりする。たとえば、ユーザインタフェース１１５は、操作入力によって指定された表示倍率１１６ａや許容誤差１１６ｂを再分割部１１６に渡す。また、ユーザインタフェース１１５は、表示対象のオブジェクトを投影するための視点と立体形状との相対的位置の移動指示が入力された場合（表示画面内で立体形状が動く場合）、移動中であることを再分割部１１６に通知する。
再分割部１１６は、ハイブリッドメッシュデータを再分割する。すなわち、再分割部１１６は、ＣＡＤデータ３２よりも粗い構造で表現されたハイブリッドメッシュデータを構成する面（フェース）を分割し、元のＣＡＤデータ３２の形状に近づける。そして、再分割部１１６は、面を分割する毎に、分割後の面の情報を表示データ出力部１１７に渡す。
なお、再分割部１１６は、ハイブリッドメッシュデータの面の分割数を決定するためのパラメータとして、表示倍率１１６ａと許容誤差１１６ｂとを保持している。表示倍率１１６ａは、ハイブリッドメッシュデータで定義される立体形状の画面表示上での表示倍率である。許容誤差１１６ｂは、ハイブリッドメッシュデータに基づいて定義される立体形状（曲面で構成される形状）を平面のポリゴンで表した場合に発生する形状誤差の最大値である。再分割部１１６は、表示倍率１１６ａが大きいほどポリゴンの分割数を多くし、表示倍率１１６ａが小さいほどポリゴンの分割数を少なくする。また、再分割部１１６は、許容誤差１１６ｂが大きいほどポリゴンの分割数を少なくし、許容誤差１１６ｂが小さいほどポリゴンの分割数を多くする。
表示データ出力部１１７は、再分割部１１６で分割された後のポリゴンの情報を、３次元表示用ＡＰＩ１４０に対して出力する。
立体構造データ記憶部１２０は、表示対象のモデル（たとえば、自動車）の立体構造（部品の立体形状の組み合わせ）のデータを記憶するためのＲＡＭ１０２内の記憶領域である。立体構造のデータは、主に、表示対象モデルの構成要素（たとえば、自動車の部品）毎の立体形状を示すハイブリッドメッシュデータで形成される。このハイブリッドメッシュデータは、ＶＲＭＬデータ変換部１１３やＣＡＤデータ変換部１１４によって生成される。また、ハイブリッドメッシュデータは、ＨＤＤ１０３内のハイブリッドメッシュファイル３３から読み込まれる場合もある。
ハイブリッドメッシュデータには、立体形状を構成する面毎の形状情報が定義されており、面単位の情報をポリゴンとみなして、そのまま３次元表示用ＡＰＩ１４０に渡して画面表示させることができる。また、ハイブリッドメッシュデータには、各面を分割するのに必要な情報（基底分割数など）が含まれる。
次に、立体構造データ記憶部１２０のデータ構造の詳細について説明する。
図５は、立体構造データ記憶部の内部構成を示す図である。立体構造データ記憶部１２０は、複数のハイブリッドメッシュデータ２００，２００ａ，２００ｂ，・・・とオブジェクト配置情報３００とを有している。ハイブリッドメッシュデータ２００，２００ａ，２００ｂ，・・・は、表示対象物を構成する部品（オブジェクト）毎の形状を定義したデータである。ハイブリッドメッシュデータ２００，２００ａ，２００ｂ，・・・は、表示対象物を構成するユニット毎にグループ化されている場合もある。ここで、ユニットとは、１以上の部品で構成される物品である。表示対象物をアセンブリ（組み立て部品）とすれば、ユニットはサブアセンブリである。たとえば、表示対象物が自動車であれば、エンジンやサスペンションなどがユニットに相当する。なお、１つのユニットがさらに複数のユニット（各ユニットが１以上の部品を有する）で構成される場合もある。
ハイブリッドメッシュデータ２００には、オブジェクト情報２１０、点座標データ群２２０、およびベクトルデータ群２３０が含まれている。オブジェクト情報２１０は、各部品の立体形状などを表すデータ（部品の色の情報も含む）である。オブジェクト情報２１０の詳細は後述する。
点座標データ群２２０は、立体形状を構成する面の各端点の端点座標データ２２１，２２２，・・・，２２ｉ，・・・，２２ｍ，２２ｎの集合である。端点座標データ２２１，２２２，・・・，２２ｉ，・・・，２２ｍ，２２ｎには、ｘ軸−ｙ軸−ｚ軸で表される３次元空間（ローカル座標系）内での各軸方向の座標値が設定されている。
ベクトルデータ群２３０は、立体形状を構成する面の各端点に定義する法線ベクトルまたは接線ベクトルを表すベクトルデータ２３１，２３２，・・・，２３ｉ，・・・，２３ｍ，２３ｎの集合である。ベクトルデータ２３１，２３２，・・・，２３ｉ，・・・，２３ｍ，２３ｎは、３次元空間（ローカル座標系）内での方向と大きさを、ｘ軸、ｙ軸、ｚ軸方向のベクトル成分で表している。
なお、本実施の形態において法線ベクトルとして指定されるベクトルは、全て長さが１の単位ベクトルである。接線ベクトルとして指定されるベクトルは、単位ベクトルとは限らない。
オブジェクト配置情報３００は、立体形状をグローバル座標系（ワールド座標系）に配置する場合の配置位置および向きを定義した情報である。各立体形状に関する配置情報が定義されることで、表示対象物を構成する各部品をグローバル座標系内に配置し、複数の立体形状の組み合わせからなる表示対象物の形を生成することができる。
次に、オブジェクト情報の内容を詳細に説明する。
図６は、オブジェクト情報のデータ構造例を示す図である。なお、図６中のデータ名の前に示されている矢印（↑）は、そのデータが他のデータの格納位置を指すポインタであることを示している。
オブジェクト情報２１０は、オブジェクト識別情報（ＯｂｊｅｃｔＩＤ）２１１、最大基底分割数（ＭａｘＤｉｖｉｄｅ）２１２、および複数のフェース情報（Ｆａｃｅ１，．．．，Ｆａｃｅｉ，．．．，Ｆａｃｅ  ｎ−１，Ｆａｃｅ  ｎ）４１０，４２０，４３０，４４０を有している。オブジェクト識別情報２１１は、表示対象物を構成する部品ごとに作成されたオブジェクト情報２１０を一意に識別するための識別情報である。最大基底分割数２１２は、オブジェクト情報２１０を構成する面の各辺に設定された基底分割数のうちの最大値である。フェース情報４１０，４２０，４３０，４４０は、部品を構成する面の情報である。
フェース情報４２０は、フェース識別情報（Ｆａｃｅ  ＩＤ）４２１、フェース辺数（ｎＰ）４２２、フェース属性（Ａｔｔｒ）４２３、複数の端点情報（Ｖｅｒｔｅｘ  １，Ｖｅｒｔｅｘ  ２，．．．，Ｖｅｒｔｅｘ  ｉ，．．．，Ｖｅｒｔｅｘ  ｎＰ−１，Ｖｅｒｔｅｘ  ｎＰ）４２４，４２５，４２６，４２７，４２８、および再帰ポインタ（↑  ＥＯＦ）４２９を有している。フェース識別情報４２１は、オブジェクト情報２１０内でフェース情報を一意に識別するための識別情報である。フェース辺数４２２は、面を構成する辺（直線または曲線）の数である。フェース属性４２３は、面の色などの属性情報である。
端点情報４２４，４２５，４２６，４２７，４２８は、面の端点に関する情報である。再帰ポインタ４２９は、先頭の端点情報４２４の位置を指し示すポインタである。再帰ポインタ４２９により先頭の端点情報４２４が示されることで、端点情報４２４，４２５，４２６，４２７，４２８は、端点の列び順のループを構成する。連続した２つの端点情報によって、面を構成する辺が定義されている。なお、最後尾の端点情報４２８は、先頭の端点情報４２４と連続しているものとして扱われる。
端点情報４２６は、点座標ポインタ（↑  Ｐｏｉｎｔ）４２６ａ、法線ベクトルポインタ（↑  Ｎｏｒｍａｌ）４２６ｂ、接線定義情報（Ｒａｔｉｏ  ｏｒ  Ｔａｎｇｅｎｔ）４２６ｃ、基底分割数（ｎＤｅｖｉｄｅ）４２６ｄ、および隣接辺ポインタ（↑  ＭａｔｅＥｄｇｅ）４２６ｅを有している。
点座標ポインタ４２６ａは、点座標データ群２２０内の点座標データ２２１，２２２，・・・，２２ｉ，・・・，２２ｍ，２２ｎのうち、端点の３次元空間（ローカル座標系）内での位置を示す点座標データを指すポインタである。法線ベクトルポインタ４２６ｂは、ベクトルデータ群２３０内のベクトルデータ２３１，２３２，・・・，２３ｉ，・・・，２３ｍ，２３ｎのうち、端点の法線ベクトルの値を示すベクトルデータを指すポインタである。
接線定義情報４２６ｃは、端点における接線ベクトルを定義するための情報である。接線定義情報４２６ｃには、端点における接線の長さ（Ｒａｔｉｏ）、または接線ベクトルを指すポインタ（Ｔａｎｇｅｎｔ）のいずれかが設定される。法線ベクトルと辺の両端の端点の位置とから接線ベクトルの方向が決定できる場合（辺が法線ベクトルの示す方向に湾曲する場合）には、接線定義情報４２６ｃとして接線の長さが設定される。法線ベクトルと辺の両端の端点の位置とから接線ベクトルの方向が決定できない場合（辺が法線ベクトルの示す方向と異なる方向に湾曲する場合）には、接線定義情報４２６ｃとして接線ベクトルへのポインタが設定される。
基底分割数４２６ｄは、予め設定された辺の分割数である。基底分割数４２６ｄは、表示倍率が１（拡大も縮小も行わない）のときに、分割後の誤差が予め決められた誤差以内となるような値が設定される。
隣接辺ポインタ４２６ｅは、隣接する面と辺を共有する場合に、隣接する面側の共有する辺の情報（辺の両端を示す２つの端点情報の先頭の位置）を指し示すポインタである。隣接辺ポインタ４２６ｅにより、隣接する面を繋ぎ合わせたループ間での面同士の辺の供給関係が定義される。
なお、複数の辺の端点情報４２６において、点座標ポインタ４２６ａが同じアドレス（点座標データの位置）を示す場合、各辺の端点が共有されることを表している。
また、複数の辺の端点が共有されるとき、それぞれの辺の端点に対応する端点情報４２６の法線ベクトルポインタ４２６ｂが同じアドレス（法線ベクトルデータの位置）を示していれば、各辺の法線ベクトルが共有されている。
このように、本実施の形態のハイブリッドメッシュデータ２００，２００ａ，２００ｂでは、端点のループと面のループとが定義されていると共に、辺の端点の共有関係、法線ベクトルの共有関係、辺の共有関係が定義されている。これにより、立体形状の位相（ｔｏｐｏｌｏｇｙ）と幾何（ｇｅｏｍｅｔｒｙ）との情報が定義される。ここで、位相とは、面、稜線、端点（頂点）など立体の境界面のつながり具合をあらわす要素であり、幾何とは、曲面、曲線、点など立体の実際の形状をあらわす要素である。
次に、図７〜図８を参照して、立体形状に応じたオブジェクト情報２１０の具体例を説明する。
図７は、立体形状の一例を示す図である。図７（Ａ）と図７（Ｂ）とは立体形状の斜視図である。図７（Ａ）と図７（Ｂ）とは、見る方向が逆である。
立体形状５００は、６つの面５１１〜５１６で構成され、１２個の辺５２１〜５３２、８個の端点５４１〜５４８を有している。各面５１１〜５１６のフェース識別情報（ＦａｃｅＩＤ）は、Ｆ１〜Ｆ６である。面５１１は曲面であり、他の面５１２〜５１６は平面である。
ここで、各端点５４１〜５４８の位置を示す点座標データへのポインタ（点座標ポインタ）をＰ１〜Ｐ８とし、各端点５４１〜５４８の法線ベクトルを示すベクトルデータへのポインタ（法線ベクトルポインタ）をＮ１〜Ｎ８とする。なお、図７に示すように端点５４１には、２つの法線ベクトル５５１，５５２が存在する。このとき、法線ベクトル５５１，５５２を有する面のフェース識別情報を、法線ベクトルデータを示す記号の後に括弧書きで示す。すなわち、面５１６が有する法線ベクトル５５１の法線ベクトルポインタはＮ１（Ｆ６）であり、面５１１と面５１３が共有する法線ベクトル５５２の法線ベクトルポインタはＮ１（Ｆ１，Ｆ３）である。
このような立体形状５００のオブジェクト情報の例を以下に示す。
図８は、オブジェクト情報の具体例を示す図である。オブジェクト情報２１０ａには、オブジェクト識別情報２１１ａ、最大基底分割数２１２ａ、および複数のフェース情報４１０ａ，４２０ａ，４３０ａ，４４０ａ，４５０ａ，４６０ａが含まれている。フェース情報４１０ａは、フェース識別情報「Ｆ１」の面５１１に関する情報である。フェース情報４２０ａは、フェース識別情報「Ｆ２」の面５１２に関する情報である。フェース情報４３０ａは、フェース識別情報「Ｆ３」の面５１３に関する情報である。フェース情報４４０ａは、フェース識別情報「Ｆ４」の面５１４に関する情報である。フェース情報４５０ａは、フェース識別情報「Ｆ５」の面５１５に関する情報である。フェース情報４６０ａは、フェース識別情報「Ｆ６」の面５１６に関する情報である。
ここで、フェース情報４１０ａを参照して、データの例を詳しく説明する。フェース情報４１０ａのフェース識別情報（ＦａｃｅＩＤ）は「Ｆ１」である。これにより、図７に示す面５１１に関する情報であることが分かる。また、フェース辺数（ｎＰ）は、４である。これにより、４辺からなる面であることが分かる。フェース情報（Ａｔｔｒ）には、色情報などが設定されている。
フェース情報４１０ａには、４つの端点５４１〜５４４に対応する端点情報が設定されている。図８の例では、端点５４１の端点情報には、点座標ポインタＰ１、法線ベクトルポインタＮ１（Ｆ１，Ｆ３）、接線の長さ（Ｒａｔｉｏ）、基底分割数「０」、および面５１３（フェース識別情報Ｆ３）の先頭の端点情報（Ｆ３−１）を指し示す隣接辺ポインタが設定されている。端点５４２の端点情報には、点座標ポインタＰ２、法線ベクトルポインタＮ２（Ｆ１，Ｆ３）、接線の長さ（Ｒａｔｉｏ）、基底分割数「ｎ０−１」、および面５１４（フェース識別情報Ｆ４）の４番目の端点情報（Ｆ４−４）を指し示す隣接辺ポインタが設定されている。端点５４３の端点情報には、点座標ポインタＰ３、法線ベクトルポインタＮ３（Ｆ１）、接線の長さ（Ｒａｔｉｏ）、基底分割数「０」、および面５１５（フェース識別情報Ｆ５）の４番目の端点情報（Ｆ５−４）を指し示す隣接辺ポインタが設定されている。端点５４４の端点情報には、点座標ポインタＰ４、法線ベクトルポインタＮ４（Ｆ１）、接線の長さ（Ｒａｔｉｏ）、基底分割数「ｎ０−１」、および面５１６（フェース識別情報Ｆ６）の先頭の端点情報（Ｆ６−１）を指し示す隣接辺ポインタが設定されている。再帰ポインタは、先頭の端点情報を指し示している。
以上のような機能構成およびデータ構造を有するコンピュータ１００によって、立体形状の表示が行われる。以下、立体形状の表示方法について詳しく説明する。
図９は、立体形状表示手順を示す第１のフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］コンピュータ１００は、ユーザからの操作入力などによる指示に従って、ハイブリッドメッシュデータで構成される立体形状データを生成する。たとえば、ＶＲＭＬデータ変換部１１３が、ＶＲＭＬデータ３１に定義されている部品の立体形状を解析し、部品毎の立体形状データをハイブリッドメッシュデータに変換する。また、ＣＡＤデータ変換部１１４が、ＣＡＤデータ３２に定義されている部品の立体形状を解析し、部品毎の立体形状データをハイブリッドメッシュデータに変換する。
生成されるハイブリッドメッシュデータは、元のＶＲＭＬデータ３１に定義された立体形状よりも面の数を減らした立体形状を定義している。したがって、この変換処理により、データ容量が圧縮される（データ容量が減少する）。
［ステップＳ１２］ＶＲＭＬデータ変換部１１３またはＣＡＤデータ変換部１１４は、データ変換によって生成したハイブリッドメッシュデータを内部のＲＡＭ１０２内の立体構造データ記憶部１２０に格納する。なお、ＲＡＭ１０２に格納されたハイブリッドメッシュデータは、ハイブリッドメッシュファイル３３に書き出すことができる。また、ハイブリッドメッシュファイル３３からハイブリッドメッシュデータを取り出し、ＲＡＭ１０２内の立体構造データ記憶部１２０に格納することもできる。
［ステップＳ１３］ユーザインタフェース１１５は、ユーザからのキーボード１２などに対する操作入力に基づいて、画面の表示倍率と許容誤差を取得する。すると、ユーザインタフェース１１５は、再分割部１１６に対して表示倍率と許容誤差を渡す。
［ステップＳ１４］再分割部１１６は、立体構造データ記憶部１２０内のオブジェクトを１つ選択する。以下、選択したオブジェクトに関して、ステップＳ１５〜ステップＳ３７の処理が行われる。
［ステップＳ１５］再分割部１１６は、立体構造データ記憶部１２０からステップＳ１４で選択したオブジェクトのハイブリッドメッシュデータを取り出し、最大基底分割数を取得する。
［ステップＳ１６］再分割部１１６は、画面の表示倍率、許容誤差、および最大基底分割数に基づいて、実分割数を算出する。実分割数の算出方法の詳細については後述する。
［ステップＳ１７］再分割部１１６は、分割処理の必要の有無を判断する。具体的には、ステップＳ１６で算出した実分割数が１以下か否かを判断する。実分割数が１以下の場合、分割処理の必要がないと判断される。一方、実分割数が１を超えた場合には、分割処理の必要があると判断する。
すなわち、最大基底分割数は、単位倍率のときの単位誤差における分割数が最も大きい辺の基底分割数である。したがって、その辺の分割が不要であれば、他の辺の分割も不要である。
分割処理の必要がない場合には、処理がステップＳ１８に進められる。分割処理が必要な場合には、処理が図１０のステップＳ２１に進められる。
［ステップＳ１８］再分割部１１６は、立体構造データ記憶部１２０に記憶されたハイブリッドメッシュデータやオブジェクト配置情報を、そのまま表示データ出力部１１７に送信する。表示データ出力部１１７は、ハイブリッドメッシュデータを３次元表示用ＡＰＩ１４０へ出力する。すなわち、ハイブリッドメッシュデータは、そのままポリゴンモデルのデータとして解釈することができるため、そのままのデータ形式で３次元表示用ＡＰＩ１４０に出力すれば、少ない数の面（ハイブリッドメッシュデータで定義されている面の数）で構成された立体形状４１がモニタ１１の画面の表示される。その後、処理がステップＳ３８に進められる。
これにより、表示倍率が小さい場合（画面中で小さく表示される場合）には、簡易な構造の立体形状が表示され、高速に画面表示が可能となる。また、許容誤差が大きい場合にも簡易な構造の立体形状が表示され、高速に画面表示が可能となる。
図１０は、立体形状表示手順を示す第２のフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
［ステップＳ２１］再分割部１１６は、立体形状の分割処理に必要なパラメータ等の初期化処理を行う。
［ステップＳ２２］再分割部１１６は、立体構造データ記憶部１２０に格納されているハイブリッドメッシュデータの中から、フェース情報を１つ選択する。
［ステップＳ２３］再分割部１１６は、視点（仮想カメラ）と立体形状（ステップＳ２２で選択した面）との相対位置が変化しているか否かを判断する。すなわち、表示される画面内で立体形状が動くか否かを判断する。相対位置が変化している場合には、処理がステップＳ２９に進められる。相対位置が変化していない場合には、処理がステップＳ２４に進められる。なお、本実施の形態では、視点と立体形状との相対位置は、ユーザからの操作入力（視点の移動指示や、視点の向き（視軸）の変更指示など）に応じて変化する。
［ステップＳ２４］再分割部１１６は、選択したフェース情報で定義される辺（端点情報の列）の１つを選択する。
［ステップＳ２５］再分割部１１６は、選択した辺の実分割数を算出する。これは、選択された辺の基底分割数ｎ０に、１つの画面内に表示される全ての立体形状に対して共通の値√（Ｓｃａｌｅ／Ｔｏｌ）を乗算したものである。
［ステップＳ２６］再分割部１１６は、ステップＳ２５で算出された実分割数を、２のべき乗に切り上げる。辺の分割数を２のべき乗とすることで、以降の３角形ポリゴンの分割を、単純な分割パターンで行うことができる。
［ステップＳ２７］再分割部１１６は、ステップＳ２２で選択したフェース情報の全ての辺の分割数が決定したか否かを判断する。全ての辺の分割数が決定した場合には、処理がステップＳ２８に進められる。未処理の辺があれば、処理がステップＳ２４に進められる。
［ステップＳ２８］再分割部１１６は、全ての辺で分割の必要がないか（分割数が１以下か）否かを判断する。全ての辺で分割の必要がなければ、処理がステップＳ２９に進められる。分割の必要な辺が１つでもあれば、処理が図１１のステップＳ３１に進められる。
［ステップＳ２９］再分割部１１６は、立体構造データ記憶部１２０に記憶されたハイブリッドメッシュデータのステップＳ２２で選択した面に関する情報を、そのまま表示データ出力部１１７に送信する。表示データ出力部１１７は、ハイブリッドメッシュデータを３次元表示用ＡＰＩ１４０へ出力する。すると、ステップＳ２２で選択された面４０が、再分割されずにモニタ１１に表示される。その後、処理は図１１のステップＳ３７に進む。
このように、画面中で立体形状が動いている場合には、各面が分割されずに画面表示される。その結果、少ない数の面（ハイブリッドメッシュデータで定義されている面の数）で構成された立体形状がモニタ１１の画面の表示される。すなわち、少ない処理で高速に立体形状の画面表示が可能となる。
図１１は、立体形状表示手順を示す第３のフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］再分割部１１６は、図１０のステップＳ２２で選択したフェース情報が３辺形か４辺形かを判断する。３辺形の場合には、処理がステップＳ３２に進められる。４辺形の場合には、処理がステップＳ３３に進められる。
［ステップＳ３２］再分割部１１６は、３辺形分割パターン決定処理を行う。この処理は、各辺の実分割数に応じて、３辺形を１段階分だけ分割パターンを決定する処理である。すなわち、３辺形の分割処理は、多段階に分けて行われる。ステップＳ３２では、その１段階分の分割パターンの決定が行われる。なお、３辺形分割処理の詳細は後述する。その後、処理がステップＳ３４に進められる。
［ステップＳ３３］再分割部１１６は、４辺形分割パターン決定処理を行う。この処理は、各辺の実分割数に応じて、４辺形を１段階分だけ分割パターンを決定する処理である。すなわち、４辺形の分割処理は、多段階に分けて行われる。ステップＳ３３では、その１段階分の分割パターンの決定が行われる。この処理の詳細は後述する。
［ステップＳ３４］再分割部１１６は、各辺のパラメータ３次式を決定する。
［ステップＳ３５］再分割部１１６は、ステップＳ３２、Ｓ３３で決定した分割パターンとステップＳ３４で決定したパラメータ３次式とに従って、立体形状を構成する各面を再分割する。再分割された結果が、これ以上の再々分割できない場合、ステップＳ３６へ進む。
再々分割できる場合は、再分割部１１６は、再帰的にステップＳ３１〜Ｓ３６の処理を呼び出す。再帰的に呼び出されたときのステップＳ３２，Ｓ３３では、多段階に分けて行われる再分割処理の次の１段階分の分割パターン決定処理が行われる。このように、ステップＳ３１〜Ｓ３６の処理を再帰的に呼び出すことで、ステップＳ２２で選択した面が、段階的に細分化される。
［ステップＳ３６］再分割部１１６は、再分割した後の立体形状データを、表示データ出力部１１７に送信する。表示データ出力部１１７は、立体形状データを３次元表示用ＡＰＩ１４０へ出力する。これにより、再分割の分割数に応じた精度の立体形状４２〜４４がモニタ１１の画面に表示される。
なお、ステップＳ３６の処理は、選択された面がこれ以上分割できない状態まで分割されたとき実行される。そして、最小単位の３辺形が生成される毎に、その３辺形の表示用のポリゴンデータが表示データ出力部１１７に送信される。そのため、立体形状全体のポリゴンデータを、再分割部１１６が保持する必要なはい。
［ステップＳ３７］再分割部１１６は、全ての面（フェース）を分割したか否かを判断する。全ての面を分割した場合には、処理がステップＳ３８に進められる。未分割の面がある場合には、処理がステップＳ２２に進められる。
［ステップＳ３８］再分割部１１６は、全オブジェクトの画面表示が終了したか否かを判断する。なお、ユーザの操作入力によりビューア１１０の終了が指示された場合にも、画面表示終了と判断される。画面表示終了の場合には処理が終了し、別のオブジェクトのハイブリッドメッシュデータの画面表示を継続する場合には、処理が図９のステップＳ１４に進められる。
以上のようにして、拡大倍率、許容誤差、および視点との相対位置に応じた精度の立体形状が画面に表示される。しかも、粗い形状の面を定義しているハイブリッドメッシュデータに基づいて、精度の高い（誤差の少ない）立体形状を表示することができる。そのため、立体形状データを格納するための記憶領域が少なくてすむ。
以下、図９〜図１１で説明したステップ毎の処理の詳細な内容について説明する。
［実分割数の算出］
図９のステップＳ１６と図１０のステップＳ２５とに示した実分割数の算出処理の詳細について説明する。
本実施の形態では、立体形状を構成する面の形を表す辺を、パラメータ３次式Ｆ（ｔ）（０≦ｔ≦１）で定義する。パラメータ３次式を用いれば、辺の中間点の算出が容易となる。すなわち、パラメータ３次式にｔ＝１／２を与えることにより、容易に中間点の座標を（ＣＰＵに負荷を与えず）求めることができる。
ここで、パラメータ３次式で与えられた辺が曲線であれば、その辺は、立体形状を表示する際に複数の線分に分割される（ポリライン（折れ線）近似される）。このとき、辺の分割数が多いほど、分割された線分の形が元の曲線に近くなる（誤差が小さくなる）。ただし、分割数を多くすると、表示ポリゴン数が増大し、処理負荷が大きくなる。そこで、再現される立体形状の精度と処理負荷とのバランスを考えて許容できる誤差（許容誤差（Ｔｏｌ））をコンピュータ１００に与え、その許容誤差に応じた適切な分割数（誤差を超えない範囲の最も小さい分割数）を決定する必要がある。
一般に、与えられた許容誤差内で最も小さい分割数を算出するには、負荷の大きい計算が必要となる。例えば、半径Ｒの円の分割数ｎは、
ｎ＝π／ｃｏｓ−１（１−Ｔｏｌ／Ｒ）
・・・（１）
で求めることができる。この式（１）を、便宜上真の式と呼ぶこととする。ここで、πは円周率である。真の式（１）で用いられているアークコサイン（ｃｏｓ−１）は、ＣＰＵ負荷の大きな関数である。その為、本実施の形態では、分割数の計算を高速にする近似式を用いた。その近似式は以下の通りである。
ｎ≒π×√（Ｒ／２Ｔｏｌ）
・・・（２）
ここで、式（２）には、変数として半径Ｒが含まれている。辺の形は単純な円弧に限らず、自由曲線の場合もある。そのため、式（２）をそのまま用いると、実分割数の決定前に、辺を定義する曲線の曲率（半径Ｒ）を算出する必要が生じる。そこで、本実施の形態では、予め計算された単位倍率と単位誤差における基底分割数（実数）を用い、半径Ｒを用いずに分割数ｎを算出する。
図１２は、空間曲線のポリライン近似の例を示す図である。図１２では、空間曲線５１を４つの線分５２〜５５に分割している。このときの誤差をｔｏｌ０とする。
このように、任意の空間曲線５１を誤差ｔｏｌ０でポリライン（折れ線）近似した場合における分割数ｎ（ポリラインのＶｅｃｔｏｒ本数）が判っているものとする（図１２の例では分割数ｎ＝４）。この既知の分割数ｎを、基底分割数ｎ０とする。そして、このときの空間曲線５１のサイズを基準サイズと定める。また、基底分割数ｎ０を算出した際の誤差を基準誤差ｔｏｌ０とする。
ユーザは、空間曲線５１を基準サイズの何倍の大きさで表示させるのかを、表示倍率として指定する。ユーザから任意に指定される表示倍率をＳｃａｌｅとすると、空間曲線５１をＳｃａｌｅ倍した曲線の分割数Ｎ１は、
Ｎ１≒√（Ｓｃａｌｅ）×ｎ０
・・・（３）
で示せる。
また、ユーザは、空間曲線５１を画面に表示の際の精度を誤差によって指定することができる。基準誤差ｔｏｌ０を誤差ｔｏｌ１に変更したときの分割数Ｎ２は、
Ｎ２≒√（ｔｏｌ０／ｔｏｌ１）×ｎ０
・・・（４）
で示せる。
従って、この空間曲線５１を、基準サイズ（Ｓｃａｌｅ＝１）で誤差を基準誤差（ｔｏｌ０）内とするための基底分割数ｎ０が既知である場合、この空間曲線５１をＳｃａｌｅ倍し、許容誤差Ｔｏｌ（＝ｔｏｌ１／ｔｏｌ０）でポリライン近似する場合の曲線の実際の分割数（実分割数）Ｎは、
Ｎ≒√（Ｓｃａｌｅ／Ｔｏｌ）×ｎ０
・・・（５）
で示せることになる。許容誤差Ｔｏｌは、誤差の大きさを基準誤差ｔｏｌ０との比で示している。
ここで、ｎ０は表示倍率や許容誤差に依存しない曲線固有の特性値である。そのため、ｎ０を基底分割数と称し、予め計算しておくことにより表示倍率や許容誤差が変更された場合の分割数計算を高速に行うことができる。
なお、√（Ｓｃａｌｅ／Ｔｏｌ）の値は、３次元空間内の全ての表示対象物に対して１つの値であるため、表示対象物（たとえば、自動車）を構成する立体形状（たとえば、部品）の辺（空間曲線）毎に計算する必要はない。すなわち、１つの辺に対する表示倍率と許容誤差に応じた実分割数Ｎを、乗算１回で求めることができる。ここで、基底分割数ｎ０は正の実数であり、実分割数Ｎは小数点以下を切り上げた自然数である。
さらに、本実施の形態では、分割パターン処理の簡素化の為に、実分割数は２のべき乗に繰上げる。実分割数を２のべき乗にしておけば、辺の２分割を繰り返すことで、実分割数に応じた辺の等分が可能となる。
また、直線は基底分割数ｎ０＝０とする。これにより、表示倍率（Ｓｃａｌｅ）にも許容誤差（Ｔｏｌ）にも影響されず、実分割数Ｎは常に０となる。これは、分割しないことを意味する。
以下に、図形の分割例について説明する。
図１３は、図形の分割例を示す図である。図１３では、簡単な図形の例として、円６０を示している。ここで、円６０の半径Ｒを変えながら、真の式（１）を用いて分割数ｎを求めてみる。得られた分割数を、円６０の半径Ｒに応じた基底分割数ｎ０とする。このとき、基準誤差ｔｏｌ０を１ｍｍとする。この場合、半径Ｒの変化と基底分割数ｎ０との関係は、以下の表のようになる。
2003067527.tif 000003
この表に示すように、半径Ｒが大きくなるほど基底分割数ｎ０も大きくなる。なお、半径Ｒが０．５ｍｍ未満の場合アークコサインの計算を行うことができないため、計算不能となる。
このようにして得られた基底分割数ｎ０から、表示倍率と許容誤差とに応じた実分割数Ｎを計算する。
たとえば、半径１０ｍｍの円を１００倍（Ｓｃａｌｅ＝１００）の大きさで、許容誤差１ｍｍ（Ｔｏｌ＝１）で近似する場合、基底分割数ｎ０＝６．９７を用いて実分割数Ｎが計算される。各数値を式（５）の変数に設定して、近似式を解くと、
Ｎ≒√（１００）×６．９７＝６９．７
・・・（６）
となる。実分割数Ｎの小数点以下を切り上げると７０になる。ここで、表示倍率を１００倍にしたときの分割数は、半径が１００倍の円の分割数と同等になるべきである。この例では、半径１０ｍｍの１００倍の半径１０００ｍｍを有する円の分割数を真の式（１）で求めた場合、７０．２４である。この値の小数点以下を切り上げると７１となる。そのため、十分な精度で近似されていることがわかる。
次に、真の式（１）では計算不能だった半径０．１ｍｍの円を１ｍｍの誤差で分割する場合の分割数も、半径１０ｍｍの円を１／１００倍して表示することで近似できる筈であるから
ｎ０（ｒ＝０．１）≒１／√（１００）×６．９７＝０．６９７
・・・（７）
と求めることができる。
［分割パターン決定処理］
次に、図１１のステップＳ３２，Ｓ３３に示す分割パターンの決定処理について詳細に説明する。
［３辺形分割パターン決定処理］
まず、３辺形分割パターン決定処理について詳細に説明する。本実施の形態では、全ての辺の分割数が２のべき乗となっているため、全ての３辺形は、４種類の分割パターンの組み合わせによって分割することができる。
図１４は、３辺形の分割パターンの種別を示す図である。図１４には、３辺の分割数Ｎの相互関係に応じた分割パターンを、分割図によって示している。
第１の３辺形分割パターンは、３辺の分割数がＮ，Ｎ×ａ１，Ｎ×ａ２（Ｎは１より大きい２のべき乗）の関係にある場合である。ここで、ａ１，ａ２は、２のべき乗である。すなわち、３辺を同じ分割数Ｎで分割できる場合である。この場合、分割図に示すように、分割数Ｎに応じてパラメータ３次式で表現された各辺の分割点の座標と分割点の法線ベクトルが求められ、さらに３辺形の中間分割線が求められる。そして、中間分割線により元の３辺形が多数の３辺形に分割される。
第２の３辺形分割パターンは、３辺の分割数が１，Ｎ，Ｎ×ａ３（Ｎは１より大きい２のべき乗）の関係にある場合である。ここで、ａ３は、２のべき乗である。すなわち、分割数が１より大きい２辺を同じ分割数Ｎで分割できる場合である。この場合、分割図に示すように、パラメータ３次式で表現された分割すべき２辺に関して、分割数Ｎに応じて分割点の座標と分割点の法線ベクトルが求められ、さらに３辺形の中間分割線が求められる。そして、中間分割線により元の３辺形が多数の３辺形に分割される。
第３の３辺形分割パターンは、３辺の分割数が１，１、Ｎ（Ｎは１より大きい２のべき乗）の関係にある場合である。すなわち、１辺のみを分割する場合である。この場合、分割図に示すように、パラメータ３次式で表現された分割すべき１辺に関して、分割数Ｎに応じて分割点の座標と分割点の法線ベクトルが求められ、さらに３辺形の中間分割線が求められる。そして、中間分割線により元の３辺形が多数の３辺形に分割される。
第４の３辺形分割パターンは、３辺の分割数が全て１の場合である。この場合、元の３辺形は分割されない。
以上のような４パターン（第４の３辺形分割パターンでは分割は行われないため、実質３パターン）の分割を段階的に繰り返すことで、各辺の実分割数に応じて３辺形が分割される。なお、３辺形を分割する場合に採用する優先順は、第１の分割パターン、第２の分割パターン、第３の分割パターンの順番である。
図１５は、３辺形分割パターン決定処理の手順を示すフローチャートである。この処理は、図１１のステップＳ３２の処理である。なお、図１１では、ステップＳ３５において、再分割処理が再帰的に実行されることで多段階の分割が行われる（１段階で１つの分割パターンによる分割が行われる）が、図１５では、分割方法を分かり易く説明するために、多段階の分割処理を一連のフローチャートで示している。以下、図１５に示す処理をステップ番号に沿って説明する。
［ステップＳ５１］再分割部１１６は、実分割数の小さい順に、辺を並べ替える（ソートする）。ここで、実分割数の小さい順に、各辺の分割数をｉ，ｊ，ｋとする（ｉ≦ｊ≦ｋ）。
［ステップＳ５２］再分割部１１６は、ｉが１より大きいか否かを判断する。ｉが１より大きい場合には、処理がステップＳ５３に進められる。ｉが１以下の場合には、処理がステップＳ５５に進められる。
［ステップＳ５３］再分割部１１６は、３辺形の第１の分割パターンによって、各辺を（ｉ，ｉ，ｉ）で分割する。
［ステップＳ５４］再分割部１１６は、ｉ，ｊ，ｋの値を更新する。具体的には、ｊ／ｉの値を、新たにｊに設定する。ｋ／ｉの値を、新たにｋに設定する。ｉに１を設定する。
［ステップＳ５５］再分割部１１６は、ｊが１より大きいか否かを判断する。ｊが１より大きい場合には、処理がステップＳ５６に進められる。ｊが１以下の場合には、処理がステップＳ５８に進められる。
［ステップＳ５６］再分割部１１６は、３辺形の第２の分割パターンによって、各辺を（１，ｊ，ｊ）で分割する。
［ステップＳ５７］再分割部１１６は、ｊ，ｋの値を更新する。具体的には、ｋ／ｊの値を、新たにｋに設定する。ｊに１を設定する。
［ステップＳ５８］再分割部１１６は、ｋが１より大きいか否かを判断する。ｋが１より大きい場合には、処理がステップＳ５９に進められる。ｋが１以下の場合には、処理が図１１のステップＳ３４に進められる。
［ステップＳ５９］再分割部１１６は、３辺形の第３の分割パターンによって、各辺を（１，１，ｋ）で分割する。その後、処理が図１１のステップＳ３４に進められる。
以上のようにして、３辺形の面の分割パターンが、各辺の実分割数に応じて決定することができる。分割パターンが決定された後、図１１のステップＳ３４，Ｓ３５によって、３辺形が再分割される。
たとえば、３辺形の各辺に関して式（５）による実分割数を計算したとき、それぞれ、（５，２１，１２）の結果を得た場合を考える。これらの値は、２のべき乗に切り上げられ（８，３２，１６）となる。そして、各辺の分割数を、値の小さい順にソートすると、ｉ＝８、ｊ＝１６、ｋ＝３２（８，１６，３２）となる。
まず、ｉが１より大きいため、第１の分割パターンで分割される。すると、各辺が８分割される。これにより、ｉ，ｊ，ｋの値が更新され、（１，２，４）となる。
次に、ｊが１より大きいため、第２の分割パターンで分割される。すると、ｊとｋとに対応する辺が２分割される。これにより、各３辺形がさらに複数の３辺形に分割される。そして、ｊ，ｋの値が更新され、（１，１，２）となる。
最後に、ｋが１より大きいため、第３のパターンで分割される。すると、ｋに対応する辺が２分割される。これにより、各３辺形が複数の３辺形に分割される。
このようにして、３辺形を分割することができる。
［４辺形分割パターン決定処理］
次に、４辺形の分割パターン決定処理について詳しく説明する。本実施の形態では、全ての辺の分割数が２のべき乗となっていることから、全ての４辺形は、４種類の分割パターンの組み合わせによって分割することができる。
図１６は、４辺形の分割パターンの種別を示す図である。図１６には、４辺の分割数Ｎの相互関係に応じた分割パターンを、分割図によって示している。
第１の分割パターンは、対向する辺同士を組にしたときに、４辺の分割数が（Ｍ，Ｍ×ｂ１），（Ｎ，Ｎ×ｂ２）（Ｍ，Ｎは１より大きい２のべき乗）の関係にある場合である（括弧内の２つの値が、互いに組となった２つの辺の分割数である）。ここで、ｂ１、ｂ２は、２のべき乗である。すなわち、対向する辺同士を同じ分割数で分割できる場合である。この場合、分割図に示すように、対向する辺の一方の組がＭで分割され、他方の組がＮで分割される。その結果、元の４辺形が複数の４辺形に分割される。
第２の分割パターンは、対向する辺同士を組にしたときに、４辺の分割数が（１，Ｍ），（１，Ｎ）（Ｍ，Ｎは１より大きい２のべき乗）の関係にある場合である。ここで、Ｍ≦Ｎの関係にあるものとする。すなわち、対向する辺の一方の辺を分割する場合である。この場合、分割図に示すように、４辺の内の隣ある２辺が分割対象である。ここで、分割対象の２つの辺が共有する端点から、その端点に対向する端点へ対角線が引かれる。４辺形は、対角線によって２つの３辺形に分割される。対角線の分割数をＮとすることで、生成された３つの３辺形を、３辺形の分割パターンに従って分割することができる。具体的には、生成される３辺形は、第３のパターンと第４のパターンとに分けられる。
第３の分割パターンは、３辺形の２辺を、それぞれＮ，Ｍに分割する場合である。この３辺形は、３辺形の第２の分割パターンと第３の分割パターンとの組み合わせにより、分割することができる。
第４の分割パターンは、３辺形の２辺を、それぞれＮ，Ｎに分割する場合である。この３辺形は、３辺形の第２の分割パターンによって分割することができる。
以上のような分割パターンに従って４辺形を分割することができる。
図１７は、４辺形分割パターン決定処理の手順を示すフローチャートである。この処理は、図１１のステップＳ３３の処理である。なお、図１１では、ステップＳ３５において、再分割処理が再帰的に実行されることで多段階の分割が行われる（１段階で１つの分割パターンによる分割が行われる）が、図１７では、分割方法を分かり易く説明するために、多段階の分割処理を一連のフローチャートで示している。以下、図１７に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］再分割部１１６は、対辺を組にする。そして、同じく組となった２つの辺の分割数の比（大きい方の分割数／小さい方の分割数）を、組同士で比較する。そして、分割数の比が小さい方から順に、各組の辺を並べる。同じ組の中の辺同士では、分割数の小さい順に並べる。このとき並べられた各辺の分割数を、配列の順にｉ，ｊ，ｋ，ｌとする。分割数ｉの辺とｊの辺とが組を構成し、分割数ｋの辺とｌの辺とが組を構成する。このとき、ｉ≦ｊ、ｋ≦ｌ、ｊ／ｉ≦ｌ／ｋの関係となる。
［ステップＳ６２］再分割部１１６は、ｉとｋとの少なくとも一方が１より大きいか否かを判断する。いずれか一方が１より大きければ、処理がステップＳ６３に進められる。両方とも１以下であれば、処理がステップＳ６５に進められる。
［ステップＳ６３］再分割部１１６は、第１の４辺形分割パターンにより、４辺形を分割する。すなわち、分割数ｉ、ｊとの辺はｉで分割され、分割数ｋ、ｌとの辺はｋで分割される。
［ステップＳ６４］再分割部１１６は、ｉ，ｊ，ｋ，ｌの値を更新する。具体的には、ｊ／ｉの値を新たにｊに設定する。ｌ／ｋの値を新たにｌに設定する。ｉに１を設定する。ｋに１を設定する。
［ステップＳ６５］再分割部１１６は、第２の４辺形分割パターンに基づいて、ステップＳ６３による分割で生成された４辺形を２分割する。これにより、各４辺形から２つの３辺形が生成される。
［ステップＳ６６］再分割部１１６は、ステップＳ６５で生成された３辺形を１つ選択する。
［ステップＳ６７］再分割部１１６は、ステップＳ６６で選択した３辺形に対して、３辺形分割パターン決定処理を行う。たとえば、選択した３辺形が、４辺形に関する第３の分割パターンに従っていれば、その３辺形は、３辺形の第２の分割パターンと第３の分割パターンによって分割パターンが決定される。また、選択した３辺形が、４辺形に関する第４の分割パターンに従っていれば、その３辺形は、３辺形の第２の分割パターンによって分割パターンが決定される。
［ステップＳ６８］再分割部１１６は、ステップＳ６５で生成された全ての３辺形を分割したか否かを判断する。全ての３辺形の分割パターン決定処理が終了した場合には、処理が図１１のステップＳ３４に進められる。未処理の３辺形があれば、処理がステップＳ６６に進められる。
以上のようにして、４辺形の面の分割パターンを、各辺の実分割数に応じて決定することができる。分割パターンが決定された後、図１１のステップＳ３４，Ｓ３５によって、４辺形が再分割される。
たとえば、３辺形の各辺に関して式（５）による実分割数を計算したとき、それぞれ、（６，２，１２，７）の結果を得た場合を考える。ここで、分割数６の辺と分割数２の辺とが対向する辺であり、分割数１２の辺と分割数７の辺とが対向する辺である。これらの値は、２のべき乗に切り上げられ（８，２，１６，８）となる。そして、分割数の比が小さい方の組を先にして、各組内での各辺を、分割数の小さい順にソートすると、ｉ＝８，ｊ＝１６，ｋ＝２，ｌ＝８（８，１６，２，８）となる。
まず、ｉとｋが１より大きいため、４辺形の第１の分割パターンで分割される。すると、分割数ｉの辺とｊの辺とが８分割される。同様に、分割数ｋの辺とｊの辺とが２分割される。これにより、ｉ，ｊ，ｋ，ｌの値が更新され、（１，２，１，４）となる。
次に、第２の分割パターンによって、第１の分割パターンによる分割で生成された各４辺形が、対角線で２分割される。対角線に対しては、ｌの値と同じ分割数が設定される。これにより、（１，ｊ，ｌ）の分割数の３辺形と、（１，ｌ，ｌ）の分割パターンの３辺形とに分けられる。すなわち、（１，２，４）の分割パターンの３辺形と（１，４，４）の分割パターンの辺形が生成される。
分割数（１，２，４）の３辺形に関しては、ｊ（＝２）が１より大きいため、３辺形の第２の分割パターンで分割される。すると、ｊとｌとに対応する辺が２分割される。これにより、３辺形がさらに複数の３辺形に分割される。そして、ｊ，ｌの値が更新され、（１，１，２）となる。そして、ｌが１より大きいため、３辺形の第３のパターンで分割される。すると、ｌに対応する辺が２分割される。
分割数（１，４，４）の３辺形に関しては、ｌ（＝４）が１より大きいため、３辺形の第２の分割パターンで分割される。すると、ｌに対応する辺が４分割される。これにより、３辺形がさらに複数の３辺形に分割される。
以上のようにして、４辺形が複数の３辺形に分割される。
［パラメータ３次式決定法］
辺を分割する場合、その辺の端点に対して設定されている法線ベクトルに応じてパラメータ３次式が決定される。そして、辺の曲線を定義したパラメータ３次式におけるパラメータｔ（０≦ｔ≦１）に、０．５を設定することで、その辺の中点を求める。なお、パラメータ３次式の決定法は、立体形状における面同士の隣接関係に応じて異なる。
・第１の隣接関係は、隣接する面同士が滑らかに接続している場合である。この場合、法線ベクトルから接線ベクトルを経由して求める方法と、法線ベクトルから２次微分ベクトルを仮定して求める方法がある。
・第２の隣接関係は、隣接する面同士が共有する辺で折れている場合である。
・第３の隣接関係は、辺の形状を強制的に指示する必要がある場合である。
以下、面同士の隣接関係に応じた、パラメータ３次式の決定法について説明する。
［隣接する面同士が滑らかに接続している場合］
図１８は、隣接する面同士が滑らかに接続している立体形状の一例を示す図である。図に示すように、立体形状７１は、互いに隣接する面Ｆ１ａ，Ｆ１ｂを有している。隣接する面Ｆ１ａ，Ｆ１ｂが辺Ｓ１（ｔ）を共有し、さらに辺Ｓ１（ｔ）の両端点における法線ベクトルＮ１０，Ｎ１１も隣接する面Ｆ１ａ，Ｆ１ｂ同士が共有する。この場合、この２つの隣接する面Ｆ１ａ，Ｆ１ｂは、辺Ｓ１（ｔ）において滑らかに接続されていると判断される。
このような場合、以下の２つの方法の何れかでパラメータ３次式を決定することができる。
まず、法線ベクトルから接線ベクトルを経由してパラメータ３次式を求める方法について説明する。
この方法では、両端点の座標Ｐ１０，Ｐ１１、両端点における法線ベクトルＮ１０，Ｎ１１、及び接線の長さｒ１０，ｒ１１を与え、接線ベクトルＴ１０，Ｔ１１を決定する。なお、端点座標、法線ベクトル、および接線の長さは、立体構造データ記憶部１２０内の端点情報において定義されている。
この場合、接線ベクトルＴ１０は、法線ベクトルＮ１０に垂直で、座標Ｐ１０から座標Ｐ１１の方向に最も近い方向を向いた、長さｒ１０のベクトルである。また、接線ベクトルＴ１１は、法線ベクトルＮ１１に垂直で、座標Ｐ１０から座標Ｐ１１の方向に最も近い方向を向いた、長さｒ１１のベクトルである。
式で示すと以下の通りとなる。
Ｔ１０＝ｒ１０・Ｎ１０×（Ｐ１１−Ｐ１０）×Ｎ１０／｜Ｎ１０×（Ｐ１１−Ｐ１０）×Ｎ１０｜
・・・（８）
Ｔ１１＝ｒ１１・Ｎ１１×（Ｐ１１−Ｐ１０）×Ｎ１１／｜Ｎ１１×（Ｐ１１−Ｐ１０）×Ｎ１１｜
・・・（９）
式（８）、式（９）において、“×”はベクトルの外積を示しており、“・”はスカラー値（ｒ０やｒ１）の乗算を示している。
次に、両端点の座標（Ｐ１０，Ｐ１１）及び両端点における接線ベクトル（Ｔ１０，Ｔ１１）を用いて、以下の４つのベクトル式を満たしたパラメータ３次式Ｓ１（ｔ）を決定する。
Ｓ１（ｔ＝０）＝Ｐ１０
Ｓ１（ｔ＝１）＝Ｐ１１
ｄＳ１／ｄｔ（ｔ＝０）＝Ｔ１０
ｄＳ１／ｄｔ（ｔ＝１）＝Ｔ１１
・・・（１０）
このように、端点での条件を決定することで、３次元区間内の曲線を決定することができる。たとえば、ファーガソン曲線を算出することができる。
次に、法線ベクトルから２次微分ベクトルを仮定してパラメータ３次式を求める方法について説明する。
図１９は、２次微分ベクトルを用いて決定されたパラメータ３次式の一例を示す図である。図１９に示すように、両端点における２次微分ベクトルＷ２０，Ｗ２１が、両端点における法線ベクトルＮ２０，Ｎ２１と方向が近似している（正負反対の場合も含む）と仮定（弧長媒介変数による２次微分ではないので一致しない）することができる。このとき、法線ベクトルＮ２０，Ｎ２１にベクトルの大きさｒ２０，ｒ２１を乗じたベクトルを２次微分ベクトルＷ２０，Ｗ２１とする。
なお、法線ベクトルＮ２０，Ｎ２１は常に面の表を向いているため、ベクトルの大きさｒ２０，ｒ２１を与える時に、必要に応じて負の値とすることで２次微分方向に合わせる。たとえば、曲線が、立体形状の表方向に凸であれば、ベクトルの大きさｒ２０，ｒ２１を負の値とする。逆に、曲線が、立体形状の表方向に凹であれば、ベクトルの大きさｒ２０，ｒ２１を正の値とする。なお、ベクトルの大きさｒ２０，ｒ２１は、図６に示す端点情報４２６の接線定義情報４２６ｃ内に予め設定される。
２次微分ベクトルＷ２０，Ｗ２１は、それぞれ法線ベクトルＮ２０，Ｎ２１と平行で、長さと向きがｒ２０，ｒ２１で示されるベクトルと近似する。これを式で示すと以下の通りとなる。
Ｗ２０＝ｒ２０・Ｎ２０
・・・（１１）
Ｗ２１＝ｒ２１・Ｎ２１
・・・（１２）
両端点の座標Ｐ２０，Ｐ２１、及び両端点における２次微分ベクトルＷ２０，Ｗ２１を用いて、以下の４つのベクトル式からパラメータ３次式Ｓ２（ｔ）を決定する。
Ｓ２（ｔ＝０）＝Ｐ２０
Ｓ２（ｔ＝１）＝Ｐ２１
ｄ２Ｓ２／ｄｔ２（ｔ＝０）＝Ｗ２０
ｄ２Ｓ２／ｄｔ２（ｔ＝１）＝Ｗ２１
・・・・（１３）
このような条件を満たしたパラメータ３次式Ｓ２（ｔ）が決定される。
［隣接する面同士が共有する辺で折れている場合］
次に、隣接する面同士が共有する辺で折れている場合のパラメータ３次式の決定方法について説明する。
図２０は、隣接する面同士が共有する辺で折れている立体形状の一例を示す図である。図２０に示す立体形状７２は、面Ｆ３ａと面Ｆ３ｂとが辺Ｓ３（ｔ）で隣接している。面Ｆ３ａの法線ベクトルＮ３０ａ，Ｎ３１ａには、辺Ｓ３（ｔ）を湾曲させる成分を持っていない。一方で隣接関係にある面Ｆ３ｂの法線ベクトルＮ３０ｂ，Ｎ３１ｂは辺Ｓ３（ｔ）を湾曲させる成分を持っている。
このように隣接する面Ｆ３ａ，Ｆ３ｂによって共有される辺Ｓ３（ｔ）の両端点の法線ベクトルが、２つの面Ｆ３ａ，Ｆ３ｂによって共有されない場合、この隣接する面Ｆ３ａ，Ｆ３ｂは共有される辺Ｓ３（ｔ）で折れていると判断される。この場合、４本の法線ベクトルを用いて接線ベクトルの方向を決定する。
接線ベクトルＴ３０は法線ベクトルＮ３０ａ，Ｎ３０ｂの外積の方向で、長さはｒ３０のベクトルである。同様に、接線ベクトルＴ３１は法線ベクトルＮ３１ａ，Ｎ３１ｂの外積の方向で、長さはｒ３１のベクトルである。なお、長さｒ３０は、端点３０に定義された接線の長さであり、長さｒ３１は、端点３１に定義された接線の長さである。これを式で示すと以下の通りとなる。
Ｔ３０＝ｒ３０・Ｎ３０ａ×Ｎ３０ｂ／｜Ｎ３０ａ×Ｎ３０ｂ｜
・・・（１４）
Ｔ３１＝ｒ３１・Ｎ３１ａ×Ｎ３１ｂ／｜Ｎ３１ａ×Ｎ３１ｂ｜
・・・（１５）
次に、両端点の座標（Ｐ３０，Ｐ３１）、及び両端点における接線ベクトル（Ｔ３０，Ｔ３１）を用いて、以下の４つのベクトルを満たしたパラメータ３次式Ｓ３（ｔ）を決定する。
Ｓ３（ｔ＝０）＝Ｐ３０
Ｓ３（ｔ＝１）＝Ｐ３１
ｄＳ３／ｄｔ（ｔ＝０）＝Ｔ３０
ｄＳ３／ｄｔ（ｔ＝１）＝Ｔ３１
・・・（１６）
［辺の形状を強制的に指示する必要がある場合］
次に、辺の形状を強制的に指示する必要がある場合について説明する。
図２１は、辺の形状を強制的に指示された立体形状の一例を示す図である。図２１に示す立体形状７３は、面Ｆ４ａと面Ｆ４ｂとが隣接している。隣接する面Ｆ４ａ，Ｆ４ｂが辺Ｓ４（ｔ）を共有し、さらに辺Ｓ４（ｔ）の両端点における法線ベクトルＮ４０，Ｎ４１も隣接する面Ｆ４ａ，Ｆ４ｂによって共有される。この場合、この２つの隣接する面Ｆ４ａ，Ｆ４ｂは辺Ｓ４（ｔ）において滑らかに接続されていると判断されるが、法線ベクトルＮ４０，Ｎ４１には辺Ｓ４（ｔ）を湾曲させる成分を持っていない。
そういった場合においても辺Ｓ４（ｔ）を強制的に湾曲させる必要があれば接線ベクトルＴ４０，Ｔ４１を直接与える。
両端点の座標Ｐ４０，Ｐ４１、及び両端点における接線ベクトルＴ４０，Ｔ４１を用いて、以下の式を満たすパラメータ３次式Ｓ４（ｔ）を決定する。
Ｓ４（ｔ＝０）＝Ｐ４０
Ｓ４（ｔ＝１）＝Ｐ４１
ｄＳ４／ｄｔ（ｔ＝０）＝Ｔ４０
ｄＳ４／ｄｔ（ｔ＝１）＝Ｔ４１
・・・（１７）
以上のようにして、立体形状を構成する辺のパラメータ３次式を決定することができる。
［辺上の任意の中間座標と法線ベクトルの求め方］
辺の曲線を定義したパラメータ３次式が決定されると、先に決定された分割パターンに従って、辺が分割される。分割された辺の端点には、新たに端点の位置と法線ベクトルとを定義する必要がある。以下、中間点における座標（中間座標）と法線ベクトルとの算出方法について説明する。
［中間座標の求め方］
中間座標の求め方を、図２２を参照して説明する。
図２２は、分割対象の面の一例を示す図である。図２２の例では、分割される面８１は３辺形である。面８１は、端点Ｐ５０，Ｐ５１を有する辺８１ａ、端点Ｐ５１，Ｐ５２を有する辺８１ｂ、端点Ｐ５２，Ｐ５０を有する辺８１ｃで構成されている。端点Ｐ５０での法線ベクトルがＶ５０、接線ベクトルがＮ５０である。端点Ｐ５１での法線ベクトルがＶ５１、接線ベクトルがＮ５１である。
パラメータ３次式の決定法に従い端点Ｐ５０から端点Ｐ５１を結ぶ辺８１ａのパラメータ３次式Ｓ５（ｔ）が決定されている場合、辺８１ａ上の任意の点であるＰｃは、パラメータ３次式Ｓ５（ｔ）のｔ値（中点ならｔ＝０．５）を定めることにより決定される。
次に、中間点の法線ベクトルの求め方について、図２２を参照して説明する。
任意の中間点における法線ベクトルの決定法としては、以下の４通りの決定法が考えられる。
第１の方法は、中間点の法線ベクトルＮｃがＮ５０からＮ５１に線形変化していると想定する方法である。その計算式は、以下の通りである。
Ｎｃ＝（１−ｔ）Ｎ５０＋（ｔ）Ｎ５１
・・・（１８）
第２の方法は、中間点の法線ベクトルＮｃがＮ５０からＮ５１に線形変化し、中間点の接線ベクトルＶｃと直交していると想定する方法である。その計算式は、以下の通りである。
Ｎｃ＝Ｖｃ×（Ｎ５０＋Ｎ５１）×Ｖｃ
・・・（１９）
第３の方法は、中間点の法線ベクトルＮｃが、Ｎ５０方向からＮ５１方向に回転していると想定する方法である。その計算式は、以下の通りである。
Ｎｃ＝Ｖｃ×Ｎ５０×Ｎ５１
・・・（２０）
但し、Ｎ５０×Ｎ５１＝０の場合の計算式は、以下の通りである。
Ｎｃ＝Ｖｃ×Ｎ５０×Ｖｃ
・・・（２１）
第４の方法は、中間点の法線ベクトルＮｃが、Ｎ０方向からＮ１方向に３次で変化していると想定する方法である。その計算式は、以下の通りである。
Ｎｃ＝−２（Ｎ５１−Ｎ５０）ｔ３＋３（Ｎ５１−Ｎ５０）ｔ２＋Ｎ５０
・・・（２２）
式（１８）〜（２２）で得られたベクトルＮｃを単位ベクトルに正規化したものが、中間点の法線ベクトルとなる。
［３辺形の任意中間曲線の計算方法］
３辺形を分割すると、元の３辺形内に新たな辺が生成される。そのとき、生成された辺の曲線式を計算する必要がある。
図２３は、分割される３辺形を含む立体形状の一例を示す図である。図２３の例では、円柱の立体形状８２が示されている。立体形状８２の側面が、複数の３辺形で構成される。側面に含まれる１つの３辺形８２ａは、端点Ｐ６０，Ｐ６１，Ｐ６２を有している。ハイブリッドメッシュデータにおいて定義されている３辺形８２ａは、たとえば、画像で表示するときに複数の３辺形に分割される。
ここで、辺８２ｂａ上の中間点の座標Ｐ７０と法線ベクトルＮ７０、および辺８２ｂｂ上の中間点の座標Ｐ７１と法線ベクトルＮ７１を用いて、２つの辺８２ｂａ，８２ｂｂの中間点同士を結ぶ辺８２ｃａのパラメータ３次式を求めることができる。この際、パラメータ３次式の決定法としては、たとえば、隣接する面同士が滑らかに接続している場合の決定法により求める。
但し、座標Ｐ７０での接線の長さｒ７０と、座標Ｐ７１での接線の長さｒ７１とは、以下の式で求める。
ｒ７０＝ｒ６０×｜Ｐ７１−Ｐ７０｜／｜Ｐ６１−Ｐ６０｜
・・・（２３）
ｒ７１＝ｒ６１×｜Ｐ７１−Ｐ７０｜／｜Ｐ６１−Ｐ６０｜
・・・（２４）
なお、ｒ６０は、端点Ｐ６０での接線の長さであり、ｒ６１は端点Ｐ６１での接線の長さである。
［３辺形の任意中間曲線の計算方法（他の案）］
他の３辺形の任意中間曲線の計算方法もある。
図２４は、分割される３辺形の一例を示す図である。図２４の三辺形８３について、Ｐ８０、Ｐ８１，Ｐ８２は、三辺形の頂点（３辺形を構成する辺の端点）を示す。Ｎ８０，Ｎ８１，Ｎ８２は、Ｐ８０，Ｐ８１，Ｐ８２における法線ベクトルを示す。Ｔ８１，Ｔ８２は、Ｐ８１とＰ８２とを端点とする辺の各端点における接線ベクトルを示す。Ｕ８１，Ｕ８０は、Ｐ８１とＰ８０とを端点とする辺の各端点における接線ベクトルを示す。Ｖ８２，Ｖ８０は、Ｐ８２とＰ８０とを端点とする辺の各端点における接線ベクトルを示す。
ここで、内部で生成される情報として、ｅ８０，ｅ８１，ｅ８２がある。ｅ８０，ｅ８１，ｅ８２は、三角形を形成する辺を示し、パラメータ３次式で示される。
ここで、内部中間曲線ｅ８３を、以下の方法で求める。
［ＳＴ１］ｅ８２上を、Ｐ８０からＰ８１に向かって、ｕ（０＜ｕ＜１）だけ進んだ点Ｐ８３を求める。
［ＳＴ２］Ｐ８３におけるｅ８２の接線ベクトルＵ８３を求める。
［ＳＴ３］Ｐ８３における法線ベクトルＮ８３を求める。
［ＳＴ４］Ｐ８３においてＵ８３，Ｎ８３，Ｔ８３の方向関係が、Ｐ８１におけるＵ８１，Ｎ８１，Ｔ８１の関係と等しくなる接線ベクトルＴ８３を求める。
［ＳＴ５］接線ベクトルＴ８３を求めた方法と同様に、Ｐ８２におけるＶ８２，Ｎ８２，Ｔ８２の関係と等しくなる接線ベクトルＴ８４を求める。
［ＳＴ６］接線ベクトルＴ８３，Ｔ８４から、ｅ８３のパラメータ３次式を求める。
このようにして、３辺形を分割するための境界となる辺のパラメータ３次式を求めることができる。
［４辺形の内部中間座標と法線ベクトルの求め方］
次に、４辺形の内部中間座標と法線ベクトルの求め方について説明する。
まず、図２５を参照して４辺形の任意中間座標の求め方について説明する。
図２５は、分割される４辺形の一例を示す図である。ここで、４辺形８４を表す式を、Ｓ９（ｕ，ｖ）とする。４辺形８４がＣｏｏｎ’ｓ曲面とすると、図２５のように各端点における座標Ｐ９０〜Ｐ９３とｕ方向ベクトルＵ９０〜Ｕ９３、ｖ方向ベクトルＶ９０〜Ｖ９３を用いて以下のベクトル式で示せる。
Ｓ９（ｕ＝０，ｖ＝０）＝Ｐ９０
Ｓ９（ｕ＝０，ｖ＝１）＝Ｐ９１
Ｓ９（ｕ＝１，ｖ＝０）＝Ｐ９２
Ｓ９（ｕ＝１，ｖ＝１）＝Ｐ９３
・・・（２５）
∂Ｓ９／∂ｕ（ｕ＝０，ｖ＝０）＝Ｕ９０
∂Ｓ９／∂ｕ（ｕ＝０，ｖ＝１）＝Ｕ９１
∂Ｓ９／∂ｕ（ｕ＝１，ｖ＝０）＝Ｕ９２
∂Ｓ９／∂ｕ（ｕ＝１，ｖ＝１）＝Ｕ９３
・・・（２６）
∂Ｓ９／∂ｖ（ｕ＝０，ｖ＝０）＝Ｖ９０
∂Ｓ９／∂ｖ（ｕ＝０，ｖ＝１）＝Ｖ９１
∂Ｓ９／∂ｖ（ｕ＝１，ｖ＝０）＝Ｖ９２
∂Ｓ９／∂ｖ（ｕ＝１，ｖ＝１）＝Ｖ９３
・・・（２７）
これらの式を連立させて解くことにより、Ｓ９（ｕ，ｖ）が求まり、（ｕ＝ｕ０，ｖ＝ｖ０）で示される任意点の座標Ｐは、Ｐ＝Ｓ９（ｕ＝ｕ０，ｖ＝ｖ０）で与えられる。
次に、４辺形の任意中間点における法線ベクトルの決定法について説明する。（ｕ＝ｕ０，ｖ＝ｖ０）で示される任意点Ｐにおける法線ベクトルは、ｕ方向接線ベクトル∂Ｓ９／∂ｕ（ｕ＝ｕ０，ｖ＝ｖ０）と、ｖ方向接線ベクトル∂Ｓ９／∂ｖ（ｕ＝ｕ０，ｖ＝ｖ０）との外積で与えられる。
以上のような処理を行うことで、ハイブリッドメッシュデータに基づいた立体形状の画面表示が可能となる。
［画面表示例］
以下、図２６〜図３０を参照して、立体形状の画面表示例について説明する。本実施の形態では、立体形状を構成する辺のみを画面表示することもできる。辺のみを画面表示することで、立体形状の構造を画面上で視覚的に容易に認識することができる。
例として、球体の立体形状を３次元ＣＡＤで作成した場合について説明する。球体を示すＣＡＤデータは、ＣＡＤデータ変換部１１４によって、ハイブリッドメッシュデータに変換される。球体をハイブリッドメッシュデータに変換すると、たとえば、８つの３辺形からなる８面体で表現される。
図２６は、ハイブリッドメッシュデータで定義されている立体形状の辺を表示した画面例を示す図である。図２６の画面には、８面体の立体形状をハイブリッドメッシュデータで定義したときの立体形状の辺が表示されている（ワイヤーフレームだけを表示）。このような構造を定義したハイブリッドメッシュデータを任意の精度で再分割して、立体形状を画面に表示するができる。
たとえば、立体形状を画面内で回転させている場合や、表示倍率が表示に小さい場合には、ハイブリッドメッシュデータの再分割を行わずに立体形状が表示される。
図２７は、ハイブリッドメッシュデータで定義されている立体形状を表示した画面例を示す図である。この画面には、図２６に示した構造のハイブリッドメッシュデータをそのまま（再分割を行わずに）表示したときの立体形状が表示されている。図２７の例では、再分割を行っていないため、８つの面で立体形状が表現されている。これにより、立体形状を高速に画面表示することができる。
一方、表示倍率を上げて、静止した立体形状を画面表示する場合には、ハイブリッドメッシュデータの再分割が行われる。再分割によって、球体を表す立体形状が大量の面で再現される。
図２８は、ハイブリッドメッシュデータを再分割したときの立体形状の辺を表示した画面例を示す図である。図２８に示す画面には、ハイブリッドメッシュデータの再分割が行われることで、多数の面で構成された球体が表示される（ワイヤーフレームだけを表示）。
図２８に示すような構成に分割されたデータにも基づいて立体形状を表示すれば、３次元ＣＡＤで作成したときの球体と同様の見栄えの立体形状を表示することができる。
図２９は、ハイブリッドメッシュデータを再分割したときの立体形状を表示した画面例を示す図である。図２９に示すように、画面には、再分割を行うことにより、ほとんど球体に見える立体形状が表示される。
ハイブリッドメッシュデータデータは、元のＣＡＤデータに比べてデータ容量が少ないため、元の立体形状を詳細に再現する場合であっても、ＨＤＤ１０３などの記憶容量が少なくてすむ。また、再分割によってポリゴンデータが生成される毎に３次元表示用ＡＰＩ１４０に渡されるため、再分割後のポリゴンデータをＲＡＭ１０２に格納する必要がなく、ＲＡＭ１０２の使用量を低減することができる。すなわち、少ない記憶容量のＲＡＭ１０２であっても、ＣＡＤで作成された立体形状を表示させることができる。
ところで、立体形状を画面表示するには、各面の端点に定義されている法線ベクトルを用いて、グーローシェーディングを行うことができる。グーローシェーディングを行うことで、立体形状を構成する１つの面が平面ポリゴンで表示されていても、各面の境界を滑らかに表現することができる。なお、本実施の形態では、法線ベクトルとして単位ベクトルを用いているため、一般的なグーローシェーディングにそのまま利用することができる。
また、立体形状を表示するために必要な資源や処理負荷が少なくてすむことにより、非常に複雑な立体形状であっても、容易に画面表示することができる。たとえば、ネットワークを介したコラボレーションシステム上でＣＡＤを用いた自動車の設計を行い、自動車の構造を表す立体形状を、各共同作業者がネットワークを介して参照することも可能である。
図３０は、自動車の立体形状の表示画面例を示す図である。図３０に示す画面には、自動車のエンジンルームの構造が表示されている。このように複雑な構造の立体形状であっても、各コンピュータで容易に表示させることができる。
以上のようにして、複雑な立体形状を少ない処理負荷で画面表示することができる。
なお、図１０に示したように、本実施の形態ではフェース毎に視点と立体形状との相対位置の変化の有無を判断しているが、立体形状（オブジェクト）毎に相対位置の変化の有無を判断してもよい。その場合、ステップＳ２３の処理に代えて、たとえば、ステップＳ１４とステップＳ１５との間に、視点と立体形状の基準位置との相対位置の変化の有無を判断する処理が行われる。相対位置が変化していれば、処理をステップＳ１８に進め、相対位置が変化していなければ処理をステップＳ１５に進める。
また、仮想３次元空間内で視点だけが移動可能な場合などには、視点と立体形状との相対位置の変化の有無を判断する代わりに、視点の移動の有無を判断してもよい。その場合、ステップＳ２３の処理に代えて、たとえば、ステップＳ１３とステップＳ１４との間に視点の移動の有無を判断する処理が行われる。視点が移動していれば、全てのオブジェクトに関して生データ表示処理（ステップＳ１８）を行い、処理を終了する。視点が移動していなければ、処理をステップＳ１４に進める。
このように、表示画面中でオブジェクトが動くか否かの判断処理を単純化することで、処理の高速化を図ることができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、ＤＶＤ−ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＣＤ−Ｒ（Ｒｅｃｏｒｄａｂｌｅ）／ＲＷ（ＲｅＷｒｉｔａｂｌｅ）などがある。光磁気記録媒体には、ＭＯ（Ｍａｇｎｅｔｏ−Ｏｐｔｉｃａｌ  ｄｉｓｃ）などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上説明したように本発明では、立体形状データに予め定義された面の頂点の位置と頂点における法線方向とに基づいて曲面形状を決定し、その曲面形状に沿った複数の面に分割して立体形状を表示するようにしたため、少ないデータ量の立体形状データから高精度の立体形状を表示させることができる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【図面の簡単な説明】
図１は、本実施の形態に適用される発明の概念図である。
図２は、本発明の実施の形態のシステム構成図である
図３は、本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。
図４は、本発明の実施の形態の機能を示す機能ブロック図である。
図５は、立体構造データ記憶部の内部構成を示す図である。
図６は、オブジェクト情報のデータ構造例を示す図である。
図７は、立体形状の一例を示す図である。図７（Ａ）と図７（Ｂ）とは立体形状の斜視図である。
図８は、オブジェクト情報の具体例を示す図である。
図９は、立体形状表示手順を示す第１のフローチャートである。
図１０は、立体形状表示手順を示す第２のフローチャートである。
図１１は、立体形状表示手順を示す第３のフローチャートである。
図１２は、空間曲線のポリライン近似の例を示す図である。
図１３は、図形の分割例を示す図である。
図１４は、３辺形の分割パターンの種別を示す図である。
図１５は、３辺形分割パターン決定処理の手順を示すフローチャートである。
図１６は、４辺形の分割パターンの種別を示す図である。
図１７は、４辺形分割パターン決定処理の手順を示すフローチャートである。
図１８は、隣接する面同士が滑らかに接続している立体形状の一例を示す図である。
図１９は、２次微分ベクトルを用いて決定されたパラメータ３次式の一例を示す図である。
図２０は、隣接する面同士が共有する辺で折れている立体形状の一例を示す図である。
図２１は、辺の形状を強制的に指示された立体形状の一例を示す図である。
図２２は、分割対象の面の一例を示す図である。
図２３は、分割される３辺形を含む立体形状の一例を示す図である。
図２４は、分割される３辺形の一例を示す図である。
図２５は、分割される４辺形の一例を示す図である。
図２６は、ハイブリッドメッシュデータで定義されている立体形状の辺を表示した画面例を示す図である。
図２７は、ハイブリッドメッシュデータで定義されている立体形状を表示した画面例を示す図である。
図２８は、ハイブリッドメッシュデータを再分割したときの立体形状の辺を表示した画面例を示す図である。
図２９は、ハイブリッドメッシュデータを再分割したときの立体形状を表示した画面例を示す図である。
図３０は、自動車の立体形状の表示画面例を示す図である。
【図１】
2003067527.tif 000004
【図２】
2003067527.tif 000005
【図３】
2003067527.tif 000006
【図４】
2003067527.tif 000007
【図５】
2003067527.tif 000008
【図６】
2003067527.tif 000009
【図７】
2003067527.tif 000010
【図８】
2003067527.tif 000011
【図９】
2003067527.tif 000012
【図１０】
2003067527.tif 000013
【図１１】
2003067527.tif 000014
【図１２】
2003067527.tif 000015
【図１３】
2003067527.tif 000016
【図１４】
2003067527.tif 000017
【図１５】
2003067527.tif 000018
【図１６】
2003067527.tif 000019
【図１７】
2003067527.tif 000020
【図１８】
2003067527.tif 000021
【図１９】
2003067527.tif 000022
【図２０】
2003067527.tif 000023
【図２１】
2003067527.tif 000024
【図２２】
2003067527.tif 000025
【図２３】
2003067527.tif 000026
【図２４】
2003067527.tif 000027
【図２５】
2003067527.tif 000028
【図２６】
2003067527.tif 000029
【図２７】
2003067527.tif 000030
【図２８】
2003067527.tif 000031
【図２９】
2003067527.tif 000032
【図３０】
2003067527.tif 000033
【手続補正書】
【提出日】平成16年9月13日(2004.9.13)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】発明の詳細な説明
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
技術分野
本発明は物の形状を立体的に表示するための立体形状表示プログラム、立体形状表示方法、および立体形状表示装置に関し、特に圧縮されたデータに基づいて元の形状を再現するための立体形状表示プログラム、立体形状表示方法、および立体形状表示装置に関する。
背景技術
近年、各種部品を３次元ＣＡＤ(Computer-Aided Design)で立体的に表現することが一般的となっている。たとえば、複雑な構造の装置を構成する各部品が３次元ＣＡＤデータで表現される。これにより、個々の部品のＣＡＤデータ（ソリッドモデル）を集結し、アセンブリ検討、レイアウト検討、干渉検討などの作業を、コンピュータ上で容易に行うことができる。このような作業はデジタルモックアップと呼ばれ、自動車や航空機産業を中心に盛んに用いられている。
一般にソリッドＣＡＤデータには、高精度の幾何と位相で表したプリサイス表現(Precise Representation)が用いられる。ソリッドＣＡＤデータは、プリサイス表現を基に、パラメトリック変形の為の拘束条件や形状生成履歴を持つ。さらにソリッドＣＡＤデータは、表示を速くするための表示データも保持している。それ故にソリッドＣＡＤが扱う情報量は多く、部品を集結してデジタルモックアップを造るにはデータ量が膨大になる。ソリッドのＣＡＤのデータ量が膨大であると、データの編集は行わずに立体形状を表示させるだけの場合であっても、膨大な量のデータ処理が発生する。
その解決策として自動車や航空機産業では、ＣＡＤデータを表示用ポリゴンデータ（たとえば、ＶＲＭＬ(Virtual Reality Modeling Language)のデータ）に変換し、その表示用ポリゴンデータをデジタルモックアップ専用のビューア(Viewer)を用いて表示している。表示用ポリゴンデータを用いて画面表示させることで、形状の確認作業が容易となる。
ところが、最近のＣＡＤデータの詳細化（より細かい定義でデータ量が増加）は、ハードウェアやソフトウェアの進化を超え、専用ビューアでも製品全体を扱うことが困難になってきた。たとえば、自動車のエンジンの構成を表すＣＡＤデータを、0.1mmの誤差で表示用ポリゴンデータに変換した場合、０．５〜１Ｇbyteになる。エンジンだけでも０．５〜１Ｇbyteになるため、車両１台分の合計は１０Ｇbyte以上になると推定される。そのため、ビューアを実行するコンピュータには、表示用ポリゴンデータを格納するための大容量のメモリやハードディスク装置が必要となる。
そこで、表示用の立体形状のデータを圧縮する技術が考えられている。立体形状の圧縮表現としてはB'ezierの三角パッチやGregoryパッチ（Lattice＝XVL）などを用いる方法があり、ハードディスク装置に格納しておくデータ容量を減らすことができるが、データをメモリ読み込み時にポリゴンに展開するためにメモリの削減にはならない。一方、圧縮された立体形状をそのままメモリに保持し、表示倍率に応じてポリゴンを細分割する方法にSubdivision法がある。Subdivision法が適している理由は、画面の拡大時に多くの部品は視野（画面）外にある確率が高く、View Frustum Culling（視野外の物体を省く手法）を用いて省かれたＣＰＵ(Central Processing Unit)資源をポリゴンの細分割計算に割り当てることが出来るからである。
Subdivision法の一例として、米国特許6,222,553号公報に記載された発明がある。この発明では、ＮＵＲＢＳ(Non-Uniform Rational B-Splines)曲線などのコントロールポイントを用いて表現している。そして、１つの形状の中間点からその形状の各辺に向けて引いた線によって、元の形状を分割している。
しかし、従来のSubdivision法は、メモリやファイル容量を少なくすることはできるが、ポリゴンの細分割計算におけるコンピュータの処理負荷が大幅に増加してしまう。しかも、従来のSubdivision法におけるデータ圧縮効果は、Ｗｅｂなどを用い遠隔地から大規模データのコラボレーションを行うには不十分である。
たとえば、米国特許6,222,553号公報に記載された発明では、ある形状の中間点から各辺に向けて引いた線でその形状を分割するため、分割する必要のない辺（たとえば、直線の辺）が含まれていても全ての辺が分割されてしまう。従って、不必要な分割が発生し、処理負荷の増大を招いている。しかも、ＮＵＲＢＳ曲線などのコントロールポイントは、各辺毎に個別に設定する必要があり、データ量増大の原因となってしまう。
発明の開示
本発明はこのような点に鑑みてなされたものであり、圧縮されたデータに基づいて高速に立体形状を表示することができる立体形状表示プログラム、立体形状表示方法、および立体形状表示装置を提供することを目的とする。
本発明の第１の形態では、上記課題を解決するために、図１に示す様な物の形状を立体的に表示させる処理をコンピュータに実行させる立体形状表示プログラムが提供される。本発明に係る立体形状表示プログラムを実行するコンピュータは、まず、少なくとも１つの面で立体形状を定義した立体形状データ２に基づいて、立体形状を構成する面の分割パターンを決定する（ステップＳ２）。同時に、コンピュータは、立体形状データ２に予め定義された面の頂点の位置とその頂点における法線方向とに基づいて面の曲面形状を決定する（ステップＳ３）。次に、コンピュータは、決定された曲面形状を、決定された分割パターンによって分割し、曲面形状に沿った複数の面を生成する（ステップＳ４）。そして、コンピュータは、生成された複数の面で構成される立体形状を表示する（ステップＳ５）。
このような立体形状表示プログラムを任意のコンピュータで実行させることで、立体形状データ２を構成する面に定義された法線方向などに応じた曲面形状が決定され、その曲面形状が複数の面に分割される。そして、分割された面で構成される立体形状が表示される。
本発明の第２の形態では、物の形状をコンピュータで立体的に表示させるための立体形状表示方法において、少なくとも１つの面で立体形状を定義した立体形状データに基づいて、前記立体形状を構成する前記面の分割パターンを決定すると共に、前記立体形状データに予め定義された前記面の頂点の位置と当該頂点における法線方向とに基づいて前記面の曲面形状を決定し、決定された前記曲面形状を、決定された前記分割パターンによって分割し、前記曲面形状に沿った複数の面を生成し、生成された前記複数の面で構成される立体形状を表示する、ことを特徴とする立体形状表示方法が提供される。
このような立体形状表示方法によれば、立体形状データを構成する面に定義された法線方向などに応じた曲面形状が決定され、その曲面形状が複数の面に分割される。そして、分割された面で構成される立体形状が表示される。
本発明の第３の形態では、物の形状を立体的に表示する立体形状表示装置において、少なくとも１つの面で立体形状を定義した立体形状データに基づいて、前記立体形状を構成する前記面の分割パターンを決定する分割パターン決定手段と、前記立体形状データに予め定義された前記面の頂点の位置と当該頂点における法線方向とに基づいて、前記面の曲面形状を決定する曲面形状決定手段と、前記曲面形状決定手段で決定された前記曲面形状を、前記分割パターン決定手段で決定された前記分割パターンによって分割し、前記曲面形状に沿った複数の面を生成する面生成手段と、前記面生成手段で生成された前記複数の面で構成される立体形状を表示する表示手段と、を有することを特徴とする立体形状表示装置が提供される。
このような立体形状表示装置によれば、分割パターン決定手段により、少なくとも１つの面で立体形状を定義した立体形状データに基づいて、立体形状を構成する面の分割パターンが決定される。また、曲面形状決定手段により、立体形状データに予め定義された面の頂点の位置と当該頂点における法線方向とに基づいて、面の曲面形状が決定される。その後、面生成手段と、曲面形状決定手段で決定された曲面形状を、分割パターン決定手段で決定された分割パターンによって分割し、曲面形状に沿った複数の面が生成される。そして、表示手段により、面生成手段で生成された複数の面で構成される立体形状が表示される。
本発明の上記および他の目的、特徴および利点は本発明の例として好ましい実施の形態を表す添付の図面と関連した以下の説明により明らかになるであろう。
発明を実施するための最良の形態
以下、本発明の実施の形態を図面を参照して説明する。
まず、本発明の実施の形態に適用される発明の概要について説明し、その後、本発明の実施の形態の具体的な内容を説明する。
図１は、本実施の形態に適用される発明の概念図である。本発明は、物の形状を立体的に表示させる処理をコンピュータに実行させる立体形状表示プログラムである。この立体形状表示プログラムに基づいて、コンピュータが図１に示すような処理を実行する。
コンピュータは、ＣＡＤデータ１のデータ圧縮を行い、圧縮された立体形状データ２を生成する。立体形状データ２は、ＣＡＤデータ１における形状を定義するデータを圧縮したものである。データ圧縮により、たとえば、複雑な曲面形状が、単純な形状の複数の面に置き換えられる。
その後、コンピュータは、立体形状データ２に基づいて、立体形状を構成する面の分割パターンを決定する（ステップＳ２）。たとえば、面を構成する辺の分割数を決定し、各辺の分割数に応じた面の分割パターンを決定する。
また、コンピュータは、立体形状データ２に予め定義された面の頂点の位置とその頂点における法線方向とに基づいて、面の曲面形状を決定する（ステップＳ３）。たとえば、法線方向に垂直な方向が曲面形状の接線となるように、曲面形状を決定する。なお、法線方向は、一般には、法線ベクトル（単位ベクトル）で定義される。
次に、コンピュータは、決定された曲面形状を、決定された分割パターンによって分割し、曲面形状に沿った複数の面を生成する（ステップＳ４）。そして、コンピュータは、生成された複数の面で構成される立体形状を表示する（ステップＳ５）。
このような立体形状表示プログラムを任意のコンピュータで実行させることで、立体形状データ２を構成する面に定義された法線方向などに応じた曲面形状が決定され、その曲面形状が複数の面に分割される。そして、分割された面で構成される立体形状が表示される。
これにより、元のＣＡＤデータ１で定義された立体形状を、少ないデータ量の立体形状データ２で記録することができる。そして、立体形状データ２に基づいて、ＣＡＤデータ１で定義された形状を少ない誤差で再現することが可能となる。
しかも、立体形状データ２では、立体形状を構成する面の頂点座標と法線方向が設定されている。法線方向は、たとえば、法線ベクトルで定義される。この法線ベクトルは、リアルな画面表示を行うためのグーローシェーディングや光の反射などの計算に必要な情報である。本発明では、立体形状データ２の状態で法線方向が定義されているため、立体形状データ２自体を１つのポリゴンモデルとみなして、そのままリアルに（たとえば、グーローシェーディングを用いる）画面表示することができる。従って、状況に応じて、コンピュータが面の分割の要否を判断し、面の分割を行わない高速表示と、面を分割する高精度の表示とを適宜切り換えることが可能である。
なお、前述した米国特許6,222,553号公報記載の発明に代表されるように、従来のSubdivision法で圧縮された多くのデータは、法線方向の情報（法線ベクトル）を面の分割に利用していない。そのため、圧縮されたデータに法線ベクトルを含めれば、面の分割に不要なデータを余分にもつことになり、データ容量が増加してしまう。
また、法線方向によって曲面形状を決定することで、元の立体形状を再現するために必要なデータ量を少なく抑えることができる。すなわち、滑らかに接続される２つの面では、ほとんどの場合、その境界の辺の端点において、法線方向の定義情報（法線ベクトル）を共有することができる。したがって、立体形状データ２全体としてのデータ量が削減される。
さらに、本発明では、立体形状データ２で定義されている面毎に分割すればよいため、分割された面のポリゴンデータを逐次３次元表示回路に送ることで、面分割後の高精度の立体形状を表示させることができる。これにより、コンピュータのメインメモリ上に面分割後の立体形状を定義した全てのデータを保持せずにすみ、必要なメモリ容量が少なくてすむ。
さらに、分割パターンを決定する際に、辺の分割数を先に決定し、その辺の分割数に従って面を分割することで、面の無駄な分割を避けることができる。たとえば、直線の辺は分割せずに、曲線で定義された辺を複数に分けることで、面を分割できる。その結果、処理負荷を低減し、表示処理の高速化が可能となる。
以下、本発明の実施の形態について、具体的に説明する。なお、以下の実施の形態では、圧縮された立体形状データにおいて、３辺で構成される面（フェース）と４辺で構成される面とを混在させることができる。そこで、以下、本発明において定義した形式の構造に圧縮されたデータを、ハイブリッドメッシュデータ（混成のメッシュデータ）と呼ぶこととする。
また、立体形状を構成する面の頂点となる位置は、各面を構成する辺の端点でもある。そこで、以下の実施の形態では、面の頂点となる位置を端点と呼ぶこととする。
図２は、本発明の実施の形態のシステム構成図である。図２に示すように、ネットワーク１０を介して複数のコンピュータ１００，１００ａ，１００ｂが接続されている。ネットワーク１０は、たとえば社内ＬＡＮ(Local Area Network)やインターネットである。
各コンピュータ１００，１００ａ，１００ｂには３次元ＣＡＤプログラムが実装されており、コンピュータ１００，１００ａ，１００ｂを用いて各種部品などのＣＡＤデータ（ソリッドモデル）を生成することができる。また、各コンピュータ１００，１００ａ，１００ｂには、本発明に係る３次元ＣＡＤデータのビューアが実装されている。コンピュータ１００，１００ａ，１００ｂでビューアを実行することで、ＣＡＤデータの高圧縮率での圧縮保存および圧縮されたデータに基づく３次元モデルの画面表示が行われる。また、ネットワーク１０を介して、圧縮されたデータを各コンピュータ１００，１００ａ，１００ｂ間で受け渡すことで、ＣＡＤを用いた共同設計作業（コラボレーション）を行うことができる。
以下、コンピュータ１００によって本発明を実施する場合の形態について詳しく説明する。
図３は、本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。コンピュータ１００は、ＣＰＵ１０１によって装置全体が制御されている。ＣＰＵ１０１には、バス１０７を介してＲＡＭ(Random Access Memory)１０２、ハードディスクドライブ（ＨＤＤ:Hard Disk Drive）１０３、グラフィック処理装置１０４、入力インタフェース１０５、および通信インタフェース１０６が接続されている。
ＲＡＭ１０２には、ＣＰＵ１０１に実行させるＯＳ(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ１０２には、ＣＰＵ１０１による処理に必要な各種データが格納される。ＨＤＤ１０３には、ＯＳやアプリケーションプログラムが格納される。
グラフィック処理装置１０４には、３次元表示回路を内蔵しており、モニタ１１が接続されている。グラフィック処理装置１０４は、ＣＰＵ１０１からの命令に従って、３次元の座標データ（ポリゴンデータなど）に基づく画像を生成し、その画像をモニタ１１の画面に表示させる。入力インタフェース１０５には、キーボード１２とマウス１３とが接続されている。入力インタフェース１０５は、キーボード１２やマウス１３から送られてくる信号を、バス１０７を介してＣＰＵ１０１に送信する。
通信インタフェース１０６は、ネットワーク１０に接続されている。通信インタフェース１０６は、ネットワーク１０を介して、他のコンピュータとの間でデータの送受信を行う。
以上のようなハードウェア構成によって、本実施の形態の処理機能を実現することができる。
図４は、本発明の実施の形態の機能を示す機能ブロック図である。コンピュータ１００は、ビューア１１０、ビューアアプリケーション部１３０、３次元表示用ＡＰＩ(Application Program Interface)１４０、ＯＳＡＰＩ１５０を有している。
ビューア１１０は、立体形状を表すデータのデータ形式を変換し、データ容量を圧縮する。たとえば、ＶＲＭＬデータ３１やＣＡＤデータ３２を、ハイブリッドメッシュデータに変換する。また、ビューア１１０は、ハイブリッドメッシュデータに基づいて、立体形状を所定の誤差で再現する。再現される立体形状は、複数のポリゴンで構成されるポリゴンモデルである。ビューア１１０内の構成の詳細は後述する。
ビューアアプリケーション部１３０は、ビューア１１０と連携してＣＡＤを用いた設計作業を支援するための付加機能を有している。図４の例では、ビューアアプリケーション部１３０は、付加機能として干渉検討部１３１、計測部１３２、分解図生成部１３３、イラスト生成部１３４などを有している。干渉検討部１３１は、ビューア１１０内から渡された立体形状のデータに基づいて、部品間の干渉の有無を判断する。計測部１３２は、ビューア１１０内から渡された立体形状のデータに基づいて、任意の２点間の距離を計算する。分解図生成部１３３は、ビューア１１０内から渡された立体形状のデータに基づいて、立体形状の分解図を生成する。イラスト生成部１３４は、ビューア１１０内から渡された立体形状のデータに基づいて、立体形状のイラスト画像を生成する。
３次元表示用ＡＰＩ１４０は、ビューア１１０などの各種処理機能と３次元表示を行うためのグラフィック処理装置１０４との間のインタフェースである。具体的には、３次元表示用ＡＰＩ１４０は、ビューア１１０から渡されたポリゴンなどの情報に基づいて、コンピュータ１００における３次元表示処理要求を生成し、その３次元表示処理要求をコンピュータ１００に実行させる。たとえば、３次元表示用ＡＰＩ１４０は、ビューア１１０から渡されたポリゴンの端点座標や色などの情報を、表示命令と共に図３に示すグラフィック処理装置１０４に渡す。すると、グラフィック処理装置１０４が各ポリゴンの透視投影などを行い、複数のポリゴンで構成される立体形状を表す画像（フレーム画像）を生成する。そして、グラフィック処理装置１０４で生成された画像のデータが所定周期でモニタ１１に送信され、立体形状を表す画像がモニタ１１の画面に表示される。３次元表示用ＡＰＩ１４０としては、たとえば、ＯｐｅｎＧＬ（商標）を用いることができる。
ＯＳＡＰＩ１５０は、ＯＳと他の処理機能との間のインタフェースである。具体的には、ＯＳＡＰＩ１５０は、ビューア１１０などから出力される処理要求に対応するＯＳの処理機能を起動し、コンピュータ１００に処理を実行させる。
次に、ビューア１１０の内部構成について説明する。
ビューア１１０は、アプリケーションインタフェース１１１、ハイブリッドメッシュＡＰＩ１１２、ＶＲＭＬデータ変換部１１３、ＣＡＤデータ変換部１１４、ユーザインタフェース１１５、細分割部１１６、表示データ出力部１１７、および、立体構造データ記憶部１２０を有している。
アプリケーションインタフェース１１１は、ビューアアプリケーション部１３０との間のインタフェースである。具体的には、アプリケーションインタフェース１１１は、ハイブリッドメッシュＡＰＩ１１２を介して受け取った立体構造データ（モックアップデータ）を、ビューアアプリケーション部１３０内の干渉検討部１３１などに渡す。また、アプリケーションインタフェース１１１は、ビューアアプリケーション部１３０内の干渉検討部１３１などから受け取った立体構造データをハイブリッドメッシュＡＰＩ１１２に渡す。
ハイブリッドメッシュＡＰＩ１１２は、アプリケーションインタフェース１１１に対して立体構造データ記憶部１２０へのアクセス環境を提供するインタフェースである。具体的には、ハイブリッドメッシュＡＰＩ１１２は、アプリケーションインタフェース１１１を介した要求に応じて、立体構造データ記憶部１２０内のハイブリッドメッシュデータの一部（または全部）のデータをアプリケーションインタフェース１１１に渡す。また、ハイブリッドメッシュＡＰＩ１１２は、アプリケーションインタフェース１１１を介して受け取ったデータを、ハイブリッドメッシュデータの一部（または全部）として立体構造データ記憶部１２０に格納する。
ＶＲＭＬデータ変換部１１３は、ＶＲＭＬデータ３１をハイブリッドメッシュデータに変換する。この変換により、立体形状を表すデータのデータ容量が小さくなる。そして、ＶＲＭＬデータ変換部１１３は、変換後のハイブリッドメッシュデータを、立体構造データ記憶部１２０に格納する。
ＣＡＤデータ変換部１１４は、ＣＡＤデータ３２をハイブリッドメッシュデータに変換する。この変換により、立体形状を表すデータのデータ容量が小さくなる。そして、ＣＡＤデータ変換部１１４は、変換後のハイブリッドメッシュデータを、立体構造データ記憶部１２０に格納する。
ユーザインタフェース１１５は、ＯＳＡＰＩ１５０と連携し、キーボード１２やマウス１３を用いた操作入力の情報を取得する。そして、ユーザインタフェース１１５は、操作入力に応答して、ビューア１１０内の各構成要素に対して、処理要求を出したり、データを渡したりする。たとえば、ユーザインタフェース１１５は、操作入力によって指定された表示倍率１１６ａや許容誤差１１６ｂを細分割部１１６に渡す。また、ユーザインタフェース１１５は、表示対象のオブジェクトを投影するための視点と立体形状との相対的位置の移動指示が入力された場合（表示画面内で立体形状が動く場合）、移動中であることを細分割部１１６に通知する。
細分割部１１６は、ハイブリッドメッシュデータを細分割する。すなわち、細分割部１１６は、ＣＡＤデータ３２よりも粗い構造で表現されたハイブリッドメッシュデータを構成する面（フェース）を分割し、元のＣＡＤデータ３２の形状に近づける。そして、細分割部１１６は、面を分割する毎に、分割後の面の情報を表示データ出力部１１７に渡す。
なお、細分割部１１６は、ハイブリッドメッシュデータの面の分割数を決定するためのパラメータとして、表示倍率１１６ａと許容誤差１１６ｂとを保持している。表示倍率１１６ａは、ハイブリッドメッシュデータで定義される立体形状の画面表示上での表示倍率である。許容誤差１１６ｂは、ハイブリッドメッシュデータに基づいて定義される立体形状（曲面で構成される形状）を平面のポリゴンで表した場合に発生する形状誤差の最大値である。細分割部１１６は、表示倍率１１６ａが大きいほどポリゴンの分割数を多くし、表示倍率１１６ａが小さいほどポリゴンの分割数を少なくする。また、細分割部１１６は、許容誤差１１６ｂが大きいほどポリゴンの分割数を少なくし、許容誤差１１６ｂが小さいほどポリゴンの分割数を多くする。
表示データ出力部１１７は、細分割部１１６で分割された後のポリゴンの情報を、３次元表示用ＡＰＩ１４０に対して出力する。
立体構造データ記憶部１２０は、表示対象のモデル（たとえば、自動車）の立体構造（部品の立体形状の組み合わせ）のデータを記憶するためのＲＡＭ１０２内の記憶領域である。立体構造のデータは、主に、表示対象モデルの構成要素（たとえば、自動車の部品）毎の立体形状を示すハイブリッドメッシュデータで形成される。このハイブリッドメッシュデータは、ＶＲＭＬデータ変換部１１３やＣＡＤデータ変換部１１４によって生成される。また、ハイブリッドメッシュデータは、ＨＤＤ１０３内のハイブリッドメッシュファイル３３から読み込まれる場合もある。
ハイブリッドメッシュデータには、立体形状を構成する面毎の形状情報が定義されており、面単位の情報をポリゴンとみなして、そのまま３次元表示用ＡＰＩ１４０に渡して画面表示させることができる。また、ハイブリッドメッシュデータには、各面を分割するのに必要な情報（基底分割数など）が含まれる。
次に、立体構造データ記憶部１２０のデータ構造の詳細について説明する。
図５は、立体構造データ記憶部の内部構成を示す図である。立体構造データ記憶部１２０は、複数のハイブリッドメッシュデータ２００，２００ａ，２００ｂ，・・・とオブジェクト配置情報３００とを有している。ハイブリッドメッシュデータ２００，２００ａ，２００ｂ，・・・は、表示対象物を構成する部品（オブジェクト）毎の形状を定義したデータである。ハイブリッドメッシュデータ２００，２００ａ，２００ｂ，・・・は、表示対象物を構成するユニット毎にグループ化されている場合もある。ここで、ユニットとは、１以上の部品で構成される物品である。表示対象物をアセンブリ（組み立て部品）とすれば、ユニットはサブアセンブリである。たとえば、表示対象物が自動車であれば、エンジンやサスペンションなどがユニットに相当する。なお、１つのユニットがさらに複数のユニット（各ユニットが１以上の部品を有する）で構成される場合もある。
ハイブリッドメッシュデータ２００には、オブジェクト情報２１０、点座標データ群２２０、およびベクトルデータ群２３０が含まれている。オブジェクト情報２１０は、各部品の立体形状などを表すデータ（部品の色の情報も含む）である。オブジェクト情報２１０の詳細は後述する。
点座標データ群２２０は、立体形状を構成する面の各端点の端点座標データ２２１，２２２，・・・，２２ｉ，・・・，２２ｍ，２２ｎの集合である。端点座標データ２２１，２２２，・・・，２２ｉ，・・・，２２ｍ，２２ｎには、ｘ軸−ｙ軸−ｚ軸で表される３次元空間（ローカル座標系）内での各軸方向の座標値が設定されている。
ベクトルデータ群２３０は、立体形状を構成する面の各端点に定義する法線ベクトルまたは接線ベクトルを表すベクトルデータ２３１，２３２，・・・，２３ｉ，・・・，２３ｍ，２３ｎの集合である。ベクトルデータ２３１，２３２，・・・，２３ｉ，・・・，２３ｍ，２３ｎは、３次元空間（ローカル座標系）内での方向と大きさを、ｘ軸、ｙ軸、ｚ軸方向のベクトル成分で表している。
なお、本実施の形態において法線ベクトルとして指定されるベクトルは、全て長さが１の単位ベクトルである。接線ベクトルとして指定されるベクトルは、単位ベクトルとは限らない。
オブジェクト配置情報３００は、立体形状をグローバル座標系（ワールド座標系）に配置する場合の配置位置および向きを定義した情報である。各立体形状に関する配置情報が定義されることで、表示対象物を構成する各部品をグローバル座標系内に配置し、複数の立体形状の組み合わせからなる表示対象物の形を生成することができる。
次に、オブジェクト情報の内容を詳細に説明する。
図６は、オブジェクト情報のデータ構造例を示す図である。なお、図６中のデータ名の前に示されている矢印（↑）は、そのデータが他のデータの格納位置を指すポインタであることを示している。
オブジェクト情報２１０は、オブジェクト識別情報(ObjectID)２１１、最大基底分割数(MaxDivide)２１２、および複数のフェース情報(Face1,...,Face i,...,Face n-1,Face n)４１０，４２０，４３０，４４０を有している。オブジェクト識別情報２１１は、表示対象物を構成する部品ごとに作成されたオブジェクト情報２１０を一意に識別するための識別情報である。最大基底分割数２１２は、オブジェクト情報２１０を構成する面の各辺に設定された基底分割数のうちの最大値である。フェース情報４１０，４２０，４３０，４４０は、部品を構成する面の情報である。
フェース情報４２０は、フェース識別情報(Face ID)４２１、フェース辺数(nP)４２２、フェース属性(Attr)４２３、複数の端点情報(Vertex 1,Vertex 2,...,Vertex i,...,Vertex nP-1,Vertex nP)４２４，４２５，４２６，４２７，４２８、および再帰ポインタ(↑ EOF)４２９を有している。フェース識別情報４２１は、オブジェクト情報２１０内でフェース情報を一意に識別するための識別情報である。フェース辺数４２２は、面を構成する辺（直線または曲線）の数である。フェース属性４２３は、面の色などの属性情報である。
端点情報４２４，４２５，４２６，４２７，４２８は、面の端点に関する情報である。再帰ポインタ４２９は、先頭の端点情報４２４の位置を指し示すポインタである。再帰ポインタ４２９により先頭の端点情報４２４が示されることで、端点情報４２４，４２５，４２６，４２７，４２８は、端点の列び順のループを構成する。連続した２つの端点情報によって、面を構成する辺が定義されている。なお、最後尾の端点情報４２８は、先頭の端点情報４２４と連続しているものとして扱われる。
端点情報４２６は、点座標ポインタ(↑ Point)４２６ａ、法線ベクトルポインタ(↑ Normal)４２６ｂ、接線定義情報(Ratio or Tangent)４２６ｃ、基底分割数(nDevide)４２６ｄ、および隣接辺ポインタ(↑ MateEdge)４２６ｅを有している。
点座標ポインタ４２６ａは、点座標データ群２２０内の点座標データ２２１，２２２，・・・，２２ｉ，・・・，２２ｍ，２２ｎのうち、端点の３次元空間（ローカル座標系）内での位置を示す点座標データを指すポインタである。法線ベクトルポインタ４２６ｂは、ベクトルデータ群２３０内のベクトルデータ２３１，２３２，・・・，２３ｉ，・・・，２３ｍ，２３ｎのうち、端点の法線ベクトルの値を示すベクトルデータを指すポインタである。
接線定義情報４２６ｃは、端点における接線ベクトルを定義するための情報である。接線定義情報４２６ｃには、端点における接線の長さ(Ratio)、または接線ベクトルを指すポインタ(Tangent)のいずれかが設定される。法線ベクトルと辺の両端の端点の位置とから接線ベクトルの方向が決定できる場合（辺が法線ベクトルの示す方向に湾曲する場合）には、接線定義情報４２６ｃとして接線の長さが設定される。法線ベクトルと辺の両端の端点の位置とから接線ベクトルの方向が決定できない場合（辺が法線ベクトルの示す方向と異なる方向に湾曲する場合）には、接線定義情報４２６ｃとして接線ベクトルへのポインタが設定される。
基底分割数４２６ｄは、予め設定された辺の分割数である。基底分割数４２６ｄは、表示倍率が１（拡大も縮小も行わない）のときに、分割後の誤差が予め決められた誤差以内となるような値が設定される。
隣接辺ポインタ４２６ｅは、隣接する面と辺を共有する場合に、隣接する面側の共有する辺の情報（辺の両端を示す２つの端点情報の先頭の位置）を指し示すポインタである。隣接辺ポインタ４２６ｅにより、隣接する面を繋ぎ合わせたループ間での面同士の辺の供給関係が定義される。
なお、複数の辺の端点情報４２６において、点座標ポインタ４２６ａが同じアドレス（点座標データの位置）を示す場合、各辺の端点が共有されることを表している。
また、複数の辺の端点が共有されるとき、それぞれの辺の端点に対応する端点情報４２６の法線ベクトルポインタ４２６ｂが同じアドレス（法線ベクトルデータの位置）を示していれば、各辺の法線ベクトルが共有されている。
このように、本実施の形態のハイブリッドメッシュデータ２００，２００ａ，２００ｂでは、端点のループと面のループとが定義されていると共に、辺の端点の共有関係、法線ベクトルの共有関係、辺の共有関係が定義されている。これにより、立体形状の位相(topology)と幾何(geometry)との情報が定義される。ここで、位相とは、面、稜線、端点（頂点）など立体の境界面のつながり具合をあらわす要素であり、幾何とは、曲面、曲線、点など立体の実際の形状をあらわす要素である。
次に、図７〜図８を参照して、立体形状に応じたオブジェクト情報２１０の具体例を説明する。
図７は、立体形状の一例を示す図である。図７（Ａ）と図７（Ｂ）とは立体形状の斜視図である。図７（Ａ）と図７（Ｂ）とは、見る方向が逆である。
立体形状５００は、６つの面５１１〜５１６で構成され、１２個の辺５２１〜５３２、８個の端点５４１〜５４８を有している。各面５１１〜５１６のフェース識別情報(FaceID)は、Ｆ１〜Ｆ６である。面５１１は曲面であり、他の面５１２〜５１６は平面である。
ここで、各端点５４１〜５４８の位置を示す点座標データへのポインタ（点座標ポインタ）をＰ１〜Ｐ８とし、各端点５４１〜５４８の法線ベクトルを示すベクトルデータへのポインタ（法線ベクトルポインタ）をＮ１〜Ｎ８とする。なお、図７に示すように端点５４１には、２つの法線ベクトル５５１，５５２が存在する。このとき、法線ベクトル５５１，５５２を有する面のフェース識別情報を、法線ベクトルデータを示す記号の後に括弧書きで示す。すなわち、面５１６が有する法線ベクトル５５１の法線ベクトルポインタはＮ１（Ｆ６）であり、面５１１と面５１３が共有する法線ベクトル５５２の法線ベクトルポインタはＮ１（Ｆ１，Ｆ３）である。
このような立体形状５００のオブジェクト情報の例を以下に示す。
図８は、オブジェクト情報の具体例を示す図である。オブジェクト情報２１０ａには、オブジェクト識別情報２１１ａ、最大基底分割数２１２ａ、および複数のフェース情報４１０ａ，４２０ａ，４３０ａ，４４０ａ，４５０ａ，４６０ａが含まれている。フェース情報４１０ａは、フェース識別情報「Ｆ１」の面５１１に関する情報である。フェース情報４２０ａは、フェース識別情報「Ｆ２」の面５１２に関する情報である。フェース情報４３０ａは、フェース識別情報「Ｆ３」の面５１３に関する情報である。フェース情報４４０ａは、フェース識別情報「Ｆ４」の面５１４に関する情報である。フェース情報４５０ａは、フェース識別情報「Ｆ５」の面５１５に関する情報である。フェース情報４６０ａは、フェース識別情報「Ｆ６」の面５１６に関する情報である。
ここで、フェース情報４１０ａを参照して、データの例を詳しく説明する。フェース情報４１０ａのフェース識別情報(FaceID)は「Ｆ１」である。これにより、図７に示す面５１１に関する情報であることが分かる。また、フェース辺数(nP)は、４である。これにより、４辺からなる面であることが分かる。フェース情報(Attr)には、色情報などが設定されている。
フェース情報４１０ａには、４つの端点５４１〜５４４に対応する端点情報が設定されている。図８の例では、端点５４１の端点情報には、点座標ポインタＰ１、法線ベクトルポインタＮ１（Ｆ１，Ｆ３）、接線の長さ(Ratio)、基底分割数「０」、および面５１３（フェース識別情報Ｆ３）の先頭の端点情報（Ｆ３−１）を指し示す隣接辺ポインタが設定されている。端点５４２の端点情報には、点座標ポインタＰ２、法線ベクトルポインタＮ２（Ｆ１，Ｆ３）、接線の長さ(Ratio)、基底分割数「ｎ０−１」、および面５１４（フェース識別情報Ｆ４）の４番目の端点情報（Ｆ４−４）を指し示す隣接辺ポインタが設定されている。端点５４３の端点情報には、点座標ポインタＰ３、法線ベクトルポインタＮ３（Ｆ１）、接線の長さ(Ratio)、基底分割数「０」、および面５１５（フェース識別情報Ｆ５）の４番目の端点情報（Ｆ５−４）を指し示す隣接辺ポインタが設定されている。端点５４４の端点情報には、点座標ポインタＰ４、法線ベクトルポインタＮ４（Ｆ１）、接線の長さ(Ratio)、基底分割数「ｎ０−１」、および面５１６（フェース識別情報Ｆ６）の先頭の端点情報（Ｆ６−１）を指し示す隣接辺ポインタが設定されている。再帰ポインタは、先頭の端点情報を指し示している。
以上のような機能構成およびデータ構造を有するコンピュータ１００によって、立体形状の表示が行われる。以下、立体形状の表示方法について詳しく説明する。
図９は、立体形状表示手順を示す第１のフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
［ステップＳ１１］コンピュータ１００は、ユーザからの操作入力などによる指示に従って、ハイブリッドメッシュデータで構成される立体形状データを生成する。たとえば、ＶＲＭＬデータ変換部１１３が、ＶＲＭＬデータ３１に定義されている部品の立体形状を解析し、部品毎の立体形状データをハイブリッドメッシュデータに変換する。また、ＣＡＤデータ変換部１１４が、ＣＡＤデータ３２に定義されている部品の立体形状を解析し、部品毎の立体形状データをハイブリッドメッシュデータに変換する。
生成されるハイブリッドメッシュデータは、元のＶＲＭＬデータ３１に定義された立体形状よりも面の数を減らした立体形状を定義している。したがって、この変換処理により、データ容量が圧縮される（データ容量が減少する）。
［ステップＳ１２］ＶＲＭＬデータ変換部１１３またはＣＡＤデータ変換部１１４は、データ変換によって生成したハイブリッドメッシュデータを内部のＲＡＭ１０２内の立体構造データ記憶部１２０に格納する。なお、ＲＡＭ１０２に格納されたハイブリッドメッシュデータは、ハイブリッドメッシュファイル３３に書き出すことができる。また、ハイブリッドメッシュファイル３３からハイブリッドメッシュデータを取り出し、ＲＡＭ１０２内の立体構造データ記憶部１２０に格納することもできる。
［ステップＳ１３］ユーザインタフェース１１５は、ユーザからのキーボード１２などに対する操作入力に基づいて、画面の表示倍率と許容誤差を取得する。すると、ユーザインタフェース１１５は、細分割部１１６に対して表示倍率と許容誤差を渡す。
［ステップＳ１４］細分割部１１６は、立体構造データ記憶部１２０内のオブジェクトを１つ選択する。以下、選択したオブジェクトに関して、ステップＳ１５〜ステップＳ３７の処理が行われる。
［ステップＳ１５］細分割部１１６は、立体構造データ記憶部１２０からステップＳ１４で選択したオブジェクトのハイブリッドメッシュデータを取り出し、最大基底分割数を取得する。
［ステップＳ１６］細分割部１１６は、画面の表示倍率、許容誤差、および最大基底分割数に基づいて、実分割数を算出する。実分割数の算出方法の詳細については後述する。
［ステップＳ１７］細分割部１１６は、分割処理の必要の有無を判断する。具体的には、ステップＳ１６で算出した実分割数が１以下か否かを判断する。実分割数が１以下の場合、分割処理の必要がないと判断される。一方、実分割数が１を超えた場合には、分割処理の必要があると判断する。
すなわち、最大基底分割数は、単位倍率のときの単位誤差における分割数が最も大きい辺の基底分割数である。したがって、その辺の分割が不要であれば、他の辺の分割も不要である。
分割処理の必要がない場合には、処理がステップＳ１８に進められる。分割処理が必要な場合には、処理が図１０のステップＳ２１に進められる。
［ステップＳ１８］細分割部１１６は、立体構造データ記憶部１２０に記憶されたハイブリッドメッシュデータやオブジェクト配置情報を、そのまま表示データ出力部１１７に送信する。表示データ出力部１１７は、ハイブリッドメッシュデータを３次元表示用ＡＰＩ１４０へ出力する。すなわち、ハイブリッドメッシュデータは、そのままポリゴンモデルのデータとして解釈することができるため、そのままのデータ形式で３次元表示用ＡＰＩ１４０に出力すれば、少ない数の面（ハイブリッドメッシュデータで定義されている面の数）で構成された立体形状４１がモニタ１１の画面に表示される。その後、処理がステップＳ３８に進められる。
これにより、表示倍率が小さい場合（画面中で小さく表示される場合）には、簡易な構造の立体形状が表示され、高速に画面表示が可能となる。また、許容誤差が大きい場合にも簡易な構造の立体形状が表示され、高速に画面表示が可能となる。
図１０は、立体形状表示手順を示す第２のフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
［ステップＳ２１］細分割部１１６は、立体形状の分割処理に必要なパラメータ等の初期化処理を行う。
［ステップＳ２２］細分割部１１６は、立体構造データ記憶部１２０に格納されているハイブリッドメッシュデータの中から、フェース情報を１つ選択する。
［ステップＳ２３］細分割部１１６は、視点（仮想カメラ）と立体形状（ステップＳ２２で選択した面）との相対位置が変化しているか否かを判断する。すなわち、表示される画面内で立体形状が動くか否かを判断する。相対位置が変化している場合には、処理がステップＳ２９に進められる。相対位置が変化していない場合には、処理がステップＳ２４に進められる。なお、本実施の形態では、視点と立体形状との相対位置は、ユーザからの操作入力（視点の移動指示や、視点の向き（視軸）の変更指示など）に応じて変化する。
［ステップＳ２４］細分割部１１６は、選択したフェース情報で定義される辺（端点情報の列）の１つを選択する。
［ステップＳ２５］細分割部１１６は、選択した辺の実分割数を算出する。これは、選択された辺の基底分割数ｎ０に、１つの画面内に表示される全ての立体形状に対して共通の値√（Scale/Tol）を乗算したものである。
［ステップＳ２６］細分割部１１６は、ステップＳ２５で算出された実分割数を、２のべき乗に切り上げる。辺の分割数を２のべき乗とすることで、以降の３角形ポリゴンの分割を、単純な分割パターンで行うことができる。
［ステップＳ２７］細分割部１１６は、ステップＳ２２で選択したフェース情報の全ての辺の分割数が決定したか否かを判断する。全ての辺の分割数が決定した場合には、処理がステップＳ２８に進められる。未処理の辺があれば、処理がステップＳ２４に進められる。
［ステップＳ２８］細分割部１１６は、全ての辺で分割の必要がないか（分割数が１以下か）否かを判断する。全ての辺で分割の必要がなければ、処理がステップＳ２９に進められる。分割の必要な辺が１つでもあれば、処理が図１１のステップＳ３１に進められる。
［ステップＳ２９］細分割部１１６は、立体構造データ記憶部１２０に記憶されたハイブリッドメッシュデータのステップＳ２２で選択した面に関する情報を、そのまま表示データ出力部１１７に送信する。表示データ出力部１１７は、ハイブリッドメッシュデータを３次元表示用ＡＰＩ１４０へ出力する。すると、ステップＳ２２で選択された面４０が、細分割されずにモニタ１１に表示される。その後、処理は図１１のステップＳ３７に進む。
このように、画面中で立体形状が動いている場合には、各面が分割されずに画面表示される。その結果、少ない数の面（ハイブリッドメッシュデータで定義されている面の数）で構成された立体形状がモニタ１１の画面に表示される。すなわち、少ない処理で高速に立体形状の画面表示が可能となる。
図１１は、立体形状表示手順を示す第３のフローチャートである。以下、図１１に示す処理をステップ番号に沿って説明する。
［ステップＳ３１］細分割部１１６は、図１０のステップＳ２２で選択したフェース情報が３辺形か４辺形かを判断する。３辺形の場合には、処理がステップＳ３２に進められる。４辺形の場合には、処理がステップＳ３３に進められる。
［ステップＳ３２］細分割部１１６は、３辺形分割パターン決定処理を行う。この処理は、各辺の実分割数に応じて、３辺形を１段階分だけ分割パターンを決定する処理である。すなわち、３辺形の分割処理は、多段階に分けて行われる。ステップＳ３２では、その１段階分の分割パターンの決定が行われる。なお、３辺形分割処理の詳細は後述する。その後、処理がステップＳ３４に進められる。
［ステップＳ３３］細分割部１１６は、４辺形分割パターン決定処理を行う。この処理は、各辺の実分割数に応じて、４辺形を１段階分だけ分割パターンを決定する処理である。すなわち、４辺形の分割処理は、多段階に分けて行われる。ステップＳ３３では、その１段階分の分割パターンの決定が行われる。この処理の詳細は後述する。
［ステップＳ３４］細分割部１１６は、各辺のパラメータ３次式を決定する。
［ステップＳ３５］細分割部１１６は、ステップＳ３２、Ｓ３３で決定した分割パターンとステップＳ３４で決定したパラメータ３次式とに従って、立体形状を構成する各面を細分割する。細分割された結果が、これ以上細分割できない場合、ステップＳ３６へ進む。
さらに細分割できる場合は、細分割部１１６は、再帰的にステップＳ３１〜Ｓ３６の処理を呼び出す。再帰的に呼び出されたときのステップＳ３２，Ｓ３３では、多段階に分けて行われる細分割処理の次の１段階分の分割パターン決定処理が行われる。このように、ステップＳ３１〜Ｓ３６の処理を再帰的に呼び出すことで、ステップＳ２２で選択した面が、段階的に細分化される。
［ステップＳ３６］細分割部１１６は、細分割した後の立体形状データを、表示データ出力部１１７に送信する。表示データ出力部１１７は、立体形状データを３次元表示用ＡＰＩ１４０へ出力する。これにより、細分割の分割数に応じた精度の立体形状４２〜４４がモニタ１１の画面に表示される。
なお、ステップＳ３６の処理は、選択された面がこれ以上分割できない状態まで分割されたとき実行される。そして、最小単位の３辺形が生成される毎に、その３辺形の表示用のポリゴンデータが表示データ出力部１１７に送信される。そのため、立体形状全体のポリゴンデータを、細分割部１１６が保持する必要なはい。
［ステップＳ３７］細分割部１１６は、全ての面（フェース）を分割したか否かを判断する。全ての面を分割した場合には、処理がステップＳ３８に進められる。未分割の面がある場合には、処理がステップＳ２２に進められる。
［ステップＳ３８］細分割部１１６は、全オブジェクトの画面表示が終了したか否かを判断する。なお、ユーザの操作入力によりビューア１１０の終了が指示された場合にも、画面表示終了と判断される。画面表示終了の場合には処理が終了し、別のオブジェクトのハイブリッドメッシュデータの画面表示を継続する場合には、処理が図９のステップＳ１４に進められる。
以上のようにして、拡大倍率、許容誤差、および視点との相対位置に応じた精度の立体形状が画面に表示される。しかも、粗い形状の面を定義しているハイブリッドメッシュデータに基づいて、精度の高い（誤差の少ない）立体形状を表示することができる。そのため、立体形状データを格納するための記憶領域が少なくてすむ。
以下、図９〜図１１で説明したステップ毎の処理の詳細な内容について説明する。
［実分割数の算出］
図９のステップＳ１６と図１０のステップＳ２５とに示した実分割数の算出処理の詳細について説明する。
本実施の形態では、立体形状を構成する面の形を表す辺を、パラメータ３次式Ｆ（ｔ）（０≦ｔ≦１）で定義する。パラメータ３次式を用いれば、辺の中間点の算出が容易となる。すなわち、パラメータ３次式にｔ＝１／２を与えることにより、容易に中間点の座標を（ＣＰＵに負荷を与えず）求めることができる。
ここで、パラメータ３次式で与えられた辺が曲線であれば、その辺は、立体形状を表示する際に複数の線分に分割される（ポリライン（折れ線）近似される）。このとき、辺の分割数が多いほど、分割された線分の形が元の曲線に近くなる（誤差が小さくなる）。ただし、分割数を多くすると、表示ポリゴン数が増大し、処理負荷が大きくなる。そこで、再現される立体形状の精度と処理負荷とのバランスを考えて許容できる誤差（許容誤差（Tol））をコンピュータ１００に与え、その許容誤差に応じた適切な分割数（誤差を超えない範囲の最も小さい分割数）を決定する必要がある。
一般に、与えられた許容誤差内で最も小さい分割数を算出するには、負荷の大きい計算が必要となる。例えば、半径Ｒの円の分割数ｎは、
ｎ＝π／cos-1（１−Tol／Ｒ）
・・・（１）
で求めることができる。この式（１）を、便宜上真の式と呼ぶこととする。ここで、πは円周率である。真の式（１）で用いられているアークコサイン(cos-1)は、ＣＰＵ負荷の大きな関数である。その為、本実施の形態では、分割数の計算を高速にする近似式を用いた。その近似式は以下の通りである。
ｎ≒π×√（Ｒ／２Tol）
・・・（２）
ここで、式（２）には、変数として半径Ｒが含まれている。辺の形は単純な円弧に限らず、自由曲線の場合もある。そのため、式（２）をそのまま用いると、実分割数の決定前に、辺を定義する曲線の曲率（半径Ｒ）を算出する必要が生じる。そこで、本実施の形態では、予め計算された単位倍率と単位誤差における基底分割数（実数）を用い、半径Ｒを用いずに分割数ｎを算出する。
図１２は、空間曲線のポリライン近似の例を示す図である。図１２では、空間曲線５１を４つの線分５２〜５５に分割している。このときの誤差をtol0とする。
このように、任意の空間曲線５１を誤差tol0でポリライン（折れ線）近似した場合における分割数ｎ（ポリラインのVector本数）が判っているものとする（図１２の例では分割数ｎ＝４）。この既知の分割数ｎを、基底分割数ｎ０とする。そして、このときの空間曲線５１のサイズを基準サイズと定める。また、基底分割数ｎ０を算出した際の誤差を基準誤差tol0とする。
ユーザは、空間曲線５１を基準サイズの何倍の大きさで表示させるのかを、表示倍率として指定する。ユーザから任意に指定される表示倍率をScaleとすると、空間曲線５１をScale倍した曲線の分割数Ｎ１は、
Ｎ１≒√（Scale）×ｎ０
・・・（３）
で示せる。
また、ユーザは、空間曲線５１を画面に表示の際の精度を誤差によって指定することができる。基準誤差tol0を誤差tol1に変更したときの分割数Ｎ２は、
Ｎ２≒√（tol0/tol1）×ｎ０
・・・（４）
で示せる。
従って、この空間曲線５１を、基準サイズ（Scale=1）で誤差を基準誤差（tol0）内とするための基底分割数ｎ０が既知である場合、この空間曲線５１をScale倍し、許容誤差Tol（=tol1/tol0）でポリライン近似する場合の曲線の実際の分割数（実分割数）Ｎは、
Ｎ≒√（Scale／Tol）×ｎ０
・・・（５）
で示せることになる。許容誤差Tolは、誤差の大きさを基準誤差tol0との比で示している。
ここで、ｎ０は表示倍率や許容誤差に依存しない曲線固有の特性値である。そのため、ｎ０を基底分割数と称し、予め計算しておくことにより表示倍率や許容誤差が変更された場合の分割数計算を高速に行うことができる。
なお、√（Scale／Tol）の値は、３次元空間内の全ての表示対象物に対して１つの値であるため、表示対象物（たとえば、自動車）を構成する立体形状（たとえば、部品）の辺（空間曲線）毎に計算する必要はない。すなわち、１つの辺に対する表示倍率と許容誤差に応じた実分割数Ｎを、乗算１回で求めることができる。ここで、基底分割数ｎ０は正の実数であり、実分割数Ｎは小数点以下を切り上げた自然数である。
さらに、本実施の形態では、分割パターン処理の簡素化の為に、実分割数は２のべき乗に繰上げる。実分割数を２のべき乗にしておけば、辺の２分割を繰り返すことで、実分割数に応じた辺の等分が可能となる。
また、直線は基底分割数ｎ０＝０とする。これにより、表示倍率(Scale)にも許容誤差(Tol)にも影響されず、実分割数Ｎは常に０となる。これは、分割しないことを意味する。
以下に、図形の分割例について説明する。
図１３は、図形の分割例を示す図である。図１３では、簡単な図形の例として、円６０を示している。ここで、円６０の半径Ｒを変えながら、真の式（１）を用いて分割数ｎを求めてみる。得られた分割数を、円６０の半径Ｒに応じた基底分割数ｎ０とする。このとき、基準誤差tol0を1mmとする。この場合、半径Ｒの変化と基底分割数ｎ０との関係は、以下の表のようになる。
【表１】
2003067527.tif 000034
この表に示すように、半径Ｒが大きくなるほど基底分割数ｎ０も大きくなる。なお、半径Ｒが０．５ｍｍ未満の場合アークコサインの計算を行うことができないため、計算不能となる。
このようにして得られた基底分割数ｎ０から、表示倍率と許容誤差とに応じた実分割数Ｎを計算する。
たとえば、半径１０ｍｍの円を１００倍（Scale=100）の大きさで、許容誤差１ｍｍ(Tol=1)で近似する場合、基底分割数ｎ０＝６．９７を用いて実分割数Ｎが計算される。各数値を式（５）の変数に設定して、近似式を解くと、
Ｎ≒√（１００）×６．９７＝６９．７
・・・（６）
となる。実分割数Ｎの小数点以下を切り上げると７０になる。ここで、表示倍率を１００倍にしたときの分割数は、半径が１００倍の円の分割数と同等になるべきである。この例では、半径１０ｍｍの１００倍の半径１０００ｍｍを有する円の分割数を真の式（１）で求めた場合、７０．２４である。この値の小数点以下を切り上げると７１となる。そのため、十分な精度で近似されていることがわかる。
次に、真の式（１）では計算不能だった半径０．１ｍｍの円を１ｍｍの誤差で分割する場合の分割数も、半径１０ｍｍの円を１／１００倍して表示することで近似できる筈であるから
ｎ０(r＝0.1)≒１／√（１００）×６．９７＝０．６９７
・・・（７）
と求めることができる。
［分割パターン決定処理］
次に、図１１のステップＳ３２，Ｓ３３に示す分割パターンの決定処理について詳細に説明する。
［３辺形分割パターン決定処理］
まず、３辺形分割パターン決定処理について詳細に説明する。本実施の形態では、全ての辺の分割数が２のべき乗となっているため、全ての３辺形は、４種類の分割パターンの組み合わせによって分割することができる。
図１４は、３辺形の分割パターンの種別を示す図である。図１４には、３辺の分割数Ｎの相互関係に応じた分割パターンを、分割図によって示している。
第１の３辺形分割パターンは、３辺の分割数がＮ，Ｎ×ａ１，Ｎ×ａ２（Ｎは１より大きい２のべき乗）の関係にある場合である。ここで、ａ１，ａ２は、２のべき乗である。すなわち、３辺を同じ分割数Ｎで分割できる場合である。この場合、分割図に示すように、分割数Ｎに応じてパラメータ３次式で表現された各辺の分割点の座標と分割点の法線ベクトルが求められ、さらに３辺形の中間分割線が求められる。そして、中間分割線により元の３辺形が多数の３辺形に分割される。
第２の３辺形分割パターンは、３辺の分割数が１，Ｎ，Ｎ×ａ３（Ｎは１より大きい２のべき乗）の関係にある場合である。ここで、ａ３は、２のべき乗である。すなわち、分割数が１より大きい２辺を同じ分割数Ｎで分割できる場合である。この場合、分割図に示すように、パラメータ３次式で表現された分割すべき２辺に関して、分割数Ｎに応じて分割点の座標と分割点の法線ベクトルが求められ、さらに３辺形の中間分割線が求められる。そして、中間分割線により元の３辺形が多数の３辺形に分割される。
第３の３辺形分割パターンは、３辺の分割数が１，１、Ｎ（Ｎは１より大きい２のべき乗）の関係にある場合である。すなわち、１辺のみを分割する場合である。この場合、分割図に示すように、パラメータ３次式で表現された分割すべき１辺に関して、分割数Ｎに応じて分割点の座標と分割点の法線ベクトルが求められ、さらに３辺形の中間分割線が求められる。そして、中間分割線により元の３辺形が多数の３辺形に分割される。
第４の３辺形分割パターンは、３辺の分割数が全て１の場合である。この場合、元の３辺形は分割されない。
以上のような４パターン（第４の３辺形分割パターンでは分割は行われないため、実質３パターン）の分割を段階的に繰り返すことで、各辺の実分割数に応じて３辺形が分割される。なお、３辺形を分割する場合に採用する優先順は、第１の分割パターン、第２の分割パターン、第３の分割パターンの順番である。
図１５は、３辺形分割パターン決定処理の手順を示すフローチャートである。この処理は、図１１のステップＳ３２の処理である。なお、図１１では、ステップＳ３５において、細分割処理が再帰的に実行されることで多段階の分割が行われる（１段階で１つの分割パターンによる分割が行われる）が、図１５では、分割方法を分かり易く説明するために、多段階の分割処理を一連のフローチャートで示している。以下、図１５に示す処理をステップ番号に沿って説明する。
［ステップＳ５１］細分割部１１６は、実分割数の小さい順に、辺を並べ替える（ソートする）。ここで、実分割数の小さい順に、各辺の分割数をｉ，ｊ，ｋとする（ｉ≦ｊ≦ｋ）。
［ステップＳ５２］細分割部１１６は、ｉが１より大きいか否かを判断する。ｉが１より大きい場合には、処理がステップＳ５３に進められる。ｉが１以下の場合には、処理がステップＳ５５に進められる。
［ステップＳ５３］細分割部１１６は、３辺形の第１の分割パターンによって、各辺を（ｉ，ｉ，ｉ）で分割する。
［ステップＳ５４］細分割部１１６は、ｉ，ｊ，ｋの値を更新する。具体的には、ｊ／ｉの値を、新たにｊに設定する。ｋ／ｉの値を、新たにｋに設定する。ｉに１を設定する。
［ステップＳ５５］細分割部１１６は、ｊが１より大きいか否かを判断する。ｊが１より大きい場合には、処理がステップＳ５６に進められる。ｊが１以下の場合には、処理がステップＳ５８に進められる。
［ステップＳ５６］細分割部１１６は、３辺形の第２の分割パターンによって、各辺を（１，ｊ，ｊ）で分割する。
［ステップＳ５７］細分割部１１６は、ｊ，ｋの値を更新する。具体的には、ｋ／ｊの値を、新たにｋに設定する。ｊに１を設定する。
［ステップＳ５８］細分割部１１６は、ｋが１より大きいか否かを判断する。ｋが１より大きい場合には、処理がステップＳ５９に進められる。ｋが１以下の場合には、処理が図１１のステップＳ３４に進められる。
［ステップＳ５９］細分割部１１６は、３辺形の第３の分割パターンによって、各辺を（１，１，ｋ）で分割する。その後、処理が図１１のステップＳ３４に進められる。
以上のようにして、３辺形の面の分割パターンが、各辺の実分割数に応じて決定することができる。分割パターンが決定された後、図１１のステップＳ３４，Ｓ３５によって、３辺形が細分割される。
たとえば、３辺形の各辺に関して式（５）による実分割数を計算したとき、それぞれ、（５，２１，１２）の結果を得た場合を考える。これらの値は、２のべき乗に切り上げられ（８，３２，１６）となる。そして、各辺の分割数を、値の小さい順にソートすると、ｉ＝８、ｊ＝１６、ｋ＝３２（８，１６，３２）となる。
まず、ｉが１より大きいため、第１の分割パターンで分割される。すると、各辺が８分割される。これにより、ｉ，ｊ，ｋの値が更新され、（１，２，４）となる。
次に、ｊが１より大きいため、第２の分割パターンで分割される。すると、ｊとｋとに対応する辺が２分割される。これにより、各３辺形がさらに複数の３辺形に分割される。そして、ｊ，ｋの値が更新され、（１，１，２）となる。
最後に、ｋが１より大きいため、第３のパターンで分割される。すると、ｋに対応する辺が２分割される。これにより、各３辺形が複数の３辺形に分割される。
このようにして、３辺形を分割することができる。
［４辺形分割パターン決定処理］
次に、４辺形の分割パターン決定処理について詳しく説明する。本実施の形態では、全ての辺の分割数が２のべき乗となっていることから、全ての４辺形は、４種類の分割パターンの組み合わせによって分割することができる。
図１６は、４辺形の分割パターンの種別を示す図である。図１６には、４辺の分割数Ｎの相互関係に応じた分割パターンを、分割図によって示している。
第１の分割パターンは、対向する辺同士を組にしたときに、４辺の分割数が（Ｍ，Ｍ×ｂ１），（Ｎ，Ｎ×ｂ２）（Ｍ，Ｎは１より大きい２のべき乗）の関係にある場合である（括弧内の２つの値が、互いに組となった２つの辺の分割数である）。ここで、ｂ１、ｂ２は、２のべき乗である。すなわち、対向する辺同士を同じ分割数で分割できる場合である。この場合、分割図に示すように、対向する辺の一方の組がＭで分割され、他方の組がＮで分割される。その結果、元の４辺形が複数の４辺形に分割される。
第２の分割パターンは、対向する辺同士を組にしたときに、４辺の分割数が（１，Ｍ），（１，Ｎ）（Ｍ，Ｎは１より大きい２のべき乗）の関係にある場合である。ここで、Ｍ≦Ｎの関係にあるものとする。すなわち、対向する辺の一方の辺を分割する場合である。この場合、分割図に示すように、４辺の内の隣ある２辺が分割対象である。ここで、分割対象の２つの辺が共有する端点から、その端点に対向する端点へ対角線が引かれる。４辺形は、対角線によって２つの３辺形に分割される。対角線の分割数をＮとすることで、生成された３つの３辺形を、３辺形の分割パターンに従って分割することができる。具体的には、生成される３辺形は、第３のパターンと第４のパターンとに分けられる。
第３の分割パターンは、３辺形の２辺を、それぞれＮ，Ｍに分割する場合である。この３辺形は、３辺形の第２の分割パターンと第３の分割パターンとの組み合わせにより、分割することができる。
第４の分割パターンは、３辺形の２辺を、それぞれＮ，Ｎに分割する場合である。この３辺形は、３辺形の第２の分割パターンによって分割することができる。
以上のような分割パターンに従って４辺形を分割することができる。
図１７は、４辺形分割パターン決定処理の手順を示すフローチャートである。この処理は、図１１のステップＳ３３の処理である。なお、図１１では、ステップＳ３５において、細分割処理が再帰的に実行されることで多段階の分割が行われる（１段階で１つの分割パターンによる分割が行われる）が、図１７では、分割方法を分かり易く説明するために、多段階の分割処理を一連のフローチャートで示している。以下、図１７に示す処理をステップ番号に沿って説明する。
［ステップＳ６１］細分割部１１６は、対辺を組にする。そして、同じく組となった２つの辺の分割数の比（大きい方の分割数／小さい方の分割数）を、組同士で比較する。そして、分割数の比が小さい方から順に、各組の辺を並べる。同じ組の中の辺同士では、分割数の小さい順に並べる。このとき並べられた各辺の分割数を、配列の順にｉ，ｊ，ｋ，ｌとする。分割数ｉの辺とｊの辺とが組を構成し、分割数ｋの辺とｌの辺とが組を構成する。このとき、ｉ≦ｊ、ｋ≦ｌ、ｊ／ｉ≦ｌ／ｋの関係となる。
［ステップＳ６２］細分割部１１６は、ｉとｋとの少なくとも一方が１より大きいか否かを判断する。いずれか一方が１より大きければ、処理がステップＳ６３に進められる。両方とも１以下であれば、処理がステップＳ６５に進められる。
［ステップＳ６３］細分割部１１６は、第１の４辺形分割パターンにより、４辺形を分割する。すなわち、分割数ｉ、ｊとの辺はｉで分割され、分割数ｋ、ｌとの辺はｋで分割される。
［ステップＳ６４］細分割部１１６は、ｉ，ｊ，ｋ，ｌの値を更新する。具体的には、ｊ／ｉの値を新たにｊに設定する。ｌ／ｋの値を新たにｌに設定する。ｉに１を設定する。ｋに１を設定する。
［ステップＳ６５］細分割部１１６は、第２の４辺形分割パターンに基づいて、ステップＳ６３による分割で生成された４辺形を２分割する。これにより、各４辺形から２つの３辺形が生成される。
［ステップＳ６６］細分割部１１６は、ステップＳ６５で生成された３辺形を１つ選択する。
［ステップＳ６７］細分割部１１６は、ステップＳ６６で選択した３辺形に対して、３辺形分割パターン決定処理を行う。たとえば、選択した３辺形が、４辺形に関する第３の分割パターンに従っていれば、その３辺形は、３辺形の第２の分割パターンと第３の分割パターンによって分割パターンが決定される。また、選択した３辺形が、４辺形に関する第４の分割パターンに従っていれば、その３辺形は、３辺形の第２の分割パターンによって分割パターンが決定される。
［ステップＳ６８］細分割部１１６は、ステップＳ６５で生成された全ての３辺形を分割したか否かを判断する。全ての３辺形の分割パターン決定処理が終了した場合には、処理が図１１のステップＳ３４に進められる。未処理の３辺形があれば、処理がステップＳ６６に進められる。
以上のようにして、４辺形の面の分割パターンを、各辺の実分割数に応じて決定することができる。分割パターンが決定された後、図１１のステップＳ３４，Ｓ３５によって、４辺形が細分割される。
たとえば、３辺形の各辺に関して式（５）による実分割数を計算したとき、それぞれ、（６，２，１２，７）の結果を得た場合を考える。ここで、分割数６の辺と分割数２の辺とが対向する辺であり、分割数１２の辺と分割数７の辺とが対向する辺である。これらの値は、２のべき乗に切り上げられ（８，２，１６，８）となる。そして、分割数の比が小さい方の組を先にして、各組内での各辺を、分割数の小さい順にソートすると、ｉ＝８，ｊ＝１６，ｋ＝２，ｌ＝８（８，１６，２，８）となる。
まず、ｉとｋが１より大きいため、４辺形の第１の分割パターンで分割される。すると、分割数ｉの辺とｊの辺とが８分割される。同様に、分割数ｋの辺とｊの辺とが２分割される。これにより、ｉ，ｊ，ｋ，ｌの値が更新され、（１，２，１，４）となる。
次に、第２の分割パターンによって、第１の分割パターンによる分割で生成された各４辺形が、対角線で２分割される。対角線に対しては、ｌの値と同じ分割数が設定される。これにより、（１，ｊ，ｌ）の分割数の３辺形と、（１，ｌ，ｌ）の分割パターンの３辺形とに分けられる。すなわち、（１，２，４）の分割パターンの３辺形と（１，４，４）の分割パターンの辺形が生成される。
分割数（１，２，４）の３辺形に関しては、ｊ（＝２）が１より大きいため、３辺形の第２の分割パターンで分割される。すると、ｊとｌとに対応する辺が２分割される。これにより、３辺形がさらに複数の３辺形に分割される。そして、ｊ，ｌの値が更新され、（１，１，２）となる。そして、ｌが１より大きいため、３辺形の第３のパターンで分割される。すると、ｌに対応する辺が２分割される。
分割数（１，４，４）の３辺形に関しては、ｌ（＝４）が１より大きいため、３辺形の第２の分割パターンで分割される。すると、ｌに対応する辺が４分割される。これにより、３辺形がさらに複数の３辺形に分割される。
以上のようにして、４辺形が複数の３辺形に分割される。
［パラメータ３次式決定法］
辺を分割する場合、その辺の端点に対して設定されている法線ベクトルに応じてパラメータ３次式が決定される。そして、辺の曲線を定義したパラメータ３次式におけるパラメータｔ（０≦ｔ≦１）に、０．５を設定することで、その辺の中点を求める。なお、パラメータ３次式の決定法は、立体形状における面同士の隣接関係に応じて異なる。
・第１の隣接関係は、隣接する面同士が滑らかに接続している場合である。この場合、法線ベクトルから接線ベクトルを経由して求める方法と、法線ベクトルから２次微分ベクトルを仮定して求める方法がある。
・第２の隣接関係は、隣接する面同士が共有する辺で折れている場合である。
・第３の隣接関係は、辺の形状を強制的に指示する必要がある場合である。
以下、面同士の隣接関係に応じた、パラメータ３次式の決定法について説明する。
［隣接する面同士が滑らかに接続している場合］
図１８は、隣接する面同士が滑らかに接続している立体形状の一例を示す図である。図に示すように、立体形状７１は、互いに隣接する面Ｆ１ａ，Ｆ１ｂを有している。隣接する面Ｆ１ａ，Ｆ１ｂが辺Ｓ１（ｔ）を共有し、さらに辺Ｓ１（ｔ）の両端点における法線ベクトルＮ１０，Ｎ１１も隣接する面Ｆ１ａ，Ｆ１ｂ同士が共有する。この場合、この２つの隣接する面Ｆ１ａ，Ｆ１ｂは、辺Ｓ１（ｔ）において滑らかに接続されていると判断される。
このような場合、以下の２つの方法の何れかでパラメータ３次式を決定することができる。
まず、法線ベクトルから接線ベクトルを経由してパラメータ３次式を求める方法について説明する。
この方法では、両端点の座標Ｐ１０，Ｐ１１、両端点における法線ベクトルＮ１０，Ｎ１１、及び接線の長さｒ１０，ｒ１１を与え、接線ベクトルＴ１０，Ｔ１１を決定する。なお、端点座標、法線ベクトル、および接線の長さは、立体構造データ記憶部１２０内の端点情報において定義されている。
この場合、接線ベクトルＴ１０は、法線ベクトルＮ１０に垂直で、座標Ｐ１０から座標Ｐ１１の方向に最も近い方向を向いた、長さｒ１０のベクトルである。また、接線ベクトルＴ１１は、法線ベクトルＮ１１に垂直で、座標Ｐ１０から座標Ｐ１１の方向に最も近い方向を向いた、長さｒ１１のベクトルである。
式で示すと以下の通りとなる。
Ｔ１０＝ｒ１０・Ｎ１０×（Ｐ１１−Ｐ１０）×Ｎ１０／｜Ｎ１０×（Ｐ１１−Ｐ１０）×Ｎ１０｜
・・・（８）
Ｔ１１＝ｒ１１・Ｎ１１×（Ｐ１１−Ｐ１０）×Ｎ１１／｜Ｎ１１×（Ｐ１１−Ｐ１０）×Ｎ１１｜
・・・（９）
式（８）、式（９）において、“×”はベクトルの外積を示しており、“・”はスカラー値（ｒ０やｒ１）の乗算を示している。
次に、両端点の座標（Ｐ１０，Ｐ１１）及び両端点における接線ベクトル（Ｔ１０，Ｔ１１）を用いて、以下の４つのベクトル式を満たしたパラメータ３次式Ｓ１（ｔ）を決定する。
Ｓ１（ｔ＝０）＝Ｐ１０
Ｓ１（ｔ＝１）＝Ｐ１１
ｄＳ１／ｄｔ（ｔ＝０）＝Ｔ１０
ｄＳ１／ｄｔ（ｔ＝１）＝Ｔ１１
・・・（１０）
このように、端点での条件を決定することで、３次元区間内の曲線を決定することができる。たとえば、ファーガソン曲線を算出することができる。
次に、法線ベクトルから２次微分ベクトルを仮定してパラメータ３次式を求める方法について説明する。
図１９は、２次微分ベクトルを用いて決定されたパラメータ３次式の一例を示す図である。図１９に示すように、両端点における２次微分ベクトルＷ２０，Ｗ２１が、両端点における法線ベクトルＮ２０，Ｎ２１と方向が近似している（正負反対の場合も含む）と仮定（弧長媒介変数による２次微分ではないので一致しない）することができる。このとき、法線ベクトルＮ２０，Ｎ２１にベクトルの大きさｒ２０，ｒ２１を乗じたベクトルを２次微分ベクトルＷ２０，Ｗ２１とする。
なお、法線ベクトルＮ２０，Ｎ２１は常に面の表を向いているため、ベクトルの大きさｒ２０，ｒ２１を与える時に、必要に応じて負の値とすることで２次微分方向に合わせる。たとえば、曲線が、立体形状の表方向に凸であれば、ベクトルの大きさｒ２０，ｒ２１を負の値とする。逆に、曲線が、立体形状の表方向に凹であれば、ベクトルの大きさｒ２０，ｒ２１を正の値とする。なお、ベクトルの大きさｒ２０，ｒ２１は、図６に示す端点情報４２６の接線定義情報４２６ｃ内に予め設定される。
２次微分ベクトルＷ２０，Ｗ２１は、それぞれ法線ベクトルＮ２０，Ｎ２１と平行で、長さと向きがｒ２０，ｒ２１で示されるベクトルと近似する。これを式で示すと以下の通りとなる。
Ｗ２０＝ｒ２０・Ｎ２０
・・・（１１）
Ｗ２１＝ｒ２１・Ｎ２１
・・・（１２）
両端点の座標Ｐ２０，Ｐ２１、及び両端点における２次微分ベクトルＷ２０，Ｗ２１を用いて、以下の４つのベクトル式からパラメータ３次式Ｓ２（ｔ）を決定する。
Ｓ２（ｔ＝０）＝Ｐ２０
Ｓ２（ｔ＝１）＝Ｐ２１
ｄ2Ｓ２／ｄｔ2（ｔ＝０）＝Ｗ２０
ｄ2Ｓ２／ｄｔ2（ｔ＝１）＝Ｗ２１
・・・・（１３）
このような条件を満たしたパラメータ３次式Ｓ２（ｔ）が決定される。
［隣接する面同士が共有する辺で折れている場合］
次に、隣接する面同士が共有する辺で折れている場合のパラメータ３次式の決定方法について説明する。
図２０は、隣接する面同士が共有する辺で折れている立体形状の一例を示す図である。図２０に示す立体形状７２は、面Ｆ３ａと面Ｆ３ｂとが辺Ｓ３（ｔ）で隣接している。面Ｆ３ａの法線ベクトルＮ３０ａ，Ｎ３１ａには、辺Ｓ３（ｔ）を湾曲させる成分を持っていない。一方で隣接関係にある面Ｆ３ｂの法線ベクトルＮ３０ｂ，Ｎ３１ｂは辺Ｓ３（ｔ）を湾曲させる成分を持っている。
このように隣接する面Ｆ３ａ，Ｆ３ｂによって共有される辺Ｓ３（ｔ）の両端点の法線ベクトルが、２つの面Ｆ３ａ，Ｆ３ｂによって共有されない場合、この隣接する面Ｆ３ａ，Ｆ３ｂは共有される辺Ｓ３（ｔ）で折れていると判断される。この場合、４本の法線ベクトルを用いて接線ベクトルの方向を決定する。
接線ベクトルＴ３０は法線ベクトルＮ３０ａ，Ｎ３０ｂの外積の方向で、長さはｒ３０のベクトルである。同様に、接線ベクトルＴ３１は法線ベクトルＮ３１ａ，Ｎ３１ｂの外積の方向で、長さはｒ３１のベクトルである。なお、長さｒ３０は、端点３０に定義された接線の長さであり、長さｒ３１は、端点３１に定義された接線の長さである。これを式で示すと以下の通りとなる。
Ｔ３０＝ｒ３０・Ｎ３０ａ×Ｎ３０ｂ／｜Ｎ３０ａ×Ｎ３０ｂ｜
・・・（１４）
Ｔ３１＝ｒ３１・Ｎ３１ａ×Ｎ３１ｂ／｜Ｎ３１ａ×Ｎ３１ｂ｜
・・・（１５）
次に、両端点の座標（Ｐ３０，Ｐ３１）、及び両端点における接線ベクトル（Ｔ３０，Ｔ３１）を用いて、以下の４つのベクトルを満たしたパラメータ３次式Ｓ３（ｔ）を決定する。
Ｓ３（ｔ＝０）＝Ｐ３０
Ｓ３（ｔ＝１）＝Ｐ３１
ｄＳ３／ｄｔ（ｔ＝０）＝Ｔ３０
ｄＳ３／ｄｔ（ｔ＝１）＝Ｔ３１
・・・（１６）
［辺の形状を強制的に指示する必要がある場合］
次に、辺の形状を強制的に指示する必要がある場合について説明する。
図２１は、辺の形状を強制的に指示された立体形状の一例を示す図である。図２１に示す立体形状７３は、面Ｆ４ａと面Ｆ４ｂとが隣接している。隣接する面Ｆ４ａ，Ｆ４ｂが辺Ｓ４（ｔ）を共有し、さらに辺Ｓ４（ｔ）の両端点における法線ベクトルＮ４０，Ｎ４１も隣接する面Ｆ４ａ，Ｆ４ｂによって共有される。この場合、この２つの隣接する面Ｆ４ａ，Ｆ４ｂは辺Ｓ４（ｔ）において滑らかに接続されていると判断されるが、法線ベクトルＮ４０，Ｎ４１には辺Ｓ４（ｔ）を湾曲させる成分を持っていない。
そういった場合においても辺Ｓ４（ｔ）を強制的に湾曲させる必要があれば接線ベクトルＴ４０，Ｔ４１を直接与える。
両端点の座標Ｐ４０，Ｐ４１、及び両端点における接線ベクトルＴ４０，Ｔ４１を用いて、以下の式を満たすパラメータ３次式Ｓ４（ｔ）を決定する。
Ｓ４（ｔ＝０）＝Ｐ４０
Ｓ４（ｔ＝１）＝Ｐ４１
ｄＳ４／ｄｔ（ｔ＝０）＝Ｔ４０
ｄＳ４／ｄｔ（ｔ＝１）＝Ｔ４１
・・・（１７）
以上のようにして、立体形状を構成する辺のパラメータ３次式を決定することができる。
［辺上の任意の中間座標と法線ベクトルの求め方］
辺の曲線を定義したパラメータ３次式が決定されると、先に決定された分割パターンに従って、辺が分割される。分割された辺の端点には、新たに端点の位置と法線ベクトルとを定義する必要がある。以下、中間点における座標（中間座標）と法線ベクトルとの算出方法について説明する。
［中間座標の求め方］
中間座標の求め方を、図２２を参照して説明する。
図２２は、分割対象の面の一例を示す図である。図２２の例では、分割される面８１は３辺形である。面８１は、端点Ｐ５０，Ｐ５１を有する辺８１ａ、端点Ｐ５１，Ｐ５２を有する辺８１ｂ、端点Ｐ５２，Ｐ５０を有する辺８１ｃで構成されている。端点Ｐ５０での法線ベクトルがＶ５０、接線ベクトルがＮ５０である。端点Ｐ５１での法線ベクトルがＶ５１、接線ベクトルがＮ５１である。
パラメータ３次式の決定法に従い端点Ｐ５０から端点Ｐ５１を結ぶ辺８１ａのパラメータ３次式Ｓ５（ｔ）が決定されている場合、辺８１ａ上の任意の点であるＰｃは、パラメータ３次式Ｓ５（ｔ）のｔ値（中点ならｔ＝０．５）を定めることにより決定される。
次に、中間点の法線ベクトルの求め方について、図２２を参照して説明する。
任意の中間点における法線ベクトルの決定法としては、以下の４通りの決定法が考えられる。
第１の方法は、中間点の法線ベクトルＮｃがＮ５０からＮ５１に線形変化していると想定する方法である。その計算式は、以下の通りである。
Ｎｃ＝（１−ｔ）Ｎ５０＋（ｔ）Ｎ５１
・・・（１８）
第２の方法は、中間点の法線ベクトルＮｃがＮ５０からＮ５１に線形変化し、中間点の接線ベクトルＶｃと直交していると想定する方法である。その計算式は、以下の通りである。
Ｎｃ＝Ｖｃ×（Ｎ５０＋Ｎ５１）×Ｖｃ
・・・（１９）
第３の方法は、中間点の法線ベクトルＮｃが、Ｎ５０方向からＮ５１方向に回転していると想定する方法である。その計算式は、以下の通りである。
Ｎｃ＝Ｖｃ×Ｎ５０×Ｎ５１
・・・（２０）
但し、Ｎ５０×Ｎ５１＝０の場合の計算式は、以下の通りである。
Ｎｃ＝Ｖｃ×Ｎ５０×Ｖｃ
・・・（２１）
第４の方法は、中間点の法線ベクトルＮｃが、Ｎ０方向からＮ１方向に３次で変化していると想定する方法である。その計算式は、以下の通りである。
Ｎｃ＝−２（Ｎ５１−Ｎ５０）ｔ3＋３（Ｎ５１−Ｎ５０）ｔ2＋Ｎ５０
・・・（２２）
式（１８）〜（２２）で得られたベクトルＮｃを単位ベクトルに正規化したものが、中間点の法線ベクトルとなる。
［３辺形の任意中間曲線の計算方法］
３辺形を分割すると、元の３辺形内に新たな辺が生成される。そのとき、生成された辺の曲線式を計算する必要がある。
図２３は、分割される３辺形を含む立体形状の一例を示す図である。図２３の例では、円柱の立体形状８２が示されている。立体形状８２の側面が、複数の３辺形で構成される。側面に含まれる１つの３辺形８２ａは、端点Ｐ６０，Ｐ６１，Ｐ６２を有している。ハイブリッドメッシュデータにおいて定義されている３辺形８２ａは、たとえば、画像で表示するときに複数の３辺形に分割される。
ここで、辺８２ｂａ上の中間点の座標Ｐ７０と法線ベクトルＮ７０、および辺８２ｂｂ上の中間点の座標Ｐ７１と法線ベクトルＮ７１を用いて、２つの辺８２ｂａ，８２ｂｂの中間点同士を結ぶ辺８２ｃａのパラメータ３次式を求めることができる。この際、パラメータ３次式の決定法としては、たとえば、隣接する面同士が滑らかに接続している場合の決定法により求める。
但し、座標Ｐ７０での接線の長さｒ７０と、座標Ｐ７１での接線の長さｒ７１とは、以下の式で求める。
ｒ７０＝ｒ６０×｜Ｐ７１−Ｐ７０｜／｜Ｐ６１−Ｐ６０｜
・・・（２３）
ｒ７１＝ｒ６１×｜Ｐ７１−Ｐ７０｜／｜Ｐ６１−Ｐ６０｜
・・・（２４）
なお、ｒ６０は、端点Ｐ６０での接線の長さであり、ｒ６１は端点Ｐ６１での接線の長さである。
［３辺形の任意中間曲線の計算方法（他の案）］
他の３辺形の任意中間曲線の計算方法もある。
図２４は、分割される３辺形の一例を示す図である。図２４の三辺形８３について、Ｐ８０、Ｐ８１，Ｐ８２は、三辺形の頂点（３辺形を構成する辺の端点）を示す。Ｎ８０，Ｎ８１，Ｎ８２は、Ｐ８０，Ｐ８１，Ｐ８２における法線ベクトルを示す。Ｔ８１，Ｔ８２は、Ｐ８１とＰ８２とを端点とする辺の各端点における接線ベクトルを示す。Ｕ８１，Ｕ８０は、Ｐ８１とＰ８０とを端点とする辺の各端点における接線ベクトルを示す。Ｖ８２，Ｖ８０は、Ｐ８２とＰ８０とを端点とする辺の各端点における接線ベクトルを示す。
ここで、内部で生成される情報として、ｅ８０，ｅ８１，ｅ８２がある。ｅ８０，ｅ８１，ｅ８２は、三角形を形成する辺を示し、パラメータ３次式で示される。
ここで、内部中間曲線ｅ８３を、以下の方法で求める。
［ＳＴ１］ｅ８２上を、Ｐ８０からＰ８１に向かって、ｕ（０＜ｕ＜１）だけ進んだ点Ｐ８３を求める。
［ＳＴ２］Ｐ８３におけるｅ８２の接線ベクトルＵ８３を求める。
［ＳＴ３］Ｐ８３における法線ベクトルＮ８３を求める。
［ＳＴ４］Ｐ８３においてＵ８３，Ｎ８３，Ｔ８３の方向関係が、Ｐ８１におけるＵ８１，Ｎ８１，Ｔ８１の関係と等しくなる接線ベクトルＴ８３を求める。
［ＳＴ５］接線ベクトルＴ８３を求めた方法と同様に、Ｐ８２におけるＶ８２，Ｎ８２，Ｔ８２の関係と等しくなる接線ベクトルＴ８４を求める。
［ＳＴ６］接線ベクトルＴ８３，Ｔ８４から、ｅ８３のパラメータ３次式を求める。
このようにして、３辺形を分割するための境界となる辺のパラメータ３次式を求めることができる。
［４辺形の内部中間座標と法線ベクトルの求め方］
次に、４辺形の内部中間座標と法線ベクトルの求め方について説明する。
まず、図２５を参照して４辺形の任意中間座標の求め方について説明する。
図２５は、分割される４辺形の一例を示す図である。ここで、４辺形８４を表す式を、Ｓ９（ｕ，ｖ）とする。４辺形８４がＣｏｏｎ’ｓ曲面とすると、図２５のように各端点における座標Ｐ９０〜Ｐ９３とｕ方向ベクトルＵ９０〜Ｕ９３、ｖ方向ベクトルＶ９０〜Ｖ９３を用いて以下のベクトル式で示せる。
Ｓ９（ｕ＝０，ｖ＝０）＝Ｐ９０
Ｓ９（ｕ＝０，ｖ＝１）＝Ｐ９１
Ｓ９（ｕ＝１，ｖ＝０）＝Ｐ９２
Ｓ９（ｕ＝１，ｖ＝１）＝Ｐ９３
・・・（２５）
∂Ｓ９／∂ｕ（ｕ＝０，ｖ＝０）＝Ｕ９０
∂Ｓ９／∂ｕ（ｕ＝０，ｖ＝１）＝Ｕ９１
∂Ｓ９／∂ｕ（ｕ＝１，ｖ＝０）＝Ｕ９２
∂Ｓ９／∂ｕ（ｕ＝１，ｖ＝１）＝Ｕ９３
・・・（２６）
∂Ｓ９／∂ｖ（ｕ＝０，ｖ＝０）＝Ｖ９０
∂Ｓ９／∂ｖ（ｕ＝０，ｖ＝１）＝Ｖ９１
∂Ｓ９／∂ｖ（ｕ＝１，ｖ＝０）＝Ｖ９２
∂Ｓ９／∂ｖ（ｕ＝１，ｖ＝１）＝Ｖ９３
・・・（２７）
これらの式を連立させて解くことにより、Ｓ９（ｕ，ｖ）が求まり、（ｕ＝ｕ０，ｖ＝ｖ０）で示される任意点の座標Ｐは、Ｐ＝Ｓ９（ｕ＝ｕ０，ｖ＝ｖ０）で与えられる。
次に、４辺形の任意中間点における法線ベクトルの決定法について説明する。（ｕ＝ｕ０，ｖ＝ｖ０）で示される任意点Ｐにおける法線ベクトルは、ｕ方向接線ベクトル∂Ｓ９／∂ｕ（ｕ＝ｕ０，ｖ＝ｖ０）と、ｖ方向接線ベクトル∂Ｓ９／∂ｖ（ｕ＝ｕ０，ｖ＝ｖ０）との外積で与えられる。
以上のような処理を行うことで、ハイブリッドメッシュデータに基づいた立体形状の画面表示が可能となる。
［画面表示例］
以下、図２６〜図３０を参照して、立体形状の画面表示例について説明する。本実施の形態では、立体形状を構成する辺のみを画面表示することもできる。辺のみを画面表示することで、立体形状の構造を画面上で視覚的に容易に認識することができる。
例として、球体の立体形状を３次元ＣＡＤで作成した場合について説明する。球体を示すＣＡＤデータは、ＣＡＤデータ変換部１１４によって、ハイブリッドメッシュデータに変換される。球体をハイブリッドメッシュデータに変換すると、たとえば、８つの３辺形からなる８面体で表現される。
図２６は、ハイブリッドメッシュデータで定義されている立体形状の辺を表示した画面例を示す図である。図２６の画面には、８面体の立体形状をハイブリッドメッシュデータで定義したときの立体形状の辺が表示されている（ワイヤーフレームだけを表示）。このような構造を定義したハイブリッドメッシュデータを任意の精度で細分割して、立体形状を画面に表示することができる。
たとえば、立体形状を画面内で回転させている場合や、表示倍率が表示に小さい場合には、ハイブリッドメッシュデータの細分割を行わずに立体形状が表示される。
図２７は、ハイブリッドメッシュデータで定義されている立体形状を表示した画面例を示す図である。この画面には、図２６に示した構造のハイブリッドメッシュデータをそのまま（細分割を行わずに）表示したときの立体形状が表示されている。図２７の例では、細分割を行っていないため、８つの面で立体形状が表現されている。これにより、立体形状を高速に画面表示することができる。
一方、表示倍率を上げて、静止した立体形状を画面表示する場合には、ハイブリッドメッシュデータの細分割が行われる。細分割によって、球体を表す立体形状が大量の面で再現される。
図２８は、ハイブリッドメッシュデータを細分割したときの立体形状の辺を表示した画面例を示す図である。図２８に示す画面には、ハイブリッドメッシュデータの細分割が行われることで、多数の面で構成された球体が表示される（ワイヤーフレームだけを表示）。
図２８に示すような構成に分割されたデータにも基づいて立体形状を表示すれば、３次元ＣＡＤで作成したときの球体と同様の見栄えの立体形状を表示することができる。
図２９は、ハイブリッドメッシュデータを細分割したときの立体形状を表示した画面例を示す図である。図２９に示すように、画面には、細分割を行うことにより、ほとんど球体に見える立体形状が表示される。
ハイブリッドメッシュデータは、元のＣＡＤデータに比べてデータ容量が少ないため、元の立体形状を詳細に再現する場合であっても、ＨＤＤ１０３などの記憶容量が少なくてすむ。また、細分割によってポリゴンデータが生成される毎に３次元表示用ＡＰＩ１４０に渡されるため、細分割後のポリゴンデータをＲＡＭ１０２に格納する必要がなく、ＲＡＭ１０２の使用量を低減することができる。すなわち、少ない記憶容量のＲＡＭ１０２であっても、ＣＡＤで作成された立体形状を表示させることができる。
ところで、立体形状を画面表示するには、各面の端点に定義されている法線ベクトルを用いて、グーローシェーディングを行うことができる。グーローシェーディングを行うことで、立体形状を構成する１つの面が平面ポリゴンで表示されていても、各面の境界を滑らかに表現することができる。なお、本実施の形態では、法線ベクトルとして単位ベクトルを用いているため、一般的なグーローシェーディングにそのまま利用することができる。
また、立体形状を表示するために必要な資源や処理負荷が少なくてすむことにより、非常に複雑な立体形状であっても、容易に画面表示することができる。たとえば、ネットワークを介したコラボレーションシステム上でＣＡＤを用いた自動車の設計を行い、自動車の構造を表す立体形状を、各共同作業者がネットワークを介して参照することも可能である。
図３０は、自動車の立体形状の表示画面例を示す図である。図３０に示す画面には、自動車のエンジンルームの構造が表示されている。このように複雑な構造の立体形状であっても、各コンピュータで容易に表示させることができる。
以上のようにして、複雑な立体形状を少ない処理負荷で画面表示することができる。
なお、図１０に示したように、本実施の形態ではフェース毎に視点と立体形状との相対位置の変化の有無を判断しているが、立体形状（オブジェクト）毎に相対位置の変化の有無を判断してもよい。その場合、ステップＳ２３の処理に代えて、たとえば、ステップＳ１４とステップＳ１５との間に、視点と立体形状の基準位置との相対位置の変化の有無を判断する処理が行われる。相対位置が変化していれば、処理をステップＳ１８に進め、相対位置が変化していなければ処理をステップＳ１５に進める。
また、仮想３次元空間内で視点だけが移動可能な場合などには、視点と立体形状との相対位置の変化の有無を判断する代わりに、視点の移動の有無を判断してもよい。その場合、ステップＳ２３の処理に代えて、たとえば、ステップＳ１３とステップＳ１４との間に視点の移動の有無を判断する処理が行われる。視点が移動していれば、全てのオブジェクトに関して生データ表示処理（ステップＳ１８）を行い、処理を終了する。視点が移動していなければ、処理をステップＳ１４に進める。
このように、表示画面中でオブジェクトが動くか否かの判断処理を単純化することで、処理の高速化を図ることができる。
なお、上記の処理機能は、コンピュータによって実現することができる。その場合、コンピュータが有すべき機能の処理内容を記述したプログラムが提供される。そのプログラムをコンピュータで実行することにより、上記処理機能がコンピュータ上で実現される。処理内容を記述したプログラムは、コンピュータで読み取り可能な記録媒体に記録しておくことができる。コンピュータで読み取り可能な記録媒体としては、磁気記録装置、光ディスク、光磁気記録媒体、半導体メモリなどがある。磁気記録装置には、ハードディスク装置（ＨＤＤ）、フレキシブルディスク（ＦＤ）、磁気テープなどがある。光ディスクには、ＤＶＤ(Digital Versatile Disc)、ＤＶＤ−ＲＡＭ(Random Access Memory)、ＣＤ−ＲＯＭ(Compact Disc Read Only Memory)、ＣＤ−Ｒ(Recordable)／ＲＷ(ReWritable)などがある。光磁気記録媒体には、ＭＯ(Magneto-Optical disc)などがある。
プログラムを流通させる場合には、たとえば、そのプログラムが記録されたＤＶＤ、ＣＤ−ＲＯＭなどの可搬型記録媒体が販売される。また、プログラムをサーバコンピュータの記憶装置に格納しておき、ネットワークを介して、サーバコンピュータから他のコンピュータにそのプログラムを転送することもできる。
プログラムを実行するコンピュータは、たとえば、可搬型記録媒体に記録されたプログラムもしくはサーバコンピュータから転送されたプログラムを、自己の記憶装置に格納する。そして、コンピュータは、自己の記憶装置からプログラムを読み取り、プログラムに従った処理を実行する。なお、コンピュータは、可搬型記録媒体から直接プログラムを読み取り、そのプログラムに従った処理を実行することもできる。また、コンピュータは、サーバコンピュータからプログラムが転送される毎に、逐次、受け取ったプログラムに従った処理を実行することもできる。
以上説明したように本発明では、立体形状データに予め定義された面の頂点の位置と頂点における法線方向とに基づいて曲面形状を決定し、その曲面形状に沿った複数の面に分割して立体形状を表示するようにしたため、少ないデータ量の立体形状データから高精度の立体形状を表示させることができる。
上記については単に本発明の原理を示すものである。さらに、多数の変形、変更が当業者にとって可能であり、本発明は上記に示し、説明した正確な構成および応用例に限定されるものではなく、対応するすべての変形例および均等物は、添付の請求項およびその均等物による本発明の範囲とみなされる。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】図面の簡単な説明
【補正方法】変更
【補正の内容】
【図面の簡単な説明】
図１は、本実施の形態に適用される発明の概念図である。
図２は、本発明の実施の形態のシステム構成図である。
図３は、本発明の実施の形態に用いるコンピュータのハードウェア構成例を示す図である。
図４は、本発明の実施の形態の機能を示す機能ブロック図である。
図５は、立体構造データ記憶部の内部構成を示す図である。
図６は、オブジェクト情報のデータ構造例を示す図である。
図７は、立体形状の一例を示す図である。図７（Ａ）と図７（Ｂ）とは立体形状の斜視図である。
図８は、オブジェクト情報の具体例を示す図である。
図９は、立体形状表示手順を示す第１のフローチャートである。
図１０は、立体形状表示手順を示す第２のフローチャートである。
図１１は、立体形状表示手順を示す第３のフローチャートである。
図１２は、空間曲線のポリライン近似の例を示す図である。
図１３は、図形の分割例を示す図である。
図１４は、３辺形の分割パターンの種別を示す図である。
図１５は、３辺形分割パターン決定処理の手順を示すフローチャートである。
図１６は、４辺形の分割パターンの種別を示す図である。
図１７は、４辺形分割パターン決定処理の手順を示すフローチャートである。
図１８は、隣接する面同士が滑らかに接続している立体形状の一例を示す図である。
図１９は、２次微分ベクトルを用いて決定されたパラメータ３次式の一例を示す図である。
図２０は、隣接する面同士が共有する辺で折れている立体形状の一例を示す図である。
図２１は、辺の形状を強制的に指示された立体形状の一例を示す図である。
図２２は、分割対象の面の一例を示す図である。
図２３は、分割される３辺形を含む立体形状の一例を示す図である。
図２４は、分割される３辺形の一例を示す図である。
図２５は、分割される４辺形の一例を示す図である。
図２６は、ハイブリッドメッシュデータで定義されている立体形状の辺を表示した画面例を示す図である。
図２７は、ハイブリッドメッシュデータで定義されている立体形状を表示した画面例を示す図である。
図２８は、ハイブリッドメッシュデータを細分割したときの立体形状の辺を表示した画面例を示す図である。
図２９は、ハイブリッドメッシュデータを細分割したときの立体形状を表示した画面例を示す図である。
図３０は、自動車の立体形状の表示画面例を示す図である。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図４
【補正方法】変更
【補正の内容】
【図４】
2003067527.tif 000035
【手続補正４】
【補正対象書類名】図面
【補正対象項目名】図１１
【補正方法】変更
【補正の内容】
【図１１】
2003067527.tif 000036
【国際調査報告】
2003067527.tif 000037
2003067527.tif 000038
2003067527.tif 000039