# Fluid Sandbox History

## 2026-07-07

- 建立 `/demo/htm/map/3D/fluid-sandbox/index.php`。
- 參考來源: https://o.oooo.tw/fluid-sandbox/
- 本機參考原碼: `example/fluid-sandbox.zip`。
- 本機參考規格: `fluid-sandbox-prompt.md`。
- 從原包解出 `three.min.js`，頁面改為本地引入。
- 取用的 idea: Three.js 體素沙盤、頭端蓄水區、尾端排水區、水流沖刷、挖掘與落下工具、可調整模擬尺寸。
- 沒有直接複製遠端 `app.js`；本版保留展示概念，改成單檔 PHP + inline JS，方便放在 3WA demo 架構內。
- 目前模型是 cellular automata 原型，不是嚴謹水文或泥沙輸送模型。
- 新增 `api.php?doc=history`、`api.php?doc=skill`，用白名單讀取受保護的 markdown 文件。
- 視覺調整為貼近原版: 預設尺寸 50 × 250 × 30、平整地層剖面、Lambert 材質、sRGB output、只渲染表面體素、大地網與低角度相機。
- 新增「隨機地形」按鈕，按下後放大展示範圍並用隨機山峰、山脊、河谷產生不同山勢。
- 修正隨機地形尺寸比例，沿用原版 `50:250:30` 等比例放大，避免展示時寬高看起來變形。
- 檢查 `example/fluid-sandbox_Fable.zip`，sha256 與 `fluid-sandbox.zip` 相同。保留為第二份來源標記；學習重點同原包: 本地 Three.js、surface-only instancing、材質色階、chunk sleep、`flowT/flowD` 流向紀錄。

## 後續可接 Easymap 的方向

- 將 DEM / terrain height raster 轉成沙盤初始格點。
- 將水流路徑、沖刷範圍、堆積區輸出成 GeoJSON / WKT，交給 Easymap 2D 圖層展示。
- 在 Easymap 3D 中用 `enable3D()`、terrain、glTF / 3D Tiles 顯示沖刷前後地形。
- 用本頁先做互動教具，等演算法穩定再抽成 Easymap demo。
