您所在的位置 : IT客 » 媒體動畫 » Maya

Maya流體粒子方法製作高細節導彈拖尾特效(下)

本文承接《》

11、基本上最重要最有用的參數都添加好了,不過還有另外兩個流體參數在某些情況下可能需要控制的,一個是流體的透明度(Transparency)參數(用於模擬煙霧衰減的效果),另一個是流體的Incand Tex Gain參數(用於控制流體材質對流體Incandescence的材質細節強度,可以用來增加導彈拖尾噴火區高亮部分的細節)。這倆參數不是必須的,當你要用的時候可以在粒子shape屬性中手動創建opacityPP屬性以及UserScalar3PP屬性來分別控制流體的transparency參數和incandTexGain參數。

12、當這些屬性都添加好,也都把particleSamplerInfo和fluidShape按照上文所述關聯好後,應該如下圖所示:

Maya流體粒子方法製作高細節導彈拖尾特效(下)

Maya流體粒子方法製作高細節導彈拖尾特效(下)

我們再來仔細回顧一下particleShape――particleSamplerInfo――fluidShape三者的關係:

particleShape對應屬性名

particleSamplerInfo對應屬性名

fluidShape對應屬性名

radiusPP

radiusPP

沒有,自動生效,不用管

opacityPP

outTransparency

transparency(非必須)

userScalar1PP

userScalar1PP

textureTime

userScalar2PP

userScalar2PP

incandescenceInputBias

userScalar3PP

userScalar3PP

incandTexGain(非必須)

userVector1PP

userVector1PP

textureOrigin

13、理清這些關係後,我們來看看我們要怎麼控制流體的這些個參數運動,依據什麼來運動?如果使用的是ramp貼圖,那依據的是粒子的年齡,確切的說,是歸一化的年齡(ageNormalized),也就是說粒子出生的時候位於ramp圖的V座標=0的地方,死亡的時候位於ramp圖的V座標=1的地方,見下圖的映射關係。

Maya流體粒子方法製作高細節導彈拖尾特效(下)

如果使用的是表達式,那就是個人的任意控制了。

14、以下表格是粒子PP屬性的控制方式及通常值域:

particleShape對應屬性名

控制方式

個人經驗值域範圍

radiusPP

右鍵建立V向ramp

依據場景大小

opacityPP

右鍵建立V向ramp

userScalar1PP

右鍵建立V向ramp

粒子不活太久建議0-0.2

userScalar2PP

右鍵建立V向ramp

1-(-1)

userScalar3PP

右鍵建立V向ramp

userVector1PP

表達式設置不同的固定的值

別是純整數就行

15、在屬性添加及渲染測試的時候,強烈建議添加一個屬性控制就測試渲染一會兒,等確定這個參數確實達到了你想要的效果再添加下一個參數!別一股腦全添加上全連上再測試渲染,這樣錯了都不知道該改哪兒。

16、做效果不用每次都重頭做,直接拿fluid_particles_sample.mb來改就可以,fluid_particles_sample.mb相當於一個參數預設。

四、補充說明&個人經驗

1、  爲了達到更精細的調節,值得控制的參數還有很多,例如fluid的implode,frequency、opacityTexGain、opacity捲欄下所有參數(包括每一個ramp點)、textureRotate、流體渲染質量quality。

2、  提高粒子(n粒子也一樣)的oversampling(過採樣)能夠儘量保證粒子發射的連續與均勻,這樣纔不會出現某些區域粒子過多過少斷開的問題,又能夠保證粒子數量儘可能的少。

3、  好萊塢一綫電影的特效也會用到類似的方法,只是人家的volume shader異常強大而已,例如絕密飛行裏空中燃油點燃的效果。主要靠的就是volume shader配合幾顆超大號的粒子實現的海量火焰變化細節。

4、  個人經驗參數:將fluidShape下Shading Quality下的Contrast Tolerance修改爲0.03,你會發現渲染效果幾乎不變,渲染時間卻減少不少!但再提升這個參數效果損失就開始明顯,並且渲染速度也沒什麼提升了。

5、  Fluid particles用在nParticle上是一回事,只是nParticle和用particle比起來,可控性其實更強,但是上手更難一些。

6、  渲染器的選擇:

7、  Maya software渲染器(sw)雖快,但他不支持真正的流體相互投影,只支持同一個粒子上的fluid shader的自陰影。在不考慮流體相互投影的情況下,例如做側面光照的導彈拖尾(長條狀、不粗)用sw來渲染效果也夠,不失爲一種提高效率的方法。Mental ray(mr)雖慢,但是其計算方式是以統一的體渲染來計算整個場景的體積物體的,結果就是光照的正確性,效果會更真實。建議能用sw就用sw,因爲快不少!使用我給的屬性連接方法無論用sw或者mr渲染,形態都能保證一致。

8、  關於粒子Per Particle(Array)Attributes列表中屬性的使用:

儘量不要使用任何自定義參數(包括userScalar之類的)去表達式等於particleShape中任何會隨着別的參數變化而變化的量的屬性(例如velocity、position),因爲有的可能導致粒子出生一瞬間取值錯誤的問題。

儘量不要用Per Particle(Array)Attributes列表中的參數去表達式等於另外一個被ramp控制的參數,這樣粒子出生一瞬間取值鐵定有問題。

9、  經過測試,particleSamplerInfo節點中sw與mr在渲染中都能認的屬性:

outColor(對應粒子的全局顏色屬性和rgbPP)
outTransparency(等於負的opacityPP)
ageNomalized
age
birthPosition
birthWorldPosition
rgbPP
opacityPP(等於負的outTransparency)
userScalar 1-5PP
userVector 1-5PP

10、  MR渲染時,particleSamplerInfo不能直接調用的屬性:

birthTime
worldPosition
position

解決方法:例如,建立userScalar1PP = birthTime,用uerScalar1PP去控制你想控制的流體參數。

11、  particleSamplerInfo中的:

outIncandescence――mentalray認,sw不認

incandescencePP――maya sw認,mr不認

所以很噁心,爲了保證兼容性,於是我創建userScalar1PP去控制incandenscenceInputBias,nParticle也存在這樣的問題。

12、粒子儘可能不要“非常親密”地相互重疊,也就是說儘量不要使兩顆或多顆粒子接近於相互重疊在一起!因爲重疊的情況下渲染器raytrace計算過程會變得極其緩慢,慢到爆漿。

以上內容就是我所掌握的有關“流體粒子方法”的技術細節以及在《風暴行動》導彈拖尾特效製作中的應用,在以後的教學文章裏我會講到如何用流體粒子方法製作爆炸,以及更進一步的《風暴行動》中上千萬TNT當量級的核爆效果。

-Maya流體粒子方法製作高細節導彈拖尾特效-全文完

轉自:http://hi.baidu.com/cg_mike/blog/item/34047408060febd53bc763ec.htm

頂一下
(0)
踩一下
(0)

發表評論:

昵稱: *
內容:
驗證碼:
rss· 投稿· 加入收藏· 手機版