会社のサイトのトップで three.js で動いている棒人間のマスコットを、Pixal3D で 3D にし、Mixamo で骨と既成の動きを付ける技術検証の最終回です。前回は、しゃがむ・跳んで縮める・着地する姿勢の崩れが、腿とお腹のめり込みと背中の帯の伸びの2種類で、重みや混ぜ方では消えず、元はマスコットの形にあるらしいと見立てました。
Mixamo の見本のキャラクターは普通の人の比率です。それなら、人の比率の体なら同じ手順で崩れないのか。第4回は、普通の人の比率のマネキンで同じ手順を試し、その見立てを確かめた対照です。
結論
- 同じ手順・同じ動き・同じ腕の間隔・同じ数え方で、人型ではマスコットで出た腿の前のお腹の殻と、背中の帯の大きな伸びは出ませんでした。
- 人型にも交わりはあり、残ったのは関節の内側(膝の裏・尻と腿の裏の境・脇の付け根)の交わり、胸の下の折れ、指先の針でした。
- 腕の間隔(Character Arm-Space)は、人型でも既定の 50 では腕が胴にめり込み、マスコットと同じ 87 にすると減りました。
- Mixamo の骨入れが「Unknown error while generating motion」で何度も失敗した原因は、細い腕から外れた手首の印でした。メッシュを疑う前に印を確かめます。
試した環境と手順
手順はマスコットとそろえました。使ったのは、服も顔の作りも無いマネキンです。
- 絵: Codex で、普通の人の比率(約 7.5 頭身)のマネキンを、両腕を斜め下に広げた A ポーズで描いた。
- 3D: Pixal3D(seed 42・res 1024・steps 12。既定のまま)。出力は 280,976 面。
- 整え: マスコットと同じ台本(点を繋ぐ → いちばん大きい塊だけ残す → 背丈の 1/160 のボクセルで作り直す → ならし 20 回 → 間引き → cm の OBJ)。22,898 面・1つの塊・穴なし。
- Mixamo の自動の骨入れ(標準の骨 65 本)。同じ跳ぶ動き(Jumping、58 コマ)を、腕の間隔 87、skin なし・30fps で落とした。
- Blender 5.2.3 で、Mixamo の重みのまま(継ぎ目の点を繋ぐだけ)、マスコットと同じコマを描き、同じ台で数えた。
比べたコマは、1 = 立つ、11 = 踏み切り前のしゃがみ、26 = 空中で膝を胸へ引き寄せる、40 = 着地のしゃがみです。人型でも、腰が最も低いのは 11、頂点は 26、着地は 40 で、マスコットと同じ場面になっていました。
指先は針のまま進めた
Pixal3D は、指をそろえた手を、指より長い針のように尖らせました。直せる見込みが薄く、検証には動きが見えれば足りるので、そのまま進めました。動かすと、垂らした手の針が脚の脇に突き出て見えます。

Mixamo の骨入れが失敗するのは、手首の印
何度も同じエラーで戻される
人型を Mixamo に上げて印を置き、次へ進むと、「ERROR occured on rig: Unknown error while generating motion」に続いて「Oops! Please place all markers on the character!」が出て、印を置く画面に戻されました。これが何度も続きました。
メッシュを替えても同じだった
まずメッシュを疑いました。色付きの元の形(28 万面)、整えた形(単位を m にした物と cm にした物)、指の骨を作らない設定(No Fingers)のどれでも同じ失敗でした。同じときに、前に通ったマスコットの zip を同じ手順で上げると通ったので、Mixamo そのものは動いていました。人型の形は1つの塊で、穴も裏返りもありませんでした。
原因は細い腕から外れた手首の印
原因は、右手首の印が、斜めに下がった細い腕の下の縁から外れていたことでした(送った位置で 1cm ほど)。印を置き直すと通りました。
| 印(OBJ の cm。x, y。y が上) | 失敗した回 | 通った回 |
|---|---|---|
| 右手首 | (30.9, 12.8) | (31.3, 13.9) |
| 右肘 | (22.5, 18.6) | (19.9, 20.1) |
| 左手首 | (-30.2, 14.5) | (-31.3, 13.9) |
| 左肘 | (-23.8, 19.2) | (-19.9, 20.1) |
左右対称に置く設定では、片側に置いた印が反対側の腕から外れることもあります。マスコットは腕が太いので、多少ずれても体の上に乗っていました。
手首と肘の印は、拡大して腕の真ん中に乗っているかを確かめてから進めます。細い腕なら左右を別々に置きます。エラーの文は印の位置のことを言わないので、メッシュを疑う前に印を確かめるのが近道です。私たちは手を切り落とした形を作りかけましたが、要りませんでした。
腕の間隔は人型でも 87 が要った
最初は、人型の動きを Character Arm-Space の既定の 50 のまま落としました。マスコットの動きは 87 で落としていたので、条件がそろっていません。動かして見ると、立った姿勢から腕が胴の脇に、手の針が腿に入り、しゃがみでは腕が背中にめり込んでいました。87 で落とし直してそろえると、腕と胴の交わりは大きく減り、手と腿の交わりは無くなりました。伸び・縮みの数は変わりませんでした。

マスコットのときに見つけた、腕は Arm-Space を上げるという直しが、人型でもそのまま要りました。動きごとに既定の 50 に戻るので、毎回上げます。下の数は、どれも 87 で落とした動きの物です。

マスコットと人型を並べる
跳ぶ動きの3コマを、マスコットと並べました。

- しゃがみと着地(11・40): マスコットは、腿の付け根でお腹の下の面が薄い殻になって腿の前へ突き抜けた。人型はお腹が平らで、腿は前へ上がってもお腹にぶつからず、腿の前に殻は出ない。
- 縮める(26): マスコットは背中から脇腹の帯が大きく伸びた。人型の背中は伸びない。人型で伸びたのは股の内側だけ。

伸びた面は割合で比べる
3 倍を超えて伸びた面を数えました。面の数がマスコット 53,784・人型 22,898 と違うので、全体に対する割合も添えます。
| 体 | 立つ(1) | しゃがみ(11) | 縮める(26) | 着地(40) |
|---|---|---|---|---|
| マスコット | 188(0.35%・13倍) | 305(0.57%・11倍) | 570(1.06%・29倍) | 374(0.70%・16倍) |
| 人型 | 23(0.10%・9倍) | 113(0.49%・10倍) | 43(0.19%・9倍) | 87(0.38%・10倍) |
縮める姿勢の伸びは、割合で5分の1ほどになり、最大は 29 倍から 9 倍になりました。しゃがみと着地は、割合では大きくは変わりません。人型は膝と股の内側が伸びるためです。
交わりは、どの部位どうしかで見る
人型にも交わりはあります。第3回で数えたのと同じ、頂点を共有しない面どうしが交わる組を、面の多くを動かす骨で部位に分けて数えると、違いがはっきりしました(交わった面の組の数)。
| 体 | しゃがみ(11) | 縮める(26) | 着地(40) |
|---|---|---|---|
| マスコット: 腿とお腹 | 375 | 397 | 242 |
| マスコット: 足と胴 | 289 | 372 | 239 |
| 人型: 腿と胴(尻と腿の裏の境) | 88 | 0 | 71 |
| 人型: ふくらはぎと腿(膝の裏) | 177 | 221 | 164 |
| 人型: 腕と胴(脇の付け根) | 179 | 0 | 28 |
マスコットは、腿がお腹の中へ、短い脚の足先が胴へ入り、腿の前に殻の縁が見えます。人型の交わりは、関節の内側の折れ目に限られます。人の体なら肉がつぶれて収まる所で、線形の混ぜ方では面が交わります(膝を深く曲げると、ふくらはぎが腿の裏に入ります)。腿の前のお腹の殻のような、正面から見える突き抜けはありません。
面の数と割合だけで比べると、形の違う体どうしでは意味がずれます。腕が細く胴に近い人型は、腕の向き1つで数が大きく変わります。部位で分け、絵で見るのが確かでした。なお、めり込みの深さを測る方法も試しましたが、腕や脚を抜いた所が穴になって内か外かの判定が狂い、立った姿勢でもふくらはぎが背丈の 22% 入っているという答えになったので、使いませんでした。
人型に残った崩れ
- 胴を丸める姿勢(26・40)で、胸の下を横切る折れ(面が 1/3 未満に縮む所)。1/3 未満に縮んだ面の割合は、26 で人型 0.94%・マスコット 0.88% とほぼ同じ。
- 股の内側の伸びとしわ。
- 膝の裏・尻と腿の裏・脇の付け根の交わり。
- 指先の針。
縮める姿勢を真横から見ると、背中の輪郭が二重に見えました。ここには伸びも縮みも交わりも無く、斜め後ろから見ると背中は滑らかです。ひねった胴の奥の側の背中が、手前の輪郭の外にのぞいている見え方で、面の崩れではありませんでした。
形の違いを比べる
骨入れ後のモデルで、腿と胴の太さと長さを背丈に対する割合で測りました。
| 体 | 腿の長さ | 腿の半径 | 長さ÷半径 | 胴の厚み | 腰〜首 | 厚み÷長さ |
|---|---|---|---|---|---|---|
| マスコット | 9.6% | 7.5% | 1.3 | 30.2% | 22.3% | 1.35 |
| 人型 | 23.4% | 5.0% | 4.7 | 13.2% | 26.8% | 0.49 |
腿の半径は、腿の骨に最も重く付いた点の、骨の軸からの距離の中央値(骨の長さの 20〜80% の所)です。胴の厚みは、背骨の中ほど(Spine1)の高さで測った、肩より内側の点の前後の幅です。
背骨の長さ(腰〜首)は大きく違いません。違うのは太さで、マスコットは腿も胴も長さより太い塊、人型は太さより長い筒です。
まとめ
- 人型1体・跳ぶ動き1つで比べた限りでは、しゃがみと着地で腿の前に出たお腹の殻は、正面の絵1枚から Pixal3D が補ったお腹の前と下の膨らみに、腿を胸まで上げる人の動き(Mixamo)が重なって出ていました。第3回でお腹の下をすぼめると消えたので、形が元なのは確かです。ただ、その膨らみが Pixal3D の作り違いかどうかは、意図した横の形と比べていないので確かめていません。人の比率なら、同じ手順・同じ動き・同じ腕の間隔で、関節の内側の交わりと折れくらいで済みました。
- マスコットは腿が長さより太く、股関節が胴の深い所にあるので、腿を上げるとお腹の中へ入ります。人型は腿が細長く、お腹も薄いので、腿の通り道にお腹がありません。第3回の断面での見立てと合いました。
- 背中の帯の伸びは、厚い胴を短い間で曲げるため、背骨から遠い背中の面が大きく引き伸ばされるのだと見ています(厚み÷長さ 1.35 と 0.49)。これは確かめていません。
- Mixamo の見本が普通の人の比率なのは、自動の重みと動きがそういう体を前提にしているからだと見ていますが、公式の記述は確かめていません。
- 人型でも、腕の間隔は 87 に上げる必要があり、細い腕では手首の印のずれで骨入れが失敗しました。
確かめていないこと
- 見たのは跳ぶ動きの3コマだけで、歩く・手を振るなど、ほかの動きは見ていません。
- three.js で動かしたときも Blender と同じに見えるか。
- 頭は大きいまま、腿と胴だけ人に近い比率(太さより長い)にした体なら崩れが減るか。どこまで太くすると崩れ始めるか。
- 正面と横の絵を Pixal3D に渡すと、お腹の膨らみと、腿の前に出るお腹の殻が減るか。
- 腿を胸まで上げない動きや、2〜3頭身向けに作られた動きなら崩れないか(借りた動きは書き換えない前提で進めたので、試していません)。
- 指先の針を直す方法(絵で指を開く・形を手で直す、など)。
- しゃがみの脇の付け根に残った腕と胴の交わり(179 組)が、87 より上げると消えるか。
おわりに
4回を通して、画像から作った頭の大きいマスコットに Mixamo の骨と既成の動きを付ける試しは、うまくいきませんでした。歩く・走るは生き生きしましたが、深い姿勢の崩れは重みを直しても消えず、人の比率の体と並べると、崩れは、絵1枚から Pixal3D が補った胴の形と、人の比率を前提にした Mixamo の動きの組み合わせで出ていると見るのが自然でした(比べたのは人型1体・跳ぶ動き1つです)。可愛い比率を保ったまま崩れずに動かすには、形の側(横の形も絵で渡して胴の形を決める、など)か、動きの側(体型に合った動きを使う)から手を入れる必要がありそうですが、どちらも確かめていません。サイトのマスコットには入れず、この試しはここで止めました。
※ Mixamo の画面の振る舞いやエラーの文、設定の既定値は執筆時点の情報で、いまは変わっている可能性があります。


