我寫了一個瑪雅插件(類)。
在 Maya 中執行插件/命令會產生一些資料。在 Maya 中再次執行插件/命令將依賴于上次執行后生成的資料,但上次執行時生成的資料將隨著插件類的銷毀而被破壞。如何保存/保留命令后生成的資料在記憶體中執行?
也許在場景中創建自定義節點?有沒有更好更方便的方法
uj5u.com熱心網友回復:
Maya 中唯一可存盤的資料庫是節點圖和節點上的屬性。如果您撰寫了在 DG 中生成資料的命令,您可能應該將其撰寫為節點(其中輸入屬性是您的函式引數,輸出屬性是函式輸出)
通常,您撰寫一個與 MPxNode 配對的 MPxCommand。該命令只是創建節點的一個實體。提供 -query 標志時,您將從節點屬性回傳資料。當存在 -edit 標志時,您正在修改節點上的屬性。
除了使用節點圖(可能是 optionVars 來存盤用戶首選項,但這不會與場景資料相關聯) ,Maya 中實際上沒有其他方法可以讓 MPxCommand 存盤資料。
忽略您現在可能想要撰寫一個節點的事實......
任何一個....
- 創建一個已經存在的節點型別的實體(例如轉換或設定),并添加自定義屬性來存盤您需要的資料。與場景中其他節點的關系可以使用連接來存盤(如果您需要參考許多物件,集合可能會很好地作業)。資料現在將被序列化為 Maya 二進制/ascii 檔案,因此一旦重新加載場景,您的工具仍然可以作業。
- 創建一個自定義 MPxNode,并執行相同的操作,但使用一組硬編碼的屬性。這只是意味著用戶不能洗掉屬性,并且您可以對它們進行更多控制(例如將它們設為只讀,并可能從您的命令中提升任何計算,并將其移動到節點的計算方法中)。
- 如果您需要存盤的資料不適合現有的屬性型別,您可能需要添加一個 MPxData 物件(可以存盤在自定義節點內的屬性上)。這對于大型二進制資料塊很有用。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/522173.html
標籤:C api
上一篇:按日期列對2D向量進行排序
下一篇:是否可以逐列遍歷向量的向量?
