目次
Blender
インストール
Ubuntu 18.04の場合
Ubuntu18.04では最初からapt install blenderでインストールが可能.
インストールされるバージョンは2019年5月現在は2.79である.
Ubuntu 16.04の場合
Inria大学のThomas Schiexさんが管理しているppaからインストールするのが良さそう.
sudo add-apt-repository ppa:thomas-schiex/blender sudo apt update sudo apt install blender
設定
Python tooltips
Python開発の必要な設定を行う.
bpy.context.preferences.view.show_tooltips_python = True
アドオン
アドオンとはサードパーティが作成するプラグインのようなものである.
アドオンでインストールするファイル自体は
~/.config/blender/2.79/scripts/addonsに入る.
日本語化
日本語化をするには設定を変更する必要がある. 設定は設定ファイルとして特定の場所に保存されている.
初めて環境設定をしたときに~/.config/blender/$(version)/config/にuserpref.blendが出来る.
設定系ファイルの一覧
設定ファイルディレクトリ ~/.config/blender/$(version)/config/ の中身 |
||
|---|---|---|
| ブックマーク | bookmarks.txt | ファイルを開くとき等に表示される Bookmarks と Recent のフォルダ名が書かれている |
| 最近のファイル | recent-files.txt | File - Open Recent に表示される最近使ったファイルが書かれている |
| テンプレート | startup.blend | File - New で新規ファイルを作成したときに利用されるテンプレートファイル |
| 設定 | userpref.blend | File - User Preferences での設定が書かれている |
日本語化
Blender2.8にて,
旧) Blender > Preferences > Interface > Translation > Language
新) Edit > Preferences > Interface > Translation をチェックしないと日本語文字が表示されない.
言語設定のトグル切り替え
日本語話者で海外のチュートリアルなど参照して勉強している場合は, 日本語で操作したい場面と英語で操作したい場面があると思う.
トグル設定をしておくとPauseキーで一発切り替えできるようになる.
設定にはサードパーティのアドオン(プラグイン)が必要.
以下のようにダウンロードしてアドオンのディレクトリに置く.
wget https://blender.jp/modules/newbb/download.php?url=/1_ToggleTranslatedUI-111.zip.1368622219000 -O ToggleTranslatedUI.py.zip unzip ToggleTranslatedUI.py.zip
アドオン開発
Python API
BlenderにはPythonで操作するためのAPIであるbpyパッケージがある.
bpyは/usr/share/blender/scripts/modules/bpyにある
実行されているPython自体のバイナリがどこにあるのか sys.executable で調べられるのだが,
BlenderのPythonコンソールでこれを調べると,/usr/lib/blender/blenderというバイナリファイルのようだ(pythonという名前では無いっぽい).
ちなみに普通のpythonでこれを調べると /home/horiuchi/.pyenv/versions/anaconda3-2018.12/bin/python みたいな感じで出てくる.
| Blender Python API 基本事項 | |
|---|---|
| 実行されているPython自体 | /usr/lib/blender/blender |
| bpyパッケージのディレクトリ | /usr/share/blender/<VERSION>/scripts/modules/bpy |
ちなみにパッケージ検索パス一覧(弊実行環境での例)
/usr/share/blender/2.80/scripts/addons_contrib /home/horiuchi/.config/blender/2.80/scripts/addons /usr/share/blender/2.80/scripts/addons /usr/share/blender/2.80/scripts/startup /usr/share/blender/2.80/scripts/modules /usr/lib/python37.zip /usr/lib/python3.7 /usr/lib/python3.7/lib-dynload /home/horiuchi/.local/lib/python3.7/site-packages /usr/lib/python3/dist-packages /usr/share/blender/2.80/scripts/freestyle/modules /usr/share/blender/2.80/scripts/addons/modules /home/horiuchi/.config/blender/2.80/scripts/addons/modules
| bpyの使用方法 | |
|---|---|
| Blender GUI | 外部ライブラリの制限(乗っ取りで解決可能) |
| Blender CUI | 外部ライブラリの制限(乗っ取りで解決可能) |
| Pythonから呼び出し | contextへアクセスできない |
Blenderの全機能を利用しPythonでフルコントロールするならBlender CUIを利用するのが良さそう.
Python操作でBlender環境外のライブラリなどを使う
ライブラリの検索パスを動的に変更してしまえばnumpyなどが使えるようになる.
GUIのBlender,CUIのBlenderで外部パッケージを使う
blenderが使用しているpythonのパッケージを見えないようにして, anacondaのsite-packageを検索対象として追加してしまえば良い.
import sys # システムのpythonはnumpyが動かないので消す sys.path.remove('/usr/lib/python3/dist-packages') # anacondaの環境のパッケージを追加する sys.path.append('/home/$(USER)/.pyenv/versions/anaconda3-2018.12/envs/$(ENVNAME)/lib/python3.6/site-packages')
pythonからbpyパッケージを呼び出す
それ専用にコンパイルして作ったバイナリが必要.
面倒くさいのでpythonコードを生成してsubprocess.callでCUIのblenderを呼び出したほうが楽かも.
API利用の基本
難しいので dir(hoge) などで中のattributeを確認するのが良い.
| いくつかの基本アクセス | |
|---|---|
| ops | 操作(選択中のものへの?) |
| data | データオブジェクトへのアクセス?基本的にこれを使って操作していくのが推奨?Blender自体もデータ? |
| types | この名前空間以下に型が定義されている? |
| context | 選択中のものに対する処理.Blender CUIではないpythonからは使えない(?) |
ops (bpy.ops)
operatorsの略.処理のまとまりがOperatorクラスで作られていて, たとえばアドオンなどではOperatorクラスを継承したクラスを作成してシステムにそのOperatorを登録して使えるようにする. ユーザーはそのOperatorを呼び出すことで処理が行われる.
Operatorsクラスのexecuteメソッドが呼ばれる.引数はcontext.
下の名前空間にジャンル分けしている.基本的に戻り値は成功か否かというだけ.
data (bpy.data / D)
blend データへのアクセス. なるべくこれだけで処理できるとmodelessになって嬉しい.
context (bpy.context / C)
現在選択中のものなどからアクセスしていく. モーダルなので自動化ではあまり使いたくはない.
types (bpy.types)
Blenderに存在するあらゆるものはここに記述された何らかのクラスのインスタンスである.
実例
環境設定を自動的にやってみる
import bpy # 言語の変更設定をONに bpy.context.preferences.view.use_international_fonts = True # 使用言語を日本語に bpy.context.preferences.view.language = 'ja_JP' # インターフェース,新規作成ファイル名,ツールヒントを翻訳対象に bpy.context.preferences.view.use_translate_interface = True bpy.context.preferences.view.use_translate_new_dataname = True bpy.context.preferences.view.use_translate_tooltips = True # 設定を保存 bpy.ops.wm.save_userpref()
使い方
CLI
- pythonスクリプトファイルで使う場合
blender –background –python hogehoge.py - python対話でやる場合
blender –python-console
GUI
独特
モード
見方変更
ミドルクリック ドラッグで注視点を中心に回転shiftミドルクリック ドラッグで平行移動ctrlミドルクリック 上下ドラッグまたはスクロールで拡大縮小
オブジェクトの移動/回転/拡縮 (オブジェクト選択状態で)
- G : 移動
- R : 回転
- S : 拡縮
オブジェクトの作成削除
- 作成: オブジェクトモードで Add → Mesh → Cube
- 削除: X
