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.
Files changed (180) hide show
  1. package/dist/debug.js +1 -1
  2. package/dist/debug.js.map +1 -1
  3. package/dist/itowns.js +1 -1
  4. package/dist/itowns.js.map +1 -1
  5. package/dist/itowns_widgets.js +1 -1
  6. package/dist/itowns_widgets.js.map +1 -1
  7. package/examples/{.eslintrc.js → .eslintrc.cjs} +1 -1
  8. package/examples/effects_stereo.html +2 -2
  9. package/examples/entwine_simple_loader.html +24 -8
  10. package/examples/misc_collada.html +2 -2
  11. package/examples/misc_instancing.html +1 -1
  12. package/examples/source_file_gpx_3d.html +2 -2
  13. package/examples/source_stream_wfs_25d.html +11 -11
  14. package/examples/source_stream_wfs_3d.html +1 -1
  15. package/examples/vector_tile_3d_mesh.html +2 -2
  16. package/examples/vector_tile_raster_2d.html +1 -1
  17. package/examples/vector_tile_raster_3d.html +1 -1
  18. package/examples/view_25d_map.html +2 -2
  19. package/examples/view_3d_map.html +3 -3
  20. package/examples/view_3d_map_webxr.html +1 -1
  21. package/examples/view_3d_mns_map.html +3 -3
  22. package/examples/view_immersive.html +1 -1
  23. package/examples/view_multi_25d.html +2 -2
  24. package/examples/widgets_minimap.html +1 -1
  25. package/examples/widgets_searchbar.html +2 -2
  26. package/lib/Controls/FirstPersonControls.js +5 -12
  27. package/lib/Controls/FlyControls.js +4 -13
  28. package/lib/Controls/GlobeControls.js +33 -43
  29. package/lib/Controls/PlanarControls.js +9 -20
  30. package/lib/Controls/StateControl.js +2 -11
  31. package/lib/Controls/StreetControls.js +14 -24
  32. package/lib/Converter/Feature2Mesh.js +77 -70
  33. package/lib/Converter/Feature2Texture.js +15 -25
  34. package/lib/Converter/convertToTile.js +16 -26
  35. package/lib/Converter/textureConverter.js +9 -19
  36. package/lib/Core/3DTiles/C3DTBatchTable.js +5 -13
  37. package/lib/Core/3DTiles/C3DTBatchTableHierarchyExtension.js +1 -8
  38. package/lib/Core/3DTiles/C3DTBoundingVolume.js +17 -27
  39. package/lib/Core/3DTiles/C3DTExtensions.js +1 -8
  40. package/lib/Core/3DTiles/C3DTFeature.js +3 -10
  41. package/lib/Core/3DTiles/C3DTilesEnums.js +3 -11
  42. package/lib/Core/3DTiles/C3DTileset.js +7 -16
  43. package/lib/Core/3DTiles/utils/BinaryPropertyAccessor.js +5 -11
  44. package/lib/Core/AnimationPlayer.js +2 -11
  45. package/lib/Core/Deprecated/Undeprecator.js +9 -20
  46. package/lib/Core/EntwinePointTileNode.js +6 -16
  47. package/lib/Core/Feature.js +16 -30
  48. package/lib/Core/Geographic/CoordStars.js +3 -12
  49. package/lib/Core/Geographic/Coordinates.js +12 -22
  50. package/lib/Core/Geographic/Crs.js +7 -15
  51. package/lib/Core/Geographic/Extent.js +36 -47
  52. package/lib/Core/Geographic/GeoidGrid.js +6 -16
  53. package/lib/Core/Label.js +7 -17
  54. package/lib/Core/MainLoop.js +7 -16
  55. package/lib/Core/Math/Ellipsoid.js +6 -17
  56. package/lib/Core/Picking.js +10 -20
  57. package/lib/Core/PointCloudNode.js +2 -11
  58. package/lib/Core/PotreeNode.js +4 -13
  59. package/lib/Core/Prefab/Globe/Atmosphere.js +17 -26
  60. package/lib/Core/Prefab/Globe/BuilderEllipsoidTile.js +6 -16
  61. package/lib/Core/Prefab/Globe/GlobeLayer.js +19 -28
  62. package/lib/Core/Prefab/Globe/SkyShader.js +2 -11
  63. package/lib/Core/Prefab/GlobeView.js +27 -45
  64. package/lib/Core/Prefab/Planar/PlanarLayer.js +11 -20
  65. package/lib/Core/Prefab/Planar/PlanarTileBuilder.js +6 -16
  66. package/lib/Core/Prefab/PlanarView.js +10 -25
  67. package/lib/Core/Prefab/TileBuilder.js +13 -22
  68. package/lib/Core/Prefab/computeBufferTileGeometry.js +12 -16
  69. package/lib/Core/Scheduler/Cache.js +2 -10
  70. package/lib/Core/Scheduler/CancelledCommandException.js +1 -8
  71. package/lib/Core/Scheduler/Scheduler.js +15 -23
  72. package/lib/Core/Style.js +26 -40
  73. package/lib/Core/System/Capabilities.js +2 -13
  74. package/lib/Core/TileGeometry.js +13 -15
  75. package/lib/Core/TileMesh.js +6 -15
  76. package/lib/Core/View.js +43 -58
  77. package/lib/Layer/C3DTilesLayer.js +29 -41
  78. package/lib/Layer/ColorLayer.js +10 -16
  79. package/lib/Layer/ElevationLayer.js +7 -14
  80. package/lib/Layer/EntwinePointTileLayer.js +11 -18
  81. package/lib/Layer/FeatureGeometryLayer.js +9 -16
  82. package/lib/Layer/GeoidLayer.js +6 -15
  83. package/lib/Layer/GeometryLayer.js +11 -17
  84. package/lib/Layer/InfoLayer.js +5 -14
  85. package/lib/Layer/LabelLayer.js +22 -32
  86. package/lib/Layer/Layer.js +16 -26
  87. package/lib/Layer/LayerUpdateState.js +1 -8
  88. package/lib/Layer/LayerUpdateStrategy.js +7 -18
  89. package/lib/Layer/OrientedImageLayer.js +15 -25
  90. package/lib/Layer/PointCloudLayer.js +27 -24
  91. package/lib/Layer/PotreeLayer.js +8 -18
  92. package/lib/Layer/RasterLayer.js +9 -17
  93. package/lib/Layer/ReferencingLayerProperties.js +1 -8
  94. package/lib/Layer/TiledGeometryLayer.js +37 -33
  95. package/lib/Main.js +86 -707
  96. package/lib/MainBundle.js +4 -34
  97. package/lib/Parser/B3dmParser.js +80 -131
  98. package/lib/Parser/CameraCalibrationParser.js +5 -14
  99. package/lib/Parser/GDFParser.js +11 -22
  100. package/lib/Parser/GLTFParser.js +88 -0
  101. package/lib/Parser/GTXParser.js +9 -21
  102. package/lib/Parser/GeoJsonParser.js +14 -22
  103. package/lib/Parser/GpxParser.js +7 -14
  104. package/lib/Parser/ISGParser.js +19 -28
  105. package/lib/Parser/KMLParser.js +7 -14
  106. package/lib/Parser/LASLoader.js +31 -21
  107. package/lib/Parser/LASParser.js +10 -17
  108. package/lib/Parser/MapBoxUrlParser.js +2 -9
  109. package/lib/Parser/PntsParser.js +4 -14
  110. package/lib/Parser/PotreeBinParser.js +8 -16
  111. package/lib/Parser/PotreeCinParser.js +3 -12
  112. package/lib/Parser/ShapefileParser.js +11 -18
  113. package/lib/Parser/VectorTileParser.js +23 -31
  114. package/lib/Parser/XbilParser.js +5 -13
  115. package/lib/Parser/deprecated/LegacyGLTFLoader.js +2 -12
  116. package/lib/Process/3dTilesProcessing.js +14 -27
  117. package/lib/Process/FeatureProcessing.js +14 -22
  118. package/lib/Process/LayeredMaterialNodeProcessing.js +19 -28
  119. package/lib/Process/ObjectRemovalHelper.js +2 -9
  120. package/lib/Process/handlerNodeError.js +1 -7
  121. package/lib/Provider/3dTilesProvider.js +32 -29
  122. package/lib/Provider/DataSourceProvider.js +2 -9
  123. package/lib/Provider/Fetcher.js +40 -22
  124. package/lib/Provider/PointCloudProvider.js +7 -19
  125. package/lib/Provider/TileProvider.js +4 -12
  126. package/lib/Provider/URLBuilder.js +4 -12
  127. package/lib/Renderer/Camera.js +7 -17
  128. package/lib/Renderer/Color.js +3 -11
  129. package/lib/Renderer/ColorLayersOrdering.js +14 -22
  130. package/lib/Renderer/CommonMaterial.js +3 -12
  131. package/lib/Renderer/Label2DRenderer.js +5 -16
  132. package/lib/Renderer/LayeredMaterial.js +33 -53
  133. package/lib/Renderer/OBB.js +12 -21
  134. package/lib/Renderer/OrientedImageCamera.js +2 -11
  135. package/lib/Renderer/OrientedImageMaterial.js +17 -35
  136. package/lib/Renderer/PointsMaterial.js +224 -94
  137. package/lib/Renderer/RasterTile.js +18 -30
  138. package/lib/Renderer/RenderMode.js +2 -9
  139. package/lib/Renderer/Shader/ShaderChunk.js +5 -23
  140. package/lib/Renderer/Shader/ShaderUtils.js +2 -9
  141. package/lib/Renderer/SphereHelper.js +2 -11
  142. package/lib/Renderer/WebXR.js +2 -11
  143. package/lib/Renderer/c3DEngine.js +20 -53
  144. package/lib/Source/C3DTilesGoogleSource.js +76 -0
  145. package/lib/Source/C3DTilesIonSource.js +6 -13
  146. package/lib/Source/C3DTilesSource.js +5 -12
  147. package/lib/Source/EntwinePointTileSource.js +12 -19
  148. package/lib/Source/FileSource.js +7 -14
  149. package/lib/Source/OrientedImageSource.js +6 -14
  150. package/lib/Source/PotreeSource.js +9 -16
  151. package/lib/Source/Source.js +26 -39
  152. package/lib/Source/TMSSource.js +11 -22
  153. package/lib/Source/VectorTilesSource.js +75 -34
  154. package/lib/Source/WFSSource.js +7 -14
  155. package/lib/Source/WMSSource.js +5 -12
  156. package/lib/Source/WMTSSource.js +3 -10
  157. package/lib/ThreeExtended/capabilities/WebGL.js +1 -8
  158. package/lib/ThreeExtended/libs/ktx-parse.module.js +2 -256
  159. package/lib/ThreeExtended/libs/zstddec.module.js +2 -8
  160. package/lib/ThreeExtended/loaders/DDSLoader.js +10 -16
  161. package/lib/ThreeExtended/loaders/DRACOLoader.js +14 -19
  162. package/lib/ThreeExtended/loaders/GLTFLoader.js +124 -129
  163. package/lib/ThreeExtended/loaders/KTX2Loader.js +73 -78
  164. package/lib/ThreeExtended/utils/BufferGeometryUtils.js +40 -59
  165. package/lib/ThreeExtended/utils/WorkerPool.js +2 -9
  166. package/lib/Utils/CameraUtils.js +32 -44
  167. package/lib/Utils/DEMUtils.js +8 -19
  168. package/lib/Utils/FeaturesUtils.js +8 -16
  169. package/lib/Utils/Gradients.js +16 -0
  170. package/lib/Utils/OrientationUtils.js +8 -18
  171. package/lib/Utils/ThreeUtils.js +2 -9
  172. package/lib/Utils/gui/C3DTilesStyle.js +7 -15
  173. package/lib/Utils/gui/Main.js +7 -48
  174. package/lib/Utils/gui/Minimap.js +12 -20
  175. package/lib/Utils/gui/Navigation.js +6 -14
  176. package/lib/Utils/gui/Scale.js +11 -19
  177. package/lib/Utils/gui/Searchbar.js +5 -13
  178. package/lib/Utils/gui/Widget.js +1 -8
  179. package/lib/Utils/placeObjectOnGround.js +13 -23
  180. package/package.json +13 -8
@@ -1,18 +1,8 @@
1
- "use strict";
2
-
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
- Object.defineProperty(exports, "__esModule", {
5
- value: true
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(_Crs.default.formatToTms(layer.crs));
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(removeEvent) {
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
- var _default = RasterTile;
110
- exports.default = _default;
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
- exports.RasterColorTile = RasterColorTile;
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: _LayeredMaterial.ELEVATION_MODES.DATA,
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 = _LayeredMaterial.ELEVATION_MODES.RGBA;
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 = _LayeredMaterial.ELEVATION_MODES.COLOR;
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
- } = (0, _XbilParser.computeMinMaxElevation)(this.textures[0], this.offsetScales[0], {
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 && !(0, _XbilParser.checkNodeElevationTextureValidity)(dataElevation, nodatavalue)) {
213
- (0, _XbilParser.insertSignificantValuesFromParent)(dataElevation, parentDataElevation && dataParent(texture, parentTexture, parentDataElevation, pitch), nodatavalue);
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
- var _default = {
29
+ export default {
36
30
  MODES,
37
31
  push
38
- };
39
- exports.default = _default;
32
+ };
@@ -1,16 +1,8 @@
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; }
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 #if defined(WEBGL2)\n return texture2D( tex, uv ).r;\n #else\n return texture2D( tex, uv ).w;\n #endif\n return 0.;\n }\n\n float getElevation(vec2 uv, sampler2D tex, vec4 offsetScale, Layer layer) {\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";
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) && defined(USE_LOGDEPTHBUF_EXT)\ngl_FragColor = packDepthToRGBA(gl_FragDepthEXT);\n#else\nfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\ngl_FragColor = packDepthToRGBA(fragCoordZ);\n#endif";
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
- var _default = ShaderChunk;
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
- var _default = {
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
- var _default = SphereHelper;
32
- exports.default = _default;
23
+ export default SphereHelper;
@@ -1,12 +1,4 @@
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; }
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
- var _default = initializeWebXR;
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
- (0, _Undeprecator.deprecatedC3DEngineWebGLOptions)(options);
27
- const NOIE = !_Capabilities.default.isInternetExplorer();
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 = this.gLDebug || NOIE;
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 _Label2DRenderer.default();
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 (options.isWebGL2 ? THREE.WebGLRenderer : THREE.WebGL1Renderer)({
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
- const versionWebGL = options.isWebGL2 ? '2' : '1';
101
- console.error(`Failed to create WebGLRenderer webGL ${versionWebGL}.`);
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
- _Capabilities.default.updateCapabilities(this.renderer);
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 {undefined|THREE.WebGLRenderer}
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 (_Capabilities.default.isLogDepthBufferSupported() && camera.type == 'PerspectiveCamera') {
235
- const gl_FragDepthEXT = (0, _LayeredMaterial.unpack1K)(depthRGBA);
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 = (0, _LayeredMaterial.unpack1K)(depthRGBA);
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
- var _default = c3DEngine;
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
- "use strict";
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 _C3DTilesSource.default {
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 = _Fetcher.default.json(source.url, this.networkOptions).then(json => {
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 _Fetcher.default.json(this.url, this.networkOptions);
52
+ return Fetcher.json(this.url, this.networkOptions);
59
53
  });
60
54
  }
61
55
  }
62
- var _default = C3DTilesIonSource;
63
- exports.default = _default;
56
+ export default C3DTilesIonSource;
@@ -1,12 +1,6 @@
1
- "use strict";
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 _Source.default {
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 = _Fetcher.default.json(this.url, this.networkOptions);
29
+ this.whenReady = Fetcher.json(this.url, this.networkOptions);
36
30
  }
37
31
  }
38
- var _default = C3DTilesSource;
39
- exports.default = _default;
32
+ export default C3DTilesSource;
@@ -1,15 +1,9 @@
1
- "use strict";
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 _Source.default {
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 = _Fetcher.default.json(`${this.url}/ept.json`, this.networkOptions).then(metadata => {
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' ? _LASParser.default.parse : _PotreeBinParser.default.parse;
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 (!_proj.default.defs(this.crs)) {
53
- _proj.default.defs(this.crs, metadata.srs.wkt);
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 = _Fetcher.default.arrayBuffer;
62
+ this.fetcher = Fetcher.arrayBuffer;
69
63
  }
70
64
  }
71
- var _default = EntwinePointTileSource;
72
- exports.default = _default;
65
+ export default EntwinePointTileSource;