【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。
- 🌐 GitHub 儲存庫: https://github.com/macbearchen/macbear_3d
- 📖 官方文件 Wiki: https://macbearchen.github.io/macbear_3d/
感謝每一位支援與使用 Macbear 3D 的開發者!Happy Coding with Flutter & 3D!