テキストベースでモデリングする際に頻繁に行う、オブジェクトのアクティブ化を毎度処理を記述しなくてよいように関数化しておく
動作確認環境 : Blender 4.2
モデリング例
以下の手順を一通り含むGitリポジトリを用意しました!
- モデリング
- モディファイア設定(Mirror / Subdivision / Array など)
- モディファイア適用(形状確定系:Mirror / Subdivision など)
- モデル結合・最適化(前処理)
- UV展開
- マテリアル設定
- テクスチャ作成・ベイク
- アーマチュア設定(ボーン/リギング)
- アニメーション設定(ボーン/シェイプキー/トランスフォーム)
- glTF / glb エクスポート
▼ こちらを合わせて参照推奨
▼作成可能なモデルの例
bpyでオブジェクトをアクティブ化
複数あるオブジェクトからアクティブ状態にするオブジェクトを指定します。

Python:
# オブジェクトアクティブ化
def active_element_select(
object_name_list # オブジェクト名リスト
):
# 現在のモード保存
current_mode = bpy.context.object.mode
# モード切り替え
bpy.ops.object.mode_set(mode='OBJECT')
# 全オブジェクト選択解除
bpy.ops.object.select_all(action='DESELECT')
# アクティブオブジェクト選択
for i in range(len(object_name_list)):
object_name = object_name_list[i]
myobject = bpy.data.objects.get(object_name)
if myobject:
myobject.select_set(True) # 選択
bpy.context.view_layer.objects.active = myobject # アクティブ化
# モードを戻す
bpy.ops.object.mode_set(mode=current_mode)
return myobject6行目, 19行目
現在のモードを保存して、処理を抜けるタイミングでモードを元に戻す
アクティブ化処理の使用例
テキストベースのモデリング処理中で具体的に以下のように使用します。
Python :
def Base_create():
# Mode 切り替え
bpy.ops.object.mode_set(mode='OBJECT')
# 立方体生成
bpy.ops.mesh.primitive_cube_add(
size=1
, location=(0, 0, 0)
, scale=(1,1,1)
)
bpy.context.object.name = "MyCube_001"
# 立方体生成
bpy.ops.mesh.primitive_cube_add(
size=1
, location=(1, 0, 0)
, scale=(1,1,1)
)
bpy.context.object.name = "MyCube_002"
# アクティブオブジェクト
active_element_select(object_name_list=["MyCube_001"])
# オブジェクト移動
bpy.ops.transform.translate(
value=(0, 0, 1)
, orient_type='GLOBAL'
)
Base_create()22行目
「"MyCube_001"」と「"MyCube_002"」を切り替えると、25行目で移動するオブジェクトが切り替わります。
両方のオブジェクト名を指定することで、両方をアクティブオブジェクトとして選択することも可能です。
以上
