見出し画像

【Blender Python】メッシュオブジェクトに色を付ける【透明編】

前回こちらの記事でメッシュオブジェクトに色を付ける方法を紹介しましたが、このやり方では透明にすることはできませんでした。

今回は透明にする方法を紹介したいと思います。
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)


# 立方体を配置し、後でアクセスしやすいように名前を付けておく
bpy.ops.mesh.primitive_cube_add(location=(0, 0, 0))
bpy.context.object.name = 'my_cube'


# 新規マテリアルを作成
mat1 = bpy.data.materials.new('mat1')

# Use Nodesをオンにする
mat1.use_nodes = True

# Node Treeにアクセス
node_tree = mat1.node_tree

# Material Outputノードにアクセス
output = node_tree.nodes['Material Output']

# Principled BSDFにアクセス
p_bsdf = node_tree.nodes['Principled BSDF']

# Blend ModeをAlpha Blendに設定
mat1.blend_method = 'BLEND'

# 色を赤に設定
p_bsdf.inputs['Base Color'].default_value = (1.0, 0.0, 0.0, 1.0)

# アルファチャンネルの値を0.1に設定
p_bsdf.inputs['Alpha'].default_value = 0.1


# 立方体に名前でアクセスし、マテリアルを付与する
my_cube = bpy.data.objects['my_cube']
my_cube.data.materials.append(mat1)

2. 実行結果(Layout)

画像3

残念ながら、Layout画面のsolid modeではマテリアルの状態が確認できません。

画像4

Material Preview modeか、

画像5

render previewに切り替えると立方体が赤く半透明になっているのが分かります。

3. 実行結果(Shading)

画像2

Shading画面を見ると、立方体が赤く半透明になっているのが分かります。
(この例だと透けてる感じが分かりにくいですが…)

マテリアルのノードを確認すると、設定内容が反映されているのが分かります。

4. 実行結果(Render)

画像3

レンダリングすると、立方体が赤く半透明になっているのが分かります。
(この例だと透けてる感じが分かりにくいですが…)

5. 解説

メッシュオブジェクトを透明にするにはノードを使う必要があります。

新規マテリアルを作成し、Use Nodeをオンにするとデフォルトで Material Output ノードと Principled BSDF ノードが付いているのでそれを弄っています。

もっと複雑なマテリアルを作成する場合は、新規ノードを追加したりノード間を接続したりする必要があります。
(こちらもいずれ記事にしたいですね。)

この記事が気に入ったらサポートをしてみませんか?