画像から 3D の模型を起こす Pixal3D で作った、検証用に用意した人物(約 2.6 頭身)に Mixamo の動きを付けて、Unity で動かせるかを技術検証しました。12,000 三角形・骨付きの人物に動きを付けるところまではできましたが、見た目は粗いままで、成功とは言いがたい出来でした。
この記事は、その途中の動きを写す段で詰まった話です。Mixamo の標準の骨格向けの動きをそのまま写すと、大きな頭と靴のせいで、足が床に潜ったり、体が浮いたり、顔が隠れたりしました。
結論
- Mixamo からは骨だけの動き(Without Skin・30fps・Keyframe Reduction none)を落とし、Blender で骨ごとに「休みの姿勢からの、世界での回転の差」を毎コマ写しました。
- 腰の動きは脚(股から足首)の長さの比で縮め、床合わせはクリップ全体で一定の量にすると、歩きで足が床に着くコマが増えました。ただ、振り出しと蹴り出しで、靴のつま先は最大 7.4cm 潜ったままでした。
- 首と頭の回転は 0.2 に弱め、上腕の上げ角は水平から 25° までに抑えると、顔を隠す崩れが無くなりました。ただ、応援の手が頭の高さまでしか上がらない点は残りました。
試した環境
- Mixamo:Walking(In Place)・Happy Idle・Cheering。応援には Victory と Excited も比べた
- Blender:骨を付けた人物に、スクリプトで動きを写す
- Unity 6:Legacy Animation、縮尺 1、ループで取り込む
- 人物:約 2.6 頭身、12,000 三角形、Mixamo と同じ名前の骨 25 本。40〜60px ほどの小さな表示と、見下ろしのカメラを想定
骨だけの動きを落として、Blender で写す
人物ごとに Mixamo の画面で骨を入れる作業が要らないように、骨は Blender のスクリプトで付け、Mixamo からは標準の骨格に付いた「骨だけ」の動きを落としました。

| 項目 | 値 |
|---|---|
| Format | FBX Binary |
| Skin | Without Skin |
| Frames per Second | 30 |
| Keyframe Reduction | none |
| 歩きの動き | In Place にする |
新しいタブで開くと Skin が With Skin に戻るので、落とすたびに確かめる必要がありました。Blender に読むと、骨の名前は mixamorig: で始まり、休みの姿勢は T ポーズ、正面は -Y です。
写すときは、骨ごとに「休みの姿勢からの、世界での回転の差」を毎コマ写しました。こうすると、Mixamo の骨と自分で置いた骨とで軸の向きが違っても崩れません。A ポーズで骨を置いた人物に写すときは、さらに腕の骨の休みの向きを直す必要がありました。
足が床に潜る・体が浮く
腰の位置の動きは、骨格の大きさに合わせて縮めて写しました。最初は腰の高さの比(0.4738)で縮めましたが、2.6 頭身の人物は靴が大きく脚が短いので、これだと足が床に潜りました。脚(股から足首)の長さの比(0.2716)で縮めるように変えました。
床合わせも変えました。最初は毎コマ、模型の一番低い点を床に付けていました。床合わせを切って歩きの各コマを測ると、休みの足首の高さ 0.184 に対し、支えの足首は 0.187〜0.20 で床の上にありました。一番低い点は体の後ろ(y が +0.06〜+0.18)にある、蹴り出した足のつま先で、最大で -0.06 まで下がっていました。毎コマ一番低い点を床に付けると、このつま先に合わせて体ごと浮き、支えの足が床から離れます。
そこで、床合わせの量をクリップ全体で一定にしました。量は、支えの足首が休みの高さになるように決めます。歩きでは -1.36cm でした。
| 腰の縮め方 | 床合わせ | 測った値 |
|---|---|---|
| 腰の高さの比 | 毎コマ | 床合わせの量 0.17〜7.9cm |
| 脚の長さの比 | 毎コマ | 床合わせの量 -0.2〜6.0cm |
| 脚の長さの比 | 一定(-1.36cm) | 一番低い所 -7.4〜-1.1cm |
歩き(30 コマ)で足が床に着いていたコマは、毎コマの床合わせでは各足 5・6 コマでしたが、一定にすると 14・22 コマに増えました。
つま先の潜りを指の付け根の骨で直す方法も試しました。宙にある足まで直してしまい、コマの間で 84° 跳ね、ループの継ぎ目も 47° になったので外しました。振り出しと蹴り出しで、靴のつま先は最大 7.4cm 潜ったままでした。人物の高さの 3%、想定した表示で約 1.5px です。

顔が髪に隠れる・拳が顔を覆う
歩きでは、首と頭の回転をそのまま写すと、前傾で顔が髪に隠れ、見下ろしのカメラでは顔が見えなくなりました。首と頭の回転を、まず 0.5 に、その後 0.2 まで弱めました。
応援の Cheering では、拳が顔を覆いました。Mixamo の Victory と Excited を足して比べると、Victory は腕が大きな頭の後ろに隠れ、Excited は手が上がらず跳ねませんでした。

Victory を使い、上腕の上げ角を水平から 50° まで、その後 25° までに抑えました。Victory は Mixamo の画面で Arm Height と Excitement を 100、Body Twist を 0、Character Arm-Space を 100 にして落としました。

これで顔を隠す崩れは無くなりましたが、応援の手が頭の高さまでしか上がらない点は残りました。
最後の版で測った値
| クリップ | 長さ | ループの継ぎ目の回転 | 普段の1コマの回転 |
|---|---|---|---|
| 歩き | 1.000 秒 | 15.38° | 14.75°(最大 24.2°) |
| 待機 | 1.967 秒 | 0.96° | 0.60° |
| 応援 | 5.533 秒 | 1.73° | 1.73° |
歩きと応援では、継ぎ目の回転が普段の1コマとほぼ同じでした。歩きの左足は 9〜25 コマで y が -0.153 から +0.114 へ、平均 0.50/秒で後ろへ動きました。Unity では 12,000 三角形・骨 25 本・3クリップの人物として、Legacy のループで読めました。
確かめていないこと
- つま先の最大 7.4cm の潜りが、想定した表示で見えるかは確かめていません。直すなら、脚の曲げ(IK)から作り直すことになります。
- 2.6 頭身で読める応援(跳ねる・手をたたく)が、Mixamo のほかの動きにあるかは確かめていません。
- 実機での見え方と負荷は確かめていません。
おわりに
頭身の違う人物に Mixamo の動きを写すと、崩れは大きな頭と靴のまわりに集まりました。腰の縮め方と床合わせの決め方を変え、首・頭・腕を弱めて、歩き・待機・応援の3つの動きは付けられました。ただ、つま先の潜りと、応援の手が頭の高さまでしか上がらない点は残り、人物の見た目も粗いままでした。
※ Mixamo の画面の設定と振る舞いは執筆時点の物で、いまは変わっている可能性があります。


