
這篇講的兩個工具
- cad-agent(建模):https://github.com/yazelin/cad-agent
- render-studio(渲染):https://github.com/yazelin/render-studio
這是兩個獨立的本機工具,各自能單獨用,但設計成能接力:cad-agent 把一個零件變成可以送去 3D 列印或加工的參數化模型,render-studio 把那個模型變成一張看起來像產品型錄的圖。上面那張截圖就是接力的瞬間,左邊是拍一張 L 型角架照片後 AI 生出來的 FreeCAD 腳本跟即時預覽,右下角那顆「送去 render-studio 渲染」的按鈕,按下去模型就過去了。
cad-agent:照片可以逆向工程回參數
打字描述一個零件,AI 會寫一段 FreeCAD 的 Python 腳本,在背景跑起來,把生出來的 3D 模型丟回瀏覽器。想改哪裡就打字說「腳再長一點」,不用重寫整個腳本,改一個參數再重建就好。腳本裡每個尺寸都是頂端一個大寫變數,故意這樣設計的,讓修改停在「調參數」,不要變成「重寫程式」。
我覺得比較好玩的是拍照建模這條路:上傳一張實體零件的照片,AI 直接逆向工程出對應的參數化腳本。真的試過一張六個混合零件擠在一起的雜亂照片,分別指著三個不同的位置說「這顆」,做出來的三個模型都對、沒有一次指錯。這件事不簡單,照片上零件互相遮擋、混在一起,AI 要先認出指的是哪一個,才談得上重建它。
老實說它的極限也很清楚:能處理箱體、圓柱、六角柱、開孔、圓角這類可以拆解成基本形體的機械零件。有機曲面、螺紋、齒輪這些做不到精確,螺紋建出來就是一根光滑圓柱。只有一張照片,看不到的那一面純粹是猜的。這是結構上的逆向工程,不是像素級複製,腳本裡也老實這樣寫著。
建置失敗的時候,錯誤訊息會直接餵回給模型自己修,最多重試兩次。我喜歡這個設計:不是每次都要人去看錯誤訊息再重新下指令,失敗本身就變成下一輪輸入。
render-studio:模板固定,AI 只調旋鈕
render-studio 拿到一個模型(mesh 或 STEP 檔都吃),打光跟運鏡是一套先做好、調到看起來就順眼的攝影棚模板,AI 不會去決定要怎麼打光,只負責把材質、顏色、背景、角度這幾顆旋鈕轉到要的位置。也可以直接打字說「刷面鋁材,深色背景」,讓它把旋鈕轉好。
這是故意反過來做的:如果讓 AI 每次自己決定整個場景怎麼打光,品質會忽好忽壞。我們乾脆把「好看的攝影棚」定死,AI 只准調幾顆不會把整張圖搞砸的參數,反而每次都好看。
為什麼是兩個工具,不是一個
我們沒有把它們合成一個大工具,是因為建模跟渲染本來就是兩件事,誰都可以只要其中一個。已經有模型檔的人不需要建模這段,只做展示用的人可能連 CAD 精度都不在乎。獨立之後,cad-agent 可以接上別的建模流程的產出,render-studio 也可以單獨拿去渲染任何來源的模型,不只是 cad-agent 生出來的。
兩個工具都留了一個給 AgentOS(我在做的 agent 治理平台)直接呼叫的無頭端點,不開瀏覽器,傳檔案跟參數進去,直接拿到建好的模型或渲染完的圖。人在瀏覽器裡一步步調整是一種用法,另一套系統批次呼叫是另一種用法,底層的建模跟渲染邏輯是同一份。
- 試試看拍一張零件照片:https://github.com/yazelin/cad-agent
- 或直接拿一個模型檔去渲染:https://github.com/yazelin/render-studio