4.4 隠れ線処理のアルゴリズム

  次のページ

 幾何モデルの分類用語でサーフェースモデルとは、中身の詰まった立体モデルを指します。一方、ペーパーモデルは紙細工といい、面は裏からも見える可能性があります。サーフェースモデルでは、眼の位置から見て向こう向きの面は見えないと判断できます。数学的には、面の方程式に視点の座標を代入して面と視点との距離を計算します。距離が正であれば、その面は見える(可能性がある)と判断します。これが基本的な隠れ線原理の出発点です。

GEOMAPでは立体モデルの表面は幾何学的に平らな面として、下に示す面方程式の4つのデータ(a, b, c, d)を保存しています。    f(x, y, z) = a*x + b*y + c*z + d = 0 上の式で、(a, b, c)は面に垂直に立った法線ベクトルで、単位長さに揃えてあります。(x, y, z)は空間の点の座標を表します。いま、f(x, y, z)はその点と面との距離をあたえますので、f(x, y, z)=0をその点が満足するなら、その点は平面上にあります。カメラの位置を代入して、距離が正と計算される面は可視面と判定できます。

可視と判定された面に属する頂点と辺とは、もし手前にそれを隠す面がなければ可視と判定できます。多面体の辺は二つの面の境界ですので、この二つの面の接続の工合で、見えない場合と見える場合とが起こります。これは下の表の様になります。

二面の可視・不可視の状態 辺の可視・不可視
(1) 二面は両方ともに可視 可視
(2) 二面は両方ともに不可視 不可視
(3) 一方の面は可視
もう一方の面は不可視
面は凸で接続 可視
(4) 面は凹で接続 不可視

 多面体の作図には幾つかの計算段階を必要とします。@まず、すべての面をテストして、その面がカメラに対しての距離と、可視・不可視の判定をします。この情報だけで塗り潰しの原理で隠れ面処理に当たることができます。Aついで、辺について両側の面の可視・不可視の条件から辺とそれに属する頂点の可視・不可視をマークします。コマンドHFDISPは、可視の辺だけを取り出して投影変換して作図します。単独の凸多面体はこの方法で隠れ線処理で作図できます。

 完全な隠れ線処理をするためには、B多面体を透視変換して2次元モデルに直します。このモデルは奥行きの情報を持たせてありますので構造としては3次元の紙細工モデルになっています。隠れ線の現象は、手前にある紙が向こう側にある紙を隠すことから起こります。特に、手前の紙の縁(自由辺)と交差する辺では、見える部分と見えない部分とを切り分けます。この処理はHLIMAGです。コマンドのHLDISPは、内部で作業用の2DモデルをHLIMAG作成し、見える辺を作図した後で2Dモデルを消去しています。HLIMAGで作成した2Dモデルは、まだ立体的な紙細工のデータのままになっています。CコマンドHMIMAGは、面の一部が隠されて見えなくなった部分を切取って、全体として平面地図のような2次元モデルに直します。例えば、手前にある紙の自由辺がその下の紙の上にあるならば、その自由辺は下に見える領域と接する国境線としての情報に付け替えます。このように整理した2Dモデルのことを2次元の地図モデル(Map model)と呼ぶことにしました。


次のページ