天使遠近法

今日はちょっと変わり種を一つ。遠近法といえば、誰もが真っ先に思い浮かべるのは透視図法(線遠近法)だと思いますが、逆に透視図以外の遠近法を挙げてくださいというと、なかなか答えられない人も多いのではないでしょうか。それもそのはずで、世の中の遠近表現の大半は透視図であり、写真もCGも基本原理は透視投影です。(パノラマとか魚眼とかも、ありますけどね)

カメラ(というかレンズ)はハードウェアなので、そうそう他の投影原理を試せないというのはありますが、ソフトウェアにしても透視投影以外の投影法を主軸に添えている3Dレンダリングソフトは多分ないと思います。差別化を図るために、オリジナルの投影方法が登場してもよさそうなものですが、なぜソフト会社(ライブラリ作ってる会社?)は透視投影以外の投影方法を開発しないのでしょうか?

透視投影以外の投影方法が存在しないわけではないのです。しかし、実装されない。多分需要がないから。それ以上に透視投影が投影原理として、ある種完成されていていじくる隙がないというのも挙げられます。今日のテーマの天使遠近法なんていうのも、多分3Dソフトに載ることはないでしょう。

 

f:id:reminica:20150327044158p:plain

最初に天使遠近法という名称についてですが、広く普及している正式名称というわけではないようです。ある本でそのように呼んでいるらしく、他に適当な呼び方もないので、本ブログでもそのように呼ぶものとします。(原著をあたっていないので、細かい理論が異なるかもしれません)

上図は一見すると普通の透視図に見えるかもしれませんが、透視図とは異なる原理で描いてあります。透視図(下図)は広角領域ほど歪みが強くなり、立方体が細長くなるという問題を抱えていますが、これを(表面的に)改善したのが天使遠近法です。

f:id:reminica:20150327050721p:plain

なにが違うかというと、奥行の表現です。通常の透視図は手前に来るほど歪みが大きくなりますが、天使遠近法はどの奥行に対しても、同じ比率で奥行を描くため、どれだけ画面を広げても歪まないのです。

そんなに簡単に歪みが取れるなら、なぜそっちがメジャーにならないのかというと、それ相応の代償を負っているからです。この投影方法は簡単に言うと、多視点です。これに対して透視図は単一視点です。

グリッドの横1列が1枚の透視図に相当します。この例では80列あるので、80枚の透視図をつなぎ合わせたことになります。1列ごとに距離点や視円錐の大きさが異なるので、多視点というわけです。(青列の奥行では青の距離点を使い、赤列の奥行では赤の距離点を使います。視円錐や他の角度の消失点もそれに準じます。青列と赤列は消失点や視円錐も含めて相似です)

f:id:reminica:20150327033907p:plain

どういうことかというと、仮にグリッドの一辺を30cmとすると、横1ライン描いては観測者が30cmほど下がり、また1ライン描いて30cm下がり、これを延々と繰り返したのが天使遠近法です。カメラで言うと、30cmずつ後ろに下がりながら、写真をたくさんとって、それらを1ラインずつ切り取ってつなぎ合わせたものに相当します。

常に被写体(地面のタイルなど)に対して、同じ角度で撮影することになるため、近景に対してはいわゆる広角領域が発生せず、像がゆがみません。(上の例は広角気味に描いていますが、画角は調整できます)。欠点は奥に行くほど視円錐が小さくなるため、遠景が超広角になること。また視点をいじくるため、グリッドとグリッドの間で不連続となることです。結果として直線性は維持されず、空間上の直線は、視心に向かう線を除けば、すべて折れ線になります。

f:id:reminica:20150327033436p:plain

1点透視図であれば、すべての直線が視心に向かうので、 直線だけで全体を表現できるのですが、2点や3点透視図になると、直方体の辺がポキポキ折れてしまいます。図は45°方向の線しか描かれていませんが、0°方向以外であれば何度方向であっても同じように折れ線になります。グリッドの分割を無限に細かくすれば滑らかな曲線になりますが、曲がることに違いはありません。その点を考慮すると、基本的に1点透視図以外は描かない方が良さそうです。

むろん透視図法ではないので、測点法やら増殖法やらの透視図の作図法は基本的に使えません。消失点は視心のみです。どの角度も視心に向かいます。高さ方向も例外ではなく、坂道であっても視心に向かいます。(地面に描いた対角線と同じ法則です。ある程度上ったあと視心に吸い込まれるように曲線を描いて下降します。むろん下り部分は陰になるので見えないですが)。ある意味簡単ではありますが、消失点に向かう線が曲線になるため、透視図法ライクに消失点に定規を当てて作図することはできません。基本的にグリッドだけを頼りに描くしかないです。

 

図形的特徴は、横1列(赤いライン)だけを取り出すと、普通の透視図の規則に完全に沿っています。ところが縦1列(青いライン)に着目するとすべての図形が相似となっています。これは平面だけでなく、立体構造物であっても同じで、同じ縦ライン上にいれば、図形は相似となります。例えば、青ラインの右にある2つの立方体は完全に相似形であり、手前の立方体を縮小コピーすれば、奥の立方体と完全に重なります。透視図ではそんなことはありえません。

f:id:reminica:20150327033239p:plain

グリッドの作り方は簡単です。まず一番手前の1ライン(赤いライン)だけを普通の透視図の規則に沿って描きます。つまり対角線を同一の距離点に収束させます。この1ラインを広角に描いてしまうと、絵全体が広角になってしまうので注意です。

あとはひたすら縮小コピーを繰り返すだけです。コツは水平線とセットで縮小することです。つまり水平線とグリッドをグループ化等で一体化させておき、水平線が移動しないよう縮小を掛けます。視心の両側は長さを均等にしておいた方が良いです。

縮小率は最初のラインの手前と奥の辺の比を使います。手前が100、奥が90の長さの場合は、90%に縮小します。この場合、比率はどこまで行っても90%のままです。ラインが溜まってきたら、それらをまたグループ化してまとめて縮小すれば、あっという間に水平線付近まで埋まります。(4列まとめて縮小する場合は、縮小率は0.9の4乗です)。上の例では、横84マスx奥80マス=6720マス描いていますが、それでも15分ぐらいで描けます。ソフトはAdobe Illustratorを使いました。

 

本格的な絵を描いていないので、この投影法の実用度を測りきれませんが、1点透視図かつグリッドに沿うもの(チェス盤とか?)であれば、あるいは実用に耐えるかもしれません。ソフト的に実装するのも、比較的簡単だと思います。要は奥行に応じて視点を変えるだけなので、基本は透視図の計算式でレンダリングできます。ただ異なる奥行間を線で結ぶのが難しいのかな……。 

 

- 追記 - (03/28)

f:id:reminica:20150328193647p:plain

ちょい広角気味ですが階段のサンプルです。傾斜角35度。このように階段の傾斜線も曲線を描いて、視心に収束します。天使の階段とでも呼びたいところですね。階段を登っていたと思ったら、いつの間にか降りていたという表現には向いていそうです。