2026年4月25日 星期六

Live Demo: Macbear 3D

Flutter 物理引擎新里程碑:rapier_physics 0.2.0 正式發佈!

如果您正在開發 Flutter 3D 遊戲或需要高效能的物理模擬,那麼您一定不能錯過 rapier_physics。今天,我們很高興地宣布 0.2.0 版本正式發佈!

繼 0.1.0 實現了強大的跨平台(含 Web WASM)基礎架構後,0.2.0 版本帶來了開發者期待已久的諸多核心功能,讓 Flutter 的物理模擬能力提升到了一個全新的層次。


🚀 0.2.0 重點更新一覽

1. 全面的關節系統 (Joints System)

這是本次更新最重大的功能。現在你可以輕鬆建立複雜的機械結構與動力學連結:

  • 多種關節類型:支援 FixedJoint (固定)、SphericalJoint (球型)、RevoluteJoint (旋轉)、PrismaticJoint (平移) 及 RopeJoint (繩索)。
  • 馬達控制 (Motors):為旋轉關節與平移關節加入馬達驅動,輕鬆實現車輪轉動或升降機效果。
  • 自定義限制:透過 GenericJoint 鎖定特定軸向或設置移動限制。

2. 精準的力學控制 API

我們擴展了對剛體 (RigidBody) 的操作能力,讓操控感更加精確:

  • Force & Impulse:新增 addForceaddTorqueapplyImpulse 及其 AtPoint 變體,讓你能精確施加衝量於物體的特定位置。
  • 速度直接控制:透過 setLinearVelocitysetAngularVelocity 實現細粒度的運動控制。

3. 高速移動不再「穿牆」:CCD 支援

針對高速移動的小物體(如子彈),0.2.0 加入了 CCD (Continuous Collision Detection)。只需調用 body.setCCD(true),即可防止物體因速度過快而在單個時步內穿透障礙物。

4. 地形與多樣化碰撞體

  • Heightfield (高度場):支援從網格數據生成地形碰撞體,非常適合 3D 賽車或冒險遊戲的地圖。
  • Cone (圓錐體):新增圓錐體碰撞支援,完善了基礎幾何形狀庫。

5. 更強大的生命週期管理

  • 動態移除:現在可以安全地從 RapierWorld 中移除剛體、碰撞體或關節。
  • 自動清理機制:當你移除一個剛體時,系統會自動清理其關聯的所有碰撞體與關節,防止內存洩漏。
  • 雙向導航:透過 body.collidersbody.joints 屬性,在代碼中輕鬆追蹤實體間的關係。

6. 底層引擎升級與穩定性提升

  • 底層原生引擎升級至 rapier3d v0.32.0
  • Apple 平台優化:針對 iOS 與 macOS 進行了 FFI 符號導出的精簡與優化,確保 Release 版本穩定運行。

🎨 範例展示:牛頓擺 (Newton's Cradle)

在 0.2.0 的範例程式中,我們新增了一個經典的「牛頓擺」演示。透過 RevoluteJoint 與高精度的碰撞計算,完美呈現了動能傳遞的物理之美。此外,範例現在還支援:

  • 調試輔助線 (Debug Wireframe) 顯示。
  • 實時陰影與物理參數調整面板。
  • 一鍵重置物理世界。

🛠️ 快速開始

pubspec.yaml 中添加依賴:

dependencies:
  rapier_physics: ^0.2.0

📢 結語

rapier_physics 的目標是為 Flutter 社群提供最專業、跨平台且易用的 3D 物解決方案。0.2.0 版本的發佈是我們邁向「生產環境可用」的重要一步。

如果您有任何建議或遇到問題,歡迎前往 GitHub 倉庫 提交 Issue 或 PR。

讓我們一起為 Flutter 打造更動態的 3D 世界!🚀

2026年4月17日 星期五

Macbear 3D 0.8.0 版本發佈:

大家好!Macbear 3D 正式迎來了 0.8.0 版本的重大更新。這次更新不僅加強了核心引擎的架構,更在跨平台穩定性上有了質的突破。

如果您還沒看過這個專案,Macbear 3D 是一個專為 Flutter 打造的輕量級、高性能 3D 渲染引擎,由 Google ANGLE (OpenGL ES 3.0) 驅動。它旨在讓開發者能夠輕鬆創建驚艷的 3D 體驗與視覺化應用。


🚀 0.8.0 重點更新內容

1. 物理引擎再進化:深度整合 M3OimoPhysics

在此版本中,我們全面遷移到了 M3OimoPhysics。這不僅讓 Oimo 物理引擎的整合更加穩固,也簡化了 3D 幾何體(Primitives)與物理剛體之間的關聯管理。現在設置物理碰撞與動態模擬變得更加直觀且高效。

2. Android 穩定性救星:自動偵測最佳渲染後端

針對 Android 設備碎片化的問題(特別是部分硬體對 Vulkan 支援不穩定的情況),0.8.0 引入了智能渲染後端切換。引擎現在會自動在 Vulkan 與 OpenGLES 之間選擇最穩定的方案,大幅降低了在特定 Android 裝置上的崩潰率,提升了用戶體驗的連貫性。

3. 更豐富的幾何體支援與材質優化

  • 高度圖 (Height Field):新增 M3HeightField 與其對應的幾何體支援,讓您可以輕鬆從高度資料生成地形。
  • 一鍵設置不透明材質:新增 M3Material.setMatte() API,方便開發者快速配置非反射性的材質,減少 boilerplate 代碼。
  • 除錯視覺化工具:新增 M3OctahedralGeom(八面體)用於骨骼、點位的視覺化,並將常用除錯資源納入 M3Resources(如 axisGizmoMesh)。

4. 渲染管線 (Render Pipeline) 強化

我們優化了場景中的 RenderPipeline,增強了對不透明(Opaque)與透明(Transparency)材質的分層處理,確保在複雜場景中能有正確的渲染順序與更好的性能表現。

5. 跨平台相容性優化

為了進一步優化 Web 端的表現並實現更徹底的平台抽象化,我們移除了核心程式碼中對 dart:io 的直接依賴。這使得 macbear_3d 在 Flutter Web 上的運行更加純粹且流暢。



結語

Macbear 3D 致力於讓 Flutter 開發者能以最簡單的方式觸及強大的 3D 渲染技術。這次 0.8.0 的發佈標誌著我們在穩定性與功能性上邁出了一大步。

如果您喜歡這個專案,歡迎到 GitHub 給我們一個 ⭐️ Star: GitHub - macbearchen/macbear_3d

未來我們還有更多關於後處理特效 (Bloom, HDR) 與進階粒子系統的計畫,敬請期待!

#Flutter #Dart #3DEngine #OpenGL #GameDev #Macbear3D