(57)【特許請求の範囲】
【請求項１】
物体を構成する面の面データを入力する入力手段と、
前記面データに基づいて、前記物体を構成する面の法線ベクトルを作成する面法線ベクトル作成手段と、
前記面データに基づいて、前記物体を構成する面を包含する最小体積の直方体、あるいは当該直方体と相似形状の直方体を、直方体を構成する各辺が、３次元直交座標系のＸ軸、Ｙ軸、Ｚ軸のいずれかの軸に平行になるように作成する直方体作成手段と、
作成された直方体を構成する面のうち、最も面積が大きい面を選択する最大面積ビュー面選択手段と、
前記最大面積ビュー面選択手段によって選択された面が、Ｘ、Ｙビュー、Ｙ、Ｚビュー、Ｚ、Ｘビューのいずれから見た面であるのかを判断し、Ｘ、Ｙビューであれば、＋Ｚの方向を基準ベクトルの方向に設定し、Ｙ、Ｚビューであれば、前記選択された面の凸方向を判断して凸方向である＋Ｘまたは−Ｘの方向を基準ベクトルの方向に設定し、Ｚ、Ｘビューであれば、＋Ｙの方向を基準ベクトルの方向に設定し、前記最大面積ビュー面選択手段によって選択された面の基準ベクトルを作成するビュー面基準ベクトル作成手段と、
前記面法線ベクトル作成手段によって作成された法線ベクトルと前記ビュー面基準ベクトル作成手段によって作成された基準ベクトルとの交差角度が９０度であるか否かを判断する交差角度判断手段と、
前記交差角度が９０度であれば、前記基準ベクトルの方向とは逆の方向から前記物体を見て、前記基準ベクトルとの交差角度が９０度の法線ベクトルを有する垂直面に隣接する隣接面を抽出する隣接面抽出手段と、
抽出された各隣接面の前記基準ベクトル方向の高さを比較する基準ベクトル方向高さ比較手段と、
高さが高い面から低い面に向かう方向の基準ベクトルを前記垂直面に対して作成する垂直面基準ベクトル作成手段と、
前記垂直面基準ベクトル作成手段によって作成された前記垂直面の基準ベクトルと前記垂直面の法線ベクトルとの交差角度が９０度を超えていれば、前記垂直面の法線ベクトルの方向を１８０度反転させる面法線ベクトル揃え手段とを有することを特徴とする図形表裏設定装置。
【請求項２】
前記ビュー面基準ベクトル作成手段は、前記最大面積ビュー面選択手段によって選択された面の面積に基づいて、前記物体が大物物品であるか、小物物品であるかを判断し、小物物品であれば、前記選択された面の凸方向を判断して凸方向であるＸ、Ｙ、Ｚのいずれかの＋または−方向を基準ベクトルの方向に設定することを特徴とする請求項１に記載の図形表裏設定装置。
【請求項３】
前記垂直面基準ベクトル作成手段は、前記ビュー面基準ベクトル作成手段によって作成された基準ベクトルの方向が＋Ｘまたは−Ｘ、＋Ｙまたは−Ｙのいずれかの方向であるときには、＋Ｚまたは−Ｚの方向を前記垂直面に対して作成する基準ベクトルの方向とし、前記ビュー面基準ベクトル作成手段によって作成された基準ベクトルの方向が＋Ｚまたは−Ｚの方向であるときには、＋Ｘまたは−Ｘ、＋Ｙまたは−Ｙのいずれかの方向を前記垂直面に対して作成する基準ベクトルの方向とすることを特徴とする請求項１に記載の図形表裏設定装置。
【請求項４】
前記交差角度判断手段によって、前記法線ベクトルと前記基準ベクトルとの交差角度が９０度であると判断されたときには、前記基準ベクトルとの交差角度が９０度の法線ベクトルを有する垂直面に識別子を設定する識別子設定手段をさらに有し、前記面法線ベクトル揃え手段は、前記識別子を頼りに前記垂直面の法線ベクトルの方向を１８０度反転させることを特徴とする請求項１に記載の図形表裏設定装置。
【請求項５】
データ入力部によって、物体を構成する面の面データを入力する段階と、
前記面データに基づいて、前記物体を構成する面の法線ベクトルを、面法線ベクトル作成部によって作成する段階と、
前記面データに基づいて、前記物体を構成する面を包含する最小体積の直方体、あるいは当該直方体と相似形状の直方体を、直方体を構成する各辺が、３次元直交座標系のＸ軸、Ｙ軸、Ｚ軸のいずれかの軸に平行になるように、直方体作成部によって作成する段階と、
作成された直方体を構成する面のうち、最も面積が大きい面を、最大面積ビュー面選択部によって選択する段階と、
前記最大面積ビュー面選択部によって選択された面が、Ｘ、Ｙビュー、Ｙ、Ｚビュー、Ｚ、Ｘビューのいずれから見た面であるのかを判断し、Ｘ、Ｙビューであれば、＋Ｚの方向を基準ベクトルの方向に設定し、Ｙ、Ｚビューであれば、前記選択された面の凸方向を判断して凸方向である＋Ｘまたは−Ｘの方向を基準ベクトルの方向に設定し、Ｚ、Ｘビューであれば、＋Ｙの方向を基準ベクトルの方向に設定し、前記最大面積ビュー面選択部によって選択された面の基準ベクトルを、ビュー面基準ベクトル作成部によって作成する段階と、
作成された法線ベクトルと作成された基準ベクトルとの交差角度が９０度であるか否かを、交差角度判断部によって判断する段階と、
前記交差角度が９０度であれば、前記基準ベクトルの方向とは逆の方向から前記物体を見て、前記基準ベクトルとの交差角度が９０度の法線ベクトルを有する垂直面に隣接する隣接面を、隣接面抽出部によって抽出する段階と、
抽出された各隣接面の前記基準ベクトル方向の高さを、基準ベクトル方向高さ比較部によって比較する段階と、
高さが高い面から低い面に向かう方向の基準ベクトルを、垂直面基準ベクトル作成部によって前記垂直面に対して作成する段階と、
前記垂直面に対して作成された基準ベクトルと前記垂直面の法線ベクトルとの交差角度が９０度を超えていれば、前記垂直面の法線ベクトルの方向を、面法線ベクトル揃え部によって１８０度反転させる段階と、
を含むことを特徴とする図形表裏設定方法。
【請求項６】
前記交差角度が９０度であるか否かを判断する段階の後に、当該段階で、当該交差角度が９０度であると判断されたときには、前記隣接面抽出部によって、前記基準ベクトルとの交差角度が９０度の法線ベクトルを有する垂直面に識別子を設定する段階をさらに含み、
前記垂直面の法線ベクトルの方向を１８０度反転させる段階では、前記識別子を頼りに、面法線ベクトル揃え部によって、前記法線ベクトルの方向を反転させることを特徴とする請求項５に記載の図形表裏設定方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、３次元コンピュータグラフィックス描画装置や３次元ＣＡＤなどの図形描画装置に適用する図形表裏設定装置および図形表裏設定方法に関する。
【０００２】
【従来の技術】
３次元コンピュータグラフィックス描画装置や３次元ＣＡＤなどの図形描画装置において、３次元立体の幾何モデルの表現方法として、ワイヤーフレームモデル、サーフェスモデル、ソリッドモデルの３種類の表現方法が用いられている。これらの表現方法のうち、シェーディング処理（隠線消去、隠面消去）が可能なのは、サーフェスモデルとソリッドモデルの２種類の表現方法である。
【０００３】
サーフェスモデルの表現方法は、ソリッドモデルの表現方法とは違って、厚みを表現することはできないが、表示に必要なデータ量が少なくて済み、また、表示のための計算量も少なくて済むという利点がある。したがって、自動車の車体パネルのような薄板物は、厚みを表現できなくとも実用上の問題は発生しないため、サーフェスモデルの表現方法を用いて描画している。
【０００４】
サーフェスモデルの表現方法を用いて物体を描画する場合、その物体を構成する面として、平面、円筒面、自由曲面が一般的に用いられる。なお、サーフェスモデルの表現方法は、１つの物体を表現する場合に、その物体を構成する面と面とが離れていてもモデルとしては成立するという特徴を持っている。
【０００５】
サーフェスモデルの表現方法を用いて描画した物体にシェーディング処理を施して、その物体を３次元立体として表示できるようにするためには、まず、その物体を構成しているそれぞれの面の表裏がわからなければならない。
【０００６】
視点に対するそれぞれの面の表裏の判断は、たとえば、特開平５−６７２１９号公報に開示されているように、３次元図形に対する視方向ベクトルと３次元図形を構成する面の法線ベクトルとがなす角度から行うものがある。そして、それぞれの面についての表裏の設定は、特開平１０−１７２００７号公報に開示されているように、基準パッチの表裏を基準として基準パッチ以外のすべてのパッチの表裏を設定するものがある。また、物体を速く描画できるようにするためには、シェーディング処理が高速で行われるのが好ましい。シェーディング処理の高速化は、たとえば、特開平７−３２００８７号公報に開示されているように、無駄な表示判定処理を行わないようにすることで達成される。
【０００７】
サーフェスモデルの表現方法を用いて物体を描画する場合、その物体を描画するための面のデータには、必ずその面の表裏を表すためのデータを含んでいる。一般的には、その面の法線ベクトルの方向が表となる。面の法線ベクトルの方向は、面ごとに存在するため、１つの物体を構成する各面の法線ベクトルの方向が必ず揃うとは限らない。
【０００８】
たとえば、折れ曲がった板を構成する３つの面のデータ（面の頂点座標や稜線データ）を入力するときに、面の表裏をそろえることを意識していないでその入力を行ってしまうと、データの入力の順序によっては、本来は表と判断されなければならない面が裏と判断されてしまう場合がある。
【０００９】
視点から見て表と判断されるべき面が表と判断されれば、面の法線ベクトルの方向が光線方向を向くことになるので、シェーディング処理後は、３つの面がきれいに表れ、３つの面が立体的に表示されるが、本来は表と判断されるべき面が間違って裏と判断されてしまうと、その面の法線ベクトルの方向は光線方向とは反対の方向を向くことになり、その面には光が当たらなくなる。このため、たとえば、３つの面のうちの真中の面が裏と判断されたときには、シェーディング処理後は、１つの面が存在していないかのような表示がされ、面の抜けが発生してしまう。
【００１０】
実際の物体に対してシェーディング処理を行った結果、上記のような面の抜けが発生してしまうと、表示される物体のうち、面の抜けた部分はまだらな模様となって表示されるため、物体は、きれいな３次元立体としては表示されなくなってしまう。
【００１１】
シェーディング後の物体がきれいな３次元立体として表示されるようにするため、面の抜けが発生した面の法線ベクトルの方向をオペレータが手作業で反転させたり、コンピュータによって自動的に反転させたりして、間違って裏と判断されてしまった面を、強制的に表と判断させるための作業を行っている。
【００１２】
コンピュータによって、面の法線ベクトルの方向を揃える作業は、具体的には、次のような手順で行っている。まず、面を揃えるために基準の面を決定する。基準の面の決定は、人間が任意の面を適当に選択することによって行う。つぎに、選択した基準の面と隣り合う面を探す。隣り合っているかどうかは、面同士の頂点座標の一致、稜線の一致に基づいて図形描画装置が自動的に行う。なお、基準の面と隣り合う面を探すためは、物体を構成している基準の面以外のすべての面に対して、面同士の頂点座標が一致しているか否か、稜線が一致しているか否か、を調べなければならない。このため、隣り合う面を探すために、たとえば自動車の車体パネルを例に取れば、数千の面を対象とすることになり、隣り合う面を探すためにも多くの時間を要する。
【００１３】
隣り合う面が見つかると、隣り合う面の向きを基準の面の向きと同じくする。つまり、両面の法線ベクトルの方向を揃える。法線ベクトルの方向を揃える処理が終了した面には、処理済みの印を付けて、基準の面に処理済の面を含める。つまり、処理済の面の集合が基準の面となる。以上のような処理を、物体を構成するすべての面に対して行う。この処理によれば、物体を構成する面がすべて隣接していれば、鋭角的な折れがあったとしても、すべての面の法線ベクトルの方向を揃えることができる。
【００１４】
【発明が解決しようとする課題】
しかしながら、上記のような従来の図形描画装置では、ある面を基準として、面同士の頂点座標の一致、稜線の一致に基づいて隣り合う面を見つけるようにしていたため、演算誤差などによって、物体を構成するすべての面の内、隣り合っていない面（交差、離れなど）が生じてしまった場合には、法線ベクトルの方向を揃える処理がすべての面に対して実行されず、すべての面の方向を揃えることができなくなってしまうという問題がある。
【００１５】
また、上記のような従来の図形描画装置では、隣り合う面を面同士の頂点座標の一致、稜線の一致に基づいて順次探し出さなければならなかったため、隣り合う面を探し出すのに時間がかかるという問題がある。特に、自動車の車体パネルのように自由曲面の数が大きい大規模な物体では、多大の時間がかかることになる。また、面の数が多いと、法線ベクトルの方向を揃える処理にも多大な時間がかかる。
【００１６】
本発明は、このような従来の図形描画装置の問題点を解決するために成されたものであり、物体を構成する面の表裏方向を高速に、かつ、実用的な精度で揃えることが可能な、図形表裏設定装置および図形表裏設定方法の提供を目的とする。
【００１７】
【課題を解決するための手段】
上記した課題を解決し、目的を達成するため、本発明では、物体を構成する面の面データを入力し、この面データに基づいて物体を構成する面の法線ベクトルを作成する。次に、面データに基づいて物体を構成する面を包含する最小体積の直方体、あるいは当該直方体と相似形状の直方体を、直方体を構成する各辺が、３次元直交座標系のＸ軸、Ｙ軸、Ｚ軸のいずれかの軸に平行になるように作成し、作成された直方体を構成する面のうち、最も面積が大きい面を選択し、選択された面が、Ｘ、Ｙビュー、Ｙ、Ｚビュー、Ｚ、Ｘビューのいずれから見た面であるのかを判断し、Ｘ、Ｙビューであれば、＋Ｚの方向を基準ベクトルの方向に設定し、Ｙ、Ｚビューであれば、前記選択された面の凸方向を判断して凸方向である＋Ｘまたは−Ｘの方向を基準ベクトルの方向に設定し、Ｚ、Ｘビューであれば、＋Ｙの方向を基準ベクトルの方向に設定し、選択された面の基準ベクトルを作成する。そして、作成された法線ベクトルと作成された基準ベクトルとの交差角度が９０度であるか否かを判断し、この交差角度が９０度であれば、基準ベクトルの方向とは逆の方向から前記物体を見たときに、基準ベクトルとの交差角度が９０度の法線ベクトルを有する垂直面に隣接する隣接面を抽出する。さらに、抽出された各隣接面の基準ベクトル方向の高さを比較し、高さが高い面から低い面に向かう方向の基準ベクトルを垂直面に対して作成する。最後に、垂直面に対して作成された基準ベクトルと垂直面の法線ベクトルとの交差角度が９０度を超えていれば、垂直面の法線ベクトルの方向を１８０度反転させる。
【００１８】
本発明では、法線ベクトルと基準ベクトルの交差角度が９０度の場合に、その面の法線ベクトルの方向が正しいか、正しくないかを自動的に判断し、法線ベクトルの方向を揃えている。したがって、演算誤差などによって、物体を構成するすべての面の内、隣り合っていない面（交差、離れなど）が生じている場合でも、その面の法線ベクトルの方向を揃えることができるようになり、また、面の方向を揃えるために、面同士の頂点座標の一致、稜線の一致に基づいて、隣り合う面を順次探し出す必要もなくなる。このために、物体を構成する面の表裏方向を高速に、かつ、実用的な精度で揃えることが可能になる。
【００１９】
【発明の効果】
以上説明したように、本発明では、法線ベクトルと基準ベクトルの交差角度が９０度の場合に、その面の法線ベクトルの方向が正しいか、正しくないかを自動的に判断し、法線ベクトルの方向を揃えているので、演算誤差などによって、物体を構成するすべての面の内、隣り合っていない面（交差、離れなど）が生じている場合でも、その面の法線ベクトルの方向を揃えることができるようになり、また、面の方向を揃えるために、面同士の頂点座標の一致、稜線の一致に基づいて、隣り合う面を順次探し出す必要もなくなる。したがって、物体を構成する面の表裏方向を高速に、かつ、実用的な精度で揃えることが可能になる。
【００２０】
【発明の実施の形態】
以下に添付図面を参照して、本発明にかかる図形表裏設定装置および図形表裏設定方法の好適な実施の形態を詳細に説明する。
【００２１】
図１は、本発明にかかる図形表裏設定装置の概略構成を示すブロック図である。本発明にかかる図形表裏設定装置は、たとえば、３次元コンピュータグラフィックス描画装置や３次元ＣＡＤなどの図形描画装置内に設置される。
【００２２】
データ入力部１０は、入力手段として機能する部分であって、物体を構成する面の面データ（たとえば、頂点座標データ、稜線に関するデータ）を入力し、入力した面データを、後段の直方体作成部１１、面法線ベクトル作成部１２、隣接面抽出部１７に出力する。
【００２３】
直方体作成部１１は、直方体作成手段として機能する部分であって、データ入力部１０から出力された面データから、その面データで構成される物体を包含する、最も体積の小さな直方体、あるいは当該直方体と相似形状の直方体を作成する。なお、直方体作成部１１は、その直方体を構成する各辺が、３次元直交座標系のＸ軸、Ｙ軸、Ｚ軸のいずれかの軸に平行になるように直方体を作成する。たとえば、物体が図２の車体パネル２５であれば、図３のように、その車体パネル２５を包含する直方体３０を３次元直交座標系上に作成する。車体パネル２５に関するデータと作成された直方体３０に関するデータは、後段のビュー面面積演算部１３に送られる。
【００２４】
面法線ベクトル作成部１２は、面法線ベクトル作成手段として機能する部分であって、データ入力部１０から出力された面データから、その面の中心付近（中心付近でなくても良いが）の法線ベクトルを、たとえば、特開平５−６７２１９号公報にも開示されているような従来の方法で作成する。面の法線ベクトルの方向は、その面の表裏を表す。たとえば、法線ベクトルの方向がその面から外側に向かう方向であれば、その面は光線の当たる表の面であり、逆に、法線ベクトルの方向がその面に向かう方向であれば、その面は光線の当たらない裏の面である。
【００２５】
図２のパネル２５に対して法線ベクトルを作成すると、Ａに示す方向のベクトルになる。作成された法線ベクトルに関する情報は、後段の交差角度判断部１６に送られる。
【００２６】
ビュー面面積演算部１３は、直方体作成部１１によって作成された直方体３０の各頂点の座標データに基づいて、図４のように、各ビュー（Ｘ、Ｙ、Ｚの３方向）から見た、直方体３０を構成する３つの面（ａ、ｂ、ｃ）の面積を求める。求めたそれぞれの面の面積は、後段の最大面積ビュー面選択部１４に送られる。
【００２７】
最大面積ビュー面選択部１４は、最大面積ビュー面選択手段として機能する部分であって、ビュー面面積演算部１３から送られてきた３つの面（ａ、ｂ、ｃ）の面積の内、最も面積の大きい面を選択し、その面がどのビューから見たものであるかを判断する。ビュー面面積演算部１３から送られてきた３つの面（ａ、ｂ、ｃ）の面積が図４に示すようなものであれば、最大面積ビュー面選択部１４は、最も面積が大きいｂの面を選択し、ｂの面は、ＹＺビューから見た面であると判断する。選択された面の面積と、判断されたビューは、後段のビュー面基準ベクトル作成部１５に送られる。
【００２８】
ビュー面基準ベクトル作成部１５は、ビュー面基準ベクトル作成手段として機能する部分であって、最大面積ビュー面選択部１４によって選択された面の基準ベクトルを作成する。この基準ベクトルの作成に当たり、ビュー面基準ベクトル作成部１５は、また、最大面積ビュー面選択部１４から送られてきた面の面積に基づいて、その物体が大物物品であるか、大物物品でないか（小物物品であるか）を判断する。大物物品であるか、大物物品でないかの判断は、たとえば面の面積が１ｍ2よりも大きいか、小さいかによって行う。
【００２９】
大物物品と判断されたときには、最大面積ビュー面選択部１４から送られてきたビューに基づいて、基準ベクトルを作成する。すなわち、ビュー面基準ベクトル作成部１５は、最大面積ビュー面選択部１４によって選択された面が、Ｘ、Ｙビュー、Ｙ、Ｚビュー、Ｚ、Ｘビューのいずれから見た面であるのかを判断し、Ｘ、Ｙビューであれば、＋Ｚの方向を基準ベクトルの方向に設定し、Ｙ、Ｚビューであれば、前記選択された面の凸方向を判断して凸方向である＋Ｘまたは−Ｘの方向を基準ベクトルの方向に設定し、Ｚ、Ｘビューであれば、＋Ｙの方向を基準ベクトルの方向に設定する。基準ベクトルの方向は、Ｘ軸、Ｙ軸、Ｚ軸のいずれかの軸に沿う方向である。たとえば、図４に示す大物物品のｂの面が選択された場合、その面はＹ、Ｚビューであるので、＋Ｘまたは−Ｘの方向（図では＋Ｘの方向）の基準ベクトルＢｂが作成される。
【００３０】
また、ビュー面基準ベクトル作成部１５によって大物物品でないと判断されたときには、直方体作成部１１が持っている、その物体の面データを入力し、その面データに基づいて、その物体が最大面積ビュー面選択部１４から送られてきたビューのどちら側（手前側、奥側）に凸であるかが判断され、その判断に基づいて基準ベクトルを作成する。すなわち、ビュー面基準ベクトル作成部１５は、最大面積ビュー面選択部１４によって選択された面の凸方向であるＸ、Ｙ、Ｚのいずれかの＋または−方向を基準ベクトルの方向に設定し、基準ベクトルを作成する。作成された基準ベクトルに関する情報は、後段の交差角度判断部１６に送られる。
【００３１】
交差角度判断部１６は、交差角度判断手段として機能する部分であって、面法線ベクトル作成部１２によって作成された任意の面の法線ベクトルとビュー面基準ベクトル作成部１５によって作成された基準ベクトルとが成す交差角度を求め、その交差角度が９０度であるか否かを判断する。たとえば、図５に示すような形状のパネル２７に対して、それぞれの面の法線ベクトルがＡａ、Ａｂ、Ａｃ、Ａｄの向きに作成され、そのパネル２７を包含する直方体から選択された面の基準ベクトルがＢｂであったとすれば、法線ベクトルＡｂと基準ベクトルＢｂとの交差角度は９０度である。なお、図４に示す場合では、パネル２５に対する法線ベクトルＡと直方体３０から選択された面の基準ベクトルＢｂとの交差角度θは９０度ではない。交差角度が９０度であるときには、このことを後段の隣接面抽出部１７に報知する。
【００３２】
隣接面抽出部１７は、隣接面抽出手段および識別子設定手段として機能する部分であって、交差角度判断部１６によって交差角度が９０度であると判断されたときに、データ入力部１０からの面データに基づきその面データで構成される物体の面を生成する。そして、ビュー面基準ベクトル作成部１５で作成された基準ベクトルに関する情報を入力して、その基準ベクトルの方向とは逆の方向から、その物体を見て、その基準ベクトルとの交差角度が９０度の法線ベクトルを持つ面（垂直面）に隣接している面（隣接面）を抽出する。そして、その垂直面には識別子を設定しておく。
【００３３】
たとえば、図５に示すように、法線ベクトルＡｂと基準ベクトルＢｂとの交差角度は９０度であるので、面ｄが垂直面（基準ベクトルＢｂとの交差角度が９０度の法線ベクトルＡｂを持つ）になり、面ｄに関する情報には識別子が付加される。そして、その面ｄに隣接する面ｅ、ｆが隣接面になる。したがって、隣接面抽出部１７は、面ｄを垂直面として、面ｅ、ｆを隣接面としてそれぞれ抽出することになる。抽出した隣接面に関する情報は、後段の基準ベクトル方向高さ比較部１８に送られる。
【００３４】
基準ベクトル方向高さ比較部１８は、基準ベクトル方向高さ比較手段として機能する部分であって、隣接面抽出部１７によって抽出された各隣接面の基準ベクトル方向の高さを比較する部分である。
【００３５】
図５に示した形状のパネル２７を正面および側面から見た図を図６に示した。垂直面ｄと隣接面ｅ、ｆとの位置関係、基準ベクトルＢｂ、各面の法線ベクトルＡａ、Ａｂ、Ａｃ、Ａｄの方向の関係は図６に示すようになっている。この場合、基準ベクトル方向高さ比較部１８は、隣接面ｅの基準ベクトルＢｂ方向の高さと隣接面ｆの基準ベクトルＢｂ方向の高さとを比較することになる。どちらの隣接面の高さが高いかは、後段の垂直面基準ベクトル作成部１９に送られる。
【００３６】
垂直面基準ベクトル作成部１９は、垂直面基準ベクトル作成手段として機能する部分であって、基準ベクトル方向高さ比較部１８によって比較された隣接面の、高さが高い面から低い面に向かう方向の基準ベクトルを、隣接面抽出部１７によって作成された面の内の垂直面に対して作成する。
【００３７】
隣接面ｅの基準ベクトルＢｂ方向の高さは、隣接面ｆの基準ベクトルＢｂ方向の高さよりも低いので、垂直面基準ベクトル作成部１９は、図７に示すように、隣接面ｆから隣接面ｅに向かう方向の基準ベクトルＣｂを垂直面ｄに対して作成することになる。
【００３８】
なお、垂直面基準ベクトル作成部１９は、ビュー面基準ベクトル作成部１５によって作成された基準ベクトルの方向が＋Ｘまたは−Ｘ、＋Ｙまたは−Ｙのいずれかの方向であるときには、＋Ｚまたは−Ｚの方向を垂直面に対して作成する基準ベクトルの方向とし、その基準ベクトルの方向が＋Ｚまたは−Ｚの方向であるときには、＋Ｘまたは−Ｘ、＋Ｙまたは−Ｙのいずれかの方向を垂直面に対して作成する基準ベクトルの方向とする。
【００３９】
面法線ベクトル揃え部２０は、垂直面基準ベクトル作成部１９によって作成された前記垂直面の基準ベクトルと面法線ベクトル作成部１２によって作成されたその垂直面の法線ベクトルとの交差角度が９０度を超えていれば、その垂直面の法線ベクトルの方向を１８０度反転させる。たとえば、図８に示すように、垂直面ｄの法線ベクトルＡｂは図６に示すような下向きであり、垂直面基準ベクトル作成部１９がその垂直面に対して作成した基準ベクトルＣｂは図７に示すように上向きである。法線ベクトルＡｂと基準ベクトルＣｂとの交差角度１８０度であるから、法線ベクトルＡｂ方向は１８０度反転されて、上向きの方向の法線ベクトルＡｂに変更される。この変更は、垂直面に関する情報に付加されている識別子を頼りに行われる。これによって、光線の当たる面面が垂直面ｄの上側の面になる。
【００４０】
また、面法線ベクトル揃え部２０は、ビュー面基準ベクトル作成部１５によって作成された直方体３０から選択された面の基準ベクトルＢｂと、面法線ベクトル作成部１２によって作成された物体を構成する各面の法線ベクトルとが成す角を求める。その角度が９０度よりも大きければ、その面に対する表裏の判断が逆である可能性が高いので、その面の法線ベクトルの向きを１８０度反転させる。法線ベクトルの向きが揃えられた後の法線ベクトルの方向に関するデータおよびその面の面データはデータ出力部１７に送られる。
【００４１】
垂直面の法線ベクトルの方向を反転させる処理と、垂直面以外の法線ベクトルの方向を反転させる処理は、どちらを先に行っても良いが、垂直面以外の法線ベクトルの方向を反転させる処理を行った後に垂直面の法線ベクトルを反転させる処理をする場合には、垂直面に関する情報に付加されている識別子を頼りに行う。つまり、識別子の付加されていない面について法線ベクトルの方向を揃える処理をした後に、識別子が付加されている面の法線ベクトルの方向を揃える。
【００４２】
データ出力部２１は、送られてきた、法線ベクトルの方向に関するデータおよび面データを外部に出力する。
【００４３】
図形表裏設定装置を構成する各ブロックの概略の機能は以上のとおりである。つぎに、図９から図１１のフローチャートに基づいて、図形表裏設定装置の一連の動作を具体的に説明する。なおこのフローチャートは、図形表裏設定方法の手順を示したものでもある。
【００４４】
図形表裏設定装置の動作には、大きく分けて２つの動作がある。１つは、物体を構成する各面の形状を調べて、各面の基準ベクトルの方向を求める第１の処理である。そしてもう１つは、最終的に各面の法線ベクトルの方向を揃える第２の処理である。
【００４５】
第１の処理は、図９のフローチャートに示されている処理であり、図１に示した、直方体作成部１１、ビュー面面積演算部１３、最大面積ビュー面選択部１４およびビュー面基準ベクトル作成部１５によって実行される。
【００４６】
第２の処理は、図１０および図１１のフローチャートに示されている処理であり、図１に示した、面法線ベクトル作成部１２、交差角度判断部１６、隣接面抽出部１７、基準ベクトル方向高さ比較部１８、垂直面基準ベクトル作成部１９、面法線ベクトル揃え部２０によって実行される。
【００４７】
まず、第１の処理について説明する。この処理は、図９に示してあるフローチャートの手順で実行される。ここでは、処理の対象となる物体を、図２に示した車体パネル２５とする。
【００４８】
データ入力部１０は、車体パネル２５の面データ（たとえば、頂点座標データ、稜線に関するデータ）を入力し、この面データを、後段の直方体作成部１１と面法線ベクトル作成部１２に出力する。直方体作成部１１は、データ入力部１０から出力された面データから、車体パネル２５を包含する、最も体積の小さな直方体（あるいは、当該直方体と相似形状の直方体）３０（図３参照）を作成する。なお、本実施の形態では、座標系は、図３に示すように幅方向をＸ、長さ方向をＹ、高さ方向をＺとする３次元の直交座標系を用いている。座標系は、この直交座標系以外に、極座標系、円筒座標系を用いても良い（Ｓ１）。
【００４９】
つぎに、ビュー面面積演算部１３は、直方体作成部１１によって作成された直方体３０の８つの頂点の座標から、図４のように、各ビュー（Ｘ、Ｙ、Ｚの３方向）から見た、直方体３０を構成する３つの面（ａ、ｂ、ｃ）それぞれの面積を求める。（Ｓ２）。
【００５０】
最大面積ビュー面選択部１４は、ビュー面面積演算部１３から送られてきた３つの面（ａ、ｂ、ｃ）それぞれの面積の内、最も面積の大きい面を選択し、その面がどのビューから見たものであるかを判断する。ビュー面面積演算部１３から送られてきた３つの面（ａ、ｂ、ｃ）の面積の大きさが、図４に示すようなものであれば、最大面積ビュー面選択部１４は、最も面積が大きいｂの面を選択し、ｂの面は、ＹＺビューから見た面であると判断する。このように、最も大きな面積の面を、基準ベクトルを作成するための候補として選択するのは、車体パネル２５の場合、面積の大きい面が通常は表面または裏面となる可能性が高いからである（Ｓ３）。
【００５１】
ビュー面基準ベクトル作成部１５は、最大面積ビュー面選択部１４から送られてきた面の面積から、その物体が大物物品であるか、大物物品でないかを判断する。大物物品であるか、大物物品でないかの判断は、たとえば面の面積が１ｍ2よりも大きいか、小さいかによって行われる（Ｓ４）。
【００５２】
大物物品であると判断されたときには、ビュー面基準ベクトル作成部１５は、最大面積ビュー面選択部１４から送られてきたビューを調べる（Ｓ５）。
【００５３】
判断されたビューが平面ビュー（Ｘ、Ｙビュー）であれば、＋Ｚ方向を基準ベクトルに設定する。図４でみれば、面ｃが選択された場合であり、基準ベクトルＢｃは、ｃの面から上に離れる方向に設定される（Ｓ６）。一方、認識されたビューが側面ビュー（Ｙ、Ｚビュー）であれば、さらに、車体パネル２５の面データから、車体パネル２５を構成するすべての面のＸ座標の平均値を求め（Ｓ７）、求めた平均値が正の値であれば（Ｓ８）、＋Ｘ方向を基準ベクトルに設定する（Ｓ９）。一方、求めた平均値が負の値であれば（Ｓ８）、−Ｘ方向を基準ベクトルに設定する（Ｓ１０）。このように、Ｘ座標の平均値が＋か−かを求めるのは、車体パネル２５がどちらの方向に凸形状になっているかを判断するためである。また、Ｘ座標の平均値が＋か−かによって基準ベクトルの方向を決めているのは、車体パネル２５の場合、一般的に、凸形状になっている方が表側となる可能性が高いからである。さらに、認識されたビューが正面ビュー（Ｚ、Ｘビュー）であれば、＋Ｙ方向を基準ベクトルに設定する。図４でみれば、面ａが選択された場合であり、基準ベクトルＢａは、ａの面から離れる方向（車両の後ろ方向）に設定される（Ｓ１１）。
【００５４】
大物物品でないと判断されたときには（Ｓ４）、ビュー面基準ベクトル作成部１５は、直方体作成部１１が持っている、車体パネル２５の面データを入力し、その面データに基づいて、最大面積ビュー面選択部１４から送られてきたビューのどちら側（手前側、奥側）に凸であるかが判断され、その判断に基づいて基準ベクトルを作成する。どちら側に凸であるかの判断は、Ｓ８からＳ１０のステップの説明と同じく、車体パネル２５を構成するすべての面のＸ座標の平均値が＋か−かを求めることによって行う（Ｓ１２）。求めた平均値が正の値であれば、＋Ｘ方向を基準ベクトルに設定する。一方、求めた平均値が負の値であれば、−Ｘ方向を基準ベクトルに設定する。つまり、凸形状になっている方の面が表側になるように基準ベクトルを設定する（Ｓ１３）。
【００５５】
車体パネル２５の場合、ほとんどは金型プレスで形成されるため、形状の特徴を単品で見ると、どちらかの側が膨らんでいて、閉じているものはほとんどない。また、車体パネル２５は、その膨らんでいる面の方を外側にして組みつけられる場合が一般的であり、膨らんでいる面の方を表になるように基準ベクトルを設定したほうが面の抜けが生じる確率が少なくなる。ただし、このような基準ベクトルの設定を、すべてのパネルに対して適用してしまうと、たとえば、ホイールハウス系やフロアー系のパネルでは、必ずしも面の抜けが生じる確率が少なくなるとは限らなくなる。また、一般に、大物と呼ばれる物品は、前述のように、ビューによって表の方向を決定しても、面の抜けが生じる確率は少ない。このように、車体部品の特性を考慮して面の表の方向を決定すれば、本来は表と判断されるべき面が間違って裏と判断されることが少なくなり、現実的な方向の決定ができるようになる。
【００５６】
つぎに、第２の処理について説明する。この処理は、図１０および図１１に示してあるフローチャートの手順で実行される。
【００５７】
面法線ベクトル作成部１２は、データ入力部１０から出力された面データから、１つの面に相当する面データを入手し（Ｓ２０）、その面の中心付近の法線ベクトルを、たとえば、特開平５−６７２１９号公報にも開示されているような従来の方法で作成する。
【００５８】
なお、中心付近の法線ベクトルを求めるのは、車体パネル２５の場合、たとえば９０度以上の角度で曲がっているような、極端に曲がった曲面を有していることはほとんど考えられないからであり、中心付近の法線ベクトルを求めれば、ほとんどの場合、車体パネル２５の面の方向を特定することができるからである。
【００５９】
この考え方に基づいて図５に示すような形状のパネル２７に対して各面の法線ベクトルを求めると、各面に対して図５および図６に示すような方向の法線ベクトルＡａ、Ａｂ、Ａｃ、Ａｄが作成されることになる。
【００６０】
面の法線ベクトルの方向は、その面の表裏を表す。たとえば、法線ベクトルの方向がその面から外側に向かう方向であれば、その面は光線の当たる表の面となり、逆に、法線ベクトルの方向がその面に向かう方向であれば、その面は光線の当たらない裏の面となる（Ｓ２１）。
【００６１】
その面の法線ベクトルを求めることができたら（Ｓ２１：ＹＥＳ）、つぎに、交差角度判断部１６は、面法線ベクトル作成部１２によって作成されたその面の法線ベクトルと、図５に示した、第１の処理で求められた基準ベクトル（Ｘ、Ｙ、Ｚの３方向のいずれか）とが成す角度を求める。つまり、ある面の法線ベクトルと基準ベクトルとの交差角度を求める。図５に示したパネル２７の場合、たとえば法線ベクトルＡａと基準ベクトルＢｂとの交差角度が求められる（Ｓ２２）。
【００６２】
なお、Ｓ２１のステップでその面の法線ベクトルを求めることができなかったときには（Ｓ２１：ＮＯ）処理を終了し、Ｓ２０のステップに戻って、次の面の面データを入手する。
【００６３】
交差角度判断部１６は、求めた交差角度が９０度を超える場合には（Ｓ２３：θ＞９０°）、面法線ベクトル作成部１２によって作成された法線ベクトルの方向が反対であると判断し、その法線ベクトルの向きを１８０度反転させる。つまり、その面の表方向と判断された方向を、裏方向と判断させるようにする（Ｓ２４）。一方、求めた交差角度が９０度よりも小さければ（Ｓ２３：θ＜９０°）、作成された法線ベクトルの方向は正しいと判断し、法線ベクトルの方向はそのままにする。そして、Ｓ２０のステップに戻って、次の面の面データを入手する。さらに、求めた交差角度が９０であれば、その法線ベクトルを有する面の識別子を記憶すると共に、その面に関する情報にその識別子の情報を付加する（Ｓ２５）。以上の処理は、車体パネルを構成するすべての面について１面ずつ行われる。
【００６４】
たとえば、以上の処理を図５に示したような形状のパネルに対して行うと、法線ベクトルＡａと法線ベクトルＡｄは基準ベクトルＢａに対して９０度以上の交差角度を有しているので、法線ベクトルＡａの方向は１８０度反転される。また、法線ベクトルＡｂは、基準ベクトルＢａに対して９０度の交差角度を有しているので、その面の識別子が記憶される。
【００６５】
以上の処理が終了すると、引き続き、交差角度がちょうど９０度であった面（垂直面）の法線ベクトルの方向が正しいか否かを判断するための処理が行われる。まず、隣接面抽出部１７は、記憶している面の識別子を取得する（Ｓ３０）。識別子が記憶されていなければ（Ｓ３０：ない）、垂直面が存在しないので、処理を終了し、識別子が記憶されていれば（Ｓ３０：ある）、その垂直面に隣接する面（隣接面）を抽出する。たとえば、図６に示したように、パネル２７を基準ベクトルＢｂとは逆の方向から見たときに、垂直面ｄに隣接する面は、隣接面ｅ、ｆであるので、隣接面抽出部１７は、隣接面ｅ、ｆを抽出することになる（Ｓ３１）。
【００６６】
次に、基準ベクトル方向高さ比較部１８は、隣接面ｅの基準ベクトルＢｂ方向の高さと隣接面ｆの基準ベクトルＢｂ方向の高さとを比較する（Ｓ３２）。そして、垂直面基準ベクトル作成部１９は、基準ベクトル方向高さ比較部１８によって比較された隣接面の、高さが高い面から低い面に向かう方向の基準ベクトルを、垂直面ｄに対して作成する。隣接面ｅの基準ベクトルＢｂ方向の高さは、隣接面ｆの基準ベクトルＢｂ方向の高さよりも低いので、垂直面基準ベクトル作成部１９は、図７に示すように、隣接面ｆから隣接面ｅに向かう方向の基準ベクトルＣｂを垂直面ｄに対して作成する（Ｓ３３）。
【００６７】
最後に、面法線ベクトル揃え部２０は、垂直面基準ベクトル作成部１９によって作成された垂直面ｄの基準ベクトルＣｂと面法線ベクトル作成部１２によって作成されたその垂直面ｄの法線ベクトルＡｂとの交差角度を求める（Ｓ３４）。その交差角度が９０度以下であれば（Ｓ３５：９０度以下）、その法線ベクトル方向が正しいと判断して処理を終了し、識別子の記憶されている次の面に対して処理を行う。一方、その交差角度が９０度を超えていれば（Ｓ３５：９０度より大きい）、その垂直面の法線ベクトルの方向を１８０度反転させる。たとえば、図８に示すように、垂直面ｄの法線ベクトルＡｂは図６に示すような下向きであり、垂直面基準ベクトル作成部１９がその垂直面に対して作成した基準ベクトルＣｂは図７に示すように上向きである。法線ベクトルＡｂと基準ベクトルＣｂとの交差角度１８０度であるから、法線ベクトルＡｂ方向は１８０度反転されて、上向きの方向の法線ベクトルＡｂに変更される（Ｓ３６）。
【００６８】
以上に説明した第２の処理が行われることによって、当初は各面に対して図のように設定されていた法線ベクトルの方向が（実行前参照）、正しい方向に自動的に揃えられる（実行後参照）。
【００６９】
本実施の形態では、次のような効果が期待できる。車体パネルは板を折り曲げて作成されているために、パネル面の法線ベクトルが基準ベクトルと垂直（基準ベクトルとパネル面が平行）な場合でも、隣接面の法線ベクトルから面の方向を規定することができる。このような規定ができるようになった結果、これまでは困難であった、垂直面の向きを正しい向きに変更できるようになった。また、隣接面を隣接関係を使用することなく探すことができるので、面データの精度が不十分な場合でも、対応することができる。
【００７０】
また、垂直面の法線ベクトルを正しく揃えるためには、隣接面の法泉ベクトルの方向も正しい方向でなければならないが、本実施形態の処理では、垂直面以外の面の方向を正しく揃えてから、垂直面の向きを揃えているので、すべての面を正しい向きにすることができる。
【００７１】
さらに、本実施の形態では、法線ベクトルと基準ベクトルの交差角度にしたがって、その面の法線ベクトルの方向が正しいか、正しくないかを自動的に判断し、法線ベクトルの方向を揃えるようにしたので、演算誤差などによって、物体を構成するすべての面の内、隣り合っていない面（交差、離れなど）が生じている場合でも、その面の法線ベクトルの方向を揃えることができるようになり、また、面の表裏を揃えるために、面同士の頂点座標の一致、稜線の一致に基づいて、隣り合う面を順次探し出す必要もなくなる。このため、物体を構成する面の表裏方向を高速に、かつ、実用的な精度で揃えることが可能になる。
【図面の簡単な説明】
【図１】本発明にかかる図形表裏設定装置の概略構成を示すブロック図である。
【図２】自動車の車体パネルの形状の一例を示す図である。
【図３】車体パネルを包含する直方体を作成する処理の説明に供する図である。
【図４】直方体の各ビューの面積を求める処理の説明に供する図である。
【図５】垂直面と隣接面を抽出する処理の説明に供する図である。
【図６】垂直面と隣接面との位置関係、法線ベクトルと基準ベクトルとの方向を示す図である。
【図７】垂直面に対して基準ベクトルを引く処理の説明に供する図である。
【図８】垂直面に対して引かれた法線ベクトルを１８０度反転させる処理の説明に供する図である。
【図９】基準ベクトルの方向を求める第１の処理を示すフローチャートである。
【図１０】各面の法線ベクトルの方向を揃える第２の処理を示すフローチャートである。
【図１１】各面の法線ベクトルの方向を揃える第２の処理を示すフローチャートである。
【符号の説明】
１０…データ入力部、
１１…直方体作成部、
１２…面法線ベクトル作成部、
１３…ビュー面面積演算部、
１４…最大面積ビュー面選択部、
１５…ビュー面基準ベクトル作成部、
１６…面法線ベクトル揃え部、
１７…隣接面抽出部、
１８…基準ベクトル方向高さ比較部、
１９…垂直面基準ベクトル作成部、
２０…面法線ベクトル揃え部、
２１…データ出力部、
２５、２７…車体パネル、
３０…直方体。
【図１】
0004032828.tif 000002
【図２】
0004032828.tif 000003
【図３】
0004032828.tif 000004
【図４】
0004032828.tif 000005
【図５】
0004032828.tif 000006
【図６】
0004032828.tif 000007
【図７】
0004032828.tif 000008
【図８】
0004032828.tif 000009
【図９】
0004032828.tif 000010
【図１０】
0004032828.tif 000011
【図１１】
0004032828.tif 000012