Houdini:製作飄揚的國旗
前兩天看了《我和我的祖國》,電影裡有很多動人情節。趁著十一長假,祖國70週年生日之際,不妨做一面飄揚的國旗,為祖國喝彩。
按照標準繪製國旗
首先學習一下標準的國旗是如何繪製的。
根據以上標準,以頂檢視(X正向右,Z正向下)為例,我們可以提煉出核心資料:
國旗長30個標準單位,寬20個標準單位,紅色。
五角星有5顆,大的半徑為3個單位,小的半徑為1個單位,黃色。
大五角星的座標為(5,5),小五角星從上到下的座標為(10,2),(12,4),(12,7),(10,9)
每個小五角星的尖角朝向大五角星的中心。
根據以上資訊,我們可以分成以下幾個步驟實現國旗圖案。
繪製一標準單位半徑的五角星
以點為例項,計算五角星的位置、縮放、朝向等屬性。
將標準五角星按屬性複製到點
將五角星與紅旗合併
繪製標準五角星有很多辦法。可以從正五邊形(圓分5段)切出來,也可以直接按照幾何關係算好五角星的點座標,連成幾何體。我使用了矩陣變換的方式來生成頂點,最後連線成五角星。
首先生成十個點,座標全在(0,0,-1),按照順序將其按照等份額角度旋轉,最後將奇數點按照比例縮小。之後就可以透過add節點將這十個點連線成五角星了。
先在原點生成五個點,計算五角星的座標,縮放和旋轉。使用
dihedral
計算二面角四元數,將指向(0,0,-1)的尖角朝向大五角星中心。
然後將五角星複製到點,可以觀察到大小,位置和朝向都是正確的:
最後合併五角星與紅旗。
這個時候就已經可以使用正交鏡頭渲染成標準的平面國旗圖案了,如題圖。
除了上面的方法,我們當然也可以一個一個手擺五角星,調整其位置縮放旋轉,不過這樣並不方便,有的時候也不精確。對於這種有規可循的圖案,使用程式化思維往往能快速準確地解決問題。
烘焙貼圖
為了保證可重用性,我們一般不把幾何體湊成的圖形直接使用。使用貼圖是比較常見且通用的做法,如果我們想把旗幟換成不同的圖案,那麼我們只需替換材質上的貼圖即可,而不必重新模擬。
新增UVTexture節點,為頂點新增UV資訊
使用GameDev工具套件裡的Simple Baker節點,烘焙頂點顏色到圖片檔案
使用Vellum模擬布料
Vellum是Houdini17中新加的用於模擬柔體的工具集,我們用它來模擬旗幟可以非常簡單方便。
新建一個Grid,新增UV,我們可用旗杆套做包圍盒決定固定點
添加布料屬性,新增旗幟左側一列到固定約束
新增Vellum Solver,設定風速等屬性
不斷調整引數,觀察模擬結果
新增材質渲染
簡單的新增一下旗杆部分,憑記憶還原一下電影裡的樣子,配上材質
注意旗面的材質,顏色使用上面生成的貼圖
渲染成影片,大功告成,祝祖國越來越好
飄揚的國旗
https://www。zhihu。com/video/1163655295204552704
更多文章
透過Houdini邁向程式化(目錄)