前回
SATCH ARでアニメーション表示をやってみる(その1)
では、2Dでアニメ表現をしていましたが、今回は3Dです。
2013/04/02にSATCH Developer siteでMMDのコンバーターが公開されました。
Mayaや3ds Maxのエクスポーターはありましたが、これはMMDやBlenderのデータをSATCHのscenarioファイルに変換してくれます。
従来、MMDのpmd,vmdデータをSATCH用に変換する方法はラフに示されていましたが、今回は統合された環境になっています。
PythonやBlenderの249VMDを使うのは同じですが、インストーラーにこれらが統合されているので手間が省けています。
コンバーターを使うとBlender2satchやMMD2satchの変換をGUIでできるので便利。
コンバーターのダウンロードは
SATCH Developer site
から。
SatchExporterForMMDをダウンロード・解凍してインストールを実行すると、CドライブにOgreCommandLineToolsとpython26のフォルダーが作られ、そこにインストされます。
Pythonのバージョンは2.6.6.
OgreCommandLineToolsには、Ogreのコンソールアプリや249VMDなどがインストされます。
デスクトップにはblender2satchGUIとmmd2satchGUIの2つのショートカットが作成されます。
今回はpmdとvmdを使って見ますので、mmd2satchGUIを起動します。
pmdとvmdはMMDから作成しますが、作成方法は他に多くの方が書いておられるので割愛。
pmdとvmdは既にできているものとして進めます。
mmd2satchGUIの画面はこんな感じ。
input fileにpmdとvmdを指定しますが、パスにダブルバイト文字は使えません。
どこかのドライブに直置きしてファイル名もシングルバイトにしておきます。
output fileは適当に。.sceneの拡張子で吐き出されます。
start frameとend frameは作成時に記録しておいてください。
忘れたり分からなくなったりしたら、VMDViewなどを使えば確認できます。
こんな感じ。
start frameは0、end frameは159。
で、SATCH側で途中のフレームを使いたいという場合。
SATCHのLuaではフレーム数ではなく秒数で制御するようです。
例えば最初から81フレーム目までを使う場合。
フレーム数/秒を確認します。
30フレーム表示なら、秒数は81/30で2.7。
SATCHでの秒数はLong型なので小数点以下も扱えます。
MMD2SATCHのstartボタンを押します。
コンソールにログが表示されます。
終了したら、出力されたすべてのファイルをSATCHのプロジェクトフォルダーへ移します。
SATCHを起動し、sceneファイルを読み込みます。
Luaでアニメーションさせるコマンドは簡単です。
読み込んだentityをmikuという名前にするとして、
local miku = Object3D(scene:getObjectByName("miku"))
local anim = miku:getAnimation(0)
ループさせるかどうかは、
anim:setLoop(false)
単純にすべてをアニメ表示させる場合は、
anim:play()
0秒目から2.7秒目までをアニメ表示させる場合は、
anim:play(0,2.7)
まばたきやリップの動きには対応していない....みたいです。
スマホで動作確認
確認してみましたが....なかなか難物です。
確認実機は、Xperia acro(docomo) Android 2.3.3
まず、ネイティブアプリとして動かしてみましたが、レンダリングに失敗してます。
使ったモデルが悪いのか、レンダリング・エンジンに問題があるのか....悲惨でした。
PC上では問題ないので、スマホのレンダラーなんでしょうね。
ポリゴンの向きが誤認識されて一部のパーツが描画されない現象が出てます。
SATCH Studioでは、アプリ単位でレンダラーとしてDirect3D9・OpenGL・OpenGL ES 2の3タイプを選べるのですが、どれもペケ。
どうしたもんかと悩んだ末、SATCH Viewerで表示させたらどんなもんか?と思いつきやってみました。
結果は、「たまに使える場合もある」という何とも中途半端なものでした(うまくいった人がいたら教えて!)。
レンダラーの問題ではなく、SATCH Studioでパラメーターを調整することでレンダリングできそうです。
最適値が見つかったらレポします。
やり方としては、SATCH SML用アプリとして作成します。
参照
SATCHのLiteでコンテンツを作って、SMLで使ってみる
その際、レンダラーとしてOpenGLを指定します。
でSATCH Viewerで起動してみました。こんな感じ。
ちょっとボケてるので分かりにくいですが、実は目の画像がマッピングされていません。
さらにリロードするごとにレンダリングの精度が違っています。
なんでやろう?
Web公開版
ミクさんではなく咲音メイコさんモデルのサンプルをWeb版にしてみました。
PCならこう見えるというやつです。
D'Fusionの無償版を使っているので、広告が出ますがご容赦。
サウンドなしモーションのみです。
白金ディスコを踊る咲音メイコさん
IE限定で、最初にプラグインのインストールを聞いてきます。
インストール後、PLAYボタンで踊ってくれます。
注
現在デバグ用コードが残ったままになっているので、マウスクリックすれば、PLAY・PAUSEが機能してしまいます(^^)。
キーボードの上で踊るメイコさんです(Webカメラが必要)。
ネイティブアプリを作成する場合
レンダリングがうまくいかなかった部分を修正。
パラメータの設定を調整しました。最適値がまだ分からないので、出たらまたレポします。
追加
sceneのアニメーションの速度を調整する方法が分かりましたので、アプリにBGMを付けてみました。
モーションはサディスティック・ラブ。
BGMはビアプロからDLした「【鏡音リン】サディスティック・ラブ【オリジナルPV付き】」です。
とりあえずスマホならこんな感じ。
比較的解像度の高いタブレット(dtab01)ならこんな感じ。
New
サウンドを入れてみました。
サンプルです。
インストール
Target:Android 2.3.3 or later
動作確認実機:Xperia acro(docomo) Android 2.3.4/dtab01(docomo) Android 4.1.2
現在、MMDコンバーターは物理演算、表情やリップの動きに対応していないので、スカートや目の動きが若干変ですが.><
開始はメニュのPLAYをタップしてください。
ポーズはPLAYをもう一度タップ、再開もPLAYをもう一度タップ。
アプリをQRコードからインストールする方法はコチラを参照