さて数日間Blenderと格闘して立方体の着色で一歩前進。
hecomi氏の2012年記事 「Blender 2.63 での Python の使い方に...」
を元にしてあれこれblender 2.8向けに書き換えてみました。今回は静止画面。
import bpy
# nh03 立方体、着色に成功(マテリアル割り当てに成功)
# 既存要素削除(この2行は借り物)
for item in bpy.data.meshes:
bpy.data.meshes.remove(item)
#立方体 ---original script ---- http://tips.hecomi.com/entry/20120818/1345307205
START = 0
END = 100
N = 3
# Add color cubes
for x in range(0, N):
for y in range(0, N):
for z in range(0, N):
# Add a color cube
bpy.ops.mesh.primitive_cube_add( location=(x*3, y*3, z*3) )
#obj = bpy.context.scene.objects.active #(old blender2.7script)
obj = bpy.context.view_layer.objects.active
#mat.diffuse_color = (x/N, y/N, z/N)#(old blender2.7script)
mat = bpy.data.materials.new('Cube')
mat.diffuse_color = (x/N, y/N, z/N, 0)
#mat.use_transparency = True #(この行は2.8で試していない)
#mat.alpha = 0.6 #(この行は2.8で試していない)
obj.data.materials.append(mat)
# new camera
bpy.ops.object.add(radius=1.0, type='CAMERA', enter_editmode=False, align='WORLD', location=(20.0, -6.0, 7.0), rotation=(1.4, 0.0, 1.2))
# new lamps (出典 stack overflow Can you add a light source in blender using python)
# create light datablock, set attributes
light_data = bpy.data.lights.new(name="light_2.80", type='POINT')
light_data.energy = 3000
# create new object with our light datablock
light_object = bpy.data.objects.new(name="light_2.80", object_data=light_data)
# link light object
bpy.context.collection.objects.link(light_object)
# make it active
bpy.context.view_layer.objects.active = light_object
#change location
light_object.location = (5, -4, 10)
# update scene, if needed
dg = bpy.context.evaluated_depsgraph_get()
dg.update()
# 背景 world - surface - background
bpy.data.worlds["World"].node_tree.nodes["Background"].inputs[0].default_value = (0.01, 0.15, 0.25, 1)
bpy.data.worlds["World"].node_tree.nodes["Background"].inputs[1].default_value = 0.7
#=====