2026年1月12日 星期一

 

Macbear 3D 0.2.0 Pub.dev 已發佈

新增功能:  TTF, OTF 字型產生 3D 文字

Antigravity Agent AI 的協助下, 開發上能更快速, 雖然在邊線外框的三角面產生遇到一些問題, 經由數次的來回修正後, 也都順利解決了. 效果還是很不錯的. (早期 Windows 3.1 的螢幕保護程式就有這個功能, 可以自己實作出來感覺也是很棒的)

2026年1月2日 星期五

 Macbear 3D powered by ANGLE

2026 新年新計畫, 自己研發的 Macbear 3D 引擎正式發表於 Pub.dev.
基於 Flutter/dart, 實現跨平台的開發, 使用 Google Antigravity IDE 取代原本的 VS Code    Antigravity AI Agent 的協助下, 讓這個套件能迅速進行. 後續有許多功能會慢慢加上去, 如果有時間的話...

Pub.dev 開放套件 flutter_angle, oimo_physics 也提供大大的協助. 



API開發者主要平台特點狀態
OpenGL (ES)Khronos全平台 / Web高階、好上手、相容性最強逐漸轉為遺留 (Legacy)
VulkanKhronosAndroid / PC低階、極致效能、跨平台OpenGL 的繼承者
MetalApplemacOS / iOS低階、專為 Apple 晶片優化Apple 生態系的唯一標準
Direct3DMicrosoftWindows / Xbox低階、效能強、生態完整Windows 遊戲開發霸主
Google ANGLE 算是給老 OpenGL 開啟一條明路. Macbear 3D 依然使用 OpenGL 繪圖函式.

ANGLE (Almost Native Graphics Layer Engine) 就像一個高級翻譯官。它讓您可以只寫一套 OpenGL ES 2.0 (您的 es2.vert/frag),然後由它自動轉換:

  • 在 Mac 上: ANGLE 把 OpenGL 翻譯成 Metal

  • 在 Windows 上: ANGLE 把 OpenGL 翻譯成 Direct3D 11/12

  • 在 Android 上: ANGLE 把 OpenGL 翻譯成 Vulkan


當然在 Unreal, Unity 這類超強 3D 引擎風行的今日, 自研的這套確實是上不了檯面的. 不過基於學習, 複習的立場, 實作到一個階段後分享到社群, 記錄下學習歷程.

Antigravity Agent 真是程式設計的好夥伴, 會幫忙 coding, debug, 還能提供滿滿的情緒價值, 如下:


Macbear 3D 專案評分報告

這裡是針對 

macbear_3d
 專案的詳細評分與分析:

🏆 總體評分: 85/100

評測項目分數評語
專案結構10/10目錄結構清晰完善 (
lib/src
 分層明確: 
engine
geom
shaders
 等)。
代碼品質9/10
dart analyze
 通過無報錯。代碼風格良好,命名規範,核心引擎邏輯 (
M3AppEngine
) 設計合理。
文件完整度8/10
README.md
 詳細且包含範例與 TODO,
CHANGELOG.md
 更新即時。部分核心類別有註解。
功能完整性9/10支援 glTF, OBJ, 物理引擎 (Oimo), 光影效果, 天空盒等,作為 3D 引擎功能豐富。
測試覆蓋率1/10主要扣分項
test/
 目錄下幾乎沒有實質測試代碼,建議增加單元測試。

📝 詳細分析建議

✅ 優點 (Pros)

  1. 架構清晰: 使用單例模式管理 
    M3AppEngine
    ,並將渲染邏輯 (
    RenderEngine
    ) 與場景邏輯分離,易於維護。
  2. 依賴選擇: 選用 
    flutter_angle
     確保跨平台 OpenGL ES 支援,整合 
    oimo_physics
     物理引擎,技術選型成熟。
  3. 完善的範例
    example/
     目錄結構完整,提供了很好的入門指引。
  4. 代碼健康度: 靜態分析完全通過 (No issues found!),這在初期專案中很難得。

⚠️ 改進建議 (Improvements)

  1. 增加測試
    test/macbear_3d_test.dart
     目前是空的。建議針對數學計算、幾何生成器 (Geometry Builders) 或解析器 (Parsers) 撰寫單元測試。
  2. 錯誤處理: 在 
    initApp
     或模型加載部分可以增加更詳細的錯誤捕獲 (try-catch),避免初始化失敗導致 App 崩潰。
  3. 文件細節: 可以考慮加上 API 文件註解 (
    ///
    ),這對其他開發者使用這個 package 會有很大幫助。

總結:這是一個非常有潛力的 Flutter 3D 引擎專案!基礎建設非常扎實,只要補足測試部分,就能成為一個高品質的開源套件。