[Hudini] vex: 判斷語句和循環(huán)語句
if else 語句
1 P.x大于0的點(diǎn)變成綠色。

2 P.x大于0的點(diǎn)變成綠色,其他的變成紅色。

3 P.x大于0的點(diǎn)變成綠色,其他的點(diǎn)如果P.z大于0變成紅色,最后剩下的點(diǎn)變成藍(lán)色。

4 if else的簡寫
1的簡寫

2的簡寫

2的終極簡寫

下圖的寫法報錯,大概是賦值操作只能用上面那種寫法。

這種可以

這種也可以

foreach loop 語句
foreach語句的特點(diǎn)是把數(shù)組成員的值帶入到循環(huán)中。有兩種形式,第二種形式還可以把當(dāng)前數(shù)組成員的編號帶入到循環(huán)中。

1 新建一個點(diǎn)當(dāng)作當(dāng)前幾何體,在另一個幾何體上尋找距離該點(diǎn)0.3范圍內(nèi)的點(diǎn),根據(jù)這些點(diǎn)的位置添加新點(diǎn)到當(dāng)前幾何體中。

2?新建一個點(diǎn)當(dāng)作當(dāng)前幾何體,在另一個幾何體上尋找距離該點(diǎn)0.3范圍內(nèi)的點(diǎn),根據(jù)這些點(diǎn)的位置添加新點(diǎn)到當(dāng)前幾何體中。然后根據(jù)距離的由近到遠(yuǎn)給他們一個排序值,0代表最近。(因?yàn)檎业降狞c(diǎn)是根據(jù)距離由近到遠(yuǎn)在數(shù)組中排序,越靠前代表距離該點(diǎn)越近,我們把點(diǎn)在數(shù)組中的序號當(dāng)作排序值。addpoint函數(shù)能夠返回新建點(diǎn)的序號,我們根據(jù)這個序號給屬性。)

for loop 語句
for loop的特點(diǎn)是可以通過循環(huán)的次數(shù)控制是否繼續(xù)執(zhí)行語句。

1 從第二十點(diǎn)開始,每隔一個點(diǎn)變成紫色,一直到計數(shù)器不再小于100。

do while 和 while 語句
while語句先判斷條件是否成立,成立的話會一直執(zhí)行。而do while先執(zhí)行一次,再判斷,也就是說無論條件成立與否,都會執(zhí)行一次。
1 如果P.y小于15,Cd.g和Cd.b減少0.1,知道Cd.g小于等于0,移除該點(diǎn)。例子和圖來源于Cg Forge vex部分。

2 只要時間小于2,Cd.g和Cd.b減小0.1。因?yàn)樵赿op里,每一個substep都會執(zhí)行節(jié)點(diǎn)一次,而這個表達(dá)式是先執(zhí)行再判斷條件,所以即使時間大于2了,Cd值仍在減少。

break 語句
break 直接終止整個循環(huán)。一般和if語句配合使用,當(dāng)達(dá)到某個條件時,終止整個循環(huán)。

continue 語句
continue 跳過當(dāng)前循環(huán),直接執(zhí)行下次循環(huán)。一般和if語句配合使用,當(dāng)達(dá)到某個條件時,終止當(dāng)前循環(huán)。

一些教程里不太常見但是看上去挺有用的東西
1? @opinput1_P這種格式可以直接讀取某個端口相同序號元素的屬性。如果有id屬性的話,會讀取id相同的元素,匹配屬性可以設(shè)置(下圖2)。


2 用int(),float()來轉(zhuǎn)換相應(yīng)的數(shù)據(jù)類型。
