簡體   English   中英

MEL表達式中的動態節點名稱

[英]Dynamic Node Names in MEL Expressions

您知道如何在表達式中更改nodeName,它也將同時更改其內部的名稱嗎? 好吧,我們如何針對諸如pointPosition之類的東西執行此操作,其中nodeName在字符串內部?

例如:

vector $v = `pointPosition -world "outputCloth1.vtx[11]"`;

如果將outputCloth1的名稱更改為myCloth,則該表達式將停止工作,因為字符串仍然顯示outputCloth1!

不幸的是,簡短的答案是,您不能(輕松)..節點內的表達式可能會被Maya保留,因為它位於Maya主動監視的框架的一部分內。 對於您的腳本,不能這么說,因為對於Maya來說,只要您告訴它,它只是一堆文本,它可以讀取和處理...兩個選項本身就可以顯示出來:

  1. (如果可能的話)您可以重寫表達式以動態引用對象 。例如,如果您知道outputCloth1始終是masterObjectGroup15的子代,則可以選擇第一個子代,而不用按名稱進行引用。

  2. 進入PyMEL 類似於#1,因為您將要引用該對象,並且如果更改名稱,則對該對象的引用仍然有效。 (可能)超出了答案的范圍,但我強烈建議您查看PyMEL入門文檔,因為它們首先給出了一個很好的示例

您還可以考慮通過Maya API構建DG節點-與腳本編寫相比,它的設置工作要多得多,但是您正在做的事情是構建適合標准Maya框架(基本上是自定義節點)的東西-意味着您可以利用Maya為您做的所有內部整理工作。 好極了!

我認為您可以通過message屬性來實現所需的功能。 消息用於在Maya中將節點鏈接在一起,(除其他事項外)消息可以構成腳本的基礎,這些腳本會在重命名節點時自動更新名稱。

抱歉,我沒有更具體的自動取款機示例,但是請仔細閱讀消息-應該可以使您朝正確的方向前進。

暫無
暫無

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

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