osmgl 0.5.0 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/osmgl.cjs +266 -78
- package/dist/osmgl.cjs.map +1 -1
- package/dist/osmgl.d.cts +77 -14
- package/dist/osmgl.d.ts +77 -14
- package/dist/osmgl.global.js +267 -79
- package/dist/osmgl.js +266 -78
- package/dist/osmgl.js.map +1 -1
- package/package.json +1 -1
package/dist/osmgl.d.cts
CHANGED
|
@@ -432,6 +432,20 @@ declare class Transform {
|
|
|
432
432
|
* Порядок: левый верх, правый верх, левый низ, правый низ.
|
|
433
433
|
*/
|
|
434
434
|
localRayCorners(): Vec3[];
|
|
435
|
+
/**
|
|
436
|
+
* Базис камеры в МИРОВЫХ осях движка (X восток, Y юг, Z вверх) и фокус в пикселях вида.
|
|
437
|
+
*
|
|
438
|
+
* По ним из пикселя восстанавливается луч: dir = normalize(fwd*focal + right*dx + up*dy). Небу
|
|
439
|
+
* этого хватает, чтобы считаться от УГЛА ЛУЧА, а не от экранной высоты, — только так у горизонта
|
|
440
|
+
* получается настоящая воздушная масса, а не нарисованная полоса.
|
|
441
|
+
*/
|
|
442
|
+
cameraRay(): {
|
|
443
|
+
right: Vec3;
|
|
444
|
+
up: Vec3;
|
|
445
|
+
fwd: Vec3;
|
|
446
|
+
focal: number;
|
|
447
|
+
axisElev: number;
|
|
448
|
+
};
|
|
435
449
|
/** Направление на центр планеты и её угловой радиус — для каймы атмосферы. */
|
|
436
450
|
globeDisc(): {
|
|
437
451
|
dir: Vec3;
|
|
@@ -977,6 +991,21 @@ interface FillExtrusionLayerSpec extends LayerBase {
|
|
|
977
991
|
windowColor?: Interpolated<string>;
|
|
978
992
|
/** Цвет переплёта и откосов. */
|
|
979
993
|
windowFrameColor?: Interpolated<string>;
|
|
994
|
+
/**
|
|
995
|
+
* Разброс тона и градиента стекла, 0..1 (по умолчанию 1).
|
|
996
|
+
*
|
|
997
|
+
* Свой тон у каждого окна и отражение неба по высоте дают фасаду вторую фактуру. На синем
|
|
998
|
+
* остеклении это жизнь, а на стекле в тон стене — пятна: часть окон темнее стены, часть
|
|
999
|
+
* светлее. Ноль оставляет ровно середину.
|
|
1000
|
+
*/
|
|
1001
|
+
windowVariation?: Interpolated<number>;
|
|
1002
|
+
/**
|
|
1003
|
+
* Сила швов на стенах и кровлях, 0..1 (по умолчанию 1).
|
|
1004
|
+
*
|
|
1005
|
+
* Швы делают дом сборным. Но там, где стена и стекло одного тона, они остаются единственным
|
|
1006
|
+
* контрастом на фасаде, и дом читается сеткой линий, а не объёмом.
|
|
1007
|
+
*/
|
|
1008
|
+
seamStrength?: Interpolated<number>;
|
|
980
1009
|
/**
|
|
981
1010
|
* Доля светящихся окон, 0..1 — для ночных тем. Какие именно окна горят,
|
|
982
1011
|
* решает хеш ячейки, поэтому при движении камеры свет не «бегает».
|
|
@@ -1325,8 +1354,15 @@ interface LightSpec {
|
|
|
1325
1354
|
interface SkySpec {
|
|
1326
1355
|
/** Рисовать небо и дымку. */
|
|
1327
1356
|
enabled: boolean;
|
|
1328
|
-
/** Цвет
|
|
1357
|
+
/** Цвет открытого неба над полосой мглы. */
|
|
1329
1358
|
skyColor: string;
|
|
1359
|
+
/**
|
|
1360
|
+
* Цвет ВЕРХНЕЙ АТМОСФЕРЫ — выше по кадру, где воздуха меньше и синь глубже.
|
|
1361
|
+
*
|
|
1362
|
+
* Третья остановка градиента. Двух цветов на небо не хватает: получается ровная заливка, по
|
|
1363
|
+
* которой не читается ни толща воздуха, ни высота. Так же устроено небо у Mapbox (`high-color`).
|
|
1364
|
+
*/
|
|
1365
|
+
highColor?: string;
|
|
1330
1366
|
/** Цвет у горизонта. В него же уходит дальняя земля — отсюда бесшовный стык. */
|
|
1331
1367
|
horizonColor: string;
|
|
1332
1368
|
/**
|
|
@@ -1337,6 +1373,14 @@ interface SkySpec {
|
|
|
1337
1373
|
fogRange: [number, number];
|
|
1338
1374
|
/** Предел силы дымки: 1 — дальний план сливается с горизонтом полностью. */
|
|
1339
1375
|
fogIntensity: number;
|
|
1376
|
+
/**
|
|
1377
|
+
* Вертикальный диапазон дымки в МЕТРАХ: с какой высоты она начинает отпускать геометрию и на
|
|
1378
|
+
* какой отпускает совсем. Мгла лежит слоем у земли, и башня из неё выходит — низ теряется,
|
|
1379
|
+
* верх остаётся чистым. Ровно выцветшая по всей высоте башня выдаёт нарисованную дымку первой.
|
|
1380
|
+
*
|
|
1381
|
+
* Равные значения выключают учёт высоты. Аналог `fog.vertical-range` у Mapbox.
|
|
1382
|
+
*/
|
|
1383
|
+
fogVerticalRange: [number, number];
|
|
1340
1384
|
/** Цвет космоса за пределами атмосферы. Виден только на глобусе. */
|
|
1341
1385
|
spaceColor: string;
|
|
1342
1386
|
/** Цвет атмосферной каймы вокруг планеты. */
|
|
@@ -1344,12 +1388,15 @@ interface SkySpec {
|
|
|
1344
1388
|
/** Яркость звёзд, 0 — выключить. Звёзды закреплены в мире, а не на экране. */
|
|
1345
1389
|
starIntensity: number;
|
|
1346
1390
|
/**
|
|
1347
|
-
*
|
|
1391
|
+
* Толщина полосы МГЛЫ над горизонтом — в синусе угла подъёма луча, как `fog.horizon-blend`
|
|
1392
|
+
* у Mapbox. Значение 0.14 это примерно восемь градусов.
|
|
1348
1393
|
*
|
|
1349
|
-
*
|
|
1350
|
-
*
|
|
1351
|
-
*
|
|
1352
|
-
*
|
|
1394
|
+
* Величина угловая, а не доля кадра: толщина мглы от кадрирования не зависит. Доля видимого
|
|
1395
|
+
* неба схлопывается в ноль, когда горизонт подходит к кромке кадра (большой зум с наклоном), и
|
|
1396
|
+
* синее небо упирается в мглу стыком.
|
|
1397
|
+
*
|
|
1398
|
+
* Этой же полосой дымка отпускает геометрию по мере подъёма луча — небо и дальний дом обязаны
|
|
1399
|
+
* приходить у горизонта в один цвет.
|
|
1353
1400
|
*/
|
|
1354
1401
|
horizonBlend: number;
|
|
1355
1402
|
}
|
|
@@ -1883,14 +1930,6 @@ declare const RELIEF_STYLE: StyleSpec;
|
|
|
1883
1930
|
* читается шумом; вода осталась водой, её блики и есть смысл материала.
|
|
1884
1931
|
*/
|
|
1885
1932
|
declare const CITY_STYLE: StyleSpec;
|
|
1886
|
-
/**
|
|
1887
|
-
* Готовые темы. Все — накладки поверх DEFAULT_STYLE, поэтому структура слоёв
|
|
1888
|
-
* у них общая: переключение темы НЕ требует пересборки геометрии.
|
|
1889
|
-
*
|
|
1890
|
-
* Первые четыре сделаны вручную под этот движок, остальные — палитры GramMaps
|
|
1891
|
-
* Standard из админки, перенесённые скриптом (`scripts/import-standard-themes.mjs`),
|
|
1892
|
-
* чтобы карта на своём движке выглядела так же, как везде в продукте.
|
|
1893
|
-
*/
|
|
1894
1933
|
declare const THEMES: Record<string, ThemeSpec>;
|
|
1895
1934
|
/** Стиль с наложенной темой. Имя неизвестной темы приводит к базовому стилю. */
|
|
1896
1935
|
declare function styleWithTheme(theme: string | ThemeSpec, base?: StyleSpec): StyleSpec;
|
|
@@ -3520,6 +3559,8 @@ declare class LayerRenderer {
|
|
|
3520
3559
|
private patternScale;
|
|
3521
3560
|
/** Камера в метрах от мирового нуля — считается раз на кадр (см. render). */
|
|
3522
3561
|
private cameraMeters;
|
|
3562
|
+
/** Пикселей буфера на пиксель вида — считается раз на кадр (см. render). */
|
|
3563
|
+
private dpr;
|
|
3523
3564
|
/**
|
|
3524
3565
|
* Множитель процедурной детализации (фасады, материалы) — из профиля
|
|
3525
3566
|
* качества. Ноль не ставим даже на слабых устройствах: без окон и ряби карта
|
|
@@ -3678,6 +3719,23 @@ declare class LayerRenderer {
|
|
|
3678
3719
|
* отсекли изнанку. Подробности, почему не годится сам шар, — в GLOBE_CLIP_VERT.
|
|
3679
3720
|
*/
|
|
3680
3721
|
private drawGlobeClip;
|
|
3722
|
+
/**
|
|
3723
|
+
* Горизонт и ширина его полосы в пикселях буфера — ОДНО число на небо и на дымку.
|
|
3724
|
+
*
|
|
3725
|
+
* Полоса меряется по ВИДИМОМУ небу, а не по высоте экрана: при наклоне 75° и поле зрения 37°
|
|
3726
|
+
* над горизонтом помещается несколько градусов, и небо в кадре — это десятки пикселей. Привязка
|
|
3727
|
+
* к высоте экрана дала бы переход длиной в сотни пикселей, то есть ровную заливку вместо
|
|
3728
|
+
* градиента.
|
|
3729
|
+
*/
|
|
3730
|
+
/**
|
|
3731
|
+
* Луч и полоса мглы — ОДНИ И ТЕ ЖЕ числа небу и дымке.
|
|
3732
|
+
*
|
|
3733
|
+
* Небо и дальняя геометрия сходятся у горизонта, и считать их надо от одной величины: угла
|
|
3734
|
+
* подъёма луча. Отсюда наклон оси камеры, фокус и центр кадра — по ним шейдер восстанавливает
|
|
3735
|
+
* луч из пикселя (см. Transform.cameraRay).
|
|
3736
|
+
*/
|
|
3737
|
+
private applyAtmosphere;
|
|
3738
|
+
private skyBand;
|
|
3681
3739
|
/** Небо: вертикальный градиент во весь экран. Геометрии у него нет. */
|
|
3682
3740
|
private drawSky;
|
|
3683
3741
|
/**
|
|
@@ -4976,6 +5034,11 @@ declare const SURFACE_LEVEL_SCALE = 64;
|
|
|
4976
5034
|
interface SurfaceOptions {
|
|
4977
5035
|
/** Метров в единице тайла — все размеры ниже задаются в МЕТРАХ. */
|
|
4978
5036
|
metersPerUnit: number;
|
|
5037
|
+
/**
|
|
5038
|
+
* Предел длины ребра в единицах тайла: длиннее — верхняя плоскость дробится. Нужно ГЛОБУСУ,
|
|
5039
|
+
* где сфера гнёт вершины, а не рёбра. Ноль (плоская карта) выключает дробление.
|
|
5040
|
+
*/
|
|
5041
|
+
maxSegment?: number;
|
|
4979
5042
|
/** Уровень верхней плоскости, метры. Отрицательный — ниже земли. */
|
|
4980
5043
|
elevation: number;
|
|
4981
5044
|
/**
|
package/dist/osmgl.d.ts
CHANGED
|
@@ -432,6 +432,20 @@ declare class Transform {
|
|
|
432
432
|
* Порядок: левый верх, правый верх, левый низ, правый низ.
|
|
433
433
|
*/
|
|
434
434
|
localRayCorners(): Vec3[];
|
|
435
|
+
/**
|
|
436
|
+
* Базис камеры в МИРОВЫХ осях движка (X восток, Y юг, Z вверх) и фокус в пикселях вида.
|
|
437
|
+
*
|
|
438
|
+
* По ним из пикселя восстанавливается луч: dir = normalize(fwd*focal + right*dx + up*dy). Небу
|
|
439
|
+
* этого хватает, чтобы считаться от УГЛА ЛУЧА, а не от экранной высоты, — только так у горизонта
|
|
440
|
+
* получается настоящая воздушная масса, а не нарисованная полоса.
|
|
441
|
+
*/
|
|
442
|
+
cameraRay(): {
|
|
443
|
+
right: Vec3;
|
|
444
|
+
up: Vec3;
|
|
445
|
+
fwd: Vec3;
|
|
446
|
+
focal: number;
|
|
447
|
+
axisElev: number;
|
|
448
|
+
};
|
|
435
449
|
/** Направление на центр планеты и её угловой радиус — для каймы атмосферы. */
|
|
436
450
|
globeDisc(): {
|
|
437
451
|
dir: Vec3;
|
|
@@ -977,6 +991,21 @@ interface FillExtrusionLayerSpec extends LayerBase {
|
|
|
977
991
|
windowColor?: Interpolated<string>;
|
|
978
992
|
/** Цвет переплёта и откосов. */
|
|
979
993
|
windowFrameColor?: Interpolated<string>;
|
|
994
|
+
/**
|
|
995
|
+
* Разброс тона и градиента стекла, 0..1 (по умолчанию 1).
|
|
996
|
+
*
|
|
997
|
+
* Свой тон у каждого окна и отражение неба по высоте дают фасаду вторую фактуру. На синем
|
|
998
|
+
* остеклении это жизнь, а на стекле в тон стене — пятна: часть окон темнее стены, часть
|
|
999
|
+
* светлее. Ноль оставляет ровно середину.
|
|
1000
|
+
*/
|
|
1001
|
+
windowVariation?: Interpolated<number>;
|
|
1002
|
+
/**
|
|
1003
|
+
* Сила швов на стенах и кровлях, 0..1 (по умолчанию 1).
|
|
1004
|
+
*
|
|
1005
|
+
* Швы делают дом сборным. Но там, где стена и стекло одного тона, они остаются единственным
|
|
1006
|
+
* контрастом на фасаде, и дом читается сеткой линий, а не объёмом.
|
|
1007
|
+
*/
|
|
1008
|
+
seamStrength?: Interpolated<number>;
|
|
980
1009
|
/**
|
|
981
1010
|
* Доля светящихся окон, 0..1 — для ночных тем. Какие именно окна горят,
|
|
982
1011
|
* решает хеш ячейки, поэтому при движении камеры свет не «бегает».
|
|
@@ -1325,8 +1354,15 @@ interface LightSpec {
|
|
|
1325
1354
|
interface SkySpec {
|
|
1326
1355
|
/** Рисовать небо и дымку. */
|
|
1327
1356
|
enabled: boolean;
|
|
1328
|
-
/** Цвет
|
|
1357
|
+
/** Цвет открытого неба над полосой мглы. */
|
|
1329
1358
|
skyColor: string;
|
|
1359
|
+
/**
|
|
1360
|
+
* Цвет ВЕРХНЕЙ АТМОСФЕРЫ — выше по кадру, где воздуха меньше и синь глубже.
|
|
1361
|
+
*
|
|
1362
|
+
* Третья остановка градиента. Двух цветов на небо не хватает: получается ровная заливка, по
|
|
1363
|
+
* которой не читается ни толща воздуха, ни высота. Так же устроено небо у Mapbox (`high-color`).
|
|
1364
|
+
*/
|
|
1365
|
+
highColor?: string;
|
|
1330
1366
|
/** Цвет у горизонта. В него же уходит дальняя земля — отсюда бесшовный стык. */
|
|
1331
1367
|
horizonColor: string;
|
|
1332
1368
|
/**
|
|
@@ -1337,6 +1373,14 @@ interface SkySpec {
|
|
|
1337
1373
|
fogRange: [number, number];
|
|
1338
1374
|
/** Предел силы дымки: 1 — дальний план сливается с горизонтом полностью. */
|
|
1339
1375
|
fogIntensity: number;
|
|
1376
|
+
/**
|
|
1377
|
+
* Вертикальный диапазон дымки в МЕТРАХ: с какой высоты она начинает отпускать геометрию и на
|
|
1378
|
+
* какой отпускает совсем. Мгла лежит слоем у земли, и башня из неё выходит — низ теряется,
|
|
1379
|
+
* верх остаётся чистым. Ровно выцветшая по всей высоте башня выдаёт нарисованную дымку первой.
|
|
1380
|
+
*
|
|
1381
|
+
* Равные значения выключают учёт высоты. Аналог `fog.vertical-range` у Mapbox.
|
|
1382
|
+
*/
|
|
1383
|
+
fogVerticalRange: [number, number];
|
|
1340
1384
|
/** Цвет космоса за пределами атмосферы. Виден только на глобусе. */
|
|
1341
1385
|
spaceColor: string;
|
|
1342
1386
|
/** Цвет атмосферной каймы вокруг планеты. */
|
|
@@ -1344,12 +1388,15 @@ interface SkySpec {
|
|
|
1344
1388
|
/** Яркость звёзд, 0 — выключить. Звёзды закреплены в мире, а не на экране. */
|
|
1345
1389
|
starIntensity: number;
|
|
1346
1390
|
/**
|
|
1347
|
-
*
|
|
1391
|
+
* Толщина полосы МГЛЫ над горизонтом — в синусе угла подъёма луча, как `fog.horizon-blend`
|
|
1392
|
+
* у Mapbox. Значение 0.14 это примерно восемь градусов.
|
|
1348
1393
|
*
|
|
1349
|
-
*
|
|
1350
|
-
*
|
|
1351
|
-
*
|
|
1352
|
-
*
|
|
1394
|
+
* Величина угловая, а не доля кадра: толщина мглы от кадрирования не зависит. Доля видимого
|
|
1395
|
+
* неба схлопывается в ноль, когда горизонт подходит к кромке кадра (большой зум с наклоном), и
|
|
1396
|
+
* синее небо упирается в мглу стыком.
|
|
1397
|
+
*
|
|
1398
|
+
* Этой же полосой дымка отпускает геометрию по мере подъёма луча — небо и дальний дом обязаны
|
|
1399
|
+
* приходить у горизонта в один цвет.
|
|
1353
1400
|
*/
|
|
1354
1401
|
horizonBlend: number;
|
|
1355
1402
|
}
|
|
@@ -1883,14 +1930,6 @@ declare const RELIEF_STYLE: StyleSpec;
|
|
|
1883
1930
|
* читается шумом; вода осталась водой, её блики и есть смысл материала.
|
|
1884
1931
|
*/
|
|
1885
1932
|
declare const CITY_STYLE: StyleSpec;
|
|
1886
|
-
/**
|
|
1887
|
-
* Готовые темы. Все — накладки поверх DEFAULT_STYLE, поэтому структура слоёв
|
|
1888
|
-
* у них общая: переключение темы НЕ требует пересборки геометрии.
|
|
1889
|
-
*
|
|
1890
|
-
* Первые четыре сделаны вручную под этот движок, остальные — палитры GramMaps
|
|
1891
|
-
* Standard из админки, перенесённые скриптом (`scripts/import-standard-themes.mjs`),
|
|
1892
|
-
* чтобы карта на своём движке выглядела так же, как везде в продукте.
|
|
1893
|
-
*/
|
|
1894
1933
|
declare const THEMES: Record<string, ThemeSpec>;
|
|
1895
1934
|
/** Стиль с наложенной темой. Имя неизвестной темы приводит к базовому стилю. */
|
|
1896
1935
|
declare function styleWithTheme(theme: string | ThemeSpec, base?: StyleSpec): StyleSpec;
|
|
@@ -3520,6 +3559,8 @@ declare class LayerRenderer {
|
|
|
3520
3559
|
private patternScale;
|
|
3521
3560
|
/** Камера в метрах от мирового нуля — считается раз на кадр (см. render). */
|
|
3522
3561
|
private cameraMeters;
|
|
3562
|
+
/** Пикселей буфера на пиксель вида — считается раз на кадр (см. render). */
|
|
3563
|
+
private dpr;
|
|
3523
3564
|
/**
|
|
3524
3565
|
* Множитель процедурной детализации (фасады, материалы) — из профиля
|
|
3525
3566
|
* качества. Ноль не ставим даже на слабых устройствах: без окон и ряби карта
|
|
@@ -3678,6 +3719,23 @@ declare class LayerRenderer {
|
|
|
3678
3719
|
* отсекли изнанку. Подробности, почему не годится сам шар, — в GLOBE_CLIP_VERT.
|
|
3679
3720
|
*/
|
|
3680
3721
|
private drawGlobeClip;
|
|
3722
|
+
/**
|
|
3723
|
+
* Горизонт и ширина его полосы в пикселях буфера — ОДНО число на небо и на дымку.
|
|
3724
|
+
*
|
|
3725
|
+
* Полоса меряется по ВИДИМОМУ небу, а не по высоте экрана: при наклоне 75° и поле зрения 37°
|
|
3726
|
+
* над горизонтом помещается несколько градусов, и небо в кадре — это десятки пикселей. Привязка
|
|
3727
|
+
* к высоте экрана дала бы переход длиной в сотни пикселей, то есть ровную заливку вместо
|
|
3728
|
+
* градиента.
|
|
3729
|
+
*/
|
|
3730
|
+
/**
|
|
3731
|
+
* Луч и полоса мглы — ОДНИ И ТЕ ЖЕ числа небу и дымке.
|
|
3732
|
+
*
|
|
3733
|
+
* Небо и дальняя геометрия сходятся у горизонта, и считать их надо от одной величины: угла
|
|
3734
|
+
* подъёма луча. Отсюда наклон оси камеры, фокус и центр кадра — по ним шейдер восстанавливает
|
|
3735
|
+
* луч из пикселя (см. Transform.cameraRay).
|
|
3736
|
+
*/
|
|
3737
|
+
private applyAtmosphere;
|
|
3738
|
+
private skyBand;
|
|
3681
3739
|
/** Небо: вертикальный градиент во весь экран. Геометрии у него нет. */
|
|
3682
3740
|
private drawSky;
|
|
3683
3741
|
/**
|
|
@@ -4976,6 +5034,11 @@ declare const SURFACE_LEVEL_SCALE = 64;
|
|
|
4976
5034
|
interface SurfaceOptions {
|
|
4977
5035
|
/** Метров в единице тайла — все размеры ниже задаются в МЕТРАХ. */
|
|
4978
5036
|
metersPerUnit: number;
|
|
5037
|
+
/**
|
|
5038
|
+
* Предел длины ребра в единицах тайла: длиннее — верхняя плоскость дробится. Нужно ГЛОБУСУ,
|
|
5039
|
+
* где сфера гнёт вершины, а не рёбра. Ноль (плоская карта) выключает дробление.
|
|
5040
|
+
*/
|
|
5041
|
+
maxSegment?: number;
|
|
4979
5042
|
/** Уровень верхней плоскости, метры. Отрицательный — ниже земли. */
|
|
4980
5043
|
elevation: number;
|
|
4981
5044
|
/**
|