2015年8月1日土曜日

UE4で360度動画を作る


UE4のフォーラムに360度撮影できるプラグインが公開されてるのを見つけました。
https://forums.unrealengine.com/showthread.php?71489-360-Panoramic-Export-Pipeline

早速上記ページのリンク先からプラグイン一式を落としてきて、
自分のプロジェクトに追加してコンパイル…したのですがコンパイルエラーが出てビルドに失敗します。
4.8.2のせいかな?と思って、4.7.6でも試してみましたが、同じエラーが出ます。

しかもよくわからないエラーです。
ObjectTools.hで意味がよくわからないエラーがたくさん出てます。

さっぱりわからないので、StereoscopicRenderBlueprintLibrary.cppで
ObjectTools.hをインクルードしないようにして、
ObjectTools.cppからAssembleListOfExporters関数だけコピペして、
ObjectTools::AssembleListOfExportersの呼び出し部分を置き換え。

そしてビルドすると、無事ビルド成功しました。
自分の環境が何か悪いのかもしれません。

後は上記ページのチュートリアル動画を見て使い方を覚え、
実際に撮影するだけ…

と思ったら、吐き出される画像形式がHDRでした。
これを動画に結合するツールを持ってないので、
HDRじゃない形式で吐き出させられないかと
StereoscopicRenderBlueprintLibrary.cppを少しいじってみましたが、うまく行かず。

諦めて、ImageMagickでconvertすることにしました。


一枚だけ取り出すとこんな感じです。なかなか綺麗です。



360度動画はこちら。
レンダリングに時間がかかるので、FPSは少なめで作りました。
ただし解像度は4Kでアップしてます。
4Kで見ると解像度感が乏しくなりがちな全天球動画も結構くっきりしてます。


2 件のコメント:

  1. 投稿失礼いたします。
    こちらの記事を参考にUE4のフォーラムより「360 Panoramic Export Pipeline」をDLし、試してみました。
    サンプルレベルの「StereoExample」は問題なくレンダリング出来るのですが、
    新規レベルでBPの「BP_GearVRCameraRig」挿入し、キューブ描画ターゲットを設定して試してみましたが、上手く行きません。
    また、サンプルの「StereoExample」内にある「BP_GearVRCameraRig」を複製して元のカメラデータを消したりしても上手く行きません。
    新たに「BP_GearVRCameraRig」を設定する場合、キューブ描画ターゲット以外に何か設定する必要はあるのでしょうか?参考のyoutube動画を見てもやり方がわかりません。
    ちなみにバージョンは4.10です。
    宜しくお願いいたします。

    logエラーは下記のように出てきます。
    "Assertion failed: AllocationFlags[Index] [File:D:\UnrealEngine-4.10.1-release\Engine\Source\Runtime\Core\Public\Containers\SparseArr

    UE4Editor_Core!FDebug::AssertFailed() [d:\unrealengine-4.10.1-release\engine\source\runtime\core\private\misc\outputdevice.cpp:374]
    UE4Editor_Engine!TSparseArray,TWeakObjectPtr > >,TSparseArrayAllocator >::RemoveAtUninitialized() [d:\unrealengine-4.10.1-release\engine\source\runtime\core\public\containers\sparsearray.h:194]
    UE4Editor_Engine!TSet,TWeakObjectPtr >,TDefaultMapKeyFuncs,TWeakObjectPtr,1>,FDefaultSetAl() [d:\unrealengine-4.10.1-release\engine\source\runtime\core\public\containers\set.h:514]
    UE4Editor_Engine!TSet,TWeakObjectPtr >,TDefaultMapKeyFuncs,TWeakObjectPtr,1>,FDefaultSetAl() [d:\unrealengine-4.10.1-release\engine\source\runtime\core\public\containers\set.h:595]
    UE4Editor_Engine!USceneCaptureComponentCube::UpdateDeferredCaptures() [d:\unrealengine-4.10.1-release\engine\source\runtime\engine\private\components\scenecapturecomponent.cpp:435]
    UE4Editor_Engine!UWorld::Tick() [d:\unrealengine-4.10.1-release\engine\source\runtime\engine\private\leveltick.cpp:1307]
    UE4Editor_Engine!UGameEngine::Tick() [d:\unrealengine-4.10.1-release\engine\source\runtime\engine\private\gameengine.cpp:936]
    UE4Editor!FEngineLoop::Tick() [d:\unrealengine-4.10.1-release\engine\source\runtime\launch\private\launchengineloop.cpp:2427]
    UE4Editor!GuardedMain() [d:\unrealengine-4.10.1-release\engine\source\runtime\launch\private\launch.cpp:142]
    UE4Editor!GuardedMainWrapper() [d:\unrealengine-4.10.1-release\engine\source\runtime\launch\private\windows\launchwindows.cpp:126]
    UE4Editor!WinMain() [d:\unrealengine-4.10.1-release\engine\source\runtime\launch\private\windows\launchwindows.cpp:200]

    返信削除
  2. StereoExampleのレベルブループリントに
    「開始1秒後にExport on Tickをtrueにしてエクスポート開始
     その3秒後にExport on Tickをfalseにしてエクスポート終了」
    というコードがあるのですが、新規レベルではそれをやっていますでしょうか?

    返信削除