MMD-VR180 HOWTO 【目次】
5. レンダリングとエンコーディング
レンダリングではWindows自動化ツール UWSC を用います。
10回MikuMikuDanceを起動することで10本のaviファイルを作成します。
エンコーディングは、レンダリングの最後に、UWSCからwindowsバッチファイルを実行することで実現します。この中で、ffmpegを複数回呼び出し、aviファイルをmp4に統合します。
最後に統合されたmp4にメタタグを書き込んで、VR180用のmp4を完成させます。
5.1. ターゲットpmmファイルの確定
前節で作成した325-304final.pmmをMikuMikuDanceで読み込みます。
カメラ編集モードにします。
・メニューから、物理演算⇒演算しない、になっていることを確認します。
・メニューから、MMEffect⇒エフェクト使用、になっていることを確認します。
・カメラ操作の登録が第0フレームにしかないことを再度確認します。
フレーム操作を第0フレームに合わせます。
・カメラ操作で、「パース」、視野角135°、ボーン追従「VR180視点f16」の「作業用視点」
となっていることを確認します。
・視点で、「追従」、「ボーン」になっていることを確認します。
・アクセサリ操作で、「EquirectangularX」でRzが90°になっていることを確認します。
上図の状態でpmmを保存します。これがターゲットpmmになります。
ここではこれを 325-305-VR180.pmm とします。
最後に、MikuMikuDanceをウィンドウ状態にして閉じてください。(フルスクリーン状態で閉じると、レンダリング開始後もMikuMikuDanceがフルスクリーンで起動して、デスクトップ全体の様子を見るのが難しくなります)
これ以降、ユーザが手動でMikuMikuDanceを起動することはありません。
以降の説明のため、ターゲットpmmファイルは下記のディレクトリに保存されているものとします。(場所さえわかるのならどこでも構いません)
X:\mmd\tubep\325-VR180\325-305-VR180.pmm
X:\mmd\tubep\325-VR180\325-305-VR180.emm
5.2. ワーキングディレクトリの準備
5.2.1. ワーキングディレクトリの作成
空き容量が1TBあるドライブで、ワーキングディレクトリを用意してください。
うp主の例では、CドライブがWindows関係、XドライブがHDDでMikuMikuDance関係、Yドライブが1TBのSSDでワーキングディレクトリ専用にしています。
ここでは、 Y:\tmp-work をワーキングディレクトリとします。
Y:\tmp-work
[memo1] レンダリングとエンコーディングにおいて、325-305の30秒動画の例でおおよそ80GBを使用していました。作業が終われば、必要なmp4だけ残せばよく、他は消して構いません。325-305の例では325-305_LRM-5760-injected.mp4 (100MB)が最終的な生成物になります。必要なディスクサイズは作成する動画の長さと画の細かさに依存しますが、500GBでは足りなくなることが経験上何度かありました。SSDである必要はありませんが、エンコーディングでは大サイズのファイルの読み込みと書き出しを大量に行うため、SSDのほうが処理時間が多少短くなるようです。
[memo2] 解像度を5Kにして5分を超えるような動画だと、1TBでも足りなくなるかもしれませんorz。作業を見守っていてディスクが溢れそうになったら、中間ファイル(特にzzで始まるaviファイル)でもう処理済みのものは途中でも消していって大丈夫です。
5.2.2. 音楽ファイルの準備
ワーキングディレクトリに、ターゲットpmmで使っている音源wavファイルをコピーし、music.wavという名前にしておきます。これがエンコーディングの最後に音声トラックとして使用されます。
5.2.3. マスクファイルの準備
ワーキングディレクトリに、うp主が配布しているエンコーディング時のブレンディング用マスクファイル一式(pngファイル8個)をコピーして置きます。必要なのはターゲットpmmで設定した表示解像度に対応する2個だけなのですが、この際、全部置いておきましょう。ファイル名は変えないでください。
5.4. UWSCのインストール
Windows操作自動化ツールUWSCをインストールして使えるようにしておきます。
http://www.uwsc.info/ (2021/3/9現在ダウン中)
起動して、以下のようなウィンドウが出せるようになればOKです。
5.5. ffmpegのインストール
ffmpegをインストールして使えるようにしておきます。
とっつきにくいサイトですが、DLは2つ目のURLの中に置いてあります。
そのページの FFmpeg Windows Builds の Release というセクションで ffmpeg-release-essentials.zip を選んでDLしてください。
インストーラはなく、単に展開すればすぐ使えます。windowsのコマンドプロンプトで実行できることを確認しておいてください。以下のように実行できるならOKです。
展開先を覚えておく必要があります。ここでは、以下の場所に展開したとします。X:\ffmpeg\bin\ffmpeg.exe
X:\ffmpeg\bin\ffprobe.exe
5.6. UWSCスクリプトの準備
中身はテキストなので、メモ帳等で内容確認することができます。
変更する必要はありません。
5.7. UWSC設定ファイルの準備
うp主から提供する
325-305-VR180-uws.ini をコピーしファイル名を書き換えて準備します。コピー先はどこでもいいのですが、ターゲットの
325-305-VR180.pmmと同じところに、先頭の7文字を揃えて置いておくとわかりやすいと思います。例ではターゲットが"
325-305"で始まっているので、次のようになるでしょう。
X:\mmd\tubep\325-VR180\325-305-VR180-uws.ini
中身はテキストなので、メモ帳にドロップすれば編集できます。
以下の部分はターゲットpmmが変わるたびに中身を書き換える必要があります。
POST_PROCESSのファイル名の先頭7文字とAVI_PREFIXの末尾7文字は一致している必要があります。
---------
PMM_FILE ="X:\mmd\tubep\325-VR180\325-305-VR180.pmm"
POST_PROCESS="X:\mmd\tubep\325-VR180\325-305-VR180-bat.bat"
AVI_PREFIX ="Y:\tmp-work\325-305"
---------
以下の部分は各自の環境に合わせて書き換える必要があります。
ここではCODECとして
UT codec を利用しています。
MikuMikuDanceを直接操作してaviを書き出すときに指定できるものの中(かつffmpegが出コードできるもの)から選んでください。UT codec導入済みなら変更する必要はないでしょう。
FRAME_RATEは、MikuMikuDanceを直接操作してaviを書き出すときに指定するfpsと同じものです。 通常は60のままでいいでしょう。
---------
MMD="X:\mmd\x64\MikuMikuDance_v932x64\MikuMikuDance.exe"
CODEC="UtVideo YUV420 BT.709 DMO"
FRAME_RATE=60
---------
[memo] エクスプローラの「パスのコピー」ボタンを使うと選択したファイルの絶対パスがコピーバッファに入るので作業が楽です。
[memo] ファイルの後半にある"nop"(no operationの略)行のコメントオンオフを上手に利用すると、もしレンダリングが途中で失敗したときに、成功した部分についてはスキップして失敗した部分のみ再レンダリングさせることができます。
5.8. レンダリング用バッチファイルの準備
うp主から提供する
325-305-VR180-bat.bat をコピーしファイル名を書き換えて準備します。コピー先はどこでもいいのですが、ターゲットの
325-305-VR180.pmmと同じところに、先頭の7文字を揃えて置いておくとわかりやすいと思います。例ではターゲットが"
325-305"で始まっているので、次のようになるでしょう。
X:\mmd\tubep\325-VR180\325-305-VR180-bat.bat
中身はテキストなので、メモ帳にドロップすれば編集できます。
以下の部分はご自身の環境に合わせて書き換えてください。
---------
rem ffmpegとffprobeをインストール先に合わせる
set FFMBIN=X:\ffmpeg\bin\ffmpeg
set FFMPRB=X:\ffmpeg\bin\ffprobe
rem ワーキングフォルダに移動
Y:
cd Y:\tmp-work
---------
内部でファイル名の先頭7文字を自動抽出して映像ファイル名の確定に使っているので、ファイル名の先頭7文字は 5.7.節と5.8.節を通じて一貫するようにしてください。
このバッチファイルの内容は、UWSCで自動処理によるレンダリングが行われたあとの最後で実行されます。
ffmpegとffprobe用いて、エンコーディングを行います。
[memo] 何らかの事情で自動実行されなかった場合は、(レンダリングまで全て正常終了していてファイルが揃った状態ならば)本ファイルをダブルクリックしてエンコーディングのみ実行できます。
5.9. 実行
5.9.1. 実行開始
ここまでで全ての準備が整いました。
いよいよ実行です。
実行を開始すると、2時間から10時間程度はPCが使えなくなります。
途中でポップアップや通知などが出てくると処理が中断してしまう可能性があるので、そうならないようにしておいたほうがいいでしょう。様子がわかるようスクリーンセーバーもオフにしておきましょう。
(手を付けないままぶんぶん回り続けるPCを見ると、なんとなく「俺ってコンピュータ使いだよな」という気分がして微妙に楽しいのはうp主だけかしら‥)
1. UWSCを起動し以下のようなウィンドウを表示させます。
2. 上記5.6.節で用意した
Tark-tbp12-bones.uwsをドロップします。
3. 設定ファイルを聞いてくるので、自分で書き換えた325-305-VR180-uws.ini をドロップします。
4. UWSCがMikuMikuDanceを呼び出してレンダリング処理を始めるので、そっと見守り続けます。(1時間から6時間ぐらいかかります)
5. UWSCがMikuMikuDanceを10回呼び出した後、最後にバッチファイルを呼び出してエンコーディングを開始するので、終わるまでさらに待ちます。(1時間から4時間ぐらいかかります)この状態になったら、バッチファイル実行ウィンドウに触れない限り、PCのデスクトップ環境を触っても一応大丈夫です。(それでも、慣れないうちは触らないほうがいいと思います)
5.9.2. 実行状況の解説
この節では、生成される動画ファイルをそれぞれ解説します。自動化によって順次生成されてくるので、作業としては何もしません。見ているだけです。
レンダリングパートで、UWSCはMikuMikuDanceを10回呼び出して、aviファイルを10本作製します。作製順は 325-305-VR180-uws.ini に記載されている順です。L0 / R0 / L1 / R1 / L2 / R2 / L3 / R3 / L4 / R4 の順になります。Lが左目、Rが右目に相当します。
aviファイルは中間ファイルなので、画質を保つため、ロスレスなUT codecを用いています。そのため、どのaviファイルもサイズが巨大です。
エンコーディングパートでは、UWSCは 325-305-VR180-bat.bat を起動します。
黒地に文字がいっぱいなコマンドウィンドウが表示されて、中でffmpegを実行させている様子が見えるようになりだしたら、エンコーディングパートに移った証拠です。このコマンドウィンドウに文字を打ち込んだりしないようにしてください。(確か何かキーを打つと中断します。エンターキー打つと再開しますけど)
まず左目分をエンコーディングします。
L1とL2からzzL12-.aviを作成します。
L3とL4からzzL34-.aviを作成します。
zzL12-.aviとzzL34-.aviをブレンディングさせながらzzL1234-.aviを作成します。
L0とzzL1234-.aviをブレンディングさせながら325-305_Lm.aviを作成します。
この4つの作業のうち、前半二つは貼り合わせるだけなので比較的高速なのですが、後半二つはものすごく時間がかかります。(うp主の環境で速度比が1/15に届かないぐらい。つまり4分の動画ならそれぞれ60分かかります)
こうして得た325-305_Lm.aviが左目分の最終形態になります。
同様に右目分もエンコーディングします。
両目分を結合してmp4にします(LR-xxxx.mp4)。サイズが大きいことと、mp4圧縮をするため、この部分の処理も時間がかかります。そのあと、music.wavを合わせて主ターゲットの(LRM-xxxx.mp4)を完成させます。主ターゲットが5Kのときはそこから4K版を作ります。同様に、主ターゲットからiwara.tv用の4K/300MB版も作ります。
完成した様子が下図です。下ではアイコンを拾ってきたのでアスペクト比がおかしい表示になていますが、本当は2:1の横長動画です。
解像度は、ターゲットpmmで指定した値に従います。325-305-VR180.pmmの例では、5K (2880x2880) としていたので、325-305_LRM-5760.mp4が主ターゲット(上図左)です。これが後のYouTube向けになります。
うp主の所有するVRデバイス辺りだと5Kはちょっと再生が大変なので、自動的に4Kも同時に生成するようにしています(上図中央)。また、iwara.tvでは300MBまでというファイルサイズ制限があるので、4Kでさらに300MBというmicro版も生成するようにしています(上図右)。micro版は画質がむごいので、あくまで案内掲示用だと思ってください。
なお、同時にVR135も生成しています。mp4ではありますが、使わないのなら消して構いません。
周辺部を統合していないので、周辺部が黒くなっています。ファイルサイズはVR180とVR135でほとんど違いがありません。
ファイルサイズ小さくないわ範囲は狭いわで、いいところがありませんね。ならなんで作ってるのか?ということですが、慣れてくると、
1. レンダリング時にL0とR0の生成が済んだ時点でUWSCを強制終了
2. エンコーディング用バッチファイルを手動実行(ダブルクリックするだけ)
でもVR135だけは生成されます。つまり短時間で速報版が作れます。レンダリングは2本だけになるので、所要時間は1/5になります。エンコーディングも行うのは両目分の統合のみなので、実行時間は1/4程度?で済みます。(速報版と言っても、結構普通に見れます。視聴時に首をあちこち回さないような人ならこれで十分)
速報版を視聴してみて、期待通りなら、uws.ini内のnopが並んでいるところで、3(=L0)と4(=R0)を(コメントを外して)nop対象にして、UWSC実行を再度行うと、今度はL0とR0に手を付けずにL1からレンダリングが開始されます。
なお、VR135がずっと不要なら、batファイル内のVR135レンダリング部分を削除なりコメントアウトしてもいいかもしれません。
全てのmp4ファイルが無事に生成されているのを確認したら、サイズの大きい中間生成ファイルであるaviファイルは全て削除して構いません。
5.9.3. メタタグの埋め込み
Google VR180 Creator
ここではVR180 Creatorを利用します。
インストールして使えるようにしておいてください。
起動したら、「公開の準備」を選択して、主ターゲット(例では 325-305_LRM-5760.mp4 )をドロップします。
エクスポートすると、すぐにメタタグが埋め込まれた 325-305_KRM-5760-injected.mp4 が生成されます。ファイルサイズはほとんど変わりません。
これをYouTubeに投稿すれば、あとはYouTubeが勝手にVR180にしてくれます。
5KぐらいのVR180動画だと、YouTubeに投稿してからVRで視聴できるようになるまで運が悪いと1時間から半日ぐらいかかるときがあります(今はどうかわかりませんが、昔は公式に「待っててくれ」と書いてありましたw)。うp主はやりませんが、時間指定して封切とかしたい場合は、前の日ぐらいから準備しておいたほうがいいでしょうね。
このメタタグ埋め込みは、VR135でも同じ要領で可能です。
投稿まで辿り着くことができたら、是非ご連絡ください。
うp主、twitterとかSNS一切しないので、このblogの下のコメントか、つべのコメントか、iwaraのプライベートメッセージ辺りで‥。
喜んでお伺いしますw
5.10. 技術解説
Q. AviUtilとか使う方法も考えてよ!
A. 残念ながら対応予定はありません。うp主はAviUtilとかPremiereとか避けて通りたい人なのです。
Q. 延々と説明してた割には、結局先人の知恵の焼き直しじゃん。
A. その通りです。ポイントは技術ではなくて省力化wです。元2D動画のpmmファイルでカメラワークがカメラ中心位置≒注視点になっているようなのをいっぱいもってる人でそれをVR化したい人(=うp主)が手間最小でVR180をたくさん作れるようにしたかったのです。同じ境遇の紳士がどれぐらいいるのかしら。
Q.エンコーディング(でのブレンディング)はなんでこんな順番なの?
A. 5本のAVIファイルが以下のように重なっているので、境界をぼかしたマスク画像を使ってぼかし結合するようにしたのがポイントです。なおかつ、このときに中央のaviができるだけ使われるようにしてあります。これによって、視野角135°までは原理的に美しく、そこから周縁部の22.5°につながるところはブレンディングでそこそこテキトーに仕上がります。少なくとも境界線を見つけることは難しいでしょう。相当に色味が違うaviファイルでも結構ばれなくなります。
右側が12(左右)と34(上下)を結合するときのマスクです。黒いほうが一続きになっていることから、左右に一続きでつながっている34が優先的に採用されます。中央の縦の境界は次の0(中央)が上書きしてくるので、見えなくなります。結局四隅の斜め境界の辺りのみが接合面として残って、かつそれをブレンディングでぼかしてます。
もちろんAviUtilでもできるのでしょうけど、今回の手法の強みは、とにかく手を使っての作業が一切ないことです。特にレンダリングパートは、2回目以降は前回使ったバッチファイルをコピーしてファイル名を先頭7文字変更するだけなのでわずか数秒w
Q. 次はVR360だね!よろしく!
A. うーん、対応しないと思います。ゲームとかじゃないので、カメラワークも自由にできることになったし、わざわざ視聴者に後ろ振り返ってもらうような動画を作る意義はないと思います。やってみたい方はご自分でお願いします。
Q. こんなもん書いてる暇があったらもっと紳士動画作ってよ!
A. もっともなご意見ありがとうございます。うp主的にはこのHOWTOで他の紳士な方々が紳士VR量産してくださるようになれば、とても幸せです。ガチエロでもそうでなくてもいいです。いろいろ見たい。マジで。
Q. 中間ファイル(aviファイル)でかすぎ。なんとかならないの?
A. 実は、ベースになった手法では、中間ファイルを作らないようになっていました。ただ、うp主の環境ではいろいろと作業中断する羽目になることが多く、中間ファイルを作らない方式だと中断したら最初からやり直しになって心が折れそうでした。HDD(特に内蔵なら)でもそれほど遅くなるわけでもないですし、持ってなかったら買っちゃいましょう!(こちらについては需要が多そうなら改訂版考えます)
以上です。コメントや質問等は‥受け付ける保証はしませんが、とりあえずこのブログの(か、つべかニコ動あたりで)コメントにでもつけておいてください。
それでは、佳きMMDライフを。