不知道大家小時候有沒有玩過四驅車,現在有不少商場都有專門的四驅車賽道,我們既可以用自己的車,也可以租車來跑圈,每次路過的時候我都會多看幾眼,所謂“男人至死是少年”可真是一點不假……那麼問題來了,作為Blender小能手,我不禁想問問大家,在Blender裡,我們也可以制作這種沿路奔跑的玩具車效果麼?
第一步:設計玩具車模型并構建“賽道”路徑
要做四驅車賽車效果,首先要滿足車和賽道這兩個基本元素,咱們可以簡單制作一個玩具車的3D模型,當然,也在網上下載現成的汽車模型,這個就風儉由君了,不過建議大家不要找高精度模型,因為咱們的幾何節點設計會讓玩具車模型大量出現,精度太高會增加預覽和渲染硬件開銷。
在得到玩具車3D模型後,接下來我們需要設計一個賽道,這個設計很簡單,可以利用單頂點不斷擠出來獲得,完成後記得把賽道轉換為曲線,因為在幾何節點裡我們将利用曲線功能來進行設計,第一步的設計結果如圖1所示。
圖1
第二步:制作賽道并添加車輛
為我們的賽道曲線添加幾何節點功能,然後在“組輸入”和“組輸出”之間添加“圓角曲線”,這個功能可以讓曲線的直角邊轉換為圓弧角,類似于添加了倒角功能,然後通過“曲線轉網格”,以曲線直線為輪廓曲線,讓曲線的每個點都以線段的形式“掃描”過去,就能形成如圖2的效果了,這也就是我們的賽道模型啦。
圖2
接下來就需要讓我們的玩具車模型在賽道上跑起來啦,基本思路是讓一條線段沿着賽道曲線移動,這樣我們就能給線段的每一個點賦予車輛模型作為實例,形成車輛随路徑疾馳的效果了。
因此我們先要獲取曲線的位置信息,因為曲線并不像網格那樣,每個點都有位置信息,所以我們要先“采樣曲線”,然後把“網格直線”從“網格到點”,這樣直線上的每個頂點都獨立顯示了,然後在通過設置位置,來讓這些點都成功放置到曲線上。
這時候你會發現,為什麼無論我設置多少個“網格直線”的數量,都隻能顯示一個點呢?這是因為“采樣曲線”的系數是一個恒定數,所有的點都被放在了同一個位置,所以我們需要給系數添加“随機值”,這時候你就能看到所有的點均勻分布在直線上了,然後通過一系列的運算,我們就可以得到直線頂點在曲線“賽道”上以些許不同速度奔跑的效果了,具體設置可參考圖3。
圖3
第三步:設置多車道和正确行進方向
但這時候還是有一個小問題:所有的點都非常規矩地以“單車道”的形式沿曲線運動,我們如果想要獲得更多的“車道”,其實就是為直線每個頂點的位置添加随機值,這時候可以通過噪波紋理來實現。設置思路就是讓“采樣曲線”的“位置”添加一個“噪波紋理”,具體的設計可以參考圖4。
當然,也可以直接“矢量相加”“采樣曲線”的法向,并用“矢量乘法”來乘一個随機值,通過調整随機值的正負範圍,也能起到相同的效果。
圖4
這時候雖然我們的玩具車在賽道上以多車道的形式跑了起來,但問題在于它們沒有沿着正确的方向旋轉,邏輯上來看,玩具車的旋轉值應該與賽道曲線的切向對齊,而正好在“采樣曲線”時我們就獲得了曲線的切向,因此隻需要通過設置“對齊歐拉到矢量”,就能讓玩具車的旋轉值以切向正确運作了,如果你跟我一樣設置了坡道的話,記得要額外再加一個“對齊歐拉到矢量”來調整玩具車對應坡道時的俯仰,具體軸心要參考玩具車模型的軸向來進行設置,當然,全試一遍也能得到正确答案,并不複雜,具體設置可參考圖5。
圖5
本文所用幾何節點一覽
本章小結:相對複雜,但值得一學
從節點的複雜程度不難看出,這次的教學内容其實是有一定難度的,但這也是目前實現這一效果的最佳途徑,而且幾何節點最大的優點就是超高的調整自由度,我們可以直接修改玩具車的數量、位置、速度,也能在調整賽道曲線時讓玩具車的行進方向和車頭朝向無縫匹配,這都是傳統跟随路徑方案比較難以實現的,所以,難是難了點,但值得學!
,