世の中には、色々な方向を撮影した風景写真を自動で合成し、パノラマ画像を生成してくれるソフトウェアがある。全天球がなくても、普通のカメラがあれば、パノラマ画像ができてしまうのだ。それをパノラマビューアでぐるぐる回したり、VRで没入したり、3DCGの背景にしたりすることができる。
現実世界で撮影したもの以外でもパノラマが作れるので、好きなゲームの全方位スクリーンショットを撮ってパノラマ化し、その世界に没入してみようというのが本記事のテーマである。
アーマードコア6にはフォトモードというのがあり、ゲームを途中で一時停止してじっくりスクリーンショットを撮ることができる。カメラは全方位に向けることができるし、本物のカメラと同様に、画角や絞り、露出などをかなり細かく設定することができる。
この機能を使ってカメラの向きを変えながら連写し、うまく合成するとかなり綺麗なパノラマができるのだ。実際に合成してVR作業環境の背景に設定した様子をお見せしよう。
ガレージ内で撮影したライガーテイル。

作業背景として使うと気合いが入る。

オープンフェイス。

スネイルに監視される。こんな作業環境は嫌だ。

ガレージ以外でも作れる。とあるミッションのスタート地点。


こんな具合に、AC6の世界に没入して作業ができる。素敵だ……。
今回使ったのは以下の通り。
- 撮影: PlayStation 4
- 画像の移動: USBメモリ
- 合成: macOS + Adobe Lightroom
- 閲覧: Meta Quest 3
別の環境でも同じようなことはできると思うが、完全に同じというわけにはいかないので適宜アレンジしてみてほしい。また、別のゲームでも、スクリーンショットがうまく撮れれば同じようなことができる。自分で撮って合成して (個人利用の範囲で) 試してみてほしい。
合成に使ったAdobe Lightroomは、単独なら月々1480円で、最初は無料でお試しもできる。Photoshopとセットのフォトプランというのに入っている人も多いと思う。
他にもいろいろとパノラマ合成のできるソフトウェアがあり、Huginというオープンソースソフトウェアがあるのだが、残念ながら私のMacでは動かず、ビルドもいろいろハマったので今のところ使えていない。ほかにも “panorama stitching” や “photo stitcher” といったキーワードで検索すると情報が見つかる。
# ところで、「360°パノラマ」というと、水平方向に360°回せるだけなのか、それとも上から下まで全部の方向が見られるのかがはっきりしない。立体角で4πsrと呼んだほうがいいと常々思っている。
おおまかな手順
では、実際のパノラマ作りを解説する。手順はだいたいこんな感じ。
- (初回のみ) スクリーンショットを撮りやすいように設定しておく
- ゲーム内でフォトモードに入り、カメラの設定をする
- 角度を変えながら全方位を連写。パノラマ1つを作るのに15〜30枚くらい撮ることになる
- 撮ったスクリーンショットをPCに取り込む
- Lightroomに読み込んでPanorama Mergeを実行
- うまくいったらエクスポートする
- 眺めたり、VR作業環境の背景に設定したりして楽しむ
スクリーンショットを撮ろう
OS設定を変更
最初に、撮りやすいようにOSの設定をしておくといい。本記事ではPS4について書くが、他の環境でも「連続してスクリーンショットを撮るのになるべく支障がない設定」にすると良い。
- (推奨) SHAREボタンを押したときの挙動を「スクリーンショット向け」に : PS4のデフォルト状態では “SHARE” ボタンでスクリーンショットが撮れるのだが、撮るたびに左からぴろーんとメニューが出てきて保存方法を聞かれて大変煩わしい。これをオフにできる。
- (推奨) スクリーンショットを撮ったときの通知をオフ : スクリーンショットを撮ると、デフォルトでは左上に通知が表示される。これが消えるまでに数秒かかり、その間に次のスクリーンショットを撮ると通知が映り込んでしまう。通知をオフにしても、撮影時のピゴーンという音は鳴る。
- (お好みで) 画像フォーマットをpngに : デフォルトの画像フォーマットはjpgだが、わずかに画質が劣化する。はっきりと影響がわかるほどではないが、より良い結果のためにできればpngで撮ると良いかも。とにかく量を試して試行錯誤したい場合は、jpgのほうがファイルサイズが小さくてUSBメモリへの転送が速い。
ゲーム内で撮影する
準備ができたら撮影。ガレージで好きな機体をロードしたり、景色のいい場所に出かけたりする。最初は失敗することもあるので、あまり場所の選定にこだわらずにとりあえず試してみるのがいい。
- フォトモードに突入する。
- カメラ設定を変更する。視野角は大きめ、F値は最大にするのがおすすめ。
- UIを非表示にする。
- 下から順番に全方位を撮影していく。撮影のコツは後述する。
撮影しているときの動きはこんな感じになる (2倍速)。
以下のポイントをおさえて撮影すると合成に成功しやすい。
- 慣れないうちは視野角は最大にする。超広角カメラで撮ったような絵になる。慣れてきたら視野角を70〜80程度にすると、撮影枚数多め・失敗率高めになるが成功したときの画質が良くなるので。
- F値は最大にして撮影する。パンフォーカス。デフォルトだと2なのだが、それだとボケが発生する。綺麗な「絵」を撮りたければ被写界深度薄めでもいいのだが、VRで没入するならボケてもあまりありがたくない。また、ボケが大きいと合成に失敗しやすい。
- 画角100 (最大) の場合、「俯角75°くらいで1周撮影 → 俯角45°で1周 → 水平1回転 → 仰角45°で1周 → 仰角75°で1周」くらいのイメージで撮るとうまくいきやすい。
- カメラを真上・真下に向けない。足下や天頂がぎりぎり画面におさまるくらいの角度をつけて撮り、画像の天地がはっきりするようにすること。どうやら、天地が不明な画像はパノラマ合成における異物となってしまうらしく、90°倒れた画像が生成されてしまうことがある。
- 面積の20%くらいが前の画像と重なるくらいが目安。重なりが少なすぎると、スキマができたり、画像同士の位置関係がうまく認識されなかったりする。
- 物体から少し距離をとること。めり込むような位置にあるオブジェクトは非表示になるが、そういう現象があると画像の合成に失敗したり、合成された画像に不自然な箇所ができたりする。ひととおりカメラを回して、消えたり現れたりする箇所がないかをチェックする。
距離が近すぎる例。左の足場の手前部分が途切れている。
PCに取り込む
ひととおりスクリーンショットを撮ったら、PCに取り込む。USBメモリを使用した。
パノラマを合成する
Adobe Lightroomに取り込む。取り込む際は、撮影順序が乱れないように注意する。1セットずつアルバムにまとめると作業がしやすい。
合成に使う選択する。撮影順に沿って選択し、どの画像がどの画像と隣接しているのかが伝わるようにすると良い。

そして、Photo > Photo Merge > Panorama Merge を選択してマージする。

“Projection” の項目は “Spherical” を選ぶ。これを選ぶと正距円筒図法 (equirectangular) 画像を生成してくれる。他のオプションはいじらなくてもいい。

しばらく待つとプレビューが表示されるので、良さそうなら右上の “Merge” を押す。そこそこの確率で失敗するので、その場合は
- 真上や真下の画像を除外して再度合成する
- 画像を選択する順番を変更してみる
- 合成時の設定をいじってみる
など試行錯誤すると成功することもある。ただし、丁寧に撮ってもどうしてもうまくいかないことはあるので、気を取り直してまた撮影したほうがいい。
また、水平方向の写真を360°撮影し、”Cylindrical” が合成できるかどうか試すのもいい。
出来上がる画像のサイズは元画像の数やサイズにも依存するが、視野角100で15〜30枚くらいをうまく合成すると横幅2850pxになる。視野角80での合成に成功すると横幅4046 pxくらいの高画質になる。合成できたらエクスポートする。

鑑賞
パノラマが出来上がったら鑑賞しよう。鑑賞についてはツールも方法も目的もいろいろあるので、ここでは自分が試したものを簡単に紹介するにとどめる。
PCで
ブラウザで試せるものだとこちらが便利。クライアントサイドで動くっぽい。迫力はないけれどぐるぐる回せる。
VRで
実はVR歴が2ヶ月くらいで、あまり知識がない。調べていただいた方が有益な情報が見つかると思うのだが、自分が試した範囲のことを書く。使っているのはMeta Quest 3だ。
まずは作成した画像をヘッドセットに保存し、標準の画像ビューアで鑑賞してみる。方法はいろいろあるのだが、画像にブラウザでアクセスできる状態にしておく。Google Driveなどを使ってもいいし、自宅ネットワーク内で完結させたい場合は、画像を置いたPCでHTTPサーバを起動して、同一ネットワークに接続したデバイスからアクセスするといい。Pythonを使うなら、画像のあるディレクトリでコマンドラインから
python -m http.server 8080
でOK。Node.js民ならばhttp-serverを使うのも手軽で良い。
ヘッドセットの側で “Browser” を開いてURLを打ち込む。右トリガー長押しで “Download Image” というメニューが出るので、これを選ぶと保存される。

ブラウザを閉じたら次は “Files” を開き “Downloads” タブを選ぶとさっきダウンロードした画像が見られる。

右下に歯車アイコンがあり、投影方法を選べるので “360 2D” を選ぶと没入できる。
自分で用意したパノラマ画像を背景として利用できるアプリは色々ある。
私は最近よくImmersedというバーチャル作業環境アプリを使っている。PCの画面をVR空間に配置できる。Meta Quest 3なら解像度も十分なので、快適に仕事ができる。Immersedでは、宇宙船内やカフェ、落ち着いた山小屋などの立体的な3D空間を選ぶことができるし、自分で用意したパノラマ画像を背景にすることもできる。ただし手順がけっこう面倒でまじめに解説すると結構な分量になるので、興味のある方は調べてみてほしい。