『戦場の絆』でおなじみの180°ドーム型スクリーンを自作してみます。
実物は特注の魚眼レンズを装着したプロジェクターでドームへ投影しているのですが、そんなレンズ持ってない(中古が出回ってたりはするが)ので普通のプロジェクターでなんとかしてみます。周辺部の光量・情報量・フォーカスなど魚眼にくらべて不利はあるものの、映せないことはないでしょう。
問題は投影する映像です。まず180°の広画角をレンダリングします。Unityでカメラに画角180°を設定するとこうなりました。
期待する魚眼的な見た目にはほど遠い。透視投影変換で光学的な結果を得られるわけではないことがわかります。実物はいったいどうやってるのか調べてみると、たいへん参考になる記事がありました。いわく、画角90°ずつ左右に分けてレンダリングしてくっつける。これを真似てみます。
画角90°のカメラを2つ、90°の開きで設置。いい感じになりました。次に、これをドーム状に歪ませてやります。半球を左右2つに分けた形のメッシュを作り、それぞれに対応するカメラのレンダーテクスチャを貼り付けます。
いちおうそれらしくはなったものの、左右の境目がいびつです。カメラ中央に向かって収束する透視画像の縁同士ですから当然でしょう。ならば、逆に中央ほど拡がるような変換をかけてやればいいのでは。と考えて左右のカメラそれぞれにFisheyeフィルターをかけてみました。
パラメータを適当に調整すると、なんとかなめらかにつながりました。光学的に正確なものではありませんが、それが要求されるまではとりあえず、らしく見えればいいことにします。