HExp12-12|Houdini Expression functions全集之其他類:

1、轉(zhuǎn)換類

string?pluralize?(string?s)
將英語名詞轉(zhuǎn)換為它的復(fù)數(shù)形式。
string?ftrim?(float number)
將數(shù)字轉(zhuǎn)換為字符串。類型轉(zhuǎn)換通常是自動完成的。但是,您可能希望使用此選項來強制轉(zhuǎn)換。該函數(shù)還將把數(shù)字四舍五入到6位小數(shù)精度,避免了由于浮點不能準(zhǔn)確表示常見小數(shù)而導(dǎo)致的細(xì)微偏差。
string?ftoa?(float?number)
將數(shù)字轉(zhuǎn)換為字符串。
float?atof (string?source)
將字符串轉(zhuǎn)換為浮點值。
string?abspath (string?relpath)
返回完整路徑。
string?relpath (string?abspath)
返回相對路徑。
float?eval?(string?expression)
將字符串視作為表達(dá)式進(jìn)行計算,并返回數(shù)值。
string?evals?(string?expression)
將字符串視作為表達(dá)式進(jìn)行計算,并返回字符串值。用于計算包含更復(fù)雜表達(dá)式的變量。
2、文本類

string?tolower?(string?s)
返回字符串的全小寫版本。
string?toupper?(string?s)
返回字符串的全大寫版本。
float?index (string?source, string?pattern)
返回<source>中出現(xiàn)<pattern>之前的字符數(shù)。如果找不到模式,則返回-1。示例如下:
> index ("Testing index", "sting") 返回 2
> index ("Testing index", "i") 返回 4
float?rindex (string?source, string?pattern)
返回<source>中最后出現(xiàn)的<pattern>之前的字符數(shù)。示例如下:
> index ("Testing rindex", "i") 返回 8
string?padzero?(float?size, float?value)
返回一個字符串,該字符串將一個數(shù)字用零填充到給定的長度。示例如下:
> padzero (5, 126) = 00126
string?fpadzero?(float?integerpad, float?fracpad, float?value)
返回一個字符串,該字符串將一個數(shù)字用零填充到給定的長度。<integerpad>為整數(shù)部分的位數(shù),<fracpad>為小數(shù)部分的位數(shù)。示例如下:
> padzero (5, 3, 126) = 00126.000
float?stamp?(string?scope, string?token, float?value)
返回一個副本的浮點值。檢索副本變量,通常來自下游的“復(fù)制”節(jié)點。此函數(shù)用于檢索浮點數(shù)值。對于字符串值,請使用"stamps"。該函數(shù)替代了"param"。
* <scope>:?從中獲取值的節(jié)點的路徑。
* <token>:?要檢索的變量的名稱。
* <value>:?如果<token>不存在,則使用的默認(rèn)值。
string?stamps (string?stamp_op_path, string?token, string?value)
返回一個副本的字符串值。
float?iprquery?(string?query, string?pane, float?x, float?y)
從交互式渲染窗格中查詢數(shù)字(浮點)數(shù)據(jù)。<pane>參數(shù)指定要檢索其信息的窗格的名稱。某些查詢類型使用<x>和<y>參數(shù)來指定其他查詢參數(shù)。對于不需要額外參數(shù)的查詢,將忽略這些參數(shù)。<query>字符串參數(shù)指定要檢索的信息類型,參見下文:
>> cropx0, cropx1, cropy0, cropy1:返回當(dāng)前選定裁剪區(qū)域的左、右、上或下值。
>> exist.<plane_name>:如果給定平面存在于渲染圖像中,則返回該平面的索引;如果不存在,則返回-1。
>> ipr:如果“IPR”按鈕處于啟用狀態(tài),則返回1;如果禁用,則返回0。
>> lock:如果鎖定按鈕處于啟用狀態(tài)(防止自動重新渲染),則返回1;如果關(guān)閉,則返回0。
>> nplanes:返回當(dāng)前圖像中深層光柵平面的數(shù)目。
>> object.ptinstance:在<x>、<y>處貢獻(xiàn)像素的實例對象的點號(請參見下面的對象查詢)。<x>和<y>變量是渲染圖像中的坐標(biāo)。
>> object.primitive:在<x>、<y>處貢獻(xiàn)像素的幾何體對象的圖元數(shù)(請參見下面的對象查詢)。<x>和<y>變量是渲染圖像中的坐標(biāo)。
【對象查詢】:
以對象開頭的查詢。提供有關(guān)生成IPR圖像的胡迪尼對象的信息。這些查詢使用咒語在渲染時自動創(chuàng)建的兩個深度光柵平面。這些浮點平面被命名為Op-Id和Prim-Id。胡迪尼維護(hù)一個表,該表將數(shù)據(jù)Op-Id平面映射到渲染中有關(guān)實例和幾何體的信息。否則,Op-Id平面中的數(shù)字是沒有意義的。
>> pindex.<name>:返回名為<name>的深度光柵平面的索引。如果沒有使用該名稱的平面,則返回-1。
>> plane.vsize:返回此函數(shù)的<x>參數(shù)指定的索引處平面的矢量大小。例如,要獲得第三個深光柵平面的矢量大?。?/p>
> iprquery("plane.vsize", $PANE, 2, 0) (此處設(shè)置為0的<y>參數(shù)將被忽略)
>> plane.<name>[.r|g|b|a]:返回名為<name>的平面的<x>、<y>處的像素分量的值。例如:
> iprquery("plane.C.g", $PANE, $IX, $IY)(如果未指定元素名稱(.r、.g、.b或.a),則返回第一個組件的值,也可以使用.x、.y、.z和.w作為.r、.g、.b和.a的替代名稱。例如,plane.N.y等效于plane.N.g)
>> xres, yres :交互式渲染查看器中圖像的水平或垂直分辨率。
string?iprquerys?(string?query, string?pane, float?x, float?y)
從交互式渲染窗格中查詢文本(字符串)數(shù)據(jù)。<query>字符串參數(shù)指定要檢索的信息類型,參見下文:
>> object.instance:在<x>、<y>處貢獻(xiàn)像素的實例化對象的完整路徑。如果對象沒有實例化,這將與object.geometry相同。請參閱下面的對象查詢。<x>和<y>參數(shù)是渲染圖像中的坐標(biāo)。
>> object.geometry:在<x>、<y>處貢獻(xiàn)像素的幾何體對象的完整路徑。請參見下面的對象查詢。<x>和<y>參數(shù)是渲染圖像中的坐標(biāo)。
>> object.surface:在<x>、<y>處貢獻(xiàn)像素的曲面著色器的完整路徑。請參見下面的對象查詢。<x>和<y>參數(shù)是渲染圖像中的坐標(biāo)。
>> object.displace:影響<x>、<y>處像素的置換著色器的完整路徑。請參見下面的對象查詢。<x>和<y>參數(shù)是渲染圖像中的坐標(biāo)。
>> plane.name:返回此函數(shù)的<x>參數(shù)指定的索引處的平面名稱。例如,要獲取第三個深層光柵平面的名稱:
> iprquerys("plane.name", $PANE, 2, 0)(此處設(shè)置為0的<y>參數(shù)將被忽略)
>> rop:返回交互式渲染窗格中顯示的輸出驅(qū)動程序節(jié)點的完整路徑。
float?contextoption (string?name)
以浮點值的形式返回上下文選項的值。說明:檢索上下文選項的當(dāng)前值。這可能是由一個節(jié)點向另一個節(jié)點請求數(shù)據(jù)或從HIP文件中存儲的全局默認(rèn)上下文選項值設(shè)置的。您還可以使用@name獲取表達(dá)式中上下文選項的值。
string?contextoptions (string?name)
以字符串值的形式返回烘焙上下文選項。
float?hascontextoption?(string?token)
如果存在指定的上下文選項,則返回非零值。
float?parmisstring?(string?parameter_name)
如果指定的參數(shù)是字符串,則返回1。
3、編程類

float?print?(string?label, float?expression)
將消息打印到控制臺。這對于診斷節(jié)點或通道中的參數(shù)非常有用。返回<expression>的值。示例如下:
> print ("wheel:", sin($T))
float?pythonexprf?(string?expression)
計算Python表達(dá)式,如果表達(dá)式的計算結(jié)果不是字符串,或者引發(fā)異常,則此函數(shù)返回0。示例如下:
> pythonexprf("hou.frame()") 返回當(dāng)前幀的值?
string?pythonexprs?(string?expression)
計算Python表達(dá)式,返回字符串結(jié)果。
string?arg?(string?line, float?argNum)
從HScript樣式的參數(shù)列表中返回一個文字。說明:"arg"是argument的縮寫,譯為內(nèi)容提要。arg對于從字符串中提取標(biāo)記很有用。
float?argc?(string?line)
返回HScript樣式的字段列表中的文字?jǐn)?shù)。
string?system?(string?command_string)
運行系統(tǒng)命令行并返回輸出。這將把所有換行和回車轉(zhuǎn)換為空格。
float?systemES?(string?command_string)
運行系統(tǒng)命令行并返回退出狀態(tài)。
string?systemRAW?(string?command_string)
運行系統(tǒng)命令行并返回輸出,不進(jìn)行任何處理。
string?run?(string?command)
將字符串作為HScript命令運行,并返回命令的輸出。
string?runb?(string?command)
將字符串作為HScript命令運行,并返回命令和錯誤輸出。
string?rune?(string?command)
將字符串作為HScript命令運行,并返回任何錯誤輸出。
string?execute?(string?command)
將字符串作為HScript命令運行,并返回命令的輸出。
string?executeb?(string?command)
將字符串作為HScript命令運行,并返回命令和錯誤輸出。
string?executee?(string?command)
將字符串作為HScript命令運行,并返回任何錯誤輸出。
string?encode?(string?s)
將任何字符串編碼為有效的變量名。說明:Houdini VEX變量名只能包含字母、數(shù)字和下劃線,并且不能以數(shù)字開頭。此方法獲取任何字符串,并將其編碼為遵守這些限制的字符串。可以使用解碼方法恢復(fù)原始字符串。已遵守規(guī)則的字符串將不加修改地返回。這個規(guī)則的一個例外是,以xn__開頭的字符串將被編碼,即使它已經(jīng)是一個有效的變量名。這是因為xn__是用于標(biāo)識編碼字符串的前綴。在這種情況下,將添加一個額外的xn__前綴。這意味著一個字符串可以被編碼任意次數(shù),然后被解碼相同次數(shù),以始終返回到原始字符串,而不管其內(nèi)容如何。
string?encodeattrib?(string?s)
將任何字符串編碼為有效的幾何體屬性名稱。
string?encodeparm?(string?s)
將任何字符串編碼為有效的節(jié)點參數(shù)名稱。
string?decode (string?s)
對先前編碼的變量名進(jìn)行解碼。
string?decodeattrib (string?s)
解碼先前編碼的幾何體屬性名稱。
string?decodeparm (string?s)
解碼先前編碼的節(jié)點參數(shù)名稱。
4、渲染特性類

float?property (string?"path", float?default)
類似于ch(),但用于渲染屬性,如果屬性不存在,則使用默認(rèn)值。
float?propertyf?(string?"path", float?frame, float?default)
在給定幀處計算渲染屬性。
float?propertyt (string?"path", float?time, float?default)
在給定時間計算渲染屬性。
float?propertys (string?"path", float?"default")
計算當(dāng)前時間渲染屬性的字符串值。
float?propertysop (string?"path", float?"default")
將當(dāng)前時間的渲染屬性計算為節(jié)點路徑字符串。
float?propertysraw (string?"path", float?"default")
計算當(dāng)前時間渲染屬性的原始(未展開)字符串值。
5、字符串類

float?strlen (string )
返回字符串中的字符數(shù)。
string?strcat?(string?s1, string?s2)
將兩個字符串的串起來。?
float?strcmp?(string?s1, string?s2)
比較兩個字符串。根據(jù)ASCII,如果<s1>位于<s2>之前,則返回-1?;如果<s1>位于<s2>之后,則返回1;?如果<s1>等于<s2>,則返回0。此函數(shù)區(qū)分大小寫。對于不區(qū)分大小寫的比較,請使用"strcasecmp"。
float?strcasecmp (string?s1, string?s2)
比較兩個字符串,忽略大小寫。
float?strmatch (string?pattern, string?s)
如果字符串<s>與范本<pattern>匹配,則返回1(區(qū)分大小寫)。為了匹配,范本必須從頭到尾與字符串匹配,也可使用通配符(*)匹配子字符串,例如:
> strmatch ("bar", "foobarbaz") = 0
> strmatch ("*bar*", "foobarbaz") = 1
? ? ?<pattern>是一個以空格分隔的一個或多個范本的列表,則函數(shù)將并不會像看上去那樣匹配。例如:
> strmatch ("foo bar", "foo bar")
? ? ? ? ? ?此函數(shù)將返回0,因為第一個參數(shù)由兩個范本組成,即foo和bar,而這兩個范本都不匹配foo-bar(因為范本必須從頭到尾匹配),看似匹配,實則不匹配。相反的,
> strmatch("foo bar", "foo")? ??
? ? ? ? ?此函數(shù)將返回1,因為該字符串匹配模式中兩個參數(shù)(foo和bar)中的第一個,看似不匹配,實則匹配。
float?strcasematch (string?pattern, string?s)
如果字符串與模式匹配,則返回1(不區(qū)分大小寫)。
string?stripmatrix (string?mat)
從字符串表示的矩陣或向量中刪除非必需字符。當(dāng)您想要解釋矩陣的值(即傳遞給VEX函數(shù))時,這很有用。返回一個字符串,該字符串包含構(gòu)成矩陣的浮點數(shù)(并且僅包含數(shù)字)。
string?strdup (float?count, string?s2)
重復(fù)字符串。
string?strreplace (string?s, string?old, string?new)
用新字符串替換舊字符串。
string?substr (string?s, float?start, float?length)
返回字符串的子字符串。子字符串為原字符串<s>中位于<start>位置和<start>+<length>位置之間的字符。
6、曲面幾何體類

string?edgegrouplist?(string?surface_node)
返回曲面節(jié)點中邊組的列表。
string?edgegroupmask?(string?surface_node, string?pattern)
返回與曲面節(jié)點中的范本匹配的邊組列表。
float?nearpoint?(string?surface_node, float?x, float?y, float?z)
在幾何圖形中查找與特定三維坐標(biāo)最近的點。
float?metaweight?(string?surface_node, float?x, float?y, float?z)
返回元球在特定位置的權(quán)重。
string?seampoints?(string?surface_node,?float?whichside)
列出曲面節(jié)點中的所有接縫點。此函數(shù)返回一個字符串,其中包含指定曲面節(jié)點中所有接縫點的有序列表。接縫點由點上的接縫屬性標(biāo)識。<whichside>參數(shù)指定我們感興趣的接縫的哪一側(cè),該值可以是零,也可以是一。調(diào)用一次whichside參數(shù)為零的函數(shù)和一次which side參數(shù)為一的函數(shù),將提供兩個點列表,其中將每個點與另一個列表中的對應(yīng)點連接完全描述幾何體上的所有接縫。
float?curvature (string?surface_node, float?prim_num, float?u, float?v)
返回曲面在給定UV坐標(biāo)下的曲率。說明:u和v是單位值,在[0,1]區(qū)間中定義。如果圖元是網(wǎng)格,則u和v是根據(jù)其行數(shù)和列數(shù)定義的。
float?spknot (string?surface_node, float?prim_num, float?knot_index, float?D_U|D_V)
返回樣條曲線或曲面上的結(jié)值。此樣條曲線特定函數(shù)返回浮點結(jié)值,給定U或V結(jié)序列中的結(jié)索引。第一個有效的結(jié)索引為0。如果圖元是貝塞爾曲線或曲面,則返回的值是其斷點的值。如果圖元是曲線,則第四個參數(shù)(D_U或D_V)是無關(guān)的。
float?mindist?(string?surface_node,?float?point_num,?string?surface_node,?float?prim_num,?float?return_type)
查找點和圖元之間的最小距離。此表達(dá)式是pointdist的別名。
float?xyzdist?(float?x,?float?y,?float?z,?string?surface_node,?float?prim_num,?float?return_type)
返回三維坐標(biāo)和圖元之間的距離。如果<prim_num>為-1,則查找到曲面節(jié)點中任一圖元的最近距離。
*?<return_type> = 0 返回最小距離。
* <return_type> = 1 返回最小距離點處的u參數(shù)值。
* <return_type> = 2 返回最小距離點處的v參數(shù)值。
* <return_type> = 3?返回最接近的圖元數(shù)。
7、自定義類

cucwc ()
不推薦:自定義面板的當(dāng)前工作容器。自定義面板是不推薦使用的功能。
cudatatype (gadget_path)
不推薦:小工具的數(shù)據(jù)類型,用于自定義面板??赡艿闹涤衒loat、int和string。自定義面板是不推薦使用的功能。
cumenuadd (gadget_path, menu_entry)
不推薦:在自定義面板上添加菜單項。如果指定的菜單項是菜單,則將其添加到給定的小工具中。如果已添加,則返回條目。自定義面板是不推薦使用的功能。
cuquery (panel_path, value_name)
不推薦:從自定義面板返回一個值。自定義面板是不推薦使用的功能。
cutype (gadget_path)
不推薦使用:返回自定義面板上小工具的類型。自定義面板是不推薦使用的功能。
8、未分類

float?if?(float?expression, float?true_value, float?false_value)
根據(jù)第一個參數(shù)的真值返回第二個或第三個參數(shù)的值。
string?ifs?(float?expression, string?true_value, string?false_value)
根據(jù)第一個參數(shù)的真值返回第二個或第三個參數(shù)的字符串值。
string?findfile (string?filename)
在胡迪尼路徑中搜索文件。指定的文件名應(yīng)相對于HOUDINI_PATH環(huán)境變量中指定的路徑之一。
string?findfiles (string?filename, string?separator)
在胡迪尼路徑中搜索文件或目錄。在houdini路徑中搜索指定的文件或目錄,返回由指定分隔符分隔的所有匹配項的列表。當(dāng)回顯結(jié)果時,使用分隔符\\n非常方便。指定的文件名應(yīng)相對于HOUDINI_PATH環(huán)境變量中指定的路徑之一。
float?uniqueval (string?surface_node, float?class, string?attribute, float?index)
返回整數(shù)屬性的唯一值。對于相應(yīng)的屬性類,<class>可以是D_VERTEX、D_POINT、D_PRIITIVE或D_DETAIL中的一個。
string?uniquevals (string?surface_node, float?class, string?attribute, float?index)
返回字符串屬性的唯一值。
float?nuniquevals (string?surface_node, float?class, string?attribute)
返回曲面節(jié)點中整數(shù)或字符串屬性的唯一值的數(shù)目。
string?groupbyval (string?surface_node, float?class, string?attribute, float?id)
返回一個字符串,該字符串描述具有給定值的整數(shù)屬性的元素集。
string?groupbyvals (string?surface_node, float?class, string?attribute, string?id)
返回一個字符串,該字符串描述具有給定字符串屬性值的元素集。
string?listbyval (string?surface_node, float?class, string?attribute, float?id)
為整數(shù)屬性返回具有給定值的元素列表。
string?listbyvals (string?surface_node, float?class, string?attribute, string?id)
為字符串屬性返回具有給定值的元素列表。
matrix?objpretransform (string object_name)
返回對象的預(yù)變換矩陣。
string?objkinoverride ()
返回骨骼對象的當(dāng)前全局運動學(xué)覆蓋設(shè)置。這相當(dāng)于在沒有任何參數(shù)的情況下運行objkinoverride命令。返回值為:none(無覆蓋)、rest(骨骼使用rest變換烹飪)或capture(骨骼使用捕捉姿勢變換烹飪)。
string?mousepane ()
返回當(dāng)前鼠標(biāo)指針下窗格的全名。如果當(dāng)鼠標(biāo)指針不在任何窗格上時(例如當(dāng)它在胡迪尼窗口之外時)執(zhí)行此函數(shù),則返回一個空字符串。當(dāng)在非圖形Houdini應(yīng)用程序(如hscript)中執(zhí)行此函數(shù)時,還會返回一個空字符串。
string?mousepath ()
返回當(dāng)前鼠標(biāo)指針下窗格的節(jié)點路徑。
float?instancepoint?()
返回當(dāng)前正在實例化的點編號。說明:此函數(shù)不接受任何參數(shù)??梢栽谡趯嵗膶ο蟮膮?shù)表達(dá)式中使用此函數(shù)(請參見點實例化)。它返回對象正在實例化到的點編號。可以使用此選項在實例之間更改對象級別的參數(shù)(例如變換或材質(zhì)替代)。不能在曲面級別使用此函數(shù),因為實例化只能在對象級別使用。
float?ocldeviceinfo (string?flag)
使用提供的標(biāo)志查詢當(dāng)前OpenCL設(shè)備。<flag>是一個字符串,包含設(shè)備標(biāo)志的名稱。此函數(shù)查詢當(dāng)前OpenCL設(shè)備并返回指定標(biāo)志的數(shù)值。在內(nèi)部,此函數(shù)調(diào)用OpenCL clGetDeviceInfo函數(shù);可用的標(biāo)志在OpenCL文檔中進(jìn)行了描述。一些有用的標(biāo)志包括:
>> CL_DEVICE_TYPE:對于CPU設(shè)備返回2,對于GPU返回4裝置;
>>?CL_DEVICE_GLOBAL_MEM_SIZE和CL_DEVICE_MAX_MEM_ALLOC_SIZE:它們分別返回設(shè)備上可以進(jìn)行的總內(nèi)存和最大單次分配;
>> CL_DEVICE_DEVICE_ENQUEUE_SUPPORT:表示設(shè)備支持內(nèi)核的設(shè)備側(cè)排隊。
string?shopstring?(string?shop_path, string?render_type)
返回著色器生成的著色器字符串。<render_type>是表示渲染器的字符串(例如,RIB或VMantra)。如果該字符串為空,則使用著色器的默認(rèn)渲染類型。
float?modblend (float?val1,?float?val2, float?length, float?weight)
混合兩個模塊化值。此函數(shù)可用于正確混合兩個角度或其他循環(huán)值。