CesiumJS включает систему материалов, предназначенную для управления внешним видом геометрии на сцене. Dot материал относится к категории процедурных материалов, формирующих повторяющийся точечный узор вдоль линий и поверхностей, применяемых к примитивам и entities.
Dot материал используется для создания визуальных эффектов, где требуется дискретная структура вместо непрерывной заливки или сплошной линии. Он особенно востребован при стилизации маршрутов, трасс, границ зон и аналитических визуализаций, где важна читаемость и различимость направления при масштабировании.
Dot материал формирует повторяющийся шаблон, состоящий из двух компонентов:
В основе лежит процедурное вычисление текстуры, которая не загружается из внешнего изображения, а генерируется GPU-шейдером на основе параметров материала.
Такая модель позволяет:
Dot материал в Cesium реализован через систему Material
и MaterialProperty.
Он поддерживает два основных способа использования:
Entity APIВнутренне материал описывается GLSL-шаблоном, который интерпретирует UV-координаты поверхности и раскладывает их на повторяющиеся сегменты.
Dot материал в CesiumJS обычно включает следующие uniforms:
Cartesian2)Поведение материала определяется комбинацией этих параметров, которые передаются в шейдер и влияют на генерацию узора.
Dot материал может быть применён к примитивам через
Appearance:
const material = new Cesium.Material({
fabric: {
type: 'Dot',
uniforms: {
color: Cesium.Color.YELLOW,
gapColor: Cesium.Color.TRANSPARENT,
repeat: new Cesium.Cartesian2(20.0, 10.0)
}
}
});
const appearance = new Cesium.PolylineMaterialAppearance({
material: material
});
В данном случае материал применяется к полилинии, формируя последовательность точек вдоль её геометрии.
Более распространённый способ — применение через
MaterialProperty:
viewer.entities.add({
polyline: {
positions: Cesium.Cartesian3.fromDegreesArray([
30, 50,
35, 55,
40, 50
]),
width: 6,
material: new Cesium.PolylineDotMaterialProperty({
color: Cesium.Color.CYAN,
gapColor: Cesium.Color.TRANSPARENT,
repeat: new Cesium.Cartesian2(25.0, 1.0)
})
}
});
Entity API обеспечивает автоматическое обновление материала при изменении свойств и синхронизацию с системой времени сцены.
Одной из ключевых особенностей Dot материала является его поведение при изменении масштаба камеры:
Это достигается за счёт работы в пространстве координат примитива, а не в экранных координатах.
Dot материал чаще всего используется в
Polyline-геометрии. Он позволяет визуально разделять:
В отличие от сплошной линии, точечный стиль снижает визуальную перегруженность сцены при большом количестве объектов.
Cesium позволяет комбинировать Dot материал с другими материалами через композицию или замену appearance:
В некоторых архитектурах Dot материал используется как слой поверх базового цвета, создавая эффект «пульсации» или «индикаторного пути».
Dot материал относится к GPU-дешёвым процедурам:
При этом основная нагрузка возникает при большом количестве одновременно активных полилиний, где каждый фрагмент выполняет вычисление паттерна.
Несмотря на эффективность, Dot материал имеет ряд ограничений:
Эти ограничения обусловлены процедурной природой материала и его ориентацией на 2D-паттерн в 3D-сцене.
На уровне GLSL логика Dot материала сводится к разбиению координаты вдоль линии:
fract() для получения
повторяющегося шаблонаУпрощённая логика:
t = fract(v_st.x * repeat.x)t < threshold → dot colorТакая схема обеспечивает стабильную периодичность независимо от длины линии.
Dot материал часто используется как элемент визуального языка в геоинформационных сценах:
За счёт своей дискретной структуры он снижает визуальный шум и улучшает восприятие многослойных сцен, где одновременно отображается большое количество геометрии.
В расширенных реализациях Dot материала возможно добавление временной компоненты:
Это достигается через uniform, связанный с Scene.time,
который влияет на смещение UV-координат внутри шейдера, создавая иллюзию
движения вдоль линии.