トップページ -> 実践知識 -> 3次元コンピュータグラフィックス -> Blender で Python スクリプトを実行してみる
[サイトマップへ], サイト内検索:

Blender で Python スクリプトを実行してみる

サイト構成 連絡先,業績など 実践知識 データの扱い コンピュータ 教材 サポートページ

このWebページでは Blender バージョン 2.79 で説明している.

目次


前準備

前準備として,Blender のインストールが終わっていること.


Blender Python コンソール (Blender Python console) を使ってみる

Blender での画面レイアウトの切り替え

Blender Python コンソール (Blender Python console) で Python スクリプトを実行してみる

  1. blender を起動

  2. Blender Python コンソールを開きたいので, Blender の画面レイアウトを「スクリプティング(Scripting)」に変える

  3. コンソール画面が開くので確認する

    コンソール画面の中では, IPython シェルが動いている.

  4. 試しにBlender オブジェクトの一覧表示を行ってみる.

    コンソール画面で次を実行

    for i in bpy.data.objects:
        print(i.name)
    

    Blender オブジェクトが確認できる(下の実行結果例では Camera, Cube, Lamp の 3つ)

  5. 試しに3次元オブジェクト(タイプが「MESH」であるオブジェクト)の一覧表示を行ってみる.

    コンソール画面で次を実行

    for i in bpy.data.objects:
        if i.type == "MESH":
            print(i.name)
    

  6. 今度は,Blender 画面の一覧表示を行ってみる.

    コンソール画面で次を実行

    for i in bpy.data.screens:
        print(i.name)
    

    画面名が確認できる

  7. 自動補完(Auto comlete) を試してみる

    コンソール画面で「bpy.data.」と入力したあとで、「オートコンプリート (Autocomplete)」をクリック

    補完の候補が表示される.


Blender で Python を使ってみる

レンダリング

Windows の場合の例

Windowsの場合は,環境変数 HOMEPATH を使うことにする.

※ Linux の場合は,「HOMEPATH」の代わりに「HOME」を使う.

import os
bpy.ops.render.render()
bpy.data.images['Render Result'].save_render(filepath = os.environ['HOMEPATH'] + '/hoge.png')

できあがった画像ファイル hoge.png は次の通り.

光源(ランプ)の設定

Pythonスクリプトで光源(ランプ)を設定する

import os

pi = 3.141592
lamp = { "location" : (20, 0, 10), "rotation_euler" : (0, 0.2, 0.4), "falloff_type" : 'INVERSE_LINEAR', "shadow_method" : 'RAY_SHADOW' } 
# lamp = { "location" : (20, 20, 10), "rotation_euler" : (0, 0.2, 0.4), "falloff_type" : 'INVERSE_LINEAR', "shadow_method" : 'NOSHADOW' } 

lamp_obj = bpy.data.objects['Lamp']
lamp_obj.location = lamp["location"] 
lamp_obj.rotation_euler = lamp["rotation_euler"] 
lamp_obj.data.falloff_type = lamp["falloff_type"] 
lamp_obj.data.shadow_method = lamp["shadow_method"]

bpy.ops.render.render()
bpy.data.images['Render Result'].save_render(filepath = os.environ['HOMEPATH'] + '/hoge.png')

できあがった画像ファイル hoge.png は次の通り.

カメラの設定

Pythonスクリプトでカメラを設定する

pi = 3.141592
camera = { "location" : (15, 0, 15), "rotation_euler" : (0, 1, 0), "type" : 'PERSP', "angle" : 50.0 * (pi/180.0) }

scene = bpy.data.scenes["Scene"]
scene.camera.location = camera["location"]
scene.camera.rotation_euler = camera["rotation_euler"]
scene.camera.data.type = camera["type"]
scene.camera.data.angle = camera["angle"]

bpy.ops.render.render()
bpy.data.images['Render Result'].save_render(filepath = os.environ['HOMEPATH'] + '/hoge.png')

できあがった画像ファイル hoge.png は次の通り.


データアクセスを行う Python プログラム(書きかけ)

参考 Web ページ:

https://docs.blender.org/api/blender_python_api_2_63_release/bpy.data.html

https://docs.blender.org/api/blender_python_api_2_63_release/bmesh.html

オブジェクトの一覧

for i in bpy.data.objects:
    print(i.name)

シーン名の一覧

print(bpy.data.scenes.keys())

3次元オブジェクトのメッシュの取得

if "Cube" in bpy.data.meshes:
    mesh = bpy.data.meshes["Cube"]

for i in mesh.edges:
    print(i)

for i in mesh.vertices:
    print(i)

for i in mesh.polygons:
    print(i)


以下,書きかけ