0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Pythonコードを1回実行するだけで、VRMにパーツを簡単に追加する[Pythonやプログラミングの知識不要]

Last updated at Posted at 2024-05-31

VRMにパーツを追加するPythonコード

コードのオブジェクトとボーンの名前を変更して実行すれば、
あっという間にくっ付けられます。

import bpy

# アタッチしたいオブジェクトの名前(アタッチしたいオブジェクトの名前に変更)
ATTACH_OBJECT_NAMES = ['sakura_tree', 'sakura_flower']
# アタッチするボーンの名前(アタッチするボーンの名前に変更)
BONE_NAMES = ['J_Bip_C_Head', 'J_Bip_C_UpperChest']

for attach_object_name, bone_name in zip(ATTACH_OBJECT_NAMES, BONE_NAMES):
    # ボーンにアタッチ
    attach_object = bpy.data.objects[attach_object_name]
    armature = bpy.data.objects['Armature']
    original_matrix_world = attach_object.matrix_world.copy()
    bpy.ops.object.select_all(action='DESELECT')
    attach_object.select_set(True)
    armature.select_set(True)
    bpy.context.view_layer.objects.active = armature
    bpy.ops.object.parent_set(type='ARMATURE_NAME', xmirror=False, keep_transform=True)
    armature.select_set(False)
    attach_object.parent_type = 'BONE'
    attach_object.parent_bone = bone_name
    attach_object.matrix_world = original_matrix_world

    # 頂点グループの割り当て
    vertex_group_name = bone_name
    if vertex_group_name not in attach_object.vertex_groups:
        vertex_group = attach_object.vertex_groups.new(name=vertex_group_name)
    else:
        vertex_group = attach_object.vertex_groups[vertex_group_name]
    vertices = attach_object.data.vertices
    for vertex in vertices:
        vertex_group.add([vertex.index], 1.0, 'ADD')

アタッチしたいオブジェクトの名前とアタッチするボーンの名前に合わせて
下記コードを変更します。

# アタッチしたいオブジェクトの名前(アタッチしたいオブジェクトの名前に変更)
ATTACH_OBJECT_NAMES = ['sakura_tree', 'sakura_flower']
# アタッチするボーンの名前(アタッチするボーンの名前に変更)
BONE_NAMES = ['J_Bip_C_Head', 'J_Bip_C_UpperChest']

例えば、オブジェクトcubeをボーンJ_Bip_C_Headにアタッチしたい場合は、
下記コードになります。

# アタッチしたいオブジェクトの名前(アタッチしたいオブジェクトの名前に変更)
ATTACH_OBJECT_NAMES = ['cube']
# アタッチするボーンの名前(アタッチするボーンの名前に変更)
BONE_NAMES = ['J_Bip_C_Head']

cube1をJ_Bip_C_Head、cube2をJ_Bip_C_Head、cube3をJ_Bip_C_UpperChestに
アタッチしたい場合は、下記コードになります。

# アタッチしたいオブジェクトの名前(アタッチしたいオブジェクトの名前に変更)
ATTACH_OBJECT_NAMES = ['cube1', 'cube2', 'cube3']
# アタッチするボーンの名前(アタッチするボーンの名前に変更)
BONE_NAMES = ['J_Bip_C_Head', 'J_Bip_C_Head', 'J_Bip_C_UpperChest']

blenderでpythonコードを実行する方法

1 上部のScriptingをクリック
2 上部の+ Newをクリック
3 コードを入力
4 上部の三角形のボタン▷(Run Script)をクリック

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?