itowns 2.42.1-next.2 → 2.42.1-next.21
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/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/entwine_simple_loader.html +24 -8
- package/examples/misc_collada.html +2 -2
- package/examples/misc_instancing.html +1 -1
- package/examples/source_file_gpx_3d.html +2 -2
- package/examples/source_stream_wfs_25d.html +11 -11
- package/examples/source_stream_wfs_3d.html +1 -1
- package/examples/vector_tile_3d_mesh.html +2 -2
- package/examples/vector_tile_raster_2d.html +1 -1
- package/examples/vector_tile_raster_3d.html +1 -1
- package/examples/view_25d_map.html +2 -2
- package/examples/view_3d_map.html +3 -3
- package/examples/view_3d_map_webxr.html +1 -1
- package/examples/view_3d_mns_map.html +3 -3
- package/examples/view_immersive.html +1 -1
- package/examples/view_multi_25d.html +2 -2
- package/examples/widgets_minimap.html +1 -1
- 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 +77 -70
- 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 +26 -40
- 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 +11 -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 +27 -24
- 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 +86 -707
- 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 +31 -21
- package/lib/Parser/LASParser.js +10 -17
- 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 +19 -28
- 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 +224 -94
- package/lib/Renderer/RasterTile.js +18 -30
- 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 +16 -0
- 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
|
@@ -1,18 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
});
|
|
7
|
-
exports.default = exports.RasterElevationTile = exports.RasterColorTile = exports.EMPTY_TEXTURE_ZOOM = void 0;
|
|
8
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
9
|
-
var _LayeredMaterial = require("./LayeredMaterial");
|
|
10
|
-
var _XbilParser = require("../Parser/XbilParser");
|
|
11
|
-
var _Crs = _interopRequireDefault(require("../Core/Geographic/Crs"));
|
|
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; }
|
|
14
|
-
const EMPTY_TEXTURE_ZOOM = -1;
|
|
15
|
-
exports.EMPTY_TEXTURE_ZOOM = EMPTY_TEXTURE_ZOOM;
|
|
1
|
+
import * as THREE from 'three';
|
|
2
|
+
import { ELEVATION_MODES } from "./LayeredMaterial.js";
|
|
3
|
+
import { checkNodeElevationTextureValidity, insertSignificantValuesFromParent, computeMinMaxElevation } from "../Parser/XbilParser.js";
|
|
4
|
+
import CRS from "../Core/Geographic/Crs.js";
|
|
5
|
+
export const EMPTY_TEXTURE_ZOOM = -1;
|
|
16
6
|
const pitch = new THREE.Vector4();
|
|
17
7
|
function getIndiceWithPitch(i, pitch, w) {
|
|
18
8
|
// Return corresponding indice in parent tile using pitch
|
|
@@ -39,7 +29,7 @@ class RasterTile extends THREE.EventDispatcher {
|
|
|
39
29
|
constructor(material, layer) {
|
|
40
30
|
super();
|
|
41
31
|
this.layer = layer;
|
|
42
|
-
this.crs = layer.parent.tileMatrixSets.indexOf(
|
|
32
|
+
this.crs = layer.parent.tileMatrixSets.indexOf(CRS.formatToTms(layer.crs));
|
|
43
33
|
if (this.crs == -1) {
|
|
44
34
|
console.error('Unknown crs:', layer.crs);
|
|
45
35
|
}
|
|
@@ -75,7 +65,8 @@ class RasterTile extends THREE.EventDispatcher {
|
|
|
75
65
|
}
|
|
76
66
|
}
|
|
77
67
|
}
|
|
78
|
-
dispose(
|
|
68
|
+
dispose() {
|
|
69
|
+
let removeEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
|
79
70
|
if (removeEvent) {
|
|
80
71
|
this.layer.removeEventListener('visible-property-changed', this._handlerCBEvent);
|
|
81
72
|
this.layer.removeEventListener('opacity-property-changed', this._handlerCBEvent);
|
|
@@ -94,7 +85,7 @@ class RasterTile extends THREE.EventDispatcher {
|
|
|
94
85
|
this.material.layersNeedUpdate = true;
|
|
95
86
|
}
|
|
96
87
|
setTexture(index, texture, offsetScale) {
|
|
97
|
-
this.level = texture && index == 0 ? texture.extent.zoom : this.level;
|
|
88
|
+
this.level = texture && texture.extent && index == 0 ? texture.extent.zoom : this.level;
|
|
98
89
|
this.textures[index] = texture || null;
|
|
99
90
|
this.offsetScales[index] = offsetScale;
|
|
100
91
|
this.material.layersNeedUpdate = true;
|
|
@@ -106,9 +97,8 @@ class RasterTile extends THREE.EventDispatcher {
|
|
|
106
97
|
}
|
|
107
98
|
}
|
|
108
99
|
}
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
class RasterColorTile extends RasterTile {
|
|
100
|
+
export default RasterTile;
|
|
101
|
+
export class RasterColorTile extends RasterTile {
|
|
112
102
|
get effect_type() {
|
|
113
103
|
return this.layer.effect_type;
|
|
114
104
|
}
|
|
@@ -119,13 +109,12 @@ class RasterColorTile extends RasterTile {
|
|
|
119
109
|
return this.layer.transparent;
|
|
120
110
|
}
|
|
121
111
|
}
|
|
122
|
-
|
|
123
|
-
class RasterElevationTile extends RasterTile {
|
|
112
|
+
export class RasterElevationTile extends RasterTile {
|
|
124
113
|
constructor(material, layer) {
|
|
125
114
|
super(material, layer);
|
|
126
115
|
const defaultEle = {
|
|
127
116
|
bias: 0,
|
|
128
|
-
mode:
|
|
117
|
+
mode: ELEVATION_MODES.DATA,
|
|
129
118
|
zmin: -Infinity,
|
|
130
119
|
zmax: Infinity
|
|
131
120
|
};
|
|
@@ -133,12 +122,12 @@ class RasterElevationTile extends RasterTile {
|
|
|
133
122
|
|
|
134
123
|
// Define elevation properties
|
|
135
124
|
if (layer.useRgbaTextureElevation) {
|
|
136
|
-
defaultEle.mode =
|
|
125
|
+
defaultEle.mode = ELEVATION_MODES.RGBA;
|
|
137
126
|
defaultEle.zmax = 5000;
|
|
138
127
|
throw new Error('Restore this feature');
|
|
139
128
|
} else if (layer.useColorTextureElevation) {
|
|
140
129
|
this.scaleFactor = layer.colorTextureElevationMaxZ - layer.colorTextureElevationMinZ;
|
|
141
|
-
defaultEle.mode =
|
|
130
|
+
defaultEle.mode = ELEVATION_MODES.COLOR;
|
|
142
131
|
defaultEle.bias = layer.colorTextureElevationMinZ;
|
|
143
132
|
this.min = this.layer.colorTextureElevationMinZ;
|
|
144
133
|
this.max = this.layer.colorTextureElevationMaxZ;
|
|
@@ -189,7 +178,7 @@ class RasterElevationTile extends RasterTile {
|
|
|
189
178
|
const {
|
|
190
179
|
min,
|
|
191
180
|
max
|
|
192
|
-
} =
|
|
181
|
+
} = computeMinMaxElevation(this.textures[0], this.offsetScales[0], {
|
|
193
182
|
noDataValue: this.layer.noDataValue,
|
|
194
183
|
zmin: this.layer.zmin,
|
|
195
184
|
zmax: this.layer.zmax
|
|
@@ -209,12 +198,11 @@ class RasterElevationTile extends RasterTile {
|
|
|
209
198
|
const parentTexture = this.textures[0];
|
|
210
199
|
const parentDataElevation = parentTexture && parentTexture.image && parentTexture.image.data;
|
|
211
200
|
const dataElevation = texture.image && texture.image.data;
|
|
212
|
-
if (dataElevation && !
|
|
213
|
-
|
|
201
|
+
if (dataElevation && !checkNodeElevationTextureValidity(dataElevation, nodatavalue)) {
|
|
202
|
+
insertSignificantValuesFromParent(dataElevation, parentDataElevation && dataParent(texture, parentTexture, parentDataElevation, pitch), nodatavalue);
|
|
214
203
|
}
|
|
215
204
|
}
|
|
216
205
|
}
|
|
217
|
-
exports.RasterElevationTile = RasterElevationTile;
|
|
218
206
|
function dataParent(texture, parentTexture, parentDataElevation, pitch) {
|
|
219
207
|
texture.extent.offsetToParent(parentTexture.extent, pitch);
|
|
220
208
|
return i => parentDataElevation[getIndiceWithPitch(i, pitch, 256)];
|
|
@@ -1,9 +1,3 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
1
|
const MODES = {
|
|
8
2
|
FINAL: 0,
|
|
9
3
|
// final color
|
|
@@ -32,8 +26,7 @@ function push(object3d, mode) {
|
|
|
32
26
|
// Rendering mode
|
|
33
27
|
// According to the rendering mode, the material's object switches
|
|
34
28
|
// the mode property of the materials
|
|
35
|
-
|
|
29
|
+
export default {
|
|
36
30
|
MODES,
|
|
37
31
|
push
|
|
38
|
-
};
|
|
39
|
-
exports.default = _default;
|
|
32
|
+
};
|
|
@@ -1,16 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
8
|
-
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); }
|
|
9
|
-
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';
|
|
10
2
|
/* babel-plugin-inline-import './Chunk/color_layers_pars_fragment.glsl' */
|
|
11
3
|
const color_layers_pars_fragment = "struct Layer {\n int textureOffset;\n int crs;\n int effect_type;\n float effect_parameter;\n float opacity;\n bool transparent;\n};\n\n#include <itowns/custom_header_colorLayer>\n\nuniform sampler2D colorTextures[NUM_FS_TEXTURES];\nuniform vec4 colorOffsetScales[NUM_FS_TEXTURES];\nuniform Layer colorLayers[NUM_FS_TEXTURES];\nuniform int colorTextureCount;\n\nvec3 uvs[NUM_CRS];\n\nfloat getBorderDistance(vec2 uv) {\n vec2 p2 = min(uv, 1. -uv);\n return min(p2.x, p2.y);\n}\n\nfloat tolerance = 0.99;\n\nvec4 applyWhiteToInvisibleEffect(vec4 color) {\n float a = dot(color.rgb, vec3(0.333333333));\n if (a >= tolerance) {\n color.a = 0.0;\n }\n return color;\n}\n\nvec4 applyLightColorToInvisibleEffect(vec4 color, float intensity) {\n float a = max(0.05,1. - length(color.xyz - 1.));\n color.a *= 1.0 - pow(abs(a), intensity);\n color.rgb *= color.rgb * color.rgb;\n return color;\n}\n\n#if defined(DEBUG)\nuniform bool showOutline;\nuniform vec3 outlineColors[NUM_CRS];\nuniform float outlineWidth;\n\nvec4 getOutlineColor(vec3 outlineColor, vec2 uv) {\n float alpha = 1. - clamp(getBorderDistance(uv) / outlineWidth, 0., 1.);\n return vec4(outlineColor, alpha);\n}\n#endif\n\nuniform float minBorderDistance;\nvec4 getLayerColor(int textureOffset, sampler2D tex, vec4 offsetScale, Layer layer) {\n if ( textureOffset >= colorTextureCount ) return vec4(0);\n\n vec3 uv;\n // #pragma unroll_loop\n for ( int i = 0; i < NUM_CRS; i ++ ) {\n if ( i == layer.crs ) uv = uvs[ i ];\n }\n\n float borderDistance = getBorderDistance(uv.xy);\n if (textureOffset != layer.textureOffset + int(uv.z) || borderDistance < minBorderDistance ) return vec4(0);\n vec4 color = texture2D(tex, pitUV(uv.xy, offsetScale));\n if (layer.effect_type == 3) {\n #include <itowns/custom_body_colorLayer>\n } else {\n if (layer.transparent && color.a != 0.0) {\n color.rgb /= color.a;\n }\n\n if (layer.effect_type == 1) {\n color = applyLightColorToInvisibleEffect(color, layer.effect_parameter);\n } else if (layer.effect_type == 2) {\n color = applyWhiteToInvisibleEffect(color);\n }\n }\n color.a *= layer.opacity;\n return color;\n}\n";
|
|
12
4
|
/* babel-plugin-inline-import './Chunk/elevation_pars_vertex.glsl' */
|
|
13
|
-
const elevation_pars_vertex = "#if NUM_VS_TEXTURES > 0\n struct Layer {\n float scale;\n float bias;\n int mode;\n float zmin;\n float zmax;\n };\n\n uniform Layer elevationLayers[NUM_VS_TEXTURES];\n uniform sampler2D elevationTextures[NUM_VS_TEXTURES];\n uniform vec4 elevationOffsetScales[NUM_VS_TEXTURES];\n uniform int elevationTextureCount;\n uniform float geoidHeight;\n\n highp float decode32(highp vec4 rgba) {\n highp float Sign = 1.0 - step(128.0,rgba[0])*2.0;\n highp float Exponent = 2.0 * mod(rgba[0],128.0) + step(128.0,rgba[1]) - 127.0;\n highp float Mantissa = mod(rgba[1],128.0)*65536.0 + rgba[2]*256.0 +rgba[3] + float(0x800000);\n highp float Result = Sign * exp2(Exponent) * (Mantissa * exp2(-23.0 ));\n return Result;\n }\n\n float getElevationMode(vec2 uv, sampler2D tex, int mode) {\n if (mode == ELEVATION_RGBA)\n return decode32(texture2D( tex, uv ).abgr * 255.0);\n if (mode == ELEVATION_DATA || mode == ELEVATION_COLOR)\n
|
|
5
|
+
const elevation_pars_vertex = "#if NUM_VS_TEXTURES > 0\n struct Layer {\n float scale;\n float bias;\n int mode;\n float zmin;\n float zmax;\n };\n\n uniform Layer elevationLayers[NUM_VS_TEXTURES];\n uniform sampler2D elevationTextures[NUM_VS_TEXTURES];\n uniform vec4 elevationOffsetScales[NUM_VS_TEXTURES];\n uniform int elevationTextureCount;\n uniform float geoidHeight;\n\n highp float decode32(highp vec4 rgba) {\n highp float Sign = 1.0 - step(128.0,rgba[0])*2.0;\n highp float Exponent = 2.0 * mod(rgba[0],128.0) + step(128.0,rgba[1]) - 127.0;\n highp float Mantissa = mod(rgba[1],128.0)*65536.0 + rgba[2]*256.0 +rgba[3] + float(0x800000);\n highp float Result = Sign * exp2(Exponent) * (Mantissa * exp2(-23.0 ));\n return Result;\n }\n\n float getElevationMode(vec2 uv, sampler2D tex, int mode) {\n if (mode == ELEVATION_RGBA)\n return decode32(texture2D( tex, uv ).abgr * 255.0);\n if (mode == ELEVATION_DATA || mode == ELEVATION_COLOR)\n return texture2D( tex, uv ).r;\n return 0.;\n }\n\n float getElevation(vec2 uv, sampler2D tex, vec4 offsetScale, Layer layer) {\n // Elevation textures are inverted along the y-axis\n uv = vec2(uv.x, 1.0 - uv.y);\n uv = uv * offsetScale.zw + offsetScale.xy;\n float d = clamp(getElevationMode(uv, tex, layer.mode), layer.zmin, layer.zmax);\n return d * layer.scale + layer.bias;\n }\n#endif\n";
|
|
14
6
|
/* babel-plugin-inline-import './Chunk/elevation_vertex.glsl' */
|
|
15
7
|
const elevation_vertex = "#if NUM_VS_TEXTURES > 0\n if(elevationTextureCount > 0) {\n float elevation = getElevation(uv, elevationTextures[0], elevationOffsetScales[0], elevationLayers[0]);\n transformed += elevation * normal;\n }\n#endif\n";
|
|
16
8
|
/* babel-plugin-inline-import './Chunk/geoid_vertex.glsl' */
|
|
@@ -26,7 +18,7 @@ const lighting_pars_fragment = "uniform bool lightingEnabled;\nuniform vec3 ligh
|
|
|
26
18
|
/* babel-plugin-inline-import './Chunk/mode_pars_fragment.glsl' */
|
|
27
19
|
const mode_pars_fragment = "#if MODE == MODE_ID || MODE == MODE_DEPTH\n#include <packing>\n#endif\n\n#if MODE == MODE_ID\nuniform int objectId;\n#endif\n";
|
|
28
20
|
/* babel-plugin-inline-import './Chunk/mode_depth_fragment.glsl' */
|
|
29
|
-
const mode_depth_fragment = "#if defined(USE_LOGDEPTHBUF)
|
|
21
|
+
const mode_depth_fragment = "#if defined(USE_LOGDEPTHBUF)\ngl_FragColor = packDepthToRGBA(gl_FragDepthEXT);\n#else\nfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\ngl_FragColor = packDepthToRGBA(fragCoordZ);\n#endif\n";
|
|
30
22
|
/* babel-plugin-inline-import './Chunk/mode_id_fragment.glsl' */
|
|
31
23
|
const mode_id_fragment = "// 16777216.0 == 256.0 * 256.0 * 256.0\ngl_FragColor = packDepthToRGBA(float(objectId) / 16777216.0);\n";
|
|
32
24
|
/* babel-plugin-inline-import './Chunk/overlay_fragment.glsl' */
|
|
@@ -37,18 +29,12 @@ const overlay_pars_fragment = "uniform vec3 overlayColor;\nuniform float overla
|
|
|
37
29
|
const pitUV = "vec2 pitUV(vec2 uv, vec4 pit)\n{\n return uv * pit.zw + vec2(pit.x, 1.0 - pit.w - pit.y);\n}\n\n";
|
|
38
30
|
/* babel-plugin-inline-import './Chunk/precision_qualifier.glsl' */
|
|
39
31
|
const precision_qualifier = "precision highp float;\nprecision highp int;\n";
|
|
40
|
-
/* babel-plugin-inline-import './Chunk/project_pars_vertex.glsl' */
|
|
41
|
-
const project_pars_vertex = "attribute vec3 position;\nuniform mat4 projectionMatrix;\nuniform mat4 modelViewMatrix;\n";
|
|
42
32
|
/* babel-plugin-inline-import './Chunk/projective_texturing_vertex.glsl' */
|
|
43
33
|
const projective_texturing_vertex = "for(int i = 0; i < ORIENTED_IMAGES_COUNT; ++i)\n projectiveTextureCoords[i] = projectiveTextureMatrix[i] * mvPosition;\n";
|
|
44
34
|
/* babel-plugin-inline-import './Chunk/projective_texturing_pars_vertex.glsl' */
|
|
45
35
|
const projective_texturing_pars_vertex = "uniform mat4 projectiveTextureMatrix[ORIENTED_IMAGES_COUNT];\nvarying vec4 projectiveTextureCoords[ORIENTED_IMAGES_COUNT];\n";
|
|
46
36
|
/* babel-plugin-inline-import './Chunk/projective_texturing_pars_fragment.glsl' */
|
|
47
37
|
const projective_texturing_pars_fragment = "uniform sampler2D projectiveTexture[ORIENTED_IMAGES_COUNT];\nuniform sampler2D mask[ORIENTED_IMAGES_COUNT];\nvarying vec4 projectiveTextureCoords[ORIENTED_IMAGES_COUNT];\nuniform float projectiveTextureAlphaBorder;\nuniform float opacity;\nuniform bool boostLight;\n\nstruct Distortion {\n vec2 size;\n#if USE_DISTORTION\n vec2 pps;\n vec4 polynom;\n vec3 l1l2;\n#endif\n};\n\nuniform Distortion projectiveTextureDistortion[ORIENTED_IMAGES_COUNT];\n\nfloat getAlphaBorder(vec2 p)\n{\n vec2 d = clamp(projectiveTextureAlphaBorder * min(p, 1. - p), 0., 1.);\n return min(d.x, d.y);\n}\n\n#if USE_DISTORTION\nvoid distort(inout vec2 p, vec4 polynom, vec2 pps)\n{\n vec2 v = p - pps;\n float v2 = dot(v, v);\n if (v2 > polynom.w) {\n p = vec2(-1.);\n }\n else {\n p += (v2 * (polynom.x + v2 * (polynom.y + v2 * polynom.z) ) ) * v;\n }\n}\n\nvoid distort(inout vec2 p, vec4 polynom, vec3 l1l2, vec2 pps)\n{\n if ((l1l2.x == 0.) && (l1l2.y == 0.)) {\n distort(p, polynom, pps);\n } else {\n vec2 AB = (p - pps) / l1l2.z;\n float R = length(AB);\n float lambda = atan(R) / R;\n vec2 ab = lambda * AB;\n float rho2 = dot(ab, ab);\n float r357 = 1. + rho2* (polynom.x + rho2* (polynom.y + rho2 * polynom.z));\n p = pps + l1l2.z * (r357 * ab + vec2(dot(l1l2.xy, ab), l1l2.y * ab.x));\n }\n}\n#endif\n\nvec4 mixBaseColor(vec4 aColor, vec4 baseColor) {\n #ifdef USE_BASE_MATERIAL\n baseColor.rgb = aColor.a == 1.0 ? aColor.rgb : mix(baseColor, aColor, aColor.a).rgb;\n baseColor.a = min(1.0, aColor.a + baseColor.a);\n #else\n baseColor.rgb += aColor.rgb * aColor.a;\n baseColor.a += aColor.a;\n #endif\n return baseColor;\n}\n\nvec4 projectiveTextureColor(vec4 coords, Distortion distortion, sampler2D tex, sampler2D mask, vec4 baseColor) {\n vec3 p = coords.xyz / coords.w;\n if(p.z * p.z < 1.) {\n#if USE_DISTORTION\n p.xy *= distortion.size;\n distort(p.xy, distortion.polynom, distortion.l1l2, distortion.pps);\n p.xy /= distortion.size;\n#endif\n\n float d = getAlphaBorder(p.xy) * texture2D(mask, p.xy).r;\n\n if(d > 0.) {\n\n#if DEBUG_ALPHA_BORDER\n vec3 r = texture2D(tex, p.xy).rgb;\n return mixBaseColor(vec4( r.r * d, r.g, r.b, 1.0), baseColor);\n#else\n vec4 color = texture2D(tex, p.xy);\n color.a *= d;\n if (boostLight) {\n return mixBaseColor(vec4(sqrt(color.rgb), color.a), baseColor);\n } else {\n return mixBaseColor(color, baseColor);\n }\n#endif\n\n }\n }\n return mixBaseColor(vec4(0.), baseColor);\n}\n";
|
|
48
|
-
/* babel-plugin-inline-import './Chunk/WebGL2_pars_vertex.glsl' */
|
|
49
|
-
const WebGL2_pars_vertex = "// Copy from GLSL 3.0 conversion for built-in materials and ShaderMaterial in THREE.WebGLProgram\n// https://github.com/mrdoob/three.js/blob/696d7836d1fc56c4702a475e6991c4adef7357f4/src/renderers/webgl/WebGLProgram.js#L682\n#if defined(WEBGL2)\n#define attribute in\n#define varying out\n#define texture2D texture\n#endif\n";
|
|
50
|
-
/* babel-plugin-inline-import './Chunk/WebGL2_pars_fragment.glsl' */
|
|
51
|
-
const WebGL2_pars_fragment = "// Copy from GLSL 3.0 conversion for built-in materials and ShaderMaterial in THREE.WebGLProgram\n// https://github.com/mrdoob/three.js/blob/696d7836d1fc56c4702a475e6991c4adef7357f4/src/renderers/webgl/WebGLProgram.js#L682\n#if defined(WEBGL2)\n#define varying in\nout highp vec4 pc_fragColor;\n#define gl_FragColor pc_fragColor\n#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad\n#endif\n";
|
|
52
38
|
const custom_header_colorLayer = '// no custom header';
|
|
53
39
|
const custom_body_colorLayer = '// no custom body';
|
|
54
40
|
const itownsShaderChunk = {
|
|
@@ -71,10 +57,7 @@ const itownsShaderChunk = {
|
|
|
71
57
|
precision_qualifier,
|
|
72
58
|
projective_texturing_vertex,
|
|
73
59
|
projective_texturing_pars_vertex,
|
|
74
|
-
projective_texturing_pars_fragment
|
|
75
|
-
project_pars_vertex,
|
|
76
|
-
WebGL2_pars_vertex,
|
|
77
|
-
WebGL2_pars_fragment
|
|
60
|
+
projective_texturing_pars_fragment
|
|
78
61
|
};
|
|
79
62
|
|
|
80
63
|
/**
|
|
@@ -174,5 +157,4 @@ class ShaderChunkManager {
|
|
|
174
157
|
}
|
|
175
158
|
}
|
|
176
159
|
const ShaderChunk = new ShaderChunkManager(THREE.ShaderChunk, 'itowns/');
|
|
177
|
-
|
|
178
|
-
exports.default = _default;
|
|
160
|
+
export default ShaderChunk;
|
|
@@ -1,14 +1,8 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
1
|
const pattern_gl_Position = 'gl_Position.*(?![^]*gl_Position)';
|
|
8
2
|
const pattern_Main = '[^\\w]*main[^\\w]*(void)?[^\\w]*{';
|
|
9
3
|
const rePosition = new RegExp(pattern_gl_Position);
|
|
10
4
|
const reMain = new RegExp(pattern_Main);
|
|
11
|
-
|
|
5
|
+
export default {
|
|
12
6
|
patchMaterialForLogDepthSupport(material) {
|
|
13
7
|
// Check if the shader does not already use the log depth buffer
|
|
14
8
|
if (material.vertexShader.includes('USE_LOGDEPTHBUF') || material.vertexShader.includes('logdepthbuf_pars_vertex')) {
|
|
@@ -50,5 +44,4 @@ var _default = {
|
|
|
50
44
|
}
|
|
51
45
|
return string.replace(/#pragma unroll_loop\s+for\s*\(\s*int\s+i\s*=\s*([\w\d]+);\s*i\s+<\s+([\w\d]+);\s*i\s*\+\+\s*\)\s*\{\n([^}]*)\}/g, replace);
|
|
52
46
|
}
|
|
53
|
-
};
|
|
54
|
-
exports.default = _default;
|
|
47
|
+
};
|
|
@@ -1,18 +1,10 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
8
|
-
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); }
|
|
9
|
-
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; }
|
|
10
1
|
/*
|
|
11
2
|
* To change this license header, choose License Headers in Project Properties.
|
|
12
3
|
* To change this template file, choose Tools | Templates
|
|
13
4
|
* and open the template in the editor.
|
|
14
5
|
*/
|
|
15
6
|
|
|
7
|
+
import * as THREE from 'three';
|
|
16
8
|
function SphereHelper(radius) {
|
|
17
9
|
THREE.Mesh.call(this);
|
|
18
10
|
this.geometry = new THREE.SphereGeometry(radius, 8, 8);
|
|
@@ -28,5 +20,4 @@ SphereHelper.prototype.update = function (radius) {
|
|
|
28
20
|
this.geometry.dispose();
|
|
29
21
|
this.geometry = new THREE.SphereGeometry(radius, 8, 8);
|
|
30
22
|
};
|
|
31
|
-
|
|
32
|
-
exports.default = _default;
|
|
23
|
+
export default SphereHelper;
|
package/lib/Renderer/WebXR.js
CHANGED
|
@@ -1,12 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.default = void 0;
|
|
7
|
-
var THREE = _interopRequireWildcard(require("three"));
|
|
8
|
-
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); }
|
|
9
|
-
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';
|
|
10
2
|
async function shutdownXR(session) {
|
|
11
3
|
if (session) {
|
|
12
4
|
await session.end();
|
|
@@ -56,5 +48,4 @@ const initializeWebXR = (view, options) => {
|
|
|
56
48
|
});
|
|
57
49
|
});
|
|
58
50
|
};
|
|
59
|
-
|
|
60
|
-
exports.default = _default;
|
|
51
|
+
export default initializeWebXR;
|
|
@@ -1,30 +1,21 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
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 = _interopRequireWildcard(require("three"));
|
|
9
|
-
var _Capabilities = _interopRequireDefault(require("../Core/System/Capabilities"));
|
|
10
|
-
var _LayeredMaterial = require("./LayeredMaterial");
|
|
11
|
-
var _WebGL = _interopRequireDefault(require("../ThreeExtended/capabilities/WebGL"));
|
|
12
|
-
var _Label2DRenderer = _interopRequireDefault(require("./Label2DRenderer"));
|
|
13
|
-
var _Undeprecator = require("../Core/Deprecated/Undeprecator");
|
|
14
|
-
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); }
|
|
15
|
-
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; }
|
|
16
1
|
/**
|
|
17
2
|
* Generated On: 2015-10-5
|
|
18
3
|
* Class: c3DEngine
|
|
19
4
|
* Description: 3DEngine est l'interface avec le framework webGL.
|
|
20
5
|
*/
|
|
21
6
|
|
|
7
|
+
import * as THREE from 'three';
|
|
8
|
+
import Capabilities from "../Core/System/Capabilities.js";
|
|
9
|
+
import { unpack1K } from "./LayeredMaterial.js";
|
|
10
|
+
import WEBGL from "../ThreeExtended/capabilities/WebGL.js";
|
|
11
|
+
import Label2DRenderer from "./Label2DRenderer.js";
|
|
12
|
+
import { deprecatedC3DEngineWebGLOptions } from "../Core/Deprecated/Undeprecator.js";
|
|
22
13
|
const depthRGBA = new THREE.Vector4();
|
|
23
14
|
class c3DEngine {
|
|
24
15
|
constructor(rendererOrDiv) {
|
|
25
16
|
let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
deprecatedC3DEngineWebGLOptions(options);
|
|
18
|
+
|
|
28
19
|
// pick sensible default options
|
|
29
20
|
if (options.antialias === undefined) {
|
|
30
21
|
options.antialias = true;
|
|
@@ -33,10 +24,7 @@ class c3DEngine {
|
|
|
33
24
|
options.alpha = true;
|
|
34
25
|
}
|
|
35
26
|
if (options.logarithmicDepthBuffer === undefined) {
|
|
36
|
-
options.logarithmicDepthBuffer =
|
|
37
|
-
}
|
|
38
|
-
if (options.isWebGL2 === undefined) {
|
|
39
|
-
options.isWebGL2 = true;
|
|
27
|
+
options.logarithmicDepthBuffer = true;
|
|
40
28
|
}
|
|
41
29
|
|
|
42
30
|
// If rendererOrDiv parameter is a domElement, we use it as support to display data.
|
|
@@ -84,10 +72,10 @@ class c3DEngine {
|
|
|
84
72
|
|
|
85
73
|
// Create renderer
|
|
86
74
|
try {
|
|
87
|
-
this.label2dRenderer = new
|
|
75
|
+
this.label2dRenderer = new Label2DRenderer();
|
|
88
76
|
this.label2dRenderer.setSize(this.width, this.height);
|
|
89
77
|
viewerDiv.appendChild(this.label2dRenderer.domElement);
|
|
90
|
-
this.renderer = renderer || new
|
|
78
|
+
this.renderer = renderer || new THREE.WebGLRenderer({
|
|
91
79
|
canvas: document.createElement('canvas'),
|
|
92
80
|
antialias: options.antialias,
|
|
93
81
|
alpha: options.alpha,
|
|
@@ -97,30 +85,10 @@ class c3DEngine {
|
|
|
97
85
|
this.renderer.domElement.style.zIndex = 0;
|
|
98
86
|
this.renderer.domElement.style.top = 0;
|
|
99
87
|
} catch (ex) {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
this.renderer = null;
|
|
103
|
-
}
|
|
104
|
-
if (!this.renderer) {
|
|
105
|
-
if (!_WebGL.default.isWebGLAvailable()) {
|
|
106
|
-
viewerDiv.appendChild(_WebGL.default.getErrorMessage(1));
|
|
107
|
-
} else if (!_WebGL.default.isWebGL2Available()) {
|
|
108
|
-
viewerDiv.appendChild(_WebGL.default.getErrorMessage(2));
|
|
109
|
-
}
|
|
110
|
-
throw new Error('WebGL unsupported');
|
|
111
|
-
}
|
|
112
|
-
if (!renderer && options.logarithmicDepthBuffer) {
|
|
113
|
-
// We don't support logarithmicDepthBuffer when EXT_frag_depth is missing.
|
|
114
|
-
// So recreated a renderer if needed.
|
|
115
|
-
if (!this.renderer.capabilities.isWebGL2 && !this.renderer.extensions.get('EXT_frag_depth')) {
|
|
116
|
-
this.renderer.dispose();
|
|
117
|
-
this.renderer = new (options.isWebGL2 ? THREE.WebGLRenderer : THREE.WebGL1Renderer)({
|
|
118
|
-
canvas: document.createElement('canvas'),
|
|
119
|
-
antialias: options.antialias,
|
|
120
|
-
alpha: options.alpha,
|
|
121
|
-
logarithmicDepthBuffer: false
|
|
122
|
-
});
|
|
88
|
+
if (!WEBGL.isWebGL2Available()) {
|
|
89
|
+
viewerDiv.appendChild(WEBGL.getErrorMessage(2));
|
|
123
90
|
}
|
|
91
|
+
throw ex;
|
|
124
92
|
}
|
|
125
93
|
|
|
126
94
|
// Let's allow our canvas to take focus
|
|
@@ -131,7 +99,7 @@ class c3DEngine {
|
|
|
131
99
|
if (this.renderer.domElement.tabIndex === -1) {
|
|
132
100
|
this.renderer.domElement.tabIndex = -1;
|
|
133
101
|
}
|
|
134
|
-
|
|
102
|
+
Capabilities.updateCapabilities(this.renderer);
|
|
135
103
|
this.renderer.setClearColor(0x030508);
|
|
136
104
|
this.renderer.autoClear = false;
|
|
137
105
|
this.renderer.sortObjects = true;
|
|
@@ -148,7 +116,7 @@ class c3DEngine {
|
|
|
148
116
|
|
|
149
117
|
/**
|
|
150
118
|
* return renderer THREE.js
|
|
151
|
-
* @returns {
|
|
119
|
+
* @returns {THREE.WebGLRenderer}
|
|
152
120
|
*/
|
|
153
121
|
getRenderer() {
|
|
154
122
|
return this.renderer;
|
|
@@ -231,17 +199,16 @@ class c3DEngine {
|
|
|
231
199
|
}
|
|
232
200
|
depthBufferRGBAValueToOrthoZ(depthBufferRGBA, camera) {
|
|
233
201
|
depthRGBA.fromArray(depthBufferRGBA).divideScalar(255.0);
|
|
234
|
-
if (
|
|
235
|
-
const gl_FragDepthEXT =
|
|
202
|
+
if (Capabilities.isLogDepthBufferSupported() && camera.type == 'PerspectiveCamera') {
|
|
203
|
+
const gl_FragDepthEXT = unpack1K(depthRGBA);
|
|
236
204
|
const logDepthBufFC = 2.0 / (Math.log(camera.far + 1.0) / Math.LN2);
|
|
237
205
|
// invert function : gl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;
|
|
238
206
|
return 2 ** (2 * gl_FragDepthEXT / logDepthBufFC);
|
|
239
207
|
} else {
|
|
240
|
-
let gl_FragCoord_Z =
|
|
208
|
+
let gl_FragCoord_Z = unpack1K(depthRGBA);
|
|
241
209
|
gl_FragCoord_Z = gl_FragCoord_Z * 2.0 - 1.0;
|
|
242
210
|
return gl_FragCoord_Z;
|
|
243
211
|
}
|
|
244
212
|
}
|
|
245
213
|
}
|
|
246
|
-
|
|
247
|
-
exports.default = _default;
|
|
214
|
+
export default c3DEngine;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import Fetcher from "../Provider/Fetcher.js";
|
|
2
|
+
import C3DTilesSource from "./C3DTilesSource.js";
|
|
3
|
+
function findSessionId(tile) {
|
|
4
|
+
if (!tile) {
|
|
5
|
+
return null;
|
|
6
|
+
}
|
|
7
|
+
if (tile.content && tile.content.uri) {
|
|
8
|
+
const searchParams = new URLSearchParams(tile.content.uri.slice(tile.content.uri.indexOf('?') + 1));
|
|
9
|
+
return searchParams.get('session');
|
|
10
|
+
} else if (tile.children && tile.children.length > 0) {
|
|
11
|
+
for (const c of tile.children) {
|
|
12
|
+
const sessionId = findSessionId(c);
|
|
13
|
+
if (sessionId) {
|
|
14
|
+
return sessionId;
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* @classdesc
|
|
23
|
+
* An object defining the source connection to a 3DTiles asset from a [Google api](https://tile.googleapis.com).
|
|
24
|
+
*
|
|
25
|
+
* @extends C3DTilesSource
|
|
26
|
+
*
|
|
27
|
+
* @property {boolean} isC3DTilesGoogleSource - Used to checkout whether this source is a C3DTilesGoogleSource. Default is
|
|
28
|
+
* true. You should not change this, as it is used internally for optimisation.
|
|
29
|
+
* @property {string} url - The URL to the tileset json.
|
|
30
|
+
* @property {string} baseUrl - The base URL to access tiles.
|
|
31
|
+
*/
|
|
32
|
+
class C3DTilesGoogleSource extends C3DTilesSource {
|
|
33
|
+
/**
|
|
34
|
+
* Create a new Source for 3D Tiles data from Google api (experimental).
|
|
35
|
+
*
|
|
36
|
+
* @constructor
|
|
37
|
+
* @extends C3DTilesSource
|
|
38
|
+
*
|
|
39
|
+
* @property {boolean} isC3DTilesGoogleSource - Used to checkout whether this source is a C3DTilesGoogleSource. Default is
|
|
40
|
+
* true. You should not change this, as it is used internally for optimisation.
|
|
41
|
+
* @param {Object} source An object that can contain all properties of a C3DTilesGoogleSource and {@link Source}.
|
|
42
|
+
* @param {String} source.key Your google tiles map API access key
|
|
43
|
+
*/
|
|
44
|
+
constructor(source) {
|
|
45
|
+
if (!source.key) {
|
|
46
|
+
throw new Error('[C3DTilesGoogleSource]: A API key for the google map tiles API is required');
|
|
47
|
+
}
|
|
48
|
+
// URL to the root tileset
|
|
49
|
+
source.url = `https://tile.googleapis.com/v1/3dtiles/root.json?key=${source.key}`;
|
|
50
|
+
super(source);
|
|
51
|
+
this.isC3DTilesGoogleSource = true;
|
|
52
|
+
this.baseUrl = 'https://tile.googleapis.com';
|
|
53
|
+
this.key = source.key;
|
|
54
|
+
this.whenReady = Fetcher.json(source.url, this.networkOptions).then(json => {
|
|
55
|
+
if (json && json.root) {
|
|
56
|
+
this.sessionId = findSessionId(json.root);
|
|
57
|
+
if (this.sessionId === null) {
|
|
58
|
+
throw new Error('[C3DTilesGoogleSource]: Cannot find sessionId from the tileset while it is mandatory to request tiles.');
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return json;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Adds the key and session to the tile url (non-standard behaviour, that is specific to Google 3D tiles),
|
|
67
|
+
* see https://github.com/CesiumGS/3d-tiles/issues/746
|
|
68
|
+
* @param {String} url the tile url
|
|
69
|
+
* @returns {String} the tile url with Google map tiles api key and session parameters added at the end of the url
|
|
70
|
+
*/
|
|
71
|
+
getTileUrl(url) {
|
|
72
|
+
const extraParameters = `key=${this.key}&session=${this.sessionId}`;
|
|
73
|
+
return /\?/.test(url) ? `${url}&${extraParameters}` : `${url}?${extraParameters}`;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export default C3DTilesGoogleSource;
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import Fetcher from "../Provider/Fetcher.js";
|
|
2
|
+
import C3DTilesSource from "./C3DTilesSource.js";
|
|
2
3
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _Fetcher = _interopRequireDefault(require("../Provider/Fetcher"));
|
|
9
|
-
var _C3DTilesSource = _interopRequireDefault(require("./C3DTilesSource"));
|
|
10
4
|
/**
|
|
11
5
|
* @classdesc
|
|
12
6
|
* An object defining the source connection to a 3DTiles asset of a [Cesium ion server](https://cesium.com/learn/ion/).
|
|
@@ -20,7 +14,7 @@ var _C3DTilesSource = _interopRequireDefault(require("./C3DTilesSource"));
|
|
|
20
14
|
* @property {string} accessToken - The Cesium ion access token used to retrieve the resource.
|
|
21
15
|
* @property {string} assetId - The id of the asset on Cesium ion.
|
|
22
16
|
*/
|
|
23
|
-
class C3DTilesIonSource extends
|
|
17
|
+
class C3DTilesIonSource extends C3DTilesSource {
|
|
24
18
|
/**
|
|
25
19
|
* Create a new Source for 3D Tiles data from Cesium ion.
|
|
26
20
|
*
|
|
@@ -46,7 +40,7 @@ class C3DTilesIonSource extends _C3DTilesSource.default {
|
|
|
46
40
|
this.assetId = source.assetId;
|
|
47
41
|
|
|
48
42
|
// get asset metadata
|
|
49
|
-
this.whenReady =
|
|
43
|
+
this.whenReady = Fetcher.json(source.url, this.networkOptions).then(json => {
|
|
50
44
|
if (json.type !== '3DTILES') {
|
|
51
45
|
throw new Error(`${json.type} datasets from Cesium ion are not supported with C3DTilesIonSource. ` + 'Only 3D Tiles datasets are supported.');
|
|
52
46
|
}
|
|
@@ -55,9 +49,8 @@ class C3DTilesIonSource extends _C3DTilesSource.default {
|
|
|
55
49
|
this.networkOptions.headers = {};
|
|
56
50
|
this.networkOptions.headers.Authorization = `Bearer ${json.accessToken}`;
|
|
57
51
|
this.attribution = json.attributions;
|
|
58
|
-
return
|
|
52
|
+
return Fetcher.json(this.url, this.networkOptions);
|
|
59
53
|
});
|
|
60
54
|
}
|
|
61
55
|
}
|
|
62
|
-
|
|
63
|
-
exports.default = _default;
|
|
56
|
+
export default C3DTilesIonSource;
|
|
@@ -1,12 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import Source from "./Source.js";
|
|
2
|
+
import Fetcher from "../Provider/Fetcher.js";
|
|
2
3
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _Source = _interopRequireDefault(require("./Source"));
|
|
9
|
-
var _Fetcher = _interopRequireDefault(require("../Provider/Fetcher"));
|
|
10
4
|
/**
|
|
11
5
|
* @classdesc
|
|
12
6
|
* An object defining the source connection to a 3DTiles dataset from a web server.
|
|
@@ -18,7 +12,7 @@ var _Fetcher = _interopRequireDefault(require("../Provider/Fetcher"));
|
|
|
18
12
|
* @property {string} url - The URL of the tileset json.
|
|
19
13
|
* @property {string} baseUrl - The base URL to access tiles.
|
|
20
14
|
*/
|
|
21
|
-
class C3DTilesSource extends
|
|
15
|
+
class C3DTilesSource extends Source {
|
|
22
16
|
/**
|
|
23
17
|
* Create a new Source for 3D Tiles data from a web server.
|
|
24
18
|
*
|
|
@@ -32,8 +26,7 @@ class C3DTilesSource extends _Source.default {
|
|
|
32
26
|
super(source);
|
|
33
27
|
this.isC3DTilesSource = true;
|
|
34
28
|
this.baseUrl = this.url.slice(0, this.url.lastIndexOf('/') + 1);
|
|
35
|
-
this.whenReady =
|
|
29
|
+
this.whenReady = Fetcher.json(this.url, this.networkOptions);
|
|
36
30
|
}
|
|
37
31
|
}
|
|
38
|
-
|
|
39
|
-
exports.default = _default;
|
|
32
|
+
export default C3DTilesSource;
|
|
@@ -1,15 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import proj4 from 'proj4';
|
|
2
|
+
import LASParser from "../Parser/LASParser.js";
|
|
3
|
+
import PotreeBinParser from "../Parser/PotreeBinParser.js";
|
|
4
|
+
import Fetcher from "../Provider/Fetcher.js";
|
|
5
|
+
import Source from "./Source.js";
|
|
2
6
|
|
|
3
|
-
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
-
Object.defineProperty(exports, "__esModule", {
|
|
5
|
-
value: true
|
|
6
|
-
});
|
|
7
|
-
exports.default = void 0;
|
|
8
|
-
var _proj = _interopRequireDefault(require("proj4"));
|
|
9
|
-
var _LASParser = _interopRequireDefault(require("../Parser/LASParser"));
|
|
10
|
-
var _PotreeBinParser = _interopRequireDefault(require("../Parser/PotreeBinParser"));
|
|
11
|
-
var _Fetcher = _interopRequireDefault(require("../Provider/Fetcher"));
|
|
12
|
-
var _Source = _interopRequireDefault(require("./Source"));
|
|
13
7
|
/**
|
|
14
8
|
* @classdesc
|
|
15
9
|
* An object defining the source of Entwine Point Tile data. It fetches and
|
|
@@ -24,7 +18,7 @@ var _Source = _interopRequireDefault(require("./Source"));
|
|
|
24
18
|
* @property {string} url - The URL of the directory containing the whole
|
|
25
19
|
* Entwine Point Tile structure.
|
|
26
20
|
*/
|
|
27
|
-
class EntwinePointTileSource extends
|
|
21
|
+
class EntwinePointTileSource extends Source {
|
|
28
22
|
/**
|
|
29
23
|
* @constructor
|
|
30
24
|
*
|
|
@@ -43,14 +37,14 @@ class EntwinePointTileSource extends _Source.default {
|
|
|
43
37
|
this.url = this.url.replace('/ept.json', '');
|
|
44
38
|
|
|
45
39
|
// https://entwine.io/entwine-point-tile.html#ept-json
|
|
46
|
-
this.whenReady =
|
|
40
|
+
this.whenReady = Fetcher.json(`${this.url}/ept.json`, this.networkOptions).then(metadata => {
|
|
47
41
|
// Set parser and its configuration from schema
|
|
48
|
-
this.parse = metadata.dataType === 'laszip' ?
|
|
42
|
+
this.parse = metadata.dataType === 'laszip' ? LASParser.parse : PotreeBinParser.parse;
|
|
49
43
|
this.extension = metadata.dataType === 'laszip' ? 'laz' : 'bin';
|
|
50
44
|
if (metadata.srs && metadata.srs.authority && metadata.srs.horizontal) {
|
|
51
45
|
this.crs = `${metadata.srs.authority}:${metadata.srs.horizontal}`;
|
|
52
|
-
if (!
|
|
53
|
-
|
|
46
|
+
if (!proj4.defs(this.crs)) {
|
|
47
|
+
proj4.defs(this.crs, metadata.srs.wkt);
|
|
54
48
|
}
|
|
55
49
|
if (metadata.srs.vertical && metadata.srs.vertical !== metadata.srs.horizontal) {
|
|
56
50
|
console.warn('EntwinePointTileSource: Vertical coordinates system code is not yet supported.');
|
|
@@ -65,8 +59,7 @@ class EntwinePointTileSource extends _Source.default {
|
|
|
65
59
|
this.span = metadata.span;
|
|
66
60
|
return this;
|
|
67
61
|
});
|
|
68
|
-
this.fetcher =
|
|
62
|
+
this.fetcher = Fetcher.arrayBuffer;
|
|
69
63
|
}
|
|
70
64
|
}
|
|
71
|
-
|
|
72
|
-
exports.default = _default;
|
|
65
|
+
export default EntwinePointTileSource;
|