2026年8月26日 星期三

🚀 Flutter 3D 物理引擎 rapier_physics v0.5.3 正式發布!全面升級與穩定性強化

在 Flutter 中打造流暢的 3D 遊戲與互動體驗,強大而精準的物理模擬是不可或缺的基石。rapier_physics 結合了 Rust 高效能物理引擎 Rapier3D 與 Flutter 多平台生態,支援 iOS、macOS、Windows、Android 與 Web。

今天我們很高興宣布 rapier_physics v0.5.3 正式發布!這個版本帶來了底層原生引擎升級、Web 平台切換防護以及建置管線的全面精簡。

rapier_physics demos

🎮 線上即時體驗(Live Demo)

可以直接在下方即時操作體驗 3D 物理模擬與角色控制效果:

💡 提示:若無法正常顯示,您也可以直接點擊前往體驗 👉 線上展示網頁


✨ 0.5.3 核心更新亮點

1. ⚙️ 底層物理核心升級:Rapier3D v0.35.2

我們將底層原生 Rust 引擎依賴全面升級至最新的 rapier3d v0.35.2(以及碰撞檢測庫 parry3d v0.30.2):

  • 提供更極致的物理運算效能與記憶體優化。
  • 提升多物體堆疊、關節約束(Joints)與連續碰撞檢測(CCD)的穩定性與精度。

2. 🌐 Web/WASM 場景切換防護(修復 unreachable 崩潰)

在 Web (WebAssembly) 環境下,當使用者在多個 3D 物理場景間頻繁切換時,過往可能因 WASM 生命週期重複初始化導致舊控制代碼引發 unreachable 執行時期錯誤:

  • 0.5.3 加入了全新的 WASM 重新初始化防護機制,確保在單頁應用(SPA)中動態切換、重建物理場景依然穩如磐石。

3. 📦 建置腳本與 Web 產物路徑重構

  • 重構建置流程,讓 Web 相關產物直接輸出至 web/ 與 example/web/。
  • 移除了冗餘的 prebuilt/web 目錄,使專案結構更乾淨、發布與測試流程更順暢。

4. 🧹 程式碼日誌清理

  • 移除了 RapierWorld 中的額外 Debug Print 調試輸出,讓開發者的 Console 保持乾淨清晰。

🌟 近期版本特色回顧 (0.5.0 ~ 0.5.2)

  • 🏃 運動學角色控制器 (Kinematic Character Controller):支援 3D 角色物理導航、自動攀爬階梯、斜坡滑動、貼地吸附與推動動態物體。
  • 🎯 場景查詢 (Scene Query API):完整的射線投射(castRay、castRayAndGetNormal)與形狀投射(castShape),並支援自訂過濾器旗標(QueryFilterFlags)。
  • 🛡️ 安全的生命週期管理:提供 dispose()` 與加固的 `destroy()` 流程,杜絕原生記憶體洩漏與重複釋放(double-free)。

📦 立即開始使用

在您的 Flutter 專案 pubspec.yaml 中新增依賴:

dependencies:
  rapier_physics: ^0.5.3

或直接透過終端機安裝:

flutter pub add rapier_physics

歡迎前往 GitHub 查看更多 3D 互動範例(包含角色控制器、雙擺、牛頓擺、複合剛體與場景查詢):
👉 GitHub 專案庫:macbearchen/rapier_physics

2026年8月1日 星期六

Macbear 3D v0.9.4

【Flutter 3D 引擎】Macbear 3D v0.9.4 正式發佈:瓦片地形系統、安全視圖切換與效能統計躍進!

"OpenGL can. I will."

「OpenGL 能,我來。」

親愛的 Flutter 與 3D 開發者們,很高興向大家宣佈 Macbear 3D 渲染引擎 v0.9.4 版本正式發佈!

Macbear 3D 是一套專為 Flutter 打造的高效能輕量級 3D 渲染引擎,底層基於 Google ANGLE (OpenGL ES 3.0),旨在解決 Flutter 在跨平台 3D 場景開發中的效能瓶頸與開發體驗。

在最新的 v0.9.4 版本中,我們帶來了全新的分塊瓦片地形系統 (Tiled Terrain)、安全視圖卸載/重新掛載機制 (Unmount/Remount),以及多項幾何體與渲染統計優化。


🌟 v0.9.4 重點更新特輯

1. 🏔️ 全新瓦片地形系統 (Tiled Terrain & LOD)

為了支援更大規模、更細緻的 3D 地貌景觀渲染,v0.9.4 推出了 M3TerrainTileGeom 與 M3TiledTerrain:

  • 分區與瓦片渲染 (Chunked / Tiled Rendering):將大型地形分割為多個獨立 Tile,利於未來實現動態視錐體裁剪與分級細節 (LOD) 載入。
  • 高度圖構建優化:新增 M3HeightField.fromHeightmap,並使用 package:image 完全重構 M3TerrainGeom.fromHeightmapImage,支援 8-bit RGBA 以及高精度 16-bit 灰階 PNG 高度圖,帶來更平滑的雙線性插值地形起伏。

2. 🔄 視圖生命週期安全切換 (unmount / remount)

在 Flutter 的聲明式 UI 架構中,頁面切換、Tab 標籤切換或 Widget 的銷毀與重建是常態。

  • 以往的挑戰:銷毀 M3View 時若一併釋放 M3AppEngine 單例,會導致 OpenGL / ANGLE Context 破壞,再次掛載時容易出現 Context 不一致或貼圖失效的問題。
  • v0.9.4 的解法:解耦了 M3View 與引擎單例生命週期。當頁面離開時調用 unmount() 僅暫停渲染迴圈與 Ticker,保留 GPU 紋理與上下文;當 Widget 重新進入畫面時調用 remount() 瞬間恢復渲染,無縫且高效!

3. ✏️ 自訂線條幾何體 (M3LineGeom) 與幾何建構式優化

  • 3D 線段繪製:新增 M3LineGeom 類別,方便開發者繪製自訂 3D 軌跡、路徑、輔助網格線與 Wireframe。
  • 幾何體參數優化:改進了 M3CylinderGeom (圓柱體) 與 M3CapsuleGeom (膠囊體) 的建構式參數,設置更加靈活直覺。
  • 世界包圍盒計算:子網格新增 subMeshes.worldBounding 世界坐標包圍盒計算,精準提升碰撞與裁剪判定能力。

4. 📊 精確的渲染數據統計 (M3RenderStats)

在效能調優時,精確的數據至關重要。v0.9.4 重構了 M3RenderStats 結構:

  • 將原本的 culls 欄位調整為 submeshes,精確統計與監控當前幀實際繪製的 SubMesh 數量、面數 (Triangles) 與 頂點數 (Vertices)。

🔮 未來展望 (Roadmap)

Macbear 3D 將持續深耕 Flutter 3D 渲染領域,未來的計畫包括:

  • 🔦 多探照燈/聚光燈系統:支援最多 8 個探照光 (Spotlight),提供錐形照射範圍、衰減邊緣與獨立方向控制。
  • 🏔️ 地形 LOD 動態裁切進一步優化:結合視錐體動態加載與 GPU 著色器層級無縫拼接。
  • 🎨 更多 PBR 材質效果與 Shader 擴充:支援更豐富的表面質感與環境光遮蔽 (AO)。
  • 🕹️ 更豐富的物理引擎碰撞與角色控制整合:擴充剛體互動與 Character Controller 操作體驗。

歡迎大家下載體驗並提出建議!有任何問題或想法,歡迎在 GitHub 提交 Issue 或 Discussion。


感謝每一位支援與使用 Macbear 3D 的開發者!Happy Coding with Flutter & 3D!