オブジェクトオペレーター

公式サイト:

Object Operators | Blender Python API [Official]

使い方

参考:

低レベル Python API を利用してオブジェクトを操作する – Qiita

Blender を Python で操作する – Qiita

プリミティブオブジェクトを Python で操作する | rinkak

シーン内のオブジェクトを抽出する

参考:

シーン内の全てのメッシュオブジェクトの原点を変更する – Qiita

How do I iterate through objects in a Scene? – Blender Artists Community

選択したオブジェクトを操作する

選択したオブジェクトを取得する。

selected_objects = bpy.context.selected_objects
for object in selected_objects:
    print(object.name)Code language: Python (python)

ドキュメント:

bpy.context.selected_objects | Blender Python API [Official]

参考:

Looping through selected objects one at a time? – Blender Stack Exchange

Loop doesn’t work, 3-lines Python code – Stack Overflow

Get list of selected objects as string – Stack Overflow

オブジェクトを選択する

オブジェクトを選択するには、選択に追加するオブジェクトにたいして select_set メソッドを実行する。

object = bpy.data.objects["Cube"]
object.select_set(True)Code language: Python (python)

2.79 以前は select プロパティを設定していた。ビューレイヤー別に状態を管理する場合は select_set メソッドを使用する。

# In 2.79 or before
object.select = TrueCode language: Python (python)

ドキュメント:

bpy.types.Object.select_set | Blender Python API [Official]

Object Selection and Hiding | Blender Developer Wiki [Official]

参考:

Selecting an object via scripting? – Blender Stack Exchange

Selecting object by name in 2.8 – Blender Stack Exchange

オブジェクトをアクティブ化する

コンテキストアクセスから view_layer を介してアクティブにするオブジェクトを指定する。

object = bpy.data.objects["Cube"]
bpy.context.view_layer.objects.active = objectCode language: Python (python)

参考:

オブジェクトのアクティブ化 | 環耀の備忘録

How to set object (mesh) to active in Blender 2.8 Python API | Interplanety

Set active object with python – Blender Stack Exchange

指定した名前のオブジェクトを操作する

cube = bpy.data.objects["Cube"]Code language: Python (python)

ドキュメント:

Data Access (bpy.data) | Blender Python API [Official]

参考:

Selecting an object via scripting? – Blender Stack Exchange

オブジェクトを作成する

参考:

Three Ways to Create Objects | wiki.blender.jp

オブジェクトを削除する

選択して削除する。

bpy.ops.object.select_all(action='DESELECT')
object = bpy.data.objects["Cube"]
object.select_set(True)
bpy.ops.object.delete()Code language: Python (python)

データアクセスから remove で削除する。

object = bpy.data.objects["Cube"]
bpy.data.objects.remove(object)Code language: Python (python)

参考:

オブジェクトの削除/エクスポート | MR が楽しい

How to completely remove an object – Blender Stack Exchange

Object referenced by PointerProperty in Python can not be deleted properly – Blender Stack Exchange

Removing all meshes from a collection with Python – Blender Stack Exchange

オブジェクトの情報を取得する

  • bound_box
  • dimensions
  • location
  • matrix_world

ドキュメント:

Object (bpy.types.Object) | Blender Python API [Official]

参考:

ワールドマトリクスからオブジェクトの軸方向を取得 | Blender とか 3DCG とか

Get X, Y, Z and bounding box with script – Blender Stack Exchange

How to get global object location – Blender Stack Exchange

大きさに基づいて選択する

こちらのページを参照

参考:

Select or delete small objects (based on dimension) – Blender Artists Community

Select object by dimension – Blender Stack Exchange

オブジェクトを移動/回転させる

参考:

Rotating an object about a global axis – Blender Artists Community

Rotate objects around their origin along a global axis (scripted) without bpy.ops – Blender Stack Exchange

Matrix rotation not changing scale – Blender Stack Exchange

How do I use world_matrix.rotate correctly? – Blender Stack Exchange

オブジェクトを拡大縮小する

参考:

How to modify data from vector / arrays in Python? – Blender Stack Exchange

オブジェクトを複製する

ドキュメント:

bpy.ops.object.duplicate | Blender Python API [Official]

参考:

オブジェクトの複製と結合 | MR が楽しい

Python で剛体をいっぱい作成 | QCGANIME

Making a copy of an object using the Blender Python API | Interplanety

Duplicating an object in script by name – Blender Stack Exchange

How to get the object created by bpy.ops.object.duplicate()? – Blender Stack Exchange

Duplicate a mesh via Python – Blender Stack Exchange

How to get duplicate ID via Python api? – Blender Stack Exchange

座標軸の向きを取得する

参考:

ワールドマトリクスからオブジェクトの軸方向を取得 | Blender とか 3DCG とか

How to get local axis orientation in Python? – Blender Stack Exchange

移動/回転/縮小を適用する

ドキュメント:

bpy.ops.object.transform_apply | Blender Python API [Official]

オブジェクトの描画領域を取得/描画する

参考:

Save the 2D bounding box of an object in rendered image to a text file – Blender Stack Exchange

How to find image coordinates of the rendered vertex? – Blender Stack Exchange

How to extract the bounding box of a model? – Stack Overflow

メッシュを扱う

ドキュメント:

bpy.types.BlendData.meshes | Blender Python API [Official]

Mesh | Blender Python API [Official]

BlendDataMeshes | Blender Python API [Official]

参考:

Mesh データアクセスのチートシート – Qiita

Blender のデータ構造を辿り、FBX から頂点座標を抽出する – Qiita

Simple face area measurement script – Blender Artists Community

メッシュを結合する

参考:

オブジェクトの結合、表示/非表示 | MR が楽しい

How to join objects with Python? – Blender Stack Exchange

join objects – Blender Stack Exchange

頂点を選択する

参考:

Selected vertex did not highlight – Stack Overflow

頂点データを取得/編集する

参考:

How to update mesh data via script? – Stack Overflow

How do we access Vert, Norm and UV data then print to a text file? – Blender Stack Exchange

頂点カラーを設定/編集する

参考:

How can I set and get the vertex color property? – Blender Stack Exchange

How to get random color variation on a single mesh? – Blender Stack Exchange

カーブを作成する

参考:

Scripting Curves in Blender with Python | Jeremy Behreandt

How to add or remove hairs from a hair curve – Stack Overflow

カメラビュー内の頂点を選択する

リポジトリ:

1C0D/cam_view_select_geo: A Script to Select Vertices of Selected Objects under Cam View – GitHub

参考:

How to find image coordinates of the rendered vertex? – Blender Stack Exchange

UV 展開を実行する (Unwrapping)

参考:

Can’t UV unwrap a sphere added with Python – Blender Stack Exchange

How to UV Unwrap and Scale UVs with Python (while in object mode)? – Blender Stack Exchange

照明を操作する (Light)

ドキュメント:

Light | Blender Python API [Official]

データ名を変更する

object = bpy.data.objects["Cube"]
object.data.name = "data_name.001"Code language: Python (python)

参考:

How to synch armature name with object name? – Blender Artists Community

モディファイアーを扱う

ドキュメント:

bpy.types.Object.modifiers | Blender Python API [Official]

Modifier | Blender Python API [Official]

ObjectModifiers | Blender Python API [Official]

bpy.ops.object.modifier_apply | Blender Python API [Official]

bpy.ops.object.modifier_apply_as_shapekey | Blender Python API [Official]

bpy.ops.object.modifier_copy | Blender Python API [Official]

bpy.ops.object.modifier_copy_to_selected | Blender Python API [Official]

bpy.ops.object.modifier_remove | Blender Python API [Official]

ペアレントを取得/設定/変更/解消する

ドキュメント:

bpy.ops.object.parent_set | Blender Python API [Official]

bpy.ops.object.parent_clear | Blender Python API [Official]

bpy.types.Object.parent | Blender Python API [Official]

bpy.types.Object.parent_type | Blender Python API [Official]

参考:

メッシュとアーマチュアの選択と関連付け | MR が楽しい

How to make object A a parent of object B via Python API? – Blender Stack Exchange

How do I set parent to Armature? – Blender Stack Exchange

子オブジェクトを操作する

参考:

Get children name and move it to a separated collection automatically – Blender Stack Exchange

オブジェクトを統合する (Join)

参考:

script randomly crashes Blender – Blender Stack Exchange

シェイプキーを扱う

ドキュメント:

bpy.types.Object.active_shape_key | Blender Python API [Official]

ShapeKey | Blender Python API [Official]

シェイプキーを削除する

ドキュメント:

bpy.types.Object.shape_key_remove | Blender Python API [Official]

bpy.types.Object.shape_key_clear | Blender Python API [Official]

参考:

頂点グループ/シェイプキー一括削除 | Amethyst3D

delete shape key by name via Python – Blender Artists Community

shape key removal – Blender Artists Community

Purging shape key data with Python – Blender Stack Exchange

Use Python to delete shape key from mesh, not object, or get vertex position with armature deform without using object.to_mesh – Blender Stack Exchange

不要なシェイプキーを削除する

参考:

Is there a way to automatically delete shape keys that are identical to the basis? – Blender Stack Exchange

コンストレイントを操作する

ドキュメント:

Object Operators | Blender Python API [Official]

指定したコレクションに移動する

ドキュメント:

bpy.ops.object.move_to_collection | Blender Python API [Official]

bpy.types.Collection.objects | Blender Python API [Official]

CollectionObjects | Blender Python API [Official]

bpy.types.CollectionObjects.link | Blender Python API [Official]

bpy.types.CollectionObjects.unlink | Blender Python API [Official]

参考:

Where to find collection_index for moving an object? – Blender Developer Talk

What’s the command for adding an object to a collection using Python? – Blender Stack Exchange

How to move multiple objects into another collection? – Blender Stack Exchange

How to put similar named objects into collection? – Blender Stack Exchange

Import obj and create collections – Blender Stack Exchange

Get children name and move it to a separated collection automatically – Blender Stack Exchange

コレクションインスタンスを操作する

参考:

How can I count objects that are in a collection instance? – Blender Stack Exchange

モデルをエクスポートする

参考:

オブジェクトの削除/エクスポート | MR が楽しい

glTF をコレクションごとに一括でエクスポートする方法 | Kazuki Sako

Export Plug-in を作る #2 データアクセス (Blender 2.6) | ホイール欲しい ハンドル欲しい

Export Plug-in を作る #1 (Blender 2.6) | ホイール欲しい ハンドル欲しい

Batch exporting scene collections or selected objects using glTF-Blender-IO – Blender Stack Exchange

Convert collections to empty-parents with hierarchy (problem with location of instanced collection) – Blender Stack Exchange

視錘台に応じてオブジェクトを配置する (Camera Frustum)

こちらのページを参照

参考:

Getting edges of the camera’s view on the scene XY plane – Blender Stack Exchange

削除の禁止/許可を切り替える

参考:

Prevent accidental deletion of object – Blender Stack Exchange

update_from_editmode

編集モードに入る時にメッシュのスナップショットが取られ、編集モードを抜ける時に編集の結果が書き戻される。編集モード内で編集の状態をメッシュデータに反映させたい場合には、update_from_editmode を実行する。

ドキュメント:

bpy.types.Object.update_from_editmode | Blender Python API [Official]

参考:

選択物のリストを取る方法 – Blender.jp フォーラム

How to update mesh data in edit mode? – Blender Artists Community

Not Updating in Edit Mode – Blender Artists Community

.data.vertices returns an empty collection in Edit Mode – Blender Stack Exchange

How to get a list of edges of current face in bpy – Blender Stack Exchange

データブロック (Data-Blocks)

ドキュメント:

Data-Blocks | Blender Manual [Official]

to_mesh

ドキュメント:

bpy.types.Object.to_mesh | Blender Python API [Official]

bpy.types.Object.to_mesh_clear | Blender Python API [Official]

参考:

How to get a new mesh with modifiers applied using Python API? – Blender Stack Exchange

How do I get a mesh data-block with modifiers and shape keys applied? – Blender Stack Exchange

Is there a low level alternative for bpy.ops.object.convert()? – Blender Stack Exchange

Deleting temporary mesh after extracting data – Blender Stack Exchange

Use Python to delete shape key from mesh, not object, or get vertex position with armature deform without using object.to_mesh – Blender Stack Exchange

アクティブ化に失敗する

現象:

active プロパティが見つからない旨のエラーが発生する。

bpy_prop_collection: attribute "active" not found

対処法:

バージョン 2.80 でアクティブオブジェクトを設定する方法が変更になった。ビューレイヤー毎にアクティブ化をコントロールする必要があるため、コンテキストアクセスから view_layer を介して設定する。

object = bpy.data.objects["Cube"]
bpy.context.view_layer.objects.active = objectCode language: Python (python)

参考:

How to set object / mesh to active in Blender Python API | Interplanety

Set active object with Python – Blender Stack Exchange

スクリプト例

参考:

オブジェクトの削除、エクスポート | MR が楽しい

スクリプトの利用方法をまとめる | MR が楽しい

コード:

すべてのオブジェクトを削除する (hiroakioishi) – GitHub Gist

Tips

なるべく bpy.ops を使わない方法 | アストラルプリズム

リファレンス

こちらのページを参照

Object | Blender Python API [Official]

記事をシェアする:
タグ:

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

Protected by reCAPTCHA