亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Mel語言及其表達(dá)式在MAYA動力學(xué)特效中的應(yīng)用研究

        2022-08-19 06:18:26謝函邑
        電子測試 2022年15期
        關(guān)鍵詞:動畫方向語言

        謝函邑

        (中國船舶第七一三研究所,河南鄭州,450000)

        0 引言

        三維動畫現(xiàn)如今已經(jīng)得到各行各業(yè)的廣泛運(yùn)用,從傳統(tǒng)的電影特效、電視片頭、游戲等,到如今的教育教學(xué)、軍事、醫(yī)療、飛行模擬等各個方面。Maya 作為動畫學(xué)界、業(yè)界的必備軟件,集中了最先進(jìn)的動畫及數(shù)字效果技術(shù),成為電影級別的高端制作軟件代表。作為一個功能很強(qiáng)大的三維動畫軟件,不僅為創(chuàng)作者提供了基本的屬性控制,還提供了高級控制方式—Mel語言(Maya Embedded Language)及表達(dá)式,使創(chuàng)作者可以通過Mel語言及表達(dá)式進(jìn)行Maya的基礎(chǔ)操作,如通過執(zhí)行一段Mel腳本創(chuàng)建一個球體模型,也可以完成更為復(fù)雜的效果,如通過表達(dá)式控制群體動畫中個體之間的運(yùn)動差異,還可以完成一系列基礎(chǔ)操作的快捷批量處理如通過Mel語言編寫骨骼綁定插件。

        1 MAYA動力學(xué)中的MEL語言及其表達(dá)式

        動力學(xué)是理論力學(xué)的分支學(xué)科,研究作用于物體的力與物體運(yùn)動的關(guān)系。Maya中的動力學(xué)系統(tǒng)在Dynamics模塊中,該系統(tǒng)主要由粒子、流體、剛體、柔體、毛發(fā)、布料等模塊構(gòu)成。在三維動畫制作的流程中,動力學(xué)需要與動畫、燈光、渲染合成等部門緊密的配合(見圖1),綜合運(yùn)用這些模塊才能制作出逼真的動畫效果。粒子作為動力學(xué)特效的最小單位,其顯示、動畫處理、渲染都與常規(guī)的物體有所不同。粒子的出生是通過“發(fā)射”來實現(xiàn)的,所以粒子的動畫制作離不開粒子發(fā)射器的建立。粒子發(fā)射器通常用于創(chuàng)建將在粒子系統(tǒng)內(nèi)運(yùn)動的粒子。Maya中可以將無數(shù)的粒子組合起來使其形成固定的形態(tài),再通過控制粒子顏色、數(shù)量、空間分布、運(yùn)動狀態(tài)等屬性模擬現(xiàn)實中的一些自然現(xiàn)象或宏大的場景,如龍卷風(fēng)、下雪、爆炸、煙花、群組動畫等。這些逼真的效果往往需要大量的粒子組成,通過改變粒子在時間與空間上的屬性形成。因此每個粒子都可以被賦予如質(zhì)量、位置、速度、受力、生命周期、顏色、形狀、空間大小等的各種屬性。

        圖1 三維動畫制作流程圖

        很多常用的三維軟件都提供了內(nèi)嵌腳本語言,可以通過各種算法來實現(xiàn)復(fù)雜的動畫效果。Mel語言,就是Maya的嵌入式語言,是Maya使用最方便和控制最靈活的編程接口。在場景中選擇一個物體或顯示一個對話框就是執(zhí)行Mel命令的直接結(jié)果。表達(dá)式,即使用Mel語句將屬性動畫化的程序。通常通過創(chuàng)建一系列的關(guān)鍵幀,可以將任何屬性在Maya中做動畫。表達(dá)式也可用于將一個屬性做動畫,但不是通過關(guān)鍵幀,而是通過Mel命令定義屬性的值實現(xiàn)。這些Mel命令在每一幀進(jìn)行求值,然后將結(jié)果存儲在表達(dá)式所分配到的屬性中。這種技術(shù)通常稱為過程式動畫,即由程序(Mel命令)而不是由關(guān)鍵幀來控制動畫。表達(dá)式可用于創(chuàng)建復(fù)雜的動畫,而不涉及或很少涉及手動操作。這是一種將屬性動畫化的強(qiáng)大方法。通常情況下,任何屬性都可由語句進(jìn)行控制。簡單來說,Mel與表達(dá)式的區(qū)別就是Mel是一種語言,基于這種語言,可以完成一件事情,而表達(dá)式是使用Mel語句編寫的將屬性動畫化的腳本程序,是根據(jù)時間的變化做一系列事情。因此,Mel語言及表達(dá)式作為一種高級粒子控制方式,對于關(guān)鍵幀很難做到的工作,可以輕松完成,通過編寫程序,可以實現(xiàn)想要的效果。例如通過一個模型在三維空間中形成一個矩陣,傳統(tǒng)的復(fù)制效率低,速度慢。通過粒子形成矩陣,模型替換粒子的方法效率更高,速度更快。而這里所說的粒子替代是以實體模型來替換粒子,適合做大規(guī)模的群體動畫,比如人群、鳥群、魚群等。被粒子替代的物體(即原始物體)稱為源物體,可以替換多種元素來實現(xiàn)不同的效果,它可以是一個單一的物體(有動畫或沒有動畫的都可以),也可以是不同位置和外形的一系列物體,例如一群幾乎相同的鳥在不同的位置拍動翅膀。以下案例就是通過Mel語言及其表達(dá)式控制粒子替代,創(chuàng)造隨機(jī)性,來模擬亂箭齊發(fā)的真實景象。

        2 Mel語言及其表達(dá)式控制粒子屬性案例分析

        2.1 創(chuàng)建粒子替代

        創(chuàng)建一個體積發(fā)射器,在Particles菜單下單擊Create Emitter后的屬性按鈕,設(shè)置發(fā)射器名稱為fx_base_emitter1,發(fā)射器類型為Volume,比率為50,體積發(fā)射器形狀為Cube。將particle1更名為baseParticle1。調(diào)整Cube粒子發(fā)射器的形狀和角度,再將發(fā)射器fx_base_emitter1的遠(yuǎn)離中心調(diào)整為10。沿軸調(diào)整為100,使baseParticle1快速從體積發(fā)射器中向一個方向發(fā)射出去。

        接下來進(jìn)行粒子實例替代,選擇要作為源物體的arrow再加選baseParticle1,在Particles菜單下選擇Instancer(Replacement)命令,使用默認(rèn)值即可。通過觀察可以發(fā)現(xiàn),替代物體arrow的尖頭處始終是指向×軸正方向的,那么現(xiàn)在就來調(diào)整一下它的尖頭處的指向。將替代物體arrow的X軸指向粒子的運(yùn)動方向。選擇baseParticle1打開它的屬性編輯性,為每粒子屬性添加一個directionPP屬性。為directionPP屬性寫入表達(dá)式,directionPP=<<1,0,0>> ;因為只需要用替代物體 arrow 的×軸做為指向軸,所以Y軸和Z軸不做操作,值設(shè)置成0即可。打開baseParticle1的Instancer(Gemerty Replacement)卷展欄,設(shè)置實例節(jié)點為instancer1,AimDirection(指向方向)為粒子的速度方向velocity,指向軸為directionPP,意思是用替代物體arrow的Y軸指向粒子的速度方向。(見圖2)

        圖2 修改粒子替代

        2.2 Mel語言及其表達(dá)式創(chuàng)建粒子隨機(jī)性

        首先是箭打到墻上(物體上)掉落的隨機(jī)性。創(chuàng)建一個平面,調(diào)整形狀放到適當(dāng)位置做為墻面,重命名為wall(見圖3)。選擇baseParticle1和wall,執(zhí)行Make Collide命令,設(shè)置Resilience為0,Friction為1。發(fā)生碰撞后,箭成整齊的水平方向。這時就需要創(chuàng)建粒子碰撞事件,選擇粒子baseParticle1,執(zhí)行粒子碰撞事件編輯器命令,在這里什么設(shè)置也不做,只是要一個什么也沒發(fā)生的碰撞事件,以碰撞事件為條件判斷什么時候箭落下來,什么時候亂箭釘上去。

        圖3 創(chuàng)建一個Poly的Plane

        選擇baseParticle1再加選wall,單擊Particles菜單下的Goal命令,由于粒子(箭)在碰撞前的飛行過程中是不用Goal到wall上的,所以在這里我們需要使用一個if-else語句來判斷goal值,先在Creation下為goalPP創(chuàng)建一個初始值baseParticleShape1.goalPP=0(意思是一開始不受墻壁的吸引);在Runtime before dynamics 下寫入:

        意思是當(dāng)碰撞還沒產(chǎn)生時(即baseParticle-Shapel.event==0)粒子的goalPP為0,否則當(dāng)碰撞產(chǎn)生時粒子的goalPP為1。接下來,為其添加新的屬性,選擇baseParticle1添 加 goalU、goalV、collisionU、collisionV四 個 屬性到每粒子屬性中。為goalU、goalV添加表達(dá)式,用collisionU、collisionV碰撞一瞬間的UV坐標(biāo)來指定粒子的goalU、goalV,在Runtime before dynamics 下寫入:

        baseParticleShapel.goalU = baseParticleShapel.collisionU;

        baseParticleShapel.goalV = basePar-ticleShapel.collisionV;

        這樣粒子(箭)就得到它的goalU和goalV值,baseParticleShapel.goalU = baseParticleShapel.collisionU; 和 baseParticleShapel.goalV =baseParticleShape1.collisionV;應(yīng)該寫在碰撞之后的語句中,在碰撞產(chǎn)生時執(zhí)行。

        其次,解決箭打到墻的角度的隨機(jī)性。為baseParticle1添加自定義的每粒子屬性aimD,用它作為一個粒子速度/速度方向的變量。為AimD寫入表達(dá)式,將粒子還沒有產(chǎn)生碰撞時的速度/速度方向傳遞給Aim D,在Runtime before dynamics下寫入表達(dá)式(見圖4)將baseParticleShape1.aimD= baseParticleShape1.velocity;寫入沒有產(chǎn)生碰撞時的語句中,也就是在沒有碰撞之前目標(biāo)方向為粒子的速度方向,再將AimDirection重新設(shè)置成aimD。

        圖4 添加表達(dá)式

        現(xiàn)在亂箭釘?shù)綁ι虾螅€在繼續(xù)旋轉(zhuǎn),這是因為沒有指定旋轉(zhuǎn)是在碰撞前還是在碰撞后,那么將語句最上方的自定義箭旋轉(zhuǎn)的表達(dá)式放入到還沒有碰撞時的語句中,讓它在沒有產(chǎn)生碰撞時執(zhí)行(見圖5)

        圖5 改變表達(dá)式位置

        最后需要讓某些箭打到墻上后掉落下去,未必非要指定必須哪個箭掉落,隨機(jī)便可,使用隨機(jī)還可以控制掉落的多少。為baseParticle1添加自定義的float型的每粒子屬性falIPP。為fallPP創(chuàng)建表達(dá)式,在Creation下寫入:base ParticleShapel.fallPP=rand(0,1);之后會用這個隨機(jī)值做為一個判斷下落的條件。在Runtime before dynamics下寫入表達(dá)式(見圖6)。這里的意思是, 如果產(chǎn)生碰撞并且fallPP的隨機(jī)時大于0.1時,箭會釘在墻上,執(zhí)行之前的操作。否則替代物體箭的速度方向仍然是粒子的速度方向,再由于重力作用下落。再調(diào)整碰撞參數(shù),Resilience為0.3,Friction為0。將Friction設(shè)置為0可以讓亂箭有一種碰撞時抖動的沖力感覺,而調(diào)整Resilience是為了使箭彈得更遠(yuǎn)一些,也是為了表達(dá)箭的沖力。

        圖6 添加表達(dá)式

        3 結(jié)語

        對基于動力學(xué)和粒子系統(tǒng)模擬自然景象進(jìn)行了研究,總結(jié)出最大實現(xiàn)粒子的可控制性,既不是單純靠粒子發(fā)射器發(fā)射粒子,也不單純用場來干擾粒子,而是粒子系統(tǒng)與Mel表達(dá)式結(jié)合。通過Maya中的粒子系統(tǒng)和MEL表達(dá)式來模擬自然景象,不僅可以自主編程形成小插件直接利用,還可以后續(xù)升級迭代,更可以在多個客戶端多人同時進(jìn)行角色或場景的設(shè)計。MEL語言高效的通信和協(xié)同設(shè)計能顯著縮短動畫作品的開發(fā)周期,降低成本,增強(qiáng)動畫作品的個性化、開發(fā)的互動性及共創(chuàng)性。

        猜你喜歡
        動畫方向語言
        2022年組稿方向
        2021年組稿方向
        做個動畫給你看
        2021年組稿方向
        動畫發(fā)展史
        語言是刀
        文苑(2020年4期)2020-05-30 12:35:30
        我的動畫夢
        文苑(2019年22期)2019-12-07 05:28:56
        讓語言描寫搖曳多姿
        累積動態(tài)分析下的同聲傳譯語言壓縮
        我是動畫迷
        五十路熟妇亲子交尾| 日本强伦姧人妻一区二区| 国产精品无码一区二区在线观一 | 与漂亮的女邻居少妇好爽| 2019日韩中文字幕mv| 狠狠色噜噜狠狠狠狠888奇禾| 亚洲一区区| 日本少妇又色又紧又爽又刺激| 国产精品久久久久久久久电影网| 国产乱xxⅹxx国语对白| 亚洲AV综合久久九九| 激情视频国产在线观看| 国产一区二区三区毛片| 国产麻豆md传媒视频| 久久精品伊人无码二区| 久久亚洲精品中文字幕蜜潮| 国产无套中出学生姝| 国产成人无码一区二区在线观看| 国产情侣一区在线| 亚洲av日韩精品一区二区| 国产一区二区三区四区三区| 精品国产乱码久久久久久口爆网站| 亚洲色四在线视频观看| 国产午夜免费一区二区三区视频| 公和我做好爽添厨房中文字幕 | 国产无遮挡又黄又爽免费网站| 精品午夜久久网成年网| 少妇隔壁人妻中文字幕| 久久天天躁狠狠躁夜夜av浪潮| 欧美jizzhd精品欧美| 国产在线h视频| 日本一区二区三级在线| 无码va在线观看| 香蕉视频毛片| 白白色福利视频在线观看| 日韩大片高清播放器大全| 亚洲日韩国产精品第一页一区| 久久亚洲中文字幕精品一区四| 亚洲不卡高清av网站| 尤物视频在线观看| 亚洲公开免费在线视频|