以reactor將一群複製物件掉入盒內,再製作出將它倒出的動畫。
觀念
物件要掉入盒內,以下的要點須注意:
- 盒子的屬性要設為concave;其mass設為0;friction及elasticity須實驗。
- 物件的mass要大於0;friction及elasticity須實驗;
- 若物件是複合體(由二個或以上的物件組成),則要將它們群組(group)。
- 盒子及物件均須加入Rigid Body Collection內。
一、製作不倒翁
不倒翁的質量分佈將不均勻,也就是說,它的重量會集中在不倒翁的底部。這樣會使不倒翁具備不滾動或不平躺的效果,它會試圖直立而搖幌。此一行為是可能的,因為在複合rigid body內,不同的體元可以有不同的質量。你要做是在不倒翁的底部增加一個體積小質量大的物件,而整個不倒翁的重量就落在該處。
二、幾何體模擬
現在你將繼續製作不倒翁,已做好的球體就當不倒翁的身子,下一步是用圓柱當手臂。你將複製這圓柱,並減少它的面數。此一複製的圓柱,因較容易且較快模擬,將被做為第一根圓柱 (比較複雜) 的模擬幾何體,該技術叫做使用代理幾何體 (proxy geometry)。
注意,如果你要將第一根圓柱仿製20根,並加入模擬動畫,這20根將全部使用這支簡化過的圓柱為其模擬幾何體。這意謂只有一根圓柱元件需要被做出物理模擬,如此,消耗的記憶體會較少,且模擬速度會加快。
三、將物件複製並化簡以便模擬
- 在Left觀視埠製作一根圓柱,將它放在球上方,但不與球接觸。
- 在Modify面板內圓柱的大小修改成Radius=6;Height=70;Sides=18。
- 在該圓柱被選取的狀態下,Edit > Clone。於Clone Options對話框內選Copy,再按OK。
這根新複製的圓柱將被當成代理幾何體。 - 在Modify面板內,將新複製的圓柱之Sides (邊數) 改為12。
- 選取原始的圓柱,開啟Rigid Body Properties對話框。
- 將該圓柱的Mass值改為10。
- 將該圓柱的Simulation Geometry特性設為Proxy Convex Hull (代理凸型殼)。
這意謂該圓柱將以另一物件的幾何體所做成的Convex Hull做為其物理表徵。 - 在Simulation Geometry下掛板內,點按Proxy鈕,並選取新複製的圓柱。
- 在場景內選取RB Collection助手物件,並將原始的圓柱加入。
- 在reactor工具列,點按Preview Animation,並播放其動畫。你將看到該圓柱的滾動流暢性不像畫面所顯示的那樣。
- 在Preview視窗內,選擇Display > Sim Edges以顯示該物件的模擬幾何體之稜線。
你將看到該圓柱之模擬幾何體比觀視埠內展示的還粗糙。
- 首先,增加幾何體以完成不倒翁。用torus做腰環,用一顆球做頭;用兩顆小球做眼睛;用一顆球做鼻子。
- 選取前一步驟中的眼睛及鼻子,並開啟Rigid Body Properties對話框。
- Simulation Geometry下掛板內設為Bounding Box。
- 選取不倒翁的頭及身體,於Simulation Geometry下掛板內設為Bounding Sphere。
腰環的simulation geometry能夠保留為Mesh Convex Hull,雖然你也能夠製作一個仿本,並將它簡化而做成一個proxy,一如之前為圓柱所做的。 - 一旦完成製作及安排這些物件,將它們加入Toy_Body群組內。為了做到這一點,選取每一物件,並從主選單選擇Group > Attach,然後點按Toy_Body。
- 選取Toy_Body群組,並從主選單選擇Group > Open。
這允許你去選取群組內的各別體元,俾編輯其rigid body properties。 - 改變該群組內的每個物件的mass值為1。
- 點按Preview Animation,你將看到所有的物件已加到這個複合rigid body。
不倒翁會掉下,若它沒有正確的行為,則可能是你沒將該rigid body的每項組件mass值設好。補救之道是關閉Preview視窗,檢視該群組內每項組件的mass值。 - 在不倒翁的身子球體內部底側新增一個小方塊。
- Rigid Body Properties對話框內,設其mass值為300。
- 選取該群組的組件,從主選單選擇Group > Close以關閉該群組。
- 選取該小方塊,從主選單選擇Group > Attach,然後點按Toy_Body。
- 點按Preview Animation並檢視不倒翁的行為。
不倒翁像之前那樣滑落,但會搖幌以求穩住,不倒翁底部的高質量小方塊已將其不倒翁的重心往下移。
reactor允許你為物件使用display proxy (展示代理),這意謂一個rigid body能夠在preview視窗內用一個不同的展示體。這增加視窗的效能,特別是你以相同的展示體模擬一個物件時。如果你有許多看起完全相同的物件,那麼,當用上display proxy時,你的展示只需追蹤該展示體的元件 (instance) 即可。本節中,你將為不倒翁製作一個display proxy。
七、製作rigid body的display proxy
- 按住Shift鍵,並拖移不倒翁群組以複製之。
- 從主選單選擇Group > Ungroup。
diplay proxy必須是單一網格體,要做到這一點,先將複製的不倒翁解散群組。 - 選擇代表不倒翁身子的球體,按滑鼠右鍵,在Transform的浮動選單內,選擇Convert To > Convert To Editable Mesh。
- 在Edit Geometry下掛板內,點按Attach List。
- 在Attach List對話框內,選取該群組的其它物件,然後點按Attach。
現在,你有一個代表不倒翁的單一網格體,它能夠當做display proxy。
小秘訣:為場景内的模型標上名稱,特別是當它們一模一樣時。因此,且為這個display proxy取名為Toy_Body_Proxy。 - 選取原始的Toy_Body群組,從主選單選擇Group > Open。
- 選取群組parent,即包住該群組物件的粉紅方體。
你須選取群組parent而不是不倒翁的任何組件,那是因為群組的parent代表該rigid body,且diplay proxy是施用到rigid body而不是rigid body的組件。 - 打開Rigid Body Properties對話框,於Simulation Geometry下掛板的Display群內,鉤擇Use Display Proxy。
- 點按Display Proxy按鈕,並在觀視埠內選取單一網格體的不倒翁。
按鈕內會呈現Toy_Body_Proxy。 - 在該網格不倒翁被選取的狀態下,點按右鍵,並從彈現的Display選單內選擇Hide Selection,將該網格體不倒翁隱藏。
- 選取不倒翁群組之任一組件,從主選單選擇Group > Close。
你的不倒翁將使用新的網格物件為其展示物件,如果對該可編輯的網格物件施加改變,則只要使用Preview視窗,這些改變就會出現。
若物件的舉措怪異,你可能需要增加它的物理模擬精確性。其作法有二:一是從外部改變動作,這會影響關鍵影格的成立及preview視窗。二是從preview視窗裡頭改變。這兩種方法中,變更精確性需要調整名為Substeps/Keyframe的參數,你能夠在Utilities面板的Reactor下掛板內或在Preview視窗的Physics選單內編輯它。
當物理性被計算時,reactor將物件做小步驟的移動,步驟愈小,模擬愈精確。然而,你應注意模擬愈精確則速度會愈慢。預定的精確值是每個關鍵影格區間有10個substep (次步驟) ,這意謂reactor將每個關鍵影格區段分成10個。
九、改變模擬的精確性
- 在Utilities面板上,點按Reactor鈕,展開Preview及Animation下掛板。
- 將Substeps/Key值10變更為25。
- 點按Preview Animation。
該模擬可能跑得更慢,但較不可能受到突然減速的影響。
本節中,你將製作一個玩具盒及39個不倒翁仿本。你將以Preview視窗讓這些仿本掉落盒內,再將它們的位置回送到3dsmax。如你將會看到的,Preview視窗充當一個互動的塑模工具,允許你物理性地重新按排及改變,然後再更新到3dsmax。
十一、製作玩具盒
- 在場景內,以box工具製作五片大小相同的平板。
- 將這五塊平板組成一個中空的盒小。
- 在Left觀視埠內,將之前傾斜的地板復原,並將其長寬加大。
- 選取盒子的底板,按滑鼠右鍵,於Transform選單內選擇Convert To > Convert To Editable Mesh。
- Modify面板之Edit Geometry下掛板內,點按Attach List。
- 在Attach List對話框內,選取盒子之其它四塊板,點按Attach鈕。
現在,你有一個代表玩具盒的單一網格體。 - 打開Rigid Body Properties對話框,將Simulation Geometry特性更改為Concave Mesh。
- 點按主工具列上的Select and Move。
- 將玩具移入盒內。
注意:確保不倒翁沒碰到玩具盒。 - Left觀視埠內,按住Shift鍵並上移不倒翁,使高出原不倒翁的頭。
- 在Clone Options對話框內,設定Numbers of Copies值為39,點按OK。
- 選取RB Collection助手物件,並在Modify面板之RB Collection Properties下掛板內,點按Add。
- 選取所有新的不倒翁及玩具盒,點按Select將它們加入rigid body collection。
- 點按Preview Animation,讓不倒翁落掉盒內並停妥。
- 在所有不倒翁停妥於盒內後,從Preview Window的選單欄選擇Max > Update Max。
- Preview Window,並在觀視埠內點按以更新不倒翁的展示。
之後你會常做的事情是在物理模擬中手動rigid body來產生動畫。這些rigid body被指涉為unyielding rigid body,且會在開啟的Rigid Body Properties對話內框內具備Unyielding特性。它們以關鍵影格所提示的訊息及其他rigid body反應到它們的訊息來動作。你不必賦予它質量。本例中,你將傾倒玩具盒,並使所有的不倒翁掉落在地板上。
十四、將手動的rigid body加入物理模擬
- 選取玩具盒。
- 打開Rigid Body Properties對話框,在Physical Properties下掛板內,開啟Unyielding。
- 開啟Auto Key模式,將時間滑桿移到第60影格。將玩具盒旋轉125度,使所有的不倒翁主動滑出。關閉Auto Key。要小心移動地板使其最終位置不會與玩具盒交叉。
注意:當你動手轉盒子時,不倒翁可能呈現奇怪的行為,但不必介意。 - 點按Preview Animation。
十五、準備輸出
既然模擬已無誤,你需為這些物件的動作製作關鍵影格。方法如之前所介紹,要利用工具列上的Create Animation來執行。
本範例中,你將為動作的前100個影格製作關鍵影格,然後,從第100格才進行模擬。這會顯示reactor的動態功能如何從場景中粹取初始速度,使得在一個步驟中從第0格到100格的模擬與從第0格到20格;然後第20到40格;40到60格;60到80格;80到100格的模擬相同。
十六、粹取rigid body的初始速度
- 在reactor工具列,點按Create Animation。
你的rigid body的動作之第0格到100格間的關鍵影格被製作完成。 - 在Utilities面板點按reactor,然後在Preview & Animation下掛板內,設定Start Frame=100及End Frame=500。
- 點按Preview Animation。
- 在Time Control區,點按Time Configuration。
- 在Time Configuration對話框內,設End Time為500。
- 再度點按Create Animation。
第100到500影格之關鍵影格將被製作完成。若在觀視埠內檢視關鍵影格的行為,你將看到所有物件的動作在通過第100影格後,會是流暢的,因為這些物件的初始速度被粹取及使用到這項模擬。
現在,你有了所有物件的動作的關鍵影格,它們能夠被用來製作動畫或靜態的rendering。然而,當下每一物件有每一個關鍵影格,這意謂該作品的檔案相當大,同時也很難在這項模擬之後扭改一個物件的行為。
Reactor擁有為rigid body移除冗贅影格的門道。你能夠為運算式提供一個閥值以保證在這項減量後,物件的運動會在其原始值的因素之內。本節中,你將為你的rigid body減低其關鍵影格數。
模擬之後減少冗贅的關鍵影格
- 在Utilities面板點按reactor,並展開Preview及Animation下掛板。
- 在Preview及Animation下掛板內,設Start Frame為0及End Frame為100。
- 在Utilities面板將Utils下掛板展開,於Key Management群中,點按Reduce Now。
這會減低模擬內有作用的rigid body之關鍵影格。本例中,用預設的閥值0.5。 - 再度看動畫。
如你所看到的,場景中的rigid body之行為與未減少閥值之前幾乎完全相同,但每個不倒翁的關鍵影格量大為減少。全部的不倒翁的動作相當完整,但檔案則減小30%左右。 - 儲存檔案。
本教案中,你已學會使用reactor去產生完整動畫的基本方法:
- 用Rigid Body Properties對話框為動畫中的物件設定特性。
- 用RB Collection物件去控制動畫。
- 預看動畫,並將動畫轉換為3ds關鍵影格。
作業
以reactor模擬市售之透明容器,內有不規則填塞的散粒狀內容物如下圖。
繳期
- 6月9日
- 市售商品之實物照,640x480pixel。
- 模擬該作品之3ds max流水號原始檔(即xx01.max,xx02.max...;能適當記錄完成該作品的各重要過程)及該檔render好之tga檔(640x480pixel)。
- 須善用燈光、材質及相機。
- 成果彩色A4相紙印出,
- 貼圖在部落格。