遇到明明模型簡單、刪除所有物體後 Max 檔案仍巨大、保存緩慢、記憶體飆升?這是典型的「隱形垃圾數據」癥狀。本文提供經驗證的兩套解決方案與排查清單。
癥狀確認
- 場景內可見物體極少(<1 萬面),但 .max 檔案動輒數百 MB 甚至 GB 級。
- 刪除所有物體、新建 Box 保存,檔案體積不減、保存極慢。
- 導入同模型到新場景,問題跟隨模型轉移。
方案一:OBJ 導出重建法(最暴力、最徹底)
- File → Export → OBJ,導出選項勾選所有,導出過程 Max 會報告「刪除大量錯誤信息」(空物體、無效修改器、損壞控制器等)。
- File → Import → 選剛導出的 OBJ,場景瞬間輕量化,保存飛快。
- 代價:所有材質、貼圖、動畫、層級、組、命名全部丟失,需重新賦予。
方案二:MAXScript 深度清理腳本(保留場景結構)
在 MAXScript Listener (F11) 執行以下代碼:
-- 清理動畫圖層殘留數據
(getproperty trackviewnodes.Anim_Layer_Control_Manager.controller #animlayers).count = 0
-- 清理未引用材質
for m in sceneMaterials where m != undefined and (refs.dependentNodes m).count == 0 do delete m
-- 清理隱藏/凍結物體
for o in objects where o.isHidden or o.isFrozen do delete o
-- 清理空物體(無幾何體、無修改器、無子級)
for o in objects where (superclassof o == geometryclass or superclassof o == shapeclass) and (getnumfaces o == 0 and getnumverts o == 0 and o.modifiers.count == 0 and o.children.count == 0) do delete o
-- 強制垃圾回收
gc()
執行後強制保存新檔案,通常能釋放 60-90% 體積。
常見垃圾來源排查清單
- CAD 導入殘留:CAD 圖塊、代理圖形、零長度線段、極遠處孤立點 → 導入前在 CAD 用 `PURGE`/`OVERKILL` 徹底清理,導入選項勾選「合併同層」。
- 模型庫模型自帶垃圾:下載模型先單獨開啟檢查檔案大小,異常大者必須 OBJ 重建或腳本清理後再合併入場景。
- 修改器堆棧殘留:測試用的 Noise/FFD/XForm 等修改器未刪除、未塌陷。
- 材質編輯器殘留:大量未使用的材質球、大尺寸貼圖(>4K)未實例化引用。
- 動畫圖層殘留:Track View Dope Sheet → Anim Layer Control Manager 內殘留大量動畫層數據(上方代碼專治此病)。
預防性習慣
- 「小存頻存,大存分檔」:每階段另存新檔(v01, v02...),避免單檔案過大崩潰不可恢復。
- 定期執行清理腳本,養成「飯前飯後跑一次」習慣。
- 場景單位、系統單位統一 mm,避免單位換算產生微小數值誤差積累。
- 引用外部模型優先用 XRef Objects/Scenes,而非 Merge,保持主場景乾淨。
文件膨脹本質是「隱形數據堆積」。建立「導入必清、建模必崩、存檔必掃」的標準化操作規程,才能從根治角度解決此頑疾。