日: 2026年4月26日

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

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

    基本は「child of」constraint

    ~メンバー専用 ↓
    ~~~~~~~~~~~~~~~~~~~
    ↑ メンバー専用~

    無料登録は右の握手ボタンからかできます.

    以下の説明は,blenderにおける作ったキャラに別に作ったグッズを付帯させる設定に関するものである.この説明について過不足があれば修正すること,更に,blog用の記事として手順を丁寧に作ること.説明 : blenderで作ったキャラクターの口に棒あめを咥えさせるために,child of constraintsを使用するが,準備には,唇と棒あめのどの部分を接点にするか決めること,接点に決めた唇の部分のvertex groupをキャラクターのmesh objectに作ること,接点に決めた点に棒あめのoriginを移動させておくこと,child of constraintを棒あめに設定し,targetをキャラクターobjectを指定,vertex groupに唇の接点に設定したvertex groupを指定,残りの設定はdefultでoK,これで完了.注意点は,キャラクターobjectの唇のvertex goupr名を変更すると,child of constraintの名前は追随して修正されることはないので,設定が崩れて棒あめが空間のどこかに飛ぶことがある.

    回答 by Chappy

    説明文を、実務で破綻しやすい点を補いながら、ブログ記事としてそのまま使える形に整理します。Blenderの仕様に関わる部分は公式情報を確認してからまとめます。思考時間: 11s

    【現在日付】2026-04-26 JST

    【結論】
    元の説明は大筋では正しいですが、「残りの設定はdefaultでOK」だけは修正した方がよいです。Child Of Constraint は、設定直後にオブジェクトがずれることがあるため、通常は Set Inverse を押して現在位置を維持する手順を入れるべきです。

    また、棒あめの Origin を接点へ移動する方法は有効ですが、より安定させるなら、棒あめ側に接点用の Empty を作る方法もあります。今回は、説明を大きく変えずに、ブログ記事として使える形に整理します。


    【根拠】
    Blender公式マニュアルでは、Child Of は通常の親子関係をConstraintとして行う機能であり、TargetがMeshの場合はVertex Group名を指定できると説明されています。また、Targetを設定した後、変形ずれを避けるために Set Inverse を使うことがあると説明されています。


    Child Of Constraint と Vertex Group を使った小物固定

    Blenderで作成したキャラクターに、棒あめ、タバコ、ストロー、笛、マスクの一部など、別に作成した小物を付帯させたい場合があります。

    ここでは例として、キャラクターの口に棒あめを咥えさせる設定を行います。

    この方法では、棒あめをキャラクターの口元に追従させるために、Child Of Constraint を使用します。

    Image

    1. 今回の目的

    今回の目的は、次の状態を作ることです。

    キャラクターの唇の一部を接点として設定し、棒あめの先端または咥える位置が、その唇の位置に追従するようにします。

    つまり、キャラクターを移動したり、口元を含むメッシュが動いたときに、棒あめも一緒に動くようにします。


    2. 作業前に決めること

    最初に、以下の2点を決めます。

    1つ目は、キャラクター側の接点です。
    たとえば、上唇と下唇の間、口角付近、中央の唇部分などです。

    2つ目は、棒あめ側の接点です。
    たとえば、棒あめの棒の先端、口に咥えさせたい部分、キャンディ部分の近くなどです。

    この2つの接点を決めておくことで、後の設定が安定します。


    3. キャラクター側にVertex Groupを作る

    まず、キャラクターのMesh Objectを選択します。

    Image

    図. キャラクター側の接点vertex groupの設定例

    次に、編集モードに入り、棒あめを咥えさせたい唇付近の頂点を選択します。

    選択する頂点は、1点だけでも設定できますが、実用上は数個の頂点を選んだ方が安定しやすいです。たとえば、上唇と下唇の間の小さな範囲を選びます。

    その後、Object Data Properties の Vertex Groups で新しいVertex Groupを作成します。

    例として、名前を次のようにします。

    VG_Mouth_Candy_Point

    選択した頂点をこのVertex GroupにAssignします。

    このVertex Groupが、棒あめを追従させるためのキャラクター側の接点になります。


    4. 棒あめのOriginを接点に合わせる

    次に、棒あめObjectのOriginを、口に咥えさせたい位置に移動します。

    たとえば、棒あめの棒の途中を唇に咥えさせたい場合は、その位置にOriginを移動します。

    この操作をしておくと、Child Of Constraintで追従させたときに、棒あめの位置合わせがしやすくなります。

    一般的な手順は以下です。

    1. 棒あめObjectを選択する
    2. Edit Modeで接点にしたい位置に3D Cursorを置く
    3. Object Modeに戻る
    4. Object > Set Origin > Origin to 3D Cursor を実行する

    これで、棒あめのOriginが咥えさせたい接点に移動します。


    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