スポンサーリンク

Blender Pythonからマテリアルのノードへアクセス(1)

マテリアルからノードツリーを取得

nodetree = bpy.context.active_object.material_slots["Material-red"].material.node_tree

print(nodetree)

あるいは、以下でも可

nodetree = bpy.context.active_object.material_slots[0].material.node_tree

出力結果:

<bpy_struct, ShaderNodeTree("Shader Nodetree")>

ノードへアクセス

全てのノードを表示

nodetree = bpy.context.active_object.material_slots["Material-red"].material.node_tree

nodes = nodetree.nodes

for n in nodes:
    print(n)

出力結果:

<bpy_struct, ShaderNodeOutputMaterial("Material Output")>
<bpy_struct, ShaderNodeBsdfPrincipled("Principled BSDF")>

ノードの入力を列挙

nodetree = bpy.context.active_object.material_slots["Material-red"].material.node_tree

nodes = nodetree.nodes

for i in nodes["Material Output"].inputs :
    print(i)

または:

print(nodes["Material Output"].inputs[0])

または:

print(nodes["Material Output"].inputs["Surface"])

出力結果:

<bpy_struct, NodeSocketShader("Surface")>
<bpy_struct, NodeSocketShader("Volume")>
<bpy_struct, NodeSocketVector("Displacement")>

ノードの入力元を取得

nodetree = bpy.context.active_object.material_slots["Material-red"].material.node_tree

nodes = nodetree.nodes

print(nodes["Material Output"].inputs[0].links[0].from_node )

出力結果:

<bpy_struct, ShaderNodeBsdfPrincipled("Principled BSDF")>

ノードの出力先を列挙

nodetree = bpy.context.active_object.material_slots["Material-red"].material.node_tree

nodes = nodetree.nodes

for n in nodes["RGB"].outputs[0].links :
    print(n.to_node)

または:

print(nodes["RGB"].outputs[0].links[0].to_node )
print(nodes["RGB"].outputs[0].links[1].to_node )

出力結果:

<bpy_struct, ShaderNodeHueSaturation("Hue Saturation Value")>
<bpy_struct, ShaderNodeInvert("Invert")>

ノードの値を取得

nodetree = bpy.context.active_object.material_slots["Material-red"].material.node_tree

nodes = nodetree.nodes

print(nodes["RGB"].outputs[0].default_value[0])
print(nodes["RGB"].outputs[0].default_value[1])
print(nodes["RGB"].outputs[0].default_value[2])

出力結果

0.8000000715255737
0.0012105016503483057
0.0
import bpy

nodetree = bpy.context.active_object.material_slots["Material-red"].material.node_tree

nodes = nodetree.nodes

print("Base Color ", nodes["Principled BSDF"].inputs["Base Color"].default_value[0])
print("Base Color ", nodes["Principled BSDF"].inputs["Base Color"].default_value[1])
print("Base Color ", nodes["Principled BSDF"].inputs["Base Color"].default_value[2])
print("Subsurface ", nodes["Principled BSDF"].inputs["Subsurface"].default_value)

出力結果

Base Color 0.8000000715255737
Base Color 0.0012105016503483057
Base Color 0.0
Subsurface 0.6272727251052856

2 件のコメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)


この記事のトラックバックURL: