隅歩つ

書いて理解を深める

Blender PythonAPIでcubeを敷き詰めてボコボコさせる

Blenderで作成した画像

Blender の PythonAPI を勉強中です。

今回は、特に新しく覚えたことは使っていません。

Youtubeでちらっと見た(誰か忘れましたが)のを良いなと思ったので作ってみました。

Cubeを敷き詰めてボコボコさせる

作りたいと思ったのは「Cubeを敷き詰めて高さをランダムにしてボコボコさせる」ものです。

見ていて気持ちいい、なと思いました。

高さをランダムにするのはrandom.uniform()を使ってます。

ram = random.uniform(0, 2)

コード全体はこちら↓

import bpy
import random

num = 10
spacing = 2.1


def make_cube(x, y, z):
    loc = (x*spacing, y*spacing, z)
    sca = (1, 1, 1)
    bpy.ops.mesh.primitive_cube_add(location=loc, scale=sca)
    bpy.ops.object.material_slot_add()
    r = random.random()
    g = random.random()
    b = random.random()
    ma = make_material(r, g, b)
    for m in bpy.context.active_object.material_slots:
        m.material = ma


def make_cubes():
    for x in range(num):
        for y in range(num):
            ram = random.uniform(0, 2)
            make_cube(x, y, ram)


def make_material(r, g, b):
    ma = bpy.data.materials.new('test')
    bpy.context.object.data.materials.append(ma)
    ma.diffuse_color = (r, g, b, 1)
    return ma


def delete_all():
    for item in bpy.data.meshes:
        bpy.data.meshes.remove(item)
    for item in bpy.data.materials:
        bpy.data.materials.remove(item)


if __name__ == '__main__':
    delete_all()
    make_cubes()

Blenderで作成した画像

yuuuha.hatenablog.com

yuuuha.hatenablog.com

BlenderユーザーのためのPython入門

BlenderユーザーのためのPython入門

  • 作者:大西武
  • シーアンドアール研究所
Amazon