前言 2024元旦當然要講個厲害的。Rhino作為強大3D建模工具已經是眾所皆知的事情,其超強擴充能力使其與多數工具連動,進而解決早期跨平台容易發生的錯誤,以及補足某些設計工具的劣勢。那如果這樣的一個工具搭上近年發展相當迅速的AI計算會發生什麼事呢?先讓我們看看下面幾張對比圖,可自行拉動左右範圍。 上圖是利用Rhino與Grasshopper(以下簡稱GH)中的外掛Ambrosinus-Toolkit將模型截圖交給StableDiffusion(以下簡稱SD)運算產出的結果。跟以往使用webui的方式不同,這種運算方式實現了模型即時連動,並且留存了生成歷程。 如果你正在尋找一個可以串連3D與SD的工作流程,那這篇文章可能可以給你帶來些想法。 為什麼又是Rhino 以下以建築產業為例,簡單列舉選擇Rhino的理由: 本身就足夠強大:相當精準又輕量的NURBS曲面工具,建模環境直覺好用,做什麼產業都滿適合,當然也適合需要精準製圖的建築業。 可延展性高:以Rhino作為工作流程的中介工具,可以橋接多數主流BIM平台如Revit, ArchiCAD等。 多種產業面向支援的外掛程式:例如針對建築與室內設計的VisualARQ,景觀水保設計的LandsDesign等,即便今天尚未導入BIM的環境,Rhino也可以作為專案DataFlow的核心。 Grasshopper:這個應該不用多說,2007年問世的程式語言視覺化界面。2022我們也曾經為了這個工具寫了一篇小文章【在設計業的你要使用Grasshopper前必須知道的幾件事】,今天他又出現了,你看重不重要?反正不會GH那Rhino只能在地上跑(?)。GH在Rhino8中直接支援CPython,可以引用一般開發環境下的函式庫跟功能,同時也支援VB、C++等開發環境,對於有成式背景的人來說,可以說是要什麼功能都可以自己來。 價格便宜:比起多數改為訂閱制的工具,Rhino一樣是買斷並且給你滿滿的大平台吃到飽(當然有些外掛還是要錢的)。 光上以上幾點原因,選擇Rhino的理由應該很明確了,請記得一件事,既然都要做3D了就做一個有用的3D,不要只是為了效果圖做而已。 環境準備 要使用AI環境那當然要先建立環境,以下範例是以架設在自己的工作站撰寫,如果需要在辦公室建立專用的運算伺服器及檔案伺服器可以跟我們聯絡。StableDiffusion 安裝SD的順序如下,基本上跟一般安裝相同,除了ControlNet。 安裝 git(64-bit):Git - Downloads (git-scm.com)※記得開啟 windows explorer integration 安裝 python:Download Python3.10 | Python.org※記得要點Add Python...... 安裝 Stable Diffusion:按下鍵盤上的window+R輸入CMD再輸入"git clone https://github.com/AUTOMATIC1111/stable-diffusion-webui"後按下Enter給他跑,會跑一段時間。跑完之後,移動到路徑"C:Users使用者名稱stable-diffusion-webui"下面執行"webui-user.bat",如果前面的步驟沒有問題,程式會開始安裝Stable Diffusion,會下載大量資料,請確保網路順暢,中間如果有斷線或提示錯誤請關掉重新執行,安裝完成後程式會自動開啟webUI。 安裝ControlNET :在webUI裡面找到Extensions,install from URL輸入:https://github.com/lllyasviel/webui-controlnet-v1-archived※模型放置路徑:stable-diffusion-webuiextensionssd-webui-controlnetmodels※連結是1.0版本,因為本篇文章使用的外掛建議用1.0。※安裝完記得回到installed介面點選apply然後重新啟動webUI。 下載Checkpoint:https://civitai.com/models/114612?modelVersionId=123908這個是建築與室內常用的模型,建議兩個都下載。※模型放置路徑:stable-diffusion-webuimodelsStable-diffusion 測試運作安裝完成後測試看看文生圖能不能正常運作,也同時測試controlnet使用canny能不能抓到參考圖片的邊緣。 Rhino&Grasshopper Rhino8或裝有Cpython的Rhino7 安裝Ambrosinus-Toolkit:推薦使用packageManager安裝。 利用模型即時算圖 當SD環境部屬好之後,接下來就是利用我們的模型截圖餵給SD算圖,整個流程如下: 流程釐清了之後就可以針對每一部份開始建立電池。 啟動SD 當你已經部屬好SD之後,也確定webUI下canny可以如預期般的產出邊緣後,就可以開始嘗試使用GH的外掛連動webUI API。 首先建立電池組如下圖:“FilePath”請指定到你的SD安裝路徑,CMDargs則是依照需求勾選,這邊用的是與預設執行的參數相同。選擇checkpoint 這個電池組可以讀取你連線的SD伺服器中有安裝好的checkpoint,請按照需求調整前面的NumberSlider選擇。指定路徑與儲存截圖 接下來指定存放Rhino畫面截圖的路徑,輸入給ViewCapture,並且依據需求調整參數。每一個輸入端需要的資料請看圖面說明。後續是調整圖片大小,經過實測如果只是使用canny是可以跳過的,但是如果未來要用其他功能建議還是備著。算圖 算圖的電池組如附圖,這邊有幾個要注意的點: 由於目前webUI 的限制,外掛作者建議使用0,所以預設的”CN version”可以留空。 “Mode Pertrained”需要輸入數值,這個數值與uebUI上,controlNet的Mode順序相同,第一項為0,依此類推,所以照順序排下來canny是序號”1”。如果嫌麻煩也可以建立一個ValueList將名稱與序號對應起來,未來若要改模式也方便。<ValueList做好的圖> 電池最下面的”start”建議給他一個”toggle”先關閉,避免每條一次參數就跑一次圖。 其他參數設定跟webUI操作一樣,可以依照需求調整。 算好的圖可以使用LadyBug的ImageViewer直接在GH介面中顯示,”SeeOut”會將產出的圖路徑導出,但是記得如果有用到canny功能,最後一張會是Canny算完的線條圖,他的前一張才是這次運算的成品。 結論 如果你已經可以順利在GH中使用rhino模型進行運算,也可以透過Rhino inside for Revit (RIR)或Grasshopper – ArchiCAD Live Connection將BIM的幾何模型接入Rhino後,用Ambrosinus-Toolkit來產出圖。以Revit為例,可以利用RIR將成果與該次運算的參數資訊寫入Revit的Drafting View,以利設計圖說整合,理論上ArchiCAD應該也可以做到類似的事情,這部分待測試。 線上課程 因為這一串操作比較複雜,我們針對這個外掛有製作了一個免費的線上課程影片,有需要的讀者歡迎透過下列網址觀看課程影片。線上課程網址:【免費課程】使用Rhino+GH連動StableDiffusion進行AI繪圖(透過AmbrosinusToolKit外掛) 參考資料 參考資料 https://github.com/lllyasviel/webui-controlnet-v1-archived https://github.com/lucianoambrosini/Ambrosinus-Toolkit/tree/main/AI_components/SD_ControlNET_locally https://ambrosinus.altervista.org/blog/ai-as-rendering-eng-sd-controlnet-locally