星期三, 5月 30, 2007

reactor應用--物件散落盒內

目標
以reactor將一群複製物件掉入盒內,再製作出將它倒出的動畫。

觀念

物件要掉入盒內,以下的要點須注意:
  • 盒子的屬性要設為concave;其mass設為0;friction及elasticity須實驗。
  • 物件的mass要大於0;friction及elasticity須實驗;
  • 若物件是複合體(由二個或以上的物件組成),則要將它們群組(group)。
  • 盒子及物件均須加入Rigid Body Collection內。
步驟

一、製作不倒翁
不倒翁的質量分佈將不均勻,也就是說,它的重量會集中在不倒翁的底部。這樣會使不倒翁具備不滾動或不平躺的效果,它會試圖直立而搖幌。此一行為是可能的,因為在複合rigid body內,不同的體元可以有不同的質量。你要做是在不倒翁的底部增加一個體積小質量大的物件,而整個不倒翁的重量就落在該處。

二、幾何體模擬
現在你將繼續製作不倒翁,已做好的球體就當不倒翁的身子,下一步是用圓柱當手臂。你將複製這圓柱,並減少它的面數。此一複製的圓柱,因較容易且較快模擬,將被做為第一根圓柱 (比較複雜) 的模擬幾何體,該技術叫做使用代理幾何體 (proxy geometry)。
注意,如果你要將第一根圓柱仿製20根,並加入模擬動畫,這20根將全部使用這支簡化過的圓柱為其模擬幾何體。這意謂只有一根圓柱元件需要被做出物理模擬,如此,消耗的記憶體會較少,且模擬速度會加快。

三、將物件複製並化簡以便模
  1. 在Left觀視埠製作一根圓柱,將它放在球上方,但不與球接觸。
  2. 在Modify面板內圓柱的大小修改成Radius=6;Height=70;Sides=18。
  3. 在該圓柱被選取的狀態下,Edit > Clone。於Clone Options對話框內選Copy,再按OK。
    這根新複製的圓柱將被當成代理幾何體。
  4. 在Modify面板內,將新複製的圓柱之Sides (邊數) 改為12。
  5. 選取原始的圓柱,開啟Rigid Body Properties對話框。
  6. 將該圓柱的Mass值改為10。
  7. 將該圓柱的Simulation Geometry特性設為Proxy Convex Hull (代理凸型殼)。
    這意謂該圓柱將以另一物件的幾何體所做成的Convex Hull做為其物理表徵。
  8. 在Simulation Geometry下掛板內,點按Proxy鈕,並選取新複製的圓柱。
  9. 在場景內選取RB Collection助手物件,並將原始的圓柱加入。
  10. 在reactor工具列,點按Preview Animation,並播放其動畫。你將看到該圓柱的滾動流暢性不像畫面所顯示的那樣。
  11. 在Preview視窗內,選擇Display > Sim Edges以顯示該物件的模擬幾何體之稜線。
    你將看到該圓柱之模擬幾何體比觀視埠內展示的還粗糙。
四、完成不倒翁
  1. 首先,增加幾何體以完成不倒翁。用torus做腰環,用一顆球做頭;用兩顆小球做眼睛;用一顆球做鼻子。
  2. 選取前一步驟中的眼睛及鼻子,並開啟Rigid Body Properties對話框。
  3. Simulation Geometry下掛板內設為Bounding Box。
  4. 選取不倒翁的頭及身體,於Simulation Geometry下掛板內設為Bounding Sphere。
    腰環的simulation geometry能夠保留為Mesh Convex Hull,雖然你也能夠製作一個仿本,並將它簡化而做成一個proxy,一如之前為圓柱所做的。
  5. 一旦完成製作及安排這些物件,將它們加入Toy_Body群組內。為了做到這一點,選取每一物件,並從主選單選擇Group > Attach,然後點按Toy_Body。
五、改變rigid body的質量分佈
  1. 選取Toy_Body群組,並從主選單選擇Group > Open。
    這允許你去選取群組內的各別體元,俾編輯其rigid body properties。
  2. 改變該群組內的每個物件的mass值為1。
  3. 點按Preview Animation,你將看到所有的物件已加到這個複合rigid body。
    不倒翁會掉下,若它沒有正確的行為,則可能是你沒將該rigid body的每項組件mass值設好。補救之道是關閉Preview視窗,檢視該群組內每項組件的mass值。
  4. 在不倒翁的身子球體內部底側新增一個小方塊。
  5. Rigid Body Properties對話框內,設其mass值為300。
  6. 選取該群組的組件,從主選單選擇Group > Close以關閉該群組。
  7. 選取該小方塊,從主選單選擇Group > Attach,然後點按Toy_Body。
  8. 點按Preview Animation並檢視不倒翁的行為。
    不倒翁像之前那樣滑落,但會搖幌以求穩住,不倒翁底部的高質量小方塊已將其不倒翁的重心往下移。
六、另眼觀看
reactor允許你為物件使用display proxy (展示代理),這意謂一個rigid body能夠在preview視窗內用一個不同的展示體。這增加視窗的效能,特別是你以相同的展示體模擬一個物件時。如果你有許多看起完全相同的物件,那麼,當用上display proxy時,你的展示只需追蹤該展示體的元件 (instance) 即可。本節中,你將為不倒翁製作一個display proxy。

七、製作rigid body的display proxy
  1. 按住Shift鍵,並拖移不倒翁群組以複製之。
  2. 從主選單選擇Group > Ungroup。
    diplay proxy必須是單一網格體,要做到這一點,先將複製的不倒翁解散群組。
  3. 選擇代表不倒翁身子的球體,按滑鼠右鍵,在Transform的浮動選單內,選擇Convert To > Convert To Editable Mesh。
  4. 在Edit Geometry下掛板內,點按Attach List。
  5. 在Attach List對話框內,選取該群組的其它物件,然後點按Attach。
    現在,你有一個代表不倒翁的單一網格體,它能夠當做display proxy。
    小秘訣:為場景内的模型標上名稱,特別是當它們一模一樣時。因此,且為這個display proxy取名為Toy_Body_Proxy。
  6. 選取原始的Toy_Body群組,從主選單選擇Group > Open。
  7. 選取群組parent,即包住該群組物件的粉紅方體。
    你須選取群組parent而不是不倒翁的任何組件,那是因為群組的parent代表該rigid body,且diplay proxy是施用到rigid body而不是rigid body的組件。
  8. 打開Rigid Body Properties對話框,於Simulation Geometry下掛板的Display群內,鉤擇Use Display Proxy。
  9. 點按Display Proxy按鈕,並在觀視埠內選取單一網格體的不倒翁。
    按鈕內會呈現Toy_Body_Proxy。
  10. 在該網格不倒翁被選取的狀態下,點按右鍵,並從彈現的Display選單內選擇Hide Selection,將該網格體不倒翁隱藏。
  11. 選取不倒翁群組之任一組件,從主選單選擇Group > Close。
    你的不倒翁將使用新的網格物件為其展示物件,如果對該可編輯的網格物件施加改變,則只要使用Preview視窗,這些改變就會出現。
八、模擬的精確性
若物件的舉措怪異,你可能需要增加它的物理模擬精確性。其作法有二:一是從外部改變動作,這會影響關鍵影格的成立及preview視窗。二是從preview視窗裡頭改變。這兩種方法中,變更精確性需要調整名為Substeps/Keyframe的參數,你能夠在Utilities面板的Reactor下掛板內或在Preview視窗的Physics選單內編輯它。
當物理性被計算時,reactor將物件做小步驟的移動,步驟愈小,模擬愈精確。然而,你應注意模擬愈精確則速度會愈慢。預定的精確值是每個關鍵影格區間有10個substep (次步驟) ,這意謂reactor將每個關鍵影格區段分成10個。

九、改變模擬的精確性
  1. 在Utilities面板上,點按Reactor鈕,展開Preview及Animation下掛板。
  2. 將Substeps/Key值10變更為25。
  3. 點按Preview Animation。
    該模擬可能跑得更慢,但較不可能受到突然減速的影響。
十、設好模擬
本節中,你將製作一個玩具盒及39個不倒翁仿本。你將以Preview視窗讓這些仿本掉落盒內,再將它們的位置回送到3dsmax。如你將會看到的,Preview視窗充當一個互動的塑模工具,允許你物理性地重新按排及改變,然後再更新到3dsmax。

十一、製作玩具盒
  1. 在場景內,以box工具製作五片大小相同的平板。
  2. 將這五塊平板組成一個中空的盒小。
  3. 在Left觀視埠內,將之前傾斜的地板復原,並將其長寬加大。
  4. 選取盒子的底板,按滑鼠右鍵,於Transform選單內選擇Convert To > Convert To Editable Mesh。
  5. Modify面板之Edit Geometry下掛板內,點按Attach List。
  6. 在Attach List對話框內,選取盒子之其它四塊板,點按Attach鈕。
    現在,你有一個代表玩具盒的單一網格體。
  7. 打開Rigid Body Properties對話框,將Simulation Geometry特性更改為Concave Mesh。
十二、從Preview視窗將場景更新
  1. 點按主工具列上的Select and Move。
  2. 將玩具移入盒內。
    注意:確保不倒翁沒碰到玩具盒。
  3. Left觀視埠內,按住Shift鍵並上移不倒翁,使高出原不倒翁的頭。
  4. 在Clone Options對話框內,設定Numbers of Copies值為39,點按OK。
  5. 選取RB Collection助手物件,並在Modify面板之RB Collection Properties下掛板內,點按Add。
  6. 選取所有新的不倒翁及玩具盒,點按Select將它們加入rigid body collection。
  7. 點按Preview Animation,讓不倒翁落掉盒內並停妥。
  8. 在所有不倒翁停妥於盒內後,從Preview Window的選單欄選擇Max > Update Max。
  9. Preview Window,並在觀視埠內點按以更新不倒翁的展示。
十三、使用Hand_Animated Rigid Bodies
之後你會常做的事情是在物理模擬中手動rigid body來產生動畫。這些rigid body被指涉為unyielding rigid body,且會在開啟的Rigid Body Properties對話內框內具備Unyielding特性。它們以關鍵影格所提示的訊息及其他rigid body反應到它們的訊息來動作。你不必賦予它質量。本例中,你將傾倒玩具盒,並使所有的不倒翁掉落在地板上。

十四、將手動的rigid body加入物理模擬
  1. 選取玩具盒。
  2. 打開Rigid Body Properties對話框,在Physical Properties下掛板內,開啟Unyielding。
  3. 開啟Auto Key模式,將時間滑桿移到第60影格。將玩具盒旋轉125度,使所有的不倒翁主動滑出。關閉Auto Key。要小心移動地板使其最終位置不會與玩具盒交叉。
    注意:當你動手轉盒子時,不倒翁可能呈現奇怪的行為,但不必介意。
  4. 點按Preview Animation。
注意:記得要改變物理特性時,必須打開group並改變group幫手的特性。你能夠一次更改數個物件的特性。

十五、準備輸出
既然模擬已無誤,你需為這些物件的動作製作關鍵影格。方法如之前所介紹,要利用工具列上的Create Animation來執行。
本範例中,你將為動作的前100個影格製作關鍵影格,然後,從第100格才進行模擬。這會顯示reactor的動態功能如何從場景中粹取初始速度,使得在一個步驟中從第0格到100格的模擬與從第0格到20格;然後第20到40格;40到60格;60到80格;80到100格的模擬相同。

十六、粹取rigid body的初始速度
  1. 在reactor工具列,點按Create Animation。
    你的rigid body的動作之第0格到100格間的關鍵影格被製作完成。
  2. 在Utilities面板點按reactor,然後在Preview & Animation下掛板內,設定Start Frame=100及End Frame=500。

  3. 點按Preview Animation。
  4. 在Time Control區,點按Time Configuration。
  5. 在Time Configuration對話框內,設End Time為500。
  6. 再度點按Create Animation。
    第100到500影格之關鍵影格將被製作完成。若在觀視埠內檢視關鍵影格的行為,你將看到所有物件的動作在通過第100影格後,會是流暢的,因為這些物件的初始速度被粹取及使用到這項模擬。
十七、減小檔案
現在,你有了所有物件的動作的關鍵影格,它們能夠被用來製作動畫或靜態的rendering。然而,當下每一物件有每一個關鍵影格,這意謂該作品的檔案相當大,同時也很難在這項模擬之後扭改一個物件的行為。
Reactor擁有為rigid body移除冗贅影格的門道。你能夠為運算式提供一個閥值以保證在這項減量後,物件的運動會在其原始值的因素之內。本節中,你將為你的rigid body減低其關鍵影格數。
模擬之後減少冗贅的關鍵影格
  1. 在Utilities面板點按reactor,並展開Preview及Animation下掛板。
  2. 在Preview及Animation下掛板內,設Start Frame為0及End Frame為100。
  3. 在Utilities面板將Utils下掛板展開,於Key Management群中,點按Reduce Now。
    這會減低模擬內有作用的rigid body之關鍵影格。本例中,用預設的閥值0.5。
  4. 再度看動畫。
    如你所看到的,場景中的rigid body之行為與未減少閥值之前幾乎完全相同,但每個不倒翁的關鍵影格量大為減少。全部的不倒翁的動作相當完整,但檔案則減小30%左右。
  5. 儲存檔案。
結論
本教案中,你已學會使用reactor去產生完整動畫的基本方法:
  • 用Rigid Body Properties對話框為動畫中的物件設定特性。
  • 用RB Collection物件去控制動畫。
  • 預看動畫,並將動畫轉換為3ds關鍵影格。

作業
以reactor模擬市售之透明容器,內有不規則填塞的散粒狀內容物如下圖。


繳期
  • 6月9日
繳項
  • 市售商品之實物照,640x480pixel。
  • 模擬該作品之3ds max流水號原始檔(即xx01.max,xx02.max...;能適當記錄完成該作品的各重要過程)及該檔render好之tga檔(640x480pixel)。
  • 須善用燈光、材質及相機。
  • 成果彩色A4相紙印出,
  • 貼圖在部落格。

沒有留言: