スポンサーリンク
import bpy # マテリアルにワイヤフレームを追加する def set_wireframe(mat): nodetree = mat.node_tree nodes = nodetree.nodes MaterialOutput = nodes['Material Output'] # MaterialOutputにつながっているノードを取得。 # backup -- (wireframe) -- MaterialOutput と挟み込む backup = MaterialOutput.inputs[0].links[0].from_node # ワイヤフレームに必要なノードを追加 wireframe = nodes.new('ShaderNodeWireframe') diffuse = nodes.new('ShaderNodeBsdfDiffuse') mixnode = nodes.new('ShaderNodeMixShader') # ワイヤフレームの色を黒に設定 diffuse.inputs["Color"].default_value[0] =0 diffuse.inputs["Color"].default_value[1] =0 diffuse.inputs["Color"].default_value[2] =0 # mix , diffuse , wireframe の三つをつなげる nodetree.links.new(wireframe.outputs[0],mixnode.inputs[0]) nodetree.links.new(diffuse.outputs[0],mixnode.inputs[2]) # mixにこれまで指定されていたノードをつなぐ nodetree.links.new(backup.outputs[0],mixnode.inputs[1]) # mixをMaterialOutputへ繋げる nodetree.links.new(mixnode.outputs[0],MaterialOutput.inputs[0]) # 位置調整 # MaterialOutputを少し右へずらし、その位置にmixを入れ、同じ位置にdiffuseとwireframeを入れる MaterialOutput.location.x = MaterialOutput.location.x + 200 mixnode.location.x = MaterialOutput.location.x - 200 wireframe.location.x = mixnode.location.x diffuse.location.x = mixnode.location.x # mix,wireframe,diffuseの高さを変えてそれぞれ配置する mixnode.location.y = MaterialOutput.location.y wireframe.location.y = mixnode.location.y + 200 diffuse.location.y = mixnode.location.y - 200 # ワイヤフレームの線の太さを設定 wireframe.inputs["Size"].default_value = 0.05 set_wireframe( bpy.context.active_object.material_slots["Material"].material)