コンテンツにスキップ

CesiumIonPlugin

CesiumIonPlugin は、init() 時に Cesium Ion のアセットエンドポイントを解決し、addTerrain() を通じてそのアセットを quantized-mesh 地形レイヤーとしてビューに登録します。

Cesium Ion の認証フロー(https://api.cesium.com/v1/assets/<assetId>/endpoint からエンドポイント URL とアクセストークンを取得する処理)はプラグインが受け持つため、アプリケーション側はアセット ID と Cesium Ion のアクセストークンを渡すだけで利用できます。

import ThreeView from "@navaramap/three";
import { DefaultPlugin } from "@navaramap/three-default-plugin";
import { CesiumIonPlugin } from "@navaramap/three-plugins";
const view = new ThreeView({ container, animation: true });
const cesiumIon = new CesiumIonPlugin({
assetId: 12345, // Cesium ion asset id
accessToken: "<your cesium ion token>",
});
view.addPlugin(new DefaultPlugin());
view.addPlugin(cesiumIon);
await view.init();
cesiumIon.addTerrain({
maxZoom: 14,
castShadow: true,
receiveShadow: true,
tms: true,
geographic: true,
requestVertexNormals: true,
requestWaterMask: true,
});
new CesiumIonPlugin(config: CesiumIonConfig)
プロパティデフォルト説明
assetIdnumber | stringCesium Ion のアセット ID。
accessTokenstringアセットエンドポイントの解決に使用する Cesium Ion アクセストークン。
endpointstring"https://api.cesium.com/v1/assets"Cesium Ion アセットエンドポイントのベース URL を上書きします(プロキシやセルフホストエンドポイントを使う場合)。
addTerrain(options?: CesiumIonTerrainOptions): Layer

解決済みの Cesium Ion アセットを quantized-mesh 地形レイヤーとして登録します。内部では quantized-mesh ソースを作成し(view.addSource(...))、view.addLayer({ type: "terrain", source }) で描画します。view.init() が完了してから呼び出してください。それ以前に呼ぶとエンドポイント未解決のため例外が投げられます。

戻り値は view.addLayer() が返す Layer ハンドルです。

CesiumIonTerrainOptions は、quantized-mesh ソースの取得/デコードオプション(typeurltoken を除いたもの。これらは解決済みの Cesium Ion エンドポイントからプラグインが補います)と、terrain レイヤーのメッシュ描画オプションをまとめたフラットなオブジェクトです。プラグインは各フィールドを内部で view.addSource() または view.addLayer() に振り分けます。

主なオプション:

プロパティ説明
maxZoomnumberCesium Ion エンドポイントから取得する最大ズームレベル。
minZoomnumberCesium Ion エンドポイントから取得する最小ズームレベル。
overscaledMaxZoomnumberこのズームレベルに達するまで地形をアップサンプリングします。
castShadowboolean地形が影を落とすかどうか。
receiveShadowboolean地形が影を受けるかどうか。
tmsbooleanTMS タイル座標を使用するかどうか。Cesium Ion の quantized-mesh アセットは TMS です。
geographicboolean地理座標系(EPSG:4326)のタイルスキームかどうか。Cesium Ion の quantized-mesh はこれに該当します。
requestVertexNormalsboolean頂点ごとの法線を Cesium Ion エンドポイントに要求します。quantized-mesh データから陰影付けするのに必要です。
requestWaterMaskbooleanウォーターマスクを Cesium Ion エンドポイントに要求します。
skirtboolean地形タイルのスカートを描画するかどうか。
skirtExaggerationnumberスカートの高さに適用される倍率。
showboolean地形を表示するかどうか。
showBoundingBoxbooleanタイルごとのバウンディングボックスを描画します(デバッグ用)。

全フィールドは quantized-mesh ソースと terrain レイヤーの terrain 描画オプションを参照してください。