1. 程式人生 > >unity粒子編輯器詳解

unity粒子編輯器詳解

一、簡介

上一節已經介紹過了在Unity 5.x中兩種建立粒子效果的方式(方式1、方式2)。

這一節我們主要學習第2種方式的基本概念和用法。

Unity 5.x提供的新版粒子系統生成器(Particle System)也叫Shuriken粒子系統,該生成器採用模組化管理,個性化的粒子模組,配臺粒子曲線編輯器,使使用者很容易就能創作出各種繽紛複雜的粒子效果。

1、粒子系統檢視器

粒子系統檢視器 (Particle System Inspector) 每次顯示一個粒子系統(當前選擇的粒子系統),如下圖所示:

image

通過使用模組,單獨的粒子系統可以顯示各種複雜的行為。

它們也可以通過分組到粒子效果 (Particle Effects) 進行擴充套件。

2、粒子系統編輯器

單擊檢視器中的【開啟編輯器 (Open Editor)...】按鈕,就會開啟粒子編輯器視窗(Particle System Editor),該視窗中用於顯示場景樹中相同根下的所有粒子系統。

在粒子系統編輯器 (Particle System Editor)視窗中,可以在【顯示全部 (Show All)】和【顯示選定 (Show Selected)】之間切換。【顯示全部 (Show: All)】將渲染整個粒子效果。【顯示選定 (Show: Selected)】只渲染選定的粒子系統。

選定的粒子系統將在粒子編輯器中用藍色邊框高亮顯示,也在層級檢視 (Hierarchy) 中顯示為藍色。點選粒子系統左上角的圖示,可以在層級檢視 (Hierarchy View) 和粒子編輯器 (Particle Editor) 中更改選擇。如果要多選,按住Ctrl鍵再用滑鼠單擊選擇即可。

3、場景檢視編輯

建立和編輯粒子系統時,既可以利用檢視器 (Inspector)直接修改,也可以利用擴充套件的粒子系統編輯器視窗來修改。不論採用哪種方式,所做的更改都會反映在場景檢視 (SceneView) 中。

在場景檢視中,還有一個預覽面板 (Preview Panel),利用它可在“編輯模式 (Edit Mode)”下通過播放 (play) 、暫停 (pause) 、停止 (stop)和清除播放時間 (scrubbing playback time)等操作來控制當前選擇的粒子效果的播放:

image

拖動【播放時間(Playback Time)】標籤,即可執行清除播放時間 (Scrubbing play back time) 操作。所有播放 (Playback) 控制元件都有預設的快捷鍵,另外還可以在偏好設定視窗 (Preferences window) 中自定義快捷鍵。

4、曲線編輯器

在檢視器檢視中,還可以直接利用粒子系統曲線編輯器編輯粒子效果。

檢視器中粒子系統模組的很多屬性描述了“值”隨“時間”變化的情況。該變化可用 MinMax 曲線 (MinMax Curves) 來描述。這些時間動畫屬性(例如大小和速度)的右邊都有一個下拉選單。例如,單擊【Start Lifetime】最右側的下拉選單,可選擇:

image

含義如下:

(1)Constant--常量

該屬性值不隨時間變化。

(2)Random Between Two Gradients--在兩個漸變中隨機選取值

該屬性值通過漸變 (RGBA) 隨時間變化,並在漸變編輯器指定的兩個值中隨機選取。

(3)Curve--曲線

該屬性值根據曲線編輯器 (Curve Editor) 中規定的曲線隨時間變化。

當選擇【Curve】時,就會立即在【Particle System Curves】中顯示MinMax曲線:

image

曲線中隨機生成的值在最小、最大麴線之間,屬性值會沿著生成的曲線隨時間變化。比如,你可以利用上粒子系統曲線編輯器(Particle System Curves)將隨機值改為下面的形式:

image

編輯器中的 x 軸代表時間從 0 到持續時間 (Duration) 屬性指定的值,y 軸代表動畫屬性對應每個時間點的值。y 軸範圍可在編輯器右上角的數字欄位中調節。

也可以分別單擊編輯器(上面的圖)中不同的曲線,觀察場景中粒子效果的變化。

注意,【-】將刪除當前選中曲線,【+】將優化曲線(即最多使用 3 個鍵就可將曲線變成引數化曲線)。

5、Velocity over Lifetime和Limit Velocity over Lifetime

如果勾選【Velocity over Lifetime】和【Limit Velocity over Lifetime】(見下圖):

image

那麼,你還可以用更直觀的方式用拖放修改值去更改這些引數(注意更改引數時播放預覽介面中粒子效果的變化),例如:

image

6、顏色和線性漸變

對於處理顏色的屬性,粒子系統 (Particle System) 採用顏色和線性漸變編輯器 (Color and Gradient Editor)讓你設定該屬性的值。它和曲線編輯器的工作方式相似。

基於顏色的屬性在右邊有一個下拉選單,可以從選單中選擇:

  • 線性漸變 (Gradient):
  • 在兩個線性漸變中隨機 (Random Between Two Gradients)選擇取值:漸變 (RGBA) 隨時間變化,並在漸變編輯器指定的兩個值中隨機選取。
image

漸變 (RGBA) 隨時間而變化,可在漸變編輯器中編輯。

線性漸變編輯器 (Gradient Editor) 用來描述漸變隨時間而變化的範圍。它繪製了顏色(RGB 空間,在底部由標記描述)和 Alpha(在頂部由標記描述)。

可以通過點選靠近矩形頂部的區域來為 Alpha 值新增新標記,通過點選靠近底部的區域來為顏色 (Color) 新增新標記。這些標記可以沿著時間線直接拖動。

如果選擇 Alpha 標記,則可以通過拖動 alpha 值來編輯該標記的值。

如果選擇顏色 (Color ) 標記,可雙擊該標記或點選顏色條來修改顏色。

要刪除標記,直接將其拖至螢幕以外就行了。

二、粒子系統模組

粒子系統最開始預設只啟用少數模組。新增或刪除模組可更改粒子系統的行為。

可以通過按下粒子系統檢視器 (Particle System Inspector) 右上角的 (+) 號來新增新模組。這會彈出如下圖所示的選擇選單,在選單中選擇希望啟用的模組即可。

image

注意,由於這個截圖中勾選了【Show All Modules】選項,因此它會將所有模組都顯示出來(全部都允許),所以無法再勾選某個模組。如果你只希望選擇某一個或多個模組(僅允許選擇的模組起作用),取消勾選【Show All Modules】,然後再勾選對應的模組就行了。

下面介紹粒子系統在檢視器檢視中顯示的各模組的含義。

1、初始化模組(Particaal System)

該模組始終存在,無法刪除或禁用。

Duration:持續時間。粒子系統 (Particle System) 發射粒子的持續時間。

Looping:迴圈。粒子系統 (Particle System) 是否迴圈。

Prewarm:預熱。只可預熱迴圈系統,這意味著,粒子系統 (Particle System) 在遊戲一開始時就發射粒子,就像已發射了一個週期的粒子。

Start Delay:初始延遲。粒子系統 (Particle System) 發射粒子之前等待的延遲,以秒為單位。注意,預熱的迴圈系統不能使用初始延遲。

Start Lifetime:初始生命。粒子存活時間,以秒為單位(請參閱 MinMaxCurve)。

Start Speed:初始速度。粒子發射時的速度(請參閱 MinMaxCurve)。

Start Size:初始大小。粒子發射時的大小(請參閱 MinMaxCurve)。

Start Rotation:初始旋轉。粒子發射時的旋轉(請參閱 MinMaxCurve)。

Start Color:初始顏色。粒子發射時的顏色(請參閱 MinMaxGradient)。

Gravity Modifier:重力修改器。粒子在存活期間受到的重力影響。

Inherit Velocity:繼承速度。控制粒子速率的因素應繼承粒子系統 (Particle System) 的轉換(對於移動中的粒子系統)。

Simulation Space:模擬空間。模擬本地座標系或世界座標系中的粒子系統 (Particle System)。

Play On Awake:喚醒時播放。如果啟用該項,粒子系統 (Particle System) 會在其建立時自動開始播放。

Max Particles:最大粒子數。粒子系統 (Particle System) 可發射的最大粒子數量。

2、發射模組(Emission)

image

控制粒子發射的速率,允許在某個時刻生成大量粒子(粒子系統 (Particle System) 存續期間)。在爆炸時非常有用,那時需要一次建立大量粒子。

速率 (Rate):單位時間 (Time)(每秒)或單位距離 (Distance)(每米)發射的粒子數量(請參閱 MinMaxCurve)。

突發 (Bursts)(僅限時間 (Time) 選項下):新增粒子系統 (Particle System) 存續期間發生的粒子爆發。

時間和粒子數量 (Time and Number of Particles):指定發射規定數量粒子的時間(在存續期內,以秒為單位)。用“+”和“-”調節爆發數量。

3、形狀模組(Shape)

image

Shape:定義發射器的形狀,單擊右側的下拉框可選擇:球體 (Sphere)、半球體 (Hemishpere)、圓錐 (Cone)、立方體 (Box) 、網格 (Mesh)。可沿著表面法線或隨機方向施加初始力。

(1)球體(Sphere)

半徑 (Radius) 球體的半徑。(也可以在場景檢視 (Scene View) 中用手柄操作)。

從外殼發射 (Emit from Shell) 從球體外殼發射。如果禁用此項,粒子將從球體內部發射。

隨機方向 (Random Direction) 粒子是在隨機方向還是沿著球體表面法線方向發射?

(2)半球體 (Hemisphere)

半徑 (Radius) 半球體的半徑。(也可以在場景檢視 (Scene View) 中用手柄操作)。

從外殼發射 (Emit from Shell) 從半球體外殼發射。如果禁用此項,粒子將從半球體內部發射。

隨機方向 (Random Direction) 粒子是在隨機方向還是沿著半球體表面法線方向發射?

(3)圓錐 (Cone)

角度 (Angle) 圓錐的角度。如果角度為 0,粒子將在一個方向發射。(也可以在場景檢視 (Scene View) 中用手柄操作)。

半徑 (Radius) 發射點的半徑。如果值接近零,則將從一點發射。如果值超過 0,將建立一個帽子狀的圓錐,粒子從一個圓盤而非一個點發射。(也可以在場景檢視 (Scene View) 中用手柄操作)。

長度 (Length) 發射量的長度。僅從內部 (Volume) 或內部外殼 (Volume Shell) 發出時可用。(也可以在場景檢視 (Scene View) 中用手柄操作)。

發射位置 (Emit From) 確定從哪裡發射出。可能的值有底部 (Base)、底部外殼 (Base Shell)、內部 (Volume) 和內部外殼 (Volume Shell)。

隨機方向 (Random Direction) 粒子是在隨機方向還是沿著圓錐方向發射?

(4)立方體 (Box)

立方體 X 軸 (Box X) 立方體 X 軸的縮放。(也可以在場景檢視 (Scene View) 中用手柄操作)。

立方體 Y 軸 (Box Y) 立方體 Y 軸的縮放。(也可以在場景檢視 (Scene View) 中用手柄操作)。

立方體 Z 軸 (Box Z) 立方體 Z 軸的縮放。(也可以在場景檢視 (Scene View) 中用手柄操作)。

隨機方向 (Random Direction) 粒子是在隨機方向還是沿著立方體 Z 軸方向發射?

(5)網格 (Mesh)

型別 (Type) 粒子可從頂點 (Vertex)、邊 (Edge) 或面 (Triangle) 發射。

網格 (Mesh) 選擇網格 (Mesh) – 作為發射形狀。

隨機方向 (Random Direction) 粒子是在隨機方向還是沿著網格表面方向發射?

4、存活時間的速度模組(Volocity over Lifetime)

image

直接動畫化粒子的速率。主要用於具有複雜物理特性的粒子,不過該屬性只演示簡單的視覺行為(例如飄蕩的煙霧和溫度降低),與物理世界的互動很少。

XYZ:使用曲線常量值或曲線間的隨機值來控制粒子的運動。請參閱 MinMaxCurve。

Space:空間。

Local/ World:本地/世界。速度值是本地座標系還是世界座標系中的值。

5、存活時間的限制速度模組(Limit elocity over Lifetime)

image

基本上用於模擬阻力。如果超過某些閾值,就會抑制或固定速率。可以按每個軸或每個向量長度配置。

Separate Axis:分離軸。用於設定每個軸控制。

Speed:速度。指定量級為常數或由限制所有軸速率的曲線指定量級。請參閱 MinMaxCurve。

Dampen:阻尼。(0-1)之間的值,控制應減慢的超過速率的幅度。例如,值為 0.5,則將超過的速率減慢 50%。

6、存活時間的受力模組

image

XYZ 使用曲線常量值或曲線間的隨機值來控制作用於粒子上的力。請參閱 MinMaxCurve。

空間 (Space) 本地 (Local)/世界 (World):速度值是本地座標系還是世界座標系中的值。

隨機化 (Randomize) 隨機化每幀作用於粒子上的力。

7、存活時間的顏色模組

顏色 (Color) 控制每個粒子在其存活期間的顏色。如果有些粒子的存活時間短於其他粒子,它們將運動得更快。採用常量顏色、兩色隨機,使用漸變動畫化顏色或使用兩個漸變指定一個隨機顏色(請參閱漸變)。請注意,該顏色將乘以初始顏色 (Start Color) 屬性中的值 – 如果初始顏色為黑色,那麼存活時間的顏色 (Color Over Lifetime) 不會影響粒子。

8、顏色速度模組

image

根據粒子速度動畫化粒子顏色。將定義範圍內的速度重新對映到顏色上。

顏色 (Color) 用於重新對映速度的顏色。使用漸變來改變顏色。請參閱 MinMaxGradient。

速度範圍 (Speed Range) 界定速度範圍的最小值和最大值,該範圍用於將速度重新對映到顏色上。

10、存活時間的大小模組

image

大小 (Size) 控制每個粒子在其存活期間的大小。採用固定大小,使用曲線將大小動畫化或使用兩條曲線指定隨機大小。請參閱 MinMaxCurve。

11、大小速度模組

image

大小 (Size) 用於重新對映速度的大小。將曲線用於不同大小。請參閱 MinMaxCurve.

速度範圍 (Speed Range) 界定速度範圍的最小值和最大值,該範圍用於將速度重新對映到大小上。

12、存活時間的旋轉模組

image

以度為單位指定值。

角速度 (Angular Velocity) 控制每個粒子在其存活期間的旋轉速度。採用固定旋轉速度,使用曲線將旋轉速度動畫化或使用兩條曲線指定隨機旋轉速度。請參閱 MinMaxCurve。

13、旋轉速度模組

image

角速度 (Angular Velocity) 用於重新對映粒子速度的旋轉速度。使用曲線來改變旋轉速度。請參閱 MinMaxCurve。

速度範圍 (Speed Range) 界定速度範圍的最小值和最大值,該範圍用於將速度重新對映到旋轉速度上。

14、外力模組

乘數 (Multiplier) 確定粒子受風帶影響程度的縮放比例(即風力向量乘以該值)。

15、碰撞模組

image

為該粒子系統 (Particle System) 中的粒子設定碰撞。現在支援世界碰撞和平面碰撞。平面碰撞對簡單碰撞檢測而言非常有效。通過引用場景中的現有變換或為此建立新的空遊戲物件 (GameObject) 來設定平面。平面碰撞的另一個優勢是具有碰撞平面的粒子系統可設為預設。世界碰撞採用光線投射,所以必須小心使用,以確保良好效能。然而,在近似碰撞可接受的情況下,低 (Low) 或中等 (Medium) 質量的世界碰撞非常有效。

任何碰撞模組 (Collision Module) 的常見屬性:

平面/世界 (Planes/World) 指定碰撞型別:平面 (Planes) 指平面碰撞,世界 (World) 指世界碰撞。

阻尼 (Dampen) (0-1) 粒子碰撞時,其將保持這一速度比例。除非設定為 1.0,否則粒子在碰撞後變慢。

反彈 (Bounce) (0-1) 粒子碰撞時,其會保持這一速度分量比例,該分量與碰撞平面垂直。

生命減弱 (Lifetime Loss) (0-1) 每次碰撞後初始生命週期 (Start Lifetime) 減弱比例。生命週期達到 0 後,粒子死亡。例如,如果粒子應該在第一次碰撞時死亡,則將該屬性設為 1.0。

最小殺死速度 (Min Kill Speed) 粒子在被殺死前的最小速度。

傳送碰撞資訊 (Send Collision Messages) 確定是否要傳送碰撞資訊,從而確定是否觸發遊戲物件 (GameObjects) 和 ParticleSystems 上的 OnParticleCollision 回撥。

只在平面模式 (Planes Mode) 中可用的屬性

平面 (Planes) 平面通過向變換分配引用來定義。該變換可為場景中的任何變換,且可動畫化。可以使用多平面。注意:Y 軸用作平面法線。

視覺化 (Visualization) 僅用於將平面視覺化:網格 (Grid) 或實體 (Solid)。

網格 (Grid) 渲染為小圖示,能快速指出在世界中的位置和方向。

實體 (Solid) 在場景中渲染平面,用於精確定位平面。

縮放平面 (Scale Plane) 調整視覺化平面大小。

粒子半徑 (Particle Radius) 因碰撞目的假設的粒子半徑。(因此,粒子視為球體。)

只在世界模式 (World Mode) 中可用的屬性

碰撞物件 (Collides With) 用於指定碰撞器的篩選器。選擇所有東西 (Everything),來與整個世界碰撞。

碰撞質量 (Collision Quality) 世界碰撞的質量。

高質量 (High) 每幀的所有粒子進行場景光線投射。注意:這是 CPU 密集型應用,只能使用 1000 個(場景寬度)或更少的同步粒子。

中等質量 (Medium) 在每幀中,粒子系統接收一部分全域性設定粒子光線投射計劃 (Particle Raycast Budget)(請參閱粒子光線投射計劃)。粒子以迴圈方式更新,其中在給定幀中不接收光線投射的粒子將查詢和使用快取記憶體中儲存的較舊碰撞物。注意:這類碰撞屬於近似碰撞,會遺漏一些粒子,特別是在角落處。

低質量 (Low) 除了粒子系統每四幀獲得一部分粒子光線投射計劃 (Particle Raycast Budget)之外,其他與中等質量 (Medium) 相同。

體素大小 (Voxel Size) 用於快取中等 (Medium) 和低 (Low) 質量設定中所用交集的體素密度。體素大小以場景單位為單位給出。通常會使用 0.5 – 1.0(假設使用公制單位)。

16、子發射器模組

image

是一個強大的模組,可在出現下列粒子事件時生成其他粒子系統 (Particle Systems):粒子產生、死亡或碰撞。

產生 (Birth) 該粒子系統 (Particle System) 中每個粒子產生時生成另一個粒子系統。

死亡 (Birth) 該粒子系統 (Particle System) 中每個粒子死亡時生成另一個粒子系統。

碰撞 (Collision) 該粒子系統 (Particle System) 中每個粒子碰撞時生成另一個粒子系統。

重要提示:需要使用碰撞模組 (Collision Module) 建立碰撞。請參閱碰撞模組 (Collision Module)。

17、紋理層動畫模組

image

在粒子存活期間動畫化 UV 座標。動畫幀以網格形式顯示,或者層中的每行都是單獨的動畫。幀可以用曲線動畫化或者是兩條曲線之間的隨機幀。動畫速度用“週期 (Cycles)” 定義。 重要提示:用於動畫的紋理是渲染器 (Renderer) 模組中所發現材質使用的紋理。

平鋪 (Tiles) 定義紋理的平鋪。

動畫 (Animation) 指定動畫型別:整層 (Whole Sheet) 或單行 (Single Row)。

整層 (Whole Sheet) 將整層用於 uv 動畫。

  • 時間幀 (Frame over Time) 在每個粒子存活期間,在整層上控制其 uv 動畫幀。採用常量,使用曲線將幀動畫化或使用兩條曲線指定隨機幀。請參閱 MinMaxCurve。
  • 單行 (Single Row) 將一行紋理層用於 uv 動畫。
  • 隨機行 (Random Row) 如果選中此項,起始行隨機,如果取消選中,則可以指定行指數(第一行為 0)。
  • 時間幀 (Frame over Time) 在每個粒子存活期間,在指定行內控制其 uv 動畫幀。採用常量,使用曲線將幀動畫化或使用兩條曲線指定隨機幀。請參閱 MinMaxCurve。
  • 週期 (Cycles) 指定動畫速度。

18、渲染器模組

image

渲染器模組顯示 ParticleSystemRenderer 元件的屬性。

注意,即使遊戲物件 (GameObject) 擁有 ParticleSystemRenderer 元件,其屬性也只能在此處顯示。刪除/新增此模組時,實際上是新增或刪除 ParticleSystemRenderer 元件。

渲染模式 (Render Mode) 選擇下列粒子渲染模式之一。

廣告牌 (Billboard) 讓粒子始終面向相機。

拉伸廣告牌 (Stretched Billboard) 使用下列引數拉伸粒子。

l 相機縮放 (Camera Scale) 決定拉伸粒子時考慮進來的相機速度影響程度。

l 速度縮放 (Speed Scale) 通過對比粒子速度來確定其長度。

l 長度縮放 (Length Scale) 通過對比粒子寬度來確定其長度。

水平廣告牌 (Horizontal Billboard) 讓粒子與 XZ 平面對齊。

垂直廣告牌 (Vertical Billboard) 面向相機時,讓粒子與 Y 軸對齊。

網格 (Mesh) 使用網格而非四邊形渲染粒子。

- 網格 (Mesh) 渲染粒子所用的網格引用。

法線方向 (Normal Direction) 值 0 至 1,確定法線與相機所成角度 (0) 及偏離檢視中心的角度 (1)。

材質 (Material) 廣告牌或網格粒子所用的材質。

排序模式 (Sort Mode) 粒子繪製順序可通過距離、最先生成或最晚生成來排列。

排序校正 (Sorting Fudge) 使用該項影響繪製順序。具有較小排序校正數值的粒子系統更可能放在最後繪製,因此顯示在其他透明物件(包括其他粒子)前面。

投射陰影 (Cast Shadows) 粒子是否會投射陰影?這由材質決定。

接受陰影 (Receive Shadows) 粒子是否會接受陰影?這由材質決定。

最大粒子大小 (Max Particle Size) 相對於視窗大小,設定最大大小。有效值:0-1。

三、粒子生成的相關屬性說明

當試圖表現不同粒子效果時,生成粒子的屬性諸如Size、Energy、Emission、Velocity會使粒子系統具有鮮明的個性。例如,Size較小時可以模擬繭火蟲或天空中的星星,較大時可以模擬老舊建築物中的灰塵。

Energy及Emission屬性可以控制粒子在螢幕中將保留多長時間及一次可以顯示出多少個粒子。比如火箭會有較高的Emission屬性來模擬濃煙,而較高的Emergy屬性則可模擬空氣中煙霧的緩慢擴散效果。

Velocity屬性控制著粒子的運動。可通過指令碼來改變Velocity值以便產生更好的效果,或者若想模擬出像風那樣持續的效果,可以設定Velocity屬性的X和Z值,這會產生粒子類似被吹走了的效果。

四、使用粒子生成器時注意的事項

要謹慎使用大量粒子的效果。粒子數量越多對硬體的要求越高。

Emit屬性要與粒子動畫器中的Auto Destruct (自動銷燬)屬性結合使用。通過指令碼可以使發射器停止發射粒子,然後自動銷燬功能會自動地銷燬粒子系統及它所繫結的遊戲物件。