2ntブログ

MMDと3D映像

私はSONYのHMZ-T1という、3D(立体)映像に対応したヘッドマウントディスプレイ(HMD)を使用しています。
3D映像は右目用と左目用に角度を変えて撮影した映像を別々に用意したものを、それぞれの目で見ることで映像が立体的に見える仕組みです。
普通であればこの左右用の映像を作成するのは敷居が高いところなのですが、MikuMikuDanceであれば自由な角度で映像を出力できますので簡単に自分だけの3D動画が作れてしまうのです。その作り方について簡単にまとめてみました。


動画形式
3Dの動画形式はいくつかありますが、その中でもサイドバイサイドという形式はほとんどの3D機器が対応していますのでこの形式を使用します。
どのような形式かというと、その名前の通り左右用の映像を横に並べただけの動画ファイルです。
普通の動画に左右の映像を詰め込みますので横方向の解像度が半分になるという欠点がありますが、市販のBDなどでも採用されている形式ですので気になることは無いと思います。
動画の出力イメージはこんな風になります。アスペクト比がおかしく見えるのがお判りになると思いますが、3D対応機械で再生すればちゃんと補正してくれます。
20130922A01.jpg

作成方法
1.左右で角度を変えたカメラモーションを用意する
一番手間がかかるところです。仕組みの説明は VPVP Wiki の3D効果を調整するの項が詳しいですが、動画を見るのに使う機器や自分が見たい立体度を得るために試行錯誤が必要になります。
私の場合、HMZ-T1を装着したときに対象物が実寸大か、やや小さめに見えるように調整しています。

まず、MikuMikuDance上でカメラモーションを作成します。配布されているカメラモーションでも良いですが、なかにはカメラの中心位置については余り意識されていないものもあり、また激しいカメラモーションは3D映像とは相性が良くありませんので、自分で作った方が良いかもしれません。

自分でカメラモーションを付けるのであれば、カメラの中心位置を置く場所を常に意識して作成すると良いです。平面な動画の場合、中心位置を参照するエフェクトを使用しない限り余り意識する事が無いのですが、カメラの中心位置は3D動画を作成する時に重要な点となります。焦点を合わせたい場所を中心にするのが基本です。

カメラをどれぐらいの距離にすればどれぐらいの大きさに見えるか、視野角はいくつにするかなどは難しいところですが、私はHMZ-T1をかぶって見る映像を想定していますので、視野角は人間のものに近い27前後で作成しています。距離はダミーのボディを置いて、その頭部にカメラを配置しています。

fc2動画にuploadしているFate of a Spy girlやHijiri Virgin Boy Huntingは元々3D動画を作成するための距離を測るために作成したものですので、これぐらいの大きさで画面に出ていればHMZ-T1で見たときの実寸大に見えるという目安になるかもしれません。(実際はやや大きめです)

20130922A03.jpg


カメラモーションの作成が完了したら、カメラモーションをVMDファイルとして保存します。
このVMDファイルを後述の方法で変換し、左右に視差が付けられた2つのファイルを作成します。

2.左右用のMikuMikuDanceのプロジェクトファイルを用意する

左右用の映像を出力する際に気を付けなければならないのは物理演算です。髪の毛などが左右の映像で違った動き方をしていると、わずかな差であっても3D映像として見たときに非常に強い違和感を覚えます。

幸い MikuMikuDanceは物理演算の乱数シードは2種類しか持っていないそうで(参考:みくだん:物理演算の同一結果出力方法)、MikuMikuDanceを起動して一番最初に再生する物理演算の挙動は同じになるという法則があります。
そのため、あらかじめカメラモーションを左用、右用に差し替えたプロジェクトファイルを作成しておきます。プロジェクトファイルを保存するときは、物理演算の設定を「再生時のみ演算」としておきます。

3.左右用の映像を出力する

前述のとおり物理演算の結果を同じにするために、MikuMikuDanceを起動する→プロジェクトファイルを読む→動画を出力する→MikuMikuDanceを終了する、という手順を左右それぞれ行います。出力するサイズは私の場合Playstaion3で再生する事もあり、1920x1080としています。

4.左右用の映像を結合する


AviUtilを使用します。こちらのサイトのAVSスクリプトを書くを参考に作成した左右用の動画を並べて結合します。結合すると動画のサイズが3840x1080となっていますので、サイズの指定で1920x1080と設定し横に縮めます。
この状態でエンコードを行い、ターゲット再生機用の動画に出力を行います。

左右用のカメラモーション作成する幾つかの方法

1.Excelマクロを使用する

こちらのサイトに左右用のカメラモーションを生成するExcelマクロが公開されています。Excelが手元にあるのであれば、これ(とVMDConverter)を使用して左右用のモーションを作成します。

2.CSScriptを使用する
上記のExcelマクロ以外にもカメラモーションを操作する必要があったので、数式を拝借してPMXEditor用のCSScriptに書き起こしています。

Download
認証キー tracebox0923

スクリプトはインターフェースを用意しておらず、スクリプト中の以下の変数を直接書き換えて実行します。
private float slideCenerValue = 0.0f;
private float slideYawValue = 0.35f;
private string cameraVmdFile = @"C:\MMD\PROJECT\wavefile_camera.vmd";

1つめの変数は基本的に 0.0f のままで良いです。画角を変えずにカメラの中心位置を変えたいときに使用します。
2つめの変数が視差になります。0~0.5fの範囲でぐらいで付けると良いでしょう。参考にしたExcelマクロとは同じ結果になりません。恐らく何かが間違っているのだとは思いますが視差が得られるので余り気にしていません。
3.ボーン追従カメラを使用する
最近のバージョンのMikuMikuDanceでは、ボーン追従カメラの機能が実装されましたので、カメラ用のボーンを用意しこれにカメラを追従させてカメラモーションを付けていれば、センターバイアスなどで簡単に視差を得ることができます。

4.MikuMikuMovingを使用する
MikuMikuMovingであればカメラのレイヤーが追加できますので、簡単に視差を作ることができます。このカメラモーションをMikuMikuDanceに持ってくることができれば良いのですが……私はMMMは余り使っていませんので、詳しくはありません。

以上。まだまだ3D再生環境はお手頃とは言い難いお値段ですが、多少無理すれば手に入らなくはないところまで来ています。折角の3D動画が出力できるMikuMikuDanceなのですから、機会があれば試してみるもの良いかもしれません。
ちなみに、Nintendo 3DSでも同じ要領で3D動画が作れます。私の3DSはSDカードの容量が少ないので余り試していませんが……。

コメントの投稿

非公開コメント

No title

更新お疲れ様です
寝る前にコメ残し

立体視と似たようなものなんですかね
交差方とか平行方がありますが、もっと楽に見れるってことかな
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Twitter