【CG】UE4で1億画素以上のパノラマ画像出力に挑戦する

Pocket
email this

 忘備録です。

 ご縁もありネットVR写真館のパノラマがVRプレゼンテーションのサンプルとして使用していただけることになりました。活動レポート等がネットに載るとかの確認が私の方で取れたら改めてご紹介しようと思います。ヨーロッパでですが。
 私も含めVRプレゼンテーションを手がけている多くの方は、業界的にまだまだ発展段階でありアイディアに苦戦しています。実例は双方にとって今後の非常に良い材料となりえるでしょう。



どこまで高解像度で出力できるのか

 さて本題。できるだけ高画素を要求されたのでUE4のPluginsにあるPanoramic Movie Captureはどこまで行けるのかやってみました。
 私のPCはNVidia GeForce GTX650, VRAM=2GBです。実はモニタリングしていると、デフォルトの4,096ピクセルで2GB振り切っちゃっているのでこれ以上無理なのかなと思っていました。
 まあひとまず



実はブループリント設定に順序があるっぽい

 とりあえず2048pxの3倍じゃ。シャア専用じゃ。と思い、今のレベルブループリントに対して単純に「SP.StepCaptureWidth = 6144」に変更。
 しかし出力された画像サイズは変わらない。どうして? と思いログを見ると「SP.PanoramicMovie」引数を認識させた時点で設定が確定するらしいです。私のブループリントは「SP.PanoramicMovie」の方を先に呼んでいたから変わらなかった、ということらしい。

 NGパターン。「SP.PanoramicMovie」の次に「SP.StepCaptureWidth」がある。

 OKパターン。「SP.PanoramicMovie」の前に「SP.StepCaptureWidth」がある。

 以下が修正後のレベルブループリント。OKパターンの通りになっています。




どこまで行けるか

SP.StepCaptureWidth = 8192 の場合

 とりあえず2倍の8,192ピクセルでやってみました。なんと普通に作れました。やっぴ~(ジャンケンマン風)。


SP.StepCaptureWidth = 12288 の場合

 じゃあ3倍の12,288ピクセルでやってみたところ、落ちました。しかもPlay直後にストーンッッッと落ちる。「10,000ピクセルとかでリミッターがかかっているのか?」と思ったがメモリ不足で落ちている感じでもないし、どうも腑に落ちない。ソース見てみるかな。


ソースから原因を追う

 ソース見ればいいかと思ってソースをみて、デバッグまでしてみました。
 調査の結果、check()でコケていました。
 結論を言うと「StepCaptureWidth値を上げるに従い、CaptureSlicePixelWidth値もそれなりに上げる必要がある」ことが判明。

 このcheck()の条件を満たすように設定を変えてみました。「SP.StepCaptureWidth = 12288」と「SP.CaptureSlicePixelWidth = 1440」です。さあどうかな?

 無事に出ました! グーだね。
 しかも、PCの動作だけ見ているとまだまだ余力がありそうです。




何億画素まで出せるか。限界への挑戦

 ここからがいつもの悪い癖です。漢なら限界を突破したいじゃないですか。ロマンです。そこで、私のPCでどこまで出せるのかトライしてみました。

 2,048、4,096、8,192、10,240、・・・、そして20,480ピクセル(2億0971万画素)の出力に成功。ファイルサイズは156MB。左目、右目用の画像2枚が出るまでに46分もかかりましたw 

 で、ここから先がだめでした。30,720ピクセル(4億7185万画素)がもうちょっとで出そうだったんですが、40分くらい処理し続けて落ちました。GPU Monitorを見ていたらいつもは30℃を示している温度が53℃にまで上昇していました。ごめんね。。。

これが2億画素(200メガピクセル)の威力

 等倍で見てみると違いがよくわかります。ぜ~んぜん違う! これをkrpanoで変換してVRで見たら面白いかな。
 おっと、ということでコレを使ってkrpanoにかけてみようと思います。

左:4,096ピクセル(838万画素) / 右:20,480ピクセル(2億0971万画素)

コメントを残す