web-dev-qa-db-ja.com

Blenderによる画像のレンダリングと保存python

Blenderのpythonスクリプトを使用して複数の画像をレンダリングおよび保存しようとしています。BlenderGUIを使用して画像をレンダリングおよび保存する方法を知っていますが、ネストされたループのセットを使用し、複数の画像を保存する必要があります。画像をレンダリングすることができ、出力が成功した状態で画像を保存すると思いますが、保存先とファイルパスを編集するときコンテキストが間違っているというエラーが表示されます。

26
user2047506

_Blender 2.63_で行ったことは次のとおりです。

_bpy.data.scenes['Scene'].render.filepath = '/home/user/Documents/image.jpg'
bpy.ops.render.render( write_still=True ) 
_

これは、VRパノラマを作成することです(周囲の一連のオブジェクト画像)。そして、私はこのアルゴリズムで終了しました:

  1. 写真を撮るオブジェクトを作成またはロードします
  2. それを拡大縮小して、素敵な照明を追加します(オブジェクトがあなたが望む方向から見えるように);シーンをレンダリングして照明を確認します( F12 キー)
  3. Emptyノードを作成し、その位置と回転をidentityに設定します(position:_0, 0, 0_、rotation:_0, 0, 0_)
  4. カメラビューを開始位置に設定します(レンダリングでもう一度確認)
  5. open interactive Python Shell(Shift+F4
  6. スクリプトを貼り付けて実行します

最終的には、複数の写真(_step_count_で定義) _/home/user/VR_ディレクトリ内のオブジェクトの周りになります。

_cam = bpy.data.objects['Camera']
Origin = bpy.data.objects['Empty']

step_count = 32

for step in range(0, step_count):
    Origin.rotation_euler[2] = radians(step * (360.0 / step_count))

    bpy.data.scenes["Scene"].render.filepath = '/home/user/VR/vr_shot_%d.jpg' % step
    bpy.ops.render.render( write_still=True )
_
32
shybovycha

このようなもの:

import bpy

bpy.context.scene.render.filepath = 'pathToOutputImage'
bpy.context.scene.render.resolution_x = w #perhaps set resolution in code
bpy.context.scene.render.resolution_y = h
bpy.ops.render.render()
9
Dirk

以下を行う必要があります。 iループの後の2行目のforは、ファイルループのループインデックスです。

これは、コンソールで実行しているときにも、コマンドラインからも機能することを確認しました。 1つのファイルをレンダリングした後、オブジェクトを削除することを忘れないでください。 (汎用ではないため、removeコマンドはここでは指定しません。オブジェクトにリンクがある場合、そのコマンドには特定の引数が必要です)

for area in bpy.context.screen.areas:
    if area.type == 'VIEW_3D':
        area.spaces[0].viewport_shade = 'RENDERED'

bpy.context.scene.render.image_settings.file_format='JPEG'
bpy.context.scene.render.filepath = ".pic%0.2d.jpg"%i
bpy.ops.render.render(use_viewport = True, write_still=True)
0