王德貴
模型運動和攝像機運動一樣,是在設計相對運動時常用的應用。為了研究問題的方便,本文將模型運動分為直線運動、曲線運動和空間運動三種,最后做個案例,龜兔賽跑。
模型的運動軌跡是一條直線。移動的距離和速度,由循環次數和每次移動的距離決定,需要進行計算。
1.固定模型運動
例如,汽車移動10米,比較下列兩種情況移動的速度。容易看出,絕對值越大,速度越快,而負號仍然表示方向(圖1)。
2.會動模型的運動
每個會動的動物,運動模式和運動狀態都有各自的特點,使用時按模型的特點設置即可。比如讓烏龜爬行2米,再向前游2米,然后死掉(圖2)。

即當物體所受的合力(加速度)與速度方向不在同一直線上,則物體做曲線運動。簡單的曲線運動,就是在平面上運動,比如模型在x,z平面上運動,那么x,z兩個值都在發生變化,而且非線性。我們只討論兩種基本的曲線運動:勻速圓周運動和斜拋運動。其它曲線運動形式,涉及高中平面解析幾何知識。
1.圓周運動
可以用中心旋轉法、正多邊形法、圓標準方程法三種方法實現圓周運動。
(1)中心旋轉法
中心旋轉法,即是讓模型繞中心(0,0,0)旋轉而得到。如果想要出現軌跡,需要設置畫筆的粗細和顏色等相關屬性,畫的時候需要落筆,否則沒有筆跡,畫完要抬筆,這和Scratch類似。這種方法比較好理解,也是經常使用的一種方法(圖3)。
(2)正多邊形法:即前進一定距離,轉過一定角度,如此重復畫一個正多邊形,那么旋轉360度才是圓。假設每次轉過10角,那需要移動的距離是多少呢?可以隨意設置嗎?不可以!
用勾股定理來求解。半徑50,頂角1°,做等腰三角形底邊上的高,則:l=2×50×sin(0.5×3.1416/180)≈0.8726556米(圖4)。
實質上這是360邊形,程序設置如圖5。
一般認為正多邊形邊數超過36,即認為是圓,且邊數越多誤差越小。如果以四十邊形代替畫圓,則每次旋轉90(頂角),程序如圖6。
也可以用余弦定理(高中數學知識)求解(圖7)。
(3)圓標準方程法
這涉及高中平面解析幾何知識和變量。圓心(0,0,0),半徑50,則圓標準方程為:x2+z2=502(圖8)。
2.斜拋運動
當我們把物體拋向空中,物體下落過程中,留下的軌跡就是拋物線,我們稱為斜拋運動,本文只研究斜上拋運動,不考慮阻力,并且設定在x,y平面上(圖9)。
簡單模擬一下投籃球的過程。這里涉及“二次函數”的知識,拋物線方程設置為:y=-x2+8,球的初始坐標為(6,2,0),這里用到了“直到型”循環,即直到滿足條件才終止循環(圖10)。


空間運動更為復雜,所研究的內容也不是中學知識在此不作敘述。在此用中心旋轉法做一個半球。
1.設計思想
半球的作法,是由底層開始向上畫圓,半徑依次減小。變量設置y從0增加到50(大圓半徑),那么根據勾股定理,就能求出小圓半徑的值x,同時將x坐標設定為畫小圓的初始位置(圖11)。
仍然用的直到型循環。在y值增大的循環過程中,求出相應的x值,然后確定模型的位置,再讓模型繞中心旋轉(見前圓周運動方法1),即可得到一個半球。
這里可以調整y值的增大量和中心旋轉法畫圓的角度,來改變曲線疏密和畫圓的精度(圖12)。
3.效果圖
畫出的效果如圖13,大圖是編輯視圖,小圖是發布視圖(圖13)。
1.資源列表(圖14)
2.導入模型
會動的兔子,原資源庫中沒有,需要導入一個模型。導入方法如圖14。從圖中也可以看出,還可以導入圖片、環境和音頻(圖15)。
3.程序設計
(1)烏龜
烏龜模型是會動的動物,因此需要播放動畫,這個設定默認即可。由于烏龜爬行較慢,設定為一直前進,直到終點。為了能知道誰贏了,當烏龜到達終點后,顯示烏龜贏了,然后關閉顯示,程序結束(圖16)。
(2)兔子
兔子也要設置播放模式。兔子有時會驕傲,去睡覺,所以播放狀態可以選擇“Sleeping”(睡覺),這里我加了一個回頭看看烏龜和吃東西兩個狀態,以表示兔子的驕傲。
兔子開始跑了一段距離后,回頭看到烏龜在慢慢爬,于是就吃上東西,然后就睡覺了,等待時間用了隨機數(注意這個數不是整數,是浮點數)。設置兔子到達終點時,顯示兔子贏了,然后關閉顯示,程序結束(圖17)。
4.效果分析
實際效果如圖18。還可以給兔子加一些嘲笑烏龜的臺詞。