バーチャル3Dクリエイター神部まゆみです(*^-^*)
今回は、Codexに参考イラストを渡して、Unity内のVRoidモデルに近いポーズを作ってもらった実験の記録です。寝そべりから始めて、椅子座り、体育座り、腕組み、指差し、振り返りまで試しました。
大まかな姿勢を作って素材として保存するところまでは進みました。ただし、イラストと同じ関節配置にすれば自然に見えるわけでもなく、胸やスカート、カメラとの関係には問題が残りました。そのあたりも、試した順に書いておきます。
ショート動画にしてみました。
イラストからVRoidのポーズを自動生成したい
普段はUnityのVeryAnimationやFinalIKを使って、手足の位置を調整しています。FinalIKでは「手をここに置く」という目印を動かすと、肩や肘の曲がり方を計算してくれます。気に入った姿勢や動きをAnimationClipに保存する流れです。
この手作業については、VeryAnimationのAnimation Recorderを試した記事にも書きました。前回は、CodexにFinalIKを操作させ、挨拶や腰に手を当てる動きを作る実験をしています。
今回はその続き。「こんな姿勢にして」と画像を渡したら、既存モーションを探して、近い姿勢から作ってもらえないか。毎回ゼロから手足を配置する工程を減らすのが目的です。
元のAnimationClipや完成済みシーンは残し、新しい素材として保存するように依頼しました。細部を延々と直すより、多少の違いがあっても再利用できるポーズを増やす方針です。
今回の制作環境と仕組み
制作に使用したのはUnity 6.3(6000.3.21f1)、VRM 1.0の既存アバター、FinalIKです。VRoidモデルの体格・衣装・髪・耳・尻尾は維持しました。VeryAnimationで行っていた保存工程の一部は、今回はEditor用C#スクリプトから実行しています。
まず既存モーションをMotion Libraryに整理する
ここでいうMotion Libraryは、今回プロジェクト内に作ったカタログです。既存AnimationClipの元ファイル、再生時間、キーフレームやアニメーション対象をJSONに記録し、複数方向から撮影した画像をHTMLで見られるようにしました。
さらに、腰や頭を基準にそろえた関節位置と、骨が向いている方向を使って、似た姿勢を探す機能を追加。動作名だけで決めず、異なるクリップから最大3候補を出し、実際の見た目も比較します。ジャンプの一瞬が寝姿勢の土台になるなど、名前からは意外な候補もありました。
画像を読んで、検索・IK調整・保存へ
- Codexが参考画像を読み、関節やカメラの目標値をJSONに用意する。
- Motion Libraryから近い姿勢を検索し、候補のフレームをモデルに適用する。
- FinalIKで手足を動かし、肩・鎖骨・腰などを必要な範囲で補正する。
- 顔・視線・表情とカメラを合わせ、撮影して確認する。
- 身体を新規AnimationClipへ保存し、設定と完成画像をライブラリに追加する。
手足ターゲットの不足分を補う処理と、Play Modeに入らなくてもEditor上でIKを初期化する処理も用意しました。ただし、Unityに画像を放り込めば何でも完成する画像解析器を作ったわけではありません。画像の解釈と目標値の用意にはCodexが関わり、その都度の修正も入っています。
身体だけならBody.anim、表情・視線はFacePreset、身体とカメラを含めた復元用にはPoseBundle、背景込みなら完成シーンという形です。振り返り制作後のカタログは190件、姿勢検索の対象は1,359フレームになりました。190件すべてを今回新しく作ったという意味ではありません。
Codexで実際に作ったポーズ
寝そべりから始めて、顔と視線も調整する
ChatGPTに生成してもらった参考画像は↓です。まぁこれに近づけられればi2iみたいにポーズが作れてラクできそうです。

これでこれまで作ったポーズやFinalIKを元に手足を調整、カメラも自動で動かしてもらって↓みたいにできました。

このモデルは眼球の初期回転が左右で異なり、単純に同じ方向を向けると寄り目になる問題がありました。元モデルの中立姿勢から眼球の向きを調べ直し、LookAtとVRM側の更新が二重に働かないように整理しています。
見た目を参考へ寄せる過程では、頭が枕に少しめり込む状態も残りました。ここは構図を優先して身体を変えず、背景調整を別工程にする判断にしました。
横向き寝から、目を閉じた睡眠ポーズへ
次の参考画像は↓です。

次は横向きになり、膝を曲げた姿勢です。既存Humanoidクリップの約0.056秒を使い、腕・肩・脚を調整。頭を手で支える配置と、カメラを見る表情を作りました。参考とは体型や衣装が異なるため、腕と脚の重なりは近似です。

もう一つ近い画像が↓これ。

これは上で作ったポーズを元にして手足をFinalIKで調整させて作ってもらったけど、胸を潰す感じのシェイプキーが必要になるかな…。手が気になるのは改善の余地があるかも。

両腕を頭の上へ伸ばし、片膝を立てる
次はこれ。

まぁなかなかの精度でポーズにしてくれているのだけど、VRoidモデルのウェイトやボーンは二次元イラストをトレースできているわけではないので、完全再現は難しいですね。そもそもイラストと体格やら色々違うけども。

骨盤を寝かせ、両肩・鎖骨・腕、左右の脚と足先を調整しました。制作は約24.9分。頭や足先を画面に収めることはできましたが、参考より人物が小さく、膝の位置や腕と頭の間隔に差が残っています。スカートの完全再現は追いませんでした。
椅子座りと体育座り
次はこれ。

こういうシンプルなポーズだとなかなかの精度でやってくれるけど、手のあたりは調整する方法を考えさせたいところ…。ちなみに椅子はTripoで作ったやつかな、フォルダに入れといたら勝手に使ってくれました。

次は体育すわりだけどこれは手や下半身のあたりがだいぶ破綻してるな…。下半身は最初にRootを回して調整すると良い感じになるので、それを起点にキーを打っていくと良い感じになるのだけど、codexに教える必要がありそう。


深く曲げた姿勢では、Humanoidとして保存する際に骨の向きが変わる問題も出ました。位置の誤差が小さくても、ねじれまで正しいとは限りません。振り返りの修正前プレビューを除き、記事の画像は保存後の完成状態を使っています。
腕組みと指差しの立ち姿
ここからPlusプランの5時間枠を使い切りそうだったので精度より早さ優先でやらせたんだけど、やはり手のあたりの精度に課題がある。
↓右はチャッピーが生成した完成イメージだけど、VRoidのボーン的に手をここまでやるのはたぶん無理w


こっちはなかなかの精度でできたかな。


最後に、Idleの約10.889秒を土台に振り返りも制作しました。手を腰の後ろへ寄せ、脚を交差させ、顔をカメラへ向けています。こちらは、修正前後で印象が変わった例として次で紹介します。
実際に使って分かった問題点
IKで関節を動かしても、胸や服が都合よく変形するわけではない
FinalIKが計算するのは主に骨格の姿勢です。腕を胸の前へ置いても、胸の表面を検知して手を止めたり、押された胸や袖を自然に変形させたりするところまで、今回の仕組みは対応していません。
腕組みでは、手を参考の位置へ寄せようとすると胸へめり込みやすくなります。VRoidのボーンやウェイトによる変形の限界もあり、イラストの輪郭をそのまま当てはめるのは難しいところです。
今後の候補としては、モデルにあるBustボーンを姿勢に応じて調整したり、接触用のBlendShapeを用意したりする方法が考えられます。ただし、今回はその効果を検証していません。既存モデルに必要な変形があるかも個別に確認が必要で、これで解決できたとは言えません。
座り姿勢ではスカートが難しい
膝を深く曲げても、スカートが布として自動的に膝へ沿うわけではありません。専用ボーンを少し補正しても、座面や脚との干渉、裾の開き方は残りました。今回は体格と衣装を維持し、布シミュレーションも追加していません。
参考イラストとモデルでは脚の長さ、胸や肩の大きさ、衣装の厚みも違います。関節位置の一致を追うほど腕や服が不自然になる場合には、モデル側の自然さを優先しました。
顔・視線・表情は、制御の競合にも注意する
LookAtIK、元アニメーションの眼球回転、VRM側の自動更新が重なると、目や頭が意図しない方向へ向く原因になります。今回は顔制御を一か所へまとめ、Body Weightを0にして、視線の調整で完成済みの身体を崩さないようにしました。睡眠ポーズではLookAtのウェイトを0にしています。
表情の仕組みについては、VRMモデルの表情をキーで切り替えた記事も関連します。ただし、今回の保存済み設定を別モデルへそのまま移して同じ顔になるかは未検証です。
振り返りは「向きを直せば良くなる」とも限らなかった
振り返りでは、最初の画像の方が自然に見えました。ところがCodexが参考との左右の向きの違いを修正しようとして、カメラと身体・首の回転を変え、別の印象になりました。



この2枚はカメラ、身体の回転、足先、保存前後など複数条件が違います。左右の修正だけを比較した厳密なテストではありません。ただ、参考へ近づける修正と、一枚の画像として自然に見えることは別だと感じた例です。
正面では良くても横から見ると不自然だったり、関節の数値を合わせるとシルエットが悪くなったりします。上面・側面も確認しつつ、最後は指定カメラでの見栄えを見て切り上げる必要がありました。
制作時間はどれくらい短縮できた?
制作ログに残っている時間をまとめました。工程と計測範囲が違うため、単純な速度比較ではありません。
| ポーズ | 記録時間 | 時間の扱い |
|---|---|---|
| 横向き寝 | 約19.4分 | 初回比較プレビューから登録までの一部工程 |
| 睡眠 | 約29.9分 | 開始から表示確認まで。比較プレビューから登録だけなら約11.9分 |
| 仰向け・片膝立て | 約24.9分 | 検索・調整・保存・確認・記録などを含む経過時間 |
| 椅子座り | 実作業約13分(概算) | 会話の中断込みの経過時間は約125.2分 |
| 体育座り | 約10.6分 | 検索から保存・取り込み・確認・記録まで |
| 腕組み | 約9.7分 | 同上 |
| 指差し | 約11.8分 | 同上 |
| 振り返り | 約12.6分 | 比較画像作成、登録、最終梱包なども含む |
睡眠ポーズでは候補検索や脚IKの作り直しを省けましたし、指差しでも腰に手を当てる姿勢が使えました。完成素材を次の土台にできたことは、工程の削減として確認できます。
ただ、手作業だけで同じポーズを作る時間は正確に測っていません。「手作業より何%速い」とは言えません。約10分前後の例も、それ以前に検索や保存の仕組みを整えた時間は含みません。最初はUnityのライセンス接続エラーで中断し、再ログイン・認証後に再開したこともありました。
まとめ
参考イラストをもとに既存モーションを探し、FinalIKで調整して、新しいポーズと復元設定を保存する流れは作れました。特に、完成した横向き寝から睡眠姿勢へ派生させるなど、土台が近いと再利用しやすかったです。
一方で、胸や服の接触、深い座り姿勢、体型差、カメラによる印象の変化は残りました。数値の検証が通ることと、自然に見えることは同じではありません。
今後は初期案を残して見比べながら、見栄えの良いところで止めることも意識したいです。まずは静止ポーズの素材を増やし、使える部分と手直しが必要な部分を分けて試していこうと思います。


