スポンサーリンク

Blender Cyclesでマテリアルにwireframeを設定するPythonスクリプトを作成

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)

コメントを残す

メールアドレスが公開されることはありません。

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


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