3D Rendering Test on WiFiBoy32
-
在 https://github.com/elect-gombe 看到一段 初音的3D Rendering 程式,覺得很有趣,立即移植到 WiFiBoy32 上試試。
急著想看看效果的,請至後面下載 bin 檔來燒錄進你的 WiFiBoy32 即可。
(為了證明真的是 Realtime 3D rendering,我在程式中加了左右 L/R 鍵來轉動攝影機視角,很有趣喔,不仿一試!)
這個精簡的即時3D Renderer做得很不錯,初音的 3D 模型大約有
300個2450 個 polygons,用 bone skeletal animation 算圖,即時動畫顯示在 WiFiBoy32 上,大約能有 18fps 的效能,算是非常流暢的。作者 elect-gombe 原來的程式是橫向 320x240 render 的,我把 LCD init 的 MAC 改成 0x48,Column/Page Address Set 改為 240x320 視窗。
我們 WiFiBoy.org 的團隊在一年多前也嘗試做過一個自己的 3D Render Engine,原本是要用於 3D 小遊戲製作的。當時遇到一些記憶體管理問題,在舊版 EDP-IDF 下的大型 array 會不定時有內容被破壞的怪現象,一直無法解決,就沒有繼續開發下去。(後來發現這問題可以改用 malloc 解決,不要直接宣告大型 array 就不會有問題。)
現在我們在 MicroPython 的助陣下,WiFiBoy32 有了一個超級方便的程式開發環境,特別適合以遊戲專案來學習程式設計。我們實在應該要趕緊移植一個精巧的 3D 遊戲引擎,做幾個 3D小遊戲範例,來讓大家玩得更開心了。
---
原始程式請看這裡:https://github.com/elect-gombe/esp32_mmd
---
想立即試試看效果的,可以下載直接燒錄的bin檔: wb32-3d-rendering-miku.zip
bootloader.bin 燒在 0x1000,partitions.bin 燒在 0x8000,spi_master.bin 燒在 0x10000
燒錄程式 ESP32 Flash Download Tool V3.6.4 (WindowsPC):flash_download_tools_v3.6.4_0.rar
Linux 或 macOS: 請使用 esptool.py
python esptool.py --chip esp32 --port <your usb device> --baud 1500000 write_flash -z --flash_mode dio --flash_freq 80m --flash_size detect 0x1000 bootloader.bin 0x10000 spi_master.bin 0x8000 partitions.bin
---
影片:
-
更正:原作者 elect-gombe 剛才告訴我們,初音的 3D 模型大約有 2450 個 polygons,不是只有 300 個!
2450 polygons 的即時運算能有這番效率,還真是厲害!
-
WiFiBoy32 修改的版本 原始程式下載點:
增加 3D Camera 控制: U/D/L/R:Rotate Camera,A/B:Zoom In/Out