Houdini學(xué)習(xí)筆記016_藤蔓攀爬
今天我們學(xué)習(xí)如下所示的藤蔓攀爬效果——

用到的是一個(gè)搜索最短路徑的節(jié)點(diǎn)“Find Shortest Path”。該節(jié)點(diǎn)可以根據(jù)給定的起點(diǎn)和終點(diǎn)沿著模型現(xiàn)有的結(jié)構(gòu)線進(jìn)行搜索,找到最短的路徑。
以一個(gè)立方體為例,用“remesh”節(jié)點(diǎn)對(duì)其進(jìn)行表面重構(gòu)。調(diào)節(jié)“Target Size”的值,得到如圖所示的三角形網(wǎng)格線。該值越小,網(wǎng)格線越密。

以上作為輸入的模型,用一個(gè)空節(jié)點(diǎn)“Null”標(biāo)記,可命名為“MESH”。按快捷鍵【C】可設(shè)置節(jié)點(diǎn)的顏色。

創(chuàng)建“Find Shortest Path”節(jié)點(diǎn),該節(jié)點(diǎn)需要輸入Surface Geometry,即表面網(wǎng)格模型。

連接后在其屬性中可見需要有“Start Points”和“End Points”的選集。顯然,在此之前需要“group”相關(guān)節(jié)點(diǎn)進(jìn)行選集的設(shè)置。

起點(diǎn)直接選擇任一點(diǎn)的編號(hào),如0號(hào)點(diǎn)。注意“Group Type”應(yīng)為Points?!癎roup Name”為$OS的意思是,默認(rèn)以節(jié)點(diǎn)名稱作為組的名稱。比如將節(jié)點(diǎn)名稱改為“start”,那么在節(jié)點(diǎn)屬性中可以看到名為“start”的點(diǎn)組。

終點(diǎn)可以選擇所有的點(diǎn),設(shè)置方式為在“Base Group”一欄輸入*,表示全部的意思?!癎roup Type”同樣為Points,然后將節(jié)點(diǎn)名稱改為“end”。

“Start Points”和“End ?Points”分別拾取“start”和“end”點(diǎn)選集,然后將“Output Paths”改為“From any start to each end”,從任一起點(diǎn)至每個(gè)終點(diǎn)。即可得到如下圖所示的路徑樣條。

添加“smooth”使得樣條平滑。

將原來的網(wǎng)格模型平滑并稍加縮放后,與生成的樣條疊加顯示可以更清楚。

現(xiàn)在得到的樣條是由很多根獨(dú)立的樣條組成的,每根樣條都是一個(gè)primitive,且起點(diǎn)都是0號(hào)點(diǎn)的位置。如果用“explode view”節(jié)點(diǎn)可以將它們炸開顯示如圖。

接下來給每根樣條從起始端到末端添加漸變色,需要借助于能確認(rèn)樣條上點(diǎn)的百分比位置的屬性??梢杂谩癆ttribute Create”節(jié)點(diǎn)創(chuàng)建一個(gè)名為“ratio”的屬性,并將其“Value”設(shè)置為“@ptnum/(@numpt-1)”?!癅ptnum”是點(diǎn)的編號(hào),“@numpt”是點(diǎn)的總數(shù),因?yàn)槭菑?號(hào)開始,所以要減去1。這樣ratio的值就在0~1之間變化。
由于每根樣條含有的點(diǎn)的數(shù)量是不同的,需要逐個(gè)進(jìn)行計(jì)算。這里用到的是“For-Each Connected Piece”節(jié)點(diǎn)。關(guān)于“foreach”的節(jié)點(diǎn)有好幾個(gè),本質(zhì)上都是一樣的,根據(jù)參與循環(huán)的對(duì)象和控制條件的不同來設(shè)置不同的屬性。

“For-Each Connected Piece”節(jié)點(diǎn)會(huì)根據(jù)對(duì)象的連接性進(jìn)行拆分,每個(gè)primitive(這里為每根樣條)會(huì)分配一個(gè)“class”屬性。按照class0到classN進(jìn)行循環(huán)。

針對(duì)每個(gè)primitive的循環(huán)中,創(chuàng)建名為“ratio”的點(diǎn)屬性,“Value”值見上。在“Geometry Spreadsheet”窗口可以查看點(diǎn)屬性中是否多出“ratio”的選項(xiàng),其數(shù)值范圍應(yīng)為0.0~1.0。

然后添加“color”節(jié)點(diǎn),著色方式“Color Type”選擇“Ramp form Attribute”,用前面創(chuàng)建的ratio屬性來設(shè)置紅藍(lán)漸變色,如下圖所示——

調(diào)節(jié)顏色漸變范圍,結(jié)果如下——

除了顏色漸變外,粗細(xì)漸變也可以用類似的方法得到。屬性名為width,“Value”可設(shè)為“(1.2-@ptnum/(@numpt-1))*0.01”。這里不再細(xì)述。
如果要實(shí)現(xiàn)生長(zhǎng)動(dòng)畫的效果,只需要連接“carve”節(jié)點(diǎn),將“First U”的值設(shè)為0,增加“Second U”的值即可。

按住【Alt】鍵點(diǎn)擊參數(shù)數(shù)值可以設(shè)置關(guān)鍵幀。例如在第1幀的位置設(shè)置“Second U”的值為0,在第240幀處設(shè)置其值為1。點(diǎn)擊播放按鈕就可以看到樣條生長(zhǎng)動(dòng)畫。

你也可以將起始點(diǎn)設(shè)為不止一個(gè),得到多點(diǎn)同時(shí)生長(zhǎng)的效果。

今天的學(xué)習(xí)到此結(jié)束,感謝各位的閱讀,下回見~