見出し画像

Blender APIで自動化を始めよう: 初心者向けガイド

Blender APIは、Pythonをベースにした強力なツールで、自動化やカスタマイズに無限の可能性を提供します。今回は、初心者がつまずきやすい最初の導入部分について解説します。
文章内に、あえて、素人でも取っつきやすいように、駄文を入れます。
プログラミングも、ブレンダーも専門知識の塊なので、専門用語が乱立します。
私も、この3年間、独りで悩み、苦しみ抜いて、ここまで来ました。
一日2時間、365日×3年(実際土日はほぼ丸1日)たかだか、2200時間程度の苦しみですが、ここでみんなに共有したいと思います。
誰かの道標になることを切に願ってます。

1. Blender APIの準備

まず、BlenderのPythonコンソールやエディターでコマンドを使用するための初期設定を行います。Blenderでの操作に慣れていれば、ショートカットやコマンドを使いこなしているでしょう。APIを使う際も、コマンドさえ知っていれば同じように簡単です。しかし、初期設定をしないとコマンドが表示されません。

Pythonコマンドを表示させる初期設定

  1. メインメニューから「編集(Edit)」を選択。

  2. 「Preferences」をクリック。

  3. 「Interface」タブで「Developer Extras」をチェック。

  4. 「Python Tooltips」を有効にします。

段取り準備


コマンドが表示される


上記の状態で右クリックすると、Copy Python Commandが出るので、このままコピー

2. import bpy と bpy.data.scenes の基礎

import bpy は、Pythonがbpyというモジュールをインポートする意味です。これは、BlenderのAPIを使用するための基本的な準備です。
以下駄文
pythonはあくまで頭脳だと思ってください。
腕(bpy)がないと、どんなに優れた頭脳があっても、行動が起こせません。

bpyが無いと、Pythonがエラーを吐きます。腕がないから当然何もできません
import bpy
bpy.data.scenes['Scene.001'].name
bpy.ops.mesh.primitive_cube_add()

上記のように、最初の1文に必ず入れましょう。

bpy.data.scenesについて
普段、blenderにて、モデラーがモデル作成時には、
以下の手順になると思います。
 ①データを開く
 ②sceneを選択
 ③選択後、モデル編集

少なくとも、私はそうです。→pythonも同じです。
①import bpyにて、腕を装備
②pythonがその腕を使って、sceneを選択できるようにします。
 それが、bpy.data.scenes['シーン名'].nameです。
 bpy.data.scenesは、開いているデータのすべてのscene名を
リスト(表)という形で集めています。(そういう関数なんです)
以下に、bpy.data.scenesをpythonコンソールで実行してみました。

# シーン名でアクセス
print(bpy.data.scenes['Scene'].name)

# インデックス番号でアクセス
print(bpy.data.scenes[0].name)
前提:testデータでは、sceneが2つ存在しています。
python コンソールでの確認結果
→collection[2]とでていますね
bpy.data.scenes[0].nameは、リストの1番目のsceneにアクセスしたという意味です。
pythonは基数が0からなので、pythonがものを数えるときは0,1,2と数えます。
(人間は1,2,3)
’Scene’として指定しても出てきますね。
つまり、名前でも、リストの番号(index No)でもどっちでもいいわけです。

3. 自動化の利点

Pythonを使用してBlenderでの操作を自動化することで、反復的な作業を効率化できます。例えば、複数のシーンに同じ処理を適用する場合、次のようなコードで自動化できます。
以下駄文
でも、1つの処理なら、自分で選択したほうが楽じゃない?
っと思いますよね。確かに、楽です…1つデータを弄るだけの処理ならね。
仮に同じ処理を各Sceneに施す必要があったらどうでしょうか。
これを見てほしいです。

for i in bpy.data.scenes:
    print(i.name)
    # 各シーンに対する処理をここに記述
for 分と組み合わせて、リストの中情報を一つずつ処理。
つまり、SceneとScene.001に順にアクセスしたわけです。

プログラマーの人なら何気ない普通の話なんですが、
リストに入れる=連続処理ができるということなんです。
よくプログラマーはfor文でぶん回すとか言ってます。

つまりpythonが、常人にはできないことをやらせてるわけです。
今回は、たまたま、Sceneへのアクセスですが、例えば、座標を指定して、そこに頂点を打つとか、所定の場所に
もの動かす、その座標をもし、リスト化出来たら・・・・
そのリストの座標が二次元の絵から座標が取れたら・・・
(つまり、2次元の絵の座標が取れる。→pythonでblender内に座標を連続で打てる)これの意味わかりますか?
もし2Dの座標があればblender内に転記できてしまうわけです。
Pythonかじっている人は普通に思っちゃうんですね。

この記事を読む方は、間違いなく、APIの使い方を
求めてくる方だと思います.…
授けておきます。

# 座標リストから頂点を打つ例
coordinates = [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
for coord in coordinates:
    bpy.ops.mesh.primitive_cube_add(location=coord)

まとめ

Blender APIを使いこなすことで、自動化やカスタマイズが格段に容易になります。初期設定をしっかり行い、基本的なコマンドを理解することで、Blenderでの作業を大幅に効率化できるでしょう。PythonとBlender APIの可能性を探求し、クリエイティブなプロジェクトを実現してください。

この記事が、Blender APIの初めての一歩を踏み出す助けになれば幸いです。引き続き、定期的な更新と一貫したテーマで、Blenderの魅力を探求していきましょう





この記事が参加している募集

#新生活をたのしく

47,915件

この記事が気に入ったらサポートをしてみませんか?