2Dボーンとは何か
2Dアニメーションで使われる「ボーン」は、キャラクターの絵の中に本物の骨を作る機能ではありません。イラストをどの順番で、どこを支点に動かすかを定義するための見えない骨格構造です。
例えば腕なら、肩から上腕、前腕、手へつながる構造を作ります。肩側の親を動かせば、その先にある前腕と手も追従します。一方、末端の手だけを動かしても、通常の親子Transformでは肩まで逆向きに動くわけではありません。
SpineのBones ↗でも、スケルトンはRoot Boneを起点とした階層で構成され、子ボーンは親のTransformを継承する仕組みとして説明されています。
ボーンと関節は何が違うのか
概念的には、関節=曲がる位置、ボーン=関節と関節を結ぶ構造と考えると分かりやすくなります。
ただしソフトによって名称や内部表現は異なります。ボーンという言葉が線分そのものを指す場合もあれば、関節・親子関係・影響範囲まで含めたリグ構造全体を広く指す場合もあります。
Toon Boom Harmonyでも、Bone DeformerはRootから次の点、その次の点へと連続してチェーンを構成します。腕なら肩→肘→手首という順番で考えられます。
「親→子→孫」ではなく、子が次の親になる
脚で考えると分かりやすくなります。
骨盤から見れば太ももは子、すねは孫、足はひ孫です。ただしリグ内部に「孫ボーン」という特別な種類があるわけではありません。太ももから見れば、すねは単なる子。すねから見れば、足が子です。
つまり、子ボーン自身が次のボーンに対して親になるという親子関係が連続し、Bone Chainを作ります。
1つの親から複数の子へ分岐できる
人体は一本の長い鎖ではありません。Rootや骨盤、胴体のような中心から複数の枝へ分かれます。
手でも、1つのHand Boneから親指・人差し指・中指・薬指・小指へ枝分かれできます。したがってボーン構造は一本の線というより、Rootを起点とした木構造として理解する方が正確です。
なぜ親子構造にするのか
親子構造がなければ、胴体を右へ10px動かすたびに、頭、肩、腕、手も個別に10pxずつ移動しなければなりません。
頭や腕を胴体の子にしておけば、胴体を動かすだけで子孫が一緒についてきます。これは作業量を減らすだけでなく、接続関係を壊しにくくするための仕組みでもあります。
Live2D Cubismはボーン中心のソフトではありませんが、Warp DeformerやRotation Deformerを親子階層へ置くことで、親が動けば子が追従する同じ考え方を使います。
レイヤー、デフォーマ、オブジェクト、パーツなどにも使われる、アニメーションとUIに共通する基本構造です。
2Dボーンと3Dボーンは何が違う?
基本思想はかなり似ています。Root、親子構造、関節、Transformの継承、Bone Chainを使います。
| 比較 | 2D | 3D |
|---|---|---|
| 主な空間 | X・Y平面が中心 | X・Y・Zの立体空間 |
| 主な対象 | 画像パーツ、2Dメッシュ | 3Dメッシュ |
| 変形 | 回転・位置・2Dメッシュ変形 | 3軸回転・立体Skinning |
| 影響 | パーツ単位または2D領域の重み付け | 頂点ごとのWeightが中心 |
ただし2Dでも、単純に画像パーツを硬く回す方式だけではありません。Toon Boom HarmonyのBone Deformerのように、1枚の腕画像を連続変形させて肘を作る方式もあります。
つまり2Dボーンにも、パーツをそのまま回転する硬いリグと、画像やメッシュまで変形する柔らかいリグがあります。
ボーン以外にも骨格を作る方法はある
2Dアニメーションではボーンだけが選択肢ではありません。髪や尻尾のような長い流れはPath / Curve、服や頬の柔らかい変形はWarp / Puppet、硬い小物は単純なパーツ回転の方が扱いやすい場合があります。
| 動き | まず考える方式 |
|---|---|
| 腕・脚・首など関節中心 | Bone / Rotation |
| 髪・尻尾など流れる形 | Path / Curve |
| 服・頬など柔らかな面 | Puppet / Warp |
| 硬い剣・眼鏡・小物 | 通常Transform / パーツ回転 |
パペット・ボーン・Pathの役割を横断して比較したい場合は「パペット・ボーン・パス変形の違い」で整理しています。
FKとIKまで理解するとボーンが分かりやすい
ボーンを動かす一般的な方法には、FK(Forward Kinematics)とIK(Inverse Kinematics)があります。
脚なら、足先を床へ置いたまま腰を上下させるような動きでIKが便利です。親子構造そのものは同じでも、どちら側から姿勢を決めるかが違います。
現在確認できるCharacter Motion Studioのボーン実装には親子階層と姿勢補間がありますが、一般的なIKソルバーが実装済みとは確認できません。この記事ではFK / IKをボーン理解の一般概念として説明しています。
Character Motion Studioには現在ボーン実装がある
今回の原稿にあった「現在の中核機能としてボーンが明示されていない」という説明は、現行コードとは一致しないため更新しました。現在のCharacter Motion Studioには、2Dボーン用のリグモデルが実装されています。
現行のBone Rigは、各ボーンにparentIdを持ち、親ボーンの姿勢を子へ連鎖させる構造です。Rootから子ボーンを追加し、階層を作れます。
| 現行要素 | 意味 |
|---|---|
| parentId | どのボーンを親にするかを保持し、階層を作る。 |
| rotation | ボーン姿勢の回転。 |
| offsetX / offsetY | ボーン姿勢の2Dオフセット。 |
| binding = layer | レイヤー全体へ基準Transformとして作用する。 |
| binding = region | ボーン周辺へ距離と強度に応じて局所変形を与える。 |
| RigKeyframe | 時間ごとの複数ボーン姿勢を保存し、前後キー間を補間する。 |
領域バインドでは、ボーン線分からの距離とradius / strengthを使って影響を弱め、複数ボーンの影響を重み付けして画像を変形します。つまり現行ボーンは「画像パーツを棒のように回すだけ」ではなく、局所的な柔らかい変形も持っています。
一方、現行の姿勢データは主に回転+X/Yオフセットです。Spineの一般的なScale / Shearや、3Dリグの高度なConstraintまで同等に実装されているとは扱いません。
最初は単純な階層からでよい
短い2Dキャラクターアニメーションなら、最初から3Dソフト並みの巨大なリグを作る必要はありません。
親を動かせば子がついてくる。柔らかく曲げたい部分だけパペットやregion bindingを使う。長い流れはPathへ任せる。この程度の役割分担でも、すべてのパーツを毎回個別に位置調整するより管理しやすくなります。
骨格は「つながり」を作り、面変形は必要なところだけ足す。
ボーンで親子構造を作り、髪・服・肉の柔らかさはパペットやPathへ分担すると、関節と面変形を混同しにくくなります。
まとめ
2Dボーンの本質は骨を描くことではありません。「この部位は何についていくのか」を階層として定義することです。
胴体の子に太ももがあり、太ももの子にすねがあり、すねの子に足がある。さらに胴体から腕や頭へ枝分かれする。この連続する親子関係と分岐が、Bone Chainとリグの基本です。
この考え方が分かると、2Dボーンだけでなく、3Dリグ、Live2Dのデフォーマ、レイヤー階層、パーツ構造も同じ「親から子へTransformを伝える仕組み」として理解しやすくなります。