忘却まとめ

Blenderの中級者・上級者向けの踏み込んだ情報や、アドオン・3DCGに関する情報を記事にします

Rigifyのリグのスケールを正しく変更する方法【Blender】

Blender

投稿日:

Rigifyのリグは、単純にスケールしてスケールを適用すると形が崩れてしまう。
この問題は、全てのボーンのストレッチコンストレイントの「元の長さ」を、全て初期値に戻すことで改善する。
この解決方法を紹介する。

一旦初期ポーズに戻す

ちゃんと修正できるか確認しやすいように、事前にポーズやキーフレームはなくしておく。

  • ポーズモードにする
  • 全てのボーンレイヤーを表示する
  • 全てのボーンを選択する
  • ポーズ > トランスフォームをクリア > すべて を実行して、ポーズをクリアする
  • キーフレームが影響しないように、アクションを除去しておく

メッシュとリグのスケールを変える

メッシュとリグのスケールを変更する。カーソル中心でスケールするとよい。

  • オブジェクト > スナップ > カーソル → ワールド原点(Shift + S) で、カーソルをワールド座標の中心に移動する
  • ヘッダーから、トランスフォームのピボットポイントをカーソルに変更する
  • スケール(S)を変更する

スケールを適用する

  • オブジェクト > 適用 > スケール で、変更したスケールを適用する

この時点でメッシュとリグがおかしくなるので、これを修正していく。

「元の長さ」設定を全て元に戻す

スケールしておかしくなる問題は、ストレッチコンストレイントの「元の長さ」を全て初期値に戻すことで改善する。

コンソールエディターを開く

スクリプトを実行する

ストレッチコンストレイントのあるボーンを1つ1つ変更しても修正することはできるが、手間なのでスクリプトで一括処理する。

  • 対象のリグを選択しておく
  • コンソールウィンドウに、下記のコードを貼り付ける
  • エンターを2回押して実行する
    • bone_count で処理した数がわかる
bone_count = 0
for b in bpy.context.active_object.pose.bones:
    for c in b.constraints:
        if c.type == "STRETCH_TO":
            c.rest_length = 0
            bone_count += 1

bone_count
スケールを正しく変更することができた

参考

Guide: How to scale a Rigify rig

3Dモデルなどの制作依頼はこちら

-Blender
-

Copyright© 忘却まとめ , 2020 All Rights Reserved Powered by STINGER.