夜風のMixedReality

xRと出会って変わった人生と出会った技術を書き残すためのGeekなHoloRangerの居場所

Blenderで階層構造の子オブジェクトのトランスフォームを常にワールド座標に対してロックする

本日はBlender枠です。

〇環境

・Windows11PC

・Blender4.1

〇子オブジェクトのトランスフォームを常にワールド座標に対してロックする

 Blenderで階層構造を使用しているとき、親オブジェクトのトランスフォームを変異させた場合、子階層のオブジェクトの絶対座標も変異します。

 例えば、キャラクターの指先は腕や肩のボーンの子階層になっており、腕や肩が回転すれば相対的には回転しませんが、絶対座標的には回転します。

 しかし、IKターゲットなどのオブジェクトなど親オブジェクトの変異に影響されずにワールド座標に対して移動がロックされてほしい時があります。

 もう少し具体的な例を挙げると、IKターゲットを使用したアニメーションを行う際、足を絶対座標的にロックしたい時があります。

 ロックされない場合は軸足がブレブレに動いてしまうため、非現実的なアニメーションとなってしまうことがあります。

 今回は以下のようなサンプルシーンを作成しました。

 大きなキューブの子オブジェクトとして小さなキューブを配置してます。

このままでは当然ですが親のキューブのトランスフォームによって子オブジェクトも動いてしまいます。

①子オブジェクトをワールド座標で固定するためのオブジェクトを作成します。 ここではEmptyを作成しました。

②子オブジェクトのCubeを選択し、コンストレイントプロパティから、トランスフォームコピーのコンストレイントを追加します。

ターゲットに①で作成したEmptyを設定します。

 これによって親オブジェクトを動かしても子オブジェクトは動かなくなります。

子オブジェクトのキューブのトランスフォームコピーオブジェクトコンストレイント影響を0にすることで再度親オブジェクトに沿って動くようになります。

このようにコンストレイントは物体の移動などの挙動の制限を与える機能になっています。