【Blender Python】メッシュオブジェクトに色を付ける
PythonでBlenderのメッシュオブジェクトに色を付ける方法を紹介します。
Blenderのバージョンは2.93 LTSです。
1. コード
import bpy
# 既存のメッシュオブジェクトを削除
for msh in bpy.data.meshes:
bpy.data.meshes.remove(msh)
# 既存のマテリアルを削除
for mat in bpy.data.materials:
bpy.data.materials.remove(mat)
# 新規マテリアルを作成
mat_r = bpy.data.materials.new('red')
mat_r.diffuse_color = (1.0, 0.0, 0.0, 1.0)
mat_g = bpy.data.materials.new('green')
mat_g.diffuse_color = (0.0, 1.0, 0.0, 1.0)
mat_b = bpy.data.materials.new('blue')
mat_b.diffuse_color = (0.0, 0.0, 1.0, 1.0)
# メッシュオブジェクトを配置し、後でアクセスしやすいように名前を付けておく
# 立方体
bpy.ops.mesh.primitive_cube_add(location=(0, -5, 0))
bpy.context.object.name = 'my_cube'
# 球体
bpy.ops.mesh.primitive_ico_sphere_add(location=(0, 0, 0))
bpy.context.object.name = 'my_sphere'
# 円柱
bpy.ops.mesh.primitive_cylinder_add(location=(0, 5, 0))
bpy.context.object.name = 'my_cylinder'
# メッシュオブジェクトに名前でアクセスし、マテリアルを付与する
my_cube = bpy.data.objects['my_cube']
my_cube.data.materials.append(mat_r)
my_sphere = bpy.data.objects['my_sphere']
my_sphere.data.materials.append(mat_g)
my_cylinder = bpy.data.objects['my_cylinder']
my_cylinder.data.materials.append(mat_b)
2. 実行結果
ちゃんとメッシュオブジェクトごとに色が付きました。
3. 透明にしたい場合(うまく行かないやり方)
メッシュオブジェクトを透明にしたい場合は、新規マテリアルを作成するときにアルファチャンネルを1より小さい数値にすればできそうですよね。
実際にやってみましょう。
# 新規マテリアルを作成
mat_r = bpy.data.materials.new('red')
mat_r.diffuse_color = (1.0, 0.0, 0.0, 0.1)
mat_g = bpy.data.materials.new('green')
mat_g.diffuse_color = (0.0, 1.0, 0.0, 0.1)
mat_b = bpy.data.materials.new('blue')
mat_b.diffuse_color = (0.0, 0.0, 1.0, 0.1)
アルファチャンネルの値を1から0.1に変更しました。
このコードを実行してみましょう。
Layoutではちゃんと透明になりました。
しかし、レンダリングしてみると…
透明ではなくなってしまいました。
このやり方ではうまく行かないようです。
4. レンダリング結果でも透明にするには?
これは次の記事で紹介したいと思います。
この記事が気に入ったらサポートをしてみませんか?