アニメーション > 骨格 > Armature と bone
Armature と bone
Armature と bone を作るにあたって注意すべき点は、以下の通りです。
- 各 bone に適切な名前を付けると、後の作業の労力を軽減できます。
- 次に行うスキニングを容易にするために、どの部位であるかが分かり易い名前にします。
- 人体などの左右対称物で、歩行など左右の各部分が対称姿勢を取る(異なる時間でも)場合は、後のポーズモードでの作業を容易にするために、bone の名前を "〜.L", "〜.R" というような特定の名前にする必要があります。
- 見た目だけではなく、ポーズモードで作業しやすい bone 構成と、各種の制約を設定します。
- IK Solverでポーズを付ける関節は、少し曲げて直線状にならないようにします。
- Armature が完成したら、[Ctrl + N] で Roll(軸を中心とした回転)を揃えます。
- Armature が完成したら、オブジェクトモードで [Ctrl + A] で表示される Apply Object メニューから Scale and Rotation to ObData を選択し、スケールを 1、回転角を 0 に変換しておきます。
- 他にも注意があるが…(未作成)
- このページの目次
右図のピンク色の部分全体が1つの armature で、3つの bone を持っています。
右図では、bone はデフォルトの octahedron(八面体)で表示されています。Bone は両端に2つの頂点を持ち、太い方が head、細い方が tail です(それぞれ root, tip とも)。
右図のように、ある bone の tail に別の bone の head を合わせ、連結を維持したまま動かすことができます。連結は child of という項目を使いますが、これは通常の親子関係とは別のもので、bone 固有の親子関係です。右図では、下の bone の子が中央の bone、中央の bone の子が上の bone、と3世代になっています。
連結した bone 群をチェーンと呼びます。(ツール内ではこの言葉はでてきません)
ポーズモードで bone を回転させると通常は head を中心に回転します。親を回転すると、通常の親子関係と同じに子も追随します。よって、例えば腕のモデルであれば、上腕は肩 = head、肘 = tail とし、ここから連結して前腕は肘 = head、手首 = tail とするのが普通です。
通常のメッシュオブジェクトと同様です。
3D View ウインドウをオブジェクトモードにし、[Space] または左ボタン長押しで表示されるメニューから、Add - Armature を選択すると、1つの bone を持つ armature が作られます。
以下は、Armature を右クリックで選択してエディットモードにしてから行います。
- 単に追加
-
[Space] または左ボタン長押しで表示されるメニューから、Add - Bone を選択すると、armature に bone が追加されます。
- 既存 bone に連結した状態で追加
-
- 押し出し
-
連結した子 bone を追加する場合は、連結元の bone や tail を選択して [E] を押します。するとその bone の tail の位置を head とする bone が追加され、そのまま追加された tail を移動している状態になります。場所を決めて左クリックで確定してください。
複数の tail を選択している状態で [E] を押すと、選択されているすべての tail を head とする複数の bone が追加されます。
- 押し出し&確定
-
Tail を選択して [Ctrl + 左クリック] しても、連結した bone を追加できます。選択された tail 位置が追加される bone の head 位置となり、クリックした位置が追加された bone の tail 位置となります。
- Subdivide
-
Bone を選択し、[W] で表示される Specials メニューから、Subdivide、あるいは Subdivide Multi で、選択されている bone を等分割します。
連結状態は後で変更することもできます。
- コピー
-
[Shift + D] で選択されている bone がコピーされます。
ポーズモードでポーズを付けた後に編集するとポーズが崩れてしまうので、bone の編集はポーズを付ける前に完成させておく必要があります。
エディットモードで必要なだけ bone を追加し、色々な視点で bone をメッシュに合わせます。
エディットモードでの編集も通常のメッシュオブジェクトと同様です。
- 移動・回転・拡大/縮小
-
右クリックで頂点や bone 本体を選んで [G], [R], [S] で移動、回転、拡大/縮小することで合わせて行きます。
[Shift + S] で選択されている頂点をグリッド等へスナップします。
[N] で開く Transform Properties サブウインドウで、座標等の数値入力による編集ができます。
移動、回転、拡大/縮小しても、連結している bone は常に連結されたままです。
- 選択
-
- [右クリック] で選択。
- [Shift + 右クリック] で追加選択。
- [A] で全選択/選択解除。
- [B] で矩形追加選択。
- [L] で連結している bone 全選択。
以下の特性も覚えて置くと良いでしょう。
- Bone の両端を選択すると、bone 本体も選択されます。
- Bone 本体を選択すると、bone の両端も選択されます。
- 連結している bone の頂点を選択すると、両方の bone の頂点が選択されます。(このために、連結した bone の一部を移動しても、常に連結されたままになります)
- 削除
-
[X] で選択されている bone を削除します。
連結している bone の両端以外の bone を削除すると、削除された bone の子 bone は、削除された bone の親の bone の子になります。一番親の bone を削除すると、その子 bone の親は無くなります。
- Roll
-
編集を行っていると、しばしば bone の head と tail を結ぶ軸を中心に bone が回転した状態になります。
このような roll は、例えば人体モデルの場合で、左右の腕で同じポーズにする場合や、bone の回転方向に制約を付けたい場合には、きちんと設定する必要があります。
Roll の設定は、以下のようにして行えます。
- [N] で開く Transform Properties サブウインドウで、Roll に数値を設定する。
- [Ctrl + R] でマウスを移動して回転させ、左クリックで確定する。
- [Ctrl + N] で2種類の自動設定方法から選択する。
Roll を視覚的に確認するには、Editing コンテキストの Armature サブウインドウで Axes を On にします。3D View ウインドウで bone の脇に座標軸が表示されます。
厳密な設定が不要であれば、以下のルールを守っていれば良いでしょう。
- 人体モデルなどの左右対象物は、片方だけ作って、もう片方は後でコピーする。
- 最初は自由に bone を作る。このときに、ローカル座標系の Z 軸と平行な bone を作らないようにする。
- 完成したら(左右対象物の場合は片側だけ)、[A] で全選択し、[Ctrl + N] で Recalculate Bone Roll Angles を開き、Clear Roll (Z-Axis Up) を選択する。
エディットモードにて、子となる bone を [右クリック] で選択し、親となる bone を [Shift + 右クリック] で追加選択し、[Ctrl + P] を押します。
Make Parent メニューが開くので、いずれかを選択します。
- Connected
-
親子を連結します。子bone は、子の head が親の tail と一致するように平行移動します。
一旦、下の keep offset で親子にしたものを再度 [Ctrl + P] で connected にした場合は、子の tail は移動せず、head だけが親の tail 位置へ移動します。
- Keep Offset
-
親子関係にしますが、連結はせず、子の位置も変わりません。
親子関係の解消、または連結の切り離しは [Alt + P] です。表示される Clear Parent メニューから、どちらかを選択します。
- Clear Parent
-
親子関係を解消します。
- Disconnect Bone
-
連結を切断します。
サブウインドウの操作でも親子関係や連結を操作することができます。
子となる bone を選択し、Editing コンテキストの Armature Bones サブウインドウの child of で、親となる bone を選択すると、親子関係が設定されます。同じところで空白を選択すると、親子関係を解消します。
親子関係になっているときは、この右の Offs(右図では "Of" しか見えていません)が Con になります。これを On にすると、連結され、Off にすると切断されます。
- ローカル座標系の平面 X = 0 を鏡に見立てて、鏡像となる位置に bone があること。
- さらに X < 0 の部分が右側で、X > 0 の部分が左側であることが望ましい。
- 左右の bone に適切な名前が付けられていること。
最終的に上記条件を満たしていれば、どのように作成しても構いませんが、例えば以下の手順となります。
- 平面 X = 0 を中心に、左側(または右側)だけの bone を作ります。
- 作った bone に適切に左側(または右側)の名前を付けます。
- "Upper_arm", "Lower_arm" というように、左右の区別を付けない名前を、全 bone に設定します。
- [A] で全 bone を選択します。
- [W] を押して Specials メニューを開き、AutoName Left-Right を選択します。これで、名前の末尾に ".L"(または ".R")が追加されます。
- 左側(または右側)の bone を複製して、右側(または左側)の bone を作ります。
- オブジェクトモードで、armature の X 座標が 0 となるように移動しておき、エディットモードに入ります。
- [A] で全選択して [Shift + D] で複製を作り、[ESC] で移動状態から抜けます(すべての bone が二重になっています)。以降はしばらくの間、コピーされたものが選択されている状態を維持するように気をつけてください。
- 3D View ウインドウのヘッダにある Pivot メニューから 3D Cursor
を選びます。
- [テンキー 1] で正面視点にし、X = 0 付近を左クリックして 3D カーソルを移動します。
- [Shift + S] で Snap メニューを開き、Cursor -> Grid を選択して、3D カーソルの X 座標を 0 にします。
- [Ctrl + M] [X] [X] で、ローカル座標系の X 軸方向にミラー移動し、[左クリック] や [リターン] で確定します。
- 鏡像コピーした bone を右側(または左側)の名前に変更します。
- [W] を押して Specials メニューを開き、Flip Left-Right Names を選択します。これで、名前の末尾が ".L.001"(または ".R.001")というようになっていたものが、".R"(または ".L")になります。手順の最初の方でコピーしてから、ここまでは、コピーしたものが選択されている状態が維持されています。
- 以降の bone の編集は、次の X-Axis Mirror を On にして鏡像を維持した編集を行います。
Editing コンテキストの Armature サブウインドウで、X-Axis Mirror を On にすると、左(または右)の bone を編集すると、同時に右(または左)の bone も鏡像のように編集されます。
この機能を有効にするには、正しく bone の名前を設定しておく必要があります。
鏡像が編集されるのは頂点だけで、roll は一致しなくなる場合があります。Bone の名前の変更も鏡像 bone は追随しません。削除は追随します。
鏡像の bone は bone の名前だけから選定されます。鏡像となる位置にある必要はありません。
通常のメッシュオブジェクトと類似した操作です。
複数の armature を1つにするには、オブジェクトモードで1つにしたい armature をすべて選択し、[Ctrl + J] を押し、OK? という確認メニューから Join selected armatures を選びます。
Armature 内の bone を別の armature にするには、エディットモードで分離したい bone を選択し、[Ctrl + Alt + P] を押し、OK? という確認メニューから Separate を選択します。
未作成
Bone の動きの制約