☆超初心者向け フリーウェアのみを使用したステレオVR-MMD動画の作り方

とりあえず作成・表示する

記事作成日 2018/11/21

※注意

各ソフトウェアは、解説に使用されているものと完全に同一のバージョンをダウンロードして使用してください。少しでもバージョンが違うと、相性問題が発生することが多いためです。

1.Unityのインストール

統合開発環境内蔵ゲームエンジン「Unity」をインストールします。
ちなみに、Unityは、ポケモンGOやスーパーマリオランなどの制作にも使用されています。
List of Unity games - Wikipedia

高機能なソフトウェアですが、制作物の年間総収入$200,000以下であれば、Personal(無料版)が使用可能です。

まず、このリンクから、Unity 2018.2.0b1バージョン(18 April 2018)をダウンロードしてください。

他のバージョンだと、後でスクリプトをUnityに追加するときにエラーが出る可能性がありますので、できるだけ2018.2.0b1バージョンを使用してください。 ※ちなみに、記事作成時点の最新バージョンに近い2018.2.15バージョン(9 November 2018)だとダメでした。

あとは、ダウンロードしたインストーラを起動し、普通にインストールすればOKです。選択肢はデフォルトのままで問題ありません。

2.Unityの起動

Unityを起動するとログイン画面が出てきますので、「If you don’t have a Unity ID, please create one.」をクリックしてアカウントを作成し、ログインしてください。
ログイン後、選択肢が出てきますので、Unity Personalを選んでNextをクリックします。他の選択肢は適当に選んでください。

No local projectsと表示されたら、右上のNewをクリックします。
Project nameを入力、Template3Dに設定、Enable Unity Analyticsのチェックを外して、Create projectをクリックしてください。

3.MMD4Mecanimのインポート

まず、UnityにMMDモデルデータを読み込むためのプラグイン「MMD4Mecanim」をインポートします。
これをインポートする前にMMDモデル等を読み込もうとしても(Assetsに追加しても)、fbx形式に変換するツールを起動できませんので、必ず最初にMMD4Mecanimをインポートしてください。

Stereoarts Homepage から、MMD4Mecanim_Beta_20200105.zipをダウンロードしてください。

次に、ダウンロードしたzipを解凍し、その中に入っているMMD4Mecanim.unitypackageをUnity起動中にWindows標準エクスプローラからダブルクリックして起動します。

次に、~.csや~.dll等が上下に並んだリストが表示されたら、リスト右下のImportボタンをクリックします。
その後、I Made a Backup. Go Ahead!をクリックすれば、インポート完了です。

なお、MMD4Mecanimは、プロジェクトごとにインポートし直す必要があります。このため、MMD4Mecanimを解凍したフォルダは、削除せずにそのまま取っておいてください。

4.MMDモデルデータとモーションデータの入手

キャラクターとステージのMMDモデルデータ、モーションデータを入手します。
まず、 Files of Jim944 から

2B v1.04 (J&J Edit).rar 23.1 MB
2B v1.04 (Kaine's outfit) (J&J Edit).rar 28.4 MB

の2つをダウンロードしてください。(どちらも1ページ目にあります)

次に、 ステージ(宇宙の部屋) VOL.ST22 - BowlRoll からステージ_宇宙の部屋ST22 をダウンロードしてください。ダウンロードパスワードはstgst22です。

次に、 ピンクキャット.zip (ピンクキャット.zip) ダウンロード | MMD関連 | uploader.jp から ピンクキャット.zip をダウンロードしてください。ダウンロードパスワードは28055630です。

ちなみに、キャラクター、ステージ、モーションは、

MMDステージ配布あり - ニコニコ静画 (イラスト)
人気の「MMDモーション配布あり」動画 - ニコニコ動画
モデルデータ - VPVP wiki - アットウィキ
背景・ステージ - VPVP wiki - アットウィキ
モーションデータ - VPVP wiki - アットウィキ

などで大量に配布されています。

5.MMDモデルデータとモーションデータの読み込み・変換

まず、Unityの画面左下側にあるProjectパネルにAssetsフォルダの中身を表示させます。(左側のフォルダツリーからAssetsを選べばOK)

次に、4で入手したファイルを解凍し、できた4つのフォルダ

2B v1.04 (J&J Edit)
2B v1.04 (Kaine's outfit) (J&J Edit)
Stage_ST22
ピンクキャット

を、Windows標準エクスプローラから、ProjectパネルのAssetsフォルダの中に、ドラッグ・アンド・ドロップします。

フォルダをD&Dする場所

これで、ProjectパネルのAssetsフォルダの下に、4つのフォルダが読み込まれます。



次に、ProjectパネルでAssets\2B v1.04 (J&J Edit)を選ぶと、2B v1.04 (J&J Edit).MMD4Mecanim.assetというアイコンが表示されます。
これをクリックすると、画面右側のInspectorに規約同意画面が表示されますので、3つチェックを入れて、「同意します」をクリックします。



次に、MMD4Mecanimの変換設定画面がInspectorに表示されますので、Inspector右上の南京錠のアイコンをクリックして画面をロックします。(南京錠アイコンは非常に小さいので注意)

南京錠アイコンの場所




次に、変換設定画面の2番めのVMDの空欄に、ProjectパネルのAssets\ピンクキャット\調整すみから、ピンクキャットゴリマ式Z1.vmdをドラッグ・アンド・ドロップします。(エクスプローラからではなく、Assetsに読み込んだフォルダからD&D)

vmdファイルをD&Dする場所

※上でInspectorをロックしていないと、ProjectパネルでvmdファイルをクリックしたときにInspectorの表示が切り替わってしまい、D&Dできません。



次に、Inspector右下のProcessボタンをクリックして、5~10分程度待ちます。
終わったら、必ず、再びInspector右上の南京錠のアイコンをクリックして、ロックを解除しておいてください。(ロックされたままだと他の操作ができません)



2B v1.04 (Kaine's outfit) (J&J Edit)でも、上の操作を同じように繰り返します。
ステージ(Stage_ST22)も同様ですが、vmdファイルを選択せずに、そのままProcessボタンをクリックしてください。(「None (object)」のまま)

これで、キャラクター2体とステージのpmxファイル+vmdファイルが、Unityでも扱える形式(fbx形式)に変換されました。

6.fbxファイル(Prefabファイル)とAnimator Controllerファイルのロード

Projectパネルで2B v1.04 (J&J Edit)フォルダを開き、新たにPrefabファイル(アイコン画像の右側に小さな矢印アイコンの付いたもの)が生成されているのを確認してください。
これを、画面左上側のHierarchyのSampleSceneフォルダの中にドラッグ・アンド・ドロップします。

PrefabファイルをD&Dする場所

これで、画面中央上側のSceneにキャラクターが表示されます。
Sceneの右上にある矢印をクリックすると視点回転(座標軸に沿った角度に回転)、マウス右ドラッグで視点回転(自由回転)、画面左上(メインメニューのFileのすぐ下)にある手の平のマーク(Hand Tool)をクリックしてから左マウスドラッグで視点上下左右移動、マウスホイール回転で(またはHand Tool有効中に右クリックしながらキーボードのWとSを押せば)視点前後移動が可能です。



次に、Projectパネルの2B v1.04 (J&J Edit)フォルダを開き、ファイル一覧画面で右クリックして、CreateAnimator Controllerを選択してください。
これで、New Animator Controllerファイルがフォルダ内に生成されます。

次に、このNew Animator Controllerファイルをダブルクリックして、画面中央上側(Sceneが表示されていた場所)にAnimator画面を表示させてください。

次に、ProjectパネルのPrefabファイルのアイコン画像の右側の小さな矢印アイコンをクリックして展開し、その中に入っているピンクキャットゴリマ式Z1_vmd(変換済みvmdファイル)をAnimator画面にドラッグ・アンド・ドロップしてください。

_vmdファイルをD&Dする場所

終わったら、Animator画面の上側のSceneタブをクリックして、画面を戻しておいてください。



次に、画面左上側のHierarchyの2B v1.04 (J&J Edit)を選択し、画面右側のInspectorの右上の南京錠のアイコンをクリックして画面をロックします。

次に、Inspectorに表示されたAnimator(チェックが入っています)のControllerの空欄に、ProjectパネルからNew Animator Controllerファイルをドラッグ・アンド・ドロップしてください。

Animator ControllerファイルをD&Dする場所

終わったら、必ず、再びInspector右上の南京錠のアイコンをクリックして、ロックを解除しておいてください。(ロックされたままだと他の操作ができません)


次に、画面中央上側にある再生ボタンをクリックして、Sceneに表示されたキャラクターが動くかどうか確認してください。(動き始めるまで7秒くらいかかるので注意)
もう一度再生ボタンを押すと、再生モードから抜けられます。



もし動かない場合は、ProjectパネルのPrefabファイルを選択し、InspectorのRig>Animation TypeをHumanoidに変更してください。
※MMDモーションの再現性が下がりますので、どうしても動かない場合以外はGenericのままにしておいてください。



また、体は動くのに表情だけが動かない場合は、

Hierarchy内のキャラクターを選択
>Inspectorの一番下のAdd Componentボタンをクリック
>Scripts>MMD4 Mecanim Anim Morph Helperを選択
>Inspectorの下側に追加されたMMD4 Mecanim Anim Morph Helper (Script)の設定項目のうちのAdd Animationの下のAnim Fileの空欄に、Projectパネルのモーションフォルダの中にあるモーション名.anim.bytesファイルをドラッグ・アンド・ドロップ
>そのすぐ上のAnim Nameの空欄にモーション名が自動的に表示されるので、それをさらに上(設定項目のタイトルのすぐ下)にあるAnim Nameの空欄にコピー・アンド・ペースト

すれば動くようになります。(MMD4 Mecanim Anim Morph Helperを使うと、追加された順でモーフが上書きされます)



うまく動いたら、次は2B v1.04 (Kaine's outfit) (J&J Edit)でも、上の操作を同じように繰り返します。

ステージ(Stage_ST22)については、「Animator Controllerファイルの作成」「Animator画面への変換済みvmdファイルのドロップ」「InspectorへのAnimator Controllerファイルのドラッグ・アンド・ドロップ」は不要です。PrefabファイルをそのままHierarchyのSampleSceneフォルダの中にドラッグ・アンド・ドロップするだけでOKです。

7.キャラクターとカメラの位置の調整

白と黒のキャラクターが重なって表示されていますので、それぞれを移動させます。また、ついでにオブジェクトインスタンスの設定も行っておきます。

まず画面左上側のHierarchyの2B v1.04 (J&J Edit)を選択して、画面右側のInspectorに表示されたTransformの下の空欄に、

Position: x0.4 y0 z-0.1
Rotation: x0 y180 z0
Scale: x1 y1 z1

と入力してください。

また、その下にあるMMD4 Mecanim Model (Script)の6つのタブ(Model、Bone、IK、Morph、Anim、Physics)のうちのMorphタブをクリックして、Blend Shapes Enabledのチェックを外しておいてください。(Vertex Morph EnabledとMaterial Morph Enableのみにチェックを入れてください)
Blend Shapesがオンになっていると、再生中にキャラクターの顔面が剥がれて動く状態になることがあるので注意してください。



同様に、2B v1.04 (Kaine's outfit) (J&J Edit)Transformにも、

Position: x-0.4 y0 z0.1
Rotation: x0 y0 z0
Scale: x1 y1 z1

と入力してください。

また、その下にあるMMD4 Mecanim Model (Script)の6つのタブ(Model、Bone、IK、Morph、Anim、Physics)のうちのMorphをクリックして、Blend Shapes Enabledのチェックを外しておいてください。(Vertex Morph EnabledとMaterial Morph Enableのみにチェックを入れてください)



また、Main CameraTransformにも、

Position: x-0 y1.6 z-1.5
Rotation: x0 y0 z0
Scale: x1 y1 z1

と入力してください。

これで、カメラにキャラクターが映るようになりました。(キャラクターが下寄りに映りますが、VRで視るとちょうどよい感じになります)

※カメラを大きく回転させると、ステレオVR動画を出力する設定にしていても、平面360度全天球動画(または平面180度半天球動画)が出力されてしまうことがあり、また、そもそもカメラを回転させるほど画質が劣化する(像が歪む)ので、Main CameraのRotationは必ずx0 y0 z0のままで、キャラクターやステージの方を回転させるようにしてください

8.Unity Recorderのインポート

Unityで映像を出力するためのプラグイン「Unity Recorder」をインポートします。
Unity Recorder(非公式アーカイブ) を解凍し、Unity起動中にWindows標準エクスプローラからダブルクリックして起動します。
次に、~.cs等が上下に並んだリストが表示されたら、リスト右下のImportボタンをクリックすれば、インポート完了です。

9.CubemapRendererの追加

VR映像を生成するスクリプト「CubemapRenderer」をカメラに追加します。(配布元ウェブサイト:Unity でステレオ VR 動画を作成する (ほぼ完全 (?) 版) - Qiita

まず、 GitHub - aosoft/UnityVRVideoRecordingTest を開き、中央下側のフォルダ一覧からAssetsをクリックします。
次に、ファイル一覧からCubemapRenderer.csをクリックします。
次に、コード画面右上のRawボタンをクリックします。
コード画面のみが表示されますので、これをCubemapRenderer.csという名前で保存してください。

また、
CubemapToOtherProjection.cs
CubemapRenderer.shader
CubemapToOtherProjection.shader
の3つも、同様にRawで保存してください。



次に、ダウンロードした4つのスクリプトファイルを、Windows標準エクスプローラから、画面左下側のProjectパネルのAssetsフォルダの中に、ドラッグ・アンド・ドロップします。

次に、画面左上側のHierarchyのMain Cameraに、ProjectパネルからCubemapToOtherProjection.csファイル(名前が似ているので他と間違えないように注意)をドラッグ・アンド・ドロップしてください。

CubemapToOtherProjection.csファイルをD&Dする場所

これで、Main CameraのInspectorの下側にCubemapToOtherProjectionの設定項目が追加されます。

※Can't add script behaviour ~. The script needs to derive from MonoBehaviour!というエラーが出てインストールできない場合は、いったんUnityをアンインストールして、Unity 2018.2.0b1をインストールし直してください。



次に、HierarchyのMain Cameraを選択して、画面右側のInspectorの下の方にあるCubemapToOtherProjectionの下の空欄に、以下のように入力します。
Cubemap Size: 4096
Projection Type: Equirectangular_180
FishEyeType: Equidistance
UseUnityInternalCubemapRenderer: チェックを外す
GammaConvertType: None
RenderInStereo: チェックを入れる
StereoSeparation: 0.05 ※0.5と間違えやすいので注意
CorrectCameraPositionInStereoRendering: チェックを外す

10.RenderTextureのロード

次に、ProjectパネルのAssetsフォルダを開き、ファイル一覧画面で右クリックして、CreateRender Textureを選択してください。
これで、New Render Textureファイルがフォルダ内に生成されます。
次に、生成されたNew Render Textureファイルをクリックして、画面右側のInspectorに表示されたSize4096 x 2048と入力してください。

次に、画面左上側のHierarchyのMain Cameraを選択し、画面右側のInspectorの下の方にあるCubemapToOtherProjection (Script)の下のRender Targetの空欄に、ProjectパネルのAssetsからNew Render Textureファイルをドラッグ・アンド・ドロップします。 ※Cameraの下のTarget Textureは、何も入れずにNone (Render Texture)のままにします。

次に、メインメニューのWindowGeneralRecorederRecorder Widowsを選択し、Recorderウィンドウを開きます。
次に、Recorderウィンドウ左下側のAdd New Recordersをクリックして、Image Sequenceを選択します。
次に、Recorderウィンドウ右側の項目を以下のように設定します。

Playback: Constant ※Variable(可変フレームレート)にするとPCの動作が重いときにフレームが脱落してしまうので、必ずConstantにしてください。
Target: 30
Cap: チェックを入れる
Format: PNG ※PNGは可逆圧縮なので、画質が劣化しません。いったんPNGで出力した後、動画エンコード専用ソフトウェアでmp4化した方がベターです。
Capture Alpha: チェックを外す
File Name: そのまま
Path: そのまま
Take Number: そのまま
Capture: Render Texture Asset
Flip Vertical: チェックを外す

次に、Recorderウィンドウ右下側のRender Textureの空欄に、ProjectパネルのAssetsから、New Render Textureファイルをドラッグ・アンド・ドロップします。

あとはRecorderウィンドウのSTART RECORDINGをクリックすれば録画が開始されます。再びボタンをクリックすれば録画終了です。

録画データは、30フレーム(PNGファイル30個)で再生時間1秒になります。
5分程度のステレオVR-MMD動画の録画に、5~10時間程度必要になります。

11.FFmpegのインストール

連続画像を動画に変換する機能を持つ多機能ソフトウェアFFmpegをインストールします。

※Windows10 2018年11月21日時点の最新バージョンの場合
まず、 Builds - Zeranoe FFmpegを開き、

Version: 上側(Nightly git build)
Architecture: Windows 64-bit ※ご利用の環境に合わせてください。
Linking: Static

を選択し、Download Buildをクリックして、zipファイルをダウンロードします。
次に、zipファイルを解凍して、binフォルダC:\にコピーしておきます。
次に、Windows標準コントロールパネルのシステムシステムの詳細設定を開き、詳細設定タブの一番下の環境変数ボタンをクリックします。
次に、ダイアログ下側のシステム環境変数一覧からPathを選択し、編集ボタンをクリックします。
次に、新規ボタンを押して、C:\binと入力します。
OKを押してからPCを再起動すれば、FFmpegのインストールは完了です。

12.連続画像を動画に変換

スタートボタンを右クリックして、Windows PowerShell(管理者)を起動します。
仮に、上で作業したUnityのプロジェクトフォルダのパスがC:\Unity_Projects\Project1で、出力ファイル名がvrmovie_sbs_180.mp4である場合、Windows PowerShell上で、

ffmpeg -framerate 30 -i "C:\Unity_Projects\Project1\Recordings\image_%04d.png" -vcodec libx264 -pix_fmt yuv420p -r 30 "C:\Unity_Projects\Project1\vrmovie_sbs_180.mp4"

と入力すれば、Unityで録画した連続画像が、H.264形式の動画(拡張子.mp4)に変換されます。(動画圧縮も一緒に行われます)
5分程度の動画の変換に、20~40分程度必要になります。

これで、ステレオVR-MMD動画の完成です。

また、完成した動画に、音楽等の音声ファイルを結合するときも、FFmpegを使用します。
仮に、結合する音声ファイル名がmusic.aacで、結合後ファイル名がvrmovie_with_music_sbs_180.mp4である場合、Windows PowerShell上で、

ffmpeg -i "C:\Unity_Projects\Project1\vrmovie_sbs_180.mp4" -i "C:\Unity_Projects\Project1\music.aac" -c:v copy -c:a copy -map 0:v:0 -map 1:a:0 "C:\Unity_Projects\Project1\vrmovie_with_music_sbs_180.mp4"

と入力すれば、音声ありの動画ファイルが作成されます。(結合はすぐに終わります)

ちなみに、音声ファイルの形式を変換する場合は(mp3→wav、wav→aac等)、 fre:ac 等のオーディオエンコーダーを使用します。

参考:

Oculus Rift CV1とUnityを使用して、MMDモデルをVRで見る ー環境の構築と、MMDユーザーからのよくある質問 - Unity+Oculus+MMD とりあえず書き留めておく場所
ゼロから始まるVR開発part2~OculusGoでミクさんに踊ってもらった!~|ほるかす|note
【初心者でも安心】Unityのダウンロード~インストールまで徹底解説
Unityでスクリプトにプログラムをドラッグすると次の文が出てきま... - Yahoo!知恵袋 Unity でステレオ VR 動画を作成する (ほぼ完全 (?) 版) - Qiita
UnityでMMDのPMXを表情モーフ付きでダンスするFBXとしてアセット利用する話 - simplestarの技術ブログ
【Unity】固定フレームも可能、画面を録画出来る Recorder - テラシュールブログ
ffmpegの最新バージョンの使い方、ダウンロードとインストール、コマンド | urashita.com 浦下.com (ウラシタドットコム)