なぜ要るか
前の術で3Dモデルができました。でもそれは置物です。
見た目は立体でも、そのままでは腕1本動きません。ポーズを変えられない、歩けない、振り向けない。ゲームに入れても、置いてあるだけになります。
置物を動くキャラにする作業が要ります。 これを「リグを入れる」と言います。リグは、モデルを動かすための骨組みと、その骨に体の各部分をひもづけた設定をまとめた仕掛けのことです。
そして、ここが3Dで一番つまずく場所です。生成AIは形を作ってくれますが、動く仕組みは作ってくれません。
使う道具: Blender
AIプロンプト
この術の作業をAIへ任せるときは、これをそのまま貼ってください。
1) このモデルに人型のボーンを入れてください。
2) ウェイトを自動で付けてください。
3) このBlenderファイルのリグを検証するスクリプトを書いて、実行してください。
チェックは4つ。ウェイトの無い頂点が0個であること。体へ潜り込んだ頂点が0個であること。
左右で対になるウェイト(肘・膝など)が両側に付いていること。面数が部位ごとの予算内であること。
1つでも落ちたら、部位名と数を表で出してください。
- の「実行してください」は消さないでください。走らせないまま直った気になります。
動かすために必要な2つ
覚えるのは2つだけです。
| 名前 | 何か | 例えると |
|---|---|---|
| ボーン(骨) | 動かすための骨組み | 人形の中の関節 |
| ウェイト(重み) | どの部分がどの骨に付いていくか | 皮膚が骨に付いている度合い |
ボーンを動かすと、それに付いた部分が一緒に動きます。この「付き方」の設定がウェイトです。
実際にボーンを入れた状態がこれです。灰色の八面体が1本ずつの骨です。
髪にもボーンが入っていることに注目してください。 ポニーテールに沿って、骨が数珠つなぎに並んでいます。
数えるとこうなっています。
| 骨の内訳 | 本数 |
|---|---|
| 全部 | 95本 |
| うち髪の骨 | 29本 |
3分の1近くが髪です。 体の骨だけでなく、揺れるものにも骨を入れます。
髪の骨は、部位ごとに数珠つなぎになっています。
ポニーテール Ponytail1 → 2 → 3 → 4 → 5 → Tip (左右の房も同じ形で3本)
横髪 SideLock1 → 2 → 3 → Tip (左右)
前髪 Bang1 → 2 → Tip
連なりにするのが要点です。 根元の骨を動かすと先が付いてきて、しかも先ほど大きく振れます。1本の骨で髪全体を動かすと、板が回るような動きになります。
壊れ方が独特です
ここが知っておくと得な部分です。リグの壊れ方は、コードのエラーとは違います。エラーが出ないのに壊れます。
表に出てくる言葉を2つ先に押さえてください。頂点は、モデルの形を作っている面の角にある点です。当たり判定は、ここから先はぶつかって止まる、という境目の設定です。
僕が実際にぶつかったものを挙げます。
| 症状 | 原因 |
|---|---|
| 左肘だけ曲がらない | 左肘のウェイトが反対側に付いていて、対象の頂点が0個だった |
| ポーズを変えたら髪が頭に食い込む | 髪と頭の当たり判定が入っていない |
| 動かしたら首に亀裂が入る | 太さを維持する設定が無く、伸ばした時に潰れた |
| 背中に穴が空いた | 対象の骨を数え漏らして、肩甲骨と腰のウェイトを持つ面が落ちた |
どれもそのポーズを取らせるまで気づけません。 立っている姿では正常に見えます。
だから検証を仕込みます
僕はこの経験から、リグの検証を自動で回すようにしました。 具体的にはこれを毎回チェックしています。
- ウェイトの無い頂点が0個であること
- 体へ潜り込んだ頂点が0個であること
- 左右で対になるウェイトが両側に付いていること
- 面数が予算内であること
目で見て確認するのをやめました。 見落とすからです。1回チェックを書いておけば、以降ずっと守られます。
これは7章の「テストをAIに書かせる」と同じ考え方です。壊れたら気づける形を先に作る。 3Dでも同じです。
見本ゲームには3Dを入れませんでした
ここまで読んで分かるとおり、動かすところまで含めると3Dは手数が大きいです。だから見本ゲームの「三つの的」には、3Dを入れない判断をしました。1画面で札を置くだけのゲームですし、対戦相手のこよりは1枚絵の傾き(4-2)と、目を閉じた顔・口を開けた顔の2枚の差分(4-3)で十分に生きて見えます。必要な見た目が2Dで足りているなら、3Dは足さないのが正解です。
A字の姿勢で作る理由
前の術のモデルは、腕を横に広げた姿勢でした。あれには理由があります。
腕を下げた状態で作ると、脇が潰れた形で固まります。 その状態にボーンを入れて腕を上げると、脇の皮膚が引き伸ばされて破綻します。
だから最初から腕を広げた姿勢で作ります。ここから腕を下げるのは自然にできますが、逆は難しいです。
3D生成に渡す三面図も、この姿勢で描きます。最初の1枚の姿勢が、あとの動かしやすさを決めます。
やってみる
この工程は、3Dを作って直すための無料ソフト Blender の操作が中心になります。全部手で覚える必要はありません。Blenderは操作をコードで書けるので、AIに頼めます。
モデルにボーンを入れる
人型なら、既にある骨組みを使うのが早いです。人の体は骨の並びが決まっているので、用意された一式を当てはめられます。「このモデルに人型のボーンを入れて」と頼みます。
ウェイトを付ける
骨の位置から、近い部分を自動でひもづける機能があります。数十分の手作業が1回で終わります。ただしそのままでは必ずどこかが変です。 次で確かめます。
ポーズを取らせて確かめる
腕を上げる、首を回す、しゃがむ。この3つを試すだけで、大半の破綻が出ます。
検証を書いておく
上に挙げた4項目をチェックするコードを書かせます。まとめて実行させる手順書のようなコードなので、スクリプトと呼びます。一度書いておけば、以降は直すたびに走らせるだけで、同じ4項目を毎回確かめられます。頼み方はこの形です。
このBlenderファイルのリグを検証するスクリプトを書いて、実行してください。 チェックは4つ。ウェイトの無い頂点が0個であること。体へ潜り込んだ頂点が0個であること。 左右で対になるウェイト(肘・膝など)が両側に付いていること。面数が部位ごとの予算内であること。 1つでも落ちたら、部位名と数を表で出してください。「実行までしてください」と言うのが要点です。 書かせるだけだと、走らせないまま直った気になります。
揺れるものに骨を入れる
髪、スカート、リボン。動かしたときに一緒に揺れると、生きて見えます。
つまずきどころ
ポーズを変えたら形が崩れた
ウェイトの問題です。崩れた場所を伝えれば直せます。「左肘を曲げると反対側が動く」のように、部位と症状を具体的に言ってください。
何をしているのか分からなくなった
1つずつ確かめてください。 ボーンを入れる → ポーズを取る → 戻す。この往復を何度かやると、どの骨がどこに効くか掴めます。
髪や服が体に食い込む
当たり判定を入れる作業が必要です。ここは手間がかかる部分なので、最初は食い込んでも進めてください。 完成を優先します。
どのくらい手間かというと、CNPトレカ用に作っている咲耶の3Dファイルには当たり判定の目印が246個入っています。頭、首、肩、胸、それぞれに複数。骨95本に対して当たり判定が246個です。
この数字を見て「多い」と思ったなら、正しい感覚です。だから最初は入れません。 揺れる部分が決まって、動かし方が固まってから足す方が、やり直しが少なくて済みます。
Blenderの操作が覚えられない
覚えなくて構いません。頼んで実行させるのがこの講座のやり方です。ただし、ボーンとウェイトという2つの言葉だけは覚えてください。 これが分からないと頼めません。
次の一歩
作ったキャラに、3つのポーズを取らせてみてください。 腕を上げる、首を回す、しゃがむ。
どこかが崩れたら、それがあなたのモデルの弱点です。崩れる場所を知っているだけで、次からは先に手を打てます。 次の術で、キャラをゲーム画面に立たせます!
ここまでの三つの的
この講座は、見本ゲーム「三つの的」を術ごとにすこしずつ育てながら進みます。下にあるのはこの術を終えた時点の実物です。そのまま遊べます。
