国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Houdini學(xué)習(xí)筆記020_VEX使用思路

2022-08-31 21:11 作者:獨孤嘌呤  | 我要投稿

VEX在Houdini中可用于多個模塊中,包括材質(zhì)渲染相關(guān)、合成、建模、粒子、毛發(fā)等等。不管用在哪里,我們應(yīng)當知道,使用VEX肯定是為了解決某個具體的問題。而這種以問題為導(dǎo)向的學(xué)習(xí)能夠幫助我們快速領(lǐng)會VEX的思路,錘煉我們解決問題的能力。

所以這一篇我打算用一個具體的例子來講解VEX的用法。例子很簡單,就是線條的彎曲。正常情況下,我們肯定會使用Bend節(jié)點來做。設(shè)置好Capture DirectionCapture Length分別與線條的方向和長度一致,改變Bend參數(shù)的值就可以得到線條彎曲的效果。

但假設(shè)現(xiàn)在我們遇到一個極端情況,Bend節(jié)點用不了了,或者有人拿刀架在你脖子上說用Bend節(jié)點者死,彎不了也得死。那我們該怎么辦呢?

這時候,VEX節(jié)點就可以派上用場了。我們分析可知,線條的彎曲實際上是每個點的坐標發(fā)生了變化。當這種變化滿足某種關(guān)系時,看上去剛好符合彎曲的效果。所以這里可以用Point Wrangle節(jié)點,目的是重新定義點的坐標。

至于彎曲效果中點坐標如何變化,屬于幾何計算的范疇。這里直接給出結(jié)果如下圖所示。在彎曲的過程中線條總長度保持不變(這里L(fēng)=1),彎曲角度即弧線所對的圓心角,據(jù)此可求出特定彎曲角度下弧線對應(yīng)的圓周半徑。而線上每個點的坐標可根據(jù)角度α求出,角度值跟其點序號有關(guān)。假設(shè)線上的點序號為從0到N,那么第n個點對應(yīng)的α角為θ×n/N。

有了以上數(shù)學(xué)關(guān)系后,剩下的就好辦了。這里我們先定義最主要的變量:bend_angle(彎曲角度),即θ,寫法如下(變量類型為浮點型)——

Bend作為一個可調(diào)節(jié)的參數(shù),可點擊屬性面板右上角的齒輪,選擇Edit Parameter Interface選項。然后設(shè)置取值范圍Range為0~360度。

最后的計算中都用到了R和α,為了不用重復(fù)書寫,可以先單獨定義這兩個變量的值。變量類型均為浮點型。n和N分別為@ptnum(點的序號)和@numpt-1(@numpt為點的總數(shù),減去1是因為序號是從0開始的)。$PI就是π,radians()函數(shù)是將角度值轉(zhuǎn)為弧度值,后面的正余弦計算都要用到。如果不用radians函數(shù),也可以先乘以π再除以180度。

有一點要注意的是,在除法計算中,如果是兩個整數(shù)相除,得到的結(jié)果仍取整數(shù)(直接省去小數(shù)部分),如3/5 = 0。而3.0/5 = 0.6。所以上面的@ptnum/(@numpt-1)最好寫成@ptnum/(@numpt-1.0)。

接下來分別計算@P.x@P.y的值即可,也可以寫作@P[0]和@P[1](x、y、z分別對應(yīng)于第0、1、2位的數(shù)值)。

滑動Bend參數(shù)的滑塊,就可以看到彎曲效果了。

現(xiàn)在還有一個問題是當彎曲角度為0時,按上式計算出的半徑R值為無窮大,其實就是保持原來直線的形狀不變。實際運行過程中,我們會看到所有點都歸到了原點,這顯然是不對的。

所以我們可以給點坐標計算加一個條件,當彎曲角不為0時才執(zhí)行上述計算。使用的是if語句,if后的小括號?( )?內(nèi)是判斷條件,!=是數(shù)學(xué)中的不等于;再后面執(zhí)行的計算過程由于是多行語句,要用花括號?{ }?括起來。如下圖所示——

然后整個彎曲的效果就實現(xiàn)了——

折騰了半天,我們又實現(xiàn)了一個Houdini中本來已有的節(jié)點效果。這個例子幫助我們梳理了一遍用VEX寫表達式的流程,實際的Bend節(jié)點功能當然不止這些,還涉及到彎曲對象的體積外框范圍,彎曲的軸向等。我們可以猜想,這些功能也是能在VEX中實現(xiàn)的。

末尾再補充點變量的命名規(guī)則吧,主要注意以下幾點:

  • 變量名稱只能包含字母、數(shù)字和下劃線,如newpos、offset1、rand_number;

  • 不能以數(shù)字開頭,也不能是純數(shù)字,反例如123、4connect都是不行的;

  • 不要使用關(guān)鍵字和函數(shù)名作為變量,如float、rand等;

  • 區(qū)分大小寫。

建議使用簡短且有一定描述性的詞組作為變量名,連接處可采用下劃線或首字母大寫的方式,如new_class、myName等。

今天的筆記就寫到這里,感謝大家的閱讀,下回見~

Houdini學(xué)習(xí)筆記020_VEX使用思路的評論 (共 條)

分享到微博請遵守國家法律
鹤山市| 清河县| 隆安县| 武鸣县| 苏尼特左旗| 盘山县| 自贡市| 榆中县| 宝清县| 翁源县| 登封市| 高要市| 玉林市| 屏山县| 瑞昌市| 湟中县| 恭城| 壶关县| 饶河县| 开封县| 林周县| 万安县| 安国市| 翁牛特旗| 毕节市| 六安市| 佛教| 永川市| 石楼县| 玉林市| 邵阳县| 新宾| 嘉荫县| 克什克腾旗| 黎平县| 鄂尔多斯市| 泽州县| 漳浦县| 高清| 都江堰市| 土默特左旗|