Windows11の教科書

ウィンドウズ11やスマホで困ったことを調べたブログ

【Python】Blender 3を自動化するには?

Blender初心者入門のPython編です。

スクリプトで制御できると、規則正しく配置するようにオブジェクトを生成したり、複数のオブジェクトを一気に変更するといったことができます。

BlenderでPython(コンソール)

コンソールを開く

Python入力用コンソールを開いて、実際に動くか試してみましょう。

上のバーから「Scripting」を押すと、スクリプト入力用画面となります。

f:id:apicode:20211211105310p:plain

 

コンソールはPythonが実行できるので、命令文を書いて動作を確認してみましょう。

print文は文字を出力するためのコマンドです。

print('my blender')

のようにかいて文字「blender」が返ってくればOKです。

f:id:apicode:20211211110606p:plain

 

通常のモデル作成画面に戻りたい場合には、ウィンドウメニューで「ワークスペース」を切り替えるとよいでしょう。

f:id:apicode:20211211115142p:plain

 

コンソールでオブジェクトを作る

コンソールから3Dの物体を作ることができます。

プログラムは「bpy.ops.物体.コマンド」のように書いていきます。

 

立方体は

bpy.ops.mesh.primitive_cube_add(location=(1, 2, -1), size=0.5, rotation=(0, 0, 0))

のように位置(location)、大きさ(size)、回転(rotation)の情報を渡して作ることができます。

 

実行後、ボックスがちゃんとできていればOKです。

f:id:apicode:20211211111122p:plain

 

 

BlenderでPython(エディター)

コンソールは短いスクリプトならいいですが、長いと不便です。

そこでつかうのが「エディター」です。

「新規」でファイルを作成します。

 

生成

直方体は「primitive_cube_add」、円柱は「primitive_cylinder_add」、ICO球は「primitive_ico_sphere_add」などで生成できます。

 

頂点からポリゴンをPythonで作ることができます。

以下にサンプルがあります。

BlenderをPythonで操作する - Qiita

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

 

 

オブジェクト操作

ファイルから読み込む

3Dファイルのインポートが行えます。多数の3Dファイルを読み込ませる場合はスクリプトで実行したほうが楽です。

import bpy

bpy.ops.import_scene.fbx(filepath='C:\\_work\\53392556_bldg_6677.fbx')

注意点としてはPythonでは「¥」がエスケープ扱いになるので「¥¥」のように書いたほうがいいようです。

 

フォルダ内読み込みは

import os
import glob
import bpy

importDir = 'C:\\Users\\akyip\\Downloads\\LOD1'
os.chdir(importDir)
paths = glob.glob("*.fbx")
for path in paths:
    bpy.ops.import_scene.fbx(filepath=path, axis_forward="-Z", axis_up="Y")

でループできます。

[自分用メモ] Blender Python を使ったバッチ処理まとめ (zenn.dev)

 
すべてのオブジェクトを削除

次に以下のように書きます。

これは画面上の3Dデータをすべて削除するというものです。

import bpy
for item in bpy.data.meshes:
    bpy.data.meshes.remove(item)

書き終えたら上の再生ボタンで実行しましょう。

f:id:apicode:20211211112200p:plain

 

特定のオブジェクトをリサイズ

まずオブジェクトを「Cube」に名前を変更しておきます。

f:id:apicode:20211211114113p:plain

 

次にエディターで以下のように書いて実行。

import bpy

obj = bpy.data.objects['Cube']
obj.scale.x = 2

obj.location.x = 2

これでX軸の大きさが2倍に、X軸の位置が2となります。

 

 

 

Blender操作の目次はこちら。

www.kyoukasho.net

 

このブログは、ネットや書籍上の情報、個人の体験や感想を中心にまとめたものです。 正確性を期していはいますが、間違い・誤訳等あるかもしれません。 当サイトの情報によって生じたいかなる損失について一切の責任を負わないものとします. あらかじめご了承ください。

利用規約・プライバシーポリシー |〇問い合わせ