blender – 口に棒あめを咥(くわ)えさせる

Image

5. 棒あめにChild Of Constraintを設定する

棒あめObjectを選択します。

次に、Constraint Propertiesを開き、Add Object Constraint から Child Of を追加します。

設定は次のようにします。

項目設定内容
ConstraintChild Of
TargetキャラクターのMesh Object
Vertex Group唇の接点として作成したVertex Group
Location / Rotation / Scale基本的にはONのまま
Influence1.000

ここでTargetにキャラクターObjectを指定すると、Mesh Objectの場合はVertex Groupを指定できる欄が表示されます。

そこに、先ほど作成した唇のVertex Groupを指定します。


6. Set Inverseを実行する

ここが重要です。

Child Of Constraintを設定した直後、棒あめの位置がずれることがあります。

その場合は、棒あめを正しい位置に配置した状態で、Child Of Constraint内の Set Inverse を押します。

これにより、現在の棒あめの位置・回転・スケールを維持したまま、キャラクターの接点に追従させることができます。

そのため、手順としては次の順番がおすすめです。

  1. 棒あめを口元の正しい位置に配置する
  2. 棒あめにChild Of Constraintを追加する
  3. TargetにキャラクターObjectを指定する
  4. Vertex Groupに唇の接点Vertex Groupを指定する
  5. Set Inverseを押す
  6. キャラクターを動かして、棒あめが追従するか確認する

7. 動作確認

設定後、キャラクターObjectを移動・回転させて、棒あめが口元に追従するか確認します。

また、キャラクターにArmatureやShape Keyが設定されている場合は、口元の変形に対して棒あめが期待どおりについてくるかも確認します。

特に、口を開閉するShape Keyや顎のBoneで口元が大きく変形する場合、Vertex Groupの位置や選択範囲によって追従の見え方が変わることがあります。


8. 注意点

Vertex Group名を変更するとConstraint側に反映されないことがある

重要な注意点として、キャラクターObject側のVertex Group名を後から変更した場合、Child Of Constraint側のVertex Group指定が自動で正しく追従しないことがあります。

その結果、棒あめが意図しない位置へ飛んだり、空間上の別の場所に移動してしまうことがあります。

そのため、Vertex Group名を変更した場合は、必ず棒あめ側のChild Of Constraintを確認し、Vertex Group欄が正しい名前になっているか確認します。


棒あめが飛ぶ場合はSet Inverseを再確認する

棒あめが急に別の位置へ飛ぶ場合、以下を確認します。

確認項目内容
TargetキャラクターObjectが正しく指定されているか
Vertex Group唇のVertex Group名が正しく指定されているか
Set Inverse必要に応じて再設定したか
Origin棒あめのOriginが接点に合っているか
Scaleキャラクターや棒あめに未適用のScaleが残っていないか

特に、ObjectのScaleが大きく崩れている場合、Constraintの挙動が分かりにくくなることがあります。必要に応じて、作業前に Ctrl + A > Apply Scale を行うと安定しやすくなります。


9. より安定させたい場合の別案

今回の方法では、キャラクターのMesh ObjectとVertex GroupをTargetにしています。

ただし、実際のアニメーションでより安定させたい場合は、唇や口元に追従する Empty を作成し、そのEmptyを棒あめのTargetにする方法もあります。

たとえば、次のような構成です。

キャラクター口元のBone または Mesh

Empty

棒あめObject

この方法では、棒あめを直接MeshのVertex Groupに追従させるのではなく、接点用のEmptyを中継点として使います。

アニメーション中に棒あめの位置や角度を微調整したい場合は、Emptyを使う方法の方が管理しやすいことがあります。


10. まとめ

Blenderでキャラクターに棒あめなどの小物を付帯させる場合、Child Of Constraintを使うと、通常のParent設定よりも柔軟に追従関係を作れます。

基本手順は次の通りです。

  1. キャラクター側の接点を決める
  2. 棒あめ側の接点を決める
  3. キャラクターの唇部分にVertex Groupを作る
  4. 棒あめのOriginを接点に移動する
  5. 棒あめにChild Of Constraintを追加する
  6. TargetにキャラクターObjectを指定する
  7. Vertex Groupに唇の接点Vertex Groupを指定する
  8. Set Inverseを押す
  9. 動作確認する

特に重要なのは、Vertex Group名の変更Set Inverseの設定です。

この2点を確認しておけば、棒あめが突然飛ぶ、位置がずれる、追従しないといった問題をかなり防ぐことができます。


【注意点・例外】

  • Child Of Constraint のTargetをMesh Objectにした場合、Vertex Groupを指定できますが、複雑な口の変形や表情アニメーションでは期待どおりに追従しない場合があります。

    (今回のケースでは,キャラクター側に指定した追随先は,vertex groupだったが,これは狙いである.唇のshape keyによる動きにより自然な追随が可能となる.接点をboneにすると狙い通りの追随効果は得られない.)
  • 棒あめの角度まで厳密に制御したい場合は、Vertex Groupだけでなく、Empty、Bone、Copy Location、Copy Rotation、Track To、Damped Trackなどの併用を検討します。
  • 商用・実務用途のリギングでは、アニメーターが後から調整しやすいように、直接Vertex GroupへConstraintするより、接点用Emptyや専用Boneを用意する方が管理しやすい場合があります。これはリグ設計の方針によります。

【出典】

  • Blender Manual, Child Of Constraint:Child Ofは通常の親子関係をConstraintとして扱う機能で、TargetがMeshの場合はVertex Groupを指定可能。Set Inverseにより、Constraint適用前の位置関係を維持できる。

【確実性: 高】
Child Of Constraintの基本動作、Target、Vertex Group、Set Inverseの必要性については公式マニュアルに基づきます。
ただし、キャラクターの口元変形に対する追従精度は、メッシュ構造、Armature、Shape Key、Vertex Groupの選び方に依存します。

2026/04/26, KenJin

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA