« blender とpython 立体配置 | トップページ | Python関連資料 »

2017.12.25

blender, python, camera

昨日書いた(A). 100個程度の立体配置、(B). 照明とカメラを配置、(C). カメラ移動のパスを配置 (D). カメラ設定して数秒間のアニメ作成、この(A)(B)(C)(D)を曲がりなりにpythonで練習しました。使用環境は Blender 2.79, macOS 10.13.2 ,他にpngをアニメGIFに変換するImageMagick 。(例convert -delay 4 -loop 0 *.png py_disc3.gifのようにアニメGIFに変換) 100px*200pxの レンダリング時間は5秒くらい。ファイルサイズ 190kB。セコセコとスクリプトを打ったりデバッグする作業時間は2時間以上かも。

20171225b

残った課題はカメラ移動のパスの変形やカメラ角度の制御、メッシュの色や反射の指定、照明の強さや向きの指定、など多数。 移動パスpath角度ひとまずはz 3.14/4で指定。(指定なし初期状態ではx軸に平行な方向になる)単位は180度がパイになるラジアン単位だと思ってます。 (残った謎として、カメラやメッシュの rotationは角度指定する数値の制限があるのかも。マイナス数値を入れてエラーが返ったような感じです。あと、注意点は 新規メッシュとか作った直後はそのオブジェクトが選択されている、というのがワナ。これを見落とすと変な選択状態になる。) 以下が使ったスクリプト。コメントアウトしたゴミが少々残ってます。

import bpy

def add_nijushikon():
    for x in range(5):
        for y in range(5):
            for z in range(5):
                bpy.ops.mesh.primitive_cylinder_add(
                location=(x, y, z-1),
                rotation=(0.1*(x+y+z), 0, 0),
                radius=0.3,
                depth=0.2
                )

add_nijushikon()  #rotation (0.2*(x+y+z), 0, 0)

# new lamps *2
bpy.ops.object.lamp_add(type='POINT', radius=1.0,  location=(5,0,8), rotation=(0, 0, 0))
bpy.ops.object.lamp_add(type='POINT', radius=1.0,  location=(-1,0,6), rotation=(0, 0, 0))

# path for camera movement
bpy.ops.curve.primitive_nurbs_path_add(
location=(3, 1.0, 2.0), rotation=(0, 0, (3.14/4)))

# new camera
bpy.ops.object.add(
type='CAMERA', location=(1.5, -2, 1.7), rotation=(1.4, 0.0, 0.0))

#camera = bpy.data.objects['Camera']

camera = bpy.data.objects['Camera']
path = bpy.data.objects['NurbsPath']
#lamp = bpy.data.objects['Lamp']
camera.select = True
#lamp.select = True
path.select = True

bpy.context.scene.objects.active = path #parent
bpy.ops.object.parent_set(type='FOLLOW') #follow path

|

« blender とpython 立体配置 | トップページ | Python関連資料 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« blender とpython 立体配置 | トップページ | Python関連資料 »