MRが楽しい

MRやVRについて学習したことを書き残す

Blenderでpythonスクリプトを利用する

本日は Blender の技術調査枠です。
今回試してみるのは Blender の操作を python で行うというものです。
以下の記事を参考にします。
qiita.com

因みに BlenderWiki にPython マニュアルがあり、Blender での GUI 操作はほとんどスクリプト化できるそうです。
Blender 2.6、Python マニュアル
 https://wiki.blender.org/index.php/Doc:JA/2.6/Manual/Extensions/Python

物は試しです。早速 Blender 上で操作してみます。
エディタ―タイプから Python コントロールを選択します。
f:id:bluebirdofoz:20170826230102j:plain

すると以下のようなエディタ画面が開きます。
f:id:bluebirdofoz:20170826230113j:plain

まずは Cube オブジェクトを削除してみます。
記事のサンプルプログラムだと Cube に限らず、ランプやカメラを含めた全てのオブジェクトを削除します。

Cube のみの削除であれば、以下の一文で十分です。
・bpy.context.scene.objects.unlink(bpy.data.objects['Cube'])

試しに実行してみました。Cube オブジェクトが消えます。
f:id:bluebirdofoz:20170826230122j:plain

もう少し色々な処理を一括で実施したい場合や、何度も利用する処理はスクリプトファイルとして保存しておくと便利です。
例えば、参照記事の全オブジェクトの削除処理をスクリプトファイルとして保存します。
・AllDelete.py

import bpy

def delete_all():
    for item in bpy.context.scene.objects:
        bpy.context.scene.objects.unlink(item)

    for item in bpy.data.objects:
        bpy.data.objects.remove(item)

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

    for item in bpy.data.materials:
        bpy.data.materials.remove(item)

delete_all()

次に作成したスクリプトファイルを Blender 内で利用してみます。
エディタ―タイプからテキストディターを選択します。
f:id:bluebirdofoz:20170826230136j:plain

開くボタンでスクリプトファイルを選択すると、以下のようにファイルが読み込まれます。
この状態でスクリプト実行ボタンをクリックします。
f:id:bluebirdofoz:20170826230146j:plain

全てのオブジェクトが削除されました。
f:id:bluebirdofoz:20170826230157j:plain

全てのUI操作ができるので、当然、逆に3Dモデルのインポートもできます。
f:id:bluebirdofoz:20170826230207j:plain

日本語情報が少なく API を調べるのが大変ではありますが、一度組んでしまえば便利です。
以前紹介した三面図ビューの作成とか自動化してみようかな。
bluebirdofoz.hatenablog.com