MAYA制作中山艦的海洋部分教程

本教程向朋友們介紹MAYA制作MAYA制作中山艦的海洋部分教程,介紹的還是很詳細(xì)的,其他部分的教程請朋友們細(xì)細(xì)查看。
具體的操作步驟如下:
1.創(chuàng)建海洋。
從Maya的Visor庫中拖入一個(gè)流體海洋的實(shí)例。這個(gè)實(shí)例包含了海洋動態(tài)和海面大氣效果,是很好的范本,可以在它的基礎(chǔ)上更改設(shè)置。
2.匹配場景單位比例。對整個(gè)海洋相關(guān)的元素成組,然后scale增大為10倍;而海洋材質(zhì)的Scale數(shù)值設(shè)定為0.1。
接著增加一些海浪泡沫,根據(jù)需要的效果微調(diào)一些渲染細(xì)節(jié)。為了得到較為真實(shí)的效果,可以找一些照片進(jìn)行參考。
海洋材質(zhì)是基于世界空間的UV坐標(biāo),因此波浪大小和其他海洋參數(shù)不會受到幾何體的縮放的影響。對NURBS平面可以進(jìn)行任意的縮放。
3.制作航船和海洋的相交線。
(1) 創(chuàng)建同步海洋運(yùn)動的NURBS曲面。
創(chuàng)建海洋時(shí)默認(rèn)生成的PreviewPlane只是用于交互式預(yù)覽,它既不能被渲染也不能發(fā)生動力學(xué)碰撞,因此我們需要?jiǎng)?chuàng)建一個(gè)特別的NURBS表面來彌補(bǔ)這些不足(默認(rèn)的圓形NURBS表面與渲染形態(tài)不一樣,所以不能用來做動力學(xué)碰撞)。
在時(shí)間欄下方的命令輸入欄中,輸入“oceanNurbsPreviewPlane 50 50 oceanShader1”,然后按Enter回車鍵執(zhí)行命令,稍等一會就可以得到一個(gè)新的NURBS預(yù)覽表面,它的行為和之前的oceanPreviewPlane是一樣的,但它可被渲染并能應(yīng)用于通常的幾何體動力學(xué)。因?yàn)樾枰似矫婧痛装l(fā)生相交,因此將Nurbs放大至和航船長度差不多。
oceanNurbsPreviewPlane 是Maya內(nèi)置腳本庫中的一個(gè)MEL腳本,目前還沒有界面化,是個(gè)隱藏命令。【oceanNurbsPreviewPlane 50 50 oceanShader1】:“50 50”是NURBS曲面的分辨率,一旦創(chuàng)建便不能更改;“oceanShader1”是場景中海洋材質(zhì)的名稱。如果海洋較為平靜,使用20以下分辨率即可。
(2) 創(chuàng)建船體和海洋NURBS曲面的相交線。
創(chuàng)建一個(gè)和船殼差不多的NURBS模型。我使用建模時(shí)保留下來的NURBS曲線放樣而成,多數(shù)情況下,我們也可使用一個(gè)NURBS球體變形而成。
選擇NURBS曲面,shift加選NURBS船模型,執(zhí)行EditNURBS->IntersectSurfaces,設(shè)置如圖。
得到兩個(gè)NURBS幾何體之間的相交線,然后在outliner中選擇這根相交線,執(zhí)行EditCurves->DuplicateCurves,保留所有操作歷史。因?yàn)槟P洼^為復(fù)雜,因此會生成了不少NURBS曲線。在播放動畫的時(shí)候,由于歷史節(jié)點(diǎn)的緣故,NURBS曲線會隨著模型位置的改變而變化,但同時(shí)Maya的執(zhí)行會很緩慢。Maya的腳本庫中有一個(gè)用于烘焙曲線動畫的MEL,但這只有在場景動畫不需要再進(jìn)行修改的時(shí)候才使用,后面會提到。
*復(fù)制相交線并保留歷史記錄,是為了稍后進(jìn)行曲線動畫烘焙而作的準(zhǔn)備;如果不需要烘焙曲線動畫,那么可以省略DuplicateCurves這個(gè)步驟。
4.綁定航船和海洋的運(yùn)動。
將NURBS船殼和多邊形航船成組,執(zhí)行FluidEffects->Ocean->MakeMotorBoats。
因?yàn)閳鼍爸挥幸粋€(gè)海洋,所以Maya會自動選擇oceanShader1。
選擇生成的locator定位器,在它的形節(jié)點(diǎn)的ExtraAttributes區(qū)塊下,設(shè)置相關(guān)浮動參數(shù)。首先將StartY設(shè)置合適的數(shù)值,讓航船剛好懸浮至船的吃水線處。多次測試之后,最終參數(shù)設(shè)置如下。
特別需要說明的是,因?yàn)榭紤]到綁定了流體,柔體,布料這些動力學(xué)系統(tǒng),物體運(yùn)行需要一段解算過程,因此不能直接在起始幀就讓航船突然下沉。所以浮動參數(shù)開始起作用的StartFrame我設(shè)置為100,StarY分別在第1幀和第99幀設(shè)置了動畫關(guān)鍵幀:高度0到-40的位移動畫。SceneScale是匹配海洋尺寸的,數(shù)值應(yīng)該和海洋材質(zhì)的Scale值相等,所以設(shè)置為0.1。
Throttle(油門)和Rudder(轉(zhuǎn)舵)是兩個(gè)有趣的參數(shù),它們控制著航船的行進(jìn)和轉(zhuǎn)彎; WaterDamping(水阻尼)會對行進(jìn)速度有很大影響。ThrottlePitch(行駛傾斜)是開啟Throttle之后航船前后傾斜的程度,TurnRoll則是Rudder啟用時(shí),航船在轉(zhuǎn)彎時(shí)的側(cè)斜程度。
Throttle在SceneScale匹配的時(shí)候,可以近似的理解為千米/小時(shí)的航速。
【注意】使用Maya內(nèi)的任何“Boat”工具,BoatLength,Width和Height都會自動從所選小船的包裹盒尺寸獲取。這些工具將最長長度的坐標(biāo)軸作為前方,所以當(dāng)使用一個(gè)奇怪的外形(寬度大于長度),模型的轉(zhuǎn)向和速度調(diào)節(jié)可能發(fā)生錯(cuò)誤。在應(yīng)用船體工具前,你可以暫時(shí)改變物體的縮放值,在使用工具后再恢復(fù)原狀(此時(shí)Maya會按應(yīng)用工具前的形狀定位方向軸)。
5. 創(chuàng)建航船尾流。
尾流發(fā)射器有兩種,一種是單純的制造波浪,另一種除了波浪還產(chǎn)生泡沫foam(盡管可以設(shè)置只產(chǎn)生泡沫不產(chǎn)生波浪,但這不太現(xiàn)實(shí)):前者用于航船的前部和中部,后者則放置于船尾。選擇海洋,執(zhí)行Ocean->CreateWake。
Maya的海洋尾流是通過流體紋理控制海洋材質(zhì)的waveHeightOffect屬性而實(shí)現(xiàn)的,尾流發(fā)射器的密度發(fā)射比率是控制尾流強(qiáng)弱的重要參數(shù)。創(chuàng)建了尾流之后,場景會生成一個(gè)3D流體容器,選擇物體并shift加選流體容器,執(zhí)行FluidEffects->MakeCollide。
Maya2011新增了流體AutoResize的功能之后,只要將流體發(fā)射器作為運(yùn)動物體的子級即可,但因?yàn)閣ake是SpringMesh的流體發(fā)射形式,不能使用AutoResize,只有發(fā)射foam泡沫的時(shí)候可以用。
制作螺旋槳式的航船時(shí),除了尾流,還要加入適當(dāng)?shù)呐菽H绻趧?chuàng)建尾流時(shí)候沒有在選項(xiàng)中設(shè)置一定的FoamCreation(泡沫產(chǎn)生)數(shù)值,那么只產(chǎn)生一個(gè)用于模擬尾流的3D流體容器;設(shè)置FoamCreation數(shù)值大于0,則會增加一個(gè)用于產(chǎn)生泡沫細(xì)節(jié)的3D流體容器。當(dāng)然,用戶也可以手動將一個(gè)流體紋理連接到海洋材質(zhì)的FoamOffset制作泡沫。要注意的是,尾流強(qiáng)度由流體密度的發(fā)射比率決定,而泡沫量則是熱量密度的發(fā)射比率決定,并且泡沫的流體節(jié)點(diǎn)會開啟TextureOpacity。
一般來說,制作流體特效時(shí)盡量不要對流體容器進(jìn)行縮放;不過當(dāng)場景發(fā)生了比例關(guān)系的變化,為了減少計(jì)算量,則應(yīng)將流體容器匹配場景比例進(jìn)行縮放。
6. 飛濺水花。航船在水面急速運(yùn)行時(shí),會產(chǎn)生撞擊飄散的浪花。
首先,為了提高計(jì)算速度,需要先將航船和海面的相交線烘焙成點(diǎn)動畫。在outliner中選擇NURBS曲線,在命令輸入欄中輸入并執(zhí)行命令:bakeSoft 1 200 1【格式:bakeSoft (起始幀) (結(jié)束幀) (間隔幀)】。完成之后,可以將NURBS預(yù)覽海面(包括相交線)和NURBS船底刪除,只保留烘焙后生成的曲線。當(dāng)然,在這操作之 前你必須完成所有動畫參數(shù)的調(diào)節(jié),尤其是航船的運(yùn)動和海面的狀況。
bakeSoft和之前提到的oceanNurbsPreviewPlane命令一樣,是maya內(nèi)置的未界面化的隱藏腳本。bakeSoft可將曲線動畫烘焙到CV點(diǎn)上,轉(zhuǎn)為關(guān)鍵幀動畫。注意:該命令一次只能用于一條NURBS曲線,并且計(jì)算過程中不能停止。
選擇烘焙后的新曲線,執(zhí)行Dynamics>Particles>EmitFromObject,設(shè)置如下:
EmitterType:Curve
Rate:3000
Speed:9
SpeedRandom:0
對產(chǎn)生的粒子設(shè)置重力場和擾亂場(Magnitude:33,Attenuation:0,F(xiàn)requency:0.5),并把粒子的conserve設(shè)置為0.9降低粒子的擴(kuò)散行為。
前面使用到的海洋浮動系統(tǒng),其實(shí)是通過colorAtPoint的MEL控制物體的高度變化的;而在表達(dá)式中使用MEL語句,是不會自動更新表達(dá)式引用的名稱的。如
float $hei[] = `colorAtPoint -u $u -v $v oceanShader1`;
locator1.translateY = $hei[0];
ceanshader1和locator1的名稱都不能在設(shè)置了表達(dá)式后再修改,除非同時(shí)更新MEL中的命名。也就是說,一旦使用了海洋中的“Boat”功能,不要輕易修改受控物體的名稱。
粒子表達(dá)式有兩種:creation和runtime(又分動力學(xué)前后執(zhí)行)。Creation只在動畫開始時(shí)執(zhí)行一次,而runtime則會在動畫每幀中執(zhí)行。 本例中語句如下:
【Creation】
particleShape1.lifespanPP=rand(4,5);//設(shè)置粒子隨機(jī)的生命周期
【Runtime】
vector $foamP=particleShape1.position; //獲取粒子當(dāng)前的位置
float $foamU=$foamP.x;//將粒子位置的x坐標(biāo)賦予變量foamU
float $foamY=$foamP.y;//將粒子位置的y坐標(biāo)(高度)賦予變量foamY
float $foamV=$foamP.z;//將粒子位置的z坐標(biāo)賦予變量foamV
vector $foamColor[]=`colorAtPoint -o RGBA -u $foamU -v $foamV oceanShader1`;
//通過colorAtPoint的MEL命令獲取海洋材質(zhì)的相應(yīng)色彩和透明度信息
float $foamHeight=$foamColor[3];//定義一個(gè)變量foamHeight,將colrAtPoint所獲取的材質(zhì)透明度信息賦予它。
if($foamY<$foamHeight)
particleShape1.position=<<$foamU,$foamHeight,$foamV>>; //當(dāng)粒子高度低于泡沫高度,將被吸附到海洋表面
以上完成了船底和海面接觸時(shí)飛濺的水花,船尾部還缺少螺旋槳噴出的水花,只要再增加一個(gè)體積型的粒子發(fā)射器即可。
浪花粒子在海面漂浮一段時(shí)間后,逐漸消失。這里我使用一個(gè)噪波紋理控制粒子誕生的不透明度,并設(shè)置漸變過渡,在粒子消亡時(shí)不透明度為0。
*需要更為細(xì)致的特效,可以對粒子的速度設(shè)置runtime表達(dá)式,增加速度,透明度和生命周期之間的關(guān)系。如果粒子量大,表達(dá)式越復(fù)雜,計(jì)算速度就越慢。
7.生成各種動力學(xué)緩存。
n布料執(zhí)行:nDynamics->nCache->CreateNewCache。
流體執(zhí)行:Dynamics->FluidEffects->CreateNewCache。
粒子執(zhí)行:Dynamics->Solvers->CreateParticleDiskCache。
柔體IK,則直接烘焙為骨骼動畫。
教程結(jié)束,以上就是MAYA制作中山艦的海洋部分教程,希望對大家有所幫助!
相關(guān)文章
如何將Maya首選項(xiàng)重置為默認(rèn)值? 重置Maya首選項(xiàng)的技巧
Maya首選項(xiàng)是Maya軟件中的一組用戶可配置的選項(xiàng),可以讓用戶根據(jù)自己的需要調(diào)整軟件的默認(rèn)設(shè)置,下面我們就來看看重置Maya首選項(xiàng)的技巧2024-02-18Maya打開失敗報(bào)錯(cuò)提示Maya已停止工作原因與解決方法
啟動Maya軟件的時(shí)候,提醒:停止并顯示以下錯(cuò)誤,然后軟件崩潰了,該怎么結(jié)解決呢?下面我們就來看看Maya崩潰的原因分析和解決辦法2024-02-18maya控制手柄怎么創(chuàng)建IK? maya的IK表達(dá)式拉伸效果的設(shè)置方法
maya控制手柄怎么創(chuàng)建IK?maya建模的是偶,使用IK控制柄工具創(chuàng)建IK該怎么添加表達(dá)式做拉伸效果呢?下面我們就來看看maya的IK表達(dá)式拉伸的設(shè)置方法2023-02-28maya打不開fbx文件提示Unrecognized file type錯(cuò)誤怎么辦?
maya打不開fbx文件提示Unrecognized file type錯(cuò)誤怎么辦?maya導(dǎo)入fbx文件失敗,提示無法識別的文件類型錯(cuò)誤,該怎么辦呢?下面我們就來看看詳細(xì)的解決辦法2021-10-29- maya一款專為游戲開發(fā)者和制片人專門設(shè)計(jì)。適合視效藝術(shù)家、建模和動畫師,今天小編就來教給大家一個(gè)簡單的教程,使用maya制作立體曲面2021-09-09
maya怎么創(chuàng)建絢麗多彩的煙花? maya煙花的制作方法
maya怎么創(chuàng)建絢麗多彩的煙花?maya中想要?jiǎng)?chuàng)建漂亮的煙花,該怎么制作這個(gè)效果呢?下面我們就來看看詳細(xì)的教程,需要的朋友可以參考下2021-01-08- maya怎么用phoenixfd插件制作逼真的火焰動畫?maya中想要制作逼真的火焰動畫,該怎么制作這個(gè)動畫效果呢?下面我們就來看看詳細(xì)的教程,需要的朋友可以參考下2020-12-08
maya模型上的數(shù)字怎么關(guān)掉? maya模型不顯示數(shù)字的技巧
maya模型上的數(shù)字怎么關(guān)掉?maya中的模型顯示數(shù)據(jù),想要關(guān)閉顯示數(shù)據(jù),該怎么操作呢?下面我們就來看看maya模型不顯示數(shù)字的技巧,需要的朋友可以參考下2020-11-02- maya怎么重建曲面?maya中想要重建曲面,讓模型更加圓滑,該怎么操作呢?下面我們就來看看maya重建曲面的方法,需要的朋友可以參考下2020-10-10
- maya骨骼不顯示怎么辦?maya文件打開以后發(fā)現(xiàn)骨骼隱藏了,我們找不到,骨骼被隱藏?zé)o非三種情況,自己被隱藏,父對象被隱藏,繪制樣式選擇了無,下面我們就來看看maya顯示骨2020-08-10