電子竹林:Blog2

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

PythonでのBlenderの色つけ(HSV編)

概略

  • Blender Pythonで色をつけるとき、HSVならmathutils.Colorが超カンタン

詳細

  • PythonでのBlenderの色つけではRGBで色を指定したが、HSVでやるためにRGB->HSV変換の関数を書いた。
  • が、調べているとモジュールmathutilsのColorで簡単にHSVが扱える。次のように自由度の高い書き方が出来て便利。
import mathutils
col = mathutils.Color()
col.hsv = 0.0, 1.0, 1.0 # red 
col.rgb = 0.5, 0.5, 0.5 # gray
col.s = 0.0 # Saturation 0
  • mathutilsは知らなかったが、他にオイラー、ベクトル、行列、クォータニオンが簡単に使えて3Dには便利。
  • 次のように書くとHSV色空間の円柱を作る事が出来る。
import math
import random
import mathutils
import bpy
col = mathutils.Color((0.0,  0.0, 0.0)) # dummy
matNr = 0
for z in range(0,21,5):
  for r  in range(5, 21, 5):
    for d in range(0,360, 20):
      x = r*math.cos(math.radians(d))
      y = r*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)
      col.hsv = d/360.0, r/20.0, z/20.0
      m.diffuse_color = (col.r, col.g, col.b,1)
      bpy.context.object.data.materials.append(m)

f:id:zom-1:20200213155804p:plain:w300

docs.blender.org