2016-03-23 17 views
1

私は、新しいマテリアルを作成してそれを選択し、このマテリアルにノードを作成し、それらのノードの値をアニメートする方法を探しています。 これは私が実際に持っているコードです:マテリアルを作成して選択し、このマテリアルで新しいノードを作成し、アニメーション化する方法は?

mat = bpy.ops.material.new() 
mat_nodes = bpy.data.materials['USDiscoMaterial'].node_tree.nodes 

しかし、実際には、このコードをブレンダーでそれを選択し、「USDiscoMaterial」と現在のマテリアルの名前を変更し、新しいものを作成しますが、しません。 この資料でノードを作成したいのですか?使用可能なノードタイプのリストがon this pageを見つけることができますが、node_tree.nodes.new('type')使用新しいノードを追加するには

mat = bpy.data.materials.new(name='USDiscoMaterial') 
mat.use_nodes = True 
mat_nodes = mat.node_tree.nodes 
mat_links = mat.node_tree.links 
# a new material node tree already has a diffuse and material output node 
output = mat_nodes['Material Output'] 
diffuse = mat_nodes['Diffuse BSDF'] 

-

+0

[blender.stackexchange](http://blender.stackexchange.com)にフィードバックがありますので、そこにあなたの質問があるかもしれません。 – sambler

答えて

0

は、あなたが(サイクル用)ノードを使用して新しいマテリアルを作成することができます。ほとんどのノードは、ノードを接続するために使用される入力ソケット内に編集可能な値を格納します。ノードに入力接続のない値がある場合は、各ノードのAPIリファレンスでプロパティ名を見つけることができます。

noise = mat_nodes.new('ShaderNodeTexNoise') 
noise.inputs['Detail'].default_value = 5.0 
cur_frame = bpy.context.scene.frame_current 
noise.inputs['Detail'].keyframe_insert('default_value', frame=cur_frame) 

フォートあなたはまた、ノード間のリンクを追加する必要が動作するように材料 -

mat_links.new(noise.outputs['Color'], diffuse.inputs['Color']) 

オブジェクトにマテリアルを割り当てることができるオブジェクトで利用可能な材料のスロットがあることを確認した後。

obj = bpy.context.active_object 
if len(obj.material_slots) == 0: 
    bpy.ops.object.material_slot_add() 

obj.material_slots[0].material = mat 
+0

ノイズ修正を追加したいのですか? –

+0

私はあなたの[他の人]にコメントしたのと同じです(http://stackoverflow.com/questions/36116085/blender-pythonhow-can-i-animate-the-factor-value-in-the-mix-node-with -python/36123834#comment60021839_36123834) – sambler

関連する問題