MAYA 學習筆記 008 – nParticle 系統

最重要的一點

nParticle 的動力 來自於 nucleus ,與傳統 particle 不同,因此一些使用方面的思考,必須改變。

參考教學

這篇筆記的參考教學是  Maya nParticles 新粒子系統教程


學習筆記

1. 幾乎所有傳統粒子可以操作的, nParticle 都可進行,例如 Goal 、Field、替代…等等

2. 很大一個不同:粒子之間可以互相碰撞,也因此,nParticle可以進行”填滿”、”填充”

3. 建立

[nDynamics] nParticles -> Create nParticles

可以注意到發射方式、發射類型(粒子預設互相影響的行為模式)

4. 傳統粒子的動力

傳統粒子的動力是 geoConnecter 節點

而 nDynamics 系列的動力都是 ncleus ,所以 只要是 nDynamics 系的動力之間都可以互相影響作用,例如 nCloth

5. 設定初始狀態

nSolver > initial state > set from current

6. nucleus 詳論

  • 一開始動力核心就已經會有基本的重力了,除此之外還有基本的風力可以調,可以達成簡單的效果。
  • 注意空氣阻力,可能會造成預期行為跟你想像的不同 ,同樣數值的空氣阻力對於不同np的力道不同
  • Ground plane > use plane ,很快製造一個平面,可以任意指定平面的座標系
  • 調整 Plane bound =0 粒子卻繼續反彈? 因為 可能 naprticleShape 的 particle collision 不為零,想要不彈跳,兩者都要零。
  • Solver Attributes,有 substeps 精確度、Max Collision Iterations 碰撞迭代次數, 迭代值不要比 substeps 低  (可善用簡模加快運算速度)
  • 粒子與物體碰撞的技巧:記得,選物體後, nMesh > create passive collide
  • Scale Attributes  > Time Scale  ,一種播放速度的調整,所以若在此屬性上設置關鍵影格,可以得到由快到慢這樣的效果 (但是不是真正的模擬變慢  只是播放變慢  方便簡易變速的動畫),數字↑ 變慢
  • Scale Attributes  > Space Scale  , 若 = 1 ,則 MAYA會把網格的單位一格認定為此值
  • 因此如果模型的比例尺幅合 “公尺” 等級,那就使用 1 ;如果是 公分等級,那最好調成 0.01
  • 未知比例的模型,最好用測量工具稍微測估一下總長度,並配合常識給一個值,最好在剛建立 ncleus 時就設定!

7. 粒子大小

  • nParticleShape 找到  Particle size 標籤。
  • 其實最終效果取決於 radius * radius scale 的 radius input (就是長條圖) ,可以注意到橫軸是 radius scale input,預設的控制方式是 age
  • 以傳統粒子的觀點來理解,其實就跟新增一個 radiusPP 屬性,然後 create ramp 沒啥兩樣 (別忘了該 ramp 的預設 v 也是 age )

8. nParticle & nCloth

  • 同一個 nucleus 內的 nCloth 可以互相作用
  • nCloth 也有質量,所以nCloth 可以在 nParticle 內載浮載沉
  • 調高質量可以觀察到浮動情況不同,調高粒子半徑也可以觀察到不同狀態

9. nParticle Tool 在平面上畫粒子

  • 點選平面膜型、執行modify ->  make live (吸付物體上的意思),然後就可以在一個平面上畫粒子。
  • 藉機實驗兩種粒子的浮沉實驗,可以發現密度變小時,真的會浮起
  • 可以用質量或是粒子半徑控制密度

10. nParticle 轉化為多邊型

Convert > nParticle to polygons

執行完畢後,你可以看到大綱模式內出現一個新的多邊形物體,這個多邊形物體的歷史紀錄仍然連結著 nParticleShape 節點,因此播放後, nParticle 仍然會形變、會計算

  • 你也可以對這個多邊形編輯錨點,毫無問題哦~!
  • 假如執行後看不到,那可能是半徑太小,找 nparticleShape 下 Liquid Simulation > Output Mesh 標籤,調 Blobby Radius Scale
  • Liquid Simulation > Output Mesh 標籤處,還有許多參數,都會反映在多邊形上
  • mesh Triangle,值越大,三角形越大,越不精確越沒有細節。
  • 刪除歷史記錄,則多邊形形狀就會固定,不再變動

11. 單獨選取粒子層級

  • 類似切換 點線面 層級,右鍵選 particle。
  • 粒子層級,選取粒子呈現黃色,沒選是粉紅色。
  • 可到 component editor 去修改每個粒子的資料,不過,表達式跟ramp優先權比這裡高。

 780 

12. nParticle 也可以跟 Field 作連結

  • 玩外加作用場之前,可以考慮先關閉 nucleus 的場,而關閉 nucleus 內的風場、重力的方法,只要勾選 ignore 即可
  • uniform or gravity Field,記住! gravity 是相同 a,uniform是相同 F ,而 F=ma
  • 場也是可以設體積 & 影響範圍的
  • Newton Field,這玩意才是萬有引力:D ,正值為吸,負值為斥
  • 後續補場與粒子關連:動力關係編輯器

13. 碰撞層

(1) 碰撞層號相同,可以相互作用。

(2) 碰撞層號不同,則如下判斷:

  • 在同一個 nucleus內, |不同n物體的碰撞層號的差值| <= Collision Range (nucleus的屬性)
  • 碰撞層小的優先,所以假設是一攤水跟一塊布來做碰撞,誰的碰撞層號小,就是誰在主導,整個效果完全不同 (就算碰撞層號相對值都差3)
  • 當然若在同一碰撞層的話,就是影響力各佔一半

(3) 範例、 Water 粒子碰撞層 2  ,Collision Range 如果是 3 ,那你把 nCloth 的碰撞層設定 0~5 都會跟 Water 作用

  • 若你設定 nCloth 碰撞層號為 0~1 ,則這個碰撞會是nCloth 為主(幾乎都只是 Water 在大幅運動)。
  • nCloth 設定為 2 ,則影響力個各半。
  • 設定為  3~5,則會看到以 Water 為主,幾乎都是 nCloth 在大幅運動。

14. 穿插

  • nParticleShape 勾選 Self Collide 判斷自我碰撞,即可解決穿插
  • 或有發射器的話, emitter 屬性編輯器內,distance/direction attributes 的 max 值 設大一點,這使得粒子不會只在同點發射

15. 粒子互相推動

  • 創立第一套粒子,可以把該套粒子再次的作為 Emitter
  • 選取該粒子後,選取 Emitter from Object 即可
  • 如果去掉第ㄧ套 particle 的Collide 那就不會被第二套粒子推動
  • 如果按照預設,會看到第一套粒子被第二套粒子推動。

所以屬性意義如下:

  • Colide: 要不要跟別的nDynamic物體碰撞
  • Self Colide 同一套粒子之間要不要碰撞

16. 控制推動力的風格與強度

Force Filed Generation 標籤

  • Point Force Field :  thickness relative ( 類似天女散花 直線飛出) /  off 則是像煙霧亂竄 ,預設off
  • 其他參數改可強度動態

17. lifspan 標籤

18.  透明度

  • opacity 以及下面的 opacoty scale,一起搭配,就跟 radius 一樣的作法。

19. 其他 shading 調法都類似

20. nparticle 也可以產生風場  (不是碰撞喔!)

  • 設定  Wind Push Direction > 0  就可以產生風場,去影響別的nDynamic 物體

21.nparticleShape 的 Dynamic properties 的 Drag !=0 則會有一些內阻力

22. 簡單的約束

  • 若是 nCloth,選錨點, nConstraint > Transform,就可以約束該點不動
  • 若是 particle,選particle,nConstraint > Transform,就可以約束該particle不動
  • nConstraint > component to component,可以把同一套物體之間互相的約束 ,並且若 Connection Method = With in Max Distance ,就可以設定在距離內的物體都會互相串連(約束)

23. 串珠練習

  • 用線發射 nparticle (假如點不夠就 Edit Curve > Rebuild)
  • 朝下方向性發射,暫時關閉 nucleus 的場
  • 控制速率,太低粒子重疊,會自碰撞導致累積;太高,粒子距離不均且太遠
  • 在滿意的狀態,執行初始
  • 關閉發射速率 = 0
  • 切換到 particle 層級,先使最頂一排的 particle 約束住(nConstraint > Transform)
  • 然後回到 Object Mode,執行 nConstraint > component to component
  • 最後調整 With in Max Distance 與 Max Distance,使全部串珠串起來
  • 開啟 nucleus 的場,檢查動態,可微調 Max Distance觀察

 789-2 

24. nparticleShape.position

個別粒子的位置

vector $a = nparticleShape1.position
print ($a.x)

25. 精確指定錨點來發射 nparticle

  • 選發射器 →  Perpoint Emission Rate,可看到 Use PP rate 開啟,這時候去選模型,看到每一錨點都有可控的發射屬性可以設定了
  • 切到錨點級別,觀察想使用的錨點號碼,使用 ls -sl
string $vv[]=`ls -sl`;
for($i in $vv)print $i;
// Result: pCube1.vtx[0:7] //

26. 果醬案例

概要

  • 在麵包上涂 Water 類型的 nparticle
  • 使麵包與粒子碰撞
  • 使刀子與粒子碰撞 (稍後做沒關係,畢竟這樣需要多解算一次,可能會拖慢速度)
  • 轉多邊形

步驟

  • 描繪粒子時,Sketch particle 勾選(間距),增加一點 Number of partcile,描繪。
  • nParticleShape > Collision 標籤 Stickness 增加黏著。
  • liquid simulation >
  • viscosity 果醬應該調高
  • liquid radius scale 粒子間互相推擠的效果程度,越高越排斥
  • imcompress ,不可壓縮性 (增加 substeps 會強調它的作用)
  • rest Densoty = 2 大多數液體,在每一點允許最多兩粒子交疊
  • 依據上面的屬性調整果醬的動態,然後轉 polygon (↑ Blobby Radius Scale ,微調其他 Output Mesh ,決定果醬的 Mesh 外觀)
  • 如果忘記勾選 nSolver > AE Display > Material Node ,那就算選多邊形,屬性編輯器內也不會自動出現材質節點,這樣不方便

28. 醬汁

  • 用圓片發射 (Curve 生環→ Edit Surface > Plannar)
  • 模型從表面發射
  • 注意!由於nparticle會互相碰撞,所以預期行為不太對時,注意一下粒子密度or大小,也許過高導致推擠、堆積。
  • 此外 scale attribute 也要注意。  =1 代表一格一公尺喔!  而盤子是 30 cm 不是 30m 喲!
  • 考慮dynamics properties > damp
  • 改善粒子滑落間距(也可以嘗試 substeps 提高精確)

可調整

  • Collision 標籤的 Tickness ,碰撞厚度,給予適當的值,使醬汁跟表面有互動感
  • Collision 的摩擦力與黏著
  • Liquid Simulation 的黏滯

上材質,考慮高光亮度,表現醬汁。

29. nCache

  • nCache除了加快速度,還有很多用途,例如、你已經非常滿意動態,可是粒子大小如果再大一點點就好了。但問題是,調大粒子大小,就會破壞模擬動態。
  • 所以先Cache,再調大小,選粒子→ nCache > Create New Cache 口
  • 可選詳細選項時間範圍 、步進格數。
  • 建立後,就可以去調整粒子大小,而不影響模擬的動態。

30. Thick Clouds

  • 選擇此類型,會多生成一個 fluid 節點,幫助 Render,有許多 Preset 可以用(到大綱檢視) (只有 ThickClous有)

  791 

  • 想一個效果,例如煙囪,調整發射方向、速度、密度、大小、透明
  • 還可以找到自動生成的 particleSamplerinfo,因為有此節點的自動產生,所以其粒子屬性才可以直接看到算圖結果。(所有 nparticle都有)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料