數碼資源網

文章頻道 軟件下載 安卓下載 蘋果下載

當前位置:首頁文章中心渲染專欄Maya → 硬件渲染粒子與軟件渲染元素結合

硬件渲染粒子與軟件渲染元素結合

時間:2005-12-17 16:42:58人氣:201作者:網友整理
潛入地獄v1.4.5
潛入地獄v1.4.5 for Android
  • 類型:卡牌遊戲大小:13.56M語言: 評分:3.6
  • 潛入地獄是一款結合了Roguelike元素的卡牌遊戲。濃霧具有特殊的遊戲機製,你...
立即下載
單人接龍王v1.3.9
單人接龍王v1.3.9 for Android
  • 類型:卡牌遊戲大小:71.31M語言: 評分:3.7
  • 單人接龍王是一款結合了Rogue元素的武俠卡牌遊戲。你在遊戲裏提升等級的同時收集...
立即下載
武林歪傳手遊v1.4.9
武林歪傳手遊v1.4.9 for Android
  • 類型:卡牌遊戲大小:22.20M語言: 評分:4.7
  • 武林歪傳手遊是一款魔幻格鬥風格的卡牌遊戲!這裏會有超級多的怪物等待著大家的收集!...
立即下載
I 、創建一個 Sprite 圖像

  用一個簡單的點發射器和軟件渲染粒子雲,創建一係列用作 sprite 紋理的圖像,粒子產生和消失的動畫——結合軟件渲染粒子雲的動畫和體積紋理——能夠製作出變化多端的動畫紋理。

1 、設置 Timeline Range :從 1 到 60

2 、創建一個點發射器

3 、第 30 幀, rate 關鍵幀為 100

4 、第 31 幀, rate 關鍵幀為 0

5 、設置粒子 lifespan 為 lifespanRandom

6 、設置 lifespanRandom 為 0.3

7 、設置 lifespan 為 1

  回放動畫,注意:第 60 幀粒子的生成和消失。

1 、設置 conserve 為 0.9

2 、增加一個紊亂場

3 、設置 magnitude 為 25

4 、設置 attenuation 為 0

5 、設置 frequency 為 2

6 、第 1 幀,關鍵幀 TranslateY 為 0

7 、第 60 關鍵幀,關鍵幀 TranslateY 為 5

  回放動畫,注意:粒子現在更隨機自由地運動並夾在一起。這些團塊在軟件渲染裏有更大的密度,給最終的精靈影像添加了更多的變換。

1 、創建一個粒子雲 shader

2 、設置顏色為 100% 的白色

3 、創建一個 Volume Noise 3D Texture

4 、將 3D Texture Placement 做為動畫紊亂場的父物體

5 、將 Volume Noise 連接到粒子雲材質的 Blob Map 屬性

6 、打開 Volume Noise 紋理屬性編輯器

7 、設置 Threshold 為 0

8 、設置 Amplitude 為 1

9 、設置 Ratio 為 0.4

10 、設置 Frequency Ratio 為 0.2

11 、設置 Depth Max 為 5

12 、設置 Scale 為 3.0,3.0,3.0

13 、設置 Noise Type 為 Wispy

  不同的氣體要求不同的圖像,從壺裏發出的蒸汽更細弱一點,但從煙囪裏出來的煙霧更濃密更“圓”一點。雲層是濃密的,但卻有一個纖細的邊,你就要為你的圖像複製這樣的邊。一旦增加了不同的扭曲和縮放值到你的 sprite 粒子,而且還有成打的粒子彼此重疊,那它們都將混合並創建理想的外觀。

1 、打開粒子物體屬性編輯器

2 、設置粒子渲染類型為 cloud

3 、點擊的 Add Attibutes 後的 Current Render Type

4 、打開 Better Illumination

5 、為 OpacityPP 創建一個 ramp

6 、 ramp 底部和頂部設置為黑色,中間為白色

7 、設置 Interpolation 為 Smooth

8 、增加一個預粒子 radiusPP 屬性

9 、創建表達式類型裏:

radiusPP=rand(0.3,1.3)

  從頂部攝影機觀看場景,設置視口大小,確保這樣粒子到了窗口的邊卻不會跑出邊外。

1 、 打開全局渲染窗口

2 、 設置理想的文件名

cg/image/ 的粒子係統在為 sprite 圖像命名方麵是非常特別的, cg/image/ 傾向於用 Name.# 這樣的命名格式,例如: cloudTex.1, cloudTex.20 等等。

1 、 設置 Frame/Animation Ext 為 name.#

2 、 設置 Frame Range 為 1-60

3 、 設置 camera 為 Top

4 、 打開 RGB 和 Alpha 通道

  一個 Sprite 圖像應該始終是正方形的,比如 1 : 1 的比例。即使圖像分辨率非常高,但其大小也不應該超過 512 Χ 512 。因為圖像在硬件裏渲染,所以需要圖形卡裏的紋理儲存器。每個 sprite 圖像被載入紋理儲存器,所以,如果你有 100 個不同的圖像,它們都是 512 Χ 512 分辨率,那多數圖形卡將沒有足夠的內存有效地回放場景,並會“卡殼”。在幀裏一個 sprite 應該是多大,這才是獲得分辨率的真正決定性因素。考慮到一旦你運用了運動模糊 sprite ,任何像素都趨向於完全消失,你可以用更低分辨率的圖像操作。

  設置分辨率為 128*128

  附加 tweaks 到渲染圖像序列,比如添加模糊,調整對比度,用一個合成包修改 alpha 通道。

  最後,渲染圖像序列。

[page]

 

II 、粒子發射

  重新設置 frame range 為 1-100

  當一輛汽車踢起灰塵的時候,從輪胎下半部分會發出像一團雲樣的東西。刻化這個發射形狀的簡單方法就是用一個體積發射器。

  打開 wheelsOnPath.ma 文件 .

  在這個場景裏,沿著凹凸表麵的一條運動路徑有一個簡單的汽車裝備。車輪通過一個 closestPiontOnSurface 約束粘附在地麵。

  現在從輪胎發射粒子。

1 、創建一個發射器

2 、設置 Emitter Type 為 Volume

3 、設置 Volume shape 為 sphere

  塵埃沒有特定的運動方向,其運動源自汽車周圍的空氣運動,因此,你不用在體積形狀基礎上給與塵埃任何速度。

1 、設置 Away From Center 為 0

2 、設置 Away From Axis 為 0

3 、設置 Along Axis 為 0

4 、設置 Around Axis 為 0

  但是,塵埃的運動基於汽車運動的基礎上,所以,汽車踢起的塵埃要稍微隨著汽車的向前運動而向前運動。

1 、打開 outliner

2 、選擇 Fitire 和你剛才創建的發射器: Emitter1

3 、點約束和方向約束發射器到輪胎

4 、縮放發射器,大概有輪胎的 1/3 高,長於和寬於輪胎大約 1/4 。

5 、調整發射器的 VolumeOffsetZ 屬性,重新定位發射器,低於輪胎 1/3 。

  回放時,你會看見左前輪胎後麵有粒子軌跡。

1 、複製 Emitter1 三次

2 、刪除複製品潛在的點約束和方向約束節點

3 、點約束、方向約束每個發射器到每個輪胎,這樣,每個輪胎都有了一個發射器。

4 、重新命名這些發射器為: IEmitter,frEmitter,blEmitter,brEmitter

5 、用動力學關係編輯器,連接粒子物體到每個發射器。

  回放,你會看見所有輪胎左後方都留下了一道粒子軌跡。

  當一輛汽車奔跑在一條滿是灰塵的溪穀時,它會碰到各種各樣的凹凸地,水溝,岩石和沙地,每次碰撞的結果就是:汽車不僅改變一點點方向,而且汽車踢起的塵土和碎片數量都會不同,利用 noise 和 rand 功能,你可以很容易地模擬這種隨意的變化。

1 、選擇 flEmitter

2 、在通道盒裏,右鍵點擊任何屬性並選擇 Expressions ……

3 、在 Expression Editor 中鍵入:

float $rate=100.0

float $rateRand=0.5

flEmitter.rate=$rate+$rateRand*$rate*noise(frame)

  這個表達式運用了 noise 功能,可以依據不同的幀在 -1 到 1 之間取一個值。這個值將與 rate 的百分數相乘再相加。

FlEmitter 發射器的 rate 的最終結果是圍繞著 $rate 大概成平均狀,但是,這個參數可以低到 0.5 ,也可以高到 1.5 ,主要看 noise 值的回饋。

  不是隨便用一個數字發生器就可以得到聲音功能的值,將聲音功能視為一個預定的曲線,可以無限延伸,這個曲線在它的值裏有各種各樣的聲音,但聲音平滑插入,聲音功能回到什麼樣的值依賴於你在曲線哪裏取樣。如果你給聲音功能取 10 的值:

print(noise(10));

  … cg/image/ 回到 -0.465903 的值

  如果你給聲音功能取 10.01 的值 :

print(noise(10.01));

  … cg/image/ 回到 -0.474992 的值

  參數表達式裏:

flEmitter.rate=$rate+$rateRand*$rate*noise(frame)

  …我們用“幀”作為聲音輸入,所以,每個幀的聲音功能回到一個新的值。

  既然幀以每幀的整數增加,來自聲音功能的結果可能變化很大。如果你想從聲音功能那裏獲得一個更加平滑的數字流,那就用“ time ”來代替 “ frame ”。

  一樣的輸入值,聲音功能返回的值也一樣,所以,每個發射器需要用不同的輸入值。

  在表達式編輯器裏,增加:

frEmitter.rate=$rate+$rateRand*$rate*noise(frame+100)

blEmitter.rate=$rate+$rateRand*$rate*noise(frame+200)

brEmitter.rate=$rate+$rateRand*$rate*noise(frame+300)

  現在每個 rates 參數都是從聲音曲線不同部分取樣,回放時候,你會看見粒子的軌跡有點更加隨意稀少了。

參數 rates 任何明顯的提高都表示模擬輪胎碰到了凹凸塊或者是岩石。發生碰撞的時候,粒子方向突然隨意改變,就好像剛剛發生了一場小的爆炸。

  因為聲音功能對同樣的輸入總是返回到同樣的值,所以,我們檢查 rates 參數的一個突然變化並添加一些隨意性到發射速度上。

  在表達式編輯器裏,添加:

float $flChange=noise(frame)-noise(frame-1);

float $flChange=noise(frame)-noise(frame-1);

float $frChange=noise(frame+100)-noise(frame+100-1);

float $blChange=noise(frame+200)-noise(frame+200-1);

float $flChange=noise(frame+300)-noise(frame+300-1);

float $randomSpeed=100;

flEmitter.randomDirection=$randomSpeed*linstep(0.1,0.5, $flChange);

frEmitter.randomDirection=$randomSpeed*linstep(0.1,0.5, $frChange);

blEmitter.randomDirection=$randomSpeed*linstep(0.1,0.5, $blChange);

brEmitter.randomDirection=$randomSpeed*linstep(0.1,0.5, $brChange)

  回放時,你會看在塵土軌跡甚至有更大的隨意性,一些粒子飄浮空中,其他一些粒子保持靜止狀態。

[page]

III 、創建一個特效裝備

  在完成一個作品時,越多的給予使用者超越解算的控製越好,基於這種考慮,越複雜的參數設置會使使用者工作起來越困難。

  你想要做的最後一件事就是:提供終端使用者一個複雜的表達式,這需要調試每個鏡頭。創建一個控製裝備,用它驅動一個表達式的結果,你就可能給終端使用者一套控製表示式(表示式控製場景)的工具,這樣,他們就不用自己編輯表達式就可以控製場景。

1 、選擇發射器和粒子物體,把它們編成組。

2 、重新命名結果組節點為 dustcontrols

3 、選擇組節點,並打開 Add Attribute 窗口

4 、添加下麵的屬性,維持 Float,Scalar 屬性:

rate

rateRand

randSpeed

  發射的表達式:

float $rate=100;

float $rateRand=0.5

float $radomSpeed=10;

  替換成

float $rate=dustControls.rate;

float $rateRand=dustControls.rateRand

float $radomSpeed=dustControls.randSpeed;

  現在你可以從表達式外控製這些變量。

  控製節點的通道盒應該僅僅顯示相關的屬性,那些對解算沒有影響的屬性應該被挪開。變形屬性,旋轉屬性和縮放屬性不需要用來控製解算,所以,可以用 channel Control 窗口將它們關掉。將它們從通道盒挪開之前,先鎖定它們,這樣,使用者就不會偶爾變形,旋轉或縮放該組。

IV. 創建塵土粒子運動

1 、重新命名 particle1 為 dustParticles

2 、設置 Particle Render Type 為 Sprites

3 、設置 Inherit Factor 為 0.2

4 、點擊 play

  粒子緊隨車後,注意粒子能隨在車後多長距離,那些以隨意爆發速度發射的粒子是怎樣漂浮遠去的。粒子保存屬性設置為 1 ,意味著每幀保持 100% 運動。既然粒子繼承了發射器 20% 的運動,粒子就收到初始的爆發速度。粒子絕不會丟失速度,會繼續沿著那個方向運動。

1 、選擇 dustParticles

2 、設置 conserve 為 0.9

  現在回放場景,你會看見粒子最初隨著汽車運動,但是它們會很快就丟失向前運動的動力並開始落後,最後停止運動。

  降低 conserve ,你可以用場來更好地控製粒子的運動。

1 、創建一個紊亂場並指派到塵土粒子

2 、設置 Magnitude 為 100

3 、設置 Attenuation 為 0

4 、設置 Frequency 為 3

5 、點擊 play

  粒子在紊亂場內繼續運動並在隨意方向擴展範圍。紊亂場是 3D Noise ,就像一個三維程序上的紋理。將聲音視為一個大理石質地的紋理,如果你動畫紋理布置,你就會在空間運動三維聲音。

  選擇 dustControls 節點,添加一個 turbulenceRise 屬性,設置其值為 0.1 。

  打開你一直在用於發射的表達式,在它的最後添加一行:

//Turbulence Rise

//

TurbulenceField1.ty=dustControls.turbulenceRise*frame;

  當你回放場景時候,你看見塵土粒子沿 Y 軸向上運動,這是因為紊亂紋理隨著場的變換而向上運動,粒子繼續被這些紋理吸引。

  依靠你正試圖創建的塵土類型,不管它是一種細而輕的像粉筆一樣的東西,還是更重的像被汽車踢起的泥土,在 Y 軸運動的紊亂場參數都會給你的粒子重力感覺:

  不像氣態物質,比如煙霧或者蒸汽(固體或液體變化成一種氣體並升上天),塵土會保持固體狀,但它是一種非常輕的固體,可以踢到空氣中,並逗留在最輕的空氣流上,最後落地。塵土越厚,就越重,落地越快。要獲得塵土落地運動狀態,做到以下兩點:

1 、創建一個重力場並指定給 dustParticles

2 、設置重力場 magnitude 為 2

  回放時候,即使紊亂場繼續將粒子向上拉,粒子看起來還是更重。對於這種效果,重力場的大小與場景大小不相關。對重力場的 magnitude 調整,應該建立在你追求的外觀基礎上。

  粒子現在穿透了地麵,如果是一個非常細小的塵土,粒子落到地麵就 ok 了,但是對於一個更厚重的塵土,你希望地上塵土堆積得厚重一點。

1 、選擇地麵平麵、粒子,並碰撞。

2 、設置 Tessenllation Factor 為 2000

3 、設置 Resilience 為 0.1

4 、設置 Friction 為 0.3

  粒子堆積在地上,它們就像是被重力拉下來的,接著又被紊亂場拉上天。賦予紊亂,粒子就像是液體在運動。

感謝速聯科技、八度網絡、九九數據、億恩科技、群英網絡讚助部分帶寬!

關於本站 | 聯係方式 | 版權聲明 | 下載幫助(?) | 網站地圖

Copyright 2002-2020 95262.com 【數碼資源網】 版權所有 粵ICP備2020128507號-1

本站所有軟件來自互聯網,版權歸原著所有。如有侵權,敬請來信告知 ,我們將及時撤銷。