Визуальные атрибуты

Работа с визуальными атрибутами в CesiumJS строится вокруг системы свойств (properties), материалов (materials) и стилей отображения, которые определяют внешний вид геометрии, сущностей и 3D-тайлов. Визуальные атрибуты охватывают весь спектр графического представления: цвет, прозрачность, текстуры, линии, заливки, высотные привязки, условия видимости и динамическое изменение внешнего вида во времени.


Базовая модель визуального представления

В CesiumJS визуальные атрибуты разделяются на три основных уровня:

1. Entity API (высокоуровневый слой) Работа через Entity и его свойства:

  • color
  • material
  • outline
  • heightReference
  • billboard, label, point
  • polyline, polygon, ellipse, rectangle

2. Primitive API (низкоуровневый слой) Используется для максимальной производительности:

  • Appearance (MaterialAppearance, PolylineMaterialAppearance)
  • GeometryInstance.attributes
  • PerInstanceColor
  • Material

3. Cesium3DTiles styling (стилизация тайлов)

  • CSS-подобные выражения
  • фильтрация по свойствам
  • условные цвета и скрытие объектов

Цвет как основной визуальный атрибут

Цвет в CesiumJS представлен объектом Cesium.Color и используется во всех слоях визуализации.

Основные способы задания цвета:

  • фиксированный цвет
  • RGBA-компоненты
  • HEX-эквиваленты (через утилиты)
  • динамический цвет через CallbackProperty

Пример логики применения:

  • геометрия может иметь базовый цвет
  • цвет может изменяться во времени
  • цвет может зависеть от свойств объекта

Прозрачность и альфа-канал

Прозрачность управляется через:

  • alpha у Cesium.Color
  • material.translucent
  • appearance.translucent

Ключевая особенность: в CesiumJS прозрачность влияет на порядок отрисовки и может требовать сортировки объектов


Материалы (Materials) как основа визуальных атрибутов

Материалы определяют поверхность геометрии и её визуальное поведение.

Основные типы материалов:

  • ColorMaterialProperty
  • ImageMaterialProperty
  • CheckerboardMaterialProperty
  • StripeMaterialProperty
  • GridMaterialProperty
  • PolylineDashMaterialProperty
  • PolylineArrowMaterialProperty

Материалы могут:

  • анимироваться
  • смешиваться
  • использовать текстуры
  • зависеть от свойств объектов

Цветовые материалы и динамическая заливка

ColorMaterialProperty используется для базовой заливки геометрий.

Особенности:

  • поддерживает динамическое обновление цвета
  • работает с прозрачностью
  • может комбинироваться с outline

Векторные объекты (полигоны, эллипсы, прямоугольники) часто используют именно цветовые материалы как базовый слой визуализации.


Текстурные материалы

ImageMaterialProperty

Используется для наложения изображений на поверхности:

  • полигоны (карты регионов)
  • поверхности земли (декали)
  • декоративные объекты

Поддерживаемые параметры:

  • повторение текстуры (repeat)
  • прозрачность
  • цветовое умножение

StripeMaterialProperty

Полосатые визуальные эффекты:

  • чередующиеся цвета
  • направление полос
  • масштабирование

Применение:

  • выделение зон
  • визуализация маршрутов
  • технические карты

CheckerboardMaterialProperty

Шахматные узоры:

  • контрольные области
  • debug-режимы
  • визуальное разделение регионов

Линии и полилинии

Polyline в CesiumJS имеет отдельную систему визуальных атрибутов, отличную от полигонов.

Основные параметры:

  • width
  • material
  • clampToGround
  • depthFailMaterial
  • arcType

Материалы полилиний:

  • PolylineGlowMaterialProperty
  • PolylineOutlineMaterialProperty
  • PolylineDashMaterialProperty
  • PolylineArrowMaterialProperty

Особенности визуализации линий:

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

Глубина, привязка к поверхности и высота

Визуальные атрибуты тесно связаны с геометрической привязкой:

HeightReference

  • NONE — абсолютная высота
  • CLAMP_TO_GROUND — привязка к земле
  • RELATIVE_TO_GROUND — относительная высота

Влияние на визуализацию:

  • изменение перспективы
  • перекрытие объектов
  • взаимодействие с terrain

Outline и контурирование объектов

Контуры используются для:

  • выделения объектов
  • визуальной иерархии
  • улучшения читаемости сцены

Параметры:

  • outlineColor
  • outlineWidth
  • outline (boolean)

Контуры особенно важны при работе с:

  • полигонами
  • зданиями
  • классифицированными объектами

Billboard, Label и Point как визуальные атрибуты

Billboard

2D-иконки в 3D пространстве:

  • image
  • scale
  • rotation
  • alignedAxis

Используется для:

  • маркеров
  • POI
  • динамических объектов

Label

Текстовые визуальные атрибуты:

  • font
  • fillColor
  • outlineColor
  • pixelOffset
  • scale

Особенность:

  • текст всегда ориентирован к камере

Point

Простейшие визуальные маркеры:

  • размер в пикселях
  • цвет
  • outline

Применяются для:

  • облаков точек
  • GPS-треков
  • упрощённой визуализации

Динамические визуальные атрибуты

CesiumJS поддерживает реактивные свойства:

CallbackProperty

Позволяет:

  • менять цвет во времени
  • изменять геометрию
  • анимировать прозрачность

TimeIntervalCollectionProperty

Используется для:

  • временных слоёв
  • исторических данных
  • сценарной визуализации

Условная видимость и дистанционные атрибуты

DistanceDisplayCondition

Определяет диапазон видимости:

  • скрытие объектов при удалении камеры
  • оптимизация производительности
  • уровень детализации

Применяется к:

  • labels
  • billboards
  • polygons

Primitive Appearance и низкоуровневые атрибуты

В Primitive API визуальные атрибуты управляются через Appearance.

MaterialAppearance

  • поддержка материалов
  • освещение
  • прозрачность

PerInstanceColorAppearance

  • индивидуальный цвет каждой геометрии
  • высокая производительность
  • используется в батчинге

GeometryInstance.attributes

  • цвет
  • положение
  • нормали
  • дополнительные данные

Стилизация 3D Tiles

3D Tiles используют отдельный механизм визуальных атрибутов.

Features styling:

  • условные выражения
  • доступ к свойствам объекта
  • фильтрация по атрибутам

Пример логики:

  • скрыть объекты по высоте
  • изменить цвет по типу здания
  • выделить группы объектов

Поддерживаемые эффекты:

  • цветовая классификация
  • прозрачность
  • скрытие
  • динамическое выделение

Комбинирование визуальных атрибутов

CesiumJS позволяет накладывать несколько уровней визуализации:

  • материал + цвет
  • текстура + прозрачность
  • outline + заливка
  • distance condition + label

Особенность системы:

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

Оптимизация визуальных атрибутов

Ключевые принципы:

  • минимизация прозрачных объектов
  • использование batch-рендеринга
  • предпочтение Primitive API для больших наборов данных
  • снижение количества уникальных материалов
  • использование 3D Tiles вместо отдельных геометрий

Влияние камеры на визуальные атрибуты

Камера напрямую влияет на:

  • уровень детализации
  • толщину линий
  • видимость label/billboard
  • переключение LOD в 3D Tiles

Визуальная система адаптивна:

  • один и тот же объект может выглядеть по-разному на разных расстояниях
  • материалы могут реагировать на масштаб сцены

Цветовые пространства и освещение

CesiumJS использует физически корректную модель освещения:

  • дневное освещение
  • атмосферные эффекты
  • затенение terrain

Визуальные атрибуты могут:

  • реагировать на light intensity
  • сохранять независимость от освещения (unlit materials)
  • комбинироваться с fog и atmosphere

Сложные комбинации материалов

Примеры комбинированных подходов:

  • ImageMaterial + Color tint + Transparency
  • PolylineGlow + DistanceDisplayCondition
  • 3D Tiles styling + dynamic color mapping
  • Label + Billboard + conditional visibility

Такие комбинации позволяют строить:

  • аналитические карты
  • симуляции
  • геопространственные визуализации высокой плотности

Итоговая архитектура визуальных атрибутов

Система визуальных атрибутов в CesiumJS представляет собой многоуровневую модель, где каждый слой отвечает за определённый аспект визуализации:

  • геометрия задаёт форму
  • материал определяет поверхность
  • свойства управляют динамикой
  • appearance регулирует рендеринг
  • 3D Tiles добавляют семантическую стилизацию

Эта архитектура обеспечивает гибкость при создании как простых картографических приложений, так и сложных 3D-аналитических систем.