2008年7月24日

控制器(Controller)基本概念

一.每一個物件都具有三大基本屬性,分別為Transform(移動、旋轉或縮放),和Object (物件基本參數)以及Material(材質貼圖等),皆受控制器(Controller)作用,我們之所以能夠手動操作物件在XYZ軸移動、旋轉或縮放,並且設置動畫Keyframes,是因為每個一物件在Transform裡面的位置(Position)、旋轉(Rotate)或縮放(Scale)都有被指派一個預設控制器,且這些預設的控制器皆有讓你手動在XYZ軸移動、旋轉或縮放此物件的功能,例如移動預設控制器為Position XYZ , 轉動預設控制器為Euler XYZ,縮放預設控制器為Bezier Scale等,所以我們可以把控制器看成是一種我們要操控物件的方式,而不同的控制器則代表不同的操控方式,所以我們可以利用不同的控制器來製作不同的動畫效果。


二.我們若要改變物件的位移、旋轉或縮放控制器,可以從以下幾個方法:
(1) 從Motion面板裡的Assign Controller欄位裡先選擇要替換的控制器,之後按下Assign Controller按鈕來替換。

(2)打開Track view 視窗,從中選擇要替換的控制器,之後按下RMB鍵選擇Assign Controller來替換。


注意: 有可能在你指派新的控制器之後,將無法手動使用移動工具在XYZ軸移動該物件,那是因為此新的控制器不支援讓你在XYZ軸的可以手動移動該物件的原因,例如當你指派的是Noise Position控制器,那你將無法在XYZ軸手動移動物件,但若你指派的是Bezier Position ,則你仍然可以手動使用移動工具在XYZ軸移動該物件,主要是因為Bezier Position控制器有讓你在XYZ軸可以手動移動該物件的參數功能,但Noise Position控制器卻沒有。

三.當要對某物件位移、旋轉或縮放指派多個控制器操作時,你就必須使用控制器列表(Controller List),指派控制器列表的方式有以下三種(下面以針對位移Position指派多個控制器為例):
(1)從Motion面板裡的Assign Controller欄位裡選擇原本預設的Position XYZ控制器,之後按下Assign Controller按鈕後,在出現的選單裡選擇Position List控制器,接著會發現Motion面板裡的Assign Controller欄位裡仍會保留Position XYZ控制器,但是會多了Available和Weight(Available使用來增加多個控制器用的,而Weight是控制每個控制器的影響權重)。

接著我們可以點選Available,再按下Assign Controller按鈕,並且選擇要添加的控制器(例如選擇增加Noise Position控制器並按下ok),接著會發現Nosise Position控制器被添加了,且同時保留Position XYZ控制器(如下圖),若我們想再添加更多個控制器,則可以再點選Available,再按下Assign Controller按鈕,並且選擇要添加的控制器即可。

(2)第二種方法為打開Track view 視窗,從中選擇原本預設的Position XYZ控制器,之後按下RMB鍵選擇Assign Controller,在出現的選單裡選擇Position List控制器,接著會發現Motion面板裡的Assign Controller欄位裡仍會保留Position XYZ控制器,但是會多了Available和Weight(Available使用來增加多個控制器用的,而Weight是控制每個控制器的影響權重),接著我們可以點選Available,再按下Assign Controller按鈕,並且選擇要添加的控制器(例如選擇增加Noise Position控制器並按下ok),接著會發現Nosise Position控制器被添加了,且同時保留Position XYZ控制器(如下圖),若我們想再添加更多個控制器,則可以再點選Available,再按按RMB按鈕後選擇Assign Controller,並且選擇要繼續添加的控制器即可。

(3)第三種方式為最簡單的方式,(以新增Noise Controller為例)即是從Animation選單裡,選擇Position Controller>Noise 即可,將會發現3ds max會自動保留原來預設的position XYZ控制器,並且增添了Noise Controller控制器,若要再繼續新增,則重複再到Animation選單裡選擇即可。


四.Controller(控制器) 和 Constrant(約束)
Controller與Constrant常令人搞混,但主要有以下幾個不同:

(1) Controller常是物件自己本身的參數運算效果,而Constraint則是必須牽涉到其他物件(例如A物件的位置被B物件的位置所約束)。

(2)控制器可以作用在物件的三大基本屬性,分別為Transform(移動、旋轉或縮放),和Object (物件基本參數)以及Material(材質貼圖等),但約束則往往只約束物件的Transform(移動、旋轉或縮放)屬性。

(3)在使用列表控制器添加多個控制器時,我們可以使用set active按鈕來切換我們想操作編輯的控制器,並且會在Motion面板中出現該控制器的編輯參數面板,例如前面的例子我們新增了Noise Cotroller後,會和原先的Position Controller一起作用在物件上,其影響權重(Weight)皆為100,箭頭顯示目前被設定set active的控制器為Noise Cotroller,因此目前我們可以操作編輯的控制器為Noise Cotroller,而Motion面板中也會出現Noise Cotroller控制器的編輯參數面板,並且會發現此時無法使用移動工具在XYZ軸移動該物件,若要讓物件可以使用移動工具在XYZ軸移動該物件,只要點選Position XYZ,並按下set active按鈕將當前我們想操作編輯的控制器改為Position XYZ,將會發現又可以使用移動工具在XYZ軸移動該物件,並且Motion面板中會出現Position XYZ控制器的編輯參數面板,原因是前面說過的 Position XYZ控制器有讓你在XYZ軸手動操作物件的參數功能,但Noise Position控制器卻沒有(已經被電腦計算的噪波所取代,在Noise Position作用下,只能調整物件在XYZ軸的噪波大小和變化等參數來控制物件的晃動,而無法手動移動該物件)。

注意:set active按鈕是用來切換我們想操作編輯的控制器,而不是用來啟動或關閉控制器用的,要把一個控制器的影響關閉,必須將weight設為0,另外權重的計算方式為: 假設A 權重weight為 a %,B權重weight為b% ,則A影響物件的百分比為 (a/a+b )*100% ,而B影響物件的百分比為 (b/a+b )*100%

但是若是你對物件使用了Constraint約束(例如Position Constraint),則此物件位移將被約束在另一個物件上,因此將會發現即使用Set active按鈕將Position XYZ設為當前我們想操作編輯的控制器,仍無法使用移動工具在XYZ軸移動該物件,因此我們除了使用Set active按鈕將Position XYZ設為當前我們想操作編輯的控制器之外,還需要將Position Constraint的Weight設為0才可以手動使用移動工具在XYZ軸移動該物件。


五.另外要注意的是我們可以在Motion面板裡的Assign Controller欄位裡,或者在Track view視窗裡,選擇控制器後按RMB按鈕,再選擇Properties,將會出現進階的參數控制視窗可以對該控制器做設定調整。


2 則留言:

Unknown 提到...

小弟我最近在我的部落格的這篇文章
http://nakolus.blogspot.com/2008/11/xxs.html#links

做了您的文章的超連結。

若有不妥之處還請告知...

Kenny 提到...

nakolus您好,
ok的,大家互相討論學習^^