Houdini 針對攝影機範圍做粒子的裁切輕量化

2017/9/3 下午11:15:46

在將houdini的特效輸出到其他軟體時,有許多輕量化的撇步。
這裡介紹一種很常用的依照攝影機看到範圍去裁切的方法。

模型準備

準備了一隻豬,並用scatter撒上大量的點。

在攝影機視角看到的會是這樣,有很多粒子都不在攝影機看到的範圍。

裁切vex

下attribute wrangle,用vex來寫裁切的描述。

如註釋所解釋:

  • 建立一個向量變數,取名叫ndc,用來取得點在攝影機的相對位置,稍後會針對toNDC做進一步解釋。
  • 建立一個浮點變數,取名叫offset,用來微調,因為通常會去取比攝影機的正確範圍稍大點的值去做篩選。
  • 定義兩個篩選用的邊緣值。
  • ndcxy去判斷是否超出邊緣,超出邊緣即刪除。這邊沒有做Z值的判斷,通常Z值會用ndc.z > 0來做刪除,代表已經跑到攝影機後面。

前面輸入chs("cam")後,自動產生parameter會是string類別,可以將它編輯成operator path,並指定只能選擇攝影機,以方便使用者選取。

總結

這樣便可以將粒子篩到剩下攝影機的範圍再輸出,節省不少空間,也能增進讀取效能。
不只粒子,有很多太重的cache也可以用相同的方法去做延伸。

關於toNDC,它是會取出位置(粒子座標)在物件(攝影機)的相對位子,xy的邊緣是0~1(不會clamp),那z的話就是以攝影機位置為0,向後是正的增加,向前是負的減少,用這三個得到一個向量值。

範例檔案