【Blender】コンストレイント制御とキー制御を行き来したい
タイトルの事をするにはコンストレイント中のトランスフォームにキーを打って、コンストレイントの影響を0にする必要があります。
ですがBlenderではコンストレイントしてもトランスフォームの値が変わらず、どう制御するのか謎でした。
ここでつまずく人は結構いるんじゃないでしょうか。
ですが、やっと理解出来た様な気がします。
コンストレイント中はトランスフォームが内部的な値に切り替わるんですね。(言い方が合ってるかどうか分かりませんが)
つまり同じ値でもコンストレイント中かどうかで扱いが変わります。
また、コンストレイントでもオフセットが効くタイプか完全に拘束するタイプかによって扱いが変わります。
Mayaではトランスフォームのドライバーが何かに関わらず、常に結果の値を表示しているので、その先入観もあって混乱してしまいました。
コンストレイント適用後の値を得る機能がいくつかあるのですが、微妙に振る舞いが違いっていて、ここでもつまずきました。
以下、メモしておきます。
ビジュアルトランスフォーム
コンストレイント適用後の値を得る機能
オブジェクトモードとポーズモードで使えます。
・オブジェクトモード>オブジェクト>適用>ビジュアルトランスフォーム
・ポーズモード>ボーン選択>ポーズ>適用>ビジュアルトランスフォーム
実行後、オフセット的な操作を受け付けるタイプのコンストレイントだった場合、まずダブルトランスフォームが起きます。この時、オートキーを設定していてもトランスフォームにキーが打たれないので、手動でキーを打ちます。その後、コンストレイントの影響を0にすると実行前の見た目に戻ります。
もし親階層に数値が入っている場合、当然ですが外に出すとズレます
因みにパワーでFKをIKにスナップさせたい時に使えます。
ビジュアルキーイング
コンストレイントと親子関係の影響を考慮してキーを打ってくれる機能です。
いくつか方法があります。
・プリファレンス>アニメーション>ビジュアルキーイングをオン。
・3Dビュー>キーフレーム挿入>ビジュアル○○、を選択する。
・タイムライン>キーイング>キーイングセット>Visual○○、を選択する。
ビジュアルトランスフォームと似てますが振る舞いが違います。
ビジュアルキーイングで打たれる値は、親階層の値とコンストレイント適用後の値が加算されたものになります。つまり親階層に数値が入っている場合、コンストレイントの影響を0にすると位置がズレます。この状態で親階層の外に出すと実行前の見た目に戻ります。
うーん、分かりにくい!
コンストレイントプロパティで「適用」
ビジュアルトランスフォームと同じ振る舞いですがコンストレイント自体が消えてしまうのでアニメーションには向いてません。
コンストレイントプロパティの「影響」の横にあるバッテン
これもビジュアルトランスフォームと同じ振る舞いです。
インバースキネマティクスにはこれが無いです。
ベイク
オブジェクトモード>オブジェクト>アニメーション>アクションをベイク
ポーズモード>ポーズ>アニメーション>アクションをベイク
実行時の設定で振る舞いが選べます。
「ビジュアルキーイング」をオンにして、「親子関係をクリア」がオンならビジュアルキーイングと同じ振る舞い、「親子関係をクリア」がオフならビジュアルトランフォームと同じ振る舞いになります。
作業中に何回も使うには面倒くさいです。何かの節目に使う感じでしょうか。
あとがき
あースッキリ。※間違っていたらご指摘下さい。
多分、複雑なシーンでビジュアルキーイングを使うと混乱するんじゃないでしょうか?
因みに「チャイルド」コンストレイントを使うと親子付けと同じ動作が出来る上に任意のタイミングで外にも出せます。位置、回転、スケールの影響をオンオフ出来るし、ほとんどこれで済んじゃうのでは?と思うのですがどうなんでしょうか。試してみます。
この記事が気に入ったらサポートをしてみませんか?