2016-03-23 8 views
1

Bu Materyalde düğümler oluşturmak ve bu düğümlerdeki değerleri canlandırmak için yeni bir Materyal ve Seç seçmenin bir yolunu arıyorum. Bu aslında var kodudur: aslındaBir malzeme nasıl oluşturabilirim, onu seçebilir, bu malzeme ile yeni düğümler oluşturabilir ve bunları animasyonlu kullanabilir miyim?

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

Ama "USDiscoMaterial" ile cari malzemeyi yeniden adlandırır bu kod Blender ile, ve yeni bir tane oluşturur ancak bunu seçemezsiniz. Ve bu malzemede bir düğüm oluşturmak istiyorsam? Mevcut düğüm türlerinin listesi on this page bulunabilir Eğer node_tree.nodes.new('type') kullanmak yeni bir düğüm eklemek için

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 belirli sorular için size [blender.stackexchange] adresinden daha fazla geri bildirim almak gerekir (http://blender.stackexchange.com) - ayrıca bazı sorulara orada mevcut olabilir. – sambler

cevap

0

Sen ile (döngüleri için) düğümleri kullanan yeni bir malzeme oluşturabilir. Çoğu düğüm, düzenlenebilir değerlerini düğümleri bağlamak için kullanılan giriş soketlerinde saklar. Bir düğümde giriş bağlantısı olmayan değerler varsa, her düğüm için api referansında özellik isimlerini bulabilirsiniz.

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) 

Fort malzeme

da düğümler arasındaki bağlantı eklemek gerekir çalışmak -

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

nesne kullanılabilir bir malzeme yuvası nesneye malzemeyi atayabilirsiniz olduğunu kontrol ettikten sonra.

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

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

Ve eğer bir gürültü değiştirici eklemek istersem? –

+0

[diğer bir tanesine] yorum yaptığımla aynı (http://stackoverflow.com/questions/36116085/blender-pythonhow-can-i-animate-the-factor-value-in-the-mix-node-with -python/36123834 # comment60021839_36123834) – sambler