SATCHのMMDコンバーターはpmd,vmdファイルを使って動きのある3D表現ができます。
ただSATCH Studioでは3Dを表示するsceneデータは1つしか持つことができないようです。
いろいろな動きをさせるために、単一のvmdを一から作るのは面倒です。
ここでは複数のvmdを結合して1つのvmdを作り、その中から必要な動きのみ選んで表示する...というやり方をしてみます。
vmdの編集用に
VMDConverterを使います。
VMDConverterはMikuMikuDanceモーションファイル(.vmd)をテキスト(.csv)に変換したり、その逆を行うこともできます。
では2つのvmdを結合してみましょう。
例としてmotion1.vmdとmotion2.vmdというファイルを使うとします。
motion1にmotion2を結合するとします。
まずmotion1のフレーム数を調べておきます。VMDConverterの場合、結合後のフレーム番号を再記述する必要があるからです。
分からない場合はVMDViewなんかを使えば調べられます。
csvファイルに変換するには、vmdファイルをVMDConverter.exeのアイコンにドラッグ・ドロップします。
すると、VMDConverterフォルダーにcsvファイルが生成されます。
このファイルをExcelで開きます。
例えば、こんな感じです。
motion1.csv
motion2.csv
では結合してみます。
1:フレーム番号の変更
csvのB列の数字はフレーム番号です。
例えばmotion1のフレーム数が22だった場合、motion2はmotion1の後ろに来るので、motion2のB列の数字に23を加えます。
対象になるのは、motion2.csvの4行目から256行目までのB列データと、258行目から397行目まででB列に0でない数字のあるデータです。
2:データを挿入する
motion2.csvの4行目から256行目までのデータをmotion1.csvの249行目以降に挿入します。
motion1.csvの245という数字に253を加えます。
元データと挿入したデータを合わせて並び替えをしておきます。
次に、258行目から397行目まででB列のフレーム番号を変更したデータを最後の2行(0のある行)の前に挿入します。
motion1.csvの140という数字に新しく挿入したデータ数を加えます。
結合後、新しい名前でCSVファイルとして保存しておきます。
3:vmdに変換
新しいCSVファイルをVMDConverter.exeのアイコンにドラッグ・ドロップします。
以上です
MMDコンバーターを使ってsceneを作る方法は、
SATCH ARでアニメーション表示をやってみる(その2)を参照。
SATCH Studioを起動してsceneを読み込みます。
このオブジェクト名をAAとします。
Luaコード
local AA = Scenette(scene:getObjectByName("AA"))
local anim = AA:getAnimation(0)
必要な部分の抜き出しには秒数を使います。
どの部分が必要か動かして確認します。
モデルはanim:play()というコードを使って動かします。
秒数チェックにはタイマーを使います。
timer = Timer()
repeatループの中で、以下を記述しておきます。
temp_time = timer:getTime()
LOG(temp_time .. "")
例えば、3.6秒から7.3秒までの場面を表示する場合は、
anim:play(3.6,7.3)というコードを記述します。
サンプル
このページは現在IEのみに対応しています。
鏡音リンちゃんにおたずねします
このページ使っているデータは6つのvmdを結合したものです。
MMDコンバーターのフレームMAXは10000ですが、ここでは7300ほどのフレームになっています。
①:返事を返すのみの部分を抽出
②:
③と連動して、BGMあり/なしでダンスシーンを抽出。
MUSICの「サディスティック・ラブ」はピアプロからダウンロードしたものを使用。
3Dのモーションがオリジナルに比べて遅いのでサウンドも84%ほどにテンポダウンしています。
④:
②を実行したかどうかで異なった返事を返します。
⑤:ポーズ・再生を実行。
⑥:モデルを回転。
隠れ機能
マウスでリンちゃんの「ある場所」をクリック(まあ、タッチですね...^^)すると、反応を返してくれます。
探してみてください。
-----------------------------------------
次期バージョンでは音声認識に対応...したいです。
VMDMixerを使ってVMDファイルの任意の場所を切り出す
ellerykhさんの
VMDMixer
を使って切り出してみます。
まず、VMDViewなどを使って、どのフレームからどのフレームまで切り出すか確認しておきます。
起動時にPMDを読み込んでおいて、メニュの「モーション」->「追加して分割」を選択。
分割されたモーションから必要な部分を選んで「追加」すると、下のタイムライン上に表示されます。
ここでは、100~320フレームを切り出すとします。コメントの中の括弧の中の数字がフレーム数です。
最初と最後のフレームを含んだ部分を追加します。IDが0と1のものを追加します。
タイムライン上で100から320までを選択します(ピンクの部分)。
ピンクの部分を右クリックしてメニュを出し、「選択範囲をコピー」します。
リストの最後に、追加されます。
タイムラインを一度削除しておいて、新しく生成されたものを追加します。
これをVMD形式で保存すればOK。
-----------------------------------------
VmdSynthesizer