2010年3月28日 星期日

從DWG導入SKP的準備工作

作者:數碼阿叔
http://blog.sketchupbbs.com/space.php?uid=6670&do=blog&id=2553
緣起
有時數碼阿叔在論壇上看到有些朋友們提出在把DWG格式的2D圖形導入SketchUp以後,在建立模型階段出現了一些問題,歸納起來這些問題大致包括下面這些狀况:

封面的問題:在進行描邊封面的過程中某些地方總是封不了面、在意外的位置封了面、封面時總有些面粘來粘去或出現不該有的重叠面、無法分離內部的面等等。
模型大小的問題:明明建立的模型很簡單,也還沒貼材質,但是SKP文件變得非常大,感覺有點拖不動模型,影響到操作性。

圓弧問題:原先連接在圓和弧上的綫端點現在抓不到或抓到的位置不對,以致封不了面。
對於上述這些現象,說起來導入的DWG圖形本身要負很大的責任,這個DWG圖形是在SketchUp裏三維模型的定位基準,再怎麽說在導入SketchUp之前也要先把DWG圖形整理得正確和清爽才行。否則帶過去後患無窮。

關於在把DWG格式的2D圖形導入SketchUp之前如何清理圖形內容的問題,由於原始的DWG圖形可能很單純也可能比較複雜,數碼阿叔抽空寫了這篇比較完整的清理圖形過程。

從DWG導入SKP的準備工作


雖然SketchUp本身具備完整的建模功能,可以從無到有的完成整個三維模型。但由於SketchUp使用的座標系統不是AutoCAD的那種WCS絕對座標系統,在AutoCAD裏使用WCS座標系統是根據絕對座標值明確而直接的給圖形裏的各個"圖元" (Entity)定位。SketchUp所使用的是相對座標系統,所有的操作幾乎都是根據前一點的相對距離或角度進行定位,對於習慣於操作AutoCAD的使用者在初期概念設計階段或對既有圖形放樣會造成一定的不習慣。同時SketchUp對于圖層定義不像AutoCAD那麽嚴謹,在AutoCAD中每個圖元都隸屬於某個單一的圖層,新畫上一條綫,一定會落在"當前圖層" (Current layer)上,不同圖層上的圖元間不會相互干擾。

SketchUp對圖層的定義則鬆散得多,圖層主要的用途常用在視景管理上,即使也可以設置當前圖層,但是許多新圖元産生時(例如推拉)跟當前圖層也沒有必然的關係。對于比較複雜的建築圖,在基底平面上放樣的時候,SketchUp只要感應到能够圍合的區域又會自動産生封面粘來粘去,在這個階段的確難以提升工作效率。

該使用哪一種或哪幾種設計軟件完成設計工作,選擇權完全在于設計師自身,不在軟件發展商,設計師沒有必要忠心耿耿的死抱著某一個軟件跟它同生共死。別相信軟件發展商所說的『我們的軟件是XX設計唯一的解决方案(solution)』那種鬼話,世界上沒有完美的軟件,不論SketchUp、AutoCAD或其他軟件都各有其優勢也各有其不足。對於設計師來說不論什麽軟件都只是個設計工具,只要能提高設計的效率和品質,我們完全可以自由的把各種軟件組織在一起交互運用各取所長。因此在整個設計的進程中,有許多建築師和設計師會把從AutoCAD或其他CAD應用軟件所建立的二維圖形導入SketchUp用作建立三維設計模型的底圖。

對于我們準備導入SketchUp的DWG圖形,究其來源,可以區分爲下面幾種類型:
第一種類型:取得的建築資料本身就是原先已經完成的設計圖電子文件(DWG格式的圖形檔)。這些圖形可能是自己製作的,也可能是外來的。由于製圖習慣和作業水平的差异,這些圖形也幷不是專爲導入SketchUp所繪製,因此絕大多數躲不掉得先做許多清理工作。

第二種類型:利用AutoCAD進行設計初期的場地配置規劃、建築物量體分割放樣的概念平面作業,把由此産生的二維DWG圖形導入SketchUp,進行從概念設計到細部設計的三維模型化設計作業。

第三種類型:把AutoCAD做爲SketchUp的前置工具,爲了SketchUp建模的需要,利用AutoCAD製作全場地或部份建築物的二維圖形,導入SketchUp用做構建三維模型的底圖。
對於上述第二和第三種類型産生的DWG圖形幷不用太擔心,因爲這兩種類型本身有很明確的目標,就是爲了要用於SketchUp建立三維模型使用,製圖者在細節上相對的會比較小心和仔細,事實上在導入SketchUp之前需要做清理準備的工作也比較單純。

經常會産生相當困擾的是上述第一種類型,由於這些圖形製圖的目標是爲了印出傳統的圖紙,幷不是專爲SketchUp建模所準備的,只要在列印出來的圖紙能看,有些地方可能就會便宜行事。根據經驗爲了要導入SketchUp常常得花很大的功夫去做整理準備的先期工作,然而爲了能在SketchUp裏節省大量放樣的時間,花費這些時間還是很值得的。

對于該怎麽著手把DWG圖形清理乾淨,我不想把它弄成檢查表這類的東西,由於DWG圖形的來源各有不同,需要清理的內容也各有不同。數碼阿叔根據最不利的第一種類型的外來圖型可能遇到的狀况,把完整的清理圖形工作列成十三個循序進行的步驟。雖然幷非對於所有的DWG圖形都用得到每一個清理步驟,使用者可以依循著這些順序檢查圖形。

檢查並清理圖形的建議步驟:


[步驟一]檢查圖形中當前的座標系統是否爲WCS "世界座標系統"
看看AutoCAD屏幕視窗左下角顯現的當前圖形座標系統圖標,如果不是WCS,就得把AutoCAD的座標系統從"使用者定義座標系統" (UCS)改回到"世界座標系統" (WCS)。

[步驟二] 開啓全部圖層(Layer)
進入"圖層管理器" (Layer Manager),把所有關閉(Off)、冷凍(Frozen)和鎖定(Locked)狀態的圖層全部打開,成爲可操作的"圖層" (Layer)。
這麽做的目的是把目前因爲被隱藏而看不到的圖元都顯現出來,幷且處於可操作狀態以利於清理圖面。

[步驟三] 執行Zoom Extent命令,把圖形的可見範圍放大到包含全部圖元的範圍
這是一個預先檢查的步驟,看看Zoom Extent以後,準備要載入SketchUp的圖形是不是剛剛好充滿了整個視窗。如果不是,表示圖形中還有不需要帶過去的圖元。在整個清理圖元的過程中可以重複在各個步驟裏使用Zoom Extent命令,檢驗主要模型範圍外還有沒有什麽東西。

[步驟四]删除圖形中不需要帶進SketchUp的"圖元" (Entity)
①清除圖形中游離的"點" (Point)
執行Pdmode命令把"點"(Point)的顯示模式改爲"3"。原先AutoCAD對于點的顯示模式既設的爲"0",在圖形上就是一個沒有大小的亮點,如果這個點剛好落在綫段上就看不見它存在。把點的顯示模式改爲3,AutoCAD會以一個相對尺度的"X"符號顯現點的位置。
由于在SketchUp視窗裏很不容易找到一個單獨點的位置,這種點圖元絕大多數在SketchUp裏用不到,把它們删除掉。執行Zoom Extent命令把圖形顯示範圍放大到顯現全部圖形,檢查畫面邊緣部位是否還有游離的點。
删除完了以後可以再度使用Pdmode命令把"點"(Point)的顯示模式改回到"0"。
②删除圖形中不需要帶進SketchUp的"圖元"

檢查一下凡是跟在SketchUp裏建模無關的綫段、輔助綫、座標軸綫、文字、數字、符號標記、尺寸標注、門窗、設備、家具、植栽、紋理(hatch)以及圖框等等都把它們一一删除掉。
執行Zoom Extent命令,把圖形的可見範圍放大到包含全部圖元的範圍。這個動作很重要,有的時候在製圖過程因爲操作失誤,剛從鍵盤打進去的字不見了或者複製的圖元不見了,通常我們不會很在意,頂多重做一次。可是AutoCAD不這麽想,它會很好心的把這些圖元放在遠遠的天邊。當你執行Zoom Extent命令以後,假如發現顯示器上原先充滿屏幕的圖形一下子縮成一小塊,那麽趕快在對角或對面邊緣處仔細找一找,看看有沒有一小段綫、一個點或者一個字藏在那裏,如果真的有那麽趕快把它删除掉吧。

[步驟五]處理"圖塊" (Block)
關于DWG圖形裏面的"圖塊" (Block)是否應該先炸開(Explode)以後再導入SketchUp,衆說紛紜。有人認爲保留圖塊對於以後在SketchUp裏封面比較容易,因此動輒建議一定要保留圖塊。數碼阿叔則認爲此事不可一概而論,必須看圖塊本身的內容而定,只能選擇性爲之。

我們經常從一些外來的DWG圖形文件中發現,嵌附在裏面的圖塊亂七八糟的什麽都有,甚至于還會有整張平面圖在裏面,AutoCAD很好心,凡是用過的圖塊它都會保留在這個圖形的數據庫裏,如果不做清理而讓這些圖塊跟著DWG圖形一股腦兒的帶進SketchUp裏面,就有可能發生前面所說的,很簡單的小模型還沒貼材質的時候SKP就膨脹到幾十兆。SketchUp會接受這些圖塊,但是在SketchUp裏却不可能用上這些2D圖塊,何苦爲難自己呢?

假如圖塊裏包含有不共面的圖元(entity),導入SketchUp以後勢必增加封面工作的困擾。幷且應用那個讓Z值歸零的AutoLISP程式FLATTEN.lsp也無法對圖塊(Block)做壓平的工作,因此數碼阿叔還是建議把圖形裏的圖塊炸開(Explode)。

[步驟六]處理綫型(Linetype),確認均爲連續綫型
我們把CAD圖形導入SketchUp的目的是爲了建模,原先在AutoCAD圖形裏如果使用了虛綫、點綫等等這些不連續的綫段,到了SketchUp裏就變得完全無用。因此得先把這些不連續的綫型更改爲連續(Continue)綫型。
具體的操作方法:使用Chprop > linetype命令把那些不連續的綫型改變成連續的綫型。

[步驟七]檢查圖形單位(Unit)和精確度(Precision)
檢查DWG圖形的圖形單位是否跟日後在SketchUp裏面建模使用的圖形單位相同,如果兩者不相同的話,在這裏先對DWG圖形的圖形單位作調整,例如把DWG上英制(不是沒有可能)改爲十進位公制,比較合乎我們的使用習慣。其實幷不是一定得弄成毫米對毫米,像數碼阿叔自己的習慣就是在DWG裏使用毫米(mm)而在SKP裏使用米(m)爲單位,導入時單位轉換幷沒有任何不便或誤差。

有一件容易被使用者忽略的就是DWG圖形中所設置的長度與角度精確度問題,許多人使用附加在AutoCAD上的所謂建築專業軟件製圖,這些軟件爲了尺寸標注和製圖的便利,多半會自動設置毫米(mm)單位幷且把長度與角度的精確度(Precision,指小數位數)設置爲個位(不顯示小數點後面的尾數),使用Distance命令量測兩點距離時顯現的距離爲不帶小數的整數值。對於二維圖紙固然很方便,但是對于準備要導入SketchUp建立模型而言,就很容易造成認知上的誤差,不利於日後做模型的比例縮放和旋轉方位。例如說在精確度默認爲個位數的15長度值,真正的長度可能爲15.0535…或15.3953…,所以說15和15.0000可能是不同的長度。

因此我們在DWG裏先把圖形單位裏長度與角度的精確度設置成0.000,目的是確認場地和建築物的正確尺度,做爲日後在SketchUp裏建模時比例縮放和旋轉方位的有效參考。

[步驟八]處理圖元的高程(Elevation),使全部圖元都落在X-Y平面上
爲了方便在SketchUp裏建模,先檢查一下圖形裏所有的圖元是否都在Z=0的高程位置。如果因爲原先製圖時不小心或者其他軟件自動産生圖形時弄出一些不在X-Y平面上的圖元(其Z值不等于0),導入SketchUp以後由于這些綫不共平面,直接會造成在SketchUp裏這個部分無法封面。因此在AutoCAD裏事先把它們的Z值歸零都放在X-Y平面上,對於後續在SketchUp裏建模封面工作有很大的幫助。

具體的做法是運用一個AutoLISP程式FLATTEN.lsp一次性的把圖形中所有圖元的Z值歸零。這個FLATTEN.lsp程式完全是英文介面,數碼阿叔已經把程式的操作方法和原始碼放在博客日志裏。另外我們SketchUpBBS論壇裏有個漢化介面的FLT.lsp,需要使用的話可以自行搜索下載。

FLATTEN.lsp載入AutoCAD裏必須在WCS座標系統下執行,把幾乎"所有"圖元的Z值歸零,目的是使所有圖元都落在X-Y平面上,成爲名副其實的二維圖形。但是FLATTEN無法處理圖塊(Block)裏的圖元,如果圖塊裏有些圖元的Z值不爲0,執行FLATTEN是無法將其歸零的。因此在[步驟五]裏我建議把圖形裏的圖塊炸開,使得FLATTEN能順利的把這些圖元的Z值歸零。

[步驟九]處理曲綫、圓、弧與交叉綫
AutoCAD裏的圖元使用的是向量格式,所謂向量格式指的是以屬性描述圖元的記錄方式,聽起來似乎很玄,關于綫、圓、弧的叙述式,舉個例子說,綫(line)包括起點和終點座標(x, y, z)、以及綫的向量。弧包含了起點和終點座標(x, y, z)、弧的園心座標(x, y, z)。園就更簡單了只包含園心座標和半徑。但是不會紀錄在圖形裏有哪些圖元跟它交叉,例如兩條任意交叉的綫段,只有AutoCAD的Osnap抓點功能能以交叉點(intersection)模式算出這二個圖元同時通過(X-Y平面)某個座標點位置因而顯示出抓點靶框來。如果我們關閉了Osnap抓點功能,那就別想精確的從這個交叉位置再做出什麽來。

囉囉嗦嗦的講這些交叉綫做什麽,爲的是兩條交叉綫段導入SketchUp以後還是兩條獨立的交叉綫段,導入時SketchUp也不會對交叉位置做任何標記和認知那裏有個交叉點,描邊封面的過程中通過SketchUp的snap抓點功能感應到那裏有個交叉位置顯現一個綠點,必須等到你在綠點處按下滑鼠讓描邊的邊綫在那裏建立一個端點,當SketchUp感應到附近能由端點連接綫段形成能閉合區域以後,就會自動産生封面的動作。由此可以推想,在導入的底圖上如果存在著許多交叉綫,封面過程中出現意外的封面範圍或重叠面也就不足爲奇了。在整理DWG圖形的時候該不該處理圖形裏的交叉綫,把它們打斷成爲端點連接。不好說,使用者自己拿主意吧!

圓和弧是另一個問題,前面說過DWG圖形是向量格式,如果以圓周或弧段上的某處爲起點畫一條綫,這條綫同樣跟圓或弧不發生關係,只能說那個綫端點跟園周某處有相同的座標值(爲了方便說明我們稱它爲端點A)。導入SketchUp以後問題就來了,我們得知道SketchUp裏的綫是沒有曲綫的,看到的不論圓、弧、曲綫都是由相互連接的直綫段組成,我們稱爲"段落" (segment),導入時SketchUp會默認的給每個圓和弧設置24個段落,意即原先DWG裏的圓變成由24段直綫連在一起(有點類似AutoCAD的多重綫)。這時問題就來了,原先落在圓周上的直綫端點A因爲圓周和弧的改變必然會脫離原先在圓周和弧上的位置,要不變成了交叉要不就成了完全脫離狀態。

由於必須要把視景連續放得很大才能看清楚這種接觸點的差异,通常在描邊封面時只會感覺這個位置明明點了下去却老是封不了面,就是圓弧曲綫被SketchUp段落化所造成的後果。該怎麽辦?在SketchUp裏說起來無解,只能像綉花那樣一點一滴慢工細活的去修補或重新連綫。但是知道會有這種後果,在AutoCAD裏倒是可以未雨綢繆去避免它,其一是儘量別把綫的端點放在圓周或弧段上,其二是別畫什麽切綫之類的,真有需要的話到了SketchUp裏面再補畫這些綫。

第三個問題是比較傷感情的,也多發生在前述第一種類型的外來圖形文件中,按照製圖規定平面圖上柱子、剪力墻是要塗黑的,目的是好跟砌塊能有所區別,因此DWG圖形裏柱子和剪力墻得弄成不透明,正規的方法是先畫出墻柱斷面輪廓綫,再應用Solid或Pline命令把輪廓綫內塗滿。但是我曾經不止一次在把出自一些設計單位的平面圖上墻柱塗滿的部份删除以後,訝然發現柱子沒有了、剪力墻也不見了,經仔細檢查以後發現原來這些被Pline多重綫塗滿的部份底下根本沒有畫出墻柱的輪廓綫。尤有甚者,被塗滿遮蔽住的下面原本該跟墻柱銜接的墻綫長長短短亂七八糟。金絮其外敗絮其中,看得令人搖頭,仿佛又回到上個世紀拿著鉛筆人力製圖的年代,我們有些設計師對專業的輕忽態度和對製圖的不到位著實該好好檢討。當然我們不能一根竹竿打翻一船人,還是有許多設計單位的圖形畫得中規中矩。我在這裏提出來的目的是要告訴大家在把DWG圖形導入SketchUp之前的準備階段中,一定要考慮到可能會遇上這種現象。如果運氣不好真的撞上了,那麽趁早把那些該有的墻柱輪廓綫、沒接在一起的墻綫、投影綫都一一修整清楚。

[步驟十]整理幷精簡"圖層" (Layer)
把圖形從AutoCAD導入SketchUp時,圖層會跟著導入變成爲SketchUp的圖層。如果在DWG圖形裏圖層用得很多,導入後讓SketchUp憑空多了一大堆圖層,對于後續在SketchUp裏建立模型幷沒有什麽好處。由于SketchUp對圖層定義非常鬆散,不像AutoCAD會嚴格的在現行圖層(Current layer)上工作,建模過程中很難保持圖層的齊一性,通常我們會在建模到了一個段落以後調整模型中各個構件的所屬圖層,爲的是可以用圖層做爲這些模型構件的可視性開關,利於場景操控。

因此把一大堆圖層從AutoCAD帶進SketchUp幷沒有實質性的必要性,通常會全選圖形以後,運用Chprop > layer命令把整個圖形都改變到某個單一圖層上,或者乾脆放在"0"圖層(Layer 0,浮動圖層)上面。剩下這些多餘的圖層則清理掉(見步驟十二)。

[步驟十一]調整北向方位和座標原點
在AutoCAD的製圖作業中爲了製圖方便和效率,通常會把矩形建築物的長短向放在平行XY軸方向,使得真正的地理北向可能幷不在平行Y軸的方向。如果就這樣導入SketchUp,SketchUp會以初始綠軸對齊DWG的Y軸方向,致使模型的北向相對于真正的地理北向發生偏差,連帶使得陰影方位角跟著産生誤差,雖然在SketchUp裏可以重設北向角度,但是輸入方位角度分秒幷不那麽方便,因此在AutoCAD裏就把北向方位校正才是正確的做法。

具體的操作方法不難:選取整個圖形,根據地理北向與Y軸間的角度差把圖形"旋轉" (Rotate)到跟Y軸平行北向的方位。(意即Y軸對齊北向)

另外得注意的就是"座標原點" (Origin)的問題,AutoCAD的WCS是絕對座標系統,圖形的每一個圖元都從座標原點(0, 0, 0)起算來計算其相對位置。如果圖形距離座標原點很遠,等到導入SketchUp以後,SketchUp會把DWG的座標原點對應到SketchUp的"初始座標原點" (建立一個新的skp模型檔的時候,最初紅綠藍軸的交叉點),結果會使得在視景中看不到導入的圖形,必須執行SU的Zoom Extent把視景擴大到包含整個模型才看得到導入的模型。因此在這個階段最好的方式便是在AutoCAD中把圖形的左下角"移動" (Move)到座標原點上,就能有效的避免導入後找不到模型的現象。

具體的作法:選取整個圖形,啓動Move命令,以圖形的左下角做爲起始點,從鍵盤輸入"0, 0, 0"做爲第二點,這麽做可以把圖形搬到座標原點處,利於導入SketchUp以後的處理。

[步驟十二]清理圖形數據庫(Purge All)
這是最重要的步驟,爲圖形瘦身减肥。AutoCAD的DWG圖形裏有一個看不見的"數據庫" (database),數據庫裏嵌裝著全部圖形信息,包含了在這個圖形裏"曾經使用過"(used)的圖塊、綫形、紋理、文字、圖層、尺寸類型…等等,所謂"曾經使用過"的意思是即使我們現在的圖形中已經把這些東西給删除掉了,可是這些東西還是留存在數據庫裏,占了相當大的內存量。有的時候明明圖形很簡單,導入SketchUp以後Skp模型陡然變得很大,不用說就是在導入時把一些"幽靈"夾帶了進去。因此我們必須在這裏把圖形數據庫清理一番,去蕪存菁。

具體的操作方法:執行AutoCAD的"清除全部" (Purge All)命令,會跳出一個對話框視窗,上面列出所有可以進行清除的項目列表,凡是列出的項目前端有個加號(+)的項目表示這個項目裏包含了曾經使用過而現在不再用到的東西(可以清除的項目),按清除按鈕執行清理數據庫(database)的工作。需要注意的是,有些不再參考到的圖塊被清除了以後,原先圖塊所屬或包含的圖層、字型、綫型、紋理…等等才會浮現出來等待下一次清理,因此這個"清除全部" (Purge All)命令應該重複執行三到四次,等到各項目前端的加號都消失了爲止,這時圖形數據庫也被精簡到最小的狀態。

[步驟十三]保存DWG文件
對這一個步驟不必多做解釋了。使用"另存爲"(Save as)命令吧,保存成一個乾淨的新圖形文件。

對于把DWG導入SKP過程中可能遇到的問題以及在SKP裏封面的種種問題,請看數碼阿叔下一篇教程:『從DWG導入SKP後的封面問題』

2008年11月22日 星期六

SU Animate 2.0的组装动画功能

SU Animate 2.0的组装动画功能 SU Animate是Cadalog公司的产品,从1.0版上市迄今尚不到两年,目前的版本是1.1.1版。SU Animate是应用Ruby程式语言写成的,编译成.RBS格式,以插件方式内挂在SketchUP 6 Pro里面执行。1.0版只支持SketchUp Pro版,从1.1.1版以后则可以支持SU的免费版。 藉由SU Animate 2.0可以产生所谓“组装动画”,对于工业设计的产品发布特别有利。在组装动画的演示下,设计产品的零组件安装顺序和安装位置都能清晰的表达,避免冗长的文字说明或词不达意的问题。当然组装动画也可以应用在建筑设计和室内设计以及其他的设计领域里,必然或不必然都在使用者的方寸之间。 其实做组装动画只是SU Animate 2.0的新功能之一,运用的是这一版新加入的一个“Delay”(迟延起动)设置项。何谓迟延起动?动画的本质是,我们为动画设置路径,把路径指派给特定物件,让物件沿着路径移动。当场景里只有一条路径的时候,没有物件迟延起动的需要。可是应用在组装零组件的动画上,各个零组件在组装过程中有先后的顺序性,也有组装过程中的时间差。因此我们需要各个组件开始移动的时间不一样,这个“Delay”就是用于对各个零组件按照需要的顺序设置不同的起动时间。 (Rendered by Podium) 现在我开始测试SU Animate 2.0的Delay(迟延起动)的新功能,我的目标是一台桌上型电扇的安装过程。在SketchUpBBS论坛上模型交换区花了点U币借用一个电扇模型。在这里特别要向这个电扇模型的原作者致谢,他很好心的已经把电扇的组装元件,包括①后罩、②轴箍、③扇叶、④前罩、⑤螺丝、⑥马达以及⑦底座都设置好Group(群组),为我节省了不少构建群组的时间。 (1)由于SUAnimate移动的物件必须是已经命名的Group,所以我把上述组装元件这些群组物件分别给它们命名为:①Rear,②Screw,③Fan,④Front,⑤Pin,⑥Motor,⑦Base。我把这7个群组物件分别放在不同的图层上,这并不是必要的步骤,只是在测试软体时能开关图层显示比较方便而已。 (2)接下来我着手新建了6个给Path(移动路径)用的Layer(图层)分别给它们命名为Path0~Path5,准备每个图层上放置一个群组物件的移动路径。这也不是必要的作法,其实只要一个专门放置路径的图层就行了,在写成Scene之前把这个路径图层关闭,免得以后在动画里看到路径那几条线。 (3)第三个步骤开始做整理电扇模型的工作,既然要演示电扇的组装过程,当然要先把电扇拆解开来,把各部份零组件排列好,别人才看得清楚安装的顺序,对吧?我动手把上述电扇的各块组件按照⑤④③②①的顺序沿着座标绿轴向前方移出来,“⑤Pin”外移1000mm最远,“①Rear”外移200mm最近。各个组件之间间隔200mm,如此可以清楚的看到每块组件还没有组合成电扇的样子。又把“⑥Motor”也向上方移动200mm,这就完成了把这部电扇大卸八块的手续。 (4)正式开始工作是建立移动路径,好让这些被移出来的电扇组件能沿着路径回到原位。我从最远的螺丝开始,切换到Path5图层,从螺丝的一个角落沿着绿轴画一条长度1000mm的线,运用Divide命令把这条线分割为50个Segments(段落),全选线段以后在右键功能表上选取一个“CreateCurvefromEdges”命令,这是第一个出现的SU Animate操作命令。这条线就被结合成所谓Curve(“曲线”)的Path,为什麽叫做Curve?因为路径不一定是条直线,也可以是条七扭八拐的曲线。把滑鼠游标放在这条路径上按右键,这时右键功能表上的命令变成了三个,“ReveseCurveDirection”,“Assign Attribuates”,“Delete Attributes”。 第一个“ReveseCurveDirection”的意思是“倒转曲线的方向”,什麽时候会要倒转曲线方向?刚才我画这条路径的时候是从外面的螺丝位置画向电扇的位置,不错,曲线的起始方向是从画线的起始点决定的,同时也决定的物件沿着路径移动的方向。如果画反了,可以运用这个命令把沿路径的方向反过来。 我要使用的是第二个命令“AssignAttribuates”(赋予属性),把路径指派给某个已经命名的Group物件,要它沿着这条路径移动。在此同时我可以给它设置Delay(迟延起动)和Repeat(重复动作)属性。选择“Assign Attribuates”,马上出现了SU Animate的属性设置视窗,在面板上列示着6个已经命名的Group,我把这条路径指派给Pin,这次我做的是组装动画,Repeat就保持它的内定值。我要设定的是Delay,Delay的单位是Frame(影格数),我让这个螺丝迟延50个Frame才开始动作,所以给它“50”的数目。设置好Pin的动作,点击“Update”关闭这个属性设置视窗。 重复上面的步骤,分别画出各个电扇组件的移动路径,以及设置它们的移动属性参数,设定的结果如下: Group: Pin, Path layer: Path5, Path length: 1000mm, Delay:50, Group: Front, Path layer: Path4, Path length: 800mm, Delay: 40, Group: Fan, Path layer: Path3, Path length: 600mm, Delay: 30, Group: Screw, Path layer: Path2, Path length: 400mm, Delay: 20, Group: Rear, Path layer: Path1, Path length: 200mm, Delay: 10, Group: Motor, Path Layer: Path0, Path length: 200mm, Delay: 0, 电扇底座是不动的,所以没有给它设置路径和属性。 (5)现在我已经给这6条移动路径都指派了物件,也设置了移动的属性参数,接下来的工作就是要让它们动起来。在叫它们移动之前,我没忘记先把那些放置路径的layer(图层)关起来(Invisible),免得动画场景里面出现那几条路径的线条杀风景。 要从SU Animate建立动画,在下拉功能表Plugins > SU Animate!的里面有两个命令我可以选择,一个是“Make Scenes”(制成场景页面),另一个是“Make Batch Files”(输出循序文件)。先说说第一个,“Make Scenes”是从1.0版延续下来的老东西,它先在各组路径和Delay组合中挑出最长的,算出Frame(影格)数目,建立相同数目的Layer,把要移动的物件沿着路径循序复制在路径节点位置上,若设定了Delay格数,它就越过设定的格数再开始复制。跟着建立跟影格数相同的Scenes(场景页面),每个Scene对应一个Frame,并且只有一个相关的Layer是开启的,其他一大票Layer都关着。因此只要这些Frame的间隔时间在1/15秒视觉占留以内,在这些Layer开开关关之间,就能得到动画的视觉效果。 当然,在路径上物件每次移动的距离多长以及节点数多少比较适当,这是得靠经验和试验磨出来的,每次移动的距离设得太大,动画中物件好像兔爷一样蹦着走。每次移动距离设得太小,写出的Scene又太多,几百个页面对SU也不是好玩的。要是依循着插件开发者的思路,直接写出Frame(影格)的话,我们以25 fps(每秒25影格)的速度数出动画,100个Frame只能撑4秒钟,播放动画时,如果看的人不小心打个喷嚏,动画已经播了一半。要是哪个人低头点支香烟,再抬头时动画已经播完了。怎麽去玩转SU Animate,请看我在论坛上的相关帖子。无论如何,这次我还是跟着软体开发者的思路做这段组装动画。 这一次我不使用上述“Make Scenes”方式制作。我要使用的是第二个方法“Make Batch Files”,直接输出循序的SKP文件,虽然过程比较麻烦,可是可以得到最大的使用弹性。点选功能表上的“Make Batch Files”以后,首先弹出一个交谈框,SU Animate告诉我已经算出要建立76个Frame,我没改这个数字,因为即使增加数目,也只会在把最后那个Frame复制增加,改少了我不知道会发生什麽事。就按“OK”同意它的内定值吧。接着出现的是一个文件储存选择视窗,在上面建立一个新的文件夹,给个文件名字“FAN.skp”,要注意的是一定得加上.skp的延伸文件名,否则SU Animate会存成没有尾巴的文件名字。当我按下“OK”以后,SU Animate开始根据每个Frame输出skp文件。弄好了我后我检查一下,那个文件夹里从FAN.001.skp到FAN.076.skp总共有76个连号的skp模型文件,一个也不少。 (6)继续的工作是比较繁复的,把这些skp文件逐个载入SU,逐个输出解析度800X600的JPG影像文件,按照编号给它文件名称。使用直接输出skp模型文件有个好处,据说我有个机会可以把它们逐个进行渲染(例如Podium),使用渲染后的影像合成动画。不过今天我的精神还算正常,要连续渲染76个影像,哇靠。我还是老实点直接从SU输出影像就好,所以不一会儿我就拥有了76个连号的JPG影像文件。 我还得注意一件事,通常我们制作动画,习惯上会复制动画头尾的影格,长度差不多1/2秒左右,换算成Frame大约是10 Frame。作用是让看动画的人在一开始播放时能看清楚起始的场景,以及动画结束时的场景,不会让人看了感觉没头没尾的。因此我从SU写出一张张影像时就得从FAN0011.jpg开始编号,由于此时模型文件的流水号跟输出影像流水号不一致,这得仔细的做以免弄错了那就会特“郁闷”。 (7)手头上终于有了一串连号的JPG影像文件,不觉胆气一壮。心想如果把这个组装动画弄成先组合再分解,给人看了视觉效果可能更好些。于是开始把这些影像文件复制一份,按照相反的顺序更名,接续着原来的流水号码,把它们接在原来那些文件后面。别说这种事情好像很烦,可是由于不花什麽脑筋,一边看电视连续剧一边做,演不到一集居然也弄好了。现在我手头上有了220个JPG影像文件,以25 fps计算,可以撑到8秒钟,够用了。 ⑻启动Premiere Pro,开一个新的Proproj文件,设定好25 fps速率、Cinepak压缩码。从那个文件夹里点选FAN0001.jpg,勾选了“Numbered Stills”(连号静态影像),按下“打开(O)”。一下子220个影像都被载入并且自动合成了Clip,把它拖拉到Timeline(工作列)上,从预览视窗Play一次没问题,就不再恋战直接输出AVI影片。看看解析度800X600的影片8秒钟有12Mb,还好。最后一步则是把它载入Camtasia Studio转换成能在网路上播放的Flash文件,虽然640X480的Flash文件还是那麽大,不过总算是解决了播放的问题,所以我现在可以把刚刚做出来的组装动画贴在后面,给大家看看SU Animate 2.0的新功能。 再灌一点水,写完了回头看一遍,发现一个问题。明明我要写的是关于SU Animate 2.0组装动画功能的测试报告,现在看看好像写成了教程。没关系,报告也好教程也罢,重要的是能够帮助各位朋友清楚明瞭SU Animate 2.0的功能,知道它能在我们的工作中扮演的积极角色。最后,我要感谢这个软件的开发者们辛苦的劳动成果。

2008年11月15日 星期六

BIM的迫切需求性

建築生命周期管理(Building Lifecycle Management,BLM)的完整概念是从国外引进来的,在此之前我们不能说国内没有人曾经体认到这种需求。但是长久以来我们的营建制度是一种松散的结合体,从设计到施工到营运管理都处在不同机构各自为政的状态,並没有一种能贯穿整个建筑生命周期的管理体系让建筑行为经常保持它的最佳能量。在建筑物至少长达数十年的结构生命中,为期最长的使用运营阶段,迄今仍然处于管理能力薄弱的状态中。 

即使我们今天能够建立一个运营管理单位进行使用管理,在现今的体制下,这个管理单位面临的是建筑讯息分散缺漏,并且得承继来自于前面设计和施工全部的缺失。这种缺失多半是隐蔽不可见的,例如说水管爆裂、屋顶漏水等等,没有完整的建筑讯息就只能以打补钉的方式修补。又如进行室内装修的住户擅自打掉承重墙,无论是基于无知或自私,对于这种已经造成建筑物无法复原的损害行为,管理单位甚至于没法阻止和预防。所以我们常说一栋管理不健全的住宅大楼,可能在交屋数年的时间里内部就已经面目全非,竖向承重墙变得断断续续,竖向排水管线变得东弯西绕,防火门窗被不具防火性能的门窗任意取代等等。 

我们不能把这些问题全都归责于建筑的管理单位不作为,『以不教民战,谓之杀』,在建筑的管理权责从施工单位(或业主)转移到使用管理单位的时候,有没有把完整的建筑讯息随同管理权移转。管理单位有没有能力从一大叠厚厚的图纸里找到需要的部份,有没有能力直接判读图上的专业标注,图纸间发现相互矛盾的地方怎麽解决? 我们急需的是把关乎一座建筑物原本分散的全部建筑讯息集中在单一位置,最好的位置是一个单一的三维建筑模型。这个模型具有能够直接经由视觉查阅的使用者介面,使得不具备建筑专业的建筑管理单位可以很方便的操作及更新这个建筑模型,在建筑全生命周期中的运营管理阶段才能发挥最大的运营效益。

这种把全部建筑讯息嵌附在单一模型上,我们称为应用"建築资訊模型化(Building Informatiom Modeling, BIM)"技术的模型。 BIM可以说是概念可以说是技术,虽然到目前为止BIM的重要性逐渐被人重视,可是要把BIM完整的应用在建筑项目全生命周期管理的各个阶段上还有一段很长的路要走。除了建筑项目体制的改革以外,BIM的载体尚未能落实是最主要的原因。我个人的感觉现今被软件开发商极力鼓吹所谓具备操控BIM的软件,即使创建模型的设计者这一端能顺利搭载BIM,可是在终端使用者(建筑运营管理单位)那一端能否顺利具备专业软件操控能力,另外得花上一笔高价购买这个应用软件,好像有点儿不切实际。 

我看好的是操作简单价格低廉的SketchUp,当然截至目前为止的SketchUp版本并不具备BIM介面,也许Google会在未来的版本中加入BIM介面。可是经由二次开发插件把BIM操作介面外挂在SketchUp上,我们绝对有机会在SketchUp软件环境里实现操控BIM的目标。这一条路可能很长,可是如果没有先行者,我们永远达不成这个目标。

我写这篇文章的目的是在呼吁对BIM有认知和需求的朋友们,我们该去除拿来就用的速食心态,踊跃在论坛上提供自己对BIM的看法和建议,让有志开发SU+BIM的先行者得到足够的支持和动力,早日让我们身受其惠。

創用CC授權條款

文章數碼阿叔/柏基建築師原創作品,以創用CC 姓名標示-非商業性-禁止改作 3.0 Unported 授權條款釋出。