itowns 2.42.1-next.9 → 2.43.1-next.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/changelog.md +90 -0
- package/dist/debug.js +1 -1
- package/dist/debug.js.map +1 -1
- package/dist/itowns.js +1 -1
- package/dist/itowns.js.map +1 -1
- package/dist/itowns_widgets.js +1 -1
- package/dist/itowns_widgets.js.map +1 -1
- package/examples/{.eslintrc.js → .eslintrc.cjs} +1 -1
- package/examples/effects_stereo.html +2 -2
- package/examples/misc_collada.html +2 -2
- package/examples/source_stream_wfs_25d.html +11 -11
- package/examples/source_stream_wfs_3d.html +1 -1
- package/examples/view_25d_map.html +2 -2
- package/examples/view_3d_map.html +2 -2
- package/examples/view_3d_map_webxr.html +1 -1
- package/examples/view_3d_mns_map.html +2 -2
- package/examples/view_immersive.html +1 -1
- package/examples/view_multi_25d.html +2 -2
- package/examples/widgets_searchbar.html +2 -2
- package/lib/Controls/FirstPersonControls.js +5 -12
- package/lib/Controls/FlyControls.js +4 -13
- package/lib/Controls/GlobeControls.js +33 -43
- package/lib/Controls/PlanarControls.js +9 -20
- package/lib/Controls/StateControl.js +2 -11
- package/lib/Controls/StreetControls.js +14 -24
- package/lib/Converter/Feature2Mesh.js +28 -38
- package/lib/Converter/Feature2Texture.js +15 -25
- package/lib/Converter/convertToTile.js +16 -26
- package/lib/Converter/textureConverter.js +9 -19
- package/lib/Core/3DTiles/C3DTBatchTable.js +5 -13
- package/lib/Core/3DTiles/C3DTBatchTableHierarchyExtension.js +1 -8
- package/lib/Core/3DTiles/C3DTBoundingVolume.js +17 -27
- package/lib/Core/3DTiles/C3DTExtensions.js +1 -8
- package/lib/Core/3DTiles/C3DTFeature.js +3 -10
- package/lib/Core/3DTiles/C3DTilesEnums.js +3 -11
- package/lib/Core/3DTiles/C3DTileset.js +7 -16
- package/lib/Core/3DTiles/utils/BinaryPropertyAccessor.js +5 -11
- package/lib/Core/AnimationPlayer.js +2 -11
- package/lib/Core/Deprecated/Undeprecator.js +9 -20
- package/lib/Core/EntwinePointTileNode.js +6 -16
- package/lib/Core/Feature.js +16 -30
- package/lib/Core/Geographic/CoordStars.js +3 -12
- package/lib/Core/Geographic/Coordinates.js +12 -22
- package/lib/Core/Geographic/Crs.js +7 -15
- package/lib/Core/Geographic/Extent.js +36 -47
- package/lib/Core/Geographic/GeoidGrid.js +6 -16
- package/lib/Core/Label.js +7 -17
- package/lib/Core/MainLoop.js +7 -16
- package/lib/Core/Math/Ellipsoid.js +6 -17
- package/lib/Core/Picking.js +10 -20
- package/lib/Core/PointCloudNode.js +2 -11
- package/lib/Core/PotreeNode.js +4 -13
- package/lib/Core/Prefab/Globe/Atmosphere.js +17 -26
- package/lib/Core/Prefab/Globe/BuilderEllipsoidTile.js +6 -16
- package/lib/Core/Prefab/Globe/GlobeLayer.js +19 -28
- package/lib/Core/Prefab/Globe/SkyShader.js +2 -11
- package/lib/Core/Prefab/GlobeView.js +27 -45
- package/lib/Core/Prefab/Planar/PlanarLayer.js +11 -20
- package/lib/Core/Prefab/Planar/PlanarTileBuilder.js +6 -16
- package/lib/Core/Prefab/PlanarView.js +10 -25
- package/lib/Core/Prefab/TileBuilder.js +13 -22
- package/lib/Core/Prefab/computeBufferTileGeometry.js +12 -16
- package/lib/Core/Scheduler/Cache.js +2 -10
- package/lib/Core/Scheduler/CancelledCommandException.js +1 -8
- package/lib/Core/Scheduler/Scheduler.js +15 -23
- package/lib/Core/Style.js +24 -38
- package/lib/Core/System/Capabilities.js +2 -13
- package/lib/Core/TileGeometry.js +13 -15
- package/lib/Core/TileMesh.js +6 -15
- package/lib/Core/View.js +43 -58
- package/lib/Layer/C3DTilesLayer.js +29 -41
- package/lib/Layer/ColorLayer.js +10 -16
- package/lib/Layer/ElevationLayer.js +7 -14
- package/lib/Layer/EntwinePointTileLayer.js +9 -18
- package/lib/Layer/FeatureGeometryLayer.js +9 -16
- package/lib/Layer/GeoidLayer.js +6 -15
- package/lib/Layer/GeometryLayer.js +11 -17
- package/lib/Layer/InfoLayer.js +5 -14
- package/lib/Layer/LabelLayer.js +22 -32
- package/lib/Layer/Layer.js +16 -26
- package/lib/Layer/LayerUpdateState.js +1 -8
- package/lib/Layer/LayerUpdateStrategy.js +7 -18
- package/lib/Layer/OrientedImageLayer.js +15 -25
- package/lib/Layer/PointCloudLayer.js +9 -19
- package/lib/Layer/PotreeLayer.js +8 -18
- package/lib/Layer/RasterLayer.js +9 -17
- package/lib/Layer/ReferencingLayerProperties.js +1 -8
- package/lib/Layer/TiledGeometryLayer.js +37 -33
- package/lib/Main.js +87 -708
- package/lib/MainBundle.js +4 -34
- package/lib/Parser/B3dmParser.js +80 -131
- package/lib/Parser/CameraCalibrationParser.js +5 -14
- package/lib/Parser/GDFParser.js +11 -22
- package/lib/Parser/GLTFParser.js +88 -0
- package/lib/Parser/GTXParser.js +9 -21
- package/lib/Parser/GeoJsonParser.js +14 -22
- package/lib/Parser/GpxParser.js +7 -14
- package/lib/Parser/ISGParser.js +19 -28
- package/lib/Parser/KMLParser.js +7 -14
- package/lib/Parser/LASLoader.js +20 -21
- package/lib/Parser/LASParser.js +6 -15
- package/lib/Parser/MapBoxUrlParser.js +2 -9
- package/lib/Parser/PntsParser.js +4 -14
- package/lib/Parser/PotreeBinParser.js +8 -16
- package/lib/Parser/PotreeCinParser.js +3 -12
- package/lib/Parser/ShapefileParser.js +11 -18
- package/lib/Parser/VectorTileParser.js +23 -31
- package/lib/Parser/XbilParser.js +5 -13
- package/lib/Parser/deprecated/LegacyGLTFLoader.js +2 -12
- package/lib/Process/3dTilesProcessing.js +14 -27
- package/lib/Process/FeatureProcessing.js +14 -22
- package/lib/Process/LayeredMaterialNodeProcessing.js +14 -26
- package/lib/Process/ObjectRemovalHelper.js +2 -9
- package/lib/Process/handlerNodeError.js +1 -7
- package/lib/Provider/3dTilesProvider.js +32 -29
- package/lib/Provider/DataSourceProvider.js +2 -9
- package/lib/Provider/Fetcher.js +40 -22
- package/lib/Provider/PointCloudProvider.js +7 -19
- package/lib/Provider/TileProvider.js +4 -12
- package/lib/Provider/URLBuilder.js +4 -12
- package/lib/Renderer/Camera.js +7 -17
- package/lib/Renderer/Color.js +3 -11
- package/lib/Renderer/ColorLayersOrdering.js +14 -22
- package/lib/Renderer/CommonMaterial.js +3 -12
- package/lib/Renderer/Label2DRenderer.js +5 -16
- package/lib/Renderer/LayeredMaterial.js +33 -53
- package/lib/Renderer/OBB.js +12 -21
- package/lib/Renderer/OrientedImageCamera.js +2 -11
- package/lib/Renderer/OrientedImageMaterial.js +17 -35
- package/lib/Renderer/PointsMaterial.js +37 -60
- package/lib/Renderer/RasterTile.js +16 -29
- package/lib/Renderer/RenderMode.js +2 -9
- package/lib/Renderer/Shader/ShaderChunk.js +5 -23
- package/lib/Renderer/Shader/ShaderUtils.js +2 -9
- package/lib/Renderer/SphereHelper.js +2 -11
- package/lib/Renderer/WebXR.js +2 -11
- package/lib/Renderer/c3DEngine.js +20 -53
- package/lib/Source/C3DTilesGoogleSource.js +76 -0
- package/lib/Source/C3DTilesIonSource.js +6 -13
- package/lib/Source/C3DTilesSource.js +5 -12
- package/lib/Source/EntwinePointTileSource.js +12 -19
- package/lib/Source/FileSource.js +7 -14
- package/lib/Source/OrientedImageSource.js +6 -14
- package/lib/Source/PotreeSource.js +9 -16
- package/lib/Source/Source.js +26 -39
- package/lib/Source/TMSSource.js +11 -22
- package/lib/Source/VectorTilesSource.js +75 -34
- package/lib/Source/WFSSource.js +7 -14
- package/lib/Source/WMSSource.js +5 -12
- package/lib/Source/WMTSSource.js +3 -10
- package/lib/ThreeExtended/capabilities/WebGL.js +1 -8
- package/lib/ThreeExtended/libs/ktx-parse.module.js +2 -256
- package/lib/ThreeExtended/libs/zstddec.module.js +2 -8
- package/lib/ThreeExtended/loaders/DDSLoader.js +10 -16
- package/lib/ThreeExtended/loaders/DRACOLoader.js +14 -19
- package/lib/ThreeExtended/loaders/GLTFLoader.js +124 -129
- package/lib/ThreeExtended/loaders/KTX2Loader.js +73 -78
- package/lib/ThreeExtended/utils/BufferGeometryUtils.js +40 -59
- package/lib/ThreeExtended/utils/WorkerPool.js +2 -9
- package/lib/Utils/CameraUtils.js +32 -44
- package/lib/Utils/DEMUtils.js +8 -19
- package/lib/Utils/FeaturesUtils.js +8 -16
- package/lib/Utils/Gradients.js +3 -12
- package/lib/Utils/OrientationUtils.js +8 -18
- package/lib/Utils/ThreeUtils.js +2 -9
- package/lib/Utils/gui/C3DTilesStyle.js +7 -15
- package/lib/Utils/gui/Main.js +7 -48
- package/lib/Utils/gui/Minimap.js +12 -20
- package/lib/Utils/gui/Navigation.js +6 -14
- package/lib/Utils/gui/Scale.js +11 -19
- package/lib/Utils/gui/Searchbar.js +5 -13
- package/lib/Utils/gui/Widget.js +1 -8
- package/lib/Utils/placeObjectOnGround.js +13 -23
- package/package.json +13 -8
package/lib/Core/View.js
CHANGED
|
@@ -1,29 +1,20 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
var _FeaturesUtils = _interopRequireDefault(require("../Utils/FeaturesUtils"));
|
|
19
|
-
var _LayeredMaterial = require("../Renderer/LayeredMaterial");
|
|
20
|
-
var _Scheduler = _interopRequireDefault(require("./Scheduler/Scheduler"));
|
|
21
|
-
var _Picking = _interopRequireDefault(require("./Picking"));
|
|
22
|
-
var _LabelLayer = _interopRequireDefault(require("../Layer/LabelLayer"));
|
|
23
|
-
var _ObjectRemovalHelper = _interopRequireDefault(require("../Process/ObjectRemovalHelper"));
|
|
24
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
25
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
26
|
-
const VIEW_EVENTS = {
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import Camera from "../Renderer/Camera.js";
|
|
3
|
+
import initializeWebXR from "../Renderer/WebXR.js";
|
|
4
|
+
import MainLoop, { MAIN_LOOP_EVENTS, RENDERING_PAUSED } from "./MainLoop.js";
|
|
5
|
+
import Capabilities from "./System/Capabilities.js";
|
|
6
|
+
import { COLOR_LAYERS_ORDER_CHANGED } from "../Renderer/ColorLayersOrdering.js";
|
|
7
|
+
import c3DEngine from "../Renderer/c3DEngine.js";
|
|
8
|
+
import RenderMode from "../Renderer/RenderMode.js";
|
|
9
|
+
import CRS from "./Geographic/Crs.js";
|
|
10
|
+
import Coordinates from "./Geographic/Coordinates.js";
|
|
11
|
+
import FeaturesUtils from "../Utils/FeaturesUtils.js";
|
|
12
|
+
import { getMaxColorSamplerUnitsCount } from "../Renderer/LayeredMaterial.js";
|
|
13
|
+
import Scheduler from "./Scheduler/Scheduler.js";
|
|
14
|
+
import Picking from "./Picking.js";
|
|
15
|
+
import LabelLayer from "../Layer/LabelLayer.js";
|
|
16
|
+
import ObjectRemovalHelper from "../Process/ObjectRemovalHelper.js";
|
|
17
|
+
export const VIEW_EVENTS = {
|
|
27
18
|
/**
|
|
28
19
|
* Fires when all the layers of the view are considered initialized.
|
|
29
20
|
* Initialized in this context means: all layers are ready to be
|
|
@@ -38,7 +29,7 @@ const VIEW_EVENTS = {
|
|
|
38
29
|
LAYER_REMOVED: 'layer-removed',
|
|
39
30
|
LAYER_ADDED: 'layer-added',
|
|
40
31
|
INITIALIZED: 'initialized',
|
|
41
|
-
COLOR_LAYERS_ORDER_CHANGED
|
|
32
|
+
COLOR_LAYERS_ORDER_CHANGED,
|
|
42
33
|
CAMERA_MOVED: 'camera-moved'
|
|
43
34
|
};
|
|
44
35
|
|
|
@@ -48,7 +39,7 @@ const VIEW_EVENTS = {
|
|
|
48
39
|
* @event View#dblclick-right
|
|
49
40
|
* @property {string} type dblclick-right
|
|
50
41
|
*/
|
|
51
|
-
|
|
42
|
+
|
|
52
43
|
function _preprocessLayer(view, layer, parentLayer) {
|
|
53
44
|
const source = layer.source;
|
|
54
45
|
if (parentLayer && !layer.extent) {
|
|
@@ -61,7 +52,7 @@ function _preprocessLayer(view, layer, parentLayer) {
|
|
|
61
52
|
// Find crs projection layer, this is projection destination
|
|
62
53
|
layer.crs = view.referenceCrs;
|
|
63
54
|
} else if (!layer.crs) {
|
|
64
|
-
if (parentLayer && parentLayer.tileMatrixSets && parentLayer.tileMatrixSets.includes(
|
|
55
|
+
if (parentLayer && parentLayer.tileMatrixSets && parentLayer.tileMatrixSets.includes(CRS.formatToTms(source.crs))) {
|
|
65
56
|
layer.crs = source.crs;
|
|
66
57
|
} else {
|
|
67
58
|
layer.crs = parentLayer && parentLayer.extent.crs;
|
|
@@ -78,7 +69,7 @@ function _preprocessLayer(view, layer, parentLayer) {
|
|
|
78
69
|
layer.buildExtent = true;
|
|
79
70
|
// label layer needs 3d data structure.
|
|
80
71
|
layer.structure = '3d';
|
|
81
|
-
const labelLayer = new
|
|
72
|
+
const labelLayer = new LabelLayer(`${layer.id}-label`, {
|
|
82
73
|
source,
|
|
83
74
|
style: layer.style,
|
|
84
75
|
zoom: layer.zoom,
|
|
@@ -111,7 +102,7 @@ const screen = new THREE.Vector2();
|
|
|
111
102
|
const ray = new THREE.Ray();
|
|
112
103
|
const direction = new THREE.Vector3();
|
|
113
104
|
const positionVector = new THREE.Vector3();
|
|
114
|
-
const coordinates = new
|
|
105
|
+
const coordinates = new Coordinates('EPSG:4326');
|
|
115
106
|
const viewers = [];
|
|
116
107
|
// Size of the camera frustrum, in meters
|
|
117
108
|
let screenMeters;
|
|
@@ -151,7 +142,6 @@ class View extends THREE.EventDispatcher {
|
|
|
151
142
|
* a default one will be constructed. In this case, if options.renderer is an object, it will be used to
|
|
152
143
|
* configure the renderer (see {@link c3DEngine}. If not present, a new <canvas> will be created and
|
|
153
144
|
* added to viewerDiv (mutually exclusive with mainLoop)
|
|
154
|
-
* @param {boolean} [options.renderer.isWebGL2=true] - enable webgl 2.0 for THREE.js.
|
|
155
145
|
* @param {boolean|Object} [options.webXR=false] - enable webxr button to switch on VR visualization.
|
|
156
146
|
* @param {number} [options.webXR.scale=1.0] - apply webxr scale tranformation.
|
|
157
147
|
* @param {?Scene} [options.scene3D] - [THREE.Scene](https://threejs.org/docs/#api/en/scenes/Scene) instance to use, otherwise a default one will be constructed
|
|
@@ -174,16 +164,16 @@ class View extends THREE.EventDispatcher {
|
|
|
174
164
|
// - an actual renderer (in this case we don't use viewerDiv)
|
|
175
165
|
// - options for the renderer to be created
|
|
176
166
|
if (options.renderer && options.renderer.domElement) {
|
|
177
|
-
engine = new
|
|
167
|
+
engine = new c3DEngine(options.renderer);
|
|
178
168
|
} else {
|
|
179
|
-
engine = new
|
|
169
|
+
engine = new c3DEngine(viewerDiv, options.renderer);
|
|
180
170
|
}
|
|
181
|
-
this.mainLoop = options.mainLoop || new
|
|
171
|
+
this.mainLoop = options.mainLoop || new MainLoop(new Scheduler(), engine);
|
|
182
172
|
this.scene = options.scene3D || new THREE.Scene();
|
|
183
173
|
if (!options.scene3D) {
|
|
184
174
|
this.scene.matrixWorldAutoUpdate = false;
|
|
185
175
|
}
|
|
186
|
-
this.camera = new
|
|
176
|
+
this.camera = new Camera(this.referenceCrs, this.mainLoop.gfxEngine.getWindowSize().x, this.mainLoop.gfxEngine.getWindowSize().y, options.camera);
|
|
187
177
|
this._frameRequesters = {};
|
|
188
178
|
this._resizeListener = () => this.resize();
|
|
189
179
|
window.addEventListener('resize', this._resizeListener, false);
|
|
@@ -192,11 +182,11 @@ class View extends THREE.EventDispatcher {
|
|
|
192
182
|
this._allLayersAreReadyCallback = () => {
|
|
193
183
|
// all layers must be ready
|
|
194
184
|
const allReady = this.getLayers().every(layer => layer.ready);
|
|
195
|
-
if (allReady && this.mainLoop.scheduler.commandsWaitingExecutionCount() == 0 && this.mainLoop.renderingState ==
|
|
185
|
+
if (allReady && this.mainLoop.scheduler.commandsWaitingExecutionCount() == 0 && this.mainLoop.renderingState == RENDERING_PAUSED) {
|
|
196
186
|
this.dispatchEvent({
|
|
197
187
|
type: VIEW_EVENTS.LAYERS_INITIALIZED
|
|
198
188
|
});
|
|
199
|
-
this.removeFrameRequester(
|
|
189
|
+
this.removeFrameRequester(MAIN_LOOP_EVENTS.UPDATE_END, this._allLayersAreReadyCallback);
|
|
200
190
|
}
|
|
201
191
|
};
|
|
202
192
|
this.camera.resize(this.domElement.clientWidth, this.domElement.clientHeight);
|
|
@@ -233,7 +223,7 @@ class View extends THREE.EventDispatcher {
|
|
|
233
223
|
// push all viewer to keep source.cache
|
|
234
224
|
viewers.push(this);
|
|
235
225
|
if (options.webXR) {
|
|
236
|
-
(
|
|
226
|
+
initializeWebXR(this, options.webXR);
|
|
237
227
|
}
|
|
238
228
|
}
|
|
239
229
|
|
|
@@ -300,7 +290,7 @@ class View extends THREE.EventDispatcher {
|
|
|
300
290
|
}
|
|
301
291
|
viewers.splice(id, 1);
|
|
302
292
|
// Remove remaining objects in the scene (e.g. helpers, debug, etc.)
|
|
303
|
-
this.scene.traverse(
|
|
293
|
+
this.scene.traverse(ObjectRemovalHelper.cleanup);
|
|
304
294
|
}
|
|
305
295
|
|
|
306
296
|
/**
|
|
@@ -329,15 +319,11 @@ class View extends THREE.EventDispatcher {
|
|
|
329
319
|
const layerColors = this.getLayers(l => l.isColorLayer);
|
|
330
320
|
layer.sequence = layerColors.length;
|
|
331
321
|
const sumColorLayers = parentLayer.countColorLayersTextures(...layerColors, layer);
|
|
332
|
-
if (sumColorLayers <=
|
|
322
|
+
if (sumColorLayers <= getMaxColorSamplerUnitsCount()) {
|
|
333
323
|
parentLayer.attach(layer);
|
|
334
324
|
} else {
|
|
335
325
|
return layer._reject(new Error(`Cant add color layer ${layer.id}: the maximum layer is reached`));
|
|
336
326
|
}
|
|
337
|
-
} else if (layer.isElevationLayer && layer.source.format == 'image/x-bil;bits=32') {
|
|
338
|
-
var _this$renderer, _this$renderer$capabi;
|
|
339
|
-
layer.source.networkOptions.isWebGL2 = (_this$renderer = this.renderer) === null || _this$renderer === void 0 ? void 0 : (_this$renderer$capabi = _this$renderer.capabilities) === null || _this$renderer$capabi === void 0 ? void 0 : _this$renderer$capabi.isWebGL2;
|
|
340
|
-
parentLayer.attach(layer);
|
|
341
327
|
} else {
|
|
342
328
|
parentLayer.attach(layer);
|
|
343
329
|
}
|
|
@@ -356,8 +342,8 @@ class View extends THREE.EventDispatcher {
|
|
|
356
342
|
Promise.all(layer._promises).then(() => {
|
|
357
343
|
layer._resolve();
|
|
358
344
|
this.notifyChange(parentLayer || layer, false);
|
|
359
|
-
if (!this._frameRequesters[
|
|
360
|
-
this.addFrameRequester(
|
|
345
|
+
if (!this._frameRequesters[MAIN_LOOP_EVENTS.UPDATE_END] || !this._frameRequesters[MAIN_LOOP_EVENTS.UPDATE_END].includes(this._allLayersAreReadyCallback)) {
|
|
346
|
+
this.addFrameRequester(MAIN_LOOP_EVENTS.UPDATE_END, this._allLayersAreReadyCallback);
|
|
361
347
|
}
|
|
362
348
|
this.dispatchEvent({
|
|
363
349
|
type: VIEW_EVENTS.LAYER_ADDED,
|
|
@@ -746,7 +732,7 @@ class View extends THREE.EventDispatcher {
|
|
|
746
732
|
}
|
|
747
733
|
source.pickObjectsAt(this, mouse, radius, results);
|
|
748
734
|
} else {
|
|
749
|
-
|
|
735
|
+
Picking.pickObjectsAt(this, mouse, radius, source, results);
|
|
750
736
|
}
|
|
751
737
|
}
|
|
752
738
|
return results;
|
|
@@ -919,7 +905,7 @@ class View extends THREE.EventDispatcher {
|
|
|
919
905
|
}
|
|
920
906
|
|
|
921
907
|
// Get the tile corresponding to where the cursor is
|
|
922
|
-
const tiles =
|
|
908
|
+
const tiles = Picking.pickTilesAt(this, mouse, radius, this.tileLayer);
|
|
923
909
|
for (const tile of tiles) {
|
|
924
910
|
if (!tile.object.material) {
|
|
925
911
|
continue;
|
|
@@ -929,8 +915,8 @@ class View extends THREE.EventDispatcher {
|
|
|
929
915
|
if (!texture.features) {
|
|
930
916
|
continue;
|
|
931
917
|
}
|
|
932
|
-
precision =
|
|
933
|
-
const featuresUnderCoor =
|
|
918
|
+
precision = CRS.isMetricUnit(texture.features.crs) ? precisions.M : precisions.D;
|
|
919
|
+
const featuresUnderCoor = FeaturesUtils.filterFeaturesUnderCoordinate(coordinates, texture.features, precision);
|
|
934
920
|
featuresUnderCoor.forEach(feature => {
|
|
935
921
|
if (!result[materialLayer.id].find(f => f.geometry === feature.geometry)) {
|
|
936
922
|
result[materialLayer.id].push(feature);
|
|
@@ -955,7 +941,7 @@ class View extends THREE.EventDispatcher {
|
|
|
955
941
|
if (!currentVisibility) {
|
|
956
942
|
this.tileLayer.visible = true;
|
|
957
943
|
}
|
|
958
|
-
const restore = this.tileLayer.level0Nodes.map(n =>
|
|
944
|
+
const restore = this.tileLayer.level0Nodes.map(n => RenderMode.push(n, RenderMode.MODES.DEPTH));
|
|
959
945
|
buffer = g.renderViewToBuffer({
|
|
960
946
|
camera: this.camera,
|
|
961
947
|
scene: this.tileLayer.object3d
|
|
@@ -995,7 +981,7 @@ class View extends THREE.EventDispatcher {
|
|
|
995
981
|
return;
|
|
996
982
|
}
|
|
997
983
|
const l = this.mainLoop;
|
|
998
|
-
const viewPaused = l.scheduler.commandsWaitingExecutionCount() == 0 && l.renderingState ==
|
|
984
|
+
const viewPaused = l.scheduler.commandsWaitingExecutionCount() == 0 && l.renderingState == RENDERING_PAUSED;
|
|
999
985
|
const g = l.gfxEngine;
|
|
1000
986
|
const dim = g.getWindowSize();
|
|
1001
987
|
mouse = mouse || dim.clone().multiplyScalar(0.5);
|
|
@@ -1016,7 +1002,7 @@ class View extends THREE.EventDispatcher {
|
|
|
1016
1002
|
}
|
|
1017
1003
|
screen.x = mouse.x / dim.x * 2 - 1;
|
|
1018
1004
|
screen.y = -(mouse.y / dim.y) * 2 + 1;
|
|
1019
|
-
if (
|
|
1005
|
+
if (Capabilities.isLogDepthBufferSupported() && this.camera3D.type == 'PerspectiveCamera') {
|
|
1020
1006
|
// TODO: solve this part with gl_FragCoord_Z and unproject
|
|
1021
1007
|
// Origin
|
|
1022
1008
|
ray.origin.copy(this.camera3D.position);
|
|
@@ -1059,7 +1045,7 @@ class View extends THREE.EventDispatcher {
|
|
|
1059
1045
|
* coordinate reference system of the target or in the view referenceCrs if no target is specified.
|
|
1060
1046
|
*/
|
|
1061
1047
|
pickTerrainCoordinates(mouse) {
|
|
1062
|
-
let target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new
|
|
1048
|
+
let target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Coordinates(this.referenceCrs);
|
|
1063
1049
|
if (mouse instanceof Event) {
|
|
1064
1050
|
this.eventToViewCoords(mouse);
|
|
1065
1051
|
} else if (mouse && mouse.x !== undefined && mouse.y !== undefined) {
|
|
@@ -1089,7 +1075,7 @@ class View extends THREE.EventDispatcher {
|
|
|
1089
1075
|
* @deprecated Use View#pickTerrainCoordinates instead.
|
|
1090
1076
|
*/
|
|
1091
1077
|
pickCoordinates(mouse) {
|
|
1092
|
-
let target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new
|
|
1078
|
+
let target = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : new Coordinates(this.referenceCrs);
|
|
1093
1079
|
console.warn('Deprecated, use View#pickTerrainCoordinates instead.');
|
|
1094
1080
|
return this.pickTerrainCoordinates(mouse, target);
|
|
1095
1081
|
}
|
|
@@ -1121,5 +1107,4 @@ class View extends THREE.EventDispatcher {
|
|
|
1121
1107
|
}
|
|
1122
1108
|
}
|
|
1123
1109
|
}
|
|
1124
|
-
|
|
1125
|
-
exports.default = _default;
|
|
1110
|
+
export default View;
|
|
@@ -1,24 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
}
|
|
7
|
-
exports.default = exports.C3DTILES_LAYER_EVENTS = void 0;
|
|
8
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
9
|
-
var _GeometryLayer = _interopRequireDefault(require("./GeometryLayer"));
|
|
10
|
-
var _dTilesProcessing = require("../Process/3dTilesProcessing");
|
|
11
|
-
var _C3DTileset = _interopRequireDefault(require("../Core/3DTiles/C3DTileset"));
|
|
12
|
-
var _C3DTExtensions = _interopRequireDefault(require("../Core/3DTiles/C3DTExtensions"));
|
|
13
|
-
var _PointsMaterial = require("../Renderer/PointsMaterial");
|
|
14
|
-
var _Style = _interopRequireDefault(require("../Core/Style"));
|
|
15
|
-
var _C3DTFeature = _interopRequireDefault(require("../Core/3DTiles/C3DTFeature"));
|
|
16
|
-
var _ThreeUtils = require("../Utils/ThreeUtils");
|
|
17
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
18
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import GeometryLayer from "./GeometryLayer.js";
|
|
3
|
+
import { init3dTilesLayer, pre3dTilesUpdate, process3dTilesNode } from "../Process/3dTilesProcessing.js";
|
|
4
|
+
import C3DTileset from "../Core/3DTiles/C3DTileset.js";
|
|
5
|
+
import C3DTExtensions from "../Core/3DTiles/C3DTExtensions.js";
|
|
6
|
+
import { PNTS_MODE, PNTS_SHAPE, PNTS_SIZE_MODE } from "../Renderer/PointsMaterial.js";
|
|
19
7
|
// eslint-disable-next-line no-unused-vars
|
|
20
|
-
|
|
21
|
-
|
|
8
|
+
import Style from "../Core/Style.js";
|
|
9
|
+
import C3DTFeature from "../Core/3DTiles/C3DTFeature.js";
|
|
10
|
+
import { optimizeGeometryGroups } from "../Utils/ThreeUtils.js";
|
|
11
|
+
export const C3DTILES_LAYER_EVENTS = {
|
|
22
12
|
/**
|
|
23
13
|
* Fires when a tile content has been loaded
|
|
24
14
|
* @event C3DTilesLayer#on-tile-content-loaded
|
|
@@ -34,13 +24,12 @@ const C3DTILES_LAYER_EVENTS = {
|
|
|
34
24
|
*/
|
|
35
25
|
ON_TILE_REQUESTED: 'on-tile-requested'
|
|
36
26
|
};
|
|
37
|
-
|
|
38
|
-
const update = (0, _dTilesProcessing.process3dTilesNode)();
|
|
27
|
+
const update = process3dTilesNode();
|
|
39
28
|
|
|
40
29
|
/**
|
|
41
30
|
* Find tileId of object
|
|
42
|
-
*
|
|
43
31
|
* @param {THREE.Object3D} object - object
|
|
32
|
+
*
|
|
44
33
|
* @returns {number} tileId
|
|
45
34
|
*/
|
|
46
35
|
function findTileID(object) {
|
|
@@ -55,14 +44,14 @@ function findTileID(object) {
|
|
|
55
44
|
|
|
56
45
|
/**
|
|
57
46
|
* Check if object3d has feature
|
|
58
|
-
*
|
|
59
47
|
* @param {THREE.Object3D} object3d - object3d to check
|
|
48
|
+
*
|
|
60
49
|
* @returns {boolean} - true if object3d has feature
|
|
61
50
|
*/
|
|
62
51
|
function object3DHasFeature(object3d) {
|
|
63
52
|
return object3d.geometry && object3d.geometry.attributes._BATCHID;
|
|
64
53
|
}
|
|
65
|
-
class C3DTilesLayer extends
|
|
54
|
+
class C3DTilesLayer extends GeometryLayer {
|
|
66
55
|
#fillColorMaterialsBuffer;
|
|
67
56
|
/**
|
|
68
57
|
* Constructs a new instance of 3d tiles layer.
|
|
@@ -120,15 +109,15 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
120
109
|
this.cleanupDelay = config.cleanupDelay || 1000;
|
|
121
110
|
this.protocol = '3d-tiles';
|
|
122
111
|
this.name = config.name;
|
|
123
|
-
this.registeredExtensions = config.registeredExtensions || new
|
|
124
|
-
this.pntsMode =
|
|
125
|
-
this.pntsShape =
|
|
112
|
+
this.registeredExtensions = config.registeredExtensions || new C3DTExtensions();
|
|
113
|
+
this.pntsMode = PNTS_MODE.COLOR;
|
|
114
|
+
this.pntsShape = PNTS_SHAPE.CIRCLE;
|
|
126
115
|
this.classification = config.classification;
|
|
127
|
-
this.pntsSizeMode =
|
|
116
|
+
this.pntsSizeMode = PNTS_SIZE_MODE.VALUE;
|
|
128
117
|
this.pntsMinAttenuatedSize = config.pntsMinAttenuatedSize || 3;
|
|
129
118
|
this.pntsMaxAttenuatedSize = config.pntsMaxAttenuatedSize || 10;
|
|
130
119
|
if (config.pntsMode) {
|
|
131
|
-
const exists = Object.values(
|
|
120
|
+
const exists = Object.values(PNTS_MODE).includes(config.pntsMode);
|
|
132
121
|
if (!exists) {
|
|
133
122
|
console.warn("The points cloud mode doesn't exist. Use 'COLOR' or 'CLASSIFICATION' instead.");
|
|
134
123
|
} else {
|
|
@@ -136,7 +125,7 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
136
125
|
}
|
|
137
126
|
}
|
|
138
127
|
if (config.pntsShape) {
|
|
139
|
-
const exists = Object.values(
|
|
128
|
+
const exists = Object.values(PNTS_SHAPE).includes(config.pntsShape);
|
|
140
129
|
if (!exists) {
|
|
141
130
|
console.warn("The points cloud point shape doesn't exist. Use 'CIRCLE' or 'SQUARE' instead.");
|
|
142
131
|
} else {
|
|
@@ -144,7 +133,7 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
144
133
|
}
|
|
145
134
|
}
|
|
146
135
|
if (config.pntsSizeMode) {
|
|
147
|
-
const exists = Object.values(
|
|
136
|
+
const exists = Object.values(PNTS_SIZE_MODE).includes(config.pntsSizeMode);
|
|
148
137
|
if (!exists) {
|
|
149
138
|
console.warn("The points cloud size mode doesn't exist. Use 'VALUE' or 'ATTENUATED' instead.");
|
|
150
139
|
} else {
|
|
@@ -176,7 +165,7 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
176
165
|
this._cleanableTiles = [];
|
|
177
166
|
const resolve = this.addInitializationStep();
|
|
178
167
|
this.source.whenReady.then(tileset => {
|
|
179
|
-
this.tileset = new
|
|
168
|
+
this.tileset = new C3DTileset(tileset, this.source.baseUrl, this.registeredExtensions);
|
|
180
169
|
// Verify that extensions of the tileset have been registered in the layer
|
|
181
170
|
if (this.tileset.extensionsUsed) {
|
|
182
171
|
for (const extensionUsed of this.tileset.extensionsUsed) {
|
|
@@ -192,11 +181,11 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
192
181
|
}
|
|
193
182
|
}
|
|
194
183
|
// TODO: Move all init3dTilesLayer code to constructor
|
|
195
|
-
|
|
184
|
+
init3dTilesLayer(view, view.mainLoop.scheduler, this, tileset.root).then(resolve);
|
|
196
185
|
});
|
|
197
186
|
}
|
|
198
187
|
preUpdate() {
|
|
199
|
-
return
|
|
188
|
+
return pre3dTilesUpdate.bind(this)();
|
|
200
189
|
}
|
|
201
190
|
update(context, layer, node) {
|
|
202
191
|
return update(context, layer, node);
|
|
@@ -229,6 +218,7 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
229
218
|
* targets picked under specified coordinates. Intersects can be
|
|
230
219
|
* computed with view.pickObjectsAt(..). See fillHTMLWithPickingInfo()
|
|
231
220
|
* in 3dTilesHelper.js for an example.
|
|
221
|
+
*
|
|
232
222
|
* @returns {C3DTileFeature} - the closest C3DTileFeature of the intersects array
|
|
233
223
|
*/
|
|
234
224
|
getC3DTileFeatureFromIntersectsArray(intersects) {
|
|
@@ -274,7 +264,6 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
274
264
|
|
|
275
265
|
/**
|
|
276
266
|
* Initialize C3DTileFeatures from tileContent
|
|
277
|
-
*
|
|
278
267
|
* @param {THREE.Object3D} tileContent - tile as THREE.Object3D
|
|
279
268
|
*/
|
|
280
269
|
initC3DTileFeatures(tileContent) {
|
|
@@ -296,7 +285,7 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
296
285
|
});
|
|
297
286
|
} else {
|
|
298
287
|
// first occurence
|
|
299
|
-
const c3DTileFeature = new
|
|
288
|
+
const c3DTileFeature = new C3DTFeature(tileContent.tileId, currentBatchId, [{
|
|
300
289
|
start,
|
|
301
290
|
count
|
|
302
291
|
}],
|
|
@@ -339,8 +328,8 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
339
328
|
/**
|
|
340
329
|
* Update style of the C3DTFeatures, an allowList of tile id can be passed to only update certain tile.
|
|
341
330
|
* Note that this function only update THREE.Object3D materials, in order to see style changes you should call view.notifyChange()
|
|
342
|
-
*
|
|
343
331
|
* @param {Array<number>|null} [allowTileIdList] - tile ids to allow in updateStyle computation if null all tiles are updated
|
|
332
|
+
*
|
|
344
333
|
* @returns {boolean} true if style updated false otherwise
|
|
345
334
|
*/
|
|
346
335
|
updateStyle() {
|
|
@@ -427,7 +416,7 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
427
416
|
object3d.geometry.addGroup(group.start, group.count, materialIndex);
|
|
428
417
|
});
|
|
429
418
|
}
|
|
430
|
-
|
|
419
|
+
optimizeGeometryGroups(object3d);
|
|
431
420
|
|
|
432
421
|
// record material(s) used in object3d
|
|
433
422
|
if (object3d.material instanceof Array) {
|
|
@@ -462,5 +451,4 @@ class C3DTilesLayer extends _GeometryLayer.default {
|
|
|
462
451
|
return this._style;
|
|
463
452
|
}
|
|
464
453
|
}
|
|
465
|
-
|
|
466
|
-
exports.default = _default;
|
|
454
|
+
export default C3DTilesLayer;
|
package/lib/Layer/ColorLayer.js
CHANGED
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import RasterLayer from "./RasterLayer.js";
|
|
2
|
+
import { updateLayeredMaterialNodeImagery } from "../Process/LayeredMaterialNodeProcessing.js";
|
|
3
|
+
import { RasterColorTile } from "../Renderer/RasterTile.js";
|
|
4
|
+
import { deprecatedColorLayerOptions } from "../Core/Deprecated/Undeprecator.js";
|
|
2
5
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _RasterLayer = _interopRequireDefault(require("./RasterLayer"));
|
|
9
|
-
var _LayeredMaterialNodeProcessing = require("../Process/LayeredMaterialNodeProcessing");
|
|
10
|
-
var _RasterTile = require("../Renderer/RasterTile");
|
|
11
|
-
var _Undeprecator = require("../Core/Deprecated/Undeprecator");
|
|
12
6
|
/**
|
|
13
7
|
* Fires when the visiblity of the layer has changed.
|
|
14
8
|
* @event ColorLayer#visible-property-changed
|
|
@@ -22,6 +16,7 @@ var _Undeprecator = require("../Core/Deprecated/Undeprecator");
|
|
|
22
16
|
* the layer changed in the view it is attached to.
|
|
23
17
|
* @event ColorLayer#sequence-property-changed
|
|
24
18
|
*/
|
|
19
|
+
|
|
25
20
|
/**
|
|
26
21
|
* @property {boolean} isColorLayer - Used to checkout whether this layer is a
|
|
27
22
|
* ColorLayer. Default is true. You should not change this, as it is used
|
|
@@ -50,7 +45,7 @@ var _Undeprecator = require("../Core/Deprecated/Undeprecator");
|
|
|
50
45
|
* * `2`: unused.
|
|
51
46
|
* * `3`: could be used by your own glsl code.
|
|
52
47
|
*/
|
|
53
|
-
class ColorLayer extends
|
|
48
|
+
class ColorLayer extends RasterLayer {
|
|
54
49
|
/**
|
|
55
50
|
* A simple layer, usually managing a texture to display on a view. For example,
|
|
56
51
|
* it can be an aerial view of the ground or a simple transparent layer with the
|
|
@@ -97,7 +92,7 @@ class ColorLayer extends _RasterLayer.default {
|
|
|
97
92
|
*/
|
|
98
93
|
constructor(id) {
|
|
99
94
|
let config = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
100
|
-
|
|
95
|
+
deprecatedColorLayerOptions(config);
|
|
101
96
|
super(id, config);
|
|
102
97
|
this.isColorLayer = true;
|
|
103
98
|
this.defineLayerProperty('visible', true);
|
|
@@ -121,15 +116,14 @@ class ColorLayer extends _RasterLayer.default {
|
|
|
121
116
|
* @return {RasterColorTile} The raster color node added.
|
|
122
117
|
*/
|
|
123
118
|
setupRasterNode(node) {
|
|
124
|
-
const rasterColorNode = new
|
|
119
|
+
const rasterColorNode = new RasterColorTile(node.material, this);
|
|
125
120
|
node.material.addLayer(rasterColorNode);
|
|
126
121
|
// set up ColorLayer ordering.
|
|
127
122
|
node.material.setSequence(this.parent.colorLayersOrder);
|
|
128
123
|
return rasterColorNode;
|
|
129
124
|
}
|
|
130
125
|
update(context, layer, node, parent) {
|
|
131
|
-
return
|
|
126
|
+
return updateLayeredMaterialNodeImagery(context, this, node, parent);
|
|
132
127
|
}
|
|
133
128
|
}
|
|
134
|
-
|
|
135
|
-
exports.default = _default;
|
|
129
|
+
export default ColorLayer;
|
|
@@ -1,13 +1,7 @@
|
|
|
1
|
-
|
|
1
|
+
import RasterLayer from "./RasterLayer.js";
|
|
2
|
+
import { updateLayeredMaterialNodeElevation } from "../Process/LayeredMaterialNodeProcessing.js";
|
|
3
|
+
import { RasterElevationTile } from "../Renderer/RasterTile.js";
|
|
2
4
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _RasterLayer = _interopRequireDefault(require("./RasterLayer"));
|
|
9
|
-
var _LayeredMaterialNodeProcessing = require("../Process/LayeredMaterialNodeProcessing");
|
|
10
|
-
var _RasterTile = require("../Renderer/RasterTile");
|
|
11
5
|
/**
|
|
12
6
|
* @property {boolean} isElevationLayer - Used to checkout whether this layer is
|
|
13
7
|
* an ElevationLayer. Default is true. You should not change this, as it is used
|
|
@@ -29,7 +23,7 @@ var _RasterTile = require("../Renderer/RasterTile");
|
|
|
29
23
|
* @property {number} colorTextureElevationMinZ - elevation minimum in `useColorTextureElevation` mode.
|
|
30
24
|
* @property {number} colorTextureElevationMaxZ - elevation maximum in `useColorTextureElevation` mode.
|
|
31
25
|
*/
|
|
32
|
-
class ElevationLayer extends
|
|
26
|
+
class ElevationLayer extends RasterLayer {
|
|
33
27
|
/**
|
|
34
28
|
* A simple layer, managing an elevation texture to add some reliefs on the
|
|
35
29
|
* plane or globe view for example.
|
|
@@ -86,7 +80,7 @@ class ElevationLayer extends _RasterLayer.default {
|
|
|
86
80
|
* @return {RasterElevationTile} The raster elevation node added.
|
|
87
81
|
*/
|
|
88
82
|
setupRasterNode(node) {
|
|
89
|
-
const rasterElevationNode = new
|
|
83
|
+
const rasterElevationNode = new RasterElevationTile(node.material, this);
|
|
90
84
|
node.material.addLayer(rasterElevationNode);
|
|
91
85
|
node.material.setSequenceElevation(this.id);
|
|
92
86
|
// bounding box initialisation
|
|
@@ -109,8 +103,7 @@ class ElevationLayer extends _RasterLayer.default {
|
|
|
109
103
|
return rasterElevationNode;
|
|
110
104
|
}
|
|
111
105
|
update(context, layer, node, parent) {
|
|
112
|
-
return
|
|
106
|
+
return updateLayeredMaterialNodeElevation(context, this, node, parent);
|
|
113
107
|
}
|
|
114
108
|
}
|
|
115
|
-
|
|
116
|
-
exports.default = _default;
|
|
109
|
+
export default ElevationLayer;
|
|
@@ -1,16 +1,7 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
9
|
-
var _EntwinePointTileNode = _interopRequireDefault(require("../Core/EntwinePointTileNode"));
|
|
10
|
-
var _PointCloudLayer = _interopRequireDefault(require("./PointCloudLayer"));
|
|
11
|
-
var _Extent = _interopRequireDefault(require("../Core/Geographic/Extent"));
|
|
12
|
-
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
13
|
-
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import EntwinePointTileNode from "../Core/EntwinePointTileNode.js";
|
|
3
|
+
import PointCloudLayer from "./PointCloudLayer.js";
|
|
4
|
+
import Extent from "../Core/Geographic/Extent.js";
|
|
14
5
|
const bboxMesh = new THREE.Mesh();
|
|
15
6
|
const box3 = new THREE.Box3();
|
|
16
7
|
bboxMesh.geometry.boundingBox = box3;
|
|
@@ -20,7 +11,7 @@ bboxMesh.geometry.boundingBox = box3;
|
|
|
20
11
|
* layer is a EntwinePointTileLayer. Default is `true`. You should not change
|
|
21
12
|
* this, as it is used internally for optimisation.
|
|
22
13
|
*/
|
|
23
|
-
class EntwinePointTileLayer extends
|
|
14
|
+
class EntwinePointTileLayer extends PointCloudLayer {
|
|
24
15
|
/**
|
|
25
16
|
* Constructs a new instance of Entwine Point Tile layer.
|
|
26
17
|
*
|
|
@@ -55,14 +46,15 @@ class EntwinePointTileLayer extends _PointCloudLayer.default {
|
|
|
55
46
|
constructor(id, config) {
|
|
56
47
|
super(id, config);
|
|
57
48
|
this.isEntwinePointTileLayer = true;
|
|
49
|
+
this.scale = new THREE.Vector3(1, 1, 1);
|
|
58
50
|
const resolve = this.addInitializationStep();
|
|
59
51
|
this.whenReady = this.source.whenReady.then(() => {
|
|
60
|
-
this.root = new
|
|
52
|
+
this.root = new EntwinePointTileNode(0, 0, 0, 0, this, -1);
|
|
61
53
|
this.root.bbox.min.fromArray(this.source.boundsConforming, 0);
|
|
62
54
|
this.root.bbox.max.fromArray(this.source.boundsConforming, 3);
|
|
63
55
|
this.minElevationRange = this.source.boundsConforming[2];
|
|
64
56
|
this.maxElevationRange = this.source.boundsConforming[5];
|
|
65
|
-
this.extent =
|
|
57
|
+
this.extent = Extent.fromBox3(config.crs || 'EPSG:4326', this.root.bbox);
|
|
66
58
|
return this.root.loadOctree().then(resolve);
|
|
67
59
|
});
|
|
68
60
|
}
|
|
@@ -70,5 +62,4 @@ class EntwinePointTileLayer extends _PointCloudLayer.default {
|
|
|
70
62
|
return this.source.spacing;
|
|
71
63
|
}
|
|
72
64
|
}
|
|
73
|
-
|
|
74
|
-
exports.default = _default;
|
|
65
|
+
export default EntwinePointTileLayer;
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { Group } from 'three';
|
|
2
|
+
import GeometryLayer from "./GeometryLayer.js";
|
|
3
|
+
import FeatureProcessing from "../Process/FeatureProcessing.js";
|
|
4
|
+
import Feature2Mesh from "../Converter/Feature2Mesh.js";
|
|
2
5
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _three = require("three");
|
|
9
|
-
var _GeometryLayer = _interopRequireDefault(require("./GeometryLayer"));
|
|
10
|
-
var _FeatureProcessing = _interopRequireDefault(require("../Process/FeatureProcessing"));
|
|
11
|
-
var _Feature2Mesh = _interopRequireDefault(require("../Converter/Feature2Mesh"));
|
|
12
6
|
/**
|
|
13
7
|
* `FeatureGeometryLayer` displays geographic vector data (geojson, kml...) in object 3D.
|
|
14
8
|
* `FeatureGeometryLayer` is a pre-configured `GeometryLayer` to load and convert vector data.
|
|
@@ -19,7 +13,7 @@ var _Feature2Mesh = _interopRequireDefault(require("../Converter/Feature2Mesh"))
|
|
|
19
13
|
* a FeatureGeometryLayer. Default is true. You should not change this, as it is used
|
|
20
14
|
* internally for optimisation.
|
|
21
15
|
*/
|
|
22
|
-
class FeatureGeometryLayer extends
|
|
16
|
+
class FeatureGeometryLayer extends GeometryLayer {
|
|
23
17
|
/**
|
|
24
18
|
* @constructor
|
|
25
19
|
* @extends GeometryLayer
|
|
@@ -52,11 +46,11 @@ class FeatureGeometryLayer extends _GeometryLayer.default {
|
|
|
52
46
|
*/
|
|
53
47
|
constructor(id) {
|
|
54
48
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
55
|
-
options.update =
|
|
56
|
-
options.convert =
|
|
49
|
+
options.update = FeatureProcessing.update;
|
|
50
|
+
options.convert = Feature2Mesh.convert({
|
|
57
51
|
batchId: options.batchId
|
|
58
52
|
});
|
|
59
|
-
super(id, options.object3d || new
|
|
53
|
+
super(id, options.object3d || new Group(), options);
|
|
60
54
|
this.isFeatureGeometryLayer = true;
|
|
61
55
|
this.accurate = options.accurate ?? true;
|
|
62
56
|
this.buildExtent = !this.accurate;
|
|
@@ -67,5 +61,4 @@ class FeatureGeometryLayer extends _GeometryLayer.default {
|
|
|
67
61
|
}
|
|
68
62
|
}
|
|
69
63
|
}
|
|
70
|
-
|
|
71
|
-
exports.default = _default;
|
|
64
|
+
export default FeatureGeometryLayer;
|