MMD 3日目 艦娘がDK2で踊ってるのが見たい - ReDo

2014年8月12日

MMD 3日目 艦娘がDK2で踊ってるのが見たい

BT-200、Cardboard、KaleidoPlayerDK2向けにサイドバイサイドの3D動画を2014.08時点のMMD環境(Win8.1 MMDv9.10)で作ってみた際のまとめです。

【注意事項】
・MMDのNVIDIA 3D Vision対応3D出力機能が使えればもっと楽なはずなのですが、有効にする方法が分かりませんでした。GeForce環境(GTX M870)なので特に何もせずに有効になってくれると思ったのですが...。
・MMDで物理演算の乱数シードとがんばって戦ってしまいましたが、MMMなら乱数シードの固定ができるみたいです。

○サイドバイサイド動画について

3D動画の方式には何種類かありますが、AndroidARメガネBT-200はhalfのサイドバイサイドに対応しています。

そもそも3D動画は数が少ないのですが、その中でも通常のPCディスプレイでも閲覧可能なこともあって、「halfでない等倍サイドバイサイド」の「交差法」動画が多く、数少ないhalfのサイドバイサイドのMMD動画では以下の2動画がダントツでオススメです。

ここを目標に挑戦してみることにします。


○樽型歪みエフェクトシリーズ

まずはOculus Rift向け樽型歪みを試します。本MMEはDK1向けらしく、DK2向けには改造が必要そうです。fxを開いて1280x720を1920x1080に直してみたりはしたのですが、周辺があっていない感じでした。

また、この樽型歪みを試している最中に以下のエフェクトを発見し、ついでにCardboard向けの動画も作ってみたりしました。

MME用Cardboard向け樽型歪みエフェクト
http://bowlroll.net/up/dl43474

cardboard-droid.jpg

ほどほどに良い感じに3Dでドロイド君がうにうに踊ってくれました。インタラクティブ性はありませんが。


○サイドバイサイドへ

樽型歪みエフェクトの元になっている、Furia氏のエフェクトから、シンプルなサイドバイサイドのエフェクトを拝借します。

Furiaの小物入れ
http://flammpfeil.appspot.com/trinketbox/
立体視せっとwithMMEv022.zip

これは交差法かつhalfじゃなくてフルサイズサイドバイサイド向けなので、以下の「3DViewBufferRender_交差法.fx」数点を手直しします。

・10-30行目付近:Readmeの通りに、"LeftEye.fx"と"RightEye.fx"あたりの文字列を入れ替えます。
・60-80行目付近:"Out.Tex.x *= 0.5;"と"Out.Tex.x += 0.25f;"の2行x2セットを"//"でコメントアウトします
・ついでに3DViewBufferRender_交差法というファイル名を3DViewBufferRender_平行法に2ファイル変更します

mme-yamato.png

1280x720 60fpsあたりでAVI出力してつんでれんこでmp4へ。BT-200でもKaleidoPlayerDK2でもちゃんと3Dになってくれました。成功です。

○左右別々に出力して結合

立体視せっとwithMMEはお手軽に出力できますが、SSAOとかDOFとか強力なエフェクトと同時にはかけられません。左右別々に出力して結合することにします。

つちのこ、のこのこ。(はてな番外地):【立体視】立体レアさんの紹介動画のような何か。(たこうさ入り)
http://d.hatena.ne.jp/kadotanimitsuru/20110129/parallax
より、parallax.pyをVMDConverterで変換したcsvにかけて、左目用カメラモーションと右目用カメラモーションを出力します。

ところが、物理演算の乱数シード問題というものがありまして、左目用出力と右目用出力の物理演算のパターンが一致していないと結合した際に破綻します。

MikuMikuDance 物理演算の同一結果出力不能、その後
http://d.hatena.ne.jp/kadotanimitsuru/20101223/mmd

私の環境ではMMDを起動した後、物理演算オフにしてプレビュー画面で動作させないようにしてからpmmを読み込むなどを試しましたが、今のところ確実な方法は見つけておりません。もう少し試してみて、完全にランダムなことがわかったらMMMへの移行を検討しようかなと思っています。

無事物理演算パターンの一致したAVIが2つ出力されたら、AviUtlで結合します。拡張編集プラグインで別々のLayerにaviを読み込み、「+」→基本効果→リサイズを足した後、X座標を-320.0と320.0に、X拡大率を50.0に設定するとhalfのサイドバイサイドとして出力できます。

○おわりに

# 前書きとして書きましたが情報価値が低いので後ろに

先日、DK2の1stメモを書きましたが、その後も公開されるデモをプレイし続け、もうそろそろ踊らせる側になりないな、と開発方法を調べてみたところ、乱暴に言えば「Unity Proを買うのがベスト、そうでなければDirectX直かUE4他のゲームエンジンでがんばれ」という状況であることが判明しました。

モチベの何割かがミクさんというかMMDマターなのでそうなるとMMDForUnityとかMMD4Mecanimとかの世界なのですが、UnityにもMMDにも、そもそも3Dそのものにも下地が無さ過ぎて現段階ではトライアルライセンスを試すのにも躊躇している段階です。(せめてUnityProのサブスクリプションが月単位なら...)

MMDそのもの(とくにモデルとモーション)に慣れた後、Unity Free版で初心者向けなりMeacnimを含めたチュートリアルをいくつか突破した後でえいやで突撃するところまでは頑張りたいところです。

コメント(3)

はじめまして。
あかふくと申します。
360度動画のサイドバイサイド方式で検索して、ここを発見しました。

いきなり、申し訳ありませんが質問させていただけますでしょうか?
今年に入って360度動画の撮影にハマってまして、
リコーのシータというカメラを使って色々撮って遊んでいます。

シータの専用アプリでは、movファイルをmpeg4に変換してくれるので、
それをYouTubeに360度動画としてアップしているんですが、
サイドバイサイド方式への変換がどんなフリーソフトを使ってもできません。
見た目はサイドバイサイドにできても、360度になっていなかったり、、

もしご存知であれば、教えていただけないでしょうか?
どうぞ、よろしくお願いします。

>あかふくさん
1. youtubeで3D動画設定はありますが、360度パノラマ動画の能動的な設定が可能かは分かりません、すいません。(360度は勝手になるんでしたっけ…両方あわせるとどうやるのかは不明です)

2. THETAは単眼なのでサイドバイサイドにしても立体感が出ないと思われますが、単純にAviUtl等で左右用の領域複製してしまえば形式としてはサイドバイサイドになるはずです。

返信、ありがとうございました!
いきなり、不躾な質問をしてすいません。
質問させていただいた後、色々と調べたのですが、
どうやら、YouTubeではサイドバイサイドの360度動画には対応していないそうです。

ただ、youtenさんから教えていただいたaviutl?で、
色々と自分なりにやってみたいと思います!
ブログも定期的に拝見させていただきますので、
どうぞ、よろしくお願いします。
ありがとうございました。

コメントする