[page]
1: -gry*5+1.14
倍數5的是這樣的,首先需要確定大小齒輪的半徑比值,則這個倍數就是
“比值*2+1”。例如大齒輪半徑為小齒輪2倍,如果精確的話周長和齒數也是2倍,則比值就是2*2+1=5
同理半徑1倍(即相等時比值是1*2+1=3)
6 倍時是13
後邊+1.14是最後修正齒輪之間咬合的誤差,這應該很容易的得出
2:如何指定公轉開始的時間?
這裏的方法是小齒輪隨著大齒輪同時開始轉動
修改小齒輪位置X,Z的表達式
X605.545)*(-sin(tr/pi*180))+gx
tr指向大齒輪Y周旋轉
Z:605.545*(cos(tr/pi*180))+gz
tr當然不能換成數字拉
因為裏麵的角度是需要變化的
tr是指定的一個變量名啊。我再詳細說一下,下麵說的大齒輪指的是中間那個不動的,小齒輪指產生公轉和自轉的...
其方法如同前麵圖片上2,3步一樣,首先來到小齒輪位置X的表達式麵板中,先在前麵create variable下的name欄輸入一個名稱(這裏是tr),你也可以用任何名字隻要不與默認名稱衝突,點擊create按鈕就可以在下麵的匡匡裏看到你定義的變量名,但現在隻是一個名稱我們還需要把這個名稱與場景中物體的某種運動或狀態參數聯係在一起。點擊assign to controller 指定控製器,在列表裏麵選擇
大齒輪Y軸旋轉(Y rotation) 這一項,確定後在剛才對話框下麵
assigned t後麵就會出現相應的文字,現在tr 這個變量在這裏就代表大齒輪Y軸旋轉的量。
ps:在max中這個值並不是度數而是弧度的數字值,也就是說如果一個物體轉動180度的話那麼在參數表達式中采集到的值是3.14,但是sin@中需要的是度數所以在公式中用到tr/pi*180轉化。
現在看表達式
小齒輪X位置: 605.545*(-sin(tr/pi*180))+gx
小齒輪Z位置: 605.545*(cos(tr/pi*180))+gz
當大齒輪自轉時會產生不斷變化的轉動角度,所以sin@和cos@在大齒輪旋轉時也會隨之變化,結果小齒輪的X軸和Z軸的坐標也隨之變化,這也說明為什麼把tr改成一個數字是行不通的。
下麵把內容擴展一下
如何進一步控製齒輪的運動?
現在的運動流程是這樣的,中間的定齒輪作為主動物體,當設置關鍵幀動畫使該齒輪轉動時,動齒輪
由表達式控製做公轉和自轉。公轉表達式對應動齒輪的位置X和Z軸,而自轉表達式對應動齒輪旋轉Y軸。
由公轉表達式: 圓心距離*(-sin(定齒輪旋轉的角度))+定齒輪X軸坐標
圓心距離* (cos(定齒輪旋轉的角度))+定齒輪Z軸坐標
可以看出,當定齒輪旋轉完一周之後,動齒輪也剛好反向公轉一周。但實際上動齒輪的公轉可能需要更快或更慢,解決公轉速度到很簡單,隻須在sin和cos的括號內乘以一個常數即可。比如定齒輪自轉一圈,動齒輪公轉兩圈的情況:
圓心距離*(-sin(2*定齒輪旋轉的角度))+定齒輪X軸坐標
圓心距離* (cos(2*定齒輪旋轉的角度))+定齒輪Z軸坐標
但問題來了,這時齒輪的咬合又會有問題。
這時就要看動齒輪自轉表達式這邊了,因為自轉速度控製咬合。
表達式: -定齒輪旋轉的角度*倍數+偏移
定齒輪旋轉的角度是指定的變量,偏移用來微調齒輪錯位情況,這兩個都沒什麼說的。關鍵的就是中間的倍數了。推導了一下得出倍數公式了,試了幾種情況都沒什麼問題各位拿來用吧...
倍數=K*(R定/R動+1)+(R定/R動)
K是:單位時間內,動齒輪的公轉角度/定齒輪的自轉角度,這個值就是上麵提到過的在sin和cos的括號內乘以的一個值,在實際應用中兩邊應該是同一個數字。
R定/R動:定齒輪與動齒輪的半徑比,也同樣是周長比或齒數比。個人覺得用齒數計算更精確一些。
最後動齒輪自轉表達式:-定齒輪旋轉的角度*(K*(R定/R動+1)+(R定/R動))+偏移
這樣就能很好的控製動畫了。