見出し画像

初トレースに挑戦?

ジェジュンが3月2日にインスタでBrava!!Brava!!Brava!!のダンス練習風景をアップしました。

これがリリース当時のMV。

2,020年3月11日リリース。ジェジュンには珍しいダンスナンバーで、せっかく豪華なメンバーを揃えてMVを作ったのに、コロナ禍でその後につながらなかったという;;

でも、この練習風景動画を見て、血が騒ぎました。

MMDのトレースに挑戦はしてみたかったのですが、やっぱり、自分がやりたい曲でトレースしたい…。

私の場合、ジェジュンなのですが、ソロではあまり踊らないのですよね。JYJや東方神起だと踊っているけど3人、5人、ポジションチェンジ、と思いっきりハードル高くなるし…。

実は、Kiss Bでトレースしようと、素材自体は準備して、着手しかけたことがあったのですが、1秒も進まなかった;;。表情だけでも写したかったのですが…。
なんせ椅子に座らせるだけで何時間もかかってましたから…。
おまけにポーズを保存するのを忘れたし…。
作業していたPCがサドンデスくらってデータが塩漬けになってるし;;

こんな感じの画像でした。

ずっと座っているから楽かと思ったのですが、カメラアングル変わるんですよね;;

MMDのモーショントレースは、固定カメラが基本で、「踊ってみた」やK-popでよく公開している「本人練習動画」からトレースすることが多いのです。

その本人練習動画、来た~~~!

ジェジュンらしい動きだし、好きな曲です。

で、以前から「これなら何とかなるかも」と目はつけていたものの、動画を見ても内容がわからない、というMMD自動トレースに挑戦してみることに…。

自動トレース準備

https://www.nicovideo.jp/watch/sm37986816

自動トレース動画見た。
わからなかった。

またジェジュンの練習動画見直して血が騒いだ。

自動トレース動画、見直した。
グーグルドライブにフォルダを作る方法がわからなかった。

またジェジュンの(r

何とかグーグルドライブにフォルダを作り、トレース元動画ファイルをアップロードした。
グーグルドライブの[+新規]を押して[フォルダ]を選べば新規フォルダができたのね~。今までフォルダを作れる、という概念がなかった…。

そこから先がわからなかった。

MMD自動トレース実行

事前準備

① データDL
①-A Googleドライブとの連携
①-B GoogleSDKとの連携

まで何とか進めた。

①-C Expose学習データの配置

で、

人物推定に必要な学習データを事前にダウンロードしておきます。

のところがわからずスタックしています。

未来はあるのか?

学習データ発見

3月6日、あちこち検索していてやっと学習データダウンロードのやり方見つけました。
ちゃんと詳しく説明があったのに、「ノートブック」の使い方がよくわかってなくてたどりつけなかったんだと思う…。

インストラクションに従い、ExPoseプロジェクトとSample-xプロジェクトサイトに登録し、必要なデータをダウンロード、グーグルドライブのautotraceフォルダにアップロードしました。

それでちょっと実行してみたのですが、すぐエラー。
やっぱりZIPファイルのままアップロードしたのがまずかったかと解凍してアップロード。

本日はこれで時間切れ~。

作業再開。

昨日エラーが出た原因は、前にやったから、と

①-A Googleドライブとの連携

①-B GoogleSDKとの連携

を端折ったためのようだ。

①-C Expose学習データの配置

を実行すると、

 autotrace 直下に expose_data.zip が見つかりませんでした。

というエラーが出た…。Zipのままでよかったのね~。

グーグルドライブが一杯になったというエラーが出たので、解凍したファイルのフォルダを含め、がさがさ削除したのに容量が増えない…。
ゴミ箱ってWindowsじゃなくてグーグルドライブのゴミ箱を空にしなきゃいけなかったのね…。まあ、そらそうだよね;;

その後、ファイルをZipに入れ替えてから実行すると、するすると動きだし、事前作業を完了しました。

② 環境設定

③ コード準備

④ データ配置

⑤ 入力映像アップロード

MMD自動トレース実行

そしていよいよ作業は自動トレース実行に。
まずは、

⑥-A 人物推定

です。

「ディスク残量がわずかです」というエラーメッセージが出た場合、

1回目は無視して大丈夫です。
2回目が出てきたら、入力映像をキリのいいところで区切って分けて処理してください。

とのこと。

元動画は2分32秒と結構長めなのでやばいかも、と思っていたら、案の定、処理開始1時間50分時点で2回めのエラーメッセージが;;この時点で残りディスク容量が12GB程度。
ダメ元で続行したら完了しました~。

この処理の後、各人物を指定するINDEXがついた動画が表示されるので、人物ごとに、どのINDEXをどのフレーム間で使用するかを指定します。

この時点で動画を出力して作業をすることもできます。


というのは簡単ですが、ひと続きのダンスでも思いの外、インデックスが入れ替わりますし、人押し車みたいな形でオートバイを表現するシーケンスは人がこんがらがってごちゃごちゃ…。
確認画面のフレーム数やインデックスナンバーも結構読み取りづらいし。

ノートにインデックス、フレーム数とメモしていきましたが字が汚くて読めないし…。
後から考えれば、表計算でまとめてテキスト出力した方が早かったな…。

バックダンサーも入った練習動画ですが、最初からジェジュンのモーションだけ取るつもりだったので、ジェジュンだけ追跡指定しました。

これがその結果です。コロンの前がインデックスナンバー、続くのがフレーム数です。

2:-82,13:83-422,112:423-428,142:430-535,172:536-709,204:712-721,162:722-728,211:733-736,162:737-1191,310:1193-1696,515:1697-1867,606:1900-1910,534:1911-1965,666:1967-2007,697:2008-2024,710:2025-2035,722:2036-2042,728:2047-2060,753:2038-2107,780:2108-2120,792:2121-2128,802:2131-2132,792:2133-2138:934:2251-2634,993:2635-2648,997:2649-2692,1008:2693-2907,1044:2908-3056,1093:3059-3832,1391:3833-3879,1427:3880-3883,1430:3884-4172,1575:4173-4310,1627:4311-4333,1645:4332-4583

半分、ぼーっとなりながら作業をしていたので、絶対どこかで失敗している、と思ったのですが、確認すると結構、きれいに枠が取れていました。

そうして、いよいよモーション出力!?

実行してみたのですが、いろいろエラーがでて途中で止まってしまいました。
やはり空き容量が少ないままやったのがまずかったようです。
おまけに出力をやりなおそうとして、うっかり出力セル削除しちゃったし;;。

でも、ちゃんと出力までこぎつけた、ということで、気分が悪くなるくらい興奮しました。

追跡指定も途中、飛んでいたようだし、今度は、複雑な人間バイクモーションに入るまでのファイルで再挑戦してみたいと思います。

ファイルを分割して再挑戦

早速、ファイルを分割してみました。人間バイクモーションは流れで切り離せず、まあ最悪、カメラで避けるとして1分20秒で2分割に。

とりあえず前半だけでもモーションまで持って行きたいところです。

また、最初からやり直したのですが、

GPUバックエンドに接続できません
Colabでの使用量上限に達したため、現在GPUに接続できません

のエラーメッセージが。

計算リソースはユーザーみんなでクラウド共有しているので、たくさんのユーザーが使っているときはGPU/TPUへのアクセスが制限される場合があるとのことでした。

だそうです。

今、夜の9時22分なので、今から始めるといつ終わるのかと不安には思っていたのですが、今日はもう休めということね~。

3月7日、作業再開。

表計算ソフトでインデックス指定

人物追跡のインデックス指定に表計算を使ってみました。
修正も楽ですし、メモの汚い字が読めないとか、清書しなければいけない、というのがなくて楽でした。
A列:インデックス、B列:コロン(:)、C列:開始フレーム番号、D列:ハイフン(-)、E列:終止フレーム番号、F列:カンマ(,)
最後のG列はCONCATENATE関数を使って、AからFまでの文字列を連結してあります。

=CONCATENATE(A12,B12,C12,D12,E12,F12)

LibraOffice Writerでは改行コードの検索置換ができないようなので、手動で改行を取り、ジェジュンの人物追跡のインデックスを作成しました。

2:-82,13:83-421,111:422-429,142:430-535,172:536-712,205:713-725,163:726-1190,307:1191-1696,514:1697-1867,533:1868-1964,662:1967-2006,693:2007-2024,706:2026-2036,718:2037-2045,724:2047-2050,729:2051-2058,724:2058-2068,739:2071-2072,749:2078-2108,776:2109-2120,789:2121-2138,812:2141-2148,817:2149-2185,883:2186-2205,875:2206-2216,895:2217-2256,931:2258-2425

ここで、インデックス

⑥-C 人物追跡指定

のセルが行方不明になり、また一から仕切り直し;;

人物追跡はちょっと見てみるとインデックスが同じだったので、ままよ、と先程作成したインデックスで指定すると、うまくいきました。

LibraOffice Writer用のインデックス改行削除マクロ

5人用モーションに挑戦したとき、結構、インデックス処理が大量で、表計算で作成したインデックスの改行を削除していてぼーっとなりました…。これでうっかり削除しすぎたら大変…。
で、LibraOffice用の簡単なマクロを作ってみました。

まず表計算ソフトでインデックスごとのフレームの表を作成し、CONCATENATE関数でまとめた列をLibraOffice Writerに

編集|形式を選択して貼り付け|書式設定されていないテキストの貼り付け

でテキスト形式で貼り付けます。

行末までカーソルを移動して削除、という簡単なもので、折返し地点を行末と判断してしまうため、一括操作ができず(一括操作をマクロに記述する方法も忘れてるし~)行が折り返したら、手動で次の行までカーソルを移動しなければいけません。
面倒くさいからツールバーに登録しています。

sub MMDindex
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToStartOfLine", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:GoToEndOfLine", "", 0, Array())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Delete", "", 0, Array())


end sub

".uno:GoToEndOfLine"の部分を".uno:GoToEndOfSentence"か".uno:GoToEndOfParagraph"に変えるとうまく行くんじゃないかと思ったのですが、思いっきり誤動作しました;;
まあ、ぽちぽち行きます。

マクロ適用中。ツールバー最下段右端「MMDIndex」がマクロ実行ボタン。1行ずつ手で押す
こういういう形で行の表示が折り返したら、次の行に手動でカーソルを動かす

モーション出力に成功

そしていよいよ、モーション出力へ。

今度は、無事、完走。

棒人間モデル(trace_<実行年月日時分秒(米国時間)>_rot_model_no<追跡人物No>.pmx)

  • 棒人間用モーション(trace_<実行年月日時分秒(米国時間)>_rot_no<追跡人物No>.vmd)

  • あにまさ式ミク用モーション(trace_<実行年月日時分秒(米国時間)>_miku_smooth_no<追跡人物No>.vmd)

など5つのファイルが生成されていた~!!

何も考えずモーションをそのまま三日月さんに流し込むと宙に浮いてましたが、踊っていました~。

とりあえず動いた~。

棒人間モデルってこんなんやった。


後は、別のツールで細かく修正していくようですね。

https://www.nicovideo.jp/watch/sm37848683

こちらが若干修正したモーション


関連



この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?