KASUGAI Canvas v6.17.0

システム構成 — ローカルPC・サーバーレス・国内対応

システム構成

KASUGAI Canvas(CesiumJS + Three.js)をローカルPC・サーバーレス・国内対応・組み込みで動かすための構成についてまとめる章。

全体の判断基準

KASUGAI Canvas 基本構成

┌────────────────────────────────────────────────────────────┐
│                     KASUGAI Canvas                         │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  3D 地球描画層  CesiumJS                             │  │
│   - Viewer / Scene / Globe / ImageryLayerCollection     │  │
│   - ImageryLayer (XYZ / TMS / WMS)                      │  │
│   - Cesium3DTileset (PLATEAU / 3D Tiles)                │  │
│   - TerrainProvider (DEM / CesiumWorldTerrain)          │  │
│   - Entity / DataSource / Primitive (GeoJSON / 図面)    │  │
│   - ClippingPlaneCollection (断面カット)               │  │
│  └──────────────────────────────────────────────────────┘  │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  補完 3D 描画層  Three.js                            │  │
│   - GLB / 点群 / 3DGS レンダラー                        │  │
│   - Cesium の Scene 内 or オーバーレイで連携           │  │
│  └──────────────────────────────────────────────────────┘  │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  ロード・変換層  loaders.gl + Web Worker             │  │
│  │   - GPKG (sql.js + WKB パーサー) / GeoJSON → Arrow/FlatBuffers(FGDBはサーバー or 事前変換)            │  │
│  │   - PLY/LAS → EPT / 3D Tiles / PointCloud            │  │
│  │   - GLB / 3D Tiles → VRAM                            │  │
│  └──────────────────────────────────────────────────────┘  │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  接続層  KASUGAI Connect                             │  │
│  │   - ローカル File / D&D / Box API / Re:Earth     │  │
│  └──────────────────────────────────────────────────────┘  │
└────────────────────────────────────────────────────────────┘

ローカルPCで爆速操作する構成

メインレンダラー:CesiumJS + Three.js

データパイプライン

段階 技術 効果
読み込み File / Blob / Box API サーバー不要、ローカル完結。GPKG/FGDB/GLB/LAS/PLY/SPZ 等をそのまま読み込み
変換 Web Worker + Arrow-JS / sql.js + WKB パーサー、FGDB は ogr2ogr サーバー/事前変換 UI ブロックなしで GPKG/GeoJSON → Arrow、FGDB → 事前変換、PLY/LAS → EPT/3D Tiles
永続化 OPFS / IndexedDB 次回起動を即座に行える
描画 CesiumJS + Three.js 同一 Scene / 同一 GPU 空間で 3D 地球・地形・3D Tiles・XYZ・点群を重ね描画

必須テクニック

  1. GeoArrow / FlatBuffers
    • 数十万〜数百万点の 2D ベクトルを CPU パースなしで GPU へ
  2. Web Worker + loaders.gl
    • GPKG/GeoJSON → Arrow、FGDB → サーバー or 事前変換、PLY/LAS → EPT/3D Tiles をバックグラウンド化
  3. OPFS / IndexedDB
    • 巨大バイナリをブラウザ内にキャッシュ
  4. CesiumJS + Three.js 連携
    • CesiumJS の Scene 内でカメラ・深度・レイヤー順を共有(正式仕様)
    • 重ねた canvas は正式な混在レイヤー管理には使用しない

KASUGAI システム組み込み構成

コアエンジン

組み込むべき CesiumJS 機能

  1. ImageryLayer / UrlTemplateImageryProvider:XYZ / TMS / WMS を 3D 地球 / 地形へドレープ
  2. TerrainProvider / CesiumWorldTerrain:3D 地形を構築
  3. Cesium3DTileset:PLATEAU 等の 3D Tiles を LOD 描画
  4. ClippingPlaneCollection:3D Tiles・点群の断面カット
  5. GeoJsonDataSource / Entity:2D 図面・境界の 3D 表示

データパイプライン

ローカルファイル (GPKG / GeoJSON / GLB / LAS / PLY / SPZ) + FGDB(事前変換)
    ↓
Web Worker or サーバー変換(ブラウザ: sql.js + WKB パーサー / Arrow-JS、サーバー or 事前: ogr2ogr / Potree Converter / entwine)
    ↓
FlatBuffers / GeoArrow / TypedArray / 3D Tiles / EPT (VRAM)
    ↓
CesiumJS + Three.js GPU Render

ロードマップ案

Phase 内容 効果
1 CesiumJS ベース構築 + ImageryLayer / TerrainProvider XYZ / DEM / 地形表示を高速化
2 Cesium3DTileset 統合 + ClippingPlaneCollection PLATEAU 等の大規模 3D Tiles・断面表示
3 Three.js 統合 + 点群 + 3DGS 点群・3DGS 可視化を補完

日本国内向け構成

推奨構成

日本現場機能セット

国内データ 組み込む技術 現場効果
地理院 DEM + 2D図面 Cesium TerrainProvider + ImageryLayer 平面図を標高にぴったりドレープ
PLATEAU + 現場BIM/CIM Cesium Cesium3DTileset + ClippingPlaneCollection 建物・敷地の断面・クリッピング
i-Construction 点群 Cesium Cesium3DTileset(pnts)+ Three.js Points / Potree 点群を高さスライスで施工管理
写真測量 3DGS Three.js 専用レンダラー 現場状況をニューラル表現で可視化

サーバーレス・ローカル起動

HTTP サーバーが使えなくても KASUGAI Canvas はクライアント完結で動作可能。

データ読み込み手法

方法 概要
File / Blob / ArrayBuffer 直読 ドラッグ&ドロップ or ファイル選択。HTTP(fetch)不要、CORS なし
OPFS / IndexedDB ブラウザ内にバイナリをキャッシュ。オフラインでも爆速起動
PWA (Service Worker) 内部で HTTP リクエストを横取りし、ローカル/Zip から返す
Tauri / Electron デスクトップ化し、Tauri は tauri://、Electron は file:// またはカスタムプロトコルで安全に読み込み

KASUGAI × Box 構成