MRが楽しい

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

Blenderで利用可能なpythonスクリプトを作る その20(頂点グループの追加と削除)

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

頂点グループの追加

指定オブジェクトに頂点グループを追加します。
・setting_vertexgroup.py

# bpyインポート
import bpy

# 指定オブジェクトに頂点グループを追加する
# 引数   arg_objectname:指定オブジェクト名
#        arg_vertexgroup:追加頂点グループ名
# 戻り値
def add_vertexgroup(
  arg_objectname='Default', arg_vertexgroup='DefaultGroup'):
  # 指定オブジェクトを取得する
  selectob=bpy.context.scene.objects[arg_objectname]
  # 指定オブジェクトをアクティブにする
  bpy.context.scene.objects.active=selectob
  # オブジェクトの頂点グループを取得する(get関数は対象が存在しない場合 None が返る)
  vertexgroup=selectob.vertex_groups.get(arg_vertexgroup)
  # 対象の頂点グループが存在しない場合は新規作成する
  if vertexgroup == None:
    # オブジェクトに新規頂点グループを追加する
    selectob.vertex_groups.new(name=arg_vertexgroup)
  return


# 関数の実行例
add_vertexgroup(arg_objectname='Cube', arg_vertexgroup='CubeGroup')

f:id:bluebirdofoz:20190702091913j:plain

頂点グループの削除

指定オブジェクトの指定した頂点グループを削除します。
・setting_vertexgroup.py

# bpyインポート
import bpy

# 指定オブジェクトに頂点グループを追加する
# 引数   arg_objectname:指定オブジェクト名
#        arg_vertexgroup:追加頂点グループ名
# 戻り値
def delete_vertexgroup(
  arg_objectname='Default', arg_vertexgroup='DefaultGroup'):
  # 指定オブジェクトを取得する
  selectob=bpy.context.scene.objects[arg_objectname]
  # 指定オブジェクトをアクティブにする
  bpy.context.scene.objects.active=selectob
  # オブジェクトの頂点グループを取得する(get関数は対象が存在しない場合 None が返る)
  vertexgroup=selectob.vertex_groups.get(arg_vertexgroup)
  # 対象の頂点グループが存在しない場合は処理しない
  if vertexgroup == None:
    # 処理終了
    return
  # 指定頂点グループをアクティブにする
  selectob.vertex_groups.active_index=vertexgroup.index
  # 指定頂点グループを削除する
  bpy.ops.object.vertex_group_remove(all=False)
  return


# 関数の実行例
delete_vertexgroup(arg_objectname='Cube', arg_vertexgroup='CubeGroup')

f:id:bluebirdofoz:20190702091926j:plain

頂点グループの全削除

指定オブジェクトの全ての頂点グループを削除します。
・setting_vertexgroup.py

# bpyインポート
import bpy

# 指定オブジェクトの全ての頂点グループを削除する
# 引数   arg_objectname:指定オブジェクト名
# 戻り値
def delete_vertexgroup_all(
  arg_objectname='Default', arg_vertexgroup='DefaultGroup'):
  # 指定オブジェクトを取得する
  selectob=bpy.context.scene.objects[arg_objectname]
  # 指定オブジェクトをアクティブにする
  bpy.context.scene.objects.active=selectob
  # オブジェクトの全頂点グループを削除する
  bpy.ops.object.vertex_group_remove(all=True)
  return


# 関数の実行例
delete_vertexgroup_all(arg_objectname='Cube')

f:id:bluebirdofoz:20190702091937j:plain