このWebページでは Blender バージョン 2.79 で説明しています.
目次
前準備として,Blender のインストールが終わっていること.
画面レイアウトとして「Scripting」を選ぶ.
画面レイアウトとして「Default」を選ぶ.
コンソール画面の中では, IPython シェルが動いている.
コンソール画面で次を実行
for i in bpy.data.objects:
print(i.name)
Blender オブジェクトが確認できる(下の実行結果例では Camera, Cube, Lamp の 3つ)
コンソール画面で次を実行
for i in bpy.data.objects:
if i.type == "MESH":
print(i.name)
コンソール画面で次を実行
for i in bpy.data.screens:
print(i.name)
画面名が確認できる
コンソール画面で「bpy.data.」と入力したあとで、「オートコンプリート (Autocomplete)」をクリック
補完の候補が表示される.
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 は次の通り.
参考 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())
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)
以下,書きかけ