新しいシーンを作って何か描いてみる。
スクリプトを用いて新しくシーンを作り、何かレンダリング出来るようにする。
やることは4つ。
- 新しくシーンを作る。
- 光源を置く。
- カメラを置く。
- 物を置く。
from Blender import * #### Scene #### scene = Scene.New('myScene') scene.makeCurrent() #### Lights #### ldat = Lamp.New('Sun') l = scene.objects.new(ldat, 'myLamp') l.loc = (1, 0, 2) #### Camera #### camdat = Camera.New('persp') cam = scene.objects.new(camdat, 'myCamera') cam.loc = (0, 0, 3) #### Stuff #### mdat = Mesh.Primitives.Cube(0.8) m = scene.objects.new(mdat,'myMesh') m.rot = (0.5, 0.5, 0.1) Redraw()
Lamp型、Camera型、Mesh型のオブジェクトを作り、それぞれを元にした新規 object を scene に追加する。各 object の位置や回転角には「.loc」「.rot」でアクセスできる。(「.RotX」「.LocZ」などで単一の座標だけにアクセスすることも可能)。
光源(Lamp)の詳細はこちら→ Module Lamp
カメラ(Camera)の詳細はこちら→ Module Camera
基本図形(MeshPrimitives)の詳細はこちら→ Module MeshPrimitives
(リンク先は全て The Blender Python API Reference 日本語版 内のページ)
「F12」あるいはメニューから「Render」−「Render Current Frame」でレンダリングが出来る。
ちょっとカクカクしているので Oversampling による anti-aliasing でスムーズにする。scene を取得した後の適当なところに下の2文を挿入。
context = scene.getRenderingContext()
context.enableOversampling(True)
シーン(Scene)の詳細はこちら→ Module Scene
レンダー(Render)の詳細はこちら→ Module Render
再度レンダリング(「F12」)。
もうちょっと遊んでみる。
ソースはこちら。
from Blender import * import math ###### Scene ###### scene = Scene.New('myScene') scene.makeCurrent() ###### Lights ###### ldat = Lamp.New('Area') ldat.energy = 0.1 l1 = scene.objects.new(ldat, 'myLamp') l1.loc = (0, 0, 8) ldat = Lamp.New('Spot') l2 = scene.objects.new(ldat, 'mySpot') l2.loc = (4, 3, 6) l2.rot = (0.2, 0.2, 0) ###### Camera ###### camdat = Camera.New('persp') cam = scene.objects.new(camdat, 'myCamera') cam.loc = (0, -12, 8) cam.RotX = 0.9 ###### Stuff ###### mdat = Mesh.Primitives.Cube(0.8) for a in range(16): m = scene.objects.new(mdat,'myMesh') m.LocX = math.sin(math.pi*2*a/16)*5 m.LocY = math.cos(math.pi*2*a/16)*5 m.LocZ = 1 pdat = Mesh.Primitives.Plane() p = scene.objects.new(pdat, 'myPlane') p.size = (8, 8, 1) Redraw() ###### Render ###### context = scene.getRenderingContext() context.enableOversampling(True) context.enableShadow(True) context.render()