MRが楽しい

MRやVRについて学習したことを書き残す

Blender3.0で利用可能なpythonスクリプトを作る その92(選択中の頂点から頂点グループを作成する)

本日は Blender の技術調査枠です。
Blender3.0で利用可能なpythonスクリプトを作ります。

選択中の頂点から頂点グループを作成する

選択中の頂点から頂点グループを作成するには以下の オペレータを利用します。
本オペレータは編集モードで動作するため、スクリプトで利用する際はモードの判定が必要です。
docs.blender.org

サンプルスクリプト

選択中の頂点から新規頂点グループを作成して作成したグループ名を返却するサンプルスクリプトです。
結果はコンソールに出力されます。
・Script_make_vertexgroup.py

# bpyインポート
import bpy

# 選択中の頂点から新規頂点グループを作成してグループ名を取得する
def make_vertexgroup() -> str:
    """選択中の頂点から新規頂点グループを作成してグループ名を取得する

    Keyword Arguments:

    Returns:
        str -- 新規頂点グループ名
    """

    # 現在のモードが「編集モード(EDIT_MESH)」かチェックする
    if check_viewmode('EDIT_MESH') == False :
        return ""

    # 編集中のアクティブオブジェクトを取得する
    active_object = bpy.context.view_layer.objects.active

    # 選択中の頂点に新規頂点グループを割り当てる
    bpy.ops.object.vertex_group_assign_new()

    # 作成した頂点グループのインデックス番号を取得する
    make_index = active_object.vertex_groups.active_index

    # 作成した頂点グループのグループ名を返却する
    return active_object.vertex_groups[make_index].name

# 現在のモードが指定のモードかチェックする
def check_viewmode(arg_checktype:str) -> bool:
    """現在のモードが指定のモードかチェックする

    Keyword Arguments:
        arg_checktype {str} -- 比較するモード名

    Returns:
        str -- 現在のモード
    """

    # 現在のモードをチェックする
    # (https://docs.blender.org/api/current/bpy.context.html#bpy.context.mode)
    modetype = bpy.context.mode

    return (arg_checktype == modetype)

# 関数の実行例
# 選択中の頂点から新規頂点グループを作成してグループ名を取得する
make_groupname = make_vertexgroup()
# 結果をコンソールに表示する
print("VertexGroup : " + make_groupname)

・実行前
f:id:bluebirdofoz:20211226104514j:plain

・実行後
f:id:bluebirdofoz:20211226104523j:plain

・再実行後
f:id:bluebirdofoz:20211226104534j:plain