1、藝術(shù)與傳媒學(xué)院藝術(shù)與傳媒學(xué)院第第八八章章 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 唐俊唐俊v 第一節(jié)第一節(jié) 表達(dá)式表達(dá)式 第一節(jié)第一節(jié) 表達(dá)式表達(dá)式 v (1)表達(dá)式的定義v 在Maya中,表達(dá)式是計(jì)算場(chǎng)景中一個(gè)或多個(gè)屬性值的腳本。v 我們知道,通過(guò)創(chuàng)建一系列的關(guān)鍵幀,可以將任何屬性在Maya中動(dòng)畫(huà)化。表達(dá)式也可以用于將屬性動(dòng)畫(huà)化,但不是通過(guò)設(shè)置關(guān)鍵幀,而是通過(guò)MEL命令來(lái)定義屬性的值而實(shí)現(xiàn)的。表達(dá)式可用于創(chuàng)建復(fù)雜的動(dòng)畫(huà),而不涉及或很少涉及手動(dòng)操作。第一節(jié)第一節(jié) 表達(dá)式表達(dá)式 v (2)表達(dá)式的分類v 共有兩種類型的表達(dá)式:v 控制單個(gè)對(duì)象屬性(per-object attributes)的對(duì)象屬對(duì)象屬
2、性表達(dá)式性表達(dá)式(object attribute expressions);v 控制粒子對(duì)象中的單個(gè)粒子屬性(per-particle attributes)的粒子表達(dá)式粒子表達(dá)式(particle expressions)。第一節(jié)第一節(jié) 表達(dá)式表達(dá)式 v 雖然表面上這兩種表達(dá)式十分類似,但是這兩種表達(dá)式的創(chuàng)建和使用卻有很大的區(qū)別。本章著重學(xué)習(xí)對(duì)象屬性表達(dá)式(object attribute expressions)。v 第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 舉例舉例1:nurbs球體勻速穿過(guò)球體勻速穿過(guò)X軸軸v 用結(jié)構(gòu)化的程序設(shè)計(jì)方法用結(jié)
3、構(gòu)化的程序設(shè)計(jì)方法“自頂向下、逐步求精自頂向下、逐步求精”來(lái)分來(lái)分析問(wèn)題:析問(wèn)題:v 第一步,創(chuàng)建一個(gè)nurbs球體;v 第二步,讓球體勻速穿過(guò)X軸。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v進(jìn)一步細(xì)化:進(jìn)一步細(xì)化:v 第一步,創(chuàng)建一個(gè)nurbs球體;手動(dòng)創(chuàng)建即可,可以實(shí)現(xiàn)。v 第二步,讓球體勻速穿過(guò)X軸讓球體的translateX屬性和時(shí)間聯(lián)系起來(lái)。 第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v “第二步第二步”再一次細(xì)化:再一次細(xì)化:v 在表達(dá)式中,需要獲取當(dāng)前的時(shí)間。Maya提供了兩種預(yù)定義的函數(shù):time和frame。v time函數(shù)存儲(chǔ)當(dāng)前時(shí)間(以秒為單位)。v frame函數(shù)
4、存儲(chǔ)當(dāng)前幀。v “第二步”可以實(shí)現(xiàn)為:v 球體的translateX屬性= time函數(shù)或frame函數(shù);第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 舉例舉例2:創(chuàng)建一個(gè)帶有屬性:創(chuàng)建一個(gè)帶有屬性revolutions的球體。當(dāng)?shù)那蝮w。當(dāng)revolutions屬性從屬性從0變化到變化到1時(shí),球體繞時(shí),球體繞Y軸旋轉(zhuǎn)一周。軸旋轉(zhuǎn)一周。v 用結(jié)構(gòu)化的程序設(shè)計(jì)方法用結(jié)構(gòu)化的程序設(shè)計(jì)方法“自頂向下、逐步求精自頂向下、逐步求精”來(lái)分來(lái)分析問(wèn)題:析問(wèn)題:v 第一步,創(chuàng)建球體v 第二步 ,增加屬性revolutionsv 第三步,用revolutions屬性來(lái)控制球體繞Y軸的旋轉(zhuǎn)第二節(jié)第二節(jié) 對(duì)象屬性表
5、達(dá)式對(duì)象屬性表達(dá)式 v 進(jìn)一步細(xì)化:進(jìn)一步細(xì)化:v 第一步,創(chuàng)建球體手動(dòng)創(chuàng)建即可,可以實(shí)現(xiàn)。v 第二步,增加屬性revolutions打開(kāi)屬性編輯器,手動(dòng)增加即可,可以實(shí)現(xiàn)。v 第三步,用revolutions屬性來(lái)控制球體繞Y軸的旋轉(zhuǎn)用revolutions屬性來(lái)控制球體的rotateY屬性。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v“第三步第三步”再一次細(xì)化:再一次細(xì)化:v 用revolutions屬性01的變化控制球體的rotateY屬性0360變化。v球體的rotateY屬性=revolutions屬性*360第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 舉例舉例3:兩個(gè)球體,都
6、繞:兩個(gè)球體,都繞Y軸旋轉(zhuǎn),球體軸旋轉(zhuǎn),球體1滯后于球體滯后于球體2 45。v 用結(jié)構(gòu)化的程序設(shè)計(jì)方法用結(jié)構(gòu)化的程序設(shè)計(jì)方法“自頂向下、逐步求精自頂向下、逐步求精”來(lái)分來(lái)分析問(wèn)題:析問(wèn)題:v 第一步,創(chuàng)建兩個(gè)球體v 第二步,控制球體1繞Y軸的旋轉(zhuǎn)滯后于球體2 45第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 進(jìn)一步細(xì)化:進(jìn)一步細(xì)化:v 第一步,創(chuàng)建兩個(gè)球體手動(dòng)創(chuàng)建即可,可以實(shí)現(xiàn)。v 第二步,控制球體1繞Y軸的旋轉(zhuǎn)滯后于球體2 45球體1的rotateY屬性滯后于球體2的rotateY屬性45。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v “第二步第二步”再一次細(xì)化:再一次細(xì)化:v 球體2的
7、rotateY屬性=球體1的rotateY屬性-45v 補(bǔ)充:補(bǔ)充:v 可以用球體1的rotateY屬性來(lái)控制球體2的rotateY屬性;反之,不行。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 舉例舉例4:在場(chǎng)景中橫向移動(dòng)的球體上下擺動(dòng)。:在場(chǎng)景中橫向移動(dòng)的球體上下擺動(dòng)。v 用結(jié)構(gòu)化的程序設(shè)計(jì)方法“自頂向下、逐步求精”來(lái)分析問(wèn)題:v 第一步,創(chuàng)建球體v 第二步,控制球體橫向移動(dòng)v 第三步,控制球體的上下擺動(dòng)第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 進(jìn)一步細(xì)化:進(jìn)一步細(xì)化:v 第一步第一步,創(chuàng)建球體手動(dòng)創(chuàng)建即可,可以實(shí)現(xiàn)。v 第二步第二步,控制球體橫向移動(dòng)兩種辦法v 第一種辦法,關(guān)鍵幀
8、動(dòng)畫(huà)v 第二種辦法,讓球體勻速穿過(guò)X軸讓球體的translateX屬性和時(shí)間聯(lián)系起來(lái)。球體的translateX屬性= time函數(shù)或frame函數(shù);v 第三步第三步,控制球體的上下擺動(dòng)控制球體的translateY屬性,讓它的值上下波動(dòng)。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v “第三步第三步”再一次細(xì)化:再一次細(xì)化:v 控制球體的translateY屬性,讓它的值上下波動(dòng)v 能否直接用time函數(shù)或frame函數(shù)來(lái)控制?第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 對(duì)于沒(méi)有規(guī)律的隨機(jī)行為, Maya提供了兩種常用的隨機(jī)函數(shù):v rand函數(shù)rand(1,2)生成1和2之間的隨機(jī)數(shù)字
9、。每次調(diào)用的結(jié)果都不一樣。v noise函數(shù)noise(自變量)生成一個(gè)隨機(jī)數(shù)字,有兩個(gè)特征:v 函數(shù)的自變量相同時(shí),計(jì)算結(jié)果也相同;v 大小相近的自變量,計(jì)算結(jié)果也相近。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v能否用能否用rand函數(shù)來(lái)控制?函數(shù)來(lái)控制?vnurbsSphere1.translateY=rand(0,1);v運(yùn)動(dòng)毫無(wú)規(guī)律,每次播放到相同的幀,都會(huì)生成不同數(shù)字,球體的translateY屬性值也就不同。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v能否用能否用noise函數(shù)來(lái)控制?函數(shù)來(lái)控制?vnurbsSphere1.translateY=noise(nurbsSphe
10、re1.translateX); 第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 球體運(yùn)動(dòng)不像以前那樣亂,現(xiàn)在希望它的運(yùn)動(dòng)稍微平穩(wěn)一些v nurbsSphere1.translateY=noise(nurbsSphere1.translateX/2);v noise函數(shù),輸入值變化速度小了,輸出的值變化速度也相應(yīng)的變小。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v希望波動(dòng)的幅度大一些vnurbsSphere1.translateY=5*noise(nurbsSphere1.translateX); 第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 如果希望有規(guī)律的波動(dòng)如果希望有規(guī)律的波動(dòng)sin
11、函數(shù)函數(shù) vy=sin(x)x0y1-12232第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v用sin函數(shù)來(lái)控制vnurbsSphere1.translateY=sin(輸入);第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v輸入可以是v1、輸入是位移的變化:、輸入是位移的變化:v輸入輸入nurbsSphere1.translateXvnurbsSphere1.translateY=sin(nurbsSphere1.translateX);第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v希望波動(dòng)的快一些希望波動(dòng)的快一些vnurbsSphere1.translateY=sin(nurbsSphere
12、1.translateX*5);v希望波動(dòng)的幅度大一些希望波動(dòng)的幅度大一些vnurbsSphere1.translateY=5*sin(nurbsSphere1.translateX*5);第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v2、輸入是時(shí)間的變化:、輸入是時(shí)間的變化:v輸入time函數(shù)或frame函數(shù)vnurbsSphere1.translateY= sin(time);第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v希望波動(dòng)的快一些希望波動(dòng)的快一些vnurbsSphere1.translateY=sin(time*5);v希望波動(dòng)的幅度大一些希望波動(dòng)的幅度大一些vnurbsSpher
13、e1.translateY=5*sin(time);第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 或者用或者用frame函數(shù)函數(shù)v nurbsSphere1.translateY= sin(frame);v 希望波動(dòng)的慢一些希望波動(dòng)的慢一些v nurbsSphere1.translateY=sin(frame/5);v 希望波動(dòng)的幅度大一些希望波動(dòng)的幅度大一些v nurbsSphere1.translateY=5*sin(frame);第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v隨時(shí)間和位移的變化的區(qū)別在于如果位移不變,則球體不上下波動(dòng)。而時(shí)間則不會(huì)。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表
14、達(dá)式 v 舉例舉例5:要使一個(gè)球體在移動(dòng)中自動(dòng)地時(shí)隱時(shí)現(xiàn)。:要使一個(gè)球體在移動(dòng)中自動(dòng)地時(shí)隱時(shí)現(xiàn)。v 用結(jié)構(gòu)化的程序設(shè)計(jì)方法“自頂向下、逐步求精”來(lái)分析問(wèn)題:v 第一步,創(chuàng)建球體v 第二步,控制球體移動(dòng)v 第三步,使球體時(shí)隱時(shí)現(xiàn)第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 進(jìn)一步細(xì)化:進(jìn)一步細(xì)化:v 第一步第一步,創(chuàng)建球體手動(dòng)創(chuàng)建即可,可以實(shí)現(xiàn)。v 第二步第二步,控制球體移動(dòng)有多種辦法v 第一種辦法,關(guān)鍵幀動(dòng)畫(huà)v 第二種辦法,讓球體的translateX、translateY、translateZ屬性和時(shí)間聯(lián)系起來(lái)。v 第三種辦法,使用路徑動(dòng)畫(huà),我們使用此方法手動(dòng)創(chuàng)建即可,可以實(shí)現(xiàn)。第二節(jié)第二
15、節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v第三步第三步,使球體時(shí)隱時(shí)現(xiàn)控制球體的材質(zhì)的R、G、B屬性,隨時(shí)間或者位移的變化而在01之間變化。 第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v“第三步第三步”再一次細(xì)化:再一次細(xì)化:v控制球體的材質(zhì)的R、G、B屬性在01之間變化想到了使用sin函數(shù),sin函數(shù)在-11之間變化,只需做一些修改。v材質(zhì)的R、G、B屬性=( sin(輸入)+1)/2;v只需要確定輸入第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 1、輸入是位移的變化:、輸入是位移的變化:v 材質(zhì)的R、G、B屬性=( sin(輸入)+1)/2;v 輸入球體離原點(diǎn)(0,0,0)的距離v Maya
16、提供了mag(當(dāng)前坐標(biāo))函數(shù)來(lái)計(jì)算當(dāng)前坐標(biāo)離原點(diǎn)的距離。第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 2、輸入是時(shí)間的變化:、輸入是時(shí)間的變化:v 材質(zhì)的R、G、B屬性=( sin(時(shí)間函數(shù))+1)/2v 材質(zhì)的R、G、B屬性=( sin(frame)+1)/2v 如果希望顏色變化的慢一些,需要控制如果希望顏色變化的慢一些,需要控制sin( )函數(shù)的輸入函數(shù)的輸入v 材質(zhì)的R、G、B屬性=(sin(frame/20)+1)/2;第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 用用time函數(shù)函數(shù)v 材質(zhì)的R、G、B屬性=( sin(time)+1)/2v 如果希望顏色變化的快一些,需要控制如
17、果希望顏色變化的快一些,需要控制sin( )函數(shù)的輸入函數(shù)的輸入v 材質(zhì)的R、G、B屬性=( sin(time*5)+1)/2第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 舉例舉例6:創(chuàng)建一個(gè)磁體對(duì)象,在給定的距離內(nèi)會(huì)吸引另一:創(chuàng)建一個(gè)磁體對(duì)象,在給定的距離內(nèi)會(huì)吸引另一個(gè)磁體個(gè)磁體磁體表達(dá)式。磁體表達(dá)式。v 用結(jié)構(gòu)化的程序設(shè)計(jì)方法“自頂向下、逐步求精”來(lái)分析問(wèn)題:v 第一步第一步,創(chuàng)建一個(gè)球體作為磁鐵,并控制球體移動(dòng)v 第二步第二步,創(chuàng)建一個(gè)圓柱體,在第一幀的時(shí)候,移動(dòng)到指定位置,作為被吸引的對(duì)象v 第三步第三步,控制球體吸引圓柱體第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 進(jìn)一步細(xì)化:
18、進(jìn)一步細(xì)化:v 第一步第一步,創(chuàng)建一個(gè)球體作為磁鐵,并控制球體移動(dòng)手動(dòng)創(chuàng)建即可,可以實(shí)現(xiàn)。v 第二步第二步,創(chuàng)建一個(gè)圓柱體,在第一幀的時(shí)候,移動(dòng)到指定位置,作為被吸引的對(duì)象手動(dòng)創(chuàng)建圓柱體,v if (第一幀)v 圓柱體移動(dòng)到指定的位置第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 第三步第三步,控制球體吸引圓柱體v 計(jì)算球體和圓柱體之間的距離用mag()函數(shù)v if (距離 5)v 球體吸引圓柱體v elsev 圓柱體位置不變第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表達(dá)式 v 這個(gè)效果有個(gè)缺陷:一旦球體吸引了圓柱體,球體和圓柱體位置重合,而不是貼在表面。v 需要進(jìn)行修改v if (距離 5)v 球體吸引圓柱體需要進(jìn)行修改v 我們希望在X方向進(jìn)行吸引,吸引后,球體和圓柱體貼在表面,而不是位置重合。 第二節(jié)第二節(jié) 對(duì)象屬性表達(dá)式對(duì)象屬性表
評(píng)論
0/150
提交評(píng)論