CGの基本的なしくみの一つ、親子関係についてまとめました。
親子関係とは?
複数のオブジェクトをそれぞれ「親」と「子」に設定することで、子を親の動きに追従させるしくみ。
2つ以上のオブジェクトを連携させたいときに使われる基本的な制御方法です。
子が親の移動回転スケールに連動します。
- 親は必ず1つ。子は複数でもOK
- 階層構造・ヒエラルキーともいわれる
- オブジェクト単体では難しい複雑なアニメーションが可能
参考リンク
階層構造 | CG用語辞典 | CGWORLD Entry.jp
親子関係でできること
親子関係では親が動くと子も動きます。さらに子は親から独立して動けます。
このしくみを応用することで以下のことが実現できます。
複数オブジェクトのグループ化
一つの親で複数の子オブジェクトを制御できます。
たとえば車や建物など複数オブジェクトで作られたモデルをまとめて動かしたいときに使えます。
ファイル(子)をフォルダ(親)に入れてまとめるイメージに近いです
周回軌道のアニメーション
子は親の回転に振り回されるように追従します。
親を軸に子がグルグル回るような周回軌道のアニメーションが可能です。
オブジェクト単独では難しい回転系アニメーションが簡単にできるようになります
キャラの関節構造
キャラクターを動かすための骨組み(スケルトン)は階層構造になっています。
関節ごとに親子関係を組むことで、全身を連動させることが可能です。
よく使われる人型スケルトンの階層構造。
腰が一番上の親で、上半身と下半身に子階層が分かれています。
アニメーションの役割分担
パーツごとにアニメーションを制御することができます。
全体移動
└ドリフト回転
└車体の揺れ
└タイヤの向き
└タイヤの回転
オブジェクトの差し替え
親をアニメーションさせることで後から子を差し替えることができます。
オブジェクトそのもの(球やボックス)に直接キーを打つことは通常しません。
必ず適当な親オブジェクト(ヘルパーやグループノード)を用意して、その親にアニメーションを設定します。
こうすることでアニメーション情報を外に逃がせるので、子のオブジェクトをあとで差し替えることができます。
とりあえず仮オブジェクトで動きをつけてあとから差し替え、ということが可能になります。
親子関係の気をつけること
アニメーションカーブの座標
親子関係を組むと、子のローカル座標の向きが変わります。
これは座標が常に親からみた方向を基準にしているためです。
ワールド座標のXYZ軸とは変わってくるのでアニメーションカーブを扱うときは要確認しましょう。
スケール厳禁
親をスケール・子を回転 の組み合わせでアニメーションさせるとオブジェクトが歪みます。
階層を途中で変更しない
親子関係でつけたアニメーションは関係を解除すると壊れます。
改造構造は途中で変えることがないようにアニメーション前によく考える必要があります。