整體思路:通過軌迹線規定藤曼位置,生成藤曼分支,再對藤曼生長進行細節處理
-
如何導入模型
建設geo并在其中添加file(檔案夾),在選擇處添加不同類型的模型
-
模型減面并變換與對齊
polyreduce(減面)—Percent To Keep 調整
remesh(重新布線)—Target Size調整面的大小
matchsize(對齊到世界中心)
transform(對模型進行變化)
-
建立藤曼軌迹
curve(鋼筆)選中吸附到模型,進行繪制
resample(對軌迹進行編輯)
-
擷取模型法線并讓軌迹線段擷取法線方向
normal(法線)擷取模型法線—Add Normals to points(讓法線在點生成)-(如果法線位置不對,勾選Reverse Normal)
attribtransfer(讓軌迹線段擷取模型的法線方向)
pointwrangle(代碼,使得軌迹向法線方向偏移(@[email protected]*0.06;(@是屬性,@P是點的坐标@N是法線坐标)))(上述代碼:@[email protected][email protected]*0.06)
-
平滑軌迹,并添加動畫
smooth(平滑)
carve(軌迹動畫)—first,scend是軌迹起點與終點
alt選中,添加動畫
-
給與軌迹線噪點增加細節
mountain(添加噪波)
-
增加軌迹線分支
scatter(在軌迹線上生成點)
pointjitter(随機分布點)
ray吸附到模型表面)
(吸附到表面的點與軌迹線相連)
—建立enumerate(選擇成控制點的組(建立一個新的屬性))
與ray(吸附在模型上的點)和scatter(軌迹線上的點)相連
将兩個enumeratel連接配接到mergel同時顯示
将mergel連接配接到add,在polygons(線,多邊形)添加index的屬性在mergel前通過index擷取了軌迹線與随機分布點的序号資訊,通過add讓兩個序号資訊相同的生成了線
- 軌迹線細節,在藤曼生成的同時,進行藤曼分支的生成
問題:如何把軌迹線上的屬性傳遞到撒出的點上
使用timeshift固定畫面
建立出triger的屬性,定義為float,初始值為1([email protected]=1;)
将上述代碼和timeshift進行合并并賦予triger屬性,并添加顔色
(@P+=fit01(vector(rand(@ptnum)),-1,1)*0.2*@triger;)使用此代碼解決撒點的随機值代替pointjitter
((fit01(将0,1投射到))(vector(矢量))(rand(随機生成随機數))((規定新的範圍-1,1)(數值)(上述屬性))
與ray相連得到最後輸出
- 讓藤曼分支生成更加自然
插入solver(通過上一幀的内容可計算出下一幀内容)
在内輸入代碼:
(if(point(1,'triger',@ptnum)>0) [email protected]+=0.08;)//
([email protected]=clamp([email protected],0,1);)//給新建立的growth規定範圍(0,1)
solver内
之前的随機值部分修改代碼為:
@P+=fit01(vector(rand(@ptnum)),-1,1)*chf("rand_scale")*@growth;
ch(f(float))——在面闆中形成可調參 , 修改屬性為growth
可調參數
給後續節點修改屬性為growth,即可使用growth所規定的值
10.解決随機與噪波抖動
原有節點(planA)可以放棄,較為繁瑣,運算量大
*planA
建立新的代碼(no-growth)使其不受growth屬性影響
(@P+=fit01(vector(rand(@ptnum)),-1,1)*chf("rand_scale")*;)
将ray的scale修改為常數1,也使其不受growth屬性影響(ray受growth影響會出現抖動)
建立新代碼,與(rand_p)連接配接(傳遞@growth)
vector pos = point(5,"p",@ptnum);//建立變量,不會進行傳遞(讀取點的位置)
@P = lerp(@P,pos,[email protected]);//計算前兩位的差,進行平滑過渡
planA
PLANB:使用代碼實作吸附效果
在rand_p後添加timeshift(固定整體撒點的位置)
添加代碼
vector pos = point(2,"P",@ptnum);//讀取點的位置(2接口向上連接配接模型法線資訊)
vector min_pos = minpos(1,pos);//計算和模型距離最短的點坐标(并鎖定在min_pos)
@P= lerp(@P,min_pos,[email protected]);//讓min_pos中的值和目前點位置進行過渡
11.生成藤曼模型并給予噪波抖動
使用polywire對線與點生成模型(進行調參)
對藤曼分支給予噪波
利用resample對分支進行細分(增加細節),并開啟curveu屬性(對分支給予0-1)
創造pointvop
curlnoise(控制噪波)bind(擷取curveu屬性) ramp(進行噪波大小的控制)
pointvop内
添加代碼(對分支的大小進行設定)
@pscale=chramp("pscale_con",[email protected])*0.01*@growth;
(ch(ramp(“命名”,控制的值)*0.01*@growth(不添加@growth會在最後生成圓片,使其受@growth影響)))
上半部分
下半部分
最終效果
至此,整個藤曼的基礎生成就完成了
原作者:Clown_醜
原視訊連結:【Houdini教程全集】0基礎新手入門中級教程——藤蔓ivy生長效果制作_哔哩哔哩_bilibili