В основе CesiumJS лежит представление Земли как эллипсоида WGS84, а
не плоской карты. Эта модель задаёт фундаментальные ограничения и
характер всех визуальных и математических искажений.
Ключевой момент: переход от плоской проекции к
глобусу устраняет одни искажения (например, неизбежные деформации
площадей в Web Mercator), но вводит другие — связанные с трёхмерной
геометрией эллипсоида и численной реализацией в WebGL.
Эллипсоидальная модель описывается в мировых координатах (ECEF —
Earth-Centered, Earth-Fixed), где каждая точка задаётся в трёхмерном
пространстве относительно центра Земли. При визуализации на экране
происходит цепочка преобразований:
ECEF → локальная система камеры → проекция → экранные координаты
Искажения могут возникать на каждом этапе, особенно при переходе из
глобальных координат в систему камеры с ограниченной точностью чисел с
плавающей точкой.
Геометрические
искажения при отображении на глобусе
В отличие от классических 2D-карт, CesiumJS работает с непрерывной
поверхностью сферы/эллипсоида, что приводит к ряду эффектов:
Изменение масштабов по
широте
На глобусе расстояния между меридианами уменьшаются к полюсам. Это не
визуальный артефакт, а геометрическое следствие модели:
- экваториальные области визуально «растянуты» по сравнению с
полярными;
- локальные объекты сохраняют форму, но глобальные расстояния
изменяются нелинейно.
Искажение
площадей и форм в глобальном контексте
Хотя локальные геометрические объекты (например, модели зданий)
сохраняют корректную форму, при анализе больших территорий:
- полигоны могут выглядеть «сжатими» ближе к полюсам;
- линии маршрутов приобретают кривизну, соответствующую геодезическим
дугам.
Геодезическая,
а не евклидова природа расстояний
Расстояния вычисляются вдоль поверхности эллипсоида, а не по прямой в
3D-пространстве. Это приводит к различиям между:
- прямолинейной интерполяцией в 3D;
- истинной геодезической линией на поверхности.
Ограничения
численной точности в глобальном пространстве
CesiumJS опирается на JavaScript Number (IEEE-754 double
precision). При работе с координатами масштаба Земли возникают
фундаментальные ограничения.
Потеря точности на
больших расстояниях
В ECEF-системе значения координат достигают миллионов метров. При
этом:
- точность double precision ограничена примерно 15–17 значащими
цифрами;
- на удалении от центра сцены возникают ошибки округления;
- мелкие детали начинают «дрожать» или смещаться.
Артефакты дрожания
геометрии (jittering)
При движении камеры:
- вершины объектов могут смещаться на субпиксельном уровне;
- особенно заметно на тонких линиях и удалённых объектах;
- эффект усиливается при высокой скорости камеры.
Floating Origin и
локализация координат
Для компенсации численных ограничений применяется концепция локальной
системы координат камеры.
Принцип относительной
системы
Вместо прямого рендеринга в глобальных координатах используется:
- выделение локального центра (camera-centered frame);
- преобразование всех объектов в координаты относительно камеры.
Это уменьшает абсолютные значения координат и повышает точность
вычислений.
Ограничения подхода
Несмотря на стабилизацию:
- при экстремально больших масштабах сцены возникают переходные
артефакты;
- пересчёт базовой точки может вызывать кратковременные скачки;
- в сценах с высокой плотностью объектов возможны несогласованности
LOD.
Ограничения глубины
буфера и Z-fighting
WebGL использует буфер глубины с фиксированной точностью (обычно 24
бита), что создаёт ряд проблем при масштабах планеты.
Сжатие глубины в
перспективной проекции
В перспективной камере распределение точности глубины нелинейно:
- высокая точность ближе к камере;
- резкое падение точности на дальних расстояниях.
Z-fighting на поверхности
Земли
При наложении слоёв (например, imagery + terrain + 3D Tiles):
- возникают конфликты глубины;
- поверхности начинают «мерцать»;
- особенно заметно на ровных участках и больших дистанциях.
Ограничения
рельефа и тайловой модели данных
CesiumJS использует тайловую структуру для рельефа и изображений.
Дискретизация высот
(quantization)
Данные высот хранятся в сжатом виде:
- ограниченная вертикальная точность;
- ступенчатые переходы на малых масштабах;
- потеря гладкости на высоких зумах.
Артефакты на границах тайлов
При загрузке соседних тайлов:
- возможны перепады высот;
- заметные швы между сегментами;
- временные несоответствия при потоковой загрузке.
Искажения уровня
детализации в 3D Tiles
Система 3D Tiles основана на иерархии уровней детализации (LOD).
Переходы между уровнями
детализации
При смене LOD возникают характерные эффекты:
- «пульсация» геометрии;
- резкая смена плотности полигонов;
- временные несоответствия текстур и геометрии.
Сильное упрощение на
дальних дистанциях
Для оптимизации производительности:
- дальние объекты заменяются низкополигональными версиями;
- формы теряют мелкие детали;
- архитектурные элементы могут схлопываться в примитивы.
Ограничения
кривизны Земли и видимого горизонта
Модель глобуса вводит естественное ограничение видимости.
Горизонт как геометрический
предел
При удалении камеры от поверхности:
- объекты постепенно скрываются за кривизной;
- линии обзора ограничиваются эллипсоидом;
- дальние объекты исчезают не по прямой отсечке, а по кривой
поверхности.
Horizon culling
Для оптимизации используется отсечение невидимых объектов:
- объекты за горизонтом не передаются в рендер;
- возможны резкие исчезновения при изменении высоты камеры;
- сложные сцены требуют дополнительной фильтрации видимости.
Ограничения 2D и Columbus
View
Помимо глобуса CesiumJS поддерживает альтернативные режимы
проекции.
2D-проекция (Web Mercator)
При переходе в 2D:
- вводится классическая картографическая проекция;
- усиливаются искажения площадей на высоких широтах;
- прямые линии на глобусе становятся кривыми на карте.
Columbus View (псевдо-3D)
Гибридный режим обладает собственными деформациями:
- вертикальная ось отделена от географической модели;
- объекты могут «наклоняться» при переходах;
- отсутствует строгая геодезическая согласованность.
Производственные
ограничения рендеринга
Реализация в браузере накладывает существенные ограничения на масштаб
сцены.
Ограничения GPU и памяти
- лимит видеопамяти ограничивает количество тайлов;
- сложные сцены требуют агрессивного выгрузочного стриминга;
- текстуры высокого разрешения приводят к росту bandwidth.
Стоимость draw calls
Каждый объект или тайл:
- увеличивает нагрузку на CPU-GPU pipeline;
- снижает частоту кадров при высокой плотности объектов;
- требует батчинга и инстансинга для стабилизации
производительности.
Ограничения потоковой
загрузки данных
CesiumJS активно использует динамическую подгрузку данных.
Задержки сети и
несогласованность сцен
При асинхронной загрузке:
- разные уровни сцены могут отображаться одновременно;
- возникают временные «дырки» в визуализации;
- детализация появляется постепенно, создавая эффект сборки мира.
Ограничения пропускной
способности
- ограничение скорости загрузки тайлов;
- конкуренция между изображениями, рельефом и 3D-моделями;
- при перегрузке происходит деградация качества.
Ограничения преобразований
координат
CesiumJS активно использует системы ENU, ECEF и локальные касательные
плоскости.
Локальные системы координат
При переходах между системами:
- возникают округления при преобразованиях матриц;
- возможны расхождения в ориентации нормалей;
- сложные сцены могут демонстрировать микродеформации.
Накопление ошибок
трансформации
Многоступенчатые преобразования:
ECEF → ENU → camera → clip space
могут приводить к:
- накоплению численных погрешностей;
- смещению объектов при длительном рендере сцены;
- нестабильности анимаций на больших дистанциях.
Атмосферные
и визуальные эффекты как источник псевдо-искажений
Атмосферные модели и постобработка влияют на восприятие
геометрии.
Рэлеевское рассеяние и дымка
- дальние объекты теряют контраст;
- границы объектов становятся менее чёткими;
- возникает ощущение «исчезновения» деталей.
Экспоненциальное затухание
видимости
Плотность атмосферы используется для:
- имитации глубины сцены;
- маскировки дальних артефактов рендеринга;
- сглаживания переходов между уровнями детализации.
Численная устойчивость и
масштаб сцены
Глобальная сцена в CesiumJS объединяет:
- километровые масштабы рельефа;
- сантиметровую точность 3D-моделей;
- орбитальные дистанции камеры.
Такое сочетание приводит к фундаментальному конфликту масштабов,
где:
- геометрия требует высокой точности;
- графический pipeline ограничен фиксированной точностью
представления;
- визуализация балансирует между производительностью и математической
корректностью.