6.3次元形状図の輪郭作画法
6.1 緒言
本章の目的は3次元形状をフリーハンドで対話的に表現するための技法を実現し,容易に意図した透視図を作画できるようにすること,手描き透視図から視点推定を行う方法,光源の方向を求める方法,さらに求められた消点,視点や光源のデータを利用した写真合成,3Dモデルのデータを生成することである.
透視図は3次元形状の直感的理解を助けるものであり,多くの分野でプレゼンテーションとして利用されている.日常,われわれがものを意図した図として表現するとき,フリーハンドで自由に描き,正確な図法を適用することは少ない.このために,イメージを2次元上に自由に表現できる.このような場合には作画条件が与えられるのではなく,作画する人が透視図作画の条件を想定しながら図を描いており,図法にとらわれずに作画することが多い.このとき,イメージを作画することは容易であるが,誤った図を描く可能性もある.
このような作画において,人は描かれたものをみて,次の作画を行いながら,思考を展開する.このとき,意図したものが表現されているかどうかという情報交換が人と図の間で行われている.このために,作画法は人の創造的活動の思考にあったものが必要になる.
従来から行われてきた透視図作画には図学における作画と投影理論を用いた計算手法の2種類がある.図学で以前より提案されている透視図作図法は作画条件を与えてから透視図を描く方法であり,図に対して直接指示して図形に影響を与えている.常に図を取り扱いながら,図を作り上げていく点で人にとって感覚的に優れた方法である.しかし,意図に合った図が得られるかどうか予想が難しかった.また,作図面積を多く必要とすることや,基本的な作画手法を繰り返し利用する必要があり,作画時間のかかることや作図による不正確性の問題点が上げられていた.
一方,投影変換を用いる計算手法は変換行列および3次元データを必要とする.一つの図を得るために,3次元データを用意することは大きな負担といえる.計算機を利用した透視変換では立体形状データや視点などの変換データを与えることにより,任意の位置から見た図を作ることができる.しかし,この方法では意図した図を直接描くというのではなく,計算結果として図が与えられ,それをみて自分の希望にあっているかどうかを判断するのである.このために,意図にあった図を作画するために,データの変更を試行錯誤で行わなければならなかった.
これに対して,永田[永田76]が提案した骨格法は人の意図した2点透視図を描くために提案されたものである.この中で,骨格とは,直方体を空間に固定し,その投影図を図面上に固定したものであり,透視図を描くことのできる直方体の5本の線分と定義されている.この方法によれば,透視表現された図の中に,初めに作画したフリーハンド骨格が残るため意図した図を作画できる.この長所を生かし,計算機が正確な図法に従って作画してくれたり,作画の補助を行うことができれば,フリーハンド作画の不正確さを補うことが可能である.
そこで骨格法を応用して,計算機を用いて3次元形状の表現を行うことにした.これらの骨格をフリーハンドで描き,3つの消点を計算する方法,および,作画法を自動化し,意図した図を得るための入力方法を考案し,形状の定義,表現作画技法をまとめた.ここで扱う作画法では,図形は直交3軸に平行になるように,または,2軸のなす平面にのるように作画される.
さらに,手描き透視図と写真の合成,3次元モデルを利用するときの構図決定法,陰影付けへ応用することを考えた.従来,これらの応用について次のようないくつかの問題点があった.1)写真合成において,人の経験による作画は消点が作画によって求めにくく,その設定を間違えると不自然な図になること,専門的な訓練が必要とされること,デザイナが従来行っていないことを多くしなければいけないことが上げられる.2)土木建築方面におけるモンタージュパースは空間上の点と写真上の点を測定したり,連立方程式を解く必要がある.3)陰影付けにおいて光源位置を3次元データで与えるため,出力された絵をみてその良悪を人が判断しなければならない.このような問題を解決するために,消点の位置計算,視点位置,光源の方向の推定,および,透視図から3次元データを求める処理を実現することにより解決した. この結果,3次元形状を意図した図として作画するために,骨格法および,図学の作図手法を計算機処理で実現した基本作画技法が有効であることを確かめた.
以下,6.2節では骨格法による消点決定,6.3節では,立体形状の構成と表現法のためのアルゴリズム,6.4節では,基本立体の骨格,および入力法,さらに,6.5節では視点推定計算とその利用,6.6節では立体再構成,6.7節で構図変更,6.8節で光源方向の計算とその利用について述べる.
6.2 透視図作画と消点計算
6.2.1 透視図の作画
透視図を作画するための一般的手順は図学の教科書[大久保71]をはじめとしてよくみられるものである.ここではこれらの作画手順を利用する前の段階から考察する.このためにデザイナに作画を依頼した.その例が図6.1である.四角いカップを描くという指示によって,これらの図は描かれた.これらをみると大ワクは定規を用いて描かれ,詳細部はフリーハンドで描かれている.また,陰影は感覚によって描かれている.
これらの作画の手順をまとめてみると,
1)透視図の基本線(直方体)を描く.これによって構図が決定される.
2)輪郭を描く.このとき直方体に丸みや厚みをつける.
3) 取っ手を描く.小さな部分であるので基本線を描いていない.
4)下描きされた図をもとに,最終的な線を描く.
5)光の方向を仮定し,陰をつける.この陰は立体的に見せるためにつけている.
6)背景に影をつける.この影はわずかについているだけで正確な影の形状を表わしてはいない.
これらの手順の中で,1)は構図の検討といえる.これは図6.2に示すように,小さな図でフリーハンドによって決められることが多いようである.手順2)は図6.3に示すように構図を決めた直方体の組み合わせで作画され,それをもとに,こまかな部分を描いていくのである.そして,手順4)から6)に従って,完成図を描いていくのである.このような作画手順は,学習活動により受けつがれていると考えてよい.従って,この方式から大きくはずれることは好ましくない.また,難しかったところは取っ手のような複雑で小さな部分の表現,構図,見方の決め方(違和感がないようにすること),透視変換による立体の作画寸法の割出しとその正確な作画である.
このように,フリーハンドによる作画では人の能力により,図6.4に示すように,誤ったものを描いてしまう恐れも大きい.その欠点を解決する方法として,骨格法は有効であると考える.
6.2.2 骨格法
骨格法を用いれば,意図した図を得ることができるだけでなく,作画面積を有効に利用できる.作画条件が規定されるため,その条件に従って基本作画方法を用いるものである.骨格はフリーハンド作画の限界であり,これから先の作画は図法に従って作画しなければ,正確な透視図を得ることができない.この骨格から消点を求めることができると考え,2点透視図の骨格を3点透視図に適用する方法を考察した.
空間内の平行線が透視図上で一点に交わる点を消点という.直交3軸の3つの消点は,各軸にそれぞれ平行な2本の線分を定義することにより求めることができる.図6.5において,線分A・A’,線分B・B’線分C・C’が各軸に平行であるとすれば,3つの消点はV1,V2,V3となる.この考えをもとにすれば意図した構図の3点透視図を描くことができる.しかし,この条件で消点を計算すると,水平線が傾いた状態が起きてくる.ここでは,一般に直交3軸のうち水平面を作る2軸の消点は画面上で水平線上にあると仮定し,図6.6に示すように3つの消点を決めるために,4本の線と2つの頂点(C,D)を結ぶ線分,水平線の合計6本を,本研究では骨格として用いた.点AからEで構成される太い線が骨格であり,これに基づいて消点が計算される.
6.2.3 消点の求め方
骨格が与えられたときの消点を求める手順は次のようである.
1)3次元で平行である2線分A・C,B・Dの交点を求める.これが第一の消点V1である.
2)この消点より水平線(地平線)を考え,線分B・Eと水平線の交点を求める.これが第2の消点V2である.
3)第3の消点V3は線分A・BとC・Dの交点によって求めることができる.3次元空間において四角形ABDCは長方形であり,線分A・BとC・Dの長さは等しい.
従来の消点を利用した方法では,作画面積に対して非常に大きな紙面を必要とすることが図6.6からわかる.計算機を用いる場合は,3消点の座標値を作画する画面の中におく必要はない.このため,画面を有効に利用できるだけでなく,今まで提案されてきた各種の方法を自動化することにより,作画時間の短縮,作画の正確性が実現される.次に,意図した透視図を作画するための入力方法と,ここで求めた3消点をもとにした作画方法の自動化について述べる.
6.3.基本作画手法と入力方法
作画技法の利用目的は,立体を構成していくためのものと線図として豊かな表現をしていくためのものとの2つに分けられる.ここでは,形,大きさ,位置を表現するものとし,直感に合うような入力方法を考えることにする.これを実現するために,従来の3消点法を用いた作画法を整理した.透視図法で用いられている手法は初等解析幾何学の演算で置き換えることが可能であり,意図した図を描くために,対角線の消点の計算,だ円の作画と角度分割,内挿,外挿,回転,鏡像,影付けの数種の作画法を用いる.この方法は作画の目的に合わせ,処理方法を逆に適用するなど入力が容易になるように考えられている.これらの手法は図学の教科書にみられるものであるが,解析処理を適用し,インタラクティブに作画を行う方法をまとめた例は見当たらない.以下ではこれらの作画を実現するための入力法と処理手順について述べる.
6.3.1 対角線の消点と正方形の投影図
正方形の作画は円柱や球,および回転角度を求めるためのだ円の作画に重要なものである.骨格法により3つの消点が求められているとき,骨格の水平面上へその2軸に平行な2辺をもつ正方形の透視図作画の処理手順を述べる.(図6.7)
1)画面上の一点Aと,その点から表示された軸の任意の一点Bを入力する.これが透視図上の正方形の一辺である.
2)水平線に平行な線分と線分A・Bおよび線分A・V1の交点をC,Dとする.
3)直径C・Dの円と点Aを通る垂線との交点Eを求める.
4)線分D・Eと45度で交わる線分と線分C・Dとの交点Fを求める.ここで,線分A・Fと水平線(V1・V2)の交点が対角線の消点となる.
5)線分ABを正方形の一辺とすると,V1,V2と線分A・Bおよび対角線の消点から,頂点ABGHの正方形の透視図が得られる.
三角形CADを回転し,画面に平行にした状態が三角形CEDである.三角形CEDは直角三角形であり,角度DEFを45度にとれば,その線は対角線となる.従って,線分A・Fは線分CDを軸に回転したものであり,対角線の透視図となる.正方形はこの対角線A・Gと線分B・V1の交点を求め,さらに,この点をもとに平行線を描くことによって作画可能となる.
6.3.2 円の投影図と角度分割
ここでは水平面上にある円の透視図であるだ円の描き方について述べる.だ円を描くための入力法は半径を入力する方法と正方形の一辺を入力する方法がある.半径を入力する方法では半径をもとに外接する正方形が計算される.従って,ここでは中心,および中心から表示された軸上の一点を入力し,正方形に内接するだ円を求める方法を示す.
1)不等辺四角形ABCDから対角線を利用し,だ円の中心Oを求める.そして,図6.8(a)に示すように平行四辺形A’B’C’D’を求める.
2)平行四辺形からだ円の共役直径をRytzの方法によって求める.
3)Oを中心とし,長軸KA,短軸KBを線分OEに対して角度θだけ回転する.これによって正方形に内接するだ円を描くことができる.(図6.8(b))
不等辺四角形から平行四辺形にすることによって,アフィン的性質を利用できるようにしている.対角線の二等分線(AO,DO)の作画は射影変換された正方形をアフィン変換された状態にする操作である.従って,二等分線同士の交点は平行四辺形の中心となる.
角度分割は図6.9に示す方法によって可能となる.外接正方形とだ円の接点を0度,90度,180度,270度とし,水平線と視心からの垂直線との交点と接点を結ぶ線を作り,参考円の直径との交点を求める.この点からつくる鉛直線と参考円の交点が0度となる.参考円はだ円の実形を表わすもので画面に平行であり,共有する直径は実長を取ることができる.
また,この逆の操作を行うことによって,だ円上の任意の点の回転角度も求めることができる.さらに,回転角度を与えた場合のだ円上の点も計算できる.
6.3.3 内挿,外挿技法
立体を構成していく方法として内挿,外挿の技法が有効といえる.内挿,外挿の計算から求められた点を結ぶことによって,より正しい形状を構成していくことが可能となる.平行線を引くことは計算された消点と内挿,外挿法を利用することによって実現できる.与えられた線分に対する割合を入力することによって,各辺の内部の点や延長した点を求める手順を図6.10に示す.ここでは長方形ABCDが与えられているとき,この長方形と同一平面上に同一形状のものを透視図表現された図の上で外挿操作によって求める.
1)線分D・Cに平行な線を点Aを通るように設定し,この平行線と線分D・Bの交点Eを求める.
2)線分D・Eと線分A・V1の交点をBとする.線分A・Bは線分D・Cと空間上で同一長さである.
3)線分A・Eと同じ長さを線分A・E上に取り,線分F・Dを求め,交点Gを求める.3次元空間で線分A・GはA・Bの2倍となる.
他の辺でも同様の処理を行うことによって,直方体の内部の分割も可能となる.ここで線分A・FとA・Gの点列はDを中心として射影的な対応をしている.このために,線分A・Fはアフィン変換された線分であり,長さの比の関係を等しく取ることが可能である.従って,射影的な対応をする線分A・B上の対応点は内挿,外挿された点となる.
6.3.4 回転手法
回転した物体を描くとき,回転角度を与える方法と任意方向を描く方法の2種類がある.角度が与えられた場合,その角度が示す方向を求めることは前述の角度計算によって可能である.ここでは,方向を与え,回転後の軸を求める方法を示す.
1)図6.11に示すように,回転後の軸の方向A・Bを入力する.
2)線分A・Bと消線の交点を求める.これが回転した消点V2’である.
3)線分V1・V2’から視心Cを通る垂直線と線分V2・V3の交点をV3’とする.
4)変換された消点から与えられた立体の頂点座標を求める.
3つの消点で構成される三角形の垂心は視心である.視心は回転操作によって変化しない.また,一つの軸を中心に回転するので2つの消点は変化し一つは固定される.これらの条件をもとにすることによって,2つの消点は決定できる.
6.3.5 鏡像作画法
鏡像法は対象物を構成するとき,および,鏡に映ったものや池に映ったものを表現するために重要である.鏡像をつくるためには面の向きとその位置が必要である.図6.12に面の方向として垂直面を選択し,その位置を画面上で入力することによって鏡像を得る方法を示す.
1)点Aを与えることによって点Aを通る水平線を引き,与えられた水平面上の立体の頂点Cと測点Sを結ぶ.
2)水平線の頂点C’を点Aを基準にして対称にB’をとる.
3)点B’とSを結び,交点Bを求める.この点が点Cの鏡像である.
点Aを通る水平線は測線と呼ばれ,この線上で実長を取ることができるので,点Aを中心に対称となる同一長さの点を取ることが可能となる.
6.3.6 影付けの技法
影は対象の位置や姿勢を感覚的に理解させるために大切なもので,自然な感じを与えるものとして有効である.意図する影付けを行うためには影の形を直接示すことである.つまり,光源の位置を与えるのでなく,影のできる部分を示すことである.従って,与えた影の一部の情報より光源の位置と影の消点を見つける手順によって,水平面に生じる影の作画を行った.(図6.13)
1)影の方向を示す一辺B・Cを入力し,水平線との交点Sを求める.この点Sが平行光線の平面図の消点である.
2)線分C・Aを延長し,線分S・V3との交点Oを求める.この点が光源の位置である.
3)Oと立体の各頂点を結ぶ線分とSと立体の平面図上の各頂点を結ぶ線分との交点を繰り返し求めることにより,影の形状を得ることができる.
6.4 立体図形の作画
ここで扱う図形は直方体,柱体,円錐などである.これらの図を単体で作画するための入力データを図6.14に示す.図の丸い点が入力座標である.
1)立方体:一辺の長さ(2点入力),2)直方体:3辺の長さ(4点入力),3)円柱:中心と軸方向の半径の長さ,高さ(3点入力),4)円錐:中心と軸方向の半径の長さ,高さ,(3点入力),5)円錐台:上面,底面の半径(4点入力),6)正多角柱:正多角形を囲む円の半径と高さ(3点入力),7)正多角錐:正多角形を囲む円の半径と高さを示す一辺(3点入力),8)正多角錐台:正多角形を囲む円の半径と上面の半径(4点入力),9)柱体:底辺の座標と中心,高さ(座標n+1点入力),10)多角錐:底面の座標と高さを示す一辺(n+2点入力),11)多角錐台:底面の座標と中心,高さ,上面の1点(n+3点入力)である.
点を入力するとき,高さ方向や半径方向の補助線を表示することにより,形を容易に決定できる.さらに,底面の向きを選択することによって,立体の向きを決定できる.
6.5 視点推定計算
本節では手描き透視図により,求められた消点から投影中心である視点座標を求める方法について述べる.
図6.15に示すように点Pを含み,角度αである半直線を考えるとき,直線Lの消点はF/tanαである.視点E,視点座標系E-UVW,地上座標系O-XYZは固定とする.ここでVを視軸とすると地上座標系との関係は図6.16のようになる.Vをα,βだけ傾けた時,消点V1,V2,V3は画面の座標系において,次のようになる.
V1=(F’/tanα,HL)
V2=( -F’*tanα,HL)
V3=(0,-F/tanβ)
F’=F/cosβ,HL=F*tanβ
で求めることができる.
V1,V2,V3が既知の時,α,β,Fを次の手順により求める.
1)線分V1・V2の中点Oを求め,Oを中心とし,直径をV1・V2とする円を作画する.
2)HL’から垂線を引き,円と垂線の交点Eを求める.
3)線分E・HL’と線分HL’・V1より,角度αを求める.
4)角度βも同様にHL,V3を通る円より求める.
この計算法を利用して,図6.16に示す直方体を作画したときの視点データと今回提案する方法による計算結果を比較する.図6.16の視点データ(α,β,F)は38゜,-41゜,214.である.これに対して,図6.17の直方体の骨格を入力して得られたα,β,Fは38.6゜,-42.8゜,214.3である.これから分かるように誤差も少なく,フリーハンドで描いた透視図から視点データを求めることができる.
6.6 立体再構成
手がき透視図に対して,その立体の一辺の大きさを与えることにより,立体データ(頂点とその接続)が図6.18の方法から求めることができる.正方形の一辺に対する比によって,直方体の各辺の長さを次の手順によって求めることができる.
1)線分C・Eに平行な線を点Aから引く.
2)この線と線分C・Dとの交点をD’とする.線分A・D’は立方体がアフィン変換されたときの状態を示し,比例関係が不変である.
3)線分A・Fを求めるために線分C・Fと線分A・D’の交点F’を求める.これから,A・F’,A・D’の空間上の長さの比が得られる.
図6.19は手描き透視図とそれから求めた3次元モデルの3面図である.この方法で求めた3次元モデルを利用して濃淡表現することを考える.手描き透視図により,視点データが既知であり,また,3次元モデルの大きさを指定することにより,その位置は比例関係によって求められる.これによって,物体を投影変換するためのデータが決定されたことになり,手描き透視図に描かれた形状と一致する3次元モデルを作成し,その濃淡表示を行うことができる.複数の立体を再構成する場合は,立体のつながりや分割した点の情報を利用し,基準となる立体との空間的位置関係を求める.また,隣接しない立体の位置を求めるためには,基準となる立体からの空間的位置を外挿法などにより明らかにする必要がある.
6.7 構図の変更
手描き透視図において希望する構図の透視図を一つ描くことは容易に行うことができる.しかし,図を作成していく間に,また,完成後に,異なった構図の透視図も作画してみたいということも生じる場合がある.ここでは,立体再構成によって,作られたデータを用いて構図を変更する一つの方向を指示するだけで,同一の3次元モデルの構図変更が可能であることを示す.(図6.20)
構図を変更するための入力,および,処理は回転処理を用いて行う.
1)方向を指示する一辺A・B’を入力する.
2)回転処理と同様の方法によって,V1’,V2’を求める.
3)再構成によって得られた3次元モデルを,各方向にあてはめる.
6.8 光源方向の計算
立体の一辺に対応する影の方向を示す2点を入力し,光源方向を求めることができる.この方法を図6.21に示す.
1)線分A’・Bと線分V1・V2の交点から平行光線の平面図の消点Saを求める.角Saは実角となり,方位角を表わす.
2)線分A・A’と線分Sa・V2の交点Vaを求める.
3)線分Sa・Eを半径とする円と線分V1・V2の交点Sbを求める.線分Sa・Eを回転し,立面図とする操作である.(E:平面図上の視点)
4)SbからVaに向かう方向は実形を表わしており,角Sbは仰角となる.
このように,影の方向を与えることにより,意図した影付けを行うことができ,その光源の方向も求めることができる.
6.9 結言
本章では,骨格法を用いて,3次元形状の作画および,透視図を作画するための基礎作画法を自動化した.そして,この作画法を手描き入力によって用いることを考察した.さらに,手描き透視図を用いて,消点の位置計算,視点位置,光源の方向の推定,および,透視図から3次元データを求める処理を実現した.
この結果,
1)骨格となる数本の線分から3つの消点を計算し,それをもとに透視図を作画したり,消点を移動させたりすることにより構図を変更したり,写真に手がき透視図を合成したりすることが可能となった.
2)従来の数多い作画法から,計算機手法による基本的作画法をまとめることができた.
3)求められた3つの消点から視点を推定する計算方法は,直線の交点や円との交点計算などを利用した単純なものである.この方法を用いれば,手描き透視図から望む構図の視点座標などが容易に得られる.このような2次元処理によって3次元形状の透視図を作成することは,意図した図を作画するために重要な技術である.
4)光源の方向を手描き透視図に指定した影の方向から求める方法を述べた.これからこのデータを用いることにより意図した方向の影を描くことができ,3次元モデルの陰影付けへの入力手段として有効であることがわかった.
5)手描き透視図をもとにした立体再構成法の基本的考え方を述べた.そして,透視図を用いた立体データ入力の有効な方式になる可能性を示した.