#目次
0.マテリアルを追加する方法
1.ガラスのマテリアルをつくってみよう!!
2.メタリックをつくってみよう!!
3.テキストを追加しよう!!
4.英単語
※今回は解説が少ないので、サンプルコードだけでまとめてはいません。
#0.マテリアルを追加する方法
##0-1.マテリアルを追加していく手順
①新しいマテリアルをつくる
②ノードを使えるようにする
③オブジェクトを追加する
④ノードの値を設定する
⑤オブジェクトにマテリアルを適応する
##0-2.Principled BSDFの中身
◯ノードのそれぞれの項目は0から順番に数字が割り当てられています。
今回はPrincipled BSDFを使って説明していきます。
Base Color→0
Subsurface→1
:
Metallic→4
:
Roughness→7
:
Transmission→15
のようになっています。
◯これを利用してnodes["Principled BSDF"].inputs[0]
のようにして指定していきます。
#1.ガラスのマテリアルをつくってみよう!!
####◯シンプルなガラスのico_sphereを作るプログラム
import bpy
#新しいマテリアルをつくる
material_glass = bpy.data.materials.new('Green')
#ノードを使えるようにする
material_glass.use_nodes = True
#オブジェクトを追加する
bpy.ops.mesh.primitive_ico_sphere_add(subdivisions=1, enter_editmode=False, align='WORLD', location=(0, 0, 0), scale=(1, 1, 1))
#ノードの値を設定していく
#変数p_BSDFをつくって書く量を減らす
p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
#0→BaseColor/7→roughness(=粗さ)/15→transmission(=伝播)
#default_value = (R, G, B, A)
p_BSDF.inputs[0].default_value = (0, 1, 0, 1)
p_BSDF.inputs[7].default_value = 0
p_BSDF.inputs[15].default_value = 1
#オブジェクトにマテリアルの要素を追加する
bpy.context.object.data.materials.append(material_glass)
####◯ガラスの立方体を3次元的に並べるプログラム
import bpy
for i in range(0,5):
for j in range(0,5):
for k in range(0,5):
#新規マテリアルをつくる
material_glass = bpy.data.materials.new('Red')
#ノードを使えるようにする
material_glass.use_nodes = True
bpy.ops.mesh.primitive_cube_add(
size=0.8,
#それぞれ縦、横、高さを決める
location=(i, j, k),
)
p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
p_BSDF.inputs[0].default_value = (1, 0, 0, 1)
p_BSDF.inputs[7].default_value = 0
p_BSDF.inputs[15].default_value = 1
bpy.context.object.data.materials.append(material_glass)
#2.メタリックをつくってみよう!!
####◯メタリックのico_spehreを並べるプログラム
import bpy
#6回処理を繰り返す
for i in range(0,6):
#新規マテリアルをつくる
material_glass = bpy.data.materials.new('Blue')
#ノードを使えるようにする
material_glass.use_nodes = True
#ico_sphereを追加する関数
bpy.ops.mesh.primitive_ico_sphere_add(
#どんどん滑らかにしていく
subdivisions=i+1,
location=(i, 0, 0),
scale=(0.7, 0.7, 0.7)
)
p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
#0→BaseColor/4→Metallic(=金属)/7→roughness(=粗さ)
p_BSDF.inputs[0].default_value = (0, 0, 1, 0.5)
p_BSDF.inputs[4].default_value = 1
p_BSDF.inputs[7].default_value = 0
#オブジェクトにマテリアルの要素を追加する
bpy.context.object.data.materials.append(material_glass)
####◯少しずつ色を変えていくプログラム
処理を繰り返す度に変化するiを色に代入することで色を少しずつ変化させることができます。
import bpy
import math
import random
for i in range(0,10):
#0から1までのランダムな値を変数numに代入する
num = random.random()
material_glass = bpy.data.materials.new('Blue')
material_glass.use_nodes = True
bpy.ops.mesh.primitive_torus_add(
#180(度)×0~1のランダムな値
rotation=(math.pi * num, math.pi * num, 0),
major_segments=64,
minor_segments=3,
major_radius=10-i,
minor_radius=0.1,
)
p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
p_BSDF.inputs[4].default_value = 1
p_BSDF.inputs[7].default_value = 0
p_BSDF.inputs[0].default_value = (0, 0, 1 - i/10, 1)
bpy.context.object.data.materials.append(material_glass)
#3.テキストを追加しよう!!
##3-1.テキストの追加方法
◯シンプルなテキストの入力を行います。
import bpy
#テキストを追加して編集モードで編集できるようにする
bpy.ops.object.text_add(enter_editmode = True,location = (0,0,0))
#初期テキストを削除する
bpy.ops.font.delete(type = 'PREVIOUS_WORD')
#テキストを入力する
bpy.ops.font.text_insert(text = 'Blender')
#編集モードを終了する
bpy.ops.object.editmode_toggle()
##3-1.メタリックなテキストをつくる
◯テキストにメタリックのマテリアルを組み合わせます。
import bpy
material_glass = bpy.data.materials.new('Blue')
#ノードを使えるようにする
material_glass.use_nodes = True
#テキストを追加して編集モードで編集できるようにする
bpy.ops.object.text_add(enter_editmode = True,location = (0,0,0))
#初期テキストを削除する
bpy.ops.font.delete(type = 'PREVIOUS_WORD')
#テキストを入力する
bpy.ops.font.text_insert(text = 'Blender')
#編集モードを終了する
bpy.ops.object.editmode_toggle()
#ノードをいじる
p_BSDF = material_glass.node_tree.nodes["Principled BSDF"]
p_BSDF.inputs[4].default_value = 1
p_BSDF.inputs[7].default_value = 0
p_BSDF.inputs[0].default_value = (0, 0, 1, 1)
bpy.context.object.data.materials.append(material_glass)
#4.英単語
英単語 | 訳 |
---|---|
material | 素材 |
default | デフォルト/既定 |
value | 値 |
append | 加える |
object | もの、物体 |
edit | 編集 |
type | 種類 |
delete | 消去 |
toggle | 切り替え |
operation(ops) | 運用 |
add | 追加 |
segment | 区分、分割 |
insert | 挿入する |
input | 取得する、入手する |
previous | 以前の、前の |
principled | 原理、原則 |
subdivision | 細分化 |