![](/img/trans.png)
[英]How can I mix similar code using loops (for/while) in 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_value
的data_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.