BlenderのPythonAPIでカメラとライトを扱ったことがありません。
今回はカメラを試してみました。
カメラの位置と角度を設定
まだよくわかっていませんが、位置と角度は設定できました。
以下でカメラの上下左右を調整しています。
camera = bpy.data.objects['Camera'] x = math.radians(61) y = 0 z = math.radians(22) rot = (x, 0, z) loc = (5, -12, 8) camera.location = loc camera.rotation_euler = rot
カメラの上下の調整は以下です。
x = math.radians(60)
カメラの左右の調整は以下です。
z = math.radians(22)
上下60度の場合
上下65度の場合
上下70度の場合
上下73度の場合
作業画面
調べるとカメラを使いこなすにはまだまだ知らなければいけないことが多そうです。
全コード
import bpy import math import colorsys NUM = 8 def delete_all(): for i in bpy.data.meshes: bpy.data.meshes.remove(i) for i in bpy.data.materials: bpy.data.materials.remove(i) def make_cube(x, y, z): loc = (x, y, z) bpy.ops.mesh.primitive_plane_add(size=12.0) bpy.ops.mesh.primitive_cube_add(location=loc, size=0.8) bpy.ops.object.material_slot_add() def make_cubes(num): for x in range(-num, num): make_cube(x, 0, 1) def make_material(name, color): ma = bpy.data.materials.new(name) ma.use_nodes = True bsdf = ma.node_tree.nodes['Principled BSDF'] bsdf.inputs[0].default_value = color bsdf.inputs[4].default_value = 1 bsdf.inputs[6].default_value = 0.5 bsdf.inputs[7].default_value = 1 bsdf.inputs[9].default_value = 0 bpy.context.object.data.materials.append(ma) ma.diffuse_color = color return ma def make_materials(num): mats = [] for i in range(num): name = 'color'+str(i) rgb = colorsys.hsv_to_rgb(i/num, 1, 1) color = (rgb[0], rgb[1], rgb[2], 1) mats.append(make_material(name, color)) return mats def set_materials(mats): index = 0 for o in bpy.data.objects: for m in o.material_slots: m.material = mats[index] index += 1 break def set_camera(): camera = bpy.data.objects['Camera'] x = math.radians(65) y = 0 z = math.radians(22) rot = (x, 0, z) loc = (5, -12, 8) camera.location = loc camera.rotation_euler = rot if __name__ == '__main__': delete_all() make_cubes(NUM) mats = make_materials(NUM*2) set_materials(mats) set_camera()