chakokuのブログ(rev4)

テック・コミック・ごくまれにチャリ

お越しいただきありがとうございます。

このブログでは主に以下の内容を記載しています(自分の記録用)。

  • 何か作った話(自分は何かを作るために生きている..できたらクスっと笑えるものや、アートと絡みたい)
  • 音楽(AerophoneやDTM(FL-Studio))
  • 趣味のロードバイク(坂道をひーこら走ると結構大変な人生(笑)と重なる。。仕事のストレスが軽いと走らなくなる。。いかん)

記事が渾然一体となってカオス状態ですが、マイコンのプログラムも、ちゃりで走るのも、料理するのも、自分の中ではそれぞれが繋がっているので、カオスな日常をそのまま反映させています。リンクや引用はご自由にどうぞ。質問等ありましたらコメントに書いてください。微力ながら自分の分かる範囲で回答します。
とにかく、、人に「あほやなぁ」と言われる事に精進するのが我が人生。

まとめ:https://sites.google.com/site/chakokumatome/

Blenderで作ったシリンダーマン(仮)にretargetしたら動いたので、UE5にexport/import、Metahumanを試す

Blenderで最低限の手足を持つ筒状のメッシュで作ったモデル(以降、シリンダーマン)に、チキチキのダンスデータをpairent設定したら、それなりに動いた。シリンダーマンをEXF形式でexportしてUE5にimportした。これもまぁなんとか動いた(足先とか手足のモデルがないので、全体の動きだけ確認してOK)
前回は、UE5のアンドロイドにIK retargetして四苦八苦していたのだが、どうせならアンドロイドを飛ばして、このままMetahumanにマップしてみようと思った。

(パリピ孔明のダンス)BlenderからなんとかUE5には持ってこれた。踊ってはいるが、細かな点で動きがおかしい

Blenderを使ってanimationのBoneとオブジェクトをペアリングして、XBF形式でExportした。それをUE5で読み込んで、IK-Reterget
の機能を使ってアンドロイドに動きを複製した。大体はOKなのだけど、腕の動きがおかしい。あり得ない角度にまで曲がっている(肘が開きすぎ)。あと、手首もおかしい(正確には手首はまだ細かくretargetしていない)
3Dアニメーションやっている人なら、マッピングのどこがおかしいのかすぐに見つけて修正できるのだろうけど、何が原因でどうなおせば良いのかが分からない。腕が体に食い込んだりしていて、あり得ないポーズになっている。公式のダンスでは、回転は1回のはずだが、自分がリターゲットしたアンドイドは2回回っている。なぜだ?? rootが2回複製されてしまい、動きが2倍になっている?? 酷くてこのレベルではボツだ。。

もう一度やりなおすとしたら、、blendarでのキャラクタの動きをしっかり仕上げてからUE5に持ってくるというぐらいだろうか。3Dアニメーションを基本的な所から理解できていないので、問題に出会っても手が出せない。自分でモデル作ってboneを埋め込んでマッピングまできっちり仕上げる経験をしたら、もしおかしな動きをしていても原因と対策がわかるのではないだろうか。

CI/CD調査のため、RPi上のDockerでGitlabを動かす

CI/CD調査の一環で、Gitlabが必要になった。誤って壊してもいいように、RPiのDocker上でGitlabを動かしてみる。
file: start.sh

#!/bin/sh

export GITLAB_HOME=<some_path>/Gitlab

sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 8022:22 \
  --name gitlab \
  --restart always \
  --volume $GITLAB_HOME/config:/etc/gitlab \
  --volume $GITLAB_HOME/logs:/var/log/gitlab \
  --volume $GITLAB_HOME/data:/var/opt/gitlab \
  yrzr/gitlab-ce-arm64v8:latest

# memo
# to avoid 22 port error, modify setting.. 22 -> 8022

RPiのアーキはARM64v8だそうで、RPi上で実行可能なイメージが入手可能なので、それを使って起動してみた。一発で動作した。
先人の皆様に感謝。

id:rootPWDは以下で取得するらしい

 docker exec <container_name>  cat /etc/gitlab/initial_root_password

■参考URL
GitLabをdockerで立てる - Qiita

Blenderで動きを作って、UE5に持っていく(予定)

Unityを使うとアバターに踊らせるのはサクッといけるものの、FBXファイルでUE5に持っていくと、どうも何かがおかしい。データの内容が分かっていないので何が悪いのか分からない。一方、UE5でチキチキダンスを踊らせている人がいて、Youtubeのコメントには、BlenderからUE5にデータを移したと書かれていた。だから、、自分もそれに倣って、Blenderでアニメーションデータを使ってVRMモデルを動かして、FBXで出力してUE5に持って行って、Metahumanなりにマップしなおしてみる。
チキチキのアニメーションデータはBlenderに取り込むことができた。動かしてみるとそれらしくダンスしている。

このままだと骨だけなので、、リターゲットだったかで*1、モデルと組み合わせる必要がある*2

動きを別のモデルにマッピングさせるのはリターゲットと呼ばれる作業らしい。本来はボーン単位で対応づけをするようだが、有償だと自動でもやってくれるらしい。フリー版でやりたいので、手作業でもいいからやってみる。
Blender リターゲット
ReNimというプラグインを使ってみる。ReNimプラグインをインストール、ソースとターゲットのボーンを一対一で対応づけしてゆく。わからないのは、背骨とかソースとターゲットで構成が異なっている場合どうしたいいのか。
動かしてみると大体いい感じだけど、腰の高さというか、腰の捻りなどが伝えられていない。これはどうやってマッピングさせたらいいのやら。

リターゲットする前に、そもそもボーンを使ったアニメーションを理解していないので、どうやったら腰の高さや動きをコピーできるのかがわからない。基礎から勉強した方がいいのかも。

これは、、Root bone pivot collectionという問題ではなかろうか
GitHub - Mwni/blender-animation-retargeting: Add-on for Blender that allows the transfer of animations and poses from one armature to another

根本原因が分かっていないのだが、0から勉強するにはちょっと時間がなく、別のretarget pluginを試してみる。
GitHub - Mwni/blender-animation-retargeting: Add-on for Blender that allows the transfer of animations and poses from one armature to another

解説記事
[無料]アニメーションとポーズを別のリグに転送できるBlenderアドオン「Blender Animation Retargeting」
https://cginterest.com/2020/04/08/%E7%84%A1%E6%96%99%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%A8%E3%83%9D%E3%83%BC%E3%82%BA%E3%82%92%E5%88%A5%E3%81%AE%E3%83%AA%E3%82%B0%E3%81%AB%E8%BB%A2%E9%80%81%E3%81%A7/

blender animation retargeting というPlugInを使ってもやはり腰の動きがコピーできない。これはroot boneの扱いが、アニメーションデータとモデルの間で違っているのと、それを理解できずにツールを正しく扱えていない自分のせいだと思う。分かっていたらボーンの配置を変えたりツールを使いこなして正しくリターゲットできるのだろうけど、そのあたりの理解が足りていない。というわけで、、理解の不足を補ってくれると期待してRokoko社が出しているPluginを試してみる。

https://support.rokoko.com/hc/en-us/articles/4410463481489-Retargeting-an-animation-in-Blender-Plugin-1-1-and-above
GitHub - Rokoko/rokoko-studio-live-blender: Rokoko Studio Live plugin for Blender

Rokoko社のPlugin自体は無料で使えるけど、アカウントで0円契約が必要のようであった。契約したものの解約の方法がわからずサポートに問い合わせ中。Rokokoのretargetツールを使った結果、回転や上下動はコピーされるようになった。一方、モデル側のroot bone をどうマッピングしていいのかわからず、置いてけぼりになってしまっている。
調べていて分かったのは、チキチキのアニメーションデータのBoneはRootBoneで回転や上下動が表現されておらず、重心?の移動で表現されているようだ。自分はBoneのマッピングしかわからず、Bone以外で表現された回転・上下動をどうモデルに適用したらいいのかがわからない。どこで表現されているのかが分からない。



■参考URL
BVHファイル(モーションキャプチャデータ)をインポート!:Blender - モーリーのメモ
モーションキャプチャデータをBlenderでリターゲットするメモ - Qiita
Blenderの標準アドオンでモーションデータのリターゲティング【Blender 2.8 2.9対応】|KurokiNadir|pixivFANBOX
Blender Rigifyの使い方(バージョン 2.79)

*1:モデルとアーマチュアのリギングと呼ぶらしい

*2:ひょっとしてこのままFBXで書きだすとUE5では読めるのだろうか??->いつものエラーが出るだけであった

パリピ孔明のアニメーションデータを活用してUE5でアバターを動かしたい->難航中

パリピ孔明のチキチキダンスをUE5上で作ってみたいと四苦八苦していて、ダンスのモーションデータが公開しているのが分かった。
【ダンスモーションデータ】TVアニメ「パリピ孔明」OPテーマ「チキチキバンバン」【踊ってみた】 - TVアニメ「パリピ孔明」 - BOOTH
モーションデータだけをUE5に取り込もうとしてもキャラクタとの関節のマッピングがうまくいかないせいと思うがエラーになってimportできない。そこで、まずは手順が紹介されているUnity上で動かしてみる。まずはunityのAssetsに読んでみる。。Assetsにはエラーなく読み込めた。次はどうするのか??
データに対して以下の操作が必要
Inspectorを開く
「Rig」ー>Animation Typeを「Humanoid」に変更、適用
「Animation」ー>Motion、Root Motion Nodeを「<Root Transform>」に変更、適用
(https://note.com/vsrx/n/n22fa5355d8d6) ・・・Thanks

上記サイトに倣って作業をして、Unityでおじさんが踊るところまでは来た。あとは踊らせたいアバターというかキャラクターをこれに紐づければ良いのだろう。

UnityでVRMモデルを扱うには、UniVRMのプラグインが必要なので、GItから落としてきてUnityに入れる
次は動かすモデルとしてVRMモデルをDLする必要があるが、VRoidHubを見ていても、DL禁止が多いようで、勝手には使えないのかと。
版権がよくわからないので、VRoidStudioで凝らないデフォルトのモデルを作ってみる(嗜好がバレるのでそっけないモデルを作成)

上記ツールで作成したVRMモデルをExport してUnityに読み込ませる。
読み込んだVRMのAnimationのオプションを上記手順で作成したAnimator Controlのチキチキダンスを指定すると、なんとか自作アバターがうごくようになった。

細かいメニュー等の意味は全く分からないが、それほど手間なく、自作アバターが踊るところまで作れた。アバターが踊っているのを見ていると、髪の毛の揺れ等、細かい所までよく作られていて、これはこれで満足感があるけど、最終目標はUE5上のmetahuman で踊らせる事なので、、VRMモデルをUE5で読み込めるfbx形式でexportする必要がある。

UnityのFBX Exporterがあるようで、これを使ってみる。
3DモデルのメッシュやマテリアルをFBX形式でエクスポートするFBX Exporter【Unity】【アセット】 - (:3[kanのメモ帳]

Unityのパッケージマネージャから、FBX Exporterをinstall する。
GameObjectにExport to FBXメニューがあるので、今回作成したVRMモデルを選んでExportする。
これをUE5でimportしてみる。
Importするとwarningは出たけど読み込めた。

モーションデータも一緒に取り込んでいるはずなので、、どうにか設定したら動くはず(手順を忘れた)
(理解度1%ぐらいで使っているので試行錯誤ばっかりなのだが)どうやらモデルのデータは取り込んでるが、アニメーションデータが持ってこれていないようだ(Animation Sequenceのファイルがない)。アニメーションだけなら・・・と思って以前からエラーになっていたパリピ孔明のCHIKICHIKIBAMBAM_eiko.fbxをimportしてもマッピングでエラーになる。
メッセージは以下

Mesh contains Root bone as root but animation doesn't contain the root track. Import failed

再確認するとImport操作の時にAnimationデータのチェックを外していた。これを有効に変更して再度Importをする。すると、Animation Sequenceも取り込まれた。が、、動かないし、こけている。XYZが違っているせいだろうか。こけているのは90度回転させれば治ったけど、動かない。

一応時計(スライダー?)は動くのでデータとしては入っているようだが、、関節のマッピングが狂っている、あるいは、マッピングされていない状況だから動かないのだろうか。。しかしアバターは、ダンスのどこかの時刻の1ポーズで固まっているのだが。ポーズできてるということは関節のマッピングもOKなのではないか。これは代表画像(サムネイル的な)?

FBXのimport オプションをいろいろ変えながらやってみたけど、やはりAnimationデータが正しく扱えない。最終的には以下

  • モデルはダンスの1ポーズをしている
  • モデルは動かない
  • アニメーション時間の長さは正しそう
  • モデルは90度倒れている
  • import時に警告が出ている
FBXImport: Warning: No smoothing group information was found in this FBX scene.  Please make sure to enable the 'Export Smoothing Groups' option in the FBX Exporter plug-in before exporting the file.  Even for tools that don't support smoothing groups, the FBX Exporter will generate appropriate smoothing data at export-time so that correct vertex normals can be inferred while importing. 
FBXImport: Warning: Imported bone transform is different from original. Please check Output Log to see detail of error.  

このままFBXの取り込み問題を調べるアプローチもあるが、そもそもVRMモデルをUE5でさくっと動かしている人がいるようで*1、その方々の手順を参照して真似する方が早いのではと思った。アニメーションデータも持って来てもらっている必要があるのだが。。
(FBX形式のデータの中身を確認できていないので、根本原因が何なのか全然わからない)
ツールを超えてアニメーションデータを移すというのがややこしい根源のようだ。。

■追記
パリピ孔明のアニメーションデータをリターゲットしてUE5で動かしている人がいて、YouTubeにアップしていた。スレッド上で、どうやって作ったのか?との質問に対して、「Blenderを経由している」と回答されていた。

https://www.youtube.com/watch?v=2uEdi4uSgY0

H. Aruru
How did you import the .fbx to UE5 without the eiko skeleton? I tried renaming all the bones of Unity-chan to eiko but when the animation imported, it was all wrong.

Once skinning was done on the dummy mesh in Blender, it was imported in UE5 as a new skeleton with the mesh. Then we did IK retargeting to Metahuman and converted the motion.

@3D人-3dnchu- I added a metaball to the skeleton in Blender and fixed the parent and then I was able to import into UE5 properly. IK retargeting was difficult due to crashes, but if I don't T-pose the fingers it works. Thanks to your tip I was able to make a dance video as a complete 3D newbie! Thank you!

自分の場合はUnityを経由しようとして手こずっている。。Blenderの方がいいのか、FBXを介するところで何か基本的なミスをしているのか。。

■追記
mixamoからアニメーションとモデルをFBXで落としてきてUnityでFBXでExportしてUE5でImportしたらやっぱりアニメーションが動作しなかった。だから、VRMモデルに依存した問題ではなく、Unity->UE5のAnimationのExport/Importの問題と理解した。似たような事をしている人は多いと思うのだけど、なぜか動かないといった情報は見つけられず。基礎知識として、retarget の作業が必須なんだろうか??

まずは基本的なretargetを理解してから、ややこしい作業に移るべきでは?と思った。
UE5でのアニメーションの流用方法について【Compatible Skeletons, IK Retargeter】 | ドクセル


■参考URL
Unity Humanoid Avatarの解説 [VirtualCast]
アニメ「パリピ孔明」のオープニング曲「チキチキバンバン」の公式ダンスモーションデータを使って、Unity上でVRoid Studioなどで作ったVRMモデルを踊らせよう|takamitsu_h|note
3DモデルのメッシュやマテリアルをFBX形式でエクスポートするFBX Exporter【Unity】【アセット】 - (:3[kanのメモ帳]
FBX インポート オプションのリファレンス | Unreal Engine ドキュメント

*1:VRM4UはVRMモデルをUEで読み込ませるためのプラグインで、アニメーションデータは対象外、だからこれはちょっと今回には適さない

リアルタイムでモーションキャプチャしてUE5のキャラクターを動かしたいー>簡単にはいかなさそうだ

パリピ孔明」の「チキチキバンバン」のダンスが面白くて、MMD?で踊らせている人も多く、自分もモーションキャプチャしてUE5のキャラクタ(METAHUMANとか)を踊らせてみたいと思った。
おおよそ、画像から関節を抜き出して、3Dモデリング(ボーン?)にマップして、キャラクタに動きを与えるという流れになるのだけど、サクッと動かせるツールが見つけられない。UE5のプラグインで動きそうなのは、PoseAI、MediaPipe Pose Tracker等があるけど、いずれも有料なのであった。できればフリー版で動かしたい*1
Youtubeで紹介されている方法は、いくつかのソフトウエアを組み合わせて、FBX形式のデータまで作ってからUEに持って来るのが一般的なようだ。この場合、複数のソフトを使いこなす必要があるのと、最後に関節位置の再割り当てが必要で面倒だ。plaskはフリーで動画やカメラ画像をFBX形式まで変換してくれるのだけど、やっぱり最後は関節位置の再割り当てが必要。。面倒*2

こうなったら、GitHubで公開されている、CMUのOpenPoseを使って関節位置情報を抽出して、なんとか自力か先人の変換ツールでFBX形式に変換してみようかと思っている*3。また飽きるかもしれないが。

■追記
調べているうち、モーションデータとキャラクタデータは別と理解できて、ひょっとして、ダンスのモーションデータを誰かが公開しているのでは?と思ったら、踊ってみたのFBX形式が提供されていた。
【ダンスモーションデータ】TVアニメ「パリピ孔明」OPテーマ「チキチキバンバン」【踊ってみた】 - TVアニメ「パリピ孔明」 - BOOTH
Unityで使えるけどMMDでは使えないそうだ。データ形式が違うから? あまり理解できていませんが、UE5で読み込ませたらエラーになった。plaskで読んでみると、boneとmeshがないと怒られる。素直にunityで読んでみる。。Assetsにはエラーなく読み込めた。次はどうするのか??

データに対して以下の操作が必要
Inspectorを開く
「Rig」ー>Animation Typeを「Humanoid」に変更、適用
「Animation」ー>Motion、Root Motion Nodeを「<Root Transform>」に変更、適用
(https://note.com/vsrx/n/n22fa5355d8d6) ・・・Thanks

上記サイトに倣って作業をして、Unityでおじさんが踊るところまでは来た。あとは踊らせたいアバターというかキャラクターをこれに紐づければ良いのだろう。

■追記
UnityでVRMモデルを扱うには、UniVRMのプラグインが必要なので、GItから落としてきてUnityに入れる
次は動かすモデルとしてVRMをDLする必要があるが、VRoidHubを見ていても、DL禁止が多いようで、勝手には使えないのかと。
版権がよくわからないので、VRoidStudioで凝らないデフォルトのモデルを作ってみる。


Unity Humanoid Avatarの解説 [VirtualCast]

*1:PoseAI自体は無料だけど,スマフォ側で動かすキャプチャソフト(Pose Camera)が有料、しかも自分のiPhoneは古くてサポート外

*2:これぐらい面倒がらずにやらないとダメなんすかね

*3:この場合も関節位置の再割り当てが必要かも。しかしある程度データ形式を理解できていたら、プログラムでマッピングさせたい