1、最終效果和製作步驟
這是一個深水炸彈在水下爆炸的場景,長度300幀,前200幀深水炸彈緩慢下落,200幀時爆炸,爆炸瞬間產生一個大火球然後迅速收縮並伴有強烈閃光,隨後產生氣泡和碎片,氣泡搖搖擺擺地浮上水麵,碎片慢慢沉入水底。
![]() | ![]() |
效果 | 實現方法 |
深水炸彈爆炸 | 使用PArray粒子係統,並設置該粒子係統以物體(深水炸彈)的碎片作為粒子 |
爆炸時強烈閃光 | Omni光源Multiplier參數瞬間增強,同時為其添加Volume Light效果 |
爆炸時先膨脹後收縮的火球 | 動態調整球體半徑並為其賦予火球材質 |
爆炸產生的碎片受到水的阻力迅速減速 | Drag空間彎曲和一個球形Gravity空間彎曲同時作用 |
氣泡搖搖擺擺升到水麵 | PCloud粒子係統產生氣泡,Wind空間彎曲使氣泡搖擺 |
碎片下沉到水底 | Gravity空間彎曲作用於粒子係統 |
2、爆炸
我們可以設置PArray粒子係統將發射源的碎片作為粒子發射出去,PArray粒子係統的這種特性非常適合製作各種物體爆炸效果,下麵我們就介紹這種方法。
1)啟動3DSMAX,打開Create(創建)->Geometry(幾何體),選擇子類型為Particle System,單擊PArray按鈕在場景中任意位置拖動建立粒子係統,將其命名為“爆炸_PArray”,具體放在什麼位置無關緊要。
2)選擇粒子係統“爆炸_PArray”,進入Modify(修改)麵板,在Basic Parameters(基本參數)卷展覽中單擊Pick Object(選擇物體)按鈕。這一步操作是選擇粒子係統“爆炸_PArray”的發射器,然後選擇深水炸彈物體(名為DepthCharge,這是初始場景中提供的物體,名稱為英文)。
3)在Particle Timing(粒子時間控製)中根據深水炸彈的爆炸時間設置Emit Start(發射起始時間)和Emit Stop(發射結束時間),這個例子中,爆炸持續了大約5秒左右,因此,我們將時間跨度設置為100,注意,這裏的單位是幀。
4)在Particle Type(粒子類型)卷展欄中設置粒子類型為Object Fragments(物體碎片),並在Object Fragment Controls(物體碎片控製中)設置Number Of Chunks(碎片數量)參數。
5)這時如果拖動時間滑塊就可以看到動畫效果了,但是你會發現碎片在場景中仍然使用小十字星號顯示。為了在編輯狀態下看到更加清楚的效果,可以在粒子係統“爆炸_PArray”的修改麵板中的Viewport Display下選擇Mesh,這樣在編輯狀態下也可以看到比較清楚的破片效果。注意,這個設置隻對編輯狀態起作用。
3、空間彎曲
現在,粒子爆炸出來之後迅速向四周散開,並且不會減速,這種效果在太空中還差不多,但是要放在水下就如論如何說不過去了。
通過前麵的介紹可以知道,製作阻力效果可以使用 Drag 空間彎曲。但是在水下爆炸場景中,水的阻力表現得比較特殊,碎片不僅會向外飛出,而且會有向爆心收縮的趨勢。單純用 Drag 空間彎曲不能製作出這種效果。
我們可以考慮添加一個球型 Gravity 空間彎曲並使其隨著深水炸彈一起運動,當深水炸彈爆炸時迅速提高這個 Gravity 空間彎曲的 Strength (強度)參數,緊接著再迅速減小,這樣破片在水下運動的效果就比較逼真了。下麵在製作的時候,我們將把這個 Gravity 空間彎曲命名為“收縮 _Gravity ”。
深水炸彈爆炸後,碎片會慢慢地沉到水底,很顯然,我們還需要另外再添加一個 Gravity 空間彎曲,這是一個普通的平麵型空間彎曲,它將使碎片下沉。
1)打開 Create (創建) ->Space Warps (空間彎曲) ->Force (力),單擊 Drag 按鈕在場景中拖動建立 Drag 空間彎曲,將其命名為“阻力 _Drag ”。進入 Modify (修改)麵板中修改其參數,選擇阻尼方式為 Linear Damping (線形阻尼)並設置 X 、 Y 、 Z 三個方向上的值為5% 。
2)打開 Create (創建) ->Space Warps (空間彎曲) ->Force (力),單擊 Gravity 按鈕,在場景中拖動建立一個重力空間彎曲,將其命名為“收縮 _Gravity ”,並設置其為Spherical(球形)。
將時間滑塊拖動到 0 幀,在“收縮 _Gravity ”的參數麵板中設置 Strength( 強度 ) 為 0 , Decay 0.01 。注意,設置 Strength 為 0 隻是暫時的,下一步我們將為這個參數添加運動控製器以便動態控製其參數,所使用的方法和前麵介紹的動態調整水流的 Speed 參數所使用的方法一樣。
單擊工具欄中的 Align (對齊)按鈕(快捷鍵 Alt+A ),然後單擊深水炸彈物體,從彈出的對話框中同時選擇 X 、 Y 、 Z Position 。這樣可以將空間彎曲“收縮 _Gravity ”和深水炸彈物體的中心準確地對齊起來。
單擊主工具欄中的 Select And Link (選擇並鏈接)工具,單擊空間彎曲“收縮 _Gravity ”然後拖動鼠標(注意,這時鼠標會拖出一條虛線),然後在深水炸彈物體上單擊,這樣可以將空間彎曲“收縮 _Gravity ”定義為深水炸彈的子物體,兩者將同步移動。當炸彈爆炸發生時,空間彎曲“收縮 _Gravity ”就能夠在爆心位置對碎片起作用。
在空間彎曲“收縮 _Gravity ”的修改麵板的 Strength 輸入框中單擊鼠標右鍵選擇 Show In Track View (在軌跡視圖中顯示)。然後在軌跡視圖中的 Strength 條目上單擊鼠標右鍵選擇 Assign Controller (指定控製器),從彈出的對話框中選擇 Bezier Float (貝茲浮點控製器)。
完成控製器的指定之後,在軌跡視圖窗口中首先單擊右下角 Zoom (縮放)按鈕調整軌跡視圖的大小,使縱向的刻度為 1.0 左右(我們希望空間彎曲“收縮 _Gravity ”的 Strength 參數動態的最大值為 1.0 ),橫向的刻度定位到 200 幀,也就是爆炸發生的那一幀。單擊工具欄上的 Add keys (添加關鍵點)按鈕,在視圖中縱向刻度為 0 、橫向刻度為 200 的位置單擊鼠標左鍵。這時將會出現一個白色的空心點,表示在這個幀的位置上 Strength 參數有了一個關鍵幀。
拖動橫向滑塊,在 210 幀和 220 幀執行同樣的操作。三個關鍵點添加完成之後,單擊工具欄上的 Move Keys (移動關鍵點)按鈕,選擇 210 幀位置的那個關鍵點(我們希望在這個位置時參數達到峰值),將其向上移動到縱向刻度大於為 1.0 的位置。這樣調整的意義是,讓空間彎曲“收縮 _Gravity ”的 Strength 參數從 200 整開始(也就是爆炸開始時)均勻變化,到 210 幀時達到 1 ,隨後減小,到 220 幀時恢複為 0 。順便說一下,從這個圖形也能非常直觀地看出 Bezier Float 控製器的作用,也就是讓參數值沿一條光滑的曲線均勻變化。
至此,空間彎曲“收縮 _Gravity ”的製作才算告一段落,夠麻煩吧。理一下思路:我們正在製作對粒子係統施加影響的空間彎曲,已經完成了兩個,分別是用於破片減速的 Drag 空間彎曲和用於破片收縮的 Gravity 空間彎曲。還少一個,就是讓破片下落的 Gravity 空間彎曲。
3)再次單擊 Gravity 按鈕,在場景中拖動建立第二個 Gravity 空間彎曲,將其命名為“下沉 _Gravity ”,選擇類型為 Planar (平麵)。因為物體在水下下沉的加速度受到水的浮力影響不會像在空氣中那樣快,因此需要設置 Strength 為較小的值,在這個例子中我們用 0.1 。
4)三個空間彎曲都完成了,現在使用主工具欄中的 Bind To Space Warp (綁定到空間彎曲)工具將三個空間彎曲全部綁定到粒子係統“爆炸 _PArray ”上。完成操作之後,空間彎曲“爆炸 _PArray ”的修改器堆棧應該是這樣的。
4 、火球
水下爆破場景有一個非常有趣的特點,就是會產生一個正球形的耀眼火球(大氣中爆炸時產生的火球是不規則的),這也是由於水體均勻強大的阻力引起的。製作這個效果的方法比較簡單,就是製作一個半徑首先迅速漲大,隨即迅速縮小的球體。
你可能首先想到用 Auto Key 來實現,但是如何才能讓球體的漲大縮小和爆炸以及碎片運動精確同步呢?這裏就要使用到 3DSMAX 的一個重要功能—— Wire Parameters (參數綁定)。通過將火球的 Radius (半徑)參數和上一步中建立的空間彎曲“收縮 _Gravity ”的 Strength (強度)參數綁定起來就非常完美地能達到預期的效果。
1)打開 Create (創建) ->Geometry (幾何體) ->Standard (標準),建立一個 Sphere (球體),命名為“火球 _Sphere ”,設置其 Radius (半徑)為零,將其放到深水炸彈爆炸的那個點上。
2)確保“火球 _Sphere ”物體處於選擇狀態(最好按空格鍵鎖定),單擊鼠標右鍵選擇 Wire Parameters (綁定參數),從彈出菜單中選擇 Object(Sphere)->Radius ,鼠標這時會拉出虛線。
移動鼠標單擊空間彎曲“收縮 _Gravity ”(如果選擇不方便,可以按 H 鍵打開選擇對話框進行選擇),從彈出的小菜單中選擇 Object(Gravity)->Strength ,這時 Parameter Wiring (參數綁定)對話框將會出現。
3)這個對話框的左右兩欄分別列出了即將綁定的兩個參數,左邊是“火球 _Sphere ”的,右邊是“收縮 _Gravity ”的。
我們希望得到的效果是,“收縮 _Gravity ”的 Strength 參數影響“火球 _Sphere ”的 Radius 參數,因此我們單擊中間的左向箭頭按鈕。這時兩個參數的顏色發生變化,影響其他參數的參數( Strength )變成了綠色,而受其他參數影響的參數( Radius )變成了紅色。完成以上操作之後單擊 Connect (連接)按鈕。
現在你可以關閉參數綁定對話框看一下動畫,是不是看不到火球?這是因為在上一步中我們漏掉了重要的一步。我們知道空間彎曲“收縮 _Gravity ” Strength 參數的變化範圍是 0-1 ,設置參數綁定之後“火球 _Sphere ”的 Radius 參數也會在同樣範圍內變化,半徑小於 1 的球體在場景中顯得太小了所以看不到。
這時我們需要使用參數綁定的另外一個重要特性,就是表達式運算功能。打開菜單 Animation (動畫) ->Wire Parameters (綁定參數) ->Parameter Wire Dialog (參數綁定對話框)重新打開參數綁定對話框。
在左右窗口中分別選擇綁定的兩個參數,然後將左下角的 Strength 換成 Strength*25 ,這樣做的意思是,原來的參數綁定關係不變,但是“火球 _Sphere ”的 Radius 參數不是簡單地等於 Strength 參數,而是 Strength*25 ,這樣球體的半徑就足夠大,效果自然就出來了。 完成以上操作之後,單擊 Update (更新)按鈕更新參數之間的綁定關係。
![]() |
![]() |
![]() | |
|
5 、閃光
僅僅有“火球 _Sphere ”效果仍然不夠真實,我們還需要製作爆炸瞬間光芒四射的效果。由於是在水中,光芒效果應該非常明顯。
對於光芒效果,我們首先應當想到使用體積光來製作。這個光源必須有兩個特性:其一,它會隨著“深水炸彈”物體一起下沉,這種效果可以通過將光源作為深水炸彈的子物體來實現,和前麵將“收縮 _Gravity ”作為深水炸彈子物體的方法完全一樣;其二,爆炸發生之前光源不發光,當爆炸時,光源亮度瞬間增強,隨後迅速減弱,這種效果可以通過將光源的 Multiplier (光強)參數和空間彎曲“收縮 _Gravity ”的 Strength 參數綁定來實現,這和上麵製作“火球 _Sphere ”的方法是完全一樣的。
1)打開 Create (創建) ->Light (燈光),單擊 Omni (泛光燈)按鈕,在場景中單擊建立光源,命名為“閃光 _Omni ”。
2)單擊工具欄上的 Select and Link (選擇並鏈接)按鈕,將光源“閃光_Omni ”和深水炸彈物體鏈接起來,使光源成為深水炸彈的子物體並隨之移動。
3)在光源“閃光 _Omni ”上單擊鼠標右鍵選擇 Wire Parameters (綁定參數),選擇 Object ( Omni Light ) ->Multiplier ,然後拖動鼠標到空間彎曲“收縮 _Gravity ”上單擊鼠標左鍵(也可以按 H 鍵打開選擇對話框進行選擇,更加方便),選擇 Object(Gravity )->Strength 。
在彈出的參數綁定對話框中單擊左向箭頭,也就是讓空間彎曲“收縮 _Gravity ”的 Strength 參數影響光源“閃光 _Omni ”的 Multiplier 參數,在左下側的對話框中設置為 Strength*10 ,原理和上麵介紹的一樣,直接用 Strength 參數強度不夠,因此將其乘以 10 得到光源“閃光 _Omni ”強度。
單擊 Connect (連接)按鈕完成參數綁定。
4)現在來添加光芒四射的效果。選擇光源“閃光 _Omni ”,進入 Modify (修改)麵板,在 Atmosphere&Effects (氣氛和效果)卷展覽中單擊 Add (添加)按鈕,從彈出的對話框中選擇 Volume Light (體積光)並單擊 OK 按鈕。
現在 Atmosphere & Effects 中多出了一個條目 Volume Light ,選擇它,並單擊 Setup 按鈕,在彈出的對話框中,設置體積光的 Density (密度)為 3.0 。
5)這時如果進行渲染,隻能看到一大個大霧球,幾乎沒有什麼光芒效果。下麵我們還需要對光源進行一些調整,選擇“閃光 _Omni ”,單擊鼠標右鍵,從彈出菜單中選擇“ Cast Shadows ”選項。
然後進入修改麵板,在光源的 Intensity/Color/Attenuation (飽和度 / 顏色 / 衰減)中分別選擇 Near Attenuation (近衰減)和 Far Attenuation (遠衰減)中選中 Use (啟用)複選礦,然後適當調節參數,你可以根據自己的喜好來,通常隻要減小 Far Attenuation 的 Start 參數就可以有比較好的效果了。
![]() | ![]() |
6 、氣泡
爆炸發生後會產生一團氣泡緩緩上浮,我們將使用 PCloud 粒子係統來製作水泡,並配合 Wind 空間彎曲來製作氣泡在上浮過程中搖擺不定的效果。
1 )打開 Create (創建) ->Geometry ( 幾何體 )->Particle System (粒子係統),單擊 PCloud 按鈕,然後在場景中拖動鼠標建立粒子係統,將其命名為“氣泡 _PCloud ”,這時它的圖標是一個大大的字母 C 。
選中粒子係統“氣泡 _PCloud ”,進入 Modify (修改)麵板,在 Basic Parameters (基本參數)卷展覽的 Particle Formation (粒子形成)中選擇 Object-Based Emitter (基於物體的發射器),然後單擊 Pick Object (選擇物體)按鈕並在場景中單擊“火球 _Sphere ”物體。這時粒子係統“氣泡 _PCloud ”的圖標會變成 Fill 。
基於物體的發生器是指讓氣泡從物體的“體”上而不是麵上產生出來,很顯然在這個場景中,我們需要氣泡從火球內部各個位置產生,因此選擇這個選項。
2)在 Particle Generation (粒子生成)卷展欄的 Particle Quantity (粒子數量)中,選擇 Use Rate ,設置一個較大的數值,比如 100 左右。
在 Particle Motion (粒子運動)中將 Speed (速度)設置為較小的值,比如 1 。在粒子運動方向中選擇 Direction Vector (方向矢量)也就是手工設置粒子固定的運動方向,這個選項下麵是 X 、 Y 和 Z 軸方向上的矢量值, X 、 Y 方向保持為默認值 0 , Z 軸方向隨便設置一個大於 0 的值即可,由於前麵 X 、 Y 的值被設置成了 0 ,因此不論 Z 的值怎麼設置,矢量的方向都是確定的。
3)現在設置氣泡的外觀,在 Particle Type (粒子生成)卷展欄中 Particle Types 中選擇 Standard Particles (標準粒子),然後在下麵選擇 Sphere (球體),氣泡當然是球形的。
在 Particle Generation (粒子生成)中的 Particle Size (粒子尺寸)下麵設置 Size (尺寸)、 Variation (變化)和 Grow For (生長),這些參數的含義前麵介紹煙霧和水流效果的時候都介紹了,你可以根據自己的需要進行設置,不必拘泥於本例中的設置值。
4)下麵我們要建立一個 Wind 空間彎曲作用於粒子係統“氣泡 _PCloud ”使其在上升過程中具有抖動效果。打開 Create (創建) ->Geometry (幾何體) ->Space Warp (空間彎曲),單擊 Wind 按鈕在場景中拖動建立空間彎曲,將其命名為“抖動 _Wind ”。注意 Wind 空間彎曲是有方向性的,注意調整其箭頭方向使其指向上方。
進入 Modify (修改)麵板,設置 Strength (強度)參數為 0.0 ,也就是不讓風對氣泡的速度產生影響,我們僅僅需要 Wind 空間彎曲的抖動效果作用於氣泡,對 Turbulence 、 Frequency 和 Scale 三個參數進行設置,具體的值可以根據自己的需要。
5)使用主工具欄上的 Bind To Space Warp 工具將空間彎曲“抖動 _Wind ”和粒子係統“氣泡 _PCloud ”綁定起來。
![]() | ![]() |
7 、水下氣氛
最後一個步驟是為場景添加 Fog (霧)來增強水下氣氛。
1)打開菜單 Rendering (渲染) -> Environment (環境),在 Environment And Effects (環境和效果)窗口中單擊 Atmosphere 下麵的 Add (添加)按鈕,從彈出的 Add Atmosphere Effect (添加氣氛效果)對話框中 Fog 然後單擊 OK 按鈕。
2)Fog 添加完成之後在 Environment And Effects (環境和效果)窗口中選擇 Fog 條目,窗口下方會自動展開其參數設置欄。單擊 Color 下麵的顏色框選擇一種接近海水的顏色,然後選中下麵的 Exponential 複選框,其他參數使用默認值就可以來了。
至此水下爆破效果的製作就完成了,我們對非事件驅動粒子係統的介紹也結束了。打開 Create->Geometry->Particle System 看看,這裏列出的 7 個粒子係統中,我們還有三個沒有介紹: Blizzard (暴風雪)、 Snow (雪)和 PF Source ( PF 源),前麵兩個比較簡單,從名字中就能看出其用途,對於它們將不作進一步的介紹,而 PF Source 是 Particle Flow Source (粒子流源)的縮寫,也就是我們在一開始曾經提到的“事件驅動粒子係統”(粒子流的別名),下一小節我們就開始介紹這種比較複雜同時也更加強大的粒子係統。