見出し画像

Pythonスクリプトでレンダリング

 最近、Blenderでレンダリングを手動で行っていて枚数が多くなってくるとあまりにも面倒くさかった。そこで、Pythonスクリプトで自動化(プログラミングで処理)できないかな調べて実際にやってみたので忘れないうちに記録として...

Pythonスクリプト

 今回はパノラマ画像を環境マップとして読み込んでレンダリングした結果画像を保存するまでの流れを実装してみます。

先に完成コードを

1 import bpy
2 import os
3
4 bpy.context.scene.world.node_tree.nodes['Environment Texture'].image = bpy.data.images.load('path+hoge.png')
5 bpy.context.scene.render.image_settings.file_format = 'PNG'
6
7 bpy.ops.render.render()
8 bpy.data.images['Render Result'].save_render( filepath = os.environ['HOMEPATH'] + '/hoge.png')

コードはこんなだけ!簡単!

コード解説

import bpy
import os

 この部分でPython上で必要なライブラリを読み込んでます。これがないとこれ以下の処理は何もできない!

bpy.context.scene.world.node_tree['Environment Texture'].image = bpy.data.images.load('path + hoge.png')

 この部分では、今回はシーンの環境マップとしてパノラマ画像を読み込みたいのでノードツリーの'Environment Texture'のimageを指定して、そこにload関数を使って画像を読み込んでいます。画像のパス指定の'path + hoge.png'の部分は相対パスでも絶対パスでもどちらでも大丈夫らしい。

bpy.context.scene.render.image_settings.file_format = 'PNG'

 次ではレンダリング結果を保存するときの画像の形式を指定してます。例えば.jpg形式で保存したい人は'JPG'で大丈夫。

bpy.ops.render.render()

 さぁ、そろそろコードも終盤。ここでは、レンダリングを実行してます。単純ですが注意する必要があります。今回はカメラ視点を固定してレンダリングすることが目的なので、上記のコードを実行するだけで大丈夫。
 しかし、毎回違う視点からレンダリングしたい人はカメラ制御をするコード書く必要があるよ!

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

 最後のコード!ここでは、レンダリングした画像を保存するための処理を行っています。今回のコードでは保存先が 'C:/User/ユーザー名' になっています。os.environ['HOMEPATH']で 'C:/User/ユーザー名' までパスが取得されるのでとても便利!
 しかし、ここでも注意が必要です。保存先のパスは絶対パスじゃないとエラーが出るっぽい?とのことなので一応絶対パスで指定しておきましょう!

P.S

 自分はWindows環境で行いました。
(Mac環境ではパスの指定方法が微妙に異なっていて面倒くさかった...)

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