Virt-A-Mate - Mixamoのモーション・データを読み込む。 -

Mixamoというモーションのデータをたくさん置いてあるサイトを見つけた。

Mixamoに登録する。
1.Mixamoへ行って[Sign Up for Free]をクリックする。

2.名前や生年月日は適当でいいが、メールはVarification codeを受け取れる必要がある。

Passwordは以下の条件を満たさないと受け付けてくれない。

 8文字以上あること
 小文字と大文字を両方含むこと
 数字か記号を最低1文字含むこと
 メールアドレスを含まないこと
 一般的なものでないこと
3.メールでVarification codeが届くので画面に入力すれば登録完了だ。

※MixamoにG2FのFBXファイルを登録する。
1.DAZ Studioを開いてG2Fを読み込んでから以下の設定で保存する。

2.Mixamoにログインして[UPLOAD CHARACTER]をクリックする。

3.上で作成したFBXファイルを指定するかドロップする。

4.アップロードされて、しばらく待たされた後[NEXT]を幾度かクリックしたら以下のようにG2Fが登録される。

※モーションを選んでダウンロードする。
欲しいモーションのアイコンをクリックしてから[DOWNLOAD]をクリックする。

FPSだけ変えて他はそのままで[DOWNLOAD]をクリックした。

あとは以下の記事の手順でVaMに取り込める。
Virt-A-Mate – モーション・キャプチャのデータを取り込む。 –
これはここの記事の焼き直しなのでこちらを見ても同じことだ。
で、VaM上で冒頭の動画を作ることが出来る。
VaMでやった操作を簡単に書く。
 SceneAnimationとして取り込まれる。
 Timelineにインポートする。
 hipControlのZ方向の移動だけをゼロにする。




Virt-A-Mate - Import Motion Tracking Data by Blender -

やりたいこと
 エロ動画の女優さんの腰の動きをVaM上で再現する。
 音声と同期できればなかなかうれしいかも、音の効果は絶大だから。

環境
 VaM 1.20.77.9
  Timeline v5.3.0 (AcidBubbles.Timeline.249.var)
 Blender 2.92.0
 Visual Studio Community 2019 Version 16.11.5

手順
 1.Blenderで動画の動きのMotion Trackingを得る。
 2.1.をCSV形式で出力する。
 3.2.のCSVをVaMに取り込む。
 4.VaM上で調整し動画の音声も組み込む。

以下その手順の実際
 1.「Blender 2.92.0 Motion Tracking
これが今回例として使うAVをトリミングしたもの。


 2.
  参考
  Export Track Markers to csv
  Blender python script to export the motion tracking markers to .csv files.
[crayon-67174519862a8109235562/]
  出力先だけをD:¥に変更した。
[crayon-67174519862b1274529324/]
  Scriptingを開いてText Editorに上のコードをコピペしてから実行した。
  指定先に[動画名_Camera_tr_Track.csv]というファイル名で出力される。
  Trackerが複数あればこのファイル名に番号が追加される。
  このCSVファイルには[x座標],[y座標]がフレーム数だけ書かれている。


  LibreOffice Calcでグラフにしてみた。
  それらしいデータが取れているようだ。

青線がx軸方向の、オレンジがy軸方向のデータだ。

 3.
  さて、ここからがいろいろ面倒だ。
  (理屈はどうでもいいって場合は3.-3へ)
  3.-1
   VaMの.jsonファイルでAnimationがどう表されているのか確認してみる。
   Timelineで扱えれば後々都合がいい。
   まずはTimelineで[Export animation]した既存のデータの形式を見てみる。
   ¥Saves¥PluginData¥animations¥TimeLine¥
   に保存されている。

   何だか良く分からない形式だ。
   次に、TimelineでSceneAnimationに変換したのを見てみる。

   おなじみのx, y, z のデータになっている。
   これに準じて変換してみるのが良さそうだ。
  3.-2
   テキスト・エディタで見てみるとこうなっている。

   赤カッコの部分をフレームの数だけ繰り返す。
   その中のx, yの値を2.で得たCSVファイルのデータと差し替える。
[crayon-67174519862b4305912514/]
   の間の部分だ。
  3.-3
   以上で確認したCSVからVaM用データへの変換処理をC#で書いてみた。
   準備しておくものの確認
    ※C#で書いたWindowsのデスクトップ用の変換プログラム
    ※VaMのSceneファイル(Base VaM Scene)
     空のhipAnimationを含むSceneAnimationを仕込んだもの
    ※動点のx,y座標のCSVファイル(Tracking Data)
   作成されるもの
    ※VaMのSceneファイル(New VaM Scene)
     Trackingで得たデータの仕込まれたもの
  いずれ手直しが必要な点もいくつか残っている。
[crayon-67174519862bb446664939/]
   recordedLengthの値は手動で変更する必要がある。
   上の部分はプログラム内で自動的に書き直す処理を加えた(2022/01/15)。
   出力先はE:¥result.jsonに固定されている。
   ファイルを指定できるようにした(2022/01/16)。
   動画のFPSは59.94fpsに固定されている。
   上の部分はTextBoxから値を変更できるようにした(2022/01/15)。
  他は、マウスのクリックでファイルを指定するだけに出来ている。

 4.ここからは出来あがったSceneをVaMで調整する作業だ。
   出来上がったSceneファイルをVaMで開く。

   データはSceneAnimationに取り込まれているのでTimelineにImportする。

   SceneAnimationは消してしまって良い。
   当然、Blender上でTrackingした部分のデータだけ読み込まれる。
   Personの他の体の部分のポーズとかは適宜整える。

   元になった動画の音声をいっしょに再生すれば動きが音と同期する。
   下の動画、まだポーズの詰めが甘いが、左がVaM上のPersonの動きだ。
   右に元にしたAVの動きを比較のために載せてみた。
   外人さんの手による大味な音声には以前から違和感がある。
   やっぱ音声は大事だと思う。

続きだけど内容はただの与太話。
Virt-A-Mate – Import Motion Tracking Data by Blender 2 –




Virt-A-Mate - Timeline の使い方 (Part 0) -

Virt-A-Mate – Timelineで腰振りSceneを作るまでのチュートリアル動画 –
販売開始
Virt A MateでTimelineを使ってHな腰の動きをさせるまでの操作動画

Virt-A-Mate用のプラグインであるTimelineの使い方を書いた記事
Virt-A-Mate – Timeline の使い方 (Part #) –
の対象とするバージョンなどの前提事項の覚書き。
記事のPDF版(操作時のキャプチャ動画を含む)をBOOTHで販売中

Part 1: Adding the plugin to a person
Part 2: Animate a controller
Part 3: Animate a morph
Part 4: Triggers
Part 5: Mocap
Part 6: Morphs & float params mocap
Part 7: Animations blending
Part 8: Layers
Part 9: Sequencing and transitions
Part 10: Curve types and bulk
Part 11: Multiple atoms and the controller plugin
Part S01: SceneAnimationとの連携(独自記事)
Part S02: Timelineのjsonファイルの直接編集の例

元のプラグイン自体が逐次バージョンアップ中なので、使い方の記事は変更の後追いになる。
変更される部分もあれば以前のままの部分もある。
そのため現時点での記事がどのバージョンに対応しているのかをここに書いておく。

はじまりはVaM Hubの記事、
 https://hub.virtamate.com/resources/timeline.94/
そこからたどったビデオのチュートリアル、
 https://github.com/acidbubbles/vam-timeline/wiki/Video-tutorials
を観ながら内容をかいつまんで覚書きするものだった。
2021年5月14日から記事を書き始めている。
その時のバージョンは v4.4.2 = AcidBubbles.Timeline.218.var だった。
その後、2021/10/19 現在では v5.1.0 = AcidBubbles.Timeline.245.var となっている。
Wikiの解説は書き換えられるが、ビデオは更新が遅いのか、いまのところ最新のバージョンとは食い違いが出ている。

すでに書いた記事(Part 1 – 11)で触れた機能のメニューや仕様が変更されたら、その部分だけを書き換えることにした。
全く記事に無い新しい機能は別の記事(Part S##)としてその都度追加する。

2021/10/19
 Part 1 – Part 11, Part S01, Part S02 はv5.1.0 に合わせて更新加筆済み。
2022/01/27
 BOOTHで販売中のファイルに操作時のキャプチャ動画を追加。
 動画の内容一覧




Virt-A-Mate - Timeline の使い方 (Part S02「Exportしたjsonの編集」) -

追記(2022/01/01)
 よく考えれば、以下の操作はただ単にhipControlあたりにParent Linkすれば済む話だった。
 なのでこの記事はほとんど無意味だ。
 それでももしかしたら何かの役に立つかもしれないので置いておくことにする。

Virt-A-Mate – Timeline の使い方 (Part 0) –」参照のこと

あるAnimationでPersonを動かす際にLightもこれに追随させたい。


上の動画では、PersonのHipの動きとLightの含まれるSubSceneの動きが全く同じになっている。

やり方
1.SubSceneでTimelineを使ってControlのAnimationをExportする。
  このAnimationは空でいい。
2.PersonのTimelineでHipのAnimationをExportする。
3.両方のJSONファイルをJSONEditで開く。
4.以下の部分をコピーする。

5.以下にペーストし、AnimationLengthを変更して保存する。

6.1.に5.をImportする。

以上でLightのSubSceneはPersonのHipと全く同じ動きをする。




Virt-A-Mate - Timeline の使い方 (Part S01「Scene Animationの取り込みと複製とReverse」) -

Virt-A-Mate – Timeline の使い方 (Part 0) –」参照のこと

ここからは本家のTutorial Movieから離れた勝手な使い方の覚書き

SceneAnimationとの連携

SceneAnimationだけでは選択範囲のトリミングしかできない。
Timelineに読み込めるといろいろ出来るので非常に便利だ。
取り込む手順は以下の通り。



3枚目の赤枠内を見ればAnimationが取り込まれたのが良くわかる。
あるAnimationを取り込んで複製し、複製した方をReverseし、2つを連続させたものが以下の動画だ。


Timelineに読み込めれば、手の動きだけを取り除くこともできる。

当然、取り除いたものも保存できるので部分部分のアニメーションとして流用できる。

追記(2021/10/19)
 記事を書いた当時のv4.4.2(AcidBubbles.Timeline.218.var)から
 v5.1.0(AcidBubbles.Timeline.245.var)となっている。
 この記事の内容に関して変更点は特にない。

Virt-A-Mate – Timeline の使い方 (Part S02) –




Virt-A-Mate - Timeline の使い方 (Part 5「左手を動かしてその動きを記録する」) -

Virt-A-Mate – Timeline の使い方 (Part 0) –」参照のこと

追記(2021/10/18)
 この機能に関してはv5.1.0では変更されている。
 一番下に古い記事を残すことにして、新しい機能を使ってみる。
追記(2021/11/03)
 v5.1.1(AcidBubbles.Timeline.247.var)
 もここに書いた部分に変更は無い。

フレームごとに動きを登録するのでなく実際に動かしてその流れをそのまま記録するのは同じ。
動かす対象をTargetに登録して選択してから以下のようにクリックする。

下の絵のような表示になる。
 1:記録時間を延長
 2:記録開始までの待ち時間
 3:記録部位にマーカーを表示
 4:記録開始
 5:記録停止(ESCでもよい)
 6:記録されるターゲット

4で記録が始まるが、2の指定時間だけ待ってくれる。
1にチェックを入れると記録時間が自動的に延長される。
チェックが無ければ設定時間の最後で終了する。
5かESCで記録を終了させる。
6で動きを記録するターゲットを選択する。

Possessで一度に記録するならすべて選択し、1つずつ記録して動きを積み上げるなら1つずつ選択する。
当然、選択したターゲットの動きは上書きされる。

以下は 2021/06/03 時点での古い説明

Part 5: Mocap
フレームごとに動きを登録するのでなく実際に動かしてその流れをそのまま記録する方法。

動かす対象をTargetに登録して選択してから以下のようにクリックする。


左下に表示が出て、例えばSPACEを押すと記録が始まる。
このときTargetを動かせばそれが記録される。

動画では下の順にクリックでKey Frameが登録されるというような説明だが、何もしなくても自動的にKey Frameが追加された。

Virt-A-Mate – Timeline の使い方 (Part 6) –




Virt-A-Mate - Timeline の使い方 (Part 11「異なるAtom上のAnimの連携とController」) -

Virt-A-Mate – Timeline の使い方 (Part 0) –」参照のこと

Part 11: Multiple atoms and the controller plugin

Multiple atoms
上のリンク先の動画の前半は以下のことを解説している。
複数のAtomにそれぞれTimelineを入れてAnimationさせる場合、Animationの名前が同じなら自動的に同期する。


設定画面の表示も同期する。

Controller plugin
後半はController pluginの話。
SimpleSignを追加する。

これにVamTimeline.Controller.cslistを追加する。
AcidBubbles.Timeline.218 > VamTimeline.Controller.cslist
すると、Game内にTimelineの操作パネルが出現する。

これを使ってGame内でTimelineの操作ができるようになる。
最上部にAtomの切り替えタブがある以外は同じだ。

追記(2021/10/19)
 記事を書いた当時のv4.4.2(AcidBubbles.Timeline.218.var)から
 v5.1.0(AcidBubbles.Timeline.245.var)となっている。
 この記事の内容に関して変更点は特にない。
追記(2021/11/03)
 v5.1.1(AcidBubbles.Timeline.247.var)
 もここに書いた部分に変更は無い。

Virt-A-Mate – Timeline の使い方 (Part S01) –




Virt-A-Mate - Timeline の使い方 (Part 10「Frame間の移動曲線の変更」) -

Virt-A-Mate – Timeline の使い方 (Part 0) –」参照のこと

Part 10: Curve types and bulk
フレーム間の動きを変更できる。


フレームの範囲を決めて一括で変更することもできる。

1:設定範囲を決める
2:キーフレームの削除やコピー
3:カーブの形状の変更

追記(2021/10/19)
 記事を書いた当時のv4.4.2(AcidBubbles.Timeline.218.var)から
 v5.1.0(AcidBubbles.Timeline.245.var)となっている。
 変更点は書き直し絵も差し替えた。
追記(2021/11/03)
 v5.1.1(AcidBubbles.Timeline.247.var)
 もここに書いた部分に変更は無い。

Virt-A-Mate – Timeline の使い方 (Part 11) –




Virt-A-Mate - Timeline の使い方 (Part 9「2つのAnimの連携と遷移」) -

Virt-A-Mate – Timeline の使い方 (Part 0) –」参照のこと

Part 9: Sequencing and transitions
あるAnimationの後に続けて再生する別のAnimationの設定を行う。
1:Sequenceの設定
2:次に再生するAnimation の指定
3:何秒後に次のAnimationを再生するかの時間指定
4:移行期間の指定

AllをクリックでSequenceが開始される。

Animationから次のAnimationへ移る間のTransition Animationを作成する。


追記(2021/10/19)
 記事を書いた当時のv4.4.2(AcidBubbles.Timeline.218.var)から
 v5.1.0(AcidBubbles.Timeline.245.var)となっている。
 メニューの表示順が変わったので絵を差し替えた。
追記(2021/11/03)
 v5.1.1(AcidBubbles.Timeline.247.var)
 もここに書いた部分に変更は無い。

Virt-A-Mate – Timeline の使い方 (Part 10) –




Virt-A-Mate - Timeline の使い方 (Part 8「Layerを追加してそこにAmimを加える」) -

Virt-A-Mate – Timeline の使い方 (Part 0) –」参照のこと

Part 8: Layers
Layerを追加する。


Layer 1にAnim 3が作成される。
これにhipControlを左右に動かすアニメーションを追加する。


この段階で
Main Layer に Anim 1 と Anim 2、Layer 1 に Anim 3 という構造になっている。

同じLayer上のAnimationは同時には動かせないが、Layerが異なるものは同時に動かせる。
例えばAnim 1(Main Layer)とAnim 3(Layer 1)を動かすと以下のようになる。

LayerやAmimationの名称は変更できる。

追記(2021/10/19)
 記事を書いた当時のv4.4.2(AcidBubbles.Timeline.218.var)から
 v5.1.0(AcidBubbles.Timeline.245.var)となっているが、
 上の説明の通りで変更点は無い。
追記(2021/11/03)
 v5.1.1(AcidBubbles.Timeline.247.var)
 もここに書いた部分に変更は無い。

Virt-A-Mate – Timeline の使い方 (Part 9) –