動態 3D:HyperFrames 中的真實 3D(+ Blender 作為模型來源)
根據目標有兩種方式:
| 目標 | 方式 | 狀態 |
|---|---|---|
| 從基本形態製作產品/物體影片:旋轉件、滾花、玻璃、金屬、發光條、組裝、3D 文字 | hf3d(HyperFrames 中的 Three.js 工作室,hf3d/) | 經過測試使用中 |
| 複雜模型(人物、車輛、建築),無法從基本形態建構 | Blender 作為模型來源 → GLB → hf3d | 未測試,根據研究(2026年10月) |
原則:最終渲染在 HyperFrames 中進行(可搜尋畫面、與其他部分使用相同的驗證工具)。Blender 提供模型,而非影片。真正的 Blender 渲染(Cycles)是另一個具有獨立渲染時間的專案。
方式 1:hf3d(Three.js 工作室)
cd projects/<name>/hf
bash <this-skill>/hf3d/install.sh . --template # Three.js r181 + hf3d.js + 字型到 vendor/hf3d,範本作為 index.html
npx hyperframes lint
npx hyperframes snapshot --at 0.7,2,3.3 --describe false
內容(API 及所有陷阱:hf3d/README.md):
createStudio:無 HDR 檔的工作室環境,背景為漸層而非黑色,柔和陰影,景深,Bloom,底片顆粒/暗角,ACES。studioLights(主光/邊光/補光)。mat.*:刷面/拋光金屬,玻璃(透射 + 色散),柔觸感,陶瓷,高光澤,自發光。shotRig:包含開始/結束、路徑、焦距(公釐)、對焦目標、散景的鏡頭列表。條目 = 硬切,路徑 = 移動。- 輔助函式:
lathe,knurl,roundedBox,ribbon,extrudeText,extrudeSVG,Swarm(Instancing:變形、爆炸、組裝)。 - 範例:
examples/rondo/index.html(9.6 秒內 10 個鏡頭;渲染約 2 分鐘,在 24 GB MacBook 上峰值記憶體約 1.8 GB)。
五個最常見錯誤:
- 根元素沒有
data-no-timeline(若無 GSAP 時間軸):lint 錯誤且每個渲染等待時間過長。 - 無環境的金屬會是黑色。玻璃只有在後方有結構且從前方觀看時才有作用。
- 將焦點放在具體物件上,而非畫面中央。
- 僅針對整個鏡頭啟用或停用動態模糊。
- 計算而非猜測微距攝影中的相機:可見高度 = 2 · 距離 · tan(垂直視角/2),50 mm 時垂直視角約 22°。
方式 2:Blender 作為模型來源(未測試)
經過驗證的標準方式(截至 2026 年 10 月 19 日):ahujasid/mcp-for-blender(MIT)。一個 Blender 附加元件開啟本地伺服器,Claude Code 透過 MCP 控制 Blender,也可以使用任意 Python 程式碼(execute_blender_code),並檢視畫面進行自我驗證。
uvx mcp-for-blender setup # 如果已安裝 uv:設定 Claude Code 並安裝附加元件
# 手動方式:
claude mcp add blender uvx mcp-for-blender
uvx mcp-for-blender install-addon
之後在 Blender 中連接附加元件。製作影片的流程:
- 在 Blender 中建立或載入模型,單位為公尺,合理設定原點。
- 匯出為 GLB(
bpy.ops.export_scene.gltf(filepath="model.glb", export_format="GLB")),紋理 ≤ 4096 像素。 - 在 hf3d 中載入:
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js"(位於hf3d/vendor),在readyPromise 中載入(loadAsync),必要時以mat.*取代材質。GLB 檔案需放在本機專案目錄中,渲染時不要進行網路擷取。 - 相機、燈光和剪輯保持在 HyperFrames 中。
若無 MCP,也可使用無頭模式:blender -b -P build.py(腳本建立並匯出模型)。-a 可將動畫渲染為影像序列,若仍需在 Blender 中渲染。
已知潛在問題(根據 README,未經自行測試):uv 可能會使用 conda/pyenv 的 Python(UV_PYTHON_PREFERENCE=only-managed),附加元件必須正在執行,每個指令前先存檔(程式碼未經檢查即在 Blender 中執行),將大型任務分解為小步驟。請自行測試渲染時間和記憶體使用量。
更多 Blender 相關方式:請參閱儲存庫根目錄中的 RESOURCES.md。