在將houdini的特效輸出到其他軟體時,有許多輕量化的撇步。
這裡介紹一種很常用的依照攝影機看到範圍去裁切的方法。
模型準備
準備了一隻豬,並用scatter撒上大量的點。
在攝影機視角看到的會是這樣,有很多粒子都不在攝影機看到的範圍。
裁切vex
下attribute wrangle,用vex來寫裁切的描述。
如註釋所解釋:
- 建立一個向量變數,取名叫
ndc
,用來取得點在攝影機的相對位置,稍後會針對toNDC
做進一步解釋。 - 建立一個浮點變數,取名叫
offset
,用來微調,因為通常會去取比攝影機的正確範圍稍大點的值去做篩選。 - 定義兩個篩選用的邊緣值。
- 用
ndc
的x
、y
去判斷是否超出邊緣,超出邊緣即刪除。這邊沒有做Z值的判斷,通常Z值會用ndc.z > 0
來做刪除,代表已經跑到攝影機後面。
前面輸入chs("cam")
後,自動產生parameter會是string類別,可以將它編輯成operator path,並指定只能選擇攝影機,以方便使用者選取。
總結
這樣便可以將粒子篩到剩下攝影機的範圍再輸出,節省不少空間,也能增進讀取效能。
不只粒子,有很多太重的cache也可以用相同的方法去做延伸。
關於toNDC
,它是會取出位置(粒子座標)在物件(攝影機)的相對位子,x
跟y
的邊緣是0~1(不會clamp),那z
的話就是以攝影機位置為0,向後是正的增加,向前是負的減少,用這三個得到一個向量值。