電子竹林:Blog2

Tech関係、はてなダイアリーから移転済み...

PythonでのBlenderの色つけ

概要

  • PythonでのBlenderの色は、色ごとにMaterialを作ってオプジェクトにつける

詳細

  • PythonBlenderのオブジェクトに色を付ける方法が最初分からなかった。面倒くさいが、結局は違う色は違うMaterialクラスのインスタンスという事みたい。色別のMaterialのインスタンスを作ってオブジェクトに付けるしかない。Materialを作るには bpy.data.materials.new("Material_name")、色を定義するにはMaterialのクラスメソッドdiffuse_color=(R,G,B, inf)、オブジェクトに付けるには bpy.context.object.data.materials.appendでいいみたい。
  • Materialクラスの色関係クラスメソッドは他にもあるが、イマイチ違いがわからないのでとりあえずdiffuse_colorを使っている。
  • 次のコードで、円柱状に立方体を配置しランダムに色をつけられる
import bpy
import math
import random
matNr = 0
for z in range(0,20,5):
  for d in range(0,360, 20):
    x = 10*math.cos(math.radians(d))
    y = 10*math.sin(math.radians(d))
    lo = (x,y,z)
    ro = (0,0,math.radians(d))
    bpy.ops.mesh.primitive_cube_add(location=lo, rotation=ro)
    matName = "Material.{:03}".format(matNr)
    matNr += 1
    m = bpy.data.materials.new(matName)
    m.diffuse_color = (random.random(),random.random(),random.random(),1)
    bpy.context.object.data.materials.append(m)

f:id:zom-1:20200210151646p:plain:w400

docs.blender.org