Я хочу, чтобы обработать значение «factor» в узле mixRGB, как обычный объект, например, куб, так что с fcurves, fmodifiers и т. Д. Все это через код Python, сделанный в текстовом редакторе(Blender) (Python) Как я могу оживить значение фактора в узле mix с кодом Python?
ответ
Первый шаг - найти нужный узел микса. Внутри материала вы можете получить доступ к каждому узлу по имени, в то время как первый узел mixRGB называется «Mix», следующие узлы микширования будут иметь числовое расширение, добавленное к имени. Имя также может быть изменено вручную пользователем (или скриптом python). Показывая область свойств (нажмите N), вы можете увидеть имя активного узла в свойствах узла.
Для регулировки значения 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]
И если я хочу вставить модификатор шума в f-кривые? –
Fcurves для материалов можно найти по адресу 'fc = material.node_tree.animation_data.action.fcurves.find (...)', а затем использовать 'fc.modifiers.new()' – sambler
Хорошо, спасибо, не заметил что вы мне ответили, извините –