Cesium World Terrain

Cesium World Terrain представляет собой глобальную цифровую модель рельефа Земли, интегрированную в потоковую 3D-геоплатформу CesiumJS. В основе лежит многомасштабная структура тайлов, позволяющая динамически подгружать и детализировать поверхность планеты в зависимости от положения камеры и уровня приближения. Система оптимизирована для работы с глобальными сценами, где одновременно требуется высокая производительность, точность геодезических данных и визуальная непрерывность поверхности.

Вся модель рельефа построена на иерархической структуре плиток (tiles), организованных в виде quadtree. Каждый узел дерева соответствует квадратной области земной поверхности и содержит данные высот в формате quantized-mesh.

Ключевые принципы архитектуры:

  • Иерархическая детализация (LOD) При удалении камеры от поверхности используются крупные плитки с низкой детализацией. При приближении автоматически подгружаются более мелкие и точные сегменты.

  • Динамическая потоковая загрузка Тайлы подгружаются по мере необходимости через сеть. Ненужные данные выгружаются из памяти.

  • Географическая привязка Каждая плитка связана с координатами в системе WGS84 на эллипсоиде.

  • Кэширование Используется локальный и сетевой кэш для ускорения повторного доступа к уже загруженным участкам.

Формат quantized-mesh

Основой хранения высот является формат quantized-mesh, разработанный для эффективной передачи и отрисовки рельефа.

Структура данных включает:

  • массив вершин треугольной сетки
  • закодированные высоты (quantized values)
  • нормали для освещения
  • соседние связи между тайлами
  • вспомогательные данные для сглаживания швов

Особенность формата заключается в том, что геометрия оптимизирована для GPU и может напрямую использоваться в WebGL без дополнительных преобразований.

Принцип подгрузки тайлов

Cesium использует экранно-ориентированный подход к выбору уровня детализации.

Основные этапы:

  1. Камера определяет область видимости.
  2. Для каждого тайла вычисляется ошибка аппроксимации (screen space error).
  3. Если ошибка превышает порог, тайл subdivide-ится.
  4. Дочерние тайлы запрашиваются с сервера.
  5. Родительские узлы временно остаются для плавного перехода.

Этот механизм обеспечивает стабильную частоту кадров даже при работе с глобальными сценами.

Интеграция Cesium World Terrain

Подключение рельефа выполняется через конфигурацию terrain provider:

import { Viewer } from "cesium";

const viewer = new Viewer("cesiumContainer", {
    terrainProvider: Cesium.createWorldTerrain()
});

При этом библиотека автоматически переключается на глобальный сервис Cesium ion, который предоставляет оптимизированные тайлы высот.

Работа с высотами и эллипсоидом

Cesium World Terrain учитывает форму Земли как эллипсоид, а не идеальную сферу. Это влияет на:

  • расчёт геодезических координат
  • интерполяцию высот
  • проекцию экранных координат
  • измерения расстояний

Высоты в системе представлены как:

  • геоидные значения (относительно уровня моря)
  • эллипсоидальные координаты
  • комбинированные данные при использовании внешних DEM-источников

Уровни детализации и плавные переходы

Для предотвращения визуальных артефактов используется несколько техник:

Skirts (юбки тайлов)

Каждый тайл имеет вертикальные «юбки» по краям, скрывающие разрывы между уровнями детализации.

Morphing

При переходе между LOD выполняется плавная интерполяция геометрии, чтобы избежать резких скачков.

Stitches

Дополнительная геометрическая сшивка соседних тайлов для устранения щелей.

Производительность и GPU оптимизация

Cesium World Terrain рассчитан на WebGL-пайплайн и активно использует GPU:

  • минимизация CPU-геометрии
  • батчинг вершинных данных
  • индексированные буферы
  • frustum culling
  • occlusion culling

Также применяется приоритизация тайлов: более важные области загружаются первыми.

Влияние камеры на качество рельефа

Камера напрямую определяет качество отображения поверхности.

Факторы:

  • высота над землёй
  • угол обзора (FOV)
  • скорость перемещения
  • направление взгляда

При высокой скорости движения система временно снижает детализацию для поддержания FPS, затем догружает более точные данные.

Вода и маски поверхности

Cesium World Terrain поддерживает дополнительные слои данных:

  • water masks (маски водных поверхностей)
  • terrain exaggeration (вертикальное преувеличение рельефа)
  • per-tile metadata

Маски позволяют отделять сушу от воды, корректно отображая береговые линии и озёра.

Программное управление рельефом

Рельеф можно модифицировать на уровне сцены:

viewer.scene.terrainExaggeration = 2.0;

Также возможно ограничение области загрузки:

viewer.terrainProvider = new Cesium.CesiumTerrainProvider({
    url: Cesium.IonResource.fromAssetId(1)
});

Обработка ошибок и fallback-режимы

При недоступности источника данных система автоматически переключается:

  • на упрощённый ellipsoid terrain
  • на локальный кэш
  • на частично загруженные тайлы

Это позволяет сохранить непрерывность визуализации даже при сетевых сбоях.

Координация с 3D-тайлами и моделями

Cesium World Terrain тесно интегрируется с 3D Tiles:

  • здания корректно «садятся» на поверхность
  • корректируется высота основания моделей
  • поддерживается draping текстур

При этом используется единая система координат RTC (Relative To Center) для повышения точности вычислений в больших сценах.

Геометрическая точность и численная стабильность

При глобальных масштабах возникают проблемы с floating-point precision. Cesium решает их через:

  • локальные системы координат
  • RTC center shifting
  • double precision математику на уровне расчетов

Это критично при работе с высокими уровнями zoom и крупными сценами.

Ограничения и особенности работы

Несмотря на оптимизации, существуют фундаментальные ограничения:

  • зависимость от качества исходных DEM-данных
  • сетевые задержки при загрузке тайлов
  • нагрузка на GPU при высоком LOD
  • ограниченная точность в областях с экстремальным рельефом

Эти ограничения компенсируются адаптивной системой детализации и агрессивным кэшированием.

Поведение при масштабировании сцены

При увеличении масштаба сцены происходит перераспределение ресурсов:

  • удалённые области упрощаются
  • ближние зоны получают приоритет
  • обновляется набор активных тайлов
  • перерасчитываются bounding volumes

Эта стратегия обеспечивает стабильную производительность при глобальном обзоре Земли и при локальных детализированных сценах.