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

公式サイト:

Object Operators | Blender Python API [Official]

目次

使い方

参考:

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

Blender を Python で操作する – Qiita

Blender のプリミティブオブジェクトを 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 Blender python – Stack Overflow

オブジェクトを選択する

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

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

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

object.select = True
Code language: Python (python)

参考:

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

Object Selection and Hiding (Blender 2.80) | 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 = object
Code 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)

参考:

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

参考:

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

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

Get Blender 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

オブジェクトを複製する

参考:

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

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

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

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

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 でワールドマトリクスからオブジェクトの軸方向を取得 | 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 in Blender? – Stack Overflow

メッシュを扱う

参考:

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

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

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

Mesh | Blender Python API [Official]

BlendDataMeshes | Blender Python API [Official]

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 in Blender 3D – Stack Overflow

頂点データを編集する

参考:

How to update mesh data via blender python script? – Stack Overflow

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

参考:

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

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

リポジトリ:

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]

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

参考:

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

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]

How to make object A a parent of object B via Blender’s 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]

シェイプキーを削除する

参考:

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

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

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

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

Whats the Blender 2.8 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 in python? – 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

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

参考:

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

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

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

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

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 Blender Python API? – Blender Stack Exchange

How do I get a mesh data-block with modifiers and shape keys applied in Blender 2.8? – 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 = object
Code 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

スクリプト例

参考:

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

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

コード:

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

Tips

参考:

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

リファレンス

こちらのページを参照

Object | Blender Python API [Official]

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

コメントを残す

メールアドレスが公開されることはありません。

Protected by reCAPTCHA