@openglobus/og 0.20.4 → 0.22.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/lib/@openglobus/js/Globe.d.ts +5 -1
- package/lib/@openglobus/js/Object3d.d.ts +8 -2
- package/lib/@openglobus/js/camera/Camera.d.ts +2 -0
- package/lib/@openglobus/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +58 -0
- package/lib/@openglobus/js/ellipsoid/Ellipsoid.d.ts +1 -1
- package/lib/@openglobus/js/ellipsoid/index.d.ts +4 -3
- package/lib/@openglobus/js/ellipsoid/mars.d.ts +6 -0
- package/lib/@openglobus/js/ellipsoid/moon.d.ts +6 -0
- package/lib/@openglobus/js/entity/Entity.d.ts +4 -2
- package/lib/@openglobus/js/entity/EntityCollection.d.ts +3 -2
- package/lib/@openglobus/js/entity/GeoObject.d.ts +6 -1
- package/lib/@openglobus/js/entity/GeoObjectHandler.d.ts +4 -0
- package/lib/@openglobus/js/entity/GeometryHandler.d.ts +3 -2
- package/lib/@openglobus/js/entity/Label.d.ts +14 -0
- package/lib/@openglobus/js/entity/LabelHandler.d.ts +1 -1
- package/lib/@openglobus/js/index.d.ts +3 -3
- package/lib/@openglobus/js/layer/Vector.d.ts +12 -29
- package/lib/@openglobus/js/proj/equi.d.ts +9 -0
- package/lib/@openglobus/js/quadTree/{EPSG4326QuadTreeStrategy.d.ts → EPSG4326/EPSG4326QuadTreeStrategy.d.ts} +2 -2
- package/lib/@openglobus/js/quadTree/EntityCollectionNode.d.ts +5 -13
- package/lib/@openglobus/js/quadTree/EntityCollectionsTreeStrategy.d.ts +25 -0
- package/lib/@openglobus/js/quadTree/QuadTreeStrategy.d.ts +11 -0
- package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +18 -0
- package/lib/@openglobus/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +19 -0
- package/lib/@openglobus/js/quadTree/earth/EarthQuadTreeStrategy.d.ts +29 -0
- package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +17 -0
- package/lib/@openglobus/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +17 -0
- package/lib/@openglobus/js/quadTree/equi/EquiQuadTreeStrategy.d.ts +19 -0
- package/lib/@openglobus/js/quadTree/index.d.ts +6 -6
- package/lib/{js/quadTree → @openglobus/js/quadTree/wgs84}/Wgs84QuadTreeStrategy.d.ts +2 -2
- package/lib/@openglobus/js/renderer/Renderer.d.ts +2 -0
- package/lib/@openglobus/js/scene/Planet.d.ts +0 -27
- package/lib/@openglobus/js/segment/Segment.d.ts +0 -1
- package/lib/@openglobus/js/segment/SegmentLonLat.d.ts +0 -4
- package/lib/@openglobus/js/segment/{SegmentLonLatWgs84.d.ts → SegmentLonLatEqui.d.ts} +1 -1
- package/lib/@openglobus/js/terrain/RgbTerrain.d.ts +20 -0
- package/lib/@openglobus/og.esm.js +1 -1
- package/lib/@openglobus/og.esm.js.map +1 -1
- package/lib/@openglobus/og.umd.js +1 -1
- package/lib/@openglobus/og.umd.js.map +1 -1
- package/lib/@openglobus/res/fonts/Ephesis-Regular.json +4648 -0
- package/lib/@openglobus/res/fonts/Ephesis-Regular.ttf.cfg +1282 -0
- package/lib/@openglobus/res/fonts/Ephesis-Regular.ttf.png +0 -0
- package/lib/js/Globe.d.ts +5 -1
- package/lib/js/Globe.js +13 -4
- package/lib/js/Object3d.d.ts +8 -2
- package/lib/js/Object3d.js +64 -6
- package/lib/js/camera/Camera.d.ts +2 -0
- package/lib/js/camera/Camera.js +8 -0
- package/lib/js/control/elevationProfile/ElevationProfileScene.js +2 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.d.ts +58 -0
- package/lib/js/control/geoObjectEditor/GeoObjectEditorScene.js +105 -0
- package/lib/js/ellipsoid/Ellipsoid.d.ts +1 -1
- package/lib/js/ellipsoid/Ellipsoid.js +1 -1
- package/lib/js/ellipsoid/index.d.ts +4 -3
- package/lib/js/ellipsoid/index.js +4 -3
- package/lib/js/ellipsoid/mars.d.ts +6 -0
- package/lib/js/ellipsoid/mars.js +6 -0
- package/lib/js/ellipsoid/moon.d.ts +6 -0
- package/lib/js/ellipsoid/moon.js +6 -0
- package/lib/js/entity/Entity.d.ts +4 -2
- package/lib/js/entity/Entity.js +4 -1
- package/lib/js/entity/EntityCollection.d.ts +3 -2
- package/lib/js/entity/EntityCollection.js +26 -2
- package/lib/js/entity/GeoObject.d.ts +6 -1
- package/lib/js/entity/GeoObject.js +9 -0
- package/lib/js/entity/GeoObjectHandler.d.ts +4 -0
- package/lib/js/entity/GeoObjectHandler.js +32 -1
- package/lib/js/entity/GeometryHandler.d.ts +3 -2
- package/lib/js/entity/GeometryHandler.js +58 -0
- package/lib/js/entity/Label.d.ts +14 -0
- package/lib/js/entity/Label.js +24 -4
- package/lib/js/entity/LabelHandler.d.ts +1 -1
- package/lib/js/entity/LabelHandler.js +4 -4
- package/lib/js/entity/Polyline.js +1 -1
- package/lib/js/index.d.ts +3 -3
- package/lib/js/index.js +3 -3
- package/lib/js/layer/Bing.js +1 -0
- package/lib/js/layer/Layer.js +7 -4
- package/lib/js/layer/Vector.d.ts +12 -29
- package/lib/js/layer/Vector.js +38 -161
- package/lib/js/layer/XYZ.js +1 -1
- package/lib/js/proj/equi.d.ts +9 -0
- package/lib/js/proj/equi.js +9 -0
- package/lib/js/quadTree/{EPSG4326QuadTreeStrategy.d.ts → EPSG4326/EPSG4326QuadTreeStrategy.d.ts} +2 -2
- package/lib/js/quadTree/EPSG4326/EPSG4326QuadTreeStrategy.js +16 -0
- package/lib/js/quadTree/EntityCollectionNode.d.ts +5 -13
- package/lib/js/quadTree/EntityCollectionNode.js +18 -83
- package/lib/js/quadTree/EntityCollectionsTreeStrategy.d.ts +25 -0
- package/lib/js/quadTree/EntityCollectionsTreeStrategy.js +49 -0
- package/lib/js/quadTree/Node.js +6 -12
- package/lib/js/quadTree/QuadTreeStrategy.d.ts +11 -0
- package/lib/js/quadTree/QuadTreeStrategy.js +12 -0
- package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.d.ts +18 -0
- package/lib/js/quadTree/earth/EarthEntityCollectionNodeLonLat.js +74 -0
- package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.d.ts +19 -0
- package/lib/js/quadTree/earth/EarthEntityCollectionsTreeStrategy.js +103 -0
- package/lib/js/quadTree/earth/EarthQuadTreeStrategy.d.ts +29 -0
- package/lib/js/quadTree/{EarthQuadTreeStrategy.js → earth/EarthQuadTreeStrategy.js} +29 -6
- package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.d.ts +17 -0
- package/lib/js/quadTree/equi/EquiEntityCollectionNodeLonLat.js +70 -0
- package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.d.ts +17 -0
- package/lib/js/quadTree/equi/EquiEntityCollectionsTreeStrategy.js +75 -0
- package/lib/js/quadTree/equi/EquiQuadTreeStrategy.d.ts +19 -0
- package/lib/js/quadTree/equi/EquiQuadTreeStrategy.js +62 -0
- package/lib/js/quadTree/index.d.ts +6 -6
- package/lib/js/quadTree/index.js +6 -6
- package/lib/{@openglobus/js/quadTree → js/quadTree/wgs84}/Wgs84QuadTreeStrategy.d.ts +2 -2
- package/lib/js/quadTree/wgs84/Wgs84QuadTreeStrategy.js +15 -0
- package/lib/js/renderer/Renderer.d.ts +2 -0
- package/lib/js/renderer/Renderer.js +2 -2
- package/lib/js/scene/Planet.d.ts +0 -27
- package/lib/js/scene/Planet.js +2 -9
- package/lib/js/segment/Segment.d.ts +0 -1
- package/lib/js/segment/Segment.js +0 -3
- package/lib/js/segment/SegmentLonLat.d.ts +0 -4
- package/lib/js/segment/SegmentLonLat.js +0 -11
- package/lib/js/segment/{SegmentLonLatWgs84.d.ts → SegmentLonLatEqui.d.ts} +1 -1
- package/lib/js/segment/{SegmentLonLatWgs84.js → SegmentLonLatEqui.js} +3 -1
- package/lib/js/shaders/geoObject.js +10 -5
- package/lib/js/shaders/polyline.js +8 -6
- package/lib/js/terrain/RgbTerrain.d.ts +20 -0
- package/lib/js/terrain/RgbTerrain.js +227 -214
- package/lib/js/utils/PlainSegmentWorker.js +3 -1
- package/lib/js/webgl/Handler.js +1 -1
- package/package.json +15 -15
- package/lib/@openglobus/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
- package/lib/@openglobus/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
- package/lib/js/quadTree/EPSG4326QuadTreeStrategy.js +0 -16
- package/lib/js/quadTree/EarthQuadTreeStrategy.d.ts +0 -9
- package/lib/js/quadTree/MarsQuadTreeStrategy.d.ts +0 -11
- package/lib/js/quadTree/MarsQuadTreeStrategy.js +0 -43
- package/lib/js/quadTree/Wgs84QuadTreeStrategy.js +0 -15
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { Extent } from "../../Extent";
|
|
2
|
+
import { equi } from "../../proj/equi";
|
|
3
|
+
import { Node } from "../Node";
|
|
4
|
+
import { SegmentLonLatEqui } from "../../segment/SegmentLonLatEqui";
|
|
5
|
+
import { QuadTreeStrategy } from "../QuadTreeStrategy";
|
|
6
|
+
import { getTileCellExtent, getTileCellIndex, TILEGROUP_COMMON } from "../../segment/Segment";
|
|
7
|
+
import { EquiEntityCollectionsTreeStrategy } from "./EquiEntityCollectionsTreeStrategy";
|
|
8
|
+
export class EquiQuadTreeStrategy extends QuadTreeStrategy {
|
|
9
|
+
constructor(planet) {
|
|
10
|
+
super(planet, "Mars", equi);
|
|
11
|
+
this._westExtent = Extent.createFromArray([-180, -90, 0, 90]);
|
|
12
|
+
this._eastExtent = Extent.createFromArray([0, -90, 180, 90]);
|
|
13
|
+
this._visibleNodesWest = {};
|
|
14
|
+
this._visibleNodesEast = {};
|
|
15
|
+
}
|
|
16
|
+
init() {
|
|
17
|
+
this._quadTreeList = [
|
|
18
|
+
new Node(SegmentLonLatEqui, this.planet, 0, null, 0, this._westExtent),
|
|
19
|
+
new Node(SegmentLonLatEqui, this.planet, 0, null, 0, this._eastExtent)
|
|
20
|
+
];
|
|
21
|
+
}
|
|
22
|
+
getTileXY(lonLat, zoom) {
|
|
23
|
+
let z = zoom, x = -1, y = -1, pz = (1 << z);
|
|
24
|
+
if (lonLat.lon > 0) {
|
|
25
|
+
x = getTileCellIndex(lonLat.lon, 180 / pz, 0) + pz;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
x = getTileCellIndex(lonLat.lon, 180 / pz, -180);
|
|
29
|
+
}
|
|
30
|
+
y = getTileCellIndex(lonLat.lat, 180 / pz, 90);
|
|
31
|
+
return [x, y, z, TILEGROUP_COMMON];
|
|
32
|
+
}
|
|
33
|
+
getLonLatTileOffset(lonLat, x, y, z, gridSize) {
|
|
34
|
+
let coords = lonLat;
|
|
35
|
+
let extent = new Extent();
|
|
36
|
+
if (lonLat.lon > 0) {
|
|
37
|
+
extent = getTileCellExtent(x - (1 << z), y, z, this._eastExtent);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
extent = getTileCellExtent(x, y, z, this._westExtent);
|
|
41
|
+
}
|
|
42
|
+
let sizeImgW = extent.getWidth() / (gridSize - 1), sizeImgH = extent.getHeight() / (gridSize - 1);
|
|
43
|
+
let i = gridSize - Math.ceil((coords.lat - extent.southWest.lat) / sizeImgH) - 1, j = Math.floor((coords.lon - extent.southWest.lon) / sizeImgW);
|
|
44
|
+
return [i, j];
|
|
45
|
+
}
|
|
46
|
+
createEntitiCollectionsTreeStrategy(layer, nodeCapacity) {
|
|
47
|
+
return new EquiEntityCollectionsTreeStrategy(layer, nodeCapacity);
|
|
48
|
+
}
|
|
49
|
+
collectVisibleNode(node) {
|
|
50
|
+
let ext = node.segment.getExtent();
|
|
51
|
+
if (ext.southWest.lon < 0) {
|
|
52
|
+
this._visibleNodesWest[node.nodeId] = node;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
this._visibleNodesEast[node.nodeId] = node;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
_clearVisibleNodes() {
|
|
59
|
+
this._visibleNodesWest = {};
|
|
60
|
+
this._visibleNodesEast = {};
|
|
61
|
+
}
|
|
62
|
+
}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { EarthQuadTreeStrategy } from "./EarthQuadTreeStrategy";
|
|
2
|
-
import {
|
|
3
|
-
import { EPSG4326QuadTreeStrategy } from "./EPSG4326QuadTreeStrategy";
|
|
1
|
+
import { EarthQuadTreeStrategy } from "./earth/EarthQuadTreeStrategy";
|
|
2
|
+
import { EquiQuadTreeStrategy } from "./equi/EquiQuadTreeStrategy";
|
|
3
|
+
import { EPSG4326QuadTreeStrategy } from "./EPSG4326/EPSG4326QuadTreeStrategy";
|
|
4
4
|
import { QuadTreeStrategy } from "./QuadTreeStrategy";
|
|
5
|
-
import { Wgs84QuadTreeStrategy } from "./Wgs84QuadTreeStrategy";
|
|
5
|
+
import { Wgs84QuadTreeStrategy } from "./wgs84/Wgs84QuadTreeStrategy";
|
|
6
6
|
declare const quadTreeStrategyType: {
|
|
7
7
|
epsg4326: typeof EPSG4326QuadTreeStrategy;
|
|
8
8
|
earth: typeof EarthQuadTreeStrategy;
|
|
9
|
-
|
|
9
|
+
equi: typeof EquiQuadTreeStrategy;
|
|
10
10
|
wgs84: typeof Wgs84QuadTreeStrategy;
|
|
11
11
|
};
|
|
12
|
-
export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy,
|
|
12
|
+
export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy, EquiQuadTreeStrategy, EarthQuadTreeStrategy };
|
package/lib/js/quadTree/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { EarthQuadTreeStrategy } from "./EarthQuadTreeStrategy";
|
|
2
|
-
import {
|
|
3
|
-
import { EPSG4326QuadTreeStrategy } from "./EPSG4326QuadTreeStrategy";
|
|
1
|
+
import { EarthQuadTreeStrategy } from "./earth/EarthQuadTreeStrategy";
|
|
2
|
+
import { EquiQuadTreeStrategy } from "./equi/EquiQuadTreeStrategy";
|
|
3
|
+
import { EPSG4326QuadTreeStrategy } from "./EPSG4326/EPSG4326QuadTreeStrategy";
|
|
4
4
|
import { QuadTreeStrategy } from "./QuadTreeStrategy";
|
|
5
|
-
import { Wgs84QuadTreeStrategy } from "./Wgs84QuadTreeStrategy";
|
|
5
|
+
import { Wgs84QuadTreeStrategy } from "./wgs84/Wgs84QuadTreeStrategy";
|
|
6
6
|
const quadTreeStrategyType = {
|
|
7
7
|
epsg4326: EPSG4326QuadTreeStrategy,
|
|
8
8
|
earth: EarthQuadTreeStrategy,
|
|
9
|
-
|
|
9
|
+
equi: EquiQuadTreeStrategy,
|
|
10
10
|
wgs84: Wgs84QuadTreeStrategy
|
|
11
11
|
};
|
|
12
|
-
export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy,
|
|
12
|
+
export { quadTreeStrategyType, QuadTreeStrategy, Wgs84QuadTreeStrategy, EquiQuadTreeStrategy, EarthQuadTreeStrategy };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Planet } from "
|
|
2
|
-
import { QuadTreeStrategy } from "
|
|
1
|
+
import { Planet } from "../../scene/Planet";
|
|
2
|
+
import { QuadTreeStrategy } from "../QuadTreeStrategy";
|
|
3
3
|
export declare class Wgs84QuadTreeStrategy extends QuadTreeStrategy {
|
|
4
4
|
constructor(planet: Planet);
|
|
5
5
|
init(): void;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Extent } from "../../Extent";
|
|
2
|
+
import { EPSG4326 } from "../../proj/EPSG4326";
|
|
3
|
+
import { Node } from "../Node";
|
|
4
|
+
import { SegmentLonLatEqui } from "../../segment/SegmentLonLatEqui";
|
|
5
|
+
import { QuadTreeStrategy } from "../QuadTreeStrategy";
|
|
6
|
+
export class Wgs84QuadTreeStrategy extends QuadTreeStrategy {
|
|
7
|
+
constructor(planet) {
|
|
8
|
+
super(planet, "wgs84", EPSG4326);
|
|
9
|
+
}
|
|
10
|
+
init() {
|
|
11
|
+
this._quadTreeList = [
|
|
12
|
+
new Node(SegmentLonLatEqui, this.planet, 0, null, 0, Extent.createFromArray([-180, -90, 180, 90]))
|
|
13
|
+
];
|
|
14
|
+
}
|
|
15
|
+
}
|
|
@@ -130,8 +130,8 @@ class Renderer {
|
|
|
130
130
|
};
|
|
131
131
|
this.div = null;
|
|
132
132
|
this.handler = handler;
|
|
133
|
-
this.exposure = 3.01;
|
|
134
|
-
this.gamma = 0.47;
|
|
133
|
+
this.exposure = params.exposure || 3.01;
|
|
134
|
+
this.gamma = params.gamma || 0.47;
|
|
135
135
|
this.whitepoint = 1.0;
|
|
136
136
|
this.brightThreshold = 0.9;
|
|
137
137
|
this._renderNodesArr = [];
|
package/lib/js/scene/Planet.d.ts
CHANGED
|
@@ -184,33 +184,6 @@ export declare class Planet extends RenderNode {
|
|
|
184
184
|
_renderedNodesInFrustum: Node[][];
|
|
185
185
|
_fadingNodes: Map<number, Node>;
|
|
186
186
|
_fadingNodesInFrustum: Node[][];
|
|
187
|
-
/**
|
|
188
|
-
* Current visible mercator segments tree nodes array.
|
|
189
|
-
* @public
|
|
190
|
-
* @type {Node}
|
|
191
|
-
*
|
|
192
|
-
* @todo
|
|
193
|
-
* _visibleNodes, _visibleNodesNorth and _visibleNodesSouth should
|
|
194
|
-
* be replaced to strategy and Vector layer reworked in collecting methods.
|
|
195
|
-
* _visibleNodes, and _visibleNodesNorth and South are used in Vector
|
|
196
|
-
* layer only, for entity terrain collision
|
|
197
|
-
*
|
|
198
|
-
*/
|
|
199
|
-
_visibleNodes: Record<number, Node>;
|
|
200
|
-
/**
|
|
201
|
-
* Current visible north pole nodes tree nodes array.
|
|
202
|
-
* @public
|
|
203
|
-
* @type {Node}
|
|
204
|
-
* @todo
|
|
205
|
-
*/
|
|
206
|
-
_visibleNodesNorth: Record<number, Node>;
|
|
207
|
-
/**
|
|
208
|
-
* Current visible south pole nodes tree nodes array.
|
|
209
|
-
* @public
|
|
210
|
-
* @type {Node}
|
|
211
|
-
* @todo
|
|
212
|
-
*/
|
|
213
|
-
_visibleNodesSouth: Record<number, Node>;
|
|
214
187
|
/**
|
|
215
188
|
* Layers activity lock.
|
|
216
189
|
* @public
|
package/lib/js/scene/Planet.js
CHANGED
|
@@ -6,7 +6,7 @@ import { Atmosphere } from "../control/Atmosphere";
|
|
|
6
6
|
import { createColorRGB } from "../utils/shared";
|
|
7
7
|
import { createEvents } from "../Events";
|
|
8
8
|
import { decodeFloatFromRGBAArr } from "../math/coder";
|
|
9
|
-
import { EarthQuadTreeStrategy } from "../quadTree/EarthQuadTreeStrategy";
|
|
9
|
+
import { EarthQuadTreeStrategy } from "../quadTree/earth/EarthQuadTreeStrategy";
|
|
10
10
|
import { Extent } from "../Extent";
|
|
11
11
|
import { Geoid } from "../terrain/Geoid";
|
|
12
12
|
import { GeoImageCreator } from "../utils/GeoImageCreator";
|
|
@@ -108,7 +108,7 @@ export class Planet extends RenderNode {
|
|
|
108
108
|
this.transitionTime = 580;
|
|
109
109
|
this.ellipsoid = options.ellipsoid || wgs84;
|
|
110
110
|
this.lightEnabled = true;
|
|
111
|
-
this._planetRadius2 = this.ellipsoid.getPolarSize() * this.ellipsoid.getPolarSize();
|
|
111
|
+
this._planetRadius2 = (this.ellipsoid.getPolarSize() - 10000.0) * (this.ellipsoid.getPolarSize() - 10000.0);
|
|
112
112
|
this._layers = [];
|
|
113
113
|
this._updateLayer = false;
|
|
114
114
|
this.visibleTileLayers = [];
|
|
@@ -142,9 +142,6 @@ export class Planet extends RenderNode {
|
|
|
142
142
|
this._renderedNodesInFrustum = [];
|
|
143
143
|
this._fadingNodes = new Map;
|
|
144
144
|
this._fadingNodesInFrustum = [];
|
|
145
|
-
this._visibleNodes = {};
|
|
146
|
-
this._visibleNodesNorth = {};
|
|
147
|
-
this._visibleNodesSouth = {};
|
|
148
145
|
this.layerLock = new Lock();
|
|
149
146
|
this.terrainLock = new Lock();
|
|
150
147
|
this._heightFactor = 1.0;
|
|
@@ -798,10 +795,6 @@ export class Planet extends RenderNode {
|
|
|
798
795
|
this._viewExtent.southWest.set(180, 180);
|
|
799
796
|
this._viewExtent.northEast.set(-180, -180);
|
|
800
797
|
// todo: replace to camera
|
|
801
|
-
this._visibleNodes = {};
|
|
802
|
-
this._visibleNodesNorth = {};
|
|
803
|
-
this._visibleNodesSouth = {};
|
|
804
|
-
// todo: replace to camera
|
|
805
798
|
this.minCurrZoom = math.MAX;
|
|
806
799
|
this.maxCurrZoom = math.MIN;
|
|
807
800
|
this.quadTreeStrategy.collectRenderNodes();
|
|
@@ -277,7 +277,6 @@ declare class Segment {
|
|
|
277
277
|
colorPickingRendering(sh: Program, layerSlice: Layer[], sliceIndex: number, defaultTexture?: WebGLTextureExt | null, isOverlay?: boolean): void;
|
|
278
278
|
depthRendering(sh: Program, layerSlice: Layer[]): void;
|
|
279
279
|
protected _getIndexBuffer(): WebGLBufferExt;
|
|
280
|
-
_collectVisibleNodes(): void;
|
|
281
280
|
layerOverlap(layer: Layer): boolean;
|
|
282
281
|
getDefaultTexture(): WebGLTextureExt | null;
|
|
283
282
|
getExtentLonLat(): Extent;
|
|
@@ -1174,9 +1174,6 @@ class Segment {
|
|
|
1174
1174
|
}
|
|
1175
1175
|
return cache.buffer;
|
|
1176
1176
|
}
|
|
1177
|
-
_collectVisibleNodes() {
|
|
1178
|
-
this.planet._visibleNodes[this.node.nodeId] = this.node;
|
|
1179
|
-
}
|
|
1180
1177
|
layerOverlap(layer) {
|
|
1181
1178
|
return this._extent.overlaps(layer._extentMerc);
|
|
1182
1179
|
}
|
|
@@ -25,10 +25,6 @@ declare class SegmentLonLat extends Segment {
|
|
|
25
25
|
protected _assignTileYIndexes(extent: Extent): void;
|
|
26
26
|
protected _projToDeg(lon: number, lat: number): LonLat;
|
|
27
27
|
protected _assignGlobalTextureCoordinates(): void;
|
|
28
|
-
/**
|
|
29
|
-
* @todo: replace to the strategy
|
|
30
|
-
*/
|
|
31
|
-
_collectVisibleNodes(): void;
|
|
32
28
|
/**
|
|
33
29
|
* @param layer
|
|
34
30
|
* @protected
|
|
@@ -80,17 +80,6 @@ class SegmentLonLat extends Segment {
|
|
|
80
80
|
this._globalTextureCoordinates[2] = (e.northEast.lon + 180.0) / 360.0;
|
|
81
81
|
this._globalTextureCoordinates[3] = (90 - e.southWest.lat) / 180.0;
|
|
82
82
|
}
|
|
83
|
-
/**
|
|
84
|
-
* @todo: replace to the strategy
|
|
85
|
-
*/
|
|
86
|
-
_collectVisibleNodes() {
|
|
87
|
-
if (this._isNorth) {
|
|
88
|
-
this.planet._visibleNodesNorth[this.node.nodeId] = this.node;
|
|
89
|
-
}
|
|
90
|
-
else {
|
|
91
|
-
this.planet._visibleNodesSouth[this.node.nodeId] = this.node;
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
83
|
/**
|
|
95
84
|
* @param layer
|
|
96
85
|
* @protected
|
|
@@ -2,7 +2,7 @@ import { Extent } from "../Extent";
|
|
|
2
2
|
import { Node } from "../quadTree/Node";
|
|
3
3
|
import { Planet } from "../scene/Planet";
|
|
4
4
|
import { SegmentLonLat } from "./SegmentLonLat";
|
|
5
|
-
export declare class
|
|
5
|
+
export declare class SegmentLonLatEqui extends SegmentLonLat {
|
|
6
6
|
constructor(node: Node, planet: Planet, tileZoom: number, extent: Extent);
|
|
7
7
|
protected _getMaxZoom(): number;
|
|
8
8
|
protected _assignTileYIndexes(extent: Extent): void;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { SegmentLonLat } from "./SegmentLonLat";
|
|
2
2
|
import { getTileCellIndex, TILEGROUP_COMMON } from "./Segment";
|
|
3
|
-
|
|
3
|
+
import { equi } from "../proj/equi";
|
|
4
|
+
export class SegmentLonLatEqui extends SegmentLonLat {
|
|
4
5
|
constructor(node, planet, tileZoom, extent) {
|
|
5
6
|
super(node, planet, tileZoom, extent);
|
|
7
|
+
this._projection = equi;
|
|
6
8
|
this.isPole = false;
|
|
7
9
|
this._tileGroup = TILEGROUP_COMMON;
|
|
8
10
|
}
|
|
@@ -24,6 +24,7 @@ export const geo_object = () => new Program("geo_object", {
|
|
|
24
24
|
aPositionLow: { type: "vec3", divisor: 1 },
|
|
25
25
|
aColor: { type: "vec4", divisor: 1 },
|
|
26
26
|
aScale: { type: "vec3", divisor: 1 },
|
|
27
|
+
aTranslate: { type: "vec3", divisor: 1 },
|
|
27
28
|
aDispose: { type: "float", divisor: 1 },
|
|
28
29
|
qRot: { type: "vec4", divisor: 1 }
|
|
29
30
|
},
|
|
@@ -35,6 +36,7 @@ export const geo_object = () => new Program("geo_object", {
|
|
|
35
36
|
attribute vec3 aPositionLow;
|
|
36
37
|
attribute vec4 aColor;
|
|
37
38
|
attribute vec3 aScale;
|
|
39
|
+
attribute vec3 aTranslate;
|
|
38
40
|
attribute float aDispose;
|
|
39
41
|
attribute float aUseTexture;
|
|
40
42
|
attribute vec2 aTexCoord;
|
|
@@ -91,7 +93,7 @@ export const geo_object = () => new Program("geo_object", {
|
|
|
91
93
|
// use scaleByDistance: [1.0, 1.0, 1.0] for real sized objects
|
|
92
94
|
float scd = uScaleByDistance[2] * clamp(lookLength, uScaleByDistance[0], uScaleByDistance[1]) / uScaleByDistance[0];
|
|
93
95
|
|
|
94
|
-
vec3 vert = qRotate(qRot, (aVertexPosition * aScale))
|
|
96
|
+
vec3 vert = qRotate(qRot, scd * (aVertexPosition * aScale + aTranslate));
|
|
95
97
|
|
|
96
98
|
vert += lowDiff;
|
|
97
99
|
|
|
@@ -146,7 +148,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
|
|
|
146
148
|
uScaleByDistance: "vec3",
|
|
147
149
|
eyePositionHigh: "vec3",
|
|
148
150
|
eyePositionLow: "vec3",
|
|
149
|
-
pickingScale: "
|
|
151
|
+
pickingScale: "vec3"
|
|
150
152
|
},
|
|
151
153
|
attributes: {
|
|
152
154
|
aVertexPosition: "vec3",
|
|
@@ -154,6 +156,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
|
|
|
154
156
|
aPositionLow: { type: "vec3", divisor: 1 },
|
|
155
157
|
aPickingColor: { type: "vec3", divisor: 1 },
|
|
156
158
|
aScale: { type: "vec3", divisor: 1 },
|
|
159
|
+
aTranslate: { type: "vec3", divisor: 1 },
|
|
157
160
|
aDispose: { type: "float", divisor: 1 },
|
|
158
161
|
qRot: { type: "vec4", divisor: 1 }
|
|
159
162
|
},
|
|
@@ -164,6 +167,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
|
|
|
164
167
|
attribute vec3 aPositionLow;
|
|
165
168
|
attribute vec3 aPickingColor;
|
|
166
169
|
attribute vec3 aScale;
|
|
170
|
+
attribute vec3 aTranslate;
|
|
167
171
|
attribute float aDispose;
|
|
168
172
|
attribute vec4 qRot;
|
|
169
173
|
|
|
@@ -172,7 +176,7 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
|
|
|
172
176
|
uniform vec3 uScaleByDistance;
|
|
173
177
|
uniform mat4 projectionMatrix;
|
|
174
178
|
uniform mat4 viewMatrix;
|
|
175
|
-
uniform
|
|
179
|
+
uniform vec3 pickingScale;
|
|
176
180
|
|
|
177
181
|
varying vec3 vColor;
|
|
178
182
|
|
|
@@ -210,9 +214,10 @@ export const geo_object_picking = () => new Program("geo_object_picking", {
|
|
|
210
214
|
// @hack
|
|
211
215
|
// pickingScale replace to this line, because when it s
|
|
212
216
|
// tays in the vert above it affects on Mac Safari jitter
|
|
213
|
-
float scd =
|
|
217
|
+
float scd = uScaleByDistance[2] * clamp(lookLength, uScaleByDistance[0], uScaleByDistance[1]) / uScaleByDistance[0];
|
|
214
218
|
|
|
215
|
-
vec3 vert = qRotate(qRot, (aVertexPosition * aScale)) * scd;
|
|
219
|
+
//vec3 vert = qRotate(qRot, (aVertexPosition * aScale + aTranslate) * pickingScale) * scd;
|
|
220
|
+
vec3 vert = qRotate(qRot, scd * pickingScale * (aVertexPosition * aScale + aTranslate));
|
|
216
221
|
|
|
217
222
|
vert += lowDiff;
|
|
218
223
|
|
|
@@ -7,7 +7,7 @@ export function polyline_screen() {
|
|
|
7
7
|
view: "mat4",
|
|
8
8
|
eyePositionHigh: "vec3",
|
|
9
9
|
eyePositionLow: "vec3",
|
|
10
|
-
uFloatParams: "vec2",
|
|
10
|
+
//uFloatParams: "vec2",
|
|
11
11
|
thickness: "float",
|
|
12
12
|
opacity: "float",
|
|
13
13
|
depthOffset: "float"
|
|
@@ -161,14 +161,15 @@ export function polyline_screen() {
|
|
|
161
161
|
gl_Position = vec4((2.0 * m / viewport - 1.0) * dCurrent.w, dCurrent.z + depthOffset, dCurrent.w);
|
|
162
162
|
}`,
|
|
163
163
|
fragmentShader: `precision highp float;
|
|
164
|
-
uniform vec2 uFloatParams;
|
|
164
|
+
//uniform vec2 uFloatParams;
|
|
165
165
|
varying vec3 uCamPos;
|
|
166
166
|
varying vec4 vColor;
|
|
167
167
|
varying vec3 vPos;
|
|
168
168
|
void main() {
|
|
169
169
|
vec3 look = vPos - uCamPos;
|
|
170
170
|
float lookLength = length(look);
|
|
171
|
-
float a = vColor.a * step(lookLength, sqrt(dot(uCamPos,uCamPos) - uFloatParams[0]) + sqrt(dot(vPos,vPos) - uFloatParams[0]));
|
|
171
|
+
//float a = vColor.a * step(lookLength, sqrt(dot(uCamPos,uCamPos) - uFloatParams[0]) + sqrt(dot(vPos,vPos) - uFloatParams[0]));
|
|
172
|
+
float a = vColor.a;
|
|
172
173
|
gl_FragColor = vec4(vColor.rgb, a);
|
|
173
174
|
}`
|
|
174
175
|
});
|
|
@@ -181,7 +182,7 @@ export function polyline_picking() {
|
|
|
181
182
|
view: "mat4",
|
|
182
183
|
eyePositionHigh: "vec3",
|
|
183
184
|
eyePositionLow: "vec3",
|
|
184
|
-
uFloatParams: "vec2",
|
|
185
|
+
//uFloatParams: "vec2",
|
|
185
186
|
color: "vec4",
|
|
186
187
|
thickness: "float",
|
|
187
188
|
depthOffset: "float"
|
|
@@ -331,14 +332,15 @@ export function polyline_picking() {
|
|
|
331
332
|
gl_Position = vec4((2.0 * m / viewport - 1.0) * dCurrent.w, dCurrent.z + depthOffset, dCurrent.w);
|
|
332
333
|
}`,
|
|
333
334
|
fragmentShader: `precision highp float;
|
|
334
|
-
uniform vec2 uFloatParams;
|
|
335
|
+
//uniform vec2 uFloatParams;
|
|
335
336
|
varying vec3 uCamPos;
|
|
336
337
|
varying vec4 vColor;
|
|
337
338
|
varying vec3 vPos;
|
|
338
339
|
void main() {
|
|
339
340
|
vec3 look = vPos - uCamPos;
|
|
340
341
|
float lookLength = length(look);
|
|
341
|
-
float a = vColor.a * step(lookLength, sqrt(dot(uCamPos,uCamPos) - uFloatParams[0]) + sqrt(dot(vPos,vPos) - uFloatParams[0]));
|
|
342
|
+
//float a = vColor.a * step(lookLength, sqrt(dot(uCamPos,uCamPos) - uFloatParams[0]) + sqrt(dot(vPos,vPos) - uFloatParams[0]));
|
|
343
|
+
float a = vColor.a;
|
|
342
344
|
gl_FragColor = vec4(vColor.rgb, a);
|
|
343
345
|
}`
|
|
344
346
|
});
|
|
@@ -7,16 +7,36 @@ export interface IRgbTerrainParams extends IGlobusTerrainParams {
|
|
|
7
7
|
equalizeNormals?: boolean;
|
|
8
8
|
key?: string;
|
|
9
9
|
imageSize?: number;
|
|
10
|
+
minHeight?: number;
|
|
11
|
+
resolution?: number;
|
|
10
12
|
}
|
|
13
|
+
/**
|
|
14
|
+
* @class
|
|
15
|
+
* @extends {GlobusTerrain}
|
|
16
|
+
* @param {string} [name=""] - Terrain provider name.
|
|
17
|
+
* @param {IRgbTerrainParams} [options]:
|
|
18
|
+
* @param {boolean} [equalizeNormals=true] - Make normal equalization on the edges of the tiles.
|
|
19
|
+
* @param {string} [key=""] - API key.
|
|
20
|
+
* @param {number} [imageSize=256] - Image size.
|
|
21
|
+
* @param {number} [minHeight=-10000] - Minimal height for rgb to height converter.
|
|
22
|
+
* @param {number} [resolution=0.1] - Height converter resolution.
|
|
23
|
+
*/
|
|
11
24
|
declare class RgbTerrain extends GlobusTerrain {
|
|
12
25
|
protected _imageSize: number;
|
|
13
26
|
protected _ctx: CanvasRenderingContext2D;
|
|
14
27
|
protected _imageDataCache: Record<string, Uint8ClampedArray>;
|
|
28
|
+
protected _minHeight: number;
|
|
29
|
+
protected _resolution: number;
|
|
15
30
|
constructor(name: string | null, options?: IRgbTerrainParams);
|
|
16
31
|
static checkNoDataValue(noDataValues: number[] | TypedArray, value: number): boolean;
|
|
32
|
+
rgb2Height(r: number, g: number, b: number): number;
|
|
17
33
|
isBlur(segment: Segment): boolean;
|
|
18
34
|
protected _createTemporalCanvas(size: number): CanvasRenderingContext2D;
|
|
19
35
|
protected _createHeights(data: HTMLImageElement | ImageBitmap, segment: Segment | null, tileGroup: number, tileX: number, tileY: number, tileZoom: number, extent: Extent, preventChildren: boolean): TypedArray | number[];
|
|
20
36
|
getHeightAsync(lonLat: LonLat, callback: (h: number) => void, zoom?: number): boolean;
|
|
37
|
+
extractElevationSimple(rgbaData: number[] | TypedArray, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentOffsetX: number, availableParentOffsetY: number, availableZoomDiff: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray, heightFactor: number | undefined, imageSize: number): void;
|
|
38
|
+
extractElevationTilesRgbNonPowerOfTwo(rgbaData: number[] | TypedArray, outCurrenElevations: number[] | TypedArray, heightFactor?: number): void;
|
|
39
|
+
extractElevationTilesRgb(rgbaData: number[] | TypedArray, heightFactor: number, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentTileX: number, availableParentTileY: number, availableParentTileZoom: number, currentTileX: number, currentTileY: number, currentTileZoom: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray, outChildrenElevations: number[][][] | TypedArray[][]): void;
|
|
40
|
+
extractElevationTilesRgbNoChildren(rgbaData: number[] | TypedArray, heightFactor: number, noDataValues: number[] | TypedArray, availableParentData: (TypedArray | number[] | null) | undefined, availableParentTileX: number, availableParentTileY: number, availableParentTileZoom: number, currentTileX: number, currentTileY: number, currentTileZoom: number, skipPositiveHeights: boolean, outCurrenElevations: number[] | TypedArray): void;
|
|
21
41
|
}
|
|
22
42
|
export { RgbTerrain };
|