Blender Python API

参考:

Blender Python API Documentation [Official]

使い方

参考:

Blender 2.63 での Python の使い方についてまとめてみた | 凹みTips

Blender でプログラミング 導入編 | 三日坊主のエンジニアBlog

Blender Python の基本 | 三日坊主のエンジニアBlog

Blender 2.80 で UI のスクリプトを書く | dskjal

Blending Into Python Cookbook – Wikibooks

導入

参考:

Blender を python で動かす – Qiita

Blender と Python で 3D モデルを動的生成してレンダリングする | pixiv inside

Python で始める Blender | Rafka の実験室

bpy モジュールを使ってみよう | Rafka の実験室

Blender 2.8 で Python スクリプトを実行してみる | 金子邦彦研究室

Blender × Python でお気楽 3DCG!| Adways エンジニアブログ

Quickstart Introduction | Blender Python API [Official]

テキストエディター/Pythonコンソール (Text Editor / Python Console)

参考:

テキストエディタとコンソール | Blender で Python スクリプト (Takosuke)

Text Editor | Blender Manual [Official]

Python Console | Blender Manual [Official]

データアクセス

参考:

Data Access | Blender Python API [Official]

オペレーター (Operators)

参考:

Operators (bpy.ops) | Blender Python API [Official]

オブジェクトを操作する

参考:

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

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

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

カーブを作成する

参考:

Scripting Curves In Blender With Python | Jeremy Behreandt

カーソル位置を取得・設定する

context.scene.cursor.location

参考:

3D Cursor location in Blender 2.8 Python API | Interplanety

Scene.cursor | Blender Python API [Official]

View3DCursor | Blender Python API [Official]

How to set cursor location, pivot_point in script? – Blender Stack Exchange

オーバーレイ

参考:

View3DOverlay.show_overlays | Blender Python API [Official]

geometry wireframe shortcut 2.8 – Blender Artists Community

Toggle Overlays shortcut? – Blender Stack Exchange

Change edge information display in Blender 2.80 with python – Blender Stack Exchange

レンダリングを実行する

参考:

Rendering a cube as png file using Blender’s Python API – Blender Stack Exchange

rendering and saving images through Blender python – Stack Overflow

Is it possible to make a sequence of renders and give the user the option to cancel the process through the UI at any given time? – Blender Stack Exchange

bpy.ops.render.render() freezes Blender when used in an addon – Blender Stack Exchange

Crashing Blender using bpy.ops.render.render from a different thread – Blender Artists Community

レンダリング条件を変更する

参考:

Python スクリプトでレンダリングを制御 | K-Blender Laboratory

API access for workbench render settings – Blender Stack Exchange

条件に応じてレンダリングする

参考:

Change a Driver based on which Scene is being Rendered – Blender Stack Exchange

3D ビューポートを扱う

参考:

How to access properties of the 3d Viewport? – Blender Stack Exchange

エリアを再描画する

参考:

イベントタイマーを設定して1秒間に60回画面を更新する – Qiita

Area.tag_redraw | Blender Python API [Official]

How to force View3D update in the middle of Python script – Blender.org

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

  • bound_box
  • dimensions
  • location

参考:

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

Get Blender X,Y,Z and Bounding Box with script – Blender Stack Exchange

マテリアルを変更する

参考:

Changing Viewport Color to Surface Color in Cycles – Blender Artists Community

Rendered object color different from viewport color, set in Python – Blender Stack Exchange

コレクションを扱う

参考:

Blender 2.8 の Python API ドキュメントを少しずつ読み解く クイックスタート その2 | MR が楽しい (bluebirdofoz.hatenablog.com)

Add objects to scene in Blender 2.80 – GitHub Gist

ノードを操作する

参考:

Set active image node with python – Blender Stack Exchange

物理シミュレーションを実行する

参考:

Blender 2.8 の物理シミュレーションを Python から操作する | Takashi Q. Hanamura Photography

コンソールに出力する

参考:

How can I display what happens in the system console inside blender’s console? – Blender Stack Exchange

Blender script run print to console – Blender Stack Exchange

スクリプトを実行する

参考:

How to programmatically load a python script in Text Editor and launch it – Blender Stack Exchange

外部から呼び出す

参考:

blender を python のモジュールとして使う – Qiita

Blender を Python で試してみた | gangan の技術備忘録

ショートカットキーをカスタマイズする (Keymap)

参考:

スクリプト内部で自作の機能にショートカットキーを割り当てる – Qiita

ショートカット (ホットキー) の割り当て方 | Blender.jp フォーラム

custom_key_config.py at master · delorenj/Blender-Stuff – GitHub

Keymap Customization | Blender Manual [Official]

Is it possible to create a modal operator with a modal keymap in Python? – Blender Stack Exchange

Add toggle hotkey to custom checkbox – Blender Stack Exchange

How to register keymaps for all editor types? – Blender Stack Exchange

How can I call a specific keymap to draw within my Addon Preferences? – Blender Stack Exchange

モーダル

参考:

スクリプトでマウスやキーボードのイベントを扱う方法 – Qiita

Using a key modifier with blender modal – Stack Overflow

How to define double shortcut like GG – Blender Stack Exchange

Call a modal operator from Python and keep its interactivity – Blender Stack Exchange

Is it possible to create a modal operator with a modal keymap in Python? – Blender Stack Exchange

About modal operators in Blender Python – Stack Overflow

Modal Operators: Click Object Event – Blender Stack Exchange

Modal Operator: How to change modifier settings? – Blender Stack Exchange

連続してモーダルオペレーターを実行する

参考:

How to use alternate user inputs and automation – Blender Artists Community

How to structure modal operator correctly with macro like step by step execution? – Blender Stack Exchange

モーダルオペレーターに処理を引き継ぐ

class OBJECT_OT_do_something_and_translate(bpy.types.Operator)
...
    def execute(self, context):
        ...
        return bpy.ops.transform.translate('INVOKE_DEFAULT')

参考:

Call a modal operator from Python and keep its interactivity – Blender Stack Exchange

UI

参考:

Blender の UI を制御する | はじめての Blender アドオン開発 (colorful-pico.net)

ポップアップ

参考:

Blender の UI を制御する 3 | はじめての Blender アドオン開発 (colorful-pico.net)

パイメニュー

参考:

How to properly overwrite Blender default keys with Pie Menu hotkeys – Blender Stack Exchange

パネルを動的に登録する

参考:

Change Blender’s Preferences Dynamically – Blender Stack Exchange

イベント (Event)

参考:

スクリプトでマウスやキーボードのイベントを扱う方法 – Qiita

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

マクロ (Macro)

参考:

Blender でマクロを作る (Edit, Object Mode 用マクロの例) | Blender とか 3DCG とか (masayuki-osaka.hatenablog.com)

How Use Macro in 2.8? – Blender Developer Talk

Alternate between user input and automation in one-step script – Blender Stack Exchange

Macro operator children are not called from python – Blender Stack Exchange

入門

参考:

Python for Blender クックブック 〜はじめに〜 – Qiita

チュートリアル

参考:

Advanced Tutorials/Python Scripting/Introduction – Wikibooks

スニペット/コード断片

参考:

Python for Blender クックブックのレシピ一覧 – Qiita

Blender 2.79 の UI スクリプト集 | dskjal

Code snippets | wiki.blender.jp

Code snippets/Interface | wiki.blender.jp

bps.ops.transform

参考:

bpy.ops.transform による変換 | 環耀の備忘録

operator_menu_enum

参考:

calling “Add Modifier” popup – Blender Artists Community

print

print の出力を見るためには Windows の場合はシステムコンソールを開く。Mac の場合はターミナルからアプリではなくバイナリを直接実行する。

Windows の場合

「ウィンドウ (Window)」メニューから「システムコンソール切替え (Toggle System Console)」を選択してシステムコンソールを開く。

Mac の場合

ターミナルから

$ /Applications/Blender.app/Contents/MacOS/Blender

を実行する。

参考:

テキストエディタとコンソール | Blender で Python スクリプト (Takosuke)

Windows 版のシステムコンソールを UTF-8 にする | おじさんからはじめる 3DCG (3dcg.hamken100.com)

ターミナルから Blender を起動 | K-Blender Laboratory

Mac で Blender の Print 結果を表示する | 3DCG と映像と INTERACTIVE (dekapoppo.blogspot.com)

コンソールウィンドウの開き方 | Blender.jp フォーラム 

Blender で Python 実行時にエラーを見れない | teratail

blender の python から出力されるログを見たい | teratail

Where is the system console? – Blender Stack Exchange

Where does console output go – Blender Stack Exchange

How to open system console to get output from Blender on Mac OS 10? – Blender Stack Exchange

redirect_stdout

参考:

How to redirect output from ‘bpy.ops.*’? – Blender Stack Exchange

logging

参考:

Logging from Python code in Blender | Blender Developers Blog

Print method isn’t displaying results in the Blender Python Console – Blender Artists Community

RNA

参考:

Blender の RNA プロパティと ID プロパティとの違い | dskjal

驚くべき後方互換性を持つ Blender DNA-RNA システム | Blender.jp

Writing a custom modifier for Blender | exppad

命名規則

クラス名はカテゴリーを大文字で書き、続けて要素の種類をアンダースコアで挟み、操作や要素の名前を小文字 (スネークケース) で続ける。

  • パネル (Panel):CATEGORY_PT_name_xxx
  • メニュー (Menu):CATEGORY_MT_name_xxx
  • オペレーター (Operator):CATEGORY_OT_name_xxx
  • UIリスト (UIList):CATEGORY_UL_name_xxx

bl_idname は全て小文字で、カテゴリーの後ろにドット (.) を付けて操作や要素の名前を続ける。

bl_idname = 'category.name_xxx'

参考:

Class naming conventions in Blender 2.8 Python API | Interplanety

What are the class naming conventions for blender? – Blender Stack Exchange

bpy.context

Global Context

  • area
  • blend_data
  • collection
  • engine
  • gizmo_group
  • layer_collection
  • mode
  • preferences
  • region
  • region_data
  • scene
  • screen
  • space_data
  • tool_settings
  • view_layer
  • window
  • window_manager
  • workspace

Screen Context

  • scene
  • view_layer
  • visible_objects
  • selectable_objects
  • selected_objects
  • editable_objects
  • selected_editable_objects
  • objects_in_mode
  • objects_in_mode_unique_data
  • visible_bones
  • editable_bones
  • selected_bones
  • selected_editable_bones
  • visible_pose_bones
  • selected_pose_bones
  • selected_pose_bones_from_active_object
  • active_bone
  • active_pose_bone
  • active_object
  • object
  • edit_object
  • sculpt_object
  • vertex_paint_object
  • weight_paint_object
  • image_paint_object
  • particle_edit_object
  • pose_object
  • sequences
  • selected_sequences
  • selected_editable_sequences
  • gpencil_data
  • gpencil_data_owner
  • annotation_data
  • annotation_data_owner
  • visible_gpencil_layers
  • editable_gpencil_layers
  • editable_gpencil_strokes
  • active_gpencil_layer
  • active_gpencil_frame
  • active_annotation_layer
  • active_operator
  • visible_fcurves
  • editable_fcurves
  • selected_visible_fcurves
  • selected_editable_fcurves
  • active_editable_fcurves

View3D Contet

  • active_base
  • active_object

Buttons Context

  • texture_slot
  • scene
  • world
  • object
  • mesh
  • armature
  • lattice
  • curve
  • meta_ball
  • light
  • speaker
  • lightprobe
  • camera
  • material
  • material_slot
  • texture
  • texture_user
  • texture_user_property
  • bone
  • edit_bone
  • pose_bone
  • particle_system
  • particle_system_editable
  • particle_settings
  • cloth
  • soft_body
  • fluid
  • collision
  • brush
  • dynamic_paint
  • line_style
  • collection
  • gpencil

Image Context

  • edit_image
  • edit_mask

Node Context

  • selected_nodes
  • active_node
  • light
  • material
  • world

Text Context

  • edit_text

Clip Context

  • edit_movieclip
  • edit_mask

Sequencer Context

  • edit_mask

参考:

Context Access (bpy.context) | Blender Python API [Official]

ドキュメント

アプリケーションモジュール

Operators

Types

Tips

参考:

ソースコードの歩き方 – Qiita

Hacking Blender – Wikibooks

Best Practice | Blender Python API [Official]

Tips and Tricks | Blender Python API [Official]

Gotchas | Blender Python API [Official]

ビジュアライゼーション

参考:

ptabriz/FOSS4G_workshop: Real-time 3D visualization of geospatial data with Blender – GitHub

タグ:

コメントを残す

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