簡體   English   中英

(混合器)(Python)如何使用Python代碼為混合節點中的因子值設置動畫?

[英](Blender) (Python)How can I animate the factor value in the mix node with Python code?

我想要的是一種在混合RGB節點中像普通對象(例如多維數據集)那樣使用fcurves,fmodifiers等處理“ factor”值的方法。 所有這些都是通過文本編輯器中的Python代碼完成的

第一步是找到所需的混合節點。 在材質中,您可以按名稱訪問每個節點,而第一個mixRGB節點名為“ Mix”,隨后的混合節點將在名稱上添加數字擴展名。 用戶也可以手動更改名稱(或python腳本)。 通過顯示屬性區域(按N ),您可以在節點屬性中看到活動節點的名稱。

節點屬性

要調整fac值,請更改fac輸入的default_value 要設置混合因子的關鍵幀,您要告訴data_path輸入插入一個帶有default_valuedata_path的關鍵幀

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的Fac輸入的數據路徑將是nodes["Mix.002"].inputs[0].default_value

如果要在添加ff曲線以調整值或添加修飾符后找到它,您很可能會發現在添加關鍵幀時更容易保留它們的列表。 keyframe_insert() ,新的fcurve應該位於

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM