広告
広告

VRoid Studio 0.6.4 のモデルに Rigify(2.80)を適用する(腕・脚・背骨)

カテゴリ:blender

インポート

インポーターはここからダウンロードできる。2.80 はこちら2.79 は更新を停止しており、最新の VRoid Studio には未対応。

インポート方法は【Vroid】モデル(VRM)をBlenderで読み込む方法を参照。

Rigify については Blender Rigifyの使い方(バージョン 2.79)を参照。

雑多な設定

_colliders とメッシュとを非表示にすると作業がしやすい。

skelton の設定

インポートされたボーンがつながっていないので、ボーン位置を編集して接続する。

腕はボーンのヘッドを移動させて接続する。

エディットモードで、J_Bip_L(R)_UpperArm のヘッドを J_Bip_L(R)_LowerArm のテールの位置に移動させて接続(Ctrl + P > 接続)する。J_Bip_L(R)_LowerArm のヘッドを J_Bip_L(R)_Hand のテールの位置に移動して接続する。

connect arms
右側のように接続する。左側はインポート時の状態

プロパティパネルのボーンタブの Rigify Type で Rigify ボーンの設定をする。ポーズモードで上腕(J_Bip_L(R)_UpperArm)に limbs.arm をつけ、limb segments に1を設定する。Rotation Axis は X manual。この記事はORG-ボーンを使って変形する方法なので腕や脚の分割には未対応。

arm setting
腕の設定

接続

脚も腕同様、ボーンのヘッドを移動させて接続する。

エディットモードで、J_Bip_L(R)_UpperLeg のヘッドを J_Bip_L(R)_LowerLeg のテールの位置に移動させて接続(Ctrl + P > 接続)する。J_Bip_L(R)_LowerLeg のヘッドを J_Bip_L(R)_Foot のテールの位置に移動して接続する。J_Bip_L(R)_Foot と J_Bip_L(R)_ToeBase、J_Bip_L(R)_ToeBase と J_Bip_L(R)_ToeBase_end も接続する。

ロールの設定

脚の回転軸がずれている場合は修正する。脚のボーンを選択して、「アーマチュア > ボーンロール > ロールを再計算(Shift + N) > グローバル+Y軸」でX軸回転に統一できる。

bone roll
ボーンのロールを自動計算

かかとボーンの追加

かかとの位置を指定する heel.02.L(R) を追加する。これはメッシュのかかとではなく、ボーンのかかとの位置に配置する。heel.02.L(R) を J_Bip_L_Foot を親として親子付けする。

heel bone
かかとの位置にボーンを追加

Rigify ボーンの設定

ポーズモードで腿(J_Bip_L(R)_UpperLeg)に limbs.leg をつけ、limb segments を1に、Rotation Axis を X manual にする。

指の設定

いまのところボーン構造を変更せずに指のリグを設定する方法はない。

背骨の設定

エディットモードで J_Bip_C_Spine のテールを J_Bip_C_Hips のヘッド位置に移動し接続する。J_Bip_C_UpperChest のヘッドを J_Bip_C_Neck のテール位置に移動し接続する。J_Bip_C_Hips から J_Bip_C_Head まで、すべての背骨ボーンを接続する。

spine bone
接続された背骨のボーン

ポーズモードで J_Bip_C_Hips に spines.super_spine をつける。pivot_position は2、neck_position は5。

リグの生成

Generate Rig を押してリグを生成する。

rig の設定

オブジェクトモードで Rigify が生成した rig を選択した状態で以下のスクリプトを実行する。スクリプトの実行は、Blender のテキストエディタに以下のスクリプトをコピーしスクリプト実行を押すだけだ。

このスクリプトは以下のことをやっている。

  1. ORG-ボーンで変形可能にする
  2. 名前の衝突するボーンのリネーム
  3. ORG-ボーンの接頭辞を削除
  4. ORG-ボーンのロックを解除
import bpy
# 使い方:オブジェクトモードでアーマチュア(Rigify が作成した rig)を選択して実行する

amt = bpy.context.active_object
if amt.name == 'skelton':
    raise ExitError("skelton is selected")

# ORG-ボーンで変形
for b in amt.data.bones:
    b.use_deform = b.name.startswith('ORG-')

rename_list = ['J_Bip_L_ToeBase', 'J_Bip_R_ToeBase']

for b in amt.pose.bones:
    # 不要な J_Bip_LR_ToeBase をリネーム
    if b.name in rename_list:
        b.name = 'DEL-'+b.name

    if b.name.startswith('ORG-'):
        # 接頭辞『ORG-』を削除。
        b.name = b.name[4:]

        # ロックの解除
        b.lock_location = [False]*3
        b.lock_rotation_w = False
        b.lock_rotation = [False]*3
        b.lock_scale = [False]*3

# 重複していたボーン名の修正
for name in rename_list:
    amt.pose.bones[name+'.001'].name = name

'''
# .baked のついているメッシュのアーマチュアモディフィアのオブジェクト:を設定
meshes = [o for o in bpy.data.objects if o.name.endswith('.baked')]
for mesh in meshes:
    for mod in mesh.modifiers:
        if mod.type == 'ARMATURE':
            mod.object = amt
'''

何らかの理由でスクリプトが失敗した場合は、リグの生成からやり直す必要がある。

メッシュの設定

インポートしたすべてのメッシュのアーマチュアモディフィアのオブジェクト:を rig に差し替える。

set armature modifier
アーマチュアの差し替え

外部リンク

VroidのモデルをBlenderで編集するときに気をつけたい5つのポイント

Cats Blender Plugin

関連記事

Blender 記事の目次

Blender Rigifyの使い方(バージョン 2.79)

インサイドRigify 2.79


広告
広告