2016-03-20 2 views

ответ

2

Первый шаг - найти нужный узел микса. Внутри материала вы можете получить доступ к каждому узлу по имени, в то время как первый узел mixRGB называется «Mix», следующие узлы микширования будут иметь числовое расширение, добавленное к имени. Имя также может быть изменено вручную пользователем (или скриптом python). Показывая область свойств (нажмите N), вы можете увидеть имя активного узла в свойствах узла.

node properties

Для регулировки значения FAC вы изменили default_value входа КВС. Для ключевого кадра фактор смешивания вы говорите вход FAC, чтобы вставить ключевой кадр с data_path из default_value

import bpy 
cur_frame = bpy.context.scene.frame_current 
mat_nodes = bpy.data.materials['Material'].node_tree.nodes 
mix_factor = mat_nodes['Mix.002'].inputs['Fac'] 

mix_factor.default_value = 0.5 
mix_factor.keyframe_insert('default_value', frame=cur_frame) 

Конечно, вы можете указать любое количество кадров для ключевого кадра не только текущий кадр.

Если у вас есть много узлов смешивания, вы можете цикл по узлам и добавлять каждый шейдер смеси в список

mix_nodes = [n for n in mat_nodes if n.type == 'MIX_RGB'] 

Вы можете затем цикл над ними и ключевым кадром по желанию.

for m in mix_nodes: 
    m.inputs['Fac'].default_value = 0.5 
    m.inputs['Fac'].keyframe_insert('default_value', frame=cur_frame) 

Нахождение fcurves после их добавления неудобно для узлов. В то время как вы говорите входное гнездо, чтобы вставить ключевой кадр, то fcurve хранится в node_tree поэтому после keyframe_insert() вы будете использовать

bpy.data.materials['Material'].node_tree.animation_data.action.fcurves.find() 

Зная путь данных, который требуется для поиска может быть сложным, так как канал передачи данных для Фак вход узла Mix.002 будет nodes["Mix.002"].inputs[0].default_value

Если вы хотите найти fcurve после добавления его корректировать значение или добавлять модификаторы вы, скорее всего, будет легче держать их список, как добавить ключевые кадры. После keyframe_insert() новый fcurve должен быть в

material.node_tree.animation_data.action.fcurves[-1] 
+0

И если я хочу вставить модификатор шума в f-кривые? –

+0

Fcurves для материалов можно найти по адресу 'fc = material.node_tree.animation_data.action.fcurves.find (...)', а затем использовать 'fc.modifiers.new()' – sambler

+0

Хорошо, спасибо, не заметил что вы мне ответили, извините –

 Смежные вопросы

  • Нет связанных вопросов^_^