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優先權比這裡高。
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觀察
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有)
- 想一個效果,例如煙囪,調整發射方向、速度、密度、大小、透明
- 還可以找到自動生成的 particleSamplerinfo,因為有此節點的自動產生,所以其粒子屬性才可以直接看到算圖結果。(所有 nparticle都有)
Leave a Reply