Blender

BlenderでCtrl+Pを使わずにボーンを設定

Blenderでボーンを仕込む時、大抵の説明ではCtrl+Pで自動ウェイトの設定が使われます。ただこの機能を使うと色々と自動で設定が追加されてしまい、実際に何が必要な設定だったのかがわからずじまいです。そこで、本当に最低限の設定とはなんだろう?と思って調べてみました。

まず、次のような簡単なオブジェクトとそれを動かすためのArmatureを用意しました。
image.png

自動ウェイトで設定した時に、オブジェクトにArmatureモディファイアがついていたのを思い出しながら、こちらは手動でオブジェクトにArmatureモディファイアを追加します。
image.png

Objectの項目に自分を動かすArmatureを設定します。複数のArmatureを用意しておけば、ここでどのArmatureを使うかを選択できそうです。これで自動ウェイトで設定した時と同じモディファイアが付きます。このモディファイアを、動かすオブジェクト全てに設定しておきます。まとめて設定はできませんので、地道に1つずつ設定します。
image.png

Armatureの設定はできましたが、Armature中のボーンのどれが影響するかはどこで設定するんだ?ってなりました。そこで自動ウェイトのことを思い出してみると、頂点グループにボーンの名前のグループがいっぱいあったな……と。ものは試しで、ボーン名と同じ頂点グループを作ってみます。

動かしたいボーンの名前をエディットモードで選択して調べます。
image.png

動かしたいオブジェクトにボーンと同じ名前の頂点グループを作成します。
image.png

ではボーンをポーズモードにして動かしてみましょう。オブジェクトは動きません(:3」∠)
image.png

ハズレかと思いつつ、やっぱりウェイトは必要なのではないかと思い直してウェイトを塗ってみます。オブジェクトを選択してWaitPaintモードにして頂点を塗ると、塗った端からボーンに影響されるようになりました。
image.png

試しにBone.002というグループ名を別の名前に変えてみると、ボーンの影響を受けなくなります。
image.png

頂点グループを別のボーンの名前にすると、対応する名前のボーンの影響を受けるようになりました。
image.png

間違いないですね。影響するボーンは頂点グループの名前で決定しているみたいです(多分マニュアル読めば書いてるんでしょうけど、英語が……)。というわけで、オブジェクトに各ボーンに対応する頂点グループを作れば、ボーンの影響を受けるようです。
image.png

この状態でちゃんとアニメーションするのですが、アウトライナーを見てみると少々違和感があります。自動ウェイトを使った時は影響を受けるオブジェクトがArmatureの中に入っていましたが今回はArmatureの外にいます。
image.png

つまり、親子関係自体はボーンアニメーションには関係がなかったんだ!ΩΩΩナンダッテー!

Armatureの中に入れたい時は、いつもどおりオブジェクトを選択→Armatureを選択、してからCtrl+PでObjectの中に突っ込んでやれば、うん、いつもの、って感じになります。
image.png

自分で頂点グループを作るようにすると、ウェイトがかかるボーンを限定しやすいです。ゲーム等リアルタイム系では、各頂点に4つまでしかウェイト持てないみたいな縛りがあることが多いので、ボーンを限定してウェイトを設定したほうが便利かもしれませんね。

なお、Ctrl+Pで自動ウェイトを選択するのではなくArmatureDeformを選択すると、オブジェクトにArmatureモディファイアを追加して親をArmatureにする、まで一気に設定できます。後は頂点グループとウェイトの設定だけすればよくなるので、手動設定時はこちらを使うのが便利そうです。
image.png