De Toverspiegel van M.C.Escher
エッシャーの宇宙

三点透視は万能ではなくあくまで平面に投影した図になります。アニメでカメラを回転させた時の背景はパノラマと呼ばれる円筒周面投影、人間の眼球やカメラレンズなんかは球面投影に(おそらく・・・)なります。この場合、投影された図を平面にすると直線は直線として投影されず曲線になっています。

これをイラストに応用する方法が分からずかなり前から悩んでたわけです( ;谷)で、1ヶ月前くらいに買ったエッシャーの宇宙という本。エッシャーの友人が書いた、彼の絵の解説本なんですが、ここにあっさりと答えが載ってました!素晴らしい位に論理的な解法で「おぉぅなるへそッ!」って。遠近法(パース)の解説が詳細に載ってるわけじゃないけど、長年のつっかえが取れてスッキリしました。

画家や製図工たちは同様にこの曲線式遠近法の技法にいちはやく到達していた。...エッシャーもかつて南イタリアの村の小さな僧院を描いたとき僧院の壁の水平な延長戦と中央の教会塔を曲線で描いた...その理由というのが、エッシャーにはそのようにみえたからというだけなのであった。

Bruno Ernst, 『エッシャーの宇宙』, 1976, 坂根厳夫(訳), 1983

エッシャーの絵にはこの円筒周面投影を利用した騙し絵もあって、これを直感的な構図の過程から到達したみたい。ホントすごいなぁ。非常に残念なのがエッシャーの作品に球面投影を実現したものがなく、解説もそこで断念されている事。魚眼レンズのような絵になるのかな。この解法を読んでから、暇さえあれば頭の中に球体と直線を持ってきてシミュレート中・・・。が、なかなか答えが出ない( ;谷)別の話になるけど今パースについてのレポートを書いてるので、そこでその円筒周面投影の解説なんかやってみようと思ってます。

ものすごい唐突なエントリーだぁ( ;谷)BlockquoteをCSSでデザインしたので使ってみたかった。なんとそれだけ!

page topこのページの先頭へ
Comment

3Dモデリングデータを用いてゲームを作っていたこともあって、
その辺は考えて論理的に書き出すほう方は思いついたのですけど…
大変ですよね^^;
3点で描いてから、対象の頂点と視点との距離を結びその距離を本来の距離に直す…
で、ほぼ正しいと思いますが…

先に3Dモデリングで魚眼のグリッドラインを出力してしまって、
それにあわせて描くのが手っ取り早いと思います。

  • 01. 15. 2010
  • from risari to spiral

"…その距離を本来の距離に戻す"
おぁ、なんか解法の糸口が掴めそうです!!
地図投影法の正距方位図法のように視心からの距離を平面上で展開する感じでしょうか。
今思うとあの地図はなんとなく魚眼レンズっぽいような。

3Dモデリングの処理はそういうところを演算してるんでしょうね。
本末転倒な感じですが、その描画のプロセスを知りたくなっちゃってるんですよね( ;谷)

ホント、なんだかスッキリしそうです!
どうもです!!

もっと考えやすくすると、
三点の横のラインが正しく考える場合、一直線でつないではいけなくて
視点を中心に奥に向かって弧を描くのが正しいので…
球の中心近くから球の内面を見る形になります。
(つまり見ている中心部が拡大されて見える。
 魚眼レンズの場合、球ではなく楕円形となり奥行き方向に伸びます。
 伸びすぎた場合、魚眼レンズのように描画エリア(画像)内部に楕円状の球体が納まらなくなって、円状態のふちをとることになります。
 この場合の球の最大領域は人間の黒目とそのレンズの度合いだったり、カメラのレンズの口径に当たります。)

始点の位置は当たり前ですが、画面の中心部に存在しないで画面手前の人間の視点近くに設けられることが多いので
画面に表示される面は始点よりも奥に存在するので側面などが長く延びつつ流れる形をとります。

なので、
"…その距離を本来の距離に戻す"
という行為は√計算のように人間が考えにくい物なので、
先に対象のオブジェクトを真上から見た状態のものを書き出して、
視点から対象の頂点を線で結び、視点よりも置く側にある長方形(実際に描画される画面)との接点を描画する(理想は全ての辺を結ぶ形で、真上からのみではなく、側面からも行う)

3Dモデリングが容易に取得できるのは、同じ方法で視点とを結び全て取得してしまっって、
その断片を画面に切り出してるからです。
(正確にはポリゴンの裏面や視点と描画領域外の部分の計算をほぼ行っていませんが…)


ゲームのMYST III :EXILEが人間の視点情報に近い形で空間を湾曲させて描画していたので、興味がありましたらプレイされて見るといいかもしれません。
人間の視点は2つありますからねw
その処理を行っているものはほとんどありませんので、参考になると思います。
(といっても、横に伸びる形でそれに従い若干歪み方が違う程度なのですけど^^;)


…逆にわかりづらい説明になったかもしれないです。。

  • 01. 15. 2010
  • from risari to spiral

弧を描くのは、球体の中心を視点とした場合に視点を通る平面で切断するからって事ですよね。
それを、視心を中心とした正距方位図法で展開するから弧になってる、更に視線と平行な平面で切断する場合(つまり視点と球面上の視心を通る平面)にのみ、展開図は弧ではなく視心を通る直線で描かれる、という感じでしょうか。

正距方位図法について今調べ中なので、その弧の性質がわかりませんが・・・。例えば、円筒周面投影だと振幅と位相が違うだけで全て正弦波になるみたいです。これは3Dで出力して逆算した方が早いかな。
球体に対する直線の位置関係というと、中心との距離というパラメータしかないけど、球体を投影面と考えた場合には視線という向きも含んでいて弧がどのように歪むか。よくある魚眼の解説が、平面投影でいうところの一点透視図法のような構図しかないので、視線とねじれの位置にある直線は難しいです( ;谷)

平面図から視線と投影面との接点を結ぶ方法は建築パースの足線法と同じですね。
三点透視だと高さ情報をパースラインでプロットするから上面のみでOKだけど、魚眼投影ではそれを上面と側面でやるわけですか、ふむふむ。

XBOX持っていなくてゲームはできないのですが興味深いです!
パースを考える上で、両眼視差を考慮に入れる事なんてまずないですから・・・( ;谷)

ためになるコメントありがとうございます!
そうかぁ、建築方面でなく3D方面に詳しい人に聞けばよかったのか・・・!

Post your comment


[will not be published]



comment: