![見出し画像](https://assets.st-note.com/production/uploads/images/73690977/rectangle_large_type_2_725e2da8feebbea4e4bd954400434a46.jpeg?width=1200)
初トレースに挑戦?
ジェジュンが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ファイルのままアップロードしたのがまずかったかと解凍してアップロード。
本日はこれで時間切れ~。
作業再開。
昨日エラーが出た原因は、前にやったから、と
を端折ったためのようだ。
①-C Expose学習データの配置
を実行すると、
autotrace 直下に expose_data.zip が見つかりませんでした。
というエラーが出た…。Zipのままでよかったのね~。
グーグルドライブが一杯になったというエラーが出たので、解凍したファイルのフォルダを含め、がさがさ削除したのに容量が増えない…。
ゴミ箱ってWindowsじゃなくてグーグルドライブのゴミ箱を空にしなきゃいけなかったのね…。まあ、そらそうだよね;;
その後、ファイルをZipに入れ替えてから実行すると、するすると動きだし、事前作業を完了しました。
② 環境設定
③ コード準備
④ データ配置
⑤ 入力映像アップロード
MMD自動トレース実行
そしていよいよ作業は自動トレース実行に。
まずは、
⑥-A 人物推定
です。
「ディスク残量がわずかです」というエラーメッセージが出た場合、
1回目は無視して大丈夫です。
2回目が出てきたら、入力映像をキリのいいところで区切って分けて処理してください。
とのこと。
元動画は2分32秒と結構長めなのでやばいかも、と思っていたら、案の定、処理開始1時間50分時点で2回めのエラーメッセージが;;この時点で残りディスク容量が12GB程度。
ダメ元で続行したら完了しました~。
この処理の後、各人物を指定するINDEXがついた動画が表示されるので、人物ごとに、どのINDEXをどのフレーム間で使用するかを指定します。
![](https://assets.st-note.com/img/1646556646159-VmZHVr84DE.jpg?width=1200)
この時点で動画を出力して作業をすることもできます。
というのは簡単ですが、ひと続きのダンスでも思いの外、インデックスが入れ替わりますし、人押し車みたいな形でオートバイを表現するシーケンスは人がこんがらがってごちゃごちゃ…。
確認画面のフレーム数やインデックスナンバーも結構読み取りづらいし。
ノートにインデックス、フレーム数とメモしていきましたが字が汚くて読めないし…。
後から考えれば、表計算でまとめてテキスト出力した方が早かったな…。
バックダンサーも入った練習動画ですが、最初からジェジュンのモーションだけ取るつもりだったので、ジェジュンだけ追跡指定しました。
これがその結果です。コロンの前がインデックスナンバー、続くのがフレーム数です。
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)
![](https://assets.st-note.com/img/1646661753618-MPGZv1FTUD.png)
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"に変えるとうまく行くんじゃないかと思ったのですが、思いっきり誤動作しました;;
まあ、ぽちぽち行きます。
![](https://assets.st-note.com/img/1646879843168-AEYfhre2l2.jpg?width=1200)
こういういう形で行の表示が折り返したら、次の行に手動でカーソルを動かす
モーション出力に成功
そしていよいよ、モーション出力へ。
今度は、無事、完走。
棒人間モデル(trace_<実行年月日時分秒(米国時間)>_rot_model_no<追跡人物No>.pmx)
棒人間用モーション(trace_<実行年月日時分秒(米国時間)>_rot_no<追跡人物No>.vmd)
あにまさ式ミク用モーション(trace_<実行年月日時分秒(米国時間)>_miku_smooth_no<追跡人物No>.vmd)
など5つのファイルが生成されていた~!!
何も考えずモーションをそのまま三日月さんに流し込むと宙に浮いてましたが、踊っていました~。
とりあえず動いた~。
![](https://assets.st-note.com/img/1646665364964-ps0eEj33xc.jpg?width=1200)
棒人間モデルってこんなんやった。
![](https://assets.st-note.com/img/1646666537096-m7L4a7qlmd.jpg?width=1200)
後は、別のツールで細かく修正していくようですね。
https://www.nicovideo.jp/watch/sm37848683
こちらが若干修正したモーション
関連
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?