在 3D 繪圖 API 領域裡, OpenGL 已經漸漸被遺棄, 由 Vulkan 取而代之. Apple 主推自家的 Metal, Microsoft 也早有 Direct3D. 似乎沒有能跨平台的繪圖函式庫了.
對於只熟悉 OpenGL 語法的我而言, 原本只想在 Flutter 使用 OpenGL 繪製 3D 模型, 複習 3D 繪圖. 然而搜尋一下 pub.dev, 關於 OpenGL 的套件, 都許久未更新. 偶然發現了 ANGLE (Almost Native Graphics Layer Engine), 這個由 Google 設計的 OpenGL 轉譯平台, 正好完美符合需求. 可以使用 OpenGL 語法, 將其自動轉譯為 Vulkan, Metal, Direct3D.
flutter_angle 這個套件開啟了 ANGLE 的入口, 於是想嘗試看看, 號稱跨平台的 Flutter, 能否完成 OpenGL engine 重生計劃. 在 Unity, Unreal 引擎如此優秀的時代, 想自己手搓一個 3D 引擎的人也不多吧.
早在 2011年起, 就開發一個基於 OpenGL ES2 的繪圖引擎(C++), Gouraud shading, Phong Shading, CubeMap, ShadowMap, Water Effect, NormalMap, vertex shader, fragment shader 這類的技巧也都做過一遍. 經過十多年卻也忘得差不多了.
2022年底 chatGPT 開啟了 AI 大門, 才短短幾年, AI Agent 也發展到能協作程式設計的工作. 誠所謂溫故知新, 於是就有了重啟 3D 引擎的計劃. 既然 Flutter 也沒有一個合用的 3D 引擎, 那就捲起袖子自己來吧, 很多事現在不做的話, 就再也不會做了. 這就是 macbear_3d 研發之路.
| 時間 | 里程碑 |
|---|---|
| 2023-05 | AppFlutter App 開發啟動 |
| 2023-12 | AppFlutter App 正式上架(iOS / Android) |
| 2025-09 | macbear_3d基於 Google ANGLE 的 3D 引擎開始開發,使用 VS Code |
| 2025-11 | ToolingGoogle Antigravity 1.0 導入,取代 VS Code |
| 2026-04 | rapier_physics基於 Rapier 的物理引擎開始開發 |
| 2026-05 | ToolingGoogle Antigravity IDE 2.0 升級(自 Antigravity 遷移) |
| 版本 | 日期 | 主要更新 |
|---|---|---|
| 0.9.1 | 2026-06-19 | Shader 模組化 .glsl 系統、型別安全 Shader 包裝器、程序化水面法線貼圖、16-bit 高度圖地形、M3Fog 霧效 |
| 0.9.0 | 2026-05-24 | RenderingPhysics M3Water(雙層法線貼圖、Fresnel)、M3PlanarReflection、M3RenderContext、切換至 Rapier 物理引擎 |
| 0.8.1 | 2026-05-02 | Rendering PCF 柔和陰影、M3Node 場景圖層次管理、重構 M3Entity / M3Transform |
| 0.8.0 | 2026-04-17 | PhysicsPlatform M3OimoPhysics、Android 自動選擇 Vulkan / OpenGLES、移除 dart:io 依賴 — pubspec 首次宣告 Windows |
| 0.7.2 | 2026-04-12 | Platform 轉為 Flutter plugin(原生視訊紋理)、合併 m3_video_bridge、M3Axis 幾何方向擴展 |
| 0.7.1 | 2026-03-20 | Add BVH 動作捕捉格式支援、M3OctahedralGeom 骨骼視覺化、字型移至套件 assets |
| 0.7.0 | 2026-03-04 | Rendering 升級至 OpenGL ES 3.0(GLSL 3.00)、M3ReflectionProbe 動態反射、PlatformInfo / GraphicsInfo |
| 0.6.1 | 2026-02-21 | Platform Web build 支援上線、GitHub Pages Live Demo 自動部署 |
| 0.6.0 | 2026-02-11 | Rendering PBR(Metallic / Roughness)、IBL、Perlin Noise 地形系統、模組化 Shader 架構 |
| 0.5.0 | 2026-01-29 | Rendering Cubemap 環境反射(renderReflection) |
| 0.4.0 | 2026-01-24 | Add Skinned Mesh 骨骼動畫、M3Animator、Delta timing 精準計時 |
| 0.3.0 | 2026-01-17 | Rendering CSM 最多 4 段 cascade、Bounding Sphere 計算、Texel Snapping 消抖動、前向面 Shadow Pass |
| 0.2.0 | 2026-01-12 | Add 3D 文字(TTF / OTF → M3TextGeom)、AABB + Bounding Sphere、Resource Manager、Render Stats |
| 0.1.1 | 2026-01-02 | Add UML 圖表、截圖素材 |
| 0.1.0 | 2026-01-02 | 初始版本 OpenGL ES / Scene Graph ECS / glTF + OBJ / Oimo Physics、基礎光照陰影 |
| 版本 | 發布日期 | 主要更新 |
|---|---|---|
| 0.4.0 | 2026-06-27 | Platform Windows 平台支援(C++ plugin、CMake、rapier_ffi.dll)、Swift Package Manager 支援(iOS/macOS)、建置腳本自動化 |
| 0.3.1 | 2026-05-07 | API Timestep getter/setter、FFI 命名統一為 rapier_[component]_[action]、ColliderDesc 參數順序修正(radius, halfHeight) |
| 0.3.0 | 2026-05-01 | Architecture 統一 ColliderDesc API、Native local transform(localPosition / localRotation)、FFI 記憶體佈局優化(64 bytes 零拷貝)、移除冗余 createBoxCollider 等方法 |
| 0.2.0 | 2026-04-23 | Physics Force / Impulse API、速度直接控制、動態移除 RigidBody / Collider / Joint、CCD 支援、Heightfield 碰撞體、Cone 碰撞體、關節系統(Fixed / Spherical / Revolute / Prismatic / Rope)、Motor 控制、rapier3d v0.32.0 升級 |
| 0.1.0 | 2026-04-08 | Add 跨平台架構重構(Native / Web 抽象綁定)、完整 WASM 實作(dart:js_interop)、Android jniLibs 修正、非同步 init()、多種 RigidBodyType 支援 |