{"version":3,"file":"potree.js","sources":["../../src/EventDispatcher.js","../../src/Actions.js","../../libs/three.js/build/three.module.js","../../src/AnimationPath.js","../../src/XHRFactory.js","../../src/TextSprite.js","../../src/utils/Volume.js","../../src/utils/Profile.js","../../libs/three.js/lines/LineSegmentsGeometry.js","../../libs/three.js/lines/LineMaterial.js","../../libs/three.js/lines/LineSegments2.js","../../libs/three.js/lines/LineGeometry.js","../../libs/three.js/lines/Line2.js","../../src/utils/Measure.js","../../src/utils/PolygonClipVolume.js","../../src/utils.js","../../src/Annotation.js","../../src/Enum.js","../../src/defines.js","../../src/Features.js","../../src/KeyCodes.js","../../src/LRU.js","../../src/PointCloudTree.js","../../src/loader/PointAttributes.js","../../src/PointCloudEptGeometry.js","../../src/PointCloudOctreeGeometry.js","../../src/materials/Gradients.js","../shaders/shaders.js","../../src/materials/ClassificationScheme.js","../../src/materials/PointCloudMaterial.js","../../src/PointCloudOctree.js","../../src/Points.js","../../src/utils/Box3Helper.js","../../src/Potree_update_visibility.js","../../src/arena4d/PointCloudArena4D.js","../../src/PotreeRenderer.js","../../src/ProfileRequest.js","../../src/Version.js","../../src/WorkerPool.js","../../src/viewer/SaveProject.js","../../src/modules/CameraAnimation/CameraAnimation.js","../../src/viewer/LoadProject.js","../../src/materials/EyeDomeLightingMaterial.js","../../src/materials/NormalizationEDLMaterial.js","../../src/materials/NormalizationMaterial.js","../../src/loader/LasLazLoader.js","../../src/loader/BinaryLoader.js","../../src/loader/POCLoader.js","../../src/modules/loader/2.0/OctreeGeometry.js","../../src/modules/loader/2.0/OctreeLoader.js","../../src/loader/EptLoader.js","../../src/loader/ept/BinaryLoader.js","../../src/loader/ept/LaszipLoader.js","../../src/loader/ept/ZstandardLoader.js","../../src/loader/ShapefileLoader.js","../../src/loader/GeoPackageLoader.js","../../src/utils/ClipVolume.js","../../src/utils/ClippingTool.js","../../src/utils/GeoTIFF.js","../../src/utils/MeasuringTool.js","../../src/utils/Message.js","../../src/utils/PointCloudSM.js","../../src/utils/ProfileTool.js","../../src/utils/ScreenBoxSelectTool.js","../../src/utils/SpotLightHelper.js","../../src/utils/TransformationTool.js","../../src/utils/VolumeTool.js","../../src/utils/Compass.js","../../src/viewer/PotreeRenderer.js","../../src/viewer/EDLRenderer.js","../../src/viewer/HQSplatRenderer.js","../../src/viewer/View.js","../../src/viewer/Scene.js","../../src/viewer/map.js","../../src/exporter/DXFProfileExporter.js","../../src/exporter/CSVExporter.js","../../src/exporter/LASExporter.js","../../src/viewer/profile.js","../../src/exporter/GeoJSONExporter.js","../../src/exporter/DXFExporter.js","../../src/viewer/PropertyPanels/MeasurePanel.js","../../src/viewer/PropertyPanels/DistancePanel.js","../../src/viewer/PropertyPanels/PointPanel.js","../../src/viewer/PropertyPanels/AreaPanel.js","../../src/viewer/PropertyPanels/AnglePanel.js","../../src/viewer/PropertyPanels/CirclePanel.js","../../src/viewer/PropertyPanels/HeightPanel.js","../../src/viewer/PropertyPanels/VolumePanel.js","../../src/viewer/PropertyPanels/ProfilePanel.js","../../src/viewer/PropertyPanels/CameraPanel.js","../../src/viewer/PropertyPanels/AnnotationPanel.js","../../src/viewer/PropertyPanels/CameraAnimationPanel.js","../../src/viewer/PropertyPanels/PropertiesPanel.js","../../src/viewer/HierarchicalSlider.js","../../src/modules/OrientedImages/OrientedImageControls.js","../../src/modules/OrientedImages/OrientedImages.js","../../src/modules/Images360/Images360.js","../../libs/json5-2.1.3/json5.mjs","../../src/viewer/sidebar.js","../../src/utils/AnnotationTool.js","../../src/navigation/InputHandler.js","../../src/viewer/NavigationCube.js","../../src/navigation/OrbitControls.js","../../src/navigation/FirstPersonControls.js","../../src/navigation/EarthControls.js","../../src/navigation/DeviceOrientationControls.js","../../libs/three.js/loaders/GLTFLoader.js","../../libs/three.js/libs/motion-controllers.module.js","../../libs/three.js/webxr/XRControllerModelFactory.js","../../src/navigation/VRControls.js","../../libs/three.js/extra/VRButton.js","../../src/viewer/viewer.js","../../src/extensions/OrthographicCamera.js","../../src/extensions/PerspectiveCamera.js","../../src/extensions/Ray.js","../../src/Potree.js"],"sourcesContent":["\r\n/**\r\n * @author mrdoob / http://mrdoob.com/ https://github.com/mrdoob/eventdispatcher.js\r\n * \r\n * with slight modifications by mschuetz, http://potree.org\r\n * \r\n */\r\n\r\n// The MIT License\r\n// \r\n// Copyright (c) 2011 Mr.doob\r\n// \r\n// Permission is hereby granted, free of charge, to any person obtaining a copy\r\n// of this software and associated documentation files (the \"Software\"), to deal\r\n// in the Software without restriction, including without limitation the rights\r\n// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\r\n// copies of the Software, and to permit persons to whom the Software is\r\n// furnished to do so, subject to the following conditions:\r\n// \r\n// The above copyright notice and this permission notice shall be included in\r\n// all copies or substantial portions of the Software.\r\n// \r\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\r\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\r\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\r\n// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\r\n// THE SOFTWARE.\r\n\r\n\r\n\r\n\r\n\r\nexport class EventDispatcher{\r\n\r\n\tconstructor(){\r\n\t\tthis._listeners = {};\r\n\t}\r\n\r\n\taddEventListener(type, listener){\r\n\r\n\t\tconst listeners = this._listeners;\r\n\r\n\t\tif(listeners[type] === undefined){\r\n\t\t\tlisteners[type] = [];\r\n\t\t}\r\n\r\n\t\tif(listeners[type].indexOf(listener) === - 1){\r\n\t\t\tlisteners[type].push( listener );\r\n\t\t}\r\n\r\n\t}\r\n\r\n\thasEventListener(type, listener){\r\n\r\n\t\tconst listeners = this._listeners;\r\n\r\n\t\treturn listeners[type] !== undefined && listeners[type].indexOf(listener) !== - 1;\r\n\t}\r\n\r\n\tremoveEventListener(type, listener){\r\n\r\n\t\tlet listeners = this._listeners;\r\n\t\tlet listenerArray = listeners[type];\r\n\r\n\t\tif (listenerArray !== undefined){\r\n\r\n\t\t\tlet index = listenerArray.indexOf(listener);\r\n\r\n\t\t\tif(index !== - 1){\r\n\t\t\t\tlistenerArray.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tremoveEventListeners(type){\r\n\t\tif(this._listeners[type] !== undefined){\r\n\t\t\tdelete this._listeners[type];\r\n\t\t}\r\n\t};\r\n\r\n\tdispatchEvent(event){\r\n\r\n\t\tlet listeners = this._listeners;\r\n\t\tlet listenerArray = listeners[event.type];\r\n\r\n\t\tif ( listenerArray !== undefined ) {\r\n\t\t\tevent.target = this;\r\n\r\n\t\t\tfor(let listener of listenerArray.slice(0)){\r\n\t\t\t\tlistener.call(this, event);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n}","\r\n\r\nimport {EventDispatcher} from \"./EventDispatcher.js\";\r\n\r\nexport class Action extends EventDispatcher {\r\n\tconstructor (args = {}) {\r\n\t\tsuper();\r\n\r\n\t\tthis.icon = args.icon || '';\r\n\t\tthis.tooltip = args.tooltip;\r\n\r\n\t\tif (args.onclick !== undefined) {\r\n\t\t\tthis.onclick = args.onclick;\r\n\t\t}\r\n\t}\r\n\r\n\tonclick (event) {\r\n\r\n\t}\r\n\r\n\tpairWith (object) {\r\n\r\n\t}\r\n\r\n\tsetIcon (newIcon) {\r\n\t\tlet oldIcon = this.icon;\r\n\r\n\t\tif (newIcon === oldIcon) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.icon = newIcon;\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'icon_changed',\r\n\t\t\taction: this,\r\n\t\t\ticon: newIcon,\r\n\t\t\toldIcon: oldIcon\r\n\t\t});\r\n\t}\r\n};\r\n\r\n//Potree.Actions = {};\r\n//\r\n//Potree.Actions.ToggleAnnotationVisibility = class ToggleAnnotationVisibility extends Potree.Action {\r\n//\tconstructor (args = {}) {\r\n//\t\tsuper(args);\r\n//\r\n//\t\tthis.icon = Potree.resourcePath + '/icons/eye.svg';\r\n//\t\tthis.showIn = 'sidebar';\r\n//\t\tthis.tooltip = 'toggle visibility';\r\n//\t}\r\n//\r\n//\tpairWith (annotation) {\r\n//\t\tif (annotation.visible) {\r\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye.svg');\r\n//\t\t} else {\r\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg');\r\n//\t\t}\r\n//\r\n//\t\tannotation.addEventListener('visibility_changed', e => {\r\n//\t\t\tlet annotation = e.annotation;\r\n//\r\n//\t\t\tif (annotation.visible) {\r\n//\t\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye.svg');\r\n//\t\t\t} else {\r\n//\t\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg');\r\n//\t\t\t}\r\n//\t\t});\r\n//\t}\r\n//\r\n//\tonclick (event) {\r\n//\t\tlet annotation = event.annotation;\r\n//\r\n//\t\tannotation.visible = !annotation.visible;\r\n//\r\n//\t\tif (annotation.visible) {\r\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye.svg');\r\n//\t\t} else {\r\n//\t\t\tthis.setIcon(Potree.resourcePath + '/icons/eye_crossed.svg');\r\n//\t\t}\r\n//\t}\r\n//};\r\n","// threejs.org/license\r\nconst REVISION = '124';\r\nconst MOUSE = { LEFT: 0, MIDDLE: 1, RIGHT: 2, ROTATE: 0, DOLLY: 1, PAN: 2 };\r\nconst TOUCH = { ROTATE: 0, PAN: 1, DOLLY_PAN: 2, DOLLY_ROTATE: 3 };\r\nconst CullFaceNone = 0;\r\nconst CullFaceBack = 1;\r\nconst CullFaceFront = 2;\r\nconst CullFaceFrontBack = 3;\r\nconst BasicShadowMap = 0;\r\nconst PCFShadowMap = 1;\r\nconst PCFSoftShadowMap = 2;\r\nconst VSMShadowMap = 3;\r\nconst FrontSide = 0;\r\nconst BackSide = 1;\r\nconst DoubleSide = 2;\r\nconst FlatShading = 1;\r\nconst SmoothShading = 2;\r\nconst NoBlending = 0;\r\nconst NormalBlending = 1;\r\nconst AdditiveBlending = 2;\r\nconst SubtractiveBlending = 3;\r\nconst MultiplyBlending = 4;\r\nconst CustomBlending = 5;\r\nconst AddEquation = 100;\r\nconst SubtractEquation = 101;\r\nconst ReverseSubtractEquation = 102;\r\nconst MinEquation = 103;\r\nconst MaxEquation = 104;\r\nconst ZeroFactor = 200;\r\nconst OneFactor = 201;\r\nconst SrcColorFactor = 202;\r\nconst OneMinusSrcColorFactor = 203;\r\nconst SrcAlphaFactor = 204;\r\nconst OneMinusSrcAlphaFactor = 205;\r\nconst DstAlphaFactor = 206;\r\nconst OneMinusDstAlphaFactor = 207;\r\nconst DstColorFactor = 208;\r\nconst OneMinusDstColorFactor = 209;\r\nconst SrcAlphaSaturateFactor = 210;\r\nconst NeverDepth = 0;\r\nconst AlwaysDepth = 1;\r\nconst LessDepth = 2;\r\nconst LessEqualDepth = 3;\r\nconst EqualDepth = 4;\r\nconst GreaterEqualDepth = 5;\r\nconst GreaterDepth = 6;\r\nconst NotEqualDepth = 7;\r\nconst MultiplyOperation = 0;\r\nconst MixOperation = 1;\r\nconst AddOperation = 2;\r\nconst NoToneMapping = 0;\r\nconst LinearToneMapping = 1;\r\nconst ReinhardToneMapping = 2;\r\nconst CineonToneMapping = 3;\r\nconst ACESFilmicToneMapping = 4;\r\nconst CustomToneMapping = 5;\r\n\r\nconst UVMapping = 300;\r\nconst CubeReflectionMapping = 301;\r\nconst CubeRefractionMapping = 302;\r\nconst EquirectangularReflectionMapping = 303;\r\nconst EquirectangularRefractionMapping = 304;\r\nconst CubeUVReflectionMapping = 306;\r\nconst CubeUVRefractionMapping = 307;\r\nconst RepeatWrapping = 1000;\r\nconst ClampToEdgeWrapping = 1001;\r\nconst MirroredRepeatWrapping = 1002;\r\nconst NearestFilter = 1003;\r\nconst NearestMipmapNearestFilter = 1004;\r\nconst NearestMipMapNearestFilter = 1004;\r\nconst NearestMipmapLinearFilter = 1005;\r\nconst NearestMipMapLinearFilter = 1005;\r\nconst LinearFilter = 1006;\r\nconst LinearMipmapNearestFilter = 1007;\r\nconst LinearMipMapNearestFilter = 1007;\r\nconst LinearMipmapLinearFilter = 1008;\r\nconst LinearMipMapLinearFilter = 1008;\r\nconst UnsignedByteType = 1009;\r\nconst ByteType = 1010;\r\nconst ShortType = 1011;\r\nconst UnsignedShortType = 1012;\r\nconst IntType = 1013;\r\nconst UnsignedIntType = 1014;\r\nconst FloatType = 1015;\r\nconst HalfFloatType = 1016;\r\nconst UnsignedShort4444Type = 1017;\r\nconst UnsignedShort5551Type = 1018;\r\nconst UnsignedShort565Type = 1019;\r\nconst UnsignedInt248Type = 1020;\r\nconst AlphaFormat = 1021;\r\nconst RGBFormat = 1022;\r\nconst RGBAFormat = 1023;\r\nconst LuminanceFormat = 1024;\r\nconst LuminanceAlphaFormat = 1025;\r\nconst RGBEFormat = RGBAFormat;\r\nconst DepthFormat = 1026;\r\nconst DepthStencilFormat = 1027;\r\nconst RedFormat = 1028;\r\nconst RedIntegerFormat = 1029;\r\nconst RGFormat = 1030;\r\nconst RGIntegerFormat = 1031;\r\nconst RGBIntegerFormat = 1032;\r\nconst RGBAIntegerFormat = 1033;\r\n\r\nconst RGB_S3TC_DXT1_Format = 33776;\r\nconst RGBA_S3TC_DXT1_Format = 33777;\r\nconst RGBA_S3TC_DXT3_Format = 33778;\r\nconst RGBA_S3TC_DXT5_Format = 33779;\r\nconst RGB_PVRTC_4BPPV1_Format = 35840;\r\nconst RGB_PVRTC_2BPPV1_Format = 35841;\r\nconst RGBA_PVRTC_4BPPV1_Format = 35842;\r\nconst RGBA_PVRTC_2BPPV1_Format = 35843;\r\nconst RGB_ETC1_Format = 36196;\r\nconst RGB_ETC2_Format = 37492;\r\nconst RGBA_ETC2_EAC_Format = 37496;\r\nconst RGBA_ASTC_4x4_Format = 37808;\r\nconst RGBA_ASTC_5x4_Format = 37809;\r\nconst RGBA_ASTC_5x5_Format = 37810;\r\nconst RGBA_ASTC_6x5_Format = 37811;\r\nconst RGBA_ASTC_6x6_Format = 37812;\r\nconst RGBA_ASTC_8x5_Format = 37813;\r\nconst RGBA_ASTC_8x6_Format = 37814;\r\nconst RGBA_ASTC_8x8_Format = 37815;\r\nconst RGBA_ASTC_10x5_Format = 37816;\r\nconst RGBA_ASTC_10x6_Format = 37817;\r\nconst RGBA_ASTC_10x8_Format = 37818;\r\nconst RGBA_ASTC_10x10_Format = 37819;\r\nconst RGBA_ASTC_12x10_Format = 37820;\r\nconst RGBA_ASTC_12x12_Format = 37821;\r\nconst RGBA_BPTC_Format = 36492;\r\nconst SRGB8_ALPHA8_ASTC_4x4_Format = 37840;\r\nconst SRGB8_ALPHA8_ASTC_5x4_Format = 37841;\r\nconst SRGB8_ALPHA8_ASTC_5x5_Format = 37842;\r\nconst SRGB8_ALPHA8_ASTC_6x5_Format = 37843;\r\nconst SRGB8_ALPHA8_ASTC_6x6_Format = 37844;\r\nconst SRGB8_ALPHA8_ASTC_8x5_Format = 37845;\r\nconst SRGB8_ALPHA8_ASTC_8x6_Format = 37846;\r\nconst SRGB8_ALPHA8_ASTC_8x8_Format = 37847;\r\nconst SRGB8_ALPHA8_ASTC_10x5_Format = 37848;\r\nconst SRGB8_ALPHA8_ASTC_10x6_Format = 37849;\r\nconst SRGB8_ALPHA8_ASTC_10x8_Format = 37850;\r\nconst SRGB8_ALPHA8_ASTC_10x10_Format = 37851;\r\nconst SRGB8_ALPHA8_ASTC_12x10_Format = 37852;\r\nconst SRGB8_ALPHA8_ASTC_12x12_Format = 37853;\r\nconst LoopOnce = 2200;\r\nconst LoopRepeat = 2201;\r\nconst LoopPingPong = 2202;\r\nconst InterpolateDiscrete = 2300;\r\nconst InterpolateLinear = 2301;\r\nconst InterpolateSmooth = 2302;\r\nconst ZeroCurvatureEnding = 2400;\r\nconst ZeroSlopeEnding = 2401;\r\nconst WrapAroundEnding = 2402;\r\nconst NormalAnimationBlendMode = 2500;\r\nconst AdditiveAnimationBlendMode = 2501;\r\nconst TrianglesDrawMode = 0;\r\nconst TriangleStripDrawMode = 1;\r\nconst TriangleFanDrawMode = 2;\r\nconst LinearEncoding = 3000;\r\nconst sRGBEncoding = 3001;\r\nconst GammaEncoding = 3007;\r\nconst RGBEEncoding = 3002;\r\nconst LogLuvEncoding = 3003;\r\nconst RGBM7Encoding = 3004;\r\nconst RGBM16Encoding = 3005;\r\nconst RGBDEncoding = 3006;\r\nconst BasicDepthPacking = 3200;\r\nconst RGBADepthPacking = 3201;\r\nconst TangentSpaceNormalMap = 0;\r\nconst ObjectSpaceNormalMap = 1;\r\n\r\nconst ZeroStencilOp = 0;\r\nconst KeepStencilOp = 7680;\r\nconst ReplaceStencilOp = 7681;\r\nconst IncrementStencilOp = 7682;\r\nconst DecrementStencilOp = 7683;\r\nconst IncrementWrapStencilOp = 34055;\r\nconst DecrementWrapStencilOp = 34056;\r\nconst InvertStencilOp = 5386;\r\n\r\nconst NeverStencilFunc = 512;\r\nconst LessStencilFunc = 513;\r\nconst EqualStencilFunc = 514;\r\nconst LessEqualStencilFunc = 515;\r\nconst GreaterStencilFunc = 516;\r\nconst NotEqualStencilFunc = 517;\r\nconst GreaterEqualStencilFunc = 518;\r\nconst AlwaysStencilFunc = 519;\r\n\r\nconst StaticDrawUsage = 35044;\r\nconst DynamicDrawUsage = 35048;\r\nconst StreamDrawUsage = 35040;\r\nconst StaticReadUsage = 35045;\r\nconst DynamicReadUsage = 35049;\r\nconst StreamReadUsage = 35041;\r\nconst StaticCopyUsage = 35046;\r\nconst DynamicCopyUsage = 35050;\r\nconst StreamCopyUsage = 35042;\r\n\r\nconst GLSL1 = '100';\r\nconst GLSL3 = '300 es';\r\n\r\n/**\r\n * https://github.com/mrdoob/eventdispatcher.js/\r\n */\r\n\r\nfunction EventDispatcher() {}\r\n\r\nObject.assign( EventDispatcher.prototype, {\r\n\r\n\taddEventListener: function ( type, listener ) {\r\n\r\n\t\tif ( this._listeners === undefined ) this._listeners = {};\r\n\r\n\t\tconst listeners = this._listeners;\r\n\r\n\t\tif ( listeners[ type ] === undefined ) {\r\n\r\n\t\t\tlisteners[ type ] = [];\r\n\r\n\t\t}\r\n\r\n\t\tif ( listeners[ type ].indexOf( listener ) === - 1 ) {\r\n\r\n\t\t\tlisteners[ type ].push( listener );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\thasEventListener: function ( type, listener ) {\r\n\r\n\t\tif ( this._listeners === undefined ) return false;\r\n\r\n\t\tconst listeners = this._listeners;\r\n\r\n\t\treturn listeners[ type ] !== undefined && listeners[ type ].indexOf( listener ) !== - 1;\r\n\r\n\t},\r\n\r\n\tremoveEventListener: function ( type, listener ) {\r\n\r\n\t\tif ( this._listeners === undefined ) return;\r\n\r\n\t\tconst listeners = this._listeners;\r\n\t\tconst listenerArray = listeners[ type ];\r\n\r\n\t\tif ( listenerArray !== undefined ) {\r\n\r\n\t\t\tconst index = listenerArray.indexOf( listener );\r\n\r\n\t\t\tif ( index !== - 1 ) {\r\n\r\n\t\t\t\tlistenerArray.splice( index, 1 );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tdispatchEvent: function ( event ) {\r\n\r\n\t\tif ( this._listeners === undefined ) return;\r\n\r\n\t\tconst listeners = this._listeners;\r\n\t\tconst listenerArray = listeners[ event.type ];\r\n\r\n\t\tif ( listenerArray !== undefined ) {\r\n\r\n\t\t\tevent.target = this;\r\n\r\n\t\t\t// Make a copy, in case listeners are removed while iterating.\r\n\t\t\tconst array = listenerArray.slice( 0 );\r\n\r\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tarray[ i ].call( this, event );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst _lut = [];\r\n\r\nfor ( let i = 0; i < 256; i ++ ) {\r\n\r\n\t_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );\r\n\r\n}\r\n\r\nlet _seed = 1234567;\r\n\r\nconst MathUtils = {\r\n\r\n\tDEG2RAD: Math.PI / 180,\r\n\tRAD2DEG: 180 / Math.PI,\r\n\r\n\tgenerateUUID: function () {\r\n\r\n\t\t// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136\r\n\r\n\t\tconst d0 = Math.random() * 0xffffffff | 0;\r\n\t\tconst d1 = Math.random() * 0xffffffff | 0;\r\n\t\tconst d2 = Math.random() * 0xffffffff | 0;\r\n\t\tconst d3 = Math.random() * 0xffffffff | 0;\r\n\t\tconst uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +\r\n\t\t\t_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +\r\n\t\t\t_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +\r\n\t\t\t_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];\r\n\r\n\t\t// .toUpperCase() here flattens concatenated strings to save heap memory space.\r\n\t\treturn uuid.toUpperCase();\r\n\r\n\t},\r\n\r\n\tclamp: function ( value, min, max ) {\r\n\r\n\t\treturn Math.max( min, Math.min( max, value ) );\r\n\r\n\t},\r\n\r\n\t// compute euclidian modulo of m % n\r\n\t// https://en.wikipedia.org/wiki/Modulo_operation\r\n\r\n\teuclideanModulo: function ( n, m ) {\r\n\r\n\t\treturn ( ( n % m ) + m ) % m;\r\n\r\n\t},\r\n\r\n\t// Linear mapping from range to range \r\n\r\n\tmapLinear: function ( x, a1, a2, b1, b2 ) {\r\n\r\n\t\treturn b1 + ( x - a1 ) * ( b2 - b1 ) / ( a2 - a1 );\r\n\r\n\t},\r\n\r\n\t// https://en.wikipedia.org/wiki/Linear_interpolation\r\n\r\n\tlerp: function ( x, y, t ) {\r\n\r\n\t\treturn ( 1 - t ) * x + t * y;\r\n\r\n\t},\r\n\r\n\t// http://en.wikipedia.org/wiki/Smoothstep\r\n\r\n\tsmoothstep: function ( x, min, max ) {\r\n\r\n\t\tif ( x <= min ) return 0;\r\n\t\tif ( x >= max ) return 1;\r\n\r\n\t\tx = ( x - min ) / ( max - min );\r\n\r\n\t\treturn x * x * ( 3 - 2 * x );\r\n\r\n\t},\r\n\r\n\tsmootherstep: function ( x, min, max ) {\r\n\r\n\t\tif ( x <= min ) return 0;\r\n\t\tif ( x >= max ) return 1;\r\n\r\n\t\tx = ( x - min ) / ( max - min );\r\n\r\n\t\treturn x * x * x * ( x * ( x * 6 - 15 ) + 10 );\r\n\r\n\t},\r\n\r\n\t// Random integer from interval\r\n\r\n\trandInt: function ( low, high ) {\r\n\r\n\t\treturn low + Math.floor( Math.random() * ( high - low + 1 ) );\r\n\r\n\t},\r\n\r\n\t// Random float from interval\r\n\r\n\trandFloat: function ( low, high ) {\r\n\r\n\t\treturn low + Math.random() * ( high - low );\r\n\r\n\t},\r\n\r\n\t// Random float from <-range/2, range/2> interval\r\n\r\n\trandFloatSpread: function ( range ) {\r\n\r\n\t\treturn range * ( 0.5 - Math.random() );\r\n\r\n\t},\r\n\r\n\t// Deterministic pseudo-random float in the interval [ 0, 1 ]\r\n\r\n\tseededRandom: function ( s ) {\r\n\r\n\t\tif ( s !== undefined ) _seed = s % 2147483647;\r\n\r\n\t\t// Park-Miller algorithm\r\n\r\n\t\t_seed = _seed * 16807 % 2147483647;\r\n\r\n\t\treturn ( _seed - 1 ) / 2147483646;\r\n\r\n\t},\r\n\r\n\tdegToRad: function ( degrees ) {\r\n\r\n\t\treturn degrees * MathUtils.DEG2RAD;\r\n\r\n\t},\r\n\r\n\tradToDeg: function ( radians ) {\r\n\r\n\t\treturn radians * MathUtils.RAD2DEG;\r\n\r\n\t},\r\n\r\n\tisPowerOfTwo: function ( value ) {\r\n\r\n\t\treturn ( value & ( value - 1 ) ) === 0 && value !== 0;\r\n\r\n\t},\r\n\r\n\tceilPowerOfTwo: function ( value ) {\r\n\r\n\t\treturn Math.pow( 2, Math.ceil( Math.log( value ) / Math.LN2 ) );\r\n\r\n\t},\r\n\r\n\tfloorPowerOfTwo: function ( value ) {\r\n\r\n\t\treturn Math.pow( 2, Math.floor( Math.log( value ) / Math.LN2 ) );\r\n\r\n\t},\r\n\r\n\tsetQuaternionFromProperEuler: function ( q, a, b, c, order ) {\r\n\r\n\t\t// Intrinsic Proper Euler Angles - see https://en.wikipedia.org/wiki/Euler_angles\r\n\r\n\t\t// rotations are applied to the axes in the order specified by 'order'\r\n\t\t// rotation by angle 'a' is applied first, then by angle 'b', then by angle 'c'\r\n\t\t// angles are in radians\r\n\r\n\t\tconst cos = Math.cos;\r\n\t\tconst sin = Math.sin;\r\n\r\n\t\tconst c2 = cos( b / 2 );\r\n\t\tconst s2 = sin( b / 2 );\r\n\r\n\t\tconst c13 = cos( ( a + c ) / 2 );\r\n\t\tconst s13 = sin( ( a + c ) / 2 );\r\n\r\n\t\tconst c1_3 = cos( ( a - c ) / 2 );\r\n\t\tconst s1_3 = sin( ( a - c ) / 2 );\r\n\r\n\t\tconst c3_1 = cos( ( c - a ) / 2 );\r\n\t\tconst s3_1 = sin( ( c - a ) / 2 );\r\n\r\n\t\tswitch ( order ) {\r\n\r\n\t\t\tcase 'XYX':\r\n\t\t\t\tq.set( c2 * s13, s2 * c1_3, s2 * s1_3, c2 * c13 );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'YZY':\r\n\t\t\t\tq.set( s2 * s1_3, c2 * s13, s2 * c1_3, c2 * c13 );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'ZXZ':\r\n\t\t\t\tq.set( s2 * c1_3, s2 * s1_3, c2 * s13, c2 * c13 );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'XZX':\r\n\t\t\t\tq.set( c2 * s13, s2 * s3_1, s2 * c3_1, c2 * c13 );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'YXY':\r\n\t\t\t\tq.set( s2 * c3_1, c2 * s13, s2 * s3_1, c2 * c13 );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'ZYZ':\r\n\t\t\t\tq.set( s2 * s3_1, s2 * c3_1, c2 * s13, c2 * c13 );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tconsole.warn( 'THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: ' + order );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\nclass Vector2 {\r\n\r\n\tconstructor( x = 0, y = 0 ) {\r\n\r\n\t\tObject.defineProperty( this, 'isVector2', { value: true } );\r\n\r\n\t\tthis.x = x;\r\n\t\tthis.y = y;\r\n\r\n\t}\r\n\r\n\tget width() {\r\n\r\n\t\treturn this.x;\r\n\r\n\t}\r\n\r\n\tset width( value ) {\r\n\r\n\t\tthis.x = value;\r\n\r\n\t}\r\n\r\n\tget height() {\r\n\r\n\t\treturn this.y;\r\n\r\n\t}\r\n\r\n\tset height( value ) {\r\n\r\n\t\tthis.y = value;\r\n\r\n\t}\r\n\r\n\tset( x, y ) {\r\n\r\n\t\tthis.x = x;\r\n\t\tthis.y = y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetScalar( scalar ) {\r\n\r\n\t\tthis.x = scalar;\r\n\t\tthis.y = scalar;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetX( x ) {\r\n\r\n\t\tthis.x = x;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetY( y ) {\r\n\r\n\t\tthis.y = y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetComponent( index, value ) {\r\n\r\n\t\tswitch ( index ) {\r\n\r\n\t\t\tcase 0: this.x = value; break;\r\n\t\t\tcase 1: this.y = value; break;\r\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetComponent( index ) {\r\n\r\n\t\tswitch ( index ) {\r\n\r\n\t\t\tcase 0: return this.x;\r\n\t\t\tcase 1: return this.y;\r\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor( this.x, this.y );\r\n\r\n\t}\r\n\r\n\tcopy( v ) {\r\n\r\n\t\tthis.x = v.x;\r\n\t\tthis.y = v.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tadd( v, w ) {\r\n\r\n\t\tif ( w !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\r\n\t\t\treturn this.addVectors( v, w );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x += v.x;\r\n\t\tthis.y += v.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddScalar( s ) {\r\n\r\n\t\tthis.x += s;\r\n\t\tthis.y += s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddVectors( a, b ) {\r\n\r\n\t\tthis.x = a.x + b.x;\r\n\t\tthis.y = a.y + b.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddScaledVector( v, s ) {\r\n\r\n\t\tthis.x += v.x * s;\r\n\t\tthis.y += v.y * s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsub( v, w ) {\r\n\r\n\t\tif ( w !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\r\n\t\t\treturn this.subVectors( v, w );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x -= v.x;\r\n\t\tthis.y -= v.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsubScalar( s ) {\r\n\r\n\t\tthis.x -= s;\r\n\t\tthis.y -= s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsubVectors( a, b ) {\r\n\r\n\t\tthis.x = a.x - b.x;\r\n\t\tthis.y = a.y - b.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiply( v ) {\r\n\r\n\t\tthis.x *= v.x;\r\n\t\tthis.y *= v.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiplyScalar( scalar ) {\r\n\r\n\t\tthis.x *= scalar;\r\n\t\tthis.y *= scalar;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdivide( v ) {\r\n\r\n\t\tthis.x /= v.x;\r\n\t\tthis.y /= v.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdivideScalar( scalar ) {\r\n\r\n\t\treturn this.multiplyScalar( 1 / scalar );\r\n\r\n\t}\r\n\r\n\tapplyMatrix3( m ) {\r\n\r\n\t\tconst x = this.x, y = this.y;\r\n\t\tconst e = m.elements;\r\n\r\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ];\r\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmin( v ) {\r\n\r\n\t\tthis.x = Math.min( this.x, v.x );\r\n\t\tthis.y = Math.min( this.y, v.y );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmax( v ) {\r\n\r\n\t\tthis.x = Math.max( this.x, v.x );\r\n\t\tthis.y = Math.max( this.y, v.y );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclamp( min, max ) {\r\n\r\n\t\t// assumes min < max, componentwise\r\n\r\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\r\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclampScalar( minVal, maxVal ) {\r\n\r\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\r\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclampLength( min, max ) {\r\n\r\n\t\tconst length = this.length();\r\n\r\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\r\n\r\n\t}\r\n\r\n\tfloor() {\r\n\r\n\t\tthis.x = Math.floor( this.x );\r\n\t\tthis.y = Math.floor( this.y );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tceil() {\r\n\r\n\t\tthis.x = Math.ceil( this.x );\r\n\t\tthis.y = Math.ceil( this.y );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tround() {\r\n\r\n\t\tthis.x = Math.round( this.x );\r\n\t\tthis.y = Math.round( this.y );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\troundToZero() {\r\n\r\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\r\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tnegate() {\r\n\r\n\t\tthis.x = - this.x;\r\n\t\tthis.y = - this.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdot( v ) {\r\n\r\n\t\treturn this.x * v.x + this.y * v.y;\r\n\r\n\t}\r\n\r\n\tcross( v ) {\r\n\r\n\t\treturn this.x * v.y - this.y * v.x;\r\n\r\n\t}\r\n\r\n\tlengthSq() {\r\n\r\n\t\treturn this.x * this.x + this.y * this.y;\r\n\r\n\t}\r\n\r\n\tlength() {\r\n\r\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y );\r\n\r\n\t}\r\n\r\n\tmanhattanLength() {\r\n\r\n\t\treturn Math.abs( this.x ) + Math.abs( this.y );\r\n\r\n\t}\r\n\r\n\tnormalize() {\r\n\r\n\t\treturn this.divideScalar( this.length() || 1 );\r\n\r\n\t}\r\n\r\n\tangle() {\r\n\r\n\t\t// computes the angle in radians with respect to the positive x-axis\r\n\r\n\t\tconst angle = Math.atan2( - this.y, - this.x ) + Math.PI;\r\n\r\n\t\treturn angle;\r\n\r\n\t}\r\n\r\n\tdistanceTo( v ) {\r\n\r\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\r\n\r\n\t}\r\n\r\n\tdistanceToSquared( v ) {\r\n\r\n\t\tconst dx = this.x - v.x, dy = this.y - v.y;\r\n\t\treturn dx * dx + dy * dy;\r\n\r\n\t}\r\n\r\n\tmanhattanDistanceTo( v ) {\r\n\r\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y );\r\n\r\n\t}\r\n\r\n\tsetLength( length ) {\r\n\r\n\t\treturn this.normalize().multiplyScalar( length );\r\n\r\n\t}\r\n\r\n\tlerp( v, alpha ) {\r\n\r\n\t\tthis.x += ( v.x - this.x ) * alpha;\r\n\t\tthis.y += ( v.y - this.y ) * alpha;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tlerpVectors( v1, v2, alpha ) {\r\n\r\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\r\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( v ) {\r\n\r\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) );\r\n\r\n\t}\r\n\r\n\tfromArray( array, offset = 0 ) {\r\n\r\n\t\tthis.x = array[ offset ];\r\n\t\tthis.y = array[ offset + 1 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoArray( array = [], offset = 0 ) {\r\n\r\n\t\tarray[ offset ] = this.x;\r\n\t\tarray[ offset + 1 ] = this.y;\r\n\r\n\t\treturn array;\r\n\r\n\t}\r\n\r\n\tfromBufferAttribute( attribute, index, offset ) {\r\n\r\n\t\tif ( offset !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector2: offset has been removed from .fromBufferAttribute().' );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x = attribute.getX( index );\r\n\t\tthis.y = attribute.getY( index );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\trotateAround( center, angle ) {\r\n\r\n\t\tconst c = Math.cos( angle ), s = Math.sin( angle );\r\n\r\n\t\tconst x = this.x - center.x;\r\n\t\tconst y = this.y - center.y;\r\n\r\n\t\tthis.x = x * c - y * s + center.x;\r\n\t\tthis.y = x * s + y * c + center.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\trandom() {\r\n\r\n\t\tthis.x = Math.random();\r\n\t\tthis.y = Math.random();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass Matrix3 {\r\n\r\n\tconstructor() {\r\n\r\n\t\tObject.defineProperty( this, 'isMatrix3', { value: true } );\r\n\r\n\t\tthis.elements = [\r\n\r\n\t\t\t1, 0, 0,\r\n\t\t\t0, 1, 0,\r\n\t\t\t0, 0, 1\r\n\r\n\t\t];\r\n\r\n\t\tif ( arguments.length > 0 ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.' );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tset( n11, n12, n13, n21, n22, n23, n31, n32, n33 ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tte[ 0 ] = n11; te[ 1 ] = n21; te[ 2 ] = n31;\r\n\t\tte[ 3 ] = n12; te[ 4 ] = n22; te[ 5 ] = n32;\r\n\t\tte[ 6 ] = n13; te[ 7 ] = n23; te[ 8 ] = n33;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tidentity() {\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\t1, 0, 0,\r\n\t\t\t0, 1, 0,\r\n\t\t\t0, 0, 1\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().fromArray( this.elements );\r\n\r\n\t}\r\n\r\n\tcopy( m ) {\r\n\r\n\t\tconst te = this.elements;\r\n\t\tconst me = m.elements;\r\n\r\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ];\r\n\t\tte[ 3 ] = me[ 3 ]; te[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ];\r\n\t\tte[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ]; te[ 8 ] = me[ 8 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\textractBasis( xAxis, yAxis, zAxis ) {\r\n\r\n\t\txAxis.setFromMatrix3Column( this, 0 );\r\n\t\tyAxis.setFromMatrix3Column( this, 1 );\r\n\t\tzAxis.setFromMatrix3Column( this, 2 );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromMatrix4( m ) {\r\n\r\n\t\tconst me = m.elements;\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\tme[ 0 ], me[ 4 ], me[ 8 ],\r\n\t\t\tme[ 1 ], me[ 5 ], me[ 9 ],\r\n\t\t\tme[ 2 ], me[ 6 ], me[ 10 ]\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiply( m ) {\r\n\r\n\t\treturn this.multiplyMatrices( this, m );\r\n\r\n\t}\r\n\r\n\tpremultiply( m ) {\r\n\r\n\t\treturn this.multiplyMatrices( m, this );\r\n\r\n\t}\r\n\r\n\tmultiplyMatrices( a, b ) {\r\n\r\n\t\tconst ae = a.elements;\r\n\t\tconst be = b.elements;\r\n\t\tconst te = this.elements;\r\n\r\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 3 ], a13 = ae[ 6 ];\r\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 4 ], a23 = ae[ 7 ];\r\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 5 ], a33 = ae[ 8 ];\r\n\r\n\t\tconst b11 = be[ 0 ], b12 = be[ 3 ], b13 = be[ 6 ];\r\n\t\tconst b21 = be[ 1 ], b22 = be[ 4 ], b23 = be[ 7 ];\r\n\t\tconst b31 = be[ 2 ], b32 = be[ 5 ], b33 = be[ 8 ];\r\n\r\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31;\r\n\t\tte[ 3 ] = a11 * b12 + a12 * b22 + a13 * b32;\r\n\t\tte[ 6 ] = a11 * b13 + a12 * b23 + a13 * b33;\r\n\r\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31;\r\n\t\tte[ 4 ] = a21 * b12 + a22 * b22 + a23 * b32;\r\n\t\tte[ 7 ] = a21 * b13 + a22 * b23 + a23 * b33;\r\n\r\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31;\r\n\t\tte[ 5 ] = a31 * b12 + a32 * b22 + a33 * b32;\r\n\t\tte[ 8 ] = a31 * b13 + a32 * b23 + a33 * b33;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiplyScalar( s ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tte[ 0 ] *= s; te[ 3 ] *= s; te[ 6 ] *= s;\r\n\t\tte[ 1 ] *= s; te[ 4 ] *= s; te[ 7 ] *= s;\r\n\t\tte[ 2 ] *= s; te[ 5 ] *= s; te[ 8 ] *= s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdeterminant() {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tconst a = te[ 0 ], b = te[ 1 ], c = te[ 2 ],\r\n\t\t\td = te[ 3 ], e = te[ 4 ], f = te[ 5 ],\r\n\t\t\tg = te[ 6 ], h = te[ 7 ], i = te[ 8 ];\r\n\r\n\t\treturn a * e * i - a * f * h - b * d * i + b * f * g + c * d * h - c * e * g;\r\n\r\n\t}\r\n\r\n\tinvert() {\r\n\r\n\t\tconst te = this.elements,\r\n\r\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ],\r\n\t\t\tn12 = te[ 3 ], n22 = te[ 4 ], n32 = te[ 5 ],\r\n\t\t\tn13 = te[ 6 ], n23 = te[ 7 ], n33 = te[ 8 ],\r\n\r\n\t\t\tt11 = n33 * n22 - n32 * n23,\r\n\t\t\tt12 = n32 * n13 - n33 * n12,\r\n\t\t\tt13 = n23 * n12 - n22 * n13,\r\n\r\n\t\t\tdet = n11 * t11 + n21 * t12 + n31 * t13;\r\n\r\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0 );\r\n\r\n\t\tconst detInv = 1 / det;\r\n\r\n\t\tte[ 0 ] = t11 * detInv;\r\n\t\tte[ 1 ] = ( n31 * n23 - n33 * n21 ) * detInv;\r\n\t\tte[ 2 ] = ( n32 * n21 - n31 * n22 ) * detInv;\r\n\r\n\t\tte[ 3 ] = t12 * detInv;\r\n\t\tte[ 4 ] = ( n33 * n11 - n31 * n13 ) * detInv;\r\n\t\tte[ 5 ] = ( n31 * n12 - n32 * n11 ) * detInv;\r\n\r\n\t\tte[ 6 ] = t13 * detInv;\r\n\t\tte[ 7 ] = ( n21 * n13 - n23 * n11 ) * detInv;\r\n\t\tte[ 8 ] = ( n22 * n11 - n21 * n12 ) * detInv;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttranspose() {\r\n\r\n\t\tlet tmp;\r\n\t\tconst m = this.elements;\r\n\r\n\t\ttmp = m[ 1 ]; m[ 1 ] = m[ 3 ]; m[ 3 ] = tmp;\r\n\t\ttmp = m[ 2 ]; m[ 2 ] = m[ 6 ]; m[ 6 ] = tmp;\r\n\t\ttmp = m[ 5 ]; m[ 5 ] = m[ 7 ]; m[ 7 ] = tmp;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetNormalMatrix( matrix4 ) {\r\n\r\n\t\treturn this.setFromMatrix4( matrix4 ).copy( this ).invert().transpose();\r\n\r\n\t}\r\n\r\n\ttransposeIntoArray( r ) {\r\n\r\n\t\tconst m = this.elements;\r\n\r\n\t\tr[ 0 ] = m[ 0 ];\r\n\t\tr[ 1 ] = m[ 3 ];\r\n\t\tr[ 2 ] = m[ 6 ];\r\n\t\tr[ 3 ] = m[ 1 ];\r\n\t\tr[ 4 ] = m[ 4 ];\r\n\t\tr[ 5 ] = m[ 7 ];\r\n\t\tr[ 6 ] = m[ 2 ];\r\n\t\tr[ 7 ] = m[ 5 ];\r\n\t\tr[ 8 ] = m[ 8 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetUvTransform( tx, ty, sx, sy, rotation, cx, cy ) {\r\n\r\n\t\tconst c = Math.cos( rotation );\r\n\t\tconst s = Math.sin( rotation );\r\n\r\n\t\tthis.set(\r\n\t\t\tsx * c, sx * s, - sx * ( c * cx + s * cy ) + cx + tx,\r\n\t\t\t- sy * s, sy * c, - sy * ( - s * cx + c * cy ) + cy + ty,\r\n\t\t\t0, 0, 1\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tscale( sx, sy ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tte[ 0 ] *= sx; te[ 3 ] *= sx; te[ 6 ] *= sx;\r\n\t\tte[ 1 ] *= sy; te[ 4 ] *= sy; te[ 7 ] *= sy;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\trotate( theta ) {\r\n\r\n\t\tconst c = Math.cos( theta );\r\n\t\tconst s = Math.sin( theta );\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tconst a11 = te[ 0 ], a12 = te[ 3 ], a13 = te[ 6 ];\r\n\t\tconst a21 = te[ 1 ], a22 = te[ 4 ], a23 = te[ 7 ];\r\n\r\n\t\tte[ 0 ] = c * a11 + s * a21;\r\n\t\tte[ 3 ] = c * a12 + s * a22;\r\n\t\tte[ 6 ] = c * a13 + s * a23;\r\n\r\n\t\tte[ 1 ] = - s * a11 + c * a21;\r\n\t\tte[ 4 ] = - s * a12 + c * a22;\r\n\t\tte[ 7 ] = - s * a13 + c * a23;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttranslate( tx, ty ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tte[ 0 ] += tx * te[ 2 ]; te[ 3 ] += tx * te[ 5 ]; te[ 6 ] += tx * te[ 8 ];\r\n\t\tte[ 1 ] += ty * te[ 2 ]; te[ 4 ] += ty * te[ 5 ]; te[ 7 ] += ty * te[ 8 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( matrix ) {\r\n\r\n\t\tconst te = this.elements;\r\n\t\tconst me = matrix.elements;\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\r\n\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\r\n\t}\r\n\r\n\tfromArray( array, offset = 0 ) {\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tthis.elements[ i ] = array[ i + offset ];\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoArray( array = [], offset = 0 ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tarray[ offset ] = te[ 0 ];\r\n\t\tarray[ offset + 1 ] = te[ 1 ];\r\n\t\tarray[ offset + 2 ] = te[ 2 ];\r\n\r\n\t\tarray[ offset + 3 ] = te[ 3 ];\r\n\t\tarray[ offset + 4 ] = te[ 4 ];\r\n\t\tarray[ offset + 5 ] = te[ 5 ];\r\n\r\n\t\tarray[ offset + 6 ] = te[ 6 ];\r\n\t\tarray[ offset + 7 ] = te[ 7 ];\r\n\t\tarray[ offset + 8 ] = te[ 8 ];\r\n\r\n\t\treturn array;\r\n\r\n\t}\r\n\r\n}\r\n\r\nlet _canvas;\r\n\r\nconst ImageUtils = {\r\n\r\n\tgetDataURL: function ( image ) {\r\n\r\n\t\tif ( /^data:/i.test( image.src ) ) {\r\n\r\n\t\t\treturn image.src;\r\n\r\n\t\t}\r\n\r\n\t\tif ( typeof HTMLCanvasElement == 'undefined' ) {\r\n\r\n\t\t\treturn image.src;\r\n\r\n\t\t}\r\n\r\n\t\tlet canvas;\r\n\r\n\t\tif ( image instanceof HTMLCanvasElement ) {\r\n\r\n\t\t\tcanvas = image;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( _canvas === undefined ) _canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\r\n\r\n\t\t\t_canvas.width = image.width;\r\n\t\t\t_canvas.height = image.height;\r\n\r\n\t\t\tconst context = _canvas.getContext( '2d' );\r\n\r\n\t\t\tif ( image instanceof ImageData ) {\r\n\r\n\t\t\t\tcontext.putImageData( image, 0, 0 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tcontext.drawImage( image, 0, 0, image.width, image.height );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcanvas = _canvas;\r\n\r\n\t\t}\r\n\r\n\t\tif ( canvas.width > 2048 || canvas.height > 2048 ) {\r\n\r\n\t\t\treturn canvas.toDataURL( 'image/jpeg', 0.6 );\r\n\r\n\t\t} else {\r\n\r\n\t\t\treturn canvas.toDataURL( 'image/png' );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\nlet textureId = 0;\r\n\r\nfunction Texture( image = Texture.DEFAULT_IMAGE, mapping = Texture.DEFAULT_MAPPING, wrapS = ClampToEdgeWrapping, wrapT = ClampToEdgeWrapping, magFilter = LinearFilter, minFilter = LinearMipmapLinearFilter, format = RGBAFormat, type = UnsignedByteType, anisotropy = 1, encoding = LinearEncoding ) {\r\n\r\n\tObject.defineProperty( this, 'id', { value: textureId ++ } );\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n\tthis.name = '';\r\n\r\n\tthis.image = image;\r\n\tthis.mipmaps = [];\r\n\r\n\tthis.mapping = mapping;\r\n\r\n\tthis.wrapS = wrapS;\r\n\tthis.wrapT = wrapT;\r\n\r\n\tthis.magFilter = magFilter;\r\n\tthis.minFilter = minFilter;\r\n\r\n\tthis.anisotropy = anisotropy;\r\n\r\n\tthis.format = format;\r\n\tthis.internalFormat = null;\r\n\tthis.type = type;\r\n\r\n\tthis.offset = new Vector2( 0, 0 );\r\n\tthis.repeat = new Vector2( 1, 1 );\r\n\tthis.center = new Vector2( 0, 0 );\r\n\tthis.rotation = 0;\r\n\r\n\tthis.matrixAutoUpdate = true;\r\n\tthis.matrix = new Matrix3();\r\n\r\n\tthis.generateMipmaps = true;\r\n\tthis.premultiplyAlpha = false;\r\n\tthis.flipY = true;\r\n\tthis.unpackAlignment = 4;\t// valid values: 1, 2, 4, 8 (see http://www.khronos.org/opengles/sdk/docs/man/xhtml/glPixelStorei.xml)\r\n\r\n\t// Values of encoding !== THREE.LinearEncoding only supported on map, envMap and emissiveMap.\r\n\t//\r\n\t// Also changing the encoding after already used by a Material will not automatically make the Material\r\n\t// update. You need to explicitly call Material.needsUpdate to trigger it to recompile.\r\n\tthis.encoding = encoding;\r\n\r\n\tthis.version = 0;\r\n\tthis.onUpdate = null;\r\n\r\n}\r\n\r\nTexture.DEFAULT_IMAGE = undefined;\r\nTexture.DEFAULT_MAPPING = UVMapping;\r\n\r\nTexture.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\r\n\r\n\tconstructor: Texture,\r\n\r\n\tisTexture: true,\r\n\r\n\tupdateMatrix: function () {\r\n\r\n\t\tthis.matrix.setUvTransform( this.offset.x, this.offset.y, this.repeat.x, this.repeat.y, this.rotation, this.center.x, this.center.y );\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tthis.name = source.name;\r\n\r\n\t\tthis.image = source.image;\r\n\t\tthis.mipmaps = source.mipmaps.slice( 0 );\r\n\r\n\t\tthis.mapping = source.mapping;\r\n\r\n\t\tthis.wrapS = source.wrapS;\r\n\t\tthis.wrapT = source.wrapT;\r\n\r\n\t\tthis.magFilter = source.magFilter;\r\n\t\tthis.minFilter = source.minFilter;\r\n\r\n\t\tthis.anisotropy = source.anisotropy;\r\n\r\n\t\tthis.format = source.format;\r\n\t\tthis.internalFormat = source.internalFormat;\r\n\t\tthis.type = source.type;\r\n\r\n\t\tthis.offset.copy( source.offset );\r\n\t\tthis.repeat.copy( source.repeat );\r\n\t\tthis.center.copy( source.center );\r\n\t\tthis.rotation = source.rotation;\r\n\r\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\r\n\t\tthis.matrix.copy( source.matrix );\r\n\r\n\t\tthis.generateMipmaps = source.generateMipmaps;\r\n\t\tthis.premultiplyAlpha = source.premultiplyAlpha;\r\n\t\tthis.flipY = source.flipY;\r\n\t\tthis.unpackAlignment = source.unpackAlignment;\r\n\t\tthis.encoding = source.encoding;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\r\n\r\n\t\tif ( ! isRootObject && meta.textures[ this.uuid ] !== undefined ) {\r\n\r\n\t\t\treturn meta.textures[ this.uuid ];\r\n\r\n\t\t}\r\n\r\n\t\tconst output = {\r\n\r\n\t\t\tmetadata: {\r\n\t\t\t\tversion: 4.5,\r\n\t\t\t\ttype: 'Texture',\r\n\t\t\t\tgenerator: 'Texture.toJSON'\r\n\t\t\t},\r\n\r\n\t\t\tuuid: this.uuid,\r\n\t\t\tname: this.name,\r\n\r\n\t\t\tmapping: this.mapping,\r\n\r\n\t\t\trepeat: [ this.repeat.x, this.repeat.y ],\r\n\t\t\toffset: [ this.offset.x, this.offset.y ],\r\n\t\t\tcenter: [ this.center.x, this.center.y ],\r\n\t\t\trotation: this.rotation,\r\n\r\n\t\t\twrap: [ this.wrapS, this.wrapT ],\r\n\r\n\t\t\tformat: this.format,\r\n\t\t\ttype: this.type,\r\n\t\t\tencoding: this.encoding,\r\n\r\n\t\t\tminFilter: this.minFilter,\r\n\t\t\tmagFilter: this.magFilter,\r\n\t\t\tanisotropy: this.anisotropy,\r\n\r\n\t\t\tflipY: this.flipY,\r\n\r\n\t\t\tpremultiplyAlpha: this.premultiplyAlpha,\r\n\t\t\tunpackAlignment: this.unpackAlignment\r\n\r\n\t\t};\r\n\r\n\t\tif ( this.image !== undefined ) {\r\n\r\n\t\t\t// TODO: Move to THREE.Image\r\n\r\n\t\t\tconst image = this.image;\r\n\r\n\t\t\tif ( image.uuid === undefined ) {\r\n\r\n\t\t\t\timage.uuid = MathUtils.generateUUID(); // UGH\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( ! isRootObject && meta.images[ image.uuid ] === undefined ) {\r\n\r\n\t\t\t\tlet url;\r\n\r\n\t\t\t\tif ( Array.isArray( image ) ) {\r\n\r\n\t\t\t\t\t// process array of images e.g. CubeTexture\r\n\r\n\t\t\t\t\turl = [];\r\n\r\n\t\t\t\t\tfor ( let i = 0, l = image.length; i < l; i ++ ) {\r\n\r\n\t\t\t\t\t\t// check cube texture with data textures\r\n\r\n\t\t\t\t\t\tif ( image[ i ].isDataTexture ) {\r\n\r\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ].image ) );\r\n\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\turl.push( serializeImage( image[ i ] ) );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// process single image\r\n\r\n\t\t\t\t\turl = serializeImage( image );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmeta.images[ image.uuid ] = {\r\n\t\t\t\t\tuuid: image.uuid,\r\n\t\t\t\t\turl: url\r\n\t\t\t\t};\r\n\r\n\t\t\t}\r\n\r\n\t\t\toutput.image = image.uuid;\r\n\r\n\t\t}\r\n\r\n\t\tif ( ! isRootObject ) {\r\n\r\n\t\t\tmeta.textures[ this.uuid ] = output;\r\n\r\n\t\t}\r\n\r\n\t\treturn output;\r\n\r\n\t},\r\n\r\n\tdispose: function () {\r\n\r\n\t\tthis.dispatchEvent( { type: 'dispose' } );\r\n\r\n\t},\r\n\r\n\ttransformUv: function ( uv ) {\r\n\r\n\t\tif ( this.mapping !== UVMapping ) return uv;\r\n\r\n\t\tuv.applyMatrix3( this.matrix );\r\n\r\n\t\tif ( uv.x < 0 || uv.x > 1 ) {\r\n\r\n\t\t\tswitch ( this.wrapS ) {\r\n\r\n\t\t\t\tcase RepeatWrapping:\r\n\r\n\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase ClampToEdgeWrapping:\r\n\r\n\t\t\t\t\tuv.x = uv.x < 0 ? 0 : 1;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase MirroredRepeatWrapping:\r\n\r\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.x ) % 2 ) === 1 ) {\r\n\r\n\t\t\t\t\t\tuv.x = Math.ceil( uv.x ) - uv.x;\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tuv.x = uv.x - Math.floor( uv.x );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( uv.y < 0 || uv.y > 1 ) {\r\n\r\n\t\t\tswitch ( this.wrapT ) {\r\n\r\n\t\t\t\tcase RepeatWrapping:\r\n\r\n\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase ClampToEdgeWrapping:\r\n\r\n\t\t\t\t\tuv.y = uv.y < 0 ? 0 : 1;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase MirroredRepeatWrapping:\r\n\r\n\t\t\t\t\tif ( Math.abs( Math.floor( uv.y ) % 2 ) === 1 ) {\r\n\r\n\t\t\t\t\t\tuv.y = Math.ceil( uv.y ) - uv.y;\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tuv.y = uv.y - Math.floor( uv.y );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.flipY ) {\r\n\r\n\t\t\tuv.y = 1 - uv.y;\r\n\r\n\t\t}\r\n\r\n\t\treturn uv;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperty( Texture.prototype, 'needsUpdate', {\r\n\r\n\tset: function ( value ) {\r\n\r\n\t\tif ( value === true ) this.version ++;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction serializeImage( image ) {\r\n\r\n\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\r\n\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\r\n\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\r\n\r\n\t\t// default images\r\n\r\n\t\treturn ImageUtils.getDataURL( image );\r\n\r\n\t} else {\r\n\r\n\t\tif ( image.data ) {\r\n\r\n\t\t\t// images of DataTexture\r\n\r\n\t\t\treturn {\r\n\t\t\t\tdata: Array.prototype.slice.call( image.data ),\r\n\t\t\t\twidth: image.width,\r\n\t\t\t\theight: image.height,\r\n\t\t\t\ttype: image.data.constructor.name\r\n\t\t\t};\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconsole.warn( 'THREE.Texture: Unable to serialize Texture.' );\r\n\t\t\treturn {};\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass Vector4 {\r\n\r\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\r\n\r\n\t\tObject.defineProperty( this, 'isVector4', { value: true } );\r\n\r\n\t\tthis.x = x;\r\n\t\tthis.y = y;\r\n\t\tthis.z = z;\r\n\t\tthis.w = w;\r\n\r\n\t}\r\n\r\n\tget width() {\r\n\r\n\t\treturn this.z;\r\n\r\n\t}\r\n\r\n\tset width( value ) {\r\n\r\n\t\tthis.z = value;\r\n\r\n\t}\r\n\r\n\tget height() {\r\n\r\n\t\treturn this.w;\r\n\r\n\t}\r\n\r\n\tset height( value ) {\r\n\r\n\t\tthis.w = value;\r\n\r\n\t}\r\n\r\n\tset( x, y, z, w ) {\r\n\r\n\t\tthis.x = x;\r\n\t\tthis.y = y;\r\n\t\tthis.z = z;\r\n\t\tthis.w = w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetScalar( scalar ) {\r\n\r\n\t\tthis.x = scalar;\r\n\t\tthis.y = scalar;\r\n\t\tthis.z = scalar;\r\n\t\tthis.w = scalar;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetX( x ) {\r\n\r\n\t\tthis.x = x;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetY( y ) {\r\n\r\n\t\tthis.y = y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetZ( z ) {\r\n\r\n\t\tthis.z = z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetW( w ) {\r\n\r\n\t\tthis.w = w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetComponent( index, value ) {\r\n\r\n\t\tswitch ( index ) {\r\n\r\n\t\t\tcase 0: this.x = value; break;\r\n\t\t\tcase 1: this.y = value; break;\r\n\t\t\tcase 2: this.z = value; break;\r\n\t\t\tcase 3: this.w = value; break;\r\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetComponent( index ) {\r\n\r\n\t\tswitch ( index ) {\r\n\r\n\t\t\tcase 0: return this.x;\r\n\t\t\tcase 1: return this.y;\r\n\t\t\tcase 2: return this.z;\r\n\t\t\tcase 3: return this.w;\r\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor( this.x, this.y, this.z, this.w );\r\n\r\n\t}\r\n\r\n\tcopy( v ) {\r\n\r\n\t\tthis.x = v.x;\r\n\t\tthis.y = v.y;\r\n\t\tthis.z = v.z;\r\n\t\tthis.w = ( v.w !== undefined ) ? v.w : 1;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tadd( v, w ) {\r\n\r\n\t\tif ( w !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\r\n\t\t\treturn this.addVectors( v, w );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x += v.x;\r\n\t\tthis.y += v.y;\r\n\t\tthis.z += v.z;\r\n\t\tthis.w += v.w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddScalar( s ) {\r\n\r\n\t\tthis.x += s;\r\n\t\tthis.y += s;\r\n\t\tthis.z += s;\r\n\t\tthis.w += s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddVectors( a, b ) {\r\n\r\n\t\tthis.x = a.x + b.x;\r\n\t\tthis.y = a.y + b.y;\r\n\t\tthis.z = a.z + b.z;\r\n\t\tthis.w = a.w + b.w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddScaledVector( v, s ) {\r\n\r\n\t\tthis.x += v.x * s;\r\n\t\tthis.y += v.y * s;\r\n\t\tthis.z += v.z * s;\r\n\t\tthis.w += v.w * s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsub( v, w ) {\r\n\r\n\t\tif ( w !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\r\n\t\t\treturn this.subVectors( v, w );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x -= v.x;\r\n\t\tthis.y -= v.y;\r\n\t\tthis.z -= v.z;\r\n\t\tthis.w -= v.w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsubScalar( s ) {\r\n\r\n\t\tthis.x -= s;\r\n\t\tthis.y -= s;\r\n\t\tthis.z -= s;\r\n\t\tthis.w -= s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsubVectors( a, b ) {\r\n\r\n\t\tthis.x = a.x - b.x;\r\n\t\tthis.y = a.y - b.y;\r\n\t\tthis.z = a.z - b.z;\r\n\t\tthis.w = a.w - b.w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiplyScalar( scalar ) {\r\n\r\n\t\tthis.x *= scalar;\r\n\t\tthis.y *= scalar;\r\n\t\tthis.z *= scalar;\r\n\t\tthis.w *= scalar;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tapplyMatrix4( m ) {\r\n\r\n\t\tconst x = this.x, y = this.y, z = this.z, w = this.w;\r\n\t\tconst e = m.elements;\r\n\r\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] * w;\r\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] * w;\r\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] * w;\r\n\t\tthis.w = e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] * w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdivideScalar( scalar ) {\r\n\r\n\t\treturn this.multiplyScalar( 1 / scalar );\r\n\r\n\t}\r\n\r\n\tsetAxisAngleFromQuaternion( q ) {\r\n\r\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/quaternionToAngle/index.htm\r\n\r\n\t\t// q is assumed to be normalized\r\n\r\n\t\tthis.w = 2 * Math.acos( q.w );\r\n\r\n\t\tconst s = Math.sqrt( 1 - q.w * q.w );\r\n\r\n\t\tif ( s < 0.0001 ) {\r\n\r\n\t\t\tthis.x = 1;\r\n\t\t\tthis.y = 0;\r\n\t\t\tthis.z = 0;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.x = q.x / s;\r\n\t\t\tthis.y = q.y / s;\r\n\t\t\tthis.z = q.z / s;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetAxisAngleFromRotationMatrix( m ) {\r\n\r\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm\r\n\r\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\r\n\r\n\t\tlet angle, x, y, z; // variables for result\r\n\t\tconst epsilon = 0.01,\t\t// margin to allow for rounding errors\r\n\t\t\tepsilon2 = 0.1,\t\t// margin to distinguish between 0 and 180 degrees\r\n\r\n\t\t\tte = m.elements,\r\n\r\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\r\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\r\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\r\n\r\n\t\tif ( ( Math.abs( m12 - m21 ) < epsilon ) &&\r\n\t\t ( Math.abs( m13 - m31 ) < epsilon ) &&\r\n\t\t ( Math.abs( m23 - m32 ) < epsilon ) ) {\r\n\r\n\t\t\t// singularity found\r\n\t\t\t// first check for identity matrix which must have +1 for all terms\r\n\t\t\t// in leading diagonal and zero in other terms\r\n\r\n\t\t\tif ( ( Math.abs( m12 + m21 ) < epsilon2 ) &&\r\n\t\t\t ( Math.abs( m13 + m31 ) < epsilon2 ) &&\r\n\t\t\t ( Math.abs( m23 + m32 ) < epsilon2 ) &&\r\n\t\t\t ( Math.abs( m11 + m22 + m33 - 3 ) < epsilon2 ) ) {\r\n\r\n\t\t\t\t// this singularity is identity matrix so angle = 0\r\n\r\n\t\t\t\tthis.set( 1, 0, 0, 0 );\r\n\r\n\t\t\t\treturn this; // zero angle, arbitrary axis\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// otherwise this singularity is angle = 180\r\n\r\n\t\t\tangle = Math.PI;\r\n\r\n\t\t\tconst xx = ( m11 + 1 ) / 2;\r\n\t\t\tconst yy = ( m22 + 1 ) / 2;\r\n\t\t\tconst zz = ( m33 + 1 ) / 2;\r\n\t\t\tconst xy = ( m12 + m21 ) / 4;\r\n\t\t\tconst xz = ( m13 + m31 ) / 4;\r\n\t\t\tconst yz = ( m23 + m32 ) / 4;\r\n\r\n\t\t\tif ( ( xx > yy ) && ( xx > zz ) ) {\r\n\r\n\t\t\t\t// m11 is the largest diagonal term\r\n\r\n\t\t\t\tif ( xx < epsilon ) {\r\n\r\n\t\t\t\t\tx = 0;\r\n\t\t\t\t\ty = 0.707106781;\r\n\t\t\t\t\tz = 0.707106781;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tx = Math.sqrt( xx );\r\n\t\t\t\t\ty = xy / x;\r\n\t\t\t\t\tz = xz / x;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if ( yy > zz ) {\r\n\r\n\t\t\t\t// m22 is the largest diagonal term\r\n\r\n\t\t\t\tif ( yy < epsilon ) {\r\n\r\n\t\t\t\t\tx = 0.707106781;\r\n\t\t\t\t\ty = 0;\r\n\t\t\t\t\tz = 0.707106781;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\ty = Math.sqrt( yy );\r\n\t\t\t\t\tx = xy / y;\r\n\t\t\t\t\tz = yz / y;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// m33 is the largest diagonal term so base result on this\r\n\r\n\t\t\t\tif ( zz < epsilon ) {\r\n\r\n\t\t\t\t\tx = 0.707106781;\r\n\t\t\t\t\ty = 0.707106781;\r\n\t\t\t\t\tz = 0;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tz = Math.sqrt( zz );\r\n\t\t\t\t\tx = xz / z;\r\n\t\t\t\t\ty = yz / z;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.set( x, y, z, angle );\r\n\r\n\t\t\treturn this; // return 180 deg rotation\r\n\r\n\t\t}\r\n\r\n\t\t// as we have reached here there are no singularities so we can handle normally\r\n\r\n\t\tlet s = Math.sqrt( ( m32 - m23 ) * ( m32 - m23 ) +\r\n\t\t\t( m13 - m31 ) * ( m13 - m31 ) +\r\n\t\t\t( m21 - m12 ) * ( m21 - m12 ) ); // used to normalize\r\n\r\n\t\tif ( Math.abs( s ) < 0.001 ) s = 1;\r\n\r\n\t\t// prevent divide by zero, should not happen if matrix is orthogonal and should be\r\n\t\t// caught by singularity test above, but I've left it in just in case\r\n\r\n\t\tthis.x = ( m32 - m23 ) / s;\r\n\t\tthis.y = ( m13 - m31 ) / s;\r\n\t\tthis.z = ( m21 - m12 ) / s;\r\n\t\tthis.w = Math.acos( ( m11 + m22 + m33 - 1 ) / 2 );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmin( v ) {\r\n\r\n\t\tthis.x = Math.min( this.x, v.x );\r\n\t\tthis.y = Math.min( this.y, v.y );\r\n\t\tthis.z = Math.min( this.z, v.z );\r\n\t\tthis.w = Math.min( this.w, v.w );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmax( v ) {\r\n\r\n\t\tthis.x = Math.max( this.x, v.x );\r\n\t\tthis.y = Math.max( this.y, v.y );\r\n\t\tthis.z = Math.max( this.z, v.z );\r\n\t\tthis.w = Math.max( this.w, v.w );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclamp( min, max ) {\r\n\r\n\t\t// assumes min < max, componentwise\r\n\r\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\r\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\r\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\r\n\t\tthis.w = Math.max( min.w, Math.min( max.w, this.w ) );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclampScalar( minVal, maxVal ) {\r\n\r\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\r\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\r\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\r\n\t\tthis.w = Math.max( minVal, Math.min( maxVal, this.w ) );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclampLength( min, max ) {\r\n\r\n\t\tconst length = this.length();\r\n\r\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\r\n\r\n\t}\r\n\r\n\tfloor() {\r\n\r\n\t\tthis.x = Math.floor( this.x );\r\n\t\tthis.y = Math.floor( this.y );\r\n\t\tthis.z = Math.floor( this.z );\r\n\t\tthis.w = Math.floor( this.w );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tceil() {\r\n\r\n\t\tthis.x = Math.ceil( this.x );\r\n\t\tthis.y = Math.ceil( this.y );\r\n\t\tthis.z = Math.ceil( this.z );\r\n\t\tthis.w = Math.ceil( this.w );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tround() {\r\n\r\n\t\tthis.x = Math.round( this.x );\r\n\t\tthis.y = Math.round( this.y );\r\n\t\tthis.z = Math.round( this.z );\r\n\t\tthis.w = Math.round( this.w );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\troundToZero() {\r\n\r\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\r\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\r\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\r\n\t\tthis.w = ( this.w < 0 ) ? Math.ceil( this.w ) : Math.floor( this.w );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tnegate() {\r\n\r\n\t\tthis.x = - this.x;\r\n\t\tthis.y = - this.y;\r\n\t\tthis.z = - this.z;\r\n\t\tthis.w = - this.w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdot( v ) {\r\n\r\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z + this.w * v.w;\r\n\r\n\t}\r\n\r\n\tlengthSq() {\r\n\r\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w;\r\n\r\n\t}\r\n\r\n\tlength() {\r\n\r\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z + this.w * this.w );\r\n\r\n\t}\r\n\r\n\tmanhattanLength() {\r\n\r\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z ) + Math.abs( this.w );\r\n\r\n\t}\r\n\r\n\tnormalize() {\r\n\r\n\t\treturn this.divideScalar( this.length() || 1 );\r\n\r\n\t}\r\n\r\n\tsetLength( length ) {\r\n\r\n\t\treturn this.normalize().multiplyScalar( length );\r\n\r\n\t}\r\n\r\n\tlerp( v, alpha ) {\r\n\r\n\t\tthis.x += ( v.x - this.x ) * alpha;\r\n\t\tthis.y += ( v.y - this.y ) * alpha;\r\n\t\tthis.z += ( v.z - this.z ) * alpha;\r\n\t\tthis.w += ( v.w - this.w ) * alpha;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tlerpVectors( v1, v2, alpha ) {\r\n\r\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\r\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\r\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\r\n\t\tthis.w = v1.w + ( v2.w - v1.w ) * alpha;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( v ) {\r\n\r\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) && ( v.w === this.w ) );\r\n\r\n\t}\r\n\r\n\tfromArray( array, offset = 0 ) {\r\n\r\n\t\tthis.x = array[ offset ];\r\n\t\tthis.y = array[ offset + 1 ];\r\n\t\tthis.z = array[ offset + 2 ];\r\n\t\tthis.w = array[ offset + 3 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoArray( array = [], offset = 0 ) {\r\n\r\n\t\tarray[ offset ] = this.x;\r\n\t\tarray[ offset + 1 ] = this.y;\r\n\t\tarray[ offset + 2 ] = this.z;\r\n\t\tarray[ offset + 3 ] = this.w;\r\n\r\n\t\treturn array;\r\n\r\n\t}\r\n\r\n\tfromBufferAttribute( attribute, index, offset ) {\r\n\r\n\t\tif ( offset !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector4: offset has been removed from .fromBufferAttribute().' );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x = attribute.getX( index );\r\n\t\tthis.y = attribute.getY( index );\r\n\t\tthis.z = attribute.getZ( index );\r\n\t\tthis.w = attribute.getW( index );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\trandom() {\r\n\r\n\t\tthis.x = Math.random();\r\n\t\tthis.y = Math.random();\r\n\t\tthis.z = Math.random();\r\n\t\tthis.w = Math.random();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\n/*\r\n In options, we can specify:\r\n * Texture parameters for an auto-generated target texture\r\n * depthBuffer/stencilBuffer: Booleans to indicate if we should generate these buffers\r\n*/\r\nfunction WebGLRenderTarget( width, height, options ) {\r\n\r\n\tthis.width = width;\r\n\tthis.height = height;\r\n\r\n\tthis.scissor = new Vector4( 0, 0, width, height );\r\n\tthis.scissorTest = false;\r\n\r\n\tthis.viewport = new Vector4( 0, 0, width, height );\r\n\r\n\toptions = options || {};\r\n\r\n\tthis.texture = new Texture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\r\n\r\n\tthis.texture.image = {};\r\n\tthis.texture.image.width = width;\r\n\tthis.texture.image.height = height;\r\n\r\n\tthis.texture.generateMipmaps = options.generateMipmaps !== undefined ? options.generateMipmaps : false;\r\n\tthis.texture.minFilter = options.minFilter !== undefined ? options.minFilter : LinearFilter;\r\n\r\n\tthis.depthBuffer = options.depthBuffer !== undefined ? options.depthBuffer : true;\r\n\tthis.stencilBuffer = options.stencilBuffer !== undefined ? options.stencilBuffer : false;\r\n\tthis.depthTexture = options.depthTexture !== undefined ? options.depthTexture : null;\r\n\r\n}\r\n\r\nWebGLRenderTarget.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\r\n\r\n\tconstructor: WebGLRenderTarget,\r\n\r\n\tisWebGLRenderTarget: true,\r\n\r\n\tsetSize: function ( width, height ) {\r\n\r\n\t\tif ( this.width !== width || this.height !== height ) {\r\n\r\n\t\t\tthis.width = width;\r\n\t\t\tthis.height = height;\r\n\r\n\t\t\tthis.texture.image.width = width;\r\n\t\t\tthis.texture.image.height = height;\r\n\r\n\t\t\tthis.dispose();\r\n\r\n\t\t}\r\n\r\n\t\tthis.viewport.set( 0, 0, width, height );\r\n\t\tthis.scissor.set( 0, 0, width, height );\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tthis.width = source.width;\r\n\t\tthis.height = source.height;\r\n\r\n\t\tthis.viewport.copy( source.viewport );\r\n\r\n\t\tthis.texture = source.texture.clone();\r\n\r\n\t\tthis.depthBuffer = source.depthBuffer;\r\n\t\tthis.stencilBuffer = source.stencilBuffer;\r\n\t\tthis.depthTexture = source.depthTexture;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tdispose: function () {\r\n\r\n\t\tthis.dispatchEvent( { type: 'dispose' } );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction WebGLMultisampleRenderTarget( width, height, options ) {\r\n\r\n\tWebGLRenderTarget.call( this, width, height, options );\r\n\r\n\tthis.samples = 4;\r\n\r\n}\r\n\r\nWebGLMultisampleRenderTarget.prototype = Object.assign( Object.create( WebGLRenderTarget.prototype ), {\r\n\r\n\tconstructor: WebGLMultisampleRenderTarget,\r\n\r\n\tisWebGLMultisampleRenderTarget: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tWebGLRenderTarget.prototype.copy.call( this, source );\r\n\r\n\t\tthis.samples = source.samples;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nclass Quaternion {\r\n\r\n\tconstructor( x = 0, y = 0, z = 0, w = 1 ) {\r\n\r\n\t\tObject.defineProperty( this, 'isQuaternion', { value: true } );\r\n\r\n\t\tthis._x = x;\r\n\t\tthis._y = y;\r\n\t\tthis._z = z;\r\n\t\tthis._w = w;\r\n\r\n\t}\r\n\r\n\tstatic slerp( qa, qb, qm, t ) {\r\n\r\n\t\treturn qm.copy( qa ).slerp( qb, t );\r\n\r\n\t}\r\n\r\n\tstatic slerpFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1, t ) {\r\n\r\n\t\t// fuzz-free, array-based Quaternion SLERP operation\r\n\r\n\t\tlet x0 = src0[ srcOffset0 + 0 ],\r\n\t\t\ty0 = src0[ srcOffset0 + 1 ],\r\n\t\t\tz0 = src0[ srcOffset0 + 2 ],\r\n\t\t\tw0 = src0[ srcOffset0 + 3 ];\r\n\r\n\t\tconst x1 = src1[ srcOffset1 + 0 ],\r\n\t\t\ty1 = src1[ srcOffset1 + 1 ],\r\n\t\t\tz1 = src1[ srcOffset1 + 2 ],\r\n\t\t\tw1 = src1[ srcOffset1 + 3 ];\r\n\r\n\t\tif ( w0 !== w1 || x0 !== x1 || y0 !== y1 || z0 !== z1 ) {\r\n\r\n\t\t\tlet s = 1 - t;\r\n\t\t\tconst cos = x0 * x1 + y0 * y1 + z0 * z1 + w0 * w1,\r\n\t\t\t\tdir = ( cos >= 0 ? 1 : - 1 ),\r\n\t\t\t\tsqrSin = 1 - cos * cos;\r\n\r\n\t\t\t// Skip the Slerp for tiny steps to avoid numeric problems:\r\n\t\t\tif ( sqrSin > Number.EPSILON ) {\r\n\r\n\t\t\t\tconst sin = Math.sqrt( sqrSin ),\r\n\t\t\t\t\tlen = Math.atan2( sin, cos * dir );\r\n\r\n\t\t\t\ts = Math.sin( s * len ) / sin;\r\n\t\t\t\tt = Math.sin( t * len ) / sin;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst tDir = t * dir;\r\n\r\n\t\t\tx0 = x0 * s + x1 * tDir;\r\n\t\t\ty0 = y0 * s + y1 * tDir;\r\n\t\t\tz0 = z0 * s + z1 * tDir;\r\n\t\t\tw0 = w0 * s + w1 * tDir;\r\n\r\n\t\t\t// Normalize in case we just did a lerp:\r\n\t\t\tif ( s === 1 - t ) {\r\n\r\n\t\t\t\tconst f = 1 / Math.sqrt( x0 * x0 + y0 * y0 + z0 * z0 + w0 * w0 );\r\n\r\n\t\t\t\tx0 *= f;\r\n\t\t\t\ty0 *= f;\r\n\t\t\t\tz0 *= f;\r\n\t\t\t\tw0 *= f;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tdst[ dstOffset ] = x0;\r\n\t\tdst[ dstOffset + 1 ] = y0;\r\n\t\tdst[ dstOffset + 2 ] = z0;\r\n\t\tdst[ dstOffset + 3 ] = w0;\r\n\r\n\t}\r\n\r\n\tstatic multiplyQuaternionsFlat( dst, dstOffset, src0, srcOffset0, src1, srcOffset1 ) {\r\n\r\n\t\tconst x0 = src0[ srcOffset0 ];\r\n\t\tconst y0 = src0[ srcOffset0 + 1 ];\r\n\t\tconst z0 = src0[ srcOffset0 + 2 ];\r\n\t\tconst w0 = src0[ srcOffset0 + 3 ];\r\n\r\n\t\tconst x1 = src1[ srcOffset1 ];\r\n\t\tconst y1 = src1[ srcOffset1 + 1 ];\r\n\t\tconst z1 = src1[ srcOffset1 + 2 ];\r\n\t\tconst w1 = src1[ srcOffset1 + 3 ];\r\n\r\n\t\tdst[ dstOffset ] = x0 * w1 + w0 * x1 + y0 * z1 - z0 * y1;\r\n\t\tdst[ dstOffset + 1 ] = y0 * w1 + w0 * y1 + z0 * x1 - x0 * z1;\r\n\t\tdst[ dstOffset + 2 ] = z0 * w1 + w0 * z1 + x0 * y1 - y0 * x1;\r\n\t\tdst[ dstOffset + 3 ] = w0 * w1 - x0 * x1 - y0 * y1 - z0 * z1;\r\n\r\n\t\treturn dst;\r\n\r\n\t}\r\n\r\n\tget x() {\r\n\r\n\t\treturn this._x;\r\n\r\n\t}\r\n\r\n\tset x( value ) {\r\n\r\n\t\tthis._x = value;\r\n\t\tthis._onChangeCallback();\r\n\r\n\t}\r\n\r\n\tget y() {\r\n\r\n\t\treturn this._y;\r\n\r\n\t}\r\n\r\n\tset y( value ) {\r\n\r\n\t\tthis._y = value;\r\n\t\tthis._onChangeCallback();\r\n\r\n\t}\r\n\r\n\tget z() {\r\n\r\n\t\treturn this._z;\r\n\r\n\t}\r\n\r\n\tset z( value ) {\r\n\r\n\t\tthis._z = value;\r\n\t\tthis._onChangeCallback();\r\n\r\n\t}\r\n\r\n\tget w() {\r\n\r\n\t\treturn this._w;\r\n\r\n\t}\r\n\r\n\tset w( value ) {\r\n\r\n\t\tthis._w = value;\r\n\t\tthis._onChangeCallback();\r\n\r\n\t}\r\n\r\n\tset( x, y, z, w ) {\r\n\r\n\t\tthis._x = x;\r\n\t\tthis._y = y;\r\n\t\tthis._z = z;\r\n\t\tthis._w = w;\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor( this._x, this._y, this._z, this._w );\r\n\r\n\t}\r\n\r\n\tcopy( quaternion ) {\r\n\r\n\t\tthis._x = quaternion.x;\r\n\t\tthis._y = quaternion.y;\r\n\t\tthis._z = quaternion.z;\r\n\t\tthis._w = quaternion.w;\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromEuler( euler, update ) {\r\n\r\n\t\tif ( ! ( euler && euler.isEuler ) ) {\r\n\r\n\t\t\tthrow new Error( 'THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.' );\r\n\r\n\t\t}\r\n\r\n\t\tconst x = euler._x, y = euler._y, z = euler._z, order = euler._order;\r\n\r\n\t\t// http://www.mathworks.com/matlabcentral/fileexchange/\r\n\t\t// \t20696-function-to-convert-between-dcm-euler-angles-quaternions-and-euler-vectors/\r\n\t\t//\tcontent/SpinCalc.m\r\n\r\n\t\tconst cos = Math.cos;\r\n\t\tconst sin = Math.sin;\r\n\r\n\t\tconst c1 = cos( x / 2 );\r\n\t\tconst c2 = cos( y / 2 );\r\n\t\tconst c3 = cos( z / 2 );\r\n\r\n\t\tconst s1 = sin( x / 2 );\r\n\t\tconst s2 = sin( y / 2 );\r\n\t\tconst s3 = sin( z / 2 );\r\n\r\n\t\tswitch ( order ) {\r\n\r\n\t\t\tcase 'XYZ':\r\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\r\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\r\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\r\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'YXZ':\r\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\r\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\r\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\r\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'ZXY':\r\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\r\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\r\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\r\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'ZYX':\r\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\r\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\r\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\r\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'YZX':\r\n\t\t\t\tthis._x = s1 * c2 * c3 + c1 * s2 * s3;\r\n\t\t\t\tthis._y = c1 * s2 * c3 + s1 * c2 * s3;\r\n\t\t\t\tthis._z = c1 * c2 * s3 - s1 * s2 * c3;\r\n\t\t\t\tthis._w = c1 * c2 * c3 - s1 * s2 * s3;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'XZY':\r\n\t\t\t\tthis._x = s1 * c2 * c3 - c1 * s2 * s3;\r\n\t\t\t\tthis._y = c1 * s2 * c3 - s1 * c2 * s3;\r\n\t\t\t\tthis._z = c1 * c2 * s3 + s1 * s2 * c3;\r\n\t\t\t\tthis._w = c1 * c2 * c3 + s1 * s2 * s3;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tconsole.warn( 'THREE.Quaternion: .setFromEuler() encountered an unknown order: ' + order );\r\n\r\n\t\t}\r\n\r\n\t\tif ( update !== false ) this._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromAxisAngle( axis, angle ) {\r\n\r\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/angleToQuaternion/index.htm\r\n\r\n\t\t// assumes axis is normalized\r\n\r\n\t\tconst halfAngle = angle / 2, s = Math.sin( halfAngle );\r\n\r\n\t\tthis._x = axis.x * s;\r\n\t\tthis._y = axis.y * s;\r\n\t\tthis._z = axis.z * s;\r\n\t\tthis._w = Math.cos( halfAngle );\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromRotationMatrix( m ) {\r\n\r\n\t\t// http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm\r\n\r\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\r\n\r\n\t\tconst te = m.elements,\r\n\r\n\t\t\tm11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ],\r\n\t\t\tm21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ],\r\n\t\t\tm31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ],\r\n\r\n\t\t\ttrace = m11 + m22 + m33;\r\n\r\n\t\tif ( trace > 0 ) {\r\n\r\n\t\t\tconst s = 0.5 / Math.sqrt( trace + 1.0 );\r\n\r\n\t\t\tthis._w = 0.25 / s;\r\n\t\t\tthis._x = ( m32 - m23 ) * s;\r\n\t\t\tthis._y = ( m13 - m31 ) * s;\r\n\t\t\tthis._z = ( m21 - m12 ) * s;\r\n\r\n\t\t} else if ( m11 > m22 && m11 > m33 ) {\r\n\r\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m11 - m22 - m33 );\r\n\r\n\t\t\tthis._w = ( m32 - m23 ) / s;\r\n\t\t\tthis._x = 0.25 * s;\r\n\t\t\tthis._y = ( m12 + m21 ) / s;\r\n\t\t\tthis._z = ( m13 + m31 ) / s;\r\n\r\n\t\t} else if ( m22 > m33 ) {\r\n\r\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m22 - m11 - m33 );\r\n\r\n\t\t\tthis._w = ( m13 - m31 ) / s;\r\n\t\t\tthis._x = ( m12 + m21 ) / s;\r\n\t\t\tthis._y = 0.25 * s;\r\n\t\t\tthis._z = ( m23 + m32 ) / s;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst s = 2.0 * Math.sqrt( 1.0 + m33 - m11 - m22 );\r\n\r\n\t\t\tthis._w = ( m21 - m12 ) / s;\r\n\t\t\tthis._x = ( m13 + m31 ) / s;\r\n\t\t\tthis._y = ( m23 + m32 ) / s;\r\n\t\t\tthis._z = 0.25 * s;\r\n\r\n\t\t}\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromUnitVectors( vFrom, vTo ) {\r\n\r\n\t\t// assumes direction vectors vFrom and vTo are normalized\r\n\r\n\t\tconst EPS = 0.000001;\r\n\r\n\t\tlet r = vFrom.dot( vTo ) + 1;\r\n\r\n\t\tif ( r < EPS ) {\r\n\r\n\t\t\tr = 0;\r\n\r\n\t\t\tif ( Math.abs( vFrom.x ) > Math.abs( vFrom.z ) ) {\r\n\r\n\t\t\t\tthis._x = - vFrom.y;\r\n\t\t\t\tthis._y = vFrom.x;\r\n\t\t\t\tthis._z = 0;\r\n\t\t\t\tthis._w = r;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tthis._x = 0;\r\n\t\t\t\tthis._y = - vFrom.z;\r\n\t\t\t\tthis._z = vFrom.y;\r\n\t\t\t\tthis._w = r;\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// crossVectors( vFrom, vTo ); // inlined to avoid cyclic dependency on Vector3\r\n\r\n\t\t\tthis._x = vFrom.y * vTo.z - vFrom.z * vTo.y;\r\n\t\t\tthis._y = vFrom.z * vTo.x - vFrom.x * vTo.z;\r\n\t\t\tthis._z = vFrom.x * vTo.y - vFrom.y * vTo.x;\r\n\t\t\tthis._w = r;\r\n\r\n\t\t}\r\n\r\n\t\treturn this.normalize();\r\n\r\n\t}\r\n\r\n\tangleTo( q ) {\r\n\r\n\t\treturn 2 * Math.acos( Math.abs( MathUtils.clamp( this.dot( q ), - 1, 1 ) ) );\r\n\r\n\t}\r\n\r\n\trotateTowards( q, step ) {\r\n\r\n\t\tconst angle = this.angleTo( q );\r\n\r\n\t\tif ( angle === 0 ) return this;\r\n\r\n\t\tconst t = Math.min( 1, step / angle );\r\n\r\n\t\tthis.slerp( q, t );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tidentity() {\r\n\r\n\t\treturn this.set( 0, 0, 0, 1 );\r\n\r\n\t}\r\n\r\n\tinvert() {\r\n\r\n\t\t// quaternion is assumed to have unit length\r\n\r\n\t\treturn this.conjugate();\r\n\r\n\t}\r\n\r\n\tconjugate() {\r\n\r\n\t\tthis._x *= - 1;\r\n\t\tthis._y *= - 1;\r\n\t\tthis._z *= - 1;\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdot( v ) {\r\n\r\n\t\treturn this._x * v._x + this._y * v._y + this._z * v._z + this._w * v._w;\r\n\r\n\t}\r\n\r\n\tlengthSq() {\r\n\r\n\t\treturn this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w;\r\n\r\n\t}\r\n\r\n\tlength() {\r\n\r\n\t\treturn Math.sqrt( this._x * this._x + this._y * this._y + this._z * this._z + this._w * this._w );\r\n\r\n\t}\r\n\r\n\tnormalize() {\r\n\r\n\t\tlet l = this.length();\r\n\r\n\t\tif ( l === 0 ) {\r\n\r\n\t\t\tthis._x = 0;\r\n\t\t\tthis._y = 0;\r\n\t\t\tthis._z = 0;\r\n\t\t\tthis._w = 1;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tl = 1 / l;\r\n\r\n\t\t\tthis._x = this._x * l;\r\n\t\t\tthis._y = this._y * l;\r\n\t\t\tthis._z = this._z * l;\r\n\t\t\tthis._w = this._w * l;\r\n\r\n\t\t}\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiply( q, p ) {\r\n\r\n\t\tif ( p !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead.' );\r\n\t\t\treturn this.multiplyQuaternions( q, p );\r\n\r\n\t\t}\r\n\r\n\t\treturn this.multiplyQuaternions( this, q );\r\n\r\n\t}\r\n\r\n\tpremultiply( q ) {\r\n\r\n\t\treturn this.multiplyQuaternions( q, this );\r\n\r\n\t}\r\n\r\n\tmultiplyQuaternions( a, b ) {\r\n\r\n\t\t// from http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/code/index.htm\r\n\r\n\t\tconst qax = a._x, qay = a._y, qaz = a._z, qaw = a._w;\r\n\t\tconst qbx = b._x, qby = b._y, qbz = b._z, qbw = b._w;\r\n\r\n\t\tthis._x = qax * qbw + qaw * qbx + qay * qbz - qaz * qby;\r\n\t\tthis._y = qay * qbw + qaw * qby + qaz * qbx - qax * qbz;\r\n\t\tthis._z = qaz * qbw + qaw * qbz + qax * qby - qay * qbx;\r\n\t\tthis._w = qaw * qbw - qax * qbx - qay * qby - qaz * qbz;\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tslerp( qb, t ) {\r\n\r\n\t\tif ( t === 0 ) return this;\r\n\t\tif ( t === 1 ) return this.copy( qb );\r\n\r\n\t\tconst x = this._x, y = this._y, z = this._z, w = this._w;\r\n\r\n\t\t// http://www.euclideanspace.com/maths/algebra/realNormedAlgebra/quaternions/slerp/\r\n\r\n\t\tlet cosHalfTheta = w * qb._w + x * qb._x + y * qb._y + z * qb._z;\r\n\r\n\t\tif ( cosHalfTheta < 0 ) {\r\n\r\n\t\t\tthis._w = - qb._w;\r\n\t\t\tthis._x = - qb._x;\r\n\t\t\tthis._y = - qb._y;\r\n\t\t\tthis._z = - qb._z;\r\n\r\n\t\t\tcosHalfTheta = - cosHalfTheta;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.copy( qb );\r\n\r\n\t\t}\r\n\r\n\t\tif ( cosHalfTheta >= 1.0 ) {\r\n\r\n\t\t\tthis._w = w;\r\n\t\t\tthis._x = x;\r\n\t\t\tthis._y = y;\r\n\t\t\tthis._z = z;\r\n\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\tconst sqrSinHalfTheta = 1.0 - cosHalfTheta * cosHalfTheta;\r\n\r\n\t\tif ( sqrSinHalfTheta <= Number.EPSILON ) {\r\n\r\n\t\t\tconst s = 1 - t;\r\n\t\t\tthis._w = s * w + t * this._w;\r\n\t\t\tthis._x = s * x + t * this._x;\r\n\t\t\tthis._y = s * y + t * this._y;\r\n\t\t\tthis._z = s * z + t * this._z;\r\n\r\n\t\t\tthis.normalize();\r\n\t\t\tthis._onChangeCallback();\r\n\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\tconst sinHalfTheta = Math.sqrt( sqrSinHalfTheta );\r\n\t\tconst halfTheta = Math.atan2( sinHalfTheta, cosHalfTheta );\r\n\t\tconst ratioA = Math.sin( ( 1 - t ) * halfTheta ) / sinHalfTheta,\r\n\t\t\tratioB = Math.sin( t * halfTheta ) / sinHalfTheta;\r\n\r\n\t\tthis._w = ( w * ratioA + this._w * ratioB );\r\n\t\tthis._x = ( x * ratioA + this._x * ratioB );\r\n\t\tthis._y = ( y * ratioA + this._y * ratioB );\r\n\t\tthis._z = ( z * ratioA + this._z * ratioB );\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( quaternion ) {\r\n\r\n\t\treturn ( quaternion._x === this._x ) && ( quaternion._y === this._y ) && ( quaternion._z === this._z ) && ( quaternion._w === this._w );\r\n\r\n\t}\r\n\r\n\tfromArray( array, offset = 0 ) {\r\n\r\n\t\tthis._x = array[ offset ];\r\n\t\tthis._y = array[ offset + 1 ];\r\n\t\tthis._z = array[ offset + 2 ];\r\n\t\tthis._w = array[ offset + 3 ];\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoArray( array = [], offset = 0 ) {\r\n\r\n\t\tarray[ offset ] = this._x;\r\n\t\tarray[ offset + 1 ] = this._y;\r\n\t\tarray[ offset + 2 ] = this._z;\r\n\t\tarray[ offset + 3 ] = this._w;\r\n\r\n\t\treturn array;\r\n\r\n\t}\r\n\r\n\tfromBufferAttribute( attribute, index ) {\r\n\r\n\t\tthis._x = attribute.getX( index );\r\n\t\tthis._y = attribute.getY( index );\r\n\t\tthis._z = attribute.getZ( index );\r\n\t\tthis._w = attribute.getW( index );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t_onChange( callback ) {\r\n\r\n\t\tthis._onChangeCallback = callback;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t_onChangeCallback() {}\r\n\r\n}\r\n\r\nclass Vector3 {\r\n\r\n\tconstructor( x = 0, y = 0, z = 0 ) {\r\n\r\n\t\tObject.defineProperty( this, 'isVector3', { value: true } );\r\n\r\n\t\tthis.x = x;\r\n\t\tthis.y = y;\r\n\t\tthis.z = z;\r\n\r\n\t}\r\n\r\n\tset( x, y, z ) {\r\n\r\n\t\tif ( z === undefined ) z = this.z; // sprite.scale.set(x,y)\r\n\r\n\t\tthis.x = x;\r\n\t\tthis.y = y;\r\n\t\tthis.z = z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetScalar( scalar ) {\r\n\r\n\t\tthis.x = scalar;\r\n\t\tthis.y = scalar;\r\n\t\tthis.z = scalar;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetX( x ) {\r\n\r\n\t\tthis.x = x;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetY( y ) {\r\n\r\n\t\tthis.y = y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetZ( z ) {\r\n\r\n\t\tthis.z = z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetComponent( index, value ) {\r\n\r\n\t\tswitch ( index ) {\r\n\r\n\t\t\tcase 0: this.x = value; break;\r\n\t\t\tcase 1: this.y = value; break;\r\n\t\t\tcase 2: this.z = value; break;\r\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetComponent( index ) {\r\n\r\n\t\tswitch ( index ) {\r\n\r\n\t\t\tcase 0: return this.x;\r\n\t\t\tcase 1: return this.y;\r\n\t\t\tcase 2: return this.z;\r\n\t\t\tdefault: throw new Error( 'index is out of range: ' + index );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor( this.x, this.y, this.z );\r\n\r\n\t}\r\n\r\n\tcopy( v ) {\r\n\r\n\t\tthis.x = v.x;\r\n\t\tthis.y = v.y;\r\n\t\tthis.z = v.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tadd( v, w ) {\r\n\r\n\t\tif ( w !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead.' );\r\n\t\t\treturn this.addVectors( v, w );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x += v.x;\r\n\t\tthis.y += v.y;\r\n\t\tthis.z += v.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddScalar( s ) {\r\n\r\n\t\tthis.x += s;\r\n\t\tthis.y += s;\r\n\t\tthis.z += s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddVectors( a, b ) {\r\n\r\n\t\tthis.x = a.x + b.x;\r\n\t\tthis.y = a.y + b.y;\r\n\t\tthis.z = a.z + b.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddScaledVector( v, s ) {\r\n\r\n\t\tthis.x += v.x * s;\r\n\t\tthis.y += v.y * s;\r\n\t\tthis.z += v.z * s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsub( v, w ) {\r\n\r\n\t\tif ( w !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead.' );\r\n\t\t\treturn this.subVectors( v, w );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x -= v.x;\r\n\t\tthis.y -= v.y;\r\n\t\tthis.z -= v.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsubScalar( s ) {\r\n\r\n\t\tthis.x -= s;\r\n\t\tthis.y -= s;\r\n\t\tthis.z -= s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsubVectors( a, b ) {\r\n\r\n\t\tthis.x = a.x - b.x;\r\n\t\tthis.y = a.y - b.y;\r\n\t\tthis.z = a.z - b.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiply( v, w ) {\r\n\r\n\t\tif ( w !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead.' );\r\n\t\t\treturn this.multiplyVectors( v, w );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x *= v.x;\r\n\t\tthis.y *= v.y;\r\n\t\tthis.z *= v.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiplyScalar( scalar ) {\r\n\r\n\t\tthis.x *= scalar;\r\n\t\tthis.y *= scalar;\r\n\t\tthis.z *= scalar;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiplyVectors( a, b ) {\r\n\r\n\t\tthis.x = a.x * b.x;\r\n\t\tthis.y = a.y * b.y;\r\n\t\tthis.z = a.z * b.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tapplyEuler( euler ) {\r\n\r\n\t\tif ( ! ( euler && euler.isEuler ) ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order.' );\r\n\r\n\t\t}\r\n\r\n\t\treturn this.applyQuaternion( _quaternion.setFromEuler( euler ) );\r\n\r\n\t}\r\n\r\n\tapplyAxisAngle( axis, angle ) {\r\n\r\n\t\treturn this.applyQuaternion( _quaternion.setFromAxisAngle( axis, angle ) );\r\n\r\n\t}\r\n\r\n\tapplyMatrix3( m ) {\r\n\r\n\t\tconst x = this.x, y = this.y, z = this.z;\r\n\t\tconst e = m.elements;\r\n\r\n\t\tthis.x = e[ 0 ] * x + e[ 3 ] * y + e[ 6 ] * z;\r\n\t\tthis.y = e[ 1 ] * x + e[ 4 ] * y + e[ 7 ] * z;\r\n\t\tthis.z = e[ 2 ] * x + e[ 5 ] * y + e[ 8 ] * z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tapplyNormalMatrix( m ) {\r\n\r\n\t\treturn this.applyMatrix3( m ).normalize();\r\n\r\n\t}\r\n\r\n\tapplyMatrix4( m ) {\r\n\r\n\t\tconst x = this.x, y = this.y, z = this.z;\r\n\t\tconst e = m.elements;\r\n\r\n\t\tconst w = 1 / ( e[ 3 ] * x + e[ 7 ] * y + e[ 11 ] * z + e[ 15 ] );\r\n\r\n\t\tthis.x = ( e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z + e[ 12 ] ) * w;\r\n\t\tthis.y = ( e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z + e[ 13 ] ) * w;\r\n\t\tthis.z = ( e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z + e[ 14 ] ) * w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tapplyQuaternion( q ) {\r\n\r\n\t\tconst x = this.x, y = this.y, z = this.z;\r\n\t\tconst qx = q.x, qy = q.y, qz = q.z, qw = q.w;\r\n\r\n\t\t// calculate quat * vector\r\n\r\n\t\tconst ix = qw * x + qy * z - qz * y;\r\n\t\tconst iy = qw * y + qz * x - qx * z;\r\n\t\tconst iz = qw * z + qx * y - qy * x;\r\n\t\tconst iw = - qx * x - qy * y - qz * z;\r\n\r\n\t\t// calculate result * inverse quat\r\n\r\n\t\tthis.x = ix * qw + iw * - qx + iy * - qz - iz * - qy;\r\n\t\tthis.y = iy * qw + iw * - qy + iz * - qx - ix * - qz;\r\n\t\tthis.z = iz * qw + iw * - qz + ix * - qy - iy * - qx;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tproject( camera ) {\r\n\r\n\t\treturn this.applyMatrix4( camera.matrixWorldInverse ).applyMatrix4( camera.projectionMatrix );\r\n\r\n\t}\r\n\r\n\tunproject( camera ) {\r\n\r\n\t\treturn this.applyMatrix4( camera.projectionMatrixInverse ).applyMatrix4( camera.matrixWorld );\r\n\r\n\t}\r\n\r\n\ttransformDirection( m ) {\r\n\r\n\t\t// input: THREE.Matrix4 affine matrix\r\n\t\t// vector interpreted as a direction\r\n\r\n\t\tconst x = this.x, y = this.y, z = this.z;\r\n\t\tconst e = m.elements;\r\n\r\n\t\tthis.x = e[ 0 ] * x + e[ 4 ] * y + e[ 8 ] * z;\r\n\t\tthis.y = e[ 1 ] * x + e[ 5 ] * y + e[ 9 ] * z;\r\n\t\tthis.z = e[ 2 ] * x + e[ 6 ] * y + e[ 10 ] * z;\r\n\r\n\t\treturn this.normalize();\r\n\r\n\t}\r\n\r\n\tdivide( v ) {\r\n\r\n\t\tthis.x /= v.x;\r\n\t\tthis.y /= v.y;\r\n\t\tthis.z /= v.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdivideScalar( scalar ) {\r\n\r\n\t\treturn this.multiplyScalar( 1 / scalar );\r\n\r\n\t}\r\n\r\n\tmin( v ) {\r\n\r\n\t\tthis.x = Math.min( this.x, v.x );\r\n\t\tthis.y = Math.min( this.y, v.y );\r\n\t\tthis.z = Math.min( this.z, v.z );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmax( v ) {\r\n\r\n\t\tthis.x = Math.max( this.x, v.x );\r\n\t\tthis.y = Math.max( this.y, v.y );\r\n\t\tthis.z = Math.max( this.z, v.z );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclamp( min, max ) {\r\n\r\n\t\t// assumes min < max, componentwise\r\n\r\n\t\tthis.x = Math.max( min.x, Math.min( max.x, this.x ) );\r\n\t\tthis.y = Math.max( min.y, Math.min( max.y, this.y ) );\r\n\t\tthis.z = Math.max( min.z, Math.min( max.z, this.z ) );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclampScalar( minVal, maxVal ) {\r\n\r\n\t\tthis.x = Math.max( minVal, Math.min( maxVal, this.x ) );\r\n\t\tthis.y = Math.max( minVal, Math.min( maxVal, this.y ) );\r\n\t\tthis.z = Math.max( minVal, Math.min( maxVal, this.z ) );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclampLength( min, max ) {\r\n\r\n\t\tconst length = this.length();\r\n\r\n\t\treturn this.divideScalar( length || 1 ).multiplyScalar( Math.max( min, Math.min( max, length ) ) );\r\n\r\n\t}\r\n\r\n\tfloor() {\r\n\r\n\t\tthis.x = Math.floor( this.x );\r\n\t\tthis.y = Math.floor( this.y );\r\n\t\tthis.z = Math.floor( this.z );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tceil() {\r\n\r\n\t\tthis.x = Math.ceil( this.x );\r\n\t\tthis.y = Math.ceil( this.y );\r\n\t\tthis.z = Math.ceil( this.z );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tround() {\r\n\r\n\t\tthis.x = Math.round( this.x );\r\n\t\tthis.y = Math.round( this.y );\r\n\t\tthis.z = Math.round( this.z );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\troundToZero() {\r\n\r\n\t\tthis.x = ( this.x < 0 ) ? Math.ceil( this.x ) : Math.floor( this.x );\r\n\t\tthis.y = ( this.y < 0 ) ? Math.ceil( this.y ) : Math.floor( this.y );\r\n\t\tthis.z = ( this.z < 0 ) ? Math.ceil( this.z ) : Math.floor( this.z );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tnegate() {\r\n\r\n\t\tthis.x = - this.x;\r\n\t\tthis.y = - this.y;\r\n\t\tthis.z = - this.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdot( v ) {\r\n\r\n\t\treturn this.x * v.x + this.y * v.y + this.z * v.z;\r\n\r\n\t}\r\n\r\n\t// TODO lengthSquared?\r\n\r\n\tlengthSq() {\r\n\r\n\t\treturn this.x * this.x + this.y * this.y + this.z * this.z;\r\n\r\n\t}\r\n\r\n\tlength() {\r\n\r\n\t\treturn Math.sqrt( this.x * this.x + this.y * this.y + this.z * this.z );\r\n\r\n\t}\r\n\r\n\tmanhattanLength() {\r\n\r\n\t\treturn Math.abs( this.x ) + Math.abs( this.y ) + Math.abs( this.z );\r\n\r\n\t}\r\n\r\n\tnormalize() {\r\n\r\n\t\treturn this.divideScalar( this.length() || 1 );\r\n\r\n\t}\r\n\r\n\tsetLength( length ) {\r\n\r\n\t\treturn this.normalize().multiplyScalar( length );\r\n\r\n\t}\r\n\r\n\tlerp( v, alpha ) {\r\n\r\n\t\tthis.x += ( v.x - this.x ) * alpha;\r\n\t\tthis.y += ( v.y - this.y ) * alpha;\r\n\t\tthis.z += ( v.z - this.z ) * alpha;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tlerpVectors( v1, v2, alpha ) {\r\n\r\n\t\tthis.x = v1.x + ( v2.x - v1.x ) * alpha;\r\n\t\tthis.y = v1.y + ( v2.y - v1.y ) * alpha;\r\n\t\tthis.z = v1.z + ( v2.z - v1.z ) * alpha;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcross( v, w ) {\r\n\r\n\t\tif ( w !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead.' );\r\n\t\t\treturn this.crossVectors( v, w );\r\n\r\n\t\t}\r\n\r\n\t\treturn this.crossVectors( this, v );\r\n\r\n\t}\r\n\r\n\tcrossVectors( a, b ) {\r\n\r\n\t\tconst ax = a.x, ay = a.y, az = a.z;\r\n\t\tconst bx = b.x, by = b.y, bz = b.z;\r\n\r\n\t\tthis.x = ay * bz - az * by;\r\n\t\tthis.y = az * bx - ax * bz;\r\n\t\tthis.z = ax * by - ay * bx;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tprojectOnVector( v ) {\r\n\r\n\t\tconst denominator = v.lengthSq();\r\n\r\n\t\tif ( denominator === 0 ) return this.set( 0, 0, 0 );\r\n\r\n\t\tconst scalar = v.dot( this ) / denominator;\r\n\r\n\t\treturn this.copy( v ).multiplyScalar( scalar );\r\n\r\n\t}\r\n\r\n\tprojectOnPlane( planeNormal ) {\r\n\r\n\t\t_vector.copy( this ).projectOnVector( planeNormal );\r\n\r\n\t\treturn this.sub( _vector );\r\n\r\n\t}\r\n\r\n\treflect( normal ) {\r\n\r\n\t\t// reflect incident vector off plane orthogonal to normal\r\n\t\t// normal is assumed to have unit length\r\n\r\n\t\treturn this.sub( _vector.copy( normal ).multiplyScalar( 2 * this.dot( normal ) ) );\r\n\r\n\t}\r\n\r\n\tangleTo( v ) {\r\n\r\n\t\tconst denominator = Math.sqrt( this.lengthSq() * v.lengthSq() );\r\n\r\n\t\tif ( denominator === 0 ) return Math.PI / 2;\r\n\r\n\t\tconst theta = this.dot( v ) / denominator;\r\n\r\n\t\t// clamp, to handle numerical problems\r\n\r\n\t\treturn Math.acos( MathUtils.clamp( theta, - 1, 1 ) );\r\n\r\n\t}\r\n\r\n\tdistanceTo( v ) {\r\n\r\n\t\treturn Math.sqrt( this.distanceToSquared( v ) );\r\n\r\n\t}\r\n\r\n\tdistanceToSquared( v ) {\r\n\r\n\t\tconst dx = this.x - v.x, dy = this.y - v.y, dz = this.z - v.z;\r\n\r\n\t\treturn dx * dx + dy * dy + dz * dz;\r\n\r\n\t}\r\n\r\n\tmanhattanDistanceTo( v ) {\r\n\r\n\t\treturn Math.abs( this.x - v.x ) + Math.abs( this.y - v.y ) + Math.abs( this.z - v.z );\r\n\r\n\t}\r\n\r\n\tsetFromSpherical( s ) {\r\n\r\n\t\treturn this.setFromSphericalCoords( s.radius, s.phi, s.theta );\r\n\r\n\t}\r\n\r\n\tsetFromSphericalCoords( radius, phi, theta ) {\r\n\r\n\t\tconst sinPhiRadius = Math.sin( phi ) * radius;\r\n\r\n\t\tthis.x = sinPhiRadius * Math.sin( theta );\r\n\t\tthis.y = Math.cos( phi ) * radius;\r\n\t\tthis.z = sinPhiRadius * Math.cos( theta );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromCylindrical( c ) {\r\n\r\n\t\treturn this.setFromCylindricalCoords( c.radius, c.theta, c.y );\r\n\r\n\t}\r\n\r\n\tsetFromCylindricalCoords( radius, theta, y ) {\r\n\r\n\t\tthis.x = radius * Math.sin( theta );\r\n\t\tthis.y = y;\r\n\t\tthis.z = radius * Math.cos( theta );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromMatrixPosition( m ) {\r\n\r\n\t\tconst e = m.elements;\r\n\r\n\t\tthis.x = e[ 12 ];\r\n\t\tthis.y = e[ 13 ];\r\n\t\tthis.z = e[ 14 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromMatrixScale( m ) {\r\n\r\n\t\tconst sx = this.setFromMatrixColumn( m, 0 ).length();\r\n\t\tconst sy = this.setFromMatrixColumn( m, 1 ).length();\r\n\t\tconst sz = this.setFromMatrixColumn( m, 2 ).length();\r\n\r\n\t\tthis.x = sx;\r\n\t\tthis.y = sy;\r\n\t\tthis.z = sz;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromMatrixColumn( m, index ) {\r\n\r\n\t\treturn this.fromArray( m.elements, index * 4 );\r\n\r\n\t}\r\n\r\n\tsetFromMatrix3Column( m, index ) {\r\n\r\n\t\treturn this.fromArray( m.elements, index * 3 );\r\n\r\n\t}\r\n\r\n\tequals( v ) {\r\n\r\n\t\treturn ( ( v.x === this.x ) && ( v.y === this.y ) && ( v.z === this.z ) );\r\n\r\n\t}\r\n\r\n\tfromArray( array, offset = 0 ) {\r\n\r\n\t\tthis.x = array[ offset ];\r\n\t\tthis.y = array[ offset + 1 ];\r\n\t\tthis.z = array[ offset + 2 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoArray( array = [], offset = 0 ) {\r\n\r\n\t\tarray[ offset ] = this.x;\r\n\t\tarray[ offset + 1 ] = this.y;\r\n\t\tarray[ offset + 2 ] = this.z;\r\n\r\n\t\treturn array;\r\n\r\n\t}\r\n\r\n\tfromBufferAttribute( attribute, index, offset ) {\r\n\r\n\t\tif ( offset !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Vector3: offset has been removed from .fromBufferAttribute().' );\r\n\r\n\t\t}\r\n\r\n\t\tthis.x = attribute.getX( index );\r\n\t\tthis.y = attribute.getY( index );\r\n\t\tthis.z = attribute.getZ( index );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\trandom() {\r\n\r\n\t\tthis.x = Math.random();\r\n\t\tthis.y = Math.random();\r\n\t\tthis.z = Math.random();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _vector = /*@__PURE__*/ new Vector3();\r\nconst _quaternion = /*@__PURE__*/ new Quaternion();\r\n\r\nclass Box3 {\r\n\r\n\tconstructor( min, max ) {\r\n\r\n\t\tObject.defineProperty( this, 'isBox3', { value: true } );\r\n\r\n\t\tthis.min = ( min !== undefined ) ? min : new Vector3( + Infinity, + Infinity, + Infinity );\r\n\t\tthis.max = ( max !== undefined ) ? max : new Vector3( - Infinity, - Infinity, - Infinity );\r\n\r\n\t}\r\n\r\n\tset( min, max ) {\r\n\r\n\t\tthis.min.copy( min );\r\n\t\tthis.max.copy( max );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromArray( array ) {\r\n\r\n\t\tlet minX = + Infinity;\r\n\t\tlet minY = + Infinity;\r\n\t\tlet minZ = + Infinity;\r\n\r\n\t\tlet maxX = - Infinity;\r\n\t\tlet maxY = - Infinity;\r\n\t\tlet maxZ = - Infinity;\r\n\r\n\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\r\n\r\n\t\t\tconst x = array[ i ];\r\n\t\t\tconst y = array[ i + 1 ];\r\n\t\t\tconst z = array[ i + 2 ];\r\n\r\n\t\t\tif ( x < minX ) minX = x;\r\n\t\t\tif ( y < minY ) minY = y;\r\n\t\t\tif ( z < minZ ) minZ = z;\r\n\r\n\t\t\tif ( x > maxX ) maxX = x;\r\n\t\t\tif ( y > maxY ) maxY = y;\r\n\t\t\tif ( z > maxZ ) maxZ = z;\r\n\r\n\t\t}\r\n\r\n\t\tthis.min.set( minX, minY, minZ );\r\n\t\tthis.max.set( maxX, maxY, maxZ );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromBufferAttribute( attribute ) {\r\n\r\n\t\tlet minX = + Infinity;\r\n\t\tlet minY = + Infinity;\r\n\t\tlet minZ = + Infinity;\r\n\r\n\t\tlet maxX = - Infinity;\r\n\t\tlet maxY = - Infinity;\r\n\t\tlet maxZ = - Infinity;\r\n\r\n\t\tfor ( let i = 0, l = attribute.count; i < l; i ++ ) {\r\n\r\n\t\t\tconst x = attribute.getX( i );\r\n\t\t\tconst y = attribute.getY( i );\r\n\t\t\tconst z = attribute.getZ( i );\r\n\r\n\t\t\tif ( x < minX ) minX = x;\r\n\t\t\tif ( y < minY ) minY = y;\r\n\t\t\tif ( z < minZ ) minZ = z;\r\n\r\n\t\t\tif ( x > maxX ) maxX = x;\r\n\t\t\tif ( y > maxY ) maxY = y;\r\n\t\t\tif ( z > maxZ ) maxZ = z;\r\n\r\n\t\t}\r\n\r\n\t\tthis.min.set( minX, minY, minZ );\r\n\t\tthis.max.set( maxX, maxY, maxZ );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromPoints( points ) {\r\n\r\n\t\tthis.makeEmpty();\r\n\r\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.expandByPoint( points[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromCenterAndSize( center, size ) {\r\n\r\n\t\tconst halfSize = _vector$1.copy( size ).multiplyScalar( 0.5 );\r\n\r\n\t\tthis.min.copy( center ).sub( halfSize );\r\n\t\tthis.max.copy( center ).add( halfSize );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromObject( object ) {\r\n\r\n\t\tthis.makeEmpty();\r\n\r\n\t\treturn this.expandByObject( object );\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( box ) {\r\n\r\n\t\tthis.min.copy( box.min );\r\n\t\tthis.max.copy( box.max );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeEmpty() {\r\n\r\n\t\tthis.min.x = this.min.y = this.min.z = + Infinity;\r\n\t\tthis.max.x = this.max.y = this.max.z = - Infinity;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tisEmpty() {\r\n\r\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\r\n\r\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y ) || ( this.max.z < this.min.z );\r\n\r\n\t}\r\n\r\n\tgetCenter( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Box3: .getCenter() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\r\n\r\n\t}\r\n\r\n\tgetSize( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Box3: .getSize() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn this.isEmpty() ? target.set( 0, 0, 0 ) : target.subVectors( this.max, this.min );\r\n\r\n\t}\r\n\r\n\texpandByPoint( point ) {\r\n\r\n\t\tthis.min.min( point );\r\n\t\tthis.max.max( point );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\texpandByVector( vector ) {\r\n\r\n\t\tthis.min.sub( vector );\r\n\t\tthis.max.add( vector );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\texpandByScalar( scalar ) {\r\n\r\n\t\tthis.min.addScalar( - scalar );\r\n\t\tthis.max.addScalar( scalar );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\texpandByObject( object ) {\r\n\r\n\t\t// Computes the world-axis-aligned bounding box of an object (including its children),\r\n\t\t// accounting for both the object's, and children's, world transforms\r\n\r\n\t\tobject.updateWorldMatrix( false, false );\r\n\r\n\t\tconst geometry = object.geometry;\r\n\r\n\t\tif ( geometry !== undefined ) {\r\n\r\n\t\t\tif ( geometry.boundingBox === null ) {\r\n\r\n\t\t\t\tgeometry.computeBoundingBox();\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_box.copy( geometry.boundingBox );\r\n\t\t\t_box.applyMatrix4( object.matrixWorld );\r\n\r\n\t\t\tthis.union( _box );\r\n\r\n\t\t}\r\n\r\n\t\tconst children = object.children;\r\n\r\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\r\n\r\n\t\t\tthis.expandByObject( children[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcontainsPoint( point ) {\r\n\r\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\r\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ||\r\n\t\t\tpoint.z < this.min.z || point.z > this.max.z ? false : true;\r\n\r\n\t}\r\n\r\n\tcontainsBox( box ) {\r\n\r\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\r\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y &&\r\n\t\t\tthis.min.z <= box.min.z && box.max.z <= this.max.z;\r\n\r\n\t}\r\n\r\n\tgetParameter( point, target ) {\r\n\r\n\t\t// This can potentially have a divide by zero if the box\r\n\t\t// has a size dimension of 0.\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Box3: .getParameter() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.set(\r\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\r\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y ),\r\n\t\t\t( point.z - this.min.z ) / ( this.max.z - this.min.z )\r\n\t\t);\r\n\r\n\t}\r\n\r\n\tintersectsBox( box ) {\r\n\r\n\t\t// using 6 splitting planes to rule out intersections.\r\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\r\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ||\r\n\t\t\tbox.max.z < this.min.z || box.min.z > this.max.z ? false : true;\r\n\r\n\t}\r\n\r\n\tintersectsSphere( sphere ) {\r\n\r\n\t\t// Find the point on the AABB closest to the sphere center.\r\n\t\tthis.clampPoint( sphere.center, _vector$1 );\r\n\r\n\t\t// If that point is inside the sphere, the AABB and sphere intersect.\r\n\t\treturn _vector$1.distanceToSquared( sphere.center ) <= ( sphere.radius * sphere.radius );\r\n\r\n\t}\r\n\r\n\tintersectsPlane( plane ) {\r\n\r\n\t\t// We compute the minimum and maximum dot product values. If those values\r\n\t\t// are on the same side (back or front) of the plane, then there is no intersection.\r\n\r\n\t\tlet min, max;\r\n\r\n\t\tif ( plane.normal.x > 0 ) {\r\n\r\n\t\t\tmin = plane.normal.x * this.min.x;\r\n\t\t\tmax = plane.normal.x * this.max.x;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tmin = plane.normal.x * this.max.x;\r\n\t\t\tmax = plane.normal.x * this.min.x;\r\n\r\n\t\t}\r\n\r\n\t\tif ( plane.normal.y > 0 ) {\r\n\r\n\t\t\tmin += plane.normal.y * this.min.y;\r\n\t\t\tmax += plane.normal.y * this.max.y;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tmin += plane.normal.y * this.max.y;\r\n\t\t\tmax += plane.normal.y * this.min.y;\r\n\r\n\t\t}\r\n\r\n\t\tif ( plane.normal.z > 0 ) {\r\n\r\n\t\t\tmin += plane.normal.z * this.min.z;\r\n\t\t\tmax += plane.normal.z * this.max.z;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tmin += plane.normal.z * this.max.z;\r\n\t\t\tmax += plane.normal.z * this.min.z;\r\n\r\n\t\t}\r\n\r\n\t\treturn ( min <= - plane.constant && max >= - plane.constant );\r\n\r\n\t}\r\n\r\n\tintersectsTriangle( triangle ) {\r\n\r\n\t\tif ( this.isEmpty() ) {\r\n\r\n\t\t\treturn false;\r\n\r\n\t\t}\r\n\r\n\t\t// compute box center and extents\r\n\t\tthis.getCenter( _center );\r\n\t\t_extents.subVectors( this.max, _center );\r\n\r\n\t\t// translate triangle to aabb origin\r\n\t\t_v0.subVectors( triangle.a, _center );\r\n\t\t_v1.subVectors( triangle.b, _center );\r\n\t\t_v2.subVectors( triangle.c, _center );\r\n\r\n\t\t// compute edge vectors for triangle\r\n\t\t_f0.subVectors( _v1, _v0 );\r\n\t\t_f1.subVectors( _v2, _v1 );\r\n\t\t_f2.subVectors( _v0, _v2 );\r\n\r\n\t\t// test against axes that are given by cross product combinations of the edges of the triangle and the edges of the aabb\r\n\t\t// make an axis testing of each of the 3 sides of the aabb against each of the 3 sides of the triangle = 9 axis of separation\r\n\t\t// axis_ij = u_i x f_j (u0, u1, u2 = face normals of aabb = x,y,z axes vectors since aabb is axis aligned)\r\n\t\tlet axes = [\r\n\t\t\t0, - _f0.z, _f0.y, 0, - _f1.z, _f1.y, 0, - _f2.z, _f2.y,\r\n\t\t\t_f0.z, 0, - _f0.x, _f1.z, 0, - _f1.x, _f2.z, 0, - _f2.x,\r\n\t\t\t- _f0.y, _f0.x, 0, - _f1.y, _f1.x, 0, - _f2.y, _f2.x, 0\r\n\t\t];\r\n\t\tif ( ! satForAxes( axes, _v0, _v1, _v2, _extents ) ) {\r\n\r\n\t\t\treturn false;\r\n\r\n\t\t}\r\n\r\n\t\t// test 3 face normals from the aabb\r\n\t\taxes = [ 1, 0, 0, 0, 1, 0, 0, 0, 1 ];\r\n\t\tif ( ! satForAxes( axes, _v0, _v1, _v2, _extents ) ) {\r\n\r\n\t\t\treturn false;\r\n\r\n\t\t}\r\n\r\n\t\t// finally testing the face normal of the triangle\r\n\t\t// use already existing triangle edge vectors here\r\n\t\t_triangleNormal.crossVectors( _f0, _f1 );\r\n\t\taxes = [ _triangleNormal.x, _triangleNormal.y, _triangleNormal.z ];\r\n\r\n\t\treturn satForAxes( axes, _v0, _v1, _v2, _extents );\r\n\r\n\t}\r\n\r\n\tclampPoint( point, target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Box3: .clampPoint() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.copy( point ).clamp( this.min, this.max );\r\n\r\n\t}\r\n\r\n\tdistanceToPoint( point ) {\r\n\r\n\t\tconst clampedPoint = _vector$1.copy( point ).clamp( this.min, this.max );\r\n\r\n\t\treturn clampedPoint.sub( point ).length();\r\n\r\n\t}\r\n\r\n\tgetBoundingSphere( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Box3: .getBoundingSphere() target is now required' );\r\n\t\t\t//target = new Sphere(); // removed to avoid cyclic dependency\r\n\r\n\t\t}\r\n\r\n\t\tthis.getCenter( target.center );\r\n\r\n\t\ttarget.radius = this.getSize( _vector$1 ).length() * 0.5;\r\n\r\n\t\treturn target;\r\n\r\n\t}\r\n\r\n\tintersect( box ) {\r\n\r\n\t\tthis.min.max( box.min );\r\n\t\tthis.max.min( box.max );\r\n\r\n\t\t// ensure that if there is no overlap, the result is fully empty, not slightly empty with non-inf/+inf values that will cause subsequence intersects to erroneously return valid values.\r\n\t\tif ( this.isEmpty() ) this.makeEmpty();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tunion( box ) {\r\n\r\n\t\tthis.min.min( box.min );\r\n\t\tthis.max.max( box.max );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tapplyMatrix4( matrix ) {\r\n\r\n\t\t// transform of empty box is an empty box.\r\n\t\tif ( this.isEmpty() ) return this;\r\n\r\n\t\t// NOTE: I am using a binary pattern to specify all 2^3 combinations below\r\n\t\t_points[ 0 ].set( this.min.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 000\r\n\t\t_points[ 1 ].set( this.min.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 001\r\n\t\t_points[ 2 ].set( this.min.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 010\r\n\t\t_points[ 3 ].set( this.min.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 011\r\n\t\t_points[ 4 ].set( this.max.x, this.min.y, this.min.z ).applyMatrix4( matrix ); // 100\r\n\t\t_points[ 5 ].set( this.max.x, this.min.y, this.max.z ).applyMatrix4( matrix ); // 101\r\n\t\t_points[ 6 ].set( this.max.x, this.max.y, this.min.z ).applyMatrix4( matrix ); // 110\r\n\t\t_points[ 7 ].set( this.max.x, this.max.y, this.max.z ).applyMatrix4( matrix ); // 111\r\n\r\n\t\tthis.setFromPoints( _points );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttranslate( offset ) {\r\n\r\n\t\tthis.min.add( offset );\r\n\t\tthis.max.add( offset );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( box ) {\r\n\r\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction satForAxes( axes, v0, v1, v2, extents ) {\r\n\r\n\tfor ( let i = 0, j = axes.length - 3; i <= j; i += 3 ) {\r\n\r\n\t\t_testAxis.fromArray( axes, i );\r\n\t\t// project the aabb onto the seperating axis\r\n\t\tconst r = extents.x * Math.abs( _testAxis.x ) + extents.y * Math.abs( _testAxis.y ) + extents.z * Math.abs( _testAxis.z );\r\n\t\t// project all 3 vertices of the triangle onto the seperating axis\r\n\t\tconst p0 = v0.dot( _testAxis );\r\n\t\tconst p1 = v1.dot( _testAxis );\r\n\t\tconst p2 = v2.dot( _testAxis );\r\n\t\t// actual test, basically see if either of the most extreme of the triangle points intersects r\r\n\t\tif ( Math.max( - Math.max( p0, p1, p2 ), Math.min( p0, p1, p2 ) ) > r ) {\r\n\r\n\t\t\t// points of the projected triangle are outside the projected half-length of the aabb\r\n\t\t\t// the axis is seperating and we can exit\r\n\t\t\treturn false;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn true;\r\n\r\n}\r\n\r\nconst _points = [\r\n\t/*@__PURE__*/ new Vector3(),\r\n\t/*@__PURE__*/ new Vector3(),\r\n\t/*@__PURE__*/ new Vector3(),\r\n\t/*@__PURE__*/ new Vector3(),\r\n\t/*@__PURE__*/ new Vector3(),\r\n\t/*@__PURE__*/ new Vector3(),\r\n\t/*@__PURE__*/ new Vector3(),\r\n\t/*@__PURE__*/ new Vector3()\r\n];\r\n\r\nconst _vector$1 = /*@__PURE__*/ new Vector3();\r\n\r\nconst _box = /*@__PURE__*/ new Box3();\r\n\r\n// triangle centered vertices\r\n\r\nconst _v0 = /*@__PURE__*/ new Vector3();\r\nconst _v1 = /*@__PURE__*/ new Vector3();\r\nconst _v2 = /*@__PURE__*/ new Vector3();\r\n\r\n// triangle edge vectors\r\n\r\nconst _f0 = /*@__PURE__*/ new Vector3();\r\nconst _f1 = /*@__PURE__*/ new Vector3();\r\nconst _f2 = /*@__PURE__*/ new Vector3();\r\n\r\nconst _center = /*@__PURE__*/ new Vector3();\r\nconst _extents = /*@__PURE__*/ new Vector3();\r\nconst _triangleNormal = /*@__PURE__*/ new Vector3();\r\nconst _testAxis = /*@__PURE__*/ new Vector3();\r\n\r\nconst _box$1 = /*@__PURE__*/ new Box3();\r\n\r\nclass Sphere {\r\n\r\n\tconstructor( center, radius ) {\r\n\r\n\t\tthis.center = ( center !== undefined ) ? center : new Vector3();\r\n\t\tthis.radius = ( radius !== undefined ) ? radius : - 1;\r\n\r\n\t}\r\n\r\n\tset( center, radius ) {\r\n\r\n\t\tthis.center.copy( center );\r\n\t\tthis.radius = radius;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromPoints( points, optionalCenter ) {\r\n\r\n\t\tconst center = this.center;\r\n\r\n\t\tif ( optionalCenter !== undefined ) {\r\n\r\n\t\t\tcenter.copy( optionalCenter );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_box$1.setFromPoints( points ).getCenter( center );\r\n\r\n\t\t}\r\n\r\n\t\tlet maxRadiusSq = 0;\r\n\r\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\r\n\r\n\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( points[ i ] ) );\r\n\r\n\t\t}\r\n\r\n\t\tthis.radius = Math.sqrt( maxRadiusSq );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( sphere ) {\r\n\r\n\t\tthis.center.copy( sphere.center );\r\n\t\tthis.radius = sphere.radius;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tisEmpty() {\r\n\r\n\t\treturn ( this.radius < 0 );\r\n\r\n\t}\r\n\r\n\tmakeEmpty() {\r\n\r\n\t\tthis.center.set( 0, 0, 0 );\r\n\t\tthis.radius = - 1;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcontainsPoint( point ) {\r\n\r\n\t\treturn ( point.distanceToSquared( this.center ) <= ( this.radius * this.radius ) );\r\n\r\n\t}\r\n\r\n\tdistanceToPoint( point ) {\r\n\r\n\t\treturn ( point.distanceTo( this.center ) - this.radius );\r\n\r\n\t}\r\n\r\n\tintersectsSphere( sphere ) {\r\n\r\n\t\tconst radiusSum = this.radius + sphere.radius;\r\n\r\n\t\treturn sphere.center.distanceToSquared( this.center ) <= ( radiusSum * radiusSum );\r\n\r\n\t}\r\n\r\n\tintersectsBox( box ) {\r\n\r\n\t\treturn box.intersectsSphere( this );\r\n\r\n\t}\r\n\r\n\tintersectsPlane( plane ) {\r\n\r\n\t\treturn Math.abs( plane.distanceToPoint( this.center ) ) <= this.radius;\r\n\r\n\t}\r\n\r\n\tclampPoint( point, target ) {\r\n\r\n\t\tconst deltaLengthSq = this.center.distanceToSquared( point );\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Sphere: .clampPoint() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\ttarget.copy( point );\r\n\r\n\t\tif ( deltaLengthSq > ( this.radius * this.radius ) ) {\r\n\r\n\t\t\ttarget.sub( this.center ).normalize();\r\n\t\t\ttarget.multiplyScalar( this.radius ).add( this.center );\r\n\r\n\t\t}\r\n\r\n\t\treturn target;\r\n\r\n\t}\r\n\r\n\tgetBoundingBox( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Sphere: .getBoundingBox() target is now required' );\r\n\t\t\ttarget = new Box3();\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.isEmpty() ) {\r\n\r\n\t\t\t// Empty sphere produces empty bounding box\r\n\t\t\ttarget.makeEmpty();\r\n\t\t\treturn target;\r\n\r\n\t\t}\r\n\r\n\t\ttarget.set( this.center, this.center );\r\n\t\ttarget.expandByScalar( this.radius );\r\n\r\n\t\treturn target;\r\n\r\n\t}\r\n\r\n\tapplyMatrix4( matrix ) {\r\n\r\n\t\tthis.center.applyMatrix4( matrix );\r\n\t\tthis.radius = this.radius * matrix.getMaxScaleOnAxis();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttranslate( offset ) {\r\n\r\n\t\tthis.center.add( offset );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( sphere ) {\r\n\r\n\t\treturn sphere.center.equals( this.center ) && ( sphere.radius === this.radius );\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _vector$2 = /*@__PURE__*/ new Vector3();\r\nconst _segCenter = /*@__PURE__*/ new Vector3();\r\nconst _segDir = /*@__PURE__*/ new Vector3();\r\nconst _diff = /*@__PURE__*/ new Vector3();\r\n\r\nconst _edge1 = /*@__PURE__*/ new Vector3();\r\nconst _edge2 = /*@__PURE__*/ new Vector3();\r\nconst _normal = /*@__PURE__*/ new Vector3();\r\n\r\nclass Ray {\r\n\r\n\tconstructor( origin, direction ) {\r\n\r\n\t\tthis.origin = ( origin !== undefined ) ? origin : new Vector3();\r\n\t\tthis.direction = ( direction !== undefined ) ? direction : new Vector3( 0, 0, - 1 );\r\n\r\n\t}\r\n\r\n\tset( origin, direction ) {\r\n\r\n\t\tthis.origin.copy( origin );\r\n\t\tthis.direction.copy( direction );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( ray ) {\r\n\r\n\t\tthis.origin.copy( ray.origin );\r\n\t\tthis.direction.copy( ray.direction );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tat( t, target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Ray: .at() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.copy( this.direction ).multiplyScalar( t ).add( this.origin );\r\n\r\n\t}\r\n\r\n\tlookAt( v ) {\r\n\r\n\t\tthis.direction.copy( v ).sub( this.origin ).normalize();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\trecast( t ) {\r\n\r\n\t\tthis.origin.copy( this.at( t, _vector$2 ) );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclosestPointToPoint( point, target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Ray: .closestPointToPoint() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\ttarget.subVectors( point, this.origin );\r\n\r\n\t\tconst directionDistance = target.dot( this.direction );\r\n\r\n\t\tif ( directionDistance < 0 ) {\r\n\r\n\t\t\treturn target.copy( this.origin );\r\n\r\n\t\t}\r\n\r\n\t\treturn target.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\r\n\r\n\t}\r\n\r\n\tdistanceToPoint( point ) {\r\n\r\n\t\treturn Math.sqrt( this.distanceSqToPoint( point ) );\r\n\r\n\t}\r\n\r\n\tdistanceSqToPoint( point ) {\r\n\r\n\t\tconst directionDistance = _vector$2.subVectors( point, this.origin ).dot( this.direction );\r\n\r\n\t\t// point behind the ray\r\n\r\n\t\tif ( directionDistance < 0 ) {\r\n\r\n\t\t\treturn this.origin.distanceToSquared( point );\r\n\r\n\t\t}\r\n\r\n\t\t_vector$2.copy( this.direction ).multiplyScalar( directionDistance ).add( this.origin );\r\n\r\n\t\treturn _vector$2.distanceToSquared( point );\r\n\r\n\t}\r\n\r\n\tdistanceSqToSegment( v0, v1, optionalPointOnRay, optionalPointOnSegment ) {\r\n\r\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteDistRaySegment.h\r\n\t\t// It returns the min distance between the ray and the segment\r\n\t\t// defined by v0 and v1\r\n\t\t// It can also set two optional targets :\r\n\t\t// - The closest point on the ray\r\n\t\t// - The closest point on the segment\r\n\r\n\t\t_segCenter.copy( v0 ).add( v1 ).multiplyScalar( 0.5 );\r\n\t\t_segDir.copy( v1 ).sub( v0 ).normalize();\r\n\t\t_diff.copy( this.origin ).sub( _segCenter );\r\n\r\n\t\tconst segExtent = v0.distanceTo( v1 ) * 0.5;\r\n\t\tconst a01 = - this.direction.dot( _segDir );\r\n\t\tconst b0 = _diff.dot( this.direction );\r\n\t\tconst b1 = - _diff.dot( _segDir );\r\n\t\tconst c = _diff.lengthSq();\r\n\t\tconst det = Math.abs( 1 - a01 * a01 );\r\n\t\tlet s0, s1, sqrDist, extDet;\r\n\r\n\t\tif ( det > 0 ) {\r\n\r\n\t\t\t// The ray and segment are not parallel.\r\n\r\n\t\t\ts0 = a01 * b1 - b0;\r\n\t\t\ts1 = a01 * b0 - b1;\r\n\t\t\textDet = segExtent * det;\r\n\r\n\t\t\tif ( s0 >= 0 ) {\r\n\r\n\t\t\t\tif ( s1 >= - extDet ) {\r\n\r\n\t\t\t\t\tif ( s1 <= extDet ) {\r\n\r\n\t\t\t\t\t\t// region 0\r\n\t\t\t\t\t\t// Minimum at interior points of ray and segment.\r\n\r\n\t\t\t\t\t\tconst invDet = 1 / det;\r\n\t\t\t\t\t\ts0 *= invDet;\r\n\t\t\t\t\t\ts1 *= invDet;\r\n\t\t\t\t\t\tsqrDist = s0 * ( s0 + a01 * s1 + 2 * b0 ) + s1 * ( a01 * s0 + s1 + 2 * b1 ) + c;\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// region 1\r\n\r\n\t\t\t\t\t\ts1 = segExtent;\r\n\t\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\r\n\t\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// region 5\r\n\r\n\t\t\t\t\ts1 = - segExtent;\r\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\r\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif ( s1 <= - extDet ) {\r\n\r\n\t\t\t\t\t// region 4\r\n\r\n\t\t\t\t\ts0 = Math.max( 0, - ( - a01 * segExtent + b0 ) );\r\n\t\t\t\t\ts1 = ( s0 > 0 ) ? - segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\r\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\r\n\r\n\t\t\t\t} else if ( s1 <= extDet ) {\r\n\r\n\t\t\t\t\t// region 3\r\n\r\n\t\t\t\t\ts0 = 0;\r\n\t\t\t\t\ts1 = Math.min( Math.max( - segExtent, - b1 ), segExtent );\r\n\t\t\t\t\tsqrDist = s1 * ( s1 + 2 * b1 ) + c;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// region 2\r\n\r\n\t\t\t\t\ts0 = Math.max( 0, - ( a01 * segExtent + b0 ) );\r\n\t\t\t\t\ts1 = ( s0 > 0 ) ? segExtent : Math.min( Math.max( - segExtent, - b1 ), segExtent );\r\n\t\t\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Ray and segment are parallel.\r\n\r\n\t\t\ts1 = ( a01 > 0 ) ? - segExtent : segExtent;\r\n\t\t\ts0 = Math.max( 0, - ( a01 * s1 + b0 ) );\r\n\t\t\tsqrDist = - s0 * s0 + s1 * ( s1 + 2 * b1 ) + c;\r\n\r\n\t\t}\r\n\r\n\t\tif ( optionalPointOnRay ) {\r\n\r\n\t\t\toptionalPointOnRay.copy( this.direction ).multiplyScalar( s0 ).add( this.origin );\r\n\r\n\t\t}\r\n\r\n\t\tif ( optionalPointOnSegment ) {\r\n\r\n\t\t\toptionalPointOnSegment.copy( _segDir ).multiplyScalar( s1 ).add( _segCenter );\r\n\r\n\t\t}\r\n\r\n\t\treturn sqrDist;\r\n\r\n\t}\r\n\r\n\tintersectSphere( sphere, target ) {\r\n\r\n\t\t_vector$2.subVectors( sphere.center, this.origin );\r\n\t\tconst tca = _vector$2.dot( this.direction );\r\n\t\tconst d2 = _vector$2.dot( _vector$2 ) - tca * tca;\r\n\t\tconst radius2 = sphere.radius * sphere.radius;\r\n\r\n\t\tif ( d2 > radius2 ) return null;\r\n\r\n\t\tconst thc = Math.sqrt( radius2 - d2 );\r\n\r\n\t\t// t0 = first intersect point - entrance on front of sphere\r\n\t\tconst t0 = tca - thc;\r\n\r\n\t\t// t1 = second intersect point - exit point on back of sphere\r\n\t\tconst t1 = tca + thc;\r\n\r\n\t\t// test to see if both t0 and t1 are behind the ray - if so, return null\r\n\t\tif ( t0 < 0 && t1 < 0 ) return null;\r\n\r\n\t\t// test to see if t0 is behind the ray:\r\n\t\t// if it is, the ray is inside the sphere, so return the second exit point scaled by t1,\r\n\t\t// in order to always return an intersect point that is in front of the ray.\r\n\t\tif ( t0 < 0 ) return this.at( t1, target );\r\n\r\n\t\t// else t0 is in front of the ray, so return the first collision point scaled by t0\r\n\t\treturn this.at( t0, target );\r\n\r\n\t}\r\n\r\n\tintersectsSphere( sphere ) {\r\n\r\n\t\treturn this.distanceSqToPoint( sphere.center ) <= ( sphere.radius * sphere.radius );\r\n\r\n\t}\r\n\r\n\tdistanceToPlane( plane ) {\r\n\r\n\t\tconst denominator = plane.normal.dot( this.direction );\r\n\r\n\t\tif ( denominator === 0 ) {\r\n\r\n\t\t\t// line is coplanar, return origin\r\n\t\t\tif ( plane.distanceToPoint( this.origin ) === 0 ) {\r\n\r\n\t\t\t\treturn 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Null is preferable to undefined since undefined means.... it is undefined\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\tconst t = - ( this.origin.dot( plane.normal ) + plane.constant ) / denominator;\r\n\r\n\t\t// Return if the ray never intersects the plane\r\n\r\n\t\treturn t >= 0 ? t : null;\r\n\r\n\t}\r\n\r\n\tintersectPlane( plane, target ) {\r\n\r\n\t\tconst t = this.distanceToPlane( plane );\r\n\r\n\t\tif ( t === null ) {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\treturn this.at( t, target );\r\n\r\n\t}\r\n\r\n\tintersectsPlane( plane ) {\r\n\r\n\t\t// check if the ray lies on the plane first\r\n\r\n\t\tconst distToPoint = plane.distanceToPoint( this.origin );\r\n\r\n\t\tif ( distToPoint === 0 ) {\r\n\r\n\t\t\treturn true;\r\n\r\n\t\t}\r\n\r\n\t\tconst denominator = plane.normal.dot( this.direction );\r\n\r\n\t\tif ( denominator * distToPoint < 0 ) {\r\n\r\n\t\t\treturn true;\r\n\r\n\t\t}\r\n\r\n\t\t// ray origin is behind the plane (and is pointing behind it)\r\n\r\n\t\treturn false;\r\n\r\n\t}\r\n\r\n\tintersectBox( box, target ) {\r\n\r\n\t\tlet tmin, tmax, tymin, tymax, tzmin, tzmax;\r\n\r\n\t\tconst invdirx = 1 / this.direction.x,\r\n\t\t\tinvdiry = 1 / this.direction.y,\r\n\t\t\tinvdirz = 1 / this.direction.z;\r\n\r\n\t\tconst origin = this.origin;\r\n\r\n\t\tif ( invdirx >= 0 ) {\r\n\r\n\t\t\ttmin = ( box.min.x - origin.x ) * invdirx;\r\n\t\t\ttmax = ( box.max.x - origin.x ) * invdirx;\r\n\r\n\t\t} else {\r\n\r\n\t\t\ttmin = ( box.max.x - origin.x ) * invdirx;\r\n\t\t\ttmax = ( box.min.x - origin.x ) * invdirx;\r\n\r\n\t\t}\r\n\r\n\t\tif ( invdiry >= 0 ) {\r\n\r\n\t\t\ttymin = ( box.min.y - origin.y ) * invdiry;\r\n\t\t\ttymax = ( box.max.y - origin.y ) * invdiry;\r\n\r\n\t\t} else {\r\n\r\n\t\t\ttymin = ( box.max.y - origin.y ) * invdiry;\r\n\t\t\ttymax = ( box.min.y - origin.y ) * invdiry;\r\n\r\n\t\t}\r\n\r\n\t\tif ( ( tmin > tymax ) || ( tymin > tmax ) ) return null;\r\n\r\n\t\t// These lines also handle the case where tmin or tmax is NaN\r\n\t\t// (result of 0 * Infinity). x !== x returns true if x is NaN\r\n\r\n\t\tif ( tymin > tmin || tmin !== tmin ) tmin = tymin;\r\n\r\n\t\tif ( tymax < tmax || tmax !== tmax ) tmax = tymax;\r\n\r\n\t\tif ( invdirz >= 0 ) {\r\n\r\n\t\t\ttzmin = ( box.min.z - origin.z ) * invdirz;\r\n\t\t\ttzmax = ( box.max.z - origin.z ) * invdirz;\r\n\r\n\t\t} else {\r\n\r\n\t\t\ttzmin = ( box.max.z - origin.z ) * invdirz;\r\n\t\t\ttzmax = ( box.min.z - origin.z ) * invdirz;\r\n\r\n\t\t}\r\n\r\n\t\tif ( ( tmin > tzmax ) || ( tzmin > tmax ) ) return null;\r\n\r\n\t\tif ( tzmin > tmin || tmin !== tmin ) tmin = tzmin;\r\n\r\n\t\tif ( tzmax < tmax || tmax !== tmax ) tmax = tzmax;\r\n\r\n\t\t//return point closest to the ray (positive side)\r\n\r\n\t\tif ( tmax < 0 ) return null;\r\n\r\n\t\treturn this.at( tmin >= 0 ? tmin : tmax, target );\r\n\r\n\t}\r\n\r\n\tintersectsBox( box ) {\r\n\r\n\t\treturn this.intersectBox( box, _vector$2 ) !== null;\r\n\r\n\t}\r\n\r\n\tintersectTriangle( a, b, c, backfaceCulling, target ) {\r\n\r\n\t\t// Compute the offset origin, edges, and normal.\r\n\r\n\t\t// from http://www.geometrictools.com/GTEngine/Include/Mathematics/GteIntrRay3Triangle3.h\r\n\r\n\t\t_edge1.subVectors( b, a );\r\n\t\t_edge2.subVectors( c, a );\r\n\t\t_normal.crossVectors( _edge1, _edge2 );\r\n\r\n\t\t// Solve Q + t*D = b1*E1 + b2*E2 (Q = kDiff, D = ray direction,\r\n\t\t// E1 = kEdge1, E2 = kEdge2, N = Cross(E1,E2)) by\r\n\t\t// |Dot(D,N)|*b1 = sign(Dot(D,N))*Dot(D,Cross(Q,E2))\r\n\t\t// |Dot(D,N)|*b2 = sign(Dot(D,N))*Dot(D,Cross(E1,Q))\r\n\t\t// |Dot(D,N)|*t = -sign(Dot(D,N))*Dot(Q,N)\r\n\t\tlet DdN = this.direction.dot( _normal );\r\n\t\tlet sign;\r\n\r\n\t\tif ( DdN > 0 ) {\r\n\r\n\t\t\tif ( backfaceCulling ) return null;\r\n\t\t\tsign = 1;\r\n\r\n\t\t} else if ( DdN < 0 ) {\r\n\r\n\t\t\tsign = - 1;\r\n\t\t\tDdN = - DdN;\r\n\r\n\t\t} else {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\t_diff.subVectors( this.origin, a );\r\n\t\tconst DdQxE2 = sign * this.direction.dot( _edge2.crossVectors( _diff, _edge2 ) );\r\n\r\n\t\t// b1 < 0, no intersection\r\n\t\tif ( DdQxE2 < 0 ) {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\tconst DdE1xQ = sign * this.direction.dot( _edge1.cross( _diff ) );\r\n\r\n\t\t// b2 < 0, no intersection\r\n\t\tif ( DdE1xQ < 0 ) {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\t// b1+b2 > 1, no intersection\r\n\t\tif ( DdQxE2 + DdE1xQ > DdN ) {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\t// Line intersects triangle, check if ray does.\r\n\t\tconst QdN = - sign * _diff.dot( _normal );\r\n\r\n\t\t// t < 0, no intersection\r\n\t\tif ( QdN < 0 ) {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\t// Ray intersects triangle.\r\n\t\treturn this.at( QdN / DdN, target );\r\n\r\n\t}\r\n\r\n\tapplyMatrix4( matrix4 ) {\r\n\r\n\t\tthis.origin.applyMatrix4( matrix4 );\r\n\t\tthis.direction.transformDirection( matrix4 );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( ray ) {\r\n\r\n\t\treturn ray.origin.equals( this.origin ) && ray.direction.equals( this.direction );\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass Matrix4 {\r\n\r\n\tconstructor() {\r\n\r\n\t\tObject.defineProperty( this, 'isMatrix4', { value: true } );\r\n\r\n\t\tthis.elements = [\r\n\r\n\t\t\t1, 0, 0, 0,\r\n\t\t\t0, 1, 0, 0,\r\n\t\t\t0, 0, 1, 0,\r\n\t\t\t0, 0, 0, 1\r\n\r\n\t\t];\r\n\r\n\t\tif ( arguments.length > 0 ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.' );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tset( n11, n12, n13, n14, n21, n22, n23, n24, n31, n32, n33, n34, n41, n42, n43, n44 ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tte[ 0 ] = n11; te[ 4 ] = n12; te[ 8 ] = n13; te[ 12 ] = n14;\r\n\t\tte[ 1 ] = n21; te[ 5 ] = n22; te[ 9 ] = n23; te[ 13 ] = n24;\r\n\t\tte[ 2 ] = n31; te[ 6 ] = n32; te[ 10 ] = n33; te[ 14 ] = n34;\r\n\t\tte[ 3 ] = n41; te[ 7 ] = n42; te[ 11 ] = n43; te[ 15 ] = n44;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tidentity() {\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\t1, 0, 0, 0,\r\n\t\t\t0, 1, 0, 0,\r\n\t\t\t0, 0, 1, 0,\r\n\t\t\t0, 0, 0, 1\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new Matrix4().fromArray( this.elements );\r\n\r\n\t}\r\n\r\n\tcopy( m ) {\r\n\r\n\t\tconst te = this.elements;\r\n\t\tconst me = m.elements;\r\n\r\n\t\tte[ 0 ] = me[ 0 ]; te[ 1 ] = me[ 1 ]; te[ 2 ] = me[ 2 ]; te[ 3 ] = me[ 3 ];\r\n\t\tte[ 4 ] = me[ 4 ]; te[ 5 ] = me[ 5 ]; te[ 6 ] = me[ 6 ]; te[ 7 ] = me[ 7 ];\r\n\t\tte[ 8 ] = me[ 8 ]; te[ 9 ] = me[ 9 ]; te[ 10 ] = me[ 10 ]; te[ 11 ] = me[ 11 ];\r\n\t\tte[ 12 ] = me[ 12 ]; te[ 13 ] = me[ 13 ]; te[ 14 ] = me[ 14 ]; te[ 15 ] = me[ 15 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcopyPosition( m ) {\r\n\r\n\t\tconst te = this.elements, me = m.elements;\r\n\r\n\t\tte[ 12 ] = me[ 12 ];\r\n\t\tte[ 13 ] = me[ 13 ];\r\n\t\tte[ 14 ] = me[ 14 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\textractBasis( xAxis, yAxis, zAxis ) {\r\n\r\n\t\txAxis.setFromMatrixColumn( this, 0 );\r\n\t\tyAxis.setFromMatrixColumn( this, 1 );\r\n\t\tzAxis.setFromMatrixColumn( this, 2 );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeBasis( xAxis, yAxis, zAxis ) {\r\n\r\n\t\tthis.set(\r\n\t\t\txAxis.x, yAxis.x, zAxis.x, 0,\r\n\t\t\txAxis.y, yAxis.y, zAxis.y, 0,\r\n\t\t\txAxis.z, yAxis.z, zAxis.z, 0,\r\n\t\t\t0, 0, 0, 1\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\textractRotation( m ) {\r\n\r\n\t\t// this method does not support reflection matrices\r\n\r\n\t\tconst te = this.elements;\r\n\t\tconst me = m.elements;\r\n\r\n\t\tconst scaleX = 1 / _v1$1.setFromMatrixColumn( m, 0 ).length();\r\n\t\tconst scaleY = 1 / _v1$1.setFromMatrixColumn( m, 1 ).length();\r\n\t\tconst scaleZ = 1 / _v1$1.setFromMatrixColumn( m, 2 ).length();\r\n\r\n\t\tte[ 0 ] = me[ 0 ] * scaleX;\r\n\t\tte[ 1 ] = me[ 1 ] * scaleX;\r\n\t\tte[ 2 ] = me[ 2 ] * scaleX;\r\n\t\tte[ 3 ] = 0;\r\n\r\n\t\tte[ 4 ] = me[ 4 ] * scaleY;\r\n\t\tte[ 5 ] = me[ 5 ] * scaleY;\r\n\t\tte[ 6 ] = me[ 6 ] * scaleY;\r\n\t\tte[ 7 ] = 0;\r\n\r\n\t\tte[ 8 ] = me[ 8 ] * scaleZ;\r\n\t\tte[ 9 ] = me[ 9 ] * scaleZ;\r\n\t\tte[ 10 ] = me[ 10 ] * scaleZ;\r\n\t\tte[ 11 ] = 0;\r\n\r\n\t\tte[ 12 ] = 0;\r\n\t\tte[ 13 ] = 0;\r\n\t\tte[ 14 ] = 0;\r\n\t\tte[ 15 ] = 1;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeRotationFromEuler( euler ) {\r\n\r\n\t\tif ( ! ( euler && euler.isEuler ) ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Matrix4: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.' );\r\n\r\n\t\t}\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tconst x = euler.x, y = euler.y, z = euler.z;\r\n\t\tconst a = Math.cos( x ), b = Math.sin( x );\r\n\t\tconst c = Math.cos( y ), d = Math.sin( y );\r\n\t\tconst e = Math.cos( z ), f = Math.sin( z );\r\n\r\n\t\tif ( euler.order === 'XYZ' ) {\r\n\r\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\r\n\r\n\t\t\tte[ 0 ] = c * e;\r\n\t\t\tte[ 4 ] = - c * f;\r\n\t\t\tte[ 8 ] = d;\r\n\r\n\t\t\tte[ 1 ] = af + be * d;\r\n\t\t\tte[ 5 ] = ae - bf * d;\r\n\t\t\tte[ 9 ] = - b * c;\r\n\r\n\t\t\tte[ 2 ] = bf - ae * d;\r\n\t\t\tte[ 6 ] = be + af * d;\r\n\t\t\tte[ 10 ] = a * c;\r\n\r\n\t\t} else if ( euler.order === 'YXZ' ) {\r\n\r\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\r\n\r\n\t\t\tte[ 0 ] = ce + df * b;\r\n\t\t\tte[ 4 ] = de * b - cf;\r\n\t\t\tte[ 8 ] = a * d;\r\n\r\n\t\t\tte[ 1 ] = a * f;\r\n\t\t\tte[ 5 ] = a * e;\r\n\t\t\tte[ 9 ] = - b;\r\n\r\n\t\t\tte[ 2 ] = cf * b - de;\r\n\t\t\tte[ 6 ] = df + ce * b;\r\n\t\t\tte[ 10 ] = a * c;\r\n\r\n\t\t} else if ( euler.order === 'ZXY' ) {\r\n\r\n\t\t\tconst ce = c * e, cf = c * f, de = d * e, df = d * f;\r\n\r\n\t\t\tte[ 0 ] = ce - df * b;\r\n\t\t\tte[ 4 ] = - a * f;\r\n\t\t\tte[ 8 ] = de + cf * b;\r\n\r\n\t\t\tte[ 1 ] = cf + de * b;\r\n\t\t\tte[ 5 ] = a * e;\r\n\t\t\tte[ 9 ] = df - ce * b;\r\n\r\n\t\t\tte[ 2 ] = - a * d;\r\n\t\t\tte[ 6 ] = b;\r\n\t\t\tte[ 10 ] = a * c;\r\n\r\n\t\t} else if ( euler.order === 'ZYX' ) {\r\n\r\n\t\t\tconst ae = a * e, af = a * f, be = b * e, bf = b * f;\r\n\r\n\t\t\tte[ 0 ] = c * e;\r\n\t\t\tte[ 4 ] = be * d - af;\r\n\t\t\tte[ 8 ] = ae * d + bf;\r\n\r\n\t\t\tte[ 1 ] = c * f;\r\n\t\t\tte[ 5 ] = bf * d + ae;\r\n\t\t\tte[ 9 ] = af * d - be;\r\n\r\n\t\t\tte[ 2 ] = - d;\r\n\t\t\tte[ 6 ] = b * c;\r\n\t\t\tte[ 10 ] = a * c;\r\n\r\n\t\t} else if ( euler.order === 'YZX' ) {\r\n\r\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\r\n\r\n\t\t\tte[ 0 ] = c * e;\r\n\t\t\tte[ 4 ] = bd - ac * f;\r\n\t\t\tte[ 8 ] = bc * f + ad;\r\n\r\n\t\t\tte[ 1 ] = f;\r\n\t\t\tte[ 5 ] = a * e;\r\n\t\t\tte[ 9 ] = - b * e;\r\n\r\n\t\t\tte[ 2 ] = - d * e;\r\n\t\t\tte[ 6 ] = ad * f + bc;\r\n\t\t\tte[ 10 ] = ac - bd * f;\r\n\r\n\t\t} else if ( euler.order === 'XZY' ) {\r\n\r\n\t\t\tconst ac = a * c, ad = a * d, bc = b * c, bd = b * d;\r\n\r\n\t\t\tte[ 0 ] = c * e;\r\n\t\t\tte[ 4 ] = - f;\r\n\t\t\tte[ 8 ] = d * e;\r\n\r\n\t\t\tte[ 1 ] = ac * f + bd;\r\n\t\t\tte[ 5 ] = a * e;\r\n\t\t\tte[ 9 ] = ad * f - bc;\r\n\r\n\t\t\tte[ 2 ] = bc * f - ad;\r\n\t\t\tte[ 6 ] = b * e;\r\n\t\t\tte[ 10 ] = bd * f + ac;\r\n\r\n\t\t}\r\n\r\n\t\t// bottom row\r\n\t\tte[ 3 ] = 0;\r\n\t\tte[ 7 ] = 0;\r\n\t\tte[ 11 ] = 0;\r\n\r\n\t\t// last column\r\n\t\tte[ 12 ] = 0;\r\n\t\tte[ 13 ] = 0;\r\n\t\tte[ 14 ] = 0;\r\n\t\tte[ 15 ] = 1;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeRotationFromQuaternion( q ) {\r\n\r\n\t\treturn this.compose( _zero, q, _one );\r\n\r\n\t}\r\n\r\n\tlookAt( eye, target, up ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\t_z.subVectors( eye, target );\r\n\r\n\t\tif ( _z.lengthSq() === 0 ) {\r\n\r\n\t\t\t// eye and target are in the same position\r\n\r\n\t\t\t_z.z = 1;\r\n\r\n\t\t}\r\n\r\n\t\t_z.normalize();\r\n\t\t_x.crossVectors( up, _z );\r\n\r\n\t\tif ( _x.lengthSq() === 0 ) {\r\n\r\n\t\t\t// up and z are parallel\r\n\r\n\t\t\tif ( Math.abs( up.z ) === 1 ) {\r\n\r\n\t\t\t\t_z.x += 0.0001;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t_z.z += 0.0001;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_z.normalize();\r\n\t\t\t_x.crossVectors( up, _z );\r\n\r\n\t\t}\r\n\r\n\t\t_x.normalize();\r\n\t\t_y.crossVectors( _z, _x );\r\n\r\n\t\tte[ 0 ] = _x.x; te[ 4 ] = _y.x; te[ 8 ] = _z.x;\r\n\t\tte[ 1 ] = _x.y; te[ 5 ] = _y.y; te[ 9 ] = _z.y;\r\n\t\tte[ 2 ] = _x.z; te[ 6 ] = _y.z; te[ 10 ] = _z.z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiply( m, n ) {\r\n\r\n\t\tif ( n !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead.' );\r\n\t\t\treturn this.multiplyMatrices( m, n );\r\n\r\n\t\t}\r\n\r\n\t\treturn this.multiplyMatrices( this, m );\r\n\r\n\t}\r\n\r\n\tpremultiply( m ) {\r\n\r\n\t\treturn this.multiplyMatrices( m, this );\r\n\r\n\t}\r\n\r\n\tmultiplyMatrices( a, b ) {\r\n\r\n\t\tconst ae = a.elements;\r\n\t\tconst be = b.elements;\r\n\t\tconst te = this.elements;\r\n\r\n\t\tconst a11 = ae[ 0 ], a12 = ae[ 4 ], a13 = ae[ 8 ], a14 = ae[ 12 ];\r\n\t\tconst a21 = ae[ 1 ], a22 = ae[ 5 ], a23 = ae[ 9 ], a24 = ae[ 13 ];\r\n\t\tconst a31 = ae[ 2 ], a32 = ae[ 6 ], a33 = ae[ 10 ], a34 = ae[ 14 ];\r\n\t\tconst a41 = ae[ 3 ], a42 = ae[ 7 ], a43 = ae[ 11 ], a44 = ae[ 15 ];\r\n\r\n\t\tconst b11 = be[ 0 ], b12 = be[ 4 ], b13 = be[ 8 ], b14 = be[ 12 ];\r\n\t\tconst b21 = be[ 1 ], b22 = be[ 5 ], b23 = be[ 9 ], b24 = be[ 13 ];\r\n\t\tconst b31 = be[ 2 ], b32 = be[ 6 ], b33 = be[ 10 ], b34 = be[ 14 ];\r\n\t\tconst b41 = be[ 3 ], b42 = be[ 7 ], b43 = be[ 11 ], b44 = be[ 15 ];\r\n\r\n\t\tte[ 0 ] = a11 * b11 + a12 * b21 + a13 * b31 + a14 * b41;\r\n\t\tte[ 4 ] = a11 * b12 + a12 * b22 + a13 * b32 + a14 * b42;\r\n\t\tte[ 8 ] = a11 * b13 + a12 * b23 + a13 * b33 + a14 * b43;\r\n\t\tte[ 12 ] = a11 * b14 + a12 * b24 + a13 * b34 + a14 * b44;\r\n\r\n\t\tte[ 1 ] = a21 * b11 + a22 * b21 + a23 * b31 + a24 * b41;\r\n\t\tte[ 5 ] = a21 * b12 + a22 * b22 + a23 * b32 + a24 * b42;\r\n\t\tte[ 9 ] = a21 * b13 + a22 * b23 + a23 * b33 + a24 * b43;\r\n\t\tte[ 13 ] = a21 * b14 + a22 * b24 + a23 * b34 + a24 * b44;\r\n\r\n\t\tte[ 2 ] = a31 * b11 + a32 * b21 + a33 * b31 + a34 * b41;\r\n\t\tte[ 6 ] = a31 * b12 + a32 * b22 + a33 * b32 + a34 * b42;\r\n\t\tte[ 10 ] = a31 * b13 + a32 * b23 + a33 * b33 + a34 * b43;\r\n\t\tte[ 14 ] = a31 * b14 + a32 * b24 + a33 * b34 + a34 * b44;\r\n\r\n\t\tte[ 3 ] = a41 * b11 + a42 * b21 + a43 * b31 + a44 * b41;\r\n\t\tte[ 7 ] = a41 * b12 + a42 * b22 + a43 * b32 + a44 * b42;\r\n\t\tte[ 11 ] = a41 * b13 + a42 * b23 + a43 * b33 + a44 * b43;\r\n\t\tte[ 15 ] = a41 * b14 + a42 * b24 + a43 * b34 + a44 * b44;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiplyScalar( s ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tte[ 0 ] *= s; te[ 4 ] *= s; te[ 8 ] *= s; te[ 12 ] *= s;\r\n\t\tte[ 1 ] *= s; te[ 5 ] *= s; te[ 9 ] *= s; te[ 13 ] *= s;\r\n\t\tte[ 2 ] *= s; te[ 6 ] *= s; te[ 10 ] *= s; te[ 14 ] *= s;\r\n\t\tte[ 3 ] *= s; te[ 7 ] *= s; te[ 11 ] *= s; te[ 15 ] *= s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdeterminant() {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tconst n11 = te[ 0 ], n12 = te[ 4 ], n13 = te[ 8 ], n14 = te[ 12 ];\r\n\t\tconst n21 = te[ 1 ], n22 = te[ 5 ], n23 = te[ 9 ], n24 = te[ 13 ];\r\n\t\tconst n31 = te[ 2 ], n32 = te[ 6 ], n33 = te[ 10 ], n34 = te[ 14 ];\r\n\t\tconst n41 = te[ 3 ], n42 = te[ 7 ], n43 = te[ 11 ], n44 = te[ 15 ];\r\n\r\n\t\t//TODO: make this more efficient\r\n\t\t//( based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm )\r\n\r\n\t\treturn (\r\n\t\t\tn41 * (\r\n\t\t\t\t+ n14 * n23 * n32\r\n\t\t\t\t - n13 * n24 * n32\r\n\t\t\t\t - n14 * n22 * n33\r\n\t\t\t\t + n12 * n24 * n33\r\n\t\t\t\t + n13 * n22 * n34\r\n\t\t\t\t - n12 * n23 * n34\r\n\t\t\t) +\r\n\t\t\tn42 * (\r\n\t\t\t\t+ n11 * n23 * n34\r\n\t\t\t\t - n11 * n24 * n33\r\n\t\t\t\t + n14 * n21 * n33\r\n\t\t\t\t - n13 * n21 * n34\r\n\t\t\t\t + n13 * n24 * n31\r\n\t\t\t\t - n14 * n23 * n31\r\n\t\t\t) +\r\n\t\t\tn43 * (\r\n\t\t\t\t+ n11 * n24 * n32\r\n\t\t\t\t - n11 * n22 * n34\r\n\t\t\t\t - n14 * n21 * n32\r\n\t\t\t\t + n12 * n21 * n34\r\n\t\t\t\t + n14 * n22 * n31\r\n\t\t\t\t - n12 * n24 * n31\r\n\t\t\t) +\r\n\t\t\tn44 * (\r\n\t\t\t\t- n13 * n22 * n31\r\n\t\t\t\t - n11 * n23 * n32\r\n\t\t\t\t + n11 * n22 * n33\r\n\t\t\t\t + n13 * n21 * n32\r\n\t\t\t\t - n12 * n21 * n33\r\n\t\t\t\t + n12 * n23 * n31\r\n\t\t\t)\r\n\r\n\t\t);\r\n\r\n\t}\r\n\r\n\ttranspose() {\r\n\r\n\t\tconst te = this.elements;\r\n\t\tlet tmp;\r\n\r\n\t\ttmp = te[ 1 ]; te[ 1 ] = te[ 4 ]; te[ 4 ] = tmp;\r\n\t\ttmp = te[ 2 ]; te[ 2 ] = te[ 8 ]; te[ 8 ] = tmp;\r\n\t\ttmp = te[ 6 ]; te[ 6 ] = te[ 9 ]; te[ 9 ] = tmp;\r\n\r\n\t\ttmp = te[ 3 ]; te[ 3 ] = te[ 12 ]; te[ 12 ] = tmp;\r\n\t\ttmp = te[ 7 ]; te[ 7 ] = te[ 13 ]; te[ 13 ] = tmp;\r\n\t\ttmp = te[ 11 ]; te[ 11 ] = te[ 14 ]; te[ 14 ] = tmp;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetPosition( x, y, z ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tif ( x.isVector3 ) {\r\n\r\n\t\t\tte[ 12 ] = x.x;\r\n\t\t\tte[ 13 ] = x.y;\r\n\t\t\tte[ 14 ] = x.z;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tte[ 12 ] = x;\r\n\t\t\tte[ 13 ] = y;\r\n\t\t\tte[ 14 ] = z;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tinvert() {\r\n\r\n\t\t// based on http://www.euclideanspace.com/maths/algebra/matrix/functions/inverse/fourD/index.htm\r\n\t\tconst te = this.elements,\r\n\r\n\t\t\tn11 = te[ 0 ], n21 = te[ 1 ], n31 = te[ 2 ], n41 = te[ 3 ],\r\n\t\t\tn12 = te[ 4 ], n22 = te[ 5 ], n32 = te[ 6 ], n42 = te[ 7 ],\r\n\t\t\tn13 = te[ 8 ], n23 = te[ 9 ], n33 = te[ 10 ], n43 = te[ 11 ],\r\n\t\t\tn14 = te[ 12 ], n24 = te[ 13 ], n34 = te[ 14 ], n44 = te[ 15 ],\r\n\r\n\t\t\tt11 = n23 * n34 * n42 - n24 * n33 * n42 + n24 * n32 * n43 - n22 * n34 * n43 - n23 * n32 * n44 + n22 * n33 * n44,\r\n\t\t\tt12 = n14 * n33 * n42 - n13 * n34 * n42 - n14 * n32 * n43 + n12 * n34 * n43 + n13 * n32 * n44 - n12 * n33 * n44,\r\n\t\t\tt13 = n13 * n24 * n42 - n14 * n23 * n42 + n14 * n22 * n43 - n12 * n24 * n43 - n13 * n22 * n44 + n12 * n23 * n44,\r\n\t\t\tt14 = n14 * n23 * n32 - n13 * n24 * n32 - n14 * n22 * n33 + n12 * n24 * n33 + n13 * n22 * n34 - n12 * n23 * n34;\r\n\r\n\t\tconst det = n11 * t11 + n21 * t12 + n31 * t13 + n41 * t14;\r\n\r\n\t\tif ( det === 0 ) return this.set( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );\r\n\r\n\t\tconst detInv = 1 / det;\r\n\r\n\t\tte[ 0 ] = t11 * detInv;\r\n\t\tte[ 1 ] = ( n24 * n33 * n41 - n23 * n34 * n41 - n24 * n31 * n43 + n21 * n34 * n43 + n23 * n31 * n44 - n21 * n33 * n44 ) * detInv;\r\n\t\tte[ 2 ] = ( n22 * n34 * n41 - n24 * n32 * n41 + n24 * n31 * n42 - n21 * n34 * n42 - n22 * n31 * n44 + n21 * n32 * n44 ) * detInv;\r\n\t\tte[ 3 ] = ( n23 * n32 * n41 - n22 * n33 * n41 - n23 * n31 * n42 + n21 * n33 * n42 + n22 * n31 * n43 - n21 * n32 * n43 ) * detInv;\r\n\r\n\t\tte[ 4 ] = t12 * detInv;\r\n\t\tte[ 5 ] = ( n13 * n34 * n41 - n14 * n33 * n41 + n14 * n31 * n43 - n11 * n34 * n43 - n13 * n31 * n44 + n11 * n33 * n44 ) * detInv;\r\n\t\tte[ 6 ] = ( n14 * n32 * n41 - n12 * n34 * n41 - n14 * n31 * n42 + n11 * n34 * n42 + n12 * n31 * n44 - n11 * n32 * n44 ) * detInv;\r\n\t\tte[ 7 ] = ( n12 * n33 * n41 - n13 * n32 * n41 + n13 * n31 * n42 - n11 * n33 * n42 - n12 * n31 * n43 + n11 * n32 * n43 ) * detInv;\r\n\r\n\t\tte[ 8 ] = t13 * detInv;\r\n\t\tte[ 9 ] = ( n14 * n23 * n41 - n13 * n24 * n41 - n14 * n21 * n43 + n11 * n24 * n43 + n13 * n21 * n44 - n11 * n23 * n44 ) * detInv;\r\n\t\tte[ 10 ] = ( n12 * n24 * n41 - n14 * n22 * n41 + n14 * n21 * n42 - n11 * n24 * n42 - n12 * n21 * n44 + n11 * n22 * n44 ) * detInv;\r\n\t\tte[ 11 ] = ( n13 * n22 * n41 - n12 * n23 * n41 - n13 * n21 * n42 + n11 * n23 * n42 + n12 * n21 * n43 - n11 * n22 * n43 ) * detInv;\r\n\r\n\t\tte[ 12 ] = t14 * detInv;\r\n\t\tte[ 13 ] = ( n13 * n24 * n31 - n14 * n23 * n31 + n14 * n21 * n33 - n11 * n24 * n33 - n13 * n21 * n34 + n11 * n23 * n34 ) * detInv;\r\n\t\tte[ 14 ] = ( n14 * n22 * n31 - n12 * n24 * n31 - n14 * n21 * n32 + n11 * n24 * n32 + n12 * n21 * n34 - n11 * n22 * n34 ) * detInv;\r\n\t\tte[ 15 ] = ( n12 * n23 * n31 - n13 * n22 * n31 + n13 * n21 * n32 - n11 * n23 * n32 - n12 * n21 * n33 + n11 * n22 * n33 ) * detInv;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tscale( v ) {\r\n\r\n\t\tconst te = this.elements;\r\n\t\tconst x = v.x, y = v.y, z = v.z;\r\n\r\n\t\tte[ 0 ] *= x; te[ 4 ] *= y; te[ 8 ] *= z;\r\n\t\tte[ 1 ] *= x; te[ 5 ] *= y; te[ 9 ] *= z;\r\n\t\tte[ 2 ] *= x; te[ 6 ] *= y; te[ 10 ] *= z;\r\n\t\tte[ 3 ] *= x; te[ 7 ] *= y; te[ 11 ] *= z;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetMaxScaleOnAxis() {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tconst scaleXSq = te[ 0 ] * te[ 0 ] + te[ 1 ] * te[ 1 ] + te[ 2 ] * te[ 2 ];\r\n\t\tconst scaleYSq = te[ 4 ] * te[ 4 ] + te[ 5 ] * te[ 5 ] + te[ 6 ] * te[ 6 ];\r\n\t\tconst scaleZSq = te[ 8 ] * te[ 8 ] + te[ 9 ] * te[ 9 ] + te[ 10 ] * te[ 10 ];\r\n\r\n\t\treturn Math.sqrt( Math.max( scaleXSq, scaleYSq, scaleZSq ) );\r\n\r\n\t}\r\n\r\n\tmakeTranslation( x, y, z ) {\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\t1, 0, 0, x,\r\n\t\t\t0, 1, 0, y,\r\n\t\t\t0, 0, 1, z,\r\n\t\t\t0, 0, 0, 1\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeRotationX( theta ) {\r\n\r\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\t1, 0, 0, 0,\r\n\t\t\t0, c, - s, 0,\r\n\t\t\t0, s, c, 0,\r\n\t\t\t0, 0, 0, 1\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeRotationY( theta ) {\r\n\r\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\t c, 0, s, 0,\r\n\t\t\t 0, 1, 0, 0,\r\n\t\t\t- s, 0, c, 0,\r\n\t\t\t 0, 0, 0, 1\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeRotationZ( theta ) {\r\n\r\n\t\tconst c = Math.cos( theta ), s = Math.sin( theta );\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\tc, - s, 0, 0,\r\n\t\t\ts, c, 0, 0,\r\n\t\t\t0, 0, 1, 0,\r\n\t\t\t0, 0, 0, 1\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeRotationAxis( axis, angle ) {\r\n\r\n\t\t// Based on http://www.gamedev.net/reference/articles/article1199.asp\r\n\r\n\t\tconst c = Math.cos( angle );\r\n\t\tconst s = Math.sin( angle );\r\n\t\tconst t = 1 - c;\r\n\t\tconst x = axis.x, y = axis.y, z = axis.z;\r\n\t\tconst tx = t * x, ty = t * y;\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\ttx * x + c, tx * y - s * z, tx * z + s * y, 0,\r\n\t\t\ttx * y + s * z, ty * y + c, ty * z - s * x, 0,\r\n\t\t\ttx * z - s * y, ty * z + s * x, t * z * z + c, 0,\r\n\t\t\t0, 0, 0, 1\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeScale( x, y, z ) {\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\tx, 0, 0, 0,\r\n\t\t\t0, y, 0, 0,\r\n\t\t\t0, 0, z, 0,\r\n\t\t\t0, 0, 0, 1\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeShear( x, y, z ) {\r\n\r\n\t\tthis.set(\r\n\r\n\t\t\t1, y, z, 0,\r\n\t\t\tx, 1, z, 0,\r\n\t\t\tx, y, 1, 0,\r\n\t\t\t0, 0, 0, 1\r\n\r\n\t\t);\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcompose( position, quaternion, scale ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tconst x = quaternion._x, y = quaternion._y, z = quaternion._z, w = quaternion._w;\r\n\t\tconst x2 = x + x,\ty2 = y + y, z2 = z + z;\r\n\t\tconst xx = x * x2, xy = x * y2, xz = x * z2;\r\n\t\tconst yy = y * y2, yz = y * z2, zz = z * z2;\r\n\t\tconst wx = w * x2, wy = w * y2, wz = w * z2;\r\n\r\n\t\tconst sx = scale.x, sy = scale.y, sz = scale.z;\r\n\r\n\t\tte[ 0 ] = ( 1 - ( yy + zz ) ) * sx;\r\n\t\tte[ 1 ] = ( xy + wz ) * sx;\r\n\t\tte[ 2 ] = ( xz - wy ) * sx;\r\n\t\tte[ 3 ] = 0;\r\n\r\n\t\tte[ 4 ] = ( xy - wz ) * sy;\r\n\t\tte[ 5 ] = ( 1 - ( xx + zz ) ) * sy;\r\n\t\tte[ 6 ] = ( yz + wx ) * sy;\r\n\t\tte[ 7 ] = 0;\r\n\r\n\t\tte[ 8 ] = ( xz + wy ) * sz;\r\n\t\tte[ 9 ] = ( yz - wx ) * sz;\r\n\t\tte[ 10 ] = ( 1 - ( xx + yy ) ) * sz;\r\n\t\tte[ 11 ] = 0;\r\n\r\n\t\tte[ 12 ] = position.x;\r\n\t\tte[ 13 ] = position.y;\r\n\t\tte[ 14 ] = position.z;\r\n\t\tte[ 15 ] = 1;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdecompose( position, quaternion, scale ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tlet sx = _v1$1.set( te[ 0 ], te[ 1 ], te[ 2 ] ).length();\r\n\t\tconst sy = _v1$1.set( te[ 4 ], te[ 5 ], te[ 6 ] ).length();\r\n\t\tconst sz = _v1$1.set( te[ 8 ], te[ 9 ], te[ 10 ] ).length();\r\n\r\n\t\t// if determine is negative, we need to invert one scale\r\n\t\tconst det = this.determinant();\r\n\t\tif ( det < 0 ) sx = - sx;\r\n\r\n\t\tposition.x = te[ 12 ];\r\n\t\tposition.y = te[ 13 ];\r\n\t\tposition.z = te[ 14 ];\r\n\r\n\t\t// scale the rotation part\r\n\t\t_m1.copy( this );\r\n\r\n\t\tconst invSX = 1 / sx;\r\n\t\tconst invSY = 1 / sy;\r\n\t\tconst invSZ = 1 / sz;\r\n\r\n\t\t_m1.elements[ 0 ] *= invSX;\r\n\t\t_m1.elements[ 1 ] *= invSX;\r\n\t\t_m1.elements[ 2 ] *= invSX;\r\n\r\n\t\t_m1.elements[ 4 ] *= invSY;\r\n\t\t_m1.elements[ 5 ] *= invSY;\r\n\t\t_m1.elements[ 6 ] *= invSY;\r\n\r\n\t\t_m1.elements[ 8 ] *= invSZ;\r\n\t\t_m1.elements[ 9 ] *= invSZ;\r\n\t\t_m1.elements[ 10 ] *= invSZ;\r\n\r\n\t\tquaternion.setFromRotationMatrix( _m1 );\r\n\r\n\t\tscale.x = sx;\r\n\t\tscale.y = sy;\r\n\t\tscale.z = sz;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakePerspective( left, right, top, bottom, near, far ) {\r\n\r\n\t\tif ( far === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Matrix4: .makePerspective() has been redefined and has a new signature. Please check the docs.' );\r\n\r\n\t\t}\r\n\r\n\t\tconst te = this.elements;\r\n\t\tconst x = 2 * near / ( right - left );\r\n\t\tconst y = 2 * near / ( top - bottom );\r\n\r\n\t\tconst a = ( right + left ) / ( right - left );\r\n\t\tconst b = ( top + bottom ) / ( top - bottom );\r\n\t\tconst c = - ( far + near ) / ( far - near );\r\n\t\tconst d = - 2 * far * near / ( far - near );\r\n\r\n\t\tte[ 0 ] = x;\tte[ 4 ] = 0;\tte[ 8 ] = a;\tte[ 12 ] = 0;\r\n\t\tte[ 1 ] = 0;\tte[ 5 ] = y;\tte[ 9 ] = b;\tte[ 13 ] = 0;\r\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = c;\tte[ 14 ] = d;\r\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = - 1;\tte[ 15 ] = 0;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeOrthographic( left, right, top, bottom, near, far ) {\r\n\r\n\t\tconst te = this.elements;\r\n\t\tconst w = 1.0 / ( right - left );\r\n\t\tconst h = 1.0 / ( top - bottom );\r\n\t\tconst p = 1.0 / ( far - near );\r\n\r\n\t\tconst x = ( right + left ) * w;\r\n\t\tconst y = ( top + bottom ) * h;\r\n\t\tconst z = ( far + near ) * p;\r\n\r\n\t\tte[ 0 ] = 2 * w;\tte[ 4 ] = 0;\tte[ 8 ] = 0;\tte[ 12 ] = - x;\r\n\t\tte[ 1 ] = 0;\tte[ 5 ] = 2 * h;\tte[ 9 ] = 0;\tte[ 13 ] = - y;\r\n\t\tte[ 2 ] = 0;\tte[ 6 ] = 0;\tte[ 10 ] = - 2 * p;\tte[ 14 ] = - z;\r\n\t\tte[ 3 ] = 0;\tte[ 7 ] = 0;\tte[ 11 ] = 0;\tte[ 15 ] = 1;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( matrix ) {\r\n\r\n\t\tconst te = this.elements;\r\n\t\tconst me = matrix.elements;\r\n\r\n\t\tfor ( let i = 0; i < 16; i ++ ) {\r\n\r\n\t\t\tif ( te[ i ] !== me[ i ] ) return false;\r\n\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\r\n\t}\r\n\r\n\tfromArray( array, offset = 0 ) {\r\n\r\n\t\tfor ( let i = 0; i < 16; i ++ ) {\r\n\r\n\t\t\tthis.elements[ i ] = array[ i + offset ];\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoArray( array = [], offset = 0 ) {\r\n\r\n\t\tconst te = this.elements;\r\n\r\n\t\tarray[ offset ] = te[ 0 ];\r\n\t\tarray[ offset + 1 ] = te[ 1 ];\r\n\t\tarray[ offset + 2 ] = te[ 2 ];\r\n\t\tarray[ offset + 3 ] = te[ 3 ];\r\n\r\n\t\tarray[ offset + 4 ] = te[ 4 ];\r\n\t\tarray[ offset + 5 ] = te[ 5 ];\r\n\t\tarray[ offset + 6 ] = te[ 6 ];\r\n\t\tarray[ offset + 7 ] = te[ 7 ];\r\n\r\n\t\tarray[ offset + 8 ] = te[ 8 ];\r\n\t\tarray[ offset + 9 ] = te[ 9 ];\r\n\t\tarray[ offset + 10 ] = te[ 10 ];\r\n\t\tarray[ offset + 11 ] = te[ 11 ];\r\n\r\n\t\tarray[ offset + 12 ] = te[ 12 ];\r\n\t\tarray[ offset + 13 ] = te[ 13 ];\r\n\t\tarray[ offset + 14 ] = te[ 14 ];\r\n\t\tarray[ offset + 15 ] = te[ 15 ];\r\n\r\n\t\treturn array;\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _v1$1 = /*@__PURE__*/ new Vector3();\r\nconst _m1 = /*@__PURE__*/ new Matrix4();\r\nconst _zero = /*@__PURE__*/ new Vector3( 0, 0, 0 );\r\nconst _one = /*@__PURE__*/ new Vector3( 1, 1, 1 );\r\nconst _x = /*@__PURE__*/ new Vector3();\r\nconst _y = /*@__PURE__*/ new Vector3();\r\nconst _z = /*@__PURE__*/ new Vector3();\r\n\r\nclass Euler {\r\n\r\n\tconstructor( x = 0, y = 0, z = 0, order = Euler.DefaultOrder ) {\r\n\r\n\t\tObject.defineProperty( this, 'isEuler', { value: true } );\r\n\r\n\t\tthis._x = x;\r\n\t\tthis._y = y;\r\n\t\tthis._z = z;\r\n\t\tthis._order = order;\r\n\r\n\t}\r\n\r\n\tget x() {\r\n\r\n\t\treturn this._x;\r\n\r\n\t}\r\n\r\n\tset x( value ) {\r\n\r\n\t\tthis._x = value;\r\n\t\tthis._onChangeCallback();\r\n\r\n\t}\r\n\r\n\tget y() {\r\n\r\n\t\treturn this._y;\r\n\r\n\t}\r\n\r\n\tset y( value ) {\r\n\r\n\t\tthis._y = value;\r\n\t\tthis._onChangeCallback();\r\n\r\n\t}\r\n\r\n\tget z() {\r\n\r\n\t\treturn this._z;\r\n\r\n\t}\r\n\r\n\tset z( value ) {\r\n\r\n\t\tthis._z = value;\r\n\t\tthis._onChangeCallback();\r\n\r\n\t}\r\n\r\n\tget order() {\r\n\r\n\t\treturn this._order;\r\n\r\n\t}\r\n\r\n\tset order( value ) {\r\n\r\n\t\tthis._order = value;\r\n\t\tthis._onChangeCallback();\r\n\r\n\t}\r\n\r\n\tset( x, y, z, order ) {\r\n\r\n\t\tthis._x = x;\r\n\t\tthis._y = y;\r\n\t\tthis._z = z;\r\n\t\tthis._order = order || this._order;\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor( this._x, this._y, this._z, this._order );\r\n\r\n\t}\r\n\r\n\tcopy( euler ) {\r\n\r\n\t\tthis._x = euler._x;\r\n\t\tthis._y = euler._y;\r\n\t\tthis._z = euler._z;\r\n\t\tthis._order = euler._order;\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromRotationMatrix( m, order, update ) {\r\n\r\n\t\tconst clamp = MathUtils.clamp;\r\n\r\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\r\n\r\n\t\tconst te = m.elements;\r\n\t\tconst m11 = te[ 0 ], m12 = te[ 4 ], m13 = te[ 8 ];\r\n\t\tconst m21 = te[ 1 ], m22 = te[ 5 ], m23 = te[ 9 ];\r\n\t\tconst m31 = te[ 2 ], m32 = te[ 6 ], m33 = te[ 10 ];\r\n\r\n\t\torder = order || this._order;\r\n\r\n\t\tswitch ( order ) {\r\n\r\n\t\t\tcase 'XYZ':\r\n\r\n\t\t\t\tthis._y = Math.asin( clamp( m13, - 1, 1 ) );\r\n\r\n\t\t\t\tif ( Math.abs( m13 ) < 0.9999999 ) {\r\n\r\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\r\n\t\t\t\t\tthis._z = Math.atan2( - m12, m11 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\r\n\t\t\t\t\tthis._z = 0;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'YXZ':\r\n\r\n\t\t\t\tthis._x = Math.asin( - clamp( m23, - 1, 1 ) );\r\n\r\n\t\t\t\tif ( Math.abs( m23 ) < 0.9999999 ) {\r\n\r\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\r\n\t\t\t\t\tthis._z = Math.atan2( m21, m22 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\r\n\t\t\t\t\tthis._z = 0;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'ZXY':\r\n\r\n\t\t\t\tthis._x = Math.asin( clamp( m32, - 1, 1 ) );\r\n\r\n\t\t\t\tif ( Math.abs( m32 ) < 0.9999999 ) {\r\n\r\n\t\t\t\t\tthis._y = Math.atan2( - m31, m33 );\r\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthis._y = 0;\r\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'ZYX':\r\n\r\n\t\t\t\tthis._y = Math.asin( - clamp( m31, - 1, 1 ) );\r\n\r\n\t\t\t\tif ( Math.abs( m31 ) < 0.9999999 ) {\r\n\r\n\t\t\t\t\tthis._x = Math.atan2( m32, m33 );\r\n\t\t\t\t\tthis._z = Math.atan2( m21, m11 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthis._x = 0;\r\n\t\t\t\t\tthis._z = Math.atan2( - m12, m22 );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'YZX':\r\n\r\n\t\t\t\tthis._z = Math.asin( clamp( m21, - 1, 1 ) );\r\n\r\n\t\t\t\tif ( Math.abs( m21 ) < 0.9999999 ) {\r\n\r\n\t\t\t\t\tthis._x = Math.atan2( - m23, m22 );\r\n\t\t\t\t\tthis._y = Math.atan2( - m31, m11 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthis._x = 0;\r\n\t\t\t\t\tthis._y = Math.atan2( m13, m33 );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'XZY':\r\n\r\n\t\t\t\tthis._z = Math.asin( - clamp( m12, - 1, 1 ) );\r\n\r\n\t\t\t\tif ( Math.abs( m12 ) < 0.9999999 ) {\r\n\r\n\t\t\t\t\tthis._x = Math.atan2( m32, m22 );\r\n\t\t\t\t\tthis._y = Math.atan2( m13, m11 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthis._x = Math.atan2( - m23, m33 );\r\n\t\t\t\t\tthis._y = 0;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\r\n\t\t\t\tconsole.warn( 'THREE.Euler: .setFromRotationMatrix() encountered an unknown order: ' + order );\r\n\r\n\t\t}\r\n\r\n\t\tthis._order = order;\r\n\r\n\t\tif ( update !== false ) this._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromQuaternion( q, order, update ) {\r\n\r\n\t\t_matrix.makeRotationFromQuaternion( q );\r\n\r\n\t\treturn this.setFromRotationMatrix( _matrix, order, update );\r\n\r\n\t}\r\n\r\n\tsetFromVector3( v, order ) {\r\n\r\n\t\treturn this.set( v.x, v.y, v.z, order || this._order );\r\n\r\n\t}\r\n\r\n\treorder( newOrder ) {\r\n\r\n\t\t// WARNING: this discards revolution information -bhouston\r\n\r\n\t\t_quaternion$1.setFromEuler( this );\r\n\r\n\t\treturn this.setFromQuaternion( _quaternion$1, newOrder );\r\n\r\n\t}\r\n\r\n\tequals( euler ) {\r\n\r\n\t\treturn ( euler._x === this._x ) && ( euler._y === this._y ) && ( euler._z === this._z ) && ( euler._order === this._order );\r\n\r\n\t}\r\n\r\n\tfromArray( array ) {\r\n\r\n\t\tthis._x = array[ 0 ];\r\n\t\tthis._y = array[ 1 ];\r\n\t\tthis._z = array[ 2 ];\r\n\t\tif ( array[ 3 ] !== undefined ) this._order = array[ 3 ];\r\n\r\n\t\tthis._onChangeCallback();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoArray( array = [], offset = 0 ) {\r\n\r\n\t\tarray[ offset ] = this._x;\r\n\t\tarray[ offset + 1 ] = this._y;\r\n\t\tarray[ offset + 2 ] = this._z;\r\n\t\tarray[ offset + 3 ] = this._order;\r\n\r\n\t\treturn array;\r\n\r\n\t}\r\n\r\n\ttoVector3( optionalResult ) {\r\n\r\n\t\tif ( optionalResult ) {\r\n\r\n\t\t\treturn optionalResult.set( this._x, this._y, this._z );\r\n\r\n\t\t} else {\r\n\r\n\t\t\treturn new Vector3( this._x, this._y, this._z );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_onChange( callback ) {\r\n\r\n\t\tthis._onChangeCallback = callback;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t_onChangeCallback() {}\r\n\r\n}\r\n\r\nEuler.DefaultOrder = 'XYZ';\r\nEuler.RotationOrders = [ 'XYZ', 'YZX', 'ZXY', 'XZY', 'YXZ', 'ZYX' ];\r\n\r\nconst _matrix = /*@__PURE__*/ new Matrix4();\r\nconst _quaternion$1 = /*@__PURE__*/ new Quaternion();\r\n\r\nclass Layers {\r\n\r\n\tconstructor() {\r\n\r\n\t\tthis.mask = 1 | 0;\r\n\r\n\t}\r\n\r\n\tset( channel ) {\r\n\r\n\t\tthis.mask = 1 << channel | 0;\r\n\r\n\t}\r\n\r\n\tenable( channel ) {\r\n\r\n\t\tthis.mask |= 1 << channel | 0;\r\n\r\n\t}\r\n\r\n\tenableAll() {\r\n\r\n\t\tthis.mask = 0xffffffff | 0;\r\n\r\n\t}\r\n\r\n\ttoggle( channel ) {\r\n\r\n\t\tthis.mask ^= 1 << channel | 0;\r\n\r\n\t}\r\n\r\n\tdisable( channel ) {\r\n\r\n\t\tthis.mask &= ~ ( 1 << channel | 0 );\r\n\r\n\t}\r\n\r\n\tdisableAll() {\r\n\r\n\t\tthis.mask = 0;\r\n\r\n\t}\r\n\r\n\ttest( layers ) {\r\n\r\n\t\treturn ( this.mask & layers.mask ) !== 0;\r\n\r\n\t}\r\n\r\n}\r\n\r\nlet _object3DId = 0;\r\n\r\nconst _v1$2 = new Vector3();\r\nconst _q1 = new Quaternion();\r\nconst _m1$1 = new Matrix4();\r\nconst _target = new Vector3();\r\n\r\nconst _position = new Vector3();\r\nconst _scale = new Vector3();\r\nconst _quaternion$2 = new Quaternion();\r\n\r\nconst _xAxis = new Vector3( 1, 0, 0 );\r\nconst _yAxis = new Vector3( 0, 1, 0 );\r\nconst _zAxis = new Vector3( 0, 0, 1 );\r\n\r\nconst _addedEvent = { type: 'added' };\r\nconst _removedEvent = { type: 'removed' };\r\n\r\nfunction Object3D() {\r\n\r\n\tObject.defineProperty( this, 'id', { value: _object3DId ++ } );\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n\tthis.name = '';\r\n\tthis.type = 'Object3D';\r\n\r\n\tthis.parent = null;\r\n\tthis.children = [];\r\n\r\n\tthis.up = Object3D.DefaultUp.clone();\r\n\r\n\tconst position = new Vector3();\r\n\tconst rotation = new Euler();\r\n\tconst quaternion = new Quaternion();\r\n\tconst scale = new Vector3( 1, 1, 1 );\r\n\r\n\tfunction onRotationChange() {\r\n\r\n\t\tquaternion.setFromEuler( rotation, false );\r\n\r\n\t}\r\n\r\n\tfunction onQuaternionChange() {\r\n\r\n\t\trotation.setFromQuaternion( quaternion, undefined, false );\r\n\r\n\t}\r\n\r\n\trotation._onChange( onRotationChange );\r\n\tquaternion._onChange( onQuaternionChange );\r\n\r\n\tObject.defineProperties( this, {\r\n\t\tposition: {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: position\r\n\t\t},\r\n\t\trotation: {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: rotation\r\n\t\t},\r\n\t\tquaternion: {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: quaternion\r\n\t\t},\r\n\t\tscale: {\r\n\t\t\tconfigurable: true,\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: scale\r\n\t\t},\r\n\t\tmodelViewMatrix: {\r\n\t\t\tvalue: new Matrix4()\r\n\t\t},\r\n\t\tnormalMatrix: {\r\n\t\t\tvalue: new Matrix3()\r\n\t\t}\r\n\t} );\r\n\r\n\tthis.matrix = new Matrix4();\r\n\tthis.matrixWorld = new Matrix4();\r\n\r\n\tthis.matrixAutoUpdate = Object3D.DefaultMatrixAutoUpdate;\r\n\tthis.matrixWorldNeedsUpdate = false;\r\n\r\n\tthis.layers = new Layers();\r\n\tthis.visible = true;\r\n\r\n\tthis.castShadow = false;\r\n\tthis.receiveShadow = false;\r\n\r\n\tthis.frustumCulled = true;\r\n\tthis.renderOrder = 0;\r\n\r\n\tthis.animations = [];\r\n\r\n\tthis.userData = {};\r\n\r\n}\r\n\r\nObject3D.DefaultUp = new Vector3( 0, 1, 0 );\r\nObject3D.DefaultMatrixAutoUpdate = true;\r\n\r\nObject3D.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\r\n\r\n\tconstructor: Object3D,\r\n\r\n\tisObject3D: true,\r\n\r\n\tonBeforeRender: function () {},\r\n\tonAfterRender: function () {},\r\n\r\n\tapplyMatrix4: function ( matrix ) {\r\n\r\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\r\n\r\n\t\tthis.matrix.premultiply( matrix );\r\n\r\n\t\tthis.matrix.decompose( this.position, this.quaternion, this.scale );\r\n\r\n\t},\r\n\r\n\tapplyQuaternion: function ( q ) {\r\n\r\n\t\tthis.quaternion.premultiply( q );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetRotationFromAxisAngle: function ( axis, angle ) {\r\n\r\n\t\t// assumes axis is normalized\r\n\r\n\t\tthis.quaternion.setFromAxisAngle( axis, angle );\r\n\r\n\t},\r\n\r\n\tsetRotationFromEuler: function ( euler ) {\r\n\r\n\t\tthis.quaternion.setFromEuler( euler, true );\r\n\r\n\t},\r\n\r\n\tsetRotationFromMatrix: function ( m ) {\r\n\r\n\t\t// assumes the upper 3x3 of m is a pure rotation matrix (i.e, unscaled)\r\n\r\n\t\tthis.quaternion.setFromRotationMatrix( m );\r\n\r\n\t},\r\n\r\n\tsetRotationFromQuaternion: function ( q ) {\r\n\r\n\t\t// assumes q is normalized\r\n\r\n\t\tthis.quaternion.copy( q );\r\n\r\n\t},\r\n\r\n\trotateOnAxis: function ( axis, angle ) {\r\n\r\n\t\t// rotate object on axis in object space\r\n\t\t// axis is assumed to be normalized\r\n\r\n\t\t_q1.setFromAxisAngle( axis, angle );\r\n\r\n\t\tthis.quaternion.multiply( _q1 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\trotateOnWorldAxis: function ( axis, angle ) {\r\n\r\n\t\t// rotate object on axis in world space\r\n\t\t// axis is assumed to be normalized\r\n\t\t// method assumes no rotated parent\r\n\r\n\t\t_q1.setFromAxisAngle( axis, angle );\r\n\r\n\t\tthis.quaternion.premultiply( _q1 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\trotateX: function ( angle ) {\r\n\r\n\t\treturn this.rotateOnAxis( _xAxis, angle );\r\n\r\n\t},\r\n\r\n\trotateY: function ( angle ) {\r\n\r\n\t\treturn this.rotateOnAxis( _yAxis, angle );\r\n\r\n\t},\r\n\r\n\trotateZ: function ( angle ) {\r\n\r\n\t\treturn this.rotateOnAxis( _zAxis, angle );\r\n\r\n\t},\r\n\r\n\ttranslateOnAxis: function ( axis, distance ) {\r\n\r\n\t\t// translate object by distance along axis in object space\r\n\t\t// axis is assumed to be normalized\r\n\r\n\t\t_v1$2.copy( axis ).applyQuaternion( this.quaternion );\r\n\r\n\t\tthis.position.add( _v1$2.multiplyScalar( distance ) );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttranslateX: function ( distance ) {\r\n\r\n\t\treturn this.translateOnAxis( _xAxis, distance );\r\n\r\n\t},\r\n\r\n\ttranslateY: function ( distance ) {\r\n\r\n\t\treturn this.translateOnAxis( _yAxis, distance );\r\n\r\n\t},\r\n\r\n\ttranslateZ: function ( distance ) {\r\n\r\n\t\treturn this.translateOnAxis( _zAxis, distance );\r\n\r\n\t},\r\n\r\n\tlocalToWorld: function ( vector ) {\r\n\r\n\t\treturn vector.applyMatrix4( this.matrixWorld );\r\n\r\n\t},\r\n\r\n\tworldToLocal: function ( vector ) {\r\n\r\n\t\treturn vector.applyMatrix4( _m1$1.copy( this.matrixWorld ).invert() );\r\n\r\n\t},\r\n\r\n\tlookAt: function ( x, y, z ) {\r\n\r\n\t\t// This method does not support objects having non-uniformly-scaled parent(s)\r\n\r\n\t\tif ( x.isVector3 ) {\r\n\r\n\t\t\t_target.copy( x );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_target.set( x, y, z );\r\n\r\n\t\t}\r\n\r\n\t\tconst parent = this.parent;\r\n\r\n\t\tthis.updateWorldMatrix( true, false );\r\n\r\n\t\t_position.setFromMatrixPosition( this.matrixWorld );\r\n\r\n\t\tif ( this.isCamera || this.isLight ) {\r\n\r\n\t\t\t_m1$1.lookAt( _position, _target, this.up );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_m1$1.lookAt( _target, _position, this.up );\r\n\r\n\t\t}\r\n\r\n\t\tthis.quaternion.setFromRotationMatrix( _m1$1 );\r\n\r\n\t\tif ( parent ) {\r\n\r\n\t\t\t_m1$1.extractRotation( parent.matrixWorld );\r\n\t\t\t_q1.setFromRotationMatrix( _m1$1 );\r\n\t\t\tthis.quaternion.premultiply( _q1.invert() );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tadd: function ( object ) {\r\n\r\n\t\tif ( arguments.length > 1 ) {\r\n\r\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\r\n\r\n\t\t\t\tthis.add( arguments[ i ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\tif ( object === this ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Object3D.add: object can\\'t be added as a child of itself.', object );\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\tif ( object && object.isObject3D ) {\r\n\r\n\t\t\tif ( object.parent !== null ) {\r\n\r\n\t\t\t\tobject.parent.remove( object );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tobject.parent = this;\r\n\t\t\tthis.children.push( object );\r\n\r\n\t\t\tobject.dispatchEvent( _addedEvent );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconsole.error( 'THREE.Object3D.add: object not an instance of THREE.Object3D.', object );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tremove: function ( object ) {\r\n\r\n\t\tif ( arguments.length > 1 ) {\r\n\r\n\t\t\tfor ( let i = 0; i < arguments.length; i ++ ) {\r\n\r\n\t\t\t\tthis.remove( arguments[ i ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\tconst index = this.children.indexOf( object );\r\n\r\n\t\tif ( index !== - 1 ) {\r\n\r\n\t\t\tobject.parent = null;\r\n\t\t\tthis.children.splice( index, 1 );\r\n\r\n\t\t\tobject.dispatchEvent( _removedEvent );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tclear: function () {\r\n\r\n\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\r\n\r\n\t\t\tconst object = this.children[ i ];\r\n\r\n\t\t\tobject.parent = null;\r\n\r\n\t\t\tobject.dispatchEvent( _removedEvent );\r\n\r\n\t\t}\r\n\r\n\t\tthis.children.length = 0;\r\n\r\n\t\treturn this;\r\n\r\n\r\n\t},\r\n\r\n\tattach: function ( object ) {\r\n\r\n\t\t// adds object as a child of this, while maintaining the object's world transform\r\n\r\n\t\tthis.updateWorldMatrix( true, false );\r\n\r\n\t\t_m1$1.copy( this.matrixWorld ).invert();\r\n\r\n\t\tif ( object.parent !== null ) {\r\n\r\n\t\t\tobject.parent.updateWorldMatrix( true, false );\r\n\r\n\t\t\t_m1$1.multiply( object.parent.matrixWorld );\r\n\r\n\t\t}\r\n\r\n\t\tobject.applyMatrix4( _m1$1 );\r\n\r\n\t\tobject.updateWorldMatrix( false, false );\r\n\r\n\t\tthis.add( object );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetObjectById: function ( id ) {\r\n\r\n\t\treturn this.getObjectByProperty( 'id', id );\r\n\r\n\t},\r\n\r\n\tgetObjectByName: function ( name ) {\r\n\r\n\t\treturn this.getObjectByProperty( 'name', name );\r\n\r\n\t},\r\n\r\n\tgetObjectByProperty: function ( name, value ) {\r\n\r\n\t\tif ( this[ name ] === value ) return this;\r\n\r\n\t\tfor ( let i = 0, l = this.children.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst child = this.children[ i ];\r\n\t\t\tconst object = child.getObjectByProperty( name, value );\r\n\r\n\t\t\tif ( object !== undefined ) {\r\n\r\n\t\t\t\treturn object;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\r\n\t},\r\n\r\n\tgetWorldPosition: function ( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldPosition() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\tthis.updateWorldMatrix( true, false );\r\n\r\n\t\treturn target.setFromMatrixPosition( this.matrixWorld );\r\n\r\n\t},\r\n\r\n\tgetWorldQuaternion: function ( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldQuaternion() target is now required' );\r\n\t\t\ttarget = new Quaternion();\r\n\r\n\t\t}\r\n\r\n\t\tthis.updateWorldMatrix( true, false );\r\n\r\n\t\tthis.matrixWorld.decompose( _position, target, _scale );\r\n\r\n\t\treturn target;\r\n\r\n\t},\r\n\r\n\tgetWorldScale: function ( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldScale() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\tthis.updateWorldMatrix( true, false );\r\n\r\n\t\tthis.matrixWorld.decompose( _position, _quaternion$2, target );\r\n\r\n\t\treturn target;\r\n\r\n\t},\r\n\r\n\tgetWorldDirection: function ( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Object3D: .getWorldDirection() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\tthis.updateWorldMatrix( true, false );\r\n\r\n\t\tconst e = this.matrixWorld.elements;\r\n\r\n\t\treturn target.set( e[ 8 ], e[ 9 ], e[ 10 ] ).normalize();\r\n\r\n\t},\r\n\r\n\traycast: function () {},\r\n\r\n\ttraverse: function ( callback ) {\r\n\r\n\t\tcallback( this );\r\n\r\n\t\tconst children = this.children;\r\n\r\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\r\n\r\n\t\t\tchildren[ i ].traverse( callback );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\ttraverseVisible: function ( callback ) {\r\n\r\n\t\tif ( this.visible === false ) return;\r\n\r\n\t\tcallback( this );\r\n\r\n\t\tconst children = this.children;\r\n\r\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\r\n\r\n\t\t\tchildren[ i ].traverseVisible( callback );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\ttraverseAncestors: function ( callback ) {\r\n\r\n\t\tconst parent = this.parent;\r\n\r\n\t\tif ( parent !== null ) {\r\n\r\n\t\t\tcallback( parent );\r\n\r\n\t\t\tparent.traverseAncestors( callback );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tupdateMatrix: function () {\r\n\r\n\t\tthis.matrix.compose( this.position, this.quaternion, this.scale );\r\n\r\n\t\tthis.matrixWorldNeedsUpdate = true;\r\n\r\n\t},\r\n\r\n\tupdateMatrixWorld: function ( force ) {\r\n\r\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\r\n\r\n\t\tif ( this.matrixWorldNeedsUpdate || force ) {\r\n\r\n\t\t\tif ( this.parent === null ) {\r\n\r\n\t\t\t\tthis.matrixWorld.copy( this.matrix );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.matrixWorldNeedsUpdate = false;\r\n\r\n\t\t\tforce = true;\r\n\r\n\t\t}\r\n\r\n\t\t// update children\r\n\r\n\t\tconst children = this.children;\r\n\r\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\r\n\r\n\t\t\tchildren[ i ].updateMatrixWorld( force );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\r\n\r\n\t\tconst parent = this.parent;\r\n\r\n\t\tif ( updateParents === true && parent !== null ) {\r\n\r\n\t\t\tparent.updateWorldMatrix( true, false );\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.matrixAutoUpdate ) this.updateMatrix();\r\n\r\n\t\tif ( this.parent === null ) {\r\n\r\n\t\t\tthis.matrixWorld.copy( this.matrix );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.matrixWorld.multiplyMatrices( this.parent.matrixWorld, this.matrix );\r\n\r\n\t\t}\r\n\r\n\t\t// update children\r\n\r\n\t\tif ( updateChildren === true ) {\r\n\r\n\t\t\tconst children = this.children;\r\n\r\n\t\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tchildren[ i ].updateWorldMatrix( false, true );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\t// meta is a string when called from JSON.stringify\r\n\t\tconst isRootObject = ( meta === undefined || typeof meta === 'string' );\r\n\r\n\t\tconst output = {};\r\n\r\n\t\t// meta is a hash used to collect geometries, materials.\r\n\t\t// not providing it implies that this is the root object\r\n\t\t// being serialized.\r\n\t\tif ( isRootObject ) {\r\n\r\n\t\t\t// initialize meta obj\r\n\t\t\tmeta = {\r\n\t\t\t\tgeometries: {},\r\n\t\t\t\tmaterials: {},\r\n\t\t\t\ttextures: {},\r\n\t\t\t\timages: {},\r\n\t\t\t\tshapes: {},\r\n\t\t\t\tskeletons: {},\r\n\t\t\t\tanimations: {}\r\n\t\t\t};\r\n\r\n\t\t\toutput.metadata = {\r\n\t\t\t\tversion: 4.5,\r\n\t\t\t\ttype: 'Object',\r\n\t\t\t\tgenerator: 'Object3D.toJSON'\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t\t// standard Object3D serialization\r\n\r\n\t\tconst object = {};\r\n\r\n\t\tobject.uuid = this.uuid;\r\n\t\tobject.type = this.type;\r\n\r\n\t\tif ( this.name !== '' ) object.name = this.name;\r\n\t\tif ( this.castShadow === true ) object.castShadow = true;\r\n\t\tif ( this.receiveShadow === true ) object.receiveShadow = true;\r\n\t\tif ( this.visible === false ) object.visible = false;\r\n\t\tif ( this.frustumCulled === false ) object.frustumCulled = false;\r\n\t\tif ( this.renderOrder !== 0 ) object.renderOrder = this.renderOrder;\r\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) object.userData = this.userData;\r\n\r\n\t\tobject.layers = this.layers.mask;\r\n\t\tobject.matrix = this.matrix.toArray();\r\n\r\n\t\tif ( this.matrixAutoUpdate === false ) object.matrixAutoUpdate = false;\r\n\r\n\t\t// object specific properties\r\n\r\n\t\tif ( this.isInstancedMesh ) {\r\n\r\n\t\t\tobject.type = 'InstancedMesh';\r\n\t\t\tobject.count = this.count;\r\n\t\t\tobject.instanceMatrix = this.instanceMatrix.toJSON();\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tfunction serialize( library, element ) {\r\n\r\n\t\t\tif ( library[ element.uuid ] === undefined ) {\r\n\r\n\t\t\t\tlibrary[ element.uuid ] = element.toJSON( meta );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn element.uuid;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.isMesh || this.isLine || this.isPoints ) {\r\n\r\n\t\t\tobject.geometry = serialize( meta.geometries, this.geometry );\r\n\r\n\t\t\tconst parameters = this.geometry.parameters;\r\n\r\n\t\t\tif ( parameters !== undefined && parameters.shapes !== undefined ) {\r\n\r\n\t\t\t\tconst shapes = parameters.shapes;\r\n\r\n\t\t\t\tif ( Array.isArray( shapes ) ) {\r\n\r\n\t\t\t\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst shape = shapes[ i ];\r\n\r\n\t\t\t\t\t\tserialize( meta.shapes, shape );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tserialize( meta.shapes, shapes );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.isSkinnedMesh ) {\r\n\r\n\t\t\tobject.bindMode = this.bindMode;\r\n\t\t\tobject.bindMatrix = this.bindMatrix.toArray();\r\n\r\n\t\t\tif ( this.skeleton !== undefined ) {\r\n\r\n\t\t\t\tserialize( meta.skeletons, this.skeleton );\r\n\r\n\t\t\t\tobject.skeleton = this.skeleton.uuid;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.material !== undefined ) {\r\n\r\n\t\t\tif ( Array.isArray( this.material ) ) {\r\n\r\n\t\t\t\tconst uuids = [];\r\n\r\n\t\t\t\tfor ( let i = 0, l = this.material.length; i < l; i ++ ) {\r\n\r\n\t\t\t\t\tuuids.push( serialize( meta.materials, this.material[ i ] ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tobject.material = uuids;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tobject.material = serialize( meta.materials, this.material );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tif ( this.children.length > 0 ) {\r\n\r\n\t\t\tobject.children = [];\r\n\r\n\t\t\tfor ( let i = 0; i < this.children.length; i ++ ) {\r\n\r\n\t\t\t\tobject.children.push( this.children[ i ].toJSON( meta ).object );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tif ( this.animations.length > 0 ) {\r\n\r\n\t\t\tobject.animations = [];\r\n\r\n\t\t\tfor ( let i = 0; i < this.animations.length; i ++ ) {\r\n\r\n\t\t\t\tconst animation = this.animations[ i ];\r\n\r\n\t\t\t\tobject.animations.push( serialize( meta.animations, animation ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( isRootObject ) {\r\n\r\n\t\t\tconst geometries = extractFromCache( meta.geometries );\r\n\t\t\tconst materials = extractFromCache( meta.materials );\r\n\t\t\tconst textures = extractFromCache( meta.textures );\r\n\t\t\tconst images = extractFromCache( meta.images );\r\n\t\t\tconst shapes = extractFromCache( meta.shapes );\r\n\t\t\tconst skeletons = extractFromCache( meta.skeletons );\r\n\t\t\tconst animations = extractFromCache( meta.animations );\r\n\r\n\t\t\tif ( geometries.length > 0 ) output.geometries = geometries;\r\n\t\t\tif ( materials.length > 0 ) output.materials = materials;\r\n\t\t\tif ( textures.length > 0 ) output.textures = textures;\r\n\t\t\tif ( images.length > 0 ) output.images = images;\r\n\t\t\tif ( shapes.length > 0 ) output.shapes = shapes;\r\n\t\t\tif ( skeletons.length > 0 ) output.skeletons = skeletons;\r\n\t\t\tif ( animations.length > 0 ) output.animations = animations;\r\n\r\n\t\t}\r\n\r\n\t\toutput.object = object;\r\n\r\n\t\treturn output;\r\n\r\n\t\t// extract data from the cache hash\r\n\t\t// remove metadata on each item\r\n\t\t// and return as array\r\n\t\tfunction extractFromCache( cache ) {\r\n\r\n\t\t\tconst values = [];\r\n\t\t\tfor ( const key in cache ) {\r\n\r\n\t\t\t\tconst data = cache[ key ];\r\n\t\t\t\tdelete data.metadata;\r\n\t\t\t\tvalues.push( data );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn values;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tclone: function ( recursive ) {\r\n\r\n\t\treturn new this.constructor().copy( this, recursive );\r\n\r\n\t},\r\n\r\n\tcopy: function ( source, recursive = true ) {\r\n\r\n\t\tthis.name = source.name;\r\n\r\n\t\tthis.up.copy( source.up );\r\n\r\n\t\tthis.position.copy( source.position );\r\n\t\tthis.rotation.order = source.rotation.order;\r\n\t\tthis.quaternion.copy( source.quaternion );\r\n\t\tthis.scale.copy( source.scale );\r\n\r\n\t\tthis.matrix.copy( source.matrix );\r\n\t\tthis.matrixWorld.copy( source.matrixWorld );\r\n\r\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\r\n\t\tthis.matrixWorldNeedsUpdate = source.matrixWorldNeedsUpdate;\r\n\r\n\t\tthis.layers.mask = source.layers.mask;\r\n\t\tthis.visible = source.visible;\r\n\r\n\t\tthis.castShadow = source.castShadow;\r\n\t\tthis.receiveShadow = source.receiveShadow;\r\n\r\n\t\tthis.frustumCulled = source.frustumCulled;\r\n\t\tthis.renderOrder = source.renderOrder;\r\n\r\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\r\n\r\n\t\tif ( recursive === true ) {\r\n\r\n\t\t\tfor ( let i = 0; i < source.children.length; i ++ ) {\r\n\r\n\t\t\t\tconst child = source.children[ i ];\r\n\t\t\t\tthis.add( child.clone() );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst _vector1 = /*@__PURE__*/ new Vector3();\r\nconst _vector2 = /*@__PURE__*/ new Vector3();\r\nconst _normalMatrix = /*@__PURE__*/ new Matrix3();\r\n\r\nclass Plane {\r\n\r\n\tconstructor( normal, constant ) {\r\n\r\n\t\tObject.defineProperty( this, 'isPlane', { value: true } );\r\n\r\n\t\t// normal is assumed to be normalized\r\n\r\n\t\tthis.normal = ( normal !== undefined ) ? normal : new Vector3( 1, 0, 0 );\r\n\t\tthis.constant = ( constant !== undefined ) ? constant : 0;\r\n\r\n\t}\r\n\r\n\tset( normal, constant ) {\r\n\r\n\t\tthis.normal.copy( normal );\r\n\t\tthis.constant = constant;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetComponents( x, y, z, w ) {\r\n\r\n\t\tthis.normal.set( x, y, z );\r\n\t\tthis.constant = w;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromNormalAndCoplanarPoint( normal, point ) {\r\n\r\n\t\tthis.normal.copy( normal );\r\n\t\tthis.constant = - point.dot( this.normal );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromCoplanarPoints( a, b, c ) {\r\n\r\n\t\tconst normal = _vector1.subVectors( c, b ).cross( _vector2.subVectors( a, b ) ).normalize();\r\n\r\n\t\t// Q: should an error be thrown if normal is zero (e.g. degenerate plane)?\r\n\r\n\t\tthis.setFromNormalAndCoplanarPoint( normal, a );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( plane ) {\r\n\r\n\t\tthis.normal.copy( plane.normal );\r\n\t\tthis.constant = plane.constant;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tnormalize() {\r\n\r\n\t\t// Note: will lead to a divide by zero if the plane is invalid.\r\n\r\n\t\tconst inverseNormalLength = 1.0 / this.normal.length();\r\n\t\tthis.normal.multiplyScalar( inverseNormalLength );\r\n\t\tthis.constant *= inverseNormalLength;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tnegate() {\r\n\r\n\t\tthis.constant *= - 1;\r\n\t\tthis.normal.negate();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdistanceToPoint( point ) {\r\n\r\n\t\treturn this.normal.dot( point ) + this.constant;\r\n\r\n\t}\r\n\r\n\tdistanceToSphere( sphere ) {\r\n\r\n\t\treturn this.distanceToPoint( sphere.center ) - sphere.radius;\r\n\r\n\t}\r\n\r\n\tprojectPoint( point, target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Plane: .projectPoint() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.distanceToPoint( point ) ).add( point );\r\n\r\n\t}\r\n\r\n\tintersectLine( line, target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Plane: .intersectLine() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\tconst direction = line.delta( _vector1 );\r\n\r\n\t\tconst denominator = this.normal.dot( direction );\r\n\r\n\t\tif ( denominator === 0 ) {\r\n\r\n\t\t\t// line is coplanar, return origin\r\n\t\t\tif ( this.distanceToPoint( line.start ) === 0 ) {\r\n\r\n\t\t\t\treturn target.copy( line.start );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Unsure if this is the correct method to handle this case.\r\n\t\t\treturn undefined;\r\n\r\n\t\t}\r\n\r\n\t\tconst t = - ( line.start.dot( this.normal ) + this.constant ) / denominator;\r\n\r\n\t\tif ( t < 0 || t > 1 ) {\r\n\r\n\t\t\treturn undefined;\r\n\r\n\t\t}\r\n\r\n\t\treturn target.copy( direction ).multiplyScalar( t ).add( line.start );\r\n\r\n\t}\r\n\r\n\tintersectsLine( line ) {\r\n\r\n\t\t// Note: this tests if a line intersects the plane, not whether it (or its end-points) are coplanar with it.\r\n\r\n\t\tconst startSign = this.distanceToPoint( line.start );\r\n\t\tconst endSign = this.distanceToPoint( line.end );\r\n\r\n\t\treturn ( startSign < 0 && endSign > 0 ) || ( endSign < 0 && startSign > 0 );\r\n\r\n\t}\r\n\r\n\tintersectsBox( box ) {\r\n\r\n\t\treturn box.intersectsPlane( this );\r\n\r\n\t}\r\n\r\n\tintersectsSphere( sphere ) {\r\n\r\n\t\treturn sphere.intersectsPlane( this );\r\n\r\n\t}\r\n\r\n\tcoplanarPoint( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Plane: .coplanarPoint() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.copy( this.normal ).multiplyScalar( - this.constant );\r\n\r\n\t}\r\n\r\n\tapplyMatrix4( matrix, optionalNormalMatrix ) {\r\n\r\n\t\tconst normalMatrix = optionalNormalMatrix || _normalMatrix.getNormalMatrix( matrix );\r\n\r\n\t\tconst referencePoint = this.coplanarPoint( _vector1 ).applyMatrix4( matrix );\r\n\r\n\t\tconst normal = this.normal.applyMatrix3( normalMatrix ).normalize();\r\n\r\n\t\tthis.constant = - referencePoint.dot( normal );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttranslate( offset ) {\r\n\r\n\t\tthis.constant -= offset.dot( this.normal );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( plane ) {\r\n\r\n\t\treturn plane.normal.equals( this.normal ) && ( plane.constant === this.constant );\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _v0$1 = /*@__PURE__*/ new Vector3();\r\nconst _v1$3 = /*@__PURE__*/ new Vector3();\r\nconst _v2$1 = /*@__PURE__*/ new Vector3();\r\nconst _v3 = /*@__PURE__*/ new Vector3();\r\n\r\nconst _vab = /*@__PURE__*/ new Vector3();\r\nconst _vac = /*@__PURE__*/ new Vector3();\r\nconst _vbc = /*@__PURE__*/ new Vector3();\r\nconst _vap = /*@__PURE__*/ new Vector3();\r\nconst _vbp = /*@__PURE__*/ new Vector3();\r\nconst _vcp = /*@__PURE__*/ new Vector3();\r\n\r\nclass Triangle {\r\n\r\n\tconstructor( a, b, c ) {\r\n\r\n\t\tthis.a = ( a !== undefined ) ? a : new Vector3();\r\n\t\tthis.b = ( b !== undefined ) ? b : new Vector3();\r\n\t\tthis.c = ( c !== undefined ) ? c : new Vector3();\r\n\r\n\t}\r\n\r\n\tstatic getNormal( a, b, c, target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Triangle: .getNormal() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\ttarget.subVectors( c, b );\r\n\t\t_v0$1.subVectors( a, b );\r\n\t\ttarget.cross( _v0$1 );\r\n\r\n\t\tconst targetLengthSq = target.lengthSq();\r\n\t\tif ( targetLengthSq > 0 ) {\r\n\r\n\t\t\treturn target.multiplyScalar( 1 / Math.sqrt( targetLengthSq ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn target.set( 0, 0, 0 );\r\n\r\n\t}\r\n\r\n\t// static/instance method to calculate barycentric coordinates\r\n\t// based on: http://www.blackpawn.com/texts/pointinpoly/default.html\r\n\tstatic getBarycoord( point, a, b, c, target ) {\r\n\r\n\t\t_v0$1.subVectors( c, a );\r\n\t\t_v1$3.subVectors( b, a );\r\n\t\t_v2$1.subVectors( point, a );\r\n\r\n\t\tconst dot00 = _v0$1.dot( _v0$1 );\r\n\t\tconst dot01 = _v0$1.dot( _v1$3 );\r\n\t\tconst dot02 = _v0$1.dot( _v2$1 );\r\n\t\tconst dot11 = _v1$3.dot( _v1$3 );\r\n\t\tconst dot12 = _v1$3.dot( _v2$1 );\r\n\r\n\t\tconst denom = ( dot00 * dot11 - dot01 * dot01 );\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Triangle: .getBarycoord() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\t// collinear or singular triangle\r\n\t\tif ( denom === 0 ) {\r\n\r\n\t\t\t// arbitrary location outside of triangle?\r\n\t\t\t// not sure if this is the best idea, maybe should be returning undefined\r\n\t\t\treturn target.set( - 2, - 1, - 1 );\r\n\r\n\t\t}\r\n\r\n\t\tconst invDenom = 1 / denom;\r\n\t\tconst u = ( dot11 * dot02 - dot01 * dot12 ) * invDenom;\r\n\t\tconst v = ( dot00 * dot12 - dot01 * dot02 ) * invDenom;\r\n\r\n\t\t// barycentric coordinates must always sum to 1\r\n\t\treturn target.set( 1 - u - v, v, u );\r\n\r\n\t}\r\n\r\n\tstatic containsPoint( point, a, b, c ) {\r\n\r\n\t\tthis.getBarycoord( point, a, b, c, _v3 );\r\n\r\n\t\treturn ( _v3.x >= 0 ) && ( _v3.y >= 0 ) && ( ( _v3.x + _v3.y ) <= 1 );\r\n\r\n\t}\r\n\r\n\tstatic getUV( point, p1, p2, p3, uv1, uv2, uv3, target ) {\r\n\r\n\t\tthis.getBarycoord( point, p1, p2, p3, _v3 );\r\n\r\n\t\ttarget.set( 0, 0 );\r\n\t\ttarget.addScaledVector( uv1, _v3.x );\r\n\t\ttarget.addScaledVector( uv2, _v3.y );\r\n\t\ttarget.addScaledVector( uv3, _v3.z );\r\n\r\n\t\treturn target;\r\n\r\n\t}\r\n\r\n\tstatic isFrontFacing( a, b, c, direction ) {\r\n\r\n\t\t_v0$1.subVectors( c, b );\r\n\t\t_v1$3.subVectors( a, b );\r\n\r\n\t\t// strictly front facing\r\n\t\treturn ( _v0$1.cross( _v1$3 ).dot( direction ) < 0 ) ? true : false;\r\n\r\n\t}\r\n\r\n\tset( a, b, c ) {\r\n\r\n\t\tthis.a.copy( a );\r\n\t\tthis.b.copy( b );\r\n\t\tthis.c.copy( c );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromPointsAndIndices( points, i0, i1, i2 ) {\r\n\r\n\t\tthis.a.copy( points[ i0 ] );\r\n\t\tthis.b.copy( points[ i1 ] );\r\n\t\tthis.c.copy( points[ i2 ] );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( triangle ) {\r\n\r\n\t\tthis.a.copy( triangle.a );\r\n\t\tthis.b.copy( triangle.b );\r\n\t\tthis.c.copy( triangle.c );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetArea() {\r\n\r\n\t\t_v0$1.subVectors( this.c, this.b );\r\n\t\t_v1$3.subVectors( this.a, this.b );\r\n\r\n\t\treturn _v0$1.cross( _v1$3 ).length() * 0.5;\r\n\r\n\t}\r\n\r\n\tgetMidpoint( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Triangle: .getMidpoint() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.addVectors( this.a, this.b ).add( this.c ).multiplyScalar( 1 / 3 );\r\n\r\n\t}\r\n\r\n\tgetNormal( target ) {\r\n\r\n\t\treturn Triangle.getNormal( this.a, this.b, this.c, target );\r\n\r\n\t}\r\n\r\n\tgetPlane( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Triangle: .getPlane() target is now required' );\r\n\t\t\ttarget = new Plane();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.setFromCoplanarPoints( this.a, this.b, this.c );\r\n\r\n\t}\r\n\r\n\tgetBarycoord( point, target ) {\r\n\r\n\t\treturn Triangle.getBarycoord( point, this.a, this.b, this.c, target );\r\n\r\n\t}\r\n\r\n\tgetUV( point, uv1, uv2, uv3, target ) {\r\n\r\n\t\treturn Triangle.getUV( point, this.a, this.b, this.c, uv1, uv2, uv3, target );\r\n\r\n\t}\r\n\r\n\tcontainsPoint( point ) {\r\n\r\n\t\treturn Triangle.containsPoint( point, this.a, this.b, this.c );\r\n\r\n\t}\r\n\r\n\tisFrontFacing( direction ) {\r\n\r\n\t\treturn Triangle.isFrontFacing( this.a, this.b, this.c, direction );\r\n\r\n\t}\r\n\r\n\tintersectsBox( box ) {\r\n\r\n\t\treturn box.intersectsTriangle( this );\r\n\r\n\t}\r\n\r\n\tclosestPointToPoint( p, target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Triangle: .closestPointToPoint() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\tconst a = this.a, b = this.b, c = this.c;\r\n\t\tlet v, w;\r\n\r\n\t\t// algorithm thanks to Real-Time Collision Detection by Christer Ericson,\r\n\t\t// published by Morgan Kaufmann Publishers, (c) 2005 Elsevier Inc.,\r\n\t\t// under the accompanying license; see chapter 5.1.5 for detailed explanation.\r\n\t\t// basically, we're distinguishing which of the voronoi regions of the triangle\r\n\t\t// the point lies in with the minimum amount of redundant computation.\r\n\r\n\t\t_vab.subVectors( b, a );\r\n\t\t_vac.subVectors( c, a );\r\n\t\t_vap.subVectors( p, a );\r\n\t\tconst d1 = _vab.dot( _vap );\r\n\t\tconst d2 = _vac.dot( _vap );\r\n\t\tif ( d1 <= 0 && d2 <= 0 ) {\r\n\r\n\t\t\t// vertex region of A; barycentric coords (1, 0, 0)\r\n\t\t\treturn target.copy( a );\r\n\r\n\t\t}\r\n\r\n\t\t_vbp.subVectors( p, b );\r\n\t\tconst d3 = _vab.dot( _vbp );\r\n\t\tconst d4 = _vac.dot( _vbp );\r\n\t\tif ( d3 >= 0 && d4 <= d3 ) {\r\n\r\n\t\t\t// vertex region of B; barycentric coords (0, 1, 0)\r\n\t\t\treturn target.copy( b );\r\n\r\n\t\t}\r\n\r\n\t\tconst vc = d1 * d4 - d3 * d2;\r\n\t\tif ( vc <= 0 && d1 >= 0 && d3 <= 0 ) {\r\n\r\n\t\t\tv = d1 / ( d1 - d3 );\r\n\t\t\t// edge region of AB; barycentric coords (1-v, v, 0)\r\n\t\t\treturn target.copy( a ).addScaledVector( _vab, v );\r\n\r\n\t\t}\r\n\r\n\t\t_vcp.subVectors( p, c );\r\n\t\tconst d5 = _vab.dot( _vcp );\r\n\t\tconst d6 = _vac.dot( _vcp );\r\n\t\tif ( d6 >= 0 && d5 <= d6 ) {\r\n\r\n\t\t\t// vertex region of C; barycentric coords (0, 0, 1)\r\n\t\t\treturn target.copy( c );\r\n\r\n\t\t}\r\n\r\n\t\tconst vb = d5 * d2 - d1 * d6;\r\n\t\tif ( vb <= 0 && d2 >= 0 && d6 <= 0 ) {\r\n\r\n\t\t\tw = d2 / ( d2 - d6 );\r\n\t\t\t// edge region of AC; barycentric coords (1-w, 0, w)\r\n\t\t\treturn target.copy( a ).addScaledVector( _vac, w );\r\n\r\n\t\t}\r\n\r\n\t\tconst va = d3 * d6 - d5 * d4;\r\n\t\tif ( va <= 0 && ( d4 - d3 ) >= 0 && ( d5 - d6 ) >= 0 ) {\r\n\r\n\t\t\t_vbc.subVectors( c, b );\r\n\t\t\tw = ( d4 - d3 ) / ( ( d4 - d3 ) + ( d5 - d6 ) );\r\n\t\t\t// edge region of BC; barycentric coords (0, 1-w, w)\r\n\t\t\treturn target.copy( b ).addScaledVector( _vbc, w ); // edge region of BC\r\n\r\n\t\t}\r\n\r\n\t\t// face region\r\n\t\tconst denom = 1 / ( va + vb + vc );\r\n\t\t// u = va * denom\r\n\t\tv = vb * denom;\r\n\t\tw = vc * denom;\r\n\r\n\t\treturn target.copy( a ).addScaledVector( _vab, v ).addScaledVector( _vac, w );\r\n\r\n\t}\r\n\r\n\tequals( triangle ) {\r\n\r\n\t\treturn triangle.a.equals( this.a ) && triangle.b.equals( this.b ) && triangle.c.equals( this.c );\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _colorKeywords = { 'aliceblue': 0xF0F8FF, 'antiquewhite': 0xFAEBD7, 'aqua': 0x00FFFF, 'aquamarine': 0x7FFFD4, 'azure': 0xF0FFFF,\r\n\t'beige': 0xF5F5DC, 'bisque': 0xFFE4C4, 'black': 0x000000, 'blanchedalmond': 0xFFEBCD, 'blue': 0x0000FF, 'blueviolet': 0x8A2BE2,\r\n\t'brown': 0xA52A2A, 'burlywood': 0xDEB887, 'cadetblue': 0x5F9EA0, 'chartreuse': 0x7FFF00, 'chocolate': 0xD2691E, 'coral': 0xFF7F50,\r\n\t'cornflowerblue': 0x6495ED, 'cornsilk': 0xFFF8DC, 'crimson': 0xDC143C, 'cyan': 0x00FFFF, 'darkblue': 0x00008B, 'darkcyan': 0x008B8B,\r\n\t'darkgoldenrod': 0xB8860B, 'darkgray': 0xA9A9A9, 'darkgreen': 0x006400, 'darkgrey': 0xA9A9A9, 'darkkhaki': 0xBDB76B, 'darkmagenta': 0x8B008B,\r\n\t'darkolivegreen': 0x556B2F, 'darkorange': 0xFF8C00, 'darkorchid': 0x9932CC, 'darkred': 0x8B0000, 'darksalmon': 0xE9967A, 'darkseagreen': 0x8FBC8F,\r\n\t'darkslateblue': 0x483D8B, 'darkslategray': 0x2F4F4F, 'darkslategrey': 0x2F4F4F, 'darkturquoise': 0x00CED1, 'darkviolet': 0x9400D3,\r\n\t'deeppink': 0xFF1493, 'deepskyblue': 0x00BFFF, 'dimgray': 0x696969, 'dimgrey': 0x696969, 'dodgerblue': 0x1E90FF, 'firebrick': 0xB22222,\r\n\t'floralwhite': 0xFFFAF0, 'forestgreen': 0x228B22, 'fuchsia': 0xFF00FF, 'gainsboro': 0xDCDCDC, 'ghostwhite': 0xF8F8FF, 'gold': 0xFFD700,\r\n\t'goldenrod': 0xDAA520, 'gray': 0x808080, 'green': 0x008000, 'greenyellow': 0xADFF2F, 'grey': 0x808080, 'honeydew': 0xF0FFF0, 'hotpink': 0xFF69B4,\r\n\t'indianred': 0xCD5C5C, 'indigo': 0x4B0082, 'ivory': 0xFFFFF0, 'khaki': 0xF0E68C, 'lavender': 0xE6E6FA, 'lavenderblush': 0xFFF0F5, 'lawngreen': 0x7CFC00,\r\n\t'lemonchiffon': 0xFFFACD, 'lightblue': 0xADD8E6, 'lightcoral': 0xF08080, 'lightcyan': 0xE0FFFF, 'lightgoldenrodyellow': 0xFAFAD2, 'lightgray': 0xD3D3D3,\r\n\t'lightgreen': 0x90EE90, 'lightgrey': 0xD3D3D3, 'lightpink': 0xFFB6C1, 'lightsalmon': 0xFFA07A, 'lightseagreen': 0x20B2AA, 'lightskyblue': 0x87CEFA,\r\n\t'lightslategray': 0x778899, 'lightslategrey': 0x778899, 'lightsteelblue': 0xB0C4DE, 'lightyellow': 0xFFFFE0, 'lime': 0x00FF00, 'limegreen': 0x32CD32,\r\n\t'linen': 0xFAF0E6, 'magenta': 0xFF00FF, 'maroon': 0x800000, 'mediumaquamarine': 0x66CDAA, 'mediumblue': 0x0000CD, 'mediumorchid': 0xBA55D3,\r\n\t'mediumpurple': 0x9370DB, 'mediumseagreen': 0x3CB371, 'mediumslateblue': 0x7B68EE, 'mediumspringgreen': 0x00FA9A, 'mediumturquoise': 0x48D1CC,\r\n\t'mediumvioletred': 0xC71585, 'midnightblue': 0x191970, 'mintcream': 0xF5FFFA, 'mistyrose': 0xFFE4E1, 'moccasin': 0xFFE4B5, 'navajowhite': 0xFFDEAD,\r\n\t'navy': 0x000080, 'oldlace': 0xFDF5E6, 'olive': 0x808000, 'olivedrab': 0x6B8E23, 'orange': 0xFFA500, 'orangered': 0xFF4500, 'orchid': 0xDA70D6,\r\n\t'palegoldenrod': 0xEEE8AA, 'palegreen': 0x98FB98, 'paleturquoise': 0xAFEEEE, 'palevioletred': 0xDB7093, 'papayawhip': 0xFFEFD5, 'peachpuff': 0xFFDAB9,\r\n\t'peru': 0xCD853F, 'pink': 0xFFC0CB, 'plum': 0xDDA0DD, 'powderblue': 0xB0E0E6, 'purple': 0x800080, 'rebeccapurple': 0x663399, 'red': 0xFF0000, 'rosybrown': 0xBC8F8F,\r\n\t'royalblue': 0x4169E1, 'saddlebrown': 0x8B4513, 'salmon': 0xFA8072, 'sandybrown': 0xF4A460, 'seagreen': 0x2E8B57, 'seashell': 0xFFF5EE,\r\n\t'sienna': 0xA0522D, 'silver': 0xC0C0C0, 'skyblue': 0x87CEEB, 'slateblue': 0x6A5ACD, 'slategray': 0x708090, 'slategrey': 0x708090, 'snow': 0xFFFAFA,\r\n\t'springgreen': 0x00FF7F, 'steelblue': 0x4682B4, 'tan': 0xD2B48C, 'teal': 0x008080, 'thistle': 0xD8BFD8, 'tomato': 0xFF6347, 'turquoise': 0x40E0D0,\r\n\t'violet': 0xEE82EE, 'wheat': 0xF5DEB3, 'white': 0xFFFFFF, 'whitesmoke': 0xF5F5F5, 'yellow': 0xFFFF00, 'yellowgreen': 0x9ACD32 };\r\n\r\nconst _hslA = { h: 0, s: 0, l: 0 };\r\nconst _hslB = { h: 0, s: 0, l: 0 };\r\n\r\nfunction hue2rgb( p, q, t ) {\r\n\r\n\tif ( t < 0 ) t += 1;\r\n\tif ( t > 1 ) t -= 1;\r\n\tif ( t < 1 / 6 ) return p + ( q - p ) * 6 * t;\r\n\tif ( t < 1 / 2 ) return q;\r\n\tif ( t < 2 / 3 ) return p + ( q - p ) * 6 * ( 2 / 3 - t );\r\n\treturn p;\r\n\r\n}\r\n\r\nfunction SRGBToLinear( c ) {\r\n\r\n\treturn ( c < 0.04045 ) ? c * 0.0773993808 : Math.pow( c * 0.9478672986 + 0.0521327014, 2.4 );\r\n\r\n}\r\n\r\nfunction LinearToSRGB( c ) {\r\n\r\n\treturn ( c < 0.0031308 ) ? c * 12.92 : 1.055 * ( Math.pow( c, 0.41666 ) ) - 0.055;\r\n\r\n}\r\n\r\nclass Color {\r\n\r\n\tconstructor( r, g, b ) {\r\n\r\n\t\tObject.defineProperty( this, 'isColor', { value: true } );\r\n\r\n\t\tif ( g === undefined && b === undefined ) {\r\n\r\n\t\t\t// r is THREE.Color, hex or string\r\n\t\t\treturn this.set( r );\r\n\r\n\t\t}\r\n\r\n\t\treturn this.setRGB( r, g, b );\r\n\r\n\t}\r\n\r\n\tset( value ) {\r\n\r\n\t\tif ( value && value.isColor ) {\r\n\r\n\t\t\tthis.copy( value );\r\n\r\n\t\t} else if ( typeof value === 'number' ) {\r\n\r\n\t\t\tthis.setHex( value );\r\n\r\n\t\t} else if ( typeof value === 'string' ) {\r\n\r\n\t\t\tthis.setStyle( value );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetScalar( scalar ) {\r\n\r\n\t\tthis.r = scalar;\r\n\t\tthis.g = scalar;\r\n\t\tthis.b = scalar;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetHex( hex ) {\r\n\r\n\t\thex = Math.floor( hex );\r\n\r\n\t\tthis.r = ( hex >> 16 & 255 ) / 255;\r\n\t\tthis.g = ( hex >> 8 & 255 ) / 255;\r\n\t\tthis.b = ( hex & 255 ) / 255;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetRGB( r, g, b ) {\r\n\r\n\t\tthis.r = r;\r\n\t\tthis.g = g;\r\n\t\tthis.b = b;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetHSL( h, s, l ) {\r\n\r\n\t\t// h,s,l ranges are in 0.0 - 1.0\r\n\t\th = MathUtils.euclideanModulo( h, 1 );\r\n\t\ts = MathUtils.clamp( s, 0, 1 );\r\n\t\tl = MathUtils.clamp( l, 0, 1 );\r\n\r\n\t\tif ( s === 0 ) {\r\n\r\n\t\t\tthis.r = this.g = this.b = l;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst p = l <= 0.5 ? l * ( 1 + s ) : l + s - ( l * s );\r\n\t\t\tconst q = ( 2 * l ) - p;\r\n\r\n\t\t\tthis.r = hue2rgb( q, p, h + 1 / 3 );\r\n\t\t\tthis.g = hue2rgb( q, p, h );\r\n\t\t\tthis.b = hue2rgb( q, p, h - 1 / 3 );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetStyle( style ) {\r\n\r\n\t\tfunction handleAlpha( string ) {\r\n\r\n\t\t\tif ( string === undefined ) return;\r\n\r\n\t\t\tif ( parseFloat( string ) < 1 ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.Color: Alpha component of ' + style + ' will be ignored.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\r\n\t\tlet m;\r\n\r\n\t\tif ( m = /^((?:rgb|hsl)a?)\\(\\s*([^\\)]*)\\)/.exec( style ) ) {\r\n\r\n\t\t\t// rgb / hsl\r\n\r\n\t\t\tlet color;\r\n\t\t\tconst name = m[ 1 ];\r\n\t\t\tconst components = m[ 2 ];\r\n\r\n\t\t\tswitch ( name ) {\r\n\r\n\t\t\t\tcase 'rgb':\r\n\t\t\t\tcase 'rgba':\r\n\r\n\t\t\t\t\tif ( color = /^(\\d+)\\s*,\\s*(\\d+)\\s*,\\s*(\\d+)\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\r\n\r\n\t\t\t\t\t\t// rgb(255,0,0) rgba(255,0,0,0.5)\r\n\t\t\t\t\t\tthis.r = Math.min( 255, parseInt( color[ 1 ], 10 ) ) / 255;\r\n\t\t\t\t\t\tthis.g = Math.min( 255, parseInt( color[ 2 ], 10 ) ) / 255;\r\n\t\t\t\t\t\tthis.b = Math.min( 255, parseInt( color[ 3 ], 10 ) ) / 255;\r\n\r\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\r\n\r\n\t\t\t\t\t\treturn this;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( color = /^(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\r\n\r\n\t\t\t\t\t\t// rgb(100%,0%,0%) rgba(100%,0%,0%,0.5)\r\n\t\t\t\t\t\tthis.r = Math.min( 100, parseInt( color[ 1 ], 10 ) ) / 100;\r\n\t\t\t\t\t\tthis.g = Math.min( 100, parseInt( color[ 2 ], 10 ) ) / 100;\r\n\t\t\t\t\t\tthis.b = Math.min( 100, parseInt( color[ 3 ], 10 ) ) / 100;\r\n\r\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\r\n\r\n\t\t\t\t\t\treturn this;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'hsl':\r\n\t\t\t\tcase 'hsla':\r\n\r\n\t\t\t\t\tif ( color = /^(\\d*\\.?\\d+)\\s*,\\s*(\\d+)\\%\\s*,\\s*(\\d+)\\%\\s*(?:,\\s*(\\d*\\.?\\d+)\\s*)?$/.exec( components ) ) {\r\n\r\n\t\t\t\t\t\t// hsl(120,50%,50%) hsla(120,50%,50%,0.5)\r\n\t\t\t\t\t\tconst h = parseFloat( color[ 1 ] ) / 360;\r\n\t\t\t\t\t\tconst s = parseInt( color[ 2 ], 10 ) / 100;\r\n\t\t\t\t\t\tconst l = parseInt( color[ 3 ], 10 ) / 100;\r\n\r\n\t\t\t\t\t\thandleAlpha( color[ 4 ] );\r\n\r\n\t\t\t\t\t\treturn this.setHSL( h, s, l );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( m = /^\\#([A-Fa-f\\d]+)$/.exec( style ) ) {\r\n\r\n\t\t\t// hex color\r\n\r\n\t\t\tconst hex = m[ 1 ];\r\n\t\t\tconst size = hex.length;\r\n\r\n\t\t\tif ( size === 3 ) {\r\n\r\n\t\t\t\t// #ff0\r\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 0 ), 16 ) / 255;\r\n\t\t\t\tthis.g = parseInt( hex.charAt( 1 ) + hex.charAt( 1 ), 16 ) / 255;\r\n\t\t\t\tthis.b = parseInt( hex.charAt( 2 ) + hex.charAt( 2 ), 16 ) / 255;\r\n\r\n\t\t\t\treturn this;\r\n\r\n\t\t\t} else if ( size === 6 ) {\r\n\r\n\t\t\t\t// #ff0000\r\n\t\t\t\tthis.r = parseInt( hex.charAt( 0 ) + hex.charAt( 1 ), 16 ) / 255;\r\n\t\t\t\tthis.g = parseInt( hex.charAt( 2 ) + hex.charAt( 3 ), 16 ) / 255;\r\n\t\t\t\tthis.b = parseInt( hex.charAt( 4 ) + hex.charAt( 5 ), 16 ) / 255;\r\n\r\n\t\t\t\treturn this;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( style && style.length > 0 ) {\r\n\r\n\t\t\treturn this.setColorName( style );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetColorName( style ) {\r\n\r\n\t\t// color keywords\r\n\t\tconst hex = _colorKeywords[ style ];\r\n\r\n\t\tif ( hex !== undefined ) {\r\n\r\n\t\t\t// red\r\n\t\t\tthis.setHex( hex );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// unknown color\r\n\t\t\tconsole.warn( 'THREE.Color: Unknown color ' + style );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor( this.r, this.g, this.b );\r\n\r\n\t}\r\n\r\n\tcopy( color ) {\r\n\r\n\t\tthis.r = color.r;\r\n\t\tthis.g = color.g;\r\n\t\tthis.b = color.b;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcopyGammaToLinear( color, gammaFactor = 2.0 ) {\r\n\r\n\t\tthis.r = Math.pow( color.r, gammaFactor );\r\n\t\tthis.g = Math.pow( color.g, gammaFactor );\r\n\t\tthis.b = Math.pow( color.b, gammaFactor );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcopyLinearToGamma( color, gammaFactor = 2.0 ) {\r\n\r\n\t\tconst safeInverse = ( gammaFactor > 0 ) ? ( 1.0 / gammaFactor ) : 1.0;\r\n\r\n\t\tthis.r = Math.pow( color.r, safeInverse );\r\n\t\tthis.g = Math.pow( color.g, safeInverse );\r\n\t\tthis.b = Math.pow( color.b, safeInverse );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tconvertGammaToLinear( gammaFactor ) {\r\n\r\n\t\tthis.copyGammaToLinear( this, gammaFactor );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tconvertLinearToGamma( gammaFactor ) {\r\n\r\n\t\tthis.copyLinearToGamma( this, gammaFactor );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcopySRGBToLinear( color ) {\r\n\r\n\t\tthis.r = SRGBToLinear( color.r );\r\n\t\tthis.g = SRGBToLinear( color.g );\r\n\t\tthis.b = SRGBToLinear( color.b );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcopyLinearToSRGB( color ) {\r\n\r\n\t\tthis.r = LinearToSRGB( color.r );\r\n\t\tthis.g = LinearToSRGB( color.g );\r\n\t\tthis.b = LinearToSRGB( color.b );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tconvertSRGBToLinear() {\r\n\r\n\t\tthis.copySRGBToLinear( this );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tconvertLinearToSRGB() {\r\n\r\n\t\tthis.copyLinearToSRGB( this );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetHex() {\r\n\r\n\t\treturn ( this.r * 255 ) << 16 ^ ( this.g * 255 ) << 8 ^ ( this.b * 255 ) << 0;\r\n\r\n\t}\r\n\r\n\tgetHexString() {\r\n\r\n\t\treturn ( '000000' + this.getHex().toString( 16 ) ).slice( - 6 );\r\n\r\n\t}\r\n\r\n\tgetHSL( target ) {\r\n\r\n\t\t// h,s,l ranges are in 0.0 - 1.0\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Color: .getHSL() target is now required' );\r\n\t\t\ttarget = { h: 0, s: 0, l: 0 };\r\n\r\n\t\t}\r\n\r\n\t\tconst r = this.r, g = this.g, b = this.b;\r\n\r\n\t\tconst max = Math.max( r, g, b );\r\n\t\tconst min = Math.min( r, g, b );\r\n\r\n\t\tlet hue, saturation;\r\n\t\tconst lightness = ( min + max ) / 2.0;\r\n\r\n\t\tif ( min === max ) {\r\n\r\n\t\t\thue = 0;\r\n\t\t\tsaturation = 0;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst delta = max - min;\r\n\r\n\t\t\tsaturation = lightness <= 0.5 ? delta / ( max + min ) : delta / ( 2 - max - min );\r\n\r\n\t\t\tswitch ( max ) {\r\n\r\n\t\t\t\tcase r: hue = ( g - b ) / delta + ( g < b ? 6 : 0 ); break;\r\n\t\t\t\tcase g: hue = ( b - r ) / delta + 2; break;\r\n\t\t\t\tcase b: hue = ( r - g ) / delta + 4; break;\r\n\r\n\t\t\t}\r\n\r\n\t\t\thue /= 6;\r\n\r\n\t\t}\r\n\r\n\t\ttarget.h = hue;\r\n\t\ttarget.s = saturation;\r\n\t\ttarget.l = lightness;\r\n\r\n\t\treturn target;\r\n\r\n\t}\r\n\r\n\tgetStyle() {\r\n\r\n\t\treturn 'rgb(' + ( ( this.r * 255 ) | 0 ) + ',' + ( ( this.g * 255 ) | 0 ) + ',' + ( ( this.b * 255 ) | 0 ) + ')';\r\n\r\n\t}\r\n\r\n\toffsetHSL( h, s, l ) {\r\n\r\n\t\tthis.getHSL( _hslA );\r\n\r\n\t\t_hslA.h += h; _hslA.s += s; _hslA.l += l;\r\n\r\n\t\tthis.setHSL( _hslA.h, _hslA.s, _hslA.l );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tadd( color ) {\r\n\r\n\t\tthis.r += color.r;\r\n\t\tthis.g += color.g;\r\n\t\tthis.b += color.b;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddColors( color1, color2 ) {\r\n\r\n\t\tthis.r = color1.r + color2.r;\r\n\t\tthis.g = color1.g + color2.g;\r\n\t\tthis.b = color1.b + color2.b;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddScalar( s ) {\r\n\r\n\t\tthis.r += s;\r\n\t\tthis.g += s;\r\n\t\tthis.b += s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsub( color ) {\r\n\r\n\t\tthis.r = Math.max( 0, this.r - color.r );\r\n\t\tthis.g = Math.max( 0, this.g - color.g );\r\n\t\tthis.b = Math.max( 0, this.b - color.b );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiply( color ) {\r\n\r\n\t\tthis.r *= color.r;\r\n\t\tthis.g *= color.g;\r\n\t\tthis.b *= color.b;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmultiplyScalar( s ) {\r\n\r\n\t\tthis.r *= s;\r\n\t\tthis.g *= s;\r\n\t\tthis.b *= s;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tlerp( color, alpha ) {\r\n\r\n\t\tthis.r += ( color.r - this.r ) * alpha;\r\n\t\tthis.g += ( color.g - this.g ) * alpha;\r\n\t\tthis.b += ( color.b - this.b ) * alpha;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tlerpHSL( color, alpha ) {\r\n\r\n\t\tthis.getHSL( _hslA );\r\n\t\tcolor.getHSL( _hslB );\r\n\r\n\t\tconst h = MathUtils.lerp( _hslA.h, _hslB.h, alpha );\r\n\t\tconst s = MathUtils.lerp( _hslA.s, _hslB.s, alpha );\r\n\t\tconst l = MathUtils.lerp( _hslA.l, _hslB.l, alpha );\r\n\r\n\t\tthis.setHSL( h, s, l );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( c ) {\r\n\r\n\t\treturn ( c.r === this.r ) && ( c.g === this.g ) && ( c.b === this.b );\r\n\r\n\t}\r\n\r\n\tfromArray( array, offset = 0 ) {\r\n\r\n\t\tthis.r = array[ offset ];\r\n\t\tthis.g = array[ offset + 1 ];\r\n\t\tthis.b = array[ offset + 2 ];\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoArray( array = [], offset = 0 ) {\r\n\r\n\t\tarray[ offset ] = this.r;\r\n\t\tarray[ offset + 1 ] = this.g;\r\n\t\tarray[ offset + 2 ] = this.b;\r\n\r\n\t\treturn array;\r\n\r\n\t}\r\n\r\n\tfromBufferAttribute( attribute, index ) {\r\n\r\n\t\tthis.r = attribute.getX( index );\r\n\t\tthis.g = attribute.getY( index );\r\n\t\tthis.b = attribute.getZ( index );\r\n\r\n\t\tif ( attribute.normalized === true ) {\r\n\r\n\t\t\t// assuming Uint8Array\r\n\r\n\t\t\tthis.r /= 255;\r\n\t\t\tthis.g /= 255;\r\n\t\t\tthis.b /= 255;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoJSON() {\r\n\r\n\t\treturn this.getHex();\r\n\r\n\t}\r\n\r\n}\r\n\r\nColor.NAMES = _colorKeywords;\r\nColor.prototype.r = 1;\r\nColor.prototype.g = 1;\r\nColor.prototype.b = 1;\r\n\r\nclass Face3 {\r\n\r\n\tconstructor( a, b, c, normal, color, materialIndex = 0 ) {\r\n\r\n\t\tthis.a = a;\r\n\t\tthis.b = b;\r\n\t\tthis.c = c;\r\n\r\n\t\tthis.normal = ( normal && normal.isVector3 ) ? normal : new Vector3();\r\n\t\tthis.vertexNormals = Array.isArray( normal ) ? normal : [];\r\n\r\n\t\tthis.color = ( color && color.isColor ) ? color : new Color();\r\n\t\tthis.vertexColors = Array.isArray( color ) ? color : [];\r\n\r\n\t\tthis.materialIndex = materialIndex;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( source ) {\r\n\r\n\t\tthis.a = source.a;\r\n\t\tthis.b = source.b;\r\n\t\tthis.c = source.c;\r\n\r\n\t\tthis.normal.copy( source.normal );\r\n\t\tthis.color.copy( source.color );\r\n\r\n\t\tthis.materialIndex = source.materialIndex;\r\n\r\n\t\tfor ( let i = 0, il = source.vertexNormals.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.vertexNormals[ i ] = source.vertexNormals[ i ].clone();\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0, il = source.vertexColors.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.vertexColors[ i ] = source.vertexColors[ i ].clone();\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\nlet materialId = 0;\r\n\r\nfunction Material() {\r\n\r\n\tObject.defineProperty( this, 'id', { value: materialId ++ } );\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n\tthis.name = '';\r\n\tthis.type = 'Material';\r\n\r\n\tthis.fog = true;\r\n\r\n\tthis.blending = NormalBlending;\r\n\tthis.side = FrontSide;\r\n\tthis.flatShading = false;\r\n\tthis.vertexColors = false;\r\n\r\n\tthis.opacity = 1;\r\n\tthis.transparent = false;\r\n\r\n\tthis.blendSrc = SrcAlphaFactor;\r\n\tthis.blendDst = OneMinusSrcAlphaFactor;\r\n\tthis.blendEquation = AddEquation;\r\n\tthis.blendSrcAlpha = null;\r\n\tthis.blendDstAlpha = null;\r\n\tthis.blendEquationAlpha = null;\r\n\r\n\tthis.depthFunc = LessEqualDepth;\r\n\tthis.depthTest = true;\r\n\tthis.depthWrite = true;\r\n\r\n\tthis.stencilWriteMask = 0xff;\r\n\tthis.stencilFunc = AlwaysStencilFunc;\r\n\tthis.stencilRef = 0;\r\n\tthis.stencilFuncMask = 0xff;\r\n\tthis.stencilFail = KeepStencilOp;\r\n\tthis.stencilZFail = KeepStencilOp;\r\n\tthis.stencilZPass = KeepStencilOp;\r\n\tthis.stencilWrite = false;\r\n\r\n\tthis.clippingPlanes = null;\r\n\tthis.clipIntersection = false;\r\n\tthis.clipShadows = false;\r\n\r\n\tthis.shadowSide = null;\r\n\r\n\tthis.colorWrite = true;\r\n\r\n\tthis.precision = null; // override the renderer's default precision for this material\r\n\r\n\tthis.polygonOffset = false;\r\n\tthis.polygonOffsetFactor = 0;\r\n\tthis.polygonOffsetUnits = 0;\r\n\r\n\tthis.dithering = false;\r\n\r\n\tthis.alphaTest = 0;\r\n\tthis.premultipliedAlpha = false;\r\n\r\n\tthis.visible = true;\r\n\r\n\tthis.toneMapped = true;\r\n\r\n\tthis.userData = {};\r\n\r\n\tthis.version = 0;\r\n\r\n}\r\n\r\nMaterial.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\r\n\r\n\tconstructor: Material,\r\n\r\n\tisMaterial: true,\r\n\r\n\tonBeforeCompile: function ( /* shaderobject, renderer */ ) {},\r\n\r\n\tcustomProgramCacheKey: function () {\r\n\r\n\t\treturn this.onBeforeCompile.toString();\r\n\r\n\t},\r\n\r\n\tsetValues: function ( values ) {\r\n\r\n\t\tif ( values === undefined ) return;\r\n\r\n\t\tfor ( const key in values ) {\r\n\r\n\t\t\tconst newValue = values[ key ];\r\n\r\n\t\t\tif ( newValue === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.Material: \\'' + key + '\\' parameter is undefined.' );\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// for backward compatability if shading is set in the constructor\r\n\t\t\tif ( key === 'shading' ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\r\n\t\t\t\tthis.flatShading = ( newValue === FlatShading ) ? true : false;\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst currentValue = this[ key ];\r\n\r\n\t\t\tif ( currentValue === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.' + this.type + ': \\'' + key + '\\' is not a property of this material.' );\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( currentValue && currentValue.isColor ) {\r\n\r\n\t\t\t\tcurrentValue.set( newValue );\r\n\r\n\t\t\t} else if ( ( currentValue && currentValue.isVector3 ) && ( newValue && newValue.isVector3 ) ) {\r\n\r\n\t\t\t\tcurrentValue.copy( newValue );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tthis[ key ] = newValue;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst isRoot = ( meta === undefined || typeof meta === 'string' );\r\n\r\n\t\tif ( isRoot ) {\r\n\r\n\t\t\tmeta = {\r\n\t\t\t\ttextures: {},\r\n\t\t\t\timages: {}\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t\tconst data = {\r\n\t\t\tmetadata: {\r\n\t\t\t\tversion: 4.5,\r\n\t\t\t\ttype: 'Material',\r\n\t\t\t\tgenerator: 'Material.toJSON'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// standard Material serialization\r\n\t\tdata.uuid = this.uuid;\r\n\t\tdata.type = this.type;\r\n\r\n\t\tif ( this.name !== '' ) data.name = this.name;\r\n\r\n\t\tif ( this.color && this.color.isColor ) data.color = this.color.getHex();\r\n\r\n\t\tif ( this.roughness !== undefined ) data.roughness = this.roughness;\r\n\t\tif ( this.metalness !== undefined ) data.metalness = this.metalness;\r\n\r\n\t\tif ( this.sheen && this.sheen.isColor ) data.sheen = this.sheen.getHex();\r\n\t\tif ( this.emissive && this.emissive.isColor ) data.emissive = this.emissive.getHex();\r\n\t\tif ( this.emissiveIntensity && this.emissiveIntensity !== 1 ) data.emissiveIntensity = this.emissiveIntensity;\r\n\r\n\t\tif ( this.specular && this.specular.isColor ) data.specular = this.specular.getHex();\r\n\t\tif ( this.shininess !== undefined ) data.shininess = this.shininess;\r\n\t\tif ( this.clearcoat !== undefined ) data.clearcoat = this.clearcoat;\r\n\t\tif ( this.clearcoatRoughness !== undefined ) data.clearcoatRoughness = this.clearcoatRoughness;\r\n\r\n\t\tif ( this.clearcoatMap && this.clearcoatMap.isTexture ) {\r\n\r\n\t\t\tdata.clearcoatMap = this.clearcoatMap.toJSON( meta ).uuid;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.clearcoatRoughnessMap && this.clearcoatRoughnessMap.isTexture ) {\r\n\r\n\t\t\tdata.clearcoatRoughnessMap = this.clearcoatRoughnessMap.toJSON( meta ).uuid;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.clearcoatNormalMap && this.clearcoatNormalMap.isTexture ) {\r\n\r\n\t\t\tdata.clearcoatNormalMap = this.clearcoatNormalMap.toJSON( meta ).uuid;\r\n\t\t\tdata.clearcoatNormalScale = this.clearcoatNormalScale.toArray();\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.map && this.map.isTexture ) data.map = this.map.toJSON( meta ).uuid;\r\n\t\tif ( this.matcap && this.matcap.isTexture ) data.matcap = this.matcap.toJSON( meta ).uuid;\r\n\t\tif ( this.alphaMap && this.alphaMap.isTexture ) data.alphaMap = this.alphaMap.toJSON( meta ).uuid;\r\n\t\tif ( this.lightMap && this.lightMap.isTexture ) data.lightMap = this.lightMap.toJSON( meta ).uuid;\r\n\r\n\t\tif ( this.aoMap && this.aoMap.isTexture ) {\r\n\r\n\t\t\tdata.aoMap = this.aoMap.toJSON( meta ).uuid;\r\n\t\t\tdata.aoMapIntensity = this.aoMapIntensity;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.bumpMap && this.bumpMap.isTexture ) {\r\n\r\n\t\t\tdata.bumpMap = this.bumpMap.toJSON( meta ).uuid;\r\n\t\t\tdata.bumpScale = this.bumpScale;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.normalMap && this.normalMap.isTexture ) {\r\n\r\n\t\t\tdata.normalMap = this.normalMap.toJSON( meta ).uuid;\r\n\t\t\tdata.normalMapType = this.normalMapType;\r\n\t\t\tdata.normalScale = this.normalScale.toArray();\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.displacementMap && this.displacementMap.isTexture ) {\r\n\r\n\t\t\tdata.displacementMap = this.displacementMap.toJSON( meta ).uuid;\r\n\t\t\tdata.displacementScale = this.displacementScale;\r\n\t\t\tdata.displacementBias = this.displacementBias;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.roughnessMap && this.roughnessMap.isTexture ) data.roughnessMap = this.roughnessMap.toJSON( meta ).uuid;\r\n\t\tif ( this.metalnessMap && this.metalnessMap.isTexture ) data.metalnessMap = this.metalnessMap.toJSON( meta ).uuid;\r\n\r\n\t\tif ( this.emissiveMap && this.emissiveMap.isTexture ) data.emissiveMap = this.emissiveMap.toJSON( meta ).uuid;\r\n\t\tif ( this.specularMap && this.specularMap.isTexture ) data.specularMap = this.specularMap.toJSON( meta ).uuid;\r\n\r\n\t\tif ( this.envMap && this.envMap.isTexture ) {\r\n\r\n\t\t\tdata.envMap = this.envMap.toJSON( meta ).uuid;\r\n\t\t\tdata.reflectivity = this.reflectivity; // Scale behind envMap\r\n\t\t\tdata.refractionRatio = this.refractionRatio;\r\n\r\n\t\t\tif ( this.combine !== undefined ) data.combine = this.combine;\r\n\t\t\tif ( this.envMapIntensity !== undefined ) data.envMapIntensity = this.envMapIntensity;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.gradientMap && this.gradientMap.isTexture ) {\r\n\r\n\t\t\tdata.gradientMap = this.gradientMap.toJSON( meta ).uuid;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.size !== undefined ) data.size = this.size;\r\n\t\tif ( this.sizeAttenuation !== undefined ) data.sizeAttenuation = this.sizeAttenuation;\r\n\r\n\t\tif ( this.blending !== NormalBlending ) data.blending = this.blending;\r\n\t\tif ( this.flatShading === true ) data.flatShading = this.flatShading;\r\n\t\tif ( this.side !== FrontSide ) data.side = this.side;\r\n\t\tif ( this.vertexColors ) data.vertexColors = true;\r\n\r\n\t\tif ( this.opacity < 1 ) data.opacity = this.opacity;\r\n\t\tif ( this.transparent === true ) data.transparent = this.transparent;\r\n\r\n\t\tdata.depthFunc = this.depthFunc;\r\n\t\tdata.depthTest = this.depthTest;\r\n\t\tdata.depthWrite = this.depthWrite;\r\n\r\n\t\tdata.stencilWrite = this.stencilWrite;\r\n\t\tdata.stencilWriteMask = this.stencilWriteMask;\r\n\t\tdata.stencilFunc = this.stencilFunc;\r\n\t\tdata.stencilRef = this.stencilRef;\r\n\t\tdata.stencilFuncMask = this.stencilFuncMask;\r\n\t\tdata.stencilFail = this.stencilFail;\r\n\t\tdata.stencilZFail = this.stencilZFail;\r\n\t\tdata.stencilZPass = this.stencilZPass;\r\n\r\n\t\t// rotation (SpriteMaterial)\r\n\t\tif ( this.rotation && this.rotation !== 0 ) data.rotation = this.rotation;\r\n\r\n\t\tif ( this.polygonOffset === true ) data.polygonOffset = true;\r\n\t\tif ( this.polygonOffsetFactor !== 0 ) data.polygonOffsetFactor = this.polygonOffsetFactor;\r\n\t\tif ( this.polygonOffsetUnits !== 0 ) data.polygonOffsetUnits = this.polygonOffsetUnits;\r\n\r\n\t\tif ( this.linewidth && this.linewidth !== 1 ) data.linewidth = this.linewidth;\r\n\t\tif ( this.dashSize !== undefined ) data.dashSize = this.dashSize;\r\n\t\tif ( this.gapSize !== undefined ) data.gapSize = this.gapSize;\r\n\t\tif ( this.scale !== undefined ) data.scale = this.scale;\r\n\r\n\t\tif ( this.dithering === true ) data.dithering = true;\r\n\r\n\t\tif ( this.alphaTest > 0 ) data.alphaTest = this.alphaTest;\r\n\t\tif ( this.premultipliedAlpha === true ) data.premultipliedAlpha = this.premultipliedAlpha;\r\n\r\n\t\tif ( this.wireframe === true ) data.wireframe = this.wireframe;\r\n\t\tif ( this.wireframeLinewidth > 1 ) data.wireframeLinewidth = this.wireframeLinewidth;\r\n\t\tif ( this.wireframeLinecap !== 'round' ) data.wireframeLinecap = this.wireframeLinecap;\r\n\t\tif ( this.wireframeLinejoin !== 'round' ) data.wireframeLinejoin = this.wireframeLinejoin;\r\n\r\n\t\tif ( this.morphTargets === true ) data.morphTargets = true;\r\n\t\tif ( this.morphNormals === true ) data.morphNormals = true;\r\n\t\tif ( this.skinning === true ) data.skinning = true;\r\n\r\n\t\tif ( this.visible === false ) data.visible = false;\r\n\r\n\t\tif ( this.toneMapped === false ) data.toneMapped = false;\r\n\r\n\t\tif ( JSON.stringify( this.userData ) !== '{}' ) data.userData = this.userData;\r\n\r\n\t\t// TODO: Copied from Object3D.toJSON\r\n\r\n\t\tfunction extractFromCache( cache ) {\r\n\r\n\t\t\tconst values = [];\r\n\r\n\t\t\tfor ( const key in cache ) {\r\n\r\n\t\t\t\tconst data = cache[ key ];\r\n\t\t\t\tdelete data.metadata;\r\n\t\t\t\tvalues.push( data );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn values;\r\n\r\n\t\t}\r\n\r\n\t\tif ( isRoot ) {\r\n\r\n\t\t\tconst textures = extractFromCache( meta.textures );\r\n\t\t\tconst images = extractFromCache( meta.images );\r\n\r\n\t\t\tif ( textures.length > 0 ) data.textures = textures;\r\n\t\t\tif ( images.length > 0 ) data.images = images;\r\n\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tthis.name = source.name;\r\n\r\n\t\tthis.fog = source.fog;\r\n\r\n\t\tthis.blending = source.blending;\r\n\t\tthis.side = source.side;\r\n\t\tthis.flatShading = source.flatShading;\r\n\t\tthis.vertexColors = source.vertexColors;\r\n\r\n\t\tthis.opacity = source.opacity;\r\n\t\tthis.transparent = source.transparent;\r\n\r\n\t\tthis.blendSrc = source.blendSrc;\r\n\t\tthis.blendDst = source.blendDst;\r\n\t\tthis.blendEquation = source.blendEquation;\r\n\t\tthis.blendSrcAlpha = source.blendSrcAlpha;\r\n\t\tthis.blendDstAlpha = source.blendDstAlpha;\r\n\t\tthis.blendEquationAlpha = source.blendEquationAlpha;\r\n\r\n\t\tthis.depthFunc = source.depthFunc;\r\n\t\tthis.depthTest = source.depthTest;\r\n\t\tthis.depthWrite = source.depthWrite;\r\n\r\n\t\tthis.stencilWriteMask = source.stencilWriteMask;\r\n\t\tthis.stencilFunc = source.stencilFunc;\r\n\t\tthis.stencilRef = source.stencilRef;\r\n\t\tthis.stencilFuncMask = source.stencilFuncMask;\r\n\t\tthis.stencilFail = source.stencilFail;\r\n\t\tthis.stencilZFail = source.stencilZFail;\r\n\t\tthis.stencilZPass = source.stencilZPass;\r\n\t\tthis.stencilWrite = source.stencilWrite;\r\n\r\n\t\tconst srcPlanes = source.clippingPlanes;\r\n\t\tlet dstPlanes = null;\r\n\r\n\t\tif ( srcPlanes !== null ) {\r\n\r\n\t\t\tconst n = srcPlanes.length;\r\n\t\t\tdstPlanes = new Array( n );\r\n\r\n\t\t\tfor ( let i = 0; i !== n; ++ i ) {\r\n\r\n\t\t\t\tdstPlanes[ i ] = srcPlanes[ i ].clone();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis.clippingPlanes = dstPlanes;\r\n\t\tthis.clipIntersection = source.clipIntersection;\r\n\t\tthis.clipShadows = source.clipShadows;\r\n\r\n\t\tthis.shadowSide = source.shadowSide;\r\n\r\n\t\tthis.colorWrite = source.colorWrite;\r\n\r\n\t\tthis.precision = source.precision;\r\n\r\n\t\tthis.polygonOffset = source.polygonOffset;\r\n\t\tthis.polygonOffsetFactor = source.polygonOffsetFactor;\r\n\t\tthis.polygonOffsetUnits = source.polygonOffsetUnits;\r\n\r\n\t\tthis.dithering = source.dithering;\r\n\r\n\t\tthis.alphaTest = source.alphaTest;\r\n\t\tthis.premultipliedAlpha = source.premultipliedAlpha;\r\n\r\n\t\tthis.visible = source.visible;\r\n\r\n\t\tthis.toneMapped = source.toneMapped;\r\n\r\n\t\tthis.userData = JSON.parse( JSON.stringify( source.userData ) );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tdispose: function () {\r\n\r\n\t\tthis.dispatchEvent( { type: 'dispose' } );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperty( Material.prototype, 'needsUpdate', {\r\n\r\n\tset: function ( value ) {\r\n\r\n\t\tif ( value === true ) this.version ++;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * opacity: ,\r\n * map: new THREE.Texture( ),\r\n *\r\n * lightMap: new THREE.Texture( ),\r\n * lightMapIntensity: \r\n *\r\n * aoMap: new THREE.Texture( ),\r\n * aoMapIntensity: \r\n *\r\n * specularMap: new THREE.Texture( ),\r\n *\r\n * alphaMap: new THREE.Texture( ),\r\n *\r\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\r\n * combine: THREE.Multiply,\r\n * reflectivity: ,\r\n * refractionRatio: ,\r\n *\r\n * depthTest: ,\r\n * depthWrite: ,\r\n *\r\n * wireframe: ,\r\n * wireframeLinewidth: ,\r\n *\r\n * skinning: ,\r\n * morphTargets: \r\n * }\r\n */\r\n\r\nfunction MeshBasicMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'MeshBasicMaterial';\r\n\r\n\tthis.color = new Color( 0xffffff ); // emissive\r\n\r\n\tthis.map = null;\r\n\r\n\tthis.lightMap = null;\r\n\tthis.lightMapIntensity = 1.0;\r\n\r\n\tthis.aoMap = null;\r\n\tthis.aoMapIntensity = 1.0;\r\n\r\n\tthis.specularMap = null;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.envMap = null;\r\n\tthis.combine = MultiplyOperation;\r\n\tthis.reflectivity = 1;\r\n\tthis.refractionRatio = 0.98;\r\n\r\n\tthis.wireframe = false;\r\n\tthis.wireframeLinewidth = 1;\r\n\tthis.wireframeLinecap = 'round';\r\n\tthis.wireframeLinejoin = 'round';\r\n\r\n\tthis.skinning = false;\r\n\tthis.morphTargets = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshBasicMaterial.prototype = Object.create( Material.prototype );\r\nMeshBasicMaterial.prototype.constructor = MeshBasicMaterial;\r\n\r\nMeshBasicMaterial.prototype.isMeshBasicMaterial = true;\r\n\r\nMeshBasicMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.color.copy( source.color );\r\n\r\n\tthis.map = source.map;\r\n\r\n\tthis.lightMap = source.lightMap;\r\n\tthis.lightMapIntensity = source.lightMapIntensity;\r\n\r\n\tthis.aoMap = source.aoMap;\r\n\tthis.aoMapIntensity = source.aoMapIntensity;\r\n\r\n\tthis.specularMap = source.specularMap;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.envMap = source.envMap;\r\n\tthis.combine = source.combine;\r\n\tthis.reflectivity = source.reflectivity;\r\n\tthis.refractionRatio = source.refractionRatio;\r\n\r\n\tthis.wireframe = source.wireframe;\r\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\r\n\tthis.wireframeLinecap = source.wireframeLinecap;\r\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\r\n\r\n\tthis.skinning = source.skinning;\r\n\tthis.morphTargets = source.morphTargets;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nconst _vector$3 = new Vector3();\r\nconst _vector2$1 = new Vector2();\r\n\r\nfunction BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tif ( Array.isArray( array ) ) {\r\n\r\n\t\tthrow new TypeError( 'THREE.BufferAttribute: array should be a Typed Array.' );\r\n\r\n\t}\r\n\r\n\tthis.name = '';\r\n\r\n\tthis.array = array;\r\n\tthis.itemSize = itemSize;\r\n\tthis.count = array !== undefined ? array.length / itemSize : 0;\r\n\tthis.normalized = normalized === true;\r\n\r\n\tthis.usage = StaticDrawUsage;\r\n\tthis.updateRange = { offset: 0, count: - 1 };\r\n\r\n\tthis.version = 0;\r\n\r\n}\r\n\r\nObject.defineProperty( BufferAttribute.prototype, 'needsUpdate', {\r\n\r\n\tset: function ( value ) {\r\n\r\n\t\tif ( value === true ) this.version ++;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( BufferAttribute.prototype, {\r\n\r\n\tisBufferAttribute: true,\r\n\r\n\tonUploadCallback: function () {},\r\n\r\n\tsetUsage: function ( value ) {\r\n\r\n\t\tthis.usage = value;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tthis.name = source.name;\r\n\t\tthis.array = new source.array.constructor( source.array );\r\n\t\tthis.itemSize = source.itemSize;\r\n\t\tthis.count = source.count;\r\n\t\tthis.normalized = source.normalized;\r\n\r\n\t\tthis.usage = source.usage;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopyAt: function ( index1, attribute, index2 ) {\r\n\r\n\t\tindex1 *= this.itemSize;\r\n\t\tindex2 *= attribute.itemSize;\r\n\r\n\t\tfor ( let i = 0, l = this.itemSize; i < l; i ++ ) {\r\n\r\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopyArray: function ( array ) {\r\n\r\n\t\tthis.array.set( array );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopyColorsArray: function ( colors ) {\r\n\r\n\t\tconst array = this.array;\r\n\t\tlet offset = 0;\r\n\r\n\t\tfor ( let i = 0, l = colors.length; i < l; i ++ ) {\r\n\r\n\t\t\tlet color = colors[ i ];\r\n\r\n\t\t\tif ( color === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyColorsArray(): color is undefined', i );\r\n\t\t\t\tcolor = new Color();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tarray[ offset ++ ] = color.r;\r\n\t\t\tarray[ offset ++ ] = color.g;\r\n\t\t\tarray[ offset ++ ] = color.b;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopyVector2sArray: function ( vectors ) {\r\n\r\n\t\tconst array = this.array;\r\n\t\tlet offset = 0;\r\n\r\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\r\n\r\n\t\t\tlet vector = vectors[ i ];\r\n\r\n\t\t\tif ( vector === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector2sArray(): vector is undefined', i );\r\n\t\t\t\tvector = new Vector2();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tarray[ offset ++ ] = vector.x;\r\n\t\t\tarray[ offset ++ ] = vector.y;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopyVector3sArray: function ( vectors ) {\r\n\r\n\t\tconst array = this.array;\r\n\t\tlet offset = 0;\r\n\r\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\r\n\r\n\t\t\tlet vector = vectors[ i ];\r\n\r\n\t\t\tif ( vector === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector3sArray(): vector is undefined', i );\r\n\t\t\t\tvector = new Vector3();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tarray[ offset ++ ] = vector.x;\r\n\t\t\tarray[ offset ++ ] = vector.y;\r\n\t\t\tarray[ offset ++ ] = vector.z;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopyVector4sArray: function ( vectors ) {\r\n\r\n\t\tconst array = this.array;\r\n\t\tlet offset = 0;\r\n\r\n\t\tfor ( let i = 0, l = vectors.length; i < l; i ++ ) {\r\n\r\n\t\t\tlet vector = vectors[ i ];\r\n\r\n\t\t\tif ( vector === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.BufferAttribute.copyVector4sArray(): vector is undefined', i );\r\n\t\t\t\tvector = new Vector4();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tarray[ offset ++ ] = vector.x;\r\n\t\t\tarray[ offset ++ ] = vector.y;\r\n\t\t\tarray[ offset ++ ] = vector.z;\r\n\t\t\tarray[ offset ++ ] = vector.w;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tapplyMatrix3: function ( m ) {\r\n\r\n\t\tif ( this.itemSize === 2 ) {\r\n\r\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\r\n\r\n\t\t\t\t_vector2$1.fromBufferAttribute( this, i );\r\n\t\t\t\t_vector2$1.applyMatrix3( m );\r\n\r\n\t\t\t\tthis.setXY( i, _vector2$1.x, _vector2$1.y );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( this.itemSize === 3 ) {\r\n\r\n\t\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\r\n\r\n\t\t\t\t_vector$3.fromBufferAttribute( this, i );\r\n\t\t\t\t_vector$3.applyMatrix3( m );\r\n\r\n\t\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tapplyMatrix4: function ( m ) {\r\n\r\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\r\n\r\n\t\t\t_vector$3.x = this.getX( i );\r\n\t\t\t_vector$3.y = this.getY( i );\r\n\t\t\t_vector$3.z = this.getZ( i );\r\n\r\n\t\t\t_vector$3.applyMatrix4( m );\r\n\r\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tapplyNormalMatrix: function ( m ) {\r\n\r\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\r\n\r\n\t\t\t_vector$3.x = this.getX( i );\r\n\t\t\t_vector$3.y = this.getY( i );\r\n\t\t\t_vector$3.z = this.getZ( i );\r\n\r\n\t\t\t_vector$3.applyNormalMatrix( m );\r\n\r\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttransformDirection: function ( m ) {\r\n\r\n\t\tfor ( let i = 0, l = this.count; i < l; i ++ ) {\r\n\r\n\t\t\t_vector$3.x = this.getX( i );\r\n\t\t\t_vector$3.y = this.getY( i );\r\n\t\t\t_vector$3.z = this.getZ( i );\r\n\r\n\t\t\t_vector$3.transformDirection( m );\r\n\r\n\t\t\tthis.setXYZ( i, _vector$3.x, _vector$3.y, _vector$3.z );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tset: function ( value, offset = 0 ) {\r\n\r\n\t\tthis.array.set( value, offset );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetX: function ( index ) {\r\n\r\n\t\treturn this.array[ index * this.itemSize ];\r\n\r\n\t},\r\n\r\n\tsetX: function ( index, x ) {\r\n\r\n\t\tthis.array[ index * this.itemSize ] = x;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetY: function ( index ) {\r\n\r\n\t\treturn this.array[ index * this.itemSize + 1 ];\r\n\r\n\t},\r\n\r\n\tsetY: function ( index, y ) {\r\n\r\n\t\tthis.array[ index * this.itemSize + 1 ] = y;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetZ: function ( index ) {\r\n\r\n\t\treturn this.array[ index * this.itemSize + 2 ];\r\n\r\n\t},\r\n\r\n\tsetZ: function ( index, z ) {\r\n\r\n\t\tthis.array[ index * this.itemSize + 2 ] = z;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetW: function ( index ) {\r\n\r\n\t\treturn this.array[ index * this.itemSize + 3 ];\r\n\r\n\t},\r\n\r\n\tsetW: function ( index, w ) {\r\n\r\n\t\tthis.array[ index * this.itemSize + 3 ] = w;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetXY: function ( index, x, y ) {\r\n\r\n\t\tindex *= this.itemSize;\r\n\r\n\t\tthis.array[ index + 0 ] = x;\r\n\t\tthis.array[ index + 1 ] = y;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetXYZ: function ( index, x, y, z ) {\r\n\r\n\t\tindex *= this.itemSize;\r\n\r\n\t\tthis.array[ index + 0 ] = x;\r\n\t\tthis.array[ index + 1 ] = y;\r\n\t\tthis.array[ index + 2 ] = z;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetXYZW: function ( index, x, y, z, w ) {\r\n\r\n\t\tindex *= this.itemSize;\r\n\r\n\t\tthis.array[ index + 0 ] = x;\r\n\t\tthis.array[ index + 1 ] = y;\r\n\t\tthis.array[ index + 2 ] = z;\r\n\t\tthis.array[ index + 3 ] = w;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tonUpload: function ( callback ) {\r\n\r\n\t\tthis.onUploadCallback = callback;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new this.constructor( this.array, this.itemSize ).copy( this );\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\treturn {\r\n\t\t\titemSize: this.itemSize,\r\n\t\t\ttype: this.array.constructor.name,\r\n\t\t\tarray: Array.prototype.slice.call( this.array ),\r\n\t\t\tnormalized: this.normalized\r\n\t\t};\r\n\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nfunction Int8BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Int8Array( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nInt8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nInt8BufferAttribute.prototype.constructor = Int8BufferAttribute;\r\n\r\n\r\nfunction Uint8BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Uint8Array( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nUint8BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nUint8BufferAttribute.prototype.constructor = Uint8BufferAttribute;\r\n\r\n\r\nfunction Uint8ClampedBufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Uint8ClampedArray( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nUint8ClampedBufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nUint8ClampedBufferAttribute.prototype.constructor = Uint8ClampedBufferAttribute;\r\n\r\n\r\nfunction Int16BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Int16Array( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nInt16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nInt16BufferAttribute.prototype.constructor = Int16BufferAttribute;\r\n\r\n\r\nfunction Uint16BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nUint16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nUint16BufferAttribute.prototype.constructor = Uint16BufferAttribute;\r\n\r\n\r\nfunction Int32BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Int32Array( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nInt32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nInt32BufferAttribute.prototype.constructor = Int32BufferAttribute;\r\n\r\n\r\nfunction Uint32BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Uint32Array( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nUint32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nUint32BufferAttribute.prototype.constructor = Uint32BufferAttribute;\r\n\r\nfunction Float16BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Uint16Array( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nFloat16BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nFloat16BufferAttribute.prototype.constructor = Float16BufferAttribute;\r\nFloat16BufferAttribute.prototype.isFloat16BufferAttribute = true;\r\n\r\nfunction Float32BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Float32Array( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nFloat32BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nFloat32BufferAttribute.prototype.constructor = Float32BufferAttribute;\r\n\r\n\r\nfunction Float64BufferAttribute( array, itemSize, normalized ) {\r\n\r\n\tBufferAttribute.call( this, new Float64Array( array ), itemSize, normalized );\r\n\r\n}\r\n\r\nFloat64BufferAttribute.prototype = Object.create( BufferAttribute.prototype );\r\nFloat64BufferAttribute.prototype.constructor = Float64BufferAttribute;\r\n\r\nclass DirectGeometry {\r\n\r\n\tconstructor() {\r\n\r\n\t\tthis.vertices = [];\r\n\t\tthis.normals = [];\r\n\t\tthis.colors = [];\r\n\t\tthis.uvs = [];\r\n\t\tthis.uvs2 = [];\r\n\r\n\t\tthis.groups = [];\r\n\r\n\t\tthis.morphTargets = {};\r\n\r\n\t\tthis.skinWeights = [];\r\n\t\tthis.skinIndices = [];\r\n\r\n\t\t// this.lineDistances = [];\r\n\r\n\t\tthis.boundingBox = null;\r\n\t\tthis.boundingSphere = null;\r\n\r\n\t\t// update flags\r\n\r\n\t\tthis.verticesNeedUpdate = false;\r\n\t\tthis.normalsNeedUpdate = false;\r\n\t\tthis.colorsNeedUpdate = false;\r\n\t\tthis.uvsNeedUpdate = false;\r\n\t\tthis.groupsNeedUpdate = false;\r\n\r\n\t}\r\n\r\n\tcomputeGroups( geometry ) {\r\n\r\n\t\tconst groups = [];\r\n\r\n\t\tlet group, i;\r\n\t\tlet materialIndex = undefined;\r\n\r\n\t\tconst faces = geometry.faces;\r\n\r\n\t\tfor ( i = 0; i < faces.length; i ++ ) {\r\n\r\n\t\t\tconst face = faces[ i ];\r\n\r\n\t\t\t// materials\r\n\r\n\t\t\tif ( face.materialIndex !== materialIndex ) {\r\n\r\n\t\t\t\tmaterialIndex = face.materialIndex;\r\n\r\n\t\t\t\tif ( group !== undefined ) {\r\n\r\n\t\t\t\t\tgroup.count = ( i * 3 ) - group.start;\r\n\t\t\t\t\tgroups.push( group );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgroup = {\r\n\t\t\t\t\tstart: i * 3,\r\n\t\t\t\t\tmaterialIndex: materialIndex\r\n\t\t\t\t};\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( group !== undefined ) {\r\n\r\n\t\t\tgroup.count = ( i * 3 ) - group.start;\r\n\t\t\tgroups.push( group );\r\n\r\n\t\t}\r\n\r\n\t\tthis.groups = groups;\r\n\r\n\t}\r\n\r\n\tfromGeometry( geometry ) {\r\n\r\n\t\tconst faces = geometry.faces;\r\n\t\tconst vertices = geometry.vertices;\r\n\t\tconst faceVertexUvs = geometry.faceVertexUvs;\r\n\r\n\t\tconst hasFaceVertexUv = faceVertexUvs[ 0 ] && faceVertexUvs[ 0 ].length > 0;\r\n\t\tconst hasFaceVertexUv2 = faceVertexUvs[ 1 ] && faceVertexUvs[ 1 ].length > 0;\r\n\r\n\t\t// morphs\r\n\r\n\t\tconst morphTargets = geometry.morphTargets;\r\n\t\tconst morphTargetsLength = morphTargets.length;\r\n\r\n\t\tlet morphTargetsPosition;\r\n\r\n\t\tif ( morphTargetsLength > 0 ) {\r\n\r\n\t\t\tmorphTargetsPosition = [];\r\n\r\n\t\t\tfor ( let i = 0; i < morphTargetsLength; i ++ ) {\r\n\r\n\t\t\t\tmorphTargetsPosition[ i ] = {\r\n\t\t\t\t\tname: morphTargets[ i ].name,\r\n\t\t\t\t \tdata: []\r\n\t\t\t\t};\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.morphTargets.position = morphTargetsPosition;\r\n\r\n\t\t}\r\n\r\n\t\tconst morphNormals = geometry.morphNormals;\r\n\t\tconst morphNormalsLength = morphNormals.length;\r\n\r\n\t\tlet morphTargetsNormal;\r\n\r\n\t\tif ( morphNormalsLength > 0 ) {\r\n\r\n\t\t\tmorphTargetsNormal = [];\r\n\r\n\t\t\tfor ( let i = 0; i < morphNormalsLength; i ++ ) {\r\n\r\n\t\t\t\tmorphTargetsNormal[ i ] = {\r\n\t\t\t\t\tname: morphNormals[ i ].name,\r\n\t\t\t\t \tdata: []\r\n\t\t\t\t};\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.morphTargets.normal = morphTargetsNormal;\r\n\r\n\t\t}\r\n\r\n\t\t// skins\r\n\r\n\t\tconst skinIndices = geometry.skinIndices;\r\n\t\tconst skinWeights = geometry.skinWeights;\r\n\r\n\t\tconst hasSkinIndices = skinIndices.length === vertices.length;\r\n\t\tconst hasSkinWeights = skinWeights.length === vertices.length;\r\n\r\n\t\t//\r\n\r\n\t\tif ( vertices.length > 0 && faces.length === 0 ) {\r\n\r\n\t\t\tconsole.error( 'THREE.DirectGeometry: Faceless geometries are not supported.' );\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0; i < faces.length; i ++ ) {\r\n\r\n\t\t\tconst face = faces[ i ];\r\n\r\n\t\t\tthis.vertices.push( vertices[ face.a ], vertices[ face.b ], vertices[ face.c ] );\r\n\r\n\t\t\tconst vertexNormals = face.vertexNormals;\r\n\r\n\t\t\tif ( vertexNormals.length === 3 ) {\r\n\r\n\t\t\t\tthis.normals.push( vertexNormals[ 0 ], vertexNormals[ 1 ], vertexNormals[ 2 ] );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconst normal = face.normal;\r\n\r\n\t\t\t\tthis.normals.push( normal, normal, normal );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst vertexColors = face.vertexColors;\r\n\r\n\t\t\tif ( vertexColors.length === 3 ) {\r\n\r\n\t\t\t\tthis.colors.push( vertexColors[ 0 ], vertexColors[ 1 ], vertexColors[ 2 ] );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconst color = face.color;\r\n\r\n\t\t\t\tthis.colors.push( color, color, color );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasFaceVertexUv === true ) {\r\n\r\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 0 ][ i ];\r\n\r\n\t\t\t\tif ( vertexUvs !== undefined ) {\r\n\r\n\t\t\t\t\tthis.uvs.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv ', i );\r\n\r\n\t\t\t\t\tthis.uvs.push( new Vector2(), new Vector2(), new Vector2() );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasFaceVertexUv2 === true ) {\r\n\r\n\t\t\t\tconst vertexUvs = faceVertexUvs[ 1 ][ i ];\r\n\r\n\t\t\t\tif ( vertexUvs !== undefined ) {\r\n\r\n\t\t\t\t\tthis.uvs2.push( vertexUvs[ 0 ], vertexUvs[ 1 ], vertexUvs[ 2 ] );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.DirectGeometry.fromGeometry(): Undefined vertexUv2 ', i );\r\n\r\n\t\t\t\t\tthis.uvs2.push( new Vector2(), new Vector2(), new Vector2() );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// morphs\r\n\r\n\t\t\tfor ( let j = 0; j < morphTargetsLength; j ++ ) {\r\n\r\n\t\t\t\tconst morphTarget = morphTargets[ j ].vertices;\r\n\r\n\t\t\t\tmorphTargetsPosition[ j ].data.push( morphTarget[ face.a ], morphTarget[ face.b ], morphTarget[ face.c ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfor ( let j = 0; j < morphNormalsLength; j ++ ) {\r\n\r\n\t\t\t\tconst morphNormal = morphNormals[ j ].vertexNormals[ i ];\r\n\r\n\t\t\t\tmorphTargetsNormal[ j ].data.push( morphNormal.a, morphNormal.b, morphNormal.c );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// skins\r\n\r\n\t\t\tif ( hasSkinIndices ) {\r\n\r\n\t\t\t\tthis.skinIndices.push( skinIndices[ face.a ], skinIndices[ face.b ], skinIndices[ face.c ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasSkinWeights ) {\r\n\r\n\t\t\t\tthis.skinWeights.push( skinWeights[ face.a ], skinWeights[ face.b ], skinWeights[ face.c ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis.computeGroups( geometry );\r\n\r\n\t\tthis.verticesNeedUpdate = geometry.verticesNeedUpdate;\r\n\t\tthis.normalsNeedUpdate = geometry.normalsNeedUpdate;\r\n\t\tthis.colorsNeedUpdate = geometry.colorsNeedUpdate;\r\n\t\tthis.uvsNeedUpdate = geometry.uvsNeedUpdate;\r\n\t\tthis.groupsNeedUpdate = geometry.groupsNeedUpdate;\r\n\r\n\t\tif ( geometry.boundingSphere !== null ) {\r\n\r\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.boundingBox !== null ) {\r\n\r\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction arrayMax( array ) {\r\n\r\n\tif ( array.length === 0 ) return - Infinity;\r\n\r\n\tlet max = array[ 0 ];\r\n\r\n\tfor ( let i = 1, l = array.length; i < l; ++ i ) {\r\n\r\n\t\tif ( array[ i ] > max ) max = array[ i ];\r\n\r\n\t}\r\n\r\n\treturn max;\r\n\r\n}\r\n\r\nconst TYPED_ARRAYS = {\r\n\tInt8Array: Int8Array,\r\n\tUint8Array: Uint8Array,\r\n\t// Workaround for IE11 pre KB2929437. See #11440\r\n\tUint8ClampedArray: typeof Uint8ClampedArray !== 'undefined' ? Uint8ClampedArray : Uint8Array,\r\n\tInt16Array: Int16Array,\r\n\tUint16Array: Uint16Array,\r\n\tInt32Array: Int32Array,\r\n\tUint32Array: Uint32Array,\r\n\tFloat32Array: Float32Array,\r\n\tFloat64Array: Float64Array\r\n};\r\n\r\nfunction getTypedArray( type, buffer ) {\r\n\r\n\treturn new TYPED_ARRAYS[ type ]( buffer );\r\n\r\n}\r\n\r\nlet _bufferGeometryId = 1; // BufferGeometry uses odd numbers as Id\r\n\r\nconst _m1$2 = new Matrix4();\r\nconst _obj = new Object3D();\r\nconst _offset = new Vector3();\r\nconst _box$2 = new Box3();\r\nconst _boxMorphTargets = new Box3();\r\nconst _vector$4 = new Vector3();\r\n\r\nfunction BufferGeometry() {\r\n\r\n\tObject.defineProperty( this, 'id', { value: _bufferGeometryId += 2 } );\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n\tthis.name = '';\r\n\tthis.type = 'BufferGeometry';\r\n\r\n\tthis.index = null;\r\n\tthis.attributes = {};\r\n\r\n\tthis.morphAttributes = {};\r\n\tthis.morphTargetsRelative = false;\r\n\r\n\tthis.groups = [];\r\n\r\n\tthis.boundingBox = null;\r\n\tthis.boundingSphere = null;\r\n\r\n\tthis.drawRange = { start: 0, count: Infinity };\r\n\r\n\tthis.userData = {};\r\n\r\n}\r\n\r\nBufferGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\r\n\r\n\tconstructor: BufferGeometry,\r\n\r\n\tisBufferGeometry: true,\r\n\r\n\tgetIndex: function () {\r\n\r\n\t\treturn this.index;\r\n\r\n\t},\r\n\r\n\tsetIndex: function ( index ) {\r\n\r\n\t\tif ( Array.isArray( index ) ) {\r\n\r\n\t\t\tthis.index = new ( arrayMax( index ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( index, 1 );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.index = index;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetAttribute: function ( name ) {\r\n\r\n\t\treturn this.attributes[ name ];\r\n\r\n\t},\r\n\r\n\tsetAttribute: function ( name, attribute ) {\r\n\r\n\t\tthis.attributes[ name ] = attribute;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tdeleteAttribute: function ( name ) {\r\n\r\n\t\tdelete this.attributes[ name ];\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\thasAttribute: function ( name ) {\r\n\r\n\t\treturn this.attributes[ name ] !== undefined;\r\n\r\n\t},\r\n\r\n\taddGroup: function ( start, count, materialIndex = 0 ) {\r\n\r\n\t\tthis.groups.push( {\r\n\r\n\t\t\tstart: start,\r\n\t\t\tcount: count,\r\n\t\t\tmaterialIndex: materialIndex\r\n\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\tclearGroups: function () {\r\n\r\n\t\tthis.groups = [];\r\n\r\n\t},\r\n\r\n\tsetDrawRange: function ( start, count ) {\r\n\r\n\t\tthis.drawRange.start = start;\r\n\t\tthis.drawRange.count = count;\r\n\r\n\t},\r\n\r\n\tapplyMatrix4: function ( matrix ) {\r\n\r\n\t\tconst position = this.attributes.position;\r\n\r\n\t\tif ( position !== undefined ) {\r\n\r\n\t\t\tposition.applyMatrix4( matrix );\r\n\r\n\t\t\tposition.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t\tconst normal = this.attributes.normal;\r\n\r\n\t\tif ( normal !== undefined ) {\r\n\r\n\t\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\r\n\r\n\t\t\tnormal.applyNormalMatrix( normalMatrix );\r\n\r\n\t\t\tnormal.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t\tconst tangent = this.attributes.tangent;\r\n\r\n\t\tif ( tangent !== undefined ) {\r\n\r\n\t\t\ttangent.transformDirection( matrix );\r\n\r\n\t\t\ttangent.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.boundingBox !== null ) {\r\n\r\n\t\t\tthis.computeBoundingBox();\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.boundingSphere !== null ) {\r\n\r\n\t\t\tthis.computeBoundingSphere();\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\trotateX: function ( angle ) {\r\n\r\n\t\t// rotate geometry around world x-axis\r\n\r\n\t\t_m1$2.makeRotationX( angle );\r\n\r\n\t\tthis.applyMatrix4( _m1$2 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\trotateY: function ( angle ) {\r\n\r\n\t\t// rotate geometry around world y-axis\r\n\r\n\t\t_m1$2.makeRotationY( angle );\r\n\r\n\t\tthis.applyMatrix4( _m1$2 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\trotateZ: function ( angle ) {\r\n\r\n\t\t// rotate geometry around world z-axis\r\n\r\n\t\t_m1$2.makeRotationZ( angle );\r\n\r\n\t\tthis.applyMatrix4( _m1$2 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttranslate: function ( x, y, z ) {\r\n\r\n\t\t// translate geometry\r\n\r\n\t\t_m1$2.makeTranslation( x, y, z );\r\n\r\n\t\tthis.applyMatrix4( _m1$2 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tscale: function ( x, y, z ) {\r\n\r\n\t\t// scale geometry\r\n\r\n\t\t_m1$2.makeScale( x, y, z );\r\n\r\n\t\tthis.applyMatrix4( _m1$2 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tlookAt: function ( vector ) {\r\n\r\n\t\t_obj.lookAt( vector );\r\n\r\n\t\t_obj.updateMatrix();\r\n\r\n\t\tthis.applyMatrix4( _obj.matrix );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcenter: function () {\r\n\r\n\t\tthis.computeBoundingBox();\r\n\r\n\t\tthis.boundingBox.getCenter( _offset ).negate();\r\n\r\n\t\tthis.translate( _offset.x, _offset.y, _offset.z );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetFromObject: function ( object ) {\r\n\r\n\t\t// console.log( 'THREE.BufferGeometry.setFromObject(). Converting', object, this );\r\n\r\n\t\tconst geometry = object.geometry;\r\n\r\n\t\tif ( object.isPoints || object.isLine ) {\r\n\r\n\t\t\tconst positions = new Float32BufferAttribute( geometry.vertices.length * 3, 3 );\r\n\t\t\tconst colors = new Float32BufferAttribute( geometry.colors.length * 3, 3 );\r\n\r\n\t\t\tthis.setAttribute( 'position', positions.copyVector3sArray( geometry.vertices ) );\r\n\t\t\tthis.setAttribute( 'color', colors.copyColorsArray( geometry.colors ) );\r\n\r\n\t\t\tif ( geometry.lineDistances && geometry.lineDistances.length === geometry.vertices.length ) {\r\n\r\n\t\t\t\tconst lineDistances = new Float32BufferAttribute( geometry.lineDistances.length, 1 );\r\n\r\n\t\t\t\tthis.setAttribute( 'lineDistance', lineDistances.copyArray( geometry.lineDistances ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( geometry.boundingSphere !== null ) {\r\n\r\n\t\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( geometry.boundingBox !== null ) {\r\n\r\n\t\t\t\tthis.boundingBox = geometry.boundingBox.clone();\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( object.isMesh ) {\r\n\r\n\t\t\tif ( geometry && geometry.isGeometry ) {\r\n\r\n\t\t\t\tthis.fromGeometry( geometry );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetFromPoints: function ( points ) {\r\n\r\n\t\tconst position = [];\r\n\r\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst point = points[ i ];\r\n\t\t\tposition.push( point.x, point.y, point.z || 0 );\r\n\r\n\t\t}\r\n\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( position, 3 ) );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tupdateFromObject: function ( object ) {\r\n\r\n\t\tlet geometry = object.geometry;\r\n\r\n\t\tif ( object.isMesh ) {\r\n\r\n\t\t\tlet direct = geometry.__directGeometry;\r\n\r\n\t\t\tif ( geometry.elementsNeedUpdate === true ) {\r\n\r\n\t\t\t\tdirect = undefined;\r\n\t\t\t\tgeometry.elementsNeedUpdate = false;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( direct === undefined ) {\r\n\r\n\t\t\t\treturn this.fromGeometry( geometry );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tdirect.verticesNeedUpdate = geometry.verticesNeedUpdate;\r\n\t\t\tdirect.normalsNeedUpdate = geometry.normalsNeedUpdate;\r\n\t\t\tdirect.colorsNeedUpdate = geometry.colorsNeedUpdate;\r\n\t\t\tdirect.uvsNeedUpdate = geometry.uvsNeedUpdate;\r\n\t\t\tdirect.groupsNeedUpdate = geometry.groupsNeedUpdate;\r\n\r\n\t\t\tgeometry.verticesNeedUpdate = false;\r\n\t\t\tgeometry.normalsNeedUpdate = false;\r\n\t\t\tgeometry.colorsNeedUpdate = false;\r\n\t\t\tgeometry.uvsNeedUpdate = false;\r\n\t\t\tgeometry.groupsNeedUpdate = false;\r\n\r\n\t\t\tgeometry = direct;\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.verticesNeedUpdate === true ) {\r\n\r\n\t\t\tconst attribute = this.attributes.position;\r\n\r\n\t\t\tif ( attribute !== undefined ) {\r\n\r\n\t\t\t\tattribute.copyVector3sArray( geometry.vertices );\r\n\t\t\t\tattribute.needsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tgeometry.verticesNeedUpdate = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.normalsNeedUpdate === true ) {\r\n\r\n\t\t\tconst attribute = this.attributes.normal;\r\n\r\n\t\t\tif ( attribute !== undefined ) {\r\n\r\n\t\t\t\tattribute.copyVector3sArray( geometry.normals );\r\n\t\t\t\tattribute.needsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tgeometry.normalsNeedUpdate = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.colorsNeedUpdate === true ) {\r\n\r\n\t\t\tconst attribute = this.attributes.color;\r\n\r\n\t\t\tif ( attribute !== undefined ) {\r\n\r\n\t\t\t\tattribute.copyColorsArray( geometry.colors );\r\n\t\t\t\tattribute.needsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tgeometry.colorsNeedUpdate = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.uvsNeedUpdate ) {\r\n\r\n\t\t\tconst attribute = this.attributes.uv;\r\n\r\n\t\t\tif ( attribute !== undefined ) {\r\n\r\n\t\t\t\tattribute.copyVector2sArray( geometry.uvs );\r\n\t\t\t\tattribute.needsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tgeometry.uvsNeedUpdate = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.lineDistancesNeedUpdate ) {\r\n\r\n\t\t\tconst attribute = this.attributes.lineDistance;\r\n\r\n\t\t\tif ( attribute !== undefined ) {\r\n\r\n\t\t\t\tattribute.copyArray( geometry.lineDistances );\r\n\t\t\t\tattribute.needsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tgeometry.lineDistancesNeedUpdate = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.groupsNeedUpdate ) {\r\n\r\n\t\t\tgeometry.computeGroups( object.geometry );\r\n\t\t\tthis.groups = geometry.groups;\r\n\r\n\t\t\tgeometry.groupsNeedUpdate = false;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tfromGeometry: function ( geometry ) {\r\n\r\n\t\tgeometry.__directGeometry = new DirectGeometry().fromGeometry( geometry );\r\n\r\n\t\treturn this.fromDirectGeometry( geometry.__directGeometry );\r\n\r\n\t},\r\n\r\n\tfromDirectGeometry: function ( geometry ) {\r\n\r\n\t\tconst positions = new Float32Array( geometry.vertices.length * 3 );\r\n\t\tthis.setAttribute( 'position', new BufferAttribute( positions, 3 ).copyVector3sArray( geometry.vertices ) );\r\n\r\n\t\tif ( geometry.normals.length > 0 ) {\r\n\r\n\t\t\tconst normals = new Float32Array( geometry.normals.length * 3 );\r\n\t\t\tthis.setAttribute( 'normal', new BufferAttribute( normals, 3 ).copyVector3sArray( geometry.normals ) );\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.colors.length > 0 ) {\r\n\r\n\t\t\tconst colors = new Float32Array( geometry.colors.length * 3 );\r\n\t\t\tthis.setAttribute( 'color', new BufferAttribute( colors, 3 ).copyColorsArray( geometry.colors ) );\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.uvs.length > 0 ) {\r\n\r\n\t\t\tconst uvs = new Float32Array( geometry.uvs.length * 2 );\r\n\t\t\tthis.setAttribute( 'uv', new BufferAttribute( uvs, 2 ).copyVector2sArray( geometry.uvs ) );\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.uvs2.length > 0 ) {\r\n\r\n\t\t\tconst uvs2 = new Float32Array( geometry.uvs2.length * 2 );\r\n\t\t\tthis.setAttribute( 'uv2', new BufferAttribute( uvs2, 2 ).copyVector2sArray( geometry.uvs2 ) );\r\n\r\n\t\t}\r\n\r\n\t\t// groups\r\n\r\n\t\tthis.groups = geometry.groups;\r\n\r\n\t\t// morphs\r\n\r\n\t\tfor ( const name in geometry.morphTargets ) {\r\n\r\n\t\t\tconst array = [];\r\n\t\t\tconst morphTargets = geometry.morphTargets[ name ];\r\n\r\n\t\t\tfor ( let i = 0, l = morphTargets.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst morphTarget = morphTargets[ i ];\r\n\r\n\t\t\t\tconst attribute = new Float32BufferAttribute( morphTarget.data.length * 3, 3 );\r\n\t\t\t\tattribute.name = morphTarget.name;\r\n\r\n\t\t\t\tarray.push( attribute.copyVector3sArray( morphTarget.data ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.morphAttributes[ name ] = array;\r\n\r\n\t\t}\r\n\r\n\t\t// skinning\r\n\r\n\t\tif ( geometry.skinIndices.length > 0 ) {\r\n\r\n\t\t\tconst skinIndices = new Float32BufferAttribute( geometry.skinIndices.length * 4, 4 );\r\n\t\t\tthis.setAttribute( 'skinIndex', skinIndices.copyVector4sArray( geometry.skinIndices ) );\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.skinWeights.length > 0 ) {\r\n\r\n\t\t\tconst skinWeights = new Float32BufferAttribute( geometry.skinWeights.length * 4, 4 );\r\n\t\t\tthis.setAttribute( 'skinWeight', skinWeights.copyVector4sArray( geometry.skinWeights ) );\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tif ( geometry.boundingSphere !== null ) {\r\n\r\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.boundingBox !== null ) {\r\n\r\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcomputeBoundingBox: function () {\r\n\r\n\t\tif ( this.boundingBox === null ) {\r\n\r\n\t\t\tthis.boundingBox = new Box3();\r\n\r\n\t\t}\r\n\r\n\t\tconst position = this.attributes.position;\r\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\r\n\r\n\t\tif ( position && position.isGLBufferAttribute ) {\r\n\r\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\r\n\r\n\t\t\tthis.boundingBox.set(\r\n\t\t\t\tnew Vector3( - Infinity, - Infinity, - Infinity ),\r\n\t\t\t\tnew Vector3( + Infinity, + Infinity, + Infinity )\r\n\t\t\t);\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( position !== undefined ) {\r\n\r\n\t\t\tthis.boundingBox.setFromBufferAttribute( position );\r\n\r\n\t\t\t// process morph attributes if present\r\n\r\n\t\t\tif ( morphAttributesPosition ) {\r\n\r\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\r\n\t\t\t\t\t_box$2.setFromBufferAttribute( morphAttribute );\r\n\r\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\r\n\r\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.min, _box$2.min );\r\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\r\n\r\n\t\t\t\t\t\t_vector$4.addVectors( this.boundingBox.max, _box$2.max );\r\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _vector$4 );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.min );\r\n\t\t\t\t\t\tthis.boundingBox.expandByPoint( _box$2.max );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.boundingBox.makeEmpty();\r\n\r\n\t\t}\r\n\r\n\t\tif ( isNaN( this.boundingBox.min.x ) || isNaN( this.boundingBox.min.y ) || isNaN( this.boundingBox.min.z ) ) {\r\n\r\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingBox(): Computed min/max have NaN values. The \"position\" attribute is likely to have NaN values.', this );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tcomputeBoundingSphere: function () {\r\n\r\n\t\tif ( this.boundingSphere === null ) {\r\n\r\n\t\t\tthis.boundingSphere = new Sphere();\r\n\r\n\t\t}\r\n\r\n\t\tconst position = this.attributes.position;\r\n\t\tconst morphAttributesPosition = this.morphAttributes.position;\r\n\r\n\t\tif ( position && position.isGLBufferAttribute ) {\r\n\r\n\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): GLBufferAttribute requires a manual bounding sphere. Alternatively set \"mesh.frustumCulled\" to \"false\".', this );\r\n\r\n\t\t\tthis.boundingSphere.set( new Vector3(), Infinity );\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( position ) {\r\n\r\n\t\t\t// first, find the center of the bounding sphere\r\n\r\n\t\t\tconst center = this.boundingSphere.center;\r\n\r\n\t\t\t_box$2.setFromBufferAttribute( position );\r\n\r\n\t\t\t// process morph attributes if present\r\n\r\n\t\t\tif ( morphAttributesPosition ) {\r\n\r\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\r\n\t\t\t\t\t_boxMorphTargets.setFromBufferAttribute( morphAttribute );\r\n\r\n\t\t\t\t\tif ( this.morphTargetsRelative ) {\r\n\r\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.min, _boxMorphTargets.min );\r\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\r\n\r\n\t\t\t\t\t\t_vector$4.addVectors( _box$2.max, _boxMorphTargets.max );\r\n\t\t\t\t\t\t_box$2.expandByPoint( _vector$4 );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.min );\r\n\t\t\t\t\t\t_box$2.expandByPoint( _boxMorphTargets.max );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_box$2.getCenter( center );\r\n\r\n\t\t\t// second, try to find a boundingSphere with a radius smaller than the\r\n\t\t\t// boundingSphere of the boundingBox: sqrt(3) smaller in the best case\r\n\r\n\t\t\tlet maxRadiusSq = 0;\r\n\r\n\t\t\tfor ( let i = 0, il = position.count; i < il; i ++ ) {\r\n\r\n\t\t\t\t_vector$4.fromBufferAttribute( position, i );\r\n\r\n\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// process morph attributes if present\r\n\r\n\t\t\tif ( morphAttributesPosition ) {\r\n\r\n\t\t\t\tfor ( let i = 0, il = morphAttributesPosition.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst morphAttribute = morphAttributesPosition[ i ];\r\n\t\t\t\t\tconst morphTargetsRelative = this.morphTargetsRelative;\r\n\r\n\t\t\t\t\tfor ( let j = 0, jl = morphAttribute.count; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\t\t_vector$4.fromBufferAttribute( morphAttribute, j );\r\n\r\n\t\t\t\t\t\tif ( morphTargetsRelative ) {\r\n\r\n\t\t\t\t\t\t\t_offset.fromBufferAttribute( position, j );\r\n\t\t\t\t\t\t\t_vector$4.add( _offset );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( _vector$4 ) );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\r\n\r\n\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.BufferGeometry.computeBoundingSphere(): Computed radius is NaN. The \"position\" attribute is likely to have NaN values.', this );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tcomputeFaceNormals: function () {\r\n\r\n\t\t// backwards compatibility\r\n\r\n\t},\r\n\r\n\tcomputeVertexNormals: function () {\r\n\r\n\t\tconst index = this.index;\r\n\t\tconst positionAttribute = this.getAttribute( 'position' );\r\n\r\n\t\tif ( positionAttribute !== undefined ) {\r\n\r\n\t\t\tlet normalAttribute = this.getAttribute( 'normal' );\r\n\r\n\t\t\tif ( normalAttribute === undefined ) {\r\n\r\n\t\t\t\tnormalAttribute = new BufferAttribute( new Float32Array( positionAttribute.count * 3 ), 3 );\r\n\t\t\t\tthis.setAttribute( 'normal', normalAttribute );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// reset existing normals to zero\r\n\r\n\t\t\t\tfor ( let i = 0, il = normalAttribute.count; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tnormalAttribute.setXYZ( i, 0, 0, 0 );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst pA = new Vector3(), pB = new Vector3(), pC = new Vector3();\r\n\t\t\tconst nA = new Vector3(), nB = new Vector3(), nC = new Vector3();\r\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\r\n\r\n\t\t\t// indexed elements\r\n\r\n\t\t\tif ( index ) {\r\n\r\n\t\t\t\tfor ( let i = 0, il = index.count; i < il; i += 3 ) {\r\n\r\n\t\t\t\t\tconst vA = index.getX( i + 0 );\r\n\t\t\t\t\tconst vB = index.getX( i + 1 );\r\n\t\t\t\t\tconst vC = index.getX( i + 2 );\r\n\r\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, vA );\r\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, vB );\r\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, vC );\r\n\r\n\t\t\t\t\tcb.subVectors( pC, pB );\r\n\t\t\t\t\tab.subVectors( pA, pB );\r\n\t\t\t\t\tcb.cross( ab );\r\n\r\n\t\t\t\t\tnA.fromBufferAttribute( normalAttribute, vA );\r\n\t\t\t\t\tnB.fromBufferAttribute( normalAttribute, vB );\r\n\t\t\t\t\tnC.fromBufferAttribute( normalAttribute, vC );\r\n\r\n\t\t\t\t\tnA.add( cb );\r\n\t\t\t\t\tnB.add( cb );\r\n\t\t\t\t\tnC.add( cb );\r\n\r\n\t\t\t\t\tnormalAttribute.setXYZ( vA, nA.x, nA.y, nA.z );\r\n\t\t\t\t\tnormalAttribute.setXYZ( vB, nB.x, nB.y, nB.z );\r\n\t\t\t\t\tnormalAttribute.setXYZ( vC, nC.x, nC.y, nC.z );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// non-indexed elements (unconnected triangle soup)\r\n\r\n\t\t\t\tfor ( let i = 0, il = positionAttribute.count; i < il; i += 3 ) {\r\n\r\n\t\t\t\t\tpA.fromBufferAttribute( positionAttribute, i + 0 );\r\n\t\t\t\t\tpB.fromBufferAttribute( positionAttribute, i + 1 );\r\n\t\t\t\t\tpC.fromBufferAttribute( positionAttribute, i + 2 );\r\n\r\n\t\t\t\t\tcb.subVectors( pC, pB );\r\n\t\t\t\t\tab.subVectors( pA, pB );\r\n\t\t\t\t\tcb.cross( ab );\r\n\r\n\t\t\t\t\tnormalAttribute.setXYZ( i + 0, cb.x, cb.y, cb.z );\r\n\t\t\t\t\tnormalAttribute.setXYZ( i + 1, cb.x, cb.y, cb.z );\r\n\t\t\t\t\tnormalAttribute.setXYZ( i + 2, cb.x, cb.y, cb.z );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.normalizeNormals();\r\n\r\n\t\t\tnormalAttribute.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tmerge: function ( geometry, offset ) {\r\n\r\n\t\tif ( ! ( geometry && geometry.isBufferGeometry ) ) {\r\n\r\n\t\t\tconsole.error( 'THREE.BufferGeometry.merge(): geometry not an instance of THREE.BufferGeometry.', geometry );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( offset === undefined ) {\r\n\r\n\t\t\toffset = 0;\r\n\r\n\t\t\tconsole.warn(\r\n\t\t\t\t'THREE.BufferGeometry.merge(): Overwriting original geometry, starting at offset=0. '\r\n\t\t\t\t+ 'Use BufferGeometryUtils.mergeBufferGeometries() for lossless merge.'\r\n\t\t\t);\r\n\r\n\t\t}\r\n\r\n\t\tconst attributes = this.attributes;\r\n\r\n\t\tfor ( const key in attributes ) {\r\n\r\n\t\t\tif ( geometry.attributes[ key ] === undefined ) continue;\r\n\r\n\t\t\tconst attribute1 = attributes[ key ];\r\n\t\t\tconst attributeArray1 = attribute1.array;\r\n\r\n\t\t\tconst attribute2 = geometry.attributes[ key ];\r\n\t\t\tconst attributeArray2 = attribute2.array;\r\n\r\n\t\t\tconst attributeOffset = attribute2.itemSize * offset;\r\n\t\t\tconst length = Math.min( attributeArray2.length, attributeArray1.length - attributeOffset );\r\n\r\n\t\t\tfor ( let i = 0, j = attributeOffset; i < length; i ++, j ++ ) {\r\n\r\n\t\t\t\tattributeArray1[ j ] = attributeArray2[ i ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tnormalizeNormals: function () {\r\n\r\n\t\tconst normals = this.attributes.normal;\r\n\r\n\t\tfor ( let i = 0, il = normals.count; i < il; i ++ ) {\r\n\r\n\t\t\t_vector$4.fromBufferAttribute( normals, i );\r\n\r\n\t\t\t_vector$4.normalize();\r\n\r\n\t\t\tnormals.setXYZ( i, _vector$4.x, _vector$4.y, _vector$4.z );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\ttoNonIndexed: function () {\r\n\r\n\t\tfunction convertBufferAttribute( attribute, indices ) {\r\n\r\n\t\t\tconst array = attribute.array;\r\n\t\t\tconst itemSize = attribute.itemSize;\r\n\t\t\tconst normalized = attribute.normalized;\r\n\r\n\t\t\tconst array2 = new array.constructor( indices.length * itemSize );\r\n\r\n\t\t\tlet index = 0, index2 = 0;\r\n\r\n\t\t\tfor ( let i = 0, l = indices.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tindex = indices[ i ] * itemSize;\r\n\r\n\t\t\t\tfor ( let j = 0; j < itemSize; j ++ ) {\r\n\r\n\t\t\t\t\tarray2[ index2 ++ ] = array[ index ++ ];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn new BufferAttribute( array2, itemSize, normalized );\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tif ( this.index === null ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.BufferGeometry.toNonIndexed(): Geometry is already non-indexed.' );\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\tconst geometry2 = new BufferGeometry();\r\n\r\n\t\tconst indices = this.index.array;\r\n\t\tconst attributes = this.attributes;\r\n\r\n\t\t// attributes\r\n\r\n\t\tfor ( const name in attributes ) {\r\n\r\n\t\t\tconst attribute = attributes[ name ];\r\n\r\n\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\r\n\r\n\t\t\tgeometry2.setAttribute( name, newAttribute );\r\n\r\n\t\t}\r\n\r\n\t\t// morph attributes\r\n\r\n\t\tconst morphAttributes = this.morphAttributes;\r\n\r\n\t\tfor ( const name in morphAttributes ) {\r\n\r\n\t\t\tconst morphArray = [];\r\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\r\n\r\n\t\t\tfor ( let i = 0, il = morphAttribute.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tconst attribute = morphAttribute[ i ];\r\n\r\n\t\t\t\tconst newAttribute = convertBufferAttribute( attribute, indices );\r\n\r\n\t\t\t\tmorphArray.push( newAttribute );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tgeometry2.morphAttributes[ name ] = morphArray;\r\n\r\n\t\t}\r\n\r\n\t\tgeometry2.morphTargetsRelative = this.morphTargetsRelative;\r\n\r\n\t\t// groups\r\n\r\n\t\tconst groups = this.groups;\r\n\r\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst group = groups[ i ];\r\n\t\t\tgeometry2.addGroup( group.start, group.count, group.materialIndex );\r\n\r\n\t\t}\r\n\r\n\t\treturn geometry2;\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\tconst data = {\r\n\t\t\tmetadata: {\r\n\t\t\t\tversion: 4.5,\r\n\t\t\t\ttype: 'BufferGeometry',\r\n\t\t\t\tgenerator: 'BufferGeometry.toJSON'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// standard BufferGeometry serialization\r\n\r\n\t\tdata.uuid = this.uuid;\r\n\t\tdata.type = this.type;\r\n\t\tif ( this.name !== '' ) data.name = this.name;\r\n\t\tif ( Object.keys( this.userData ).length > 0 ) data.userData = this.userData;\r\n\r\n\t\tif ( this.parameters !== undefined ) {\r\n\r\n\t\t\tconst parameters = this.parameters;\r\n\r\n\t\t\tfor ( const key in parameters ) {\r\n\r\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\r\n\t\t}\r\n\r\n\t\tdata.data = { attributes: {} };\r\n\r\n\t\tconst index = this.index;\r\n\r\n\t\tif ( index !== null ) {\r\n\r\n\t\t\tdata.data.index = {\r\n\t\t\t\ttype: index.array.constructor.name,\r\n\t\t\t\tarray: Array.prototype.slice.call( index.array )\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t\tconst attributes = this.attributes;\r\n\r\n\t\tfor ( const key in attributes ) {\r\n\r\n\t\t\tconst attribute = attributes[ key ];\r\n\r\n\t\t\tconst attributeData = attribute.toJSON( data.data );\r\n\r\n\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\r\n\r\n\t\t\tdata.data.attributes[ key ] = attributeData;\r\n\r\n\t\t}\r\n\r\n\t\tconst morphAttributes = {};\r\n\t\tlet hasMorphAttributes = false;\r\n\r\n\t\tfor ( const key in this.morphAttributes ) {\r\n\r\n\t\t\tconst attributeArray = this.morphAttributes[ key ];\r\n\r\n\t\t\tconst array = [];\r\n\r\n\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tconst attribute = attributeArray[ i ];\r\n\r\n\t\t\t\tconst attributeData = attribute.toJSON( data.data );\r\n\r\n\t\t\t\tif ( attribute.name !== '' ) attributeData.name = attribute.name;\r\n\r\n\t\t\t\tarray.push( attributeData );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( array.length > 0 ) {\r\n\r\n\t\t\t\tmorphAttributes[ key ] = array;\r\n\r\n\t\t\t\thasMorphAttributes = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( hasMorphAttributes ) {\r\n\r\n\t\t\tdata.data.morphAttributes = morphAttributes;\r\n\t\t\tdata.data.morphTargetsRelative = this.morphTargetsRelative;\r\n\r\n\t\t}\r\n\r\n\t\tconst groups = this.groups;\r\n\r\n\t\tif ( groups.length > 0 ) {\r\n\r\n\t\t\tdata.data.groups = JSON.parse( JSON.stringify( groups ) );\r\n\r\n\t\t}\r\n\r\n\t\tconst boundingSphere = this.boundingSphere;\r\n\r\n\t\tif ( boundingSphere !== null ) {\r\n\r\n\t\t\tdata.data.boundingSphere = {\r\n\t\t\t\tcenter: boundingSphere.center.toArray(),\r\n\t\t\t\tradius: boundingSphere.radius\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\t/*\r\n\t\t // Handle primitives\r\n\r\n\t\t const parameters = this.parameters;\r\n\r\n\t\t if ( parameters !== undefined ) {\r\n\r\n\t\t const values = [];\r\n\r\n\t\t for ( const key in parameters ) {\r\n\r\n\t\t values.push( parameters[ key ] );\r\n\r\n\t\t }\r\n\r\n\t\t const geometry = Object.create( this.constructor.prototype );\r\n\t\t this.constructor.apply( geometry, values );\r\n\t\t return geometry;\r\n\r\n\t\t }\r\n\r\n\t\t return new this.constructor().copy( this );\r\n\t\t */\r\n\r\n\t\treturn new BufferGeometry().copy( this );\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\t// reset\r\n\r\n\t\tthis.index = null;\r\n\t\tthis.attributes = {};\r\n\t\tthis.morphAttributes = {};\r\n\t\tthis.groups = [];\r\n\t\tthis.boundingBox = null;\r\n\t\tthis.boundingSphere = null;\r\n\r\n\t\t// used for storing cloned, shared data\r\n\r\n\t\tconst data = {};\r\n\r\n\t\t// name\r\n\r\n\t\tthis.name = source.name;\r\n\r\n\t\t// index\r\n\r\n\t\tconst index = source.index;\r\n\r\n\t\tif ( index !== null ) {\r\n\r\n\t\t\tthis.setIndex( index.clone( data ) );\r\n\r\n\t\t}\r\n\r\n\t\t// attributes\r\n\r\n\t\tconst attributes = source.attributes;\r\n\r\n\t\tfor ( const name in attributes ) {\r\n\r\n\t\t\tconst attribute = attributes[ name ];\r\n\t\t\tthis.setAttribute( name, attribute.clone( data ) );\r\n\r\n\t\t}\r\n\r\n\t\t// morph attributes\r\n\r\n\t\tconst morphAttributes = source.morphAttributes;\r\n\r\n\t\tfor ( const name in morphAttributes ) {\r\n\r\n\t\t\tconst array = [];\r\n\t\t\tconst morphAttribute = morphAttributes[ name ]; // morphAttribute: array of Float32BufferAttributes\r\n\r\n\t\t\tfor ( let i = 0, l = morphAttribute.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tarray.push( morphAttribute[ i ].clone( data ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.morphAttributes[ name ] = array;\r\n\r\n\t\t}\r\n\r\n\t\tthis.morphTargetsRelative = source.morphTargetsRelative;\r\n\r\n\t\t// groups\r\n\r\n\t\tconst groups = source.groups;\r\n\r\n\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst group = groups[ i ];\r\n\t\t\tthis.addGroup( group.start, group.count, group.materialIndex );\r\n\r\n\t\t}\r\n\r\n\t\t// bounding box\r\n\r\n\t\tconst boundingBox = source.boundingBox;\r\n\r\n\t\tif ( boundingBox !== null ) {\r\n\r\n\t\t\tthis.boundingBox = boundingBox.clone();\r\n\r\n\t\t}\r\n\r\n\t\t// bounding sphere\r\n\r\n\t\tconst boundingSphere = source.boundingSphere;\r\n\r\n\t\tif ( boundingSphere !== null ) {\r\n\r\n\t\t\tthis.boundingSphere = boundingSphere.clone();\r\n\r\n\t\t}\r\n\r\n\t\t// draw range\r\n\r\n\t\tthis.drawRange.start = source.drawRange.start;\r\n\t\tthis.drawRange.count = source.drawRange.count;\r\n\r\n\t\t// user data\r\n\r\n\t\tthis.userData = source.userData;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tdispose: function () {\r\n\r\n\t\tthis.dispatchEvent( { type: 'dispose' } );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst _inverseMatrix = new Matrix4();\r\nconst _ray = new Ray();\r\nconst _sphere = new Sphere();\r\n\r\nconst _vA = new Vector3();\r\nconst _vB = new Vector3();\r\nconst _vC = new Vector3();\r\n\r\nconst _tempA = new Vector3();\r\nconst _tempB = new Vector3();\r\nconst _tempC = new Vector3();\r\n\r\nconst _morphA = new Vector3();\r\nconst _morphB = new Vector3();\r\nconst _morphC = new Vector3();\r\n\r\nconst _uvA = new Vector2();\r\nconst _uvB = new Vector2();\r\nconst _uvC = new Vector2();\r\n\r\nconst _intersectionPoint = new Vector3();\r\nconst _intersectionPointWorld = new Vector3();\r\n\r\nfunction Mesh( geometry = new BufferGeometry(), material = new MeshBasicMaterial() ) {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.type = 'Mesh';\r\n\r\n\tthis.geometry = geometry;\r\n\tthis.material = material;\r\n\r\n\tthis.updateMorphTargets();\r\n\r\n}\r\n\r\nMesh.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: Mesh,\r\n\r\n\tisMesh: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tObject3D.prototype.copy.call( this, source );\r\n\r\n\t\tif ( source.morphTargetInfluences !== undefined ) {\r\n\r\n\t\t\tthis.morphTargetInfluences = source.morphTargetInfluences.slice();\r\n\r\n\t\t}\r\n\r\n\t\tif ( source.morphTargetDictionary !== undefined ) {\r\n\r\n\t\t\tthis.morphTargetDictionary = Object.assign( {}, source.morphTargetDictionary );\r\n\r\n\t\t}\r\n\r\n\t\tthis.material = source.material;\r\n\t\tthis.geometry = source.geometry;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tupdateMorphTargets: function () {\r\n\r\n\t\tconst geometry = this.geometry;\r\n\r\n\t\tif ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\tconst morphAttributes = geometry.morphAttributes;\r\n\t\t\tconst keys = Object.keys( morphAttributes );\r\n\r\n\t\t\tif ( keys.length > 0 ) {\r\n\r\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\r\n\r\n\t\t\t\tif ( morphAttribute !== undefined ) {\r\n\r\n\t\t\t\t\tthis.morphTargetInfluences = [];\r\n\t\t\t\t\tthis.morphTargetDictionary = {};\r\n\r\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\r\n\r\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\r\n\r\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\r\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst morphTargets = geometry.morphTargets;\r\n\r\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.Mesh.updateMorphTargets() no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\traycast: function ( raycaster, intersects ) {\r\n\r\n\t\tconst geometry = this.geometry;\r\n\t\tconst material = this.material;\r\n\t\tconst matrixWorld = this.matrixWorld;\r\n\r\n\t\tif ( material === undefined ) return;\r\n\r\n\t\t// Checking boundingSphere distance to ray\r\n\r\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\r\n\r\n\t\t_sphere.copy( geometry.boundingSphere );\r\n\t\t_sphere.applyMatrix4( matrixWorld );\r\n\r\n\t\tif ( raycaster.ray.intersectsSphere( _sphere ) === false ) return;\r\n\r\n\t\t//\r\n\r\n\t\t_inverseMatrix.copy( matrixWorld ).invert();\r\n\t\t_ray.copy( raycaster.ray ).applyMatrix4( _inverseMatrix );\r\n\r\n\t\t// Check boundingBox before continuing\r\n\r\n\t\tif ( geometry.boundingBox !== null ) {\r\n\r\n\t\t\tif ( _ray.intersectsBox( geometry.boundingBox ) === false ) return;\r\n\r\n\t\t}\r\n\r\n\t\tlet intersection;\r\n\r\n\t\tif ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\tconst index = geometry.index;\r\n\t\t\tconst position = geometry.attributes.position;\r\n\t\t\tconst morphPosition = geometry.morphAttributes.position;\r\n\t\t\tconst morphTargetsRelative = geometry.morphTargetsRelative;\r\n\t\t\tconst uv = geometry.attributes.uv;\r\n\t\t\tconst uv2 = geometry.attributes.uv2;\r\n\t\t\tconst groups = geometry.groups;\r\n\t\t\tconst drawRange = geometry.drawRange;\r\n\r\n\t\t\tif ( index !== null ) {\r\n\r\n\t\t\t\t// indexed buffer geometry\r\n\r\n\t\t\t\tif ( Array.isArray( material ) ) {\r\n\r\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst group = groups[ i ];\r\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\r\n\r\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\r\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\r\n\r\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\r\n\r\n\t\t\t\t\t\t\tconst a = index.getX( j );\r\n\t\t\t\t\t\t\tconst b = index.getX( j + 1 );\r\n\t\t\t\t\t\t\tconst c = index.getX( j + 2 );\r\n\r\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\r\n\r\n\t\t\t\t\t\t\tif ( intersection ) {\r\n\r\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in indexed buffer semantics\r\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\r\n\t\t\t\t\t\t\t\tintersects.push( intersection );\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\r\n\t\t\t\t\tconst end = Math.min( index.count, ( drawRange.start + drawRange.count ) );\r\n\r\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\r\n\r\n\t\t\t\t\t\tconst a = index.getX( i );\r\n\t\t\t\t\t\tconst b = index.getX( i + 1 );\r\n\t\t\t\t\t\tconst c = index.getX( i + 2 );\r\n\r\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\r\n\r\n\t\t\t\t\t\tif ( intersection ) {\r\n\r\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in indexed buffer semantics\r\n\t\t\t\t\t\t\tintersects.push( intersection );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if ( position !== undefined ) {\r\n\r\n\t\t\t\t// non-indexed buffer geometry\r\n\r\n\t\t\t\tif ( Array.isArray( material ) ) {\r\n\r\n\t\t\t\t\tfor ( let i = 0, il = groups.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst group = groups[ i ];\r\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\r\n\r\n\t\t\t\t\t\tconst start = Math.max( group.start, drawRange.start );\r\n\t\t\t\t\t\tconst end = Math.min( ( group.start + group.count ), ( drawRange.start + drawRange.count ) );\r\n\r\n\t\t\t\t\t\tfor ( let j = start, jl = end; j < jl; j += 3 ) {\r\n\r\n\t\t\t\t\t\t\tconst a = j;\r\n\t\t\t\t\t\t\tconst b = j + 1;\r\n\t\t\t\t\t\t\tconst c = j + 2;\r\n\r\n\t\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, groupMaterial, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\r\n\r\n\t\t\t\t\t\t\tif ( intersection ) {\r\n\r\n\t\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( j / 3 ); // triangle number in non-indexed buffer semantics\r\n\t\t\t\t\t\t\t\tintersection.face.materialIndex = group.materialIndex;\r\n\t\t\t\t\t\t\t\tintersects.push( intersection );\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconst start = Math.max( 0, drawRange.start );\r\n\t\t\t\t\tconst end = Math.min( position.count, ( drawRange.start + drawRange.count ) );\r\n\r\n\t\t\t\t\tfor ( let i = start, il = end; i < il; i += 3 ) {\r\n\r\n\t\t\t\t\t\tconst a = i;\r\n\t\t\t\t\t\tconst b = i + 1;\r\n\t\t\t\t\t\tconst c = i + 2;\r\n\r\n\t\t\t\t\t\tintersection = checkBufferGeometryIntersection( this, material, raycaster, _ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c );\r\n\r\n\t\t\t\t\t\tif ( intersection ) {\r\n\r\n\t\t\t\t\t\t\tintersection.faceIndex = Math.floor( i / 3 ); // triangle number in non-indexed buffer semantics\r\n\t\t\t\t\t\t\tintersects.push( intersection );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( geometry.isGeometry ) {\r\n\r\n\t\t\tconst isMultiMaterial = Array.isArray( material );\r\n\r\n\t\t\tconst vertices = geometry.vertices;\r\n\t\t\tconst faces = geometry.faces;\r\n\t\t\tlet uvs;\r\n\r\n\t\t\tconst faceVertexUvs = geometry.faceVertexUvs[ 0 ];\r\n\t\t\tif ( faceVertexUvs.length > 0 ) uvs = faceVertexUvs;\r\n\r\n\t\t\tfor ( let f = 0, fl = faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\t\tconst face = faces[ f ];\r\n\t\t\t\tconst faceMaterial = isMultiMaterial ? material[ face.materialIndex ] : material;\r\n\r\n\t\t\t\tif ( faceMaterial === undefined ) continue;\r\n\r\n\t\t\t\tconst fvA = vertices[ face.a ];\r\n\t\t\t\tconst fvB = vertices[ face.b ];\r\n\t\t\t\tconst fvC = vertices[ face.c ];\r\n\r\n\t\t\t\tintersection = checkIntersection( this, faceMaterial, raycaster, _ray, fvA, fvB, fvC, _intersectionPoint );\r\n\r\n\t\t\t\tif ( intersection ) {\r\n\r\n\t\t\t\t\tif ( uvs && uvs[ f ] ) {\r\n\r\n\t\t\t\t\t\tconst uvs_f = uvs[ f ];\r\n\t\t\t\t\t\t_uvA.copy( uvs_f[ 0 ] );\r\n\t\t\t\t\t\t_uvB.copy( uvs_f[ 1 ] );\r\n\t\t\t\t\t\t_uvC.copy( uvs_f[ 2 ] );\r\n\r\n\t\t\t\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, fvA, fvB, fvC, _uvA, _uvB, _uvC, new Vector2() );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tintersection.face = face;\r\n\t\t\t\t\tintersection.faceIndex = f;\r\n\t\t\t\t\tintersects.push( intersection );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction checkIntersection( object, material, raycaster, ray, pA, pB, pC, point ) {\r\n\r\n\tlet intersect;\r\n\r\n\tif ( material.side === BackSide ) {\r\n\r\n\t\tintersect = ray.intersectTriangle( pC, pB, pA, true, point );\r\n\r\n\t} else {\r\n\r\n\t\tintersect = ray.intersectTriangle( pA, pB, pC, material.side !== DoubleSide, point );\r\n\r\n\t}\r\n\r\n\tif ( intersect === null ) return null;\r\n\r\n\t_intersectionPointWorld.copy( point );\r\n\t_intersectionPointWorld.applyMatrix4( object.matrixWorld );\r\n\r\n\tconst distance = raycaster.ray.origin.distanceTo( _intersectionPointWorld );\r\n\r\n\tif ( distance < raycaster.near || distance > raycaster.far ) return null;\r\n\r\n\treturn {\r\n\t\tdistance: distance,\r\n\t\tpoint: _intersectionPointWorld.clone(),\r\n\t\tobject: object\r\n\t};\r\n\r\n}\r\n\r\nfunction checkBufferGeometryIntersection( object, material, raycaster, ray, position, morphPosition, morphTargetsRelative, uv, uv2, a, b, c ) {\r\n\r\n\t_vA.fromBufferAttribute( position, a );\r\n\t_vB.fromBufferAttribute( position, b );\r\n\t_vC.fromBufferAttribute( position, c );\r\n\r\n\tconst morphInfluences = object.morphTargetInfluences;\r\n\r\n\tif ( material.morphTargets && morphPosition && morphInfluences ) {\r\n\r\n\t\t_morphA.set( 0, 0, 0 );\r\n\t\t_morphB.set( 0, 0, 0 );\r\n\t\t_morphC.set( 0, 0, 0 );\r\n\r\n\t\tfor ( let i = 0, il = morphPosition.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst influence = morphInfluences[ i ];\r\n\t\t\tconst morphAttribute = morphPosition[ i ];\r\n\r\n\t\t\tif ( influence === 0 ) continue;\r\n\r\n\t\t\t_tempA.fromBufferAttribute( morphAttribute, a );\r\n\t\t\t_tempB.fromBufferAttribute( morphAttribute, b );\r\n\t\t\t_tempC.fromBufferAttribute( morphAttribute, c );\r\n\r\n\t\t\tif ( morphTargetsRelative ) {\r\n\r\n\t\t\t\t_morphA.addScaledVector( _tempA, influence );\r\n\t\t\t\t_morphB.addScaledVector( _tempB, influence );\r\n\t\t\t\t_morphC.addScaledVector( _tempC, influence );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t_morphA.addScaledVector( _tempA.sub( _vA ), influence );\r\n\t\t\t\t_morphB.addScaledVector( _tempB.sub( _vB ), influence );\r\n\t\t\t\t_morphC.addScaledVector( _tempC.sub( _vC ), influence );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t_vA.add( _morphA );\r\n\t\t_vB.add( _morphB );\r\n\t\t_vC.add( _morphC );\r\n\r\n\t}\r\n\r\n\tif ( object.isSkinnedMesh ) {\r\n\r\n\t\tobject.boneTransform( a, _vA );\r\n\t\tobject.boneTransform( b, _vB );\r\n\t\tobject.boneTransform( c, _vC );\r\n\r\n\t}\r\n\r\n\tconst intersection = checkIntersection( object, material, raycaster, ray, _vA, _vB, _vC, _intersectionPoint );\r\n\r\n\tif ( intersection ) {\r\n\r\n\t\tif ( uv ) {\r\n\r\n\t\t\t_uvA.fromBufferAttribute( uv, a );\r\n\t\t\t_uvB.fromBufferAttribute( uv, b );\r\n\t\t\t_uvC.fromBufferAttribute( uv, c );\r\n\r\n\t\t\tintersection.uv = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\r\n\r\n\t\t}\r\n\r\n\t\tif ( uv2 ) {\r\n\r\n\t\t\t_uvA.fromBufferAttribute( uv2, a );\r\n\t\t\t_uvB.fromBufferAttribute( uv2, b );\r\n\t\t\t_uvC.fromBufferAttribute( uv2, c );\r\n\r\n\t\t\tintersection.uv2 = Triangle.getUV( _intersectionPoint, _vA, _vB, _vC, _uvA, _uvB, _uvC, new Vector2() );\r\n\r\n\t\t}\r\n\r\n\t\tconst face = new Face3( a, b, c );\r\n\t\tTriangle.getNormal( _vA, _vB, _vC, face.normal );\r\n\r\n\t\tintersection.face = face;\r\n\r\n\t}\r\n\r\n\treturn intersection;\r\n\r\n}\r\n\r\nclass BoxBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( width = 1, height = 1, depth = 1, widthSegments = 1, heightSegments = 1, depthSegments = 1 ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'BoxBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t\tdepth: depth,\r\n\t\t\twidthSegments: widthSegments,\r\n\t\t\theightSegments: heightSegments,\r\n\t\t\tdepthSegments: depthSegments\r\n\t\t};\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\t// segments\r\n\r\n\t\twidthSegments = Math.floor( widthSegments );\r\n\t\theightSegments = Math.floor( heightSegments );\r\n\t\tdepthSegments = Math.floor( depthSegments );\r\n\r\n\t\t// buffers\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\t// helper variables\r\n\r\n\t\tlet numberOfVertices = 0;\r\n\t\tlet groupStart = 0;\r\n\r\n\t\t// build each side of the box geometry\r\n\r\n\t\tbuildPlane( 'z', 'y', 'x', - 1, - 1, depth, height, width, depthSegments, heightSegments, 0 ); // px\r\n\t\tbuildPlane( 'z', 'y', 'x', 1, - 1, depth, height, - width, depthSegments, heightSegments, 1 ); // nx\r\n\t\tbuildPlane( 'x', 'z', 'y', 1, 1, width, depth, height, widthSegments, depthSegments, 2 ); // py\r\n\t\tbuildPlane( 'x', 'z', 'y', 1, - 1, width, depth, - height, widthSegments, depthSegments, 3 ); // ny\r\n\t\tbuildPlane( 'x', 'y', 'z', 1, - 1, width, height, depth, widthSegments, heightSegments, 4 ); // pz\r\n\t\tbuildPlane( 'x', 'y', 'z', - 1, - 1, width, height, - depth, widthSegments, heightSegments, 5 ); // nz\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t\tfunction buildPlane( u, v, w, udir, vdir, width, height, depth, gridX, gridY, materialIndex ) {\r\n\r\n\t\t\tconst segmentWidth = width / gridX;\r\n\t\t\tconst segmentHeight = height / gridY;\r\n\r\n\t\t\tconst widthHalf = width / 2;\r\n\t\t\tconst heightHalf = height / 2;\r\n\t\t\tconst depthHalf = depth / 2;\r\n\r\n\t\t\tconst gridX1 = gridX + 1;\r\n\t\t\tconst gridY1 = gridY + 1;\r\n\r\n\t\t\tlet vertexCounter = 0;\r\n\t\t\tlet groupCount = 0;\r\n\r\n\t\t\tconst vector = new Vector3();\r\n\r\n\t\t\t// generate vertices, normals and uvs\r\n\r\n\t\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\r\n\r\n\t\t\t\tconst y = iy * segmentHeight - heightHalf;\r\n\r\n\t\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\r\n\r\n\t\t\t\t\tconst x = ix * segmentWidth - widthHalf;\r\n\r\n\t\t\t\t\t// set values to correct vector component\r\n\r\n\t\t\t\t\tvector[ u ] = x * udir;\r\n\t\t\t\t\tvector[ v ] = y * vdir;\r\n\t\t\t\t\tvector[ w ] = depthHalf;\r\n\r\n\t\t\t\t\t// now apply vector to vertex buffer\r\n\r\n\t\t\t\t\tvertices.push( vector.x, vector.y, vector.z );\r\n\r\n\t\t\t\t\t// set values to correct vector component\r\n\r\n\t\t\t\t\tvector[ u ] = 0;\r\n\t\t\t\t\tvector[ v ] = 0;\r\n\t\t\t\t\tvector[ w ] = depth > 0 ? 1 : - 1;\r\n\r\n\t\t\t\t\t// now apply vector to normal buffer\r\n\r\n\t\t\t\t\tnormals.push( vector.x, vector.y, vector.z );\r\n\r\n\t\t\t\t\t// uvs\r\n\r\n\t\t\t\t\tuvs.push( ix / gridX );\r\n\t\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\r\n\r\n\t\t\t\t\t// counters\r\n\r\n\t\t\t\t\tvertexCounter += 1;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// indices\r\n\r\n\t\t\t// 1. you need three indices to draw a single face\r\n\t\t\t// 2. a single segment consists of two faces\r\n\t\t\t// 3. so we need to generate six (2*3) indices per segment\r\n\r\n\t\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\r\n\r\n\t\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\r\n\r\n\t\t\t\t\tconst a = numberOfVertices + ix + gridX1 * iy;\r\n\t\t\t\t\tconst b = numberOfVertices + ix + gridX1 * ( iy + 1 );\r\n\t\t\t\t\tconst c = numberOfVertices + ( ix + 1 ) + gridX1 * ( iy + 1 );\r\n\t\t\t\t\tconst d = numberOfVertices + ( ix + 1 ) + gridX1 * iy;\r\n\r\n\t\t\t\t\t// faces\r\n\r\n\t\t\t\t\tindices.push( a, b, d );\r\n\t\t\t\t\tindices.push( b, c, d );\r\n\r\n\t\t\t\t\t// increase counter\r\n\r\n\t\t\t\t\tgroupCount += 6;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// add a group to the geometry. this will ensure multi material support\r\n\r\n\t\t\tscope.addGroup( groupStart, groupCount, materialIndex );\r\n\r\n\t\t\t// calculate new start value for groups\r\n\r\n\t\t\tgroupStart += groupCount;\r\n\r\n\t\t\t// update total number of vertices\r\n\r\n\t\t\tnumberOfVertices += vertexCounter;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Uniform Utilities\r\n */\r\n\r\nfunction cloneUniforms( src ) {\r\n\r\n\tconst dst = {};\r\n\r\n\tfor ( const u in src ) {\r\n\r\n\t\tdst[ u ] = {};\r\n\r\n\t\tfor ( const p in src[ u ] ) {\r\n\r\n\t\t\tconst property = src[ u ][ p ];\r\n\r\n\t\t\tif ( property && ( property.isColor ||\r\n\t\t\t\tproperty.isMatrix3 || property.isMatrix4 ||\r\n\t\t\t\tproperty.isVector2 || property.isVector3 || property.isVector4 ||\r\n\t\t\t\tproperty.isTexture ) ) {\r\n\r\n\t\t\t\tdst[ u ][ p ] = property.clone();\r\n\r\n\t\t\t} else if ( Array.isArray( property ) ) {\r\n\r\n\t\t\t\tdst[ u ][ p ] = property.slice();\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tdst[ u ][ p ] = property;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn dst;\r\n\r\n}\r\n\r\nfunction mergeUniforms( uniforms ) {\r\n\r\n\tconst merged = {};\r\n\r\n\tfor ( let u = 0; u < uniforms.length; u ++ ) {\r\n\r\n\t\tconst tmp = cloneUniforms( uniforms[ u ] );\r\n\r\n\t\tfor ( const p in tmp ) {\r\n\r\n\t\t\tmerged[ p ] = tmp[ p ];\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn merged;\r\n\r\n}\r\n\r\n// Legacy\r\n\r\nconst UniformsUtils = { clone: cloneUniforms, merge: mergeUniforms };\r\n\r\nvar default_vertex = \"void main() {\\n\\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\\n}\";\r\n\r\nvar default_fragment = \"void main() {\\n\\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\\n}\";\r\n\r\n/**\r\n * parameters = {\r\n * defines: { \"label\" : \"value\" },\r\n * uniforms: { \"parameter1\": { value: 1.0 }, \"parameter2\": { value2: 2 } },\r\n *\r\n * fragmentShader: ,\r\n * vertexShader: ,\r\n *\r\n * wireframe: ,\r\n * wireframeLinewidth: ,\r\n *\r\n * lights: ,\r\n *\r\n * skinning: ,\r\n * morphTargets: ,\r\n * morphNormals: \r\n * }\r\n */\r\n\r\nfunction ShaderMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'ShaderMaterial';\r\n\r\n\tthis.defines = {};\r\n\tthis.uniforms = {};\r\n\r\n\tthis.vertexShader = default_vertex;\r\n\tthis.fragmentShader = default_fragment;\r\n\r\n\tthis.linewidth = 1;\r\n\r\n\tthis.wireframe = false;\r\n\tthis.wireframeLinewidth = 1;\r\n\r\n\tthis.fog = false; // set to use scene fog\r\n\tthis.lights = false; // set to use scene lights\r\n\tthis.clipping = false; // set to use user-defined clipping planes\r\n\r\n\tthis.skinning = false; // set to use skinning attribute streams\r\n\tthis.morphTargets = false; // set to use morph targets\r\n\tthis.morphNormals = false; // set to use morph normals\r\n\r\n\tthis.extensions = {\r\n\t\tderivatives: false, // set to use derivatives\r\n\t\tfragDepth: false, // set to use fragment depth values\r\n\t\tdrawBuffers: false, // set to use draw buffers\r\n\t\tshaderTextureLOD: false // set to use shader texture LOD\r\n\t};\r\n\r\n\t// When rendered geometry doesn't include these attributes but the material does,\r\n\t// use these default values in WebGL. This avoids errors when buffer data is missing.\r\n\tthis.defaultAttributeValues = {\r\n\t\t'color': [ 1, 1, 1 ],\r\n\t\t'uv': [ 0, 0 ],\r\n\t\t'uv2': [ 0, 0 ]\r\n\t};\r\n\r\n\tthis.index0AttributeName = undefined;\r\n\tthis.uniformsNeedUpdate = false;\r\n\r\n\tthis.glslVersion = null;\r\n\r\n\tif ( parameters !== undefined ) {\r\n\r\n\t\tif ( parameters.attributes !== undefined ) {\r\n\r\n\t\t\tconsole.error( 'THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead.' );\r\n\r\n\t\t}\r\n\r\n\t\tthis.setValues( parameters );\r\n\r\n\t}\r\n\r\n}\r\n\r\nShaderMaterial.prototype = Object.create( Material.prototype );\r\nShaderMaterial.prototype.constructor = ShaderMaterial;\r\n\r\nShaderMaterial.prototype.isShaderMaterial = true;\r\n\r\nShaderMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.fragmentShader = source.fragmentShader;\r\n\tthis.vertexShader = source.vertexShader;\r\n\r\n\tthis.uniforms = cloneUniforms( source.uniforms );\r\n\r\n\tthis.defines = Object.assign( {}, source.defines );\r\n\r\n\tthis.wireframe = source.wireframe;\r\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\r\n\r\n\tthis.lights = source.lights;\r\n\tthis.clipping = source.clipping;\r\n\r\n\tthis.skinning = source.skinning;\r\n\r\n\tthis.morphTargets = source.morphTargets;\r\n\tthis.morphNormals = source.morphNormals;\r\n\r\n\tthis.extensions = Object.assign( {}, source.extensions );\r\n\r\n\tthis.glslVersion = source.glslVersion;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nShaderMaterial.prototype.toJSON = function ( meta ) {\r\n\r\n\tconst data = Material.prototype.toJSON.call( this, meta );\r\n\r\n\tdata.glslVersion = this.glslVersion;\r\n\tdata.uniforms = {};\r\n\r\n\tfor ( const name in this.uniforms ) {\r\n\r\n\t\tconst uniform = this.uniforms[ name ];\r\n\t\tconst value = uniform.value;\r\n\r\n\t\tif ( value && value.isTexture ) {\r\n\r\n\t\t\tdata.uniforms[ name ] = {\r\n\t\t\t\ttype: 't',\r\n\t\t\t\tvalue: value.toJSON( meta ).uuid\r\n\t\t\t};\r\n\r\n\t\t} else if ( value && value.isColor ) {\r\n\r\n\t\t\tdata.uniforms[ name ] = {\r\n\t\t\t\ttype: 'c',\r\n\t\t\t\tvalue: value.getHex()\r\n\t\t\t};\r\n\r\n\t\t} else if ( value && value.isVector2 ) {\r\n\r\n\t\t\tdata.uniforms[ name ] = {\r\n\t\t\t\ttype: 'v2',\r\n\t\t\t\tvalue: value.toArray()\r\n\t\t\t};\r\n\r\n\t\t} else if ( value && value.isVector3 ) {\r\n\r\n\t\t\tdata.uniforms[ name ] = {\r\n\t\t\t\ttype: 'v3',\r\n\t\t\t\tvalue: value.toArray()\r\n\t\t\t};\r\n\r\n\t\t} else if ( value && value.isVector4 ) {\r\n\r\n\t\t\tdata.uniforms[ name ] = {\r\n\t\t\t\ttype: 'v4',\r\n\t\t\t\tvalue: value.toArray()\r\n\t\t\t};\r\n\r\n\t\t} else if ( value && value.isMatrix3 ) {\r\n\r\n\t\t\tdata.uniforms[ name ] = {\r\n\t\t\t\ttype: 'm3',\r\n\t\t\t\tvalue: value.toArray()\r\n\t\t\t};\r\n\r\n\t\t} else if ( value && value.isMatrix4 ) {\r\n\r\n\t\t\tdata.uniforms[ name ] = {\r\n\t\t\t\ttype: 'm4',\r\n\t\t\t\tvalue: value.toArray()\r\n\t\t\t};\r\n\r\n\t\t} else {\r\n\r\n\t\t\tdata.uniforms[ name ] = {\r\n\t\t\t\tvalue: value\r\n\t\t\t};\r\n\r\n\t\t\t// note: the array variants v2v, v3v, v4v, m4v and tv are not supported so far\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tif ( Object.keys( this.defines ).length > 0 ) data.defines = this.defines;\r\n\r\n\tdata.vertexShader = this.vertexShader;\r\n\tdata.fragmentShader = this.fragmentShader;\r\n\r\n\tconst extensions = {};\r\n\r\n\tfor ( const key in this.extensions ) {\r\n\r\n\t\tif ( this.extensions[ key ] === true ) extensions[ key ] = true;\r\n\r\n\t}\r\n\r\n\tif ( Object.keys( extensions ).length > 0 ) data.extensions = extensions;\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nfunction Camera() {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.type = 'Camera';\r\n\r\n\tthis.matrixWorldInverse = new Matrix4();\r\n\r\n\tthis.projectionMatrix = new Matrix4();\r\n\tthis.projectionMatrixInverse = new Matrix4();\r\n\r\n}\r\n\r\nCamera.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: Camera,\r\n\r\n\tisCamera: true,\r\n\r\n\tcopy: function ( source, recursive ) {\r\n\r\n\t\tObject3D.prototype.copy.call( this, source, recursive );\r\n\r\n\t\tthis.matrixWorldInverse.copy( source.matrixWorldInverse );\r\n\r\n\t\tthis.projectionMatrix.copy( source.projectionMatrix );\r\n\t\tthis.projectionMatrixInverse.copy( source.projectionMatrixInverse );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetWorldDirection: function ( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Camera: .getWorldDirection() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\tthis.updateWorldMatrix( true, false );\r\n\r\n\t\tconst e = this.matrixWorld.elements;\r\n\r\n\t\treturn target.set( - e[ 8 ], - e[ 9 ], - e[ 10 ] ).normalize();\r\n\r\n\t},\r\n\r\n\tupdateMatrixWorld: function ( force ) {\r\n\r\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\r\n\r\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\r\n\r\n\t},\r\n\r\n\tupdateWorldMatrix: function ( updateParents, updateChildren ) {\r\n\r\n\t\tObject3D.prototype.updateWorldMatrix.call( this, updateParents, updateChildren );\r\n\r\n\t\tthis.matrixWorldInverse.copy( this.matrixWorld ).invert();\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction PerspectiveCamera( fov = 50, aspect = 1, near = 0.1, far = 2000 ) {\r\n\r\n\tCamera.call( this );\r\n\r\n\tthis.type = 'PerspectiveCamera';\r\n\r\n\tthis.fov = fov;\r\n\tthis.zoom = 1;\r\n\r\n\tthis.near = near;\r\n\tthis.far = far;\r\n\tthis.focus = 10;\r\n\r\n\tthis.aspect = aspect;\r\n\tthis.view = null;\r\n\r\n\tthis.filmGauge = 35;\t// width of the film (default in millimeters)\r\n\tthis.filmOffset = 0;\t// horizontal film offset (same unit as gauge)\r\n\r\n\tthis.updateProjectionMatrix();\r\n\r\n}\r\n\r\nPerspectiveCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\r\n\r\n\tconstructor: PerspectiveCamera,\r\n\r\n\tisPerspectiveCamera: true,\r\n\r\n\tcopy: function ( source, recursive ) {\r\n\r\n\t\tCamera.prototype.copy.call( this, source, recursive );\r\n\r\n\t\tthis.fov = source.fov;\r\n\t\tthis.zoom = source.zoom;\r\n\r\n\t\tthis.near = source.near;\r\n\t\tthis.far = source.far;\r\n\t\tthis.focus = source.focus;\r\n\r\n\t\tthis.aspect = source.aspect;\r\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\r\n\r\n\t\tthis.filmGauge = source.filmGauge;\r\n\t\tthis.filmOffset = source.filmOffset;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * Sets the FOV by focal length in respect to the current .filmGauge.\r\n\t *\r\n\t * The default film gauge is 35, so that the focal length can be specified for\r\n\t * a 35mm (full frame) camera.\r\n\t *\r\n\t * Values for focal length and film gauge must have the same unit.\r\n\t */\r\n\tsetFocalLength: function ( focalLength ) {\r\n\r\n\t\t// see http://www.bobatkins.com/photography/technical/field_of_view.html\r\n\t\tconst vExtentSlope = 0.5 * this.getFilmHeight() / focalLength;\r\n\r\n\t\tthis.fov = MathUtils.RAD2DEG * 2 * Math.atan( vExtentSlope );\r\n\t\tthis.updateProjectionMatrix();\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * Calculates the focal length from the current .fov and .filmGauge.\r\n\t */\r\n\tgetFocalLength: function () {\r\n\r\n\t\tconst vExtentSlope = Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov );\r\n\r\n\t\treturn 0.5 * this.getFilmHeight() / vExtentSlope;\r\n\r\n\t},\r\n\r\n\tgetEffectiveFOV: function () {\r\n\r\n\t\treturn MathUtils.RAD2DEG * 2 * Math.atan(\r\n\t\t\tMath.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom );\r\n\r\n\t},\r\n\r\n\tgetFilmWidth: function () {\r\n\r\n\t\t// film not completely covered in portrait format (aspect < 1)\r\n\t\treturn this.filmGauge * Math.min( this.aspect, 1 );\r\n\r\n\t},\r\n\r\n\tgetFilmHeight: function () {\r\n\r\n\t\t// film not completely covered in landscape format (aspect > 1)\r\n\t\treturn this.filmGauge / Math.max( this.aspect, 1 );\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * Sets an offset in a larger frustum. This is useful for multi-window or\r\n\t * multi-monitor/multi-machine setups.\r\n\t *\r\n\t * For example, if you have 3x2 monitors and each monitor is 1920x1080 and\r\n\t * the monitors are in grid like this\r\n\t *\r\n\t * +---+---+---+\r\n\t * | A | B | C |\r\n\t * +---+---+---+\r\n\t * | D | E | F |\r\n\t * +---+---+---+\r\n\t *\r\n\t * then for each monitor you would call it like this\r\n\t *\r\n\t * const w = 1920;\r\n\t * const h = 1080;\r\n\t * const fullWidth = w * 3;\r\n\t * const fullHeight = h * 2;\r\n\t *\r\n\t * --A--\r\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );\r\n\t * --B--\r\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );\r\n\t * --C--\r\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );\r\n\t * --D--\r\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );\r\n\t * --E--\r\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );\r\n\t * --F--\r\n\t * camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );\r\n\t *\r\n\t * Note there is no reason monitors have to be the same size or in a grid.\r\n\t */\r\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\r\n\r\n\t\tthis.aspect = fullWidth / fullHeight;\r\n\r\n\t\tif ( this.view === null ) {\r\n\r\n\t\t\tthis.view = {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\tfullWidth: 1,\r\n\t\t\t\tfullHeight: 1,\r\n\t\t\t\toffsetX: 0,\r\n\t\t\t\toffsetY: 0,\r\n\t\t\t\twidth: 1,\r\n\t\t\t\theight: 1\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t\tthis.view.enabled = true;\r\n\t\tthis.view.fullWidth = fullWidth;\r\n\t\tthis.view.fullHeight = fullHeight;\r\n\t\tthis.view.offsetX = x;\r\n\t\tthis.view.offsetY = y;\r\n\t\tthis.view.width = width;\r\n\t\tthis.view.height = height;\r\n\r\n\t\tthis.updateProjectionMatrix();\r\n\r\n\t},\r\n\r\n\tclearViewOffset: function () {\r\n\r\n\t\tif ( this.view !== null ) {\r\n\r\n\t\t\tthis.view.enabled = false;\r\n\r\n\t\t}\r\n\r\n\t\tthis.updateProjectionMatrix();\r\n\r\n\t},\r\n\r\n\tupdateProjectionMatrix: function () {\r\n\r\n\t\tconst near = this.near;\r\n\t\tlet top = near * Math.tan( MathUtils.DEG2RAD * 0.5 * this.fov ) / this.zoom;\r\n\t\tlet height = 2 * top;\r\n\t\tlet width = this.aspect * height;\r\n\t\tlet left = - 0.5 * width;\r\n\t\tconst view = this.view;\r\n\r\n\t\tif ( this.view !== null && this.view.enabled ) {\r\n\r\n\t\t\tconst fullWidth = view.fullWidth,\r\n\t\t\t\tfullHeight = view.fullHeight;\r\n\r\n\t\t\tleft += view.offsetX * width / fullWidth;\r\n\t\t\ttop -= view.offsetY * height / fullHeight;\r\n\t\t\twidth *= view.width / fullWidth;\r\n\t\t\theight *= view.height / fullHeight;\r\n\r\n\t\t}\r\n\r\n\t\tconst skew = this.filmOffset;\r\n\t\tif ( skew !== 0 ) left += near * skew / this.getFilmWidth();\r\n\r\n\t\tthis.projectionMatrix.makePerspective( left, left + width, top, top - height, near, this.far );\r\n\r\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\r\n\r\n\t\tdata.object.fov = this.fov;\r\n\t\tdata.object.zoom = this.zoom;\r\n\r\n\t\tdata.object.near = this.near;\r\n\t\tdata.object.far = this.far;\r\n\t\tdata.object.focus = this.focus;\r\n\r\n\t\tdata.object.aspect = this.aspect;\r\n\r\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\r\n\r\n\t\tdata.object.filmGauge = this.filmGauge;\r\n\t\tdata.object.filmOffset = this.filmOffset;\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst fov = 90, aspect = 1;\r\n\r\nfunction CubeCamera( near, far, renderTarget ) {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.type = 'CubeCamera';\r\n\r\n\tif ( renderTarget.isWebGLCubeRenderTarget !== true ) {\r\n\r\n\t\tconsole.error( 'THREE.CubeCamera: The constructor now expects an instance of WebGLCubeRenderTarget as third parameter.' );\r\n\t\treturn;\r\n\r\n\t}\r\n\r\n\tthis.renderTarget = renderTarget;\r\n\r\n\tconst cameraPX = new PerspectiveCamera( fov, aspect, near, far );\r\n\tcameraPX.layers = this.layers;\r\n\tcameraPX.up.set( 0, - 1, 0 );\r\n\tcameraPX.lookAt( new Vector3( 1, 0, 0 ) );\r\n\tthis.add( cameraPX );\r\n\r\n\tconst cameraNX = new PerspectiveCamera( fov, aspect, near, far );\r\n\tcameraNX.layers = this.layers;\r\n\tcameraNX.up.set( 0, - 1, 0 );\r\n\tcameraNX.lookAt( new Vector3( - 1, 0, 0 ) );\r\n\tthis.add( cameraNX );\r\n\r\n\tconst cameraPY = new PerspectiveCamera( fov, aspect, near, far );\r\n\tcameraPY.layers = this.layers;\r\n\tcameraPY.up.set( 0, 0, 1 );\r\n\tcameraPY.lookAt( new Vector3( 0, 1, 0 ) );\r\n\tthis.add( cameraPY );\r\n\r\n\tconst cameraNY = new PerspectiveCamera( fov, aspect, near, far );\r\n\tcameraNY.layers = this.layers;\r\n\tcameraNY.up.set( 0, 0, - 1 );\r\n\tcameraNY.lookAt( new Vector3( 0, - 1, 0 ) );\r\n\tthis.add( cameraNY );\r\n\r\n\tconst cameraPZ = new PerspectiveCamera( fov, aspect, near, far );\r\n\tcameraPZ.layers = this.layers;\r\n\tcameraPZ.up.set( 0, - 1, 0 );\r\n\tcameraPZ.lookAt( new Vector3( 0, 0, 1 ) );\r\n\tthis.add( cameraPZ );\r\n\r\n\tconst cameraNZ = new PerspectiveCamera( fov, aspect, near, far );\r\n\tcameraNZ.layers = this.layers;\r\n\tcameraNZ.up.set( 0, - 1, 0 );\r\n\tcameraNZ.lookAt( new Vector3( 0, 0, - 1 ) );\r\n\tthis.add( cameraNZ );\r\n\r\n\tthis.update = function ( renderer, scene ) {\r\n\r\n\t\tif ( this.parent === null ) this.updateMatrixWorld();\r\n\r\n\t\tconst currentXrEnabled = renderer.xr.enabled;\r\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\r\n\r\n\t\trenderer.xr.enabled = false;\r\n\r\n\t\tconst generateMipmaps = renderTarget.texture.generateMipmaps;\r\n\r\n\t\trenderTarget.texture.generateMipmaps = false;\r\n\r\n\t\trenderer.setRenderTarget( renderTarget, 0 );\r\n\t\trenderer.render( scene, cameraPX );\r\n\r\n\t\trenderer.setRenderTarget( renderTarget, 1 );\r\n\t\trenderer.render( scene, cameraNX );\r\n\r\n\t\trenderer.setRenderTarget( renderTarget, 2 );\r\n\t\trenderer.render( scene, cameraPY );\r\n\r\n\t\trenderer.setRenderTarget( renderTarget, 3 );\r\n\t\trenderer.render( scene, cameraNY );\r\n\r\n\t\trenderer.setRenderTarget( renderTarget, 4 );\r\n\t\trenderer.render( scene, cameraPZ );\r\n\r\n\t\trenderTarget.texture.generateMipmaps = generateMipmaps;\r\n\r\n\t\trenderer.setRenderTarget( renderTarget, 5 );\r\n\t\trenderer.render( scene, cameraNZ );\r\n\r\n\t\trenderer.setRenderTarget( currentRenderTarget );\r\n\r\n\t\trenderer.xr.enabled = currentXrEnabled;\r\n\r\n\t};\r\n\r\n}\r\n\r\nCubeCamera.prototype = Object.create( Object3D.prototype );\r\nCubeCamera.prototype.constructor = CubeCamera;\r\n\r\nfunction CubeTexture( images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding ) {\r\n\r\n\timages = images !== undefined ? images : [];\r\n\tmapping = mapping !== undefined ? mapping : CubeReflectionMapping;\r\n\tformat = format !== undefined ? format : RGBFormat;\r\n\r\n\tTexture.call( this, images, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\r\n\r\n\tthis.flipY = false;\r\n\r\n\t// Why CubeTexture._needsFlipEnvMap is necessary:\r\n\t//\r\n\t// By convention -- likely based on the RenderMan spec from the 1990's -- cube maps are specified by WebGL (and three.js)\r\n\t// in a coordinate system in which positive-x is to the right when looking up the positive-z axis -- in other words,\r\n\t// in a left-handed coordinate system. By continuing this convention, preexisting cube maps continued to render correctly.\r\n\r\n\t// three.js uses a right-handed coordinate system. So environment maps used in three.js appear to have px and nx swapped\r\n\t// and the flag _needsFlipEnvMap controls this conversion. The flip is not required (and thus _needsFlipEnvMap is set to false)\r\n\t// when using WebGLCubeRenderTarget.texture as a cube texture.\r\n\r\n\tthis._needsFlipEnvMap = true;\r\n\r\n}\r\n\r\nCubeTexture.prototype = Object.create( Texture.prototype );\r\nCubeTexture.prototype.constructor = CubeTexture;\r\n\r\nCubeTexture.prototype.isCubeTexture = true;\r\n\r\nObject.defineProperty( CubeTexture.prototype, 'images', {\r\n\r\n\tget: function () {\r\n\r\n\t\treturn this.image;\r\n\r\n\t},\r\n\r\n\tset: function ( value ) {\r\n\r\n\t\tthis.image = value;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction WebGLCubeRenderTarget( size, options, dummy ) {\r\n\r\n\tif ( Number.isInteger( options ) ) {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLCubeRenderTarget: constructor signature is now WebGLCubeRenderTarget( size, options )' );\r\n\r\n\t\toptions = dummy;\r\n\r\n\t}\r\n\r\n\tWebGLRenderTarget.call( this, size, size, options );\r\n\r\n\toptions = options || {};\r\n\r\n\tthis.texture = new CubeTexture( undefined, options.mapping, options.wrapS, options.wrapT, options.magFilter, options.minFilter, options.format, options.type, options.anisotropy, options.encoding );\r\n\r\n\tthis.texture._needsFlipEnvMap = false;\r\n\r\n}\r\n\r\nWebGLCubeRenderTarget.prototype = Object.create( WebGLRenderTarget.prototype );\r\nWebGLCubeRenderTarget.prototype.constructor = WebGLCubeRenderTarget;\r\n\r\nWebGLCubeRenderTarget.prototype.isWebGLCubeRenderTarget = true;\r\n\r\nWebGLCubeRenderTarget.prototype.fromEquirectangularTexture = function ( renderer, texture ) {\r\n\r\n\tthis.texture.type = texture.type;\r\n\tthis.texture.format = RGBAFormat; // see #18859\r\n\tthis.texture.encoding = texture.encoding;\r\n\r\n\tthis.texture.generateMipmaps = texture.generateMipmaps;\r\n\tthis.texture.minFilter = texture.minFilter;\r\n\tthis.texture.magFilter = texture.magFilter;\r\n\r\n\tconst shader = {\r\n\r\n\t\tuniforms: {\r\n\t\t\ttEquirect: { value: null },\r\n\t\t},\r\n\r\n\t\tvertexShader: /* glsl */`\r\n\r\n\t\t\tvarying vec3 vWorldDirection;\r\n\r\n\t\t\tvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\r\n\r\n\t\t\t\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvoid main() {\r\n\r\n\t\t\t\tvWorldDirection = transformDirection( position, modelMatrix );\r\n\r\n\t\t\t\t#include \r\n\t\t\t\t#include \r\n\r\n\t\t\t}\r\n\t\t`,\r\n\r\n\t\tfragmentShader: /* glsl */`\r\n\r\n\t\t\tuniform sampler2D tEquirect;\r\n\r\n\t\t\tvarying vec3 vWorldDirection;\r\n\r\n\t\t\t#include \r\n\r\n\t\t\tvoid main() {\r\n\r\n\t\t\t\tvec3 direction = normalize( vWorldDirection );\r\n\r\n\t\t\t\tvec2 sampleUV = equirectUv( direction );\r\n\r\n\t\t\t\tgl_FragColor = texture2D( tEquirect, sampleUV );\r\n\r\n\t\t\t}\r\n\t\t`\r\n\t};\r\n\r\n\tconst geometry = new BoxBufferGeometry( 5, 5, 5 );\r\n\r\n\tconst material = new ShaderMaterial( {\r\n\r\n\t\tname: 'CubemapFromEquirect',\r\n\r\n\t\tuniforms: cloneUniforms( shader.uniforms ),\r\n\t\tvertexShader: shader.vertexShader,\r\n\t\tfragmentShader: shader.fragmentShader,\r\n\t\tside: BackSide,\r\n\t\tblending: NoBlending\r\n\r\n\t} );\r\n\r\n\tmaterial.uniforms.tEquirect.value = texture;\r\n\r\n\tconst mesh = new Mesh( geometry, material );\r\n\r\n\tconst currentMinFilter = texture.minFilter;\r\n\r\n\t// Avoid blurred poles\r\n\tif ( texture.minFilter === LinearMipmapLinearFilter ) texture.minFilter = LinearFilter;\r\n\r\n\tconst camera = new CubeCamera( 1, 10, this );\r\n\tcamera.update( renderer, mesh );\r\n\r\n\ttexture.minFilter = currentMinFilter;\r\n\r\n\tmesh.geometry.dispose();\r\n\tmesh.material.dispose();\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nWebGLCubeRenderTarget.prototype.clear = function ( renderer, color, depth, stencil ) {\r\n\r\n\tconst currentRenderTarget = renderer.getRenderTarget();\r\n\r\n\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\trenderer.setRenderTarget( this, i );\r\n\r\n\t\trenderer.clear( color, depth, stencil );\r\n\r\n\t}\r\n\r\n\trenderer.setRenderTarget( currentRenderTarget );\r\n\r\n};\r\n\r\nfunction DataTexture( data, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\r\n\r\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\r\n\r\n\tthis.image = { data: data || null, width: width || 1, height: height || 1 };\r\n\r\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\r\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\r\n\r\n\tthis.generateMipmaps = false;\r\n\tthis.flipY = false;\r\n\tthis.unpackAlignment = 1;\r\n\r\n\tthis.needsUpdate = true;\r\n\r\n}\r\n\r\nDataTexture.prototype = Object.create( Texture.prototype );\r\nDataTexture.prototype.constructor = DataTexture;\r\n\r\nDataTexture.prototype.isDataTexture = true;\r\n\r\nconst _sphere$1 = /*@__PURE__*/ new Sphere();\r\nconst _vector$5 = /*@__PURE__*/ new Vector3();\r\n\r\nclass Frustum {\r\n\r\n\tconstructor( p0, p1, p2, p3, p4, p5 ) {\r\n\r\n\t\tthis.planes = [\r\n\r\n\t\t\t( p0 !== undefined ) ? p0 : new Plane(),\r\n\t\t\t( p1 !== undefined ) ? p1 : new Plane(),\r\n\t\t\t( p2 !== undefined ) ? p2 : new Plane(),\r\n\t\t\t( p3 !== undefined ) ? p3 : new Plane(),\r\n\t\t\t( p4 !== undefined ) ? p4 : new Plane(),\r\n\t\t\t( p5 !== undefined ) ? p5 : new Plane()\r\n\r\n\t\t];\r\n\r\n\t}\r\n\r\n\tset( p0, p1, p2, p3, p4, p5 ) {\r\n\r\n\t\tconst planes = this.planes;\r\n\r\n\t\tplanes[ 0 ].copy( p0 );\r\n\t\tplanes[ 1 ].copy( p1 );\r\n\t\tplanes[ 2 ].copy( p2 );\r\n\t\tplanes[ 3 ].copy( p3 );\r\n\t\tplanes[ 4 ].copy( p4 );\r\n\t\tplanes[ 5 ].copy( p5 );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( frustum ) {\r\n\r\n\t\tconst planes = this.planes;\r\n\r\n\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\tplanes[ i ].copy( frustum.planes[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromProjectionMatrix( m ) {\r\n\r\n\t\tconst planes = this.planes;\r\n\t\tconst me = m.elements;\r\n\t\tconst me0 = me[ 0 ], me1 = me[ 1 ], me2 = me[ 2 ], me3 = me[ 3 ];\r\n\t\tconst me4 = me[ 4 ], me5 = me[ 5 ], me6 = me[ 6 ], me7 = me[ 7 ];\r\n\t\tconst me8 = me[ 8 ], me9 = me[ 9 ], me10 = me[ 10 ], me11 = me[ 11 ];\r\n\t\tconst me12 = me[ 12 ], me13 = me[ 13 ], me14 = me[ 14 ], me15 = me[ 15 ];\r\n\r\n\t\tplanes[ 0 ].setComponents( me3 - me0, me7 - me4, me11 - me8, me15 - me12 ).normalize();\r\n\t\tplanes[ 1 ].setComponents( me3 + me0, me7 + me4, me11 + me8, me15 + me12 ).normalize();\r\n\t\tplanes[ 2 ].setComponents( me3 + me1, me7 + me5, me11 + me9, me15 + me13 ).normalize();\r\n\t\tplanes[ 3 ].setComponents( me3 - me1, me7 - me5, me11 - me9, me15 - me13 ).normalize();\r\n\t\tplanes[ 4 ].setComponents( me3 - me2, me7 - me6, me11 - me10, me15 - me14 ).normalize();\r\n\t\tplanes[ 5 ].setComponents( me3 + me2, me7 + me6, me11 + me10, me15 + me14 ).normalize();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tintersectsObject( object ) {\r\n\r\n\t\tconst geometry = object.geometry;\r\n\r\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\r\n\r\n\t\t_sphere$1.copy( geometry.boundingSphere ).applyMatrix4( object.matrixWorld );\r\n\r\n\t\treturn this.intersectsSphere( _sphere$1 );\r\n\r\n\t}\r\n\r\n\tintersectsSprite( sprite ) {\r\n\r\n\t\t_sphere$1.center.set( 0, 0, 0 );\r\n\t\t_sphere$1.radius = 0.7071067811865476;\r\n\t\t_sphere$1.applyMatrix4( sprite.matrixWorld );\r\n\r\n\t\treturn this.intersectsSphere( _sphere$1 );\r\n\r\n\t}\r\n\r\n\tintersectsSphere( sphere ) {\r\n\r\n\t\tconst planes = this.planes;\r\n\t\tconst center = sphere.center;\r\n\t\tconst negRadius = - sphere.radius;\r\n\r\n\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\tconst distance = planes[ i ].distanceToPoint( center );\r\n\r\n\t\t\tif ( distance < negRadius ) {\r\n\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\r\n\t}\r\n\r\n\tintersectsBox( box ) {\r\n\r\n\t\tconst planes = this.planes;\r\n\r\n\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\tconst plane = planes[ i ];\r\n\r\n\t\t\t// corner at max distance\r\n\r\n\t\t\t_vector$5.x = plane.normal.x > 0 ? box.max.x : box.min.x;\r\n\t\t\t_vector$5.y = plane.normal.y > 0 ? box.max.y : box.min.y;\r\n\t\t\t_vector$5.z = plane.normal.z > 0 ? box.max.z : box.min.z;\r\n\r\n\t\t\tif ( plane.distanceToPoint( _vector$5 ) < 0 ) {\r\n\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\r\n\t}\r\n\r\n\tcontainsPoint( point ) {\r\n\r\n\t\tconst planes = this.planes;\r\n\r\n\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\tif ( planes[ i ].distanceToPoint( point ) < 0 ) {\r\n\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction WebGLAnimation() {\r\n\r\n\tlet context = null;\r\n\tlet isAnimating = false;\r\n\tlet animationLoop = null;\r\n\tlet requestId = null;\r\n\r\n\tfunction onAnimationFrame( time, frame ) {\r\n\r\n\t\tanimationLoop( time, frame );\r\n\r\n\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tstart: function () {\r\n\r\n\t\t\tif ( isAnimating === true ) return;\r\n\t\t\tif ( animationLoop === null ) return;\r\n\r\n\t\t\trequestId = context.requestAnimationFrame( onAnimationFrame );\r\n\r\n\t\t\tisAnimating = true;\r\n\r\n\t\t},\r\n\r\n\t\tstop: function () {\r\n\r\n\t\t\tcontext.cancelAnimationFrame( requestId );\r\n\r\n\t\t\tisAnimating = false;\r\n\r\n\t\t},\r\n\r\n\t\tsetAnimationLoop: function ( callback ) {\r\n\r\n\t\t\tanimationLoop = callback;\r\n\r\n\t\t},\r\n\r\n\t\tsetContext: function ( value ) {\r\n\r\n\t\t\tcontext = value;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLAttributes( gl, capabilities ) {\r\n\r\n\tconst isWebGL2 = capabilities.isWebGL2;\r\n\r\n\tconst buffers = new WeakMap();\r\n\r\n\tfunction createBuffer( attribute, bufferType ) {\r\n\r\n\t\tconst array = attribute.array;\r\n\t\tconst usage = attribute.usage;\r\n\r\n\t\tconst buffer = gl.createBuffer();\r\n\r\n\t\tgl.bindBuffer( bufferType, buffer );\r\n\t\tgl.bufferData( bufferType, array, usage );\r\n\r\n\t\tattribute.onUploadCallback();\r\n\r\n\t\tlet type = 5126;\r\n\r\n\t\tif ( array instanceof Float32Array ) {\r\n\r\n\t\t\ttype = 5126;\r\n\r\n\t\t} else if ( array instanceof Float64Array ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLAttributes: Unsupported data buffer format: Float64Array.' );\r\n\r\n\t\t} else if ( array instanceof Uint16Array ) {\r\n\r\n\t\t\tif ( attribute.isFloat16BufferAttribute ) {\r\n\r\n\t\t\t\tif ( isWebGL2 ) {\r\n\r\n\t\t\t\t\ttype = 5131;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.WebGLAttributes: Usage of Float16BufferAttribute requires WebGL2.' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\ttype = 5123;\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( array instanceof Int16Array ) {\r\n\r\n\t\t\ttype = 5122;\r\n\r\n\t\t} else if ( array instanceof Uint32Array ) {\r\n\r\n\t\t\ttype = 5125;\r\n\r\n\t\t} else if ( array instanceof Int32Array ) {\r\n\r\n\t\t\ttype = 5124;\r\n\r\n\t\t} else if ( array instanceof Int8Array ) {\r\n\r\n\t\t\ttype = 5120;\r\n\r\n\t\t} else if ( array instanceof Uint8Array ) {\r\n\r\n\t\t\ttype = 5121;\r\n\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tbuffer: buffer,\r\n\t\t\ttype: type,\r\n\t\t\tbytesPerElement: array.BYTES_PER_ELEMENT,\r\n\t\t\tversion: attribute.version\r\n\t\t};\r\n\r\n\t}\r\n\r\n\tfunction updateBuffer( buffer, attribute, bufferType ) {\r\n\r\n\t\tconst array = attribute.array;\r\n\t\tconst updateRange = attribute.updateRange;\r\n\r\n\t\tgl.bindBuffer( bufferType, buffer );\r\n\r\n\t\tif ( updateRange.count === - 1 ) {\r\n\r\n\t\t\t// Not using update ranges\r\n\r\n\t\t\tgl.bufferSubData( bufferType, 0, array );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( isWebGL2 ) {\r\n\r\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\r\n\t\t\t\t\tarray, updateRange.offset, updateRange.count );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tgl.bufferSubData( bufferType, updateRange.offset * array.BYTES_PER_ELEMENT,\r\n\t\t\t\t\tarray.subarray( updateRange.offset, updateRange.offset + updateRange.count ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tupdateRange.count = - 1; // reset range\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tfunction get( attribute ) {\r\n\r\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\r\n\r\n\t\treturn buffers.get( attribute );\r\n\r\n\t}\r\n\r\n\tfunction remove( attribute ) {\r\n\r\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\r\n\r\n\t\tconst data = buffers.get( attribute );\r\n\r\n\t\tif ( data ) {\r\n\r\n\t\t\tgl.deleteBuffer( data.buffer );\r\n\r\n\t\t\tbuffers.delete( attribute );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction update( attribute, bufferType ) {\r\n\r\n\t\tif ( attribute.isGLBufferAttribute ) {\r\n\r\n\t\t\tconst cached = buffers.get( attribute );\r\n\r\n\t\t\tif ( ! cached || cached.version < attribute.version ) {\r\n\r\n\t\t\t\tbuffers.set( attribute, {\r\n\t\t\t\t\tbuffer: attribute.buffer,\r\n\t\t\t\t\ttype: attribute.type,\r\n\t\t\t\t\tbytesPerElement: attribute.elementSize,\r\n\t\t\t\t\tversion: attribute.version\r\n\t\t\t\t} );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( attribute.isInterleavedBufferAttribute ) attribute = attribute.data;\r\n\r\n\t\tconst data = buffers.get( attribute );\r\n\r\n\t\tif ( data === undefined ) {\r\n\r\n\t\t\tbuffers.set( attribute, createBuffer( attribute, bufferType ) );\r\n\r\n\t\t} else if ( data.version < attribute.version ) {\r\n\r\n\t\t\tupdateBuffer( data.buffer, attribute, bufferType );\r\n\r\n\t\t\tdata.version = attribute.version;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tget: get,\r\n\t\tremove: remove,\r\n\t\tupdate: update\r\n\r\n\t};\r\n\r\n}\r\n\r\nclass PlaneBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( width = 1, height = 1, widthSegments = 1, heightSegments = 1 ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'PlaneBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t\twidthSegments: widthSegments,\r\n\t\t\theightSegments: heightSegments\r\n\t\t};\r\n\r\n\t\tconst width_half = width / 2;\r\n\t\tconst height_half = height / 2;\r\n\r\n\t\tconst gridX = Math.floor( widthSegments );\r\n\t\tconst gridY = Math.floor( heightSegments );\r\n\r\n\t\tconst gridX1 = gridX + 1;\r\n\t\tconst gridY1 = gridY + 1;\r\n\r\n\t\tconst segment_width = width / gridX;\r\n\t\tconst segment_height = height / gridY;\r\n\r\n\t\t//\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\tfor ( let iy = 0; iy < gridY1; iy ++ ) {\r\n\r\n\t\t\tconst y = iy * segment_height - height_half;\r\n\r\n\t\t\tfor ( let ix = 0; ix < gridX1; ix ++ ) {\r\n\r\n\t\t\t\tconst x = ix * segment_width - width_half;\r\n\r\n\t\t\t\tvertices.push( x, - y, 0 );\r\n\r\n\t\t\t\tnormals.push( 0, 0, 1 );\r\n\r\n\t\t\t\tuvs.push( ix / gridX );\r\n\t\t\t\tuvs.push( 1 - ( iy / gridY ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let iy = 0; iy < gridY; iy ++ ) {\r\n\r\n\t\t\tfor ( let ix = 0; ix < gridX; ix ++ ) {\r\n\r\n\t\t\t\tconst a = ix + gridX1 * iy;\r\n\t\t\t\tconst b = ix + gridX1 * ( iy + 1 );\r\n\t\t\t\tconst c = ( ix + 1 ) + gridX1 * ( iy + 1 );\r\n\t\t\t\tconst d = ( ix + 1 ) + gridX1 * iy;\r\n\r\n\t\t\t\tindices.push( a, b, d );\r\n\t\t\t\tindices.push( b, c, d );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t}\r\n\r\n}\r\n\r\nvar alphamap_fragment = \"#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, vUv ).g;\\n#endif\";\r\n\r\nvar alphamap_pars_fragment = \"#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\r\n\r\nvar alphatest_fragment = \"#ifdef ALPHATEST\\n\\tif ( diffuseColor.a < ALPHATEST ) discard;\\n#endif\";\r\n\r\nvar aomap_fragment = \"#ifdef USE_AOMAP\\n\\tfloat ambientOcclusion = ( texture2D( aoMap, vUv2 ).r - 1.0 ) * aoMapIntensity + 1.0;\\n\\treflectedLight.indirectDiffuse *= ambientOcclusion;\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD )\\n\\t\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.specularRoughness );\\n\\t#endif\\n#endif\";\r\n\r\nvar aomap_pars_fragment = \"#ifdef USE_AOMAP\\n\\tuniform sampler2D aoMap;\\n\\tuniform float aoMapIntensity;\\n#endif\";\r\n\r\nvar begin_vertex = \"vec3 transformed = vec3( position );\";\r\n\r\nvar beginnormal_vertex = \"vec3 objectNormal = vec3( normal );\\n#ifdef USE_TANGENT\\n\\tvec3 objectTangent = vec3( tangent.xyz );\\n#endif\";\r\n\r\nvar bsdfs = \"vec2 integrateSpecularBRDF( const in float dotNV, const in float roughness ) {\\n\\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\\n\\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\\n\\tvec4 r = roughness * c0 + c1;\\n\\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\\n\\treturn vec2( -1.04, 1.04 ) * a004 + r.zw;\\n}\\nfloat punctualLightIntensityToIrradianceFactor( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\\n\\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\\n\\tif( cutoffDistance > 0.0 ) {\\n\\t\\tdistanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\\n\\t}\\n\\treturn distanceFalloff;\\n#else\\n\\tif( cutoffDistance > 0.0 && decayExponent > 0.0 ) {\\n\\t\\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\\n\\t}\\n\\treturn 1.0;\\n#endif\\n}\\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\\n\\treturn RECIPROCAL_PI * diffuseColor;\\n}\\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\\n\\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\\n}\\nvec3 F_Schlick_RoughnessDependent( const in vec3 F0, const in float dotNV, const in float roughness ) {\\n\\tfloat fresnel = exp2( ( -5.55473 * dotNV - 6.98316 ) * dotNV );\\n\\tvec3 Fr = max( vec3( 1.0 - roughness ), F0 ) - F0;\\n\\treturn Fr * fresnel + F0;\\n}\\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\treturn 1.0 / ( gl * gv );\\n}\\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\\n\\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\\n\\treturn 0.5 / max( gv + gl, EPSILON );\\n}\\nfloat D_GGX( const in float alpha, const in float dotNH ) {\\n\\tfloat a2 = pow2( alpha );\\n\\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\\n\\treturn RECIPROCAL_PI * a2 / pow2( denom );\\n}\\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat alpha = pow2( roughness );\\n\\tvec3 halfDir = normalize( incidentLight.direction + viewDir );\\n\\tfloat dotNL = saturate( dot( normal, incidentLight.direction ) );\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tfloat dotNH = saturate( dot( normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\\n\\tfloat D = D_GGX( alpha, dotNH );\\n\\treturn F * ( G * D );\\n}\\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\\n\\tconst float LUT_SIZE = 64.0;\\n\\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\\n\\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\\n\\tfloat dotNV = saturate( dot( N, V ) );\\n\\tvec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\\n\\tuv = uv * LUT_SCALE + LUT_BIAS;\\n\\treturn uv;\\n}\\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\\n\\tfloat l = length( f );\\n\\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\\n}\\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\\n\\tfloat x = dot( v1, v2 );\\n\\tfloat y = abs( x );\\n\\tfloat a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\\n\\tfloat b = 3.4175940 + ( 4.1616724 + y ) * y;\\n\\tfloat v = a / b;\\n\\tfloat theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\\n\\treturn cross( v1, v2 ) * theta_sintheta;\\n}\\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\\n\\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\\n\\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\\n\\tvec3 lightNormal = cross( v1, v2 );\\n\\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\\n\\tvec3 T1, T2;\\n\\tT1 = normalize( V - N * dot( V, N ) );\\n\\tT2 = - cross( N, T1 );\\n\\tmat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\\n\\tvec3 coords[ 4 ];\\n\\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\\n\\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\\n\\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\\n\\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\\n\\tcoords[ 0 ] = normalize( coords[ 0 ] );\\n\\tcoords[ 1 ] = normalize( coords[ 1 ] );\\n\\tcoords[ 2 ] = normalize( coords[ 2 ] );\\n\\tcoords[ 3 ] = normalize( coords[ 3 ] );\\n\\tvec3 vectorFormFactor = vec3( 0.0 );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\\n\\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\\n\\tfloat result = LTC_ClippedSphereFormFactor( vectorFormFactor );\\n\\treturn vec3( result );\\n}\\nvec3 BRDF_Specular_GGX_Environment( const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float roughness ) {\\n\\tfloat dotNV = saturate( dot( normal, viewDir ) );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\treturn specularColor * brdf.x + brdf.y;\\n}\\nvoid BRDF_Specular_Multiscattering_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\\n\\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\\n\\tvec3 F = F_Schlick_RoughnessDependent( specularColor, dotNV, roughness );\\n\\tvec2 brdf = integrateSpecularBRDF( dotNV, roughness );\\n\\tvec3 FssEss = F * brdf.x + brdf.y;\\n\\tfloat Ess = brdf.x + brdf.y;\\n\\tfloat Ems = 1.0 - Ess;\\n\\tvec3 Favg = specularColor + ( 1.0 - specularColor ) * 0.047619;\\tvec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\\n\\tsingleScatter += FssEss;\\n\\tmultiScatter += Fms * Ems;\\n}\\nfloat G_BlinnPhong_Implicit( ) {\\n\\treturn 0.25;\\n}\\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\\n\\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\\n}\\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\\n\\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\\n\\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\\n\\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\\n\\tvec3 F = F_Schlick( specularColor, dotLH );\\n\\tfloat G = G_BlinnPhong_Implicit( );\\n\\tfloat D = D_BlinnPhong( shininess, dotNH );\\n\\treturn F * ( G * D );\\n}\\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\\n\\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\\n}\\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\\n\\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\\n}\\n#if defined( USE_SHEEN )\\nfloat D_Charlie(float roughness, float NoH) {\\n\\tfloat invAlpha = 1.0 / roughness;\\n\\tfloat cos2h = NoH * NoH;\\n\\tfloat sin2h = max(1.0 - cos2h, 0.0078125);\\treturn (2.0 + invAlpha) * pow(sin2h, invAlpha * 0.5) / (2.0 * PI);\\n}\\nfloat V_Neubelt(float NoV, float NoL) {\\n\\treturn saturate(1.0 / (4.0 * (NoL + NoV - NoL * NoV)));\\n}\\nvec3 BRDF_Specular_Sheen( const in float roughness, const in vec3 L, const in GeometricContext geometry, vec3 specularColor ) {\\n\\tvec3 N = geometry.normal;\\n\\tvec3 V = geometry.viewDir;\\n\\tvec3 H = normalize( V + L );\\n\\tfloat dotNH = saturate( dot( N, H ) );\\n\\treturn specularColor * D_Charlie( roughness, dotNH ) * V_Neubelt( dot(N, V), dot(N, L) );\\n}\\n#endif\";\r\n\r\nvar bumpmap_pars_fragment = \"#ifdef USE_BUMPMAP\\n\\tuniform sampler2D bumpMap;\\n\\tuniform float bumpScale;\\n\\tvec2 dHdxy_fwd() {\\n\\t\\tvec2 dSTdx = dFdx( vUv );\\n\\t\\tvec2 dSTdy = dFdy( vUv );\\n\\t\\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\\n\\t\\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\\n\\t\\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\\n\\t\\treturn vec2( dBx, dBy );\\n\\t}\\n\\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\\n\\t\\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\\n\\t\\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\\n\\t\\tvec3 vN = surf_norm;\\n\\t\\tvec3 R1 = cross( vSigmaY, vN );\\n\\t\\tvec3 R2 = cross( vN, vSigmaX );\\n\\t\\tfloat fDet = dot( vSigmaX, R1 );\\n\\t\\tfDet *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\\n\\t\\treturn normalize( abs( fDet ) * surf_norm - vGrad );\\n\\t}\\n#endif\";\r\n\r\nvar clipping_planes_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvec4 plane;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\\n\\t\\tplane = clippingPlanes[ i ];\\n\\t\\tif ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\\n\\t\\tbool clipped = true;\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\\n\\t\\t\\tplane = clippingPlanes[ i ];\\n\\t\\t\\tclipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t\\tif ( clipped ) discard;\\n\\t#endif\\n#endif\";\r\n\r\nvar clipping_planes_pars_fragment = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n\\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\\n#endif\";\r\n\r\nvar clipping_planes_pars_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvarying vec3 vClipPosition;\\n#endif\";\r\n\r\nvar clipping_planes_vertex = \"#if NUM_CLIPPING_PLANES > 0\\n\\tvClipPosition = - mvPosition.xyz;\\n#endif\";\r\n\r\nvar color_fragment = \"#ifdef USE_COLOR\\n\\tdiffuseColor.rgb *= vColor;\\n#endif\";\r\n\r\nvar color_pars_fragment = \"#ifdef USE_COLOR\\n\\tvarying vec3 vColor;\\n#endif\";\r\n\r\nvar color_pars_vertex = \"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvarying vec3 vColor;\\n#endif\";\r\n\r\nvar color_vertex = \"#if defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR )\\n\\tvColor = vec3( 1.0 );\\n#endif\\n#ifdef USE_COLOR\\n\\tvColor.xyz *= color.xyz;\\n#endif\\n#ifdef USE_INSTANCING_COLOR\\n\\tvColor.xyz *= instanceColor.xyz;\\n#endif\";\r\n\r\nvar common = \"#define PI 3.141592653589793\\n#define PI2 6.283185307179586\\n#define PI_HALF 1.5707963267948966\\n#define RECIPROCAL_PI 0.3183098861837907\\n#define RECIPROCAL_PI2 0.15915494309189535\\n#define EPSILON 1e-6\\n#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\n#define whiteComplement(a) ( 1.0 - saturate( a ) )\\nfloat pow2( const in float x ) { return x*x; }\\nfloat pow3( const in float x ) { return x*x*x; }\\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\\nhighp float rand( const in vec2 uv ) {\\n\\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\\n\\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\\n\\treturn fract(sin(sn) * c);\\n}\\n#ifdef HIGH_PRECISION\\n\\tfloat precisionSafeLength( vec3 v ) { return length( v ); }\\n#else\\n\\tfloat max3( vec3 v ) { return max( max( v.x, v.y ), v.z ); }\\n\\tfloat precisionSafeLength( vec3 v ) {\\n\\t\\tfloat maxComponent = max3( abs( v ) );\\n\\t\\treturn length( v / maxComponent ) * maxComponent;\\n\\t}\\n#endif\\nstruct IncidentLight {\\n\\tvec3 color;\\n\\tvec3 direction;\\n\\tbool visible;\\n};\\nstruct ReflectedLight {\\n\\tvec3 directDiffuse;\\n\\tvec3 directSpecular;\\n\\tvec3 indirectDiffuse;\\n\\tvec3 indirectSpecular;\\n};\\nstruct GeometricContext {\\n\\tvec3 position;\\n\\tvec3 normal;\\n\\tvec3 viewDir;\\n#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal;\\n#endif\\n};\\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\\n}\\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\\n\\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\\n}\\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\tfloat distance = dot( planeNormal, point - pointOnPlane );\\n\\treturn - distance * planeNormal + point;\\n}\\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn sign( dot( point - pointOnPlane, planeNormal ) );\\n}\\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\\n\\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\\n}\\nmat3 transposeMat3( const in mat3 m ) {\\n\\tmat3 tmp;\\n\\ttmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\\n\\ttmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\\n\\ttmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\\n\\treturn tmp;\\n}\\nfloat linearToRelativeLuminance( const in vec3 color ) {\\n\\tvec3 weights = vec3( 0.2126, 0.7152, 0.0722 );\\n\\treturn dot( weights, color.rgb );\\n}\\nbool isPerspectiveMatrix( mat4 m ) {\\n\\treturn m[ 2 ][ 3 ] == - 1.0;\\n}\\nvec2 equirectUv( in vec3 dir ) {\\n\\tfloat u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\\n\\tfloat v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\\n\\treturn vec2( u, v );\\n}\";\r\n\r\nvar cube_uv_reflection_fragment = \"#ifdef ENVMAP_TYPE_CUBE_UV\\n\\t#define cubeUV_maxMipLevel 8.0\\n\\t#define cubeUV_minMipLevel 4.0\\n\\t#define cubeUV_maxTileSize 256.0\\n\\t#define cubeUV_minTileSize 16.0\\n\\tfloat getFace( vec3 direction ) {\\n\\t\\tvec3 absDirection = abs( direction );\\n\\t\\tfloat face = - 1.0;\\n\\t\\tif ( absDirection.x > absDirection.z ) {\\n\\t\\t\\tif ( absDirection.x > absDirection.y )\\n\\t\\t\\t\\tface = direction.x > 0.0 ? 0.0 : 3.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t} else {\\n\\t\\t\\tif ( absDirection.z > absDirection.y )\\n\\t\\t\\t\\tface = direction.z > 0.0 ? 2.0 : 5.0;\\n\\t\\t\\telse\\n\\t\\t\\t\\tface = direction.y > 0.0 ? 1.0 : 4.0;\\n\\t\\t}\\n\\t\\treturn face;\\n\\t}\\n\\tvec2 getUV( vec3 direction, float face ) {\\n\\t\\tvec2 uv;\\n\\t\\tif ( face == 0.0 ) {\\n\\t\\t\\tuv = vec2( direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 1.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, - direction.z ) / abs( direction.y );\\n\\t\\t} else if ( face == 2.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.y ) / abs( direction.z );\\n\\t\\t} else if ( face == 3.0 ) {\\n\\t\\t\\tuv = vec2( - direction.z, direction.y ) / abs( direction.x );\\n\\t\\t} else if ( face == 4.0 ) {\\n\\t\\t\\tuv = vec2( - direction.x, direction.z ) / abs( direction.y );\\n\\t\\t} else {\\n\\t\\t\\tuv = vec2( direction.x, direction.y ) / abs( direction.z );\\n\\t\\t}\\n\\t\\treturn 0.5 * ( uv + 1.0 );\\n\\t}\\n\\tvec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\\n\\t\\tfloat face = getFace( direction );\\n\\t\\tfloat filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\\n\\t\\tmipInt = max( mipInt, cubeUV_minMipLevel );\\n\\t\\tfloat faceSize = exp2( mipInt );\\n\\t\\tfloat texelSize = 1.0 / ( 3.0 * cubeUV_maxTileSize );\\n\\t\\tvec2 uv = getUV( direction, face ) * ( faceSize - 1.0 );\\n\\t\\tvec2 f = fract( uv );\\n\\t\\tuv += 0.5 - f;\\n\\t\\tif ( face > 2.0 ) {\\n\\t\\t\\tuv.y += faceSize;\\n\\t\\t\\tface -= 3.0;\\n\\t\\t}\\n\\t\\tuv.x += face * faceSize;\\n\\t\\tif ( mipInt < cubeUV_maxMipLevel ) {\\n\\t\\t\\tuv.y += 2.0 * cubeUV_maxTileSize;\\n\\t\\t}\\n\\t\\tuv.y += filterInt * 2.0 * cubeUV_minTileSize;\\n\\t\\tuv.x += 3.0 * max( 0.0, cubeUV_maxTileSize - 2.0 * faceSize );\\n\\t\\tuv *= texelSize;\\n\\t\\tvec3 tl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x += texelSize;\\n\\t\\tvec3 tr = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.y += texelSize;\\n\\t\\tvec3 br = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tuv.x -= texelSize;\\n\\t\\tvec3 bl = envMapTexelToLinear( texture2D( envMap, uv ) ).rgb;\\n\\t\\tvec3 tm = mix( tl, tr, f.x );\\n\\t\\tvec3 bm = mix( bl, br, f.x );\\n\\t\\treturn mix( tm, bm, f.y );\\n\\t}\\n\\t#define r0 1.0\\n\\t#define v0 0.339\\n\\t#define m0 - 2.0\\n\\t#define r1 0.8\\n\\t#define v1 0.276\\n\\t#define m1 - 1.0\\n\\t#define r4 0.4\\n\\t#define v4 0.046\\n\\t#define m4 2.0\\n\\t#define r5 0.305\\n\\t#define v5 0.016\\n\\t#define m5 3.0\\n\\t#define r6 0.21\\n\\t#define v6 0.0038\\n\\t#define m6 4.0\\n\\tfloat roughnessToMip( float roughness ) {\\n\\t\\tfloat mip = 0.0;\\n\\t\\tif ( roughness >= r1 ) {\\n\\t\\t\\tmip = ( r0 - roughness ) * ( m1 - m0 ) / ( r0 - r1 ) + m0;\\n\\t\\t} else if ( roughness >= r4 ) {\\n\\t\\t\\tmip = ( r1 - roughness ) * ( m4 - m1 ) / ( r1 - r4 ) + m1;\\n\\t\\t} else if ( roughness >= r5 ) {\\n\\t\\t\\tmip = ( r4 - roughness ) * ( m5 - m4 ) / ( r4 - r5 ) + m4;\\n\\t\\t} else if ( roughness >= r6 ) {\\n\\t\\t\\tmip = ( r5 - roughness ) * ( m6 - m5 ) / ( r5 - r6 ) + m5;\\n\\t\\t} else {\\n\\t\\t\\tmip = - 2.0 * log2( 1.16 * roughness );\\t\\t}\\n\\t\\treturn mip;\\n\\t}\\n\\tvec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\\n\\t\\tfloat mip = clamp( roughnessToMip( roughness ), m0, cubeUV_maxMipLevel );\\n\\t\\tfloat mipF = fract( mip );\\n\\t\\tfloat mipInt = floor( mip );\\n\\t\\tvec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\\n\\t\\tif ( mipF == 0.0 ) {\\n\\t\\t\\treturn vec4( color0, 1.0 );\\n\\t\\t} else {\\n\\t\\t\\tvec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\\n\\t\\t\\treturn vec4( mix( color0, color1, mipF ), 1.0 );\\n\\t\\t}\\n\\t}\\n#endif\";\r\n\r\nvar defaultnormal_vertex = \"vec3 transformedNormal = objectNormal;\\n#ifdef USE_INSTANCING\\n\\tmat3 m = mat3( instanceMatrix );\\n\\ttransformedNormal /= vec3( dot( m[ 0 ], m[ 0 ] ), dot( m[ 1 ], m[ 1 ] ), dot( m[ 2 ], m[ 2 ] ) );\\n\\ttransformedNormal = m * transformedNormal;\\n#endif\\ntransformedNormal = normalMatrix * transformedNormal;\\n#ifdef FLIP_SIDED\\n\\ttransformedNormal = - transformedNormal;\\n#endif\\n#ifdef USE_TANGENT\\n\\tvec3 transformedTangent = ( modelViewMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#ifdef FLIP_SIDED\\n\\t\\ttransformedTangent = - transformedTangent;\\n\\t#endif\\n#endif\";\r\n\r\nvar displacementmap_pars_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\tuniform sampler2D displacementMap;\\n\\tuniform float displacementScale;\\n\\tuniform float displacementBias;\\n#endif\";\r\n\r\nvar displacementmap_vertex = \"#ifdef USE_DISPLACEMENTMAP\\n\\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, vUv ).x * displacementScale + displacementBias );\\n#endif\";\r\n\r\nvar emissivemap_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\\n\\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\\n\\ttotalEmissiveRadiance *= emissiveColor.rgb;\\n#endif\";\r\n\r\nvar emissivemap_pars_fragment = \"#ifdef USE_EMISSIVEMAP\\n\\tuniform sampler2D emissiveMap;\\n#endif\";\r\n\r\nvar encodings_fragment = \"gl_FragColor = linearToOutputTexel( gl_FragColor );\";\r\n\r\nvar encodings_pars_fragment = \"\\nvec4 LinearToLinear( in vec4 value ) {\\n\\treturn value;\\n}\\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( gammaFactor ) ), value.a );\\n}\\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\\n\\treturn vec4( pow( value.rgb, vec3( 1.0 / gammaFactor ) ), value.a );\\n}\\nvec4 sRGBToLinear( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\\n}\\nvec4 LinearTosRGB( in vec4 value ) {\\n\\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\\n}\\nvec4 RGBEToLinear( in vec4 value ) {\\n\\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\\n}\\nvec4 LinearToRGBE( in vec4 value ) {\\n\\tfloat maxComponent = max( max( value.r, value.g ), value.b );\\n\\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\\n\\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\\n}\\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * value.a * maxRange, 1.0 );\\n}\\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\\n\\tM = ceil( M * 255.0 ) / 255.0;\\n\\treturn vec4( value.rgb / ( M * maxRange ), M );\\n}\\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\\n\\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\\n}\\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\\n\\tfloat maxRGB = max( value.r, max( value.g, value.b ) );\\n\\tfloat D = max( maxRange / maxRGB, 1.0 );\\n\\tD = clamp( floor( D ) / 255.0, 0.0, 1.0 );\\n\\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\\n}\\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\\nvec4 LinearToLogLuv( in vec4 value ) {\\n\\tvec3 Xp_Y_XYZp = cLogLuvM * value.rgb;\\n\\tXp_Y_XYZp = max( Xp_Y_XYZp, vec3( 1e-6, 1e-6, 1e-6 ) );\\n\\tvec4 vResult;\\n\\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\\n\\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\\n\\tvResult.w = fract( Le );\\n\\tvResult.z = ( Le - ( floor( vResult.w * 255.0 ) ) / 255.0 ) / 255.0;\\n\\treturn vResult;\\n}\\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\\nvec4 LogLuvToLinear( in vec4 value ) {\\n\\tfloat Le = value.z * 255.0 + value.w;\\n\\tvec3 Xp_Y_XYZp;\\n\\tXp_Y_XYZp.y = exp2( ( Le - 127.0 ) / 2.0 );\\n\\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\\n\\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\\n\\tvec3 vRGB = cLogLuvInverseM * Xp_Y_XYZp.rgb;\\n\\treturn vec4( max( vRGB, 0.0 ), 1.0 );\\n}\";\r\n\r\nvar envmap_fragment = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvec3 cameraToFrag;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToFrag = normalize( vWorldPosition - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( cameraToFrag, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#else\\n\\t\\tvec3 reflectVec = vReflect;\\n\\t#endif\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tvec4 envColor = textureCube( envMap, vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\\n\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tvec4 envColor = textureCubeUV( envMap, reflectVec, 0.0 );\\n\\t#else\\n\\t\\tvec4 envColor = vec4( 0.0 );\\n\\t#endif\\n\\t#ifndef ENVMAP_TYPE_CUBE_UV\\n\\t\\tenvColor = envMapTexelToLinear( envColor );\\n\\t#endif\\n\\t#ifdef ENVMAP_BLENDING_MULTIPLY\\n\\t\\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_MIX )\\n\\t\\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\\n\\t#elif defined( ENVMAP_BLENDING_ADD )\\n\\t\\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\\n\\t#endif\\n#endif\";\r\n\r\nvar envmap_common_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float envMapIntensity;\\n\\tuniform float flipEnvMap;\\n\\tuniform int maxMipLevel;\\n\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\tuniform samplerCube envMap;\\n\\t#else\\n\\t\\tuniform sampler2D envMap;\\n\\t#endif\\n\\t\\n#endif\";\r\n\r\nvar envmap_pars_fragment = \"#ifdef USE_ENVMAP\\n\\tuniform float reflectivity;\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t\\tuniform float refractionRatio;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t#endif\\n#endif\";\r\n\r\nvar envmap_pars_vertex = \"#ifdef USE_ENVMAP\\n\\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) ||defined( PHONG )\\n\\t\\t#define ENV_WORLDPOS\\n\\t#endif\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\t\\n\\t\\tvarying vec3 vWorldPosition;\\n\\t#else\\n\\t\\tvarying vec3 vReflect;\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n#endif\";\r\n\r\nvar envmap_vertex = \"#ifdef USE_ENVMAP\\n\\t#ifdef ENV_WORLDPOS\\n\\t\\tvWorldPosition = worldPosition.xyz;\\n\\t#else\\n\\t\\tvec3 cameraToVertex;\\n\\t\\tif ( isOrthographic ) {\\n\\t\\t\\tcameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\\n\\t\\t} else {\\n\\t\\t\\tcameraToVertex = normalize( worldPosition.xyz - cameraPosition );\\n\\t\\t}\\n\\t\\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvReflect = reflect( cameraToVertex, worldNormal );\\n\\t\\t#else\\n\\t\\t\\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\\n\\t\\t#endif\\n\\t#endif\\n#endif\";\r\n\r\nvar fog_vertex = \"#ifdef USE_FOG\\n\\tfogDepth = - mvPosition.z;\\n#endif\";\r\n\r\nvar fog_pars_vertex = \"#ifdef USE_FOG\\n\\tvarying float fogDepth;\\n#endif\";\r\n\r\nvar fog_fragment = \"#ifdef USE_FOG\\n\\t#ifdef FOG_EXP2\\n\\t\\tfloat fogFactor = 1.0 - exp( - fogDensity * fogDensity * fogDepth * fogDepth );\\n\\t#else\\n\\t\\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\\n\\t#endif\\n\\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\\n#endif\";\r\n\r\nvar fog_pars_fragment = \"#ifdef USE_FOG\\n\\tuniform vec3 fogColor;\\n\\tvarying float fogDepth;\\n\\t#ifdef FOG_EXP2\\n\\t\\tuniform float fogDensity;\\n\\t#else\\n\\t\\tuniform float fogNear;\\n\\t\\tuniform float fogFar;\\n\\t#endif\\n#endif\";\r\n\r\nvar gradientmap_pars_fragment = \"#ifdef USE_GRADIENTMAP\\n\\tuniform sampler2D gradientMap;\\n#endif\\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\\n\\tfloat dotNL = dot( normal, lightDirection );\\n\\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\\n\\t#ifdef USE_GRADIENTMAP\\n\\t\\treturn texture2D( gradientMap, coord ).rgb;\\n\\t#else\\n\\t\\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\\n\\t#endif\\n}\";\r\n\r\nvar lightmap_fragment = \"#ifdef USE_LIGHTMAP\\n\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\treflectedLight.indirectDiffuse += PI * lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n#endif\";\r\n\r\nvar lightmap_pars_fragment = \"#ifdef USE_LIGHTMAP\\n\\tuniform sampler2D lightMap;\\n\\tuniform float lightMapIntensity;\\n#endif\";\r\n\r\nvar lights_lambert_vertex = \"vec3 diffuse = vec3( 1.0 );\\nGeometricContext geometry;\\ngeometry.position = mvPosition.xyz;\\ngeometry.normal = normalize( transformedNormal );\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( -mvPosition.xyz );\\nGeometricContext backGeometry;\\nbackGeometry.position = geometry.position;\\nbackGeometry.normal = -geometry.normal;\\nbackGeometry.viewDir = geometry.viewDir;\\nvLightFront = vec3( 0.0 );\\nvIndirectFront = vec3( 0.0 );\\n#ifdef DOUBLE_SIDED\\n\\tvLightBack = vec3( 0.0 );\\n\\tvIndirectBack = vec3( 0.0 );\\n#endif\\nIncidentLight directLight;\\nfloat dotNL;\\nvec3 directLightColor_Diffuse;\\nvIndirectFront += getAmbientLightIrradiance( ambientLightColor );\\nvIndirectFront += getLightProbeIrradiance( lightProbe, geometry );\\n#ifdef DOUBLE_SIDED\\n\\tvIndirectBack += getAmbientLightIrradiance( ambientLightColor );\\n\\tvIndirectBack += getLightProbeIrradiance( lightProbe, backGeometry );\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_DIR_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\\n\\t\\tdotNL = dot( geometry.normal, directLight.direction );\\n\\t\\tdirectLightColor_Diffuse = PI * directLight.color;\\n\\t\\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\tvIndirectFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\tvIndirectBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\\n\\t\\t#endif\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\";\r\n\r\nvar lights_pars_begin = \"uniform bool receiveShadow;\\nuniform vec3 ambientLightColor;\\nuniform vec3 lightProbe[ 9 ];\\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\\n\\tfloat x = normal.x, y = normal.y, z = normal.z;\\n\\tvec3 result = shCoefficients[ 0 ] * 0.886227;\\n\\tresult += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\\n\\tresult += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\\n\\tresult += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\\n\\tresult += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\\n\\tresult += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\\n\\tresult += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\\n\\tresult += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\\n\\tresult += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\\n\\treturn result;\\n}\\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in GeometricContext geometry ) {\\n\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\tvec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\\n\\treturn irradiance;\\n}\\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\\n\\tvec3 irradiance = ambientLightColor;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treturn irradiance;\\n}\\n#if NUM_DIR_LIGHTS > 0\\n\\tstruct DirectionalLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t};\\n\\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\\n\\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tdirectLight.color = directionalLight.color;\\n\\t\\tdirectLight.direction = directionalLight.direction;\\n\\t\\tdirectLight.visible = true;\\n\\t}\\n#endif\\n#if NUM_POINT_LIGHTS > 0\\n\\tstruct PointLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t};\\n\\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\\n\\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = pointLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tdirectLight.color = pointLight.color;\\n\\t\\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\\n\\t\\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\\n\\t}\\n#endif\\n#if NUM_SPOT_LIGHTS > 0\\n\\tstruct SpotLight {\\n\\t\\tvec3 position;\\n\\t\\tvec3 direction;\\n\\t\\tvec3 color;\\n\\t\\tfloat distance;\\n\\t\\tfloat decay;\\n\\t\\tfloat coneCos;\\n\\t\\tfloat penumbraCos;\\n\\t};\\n\\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\\n\\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\\n\\t\\tvec3 lVector = spotLight.position - geometry.position;\\n\\t\\tdirectLight.direction = normalize( lVector );\\n\\t\\tfloat lightDistance = length( lVector );\\n\\t\\tfloat angleCos = dot( directLight.direction, spotLight.direction );\\n\\t\\tif ( angleCos > spotLight.coneCos ) {\\n\\t\\t\\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\\n\\t\\t\\tdirectLight.color = spotLight.color;\\n\\t\\t\\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\\n\\t\\t\\tdirectLight.visible = true;\\n\\t\\t} else {\\n\\t\\t\\tdirectLight.color = vec3( 0.0 );\\n\\t\\t\\tdirectLight.visible = false;\\n\\t\\t}\\n\\t}\\n#endif\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tstruct RectAreaLight {\\n\\t\\tvec3 color;\\n\\t\\tvec3 position;\\n\\t\\tvec3 halfWidth;\\n\\t\\tvec3 halfHeight;\\n\\t};\\n\\tuniform sampler2D ltc_1;\\tuniform sampler2D ltc_2;\\n\\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\\n#endif\\n#if NUM_HEMI_LIGHTS > 0\\n\\tstruct HemisphereLight {\\n\\t\\tvec3 direction;\\n\\t\\tvec3 skyColor;\\n\\t\\tvec3 groundColor;\\n\\t};\\n\\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\\n\\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\\n\\t\\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\\n\\t\\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\\n\\t\\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tirradiance *= PI;\\n\\t\\t#endif\\n\\t\\treturn irradiance;\\n\\t}\\n#endif\";\r\n\r\nvar envmap_physical_pars_fragment = \"#if defined( USE_ENVMAP )\\n\\t#ifdef ENVMAP_MODE_REFRACTION\\n\\t\\tuniform float refractionRatio;\\n\\t#endif\\n\\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\\n\\t\\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, worldNormal, 1.0 );\\n\\t\\t#else\\n\\t\\t\\tvec4 envMapColor = vec4( 0.0 );\\n\\t\\t#endif\\n\\t\\treturn PI * envMapColor.rgb * envMapIntensity;\\n\\t}\\n\\tfloat getSpecularMIPLevel( const in float roughness, const in int maxMIPLevel ) {\\n\\t\\tfloat maxMIPLevelScalar = float( maxMIPLevel );\\n\\t\\tfloat sigma = PI * roughness * roughness / ( 1.0 + roughness );\\n\\t\\tfloat desiredMIPLevel = maxMIPLevelScalar + log2( sigma );\\n\\t\\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\\n\\t}\\n\\tvec3 getLightProbeIndirectRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in int maxMIPLevel ) {\\n\\t\\t#ifdef ENVMAP_MODE_REFLECTION\\n\\t\\t\\tvec3 reflectVec = reflect( -viewDir, normal );\\n\\t\\t\\treflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\\n\\t\\t#else\\n\\t\\t\\tvec3 reflectVec = refract( -viewDir, normal, refractionRatio );\\n\\t\\t#endif\\n\\t\\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\\n\\t\\tfloat specularMIPLevel = getSpecularMIPLevel( roughness, maxMIPLevel );\\n\\t\\t#ifdef ENVMAP_TYPE_CUBE\\n\\t\\t\\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\\n\\t\\t\\t#ifdef TEXTURE_LOD_EXT\\n\\t\\t\\t\\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#else\\n\\t\\t\\t\\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\\n\\t\\t\\t#endif\\n\\t\\t\\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\\n\\t\\t#elif defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\t\\tvec4 envMapColor = textureCubeUV( envMap, reflectVec, roughness );\\n\\t\\t#endif\\n\\t\\treturn envMapColor.rgb * envMapIntensity;\\n\\t}\\n#endif\";\r\n\r\nvar lights_toon_fragment = \"ToonMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\";\r\n\r\nvar lights_toon_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct ToonMaterial {\\n\\tvec3 diffuseColor;\\n};\\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in GeometricContext geometry, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Toon\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Toon\\n#define Material_LightProbeLOD( material )\\t(0)\";\r\n\r\nvar lights_phong_fragment = \"BlinnPhongMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb;\\nmaterial.specularColor = specular;\\nmaterial.specularShininess = shininess;\\nmaterial.specularStrength = specularStrength;\";\r\n\r\nvar lights_phong_pars_fragment = \"varying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\nstruct BlinnPhongMaterial {\\n\\tvec3 diffuseColor;\\n\\tvec3 specularColor;\\n\\tfloat specularShininess;\\n\\tfloat specularStrength;\\n};\\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n\\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\\n}\\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_BlinnPhong\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_BlinnPhong\\n#define Material_LightProbeLOD( material )\\t(0)\";\r\n\r\nvar lights_physical_fragment = \"PhysicalMaterial material;\\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\\nvec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );\\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\\nmaterial.specularRoughness = max( roughnessFactor, 0.0525 );material.specularRoughness += geometryRoughness;\\nmaterial.specularRoughness = min( material.specularRoughness, 1.0 );\\n#ifdef REFLECTIVITY\\n\\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\\n#else\\n\\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\\n#endif\\n#ifdef CLEARCOAT\\n\\tmaterial.clearcoat = clearcoat;\\n\\tmaterial.clearcoatRoughness = clearcoatRoughness;\\n\\t#ifdef USE_CLEARCOATMAP\\n\\t\\tmaterial.clearcoat *= texture2D( clearcoatMap, vUv ).x;\\n\\t#endif\\n\\t#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\t\\tmaterial.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vUv ).y;\\n\\t#endif\\n\\tmaterial.clearcoat = saturate( material.clearcoat );\\tmaterial.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\\n\\tmaterial.clearcoatRoughness += geometryRoughness;\\n\\tmaterial.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\\n#endif\\n#ifdef USE_SHEEN\\n\\tmaterial.sheenColor = sheen;\\n#endif\";\r\n\r\nvar lights_physical_pars_fragment = \"struct PhysicalMaterial {\\n\\tvec3 diffuseColor;\\n\\tfloat specularRoughness;\\n\\tvec3 specularColor;\\n#ifdef CLEARCOAT\\n\\tfloat clearcoat;\\n\\tfloat clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tvec3 sheenColor;\\n#endif\\n};\\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\\nfloat clearcoatDHRApprox( const in float roughness, const in float dotNL ) {\\n\\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\\n}\\n#if NUM_RECT_AREA_LIGHTS > 0\\n\\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\t\\tvec3 normal = geometry.normal;\\n\\t\\tvec3 viewDir = geometry.viewDir;\\n\\t\\tvec3 position = geometry.position;\\n\\t\\tvec3 lightPos = rectAreaLight.position;\\n\\t\\tvec3 halfWidth = rectAreaLight.halfWidth;\\n\\t\\tvec3 halfHeight = rectAreaLight.halfHeight;\\n\\t\\tvec3 lightColor = rectAreaLight.color;\\n\\t\\tfloat roughness = material.specularRoughness;\\n\\t\\tvec3 rectCoords[ 4 ];\\n\\t\\trectCoords[ 0 ] = lightPos + halfWidth - halfHeight;\\t\\trectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\\n\\t\\trectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\\n\\t\\trectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\\n\\t\\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\\n\\t\\tvec4 t1 = texture2D( ltc_1, uv );\\n\\t\\tvec4 t2 = texture2D( ltc_2, uv );\\n\\t\\tmat3 mInv = mat3(\\n\\t\\t\\tvec3( t1.x, 0, t1.y ),\\n\\t\\t\\tvec3( 0, 1, 0 ),\\n\\t\\t\\tvec3( t1.z, 0, t1.w )\\n\\t\\t);\\n\\t\\tvec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\\n\\t\\treflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\\n\\t\\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\\n\\t}\\n#endif\\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\\n\\tvec3 irradiance = dotNL * directLight.color;\\n\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\tirradiance *= PI;\\n\\t#endif\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNL = saturate( dot( geometry.clearcoatNormal, directLight.direction ) );\\n\\t\\tvec3 ccIrradiance = ccDotNL * directLight.color;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tccIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t\\treflectedLight.directSpecular += ccIrradiance * material.clearcoat * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\t#ifdef USE_SHEEN\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_Sheen(\\n\\t\\t\\tmaterial.specularRoughness,\\n\\t\\t\\tdirectLight.direction,\\n\\t\\t\\tgeometry,\\n\\t\\t\\tmaterial.sheenColor\\n\\t\\t);\\n\\t#else\\n\\t\\treflectedLight.directSpecular += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry.viewDir, geometry.normal, material.specularColor, material.specularRoughness);\\n\\t#endif\\n\\treflectedLight.directDiffuse += ( 1.0 - clearcoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\\n\\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\\n}\\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\\n\\t#ifdef CLEARCOAT\\n\\t\\tfloat ccDotNV = saturate( dot( geometry.clearcoatNormal, geometry.viewDir ) );\\n\\t\\treflectedLight.indirectSpecular += clearcoatRadiance * material.clearcoat * BRDF_Specular_GGX_Environment( geometry.viewDir, geometry.clearcoatNormal, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearcoatRoughness );\\n\\t\\tfloat ccDotNL = ccDotNV;\\n\\t\\tfloat clearcoatDHR = material.clearcoat * clearcoatDHRApprox( material.clearcoatRoughness, ccDotNL );\\n\\t#else\\n\\t\\tfloat clearcoatDHR = 0.0;\\n\\t#endif\\n\\tfloat clearcoatInv = 1.0 - clearcoatDHR;\\n\\tvec3 singleScattering = vec3( 0.0 );\\n\\tvec3 multiScattering = vec3( 0.0 );\\n\\tvec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\\n\\tBRDF_Specular_Multiscattering_Environment( geometry, material.specularColor, material.specularRoughness, singleScattering, multiScattering );\\n\\tvec3 diffuse = material.diffuseColor * ( 1.0 - ( singleScattering + multiScattering ) );\\n\\treflectedLight.indirectSpecular += clearcoatInv * radiance * singleScattering;\\n\\treflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\\n\\treflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\\n}\\n#define RE_Direct\\t\\t\\t\\tRE_Direct_Physical\\n#define RE_Direct_RectArea\\t\\tRE_Direct_RectArea_Physical\\n#define RE_IndirectDiffuse\\t\\tRE_IndirectDiffuse_Physical\\n#define RE_IndirectSpecular\\t\\tRE_IndirectSpecular_Physical\\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\\n\\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\\n}\";\r\n\r\nvar lights_fragment_begin = \"\\nGeometricContext geometry;\\ngeometry.position = - vViewPosition;\\ngeometry.normal = normal;\\ngeometry.viewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\\n#ifdef CLEARCOAT\\n\\tgeometry.clearcoatNormal = clearcoatNormal;\\n#endif\\nIncidentLight directLight;\\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tPointLight pointLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\\n\\t\\tpointLight = pointLights[ i ];\\n\\t\\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\\n\\t\\tpointLightShadow = pointLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tSpotLight spotLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\\n\\t\\tspotLight = spotLights[ i ];\\n\\t\\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\\n\\t\\tspotLightShadow = spotLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\\n\\tDirectionalLight directionalLight;\\n\\t#if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLightShadow;\\n\\t#endif\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLights[ i ];\\n\\t\\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\\n\\t\\t#if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\\n\\t\\tdirectionalLightShadow = directionalLightShadows[ i ];\\n\\t\\tdirectLight.color *= all( bvec2( directLight.visible, receiveShadow ) ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t\\t#endif\\n\\t\\tRE_Direct( directLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\\n\\tRectAreaLight rectAreaLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\\n\\t\\trectAreaLight = rectAreaLights[ i ];\\n\\t\\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\\n\\t}\\n\\t#pragma unroll_loop_end\\n#endif\\n#if defined( RE_IndirectDiffuse )\\n\\tvec3 iblIrradiance = vec3( 0.0 );\\n\\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\\n\\tirradiance += getLightProbeIrradiance( lightProbe, geometry );\\n\\t#if ( NUM_HEMI_LIGHTS > 0 )\\n\\t\\t#pragma unroll_loop_start\\n\\t\\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\\n\\t\\t\\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\\n\\t\\t}\\n\\t\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tvec3 radiance = vec3( 0.0 );\\n\\tvec3 clearcoatRadiance = vec3( 0.0 );\\n#endif\";\r\n\r\nvar lights_fragment_maps = \"#if defined( RE_IndirectDiffuse )\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\tvec3 lightMapIrradiance = lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t\\t#ifndef PHYSICALLY_CORRECT_LIGHTS\\n\\t\\t\\tlightMapIrradiance *= PI;\\n\\t\\t#endif\\n\\t\\tirradiance += lightMapIrradiance;\\n\\t#endif\\n\\t#if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\\n\\t\\tiblIrradiance += getLightProbeIndirectIrradiance( geometry, maxMipLevel );\\n\\t#endif\\n#endif\\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\\n\\tradiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.normal, material.specularRoughness, maxMipLevel );\\n\\t#ifdef CLEARCOAT\\n\\t\\tclearcoatRadiance += getLightProbeIndirectRadiance( geometry.viewDir, geometry.clearcoatNormal, material.clearcoatRoughness, maxMipLevel );\\n\\t#endif\\n#endif\";\r\n\r\nvar lights_fragment_end = \"#if defined( RE_IndirectDiffuse )\\n\\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\\n#endif\\n#if defined( RE_IndirectSpecular )\\n\\tRE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometry, material, reflectedLight );\\n#endif\";\r\n\r\nvar logdepthbuf_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tgl_FragDepthEXT = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\\n#endif\";\r\n\r\nvar logdepthbuf_pars_fragment = \"#if defined( USE_LOGDEPTHBUF ) && defined( USE_LOGDEPTHBUF_EXT )\\n\\tuniform float logDepthBufFC;\\n\\tvarying float vFragDepth;\\n\\tvarying float vIsPerspective;\\n#endif\";\r\n\r\nvar logdepthbuf_pars_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvarying float vFragDepth;\\n\\t\\tvarying float vIsPerspective;\\n\\t#else\\n\\t\\tuniform float logDepthBufFC;\\n\\t#endif\\n#endif\";\r\n\r\nvar logdepthbuf_vertex = \"#ifdef USE_LOGDEPTHBUF\\n\\t#ifdef USE_LOGDEPTHBUF_EXT\\n\\t\\tvFragDepth = 1.0 + gl_Position.w;\\n\\t\\tvIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\\n\\t#else\\n\\t\\tif ( isPerspectiveMatrix( projectionMatrix ) ) {\\n\\t\\t\\tgl_Position.z = log2( max( EPSILON, gl_Position.w + 1.0 ) ) * logDepthBufFC - 1.0;\\n\\t\\t\\tgl_Position.z *= gl_Position.w;\\n\\t\\t}\\n\\t#endif\\n#endif\";\r\n\r\nvar map_fragment = \"#ifdef USE_MAP\\n\\tvec4 texelColor = texture2D( map, vUv );\\n\\ttexelColor = mapTexelToLinear( texelColor );\\n\\tdiffuseColor *= texelColor;\\n#endif\";\r\n\r\nvar map_pars_fragment = \"#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\";\r\n\r\nvar map_particle_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tvec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\\n#endif\\n#ifdef USE_MAP\\n\\tvec4 mapTexel = texture2D( map, uv );\\n\\tdiffuseColor *= mapTexelToLinear( mapTexel );\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tdiffuseColor.a *= texture2D( alphaMap, uv ).g;\\n#endif\";\r\n\r\nvar map_particle_pars_fragment = \"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\\n\\tuniform mat3 uvTransform;\\n#endif\\n#ifdef USE_MAP\\n\\tuniform sampler2D map;\\n#endif\\n#ifdef USE_ALPHAMAP\\n\\tuniform sampler2D alphaMap;\\n#endif\";\r\n\r\nvar metalnessmap_fragment = \"float metalnessFactor = metalness;\\n#ifdef USE_METALNESSMAP\\n\\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\\n\\tmetalnessFactor *= texelMetalness.b;\\n#endif\";\r\n\r\nvar metalnessmap_pars_fragment = \"#ifdef USE_METALNESSMAP\\n\\tuniform sampler2D metalnessMap;\\n#endif\";\r\n\r\nvar morphnormal_vertex = \"#ifdef USE_MORPHNORMALS\\n\\tobjectNormal *= morphTargetBaseInfluence;\\n\\tobjectNormal += morphNormal0 * morphTargetInfluences[ 0 ];\\n\\tobjectNormal += morphNormal1 * morphTargetInfluences[ 1 ];\\n\\tobjectNormal += morphNormal2 * morphTargetInfluences[ 2 ];\\n\\tobjectNormal += morphNormal3 * morphTargetInfluences[ 3 ];\\n#endif\";\r\n\r\nvar morphtarget_pars_vertex = \"#ifdef USE_MORPHTARGETS\\n\\tuniform float morphTargetBaseInfluence;\\n\\t#ifndef USE_MORPHNORMALS\\n\\t\\tuniform float morphTargetInfluences[ 8 ];\\n\\t#else\\n\\t\\tuniform float morphTargetInfluences[ 4 ];\\n\\t#endif\\n#endif\";\r\n\r\nvar morphtarget_vertex = \"#ifdef USE_MORPHTARGETS\\n\\ttransformed *= morphTargetBaseInfluence;\\n\\ttransformed += morphTarget0 * morphTargetInfluences[ 0 ];\\n\\ttransformed += morphTarget1 * morphTargetInfluences[ 1 ];\\n\\ttransformed += morphTarget2 * morphTargetInfluences[ 2 ];\\n\\ttransformed += morphTarget3 * morphTargetInfluences[ 3 ];\\n\\t#ifndef USE_MORPHNORMALS\\n\\t\\ttransformed += morphTarget4 * morphTargetInfluences[ 4 ];\\n\\t\\ttransformed += morphTarget5 * morphTargetInfluences[ 5 ];\\n\\t\\ttransformed += morphTarget6 * morphTargetInfluences[ 6 ];\\n\\t\\ttransformed += morphTarget7 * morphTargetInfluences[ 7 ];\\n\\t#endif\\n#endif\";\r\n\r\nvar normal_fragment_begin = \"#ifdef FLAT_SHADED\\n\\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\\n\\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\\n\\tvec3 normal = normalize( cross( fdx, fdy ) );\\n#else\\n\\tvec3 normal = normalize( vNormal );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\t#ifdef USE_TANGENT\\n\\t\\tvec3 tangent = normalize( vTangent );\\n\\t\\tvec3 bitangent = normalize( vBitangent );\\n\\t\\t#ifdef DOUBLE_SIDED\\n\\t\\t\\ttangent = tangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t\\tbitangent = bitangent * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\t#endif\\n\\t\\t#if defined( TANGENTSPACE_NORMALMAP ) || defined( USE_CLEARCOAT_NORMALMAP )\\n\\t\\t\\tmat3 vTBN = mat3( tangent, bitangent, normal );\\n\\t\\t#endif\\n\\t#endif\\n#endif\\nvec3 geometryNormal = normal;\";\r\n\r\nvar normal_fragment_maps = \"#ifdef OBJECTSPACE_NORMALMAP\\n\\tnormal = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\t#ifdef FLIP_SIDED\\n\\t\\tnormal = - normal;\\n\\t#endif\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\tnormal = normal * ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t#endif\\n\\tnormal = normalize( normalMatrix * normal );\\n#elif defined( TANGENTSPACE_NORMALMAP )\\n\\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tmapN.xy *= normalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tnormal = normalize( vTBN * mapN );\\n\\t#else\\n\\t\\tnormal = perturbNormal2Arb( -vViewPosition, normal, mapN );\\n\\t#endif\\n#elif defined( USE_BUMPMAP )\\n\\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\\n#endif\";\r\n\r\nvar normalmap_pars_fragment = \"#ifdef USE_NORMALMAP\\n\\tuniform sampler2D normalMap;\\n\\tuniform vec2 normalScale;\\n#endif\\n#ifdef OBJECTSPACE_NORMALMAP\\n\\tuniform mat3 normalMatrix;\\n#endif\\n#if ! defined ( USE_TANGENT ) && ( defined ( TANGENTSPACE_NORMALMAP ) || defined ( USE_CLEARCOAT_NORMALMAP ) )\\n\\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm, vec3 mapN ) {\\n\\t\\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\\n\\t\\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\\n\\t\\tvec2 st0 = dFdx( vUv.st );\\n\\t\\tvec2 st1 = dFdy( vUv.st );\\n\\t\\tfloat scale = sign( st1.t * st0.s - st0.t * st1.s );\\n\\t\\tvec3 S = normalize( ( q0 * st1.t - q1 * st0.t ) * scale );\\n\\t\\tvec3 T = normalize( ( - q0 * st1.s + q1 * st0.s ) * scale );\\n\\t\\tvec3 N = normalize( surf_norm );\\n\\t\\tmat3 tsn = mat3( S, T, N );\\n\\t\\tmapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );\\n\\t\\treturn normalize( tsn * mapN );\\n\\t}\\n#endif\";\r\n\r\nvar clearcoat_normal_fragment_begin = \"#ifdef CLEARCOAT\\n\\tvec3 clearcoatNormal = geometryNormal;\\n#endif\";\r\n\r\nvar clearcoat_normal_fragment_maps = \"#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tvec3 clearcoatMapN = texture2D( clearcoatNormalMap, vUv ).xyz * 2.0 - 1.0;\\n\\tclearcoatMapN.xy *= clearcoatNormalScale;\\n\\t#ifdef USE_TANGENT\\n\\t\\tclearcoatNormal = normalize( vTBN * clearcoatMapN );\\n\\t#else\\n\\t\\tclearcoatNormal = perturbNormal2Arb( - vViewPosition, clearcoatNormal, clearcoatMapN );\\n\\t#endif\\n#endif\";\r\n\r\nvar clearcoat_pars_fragment = \"#ifdef USE_CLEARCOATMAP\\n\\tuniform sampler2D clearcoatMap;\\n#endif\\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\\n\\tuniform sampler2D clearcoatRoughnessMap;\\n#endif\\n#ifdef USE_CLEARCOAT_NORMALMAP\\n\\tuniform sampler2D clearcoatNormalMap;\\n\\tuniform vec2 clearcoatNormalScale;\\n#endif\";\r\n\r\nvar packing = \"vec3 packNormalToRGB( const in vec3 normal ) {\\n\\treturn normalize( normal ) * 0.5 + 0.5;\\n}\\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\\n\\treturn 2.0 * rgb.xyz - 1.0;\\n}\\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\\nconst float ShiftRight8 = 1. / 256.;\\nvec4 packDepthToRGBA( const in float v ) {\\n\\tvec4 r = vec4( fract( v * PackFactors ), v );\\n\\tr.yzw -= r.xyz * ShiftRight8;\\treturn r * PackUpscale;\\n}\\nfloat unpackRGBAToDepth( const in vec4 v ) {\\n\\treturn dot( v, UnpackFactors );\\n}\\nvec4 pack2HalfToRGBA( vec2 v ) {\\n\\tvec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ));\\n\\treturn vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w);\\n}\\nvec2 unpackRGBATo2Half( vec4 v ) {\\n\\treturn vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\\n}\\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn ( viewZ + near ) / ( near - far );\\n}\\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\\n\\treturn linearClipZ * ( near - far ) - near;\\n}\\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\\n\\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\\n}\\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\\n\\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\\n}\";\r\n\r\nvar premultiplied_alpha_fragment = \"#ifdef PREMULTIPLIED_ALPHA\\n\\tgl_FragColor.rgb *= gl_FragColor.a;\\n#endif\";\r\n\r\nvar project_vertex = \"vec4 mvPosition = vec4( transformed, 1.0 );\\n#ifdef USE_INSTANCING\\n\\tmvPosition = instanceMatrix * mvPosition;\\n#endif\\nmvPosition = modelViewMatrix * mvPosition;\\ngl_Position = projectionMatrix * mvPosition;\";\r\n\r\nvar dithering_fragment = \"#ifdef DITHERING\\n\\tgl_FragColor.rgb = dithering( gl_FragColor.rgb );\\n#endif\";\r\n\r\nvar dithering_pars_fragment = \"#ifdef DITHERING\\n\\tvec3 dithering( vec3 color ) {\\n\\t\\tfloat grid_position = rand( gl_FragCoord.xy );\\n\\t\\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\\n\\t\\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\\n\\t\\treturn color + dither_shift_RGB;\\n\\t}\\n#endif\";\r\n\r\nvar roughnessmap_fragment = \"float roughnessFactor = roughness;\\n#ifdef USE_ROUGHNESSMAP\\n\\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\\n\\troughnessFactor *= texelRoughness.g;\\n#endif\";\r\n\r\nvar roughnessmap_pars_fragment = \"#ifdef USE_ROUGHNESSMAP\\n\\tuniform sampler2D roughnessMap;\\n#endif\";\r\n\r\nvar shadowmap_pars_fragment = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\\n\\t\\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\\n\\t}\\n\\tvec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\\n\\t\\treturn unpackRGBATo2Half( texture2D( shadow, uv ) );\\n\\t}\\n\\tfloat VSMShadow (sampler2D shadow, vec2 uv, float compare ){\\n\\t\\tfloat occlusion = 1.0;\\n\\t\\tvec2 distribution = texture2DDistribution( shadow, uv );\\n\\t\\tfloat hard_shadow = step( compare , distribution.x );\\n\\t\\tif (hard_shadow != 1.0 ) {\\n\\t\\t\\tfloat distance = compare - distribution.x ;\\n\\t\\t\\tfloat variance = max( 0.00000, distribution.y * distribution.y );\\n\\t\\t\\tfloat softness_probability = variance / (variance + distance * distance );\\t\\t\\tsoftness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 );\\t\\t\\tocclusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\\n\\t\\t}\\n\\t\\treturn occlusion;\\n\\t}\\n\\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\\n\\t\\tfloat shadow = 1.0;\\n\\t\\tshadowCoord.xyz /= shadowCoord.w;\\n\\t\\tshadowCoord.z += shadowBias;\\n\\t\\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\\n\\t\\tbool inFrustum = all( inFrustumVec );\\n\\t\\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\\n\\t\\tbool frustumTest = all( frustumTestVec );\\n\\t\\tif ( frustumTest ) {\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx0 = - texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy0 = - texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx1 = + texelSize.x * shadowRadius;\\n\\t\\t\\tfloat dy1 = + texelSize.y * shadowRadius;\\n\\t\\t\\tfloat dx2 = dx0 / 2.0;\\n\\t\\t\\tfloat dy2 = dy0 / 2.0;\\n\\t\\t\\tfloat dx3 = dx1 / 2.0;\\n\\t\\t\\tfloat dy3 = dy1 / 2.0;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\\n\\t\\t\\t) * ( 1.0 / 17.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\\n\\t\\t\\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\\n\\t\\t\\tfloat dx = texelSize.x;\\n\\t\\t\\tfloat dy = texelSize.y;\\n\\t\\t\\tvec2 uv = shadowCoord.xy;\\n\\t\\t\\tvec2 f = fract( uv * shadowMapSize + 0.5 );\\n\\t\\t\\tuv -= f * texelSize;\\n\\t\\t\\tshadow = (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv, shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.x ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t f.y ) +\\n\\t\\t\\t\\tmix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ), \\n\\t\\t\\t\\t\\t\\t texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\\n\\t\\t\\t\\t\\t\\t f.x ),\\n\\t\\t\\t\\t\\t f.y )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#elif defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tshadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#else\\n\\t\\t\\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\\n\\t\\t#endif\\n\\t\\t}\\n\\t\\treturn shadow;\\n\\t}\\n\\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\\n\\t\\tvec3 absV = abs( v );\\n\\t\\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\\n\\t\\tabsV *= scaleToCube;\\n\\t\\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\\n\\t\\tvec2 planar = v.xy;\\n\\t\\tfloat almostATexel = 1.5 * texelSizeY;\\n\\t\\tfloat almostOne = 1.0 - almostATexel;\\n\\t\\tif ( absV.z >= almostOne ) {\\n\\t\\t\\tif ( v.z > 0.0 )\\n\\t\\t\\t\\tplanar.x = 4.0 - v.x;\\n\\t\\t} else if ( absV.x >= almostOne ) {\\n\\t\\t\\tfloat signX = sign( v.x );\\n\\t\\t\\tplanar.x = v.z * signX + 2.0 * signX;\\n\\t\\t} else if ( absV.y >= almostOne ) {\\n\\t\\t\\tfloat signY = sign( v.y );\\n\\t\\t\\tplanar.x = v.x + 2.0 * signY + 2.0;\\n\\t\\t\\tplanar.y = v.z * signY - 2.0;\\n\\t\\t}\\n\\t\\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\\n\\t}\\n\\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\\n\\t\\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\\n\\t\\tvec3 lightToPosition = shadowCoord.xyz;\\n\\t\\tfloat dp = ( length( lightToPosition ) - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear );\\t\\tdp += shadowBias;\\n\\t\\tvec3 bd3D = normalize( lightToPosition );\\n\\t\\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\\n\\t\\t\\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\\n\\t\\t\\treturn (\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\\n\\t\\t\\t\\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\\n\\t\\t\\t) * ( 1.0 / 9.0 );\\n\\t\\t#else\\n\\t\\t\\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\\n\\t\\t#endif\\n\\t}\\n#endif\";\r\n\r\nvar shadowmap_pars_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t\\tstruct DirectionalLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t\\tstruct SpotLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t};\\n\\t\\tuniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t\\tstruct PointLightShadow {\\n\\t\\t\\tfloat shadowBias;\\n\\t\\t\\tfloat shadowNormalBias;\\n\\t\\t\\tfloat shadowRadius;\\n\\t\\t\\tvec2 shadowMapSize;\\n\\t\\t\\tfloat shadowCameraNear;\\n\\t\\t\\tfloat shadowCameraFar;\\n\\t\\t};\\n\\t\\tuniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\\n\\t#endif\\n#endif\";\r\n\r\nvar shadowmap_vertex = \"#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0 || NUM_SPOT_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0\\n\\t\\tvec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\\n\\t\\tvec4 shadowWorldPosition;\\n\\t#endif\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tshadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\\n\\t\\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n#endif\";\r\n\r\nvar shadowmask_pars_fragment = \"float getShadowMask() {\\n\\tfloat shadow = 1.0;\\n\\t#ifdef USE_SHADOWMAP\\n\\t#if NUM_DIR_LIGHT_SHADOWS > 0\\n\\tDirectionalLightShadow directionalLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tdirectionalLight = directionalLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_SPOT_LIGHT_SHADOWS > 0\\n\\tSpotLightShadow spotLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tspotLight = spotLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#if NUM_POINT_LIGHT_SHADOWS > 0\\n\\tPointLightShadow pointLight;\\n\\t#pragma unroll_loop_start\\n\\tfor ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\\n\\t\\tpointLight = pointLightShadows[ i ];\\n\\t\\tshadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\\n\\t}\\n\\t#pragma unroll_loop_end\\n\\t#endif\\n\\t#endif\\n\\treturn shadow;\\n}\";\r\n\r\nvar skinbase_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\\n\\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\\n\\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\\n\\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\\n#endif\";\r\n\r\nvar skinning_pars_vertex = \"#ifdef USE_SKINNING\\n\\tuniform mat4 bindMatrix;\\n\\tuniform mat4 bindMatrixInverse;\\n\\t#ifdef BONE_TEXTURE\\n\\t\\tuniform highp sampler2D boneTexture;\\n\\t\\tuniform int boneTextureSize;\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tfloat j = i * 4.0;\\n\\t\\t\\tfloat x = mod( j, float( boneTextureSize ) );\\n\\t\\t\\tfloat y = floor( j / float( boneTextureSize ) );\\n\\t\\t\\tfloat dx = 1.0 / float( boneTextureSize );\\n\\t\\t\\tfloat dy = 1.0 / float( boneTextureSize );\\n\\t\\t\\ty = dy * ( y + 0.5 );\\n\\t\\t\\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\\n\\t\\t\\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\\n\\t\\t\\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\\n\\t\\t\\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\\n\\t\\t\\tmat4 bone = mat4( v1, v2, v3, v4 );\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#else\\n\\t\\tuniform mat4 boneMatrices[ MAX_BONES ];\\n\\t\\tmat4 getBoneMatrix( const in float i ) {\\n\\t\\t\\tmat4 bone = boneMatrices[ int(i) ];\\n\\t\\t\\treturn bone;\\n\\t\\t}\\n\\t#endif\\n#endif\";\r\n\r\nvar skinning_vertex = \"#ifdef USE_SKINNING\\n\\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\\n\\tvec4 skinned = vec4( 0.0 );\\n\\tskinned += boneMatX * skinVertex * skinWeight.x;\\n\\tskinned += boneMatY * skinVertex * skinWeight.y;\\n\\tskinned += boneMatZ * skinVertex * skinWeight.z;\\n\\tskinned += boneMatW * skinVertex * skinWeight.w;\\n\\ttransformed = ( bindMatrixInverse * skinned ).xyz;\\n#endif\";\r\n\r\nvar skinnormal_vertex = \"#ifdef USE_SKINNING\\n\\tmat4 skinMatrix = mat4( 0.0 );\\n\\tskinMatrix += skinWeight.x * boneMatX;\\n\\tskinMatrix += skinWeight.y * boneMatY;\\n\\tskinMatrix += skinWeight.z * boneMatZ;\\n\\tskinMatrix += skinWeight.w * boneMatW;\\n\\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\\n\\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\\n\\t#ifdef USE_TANGENT\\n\\t\\tobjectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\\n\\t#endif\\n#endif\";\r\n\r\nvar specularmap_fragment = \"float specularStrength;\\n#ifdef USE_SPECULARMAP\\n\\tvec4 texelSpecular = texture2D( specularMap, vUv );\\n\\tspecularStrength = texelSpecular.r;\\n#else\\n\\tspecularStrength = 1.0;\\n#endif\";\r\n\r\nvar specularmap_pars_fragment = \"#ifdef USE_SPECULARMAP\\n\\tuniform sampler2D specularMap;\\n#endif\";\r\n\r\nvar tonemapping_fragment = \"#if defined( TONE_MAPPING )\\n\\tgl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\\n#endif\";\r\n\r\nvar tonemapping_pars_fragment = \"#ifndef saturate\\n#define saturate(a) clamp( a, 0.0, 1.0 )\\n#endif\\nuniform float toneMappingExposure;\\nvec3 LinearToneMapping( vec3 color ) {\\n\\treturn toneMappingExposure * color;\\n}\\nvec3 ReinhardToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\treturn saturate( color / ( vec3( 1.0 ) + color ) );\\n}\\nvec3 OptimizedCineonToneMapping( vec3 color ) {\\n\\tcolor *= toneMappingExposure;\\n\\tcolor = max( vec3( 0.0 ), color - 0.004 );\\n\\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\\n}\\nvec3 RRTAndODTFit( vec3 v ) {\\n\\tvec3 a = v * ( v + 0.0245786 ) - 0.000090537;\\n\\tvec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\\n\\treturn a / b;\\n}\\nvec3 ACESFilmicToneMapping( vec3 color ) {\\n\\tconst mat3 ACESInputMat = mat3(\\n\\t\\tvec3( 0.59719, 0.07600, 0.02840 ),\\t\\tvec3( 0.35458, 0.90834, 0.13383 ),\\n\\t\\tvec3( 0.04823, 0.01566, 0.83777 )\\n\\t);\\n\\tconst mat3 ACESOutputMat = mat3(\\n\\t\\tvec3( 1.60475, -0.10208, -0.00327 ),\\t\\tvec3( -0.53108, 1.10813, -0.07276 ),\\n\\t\\tvec3( -0.07367, -0.00605, 1.07602 )\\n\\t);\\n\\tcolor *= toneMappingExposure / 0.6;\\n\\tcolor = ACESInputMat * color;\\n\\tcolor = RRTAndODTFit( color );\\n\\tcolor = ACESOutputMat * color;\\n\\treturn saturate( color );\\n}\\nvec3 CustomToneMapping( vec3 color ) { return color; }\";\r\n\r\nvar transmissionmap_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\ttotalTransmission *= texture2D( transmissionMap, vUv ).r;\\n#endif\";\r\n\r\nvar transmissionmap_pars_fragment = \"#ifdef USE_TRANSMISSIONMAP\\n\\tuniform sampler2D transmissionMap;\\n#endif\";\r\n\r\nvar uv_pars_fragment = \"#if ( defined( USE_UV ) && ! defined( UVS_VERTEX_ONLY ) )\\n\\tvarying vec2 vUv;\\n#endif\";\r\n\r\nvar uv_pars_vertex = \"#ifdef USE_UV\\n\\t#ifdef UVS_VERTEX_ONLY\\n\\t\\tvec2 vUv;\\n\\t#else\\n\\t\\tvarying vec2 vUv;\\n\\t#endif\\n\\tuniform mat3 uvTransform;\\n#endif\";\r\n\r\nvar uv_vertex = \"#ifdef USE_UV\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n#endif\";\r\n\r\nvar uv2_pars_fragment = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvarying vec2 vUv2;\\n#endif\";\r\n\r\nvar uv2_pars_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tattribute vec2 uv2;\\n\\tvarying vec2 vUv2;\\n\\tuniform mat3 uv2Transform;\\n#endif\";\r\n\r\nvar uv2_vertex = \"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\\n\\tvUv2 = ( uv2Transform * vec3( uv2, 1 ) ).xy;\\n#endif\";\r\n\r\nvar worldpos_vertex = \"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP )\\n\\tvec4 worldPosition = vec4( transformed, 1.0 );\\n\\t#ifdef USE_INSTANCING\\n\\t\\tworldPosition = instanceMatrix * worldPosition;\\n\\t#endif\\n\\tworldPosition = modelMatrix * worldPosition;\\n#endif\";\r\n\r\nvar background_frag = \"uniform sampler2D t2D;\\nvarying vec2 vUv;\\nvoid main() {\\n\\tvec4 texColor = texture2D( t2D, vUv );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar background_vert = \"varying vec2 vUv;\\nuniform mat3 uvTransform;\\nvoid main() {\\n\\tvUv = ( uvTransform * vec3( uv, 1 ) ).xy;\\n\\tgl_Position = vec4( position.xy, 1.0, 1.0 );\\n}\";\r\n\r\nvar cube_frag = \"#include \\nuniform float opacity;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 vReflect = vWorldDirection;\\n\\t#include \\n\\tgl_FragColor = envColor;\\n\\tgl_FragColor.a *= opacity;\\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar cube_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n\\tgl_Position.z = gl_Position.w;\\n}\";\r\n\r\nvar depth_frag = \"#if DEPTH_PACKING == 3200\\n\\tuniform float opacity;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tdiffuseColor.a = opacity;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\\n\\t#if DEPTH_PACKING == 3200\\n\\t\\tgl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\\n\\t#elif DEPTH_PACKING == 3201\\n\\t\\tgl_FragColor = packDepthToRGBA( fragCoordZ );\\n\\t#endif\\n}\";\r\n\r\nvar depth_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvarying vec2 vHighPrecisionZW;\\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvHighPrecisionZW = gl_Position.zw;\\n}\";\r\n\r\nvar distanceRGBA_frag = \"#define DISTANCE\\nuniform vec3 referencePosition;\\nuniform float nearDistance;\\nuniform float farDistance;\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main () {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( 1.0 );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\tfloat dist = length( vWorldPosition - referencePosition );\\n\\tdist = ( dist - nearDistance ) / ( farDistance - nearDistance );\\n\\tdist = saturate( dist );\\n\\tgl_FragColor = packDepthToRGBA( dist );\\n}\";\r\n\r\nvar distanceRGBA_vert = \"#define DISTANCE\\nvarying vec3 vWorldPosition;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#ifdef USE_DISPLACEMENTMAP\\n\\t\\t#include \\n\\t\\t#include \\n\\t\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvWorldPosition = worldPosition.xyz;\\n}\";\r\n\r\nvar equirect_frag = \"uniform sampler2D tEquirect;\\nvarying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvec3 direction = normalize( vWorldDirection );\\n\\tvec2 sampleUV = equirectUv( direction );\\n\\tvec4 texColor = texture2D( tEquirect, sampleUV );\\n\\tgl_FragColor = mapTexelToLinear( texColor );\\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar equirect_vert = \"varying vec3 vWorldDirection;\\n#include \\nvoid main() {\\n\\tvWorldDirection = transformDirection( position, modelMatrix );\\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar linedashed_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\nuniform float dashSize;\\nuniform float totalSize;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\\n\\t\\tdiscard;\\n\\t}\\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar linedashed_vert = \"uniform float scale;\\nattribute float lineDistance;\\nvarying float vLineDistance;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tvLineDistance = scale * lineDistance;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshbasic_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\t#ifdef USE_LIGHTMAP\\n\\t\\n\\t\\tvec4 lightMapTexel= texture2D( lightMap, vUv2 );\\n\\t\\treflectedLight.indirectDiffuse += lightMapTexelToLinear( lightMapTexel ).rgb * lightMapIntensity;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vec3( 1.0 );\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\\n\\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshbasic_vert = \"#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef USE_ENVMAP\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshlambert_frag = \"uniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.indirectDiffuse += ( gl_FrontFacing ) ? vIndirectFront : vIndirectBack;\\n\\t#else\\n\\t\\treflectedLight.indirectDiffuse += vIndirectFront;\\n\\t#endif\\n\\t#include \\n\\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\\n\\t#ifdef DOUBLE_SIDED\\n\\t\\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\\n\\t#else\\n\\t\\treflectedLight.directDiffuse = vLightFront;\\n\\t#endif\\n\\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshlambert_vert = \"#define LAMBERT\\nvarying vec3 vLightFront;\\nvarying vec3 vIndirectFront;\\n#ifdef DOUBLE_SIDED\\n\\tvarying vec3 vLightBack;\\n\\tvarying vec3 vIndirectBack;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshmatcap_frag = \"#define MATCAP\\nuniform vec3 diffuse;\\nuniform float opacity;\\nuniform sampler2D matcap;\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 viewDir = normalize( vViewPosition );\\n\\tvec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\\n\\tvec3 y = cross( viewDir, x );\\n\\tvec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\\n\\t#ifdef USE_MATCAP\\n\\t\\tvec4 matcapColor = texture2D( matcap, uv );\\n\\t\\tmatcapColor = matcapTexelToLinear( matcapColor );\\n\\t#else\\n\\t\\tvec4 matcapColor = vec4( 1.0 );\\n\\t#endif\\n\\tvec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshmatcap_vert = \"#define MATCAP\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#ifndef FLAT_SHADED\\n\\t\\tvNormal = normalize( transformedNormal );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n}\";\r\n\r\nvar meshtoon_frag = \"#define TOON\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshtoon_vert = \"#define TOON\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshphong_frag = \"#define PHONG\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform vec3 specular;\\nuniform float shininess;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#include \\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshphong_vert = \"#define PHONG\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshphysical_frag = \"#define STANDARD\\n#ifdef PHYSICAL\\n\\t#define REFLECTIVITY\\n\\t#define CLEARCOAT\\n\\t#define TRANSMISSION\\n#endif\\nuniform vec3 diffuse;\\nuniform vec3 emissive;\\nuniform float roughness;\\nuniform float metalness;\\nuniform float opacity;\\n#ifdef TRANSMISSION\\n\\tuniform float transmission;\\n#endif\\n#ifdef REFLECTIVITY\\n\\tuniform float reflectivity;\\n#endif\\n#ifdef CLEARCOAT\\n\\tuniform float clearcoat;\\n\\tuniform float clearcoatRoughness;\\n#endif\\n#ifdef USE_SHEEN\\n\\tuniform vec3 sheen;\\n#endif\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\\n\\tvec3 totalEmissiveRadiance = emissive;\\n\\t#ifdef TRANSMISSION\\n\\t\\tfloat totalTransmission = transmission;\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\\n\\t#ifdef TRANSMISSION\\n\\t\\tdiffuseColor.a *= mix( saturate( 1. - totalTransmission + linearToRelativeLuminance( reflectedLight.directSpecular + reflectedLight.indirectSpecular ) ), 1.0, metalness );\\n\\t#endif\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar meshphysical_vert = \"#define STANDARD\\nvarying vec3 vViewPosition;\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tvViewPosition = - mvPosition.xyz;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar normal_frag = \"#define NORMAL\\nuniform float opacity;\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\\n}\";\r\n\r\nvar normal_vert = \"#define NORMAL\\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvarying vec3 vViewPosition;\\n#endif\\n#ifndef FLAT_SHADED\\n\\tvarying vec3 vNormal;\\n\\t#ifdef USE_TANGENT\\n\\t\\tvarying vec3 vTangent;\\n\\t\\tvarying vec3 vBitangent;\\n\\t#endif\\n#endif\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#ifndef FLAT_SHADED\\n\\tvNormal = normalize( transformedNormal );\\n\\t#ifdef USE_TANGENT\\n\\t\\tvTangent = normalize( transformedTangent );\\n\\t\\tvBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\\n\\t#endif\\n#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( TANGENTSPACE_NORMALMAP )\\n\\tvViewPosition = - mvPosition.xyz;\\n#endif\\n}\";\r\n\r\nvar points_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar points_vert = \"uniform float size;\\nuniform float scale;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\tgl_PointSize = size;\\n\\t#ifdef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\\n\\t#endif\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar shadow_frag = \"uniform vec3 color;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\tgl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar shadow_vert = \"#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar sprite_frag = \"uniform vec3 diffuse;\\nuniform float opacity;\\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec3 outgoingLight = vec3( 0.0 );\\n\\tvec4 diffuseColor = vec4( diffuse, opacity );\\n\\t#include \\n\\t#include \\n\\t#include \\n\\t#include \\n\\toutgoingLight = diffuseColor.rgb;\\n\\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nvar sprite_vert = \"uniform float rotation;\\nuniform vec2 center;\\n#include \\n#include \\n#include \\n#include \\n#include \\nvoid main() {\\n\\t#include \\n\\tvec4 mvPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );\\n\\tvec2 scale;\\n\\tscale.x = length( vec3( modelMatrix[ 0 ].x, modelMatrix[ 0 ].y, modelMatrix[ 0 ].z ) );\\n\\tscale.y = length( vec3( modelMatrix[ 1 ].x, modelMatrix[ 1 ].y, modelMatrix[ 1 ].z ) );\\n\\t#ifndef USE_SIZEATTENUATION\\n\\t\\tbool isPerspective = isPerspectiveMatrix( projectionMatrix );\\n\\t\\tif ( isPerspective ) scale *= - mvPosition.z;\\n\\t#endif\\n\\tvec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\\n\\tvec2 rotatedPosition;\\n\\trotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\\n\\trotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\\n\\tmvPosition.xy += rotatedPosition;\\n\\tgl_Position = projectionMatrix * mvPosition;\\n\\t#include \\n\\t#include \\n\\t#include \\n}\";\r\n\r\nconst ShaderChunk = {\r\n\talphamap_fragment: alphamap_fragment,\r\n\talphamap_pars_fragment: alphamap_pars_fragment,\r\n\talphatest_fragment: alphatest_fragment,\r\n\taomap_fragment: aomap_fragment,\r\n\taomap_pars_fragment: aomap_pars_fragment,\r\n\tbegin_vertex: begin_vertex,\r\n\tbeginnormal_vertex: beginnormal_vertex,\r\n\tbsdfs: bsdfs,\r\n\tbumpmap_pars_fragment: bumpmap_pars_fragment,\r\n\tclipping_planes_fragment: clipping_planes_fragment,\r\n\tclipping_planes_pars_fragment: clipping_planes_pars_fragment,\r\n\tclipping_planes_pars_vertex: clipping_planes_pars_vertex,\r\n\tclipping_planes_vertex: clipping_planes_vertex,\r\n\tcolor_fragment: color_fragment,\r\n\tcolor_pars_fragment: color_pars_fragment,\r\n\tcolor_pars_vertex: color_pars_vertex,\r\n\tcolor_vertex: color_vertex,\r\n\tcommon: common,\r\n\tcube_uv_reflection_fragment: cube_uv_reflection_fragment,\r\n\tdefaultnormal_vertex: defaultnormal_vertex,\r\n\tdisplacementmap_pars_vertex: displacementmap_pars_vertex,\r\n\tdisplacementmap_vertex: displacementmap_vertex,\r\n\temissivemap_fragment: emissivemap_fragment,\r\n\temissivemap_pars_fragment: emissivemap_pars_fragment,\r\n\tencodings_fragment: encodings_fragment,\r\n\tencodings_pars_fragment: encodings_pars_fragment,\r\n\tenvmap_fragment: envmap_fragment,\r\n\tenvmap_common_pars_fragment: envmap_common_pars_fragment,\r\n\tenvmap_pars_fragment: envmap_pars_fragment,\r\n\tenvmap_pars_vertex: envmap_pars_vertex,\r\n\tenvmap_physical_pars_fragment: envmap_physical_pars_fragment,\r\n\tenvmap_vertex: envmap_vertex,\r\n\tfog_vertex: fog_vertex,\r\n\tfog_pars_vertex: fog_pars_vertex,\r\n\tfog_fragment: fog_fragment,\r\n\tfog_pars_fragment: fog_pars_fragment,\r\n\tgradientmap_pars_fragment: gradientmap_pars_fragment,\r\n\tlightmap_fragment: lightmap_fragment,\r\n\tlightmap_pars_fragment: lightmap_pars_fragment,\r\n\tlights_lambert_vertex: lights_lambert_vertex,\r\n\tlights_pars_begin: lights_pars_begin,\r\n\tlights_toon_fragment: lights_toon_fragment,\r\n\tlights_toon_pars_fragment: lights_toon_pars_fragment,\r\n\tlights_phong_fragment: lights_phong_fragment,\r\n\tlights_phong_pars_fragment: lights_phong_pars_fragment,\r\n\tlights_physical_fragment: lights_physical_fragment,\r\n\tlights_physical_pars_fragment: lights_physical_pars_fragment,\r\n\tlights_fragment_begin: lights_fragment_begin,\r\n\tlights_fragment_maps: lights_fragment_maps,\r\n\tlights_fragment_end: lights_fragment_end,\r\n\tlogdepthbuf_fragment: logdepthbuf_fragment,\r\n\tlogdepthbuf_pars_fragment: logdepthbuf_pars_fragment,\r\n\tlogdepthbuf_pars_vertex: logdepthbuf_pars_vertex,\r\n\tlogdepthbuf_vertex: logdepthbuf_vertex,\r\n\tmap_fragment: map_fragment,\r\n\tmap_pars_fragment: map_pars_fragment,\r\n\tmap_particle_fragment: map_particle_fragment,\r\n\tmap_particle_pars_fragment: map_particle_pars_fragment,\r\n\tmetalnessmap_fragment: metalnessmap_fragment,\r\n\tmetalnessmap_pars_fragment: metalnessmap_pars_fragment,\r\n\tmorphnormal_vertex: morphnormal_vertex,\r\n\tmorphtarget_pars_vertex: morphtarget_pars_vertex,\r\n\tmorphtarget_vertex: morphtarget_vertex,\r\n\tnormal_fragment_begin: normal_fragment_begin,\r\n\tnormal_fragment_maps: normal_fragment_maps,\r\n\tnormalmap_pars_fragment: normalmap_pars_fragment,\r\n\tclearcoat_normal_fragment_begin: clearcoat_normal_fragment_begin,\r\n\tclearcoat_normal_fragment_maps: clearcoat_normal_fragment_maps,\r\n\tclearcoat_pars_fragment: clearcoat_pars_fragment,\r\n\tpacking: packing,\r\n\tpremultiplied_alpha_fragment: premultiplied_alpha_fragment,\r\n\tproject_vertex: project_vertex,\r\n\tdithering_fragment: dithering_fragment,\r\n\tdithering_pars_fragment: dithering_pars_fragment,\r\n\troughnessmap_fragment: roughnessmap_fragment,\r\n\troughnessmap_pars_fragment: roughnessmap_pars_fragment,\r\n\tshadowmap_pars_fragment: shadowmap_pars_fragment,\r\n\tshadowmap_pars_vertex: shadowmap_pars_vertex,\r\n\tshadowmap_vertex: shadowmap_vertex,\r\n\tshadowmask_pars_fragment: shadowmask_pars_fragment,\r\n\tskinbase_vertex: skinbase_vertex,\r\n\tskinning_pars_vertex: skinning_pars_vertex,\r\n\tskinning_vertex: skinning_vertex,\r\n\tskinnormal_vertex: skinnormal_vertex,\r\n\tspecularmap_fragment: specularmap_fragment,\r\n\tspecularmap_pars_fragment: specularmap_pars_fragment,\r\n\ttonemapping_fragment: tonemapping_fragment,\r\n\ttonemapping_pars_fragment: tonemapping_pars_fragment,\r\n\ttransmissionmap_fragment: transmissionmap_fragment,\r\n\ttransmissionmap_pars_fragment: transmissionmap_pars_fragment,\r\n\tuv_pars_fragment: uv_pars_fragment,\r\n\tuv_pars_vertex: uv_pars_vertex,\r\n\tuv_vertex: uv_vertex,\r\n\tuv2_pars_fragment: uv2_pars_fragment,\r\n\tuv2_pars_vertex: uv2_pars_vertex,\r\n\tuv2_vertex: uv2_vertex,\r\n\tworldpos_vertex: worldpos_vertex,\r\n\r\n\tbackground_frag: background_frag,\r\n\tbackground_vert: background_vert,\r\n\tcube_frag: cube_frag,\r\n\tcube_vert: cube_vert,\r\n\tdepth_frag: depth_frag,\r\n\tdepth_vert: depth_vert,\r\n\tdistanceRGBA_frag: distanceRGBA_frag,\r\n\tdistanceRGBA_vert: distanceRGBA_vert,\r\n\tequirect_frag: equirect_frag,\r\n\tequirect_vert: equirect_vert,\r\n\tlinedashed_frag: linedashed_frag,\r\n\tlinedashed_vert: linedashed_vert,\r\n\tmeshbasic_frag: meshbasic_frag,\r\n\tmeshbasic_vert: meshbasic_vert,\r\n\tmeshlambert_frag: meshlambert_frag,\r\n\tmeshlambert_vert: meshlambert_vert,\r\n\tmeshmatcap_frag: meshmatcap_frag,\r\n\tmeshmatcap_vert: meshmatcap_vert,\r\n\tmeshtoon_frag: meshtoon_frag,\r\n\tmeshtoon_vert: meshtoon_vert,\r\n\tmeshphong_frag: meshphong_frag,\r\n\tmeshphong_vert: meshphong_vert,\r\n\tmeshphysical_frag: meshphysical_frag,\r\n\tmeshphysical_vert: meshphysical_vert,\r\n\tnormal_frag: normal_frag,\r\n\tnormal_vert: normal_vert,\r\n\tpoints_frag: points_frag,\r\n\tpoints_vert: points_vert,\r\n\tshadow_frag: shadow_frag,\r\n\tshadow_vert: shadow_vert,\r\n\tsprite_frag: sprite_frag,\r\n\tsprite_vert: sprite_vert\r\n};\r\n\r\n/**\r\n * Uniforms library for shared webgl shaders\r\n */\r\n\r\nconst UniformsLib = {\r\n\r\n\tcommon: {\r\n\r\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\r\n\t\topacity: { value: 1.0 },\r\n\r\n\t\tmap: { value: null },\r\n\t\tuvTransform: { value: new Matrix3() },\r\n\t\tuv2Transform: { value: new Matrix3() },\r\n\r\n\t\talphaMap: { value: null },\r\n\r\n\t},\r\n\r\n\tspecularmap: {\r\n\r\n\t\tspecularMap: { value: null },\r\n\r\n\t},\r\n\r\n\tenvmap: {\r\n\r\n\t\tenvMap: { value: null },\r\n\t\tflipEnvMap: { value: - 1 },\r\n\t\treflectivity: { value: 1.0 },\r\n\t\trefractionRatio: { value: 0.98 },\r\n\t\tmaxMipLevel: { value: 0 }\r\n\r\n\t},\r\n\r\n\taomap: {\r\n\r\n\t\taoMap: { value: null },\r\n\t\taoMapIntensity: { value: 1 }\r\n\r\n\t},\r\n\r\n\tlightmap: {\r\n\r\n\t\tlightMap: { value: null },\r\n\t\tlightMapIntensity: { value: 1 }\r\n\r\n\t},\r\n\r\n\temissivemap: {\r\n\r\n\t\temissiveMap: { value: null }\r\n\r\n\t},\r\n\r\n\tbumpmap: {\r\n\r\n\t\tbumpMap: { value: null },\r\n\t\tbumpScale: { value: 1 }\r\n\r\n\t},\r\n\r\n\tnormalmap: {\r\n\r\n\t\tnormalMap: { value: null },\r\n\t\tnormalScale: { value: new Vector2( 1, 1 ) }\r\n\r\n\t},\r\n\r\n\tdisplacementmap: {\r\n\r\n\t\tdisplacementMap: { value: null },\r\n\t\tdisplacementScale: { value: 1 },\r\n\t\tdisplacementBias: { value: 0 }\r\n\r\n\t},\r\n\r\n\troughnessmap: {\r\n\r\n\t\troughnessMap: { value: null }\r\n\r\n\t},\r\n\r\n\tmetalnessmap: {\r\n\r\n\t\tmetalnessMap: { value: null }\r\n\r\n\t},\r\n\r\n\tgradientmap: {\r\n\r\n\t\tgradientMap: { value: null }\r\n\r\n\t},\r\n\r\n\tfog: {\r\n\r\n\t\tfogDensity: { value: 0.00025 },\r\n\t\tfogNear: { value: 1 },\r\n\t\tfogFar: { value: 2000 },\r\n\t\tfogColor: { value: new Color( 0xffffff ) }\r\n\r\n\t},\r\n\r\n\tlights: {\r\n\r\n\t\tambientLightColor: { value: [] },\r\n\r\n\t\tlightProbe: { value: [] },\r\n\r\n\t\tdirectionalLights: { value: [], properties: {\r\n\t\t\tdirection: {},\r\n\t\t\tcolor: {}\r\n\t\t} },\r\n\r\n\t\tdirectionalLightShadows: { value: [], properties: {\r\n\t\t\tshadowBias: {},\r\n\t\t\tshadowNormalBias: {},\r\n\t\t\tshadowRadius: {},\r\n\t\t\tshadowMapSize: {}\r\n\t\t} },\r\n\r\n\t\tdirectionalShadowMap: { value: [] },\r\n\t\tdirectionalShadowMatrix: { value: [] },\r\n\r\n\t\tspotLights: { value: [], properties: {\r\n\t\t\tcolor: {},\r\n\t\t\tposition: {},\r\n\t\t\tdirection: {},\r\n\t\t\tdistance: {},\r\n\t\t\tconeCos: {},\r\n\t\t\tpenumbraCos: {},\r\n\t\t\tdecay: {}\r\n\t\t} },\r\n\r\n\t\tspotLightShadows: { value: [], properties: {\r\n\t\t\tshadowBias: {},\r\n\t\t\tshadowNormalBias: {},\r\n\t\t\tshadowRadius: {},\r\n\t\t\tshadowMapSize: {}\r\n\t\t} },\r\n\r\n\t\tspotShadowMap: { value: [] },\r\n\t\tspotShadowMatrix: { value: [] },\r\n\r\n\t\tpointLights: { value: [], properties: {\r\n\t\t\tcolor: {},\r\n\t\t\tposition: {},\r\n\t\t\tdecay: {},\r\n\t\t\tdistance: {}\r\n\t\t} },\r\n\r\n\t\tpointLightShadows: { value: [], properties: {\r\n\t\t\tshadowBias: {},\r\n\t\t\tshadowNormalBias: {},\r\n\t\t\tshadowRadius: {},\r\n\t\t\tshadowMapSize: {},\r\n\t\t\tshadowCameraNear: {},\r\n\t\t\tshadowCameraFar: {}\r\n\t\t} },\r\n\r\n\t\tpointShadowMap: { value: [] },\r\n\t\tpointShadowMatrix: { value: [] },\r\n\r\n\t\themisphereLights: { value: [], properties: {\r\n\t\t\tdirection: {},\r\n\t\t\tskyColor: {},\r\n\t\t\tgroundColor: {}\r\n\t\t} },\r\n\r\n\t\t// TODO (abelnation): RectAreaLight BRDF data needs to be moved from example to main src\r\n\t\trectAreaLights: { value: [], properties: {\r\n\t\t\tcolor: {},\r\n\t\t\tposition: {},\r\n\t\t\twidth: {},\r\n\t\t\theight: {}\r\n\t\t} },\r\n\r\n\t\tltc_1: { value: null },\r\n\t\tltc_2: { value: null }\r\n\r\n\t},\r\n\r\n\tpoints: {\r\n\r\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\r\n\t\topacity: { value: 1.0 },\r\n\t\tsize: { value: 1.0 },\r\n\t\tscale: { value: 1.0 },\r\n\t\tmap: { value: null },\r\n\t\talphaMap: { value: null },\r\n\t\tuvTransform: { value: new Matrix3() }\r\n\r\n\t},\r\n\r\n\tsprite: {\r\n\r\n\t\tdiffuse: { value: new Color( 0xeeeeee ) },\r\n\t\topacity: { value: 1.0 },\r\n\t\tcenter: { value: new Vector2( 0.5, 0.5 ) },\r\n\t\trotation: { value: 0.0 },\r\n\t\tmap: { value: null },\r\n\t\talphaMap: { value: null },\r\n\t\tuvTransform: { value: new Matrix3() }\r\n\r\n\t}\r\n\r\n};\r\n\r\nconst ShaderLib = {\r\n\r\n\tbasic: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.specularmap,\r\n\t\t\tUniformsLib.envmap,\r\n\t\t\tUniformsLib.aomap,\r\n\t\t\tUniformsLib.lightmap,\r\n\t\t\tUniformsLib.fog\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.meshbasic_vert,\r\n\t\tfragmentShader: ShaderChunk.meshbasic_frag\r\n\r\n\t},\r\n\r\n\tlambert: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.specularmap,\r\n\t\t\tUniformsLib.envmap,\r\n\t\t\tUniformsLib.aomap,\r\n\t\t\tUniformsLib.lightmap,\r\n\t\t\tUniformsLib.emissivemap,\r\n\t\t\tUniformsLib.fog,\r\n\t\t\tUniformsLib.lights,\r\n\t\t\t{\r\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\r\n\t\t\t}\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.meshlambert_vert,\r\n\t\tfragmentShader: ShaderChunk.meshlambert_frag\r\n\r\n\t},\r\n\r\n\tphong: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.specularmap,\r\n\t\t\tUniformsLib.envmap,\r\n\t\t\tUniformsLib.aomap,\r\n\t\t\tUniformsLib.lightmap,\r\n\t\t\tUniformsLib.emissivemap,\r\n\t\t\tUniformsLib.bumpmap,\r\n\t\t\tUniformsLib.normalmap,\r\n\t\t\tUniformsLib.displacementmap,\r\n\t\t\tUniformsLib.fog,\r\n\t\t\tUniformsLib.lights,\r\n\t\t\t{\r\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\r\n\t\t\t\tspecular: { value: new Color( 0x111111 ) },\r\n\t\t\t\tshininess: { value: 30 }\r\n\t\t\t}\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.meshphong_vert,\r\n\t\tfragmentShader: ShaderChunk.meshphong_frag\r\n\r\n\t},\r\n\r\n\tstandard: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.envmap,\r\n\t\t\tUniformsLib.aomap,\r\n\t\t\tUniformsLib.lightmap,\r\n\t\t\tUniformsLib.emissivemap,\r\n\t\t\tUniformsLib.bumpmap,\r\n\t\t\tUniformsLib.normalmap,\r\n\t\t\tUniformsLib.displacementmap,\r\n\t\t\tUniformsLib.roughnessmap,\r\n\t\t\tUniformsLib.metalnessmap,\r\n\t\t\tUniformsLib.fog,\r\n\t\t\tUniformsLib.lights,\r\n\t\t\t{\r\n\t\t\t\temissive: { value: new Color( 0x000000 ) },\r\n\t\t\t\troughness: { value: 1.0 },\r\n\t\t\t\tmetalness: { value: 0.0 },\r\n\t\t\t\tenvMapIntensity: { value: 1 } // temporary\r\n\t\t\t}\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.meshphysical_vert,\r\n\t\tfragmentShader: ShaderChunk.meshphysical_frag\r\n\r\n\t},\r\n\r\n\ttoon: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.aomap,\r\n\t\t\tUniformsLib.lightmap,\r\n\t\t\tUniformsLib.emissivemap,\r\n\t\t\tUniformsLib.bumpmap,\r\n\t\t\tUniformsLib.normalmap,\r\n\t\t\tUniformsLib.displacementmap,\r\n\t\t\tUniformsLib.gradientmap,\r\n\t\t\tUniformsLib.fog,\r\n\t\t\tUniformsLib.lights,\r\n\t\t\t{\r\n\t\t\t\temissive: { value: new Color( 0x000000 ) }\r\n\t\t\t}\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.meshtoon_vert,\r\n\t\tfragmentShader: ShaderChunk.meshtoon_frag\r\n\r\n\t},\r\n\r\n\tmatcap: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.bumpmap,\r\n\t\t\tUniformsLib.normalmap,\r\n\t\t\tUniformsLib.displacementmap,\r\n\t\t\tUniformsLib.fog,\r\n\t\t\t{\r\n\t\t\t\tmatcap: { value: null }\r\n\t\t\t}\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.meshmatcap_vert,\r\n\t\tfragmentShader: ShaderChunk.meshmatcap_frag\r\n\r\n\t},\r\n\r\n\tpoints: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.points,\r\n\t\t\tUniformsLib.fog\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.points_vert,\r\n\t\tfragmentShader: ShaderChunk.points_frag\r\n\r\n\t},\r\n\r\n\tdashed: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.fog,\r\n\t\t\t{\r\n\t\t\t\tscale: { value: 1 },\r\n\t\t\t\tdashSize: { value: 1 },\r\n\t\t\t\ttotalSize: { value: 2 }\r\n\t\t\t}\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.linedashed_vert,\r\n\t\tfragmentShader: ShaderChunk.linedashed_frag\r\n\r\n\t},\r\n\r\n\tdepth: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.displacementmap\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.depth_vert,\r\n\t\tfragmentShader: ShaderChunk.depth_frag\r\n\r\n\t},\r\n\r\n\tnormal: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.bumpmap,\r\n\t\t\tUniformsLib.normalmap,\r\n\t\t\tUniformsLib.displacementmap,\r\n\t\t\t{\r\n\t\t\t\topacity: { value: 1.0 }\r\n\t\t\t}\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.normal_vert,\r\n\t\tfragmentShader: ShaderChunk.normal_frag\r\n\r\n\t},\r\n\r\n\tsprite: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.sprite,\r\n\t\t\tUniformsLib.fog\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.sprite_vert,\r\n\t\tfragmentShader: ShaderChunk.sprite_frag\r\n\r\n\t},\r\n\r\n\tbackground: {\r\n\r\n\t\tuniforms: {\r\n\t\t\tuvTransform: { value: new Matrix3() },\r\n\t\t\tt2D: { value: null },\r\n\t\t},\r\n\r\n\t\tvertexShader: ShaderChunk.background_vert,\r\n\t\tfragmentShader: ShaderChunk.background_frag\r\n\r\n\t},\r\n\t/* -------------------------------------------------------------------------\r\n\t//\tCube map shader\r\n\t ------------------------------------------------------------------------- */\r\n\r\n\tcube: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.envmap,\r\n\t\t\t{\r\n\t\t\t\topacity: { value: 1.0 }\r\n\t\t\t}\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.cube_vert,\r\n\t\tfragmentShader: ShaderChunk.cube_frag\r\n\r\n\t},\r\n\r\n\tequirect: {\r\n\r\n\t\tuniforms: {\r\n\t\t\ttEquirect: { value: null },\r\n\t\t},\r\n\r\n\t\tvertexShader: ShaderChunk.equirect_vert,\r\n\t\tfragmentShader: ShaderChunk.equirect_frag\r\n\r\n\t},\r\n\r\n\tdistanceRGBA: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.common,\r\n\t\t\tUniformsLib.displacementmap,\r\n\t\t\t{\r\n\t\t\t\treferencePosition: { value: new Vector3() },\r\n\t\t\t\tnearDistance: { value: 1 },\r\n\t\t\t\tfarDistance: { value: 1000 }\r\n\t\t\t}\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.distanceRGBA_vert,\r\n\t\tfragmentShader: ShaderChunk.distanceRGBA_frag\r\n\r\n\t},\r\n\r\n\tshadow: {\r\n\r\n\t\tuniforms: mergeUniforms( [\r\n\t\t\tUniformsLib.lights,\r\n\t\t\tUniformsLib.fog,\r\n\t\t\t{\r\n\t\t\t\tcolor: { value: new Color( 0x00000 ) },\r\n\t\t\t\topacity: { value: 1.0 }\r\n\t\t\t},\r\n\t\t] ),\r\n\r\n\t\tvertexShader: ShaderChunk.shadow_vert,\r\n\t\tfragmentShader: ShaderChunk.shadow_frag\r\n\r\n\t}\r\n\r\n};\r\n\r\nShaderLib.physical = {\r\n\r\n\tuniforms: mergeUniforms( [\r\n\t\tShaderLib.standard.uniforms,\r\n\t\t{\r\n\t\t\tclearcoat: { value: 0 },\r\n\t\t\tclearcoatMap: { value: null },\r\n\t\t\tclearcoatRoughness: { value: 0 },\r\n\t\t\tclearcoatRoughnessMap: { value: null },\r\n\t\t\tclearcoatNormalScale: { value: new Vector2( 1, 1 ) },\r\n\t\t\tclearcoatNormalMap: { value: null },\r\n\t\t\tsheen: { value: new Color( 0x000000 ) },\r\n\t\t\ttransmission: { value: 0 },\r\n\t\t\ttransmissionMap: { value: null },\r\n\t\t}\r\n\t] ),\r\n\r\n\tvertexShader: ShaderChunk.meshphysical_vert,\r\n\tfragmentShader: ShaderChunk.meshphysical_frag\r\n\r\n};\r\n\r\nfunction WebGLBackground( renderer, cubemaps, state, objects, premultipliedAlpha ) {\r\n\r\n\tconst clearColor = new Color( 0x000000 );\r\n\tlet clearAlpha = 0;\r\n\r\n\tlet planeMesh;\r\n\tlet boxMesh;\r\n\r\n\tlet currentBackground = null;\r\n\tlet currentBackgroundVersion = 0;\r\n\tlet currentTonemapping = null;\r\n\r\n\tfunction render( renderList, scene, camera, forceClear ) {\r\n\r\n\t\tlet background = scene.isScene === true ? scene.background : null;\r\n\r\n\t\tif ( background && background.isTexture ) {\r\n\r\n\t\t\tbackground = cubemaps.get( background );\r\n\r\n\t\t}\r\n\r\n\t\t// Ignore background in AR\r\n\t\t// TODO: Reconsider this.\r\n\r\n\t\tconst xr = renderer.xr;\r\n\t\tconst session = xr.getSession && xr.getSession();\r\n\r\n\t\tif ( session && session.environmentBlendMode === 'additive' ) {\r\n\r\n\t\t\tbackground = null;\r\n\r\n\t\t}\r\n\r\n\t\tif ( background === null ) {\r\n\r\n\t\t\tsetClear( clearColor, clearAlpha );\r\n\r\n\t\t} else if ( background && background.isColor ) {\r\n\r\n\t\t\tsetClear( background, 1 );\r\n\t\t\tforceClear = true;\r\n\r\n\t\t}\r\n\r\n\t\tif ( renderer.autoClear || forceClear ) {\r\n\r\n\t\t\trenderer.clear( renderer.autoClearColor, renderer.autoClearDepth, renderer.autoClearStencil );\r\n\r\n\t\t}\r\n\r\n\t\tif ( background && ( background.isCubeTexture || background.isWebGLCubeRenderTarget || background.mapping === CubeUVReflectionMapping ) ) {\r\n\r\n\t\t\tif ( boxMesh === undefined ) {\r\n\r\n\t\t\t\tboxMesh = new Mesh(\r\n\t\t\t\t\tnew BoxBufferGeometry( 1, 1, 1 ),\r\n\t\t\t\t\tnew ShaderMaterial( {\r\n\t\t\t\t\t\tname: 'BackgroundCubeMaterial',\r\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.cube.uniforms ),\r\n\t\t\t\t\t\tvertexShader: ShaderLib.cube.vertexShader,\r\n\t\t\t\t\t\tfragmentShader: ShaderLib.cube.fragmentShader,\r\n\t\t\t\t\t\tside: BackSide,\r\n\t\t\t\t\t\tdepthTest: false,\r\n\t\t\t\t\t\tdepthWrite: false,\r\n\t\t\t\t\t\tfog: false\r\n\t\t\t\t\t} )\r\n\t\t\t\t);\r\n\r\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'normal' );\r\n\t\t\t\tboxMesh.geometry.deleteAttribute( 'uv' );\r\n\r\n\t\t\t\tboxMesh.onBeforeRender = function ( renderer, scene, camera ) {\r\n\r\n\t\t\t\t\tthis.matrixWorld.copyPosition( camera.matrixWorld );\r\n\r\n\t\t\t\t};\r\n\r\n\t\t\t\t// enable code injection for non-built-in material\r\n\t\t\t\tObject.defineProperty( boxMesh.material, 'envMap', {\r\n\r\n\t\t\t\t\tget: function () {\r\n\r\n\t\t\t\t\t\treturn this.uniforms.envMap.value;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} );\r\n\r\n\t\t\t\tobjects.update( boxMesh );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( background.isWebGLCubeRenderTarget ) {\r\n\r\n\t\t\t\t// TODO Deprecate\r\n\r\n\t\t\t\tbackground = background.texture;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tboxMesh.material.uniforms.envMap.value = background;\r\n\t\t\tboxMesh.material.uniforms.flipEnvMap.value = ( background.isCubeTexture && background._needsFlipEnvMap ) ? - 1 : 1;\r\n\r\n\t\t\tif ( currentBackground !== background ||\r\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\r\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\r\n\r\n\t\t\t\tboxMesh.material.needsUpdate = true;\r\n\r\n\t\t\t\tcurrentBackground = background;\r\n\t\t\t\tcurrentBackgroundVersion = background.version;\r\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// push to the pre-sorted opaque render list\r\n\t\t\trenderList.unshift( boxMesh, boxMesh.geometry, boxMesh.material, 0, 0, null );\r\n\r\n\t\t} else if ( background && background.isTexture ) {\r\n\r\n\t\t\tif ( planeMesh === undefined ) {\r\n\r\n\t\t\t\tplaneMesh = new Mesh(\r\n\t\t\t\t\tnew PlaneBufferGeometry( 2, 2 ),\r\n\t\t\t\t\tnew ShaderMaterial( {\r\n\t\t\t\t\t\tname: 'BackgroundMaterial',\r\n\t\t\t\t\t\tuniforms: cloneUniforms( ShaderLib.background.uniforms ),\r\n\t\t\t\t\t\tvertexShader: ShaderLib.background.vertexShader,\r\n\t\t\t\t\t\tfragmentShader: ShaderLib.background.fragmentShader,\r\n\t\t\t\t\t\tside: FrontSide,\r\n\t\t\t\t\t\tdepthTest: false,\r\n\t\t\t\t\t\tdepthWrite: false,\r\n\t\t\t\t\t\tfog: false\r\n\t\t\t\t\t} )\r\n\t\t\t\t);\r\n\r\n\t\t\t\tplaneMesh.geometry.deleteAttribute( 'normal' );\r\n\r\n\t\t\t\t// enable code injection for non-built-in material\r\n\t\t\t\tObject.defineProperty( planeMesh.material, 'map', {\r\n\r\n\t\t\t\t\tget: function () {\r\n\r\n\t\t\t\t\t\treturn this.uniforms.t2D.value;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} );\r\n\r\n\t\t\t\tobjects.update( planeMesh );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tplaneMesh.material.uniforms.t2D.value = background;\r\n\r\n\t\t\tif ( background.matrixAutoUpdate === true ) {\r\n\r\n\t\t\t\tbackground.updateMatrix();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tplaneMesh.material.uniforms.uvTransform.value.copy( background.matrix );\r\n\r\n\t\t\tif ( currentBackground !== background ||\r\n\t\t\t\tcurrentBackgroundVersion !== background.version ||\r\n\t\t\t\tcurrentTonemapping !== renderer.toneMapping ) {\r\n\r\n\t\t\t\tplaneMesh.material.needsUpdate = true;\r\n\r\n\t\t\t\tcurrentBackground = background;\r\n\t\t\t\tcurrentBackgroundVersion = background.version;\r\n\t\t\t\tcurrentTonemapping = renderer.toneMapping;\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// push to the pre-sorted opaque render list\r\n\t\t\trenderList.unshift( planeMesh, planeMesh.geometry, planeMesh.material, 0, 0, null );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction setClear( color, alpha ) {\r\n\r\n\t\tstate.buffers.color.setClear( color.r, color.g, color.b, alpha, premultipliedAlpha );\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tgetClearColor: function () {\r\n\r\n\t\t\treturn clearColor;\r\n\r\n\t\t},\r\n\t\tsetClearColor: function ( color, alpha = 1 ) {\r\n\r\n\t\t\tclearColor.set( color );\r\n\t\t\tclearAlpha = alpha;\r\n\t\t\tsetClear( clearColor, clearAlpha );\r\n\r\n\t\t},\r\n\t\tgetClearAlpha: function () {\r\n\r\n\t\t\treturn clearAlpha;\r\n\r\n\t\t},\r\n\t\tsetClearAlpha: function ( alpha ) {\r\n\r\n\t\t\tclearAlpha = alpha;\r\n\t\t\tsetClear( clearColor, clearAlpha );\r\n\r\n\t\t},\r\n\t\trender: render\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLBindingStates( gl, extensions, attributes, capabilities ) {\r\n\r\n\tconst maxVertexAttributes = gl.getParameter( 34921 );\r\n\r\n\tconst extension = capabilities.isWebGL2 ? null : extensions.get( 'OES_vertex_array_object' );\r\n\tconst vaoAvailable = capabilities.isWebGL2 || extension !== null;\r\n\r\n\tconst bindingStates = {};\r\n\r\n\tconst defaultState = createBindingState( null );\r\n\tlet currentState = defaultState;\r\n\r\n\tfunction setup( object, material, program, geometry, index ) {\r\n\r\n\t\tlet updateBuffers = false;\r\n\r\n\t\tif ( vaoAvailable ) {\r\n\r\n\t\t\tconst state = getBindingState( geometry, program, material );\r\n\r\n\t\t\tif ( currentState !== state ) {\r\n\r\n\t\t\t\tcurrentState = state;\r\n\t\t\t\tbindVertexArrayObject( currentState.object );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tupdateBuffers = needsUpdate( geometry, index );\r\n\r\n\t\t\tif ( updateBuffers ) saveCache( geometry, index );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst wireframe = ( material.wireframe === true );\r\n\r\n\t\t\tif ( currentState.geometry !== geometry.id ||\r\n\t\t\t\tcurrentState.program !== program.id ||\r\n\t\t\t\tcurrentState.wireframe !== wireframe ) {\r\n\r\n\t\t\t\tcurrentState.geometry = geometry.id;\r\n\t\t\t\tcurrentState.program = program.id;\r\n\t\t\t\tcurrentState.wireframe = wireframe;\r\n\r\n\t\t\t\tupdateBuffers = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( object.isInstancedMesh === true ) {\r\n\r\n\t\t\tupdateBuffers = true;\r\n\r\n\t\t}\r\n\r\n\t\tif ( index !== null ) {\r\n\r\n\t\t\tattributes.update( index, 34963 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( updateBuffers ) {\r\n\r\n\t\t\tsetupVertexAttributes( object, material, program, geometry );\r\n\r\n\t\t\tif ( index !== null ) {\r\n\r\n\t\t\t\tgl.bindBuffer( 34963, attributes.get( index ).buffer );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction createVertexArrayObject() {\r\n\r\n\t\tif ( capabilities.isWebGL2 ) return gl.createVertexArray();\r\n\r\n\t\treturn extension.createVertexArrayOES();\r\n\r\n\t}\r\n\r\n\tfunction bindVertexArrayObject( vao ) {\r\n\r\n\t\tif ( capabilities.isWebGL2 ) return gl.bindVertexArray( vao );\r\n\r\n\t\treturn extension.bindVertexArrayOES( vao );\r\n\r\n\t}\r\n\r\n\tfunction deleteVertexArrayObject( vao ) {\r\n\r\n\t\tif ( capabilities.isWebGL2 ) return gl.deleteVertexArray( vao );\r\n\r\n\t\treturn extension.deleteVertexArrayOES( vao );\r\n\r\n\t}\r\n\r\n\tfunction getBindingState( geometry, program, material ) {\r\n\r\n\t\tconst wireframe = ( material.wireframe === true );\r\n\r\n\t\tlet programMap = bindingStates[ geometry.id ];\r\n\r\n\t\tif ( programMap === undefined ) {\r\n\r\n\t\t\tprogramMap = {};\r\n\t\t\tbindingStates[ geometry.id ] = programMap;\r\n\r\n\t\t}\r\n\r\n\t\tlet stateMap = programMap[ program.id ];\r\n\r\n\t\tif ( stateMap === undefined ) {\r\n\r\n\t\t\tstateMap = {};\r\n\t\t\tprogramMap[ program.id ] = stateMap;\r\n\r\n\t\t}\r\n\r\n\t\tlet state = stateMap[ wireframe ];\r\n\r\n\t\tif ( state === undefined ) {\r\n\r\n\t\t\tstate = createBindingState( createVertexArrayObject() );\r\n\t\t\tstateMap[ wireframe ] = state;\r\n\r\n\t\t}\r\n\r\n\t\treturn state;\r\n\r\n\t}\r\n\r\n\tfunction createBindingState( vao ) {\r\n\r\n\t\tconst newAttributes = [];\r\n\t\tconst enabledAttributes = [];\r\n\t\tconst attributeDivisors = [];\r\n\r\n\t\tfor ( let i = 0; i < maxVertexAttributes; i ++ ) {\r\n\r\n\t\t\tnewAttributes[ i ] = 0;\r\n\t\t\tenabledAttributes[ i ] = 0;\r\n\t\t\tattributeDivisors[ i ] = 0;\r\n\r\n\t\t}\r\n\r\n\t\treturn {\r\n\r\n\t\t\t// for backward compatibility on non-VAO support browser\r\n\t\t\tgeometry: null,\r\n\t\t\tprogram: null,\r\n\t\t\twireframe: false,\r\n\r\n\t\t\tnewAttributes: newAttributes,\r\n\t\t\tenabledAttributes: enabledAttributes,\r\n\t\t\tattributeDivisors: attributeDivisors,\r\n\t\t\tobject: vao,\r\n\t\t\tattributes: {},\r\n\t\t\tindex: null\r\n\r\n\t\t};\r\n\r\n\t}\r\n\r\n\tfunction needsUpdate( geometry, index ) {\r\n\r\n\t\tconst cachedAttributes = currentState.attributes;\r\n\t\tconst geometryAttributes = geometry.attributes;\r\n\r\n\t\tlet attributesNum = 0;\r\n\r\n\t\tfor ( const key in geometryAttributes ) {\r\n\r\n\t\t\tconst cachedAttribute = cachedAttributes[ key ];\r\n\t\t\tconst geometryAttribute = geometryAttributes[ key ];\r\n\r\n\t\t\tif ( cachedAttribute === undefined ) return true;\r\n\r\n\t\t\tif ( cachedAttribute.attribute !== geometryAttribute ) return true;\r\n\r\n\t\t\tif ( cachedAttribute.data !== geometryAttribute.data ) return true;\r\n\r\n\t\t\tattributesNum ++;\r\n\r\n\t\t}\r\n\r\n\t\tif ( currentState.attributesNum !== attributesNum ) return true;\r\n\r\n\t\tif ( currentState.index !== index ) return true;\r\n\r\n\t\treturn false;\r\n\r\n\t}\r\n\r\n\tfunction saveCache( geometry, index ) {\r\n\r\n\t\tconst cache = {};\r\n\t\tconst attributes = geometry.attributes;\r\n\t\tlet attributesNum = 0;\r\n\r\n\t\tfor ( const key in attributes ) {\r\n\r\n\t\t\tconst attribute = attributes[ key ];\r\n\r\n\t\t\tconst data = {};\r\n\t\t\tdata.attribute = attribute;\r\n\r\n\t\t\tif ( attribute.data ) {\r\n\r\n\t\t\t\tdata.data = attribute.data;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcache[ key ] = data;\r\n\r\n\t\t\tattributesNum ++;\r\n\r\n\t\t}\r\n\r\n\t\tcurrentState.attributes = cache;\r\n\t\tcurrentState.attributesNum = attributesNum;\r\n\r\n\t\tcurrentState.index = index;\r\n\r\n\t}\r\n\r\n\tfunction initAttributes() {\r\n\r\n\t\tconst newAttributes = currentState.newAttributes;\r\n\r\n\t\tfor ( let i = 0, il = newAttributes.length; i < il; i ++ ) {\r\n\r\n\t\t\tnewAttributes[ i ] = 0;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction enableAttribute( attribute ) {\r\n\r\n\t\tenableAttributeAndDivisor( attribute, 0 );\r\n\r\n\t}\r\n\r\n\tfunction enableAttributeAndDivisor( attribute, meshPerAttribute ) {\r\n\r\n\t\tconst newAttributes = currentState.newAttributes;\r\n\t\tconst enabledAttributes = currentState.enabledAttributes;\r\n\t\tconst attributeDivisors = currentState.attributeDivisors;\r\n\r\n\t\tnewAttributes[ attribute ] = 1;\r\n\r\n\t\tif ( enabledAttributes[ attribute ] === 0 ) {\r\n\r\n\t\t\tgl.enableVertexAttribArray( attribute );\r\n\t\t\tenabledAttributes[ attribute ] = 1;\r\n\r\n\t\t}\r\n\r\n\t\tif ( attributeDivisors[ attribute ] !== meshPerAttribute ) {\r\n\r\n\t\t\tconst extension = capabilities.isWebGL2 ? gl : extensions.get( 'ANGLE_instanced_arrays' );\r\n\r\n\t\t\textension[ capabilities.isWebGL2 ? 'vertexAttribDivisor' : 'vertexAttribDivisorANGLE' ]( attribute, meshPerAttribute );\r\n\t\t\tattributeDivisors[ attribute ] = meshPerAttribute;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction disableUnusedAttributes() {\r\n\r\n\t\tconst newAttributes = currentState.newAttributes;\r\n\t\tconst enabledAttributes = currentState.enabledAttributes;\r\n\r\n\t\tfor ( let i = 0, il = enabledAttributes.length; i < il; i ++ ) {\r\n\r\n\t\t\tif ( enabledAttributes[ i ] !== newAttributes[ i ] ) {\r\n\r\n\t\t\t\tgl.disableVertexAttribArray( i );\r\n\t\t\t\tenabledAttributes[ i ] = 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction vertexAttribPointer( index, size, type, normalized, stride, offset ) {\r\n\r\n\t\tif ( capabilities.isWebGL2 === true && ( type === 5124 || type === 5125 ) ) {\r\n\r\n\t\t\tgl.vertexAttribIPointer( index, size, type, stride, offset );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tgl.vertexAttribPointer( index, size, type, normalized, stride, offset );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction setupVertexAttributes( object, material, program, geometry ) {\r\n\r\n\t\tif ( capabilities.isWebGL2 === false && ( object.isInstancedMesh || geometry.isInstancedBufferGeometry ) ) {\r\n\r\n\t\t\tif ( extensions.get( 'ANGLE_instanced_arrays' ) === null ) return;\r\n\r\n\t\t}\r\n\r\n\t\tinitAttributes();\r\n\r\n\t\tconst geometryAttributes = geometry.attributes;\r\n\r\n\t\tconst programAttributes = program.getAttributes();\r\n\r\n\t\tconst materialDefaultAttributeValues = material.defaultAttributeValues;\r\n\r\n\t\tfor ( const name in programAttributes ) {\r\n\r\n\t\t\tconst programAttribute = programAttributes[ name ];\r\n\r\n\t\t\tif ( programAttribute >= 0 ) {\r\n\r\n\t\t\t\tconst geometryAttribute = geometryAttributes[ name ];\r\n\r\n\t\t\t\tif ( geometryAttribute !== undefined ) {\r\n\r\n\t\t\t\t\tconst normalized = geometryAttribute.normalized;\r\n\t\t\t\t\tconst size = geometryAttribute.itemSize;\r\n\r\n\t\t\t\t\tconst attribute = attributes.get( geometryAttribute );\r\n\r\n\t\t\t\t\t// TODO Attribute may not be available on context restore\r\n\r\n\t\t\t\t\tif ( attribute === undefined ) continue;\r\n\r\n\t\t\t\t\tconst buffer = attribute.buffer;\r\n\t\t\t\t\tconst type = attribute.type;\r\n\t\t\t\t\tconst bytesPerElement = attribute.bytesPerElement;\r\n\r\n\t\t\t\t\tif ( geometryAttribute.isInterleavedBufferAttribute ) {\r\n\r\n\t\t\t\t\t\tconst data = geometryAttribute.data;\r\n\t\t\t\t\t\tconst stride = data.stride;\r\n\t\t\t\t\t\tconst offset = geometryAttribute.offset;\r\n\r\n\t\t\t\t\t\tif ( data && data.isInstancedInterleavedBuffer ) {\r\n\r\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, data.meshPerAttribute );\r\n\r\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\r\n\r\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = data.meshPerAttribute * data.count;\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\r\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, stride * bytesPerElement, offset * bytesPerElement );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tif ( geometryAttribute.isInstancedBufferAttribute ) {\r\n\r\n\t\t\t\t\t\t\tenableAttributeAndDivisor( programAttribute, geometryAttribute.meshPerAttribute );\r\n\r\n\t\t\t\t\t\t\tif ( geometry._maxInstanceCount === undefined ) {\r\n\r\n\t\t\t\t\t\t\t\tgeometry._maxInstanceCount = geometryAttribute.meshPerAttribute * geometryAttribute.count;\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\tenableAttribute( programAttribute );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tgl.bindBuffer( 34962, buffer );\r\n\t\t\t\t\t\tvertexAttribPointer( programAttribute, size, type, normalized, 0, 0 );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else if ( name === 'instanceMatrix' ) {\r\n\r\n\t\t\t\t\tconst attribute = attributes.get( object.instanceMatrix );\r\n\r\n\t\t\t\t\t// TODO Attribute may not be available on context restore\r\n\r\n\t\t\t\t\tif ( attribute === undefined ) continue;\r\n\r\n\t\t\t\t\tconst buffer = attribute.buffer;\r\n\t\t\t\t\tconst type = attribute.type;\r\n\r\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 0, 1 );\r\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 1, 1 );\r\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 2, 1 );\r\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute + 3, 1 );\r\n\r\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\r\n\r\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 0, 4, type, false, 64, 0 );\r\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 1, 4, type, false, 64, 16 );\r\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 2, 4, type, false, 64, 32 );\r\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute + 3, 4, type, false, 64, 48 );\r\n\r\n\t\t\t\t} else if ( name === 'instanceColor' ) {\r\n\r\n\t\t\t\t\tconst attribute = attributes.get( object.instanceColor );\r\n\r\n\t\t\t\t\t// TODO Attribute may not be available on context restore\r\n\r\n\t\t\t\t\tif ( attribute === undefined ) continue;\r\n\r\n\t\t\t\t\tconst buffer = attribute.buffer;\r\n\t\t\t\t\tconst type = attribute.type;\r\n\r\n\t\t\t\t\tenableAttributeAndDivisor( programAttribute, 1 );\r\n\r\n\t\t\t\t\tgl.bindBuffer( 34962, buffer );\r\n\r\n\t\t\t\t\tgl.vertexAttribPointer( programAttribute, 3, type, false, 12, 0 );\r\n\r\n\t\t\t\t} else if ( materialDefaultAttributeValues !== undefined ) {\r\n\r\n\t\t\t\t\tconst value = materialDefaultAttributeValues[ name ];\r\n\r\n\t\t\t\t\tif ( value !== undefined ) {\r\n\r\n\t\t\t\t\t\tswitch ( value.length ) {\r\n\r\n\t\t\t\t\t\t\tcase 2:\r\n\t\t\t\t\t\t\t\tgl.vertexAttrib2fv( programAttribute, value );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase 3:\r\n\t\t\t\t\t\t\t\tgl.vertexAttrib3fv( programAttribute, value );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase 4:\r\n\t\t\t\t\t\t\t\tgl.vertexAttrib4fv( programAttribute, value );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\t\tgl.vertexAttrib1fv( programAttribute, value );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tdisableUnusedAttributes();\r\n\r\n\t}\r\n\r\n\tfunction dispose() {\r\n\r\n\t\treset();\r\n\r\n\t\tfor ( const geometryId in bindingStates ) {\r\n\r\n\t\t\tconst programMap = bindingStates[ geometryId ];\r\n\r\n\t\t\tfor ( const programId in programMap ) {\r\n\r\n\t\t\t\tconst stateMap = programMap[ programId ];\r\n\r\n\t\t\t\tfor ( const wireframe in stateMap ) {\r\n\r\n\t\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\r\n\r\n\t\t\t\t\tdelete stateMap[ wireframe ];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdelete programMap[ programId ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tdelete bindingStates[ geometryId ];\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction releaseStatesOfGeometry( geometry ) {\r\n\r\n\t\tif ( bindingStates[ geometry.id ] === undefined ) return;\r\n\r\n\t\tconst programMap = bindingStates[ geometry.id ];\r\n\r\n\t\tfor ( const programId in programMap ) {\r\n\r\n\t\t\tconst stateMap = programMap[ programId ];\r\n\r\n\t\t\tfor ( const wireframe in stateMap ) {\r\n\r\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\r\n\r\n\t\t\t\tdelete stateMap[ wireframe ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tdelete programMap[ programId ];\r\n\r\n\t\t}\r\n\r\n\t\tdelete bindingStates[ geometry.id ];\r\n\r\n\t}\r\n\r\n\tfunction releaseStatesOfProgram( program ) {\r\n\r\n\t\tfor ( const geometryId in bindingStates ) {\r\n\r\n\t\t\tconst programMap = bindingStates[ geometryId ];\r\n\r\n\t\t\tif ( programMap[ program.id ] === undefined ) continue;\r\n\r\n\t\t\tconst stateMap = programMap[ program.id ];\r\n\r\n\t\t\tfor ( const wireframe in stateMap ) {\r\n\r\n\t\t\t\tdeleteVertexArrayObject( stateMap[ wireframe ].object );\r\n\r\n\t\t\t\tdelete stateMap[ wireframe ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tdelete programMap[ program.id ];\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction reset() {\r\n\r\n\t\tresetDefaultState();\r\n\r\n\t\tif ( currentState === defaultState ) return;\r\n\r\n\t\tcurrentState = defaultState;\r\n\t\tbindVertexArrayObject( currentState.object );\r\n\r\n\t}\r\n\r\n\t// for backward-compatilibity\r\n\r\n\tfunction resetDefaultState() {\r\n\r\n\t\tdefaultState.geometry = null;\r\n\t\tdefaultState.program = null;\r\n\t\tdefaultState.wireframe = false;\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tsetup: setup,\r\n\t\treset: reset,\r\n\t\tresetDefaultState: resetDefaultState,\r\n\t\tdispose: dispose,\r\n\t\treleaseStatesOfGeometry: releaseStatesOfGeometry,\r\n\t\treleaseStatesOfProgram: releaseStatesOfProgram,\r\n\r\n\t\tinitAttributes: initAttributes,\r\n\t\tenableAttribute: enableAttribute,\r\n\t\tdisableUnusedAttributes: disableUnusedAttributes\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLBufferRenderer( gl, extensions, info, capabilities ) {\r\n\r\n\tconst isWebGL2 = capabilities.isWebGL2;\r\n\r\n\tlet mode;\r\n\r\n\tfunction setMode( value ) {\r\n\r\n\t\tmode = value;\r\n\r\n\t}\r\n\r\n\tfunction render( start, count ) {\r\n\r\n\t\tgl.drawArrays( mode, start, count );\r\n\r\n\t\tinfo.update( count, mode, 1 );\r\n\r\n\t}\r\n\r\n\tfunction renderInstances( start, count, primcount ) {\r\n\r\n\t\tif ( primcount === 0 ) return;\r\n\r\n\t\tlet extension, methodName;\r\n\r\n\t\tif ( isWebGL2 ) {\r\n\r\n\t\t\textension = gl;\r\n\t\t\tmethodName = 'drawArraysInstanced';\r\n\r\n\t\t} else {\r\n\r\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\r\n\t\t\tmethodName = 'drawArraysInstancedANGLE';\r\n\r\n\t\t\tif ( extension === null ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.WebGLBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\textension[ methodName ]( mode, start, count, primcount );\r\n\r\n\t\tinfo.update( count, mode, primcount );\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tthis.setMode = setMode;\r\n\tthis.render = render;\r\n\tthis.renderInstances = renderInstances;\r\n\r\n}\r\n\r\nfunction WebGLCapabilities( gl, extensions, parameters ) {\r\n\r\n\tlet maxAnisotropy;\r\n\r\n\tfunction getMaxAnisotropy() {\r\n\r\n\t\tif ( maxAnisotropy !== undefined ) return maxAnisotropy;\r\n\r\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\r\n\r\n\t\tif ( extension !== null ) {\r\n\r\n\t\t\tmaxAnisotropy = gl.getParameter( extension.MAX_TEXTURE_MAX_ANISOTROPY_EXT );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tmaxAnisotropy = 0;\r\n\r\n\t\t}\r\n\r\n\t\treturn maxAnisotropy;\r\n\r\n\t}\r\n\r\n\tfunction getMaxPrecision( precision ) {\r\n\r\n\t\tif ( precision === 'highp' ) {\r\n\r\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36338 ).precision > 0 &&\r\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36338 ).precision > 0 ) {\r\n\r\n\t\t\t\treturn 'highp';\r\n\r\n\t\t\t}\r\n\r\n\t\t\tprecision = 'mediump';\r\n\r\n\t\t}\r\n\r\n\t\tif ( precision === 'mediump' ) {\r\n\r\n\t\t\tif ( gl.getShaderPrecisionFormat( 35633, 36337 ).precision > 0 &&\r\n\t\t\t\tgl.getShaderPrecisionFormat( 35632, 36337 ).precision > 0 ) {\r\n\r\n\t\t\t\treturn 'mediump';\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn 'lowp';\r\n\r\n\t}\r\n\r\n\t/* eslint-disable no-undef */\r\n\tconst isWebGL2 = ( typeof WebGL2RenderingContext !== 'undefined' && gl instanceof WebGL2RenderingContext ) ||\r\n\t\t( typeof WebGL2ComputeRenderingContext !== 'undefined' && gl instanceof WebGL2ComputeRenderingContext );\r\n\t/* eslint-enable no-undef */\r\n\r\n\tlet precision = parameters.precision !== undefined ? parameters.precision : 'highp';\r\n\tconst maxPrecision = getMaxPrecision( precision );\r\n\r\n\tif ( maxPrecision !== precision ) {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer:', precision, 'not supported, using', maxPrecision, 'instead.' );\r\n\t\tprecision = maxPrecision;\r\n\r\n\t}\r\n\r\n\tconst logarithmicDepthBuffer = parameters.logarithmicDepthBuffer === true;\r\n\r\n\tconst maxTextures = gl.getParameter( 34930 );\r\n\tconst maxVertexTextures = gl.getParameter( 35660 );\r\n\tconst maxTextureSize = gl.getParameter( 3379 );\r\n\tconst maxCubemapSize = gl.getParameter( 34076 );\r\n\r\n\tconst maxAttributes = gl.getParameter( 34921 );\r\n\tconst maxVertexUniforms = gl.getParameter( 36347 );\r\n\tconst maxVaryings = gl.getParameter( 36348 );\r\n\tconst maxFragmentUniforms = gl.getParameter( 36349 );\r\n\r\n\tconst vertexTextures = maxVertexTextures > 0;\r\n\tconst floatFragmentTextures = isWebGL2 || !! extensions.get( 'OES_texture_float' );\r\n\tconst floatVertexTextures = vertexTextures && floatFragmentTextures;\r\n\r\n\tconst maxSamples = isWebGL2 ? gl.getParameter( 36183 ) : 0;\r\n\r\n\treturn {\r\n\r\n\t\tisWebGL2: isWebGL2,\r\n\r\n\t\tgetMaxAnisotropy: getMaxAnisotropy,\r\n\t\tgetMaxPrecision: getMaxPrecision,\r\n\r\n\t\tprecision: precision,\r\n\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\r\n\r\n\t\tmaxTextures: maxTextures,\r\n\t\tmaxVertexTextures: maxVertexTextures,\r\n\t\tmaxTextureSize: maxTextureSize,\r\n\t\tmaxCubemapSize: maxCubemapSize,\r\n\r\n\t\tmaxAttributes: maxAttributes,\r\n\t\tmaxVertexUniforms: maxVertexUniforms,\r\n\t\tmaxVaryings: maxVaryings,\r\n\t\tmaxFragmentUniforms: maxFragmentUniforms,\r\n\r\n\t\tvertexTextures: vertexTextures,\r\n\t\tfloatFragmentTextures: floatFragmentTextures,\r\n\t\tfloatVertexTextures: floatVertexTextures,\r\n\r\n\t\tmaxSamples: maxSamples\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLClipping( properties ) {\r\n\r\n\tconst scope = this;\r\n\r\n\tlet globalState = null,\r\n\t\tnumGlobalPlanes = 0,\r\n\t\tlocalClippingEnabled = false,\r\n\t\trenderingShadows = false;\r\n\r\n\tconst plane = new Plane(),\r\n\t\tviewNormalMatrix = new Matrix3(),\r\n\r\n\t\tuniform = { value: null, needsUpdate: false };\r\n\r\n\tthis.uniform = uniform;\r\n\tthis.numPlanes = 0;\r\n\tthis.numIntersection = 0;\r\n\r\n\tthis.init = function ( planes, enableLocalClipping, camera ) {\r\n\r\n\t\tconst enabled =\r\n\t\t\tplanes.length !== 0 ||\r\n\t\t\tenableLocalClipping ||\r\n\t\t\t// enable state of previous frame - the clipping code has to\r\n\t\t\t// run another frame in order to reset the state:\r\n\t\t\tnumGlobalPlanes !== 0 ||\r\n\t\t\tlocalClippingEnabled;\r\n\r\n\t\tlocalClippingEnabled = enableLocalClipping;\r\n\r\n\t\tglobalState = projectPlanes( planes, camera, 0 );\r\n\t\tnumGlobalPlanes = planes.length;\r\n\r\n\t\treturn enabled;\r\n\r\n\t};\r\n\r\n\tthis.beginShadows = function () {\r\n\r\n\t\trenderingShadows = true;\r\n\t\tprojectPlanes( null );\r\n\r\n\t};\r\n\r\n\tthis.endShadows = function () {\r\n\r\n\t\trenderingShadows = false;\r\n\t\tresetGlobalState();\r\n\r\n\t};\r\n\r\n\tthis.setState = function ( material, camera, useCache ) {\r\n\r\n\t\tconst planes = material.clippingPlanes,\r\n\t\t\tclipIntersection = material.clipIntersection,\r\n\t\t\tclipShadows = material.clipShadows;\r\n\r\n\t\tconst materialProperties = properties.get( material );\r\n\r\n\t\tif ( ! localClippingEnabled || planes === null || planes.length === 0 || renderingShadows && ! clipShadows ) {\r\n\r\n\t\t\t// there's no local clipping\r\n\r\n\t\t\tif ( renderingShadows ) {\r\n\r\n\t\t\t\t// there's no global clipping\r\n\r\n\t\t\t\tprojectPlanes( null );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tresetGlobalState();\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst nGlobal = renderingShadows ? 0 : numGlobalPlanes,\r\n\t\t\t\tlGlobal = nGlobal * 4;\r\n\r\n\t\t\tlet dstArray = materialProperties.clippingState || null;\r\n\r\n\t\t\tuniform.value = dstArray; // ensure unique state\r\n\r\n\t\t\tdstArray = projectPlanes( planes, camera, lGlobal, useCache );\r\n\r\n\t\t\tfor ( let i = 0; i !== lGlobal; ++ i ) {\r\n\r\n\t\t\t\tdstArray[ i ] = globalState[ i ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmaterialProperties.clippingState = dstArray;\r\n\t\t\tthis.numIntersection = clipIntersection ? this.numPlanes : 0;\r\n\t\t\tthis.numPlanes += nGlobal;\r\n\r\n\t\t}\r\n\r\n\r\n\t};\r\n\r\n\tfunction resetGlobalState() {\r\n\r\n\t\tif ( uniform.value !== globalState ) {\r\n\r\n\t\t\tuniform.value = globalState;\r\n\t\t\tuniform.needsUpdate = numGlobalPlanes > 0;\r\n\r\n\t\t}\r\n\r\n\t\tscope.numPlanes = numGlobalPlanes;\r\n\t\tscope.numIntersection = 0;\r\n\r\n\t}\r\n\r\n\tfunction projectPlanes( planes, camera, dstOffset, skipTransform ) {\r\n\r\n\t\tconst nPlanes = planes !== null ? planes.length : 0;\r\n\t\tlet dstArray = null;\r\n\r\n\t\tif ( nPlanes !== 0 ) {\r\n\r\n\t\t\tdstArray = uniform.value;\r\n\r\n\t\t\tif ( skipTransform !== true || dstArray === null ) {\r\n\r\n\t\t\t\tconst flatSize = dstOffset + nPlanes * 4,\r\n\t\t\t\t\tviewMatrix = camera.matrixWorldInverse;\r\n\r\n\t\t\t\tviewNormalMatrix.getNormalMatrix( viewMatrix );\r\n\r\n\t\t\t\tif ( dstArray === null || dstArray.length < flatSize ) {\r\n\r\n\t\t\t\t\tdstArray = new Float32Array( flatSize );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor ( let i = 0, i4 = dstOffset; i !== nPlanes; ++ i, i4 += 4 ) {\r\n\r\n\t\t\t\t\tplane.copy( planes[ i ] ).applyMatrix4( viewMatrix, viewNormalMatrix );\r\n\r\n\t\t\t\t\tplane.normal.toArray( dstArray, i4 );\r\n\t\t\t\t\tdstArray[ i4 + 3 ] = plane.constant;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tuniform.value = dstArray;\r\n\t\t\tuniform.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t\tscope.numPlanes = nPlanes;\r\n\t\tscope.numIntersection = 0;\r\n\r\n\t\treturn dstArray;\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction WebGLCubeMaps( renderer ) {\r\n\r\n\tlet cubemaps = new WeakMap();\r\n\r\n\tfunction mapTextureMapping( texture, mapping ) {\r\n\r\n\t\tif ( mapping === EquirectangularReflectionMapping ) {\r\n\r\n\t\t\ttexture.mapping = CubeReflectionMapping;\r\n\r\n\t\t} else if ( mapping === EquirectangularRefractionMapping ) {\r\n\r\n\t\t\ttexture.mapping = CubeRefractionMapping;\r\n\r\n\t\t}\r\n\r\n\t\treturn texture;\r\n\r\n\t}\r\n\r\n\tfunction get( texture ) {\r\n\r\n\t\tif ( texture && texture.isTexture ) {\r\n\r\n\t\t\tconst mapping = texture.mapping;\r\n\r\n\t\t\tif ( mapping === EquirectangularReflectionMapping || mapping === EquirectangularRefractionMapping ) {\r\n\r\n\t\t\t\tif ( cubemaps.has( texture ) ) {\r\n\r\n\t\t\t\t\tconst cubemap = cubemaps.get( texture ).texture;\r\n\t\t\t\t\treturn mapTextureMapping( cubemap, texture.mapping );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconst image = texture.image;\r\n\r\n\t\t\t\t\tif ( image && image.height > 0 ) {\r\n\r\n\t\t\t\t\t\tconst currentRenderList = renderer.getRenderList();\r\n\t\t\t\t\t\tconst currentRenderTarget = renderer.getRenderTarget();\r\n\r\n\t\t\t\t\t\tconst renderTarget = new WebGLCubeRenderTarget( image.height / 2 );\r\n\t\t\t\t\t\trenderTarget.fromEquirectangularTexture( renderer, texture );\r\n\t\t\t\t\t\tcubemaps.set( texture, renderTarget );\r\n\r\n\t\t\t\t\t\trenderer.setRenderTarget( currentRenderTarget );\r\n\t\t\t\t\t\trenderer.setRenderList( currentRenderList );\r\n\r\n\t\t\t\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\r\n\r\n\t\t\t\t\t\treturn mapTextureMapping( renderTarget.texture, texture.mapping );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// image not yet ready. try the conversion next frame\r\n\r\n\t\t\t\t\t\treturn null;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn texture;\r\n\r\n\t}\r\n\r\n\tfunction onTextureDispose( event ) {\r\n\r\n\t\tconst texture = event.target;\r\n\r\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\r\n\r\n\t\tconst cubemap = cubemaps.get( texture );\r\n\r\n\t\tif ( cubemap !== undefined ) {\r\n\r\n\t\t\tcubemaps.delete( texture );\r\n\t\t\tcubemap.dispose();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction dispose() {\r\n\r\n\t\tcubemaps = new WeakMap();\r\n\r\n\t}\r\n\r\n\treturn {\r\n\t\tget: get,\r\n\t\tdispose: dispose\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLExtensions( gl ) {\r\n\r\n\tconst extensions = {};\r\n\r\n\treturn {\r\n\r\n\t\thas: function ( name ) {\r\n\r\n\t\t\tif ( extensions[ name ] !== undefined ) {\r\n\r\n\t\t\t\treturn extensions[ name ] !== null;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlet extension;\r\n\r\n\t\t\tswitch ( name ) {\r\n\r\n\t\t\t\tcase 'WEBGL_depth_texture':\r\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_depth_texture' ) || gl.getExtension( 'MOZ_WEBGL_depth_texture' ) || gl.getExtension( 'WEBKIT_WEBGL_depth_texture' );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'EXT_texture_filter_anisotropic':\r\n\t\t\t\t\textension = gl.getExtension( 'EXT_texture_filter_anisotropic' ) || gl.getExtension( 'MOZ_EXT_texture_filter_anisotropic' ) || gl.getExtension( 'WEBKIT_EXT_texture_filter_anisotropic' );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'WEBGL_compressed_texture_s3tc':\r\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'MOZ_WEBGL_compressed_texture_s3tc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_s3tc' );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'WEBGL_compressed_texture_pvrtc':\r\n\t\t\t\t\textension = gl.getExtension( 'WEBGL_compressed_texture_pvrtc' ) || gl.getExtension( 'WEBKIT_WEBGL_compressed_texture_pvrtc' );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\textension = gl.getExtension( name );\r\n\r\n\t\t\t}\r\n\r\n\t\t\textensions[ name ] = extension;\r\n\r\n\t\t\treturn extension !== null;\r\n\r\n\t\t},\r\n\r\n\t\tget: function ( name ) {\r\n\r\n\t\t\tif ( ! this.has( name ) ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: ' + name + ' extension not supported.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn extensions[ name ];\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLGeometries( gl, attributes, info, bindingStates ) {\r\n\r\n\tconst geometries = new WeakMap();\r\n\tconst wireframeAttributes = new WeakMap();\r\n\r\n\tfunction onGeometryDispose( event ) {\r\n\r\n\t\tconst geometry = event.target;\r\n\t\tconst buffergeometry = geometries.get( geometry );\r\n\r\n\t\tif ( buffergeometry.index !== null ) {\r\n\r\n\t\t\tattributes.remove( buffergeometry.index );\r\n\r\n\t\t}\r\n\r\n\t\tfor ( const name in buffergeometry.attributes ) {\r\n\r\n\t\t\tattributes.remove( buffergeometry.attributes[ name ] );\r\n\r\n\t\t}\r\n\r\n\t\tgeometry.removeEventListener( 'dispose', onGeometryDispose );\r\n\r\n\t\tgeometries.delete( geometry );\r\n\r\n\t\tconst attribute = wireframeAttributes.get( buffergeometry );\r\n\r\n\t\tif ( attribute ) {\r\n\r\n\t\t\tattributes.remove( attribute );\r\n\t\t\twireframeAttributes.delete( buffergeometry );\r\n\r\n\t\t}\r\n\r\n\t\tbindingStates.releaseStatesOfGeometry( buffergeometry );\r\n\r\n\t\tif ( geometry.isInstancedBufferGeometry === true ) {\r\n\r\n\t\t\tdelete geometry._maxInstanceCount;\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tinfo.memory.geometries --;\r\n\r\n\t}\r\n\r\n\tfunction get( object, geometry ) {\r\n\r\n\t\tlet buffergeometry = geometries.get( geometry );\r\n\r\n\t\tif ( buffergeometry ) return buffergeometry;\r\n\r\n\t\tgeometry.addEventListener( 'dispose', onGeometryDispose );\r\n\r\n\t\tif ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\tbuffergeometry = geometry;\r\n\r\n\t\t} else if ( geometry.isGeometry ) {\r\n\r\n\t\t\tif ( geometry._bufferGeometry === undefined ) {\r\n\r\n\t\t\t\tgeometry._bufferGeometry = new BufferGeometry().setFromObject( object );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbuffergeometry = geometry._bufferGeometry;\r\n\r\n\t\t}\r\n\r\n\t\tgeometries.set( geometry, buffergeometry );\r\n\r\n\t\tinfo.memory.geometries ++;\r\n\r\n\t\treturn buffergeometry;\r\n\r\n\t}\r\n\r\n\tfunction update( geometry ) {\r\n\r\n\t\tconst geometryAttributes = geometry.attributes;\r\n\r\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates.\r\n\r\n\t\tfor ( const name in geometryAttributes ) {\r\n\r\n\t\t\tattributes.update( geometryAttributes[ name ], 34962 );\r\n\r\n\t\t}\r\n\r\n\t\t// morph targets\r\n\r\n\t\tconst morphAttributes = geometry.morphAttributes;\r\n\r\n\t\tfor ( const name in morphAttributes ) {\r\n\r\n\t\t\tconst array = morphAttributes[ name ];\r\n\r\n\t\t\tfor ( let i = 0, l = array.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tattributes.update( array[ i ], 34962 );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction updateWireframeAttribute( geometry ) {\r\n\r\n\t\tconst indices = [];\r\n\r\n\t\tconst geometryIndex = geometry.index;\r\n\t\tconst geometryPosition = geometry.attributes.position;\r\n\t\tlet version = 0;\r\n\r\n\t\tif ( geometryIndex !== null ) {\r\n\r\n\t\t\tconst array = geometryIndex.array;\r\n\t\t\tversion = geometryIndex.version;\r\n\r\n\t\t\tfor ( let i = 0, l = array.length; i < l; i += 3 ) {\r\n\r\n\t\t\t\tconst a = array[ i + 0 ];\r\n\t\t\t\tconst b = array[ i + 1 ];\r\n\t\t\t\tconst c = array[ i + 2 ];\r\n\r\n\t\t\t\tindices.push( a, b, b, c, c, a );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst array = geometryPosition.array;\r\n\t\t\tversion = geometryPosition.version;\r\n\r\n\t\t\tfor ( let i = 0, l = ( array.length / 3 ) - 1; i < l; i += 3 ) {\r\n\r\n\t\t\t\tconst a = i + 0;\r\n\t\t\t\tconst b = i + 1;\r\n\t\t\t\tconst c = i + 2;\r\n\r\n\t\t\t\tindices.push( a, b, b, c, c, a );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst attribute = new ( arrayMax( indices ) > 65535 ? Uint32BufferAttribute : Uint16BufferAttribute )( indices, 1 );\r\n\t\tattribute.version = version;\r\n\r\n\t\t// Updating index buffer in VAO now. See WebGLBindingStates\r\n\r\n\t\t//\r\n\r\n\t\tconst previousAttribute = wireframeAttributes.get( geometry );\r\n\r\n\t\tif ( previousAttribute ) attributes.remove( previousAttribute );\r\n\r\n\t\t//\r\n\r\n\t\twireframeAttributes.set( geometry, attribute );\r\n\r\n\t}\r\n\r\n\tfunction getWireframeAttribute( geometry ) {\r\n\r\n\t\tconst currentAttribute = wireframeAttributes.get( geometry );\r\n\r\n\t\tif ( currentAttribute ) {\r\n\r\n\t\t\tconst geometryIndex = geometry.index;\r\n\r\n\t\t\tif ( geometryIndex !== null ) {\r\n\r\n\t\t\t\t// if the attribute is obsolete, create a new one\r\n\r\n\t\t\t\tif ( currentAttribute.version < geometryIndex.version ) {\r\n\r\n\t\t\t\t\tupdateWireframeAttribute( geometry );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tupdateWireframeAttribute( geometry );\r\n\r\n\t\t}\r\n\r\n\t\treturn wireframeAttributes.get( geometry );\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tget: get,\r\n\t\tupdate: update,\r\n\r\n\t\tgetWireframeAttribute: getWireframeAttribute\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLIndexedBufferRenderer( gl, extensions, info, capabilities ) {\r\n\r\n\tconst isWebGL2 = capabilities.isWebGL2;\r\n\r\n\tlet mode;\r\n\r\n\tfunction setMode( value ) {\r\n\r\n\t\tmode = value;\r\n\r\n\t}\r\n\r\n\tlet type, bytesPerElement;\r\n\r\n\tfunction setIndex( value ) {\r\n\r\n\t\ttype = value.type;\r\n\t\tbytesPerElement = value.bytesPerElement;\r\n\r\n\t}\r\n\r\n\tfunction render( start, count ) {\r\n\r\n\t\tgl.drawElements( mode, count, type, start * bytesPerElement );\r\n\r\n\t\tinfo.update( count, mode, 1 );\r\n\r\n\t}\r\n\r\n\tfunction renderInstances( start, count, primcount ) {\r\n\r\n\t\tif ( primcount === 0 ) return;\r\n\r\n\t\tlet extension, methodName;\r\n\r\n\t\tif ( isWebGL2 ) {\r\n\r\n\t\t\textension = gl;\r\n\t\t\tmethodName = 'drawElementsInstanced';\r\n\r\n\t\t} else {\r\n\r\n\t\t\textension = extensions.get( 'ANGLE_instanced_arrays' );\r\n\t\t\tmethodName = 'drawElementsInstancedANGLE';\r\n\r\n\t\t\tif ( extension === null ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.WebGLIndexedBufferRenderer: using THREE.InstancedBufferGeometry but hardware does not support extension ANGLE_instanced_arrays.' );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\textension[ methodName ]( mode, count, type, start * bytesPerElement, primcount );\r\n\r\n\t\tinfo.update( count, mode, primcount );\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tthis.setMode = setMode;\r\n\tthis.setIndex = setIndex;\r\n\tthis.render = render;\r\n\tthis.renderInstances = renderInstances;\r\n\r\n}\r\n\r\nfunction WebGLInfo( gl ) {\r\n\r\n\tconst memory = {\r\n\t\tgeometries: 0,\r\n\t\ttextures: 0\r\n\t};\r\n\r\n\tconst render = {\r\n\t\tframe: 0,\r\n\t\tcalls: 0,\r\n\t\ttriangles: 0,\r\n\t\tpoints: 0,\r\n\t\tlines: 0\r\n\t};\r\n\r\n\tfunction update( count, mode, instanceCount ) {\r\n\r\n\t\trender.calls ++;\r\n\r\n\t\tswitch ( mode ) {\r\n\r\n\t\t\tcase 4:\r\n\t\t\t\trender.triangles += instanceCount * ( count / 3 );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 1:\r\n\t\t\t\trender.lines += instanceCount * ( count / 2 );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 3:\r\n\t\t\t\trender.lines += instanceCount * ( count - 1 );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 2:\r\n\t\t\t\trender.lines += instanceCount * count;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 0:\r\n\t\t\t\trender.points += instanceCount * count;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tconsole.error( 'THREE.WebGLInfo: Unknown draw mode:', mode );\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction reset() {\r\n\r\n\t\trender.frame ++;\r\n\t\trender.calls = 0;\r\n\t\trender.triangles = 0;\r\n\t\trender.points = 0;\r\n\t\trender.lines = 0;\r\n\r\n\t}\r\n\r\n\treturn {\r\n\t\tmemory: memory,\r\n\t\trender: render,\r\n\t\tprograms: null,\r\n\t\tautoReset: true,\r\n\t\treset: reset,\r\n\t\tupdate: update\r\n\t};\r\n\r\n}\r\n\r\nfunction numericalSort( a, b ) {\r\n\r\n\treturn a[ 0 ] - b[ 0 ];\r\n\r\n}\r\n\r\nfunction absNumericalSort( a, b ) {\r\n\r\n\treturn Math.abs( b[ 1 ] ) - Math.abs( a[ 1 ] );\r\n\r\n}\r\n\r\nfunction WebGLMorphtargets( gl ) {\r\n\r\n\tconst influencesList = {};\r\n\tconst morphInfluences = new Float32Array( 8 );\r\n\r\n\tconst workInfluences = [];\r\n\r\n\tfor ( let i = 0; i < 8; i ++ ) {\r\n\r\n\t\tworkInfluences[ i ] = [ i, 0 ];\r\n\r\n\t}\r\n\r\n\tfunction update( object, geometry, material, program ) {\r\n\r\n\t\tconst objectInfluences = object.morphTargetInfluences;\r\n\r\n\t\t// When object doesn't have morph target influences defined, we treat it as a 0-length array\r\n\t\t// This is important to make sure we set up morphTargetBaseInfluence / morphTargetInfluences\r\n\r\n\t\tconst length = objectInfluences === undefined ? 0 : objectInfluences.length;\r\n\r\n\t\tlet influences = influencesList[ geometry.id ];\r\n\r\n\t\tif ( influences === undefined ) {\r\n\r\n\t\t\t// initialise list\r\n\r\n\t\t\tinfluences = [];\r\n\r\n\t\t\tfor ( let i = 0; i < length; i ++ ) {\r\n\r\n\t\t\t\tinfluences[ i ] = [ i, 0 ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tinfluencesList[ geometry.id ] = influences;\r\n\r\n\t\t}\r\n\r\n\t\t// Collect influences\r\n\r\n\t\tfor ( let i = 0; i < length; i ++ ) {\r\n\r\n\t\t\tconst influence = influences[ i ];\r\n\r\n\t\t\tinfluence[ 0 ] = i;\r\n\t\t\tinfluence[ 1 ] = objectInfluences[ i ];\r\n\r\n\t\t}\r\n\r\n\t\tinfluences.sort( absNumericalSort );\r\n\r\n\t\tfor ( let i = 0; i < 8; i ++ ) {\r\n\r\n\t\t\tif ( i < length && influences[ i ][ 1 ] ) {\r\n\r\n\t\t\t\tworkInfluences[ i ][ 0 ] = influences[ i ][ 0 ];\r\n\t\t\t\tworkInfluences[ i ][ 1 ] = influences[ i ][ 1 ];\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tworkInfluences[ i ][ 0 ] = Number.MAX_SAFE_INTEGER;\r\n\t\t\t\tworkInfluences[ i ][ 1 ] = 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tworkInfluences.sort( numericalSort );\r\n\r\n\t\tconst morphTargets = material.morphTargets && geometry.morphAttributes.position;\r\n\t\tconst morphNormals = material.morphNormals && geometry.morphAttributes.normal;\r\n\r\n\t\tlet morphInfluencesSum = 0;\r\n\r\n\t\tfor ( let i = 0; i < 8; i ++ ) {\r\n\r\n\t\t\tconst influence = workInfluences[ i ];\r\n\t\t\tconst index = influence[ 0 ];\r\n\t\t\tconst value = influence[ 1 ];\r\n\r\n\t\t\tif ( index !== Number.MAX_SAFE_INTEGER && value ) {\r\n\r\n\t\t\t\tif ( morphTargets && geometry.getAttribute( 'morphTarget' + i ) !== morphTargets[ index ] ) {\r\n\r\n\t\t\t\t\tgeometry.setAttribute( 'morphTarget' + i, morphTargets[ index ] );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( morphNormals && geometry.getAttribute( 'morphNormal' + i ) !== morphNormals[ index ] ) {\r\n\r\n\t\t\t\t\tgeometry.setAttribute( 'morphNormal' + i, morphNormals[ index ] );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmorphInfluences[ i ] = value;\r\n\t\t\t\tmorphInfluencesSum += value;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif ( morphTargets && geometry.hasAttribute( 'morphTarget' + i ) === true ) {\r\n\r\n\t\t\t\t\tgeometry.deleteAttribute( 'morphTarget' + i );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( morphNormals && geometry.hasAttribute( 'morphNormal' + i ) === true ) {\r\n\r\n\t\t\t\t\tgeometry.deleteAttribute( 'morphNormal' + i );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmorphInfluences[ i ] = 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// GLSL shader uses formula baseinfluence * base + sum(target * influence)\r\n\t\t// This allows us to switch between absolute morphs and relative morphs without changing shader code\r\n\t\t// When baseinfluence = 1 - sum(influence), the above is equivalent to sum((target - base) * influence)\r\n\t\tconst morphBaseInfluence = geometry.morphTargetsRelative ? 1 : 1 - morphInfluencesSum;\r\n\r\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetBaseInfluence', morphBaseInfluence );\r\n\t\tprogram.getUniforms().setValue( gl, 'morphTargetInfluences', morphInfluences );\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tupdate: update\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLObjects( gl, geometries, attributes, info ) {\r\n\r\n\tlet updateMap = new WeakMap();\r\n\r\n\tfunction update( object ) {\r\n\r\n\t\tconst frame = info.render.frame;\r\n\r\n\t\tconst geometry = object.geometry;\r\n\t\tconst buffergeometry = geometries.get( object, geometry );\r\n\r\n\t\t// Update once per frame\r\n\r\n\t\tif ( updateMap.get( buffergeometry ) !== frame ) {\r\n\r\n\t\t\tif ( geometry.isGeometry ) {\r\n\r\n\t\t\t\tbuffergeometry.updateFromObject( object );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tgeometries.update( buffergeometry );\r\n\r\n\t\t\tupdateMap.set( buffergeometry, frame );\r\n\r\n\t\t}\r\n\r\n\t\tif ( object.isInstancedMesh ) {\r\n\r\n\t\t\tif ( object.hasEventListener( 'dispose', onInstancedMeshDispose ) === false ) {\r\n\r\n\t\t\t\tobject.addEventListener( 'dispose', onInstancedMeshDispose );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tattributes.update( object.instanceMatrix, 34962 );\r\n\r\n\t\t\tif ( object.instanceColor !== null ) {\r\n\r\n\t\t\t\tattributes.update( object.instanceColor, 34962 );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn buffergeometry;\r\n\r\n\t}\r\n\r\n\tfunction dispose() {\r\n\r\n\t\tupdateMap = new WeakMap();\r\n\r\n\t}\r\n\r\n\tfunction onInstancedMeshDispose( event ) {\r\n\r\n\t\tconst instancedMesh = event.target;\r\n\r\n\t\tinstancedMesh.removeEventListener( 'dispose', onInstancedMeshDispose );\r\n\r\n\t\tattributes.remove( instancedMesh.instanceMatrix );\r\n\r\n\t\tif ( instancedMesh.instanceColor !== null ) attributes.remove( instancedMesh.instanceColor );\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tupdate: update,\r\n\t\tdispose: dispose\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction DataTexture2DArray( data = null, width = 1, height = 1, depth = 1 ) {\r\n\r\n\tTexture.call( this, null );\r\n\r\n\tthis.image = { data, width, height, depth };\r\n\r\n\tthis.magFilter = NearestFilter;\r\n\tthis.minFilter = NearestFilter;\r\n\r\n\tthis.wrapR = ClampToEdgeWrapping;\r\n\r\n\tthis.generateMipmaps = false;\r\n\tthis.flipY = false;\r\n\r\n\tthis.needsUpdate = true;\r\n\r\n}\r\n\r\nDataTexture2DArray.prototype = Object.create( Texture.prototype );\r\nDataTexture2DArray.prototype.constructor = DataTexture2DArray;\r\nDataTexture2DArray.prototype.isDataTexture2DArray = true;\r\n\r\nfunction DataTexture3D( data = null, width = 1, height = 1, depth = 1 ) {\r\n\r\n\t// We're going to add .setXXX() methods for setting properties later.\r\n\t// Users can still set in DataTexture3D directly.\r\n\t//\r\n\t//\tconst texture = new THREE.DataTexture3D( data, width, height, depth );\r\n\t// \ttexture.anisotropy = 16;\r\n\t//\r\n\t// See #14839\r\n\r\n\tTexture.call( this, null );\r\n\r\n\tthis.image = { data, width, height, depth };\r\n\r\n\tthis.magFilter = NearestFilter;\r\n\tthis.minFilter = NearestFilter;\r\n\r\n\tthis.wrapR = ClampToEdgeWrapping;\r\n\r\n\tthis.generateMipmaps = false;\r\n\tthis.flipY = false;\r\n\r\n\tthis.needsUpdate = true;\r\n\r\n\r\n}\r\n\r\nDataTexture3D.prototype = Object.create( Texture.prototype );\r\nDataTexture3D.prototype.constructor = DataTexture3D;\r\nDataTexture3D.prototype.isDataTexture3D = true;\r\n\r\n/**\r\n * Uniforms of a program.\r\n * Those form a tree structure with a special top-level container for the root,\r\n * which you get by calling 'new WebGLUniforms( gl, program )'.\r\n *\r\n *\r\n * Properties of inner nodes including the top-level container:\r\n *\r\n * .seq - array of nested uniforms\r\n * .map - nested uniforms by name\r\n *\r\n *\r\n * Methods of all nodes except the top-level container:\r\n *\r\n * .setValue( gl, value, [textures] )\r\n *\r\n * \t\tuploads a uniform value(s)\r\n * \tthe 'textures' parameter is needed for sampler uniforms\r\n *\r\n *\r\n * Static methods of the top-level container (textures factorizations):\r\n *\r\n * .upload( gl, seq, values, textures )\r\n *\r\n * \t\tsets uniforms in 'seq' to 'values[id].value'\r\n *\r\n * .seqWithValue( seq, values ) : filteredSeq\r\n *\r\n * \t\tfilters 'seq' entries with corresponding entry in values\r\n *\r\n *\r\n * Methods of the top-level container (textures factorizations):\r\n *\r\n * .setValue( gl, name, value, textures )\r\n *\r\n * \t\tsets uniform with name 'name' to 'value'\r\n *\r\n * .setOptional( gl, obj, prop )\r\n *\r\n * \t\tlike .set for an optional property of the object\r\n *\r\n */\r\n\r\nconst emptyTexture = new Texture();\r\nconst emptyTexture2dArray = new DataTexture2DArray();\r\nconst emptyTexture3d = new DataTexture3D();\r\nconst emptyCubeTexture = new CubeTexture();\r\n\r\n// --- Utilities ---\r\n\r\n// Array Caches (provide typed arrays for temporary by size)\r\n\r\nconst arrayCacheF32 = [];\r\nconst arrayCacheI32 = [];\r\n\r\n// Float32Array caches used for uploading Matrix uniforms\r\n\r\nconst mat4array = new Float32Array( 16 );\r\nconst mat3array = new Float32Array( 9 );\r\nconst mat2array = new Float32Array( 4 );\r\n\r\n// Flattening for arrays of vectors and matrices\r\n\r\nfunction flatten( array, nBlocks, blockSize ) {\r\n\r\n\tconst firstElem = array[ 0 ];\r\n\r\n\tif ( firstElem <= 0 || firstElem > 0 ) return array;\r\n\t// unoptimized: ! isNaN( firstElem )\r\n\t// see http://jacksondunstan.com/articles/983\r\n\r\n\tconst n = nBlocks * blockSize;\r\n\tlet r = arrayCacheF32[ n ];\r\n\r\n\tif ( r === undefined ) {\r\n\r\n\t\tr = new Float32Array( n );\r\n\t\tarrayCacheF32[ n ] = r;\r\n\r\n\t}\r\n\r\n\tif ( nBlocks !== 0 ) {\r\n\r\n\t\tfirstElem.toArray( r, 0 );\r\n\r\n\t\tfor ( let i = 1, offset = 0; i !== nBlocks; ++ i ) {\r\n\r\n\t\t\toffset += blockSize;\r\n\t\t\tarray[ i ].toArray( r, offset );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn r;\r\n\r\n}\r\n\r\nfunction arraysEqual( a, b ) {\r\n\r\n\tif ( a.length !== b.length ) return false;\r\n\r\n\tfor ( let i = 0, l = a.length; i < l; i ++ ) {\r\n\r\n\t\tif ( a[ i ] !== b[ i ] ) return false;\r\n\r\n\t}\r\n\r\n\treturn true;\r\n\r\n}\r\n\r\nfunction copyArray( a, b ) {\r\n\r\n\tfor ( let i = 0, l = b.length; i < l; i ++ ) {\r\n\r\n\t\ta[ i ] = b[ i ];\r\n\r\n\t}\r\n\r\n}\r\n\r\n// Texture unit allocation\r\n\r\nfunction allocTexUnits( textures, n ) {\r\n\r\n\tlet r = arrayCacheI32[ n ];\r\n\r\n\tif ( r === undefined ) {\r\n\r\n\t\tr = new Int32Array( n );\r\n\t\tarrayCacheI32[ n ] = r;\r\n\r\n\t}\r\n\r\n\tfor ( let i = 0; i !== n; ++ i ) {\r\n\r\n\t\tr[ i ] = textures.allocateTextureUnit();\r\n\r\n\t}\r\n\r\n\treturn r;\r\n\r\n}\r\n\r\n// --- Setters ---\r\n\r\n// Note: Defining these methods externally, because they come in a bunch\r\n// and this way their names minify.\r\n\r\n// Single scalar\r\n\r\nfunction setValueV1f( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( cache[ 0 ] === v ) return;\r\n\r\n\tgl.uniform1f( this.addr, v );\r\n\r\n\tcache[ 0 ] = v;\r\n\r\n}\r\n\r\n// Single float vector (from flat array or THREE.VectorN)\r\n\r\nfunction setValueV2f( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( v.x !== undefined ) {\r\n\r\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y ) {\r\n\r\n\t\t\tgl.uniform2f( this.addr, v.x, v.y );\r\n\r\n\t\t\tcache[ 0 ] = v.x;\r\n\t\t\tcache[ 1 ] = v.y;\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tif ( arraysEqual( cache, v ) ) return;\r\n\r\n\t\tgl.uniform2fv( this.addr, v );\r\n\r\n\t\tcopyArray( cache, v );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction setValueV3f( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( v.x !== undefined ) {\r\n\r\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z ) {\r\n\r\n\t\t\tgl.uniform3f( this.addr, v.x, v.y, v.z );\r\n\r\n\t\t\tcache[ 0 ] = v.x;\r\n\t\t\tcache[ 1 ] = v.y;\r\n\t\t\tcache[ 2 ] = v.z;\r\n\r\n\t\t}\r\n\r\n\t} else if ( v.r !== undefined ) {\r\n\r\n\t\tif ( cache[ 0 ] !== v.r || cache[ 1 ] !== v.g || cache[ 2 ] !== v.b ) {\r\n\r\n\t\t\tgl.uniform3f( this.addr, v.r, v.g, v.b );\r\n\r\n\t\t\tcache[ 0 ] = v.r;\r\n\t\t\tcache[ 1 ] = v.g;\r\n\t\t\tcache[ 2 ] = v.b;\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tif ( arraysEqual( cache, v ) ) return;\r\n\r\n\t\tgl.uniform3fv( this.addr, v );\r\n\r\n\t\tcopyArray( cache, v );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction setValueV4f( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( v.x !== undefined ) {\r\n\r\n\t\tif ( cache[ 0 ] !== v.x || cache[ 1 ] !== v.y || cache[ 2 ] !== v.z || cache[ 3 ] !== v.w ) {\r\n\r\n\t\t\tgl.uniform4f( this.addr, v.x, v.y, v.z, v.w );\r\n\r\n\t\t\tcache[ 0 ] = v.x;\r\n\t\t\tcache[ 1 ] = v.y;\r\n\t\t\tcache[ 2 ] = v.z;\r\n\t\t\tcache[ 3 ] = v.w;\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tif ( arraysEqual( cache, v ) ) return;\r\n\r\n\t\tgl.uniform4fv( this.addr, v );\r\n\r\n\t\tcopyArray( cache, v );\r\n\r\n\t}\r\n\r\n}\r\n\r\n// Single matrix (from flat array or MatrixN)\r\n\r\nfunction setValueM2( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\tconst elements = v.elements;\r\n\r\n\tif ( elements === undefined ) {\r\n\r\n\t\tif ( arraysEqual( cache, v ) ) return;\r\n\r\n\t\tgl.uniformMatrix2fv( this.addr, false, v );\r\n\r\n\t\tcopyArray( cache, v );\r\n\r\n\t} else {\r\n\r\n\t\tif ( arraysEqual( cache, elements ) ) return;\r\n\r\n\t\tmat2array.set( elements );\r\n\r\n\t\tgl.uniformMatrix2fv( this.addr, false, mat2array );\r\n\r\n\t\tcopyArray( cache, elements );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction setValueM3( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\tconst elements = v.elements;\r\n\r\n\tif ( elements === undefined ) {\r\n\r\n\t\tif ( arraysEqual( cache, v ) ) return;\r\n\r\n\t\tgl.uniformMatrix3fv( this.addr, false, v );\r\n\r\n\t\tcopyArray( cache, v );\r\n\r\n\t} else {\r\n\r\n\t\tif ( arraysEqual( cache, elements ) ) return;\r\n\r\n\t\tmat3array.set( elements );\r\n\r\n\t\tgl.uniformMatrix3fv( this.addr, false, mat3array );\r\n\r\n\t\tcopyArray( cache, elements );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction setValueM4( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\tconst elements = v.elements;\r\n\r\n\tif ( elements === undefined ) {\r\n\r\n\t\tif ( arraysEqual( cache, v ) ) return;\r\n\r\n\t\tgl.uniformMatrix4fv( this.addr, false, v );\r\n\r\n\t\tcopyArray( cache, v );\r\n\r\n\t} else {\r\n\r\n\t\tif ( arraysEqual( cache, elements ) ) return;\r\n\r\n\t\tmat4array.set( elements );\r\n\r\n\t\tgl.uniformMatrix4fv( this.addr, false, mat4array );\r\n\r\n\t\tcopyArray( cache, elements );\r\n\r\n\t}\r\n\r\n}\r\n\r\n// Single texture (2D / Cube)\r\n\r\nfunction setValueT1( gl, v, textures ) {\r\n\r\n\tconst cache = this.cache;\r\n\tconst unit = textures.allocateTextureUnit();\r\n\r\n\tif ( cache[ 0 ] !== unit ) {\r\n\r\n\t\tgl.uniform1i( this.addr, unit );\r\n\t\tcache[ 0 ] = unit;\r\n\r\n\t}\r\n\r\n\ttextures.safeSetTexture2D( v || emptyTexture, unit );\r\n\r\n}\r\n\r\nfunction setValueT2DArray1( gl, v, textures ) {\r\n\r\n\tconst cache = this.cache;\r\n\tconst unit = textures.allocateTextureUnit();\r\n\r\n\tif ( cache[ 0 ] !== unit ) {\r\n\r\n\t\tgl.uniform1i( this.addr, unit );\r\n\t\tcache[ 0 ] = unit;\r\n\r\n\t}\r\n\r\n\ttextures.setTexture2DArray( v || emptyTexture2dArray, unit );\r\n\r\n}\r\n\r\nfunction setValueT3D1( gl, v, textures ) {\r\n\r\n\tconst cache = this.cache;\r\n\tconst unit = textures.allocateTextureUnit();\r\n\r\n\tif ( cache[ 0 ] !== unit ) {\r\n\r\n\t\tgl.uniform1i( this.addr, unit );\r\n\t\tcache[ 0 ] = unit;\r\n\r\n\t}\r\n\r\n\ttextures.setTexture3D( v || emptyTexture3d, unit );\r\n\r\n}\r\n\r\nfunction setValueT6( gl, v, textures ) {\r\n\r\n\tconst cache = this.cache;\r\n\tconst unit = textures.allocateTextureUnit();\r\n\r\n\tif ( cache[ 0 ] !== unit ) {\r\n\r\n\t\tgl.uniform1i( this.addr, unit );\r\n\t\tcache[ 0 ] = unit;\r\n\r\n\t}\r\n\r\n\ttextures.safeSetTextureCube( v || emptyCubeTexture, unit );\r\n\r\n}\r\n\r\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\r\n\r\nfunction setValueV1i( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( cache[ 0 ] === v ) return;\r\n\r\n\tgl.uniform1i( this.addr, v );\r\n\r\n\tcache[ 0 ] = v;\r\n\r\n}\r\n\r\nfunction setValueV2i( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( arraysEqual( cache, v ) ) return;\r\n\r\n\tgl.uniform2iv( this.addr, v );\r\n\r\n\tcopyArray( cache, v );\r\n\r\n}\r\n\r\nfunction setValueV3i( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( arraysEqual( cache, v ) ) return;\r\n\r\n\tgl.uniform3iv( this.addr, v );\r\n\r\n\tcopyArray( cache, v );\r\n\r\n}\r\n\r\nfunction setValueV4i( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( arraysEqual( cache, v ) ) return;\r\n\r\n\tgl.uniform4iv( this.addr, v );\r\n\r\n\tcopyArray( cache, v );\r\n\r\n}\r\n\r\n// uint\r\n\r\nfunction setValueV1ui( gl, v ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( cache[ 0 ] === v ) return;\r\n\r\n\tgl.uniform1ui( this.addr, v );\r\n\r\n\tcache[ 0 ] = v;\r\n\r\n}\r\n\r\n// Helper to pick the right setter for the singular case\r\n\r\nfunction getSingularSetter( type ) {\r\n\r\n\tswitch ( type ) {\r\n\r\n\t\tcase 0x1406: return setValueV1f; // FLOAT\r\n\t\tcase 0x8b50: return setValueV2f; // _VEC2\r\n\t\tcase 0x8b51: return setValueV3f; // _VEC3\r\n\t\tcase 0x8b52: return setValueV4f; // _VEC4\r\n\r\n\t\tcase 0x8b5a: return setValueM2; // _MAT2\r\n\t\tcase 0x8b5b: return setValueM3; // _MAT3\r\n\t\tcase 0x8b5c: return setValueM4; // _MAT4\r\n\r\n\t\tcase 0x1404: case 0x8b56: return setValueV1i; // INT, BOOL\r\n\t\tcase 0x8b53: case 0x8b57: return setValueV2i; // _VEC2\r\n\t\tcase 0x8b54: case 0x8b58: return setValueV3i; // _VEC3\r\n\t\tcase 0x8b55: case 0x8b59: return setValueV4i; // _VEC4\r\n\r\n\t\tcase 0x1405: return setValueV1ui; // UINT\r\n\r\n\t\tcase 0x8b5e: // SAMPLER_2D\r\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\r\n\t\tcase 0x8dca: // INT_SAMPLER_2D\r\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\r\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\r\n\t\t\treturn setValueT1;\r\n\r\n\t\tcase 0x8b5f: // SAMPLER_3D\r\n\t\tcase 0x8dcb: // INT_SAMPLER_3D\r\n\t\tcase 0x8dd3: // UNSIGNED_INT_SAMPLER_3D\r\n\t\t\treturn setValueT3D1;\r\n\r\n\t\tcase 0x8b60: // SAMPLER_CUBE\r\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\r\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\r\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\r\n\t\t\treturn setValueT6;\r\n\r\n\t\tcase 0x8dc1: // SAMPLER_2D_ARRAY\r\n\t\tcase 0x8dcf: // INT_SAMPLER_2D_ARRAY\r\n\t\tcase 0x8dd7: // UNSIGNED_INT_SAMPLER_2D_ARRAY\r\n\t\tcase 0x8dc4: // SAMPLER_2D_ARRAY_SHADOW\r\n\t\t\treturn setValueT2DArray1;\r\n\r\n\t}\r\n\r\n}\r\n\r\n// Array of scalars\r\nfunction setValueV1fArray( gl, v ) {\r\n\r\n\tgl.uniform1fv( this.addr, v );\r\n\r\n}\r\n\r\n// Integer / Boolean vectors or arrays thereof (always flat arrays)\r\nfunction setValueV1iArray( gl, v ) {\r\n\r\n\tgl.uniform1iv( this.addr, v );\r\n\r\n}\r\n\r\nfunction setValueV2iArray( gl, v ) {\r\n\r\n\tgl.uniform2iv( this.addr, v );\r\n\r\n}\r\n\r\nfunction setValueV3iArray( gl, v ) {\r\n\r\n\tgl.uniform3iv( this.addr, v );\r\n\r\n}\r\n\r\nfunction setValueV4iArray( gl, v ) {\r\n\r\n\tgl.uniform4iv( this.addr, v );\r\n\r\n}\r\n\r\n\r\n// Array of vectors (flat or from THREE classes)\r\n\r\nfunction setValueV2fArray( gl, v ) {\r\n\r\n\tconst data = flatten( v, this.size, 2 );\r\n\r\n\tgl.uniform2fv( this.addr, data );\r\n\r\n}\r\n\r\nfunction setValueV3fArray( gl, v ) {\r\n\r\n\tconst data = flatten( v, this.size, 3 );\r\n\r\n\tgl.uniform3fv( this.addr, data );\r\n\r\n}\r\n\r\nfunction setValueV4fArray( gl, v ) {\r\n\r\n\tconst data = flatten( v, this.size, 4 );\r\n\r\n\tgl.uniform4fv( this.addr, data );\r\n\r\n}\r\n\r\n// Array of matrices (flat or from THREE clases)\r\n\r\nfunction setValueM2Array( gl, v ) {\r\n\r\n\tconst data = flatten( v, this.size, 4 );\r\n\r\n\tgl.uniformMatrix2fv( this.addr, false, data );\r\n\r\n}\r\n\r\nfunction setValueM3Array( gl, v ) {\r\n\r\n\tconst data = flatten( v, this.size, 9 );\r\n\r\n\tgl.uniformMatrix3fv( this.addr, false, data );\r\n\r\n}\r\n\r\nfunction setValueM4Array( gl, v ) {\r\n\r\n\tconst data = flatten( v, this.size, 16 );\r\n\r\n\tgl.uniformMatrix4fv( this.addr, false, data );\r\n\r\n}\r\n\r\n// Array of textures (2D / Cube)\r\n\r\nfunction setValueT1Array( gl, v, textures ) {\r\n\r\n\tconst n = v.length;\r\n\r\n\tconst units = allocTexUnits( textures, n );\r\n\r\n\tgl.uniform1iv( this.addr, units );\r\n\r\n\tfor ( let i = 0; i !== n; ++ i ) {\r\n\r\n\t\ttextures.safeSetTexture2D( v[ i ] || emptyTexture, units[ i ] );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction setValueT6Array( gl, v, textures ) {\r\n\r\n\tconst n = v.length;\r\n\r\n\tconst units = allocTexUnits( textures, n );\r\n\r\n\tgl.uniform1iv( this.addr, units );\r\n\r\n\tfor ( let i = 0; i !== n; ++ i ) {\r\n\r\n\t\ttextures.safeSetTextureCube( v[ i ] || emptyCubeTexture, units[ i ] );\r\n\r\n\t}\r\n\r\n}\r\n\r\n// Helper to pick the right setter for a pure (bottom-level) array\r\n\r\nfunction getPureArraySetter( type ) {\r\n\r\n\tswitch ( type ) {\r\n\r\n\t\tcase 0x1406: return setValueV1fArray; // FLOAT\r\n\t\tcase 0x8b50: return setValueV2fArray; // _VEC2\r\n\t\tcase 0x8b51: return setValueV3fArray; // _VEC3\r\n\t\tcase 0x8b52: return setValueV4fArray; // _VEC4\r\n\r\n\t\tcase 0x8b5a: return setValueM2Array; // _MAT2\r\n\t\tcase 0x8b5b: return setValueM3Array; // _MAT3\r\n\t\tcase 0x8b5c: return setValueM4Array; // _MAT4\r\n\r\n\t\tcase 0x1404: case 0x8b56: return setValueV1iArray; // INT, BOOL\r\n\t\tcase 0x8b53: case 0x8b57: return setValueV2iArray; // _VEC2\r\n\t\tcase 0x8b54: case 0x8b58: return setValueV3iArray; // _VEC3\r\n\t\tcase 0x8b55: case 0x8b59: return setValueV4iArray; // _VEC4\r\n\r\n\t\tcase 0x8b5e: // SAMPLER_2D\r\n\t\tcase 0x8d66: // SAMPLER_EXTERNAL_OES\r\n\t\tcase 0x8dca: // INT_SAMPLER_2D\r\n\t\tcase 0x8dd2: // UNSIGNED_INT_SAMPLER_2D\r\n\t\tcase 0x8b62: // SAMPLER_2D_SHADOW\r\n\t\t\treturn setValueT1Array;\r\n\r\n\t\tcase 0x8b60: // SAMPLER_CUBE\r\n\t\tcase 0x8dcc: // INT_SAMPLER_CUBE\r\n\t\tcase 0x8dd4: // UNSIGNED_INT_SAMPLER_CUBE\r\n\t\tcase 0x8dc5: // SAMPLER_CUBE_SHADOW\r\n\t\t\treturn setValueT6Array;\r\n\r\n\t}\r\n\r\n}\r\n\r\n// --- Uniform Classes ---\r\n\r\nfunction SingleUniform( id, activeInfo, addr ) {\r\n\r\n\tthis.id = id;\r\n\tthis.addr = addr;\r\n\tthis.cache = [];\r\n\tthis.setValue = getSingularSetter( activeInfo.type );\r\n\r\n\t// this.path = activeInfo.name; // DEBUG\r\n\r\n}\r\n\r\nfunction PureArrayUniform( id, activeInfo, addr ) {\r\n\r\n\tthis.id = id;\r\n\tthis.addr = addr;\r\n\tthis.cache = [];\r\n\tthis.size = activeInfo.size;\r\n\tthis.setValue = getPureArraySetter( activeInfo.type );\r\n\r\n\t// this.path = activeInfo.name; // DEBUG\r\n\r\n}\r\n\r\nPureArrayUniform.prototype.updateCache = function ( data ) {\r\n\r\n\tconst cache = this.cache;\r\n\r\n\tif ( data instanceof Float32Array && cache.length !== data.length ) {\r\n\r\n\t\tthis.cache = new Float32Array( data.length );\r\n\r\n\t}\r\n\r\n\tcopyArray( cache, data );\r\n\r\n};\r\n\r\nfunction StructuredUniform( id ) {\r\n\r\n\tthis.id = id;\r\n\r\n\tthis.seq = [];\r\n\tthis.map = {};\r\n\r\n}\r\n\r\nStructuredUniform.prototype.setValue = function ( gl, value, textures ) {\r\n\r\n\tconst seq = this.seq;\r\n\r\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\r\n\r\n\t\tconst u = seq[ i ];\r\n\t\tu.setValue( gl, value[ u.id ], textures );\r\n\r\n\t}\r\n\r\n};\r\n\r\n// --- Top-level ---\r\n\r\n// Parser - builds up the property tree from the path strings\r\n\r\nconst RePathPart = /(\\w+)(\\])?(\\[|\\.)?/g;\r\n\r\n// extracts\r\n// \t- the identifier (member name or array index)\r\n// - followed by an optional right bracket (found when array index)\r\n// - followed by an optional left bracket or dot (type of subscript)\r\n//\r\n// Note: These portions can be read in a non-overlapping fashion and\r\n// allow straightforward parsing of the hierarchy that WebGL encodes\r\n// in the uniform names.\r\n\r\nfunction addUniform( container, uniformObject ) {\r\n\r\n\tcontainer.seq.push( uniformObject );\r\n\tcontainer.map[ uniformObject.id ] = uniformObject;\r\n\r\n}\r\n\r\nfunction parseUniform( activeInfo, addr, container ) {\r\n\r\n\tconst path = activeInfo.name,\r\n\t\tpathLength = path.length;\r\n\r\n\t// reset RegExp object, because of the early exit of a previous run\r\n\tRePathPart.lastIndex = 0;\r\n\r\n\twhile ( true ) {\r\n\r\n\t\tconst match = RePathPart.exec( path ),\r\n\t\t\tmatchEnd = RePathPart.lastIndex;\r\n\r\n\t\tlet id = match[ 1 ];\r\n\t\tconst idIsIndex = match[ 2 ] === ']',\r\n\t\t\tsubscript = match[ 3 ];\r\n\r\n\t\tif ( idIsIndex ) id = id | 0; // convert to integer\r\n\r\n\t\tif ( subscript === undefined || subscript === '[' && matchEnd + 2 === pathLength ) {\r\n\r\n\t\t\t// bare name or \"pure\" bottom-level array \"[0]\" suffix\r\n\r\n\t\t\taddUniform( container, subscript === undefined ?\r\n\t\t\t\tnew SingleUniform( id, activeInfo, addr ) :\r\n\t\t\t\tnew PureArrayUniform( id, activeInfo, addr ) );\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// step into inner node / create it in case it doesn't exist\r\n\r\n\t\t\tconst map = container.map;\r\n\t\t\tlet next = map[ id ];\r\n\r\n\t\t\tif ( next === undefined ) {\r\n\r\n\t\t\t\tnext = new StructuredUniform( id );\r\n\t\t\t\taddUniform( container, next );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcontainer = next;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n// Root Container\r\n\r\nfunction WebGLUniforms( gl, program ) {\r\n\r\n\tthis.seq = [];\r\n\tthis.map = {};\r\n\r\n\tconst n = gl.getProgramParameter( program, 35718 );\r\n\r\n\tfor ( let i = 0; i < n; ++ i ) {\r\n\r\n\t\tconst info = gl.getActiveUniform( program, i ),\r\n\t\t\taddr = gl.getUniformLocation( program, info.name );\r\n\r\n\t\tparseUniform( info, addr, this );\r\n\r\n\t}\r\n\r\n}\r\n\r\nWebGLUniforms.prototype.setValue = function ( gl, name, value, textures ) {\r\n\r\n\tconst u = this.map[ name ];\r\n\r\n\tif ( u !== undefined ) u.setValue( gl, value, textures );\r\n\r\n};\r\n\r\nWebGLUniforms.prototype.setOptional = function ( gl, object, name ) {\r\n\r\n\tconst v = object[ name ];\r\n\r\n\tif ( v !== undefined ) this.setValue( gl, name, v );\r\n\r\n};\r\n\r\n\r\n// Static interface\r\n\r\nWebGLUniforms.upload = function ( gl, seq, values, textures ) {\r\n\r\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\r\n\r\n\t\tconst u = seq[ i ],\r\n\t\t\tv = values[ u.id ];\r\n\r\n\t\tif ( v.needsUpdate !== false ) {\r\n\r\n\t\t\t// note: always updating when .needsUpdate is undefined\r\n\t\t\tu.setValue( gl, v.value, textures );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\nWebGLUniforms.seqWithValue = function ( seq, values ) {\r\n\r\n\tconst r = [];\r\n\r\n\tfor ( let i = 0, n = seq.length; i !== n; ++ i ) {\r\n\r\n\t\tconst u = seq[ i ];\r\n\t\tif ( u.id in values ) r.push( u );\r\n\r\n\t}\r\n\r\n\treturn r;\r\n\r\n};\r\n\r\nfunction WebGLShader( gl, type, string ) {\r\n\r\n\tconst shader = gl.createShader( type );\r\n\r\n\tgl.shaderSource( shader, string );\r\n\tgl.compileShader( shader );\r\n\r\n\treturn shader;\r\n\r\n}\r\n\r\nlet programIdCount = 0;\r\n\r\nfunction addLineNumbers( string ) {\r\n\r\n\tconst lines = string.split( '\\n' );\r\n\r\n\tfor ( let i = 0; i < lines.length; i ++ ) {\r\n\r\n\t\tlines[ i ] = ( i + 1 ) + ': ' + lines[ i ];\r\n\r\n\t}\r\n\r\n\treturn lines.join( '\\n' );\r\n\r\n}\r\n\r\nfunction getEncodingComponents( encoding ) {\r\n\r\n\tswitch ( encoding ) {\r\n\r\n\t\tcase LinearEncoding:\r\n\t\t\treturn [ 'Linear', '( value )' ];\r\n\t\tcase sRGBEncoding:\r\n\t\t\treturn [ 'sRGB', '( value )' ];\r\n\t\tcase RGBEEncoding:\r\n\t\t\treturn [ 'RGBE', '( value )' ];\r\n\t\tcase RGBM7Encoding:\r\n\t\t\treturn [ 'RGBM', '( value, 7.0 )' ];\r\n\t\tcase RGBM16Encoding:\r\n\t\t\treturn [ 'RGBM', '( value, 16.0 )' ];\r\n\t\tcase RGBDEncoding:\r\n\t\t\treturn [ 'RGBD', '( value, 256.0 )' ];\r\n\t\tcase GammaEncoding:\r\n\t\t\treturn [ 'Gamma', '( value, float( GAMMA_FACTOR ) )' ];\r\n\t\tcase LogLuvEncoding:\r\n\t\t\treturn [ 'LogLuv', '( value )' ];\r\n\t\tdefault:\r\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported encoding:', encoding );\r\n\t\t\treturn [ 'Linear', '( value )' ];\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction getShaderErrors( gl, shader, type ) {\r\n\r\n\tconst status = gl.getShaderParameter( shader, 35713 );\r\n\tconst log = gl.getShaderInfoLog( shader ).trim();\r\n\r\n\tif ( status && log === '' ) return '';\r\n\r\n\t// --enable-privileged-webgl-extension\r\n\t// console.log( '**' + type + '**', gl.getExtension( 'WEBGL_debug_shaders' ).getTranslatedShaderSource( shader ) );\r\n\r\n\tconst source = gl.getShaderSource( shader );\r\n\r\n\treturn 'THREE.WebGLShader: gl.getShaderInfoLog() ' + type + '\\n' + log + addLineNumbers( source );\r\n\r\n}\r\n\r\nfunction getTexelDecodingFunction( functionName, encoding ) {\r\n\r\n\tconst components = getEncodingComponents( encoding );\r\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return ' + components[ 0 ] + 'ToLinear' + components[ 1 ] + '; }';\r\n\r\n}\r\n\r\nfunction getTexelEncodingFunction( functionName, encoding ) {\r\n\r\n\tconst components = getEncodingComponents( encoding );\r\n\treturn 'vec4 ' + functionName + '( vec4 value ) { return LinearTo' + components[ 0 ] + components[ 1 ] + '; }';\r\n\r\n}\r\n\r\nfunction getToneMappingFunction( functionName, toneMapping ) {\r\n\r\n\tlet toneMappingName;\r\n\r\n\tswitch ( toneMapping ) {\r\n\r\n\t\tcase LinearToneMapping:\r\n\t\t\ttoneMappingName = 'Linear';\r\n\t\t\tbreak;\r\n\r\n\t\tcase ReinhardToneMapping:\r\n\t\t\ttoneMappingName = 'Reinhard';\r\n\t\t\tbreak;\r\n\r\n\t\tcase CineonToneMapping:\r\n\t\t\ttoneMappingName = 'OptimizedCineon';\r\n\t\t\tbreak;\r\n\r\n\t\tcase ACESFilmicToneMapping:\r\n\t\t\ttoneMappingName = 'ACESFilmic';\r\n\t\t\tbreak;\r\n\r\n\t\tcase CustomToneMapping:\r\n\t\t\ttoneMappingName = 'Custom';\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\tconsole.warn( 'THREE.WebGLProgram: Unsupported toneMapping:', toneMapping );\r\n\t\t\ttoneMappingName = 'Linear';\r\n\r\n\t}\r\n\r\n\treturn 'vec3 ' + functionName + '( vec3 color ) { return ' + toneMappingName + 'ToneMapping( color ); }';\r\n\r\n}\r\n\r\nfunction generateExtensions( parameters ) {\r\n\r\n\tconst chunks = [\r\n\t\t( parameters.extensionDerivatives || parameters.envMapCubeUV || parameters.bumpMap || parameters.tangentSpaceNormalMap || parameters.clearcoatNormalMap || parameters.flatShading || parameters.shaderID === 'physical' ) ? '#extension GL_OES_standard_derivatives : enable' : '',\r\n\t\t( parameters.extensionFragDepth || parameters.logarithmicDepthBuffer ) && parameters.rendererExtensionFragDepth ? '#extension GL_EXT_frag_depth : enable' : '',\r\n\t\t( parameters.extensionDrawBuffers && parameters.rendererExtensionDrawBuffers ) ? '#extension GL_EXT_draw_buffers : require' : '',\r\n\t\t( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ? '#extension GL_EXT_shader_texture_lod : enable' : ''\r\n\t];\r\n\r\n\treturn chunks.filter( filterEmptyLine ).join( '\\n' );\r\n\r\n}\r\n\r\nfunction generateDefines( defines ) {\r\n\r\n\tconst chunks = [];\r\n\r\n\tfor ( const name in defines ) {\r\n\r\n\t\tconst value = defines[ name ];\r\n\r\n\t\tif ( value === false ) continue;\r\n\r\n\t\tchunks.push( '#define ' + name + ' ' + value );\r\n\r\n\t}\r\n\r\n\treturn chunks.join( '\\n' );\r\n\r\n}\r\n\r\nfunction fetchAttributeLocations( gl, program ) {\r\n\r\n\tconst attributes = {};\r\n\r\n\tconst n = gl.getProgramParameter( program, 35721 );\r\n\r\n\tfor ( let i = 0; i < n; i ++ ) {\r\n\r\n\t\tconst info = gl.getActiveAttrib( program, i );\r\n\t\tconst name = info.name;\r\n\r\n\t\t// console.log( 'THREE.WebGLProgram: ACTIVE VERTEX ATTRIBUTE:', name, i );\r\n\r\n\t\tattributes[ name ] = gl.getAttribLocation( program, name );\r\n\r\n\t}\r\n\r\n\treturn attributes;\r\n\r\n}\r\n\r\nfunction filterEmptyLine( string ) {\r\n\r\n\treturn string !== '';\r\n\r\n}\r\n\r\nfunction replaceLightNums( string, parameters ) {\r\n\r\n\treturn string\r\n\t\t.replace( /NUM_DIR_LIGHTS/g, parameters.numDirLights )\r\n\t\t.replace( /NUM_SPOT_LIGHTS/g, parameters.numSpotLights )\r\n\t\t.replace( /NUM_RECT_AREA_LIGHTS/g, parameters.numRectAreaLights )\r\n\t\t.replace( /NUM_POINT_LIGHTS/g, parameters.numPointLights )\r\n\t\t.replace( /NUM_HEMI_LIGHTS/g, parameters.numHemiLights )\r\n\t\t.replace( /NUM_DIR_LIGHT_SHADOWS/g, parameters.numDirLightShadows )\r\n\t\t.replace( /NUM_SPOT_LIGHT_SHADOWS/g, parameters.numSpotLightShadows )\r\n\t\t.replace( /NUM_POINT_LIGHT_SHADOWS/g, parameters.numPointLightShadows );\r\n\r\n}\r\n\r\nfunction replaceClippingPlaneNums( string, parameters ) {\r\n\r\n\treturn string\r\n\t\t.replace( /NUM_CLIPPING_PLANES/g, parameters.numClippingPlanes )\r\n\t\t.replace( /UNION_CLIPPING_PLANES/g, ( parameters.numClippingPlanes - parameters.numClipIntersection ) );\r\n\r\n}\r\n\r\n// Resolve Includes\r\n\r\nconst includePattern = /^[ \\t]*#include +<([\\w\\d./]+)>/gm;\r\n\r\nfunction resolveIncludes( string ) {\r\n\r\n\treturn string.replace( includePattern, includeReplacer );\r\n\r\n}\r\n\r\nfunction includeReplacer( match, include ) {\r\n\r\n\tconst string = ShaderChunk[ include ];\r\n\r\n\tif ( string === undefined ) {\r\n\r\n\t\tthrow new Error( 'Can not resolve #include <' + include + '>' );\r\n\r\n\t}\r\n\r\n\treturn resolveIncludes( string );\r\n\r\n}\r\n\r\n// Unroll Loops\r\n\r\nconst deprecatedUnrollLoopPattern = /#pragma unroll_loop[\\s]+?for \\( int i \\= (\\d+)\\; i < (\\d+)\\; i \\+\\+ \\) \\{([\\s\\S]+?)(?=\\})\\}/g;\r\nconst unrollLoopPattern = /#pragma unroll_loop_start\\s+for\\s*\\(\\s*int\\s+i\\s*=\\s*(\\d+)\\s*;\\s*i\\s*<\\s*(\\d+)\\s*;\\s*i\\s*\\+\\+\\s*\\)\\s*{([\\s\\S]+?)}\\s+#pragma unroll_loop_end/g;\r\n\r\nfunction unrollLoops( string ) {\r\n\r\n\treturn string\r\n\t\t.replace( unrollLoopPattern, loopReplacer )\r\n\t\t.replace( deprecatedUnrollLoopPattern, deprecatedLoopReplacer );\r\n\r\n}\r\n\r\nfunction deprecatedLoopReplacer( match, start, end, snippet ) {\r\n\r\n\tconsole.warn( 'WebGLProgram: #pragma unroll_loop shader syntax is deprecated. Please use #pragma unroll_loop_start syntax instead.' );\r\n\treturn loopReplacer( match, start, end, snippet );\r\n\r\n}\r\n\r\nfunction loopReplacer( match, start, end, snippet ) {\r\n\r\n\tlet string = '';\r\n\r\n\tfor ( let i = parseInt( start ); i < parseInt( end ); i ++ ) {\r\n\r\n\t\tstring += snippet\r\n\t\t\t.replace( /\\[\\s*i\\s*\\]/g, '[ ' + i + ' ]' )\r\n\t\t\t.replace( /UNROLLED_LOOP_INDEX/g, i );\r\n\r\n\t}\r\n\r\n\treturn string;\r\n\r\n}\r\n\r\n//\r\n\r\nfunction generatePrecision( parameters ) {\r\n\r\n\tlet precisionstring = 'precision ' + parameters.precision + ' float;\\nprecision ' + parameters.precision + ' int;';\r\n\r\n\tif ( parameters.precision === 'highp' ) {\r\n\r\n\t\tprecisionstring += '\\n#define HIGH_PRECISION';\r\n\r\n\t} else if ( parameters.precision === 'mediump' ) {\r\n\r\n\t\tprecisionstring += '\\n#define MEDIUM_PRECISION';\r\n\r\n\t} else if ( parameters.precision === 'lowp' ) {\r\n\r\n\t\tprecisionstring += '\\n#define LOW_PRECISION';\r\n\r\n\t}\r\n\r\n\treturn precisionstring;\r\n\r\n}\r\n\r\nfunction generateShadowMapTypeDefine( parameters ) {\r\n\r\n\tlet shadowMapTypeDefine = 'SHADOWMAP_TYPE_BASIC';\r\n\r\n\tif ( parameters.shadowMapType === PCFShadowMap ) {\r\n\r\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF';\r\n\r\n\t} else if ( parameters.shadowMapType === PCFSoftShadowMap ) {\r\n\r\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_PCF_SOFT';\r\n\r\n\t} else if ( parameters.shadowMapType === VSMShadowMap ) {\r\n\r\n\t\tshadowMapTypeDefine = 'SHADOWMAP_TYPE_VSM';\r\n\r\n\t}\r\n\r\n\treturn shadowMapTypeDefine;\r\n\r\n}\r\n\r\nfunction generateEnvMapTypeDefine( parameters ) {\r\n\r\n\tlet envMapTypeDefine = 'ENVMAP_TYPE_CUBE';\r\n\r\n\tif ( parameters.envMap ) {\r\n\r\n\t\tswitch ( parameters.envMapMode ) {\r\n\r\n\t\t\tcase CubeReflectionMapping:\r\n\t\t\tcase CubeRefractionMapping:\r\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase CubeUVReflectionMapping:\r\n\t\t\tcase CubeUVRefractionMapping:\r\n\t\t\t\tenvMapTypeDefine = 'ENVMAP_TYPE_CUBE_UV';\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn envMapTypeDefine;\r\n\r\n}\r\n\r\nfunction generateEnvMapModeDefine( parameters ) {\r\n\r\n\tlet envMapModeDefine = 'ENVMAP_MODE_REFLECTION';\r\n\r\n\tif ( parameters.envMap ) {\r\n\r\n\t\tswitch ( parameters.envMapMode ) {\r\n\r\n\t\t\tcase CubeRefractionMapping:\r\n\t\t\tcase CubeUVRefractionMapping:\r\n\r\n\t\t\t\tenvMapModeDefine = 'ENVMAP_MODE_REFRACTION';\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn envMapModeDefine;\r\n\r\n}\r\n\r\nfunction generateEnvMapBlendingDefine( parameters ) {\r\n\r\n\tlet envMapBlendingDefine = 'ENVMAP_BLENDING_NONE';\r\n\r\n\tif ( parameters.envMap ) {\r\n\r\n\t\tswitch ( parameters.combine ) {\r\n\r\n\t\t\tcase MultiplyOperation:\r\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MULTIPLY';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase MixOperation:\r\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_MIX';\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase AddOperation:\r\n\t\t\t\tenvMapBlendingDefine = 'ENVMAP_BLENDING_ADD';\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn envMapBlendingDefine;\r\n\r\n}\r\n\r\nfunction WebGLProgram( renderer, cacheKey, parameters, bindingStates ) {\r\n\r\n\tconst gl = renderer.getContext();\r\n\r\n\tconst defines = parameters.defines;\r\n\r\n\tlet vertexShader = parameters.vertexShader;\r\n\tlet fragmentShader = parameters.fragmentShader;\r\n\r\n\tconst shadowMapTypeDefine = generateShadowMapTypeDefine( parameters );\r\n\tconst envMapTypeDefine = generateEnvMapTypeDefine( parameters );\r\n\tconst envMapModeDefine = generateEnvMapModeDefine( parameters );\r\n\tconst envMapBlendingDefine = generateEnvMapBlendingDefine( parameters );\r\n\r\n\r\n\tconst gammaFactorDefine = ( renderer.gammaFactor > 0 ) ? renderer.gammaFactor : 1.0;\r\n\r\n\tconst customExtensions = parameters.isWebGL2 ? '' : generateExtensions( parameters );\r\n\r\n\tconst customDefines = generateDefines( defines );\r\n\r\n\tconst program = gl.createProgram();\r\n\r\n\tlet prefixVertex, prefixFragment;\r\n\tlet versionString = parameters.glslVersion ? '#version ' + parameters.glslVersion + '\\n' : '';\r\n\r\n\tif ( parameters.isRawShaderMaterial ) {\r\n\r\n\t\tprefixVertex = [\r\n\r\n\t\t\tcustomDefines\r\n\r\n\t\t].filter( filterEmptyLine ).join( '\\n' );\r\n\r\n\t\tif ( prefixVertex.length > 0 ) {\r\n\r\n\t\t\tprefixVertex += '\\n';\r\n\r\n\t\t}\r\n\r\n\t\tprefixFragment = [\r\n\r\n\t\t\tcustomExtensions,\r\n\t\t\tcustomDefines\r\n\r\n\t\t].filter( filterEmptyLine ).join( '\\n' );\r\n\r\n\t\tif ( prefixFragment.length > 0 ) {\r\n\r\n\t\t\tprefixFragment += '\\n';\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tprefixVertex = [\r\n\r\n\t\t\tgeneratePrecision( parameters ),\r\n\r\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\r\n\r\n\t\t\tcustomDefines,\r\n\r\n\t\t\tparameters.instancing ? '#define USE_INSTANCING' : '',\r\n\t\t\tparameters.instancingColor ? '#define USE_INSTANCING_COLOR' : '',\r\n\r\n\t\t\tparameters.supportsVertexTextures ? '#define VERTEX_TEXTURES' : '',\r\n\r\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\r\n\r\n\t\t\t'#define MAX_BONES ' + parameters.maxBones,\r\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\r\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\r\n\r\n\t\t\tparameters.map ? '#define USE_MAP' : '',\r\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\r\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\r\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\r\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\r\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\r\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\r\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\r\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\r\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\r\n\r\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\r\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\r\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\r\n\t\t\tparameters.displacementMap && parameters.supportsVertexTextures ? '#define USE_DISPLACEMENTMAP' : '',\r\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\r\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\r\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\r\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\r\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\r\n\r\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\r\n\t\t\tparameters.vertexColors ? '#define USE_COLOR' : '',\r\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\r\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\r\n\r\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\r\n\r\n\t\t\tparameters.skinning ? '#define USE_SKINNING' : '',\r\n\t\t\tparameters.useVertexTexture ? '#define BONE_TEXTURE' : '',\r\n\r\n\t\t\tparameters.morphTargets ? '#define USE_MORPHTARGETS' : '',\r\n\t\t\tparameters.morphNormals && parameters.flatShading === false ? '#define USE_MORPHNORMALS' : '',\r\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\r\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\r\n\r\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\r\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\r\n\r\n\t\t\tparameters.sizeAttenuation ? '#define USE_SIZEATTENUATION' : '',\r\n\r\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\r\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\r\n\r\n\t\t\t'uniform mat4 modelMatrix;',\r\n\t\t\t'uniform mat4 modelViewMatrix;',\r\n\t\t\t'uniform mat4 projectionMatrix;',\r\n\t\t\t'uniform mat4 viewMatrix;',\r\n\t\t\t'uniform mat3 normalMatrix;',\r\n\t\t\t'uniform vec3 cameraPosition;',\r\n\t\t\t'uniform bool isOrthographic;',\r\n\r\n\t\t\t'#ifdef USE_INSTANCING',\r\n\r\n\t\t\t'\tattribute mat4 instanceMatrix;',\r\n\r\n\t\t\t'#endif',\r\n\r\n\t\t\t'#ifdef USE_INSTANCING_COLOR',\r\n\r\n\t\t\t'\tattribute vec3 instanceColor;',\r\n\r\n\t\t\t'#endif',\r\n\r\n\t\t\t'attribute vec3 position;',\r\n\t\t\t'attribute vec3 normal;',\r\n\t\t\t'attribute vec2 uv;',\r\n\r\n\t\t\t'#ifdef USE_TANGENT',\r\n\r\n\t\t\t'\tattribute vec4 tangent;',\r\n\r\n\t\t\t'#endif',\r\n\r\n\t\t\t'#ifdef USE_COLOR',\r\n\r\n\t\t\t'\tattribute vec3 color;',\r\n\r\n\t\t\t'#endif',\r\n\r\n\t\t\t'#ifdef USE_MORPHTARGETS',\r\n\r\n\t\t\t'\tattribute vec3 morphTarget0;',\r\n\t\t\t'\tattribute vec3 morphTarget1;',\r\n\t\t\t'\tattribute vec3 morphTarget2;',\r\n\t\t\t'\tattribute vec3 morphTarget3;',\r\n\r\n\t\t\t'\t#ifdef USE_MORPHNORMALS',\r\n\r\n\t\t\t'\t\tattribute vec3 morphNormal0;',\r\n\t\t\t'\t\tattribute vec3 morphNormal1;',\r\n\t\t\t'\t\tattribute vec3 morphNormal2;',\r\n\t\t\t'\t\tattribute vec3 morphNormal3;',\r\n\r\n\t\t\t'\t#else',\r\n\r\n\t\t\t'\t\tattribute vec3 morphTarget4;',\r\n\t\t\t'\t\tattribute vec3 morphTarget5;',\r\n\t\t\t'\t\tattribute vec3 morphTarget6;',\r\n\t\t\t'\t\tattribute vec3 morphTarget7;',\r\n\r\n\t\t\t'\t#endif',\r\n\r\n\t\t\t'#endif',\r\n\r\n\t\t\t'#ifdef USE_SKINNING',\r\n\r\n\t\t\t'\tattribute vec4 skinIndex;',\r\n\t\t\t'\tattribute vec4 skinWeight;',\r\n\r\n\t\t\t'#endif',\r\n\r\n\t\t\t'\\n'\r\n\r\n\t\t].filter( filterEmptyLine ).join( '\\n' );\r\n\r\n\t\tprefixFragment = [\r\n\r\n\t\t\tcustomExtensions,\r\n\r\n\t\t\tgeneratePrecision( parameters ),\r\n\r\n\t\t\t'#define SHADER_NAME ' + parameters.shaderName,\r\n\r\n\t\t\tcustomDefines,\r\n\r\n\t\t\tparameters.alphaTest ? '#define ALPHATEST ' + parameters.alphaTest + ( parameters.alphaTest % 1 ? '' : '.0' ) : '', // add '.0' if integer\r\n\r\n\t\t\t'#define GAMMA_FACTOR ' + gammaFactorDefine,\r\n\r\n\t\t\t( parameters.useFog && parameters.fog ) ? '#define USE_FOG' : '',\r\n\t\t\t( parameters.useFog && parameters.fogExp2 ) ? '#define FOG_EXP2' : '',\r\n\r\n\t\t\tparameters.map ? '#define USE_MAP' : '',\r\n\t\t\tparameters.matcap ? '#define USE_MATCAP' : '',\r\n\t\t\tparameters.envMap ? '#define USE_ENVMAP' : '',\r\n\t\t\tparameters.envMap ? '#define ' + envMapTypeDefine : '',\r\n\t\t\tparameters.envMap ? '#define ' + envMapModeDefine : '',\r\n\t\t\tparameters.envMap ? '#define ' + envMapBlendingDefine : '',\r\n\t\t\tparameters.lightMap ? '#define USE_LIGHTMAP' : '',\r\n\t\t\tparameters.aoMap ? '#define USE_AOMAP' : '',\r\n\t\t\tparameters.emissiveMap ? '#define USE_EMISSIVEMAP' : '',\r\n\t\t\tparameters.bumpMap ? '#define USE_BUMPMAP' : '',\r\n\t\t\tparameters.normalMap ? '#define USE_NORMALMAP' : '',\r\n\t\t\t( parameters.normalMap && parameters.objectSpaceNormalMap ) ? '#define OBJECTSPACE_NORMALMAP' : '',\r\n\t\t\t( parameters.normalMap && parameters.tangentSpaceNormalMap ) ? '#define TANGENTSPACE_NORMALMAP' : '',\r\n\t\t\tparameters.clearcoatMap ? '#define USE_CLEARCOATMAP' : '',\r\n\t\t\tparameters.clearcoatRoughnessMap ? '#define USE_CLEARCOAT_ROUGHNESSMAP' : '',\r\n\t\t\tparameters.clearcoatNormalMap ? '#define USE_CLEARCOAT_NORMALMAP' : '',\r\n\t\t\tparameters.specularMap ? '#define USE_SPECULARMAP' : '',\r\n\t\t\tparameters.roughnessMap ? '#define USE_ROUGHNESSMAP' : '',\r\n\t\t\tparameters.metalnessMap ? '#define USE_METALNESSMAP' : '',\r\n\t\t\tparameters.alphaMap ? '#define USE_ALPHAMAP' : '',\r\n\r\n\t\t\tparameters.sheen ? '#define USE_SHEEN' : '',\r\n\t\t\tparameters.transmissionMap ? '#define USE_TRANSMISSIONMAP' : '',\r\n\r\n\t\t\tparameters.vertexTangents ? '#define USE_TANGENT' : '',\r\n\t\t\tparameters.vertexColors || parameters.instancingColor ? '#define USE_COLOR' : '',\r\n\t\t\tparameters.vertexUvs ? '#define USE_UV' : '',\r\n\t\t\tparameters.uvsVertexOnly ? '#define UVS_VERTEX_ONLY' : '',\r\n\r\n\t\t\tparameters.gradientMap ? '#define USE_GRADIENTMAP' : '',\r\n\r\n\t\t\tparameters.flatShading ? '#define FLAT_SHADED' : '',\r\n\r\n\t\t\tparameters.doubleSided ? '#define DOUBLE_SIDED' : '',\r\n\t\t\tparameters.flipSided ? '#define FLIP_SIDED' : '',\r\n\r\n\t\t\tparameters.shadowMapEnabled ? '#define USE_SHADOWMAP' : '',\r\n\t\t\tparameters.shadowMapEnabled ? '#define ' + shadowMapTypeDefine : '',\r\n\r\n\t\t\tparameters.premultipliedAlpha ? '#define PREMULTIPLIED_ALPHA' : '',\r\n\r\n\t\t\tparameters.physicallyCorrectLights ? '#define PHYSICALLY_CORRECT_LIGHTS' : '',\r\n\r\n\t\t\tparameters.logarithmicDepthBuffer ? '#define USE_LOGDEPTHBUF' : '',\r\n\t\t\t( parameters.logarithmicDepthBuffer && parameters.rendererExtensionFragDepth ) ? '#define USE_LOGDEPTHBUF_EXT' : '',\r\n\r\n\t\t\t( ( parameters.extensionShaderTextureLOD || parameters.envMap ) && parameters.rendererExtensionShaderTextureLod ) ? '#define TEXTURE_LOD_EXT' : '',\r\n\r\n\t\t\t'uniform mat4 viewMatrix;',\r\n\t\t\t'uniform vec3 cameraPosition;',\r\n\t\t\t'uniform bool isOrthographic;',\r\n\r\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? '#define TONE_MAPPING' : '',\r\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? ShaderChunk[ 'tonemapping_pars_fragment' ] : '', // this code is required here because it is used by the toneMapping() function defined below\r\n\t\t\t( parameters.toneMapping !== NoToneMapping ) ? getToneMappingFunction( 'toneMapping', parameters.toneMapping ) : '',\r\n\r\n\t\t\tparameters.dithering ? '#define DITHERING' : '',\r\n\r\n\t\t\tShaderChunk[ 'encodings_pars_fragment' ], // this code is required here because it is used by the various encoding/decoding function defined below\r\n\t\t\tparameters.map ? getTexelDecodingFunction( 'mapTexelToLinear', parameters.mapEncoding ) : '',\r\n\t\t\tparameters.matcap ? getTexelDecodingFunction( 'matcapTexelToLinear', parameters.matcapEncoding ) : '',\r\n\t\t\tparameters.envMap ? getTexelDecodingFunction( 'envMapTexelToLinear', parameters.envMapEncoding ) : '',\r\n\t\t\tparameters.emissiveMap ? getTexelDecodingFunction( 'emissiveMapTexelToLinear', parameters.emissiveMapEncoding ) : '',\r\n\t\t\tparameters.lightMap ? getTexelDecodingFunction( 'lightMapTexelToLinear', parameters.lightMapEncoding ) : '',\r\n\t\t\tgetTexelEncodingFunction( 'linearToOutputTexel', parameters.outputEncoding ),\r\n\r\n\t\t\tparameters.depthPacking ? '#define DEPTH_PACKING ' + parameters.depthPacking : '',\r\n\r\n\t\t\t'\\n'\r\n\r\n\t\t].filter( filterEmptyLine ).join( '\\n' );\r\n\r\n\t}\r\n\r\n\tvertexShader = resolveIncludes( vertexShader );\r\n\tvertexShader = replaceLightNums( vertexShader, parameters );\r\n\tvertexShader = replaceClippingPlaneNums( vertexShader, parameters );\r\n\r\n\tfragmentShader = resolveIncludes( fragmentShader );\r\n\tfragmentShader = replaceLightNums( fragmentShader, parameters );\r\n\tfragmentShader = replaceClippingPlaneNums( fragmentShader, parameters );\r\n\r\n\tvertexShader = unrollLoops( vertexShader );\r\n\tfragmentShader = unrollLoops( fragmentShader );\r\n\r\n\tif ( parameters.isWebGL2 && parameters.isRawShaderMaterial !== true ) {\r\n\r\n\t\t// GLSL 3.0 conversion for built-in materials and ShaderMaterial\r\n\r\n\t\tversionString = '#version 300 es\\n';\r\n\r\n\t\tprefixVertex = [\r\n\t\t\t'#define attribute in',\r\n\t\t\t'#define varying out',\r\n\t\t\t'#define texture2D texture'\r\n\t\t].join( '\\n' ) + '\\n' + prefixVertex;\r\n\r\n\t\tprefixFragment = [\r\n\t\t\t'#define varying in',\r\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : 'out highp vec4 pc_fragColor;',\r\n\t\t\t( parameters.glslVersion === GLSL3 ) ? '' : '#define gl_FragColor pc_fragColor',\r\n\t\t\t'#define gl_FragDepthEXT gl_FragDepth',\r\n\t\t\t'#define texture2D texture',\r\n\t\t\t'#define textureCube texture',\r\n\t\t\t'#define texture2DProj textureProj',\r\n\t\t\t'#define texture2DLodEXT textureLod',\r\n\t\t\t'#define texture2DProjLodEXT textureProjLod',\r\n\t\t\t'#define textureCubeLodEXT textureLod',\r\n\t\t\t'#define texture2DGradEXT textureGrad',\r\n\t\t\t'#define texture2DProjGradEXT textureProjGrad',\r\n\t\t\t'#define textureCubeGradEXT textureGrad'\r\n\t\t].join( '\\n' ) + '\\n' + prefixFragment;\r\n\r\n\t}\r\n\r\n\tconst vertexGlsl = versionString + prefixVertex + vertexShader;\r\n\tconst fragmentGlsl = versionString + prefixFragment + fragmentShader;\r\n\r\n\t// console.log( '*VERTEX*', vertexGlsl );\r\n\t// console.log( '*FRAGMENT*', fragmentGlsl );\r\n\r\n\tconst glVertexShader = WebGLShader( gl, 35633, vertexGlsl );\r\n\tconst glFragmentShader = WebGLShader( gl, 35632, fragmentGlsl );\r\n\r\n\tgl.attachShader( program, glVertexShader );\r\n\tgl.attachShader( program, glFragmentShader );\r\n\r\n\t// Force a particular attribute to index 0.\r\n\r\n\tif ( parameters.index0AttributeName !== undefined ) {\r\n\r\n\t\tgl.bindAttribLocation( program, 0, parameters.index0AttributeName );\r\n\r\n\t} else if ( parameters.morphTargets === true ) {\r\n\r\n\t\t// programs with morphTargets displace position out of attribute 0\r\n\t\tgl.bindAttribLocation( program, 0, 'position' );\r\n\r\n\t}\r\n\r\n\tgl.linkProgram( program );\r\n\r\n\t// check for link errors\r\n\tif ( renderer.debug.checkShaderErrors ) {\r\n\r\n\t\tconst programLog = gl.getProgramInfoLog( program ).trim();\r\n\t\tconst vertexLog = gl.getShaderInfoLog( glVertexShader ).trim();\r\n\t\tconst fragmentLog = gl.getShaderInfoLog( glFragmentShader ).trim();\r\n\r\n\t\tlet runnable = true;\r\n\t\tlet haveDiagnostics = true;\r\n\r\n\t\tif ( gl.getProgramParameter( program, 35714 ) === false ) {\r\n\r\n\t\t\trunnable = false;\r\n\r\n\t\t\tconst vertexErrors = getShaderErrors( gl, glVertexShader, 'vertex' );\r\n\t\t\tconst fragmentErrors = getShaderErrors( gl, glFragmentShader, 'fragment' );\r\n\r\n\t\t\tconsole.error( 'THREE.WebGLProgram: shader error: ', gl.getError(), '35715', gl.getProgramParameter( program, 35715 ), 'gl.getProgramInfoLog', programLog, vertexErrors, fragmentErrors );\r\n\r\n\t\t} else if ( programLog !== '' ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLProgram: gl.getProgramInfoLog()', programLog );\r\n\r\n\t\t} else if ( vertexLog === '' || fragmentLog === '' ) {\r\n\r\n\t\t\thaveDiagnostics = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( haveDiagnostics ) {\r\n\r\n\t\t\tthis.diagnostics = {\r\n\r\n\t\t\t\trunnable: runnable,\r\n\r\n\t\t\t\tprogramLog: programLog,\r\n\r\n\t\t\t\tvertexShader: {\r\n\r\n\t\t\t\t\tlog: vertexLog,\r\n\t\t\t\t\tprefix: prefixVertex\r\n\r\n\t\t\t\t},\r\n\r\n\t\t\t\tfragmentShader: {\r\n\r\n\t\t\t\t\tlog: fragmentLog,\r\n\t\t\t\t\tprefix: prefixFragment\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// Clean up\r\n\r\n\t// Crashes in iOS9 and iOS10. #18402\r\n\t// gl.detachShader( program, glVertexShader );\r\n\t// gl.detachShader( program, glFragmentShader );\r\n\r\n\tgl.deleteShader( glVertexShader );\r\n\tgl.deleteShader( glFragmentShader );\r\n\r\n\t// set up caching for uniform locations\r\n\r\n\tlet cachedUniforms;\r\n\r\n\tthis.getUniforms = function () {\r\n\r\n\t\tif ( cachedUniforms === undefined ) {\r\n\r\n\t\t\tcachedUniforms = new WebGLUniforms( gl, program );\r\n\r\n\t\t}\r\n\r\n\t\treturn cachedUniforms;\r\n\r\n\t};\r\n\r\n\t// set up caching for attribute locations\r\n\r\n\tlet cachedAttributes;\r\n\r\n\tthis.getAttributes = function () {\r\n\r\n\t\tif ( cachedAttributes === undefined ) {\r\n\r\n\t\t\tcachedAttributes = fetchAttributeLocations( gl, program );\r\n\r\n\t\t}\r\n\r\n\t\treturn cachedAttributes;\r\n\r\n\t};\r\n\r\n\t// free resource\r\n\r\n\tthis.destroy = function () {\r\n\r\n\t\tbindingStates.releaseStatesOfProgram( this );\r\n\r\n\t\tgl.deleteProgram( program );\r\n\t\tthis.program = undefined;\r\n\r\n\t};\r\n\r\n\t//\r\n\r\n\tthis.name = parameters.shaderName;\r\n\tthis.id = programIdCount ++;\r\n\tthis.cacheKey = cacheKey;\r\n\tthis.usedTimes = 1;\r\n\tthis.program = program;\r\n\tthis.vertexShader = glVertexShader;\r\n\tthis.fragmentShader = glFragmentShader;\r\n\r\n\treturn this;\r\n\r\n}\r\n\r\nfunction WebGLPrograms( renderer, cubemaps, extensions, capabilities, bindingStates, clipping ) {\r\n\r\n\tconst programs = [];\r\n\r\n\tconst isWebGL2 = capabilities.isWebGL2;\r\n\tconst logarithmicDepthBuffer = capabilities.logarithmicDepthBuffer;\r\n\tconst floatVertexTextures = capabilities.floatVertexTextures;\r\n\tconst maxVertexUniforms = capabilities.maxVertexUniforms;\r\n\tconst vertexTextures = capabilities.vertexTextures;\r\n\r\n\tlet precision = capabilities.precision;\r\n\r\n\tconst shaderIDs = {\r\n\t\tMeshDepthMaterial: 'depth',\r\n\t\tMeshDistanceMaterial: 'distanceRGBA',\r\n\t\tMeshNormalMaterial: 'normal',\r\n\t\tMeshBasicMaterial: 'basic',\r\n\t\tMeshLambertMaterial: 'lambert',\r\n\t\tMeshPhongMaterial: 'phong',\r\n\t\tMeshToonMaterial: 'toon',\r\n\t\tMeshStandardMaterial: 'physical',\r\n\t\tMeshPhysicalMaterial: 'physical',\r\n\t\tMeshMatcapMaterial: 'matcap',\r\n\t\tLineBasicMaterial: 'basic',\r\n\t\tLineDashedMaterial: 'dashed',\r\n\t\tPointsMaterial: 'points',\r\n\t\tShadowMaterial: 'shadow',\r\n\t\tSpriteMaterial: 'sprite'\r\n\t};\r\n\r\n\tconst parameterNames = [\r\n\t\t'precision', 'isWebGL2', 'supportsVertexTextures', 'outputEncoding', 'instancing', 'instancingColor',\r\n\t\t'map', 'mapEncoding', 'matcap', 'matcapEncoding', 'envMap', 'envMapMode', 'envMapEncoding', 'envMapCubeUV',\r\n\t\t'lightMap', 'lightMapEncoding', 'aoMap', 'emissiveMap', 'emissiveMapEncoding', 'bumpMap', 'normalMap', 'objectSpaceNormalMap', 'tangentSpaceNormalMap', 'clearcoatMap', 'clearcoatRoughnessMap', 'clearcoatNormalMap', 'displacementMap', 'specularMap',\r\n\t\t'roughnessMap', 'metalnessMap', 'gradientMap',\r\n\t\t'alphaMap', 'combine', 'vertexColors', 'vertexTangents', 'vertexUvs', 'uvsVertexOnly', 'fog', 'useFog', 'fogExp2',\r\n\t\t'flatShading', 'sizeAttenuation', 'logarithmicDepthBuffer', 'skinning',\r\n\t\t'maxBones', 'useVertexTexture', 'morphTargets', 'morphNormals',\r\n\t\t'maxMorphTargets', 'maxMorphNormals', 'premultipliedAlpha',\r\n\t\t'numDirLights', 'numPointLights', 'numSpotLights', 'numHemiLights', 'numRectAreaLights',\r\n\t\t'numDirLightShadows', 'numPointLightShadows', 'numSpotLightShadows',\r\n\t\t'shadowMapEnabled', 'shadowMapType', 'toneMapping', 'physicallyCorrectLights',\r\n\t\t'alphaTest', 'doubleSided', 'flipSided', 'numClippingPlanes', 'numClipIntersection', 'depthPacking', 'dithering',\r\n\t\t'sheen', 'transmissionMap'\r\n\t];\r\n\r\n\tfunction getMaxBones( object ) {\r\n\r\n\t\tconst skeleton = object.skeleton;\r\n\t\tconst bones = skeleton.bones;\r\n\r\n\t\tif ( floatVertexTextures ) {\r\n\r\n\t\t\treturn 1024;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// default for when object is not specified\r\n\t\t\t// ( for example when prebuilding shader to be used with multiple objects )\r\n\t\t\t//\r\n\t\t\t// - leave some extra space for other uniforms\r\n\t\t\t// - limit here is ANGLE's 254 max uniform vectors\r\n\t\t\t// (up to 54 should be safe)\r\n\r\n\t\t\tconst nVertexUniforms = maxVertexUniforms;\r\n\t\t\tconst nVertexMatrices = Math.floor( ( nVertexUniforms - 20 ) / 4 );\r\n\r\n\t\t\tconst maxBones = Math.min( nVertexMatrices, bones.length );\r\n\r\n\t\t\tif ( maxBones < bones.length ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Skeleton has ' + bones.length + ' bones. This GPU supports ' + maxBones + '.' );\r\n\t\t\t\treturn 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn maxBones;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction getTextureEncodingFromMap( map ) {\r\n\r\n\t\tlet encoding;\r\n\r\n\t\tif ( map && map.isTexture ) {\r\n\r\n\t\t\tencoding = map.encoding;\r\n\r\n\t\t} else if ( map && map.isWebGLRenderTarget ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLPrograms.getTextureEncodingFromMap: don\\'t use render targets as textures. Use their .texture property instead.' );\r\n\t\t\tencoding = map.texture.encoding;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tencoding = LinearEncoding;\r\n\r\n\t\t}\r\n\r\n\t\treturn encoding;\r\n\r\n\t}\r\n\r\n\tfunction getParameters( material, lights, shadows, scene, object ) {\r\n\r\n\t\tconst fog = scene.fog;\r\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\r\n\r\n\t\tconst envMap = cubemaps.get( material.envMap || environment );\r\n\r\n\t\tconst shaderID = shaderIDs[ material.type ];\r\n\r\n\t\t// heuristics to create shader parameters according to lights in the scene\r\n\t\t// (not to blow over maxLights budget)\r\n\r\n\t\tconst maxBones = object.isSkinnedMesh ? getMaxBones( object ) : 0;\r\n\r\n\t\tif ( material.precision !== null ) {\r\n\r\n\t\t\tprecision = capabilities.getMaxPrecision( material.precision );\r\n\r\n\t\t\tif ( precision !== material.precision ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLProgram.getParameters:', material.precision, 'not supported, using', precision, 'instead.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tlet vertexShader, fragmentShader;\r\n\r\n\t\tif ( shaderID ) {\r\n\r\n\t\t\tconst shader = ShaderLib[ shaderID ];\r\n\r\n\t\t\tvertexShader = shader.vertexShader;\r\n\t\t\tfragmentShader = shader.fragmentShader;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tvertexShader = material.vertexShader;\r\n\t\t\tfragmentShader = material.fragmentShader;\r\n\r\n\t\t}\r\n\r\n\t\tconst currentRenderTarget = renderer.getRenderTarget();\r\n\r\n\t\tconst parameters = {\r\n\r\n\t\t\tisWebGL2: isWebGL2,\r\n\r\n\t\t\tshaderID: shaderID,\r\n\t\t\tshaderName: material.type,\r\n\r\n\t\t\tvertexShader: vertexShader,\r\n\t\t\tfragmentShader: fragmentShader,\r\n\t\t\tdefines: material.defines,\r\n\r\n\t\t\tisRawShaderMaterial: material.isRawShaderMaterial === true,\r\n\t\t\tglslVersion: material.glslVersion,\r\n\r\n\t\t\tprecision: precision,\r\n\r\n\t\t\tinstancing: object.isInstancedMesh === true,\r\n\t\t\tinstancingColor: object.isInstancedMesh === true && object.instanceColor !== null,\r\n\r\n\t\t\tsupportsVertexTextures: vertexTextures,\r\n\t\t\toutputEncoding: ( currentRenderTarget !== null ) ? getTextureEncodingFromMap( currentRenderTarget.texture ) : renderer.outputEncoding,\r\n\t\t\tmap: !! material.map,\r\n\t\t\tmapEncoding: getTextureEncodingFromMap( material.map ),\r\n\t\t\tmatcap: !! material.matcap,\r\n\t\t\tmatcapEncoding: getTextureEncodingFromMap( material.matcap ),\r\n\t\t\tenvMap: !! envMap,\r\n\t\t\tenvMapMode: envMap && envMap.mapping,\r\n\t\t\tenvMapEncoding: getTextureEncodingFromMap( envMap ),\r\n\t\t\tenvMapCubeUV: ( !! envMap ) && ( ( envMap.mapping === CubeUVReflectionMapping ) || ( envMap.mapping === CubeUVRefractionMapping ) ),\r\n\t\t\tlightMap: !! material.lightMap,\r\n\t\t\tlightMapEncoding: getTextureEncodingFromMap( material.lightMap ),\r\n\t\t\taoMap: !! material.aoMap,\r\n\t\t\temissiveMap: !! material.emissiveMap,\r\n\t\t\temissiveMapEncoding: getTextureEncodingFromMap( material.emissiveMap ),\r\n\t\t\tbumpMap: !! material.bumpMap,\r\n\t\t\tnormalMap: !! material.normalMap,\r\n\t\t\tobjectSpaceNormalMap: material.normalMapType === ObjectSpaceNormalMap,\r\n\t\t\ttangentSpaceNormalMap: material.normalMapType === TangentSpaceNormalMap,\r\n\t\t\tclearcoatMap: !! material.clearcoatMap,\r\n\t\t\tclearcoatRoughnessMap: !! material.clearcoatRoughnessMap,\r\n\t\t\tclearcoatNormalMap: !! material.clearcoatNormalMap,\r\n\t\t\tdisplacementMap: !! material.displacementMap,\r\n\t\t\troughnessMap: !! material.roughnessMap,\r\n\t\t\tmetalnessMap: !! material.metalnessMap,\r\n\t\t\tspecularMap: !! material.specularMap,\r\n\t\t\talphaMap: !! material.alphaMap,\r\n\r\n\t\t\tgradientMap: !! material.gradientMap,\r\n\r\n\t\t\tsheen: !! material.sheen,\r\n\r\n\t\t\ttransmissionMap: !! material.transmissionMap,\r\n\r\n\t\t\tcombine: material.combine,\r\n\r\n\t\t\tvertexTangents: ( material.normalMap && material.vertexTangents ),\r\n\t\t\tvertexColors: material.vertexColors,\r\n\t\t\tvertexUvs: !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatMap || !! material.clearcoatRoughnessMap || !! material.clearcoatNormalMap || !! material.displacementMap || !! material.transmissionMap,\r\n\t\t\tuvsVertexOnly: ! ( !! material.map || !! material.bumpMap || !! material.normalMap || !! material.specularMap || !! material.alphaMap || !! material.emissiveMap || !! material.roughnessMap || !! material.metalnessMap || !! material.clearcoatNormalMap || !! material.transmissionMap ) && !! material.displacementMap,\r\n\r\n\t\t\tfog: !! fog,\r\n\t\t\tuseFog: material.fog,\r\n\t\t\tfogExp2: ( fog && fog.isFogExp2 ),\r\n\r\n\t\t\tflatShading: material.flatShading,\r\n\r\n\t\t\tsizeAttenuation: material.sizeAttenuation,\r\n\t\t\tlogarithmicDepthBuffer: logarithmicDepthBuffer,\r\n\r\n\t\t\tskinning: material.skinning && maxBones > 0,\r\n\t\t\tmaxBones: maxBones,\r\n\t\t\tuseVertexTexture: floatVertexTextures,\r\n\r\n\t\t\tmorphTargets: material.morphTargets,\r\n\t\t\tmorphNormals: material.morphNormals,\r\n\t\t\tmaxMorphTargets: renderer.maxMorphTargets,\r\n\t\t\tmaxMorphNormals: renderer.maxMorphNormals,\r\n\r\n\t\t\tnumDirLights: lights.directional.length,\r\n\t\t\tnumPointLights: lights.point.length,\r\n\t\t\tnumSpotLights: lights.spot.length,\r\n\t\t\tnumRectAreaLights: lights.rectArea.length,\r\n\t\t\tnumHemiLights: lights.hemi.length,\r\n\r\n\t\t\tnumDirLightShadows: lights.directionalShadowMap.length,\r\n\t\t\tnumPointLightShadows: lights.pointShadowMap.length,\r\n\t\t\tnumSpotLightShadows: lights.spotShadowMap.length,\r\n\r\n\t\t\tnumClippingPlanes: clipping.numPlanes,\r\n\t\t\tnumClipIntersection: clipping.numIntersection,\r\n\r\n\t\t\tdithering: material.dithering,\r\n\r\n\t\t\tshadowMapEnabled: renderer.shadowMap.enabled && shadows.length > 0,\r\n\t\t\tshadowMapType: renderer.shadowMap.type,\r\n\r\n\t\t\ttoneMapping: material.toneMapped ? renderer.toneMapping : NoToneMapping,\r\n\t\t\tphysicallyCorrectLights: renderer.physicallyCorrectLights,\r\n\r\n\t\t\tpremultipliedAlpha: material.premultipliedAlpha,\r\n\r\n\t\t\talphaTest: material.alphaTest,\r\n\t\t\tdoubleSided: material.side === DoubleSide,\r\n\t\t\tflipSided: material.side === BackSide,\r\n\r\n\t\t\tdepthPacking: ( material.depthPacking !== undefined ) ? material.depthPacking : false,\r\n\r\n\t\t\tindex0AttributeName: material.index0AttributeName,\r\n\r\n\t\t\textensionDerivatives: material.extensions && material.extensions.derivatives,\r\n\t\t\textensionFragDepth: material.extensions && material.extensions.fragDepth,\r\n\t\t\textensionDrawBuffers: material.extensions && material.extensions.drawBuffers,\r\n\t\t\textensionShaderTextureLOD: material.extensions && material.extensions.shaderTextureLOD,\r\n\r\n\t\t\trendererExtensionFragDepth: isWebGL2 || extensions.has( 'EXT_frag_depth' ),\r\n\t\t\trendererExtensionDrawBuffers: isWebGL2 || extensions.has( 'WEBGL_draw_buffers' ),\r\n\t\t\trendererExtensionShaderTextureLod: isWebGL2 || extensions.has( 'EXT_shader_texture_lod' ),\r\n\r\n\t\t\tcustomProgramCacheKey: material.customProgramCacheKey()\r\n\r\n\t\t};\r\n\r\n\t\treturn parameters;\r\n\r\n\t}\r\n\r\n\tfunction getProgramCacheKey( parameters ) {\r\n\r\n\t\tconst array = [];\r\n\r\n\t\tif ( parameters.shaderID ) {\r\n\r\n\t\t\tarray.push( parameters.shaderID );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tarray.push( parameters.fragmentShader );\r\n\t\t\tarray.push( parameters.vertexShader );\r\n\r\n\t\t}\r\n\r\n\t\tif ( parameters.defines !== undefined ) {\r\n\r\n\t\t\tfor ( const name in parameters.defines ) {\r\n\r\n\t\t\t\tarray.push( name );\r\n\t\t\t\tarray.push( parameters.defines[ name ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( parameters.isRawShaderMaterial === false ) {\r\n\r\n\t\t\tfor ( let i = 0; i < parameterNames.length; i ++ ) {\r\n\r\n\t\t\t\tarray.push( parameters[ parameterNames[ i ] ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tarray.push( renderer.outputEncoding );\r\n\t\t\tarray.push( renderer.gammaFactor );\r\n\r\n\t\t}\r\n\r\n\t\tarray.push( parameters.customProgramCacheKey );\r\n\r\n\t\treturn array.join();\r\n\r\n\t}\r\n\r\n\tfunction getUniforms( material ) {\r\n\r\n\t\tconst shaderID = shaderIDs[ material.type ];\r\n\t\tlet uniforms;\r\n\r\n\t\tif ( shaderID ) {\r\n\r\n\t\t\tconst shader = ShaderLib[ shaderID ];\r\n\t\t\tuniforms = UniformsUtils.clone( shader.uniforms );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tuniforms = material.uniforms;\r\n\r\n\t\t}\r\n\r\n\t\treturn uniforms;\r\n\r\n\t}\r\n\r\n\tfunction acquireProgram( parameters, cacheKey ) {\r\n\r\n\t\tlet program;\r\n\r\n\t\t// Check if code has been already compiled\r\n\t\tfor ( let p = 0, pl = programs.length; p < pl; p ++ ) {\r\n\r\n\t\t\tconst preexistingProgram = programs[ p ];\r\n\r\n\t\t\tif ( preexistingProgram.cacheKey === cacheKey ) {\r\n\r\n\t\t\t\tprogram = preexistingProgram;\r\n\t\t\t\t++ program.usedTimes;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( program === undefined ) {\r\n\r\n\t\t\tprogram = new WebGLProgram( renderer, cacheKey, parameters, bindingStates );\r\n\t\t\tprograms.push( program );\r\n\r\n\t\t}\r\n\r\n\t\treturn program;\r\n\r\n\t}\r\n\r\n\tfunction releaseProgram( program ) {\r\n\r\n\t\tif ( -- program.usedTimes === 0 ) {\r\n\r\n\t\t\t// Remove from unordered set\r\n\t\t\tconst i = programs.indexOf( program );\r\n\t\t\tprograms[ i ] = programs[ programs.length - 1 ];\r\n\t\t\tprograms.pop();\r\n\r\n\t\t\t// Free WebGL resources\r\n\t\t\tprogram.destroy();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn {\r\n\t\tgetParameters: getParameters,\r\n\t\tgetProgramCacheKey: getProgramCacheKey,\r\n\t\tgetUniforms: getUniforms,\r\n\t\tacquireProgram: acquireProgram,\r\n\t\treleaseProgram: releaseProgram,\r\n\t\t// Exposed for resource monitoring & error feedback via renderer.info:\r\n\t\tprograms: programs\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLProperties() {\r\n\r\n\tlet properties = new WeakMap();\r\n\r\n\tfunction get( object ) {\r\n\r\n\t\tlet map = properties.get( object );\r\n\r\n\t\tif ( map === undefined ) {\r\n\r\n\t\t\tmap = {};\r\n\t\t\tproperties.set( object, map );\r\n\r\n\t\t}\r\n\r\n\t\treturn map;\r\n\r\n\t}\r\n\r\n\tfunction remove( object ) {\r\n\r\n\t\tproperties.delete( object );\r\n\r\n\t}\r\n\r\n\tfunction update( object, key, value ) {\r\n\r\n\t\tproperties.get( object )[ key ] = value;\r\n\r\n\t}\r\n\r\n\tfunction dispose() {\r\n\r\n\t\tproperties = new WeakMap();\r\n\r\n\t}\r\n\r\n\treturn {\r\n\t\tget: get,\r\n\t\tremove: remove,\r\n\t\tupdate: update,\r\n\t\tdispose: dispose\r\n\t};\r\n\r\n}\r\n\r\nfunction painterSortStable( a, b ) {\r\n\r\n\tif ( a.groupOrder !== b.groupOrder ) {\r\n\r\n\t\treturn a.groupOrder - b.groupOrder;\r\n\r\n\t} else if ( a.renderOrder !== b.renderOrder ) {\r\n\r\n\t\treturn a.renderOrder - b.renderOrder;\r\n\r\n\t} else if ( a.program !== b.program ) {\r\n\r\n\t\treturn a.program.id - b.program.id;\r\n\r\n\t} else if ( a.material.id !== b.material.id ) {\r\n\r\n\t\treturn a.material.id - b.material.id;\r\n\r\n\t} else if ( a.z !== b.z ) {\r\n\r\n\t\treturn a.z - b.z;\r\n\r\n\t} else {\r\n\r\n\t\treturn a.id - b.id;\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction reversePainterSortStable( a, b ) {\r\n\r\n\tif ( a.groupOrder !== b.groupOrder ) {\r\n\r\n\t\treturn a.groupOrder - b.groupOrder;\r\n\r\n\t} else if ( a.renderOrder !== b.renderOrder ) {\r\n\r\n\t\treturn a.renderOrder - b.renderOrder;\r\n\r\n\t} else if ( a.z !== b.z ) {\r\n\r\n\t\treturn b.z - a.z;\r\n\r\n\t} else {\r\n\r\n\t\treturn a.id - b.id;\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\nfunction WebGLRenderList( properties ) {\r\n\r\n\tconst renderItems = [];\r\n\tlet renderItemsIndex = 0;\r\n\r\n\tconst opaque = [];\r\n\tconst transparent = [];\r\n\r\n\tconst defaultProgram = { id: - 1 };\r\n\r\n\tfunction init() {\r\n\r\n\t\trenderItemsIndex = 0;\r\n\r\n\t\topaque.length = 0;\r\n\t\ttransparent.length = 0;\r\n\r\n\t}\r\n\r\n\tfunction getNextRenderItem( object, geometry, material, groupOrder, z, group ) {\r\n\r\n\t\tlet renderItem = renderItems[ renderItemsIndex ];\r\n\t\tconst materialProperties = properties.get( material );\r\n\r\n\t\tif ( renderItem === undefined ) {\r\n\r\n\t\t\trenderItem = {\r\n\t\t\t\tid: object.id,\r\n\t\t\t\tobject: object,\r\n\t\t\t\tgeometry: geometry,\r\n\t\t\t\tmaterial: material,\r\n\t\t\t\tprogram: materialProperties.program || defaultProgram,\r\n\t\t\t\tgroupOrder: groupOrder,\r\n\t\t\t\trenderOrder: object.renderOrder,\r\n\t\t\t\tz: z,\r\n\t\t\t\tgroup: group\r\n\t\t\t};\r\n\r\n\t\t\trenderItems[ renderItemsIndex ] = renderItem;\r\n\r\n\t\t} else {\r\n\r\n\t\t\trenderItem.id = object.id;\r\n\t\t\trenderItem.object = object;\r\n\t\t\trenderItem.geometry = geometry;\r\n\t\t\trenderItem.material = material;\r\n\t\t\trenderItem.program = materialProperties.program || defaultProgram;\r\n\t\t\trenderItem.groupOrder = groupOrder;\r\n\t\t\trenderItem.renderOrder = object.renderOrder;\r\n\t\t\trenderItem.z = z;\r\n\t\t\trenderItem.group = group;\r\n\r\n\t\t}\r\n\r\n\t\trenderItemsIndex ++;\r\n\r\n\t\treturn renderItem;\r\n\r\n\t}\r\n\r\n\tfunction push( object, geometry, material, groupOrder, z, group ) {\r\n\r\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\r\n\r\n\t\t( material.transparent === true ? transparent : opaque ).push( renderItem );\r\n\r\n\t}\r\n\r\n\tfunction unshift( object, geometry, material, groupOrder, z, group ) {\r\n\r\n\t\tconst renderItem = getNextRenderItem( object, geometry, material, groupOrder, z, group );\r\n\r\n\t\t( material.transparent === true ? transparent : opaque ).unshift( renderItem );\r\n\r\n\t}\r\n\r\n\tfunction sort( customOpaqueSort, customTransparentSort ) {\r\n\r\n\t\tif ( opaque.length > 1 ) opaque.sort( customOpaqueSort || painterSortStable );\r\n\t\tif ( transparent.length > 1 ) transparent.sort( customTransparentSort || reversePainterSortStable );\r\n\r\n\t}\r\n\r\n\tfunction finish() {\r\n\r\n\t\t// Clear references from inactive renderItems in the list\r\n\r\n\t\tfor ( let i = renderItemsIndex, il = renderItems.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst renderItem = renderItems[ i ];\r\n\r\n\t\t\tif ( renderItem.id === null ) break;\r\n\r\n\t\t\trenderItem.id = null;\r\n\t\t\trenderItem.object = null;\r\n\t\t\trenderItem.geometry = null;\r\n\t\t\trenderItem.material = null;\r\n\t\t\trenderItem.program = null;\r\n\t\t\trenderItem.group = null;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\topaque: opaque,\r\n\t\ttransparent: transparent,\r\n\r\n\t\tinit: init,\r\n\t\tpush: push,\r\n\t\tunshift: unshift,\r\n\t\tfinish: finish,\r\n\r\n\t\tsort: sort\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLRenderLists( properties ) {\r\n\r\n\tlet lists = new WeakMap();\r\n\r\n\tfunction get( scene, camera ) {\r\n\r\n\t\tconst cameras = lists.get( scene );\r\n\t\tlet list;\r\n\r\n\t\tif ( cameras === undefined ) {\r\n\r\n\t\t\tlist = new WebGLRenderList( properties );\r\n\t\t\tlists.set( scene, new WeakMap() );\r\n\t\t\tlists.get( scene ).set( camera, list );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tlist = cameras.get( camera );\r\n\t\t\tif ( list === undefined ) {\r\n\r\n\t\t\t\tlist = new WebGLRenderList( properties );\r\n\t\t\t\tcameras.set( camera, list );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn list;\r\n\r\n\t}\r\n\r\n\tfunction dispose() {\r\n\r\n\t\tlists = new WeakMap();\r\n\r\n\t}\r\n\r\n\treturn {\r\n\t\tget: get,\r\n\t\tdispose: dispose\r\n\t};\r\n\r\n}\r\n\r\nfunction UniformsCache() {\r\n\r\n\tconst lights = {};\r\n\r\n\treturn {\r\n\r\n\t\tget: function ( light ) {\r\n\r\n\t\t\tif ( lights[ light.id ] !== undefined ) {\r\n\r\n\t\t\t\treturn lights[ light.id ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlet uniforms;\r\n\r\n\t\t\tswitch ( light.type ) {\r\n\r\n\t\t\t\tcase 'DirectionalLight':\r\n\t\t\t\t\tuniforms = {\r\n\t\t\t\t\t\tdirection: new Vector3(),\r\n\t\t\t\t\t\tcolor: new Color()\r\n\t\t\t\t\t};\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'SpotLight':\r\n\t\t\t\t\tuniforms = {\r\n\t\t\t\t\t\tposition: new Vector3(),\r\n\t\t\t\t\t\tdirection: new Vector3(),\r\n\t\t\t\t\t\tcolor: new Color(),\r\n\t\t\t\t\t\tdistance: 0,\r\n\t\t\t\t\t\tconeCos: 0,\r\n\t\t\t\t\t\tpenumbraCos: 0,\r\n\t\t\t\t\t\tdecay: 0\r\n\t\t\t\t\t};\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'PointLight':\r\n\t\t\t\t\tuniforms = {\r\n\t\t\t\t\t\tposition: new Vector3(),\r\n\t\t\t\t\t\tcolor: new Color(),\r\n\t\t\t\t\t\tdistance: 0,\r\n\t\t\t\t\t\tdecay: 0\r\n\t\t\t\t\t};\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'HemisphereLight':\r\n\t\t\t\t\tuniforms = {\r\n\t\t\t\t\t\tdirection: new Vector3(),\r\n\t\t\t\t\t\tskyColor: new Color(),\r\n\t\t\t\t\t\tgroundColor: new Color()\r\n\t\t\t\t\t};\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'RectAreaLight':\r\n\t\t\t\t\tuniforms = {\r\n\t\t\t\t\t\tcolor: new Color(),\r\n\t\t\t\t\t\tposition: new Vector3(),\r\n\t\t\t\t\t\thalfWidth: new Vector3(),\r\n\t\t\t\t\t\thalfHeight: new Vector3()\r\n\t\t\t\t\t};\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlights[ light.id ] = uniforms;\r\n\r\n\t\t\treturn uniforms;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction ShadowUniformsCache() {\r\n\r\n\tconst lights = {};\r\n\r\n\treturn {\r\n\r\n\t\tget: function ( light ) {\r\n\r\n\t\t\tif ( lights[ light.id ] !== undefined ) {\r\n\r\n\t\t\t\treturn lights[ light.id ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlet uniforms;\r\n\r\n\t\t\tswitch ( light.type ) {\r\n\r\n\t\t\t\tcase 'DirectionalLight':\r\n\t\t\t\t\tuniforms = {\r\n\t\t\t\t\t\tshadowBias: 0,\r\n\t\t\t\t\t\tshadowNormalBias: 0,\r\n\t\t\t\t\t\tshadowRadius: 1,\r\n\t\t\t\t\t\tshadowMapSize: new Vector2()\r\n\t\t\t\t\t};\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'SpotLight':\r\n\t\t\t\t\tuniforms = {\r\n\t\t\t\t\t\tshadowBias: 0,\r\n\t\t\t\t\t\tshadowNormalBias: 0,\r\n\t\t\t\t\t\tshadowRadius: 1,\r\n\t\t\t\t\t\tshadowMapSize: new Vector2()\r\n\t\t\t\t\t};\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'PointLight':\r\n\t\t\t\t\tuniforms = {\r\n\t\t\t\t\t\tshadowBias: 0,\r\n\t\t\t\t\t\tshadowNormalBias: 0,\r\n\t\t\t\t\t\tshadowRadius: 1,\r\n\t\t\t\t\t\tshadowMapSize: new Vector2(),\r\n\t\t\t\t\t\tshadowCameraNear: 1,\r\n\t\t\t\t\t\tshadowCameraFar: 1000\r\n\t\t\t\t\t};\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t// TODO (abelnation): set RectAreaLight shadow uniforms\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlights[ light.id ] = uniforms;\r\n\r\n\t\t\treturn uniforms;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n}\r\n\r\n\r\n\r\nlet nextVersion = 0;\r\n\r\nfunction shadowCastingLightsFirst( lightA, lightB ) {\r\n\r\n\treturn ( lightB.castShadow ? 1 : 0 ) - ( lightA.castShadow ? 1 : 0 );\r\n\r\n}\r\n\r\nfunction WebGLLights( extensions, capabilities ) {\r\n\r\n\tconst cache = new UniformsCache();\r\n\r\n\tconst shadowCache = ShadowUniformsCache();\r\n\r\n\tconst state = {\r\n\r\n\t\tversion: 0,\r\n\r\n\t\thash: {\r\n\t\t\tdirectionalLength: - 1,\r\n\t\t\tpointLength: - 1,\r\n\t\t\tspotLength: - 1,\r\n\t\t\trectAreaLength: - 1,\r\n\t\t\themiLength: - 1,\r\n\r\n\t\t\tnumDirectionalShadows: - 1,\r\n\t\t\tnumPointShadows: - 1,\r\n\t\t\tnumSpotShadows: - 1\r\n\t\t},\r\n\r\n\t\tambient: [ 0, 0, 0 ],\r\n\t\tprobe: [],\r\n\t\tdirectional: [],\r\n\t\tdirectionalShadow: [],\r\n\t\tdirectionalShadowMap: [],\r\n\t\tdirectionalShadowMatrix: [],\r\n\t\tspot: [],\r\n\t\tspotShadow: [],\r\n\t\tspotShadowMap: [],\r\n\t\tspotShadowMatrix: [],\r\n\t\trectArea: [],\r\n\t\trectAreaLTC1: null,\r\n\t\trectAreaLTC2: null,\r\n\t\tpoint: [],\r\n\t\tpointShadow: [],\r\n\t\tpointShadowMap: [],\r\n\t\tpointShadowMatrix: [],\r\n\t\themi: []\r\n\r\n\t};\r\n\r\n\tfor ( let i = 0; i < 9; i ++ ) state.probe.push( new Vector3() );\r\n\r\n\tconst vector3 = new Vector3();\r\n\tconst matrix4 = new Matrix4();\r\n\tconst matrix42 = new Matrix4();\r\n\r\n\tfunction setup( lights ) {\r\n\r\n\t\tlet r = 0, g = 0, b = 0;\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) state.probe[ i ].set( 0, 0, 0 );\r\n\r\n\t\tlet directionalLength = 0;\r\n\t\tlet pointLength = 0;\r\n\t\tlet spotLength = 0;\r\n\t\tlet rectAreaLength = 0;\r\n\t\tlet hemiLength = 0;\r\n\r\n\t\tlet numDirectionalShadows = 0;\r\n\t\tlet numPointShadows = 0;\r\n\t\tlet numSpotShadows = 0;\r\n\r\n\t\tlights.sort( shadowCastingLightsFirst );\r\n\r\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst light = lights[ i ];\r\n\r\n\t\t\tconst color = light.color;\r\n\t\t\tconst intensity = light.intensity;\r\n\t\t\tconst distance = light.distance;\r\n\r\n\t\t\tconst shadowMap = ( light.shadow && light.shadow.map ) ? light.shadow.map.texture : null;\r\n\r\n\t\t\tif ( light.isAmbientLight ) {\r\n\r\n\t\t\t\tr += color.r * intensity;\r\n\t\t\t\tg += color.g * intensity;\r\n\t\t\t\tb += color.b * intensity;\r\n\r\n\t\t\t} else if ( light.isLightProbe ) {\r\n\r\n\t\t\t\tfor ( let j = 0; j < 9; j ++ ) {\r\n\r\n\t\t\t\t\tstate.probe[ j ].addScaledVector( light.sh.coefficients[ j ], intensity );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if ( light.isDirectionalLight ) {\r\n\r\n\t\t\t\tconst uniforms = cache.get( light );\r\n\r\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\r\n\r\n\t\t\t\tif ( light.castShadow ) {\r\n\r\n\t\t\t\t\tconst shadow = light.shadow;\r\n\r\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\r\n\r\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\r\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\r\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\r\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\r\n\r\n\t\t\t\t\tstate.directionalShadow[ directionalLength ] = shadowUniforms;\r\n\t\t\t\t\tstate.directionalShadowMap[ directionalLength ] = shadowMap;\r\n\t\t\t\t\tstate.directionalShadowMatrix[ directionalLength ] = light.shadow.matrix;\r\n\r\n\t\t\t\t\tnumDirectionalShadows ++;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstate.directional[ directionalLength ] = uniforms;\r\n\r\n\t\t\t\tdirectionalLength ++;\r\n\r\n\t\t\t} else if ( light.isSpotLight ) {\r\n\r\n\t\t\t\tconst uniforms = cache.get( light );\r\n\r\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\r\n\r\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\r\n\t\t\t\tuniforms.distance = distance;\r\n\r\n\t\t\t\tuniforms.coneCos = Math.cos( light.angle );\r\n\t\t\t\tuniforms.penumbraCos = Math.cos( light.angle * ( 1 - light.penumbra ) );\r\n\t\t\t\tuniforms.decay = light.decay;\r\n\r\n\t\t\t\tif ( light.castShadow ) {\r\n\r\n\t\t\t\t\tconst shadow = light.shadow;\r\n\r\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\r\n\r\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\r\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\r\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\r\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\r\n\r\n\t\t\t\t\tstate.spotShadow[ spotLength ] = shadowUniforms;\r\n\t\t\t\t\tstate.spotShadowMap[ spotLength ] = shadowMap;\r\n\t\t\t\t\tstate.spotShadowMatrix[ spotLength ] = light.shadow.matrix;\r\n\r\n\t\t\t\t\tnumSpotShadows ++;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstate.spot[ spotLength ] = uniforms;\r\n\r\n\t\t\t\tspotLength ++;\r\n\r\n\t\t\t} else if ( light.isRectAreaLight ) {\r\n\r\n\t\t\t\tconst uniforms = cache.get( light );\r\n\r\n\t\t\t\t// (a) intensity is the total visible light emitted\r\n\t\t\t\t//uniforms.color.copy( color ).multiplyScalar( intensity / ( light.width * light.height * Math.PI ) );\r\n\r\n\t\t\t\t// (b) intensity is the brightness of the light\r\n\t\t\t\tuniforms.color.copy( color ).multiplyScalar( intensity );\r\n\r\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\r\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\r\n\r\n\t\t\t\tstate.rectArea[ rectAreaLength ] = uniforms;\r\n\r\n\t\t\t\trectAreaLength ++;\r\n\r\n\t\t\t} else if ( light.isPointLight ) {\r\n\r\n\t\t\t\tconst uniforms = cache.get( light );\r\n\r\n\t\t\t\tuniforms.color.copy( light.color ).multiplyScalar( light.intensity );\r\n\t\t\t\tuniforms.distance = light.distance;\r\n\t\t\t\tuniforms.decay = light.decay;\r\n\r\n\t\t\t\tif ( light.castShadow ) {\r\n\r\n\t\t\t\t\tconst shadow = light.shadow;\r\n\r\n\t\t\t\t\tconst shadowUniforms = shadowCache.get( light );\r\n\r\n\t\t\t\t\tshadowUniforms.shadowBias = shadow.bias;\r\n\t\t\t\t\tshadowUniforms.shadowNormalBias = shadow.normalBias;\r\n\t\t\t\t\tshadowUniforms.shadowRadius = shadow.radius;\r\n\t\t\t\t\tshadowUniforms.shadowMapSize = shadow.mapSize;\r\n\t\t\t\t\tshadowUniforms.shadowCameraNear = shadow.camera.near;\r\n\t\t\t\t\tshadowUniforms.shadowCameraFar = shadow.camera.far;\r\n\r\n\t\t\t\t\tstate.pointShadow[ pointLength ] = shadowUniforms;\r\n\t\t\t\t\tstate.pointShadowMap[ pointLength ] = shadowMap;\r\n\t\t\t\t\tstate.pointShadowMatrix[ pointLength ] = light.shadow.matrix;\r\n\r\n\t\t\t\t\tnumPointShadows ++;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tstate.point[ pointLength ] = uniforms;\r\n\r\n\t\t\t\tpointLength ++;\r\n\r\n\t\t\t} else if ( light.isHemisphereLight ) {\r\n\r\n\t\t\t\tconst uniforms = cache.get( light );\r\n\r\n\t\t\t\tuniforms.skyColor.copy( light.color ).multiplyScalar( intensity );\r\n\t\t\t\tuniforms.groundColor.copy( light.groundColor ).multiplyScalar( intensity );\r\n\r\n\t\t\t\tstate.hemi[ hemiLength ] = uniforms;\r\n\r\n\t\t\t\themiLength ++;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( rectAreaLength > 0 ) {\r\n\r\n\t\t\tif ( capabilities.isWebGL2 ) {\r\n\r\n\t\t\t\t// WebGL 2\r\n\r\n\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\r\n\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// WebGL 1\r\n\r\n\t\t\t\tif ( extensions.has( 'OES_texture_float_linear' ) === true ) {\r\n\r\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_FLOAT_1;\r\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_FLOAT_2;\r\n\r\n\t\t\t\t} else if ( extensions.has( 'OES_texture_half_float_linear' ) === true ) {\r\n\r\n\t\t\t\t\tstate.rectAreaLTC1 = UniformsLib.LTC_HALF_1;\r\n\t\t\t\t\tstate.rectAreaLTC2 = UniformsLib.LTC_HALF_2;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer: Unable to use RectAreaLight. Missing WebGL extensions.' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tstate.ambient[ 0 ] = r;\r\n\t\tstate.ambient[ 1 ] = g;\r\n\t\tstate.ambient[ 2 ] = b;\r\n\r\n\t\tconst hash = state.hash;\r\n\r\n\t\tif ( hash.directionalLength !== directionalLength ||\r\n\t\t\thash.pointLength !== pointLength ||\r\n\t\t\thash.spotLength !== spotLength ||\r\n\t\t\thash.rectAreaLength !== rectAreaLength ||\r\n\t\t\thash.hemiLength !== hemiLength ||\r\n\t\t\thash.numDirectionalShadows !== numDirectionalShadows ||\r\n\t\t\thash.numPointShadows !== numPointShadows ||\r\n\t\t\thash.numSpotShadows !== numSpotShadows ) {\r\n\r\n\t\t\tstate.directional.length = directionalLength;\r\n\t\t\tstate.spot.length = spotLength;\r\n\t\t\tstate.rectArea.length = rectAreaLength;\r\n\t\t\tstate.point.length = pointLength;\r\n\t\t\tstate.hemi.length = hemiLength;\r\n\r\n\t\t\tstate.directionalShadow.length = numDirectionalShadows;\r\n\t\t\tstate.directionalShadowMap.length = numDirectionalShadows;\r\n\t\t\tstate.pointShadow.length = numPointShadows;\r\n\t\t\tstate.pointShadowMap.length = numPointShadows;\r\n\t\t\tstate.spotShadow.length = numSpotShadows;\r\n\t\t\tstate.spotShadowMap.length = numSpotShadows;\r\n\t\t\tstate.directionalShadowMatrix.length = numDirectionalShadows;\r\n\t\t\tstate.pointShadowMatrix.length = numPointShadows;\r\n\t\t\tstate.spotShadowMatrix.length = numSpotShadows;\r\n\r\n\t\t\thash.directionalLength = directionalLength;\r\n\t\t\thash.pointLength = pointLength;\r\n\t\t\thash.spotLength = spotLength;\r\n\t\t\thash.rectAreaLength = rectAreaLength;\r\n\t\t\thash.hemiLength = hemiLength;\r\n\r\n\t\t\thash.numDirectionalShadows = numDirectionalShadows;\r\n\t\t\thash.numPointShadows = numPointShadows;\r\n\t\t\thash.numSpotShadows = numSpotShadows;\r\n\r\n\t\t\tstate.version = nextVersion ++;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction setupView( lights, camera ) {\r\n\r\n\t\tlet directionalLength = 0;\r\n\t\tlet pointLength = 0;\r\n\t\tlet spotLength = 0;\r\n\t\tlet rectAreaLength = 0;\r\n\t\tlet hemiLength = 0;\r\n\r\n\t\tconst viewMatrix = camera.matrixWorldInverse;\r\n\r\n\t\tfor ( let i = 0, l = lights.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst light = lights[ i ];\r\n\r\n\t\t\tif ( light.isDirectionalLight ) {\r\n\r\n\t\t\t\tconst uniforms = state.directional[ directionalLength ];\r\n\r\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\r\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\r\n\t\t\t\tuniforms.direction.sub( vector3 );\r\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\r\n\r\n\t\t\t\tdirectionalLength ++;\r\n\r\n\t\t\t} else if ( light.isSpotLight ) {\r\n\r\n\t\t\t\tconst uniforms = state.spot[ spotLength ];\r\n\r\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\r\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\r\n\r\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\r\n\t\t\t\tvector3.setFromMatrixPosition( light.target.matrixWorld );\r\n\t\t\t\tuniforms.direction.sub( vector3 );\r\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\r\n\r\n\t\t\t\tspotLength ++;\r\n\r\n\t\t\t} else if ( light.isRectAreaLight ) {\r\n\r\n\t\t\t\tconst uniforms = state.rectArea[ rectAreaLength ];\r\n\r\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\r\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\r\n\r\n\t\t\t\t// extract local rotation of light to derive width/height half vectors\r\n\t\t\t\tmatrix42.identity();\r\n\t\t\t\tmatrix4.copy( light.matrixWorld );\r\n\t\t\t\tmatrix4.premultiply( viewMatrix );\r\n\t\t\t\tmatrix42.extractRotation( matrix4 );\r\n\r\n\t\t\t\tuniforms.halfWidth.set( light.width * 0.5, 0.0, 0.0 );\r\n\t\t\t\tuniforms.halfHeight.set( 0.0, light.height * 0.5, 0.0 );\r\n\r\n\t\t\t\tuniforms.halfWidth.applyMatrix4( matrix42 );\r\n\t\t\t\tuniforms.halfHeight.applyMatrix4( matrix42 );\r\n\r\n\t\t\t\trectAreaLength ++;\r\n\r\n\t\t\t} else if ( light.isPointLight ) {\r\n\r\n\t\t\t\tconst uniforms = state.point[ pointLength ];\r\n\r\n\t\t\t\tuniforms.position.setFromMatrixPosition( light.matrixWorld );\r\n\t\t\t\tuniforms.position.applyMatrix4( viewMatrix );\r\n\r\n\t\t\t\tpointLength ++;\r\n\r\n\t\t\t} else if ( light.isHemisphereLight ) {\r\n\r\n\t\t\t\tconst uniforms = state.hemi[ hemiLength ];\r\n\r\n\t\t\t\tuniforms.direction.setFromMatrixPosition( light.matrixWorld );\r\n\t\t\t\tuniforms.direction.transformDirection( viewMatrix );\r\n\t\t\t\tuniforms.direction.normalize();\r\n\r\n\t\t\t\themiLength ++;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn {\r\n\t\tsetup: setup,\r\n\t\tsetupView: setupView,\r\n\t\tstate: state\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLRenderState( extensions, capabilities ) {\r\n\r\n\tconst lights = new WebGLLights( extensions, capabilities );\r\n\r\n\tconst lightsArray = [];\r\n\tconst shadowsArray = [];\r\n\r\n\tfunction init() {\r\n\r\n\t\tlightsArray.length = 0;\r\n\t\tshadowsArray.length = 0;\r\n\r\n\t}\r\n\r\n\tfunction pushLight( light ) {\r\n\r\n\t\tlightsArray.push( light );\r\n\r\n\t}\r\n\r\n\tfunction pushShadow( shadowLight ) {\r\n\r\n\t\tshadowsArray.push( shadowLight );\r\n\r\n\t}\r\n\r\n\tfunction setupLights() {\r\n\r\n\t\tlights.setup( lightsArray );\r\n\r\n\t}\r\n\r\n\tfunction setupLightsView( camera ) {\r\n\r\n\t\tlights.setupView( lightsArray, camera );\r\n\r\n\t}\r\n\r\n\tconst state = {\r\n\t\tlightsArray: lightsArray,\r\n\t\tshadowsArray: shadowsArray,\r\n\r\n\t\tlights: lights\r\n\t};\r\n\r\n\treturn {\r\n\t\tinit: init,\r\n\t\tstate: state,\r\n\t\tsetupLights: setupLights,\r\n\t\tsetupLightsView: setupLightsView,\r\n\r\n\t\tpushLight: pushLight,\r\n\t\tpushShadow: pushShadow\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLRenderStates( extensions, capabilities ) {\r\n\r\n\tlet renderStates = new WeakMap();\r\n\r\n\tfunction get( scene, renderCallDepth = 0 ) {\r\n\r\n\t\tlet renderState;\r\n\r\n\t\tif ( renderStates.has( scene ) === false ) {\r\n\r\n\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\r\n\t\t\trenderStates.set( scene, [] );\r\n\t\t\trenderStates.get( scene ).push( renderState );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( renderCallDepth >= renderStates.get( scene ).length ) {\r\n\r\n\t\t\t\trenderState = new WebGLRenderState( extensions, capabilities );\r\n\t\t\t\trenderStates.get( scene ).push( renderState );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\trenderState = renderStates.get( scene )[ renderCallDepth ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn renderState;\r\n\r\n\t}\r\n\r\n\tfunction dispose() {\r\n\r\n\t\trenderStates = new WeakMap();\r\n\r\n\t}\r\n\r\n\treturn {\r\n\t\tget: get,\r\n\t\tdispose: dispose\r\n\t};\r\n\r\n}\r\n\r\n/**\r\n * parameters = {\r\n *\r\n * opacity: ,\r\n *\r\n * map: new THREE.Texture( ),\r\n *\r\n * alphaMap: new THREE.Texture( ),\r\n *\r\n * displacementMap: new THREE.Texture( ),\r\n * displacementScale: ,\r\n * displacementBias: ,\r\n *\r\n * wireframe: ,\r\n * wireframeLinewidth: \r\n * }\r\n */\r\n\r\nfunction MeshDepthMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'MeshDepthMaterial';\r\n\r\n\tthis.depthPacking = BasicDepthPacking;\r\n\r\n\tthis.skinning = false;\r\n\tthis.morphTargets = false;\r\n\r\n\tthis.map = null;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.displacementMap = null;\r\n\tthis.displacementScale = 1;\r\n\tthis.displacementBias = 0;\r\n\r\n\tthis.wireframe = false;\r\n\tthis.wireframeLinewidth = 1;\r\n\r\n\tthis.fog = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshDepthMaterial.prototype = Object.create( Material.prototype );\r\nMeshDepthMaterial.prototype.constructor = MeshDepthMaterial;\r\n\r\nMeshDepthMaterial.prototype.isMeshDepthMaterial = true;\r\n\r\nMeshDepthMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.depthPacking = source.depthPacking;\r\n\r\n\tthis.skinning = source.skinning;\r\n\tthis.morphTargets = source.morphTargets;\r\n\r\n\tthis.map = source.map;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.displacementMap = source.displacementMap;\r\n\tthis.displacementScale = source.displacementScale;\r\n\tthis.displacementBias = source.displacementBias;\r\n\r\n\tthis.wireframe = source.wireframe;\r\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n/**\r\n * parameters = {\r\n *\r\n * referencePosition: ,\r\n * nearDistance: ,\r\n * farDistance: ,\r\n *\r\n * skinning: ,\r\n * morphTargets: ,\r\n *\r\n * map: new THREE.Texture( ),\r\n *\r\n * alphaMap: new THREE.Texture( ),\r\n *\r\n * displacementMap: new THREE.Texture( ),\r\n * displacementScale: ,\r\n * displacementBias: \r\n *\r\n * }\r\n */\r\n\r\nfunction MeshDistanceMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'MeshDistanceMaterial';\r\n\r\n\tthis.referencePosition = new Vector3();\r\n\tthis.nearDistance = 1;\r\n\tthis.farDistance = 1000;\r\n\r\n\tthis.skinning = false;\r\n\tthis.morphTargets = false;\r\n\r\n\tthis.map = null;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.displacementMap = null;\r\n\tthis.displacementScale = 1;\r\n\tthis.displacementBias = 0;\r\n\r\n\tthis.fog = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshDistanceMaterial.prototype = Object.create( Material.prototype );\r\nMeshDistanceMaterial.prototype.constructor = MeshDistanceMaterial;\r\n\r\nMeshDistanceMaterial.prototype.isMeshDistanceMaterial = true;\r\n\r\nMeshDistanceMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.referencePosition.copy( source.referencePosition );\r\n\tthis.nearDistance = source.nearDistance;\r\n\tthis.farDistance = source.farDistance;\r\n\r\n\tthis.skinning = source.skinning;\r\n\tthis.morphTargets = source.morphTargets;\r\n\r\n\tthis.map = source.map;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.displacementMap = source.displacementMap;\r\n\tthis.displacementScale = source.displacementScale;\r\n\tthis.displacementBias = source.displacementBias;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nvar vsm_frag = \"uniform sampler2D shadow_pass;\\nuniform vec2 resolution;\\nuniform float radius;\\n#include \\nvoid main() {\\n\\tfloat mean = 0.0;\\n\\tfloat squared_mean = 0.0;\\n\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy ) / resolution ) );\\n\\tfor ( float i = -1.0; i < 1.0 ; i += SAMPLE_RATE) {\\n\\t\\t#ifdef HORIZONTAL_PASS\\n\\t\\t\\tvec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( i, 0.0 ) * radius ) / resolution ) );\\n\\t\\t\\tmean += distribution.x;\\n\\t\\t\\tsquared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\\n\\t\\t#else\\n\\t\\t\\tfloat depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, i ) * radius ) / resolution ) );\\n\\t\\t\\tmean += depth;\\n\\t\\t\\tsquared_mean += depth * depth;\\n\\t\\t#endif\\n\\t}\\n\\tmean = mean * HALF_SAMPLE_RATE;\\n\\tsquared_mean = squared_mean * HALF_SAMPLE_RATE;\\n\\tfloat std_dev = sqrt( squared_mean - mean * mean );\\n\\tgl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\\n}\";\r\n\r\nvar vsm_vert = \"void main() {\\n\\tgl_Position = vec4( position, 1.0 );\\n}\";\r\n\r\nfunction WebGLShadowMap( _renderer, _objects, maxTextureSize ) {\r\n\r\n\tlet _frustum = new Frustum();\r\n\r\n\tconst _shadowMapSize = new Vector2(),\r\n\t\t_viewportSize = new Vector2(),\r\n\r\n\t\t_viewport = new Vector4(),\r\n\r\n\t\t_depthMaterials = [],\r\n\t\t_distanceMaterials = [],\r\n\r\n\t\t_materialCache = {};\r\n\r\n\tconst shadowSide = { 0: BackSide, 1: FrontSide, 2: DoubleSide };\r\n\r\n\tconst shadowMaterialVertical = new ShaderMaterial( {\r\n\r\n\t\tdefines: {\r\n\t\t\tSAMPLE_RATE: 2.0 / 8.0,\r\n\t\t\tHALF_SAMPLE_RATE: 1.0 / 8.0\r\n\t\t},\r\n\r\n\t\tuniforms: {\r\n\t\t\tshadow_pass: { value: null },\r\n\t\t\tresolution: { value: new Vector2() },\r\n\t\t\tradius: { value: 4.0 }\r\n\t\t},\r\n\r\n\t\tvertexShader: vsm_vert,\r\n\r\n\t\tfragmentShader: vsm_frag\r\n\r\n\t} );\r\n\r\n\tconst shadowMaterialHorizontal = shadowMaterialVertical.clone();\r\n\tshadowMaterialHorizontal.defines.HORIZONTAL_PASS = 1;\r\n\r\n\tconst fullScreenTri = new BufferGeometry();\r\n\tfullScreenTri.setAttribute(\r\n\t\t'position',\r\n\t\tnew BufferAttribute(\r\n\t\t\tnew Float32Array( [ - 1, - 1, 0.5, 3, - 1, 0.5, - 1, 3, 0.5 ] ),\r\n\t\t\t3\r\n\t\t)\r\n\t);\r\n\r\n\tconst fullScreenMesh = new Mesh( fullScreenTri, shadowMaterialVertical );\r\n\r\n\tconst scope = this;\r\n\r\n\tthis.enabled = false;\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.needsUpdate = false;\r\n\r\n\tthis.type = PCFShadowMap;\r\n\r\n\tthis.render = function ( lights, scene, camera ) {\r\n\r\n\t\tif ( scope.enabled === false ) return;\r\n\t\tif ( scope.autoUpdate === false && scope.needsUpdate === false ) return;\r\n\r\n\t\tif ( lights.length === 0 ) return;\r\n\r\n\t\tconst currentRenderTarget = _renderer.getRenderTarget();\r\n\t\tconst activeCubeFace = _renderer.getActiveCubeFace();\r\n\t\tconst activeMipmapLevel = _renderer.getActiveMipmapLevel();\r\n\r\n\t\tconst _state = _renderer.state;\r\n\r\n\t\t// Set GL state for depth map.\r\n\t\t_state.setBlending( NoBlending );\r\n\t\t_state.buffers.color.setClear( 1, 1, 1, 1 );\r\n\t\t_state.buffers.depth.setTest( true );\r\n\t\t_state.setScissorTest( false );\r\n\r\n\t\t// render depth map\r\n\r\n\t\tfor ( let i = 0, il = lights.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst light = lights[ i ];\r\n\t\t\tconst shadow = light.shadow;\r\n\r\n\t\t\tif ( shadow === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap:', light, 'has no shadow.' );\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( shadow.autoUpdate === false && shadow.needsUpdate === false ) continue;\r\n\r\n\t\t\t_shadowMapSize.copy( shadow.mapSize );\r\n\r\n\t\t\tconst shadowFrameExtents = shadow.getFrameExtents();\r\n\r\n\t\t\t_shadowMapSize.multiply( shadowFrameExtents );\r\n\r\n\t\t\t_viewportSize.copy( shadow.mapSize );\r\n\r\n\t\t\tif ( _shadowMapSize.x > maxTextureSize || _shadowMapSize.y > maxTextureSize ) {\r\n\r\n\t\t\t\tif ( _shadowMapSize.x > maxTextureSize ) {\r\n\r\n\t\t\t\t\t_viewportSize.x = Math.floor( maxTextureSize / shadowFrameExtents.x );\r\n\t\t\t\t\t_shadowMapSize.x = _viewportSize.x * shadowFrameExtents.x;\r\n\t\t\t\t\tshadow.mapSize.x = _viewportSize.x;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( _shadowMapSize.y > maxTextureSize ) {\r\n\r\n\t\t\t\t\t_viewportSize.y = Math.floor( maxTextureSize / shadowFrameExtents.y );\r\n\t\t\t\t\t_shadowMapSize.y = _viewportSize.y * shadowFrameExtents.y;\r\n\t\t\t\t\tshadow.mapSize.y = _viewportSize.y;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( shadow.map === null && ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\r\n\r\n\t\t\t\tconst pars = { minFilter: LinearFilter, magFilter: LinearFilter, format: RGBAFormat };\r\n\r\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\r\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\r\n\r\n\t\t\t\tshadow.mapPass = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\r\n\r\n\t\t\t\tshadow.camera.updateProjectionMatrix();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( shadow.map === null ) {\r\n\r\n\t\t\t\tconst pars = { minFilter: NearestFilter, magFilter: NearestFilter, format: RGBAFormat };\r\n\r\n\t\t\t\tshadow.map = new WebGLRenderTarget( _shadowMapSize.x, _shadowMapSize.y, pars );\r\n\t\t\t\tshadow.map.texture.name = light.name + '.shadowMap';\r\n\r\n\t\t\t\tshadow.camera.updateProjectionMatrix();\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_renderer.setRenderTarget( shadow.map );\r\n\t\t\t_renderer.clear();\r\n\r\n\t\t\tconst viewportCount = shadow.getViewportCount();\r\n\r\n\t\t\tfor ( let vp = 0; vp < viewportCount; vp ++ ) {\r\n\r\n\t\t\t\tconst viewport = shadow.getViewport( vp );\r\n\r\n\t\t\t\t_viewport.set(\r\n\t\t\t\t\t_viewportSize.x * viewport.x,\r\n\t\t\t\t\t_viewportSize.y * viewport.y,\r\n\t\t\t\t\t_viewportSize.x * viewport.z,\r\n\t\t\t\t\t_viewportSize.y * viewport.w\r\n\t\t\t\t);\r\n\r\n\t\t\t\t_state.viewport( _viewport );\r\n\r\n\t\t\t\tshadow.updateMatrices( light, vp );\r\n\r\n\t\t\t\t_frustum = shadow.getFrustum();\r\n\r\n\t\t\t\trenderObject( scene, camera, shadow.camera, light, this.type );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// do blur pass for VSM\r\n\r\n\t\t\tif ( ! shadow.isPointLightShadow && this.type === VSMShadowMap ) {\r\n\r\n\t\t\t\tVSMPass( shadow, camera );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tshadow.needsUpdate = false;\r\n\r\n\t\t}\r\n\r\n\t\tscope.needsUpdate = false;\r\n\r\n\t\t_renderer.setRenderTarget( currentRenderTarget, activeCubeFace, activeMipmapLevel );\r\n\r\n\t};\r\n\r\n\tfunction VSMPass( shadow, camera ) {\r\n\r\n\t\tconst geometry = _objects.update( fullScreenMesh );\r\n\r\n\t\t// vertical pass\r\n\r\n\t\tshadowMaterialVertical.uniforms.shadow_pass.value = shadow.map.texture;\r\n\t\tshadowMaterialVertical.uniforms.resolution.value = shadow.mapSize;\r\n\t\tshadowMaterialVertical.uniforms.radius.value = shadow.radius;\r\n\t\t_renderer.setRenderTarget( shadow.mapPass );\r\n\t\t_renderer.clear();\r\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialVertical, fullScreenMesh, null );\r\n\r\n\t\t// horizontal pass\r\n\r\n\t\tshadowMaterialHorizontal.uniforms.shadow_pass.value = shadow.mapPass.texture;\r\n\t\tshadowMaterialHorizontal.uniforms.resolution.value = shadow.mapSize;\r\n\t\tshadowMaterialHorizontal.uniforms.radius.value = shadow.radius;\r\n\t\t_renderer.setRenderTarget( shadow.map );\r\n\t\t_renderer.clear();\r\n\t\t_renderer.renderBufferDirect( camera, null, geometry, shadowMaterialHorizontal, fullScreenMesh, null );\r\n\r\n\t}\r\n\r\n\tfunction getDepthMaterialVariant( useMorphing, useSkinning, useInstancing ) {\r\n\r\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\r\n\r\n\t\tlet material = _depthMaterials[ index ];\r\n\r\n\t\tif ( material === undefined ) {\r\n\r\n\t\t\tmaterial = new MeshDepthMaterial( {\r\n\r\n\t\t\t\tdepthPacking: RGBADepthPacking,\r\n\r\n\t\t\t\tmorphTargets: useMorphing,\r\n\t\t\t\tskinning: useSkinning\r\n\r\n\t\t\t} );\r\n\r\n\t\t\t_depthMaterials[ index ] = material;\r\n\r\n\t\t}\r\n\r\n\t\treturn material;\r\n\r\n\t}\r\n\r\n\tfunction getDistanceMaterialVariant( useMorphing, useSkinning, useInstancing ) {\r\n\r\n\t\tconst index = useMorphing << 0 | useSkinning << 1 | useInstancing << 2;\r\n\r\n\t\tlet material = _distanceMaterials[ index ];\r\n\r\n\t\tif ( material === undefined ) {\r\n\r\n\t\t\tmaterial = new MeshDistanceMaterial( {\r\n\r\n\t\t\t\tmorphTargets: useMorphing,\r\n\t\t\t\tskinning: useSkinning\r\n\r\n\t\t\t} );\r\n\r\n\t\t\t_distanceMaterials[ index ] = material;\r\n\r\n\t\t}\r\n\r\n\t\treturn material;\r\n\r\n\t}\r\n\r\n\tfunction getDepthMaterial( object, geometry, material, light, shadowCameraNear, shadowCameraFar, type ) {\r\n\r\n\t\tlet result = null;\r\n\r\n\t\tlet getMaterialVariant = getDepthMaterialVariant;\r\n\t\tlet customMaterial = object.customDepthMaterial;\r\n\r\n\t\tif ( light.isPointLight === true ) {\r\n\r\n\t\t\tgetMaterialVariant = getDistanceMaterialVariant;\r\n\t\t\tcustomMaterial = object.customDistanceMaterial;\r\n\r\n\t\t}\r\n\r\n\t\tif ( customMaterial === undefined ) {\r\n\r\n\t\t\tlet useMorphing = false;\r\n\r\n\t\t\tif ( material.morphTargets === true ) {\r\n\r\n\t\t\t\tuseMorphing = geometry.morphAttributes && geometry.morphAttributes.position && geometry.morphAttributes.position.length > 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlet useSkinning = false;\r\n\r\n\t\t\tif ( object.isSkinnedMesh === true ) {\r\n\r\n\t\t\t\tif ( material.skinning === true ) {\r\n\r\n\t\t\t\t\tuseSkinning = true;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:', object );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst useInstancing = object.isInstancedMesh === true;\r\n\r\n\t\t\tresult = getMaterialVariant( useMorphing, useSkinning, useInstancing );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tresult = customMaterial;\r\n\r\n\t\t}\r\n\r\n\t\tif ( _renderer.localClippingEnabled &&\r\n\t\t\t\tmaterial.clipShadows === true &&\r\n\t\t\t\tmaterial.clippingPlanes.length !== 0 ) {\r\n\r\n\t\t\t// in this case we need a unique material instance reflecting the\r\n\t\t\t// appropriate state\r\n\r\n\t\t\tconst keyA = result.uuid, keyB = material.uuid;\r\n\r\n\t\t\tlet materialsForVariant = _materialCache[ keyA ];\r\n\r\n\t\t\tif ( materialsForVariant === undefined ) {\r\n\r\n\t\t\t\tmaterialsForVariant = {};\r\n\t\t\t\t_materialCache[ keyA ] = materialsForVariant;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlet cachedMaterial = materialsForVariant[ keyB ];\r\n\r\n\t\t\tif ( cachedMaterial === undefined ) {\r\n\r\n\t\t\t\tcachedMaterial = result.clone();\r\n\t\t\t\tmaterialsForVariant[ keyB ] = cachedMaterial;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tresult = cachedMaterial;\r\n\r\n\t\t}\r\n\r\n\t\tresult.visible = material.visible;\r\n\t\tresult.wireframe = material.wireframe;\r\n\r\n\t\tif ( type === VSMShadowMap ) {\r\n\r\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : material.side;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tresult.side = ( material.shadowSide !== null ) ? material.shadowSide : shadowSide[ material.side ];\r\n\r\n\t\t}\r\n\r\n\t\tresult.clipShadows = material.clipShadows;\r\n\t\tresult.clippingPlanes = material.clippingPlanes;\r\n\t\tresult.clipIntersection = material.clipIntersection;\r\n\r\n\t\tresult.wireframeLinewidth = material.wireframeLinewidth;\r\n\t\tresult.linewidth = material.linewidth;\r\n\r\n\t\tif ( light.isPointLight === true && result.isMeshDistanceMaterial === true ) {\r\n\r\n\t\t\tresult.referencePosition.setFromMatrixPosition( light.matrixWorld );\r\n\t\t\tresult.nearDistance = shadowCameraNear;\r\n\t\t\tresult.farDistance = shadowCameraFar;\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t}\r\n\r\n\tfunction renderObject( object, camera, shadowCamera, light, type ) {\r\n\r\n\t\tif ( object.visible === false ) return;\r\n\r\n\t\tconst visible = object.layers.test( camera.layers );\r\n\r\n\t\tif ( visible && ( object.isMesh || object.isLine || object.isPoints ) ) {\r\n\r\n\t\t\tif ( ( object.castShadow || ( object.receiveShadow && type === VSMShadowMap ) ) && ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) ) {\r\n\r\n\t\t\t\tobject.modelViewMatrix.multiplyMatrices( shadowCamera.matrixWorldInverse, object.matrixWorld );\r\n\r\n\t\t\t\tconst geometry = _objects.update( object );\r\n\t\t\t\tconst material = object.material;\r\n\r\n\t\t\t\tif ( Array.isArray( material ) ) {\r\n\r\n\t\t\t\t\tconst groups = geometry.groups;\r\n\r\n\t\t\t\t\tfor ( let k = 0, kl = groups.length; k < kl; k ++ ) {\r\n\r\n\t\t\t\t\t\tconst group = groups[ k ];\r\n\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\r\n\r\n\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\r\n\r\n\t\t\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, groupMaterial, light, shadowCamera.near, shadowCamera.far, type );\r\n\r\n\t\t\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, group );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else if ( material.visible ) {\r\n\r\n\t\t\t\t\tconst depthMaterial = getDepthMaterial( object, geometry, material, light, shadowCamera.near, shadowCamera.far, type );\r\n\r\n\t\t\t\t\t_renderer.renderBufferDirect( shadowCamera, null, geometry, depthMaterial, object, null );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst children = object.children;\r\n\r\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\r\n\r\n\t\t\trenderObject( children[ i ], camera, shadowCamera, light, type );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction WebGLState( gl, extensions, capabilities ) {\r\n\r\n\tconst isWebGL2 = capabilities.isWebGL2;\r\n\r\n\tfunction ColorBuffer() {\r\n\r\n\t\tlet locked = false;\r\n\r\n\t\tconst color = new Vector4();\r\n\t\tlet currentColorMask = null;\r\n\t\tconst currentColorClear = new Vector4( 0, 0, 0, 0 );\r\n\r\n\t\treturn {\r\n\r\n\t\t\tsetMask: function ( colorMask ) {\r\n\r\n\t\t\t\tif ( currentColorMask !== colorMask && ! locked ) {\r\n\r\n\t\t\t\t\tgl.colorMask( colorMask, colorMask, colorMask, colorMask );\r\n\t\t\t\t\tcurrentColorMask = colorMask;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetLocked: function ( lock ) {\r\n\r\n\t\t\t\tlocked = lock;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetClear: function ( r, g, b, a, premultipliedAlpha ) {\r\n\r\n\t\t\t\tif ( premultipliedAlpha === true ) {\r\n\r\n\t\t\t\t\tr *= a; g *= a; b *= a;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcolor.set( r, g, b, a );\r\n\r\n\t\t\t\tif ( currentColorClear.equals( color ) === false ) {\r\n\r\n\t\t\t\t\tgl.clearColor( r, g, b, a );\r\n\t\t\t\t\tcurrentColorClear.copy( color );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\treset: function () {\r\n\r\n\t\t\t\tlocked = false;\r\n\r\n\t\t\t\tcurrentColorMask = null;\r\n\t\t\t\tcurrentColorClear.set( - 1, 0, 0, 0 ); // set to invalid state\r\n\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t}\r\n\r\n\tfunction DepthBuffer() {\r\n\r\n\t\tlet locked = false;\r\n\r\n\t\tlet currentDepthMask = null;\r\n\t\tlet currentDepthFunc = null;\r\n\t\tlet currentDepthClear = null;\r\n\r\n\t\treturn {\r\n\r\n\t\t\tsetTest: function ( depthTest ) {\r\n\r\n\t\t\t\tif ( depthTest ) {\r\n\r\n\t\t\t\t\tenable( 2929 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tdisable( 2929 );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetMask: function ( depthMask ) {\r\n\r\n\t\t\t\tif ( currentDepthMask !== depthMask && ! locked ) {\r\n\r\n\t\t\t\t\tgl.depthMask( depthMask );\r\n\t\t\t\t\tcurrentDepthMask = depthMask;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetFunc: function ( depthFunc ) {\r\n\r\n\t\t\t\tif ( currentDepthFunc !== depthFunc ) {\r\n\r\n\t\t\t\t\tif ( depthFunc ) {\r\n\r\n\t\t\t\t\t\tswitch ( depthFunc ) {\r\n\r\n\t\t\t\t\t\t\tcase NeverDepth:\r\n\r\n\t\t\t\t\t\t\t\tgl.depthFunc( 512 );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase AlwaysDepth:\r\n\r\n\t\t\t\t\t\t\t\tgl.depthFunc( 519 );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase LessDepth:\r\n\r\n\t\t\t\t\t\t\t\tgl.depthFunc( 513 );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase LessEqualDepth:\r\n\r\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase EqualDepth:\r\n\r\n\t\t\t\t\t\t\t\tgl.depthFunc( 514 );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase GreaterEqualDepth:\r\n\r\n\t\t\t\t\t\t\t\tgl.depthFunc( 518 );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase GreaterDepth:\r\n\r\n\t\t\t\t\t\t\t\tgl.depthFunc( 516 );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tcase NotEqualDepth:\r\n\r\n\t\t\t\t\t\t\t\tgl.depthFunc( 517 );\r\n\t\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t\tdefault:\r\n\r\n\t\t\t\t\t\t\t\tgl.depthFunc( 515 );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tgl.depthFunc( 515 );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcurrentDepthFunc = depthFunc;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetLocked: function ( lock ) {\r\n\r\n\t\t\t\tlocked = lock;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetClear: function ( depth ) {\r\n\r\n\t\t\t\tif ( currentDepthClear !== depth ) {\r\n\r\n\t\t\t\t\tgl.clearDepth( depth );\r\n\t\t\t\t\tcurrentDepthClear = depth;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\treset: function () {\r\n\r\n\t\t\t\tlocked = false;\r\n\r\n\t\t\t\tcurrentDepthMask = null;\r\n\t\t\t\tcurrentDepthFunc = null;\r\n\t\t\t\tcurrentDepthClear = null;\r\n\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t}\r\n\r\n\tfunction StencilBuffer() {\r\n\r\n\t\tlet locked = false;\r\n\r\n\t\tlet currentStencilMask = null;\r\n\t\tlet currentStencilFunc = null;\r\n\t\tlet currentStencilRef = null;\r\n\t\tlet currentStencilFuncMask = null;\r\n\t\tlet currentStencilFail = null;\r\n\t\tlet currentStencilZFail = null;\r\n\t\tlet currentStencilZPass = null;\r\n\t\tlet currentStencilClear = null;\r\n\r\n\t\treturn {\r\n\r\n\t\t\tsetTest: function ( stencilTest ) {\r\n\r\n\t\t\t\tif ( ! locked ) {\r\n\r\n\t\t\t\t\tif ( stencilTest ) {\r\n\r\n\t\t\t\t\t\tenable( 2960 );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tdisable( 2960 );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetMask: function ( stencilMask ) {\r\n\r\n\t\t\t\tif ( currentStencilMask !== stencilMask && ! locked ) {\r\n\r\n\t\t\t\t\tgl.stencilMask( stencilMask );\r\n\t\t\t\t\tcurrentStencilMask = stencilMask;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetFunc: function ( stencilFunc, stencilRef, stencilMask ) {\r\n\r\n\t\t\t\tif ( currentStencilFunc !== stencilFunc ||\r\n\t\t\t\t currentStencilRef !== stencilRef ||\r\n\t\t\t\t currentStencilFuncMask !== stencilMask ) {\r\n\r\n\t\t\t\t\tgl.stencilFunc( stencilFunc, stencilRef, stencilMask );\r\n\r\n\t\t\t\t\tcurrentStencilFunc = stencilFunc;\r\n\t\t\t\t\tcurrentStencilRef = stencilRef;\r\n\t\t\t\t\tcurrentStencilFuncMask = stencilMask;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetOp: function ( stencilFail, stencilZFail, stencilZPass ) {\r\n\r\n\t\t\t\tif ( currentStencilFail !== stencilFail ||\r\n\t\t\t\t currentStencilZFail !== stencilZFail ||\r\n\t\t\t\t currentStencilZPass !== stencilZPass ) {\r\n\r\n\t\t\t\t\tgl.stencilOp( stencilFail, stencilZFail, stencilZPass );\r\n\r\n\t\t\t\t\tcurrentStencilFail = stencilFail;\r\n\t\t\t\t\tcurrentStencilZFail = stencilZFail;\r\n\t\t\t\t\tcurrentStencilZPass = stencilZPass;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetLocked: function ( lock ) {\r\n\r\n\t\t\t\tlocked = lock;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tsetClear: function ( stencil ) {\r\n\r\n\t\t\t\tif ( currentStencilClear !== stencil ) {\r\n\r\n\t\t\t\t\tgl.clearStencil( stencil );\r\n\t\t\t\t\tcurrentStencilClear = stencil;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\treset: function () {\r\n\r\n\t\t\t\tlocked = false;\r\n\r\n\t\t\t\tcurrentStencilMask = null;\r\n\t\t\t\tcurrentStencilFunc = null;\r\n\t\t\t\tcurrentStencilRef = null;\r\n\t\t\t\tcurrentStencilFuncMask = null;\r\n\t\t\t\tcurrentStencilFail = null;\r\n\t\t\t\tcurrentStencilZFail = null;\r\n\t\t\t\tcurrentStencilZPass = null;\r\n\t\t\t\tcurrentStencilClear = null;\r\n\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tconst colorBuffer = new ColorBuffer();\r\n\tconst depthBuffer = new DepthBuffer();\r\n\tconst stencilBuffer = new StencilBuffer();\r\n\r\n\tlet enabledCapabilities = {};\r\n\r\n\tlet currentProgram = null;\r\n\r\n\tlet currentBlendingEnabled = null;\r\n\tlet currentBlending = null;\r\n\tlet currentBlendEquation = null;\r\n\tlet currentBlendSrc = null;\r\n\tlet currentBlendDst = null;\r\n\tlet currentBlendEquationAlpha = null;\r\n\tlet currentBlendSrcAlpha = null;\r\n\tlet currentBlendDstAlpha = null;\r\n\tlet currentPremultipledAlpha = false;\r\n\r\n\tlet currentFlipSided = null;\r\n\tlet currentCullFace = null;\r\n\r\n\tlet currentLineWidth = null;\r\n\r\n\tlet currentPolygonOffsetFactor = null;\r\n\tlet currentPolygonOffsetUnits = null;\r\n\r\n\tconst maxTextures = gl.getParameter( 35661 );\r\n\r\n\tlet lineWidthAvailable = false;\r\n\tlet version = 0;\r\n\tconst glVersion = gl.getParameter( 7938 );\r\n\r\n\tif ( glVersion.indexOf( 'WebGL' ) !== - 1 ) {\r\n\r\n\t\tversion = parseFloat( /^WebGL (\\d)/.exec( glVersion )[ 1 ] );\r\n\t\tlineWidthAvailable = ( version >= 1.0 );\r\n\r\n\t} else if ( glVersion.indexOf( 'OpenGL ES' ) !== - 1 ) {\r\n\r\n\t\tversion = parseFloat( /^OpenGL ES (\\d)/.exec( glVersion )[ 1 ] );\r\n\t\tlineWidthAvailable = ( version >= 2.0 );\r\n\r\n\t}\r\n\r\n\tlet currentTextureSlot = null;\r\n\tlet currentBoundTextures = {};\r\n\r\n\tconst currentScissor = new Vector4();\r\n\tconst currentViewport = new Vector4();\r\n\r\n\tfunction createTexture( type, target, count ) {\r\n\r\n\t\tconst data = new Uint8Array( 4 ); // 4 is required to match default unpack alignment of 4.\r\n\t\tconst texture = gl.createTexture();\r\n\r\n\t\tgl.bindTexture( type, texture );\r\n\t\tgl.texParameteri( type, 10241, 9728 );\r\n\t\tgl.texParameteri( type, 10240, 9728 );\r\n\r\n\t\tfor ( let i = 0; i < count; i ++ ) {\r\n\r\n\t\t\tgl.texImage2D( target + i, 0, 6408, 1, 1, 0, 6408, 5121, data );\r\n\r\n\t\t}\r\n\r\n\t\treturn texture;\r\n\r\n\t}\r\n\r\n\tconst emptyTextures = {};\r\n\temptyTextures[ 3553 ] = createTexture( 3553, 3553, 1 );\r\n\temptyTextures[ 34067 ] = createTexture( 34067, 34069, 6 );\r\n\r\n\t// init\r\n\r\n\tcolorBuffer.setClear( 0, 0, 0, 1 );\r\n\tdepthBuffer.setClear( 1 );\r\n\tstencilBuffer.setClear( 0 );\r\n\r\n\tenable( 2929 );\r\n\tdepthBuffer.setFunc( LessEqualDepth );\r\n\r\n\tsetFlipSided( false );\r\n\tsetCullFace( CullFaceBack );\r\n\tenable( 2884 );\r\n\r\n\tsetBlending( NoBlending );\r\n\r\n\t//\r\n\r\n\tfunction enable( id ) {\r\n\r\n\t\tif ( enabledCapabilities[ id ] !== true ) {\r\n\r\n\t\t\tgl.enable( id );\r\n\t\t\tenabledCapabilities[ id ] = true;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction disable( id ) {\r\n\r\n\t\tif ( enabledCapabilities[ id ] !== false ) {\r\n\r\n\t\t\tgl.disable( id );\r\n\t\t\tenabledCapabilities[ id ] = false;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction useProgram( program ) {\r\n\r\n\t\tif ( currentProgram !== program ) {\r\n\r\n\t\t\tgl.useProgram( program );\r\n\r\n\t\t\tcurrentProgram = program;\r\n\r\n\t\t\treturn true;\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\r\n\t}\r\n\r\n\tconst equationToGL = {\r\n\t\t[ AddEquation ]: 32774,\r\n\t\t[ SubtractEquation ]: 32778,\r\n\t\t[ ReverseSubtractEquation ]: 32779\r\n\t};\r\n\r\n\tif ( isWebGL2 ) {\r\n\r\n\t\tequationToGL[ MinEquation ] = 32775;\r\n\t\tequationToGL[ MaxEquation ] = 32776;\r\n\r\n\t} else {\r\n\r\n\t\tconst extension = extensions.get( 'EXT_blend_minmax' );\r\n\r\n\t\tif ( extension !== null ) {\r\n\r\n\t\t\tequationToGL[ MinEquation ] = extension.MIN_EXT;\r\n\t\t\tequationToGL[ MaxEquation ] = extension.MAX_EXT;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tconst factorToGL = {\r\n\t\t[ ZeroFactor ]: 0,\r\n\t\t[ OneFactor ]: 1,\r\n\t\t[ SrcColorFactor ]: 768,\r\n\t\t[ SrcAlphaFactor ]: 770,\r\n\t\t[ SrcAlphaSaturateFactor ]: 776,\r\n\t\t[ DstColorFactor ]: 774,\r\n\t\t[ DstAlphaFactor ]: 772,\r\n\t\t[ OneMinusSrcColorFactor ]: 769,\r\n\t\t[ OneMinusSrcAlphaFactor ]: 771,\r\n\t\t[ OneMinusDstColorFactor ]: 775,\r\n\t\t[ OneMinusDstAlphaFactor ]: 773\r\n\t};\r\n\r\n\tfunction setBlending( blending, blendEquation, blendSrc, blendDst, blendEquationAlpha, blendSrcAlpha, blendDstAlpha, premultipliedAlpha ) {\r\n\r\n\t\tif ( blending === NoBlending ) {\r\n\r\n\t\t\tif ( currentBlendingEnabled ) {\r\n\r\n\t\t\t\tdisable( 3042 );\r\n\t\t\t\tcurrentBlendingEnabled = false;\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( ! currentBlendingEnabled ) {\r\n\r\n\t\t\tenable( 3042 );\r\n\t\t\tcurrentBlendingEnabled = true;\r\n\r\n\t\t}\r\n\r\n\t\tif ( blending !== CustomBlending ) {\r\n\r\n\t\t\tif ( blending !== currentBlending || premultipliedAlpha !== currentPremultipledAlpha ) {\r\n\r\n\t\t\t\tif ( currentBlendEquation !== AddEquation || currentBlendEquationAlpha !== AddEquation ) {\r\n\r\n\t\t\t\t\tgl.blendEquation( 32774 );\r\n\r\n\t\t\t\t\tcurrentBlendEquation = AddEquation;\r\n\t\t\t\t\tcurrentBlendEquationAlpha = AddEquation;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( premultipliedAlpha ) {\r\n\r\n\t\t\t\t\tswitch ( blending ) {\r\n\r\n\t\t\t\t\t\tcase NormalBlending:\r\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 1, 771, 1, 771 );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase AdditiveBlending:\r\n\t\t\t\t\t\t\tgl.blendFunc( 1, 1 );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase SubtractiveBlending:\r\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 0, 769, 771 );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase MultiplyBlending:\r\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 0, 768, 0, 770 );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tswitch ( blending ) {\r\n\r\n\t\t\t\t\t\tcase NormalBlending:\r\n\t\t\t\t\t\t\tgl.blendFuncSeparate( 770, 771, 1, 771 );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase AdditiveBlending:\r\n\t\t\t\t\t\t\tgl.blendFunc( 770, 1 );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase SubtractiveBlending:\r\n\t\t\t\t\t\t\tgl.blendFunc( 0, 769 );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase MultiplyBlending:\r\n\t\t\t\t\t\t\tgl.blendFunc( 0, 768 );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tconsole.error( 'THREE.WebGLState: Invalid blending: ', blending );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentBlendSrc = null;\r\n\t\t\t\tcurrentBlendDst = null;\r\n\t\t\t\tcurrentBlendSrcAlpha = null;\r\n\t\t\t\tcurrentBlendDstAlpha = null;\r\n\r\n\t\t\t\tcurrentBlending = blending;\r\n\t\t\t\tcurrentPremultipledAlpha = premultipliedAlpha;\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\t// custom blending\r\n\r\n\t\tblendEquationAlpha = blendEquationAlpha || blendEquation;\r\n\t\tblendSrcAlpha = blendSrcAlpha || blendSrc;\r\n\t\tblendDstAlpha = blendDstAlpha || blendDst;\r\n\r\n\t\tif ( blendEquation !== currentBlendEquation || blendEquationAlpha !== currentBlendEquationAlpha ) {\r\n\r\n\t\t\tgl.blendEquationSeparate( equationToGL[ blendEquation ], equationToGL[ blendEquationAlpha ] );\r\n\r\n\t\t\tcurrentBlendEquation = blendEquation;\r\n\t\t\tcurrentBlendEquationAlpha = blendEquationAlpha;\r\n\r\n\t\t}\r\n\r\n\t\tif ( blendSrc !== currentBlendSrc || blendDst !== currentBlendDst || blendSrcAlpha !== currentBlendSrcAlpha || blendDstAlpha !== currentBlendDstAlpha ) {\r\n\r\n\t\t\tgl.blendFuncSeparate( factorToGL[ blendSrc ], factorToGL[ blendDst ], factorToGL[ blendSrcAlpha ], factorToGL[ blendDstAlpha ] );\r\n\r\n\t\t\tcurrentBlendSrc = blendSrc;\r\n\t\t\tcurrentBlendDst = blendDst;\r\n\t\t\tcurrentBlendSrcAlpha = blendSrcAlpha;\r\n\t\t\tcurrentBlendDstAlpha = blendDstAlpha;\r\n\r\n\t\t}\r\n\r\n\t\tcurrentBlending = blending;\r\n\t\tcurrentPremultipledAlpha = null;\r\n\r\n\t}\r\n\r\n\tfunction setMaterial( material, frontFaceCW ) {\r\n\r\n\t\tmaterial.side === DoubleSide\r\n\t\t\t? disable( 2884 )\r\n\t\t\t: enable( 2884 );\r\n\r\n\t\tlet flipSided = ( material.side === BackSide );\r\n\t\tif ( frontFaceCW ) flipSided = ! flipSided;\r\n\r\n\t\tsetFlipSided( flipSided );\r\n\r\n\t\t( material.blending === NormalBlending && material.transparent === false )\r\n\t\t\t? setBlending( NoBlending )\r\n\t\t\t: setBlending( material.blending, material.blendEquation, material.blendSrc, material.blendDst, material.blendEquationAlpha, material.blendSrcAlpha, material.blendDstAlpha, material.premultipliedAlpha );\r\n\r\n\t\tdepthBuffer.setFunc( material.depthFunc );\r\n\t\tdepthBuffer.setTest( material.depthTest );\r\n\t\tdepthBuffer.setMask( material.depthWrite );\r\n\t\tcolorBuffer.setMask( material.colorWrite );\r\n\r\n\t\tconst stencilWrite = material.stencilWrite;\r\n\t\tstencilBuffer.setTest( stencilWrite );\r\n\t\tif ( stencilWrite ) {\r\n\r\n\t\t\tstencilBuffer.setMask( material.stencilWriteMask );\r\n\t\t\tstencilBuffer.setFunc( material.stencilFunc, material.stencilRef, material.stencilFuncMask );\r\n\t\t\tstencilBuffer.setOp( material.stencilFail, material.stencilZFail, material.stencilZPass );\r\n\r\n\t\t}\r\n\r\n\t\tsetPolygonOffset( material.polygonOffset, material.polygonOffsetFactor, material.polygonOffsetUnits );\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tfunction setFlipSided( flipSided ) {\r\n\r\n\t\tif ( currentFlipSided !== flipSided ) {\r\n\r\n\t\t\tif ( flipSided ) {\r\n\r\n\t\t\t\tgl.frontFace( 2304 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tgl.frontFace( 2305 );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcurrentFlipSided = flipSided;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction setCullFace( cullFace ) {\r\n\r\n\t\tif ( cullFace !== CullFaceNone ) {\r\n\r\n\t\t\tenable( 2884 );\r\n\r\n\t\t\tif ( cullFace !== currentCullFace ) {\r\n\r\n\t\t\t\tif ( cullFace === CullFaceBack ) {\r\n\r\n\t\t\t\t\tgl.cullFace( 1029 );\r\n\r\n\t\t\t\t} else if ( cullFace === CullFaceFront ) {\r\n\r\n\t\t\t\t\tgl.cullFace( 1028 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tgl.cullFace( 1032 );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tdisable( 2884 );\r\n\r\n\t\t}\r\n\r\n\t\tcurrentCullFace = cullFace;\r\n\r\n\t}\r\n\r\n\tfunction setLineWidth( width ) {\r\n\r\n\t\tif ( width !== currentLineWidth ) {\r\n\r\n\t\t\tif ( lineWidthAvailable ) gl.lineWidth( width );\r\n\r\n\t\t\tcurrentLineWidth = width;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction setPolygonOffset( polygonOffset, factor, units ) {\r\n\r\n\t\tif ( polygonOffset ) {\r\n\r\n\t\t\tenable( 32823 );\r\n\r\n\t\t\tif ( currentPolygonOffsetFactor !== factor || currentPolygonOffsetUnits !== units ) {\r\n\r\n\t\t\t\tgl.polygonOffset( factor, units );\r\n\r\n\t\t\t\tcurrentPolygonOffsetFactor = factor;\r\n\t\t\t\tcurrentPolygonOffsetUnits = units;\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tdisable( 32823 );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction setScissorTest( scissorTest ) {\r\n\r\n\t\tif ( scissorTest ) {\r\n\r\n\t\t\tenable( 3089 );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tdisable( 3089 );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// texture\r\n\r\n\tfunction activeTexture( webglSlot ) {\r\n\r\n\t\tif ( webglSlot === undefined ) webglSlot = 33984 + maxTextures - 1;\r\n\r\n\t\tif ( currentTextureSlot !== webglSlot ) {\r\n\r\n\t\t\tgl.activeTexture( webglSlot );\r\n\t\t\tcurrentTextureSlot = webglSlot;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction bindTexture( webglType, webglTexture ) {\r\n\r\n\t\tif ( currentTextureSlot === null ) {\r\n\r\n\t\t\tactiveTexture();\r\n\r\n\t\t}\r\n\r\n\t\tlet boundTexture = currentBoundTextures[ currentTextureSlot ];\r\n\r\n\t\tif ( boundTexture === undefined ) {\r\n\r\n\t\t\tboundTexture = { type: undefined, texture: undefined };\r\n\t\t\tcurrentBoundTextures[ currentTextureSlot ] = boundTexture;\r\n\r\n\t\t}\r\n\r\n\t\tif ( boundTexture.type !== webglType || boundTexture.texture !== webglTexture ) {\r\n\r\n\t\t\tgl.bindTexture( webglType, webglTexture || emptyTextures[ webglType ] );\r\n\r\n\t\t\tboundTexture.type = webglType;\r\n\t\t\tboundTexture.texture = webglTexture;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction unbindTexture() {\r\n\r\n\t\tconst boundTexture = currentBoundTextures[ currentTextureSlot ];\r\n\r\n\t\tif ( boundTexture !== undefined && boundTexture.type !== undefined ) {\r\n\r\n\t\t\tgl.bindTexture( boundTexture.type, null );\r\n\r\n\t\t\tboundTexture.type = undefined;\r\n\t\t\tboundTexture.texture = undefined;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction compressedTexImage2D() {\r\n\r\n\t\ttry {\r\n\r\n\t\t\tgl.compressedTexImage2D.apply( gl, arguments );\r\n\r\n\t\t} catch ( error ) {\r\n\r\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction texImage2D() {\r\n\r\n\t\ttry {\r\n\r\n\t\t\tgl.texImage2D.apply( gl, arguments );\r\n\r\n\t\t} catch ( error ) {\r\n\r\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction texImage3D() {\r\n\r\n\t\ttry {\r\n\r\n\t\t\tgl.texImage3D.apply( gl, arguments );\r\n\r\n\t\t} catch ( error ) {\r\n\r\n\t\t\tconsole.error( 'THREE.WebGLState:', error );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tfunction scissor( scissor ) {\r\n\r\n\t\tif ( currentScissor.equals( scissor ) === false ) {\r\n\r\n\t\t\tgl.scissor( scissor.x, scissor.y, scissor.z, scissor.w );\r\n\t\t\tcurrentScissor.copy( scissor );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction viewport( viewport ) {\r\n\r\n\t\tif ( currentViewport.equals( viewport ) === false ) {\r\n\r\n\t\t\tgl.viewport( viewport.x, viewport.y, viewport.z, viewport.w );\r\n\t\t\tcurrentViewport.copy( viewport );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tfunction reset() {\r\n\r\n\t\tenabledCapabilities = {};\r\n\r\n\t\tcurrentTextureSlot = null;\r\n\t\tcurrentBoundTextures = {};\r\n\r\n\t\tcurrentProgram = null;\r\n\r\n\t\tcurrentBlendingEnabled = null;\r\n\t\tcurrentBlending = null;\r\n\t\tcurrentBlendEquation = null;\r\n\t\tcurrentBlendSrc = null;\r\n\t\tcurrentBlendDst = null;\r\n\t\tcurrentBlendEquationAlpha = null;\r\n\t\tcurrentBlendSrcAlpha = null;\r\n\t\tcurrentBlendDstAlpha = null;\r\n\t\tcurrentPremultipledAlpha = false;\r\n\r\n\t\tcurrentFlipSided = null;\r\n\t\tcurrentCullFace = null;\r\n\r\n\t\tcurrentLineWidth = null;\r\n\r\n\t\tcurrentPolygonOffsetFactor = null;\r\n\t\tcurrentPolygonOffsetUnits = null;\r\n\r\n\t\tcolorBuffer.reset();\r\n\t\tdepthBuffer.reset();\r\n\t\tstencilBuffer.reset();\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tbuffers: {\r\n\t\t\tcolor: colorBuffer,\r\n\t\t\tdepth: depthBuffer,\r\n\t\t\tstencil: stencilBuffer\r\n\t\t},\r\n\r\n\t\tenable: enable,\r\n\t\tdisable: disable,\r\n\r\n\t\tuseProgram: useProgram,\r\n\r\n\t\tsetBlending: setBlending,\r\n\t\tsetMaterial: setMaterial,\r\n\r\n\t\tsetFlipSided: setFlipSided,\r\n\t\tsetCullFace: setCullFace,\r\n\r\n\t\tsetLineWidth: setLineWidth,\r\n\t\tsetPolygonOffset: setPolygonOffset,\r\n\r\n\t\tsetScissorTest: setScissorTest,\r\n\r\n\t\tactiveTexture: activeTexture,\r\n\t\tbindTexture: bindTexture,\r\n\t\tunbindTexture: unbindTexture,\r\n\t\tcompressedTexImage2D: compressedTexImage2D,\r\n\t\ttexImage2D: texImage2D,\r\n\t\ttexImage3D: texImage3D,\r\n\r\n\t\tscissor: scissor,\r\n\t\tviewport: viewport,\r\n\r\n\t\treset: reset\r\n\r\n\t};\r\n\r\n}\r\n\r\nfunction WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info ) {\r\n\r\n\tconst isWebGL2 = capabilities.isWebGL2;\r\n\tconst maxTextures = capabilities.maxTextures;\r\n\tconst maxCubemapSize = capabilities.maxCubemapSize;\r\n\tconst maxTextureSize = capabilities.maxTextureSize;\r\n\tconst maxSamples = capabilities.maxSamples;\r\n\r\n\tconst _videoTextures = new WeakMap();\r\n\tlet _canvas;\r\n\r\n\t// cordova iOS (as of 5.0) still uses UIWebView, which provides OffscreenCanvas,\r\n\t// also OffscreenCanvas.getContext(\"webgl\"), but not OffscreenCanvas.getContext(\"2d\")!\r\n\t// Some implementations may only implement OffscreenCanvas partially (e.g. lacking 2d).\r\n\r\n\tlet useOffscreenCanvas = false;\r\n\r\n\ttry {\r\n\r\n\t\tuseOffscreenCanvas = typeof OffscreenCanvas !== 'undefined'\r\n\t\t\t&& ( new OffscreenCanvas( 1, 1 ).getContext( '2d' ) ) !== null;\r\n\r\n\t} catch ( err ) {\r\n\r\n\t\t// Ignore any errors\r\n\r\n\t}\r\n\r\n\tfunction createCanvas( width, height ) {\r\n\r\n\t\t// Use OffscreenCanvas when available. Specially needed in web workers\r\n\r\n\t\treturn useOffscreenCanvas ?\r\n\t\t\tnew OffscreenCanvas( width, height ) :\r\n\t\t\tdocument.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\r\n\r\n\t}\r\n\r\n\tfunction resizeImage( image, needsPowerOfTwo, needsNewCanvas, maxSize ) {\r\n\r\n\t\tlet scale = 1;\r\n\r\n\t\t// handle case if texture exceeds max size\r\n\r\n\t\tif ( image.width > maxSize || image.height > maxSize ) {\r\n\r\n\t\t\tscale = maxSize / Math.max( image.width, image.height );\r\n\r\n\t\t}\r\n\r\n\t\t// only perform resize if necessary\r\n\r\n\t\tif ( scale < 1 || needsPowerOfTwo === true ) {\r\n\r\n\t\t\t// only perform resize for certain image types\r\n\r\n\t\t\tif ( ( typeof HTMLImageElement !== 'undefined' && image instanceof HTMLImageElement ) ||\r\n\t\t\t\t( typeof HTMLCanvasElement !== 'undefined' && image instanceof HTMLCanvasElement ) ||\r\n\t\t\t\t( typeof ImageBitmap !== 'undefined' && image instanceof ImageBitmap ) ) {\r\n\r\n\t\t\t\tconst floor = needsPowerOfTwo ? MathUtils.floorPowerOfTwo : Math.floor;\r\n\r\n\t\t\t\tconst width = floor( scale * image.width );\r\n\t\t\t\tconst height = floor( scale * image.height );\r\n\r\n\t\t\t\tif ( _canvas === undefined ) _canvas = createCanvas( width, height );\r\n\r\n\t\t\t\t// cube textures can't reuse the same canvas\r\n\r\n\t\t\t\tconst canvas = needsNewCanvas ? createCanvas( width, height ) : _canvas;\r\n\r\n\t\t\t\tcanvas.width = width;\r\n\t\t\t\tcanvas.height = height;\r\n\r\n\t\t\t\tconst context = canvas.getContext( '2d' );\r\n\t\t\t\tcontext.drawImage( image, 0, 0, width, height );\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture has been resized from (' + image.width + 'x' + image.height + ') to (' + width + 'x' + height + ').' );\r\n\r\n\t\t\t\treturn canvas;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif ( 'data' in image ) {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Image in DataTexture is too big (' + image.width + 'x' + image.height + ').' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn image;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn image;\r\n\r\n\t}\r\n\r\n\tfunction isPowerOfTwo( image ) {\r\n\r\n\t\treturn MathUtils.isPowerOfTwo( image.width ) && MathUtils.isPowerOfTwo( image.height );\r\n\r\n\t}\r\n\r\n\tfunction textureNeedsPowerOfTwo( texture ) {\r\n\r\n\t\tif ( isWebGL2 ) return false;\r\n\r\n\t\treturn ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) ||\r\n\t\t\t( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter );\r\n\r\n\t}\r\n\r\n\tfunction textureNeedsGenerateMipmaps( texture, supportsMips ) {\r\n\r\n\t\treturn texture.generateMipmaps && supportsMips &&\r\n\t\t\ttexture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter;\r\n\r\n\t}\r\n\r\n\tfunction generateMipmap( target, texture, width, height ) {\r\n\r\n\t\t_gl.generateMipmap( target );\r\n\r\n\t\tconst textureProperties = properties.get( texture );\r\n\r\n\t\t// Note: Math.log( x ) * Math.LOG2E used instead of Math.log2( x ) which is not supported by IE11\r\n\t\ttextureProperties.__maxMipLevel = Math.log( Math.max( width, height ) ) * Math.LOG2E;\r\n\r\n\t}\r\n\r\n\tfunction getInternalFormat( internalFormatName, glFormat, glType ) {\r\n\r\n\t\tif ( isWebGL2 === false ) return glFormat;\r\n\r\n\t\tif ( internalFormatName !== null ) {\r\n\r\n\t\t\tif ( _gl[ internalFormatName ] !== undefined ) return _gl[ internalFormatName ];\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format \\'' + internalFormatName + '\\'' );\r\n\r\n\t\t}\r\n\r\n\t\tlet internalFormat = glFormat;\r\n\r\n\t\tif ( glFormat === 6403 ) {\r\n\r\n\t\t\tif ( glType === 5126 ) internalFormat = 33326;\r\n\t\t\tif ( glType === 5131 ) internalFormat = 33325;\r\n\t\t\tif ( glType === 5121 ) internalFormat = 33321;\r\n\r\n\t\t}\r\n\r\n\t\tif ( glFormat === 6407 ) {\r\n\r\n\t\t\tif ( glType === 5126 ) internalFormat = 34837;\r\n\t\t\tif ( glType === 5131 ) internalFormat = 34843;\r\n\t\t\tif ( glType === 5121 ) internalFormat = 32849;\r\n\r\n\t\t}\r\n\r\n\t\tif ( glFormat === 6408 ) {\r\n\r\n\t\t\tif ( glType === 5126 ) internalFormat = 34836;\r\n\t\t\tif ( glType === 5131 ) internalFormat = 34842;\r\n\t\t\tif ( glType === 5121 ) internalFormat = 32856;\r\n\r\n\t\t}\r\n\r\n\t\tif ( internalFormat === 33325 || internalFormat === 33326 ||\r\n\t\t\tinternalFormat === 34842 || internalFormat === 34836 ) {\r\n\r\n\t\t\textensions.get( 'EXT_color_buffer_float' );\r\n\r\n\t\t}\r\n\r\n\t\treturn internalFormat;\r\n\r\n\t}\r\n\r\n\t// Fallback filters for non-power-of-2 textures\r\n\r\n\tfunction filterFallback( f ) {\r\n\r\n\t\tif ( f === NearestFilter || f === NearestMipmapNearestFilter || f === NearestMipmapLinearFilter ) {\r\n\r\n\t\t\treturn 9728;\r\n\r\n\t\t}\r\n\r\n\t\treturn 9729;\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tfunction onTextureDispose( event ) {\r\n\r\n\t\tconst texture = event.target;\r\n\r\n\t\ttexture.removeEventListener( 'dispose', onTextureDispose );\r\n\r\n\t\tdeallocateTexture( texture );\r\n\r\n\t\tif ( texture.isVideoTexture ) {\r\n\r\n\t\t\t_videoTextures.delete( texture );\r\n\r\n\t\t}\r\n\r\n\t\tinfo.memory.textures --;\r\n\r\n\t}\r\n\r\n\tfunction onRenderTargetDispose( event ) {\r\n\r\n\t\tconst renderTarget = event.target;\r\n\r\n\t\trenderTarget.removeEventListener( 'dispose', onRenderTargetDispose );\r\n\r\n\t\tdeallocateRenderTarget( renderTarget );\r\n\r\n\t\tinfo.memory.textures --;\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tfunction deallocateTexture( texture ) {\r\n\r\n\t\tconst textureProperties = properties.get( texture );\r\n\r\n\t\tif ( textureProperties.__webglInit === undefined ) return;\r\n\r\n\t\t_gl.deleteTexture( textureProperties.__webglTexture );\r\n\r\n\t\tproperties.remove( texture );\r\n\r\n\t}\r\n\r\n\tfunction deallocateRenderTarget( renderTarget ) {\r\n\r\n\t\tconst renderTargetProperties = properties.get( renderTarget );\r\n\t\tconst textureProperties = properties.get( renderTarget.texture );\r\n\r\n\t\tif ( ! renderTarget ) return;\r\n\r\n\t\tif ( textureProperties.__webglTexture !== undefined ) {\r\n\r\n\t\t\t_gl.deleteTexture( textureProperties.__webglTexture );\r\n\r\n\t\t}\r\n\r\n\t\tif ( renderTarget.depthTexture ) {\r\n\r\n\t\t\trenderTarget.depthTexture.dispose();\r\n\r\n\t\t}\r\n\r\n\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\r\n\r\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer[ i ] );\r\n\t\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer[ i ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_gl.deleteFramebuffer( renderTargetProperties.__webglFramebuffer );\r\n\t\t\tif ( renderTargetProperties.__webglDepthbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthbuffer );\r\n\t\t\tif ( renderTargetProperties.__webglMultisampledFramebuffer ) _gl.deleteFramebuffer( renderTargetProperties.__webglMultisampledFramebuffer );\r\n\t\t\tif ( renderTargetProperties.__webglColorRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglColorRenderbuffer );\r\n\t\t\tif ( renderTargetProperties.__webglDepthRenderbuffer ) _gl.deleteRenderbuffer( renderTargetProperties.__webglDepthRenderbuffer );\r\n\r\n\t\t}\r\n\r\n\t\tproperties.remove( renderTarget.texture );\r\n\t\tproperties.remove( renderTarget );\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tlet textureUnits = 0;\r\n\r\n\tfunction resetTextureUnits() {\r\n\r\n\t\ttextureUnits = 0;\r\n\r\n\t}\r\n\r\n\tfunction allocateTextureUnit() {\r\n\r\n\t\tconst textureUnit = textureUnits;\r\n\r\n\t\tif ( textureUnit >= maxTextures ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLTextures: Trying to use ' + textureUnit + ' texture units while this GPU supports only ' + maxTextures );\r\n\r\n\t\t}\r\n\r\n\t\ttextureUnits += 1;\r\n\r\n\t\treturn textureUnit;\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tfunction setTexture2D( texture, slot ) {\r\n\r\n\t\tconst textureProperties = properties.get( texture );\r\n\r\n\t\tif ( texture.isVideoTexture ) updateVideoTexture( texture );\r\n\r\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\r\n\r\n\t\t\tconst image = texture.image;\r\n\r\n\t\t\tif ( image === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is undefined' );\r\n\r\n\t\t\t} else if ( image.complete === false ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture marked for update but image is incomplete' );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tuploadTexture( textureProperties, texture, slot );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tstate.activeTexture( 33984 + slot );\r\n\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\r\n\r\n\t}\r\n\r\n\tfunction setTexture2DArray( texture, slot ) {\r\n\r\n\t\tconst textureProperties = properties.get( texture );\r\n\r\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\r\n\r\n\t\t\tuploadTexture( textureProperties, texture, slot );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tstate.activeTexture( 33984 + slot );\r\n\t\tstate.bindTexture( 35866, textureProperties.__webglTexture );\r\n\r\n\t}\r\n\r\n\tfunction setTexture3D( texture, slot ) {\r\n\r\n\t\tconst textureProperties = properties.get( texture );\r\n\r\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\r\n\r\n\t\t\tuploadTexture( textureProperties, texture, slot );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tstate.activeTexture( 33984 + slot );\r\n\t\tstate.bindTexture( 32879, textureProperties.__webglTexture );\r\n\r\n\t}\r\n\r\n\tfunction setTextureCube( texture, slot ) {\r\n\r\n\t\tconst textureProperties = properties.get( texture );\r\n\r\n\t\tif ( texture.version > 0 && textureProperties.__version !== texture.version ) {\r\n\r\n\t\t\tuploadCubeTexture( textureProperties, texture, slot );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tstate.activeTexture( 33984 + slot );\r\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\r\n\r\n\t}\r\n\r\n\tconst wrappingToGL = {\r\n\t\t[ RepeatWrapping ]: 10497,\r\n\t\t[ ClampToEdgeWrapping ]: 33071,\r\n\t\t[ MirroredRepeatWrapping ]: 33648\r\n\t};\r\n\r\n\tconst filterToGL = {\r\n\t\t[ NearestFilter ]: 9728,\r\n\t\t[ NearestMipmapNearestFilter ]: 9984,\r\n\t\t[ NearestMipmapLinearFilter ]: 9986,\r\n\r\n\t\t[ LinearFilter ]: 9729,\r\n\t\t[ LinearMipmapNearestFilter ]: 9985,\r\n\t\t[ LinearMipmapLinearFilter ]: 9987\r\n\t};\r\n\r\n\tfunction setTextureParameters( textureType, texture, supportsMips ) {\r\n\r\n\t\tif ( supportsMips ) {\r\n\r\n\t\t\t_gl.texParameteri( textureType, 10242, wrappingToGL[ texture.wrapS ] );\r\n\t\t\t_gl.texParameteri( textureType, 10243, wrappingToGL[ texture.wrapT ] );\r\n\r\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\r\n\r\n\t\t\t\t_gl.texParameteri( textureType, 32882, wrappingToGL[ texture.wrapR ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_gl.texParameteri( textureType, 10240, filterToGL[ texture.magFilter ] );\r\n\t\t\t_gl.texParameteri( textureType, 10241, filterToGL[ texture.minFilter ] );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_gl.texParameteri( textureType, 10242, 33071 );\r\n\t\t\t_gl.texParameteri( textureType, 10243, 33071 );\r\n\r\n\t\t\tif ( textureType === 32879 || textureType === 35866 ) {\r\n\r\n\t\t\t\t_gl.texParameteri( textureType, 32882, 33071 );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( texture.wrapS !== ClampToEdgeWrapping || texture.wrapT !== ClampToEdgeWrapping ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.wrapS and Texture.wrapT should be set to THREE.ClampToEdgeWrapping.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_gl.texParameteri( textureType, 10240, filterFallback( texture.magFilter ) );\r\n\t\t\t_gl.texParameteri( textureType, 10241, filterFallback( texture.minFilter ) );\r\n\r\n\t\t\tif ( texture.minFilter !== NearestFilter && texture.minFilter !== LinearFilter ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Texture is not power of two. Texture.minFilter should be set to THREE.NearestFilter or THREE.LinearFilter.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst extension = extensions.get( 'EXT_texture_filter_anisotropic' );\r\n\r\n\t\tif ( extension ) {\r\n\r\n\t\t\tif ( texture.type === FloatType && extensions.get( 'OES_texture_float_linear' ) === null ) return;\r\n\t\t\tif ( texture.type === HalfFloatType && ( isWebGL2 || extensions.get( 'OES_texture_half_float_linear' ) ) === null ) return;\r\n\r\n\t\t\tif ( texture.anisotropy > 1 || properties.get( texture ).__currentAnisotropy ) {\r\n\r\n\t\t\t\t_gl.texParameterf( textureType, extension.TEXTURE_MAX_ANISOTROPY_EXT, Math.min( texture.anisotropy, capabilities.getMaxAnisotropy() ) );\r\n\t\t\t\tproperties.get( texture ).__currentAnisotropy = texture.anisotropy;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction initTexture( textureProperties, texture ) {\r\n\r\n\t\tif ( textureProperties.__webglInit === undefined ) {\r\n\r\n\t\t\ttextureProperties.__webglInit = true;\r\n\r\n\t\t\ttexture.addEventListener( 'dispose', onTextureDispose );\r\n\r\n\t\t\ttextureProperties.__webglTexture = _gl.createTexture();\r\n\r\n\t\t\tinfo.memory.textures ++;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction uploadTexture( textureProperties, texture, slot ) {\r\n\r\n\t\tlet textureType = 3553;\r\n\r\n\t\tif ( texture.isDataTexture2DArray ) textureType = 35866;\r\n\t\tif ( texture.isDataTexture3D ) textureType = 32879;\r\n\r\n\t\tinitTexture( textureProperties, texture );\r\n\r\n\t\tstate.activeTexture( 33984 + slot );\r\n\t\tstate.bindTexture( textureType, textureProperties.__webglTexture );\r\n\r\n\t\t_gl.pixelStorei( 37440, texture.flipY );\r\n\t\t_gl.pixelStorei( 37441, texture.premultiplyAlpha );\r\n\t\t_gl.pixelStorei( 3317, texture.unpackAlignment );\r\n\r\n\t\tconst needsPowerOfTwo = textureNeedsPowerOfTwo( texture ) && isPowerOfTwo( texture.image ) === false;\r\n\t\tconst image = resizeImage( texture.image, needsPowerOfTwo, false, maxTextureSize );\r\n\r\n\t\tconst supportsMips = isPowerOfTwo( image ) || isWebGL2,\r\n\t\t\tglFormat = utils.convert( texture.format );\r\n\r\n\t\tlet glType = utils.convert( texture.type ),\r\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\r\n\r\n\t\tsetTextureParameters( textureType, texture, supportsMips );\r\n\r\n\t\tlet mipmap;\r\n\t\tconst mipmaps = texture.mipmaps;\r\n\r\n\t\tif ( texture.isDepthTexture ) {\r\n\r\n\t\t\t// populate depth texture with dummy data\r\n\r\n\t\t\tglInternalFormat = 6402;\r\n\r\n\t\t\tif ( isWebGL2 ) {\r\n\r\n\t\t\t\tif ( texture.type === FloatType ) {\r\n\r\n\t\t\t\t\tglInternalFormat = 36012;\r\n\r\n\t\t\t\t} else if ( texture.type === UnsignedIntType ) {\r\n\r\n\t\t\t\t\tglInternalFormat = 33190;\r\n\r\n\t\t\t\t} else if ( texture.type === UnsignedInt248Type ) {\r\n\r\n\t\t\t\t\tglInternalFormat = 35056;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tglInternalFormat = 33189; // WebGL2 requires sized internalformat for glTexImage2D\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif ( texture.type === FloatType ) {\r\n\r\n\t\t\t\t\tconsole.error( 'WebGLRenderer: Floating point depth texture requires WebGL2.' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// validation checks for WebGL 1\r\n\r\n\t\t\tif ( texture.format === DepthFormat && glInternalFormat === 6402 ) {\r\n\r\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\r\n\t\t\t\t// DEPTH_COMPONENT and type is not UNSIGNED_SHORT or UNSIGNED_INT\r\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\r\n\t\t\t\tif ( texture.type !== UnsignedShortType && texture.type !== UnsignedIntType ) {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture.' );\r\n\r\n\t\t\t\t\ttexture.type = UnsignedShortType;\r\n\t\t\t\t\tglType = utils.convert( texture.type );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( texture.format === DepthStencilFormat && glInternalFormat === 6402 ) {\r\n\r\n\t\t\t\t// Depth stencil textures need the DEPTH_STENCIL internal format\r\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\r\n\t\t\t\tglInternalFormat = 34041;\r\n\r\n\t\t\t\t// The error INVALID_OPERATION is generated by texImage2D if format and internalformat are\r\n\t\t\t\t// DEPTH_STENCIL and type is not UNSIGNED_INT_24_8_WEBGL.\r\n\t\t\t\t// (https://www.khronos.org/registry/webgl/extensions/WEBGL_depth_texture/)\r\n\t\t\t\tif ( texture.type !== UnsignedInt248Type ) {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture.' );\r\n\r\n\t\t\t\t\ttexture.type = UnsignedInt248Type;\r\n\t\t\t\t\tglType = utils.convert( texture.type );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//\r\n\r\n\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, null );\r\n\r\n\t\t} else if ( texture.isDataTexture ) {\r\n\r\n\t\t\t// use manually created mipmaps if available\r\n\t\t\t// if there are no manual mipmaps\r\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\r\n\r\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\r\n\r\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tmipmap = mipmaps[ i ];\r\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttexture.generateMipmaps = false;\r\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, image.width, image.height, 0, glFormat, glType, image.data );\r\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( texture.isCompressedTexture ) {\r\n\r\n\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tmipmap = mipmaps[ i ];\r\n\r\n\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\r\n\r\n\t\t\t\t\tif ( glFormat !== null ) {\r\n\r\n\t\t\t\t\t\tstate.compressedTexImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()' );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\r\n\r\n\t\t} else if ( texture.isDataTexture2DArray ) {\r\n\r\n\t\t\tstate.texImage3D( 35866, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\r\n\t\t\ttextureProperties.__maxMipLevel = 0;\r\n\r\n\t\t} else if ( texture.isDataTexture3D ) {\r\n\r\n\t\t\tstate.texImage3D( 32879, 0, glInternalFormat, image.width, image.height, image.depth, 0, glFormat, glType, image.data );\r\n\t\t\ttextureProperties.__maxMipLevel = 0;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// regular Texture (image, video, canvas)\r\n\r\n\t\t\t// use manually created mipmaps if available\r\n\t\t\t// if there are no manual mipmaps\r\n\t\t\t// set 0 level mipmap and then use GL to generate other mipmap levels\r\n\r\n\t\t\tif ( mipmaps.length > 0 && supportsMips ) {\r\n\r\n\t\t\t\tfor ( let i = 0, il = mipmaps.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tmipmap = mipmaps[ i ];\r\n\t\t\t\t\tstate.texImage2D( 3553, i, glInternalFormat, glFormat, glType, mipmap );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttexture.generateMipmaps = false;\r\n\t\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tstate.texImage2D( 3553, 0, glInternalFormat, glFormat, glType, image );\r\n\t\t\t\ttextureProperties.__maxMipLevel = 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\r\n\r\n\t\t\tgenerateMipmap( textureType, texture, image.width, image.height );\r\n\r\n\t\t}\r\n\r\n\t\ttextureProperties.__version = texture.version;\r\n\r\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\r\n\r\n\t}\r\n\r\n\tfunction uploadCubeTexture( textureProperties, texture, slot ) {\r\n\r\n\t\tif ( texture.image.length !== 6 ) return;\r\n\r\n\t\tinitTexture( textureProperties, texture );\r\n\r\n\t\tstate.activeTexture( 33984 + slot );\r\n\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\r\n\r\n\t\t_gl.pixelStorei( 37440, texture.flipY );\r\n\r\n\t\tconst isCompressed = ( texture && ( texture.isCompressedTexture || texture.image[ 0 ].isCompressedTexture ) );\r\n\t\tconst isDataTexture = ( texture.image[ 0 ] && texture.image[ 0 ].isDataTexture );\r\n\r\n\t\tconst cubeImage = [];\r\n\r\n\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\tif ( ! isCompressed && ! isDataTexture ) {\r\n\r\n\t\t\t\tcubeImage[ i ] = resizeImage( texture.image[ i ], false, true, maxCubemapSize );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tcubeImage[ i ] = isDataTexture ? texture.image[ i ].image : texture.image[ i ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst image = cubeImage[ 0 ],\r\n\t\t\tsupportsMips = isPowerOfTwo( image ) || isWebGL2,\r\n\t\t\tglFormat = utils.convert( texture.format ),\r\n\t\t\tglType = utils.convert( texture.type ),\r\n\t\t\tglInternalFormat = getInternalFormat( texture.internalFormat, glFormat, glType );\r\n\r\n\t\tsetTextureParameters( 34067, texture, supportsMips );\r\n\r\n\t\tlet mipmaps;\r\n\r\n\t\tif ( isCompressed ) {\r\n\r\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\t\tmipmaps = cubeImage[ i ].mipmaps;\r\n\r\n\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\r\n\r\n\t\t\t\t\tconst mipmap = mipmaps[ j ];\r\n\r\n\t\t\t\t\tif ( texture.format !== RGBAFormat && texture.format !== RGBFormat ) {\r\n\r\n\t\t\t\t\t\tif ( glFormat !== null ) {\r\n\r\n\t\t\t\t\t\t\tstate.compressedTexImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, mipmap.data );\r\n\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()' );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j, glInternalFormat, mipmap.width, mipmap.height, 0, glFormat, glType, mipmap.data );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length - 1;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tmipmaps = texture.mipmaps;\r\n\r\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\t\tif ( isDataTexture ) {\r\n\r\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, cubeImage[ i ].width, cubeImage[ i ].height, 0, glFormat, glType, cubeImage[ i ].data );\r\n\r\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\r\n\r\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\r\n\t\t\t\t\t\tconst mipmapImage = mipmap.image[ i ].image;\r\n\r\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, mipmapImage.width, mipmapImage.height, 0, glFormat, glType, mipmapImage.data );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tstate.texImage2D( 34069 + i, 0, glInternalFormat, glFormat, glType, cubeImage[ i ] );\r\n\r\n\t\t\t\t\tfor ( let j = 0; j < mipmaps.length; j ++ ) {\r\n\r\n\t\t\t\t\t\tconst mipmap = mipmaps[ j ];\r\n\r\n\t\t\t\t\t\tstate.texImage2D( 34069 + i, j + 1, glInternalFormat, glFormat, glType, mipmap.image[ i ] );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttextureProperties.__maxMipLevel = mipmaps.length;\r\n\r\n\t\t}\r\n\r\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\r\n\r\n\t\t\t// We assume images for cube map have the same size.\r\n\t\t\tgenerateMipmap( 34067, texture, image.width, image.height );\r\n\r\n\t\t}\r\n\r\n\t\ttextureProperties.__version = texture.version;\r\n\r\n\t\tif ( texture.onUpdate ) texture.onUpdate( texture );\r\n\r\n\t}\r\n\r\n\t// Render targets\r\n\r\n\t// Setup storage for target texture and bind it to correct framebuffer\r\n\tfunction setupFrameBufferTexture( framebuffer, renderTarget, attachment, textureTarget ) {\r\n\r\n\t\tconst glFormat = utils.convert( renderTarget.texture.format );\r\n\t\tconst glType = utils.convert( renderTarget.texture.type );\r\n\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\r\n\t\tstate.texImage2D( textureTarget, 0, glInternalFormat, renderTarget.width, renderTarget.height, 0, glFormat, glType, null );\r\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\r\n\t\t_gl.framebufferTexture2D( 36160, attachment, textureTarget, properties.get( renderTarget.texture ).__webglTexture, 0 );\r\n\t\t_gl.bindFramebuffer( 36160, null );\r\n\r\n\t}\r\n\r\n\t// Setup storage for internal depth/stencil buffers and bind to correct framebuffer\r\n\tfunction setupRenderBufferStorage( renderbuffer, renderTarget, isMultisample ) {\r\n\r\n\t\t_gl.bindRenderbuffer( 36161, renderbuffer );\r\n\r\n\t\tif ( renderTarget.depthBuffer && ! renderTarget.stencilBuffer ) {\r\n\r\n\t\t\tlet glInternalFormat = 33189;\r\n\r\n\t\t\tif ( isMultisample ) {\r\n\r\n\t\t\t\tconst depthTexture = renderTarget.depthTexture;\r\n\r\n\t\t\t\tif ( depthTexture && depthTexture.isDepthTexture ) {\r\n\r\n\t\t\t\t\tif ( depthTexture.type === FloatType ) {\r\n\r\n\t\t\t\t\t\tglInternalFormat = 36012;\r\n\r\n\t\t\t\t\t} else if ( depthTexture.type === UnsignedIntType ) {\r\n\r\n\t\t\t\t\t\tglInternalFormat = 33190;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\r\n\r\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_gl.framebufferRenderbuffer( 36160, 36096, 36161, renderbuffer );\r\n\r\n\t\t} else if ( renderTarget.depthBuffer && renderTarget.stencilBuffer ) {\r\n\r\n\t\t\tif ( isMultisample ) {\r\n\r\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\r\n\r\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, 35056, renderTarget.width, renderTarget.height );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t_gl.renderbufferStorage( 36161, 34041, renderTarget.width, renderTarget.height );\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\t_gl.framebufferRenderbuffer( 36160, 33306, 36161, renderbuffer );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\r\n\t\t\tconst glType = utils.convert( renderTarget.texture.type );\r\n\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\r\n\r\n\t\t\tif ( isMultisample ) {\r\n\r\n\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\r\n\r\n\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t_gl.renderbufferStorage( 36161, glInternalFormat, renderTarget.width, renderTarget.height );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t_gl.bindRenderbuffer( 36161, null );\r\n\r\n\t}\r\n\r\n\t// Setup resources for a Depth Texture for a FBO (needs an extension)\r\n\tfunction setupDepthTexture( framebuffer, renderTarget ) {\r\n\r\n\t\tconst isCube = ( renderTarget && renderTarget.isWebGLCubeRenderTarget );\r\n\t\tif ( isCube ) throw new Error( 'Depth Texture with cube render targets is not supported' );\r\n\r\n\t\t_gl.bindFramebuffer( 36160, framebuffer );\r\n\r\n\t\tif ( ! ( renderTarget.depthTexture && renderTarget.depthTexture.isDepthTexture ) ) {\r\n\r\n\t\t\tthrow new Error( 'renderTarget.depthTexture must be an instance of THREE.DepthTexture' );\r\n\r\n\t\t}\r\n\r\n\t\t// upload an empty depth texture with framebuffer size\r\n\t\tif ( ! properties.get( renderTarget.depthTexture ).__webglTexture ||\r\n\t\t\t\trenderTarget.depthTexture.image.width !== renderTarget.width ||\r\n\t\t\t\trenderTarget.depthTexture.image.height !== renderTarget.height ) {\r\n\r\n\t\t\trenderTarget.depthTexture.image.width = renderTarget.width;\r\n\t\t\trenderTarget.depthTexture.image.height = renderTarget.height;\r\n\t\t\trenderTarget.depthTexture.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t\tsetTexture2D( renderTarget.depthTexture, 0 );\r\n\r\n\t\tconst webglDepthTexture = properties.get( renderTarget.depthTexture ).__webglTexture;\r\n\r\n\t\tif ( renderTarget.depthTexture.format === DepthFormat ) {\r\n\r\n\t\t\t_gl.framebufferTexture2D( 36160, 36096, 3553, webglDepthTexture, 0 );\r\n\r\n\t\t} else if ( renderTarget.depthTexture.format === DepthStencilFormat ) {\r\n\r\n\t\t\t_gl.framebufferTexture2D( 36160, 33306, 3553, webglDepthTexture, 0 );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthrow new Error( 'Unknown depthTexture format' );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// Setup GL resources for a non-texture depth buffer\r\n\tfunction setupDepthRenderbuffer( renderTarget ) {\r\n\r\n\t\tconst renderTargetProperties = properties.get( renderTarget );\r\n\r\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\r\n\r\n\t\tif ( renderTarget.depthTexture ) {\r\n\r\n\t\t\tif ( isCube ) throw new Error( 'target.depthTexture not supported in Cube render targets' );\r\n\r\n\t\t\tsetupDepthTexture( renderTargetProperties.__webglFramebuffer, renderTarget );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( isCube ) {\r\n\r\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = [];\r\n\r\n\t\t\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer[ i ] );\r\n\t\t\t\t\trenderTargetProperties.__webglDepthbuffer[ i ] = _gl.createRenderbuffer();\r\n\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer[ i ], renderTarget, false );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglFramebuffer );\r\n\t\t\t\trenderTargetProperties.__webglDepthbuffer = _gl.createRenderbuffer();\r\n\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthbuffer, renderTarget, false );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t_gl.bindFramebuffer( 36160, null );\r\n\r\n\t}\r\n\r\n\t// Set up GL resources for the render target\r\n\tfunction setupRenderTarget( renderTarget ) {\r\n\r\n\t\tconst renderTargetProperties = properties.get( renderTarget );\r\n\t\tconst textureProperties = properties.get( renderTarget.texture );\r\n\r\n\t\trenderTarget.addEventListener( 'dispose', onRenderTargetDispose );\r\n\r\n\t\ttextureProperties.__webglTexture = _gl.createTexture();\r\n\r\n\t\tinfo.memory.textures ++;\r\n\r\n\t\tconst isCube = ( renderTarget.isWebGLCubeRenderTarget === true );\r\n\t\tconst isMultisample = ( renderTarget.isWebGLMultisampleRenderTarget === true );\r\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\r\n\r\n\t\t// Handles WebGL2 RGBFormat fallback - #18858\r\n\r\n\t\tif ( isWebGL2 && renderTarget.texture.format === RGBFormat && ( renderTarget.texture.type === FloatType || renderTarget.texture.type === HalfFloatType ) ) {\r\n\r\n\t\t\trenderTarget.texture.format = RGBAFormat;\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Rendering to textures with RGB format is not supported. Using RGBA format instead.' );\r\n\r\n\t\t}\r\n\r\n\t\t// Setup framebuffer\r\n\r\n\t\tif ( isCube ) {\r\n\r\n\t\t\trenderTargetProperties.__webglFramebuffer = [];\r\n\r\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\t\trenderTargetProperties.__webglFramebuffer[ i ] = _gl.createFramebuffer();\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\trenderTargetProperties.__webglFramebuffer = _gl.createFramebuffer();\r\n\r\n\t\t\tif ( isMultisample ) {\r\n\r\n\t\t\t\tif ( isWebGL2 ) {\r\n\r\n\t\t\t\t\trenderTargetProperties.__webglMultisampledFramebuffer = _gl.createFramebuffer();\r\n\t\t\t\t\trenderTargetProperties.__webglColorRenderbuffer = _gl.createRenderbuffer();\r\n\r\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, renderTargetProperties.__webglColorRenderbuffer );\r\n\r\n\t\t\t\t\tconst glFormat = utils.convert( renderTarget.texture.format );\r\n\t\t\t\t\tconst glType = utils.convert( renderTarget.texture.type );\r\n\t\t\t\t\tconst glInternalFormat = getInternalFormat( renderTarget.texture.internalFormat, glFormat, glType );\r\n\t\t\t\t\tconst samples = getRenderTargetSamples( renderTarget );\r\n\t\t\t\t\t_gl.renderbufferStorageMultisample( 36161, samples, glInternalFormat, renderTarget.width, renderTarget.height );\r\n\r\n\t\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer );\r\n\t\t\t\t\t_gl.framebufferRenderbuffer( 36160, 36064, 36161, renderTargetProperties.__webglColorRenderbuffer );\r\n\t\t\t\t\t_gl.bindRenderbuffer( 36161, null );\r\n\r\n\t\t\t\t\tif ( renderTarget.depthBuffer ) {\r\n\r\n\t\t\t\t\t\trenderTargetProperties.__webglDepthRenderbuffer = _gl.createRenderbuffer();\r\n\t\t\t\t\t\tsetupRenderBufferStorage( renderTargetProperties.__webglDepthRenderbuffer, renderTarget, true );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t_gl.bindFramebuffer( 36160, null );\r\n\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Setup color buffer\r\n\r\n\t\tif ( isCube ) {\r\n\r\n\t\t\tstate.bindTexture( 34067, textureProperties.__webglTexture );\r\n\t\t\tsetTextureParameters( 34067, renderTarget.texture, supportsMips );\r\n\r\n\t\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer[ i ], renderTarget, 36064, 34069 + i );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\r\n\r\n\t\t\t\tgenerateMipmap( 34067, renderTarget.texture, renderTarget.width, renderTarget.height );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tstate.bindTexture( 34067, null );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tstate.bindTexture( 3553, textureProperties.__webglTexture );\r\n\t\t\tsetTextureParameters( 3553, renderTarget.texture, supportsMips );\r\n\t\t\tsetupFrameBufferTexture( renderTargetProperties.__webglFramebuffer, renderTarget, 36064, 3553 );\r\n\r\n\t\t\tif ( textureNeedsGenerateMipmaps( renderTarget.texture, supportsMips ) ) {\r\n\r\n\t\t\t\tgenerateMipmap( 3553, renderTarget.texture, renderTarget.width, renderTarget.height );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tstate.bindTexture( 3553, null );\r\n\r\n\t\t}\r\n\r\n\t\t// Setup depth and stencil buffers\r\n\r\n\t\tif ( renderTarget.depthBuffer ) {\r\n\r\n\t\t\tsetupDepthRenderbuffer( renderTarget );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction updateRenderTargetMipmap( renderTarget ) {\r\n\r\n\t\tconst texture = renderTarget.texture;\r\n\t\tconst supportsMips = isPowerOfTwo( renderTarget ) || isWebGL2;\r\n\r\n\t\tif ( textureNeedsGenerateMipmaps( texture, supportsMips ) ) {\r\n\r\n\t\t\tconst target = renderTarget.isWebGLCubeRenderTarget ? 34067 : 3553;\r\n\t\t\tconst webglTexture = properties.get( texture ).__webglTexture;\r\n\r\n\t\t\tstate.bindTexture( target, webglTexture );\r\n\t\t\tgenerateMipmap( target, texture, renderTarget.width, renderTarget.height );\r\n\t\t\tstate.bindTexture( target, null );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction updateMultisampleRenderTarget( renderTarget ) {\r\n\r\n\t\tif ( renderTarget.isWebGLMultisampleRenderTarget ) {\r\n\r\n\t\t\tif ( isWebGL2 ) {\r\n\r\n\t\t\t\tconst renderTargetProperties = properties.get( renderTarget );\r\n\r\n\t\t\t\t_gl.bindFramebuffer( 36008, renderTargetProperties.__webglMultisampledFramebuffer );\r\n\t\t\t\t_gl.bindFramebuffer( 36009, renderTargetProperties.__webglFramebuffer );\r\n\r\n\t\t\t\tconst width = renderTarget.width;\r\n\t\t\t\tconst height = renderTarget.height;\r\n\t\t\t\tlet mask = 16384;\r\n\r\n\t\t\t\tif ( renderTarget.depthBuffer ) mask |= 256;\r\n\t\t\t\tif ( renderTarget.stencilBuffer ) mask |= 1024;\r\n\r\n\t\t\t\t_gl.blitFramebuffer( 0, 0, width, height, 0, 0, width, height, mask, 9728 );\r\n\r\n\t\t\t\t_gl.bindFramebuffer( 36160, renderTargetProperties.__webglMultisampledFramebuffer ); // see #18905\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLRenderer: WebGLMultisampleRenderTarget can only be used with WebGL2.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction getRenderTargetSamples( renderTarget ) {\r\n\r\n\t\treturn ( isWebGL2 && renderTarget.isWebGLMultisampleRenderTarget ) ?\r\n\t\t\tMath.min( maxSamples, renderTarget.samples ) : 0;\r\n\r\n\t}\r\n\r\n\tfunction updateVideoTexture( texture ) {\r\n\r\n\t\tconst frame = info.render.frame;\r\n\r\n\t\t// Check the last frame we updated the VideoTexture\r\n\r\n\t\tif ( _videoTextures.get( texture ) !== frame ) {\r\n\r\n\t\t\t_videoTextures.set( texture, frame );\r\n\t\t\ttexture.update();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// backwards compatibility\r\n\r\n\tlet warnedTexture2D = false;\r\n\tlet warnedTextureCube = false;\r\n\r\n\tfunction safeSetTexture2D( texture, slot ) {\r\n\r\n\t\tif ( texture && texture.isWebGLRenderTarget ) {\r\n\r\n\t\t\tif ( warnedTexture2D === false ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTexture2D: don\\'t use render targets as textures. Use their .texture property instead.' );\r\n\t\t\t\twarnedTexture2D = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttexture = texture.texture;\r\n\r\n\t\t}\r\n\r\n\t\tsetTexture2D( texture, slot );\r\n\r\n\t}\r\n\r\n\tfunction safeSetTextureCube( texture, slot ) {\r\n\r\n\t\tif ( texture && texture.isWebGLCubeRenderTarget ) {\r\n\r\n\t\t\tif ( warnedTextureCube === false ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.WebGLTextures.safeSetTextureCube: don\\'t use cube render targets as textures. Use their .texture property instead.' );\r\n\t\t\t\twarnedTextureCube = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttexture = texture.texture;\r\n\r\n\t\t}\r\n\r\n\r\n\t\tsetTextureCube( texture, slot );\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tthis.allocateTextureUnit = allocateTextureUnit;\r\n\tthis.resetTextureUnits = resetTextureUnits;\r\n\r\n\tthis.setTexture2D = setTexture2D;\r\n\tthis.setTexture2DArray = setTexture2DArray;\r\n\tthis.setTexture3D = setTexture3D;\r\n\tthis.setTextureCube = setTextureCube;\r\n\tthis.setupRenderTarget = setupRenderTarget;\r\n\tthis.updateRenderTargetMipmap = updateRenderTargetMipmap;\r\n\tthis.updateMultisampleRenderTarget = updateMultisampleRenderTarget;\r\n\r\n\tthis.safeSetTexture2D = safeSetTexture2D;\r\n\tthis.safeSetTextureCube = safeSetTextureCube;\r\n\r\n}\r\n\r\nfunction WebGLUtils( gl, extensions, capabilities ) {\r\n\r\n\tconst isWebGL2 = capabilities.isWebGL2;\r\n\r\n\tfunction convert( p ) {\r\n\r\n\t\tlet extension;\r\n\r\n\t\tif ( p === UnsignedByteType ) return 5121;\r\n\t\tif ( p === UnsignedShort4444Type ) return 32819;\r\n\t\tif ( p === UnsignedShort5551Type ) return 32820;\r\n\t\tif ( p === UnsignedShort565Type ) return 33635;\r\n\r\n\t\tif ( p === ByteType ) return 5120;\r\n\t\tif ( p === ShortType ) return 5122;\r\n\t\tif ( p === UnsignedShortType ) return 5123;\r\n\t\tif ( p === IntType ) return 5124;\r\n\t\tif ( p === UnsignedIntType ) return 5125;\r\n\t\tif ( p === FloatType ) return 5126;\r\n\r\n\t\tif ( p === HalfFloatType ) {\r\n\r\n\t\t\tif ( isWebGL2 ) return 5131;\r\n\r\n\t\t\textension = extensions.get( 'OES_texture_half_float' );\r\n\r\n\t\t\tif ( extension !== null ) {\r\n\r\n\t\t\t\treturn extension.HALF_FLOAT_OES;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\treturn null;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( p === AlphaFormat ) return 6406;\r\n\t\tif ( p === RGBFormat ) return 6407;\r\n\t\tif ( p === RGBAFormat ) return 6408;\r\n\t\tif ( p === LuminanceFormat ) return 6409;\r\n\t\tif ( p === LuminanceAlphaFormat ) return 6410;\r\n\t\tif ( p === DepthFormat ) return 6402;\r\n\t\tif ( p === DepthStencilFormat ) return 34041;\r\n\t\tif ( p === RedFormat ) return 6403;\r\n\r\n\t\t// WebGL2 formats.\r\n\r\n\t\tif ( p === RedIntegerFormat ) return 36244;\r\n\t\tif ( p === RGFormat ) return 33319;\r\n\t\tif ( p === RGIntegerFormat ) return 33320;\r\n\t\tif ( p === RGBIntegerFormat ) return 36248;\r\n\t\tif ( p === RGBAIntegerFormat ) return 36249;\r\n\r\n\t\tif ( p === RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\r\n\t\t\tp === RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format ) {\r\n\r\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_s3tc' );\r\n\r\n\t\t\tif ( extension !== null ) {\r\n\r\n\t\t\t\tif ( p === RGB_S3TC_DXT1_Format ) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\r\n\t\t\t\tif ( p === RGBA_S3TC_DXT1_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\r\n\t\t\t\tif ( p === RGBA_S3TC_DXT3_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\r\n\t\t\t\tif ( p === RGBA_S3TC_DXT5_Format ) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\treturn null;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( p === RGB_PVRTC_4BPPV1_Format || p === RGB_PVRTC_2BPPV1_Format ||\r\n\t\t\tp === RGBA_PVRTC_4BPPV1_Format || p === RGBA_PVRTC_2BPPV1_Format ) {\r\n\r\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_pvrtc' );\r\n\r\n\t\t\tif ( extension !== null ) {\r\n\r\n\t\t\t\tif ( p === RGB_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\r\n\t\t\t\tif ( p === RGB_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\r\n\t\t\t\tif ( p === RGBA_PVRTC_4BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\r\n\t\t\t\tif ( p === RGBA_PVRTC_2BPPV1_Format ) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\treturn null;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( p === RGB_ETC1_Format ) {\r\n\r\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc1' );\r\n\r\n\t\t\tif ( extension !== null ) {\r\n\r\n\t\t\t\treturn extension.COMPRESSED_RGB_ETC1_WEBGL;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\treturn null;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( p === RGB_ETC2_Format || p === RGBA_ETC2_EAC_Format ) {\r\n\r\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_etc' );\r\n\r\n\t\t\tif ( extension !== null ) {\r\n\r\n\t\t\t\tif ( p === RGB_ETC2_Format ) return extension.COMPRESSED_RGB8_ETC2;\r\n\t\t\t\tif ( p === RGBA_ETC2_EAC_Format ) return extension.COMPRESSED_RGBA8_ETC2_EAC;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( p === RGBA_ASTC_4x4_Format || p === RGBA_ASTC_5x4_Format || p === RGBA_ASTC_5x5_Format ||\r\n\t\t\tp === RGBA_ASTC_6x5_Format || p === RGBA_ASTC_6x6_Format || p === RGBA_ASTC_8x5_Format ||\r\n\t\t\tp === RGBA_ASTC_8x6_Format || p === RGBA_ASTC_8x8_Format || p === RGBA_ASTC_10x5_Format ||\r\n\t\t\tp === RGBA_ASTC_10x6_Format || p === RGBA_ASTC_10x8_Format || p === RGBA_ASTC_10x10_Format ||\r\n\t\t\tp === RGBA_ASTC_12x10_Format || p === RGBA_ASTC_12x12_Format ||\r\n\t\t\tp === SRGB8_ALPHA8_ASTC_4x4_Format || p === SRGB8_ALPHA8_ASTC_5x4_Format || p === SRGB8_ALPHA8_ASTC_5x5_Format ||\r\n\t\t\tp === SRGB8_ALPHA8_ASTC_6x5_Format || p === SRGB8_ALPHA8_ASTC_6x6_Format || p === SRGB8_ALPHA8_ASTC_8x5_Format ||\r\n\t\t\tp === SRGB8_ALPHA8_ASTC_8x6_Format || p === SRGB8_ALPHA8_ASTC_8x8_Format || p === SRGB8_ALPHA8_ASTC_10x5_Format ||\r\n\t\t\tp === SRGB8_ALPHA8_ASTC_10x6_Format || p === SRGB8_ALPHA8_ASTC_10x8_Format || p === SRGB8_ALPHA8_ASTC_10x10_Format ||\r\n\t\t\tp === SRGB8_ALPHA8_ASTC_12x10_Format || p === SRGB8_ALPHA8_ASTC_12x12_Format ) {\r\n\r\n\t\t\textension = extensions.get( 'WEBGL_compressed_texture_astc' );\r\n\r\n\t\t\tif ( extension !== null ) {\r\n\r\n\t\t\t\t// TODO Complete?\r\n\r\n\t\t\t\treturn p;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\treturn null;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( p === RGBA_BPTC_Format ) {\r\n\r\n\t\t\textension = extensions.get( 'EXT_texture_compression_bptc' );\r\n\r\n\t\t\tif ( extension !== null ) {\r\n\r\n\t\t\t\t// TODO Complete?\r\n\r\n\t\t\t\treturn p;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\treturn null;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( p === UnsignedInt248Type ) {\r\n\r\n\t\t\tif ( isWebGL2 ) return 34042;\r\n\r\n\t\t\textension = extensions.get( 'WEBGL_depth_texture' );\r\n\r\n\t\t\tif ( extension !== null ) {\r\n\r\n\t\t\t\treturn extension.UNSIGNED_INT_24_8_WEBGL;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\treturn null;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn { convert: convert };\r\n\r\n}\r\n\r\nfunction ArrayCamera( array = [] ) {\r\n\r\n\tPerspectiveCamera.call( this );\r\n\r\n\tthis.cameras = array;\r\n\r\n}\r\n\r\nArrayCamera.prototype = Object.assign( Object.create( PerspectiveCamera.prototype ), {\r\n\r\n\tconstructor: ArrayCamera,\r\n\r\n\tisArrayCamera: true\r\n\r\n} );\r\n\r\nfunction Group() {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.type = 'Group';\r\n\r\n}\r\n\r\nGroup.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: Group,\r\n\r\n\tisGroup: true\r\n\r\n} );\r\n\r\nfunction WebXRController() {\r\n\r\n\tthis._targetRay = null;\r\n\tthis._grip = null;\r\n\tthis._hand = null;\r\n\r\n}\r\n\r\nObject.assign( WebXRController.prototype, {\r\n\r\n\tconstructor: WebXRController,\r\n\r\n\tgetHandSpace: function () {\r\n\r\n\t\tif ( this._hand === null ) {\r\n\r\n\t\t\tthis._hand = new Group();\r\n\t\t\tthis._hand.matrixAutoUpdate = false;\r\n\t\t\tthis._hand.visible = false;\r\n\r\n\t\t\tthis._hand.joints = [];\r\n\t\t\tthis._hand.inputState = { pinching: false };\r\n\r\n\t\t\tif ( window.XRHand ) {\r\n\r\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\r\n\r\n\t\t\t\t\t// The transform of this joint will be updated with the joint pose on each frame\r\n\t\t\t\t\tconst joint = new Group();\r\n\t\t\t\t\tjoint.matrixAutoUpdate = false;\r\n\t\t\t\t\tjoint.visible = false;\r\n\t\t\t\t\tthis._hand.joints.push( joint );\r\n\t\t\t\t\t// ??\r\n\t\t\t\t\tthis._hand.add( joint );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this._hand;\r\n\r\n\t},\r\n\r\n\tgetTargetRaySpace: function () {\r\n\r\n\t\tif ( this._targetRay === null ) {\r\n\r\n\t\t\tthis._targetRay = new Group();\r\n\t\t\tthis._targetRay.matrixAutoUpdate = false;\r\n\t\t\tthis._targetRay.visible = false;\r\n\r\n\t\t}\r\n\r\n\t\treturn this._targetRay;\r\n\r\n\t},\r\n\r\n\tgetGripSpace: function () {\r\n\r\n\t\tif ( this._grip === null ) {\r\n\r\n\t\t\tthis._grip = new Group();\r\n\t\t\tthis._grip.matrixAutoUpdate = false;\r\n\t\t\tthis._grip.visible = false;\r\n\r\n\t\t}\r\n\r\n\t\treturn this._grip;\r\n\r\n\t},\r\n\r\n\tdispatchEvent: function ( event ) {\r\n\r\n\t\tif ( this._targetRay !== null ) {\r\n\r\n\t\t\tthis._targetRay.dispatchEvent( event );\r\n\r\n\t\t}\r\n\r\n\t\tif ( this._grip !== null ) {\r\n\r\n\t\t\tthis._grip.dispatchEvent( event );\r\n\r\n\t\t}\r\n\r\n\t\tif ( this._hand !== null ) {\r\n\r\n\t\t\tthis._hand.dispatchEvent( event );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tdisconnect: function ( inputSource ) {\r\n\r\n\t\tthis.dispatchEvent( { type: 'disconnected', data: inputSource } );\r\n\r\n\t\tif ( this._targetRay !== null ) {\r\n\r\n\t\t\tthis._targetRay.visible = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this._grip !== null ) {\r\n\r\n\t\t\tthis._grip.visible = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this._hand !== null ) {\r\n\r\n\t\t\tthis._hand.visible = false;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tupdate: function ( inputSource, frame, referenceSpace ) {\r\n\r\n\t\tlet inputPose = null;\r\n\t\tlet gripPose = null;\r\n\t\tlet handPose = null;\r\n\r\n\t\tconst targetRay = this._targetRay;\r\n\t\tconst grip = this._grip;\r\n\t\tconst hand = this._hand;\r\n\r\n\t\tif ( inputSource && frame.session.visibilityState !== 'visible-blurred' ) {\r\n\r\n\t\t\tif ( hand && inputSource.hand ) {\r\n\r\n\t\t\t\thandPose = true;\r\n\r\n\t\t\t\tfor ( let i = 0; i <= window.XRHand.LITTLE_PHALANX_TIP; i ++ ) {\r\n\r\n\t\t\t\t\tif ( inputSource.hand[ i ] ) {\r\n\r\n\t\t\t\t\t\t// Update the joints groups with the XRJoint poses\r\n\t\t\t\t\t\tconst jointPose = frame.getJointPose( inputSource.hand[ i ], referenceSpace );\r\n\t\t\t\t\t\tconst joint = hand.joints[ i ];\r\n\r\n\t\t\t\t\t\tif ( jointPose !== null ) {\r\n\r\n\t\t\t\t\t\t\tjoint.matrix.fromArray( jointPose.transform.matrix );\r\n\t\t\t\t\t\t\tjoint.matrix.decompose( joint.position, joint.rotation, joint.scale );\r\n\t\t\t\t\t\t\tjoint.jointRadius = jointPose.radius;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tjoint.visible = jointPose !== null;\r\n\r\n\t\t\t\t\t\t// Custom events\r\n\r\n\t\t\t\t\t\t// Check pinch\r\n\t\t\t\t\t\tconst indexTip = hand.joints[ window.XRHand.INDEX_PHALANX_TIP ];\r\n\t\t\t\t\t\tconst thumbTip = hand.joints[ window.XRHand.THUMB_PHALANX_TIP ];\r\n\t\t\t\t\t\tconst distance = indexTip.position.distanceTo( thumbTip.position );\r\n\r\n\t\t\t\t\t\tconst distanceToPinch = 0.02;\r\n\t\t\t\t\t\tconst threshold = 0.005;\r\n\r\n\t\t\t\t\t\tif ( hand.inputState.pinching && distance > distanceToPinch + threshold ) {\r\n\r\n\t\t\t\t\t\t\thand.inputState.pinching = false;\r\n\t\t\t\t\t\t\tthis.dispatchEvent( {\r\n\t\t\t\t\t\t\t\ttype: 'pinchend',\r\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\r\n\t\t\t\t\t\t\t\ttarget: this\r\n\t\t\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t\t} else if ( ! hand.inputState.pinching && distance <= distanceToPinch - threshold ) {\r\n\r\n\t\t\t\t\t\t\thand.inputState.pinching = true;\r\n\t\t\t\t\t\t\tthis.dispatchEvent( {\r\n\t\t\t\t\t\t\t\ttype: 'pinchstart',\r\n\t\t\t\t\t\t\t\thandedness: inputSource.handedness,\r\n\t\t\t\t\t\t\t\ttarget: this\r\n\t\t\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif ( targetRay !== null ) {\r\n\r\n\t\t\t\t\tinputPose = frame.getPose( inputSource.targetRaySpace, referenceSpace );\r\n\r\n\t\t\t\t\tif ( inputPose !== null ) {\r\n\r\n\t\t\t\t\t\ttargetRay.matrix.fromArray( inputPose.transform.matrix );\r\n\t\t\t\t\t\ttargetRay.matrix.decompose( targetRay.position, targetRay.rotation, targetRay.scale );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( grip !== null && inputSource.gripSpace ) {\r\n\r\n\t\t\t\t\tgripPose = frame.getPose( inputSource.gripSpace, referenceSpace );\r\n\r\n\t\t\t\t\tif ( gripPose !== null ) {\r\n\r\n\t\t\t\t\t\tgrip.matrix.fromArray( gripPose.transform.matrix );\r\n\t\t\t\t\t\tgrip.matrix.decompose( grip.position, grip.rotation, grip.scale );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( targetRay !== null ) {\r\n\r\n\t\t\ttargetRay.visible = ( inputPose !== null );\r\n\r\n\t\t}\r\n\r\n\t\tif ( grip !== null ) {\r\n\r\n\t\t\tgrip.visible = ( gripPose !== null );\r\n\r\n\t\t}\r\n\r\n\t\tif ( hand !== null ) {\r\n\r\n\t\t\thand.visible = ( handPose !== null );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction WebXRManager( renderer, gl ) {\r\n\r\n\tconst scope = this;\r\n\r\n\tlet session = null;\r\n\r\n\tlet framebufferScaleFactor = 1.0;\r\n\r\n\tlet referenceSpace = null;\r\n\tlet referenceSpaceType = 'local-floor';\r\n\r\n\tlet pose = null;\r\n\r\n\tconst controllers = [];\r\n\tconst inputSourcesMap = new Map();\r\n\r\n\t//\r\n\r\n\tconst cameraL = new PerspectiveCamera();\r\n\tcameraL.layers.enable( 1 );\r\n\tcameraL.viewport = new Vector4();\r\n\r\n\tconst cameraR = new PerspectiveCamera();\r\n\tcameraR.layers.enable( 2 );\r\n\tcameraR.viewport = new Vector4();\r\n\r\n\tconst cameras = [ cameraL, cameraR ];\r\n\r\n\tconst cameraVR = new ArrayCamera();\r\n\tcameraVR.layers.enable( 1 );\r\n\tcameraVR.layers.enable( 2 );\r\n\r\n\tlet _currentDepthNear = null;\r\n\tlet _currentDepthFar = null;\r\n\r\n\t//\r\n\r\n\tthis.enabled = false;\r\n\r\n\tthis.isPresenting = false;\r\n\r\n\tthis.getController = function ( index ) {\r\n\r\n\t\tlet controller = controllers[ index ];\r\n\r\n\t\tif ( controller === undefined ) {\r\n\r\n\t\t\tcontroller = new WebXRController();\r\n\t\t\tcontrollers[ index ] = controller;\r\n\r\n\t\t}\r\n\r\n\t\treturn controller.getTargetRaySpace();\r\n\r\n\t};\r\n\r\n\tthis.getControllerGrip = function ( index ) {\r\n\r\n\t\tlet controller = controllers[ index ];\r\n\r\n\t\tif ( controller === undefined ) {\r\n\r\n\t\t\tcontroller = new WebXRController();\r\n\t\t\tcontrollers[ index ] = controller;\r\n\r\n\t\t}\r\n\r\n\t\treturn controller.getGripSpace();\r\n\r\n\t};\r\n\r\n\tthis.getHand = function ( index ) {\r\n\r\n\t\tlet controller = controllers[ index ];\r\n\r\n\t\tif ( controller === undefined ) {\r\n\r\n\t\t\tcontroller = new WebXRController();\r\n\t\t\tcontrollers[ index ] = controller;\r\n\r\n\t\t}\r\n\r\n\t\treturn controller.getHandSpace();\r\n\r\n\t};\r\n\r\n\t//\r\n\r\n\tfunction onSessionEvent( event ) {\r\n\r\n\t\tconst controller = inputSourcesMap.get( event.inputSource );\r\n\r\n\t\tif ( controller ) {\r\n\r\n\t\t\tcontroller.dispatchEvent( { type: event.type, data: event.inputSource } );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction onSessionEnd() {\r\n\r\n\t\tinputSourcesMap.forEach( function ( controller, inputSource ) {\r\n\r\n\t\t\tcontroller.disconnect( inputSource );\r\n\r\n\t\t} );\r\n\r\n\t\tinputSourcesMap.clear();\r\n\r\n\t\t//\r\n\r\n\t\trenderer.setFramebuffer( null );\r\n\t\trenderer.setRenderTarget( renderer.getRenderTarget() ); // Hack #15830\r\n\t\tanimation.stop();\r\n\r\n\t\tscope.isPresenting = false;\r\n\r\n\t\tscope.dispatchEvent( { type: 'sessionend' } );\r\n\r\n\t}\r\n\r\n\tfunction onRequestReferenceSpace( value ) {\r\n\r\n\t\treferenceSpace = value;\r\n\r\n\t\tanimation.setContext( session );\r\n\t\tanimation.start();\r\n\r\n\t\tscope.isPresenting = true;\r\n\r\n\t\tscope.dispatchEvent( { type: 'sessionstart' } );\r\n\r\n\t}\r\n\r\n\tthis.setFramebufferScaleFactor = function ( value ) {\r\n\r\n\t\tframebufferScaleFactor = value;\r\n\r\n\t\tif ( scope.isPresenting === true ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change framebuffer scale while presenting.' );\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tthis.setReferenceSpaceType = function ( value ) {\r\n\r\n\t\treferenceSpaceType = value;\r\n\r\n\t\tif ( scope.isPresenting === true ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebXRManager: Cannot change reference space type while presenting.' );\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tthis.getReferenceSpace = function () {\r\n\r\n\t\treturn referenceSpace;\r\n\r\n\t};\r\n\r\n\tthis.getSession = function () {\r\n\r\n\t\treturn session;\r\n\r\n\t};\r\n\r\n\tthis.setSession = function ( value ) {\r\n\r\n\t\tsession = value;\r\n\r\n\t\tif ( session !== null ) {\r\n\r\n\t\t\tsession.addEventListener( 'select', onSessionEvent );\r\n\t\t\tsession.addEventListener( 'selectstart', onSessionEvent );\r\n\t\t\tsession.addEventListener( 'selectend', onSessionEvent );\r\n\t\t\tsession.addEventListener( 'squeeze', onSessionEvent );\r\n\t\t\tsession.addEventListener( 'squeezestart', onSessionEvent );\r\n\t\t\tsession.addEventListener( 'squeezeend', onSessionEvent );\r\n\t\t\tsession.addEventListener( 'end', onSessionEnd );\r\n\r\n\t\t\tconst attributes = gl.getContextAttributes();\r\n\r\n\t\t\tif ( attributes.xrCompatible !== true ) {\r\n\r\n\t\t\t\tgl.makeXRCompatible();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst layerInit = {\r\n\t\t\t\tantialias: attributes.antialias,\r\n\t\t\t\talpha: attributes.alpha,\r\n\t\t\t\tdepth: attributes.depth,\r\n\t\t\t\tstencil: attributes.stencil,\r\n\t\t\t\tframebufferScaleFactor: framebufferScaleFactor\r\n\t\t\t};\r\n\r\n\t\t\t// eslint-disable-next-line no-undef\r\n\t\t\tconst baseLayer = new XRWebGLLayer( session, gl, layerInit );\r\n\r\n\t\t\tsession.updateRenderState( { baseLayer: baseLayer } );\r\n\r\n\t\t\tsession.requestReferenceSpace( referenceSpaceType ).then( onRequestReferenceSpace );\r\n\r\n\t\t\t//\r\n\r\n\t\t\tsession.addEventListener( 'inputsourceschange', updateInputSources );\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tfunction updateInputSources( event ) {\r\n\r\n\t\tconst inputSources = session.inputSources;\r\n\r\n\t\t// Assign inputSources to available controllers\r\n\r\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\r\n\r\n\t\t\tinputSourcesMap.set( inputSources[ i ], controllers[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\t// Notify disconnected\r\n\r\n\t\tfor ( let i = 0; i < event.removed.length; i ++ ) {\r\n\r\n\t\t\tconst inputSource = event.removed[ i ];\r\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\r\n\r\n\t\t\tif ( controller ) {\r\n\r\n\t\t\t\tcontroller.dispatchEvent( { type: 'disconnected', data: inputSource } );\r\n\t\t\t\tinputSourcesMap.delete( inputSource );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Notify connected\r\n\r\n\t\tfor ( let i = 0; i < event.added.length; i ++ ) {\r\n\r\n\t\t\tconst inputSource = event.added[ i ];\r\n\t\t\tconst controller = inputSourcesMap.get( inputSource );\r\n\r\n\t\t\tif ( controller ) {\r\n\r\n\t\t\t\tcontroller.dispatchEvent( { type: 'connected', data: inputSource } );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//\r\n\r\n\tconst cameraLPos = new Vector3();\r\n\tconst cameraRPos = new Vector3();\r\n\r\n\t/**\r\n\t * Assumes 2 cameras that are parallel and share an X-axis, and that\r\n\t * the cameras' projection and world matrices have already been set.\r\n\t * And that near and far planes are identical for both cameras.\r\n\t * Visualization of this technique: https://computergraphics.stackexchange.com/a/4765\r\n\t */\r\n\tfunction setProjectionFromUnion( camera, cameraL, cameraR ) {\r\n\r\n\t\tcameraLPos.setFromMatrixPosition( cameraL.matrixWorld );\r\n\t\tcameraRPos.setFromMatrixPosition( cameraR.matrixWorld );\r\n\r\n\t\tconst ipd = cameraLPos.distanceTo( cameraRPos );\r\n\r\n\t\tconst projL = cameraL.projectionMatrix.elements;\r\n\t\tconst projR = cameraR.projectionMatrix.elements;\r\n\r\n\t\t// VR systems will have identical far and near planes, and\r\n\t\t// most likely identical top and bottom frustum extents.\r\n\t\t// Use the left camera for these values.\r\n\t\tconst near = projL[ 14 ] / ( projL[ 10 ] - 1 );\r\n\t\tconst far = projL[ 14 ] / ( projL[ 10 ] + 1 );\r\n\t\tconst topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];\r\n\t\tconst bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];\r\n\r\n\t\tconst leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];\r\n\t\tconst rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];\r\n\t\tconst left = near * leftFov;\r\n\t\tconst right = near * rightFov;\r\n\r\n\t\t// Calculate the new camera's position offset from the\r\n\t\t// left camera. xOffset should be roughly half `ipd`.\r\n\t\tconst zOffset = ipd / ( - leftFov + rightFov );\r\n\t\tconst xOffset = zOffset * - leftFov;\r\n\r\n\t\t// TODO: Better way to apply this offset?\r\n\t\tcameraL.matrixWorld.decompose( camera.position, camera.quaternion, camera.scale );\r\n\t\tcamera.translateX( xOffset );\r\n\t\tcamera.translateZ( zOffset );\r\n\t\tcamera.matrixWorld.compose( camera.position, camera.quaternion, camera.scale );\r\n\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\r\n\r\n\t\t// Find the union of the frustum values of the cameras and scale\r\n\t\t// the values so that the near plane's position does not change in world space,\r\n\t\t// although must now be relative to the new union camera.\r\n\t\tconst near2 = near + zOffset;\r\n\t\tconst far2 = far + zOffset;\r\n\t\tconst left2 = left - xOffset;\r\n\t\tconst right2 = right + ( ipd - xOffset );\r\n\t\tconst top2 = topFov * far / far2 * near2;\r\n\t\tconst bottom2 = bottomFov * far / far2 * near2;\r\n\r\n\t\tcamera.projectionMatrix.makePerspective( left2, right2, top2, bottom2, near2, far2 );\r\n\r\n\t}\r\n\r\n\tfunction updateCamera( camera, parent ) {\r\n\r\n\t\tif ( parent === null ) {\r\n\r\n\t\t\tcamera.matrixWorld.copy( camera.matrix );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tcamera.matrixWorld.multiplyMatrices( parent.matrixWorld, camera.matrix );\r\n\r\n\t\t}\r\n\r\n\t\tcamera.matrixWorldInverse.copy( camera.matrixWorld ).invert();\r\n\r\n\t}\r\n\r\n\tthis.getCamera = function ( camera ) {\r\n\r\n\t\tcameraVR.near = cameraR.near = cameraL.near = camera.near;\r\n\t\tcameraVR.far = cameraR.far = cameraL.far = camera.far;\r\n\r\n\t\tif ( _currentDepthNear !== cameraVR.near || _currentDepthFar !== cameraVR.far ) {\r\n\r\n\t\t\t// Note that the new renderState won't apply until the next frame. See #18320\r\n\r\n\t\t\tsession.updateRenderState( {\r\n\t\t\t\tdepthNear: cameraVR.near,\r\n\t\t\t\tdepthFar: cameraVR.far\r\n\t\t\t} );\r\n\r\n\t\t\t_currentDepthNear = cameraVR.near;\r\n\t\t\t_currentDepthFar = cameraVR.far;\r\n\r\n\t\t}\r\n\r\n\t\tconst parent = camera.parent;\r\n\t\tconst cameras = cameraVR.cameras;\r\n\r\n\t\tupdateCamera( cameraVR, parent );\r\n\r\n\t\tfor ( let i = 0; i < cameras.length; i ++ ) {\r\n\r\n\t\t\tupdateCamera( cameras[ i ], parent );\r\n\r\n\t\t}\r\n\r\n\t\t// update camera and its children\r\n\r\n\t\tcamera.matrixWorld.copy( cameraVR.matrixWorld );\r\n\r\n\t\tconst children = camera.children;\r\n\r\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\r\n\r\n\t\t\tchildren[ i ].updateMatrixWorld( true );\r\n\r\n\t\t}\r\n\r\n\t\t// update projection matrix for proper view frustum culling\r\n\r\n\t\tif ( cameras.length === 2 ) {\r\n\r\n\t\t\tsetProjectionFromUnion( cameraVR, cameraL, cameraR );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// assume single camera setup (AR)\r\n\r\n\t\t\tcameraVR.projectionMatrix.copy( cameraL.projectionMatrix );\r\n\r\n\t\t}\r\n\r\n\t\treturn cameraVR;\r\n\r\n\t};\r\n\r\n\t// Animation Loop\r\n\r\n\tlet onAnimationFrameCallback = null;\r\n\r\n\tfunction onAnimationFrame( time, frame ) {\r\n\r\n\t\tpose = frame.getViewerPose( referenceSpace );\r\n\r\n\t\tif ( pose !== null ) {\r\n\r\n\t\t\tconst views = pose.views;\r\n\t\t\tconst baseLayer = session.renderState.baseLayer;\r\n\r\n\t\t\trenderer.setFramebuffer( baseLayer.framebuffer );\r\n\r\n\t\t\tlet cameraVRNeedsUpdate = false;\r\n\r\n\t\t\t// check if it's necessary to rebuild cameraVR's camera list\r\n\r\n\t\t\tif ( views.length !== cameraVR.cameras.length ) {\r\n\r\n\t\t\t\tcameraVR.cameras.length = 0;\r\n\t\t\t\tcameraVRNeedsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfor ( let i = 0; i < views.length; i ++ ) {\r\n\r\n\t\t\t\tconst view = views[ i ];\r\n\t\t\t\tconst viewport = baseLayer.getViewport( view );\r\n\r\n\t\t\t\tconst camera = cameras[ i ];\r\n\t\t\t\tcamera.matrix.fromArray( view.transform.matrix );\r\n\t\t\t\tcamera.projectionMatrix.fromArray( view.projectionMatrix );\r\n\t\t\t\tcamera.viewport.set( viewport.x, viewport.y, viewport.width, viewport.height );\r\n\r\n\t\t\t\tif ( i === 0 ) {\r\n\r\n\t\t\t\t\tcameraVR.matrix.copy( camera.matrix );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( cameraVRNeedsUpdate === true ) {\r\n\r\n\t\t\t\t\tcameraVR.cameras.push( camera );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tconst inputSources = session.inputSources;\r\n\r\n\t\tfor ( let i = 0; i < controllers.length; i ++ ) {\r\n\r\n\t\t\tconst controller = controllers[ i ];\r\n\t\t\tconst inputSource = inputSources[ i ];\r\n\r\n\t\t\tcontroller.update( inputSource, frame, referenceSpace );\r\n\r\n\t\t}\r\n\r\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time, frame );\r\n\r\n\t}\r\n\r\n\tconst animation = new WebGLAnimation();\r\n\tanimation.setAnimationLoop( onAnimationFrame );\r\n\r\n\tthis.setAnimationLoop = function ( callback ) {\r\n\r\n\t\tonAnimationFrameCallback = callback;\r\n\r\n\t};\r\n\r\n\tthis.dispose = function () {};\r\n\r\n}\r\n\r\nObject.assign( WebXRManager.prototype, EventDispatcher.prototype );\r\n\r\nfunction WebGLMaterials( properties ) {\r\n\r\n\tfunction refreshFogUniforms( uniforms, fog ) {\r\n\r\n\t\tuniforms.fogColor.value.copy( fog.color );\r\n\r\n\t\tif ( fog.isFog ) {\r\n\r\n\t\t\tuniforms.fogNear.value = fog.near;\r\n\t\t\tuniforms.fogFar.value = fog.far;\r\n\r\n\t\t} else if ( fog.isFogExp2 ) {\r\n\r\n\t\t\tuniforms.fogDensity.value = fog.density;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshMaterialUniforms( uniforms, material, pixelRatio, height ) {\r\n\r\n\t\tif ( material.isMeshBasicMaterial ) {\r\n\r\n\t\t\trefreshUniformsCommon( uniforms, material );\r\n\r\n\t\t} else if ( material.isMeshLambertMaterial ) {\r\n\r\n\t\t\trefreshUniformsCommon( uniforms, material );\r\n\t\t\trefreshUniformsLambert( uniforms, material );\r\n\r\n\t\t} else if ( material.isMeshToonMaterial ) {\r\n\r\n\t\t\trefreshUniformsCommon( uniforms, material );\r\n\t\t\trefreshUniformsToon( uniforms, material );\r\n\r\n\t\t} else if ( material.isMeshPhongMaterial ) {\r\n\r\n\t\t\trefreshUniformsCommon( uniforms, material );\r\n\t\t\trefreshUniformsPhong( uniforms, material );\r\n\r\n\t\t} else if ( material.isMeshStandardMaterial ) {\r\n\r\n\t\t\trefreshUniformsCommon( uniforms, material );\r\n\r\n\t\t\tif ( material.isMeshPhysicalMaterial ) {\r\n\r\n\t\t\t\trefreshUniformsPhysical( uniforms, material );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\trefreshUniformsStandard( uniforms, material );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( material.isMeshMatcapMaterial ) {\r\n\r\n\t\t\trefreshUniformsCommon( uniforms, material );\r\n\t\t\trefreshUniformsMatcap( uniforms, material );\r\n\r\n\t\t} else if ( material.isMeshDepthMaterial ) {\r\n\r\n\t\t\trefreshUniformsCommon( uniforms, material );\r\n\t\t\trefreshUniformsDepth( uniforms, material );\r\n\r\n\t\t} else if ( material.isMeshDistanceMaterial ) {\r\n\r\n\t\t\trefreshUniformsCommon( uniforms, material );\r\n\t\t\trefreshUniformsDistance( uniforms, material );\r\n\r\n\t\t} else if ( material.isMeshNormalMaterial ) {\r\n\r\n\t\t\trefreshUniformsCommon( uniforms, material );\r\n\t\t\trefreshUniformsNormal( uniforms, material );\r\n\r\n\t\t} else if ( material.isLineBasicMaterial ) {\r\n\r\n\t\t\trefreshUniformsLine( uniforms, material );\r\n\r\n\t\t\tif ( material.isLineDashedMaterial ) {\r\n\r\n\t\t\t\trefreshUniformsDash( uniforms, material );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( material.isPointsMaterial ) {\r\n\r\n\t\t\trefreshUniformsPoints( uniforms, material, pixelRatio, height );\r\n\r\n\t\t} else if ( material.isSpriteMaterial ) {\r\n\r\n\t\t\trefreshUniformsSprites( uniforms, material );\r\n\r\n\t\t} else if ( material.isShadowMaterial ) {\r\n\r\n\t\t\tuniforms.color.value.copy( material.color );\r\n\t\t\tuniforms.opacity.value = material.opacity;\r\n\r\n\t\t} else if ( material.isShaderMaterial ) {\r\n\r\n\t\t\tmaterial.uniformsNeedUpdate = false; // #15581\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsCommon( uniforms, material ) {\r\n\r\n\t\tuniforms.opacity.value = material.opacity;\r\n\r\n\t\tif ( material.color ) {\r\n\r\n\t\t\tuniforms.diffuse.value.copy( material.color );\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.emissive ) {\r\n\r\n\t\t\tuniforms.emissive.value.copy( material.emissive ).multiplyScalar( material.emissiveIntensity );\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.map ) {\r\n\r\n\t\t\tuniforms.map.value = material.map;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.alphaMap ) {\r\n\r\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.specularMap ) {\r\n\r\n\t\t\tuniforms.specularMap.value = material.specularMap;\r\n\r\n\t\t}\r\n\r\n\t\tconst envMap = properties.get( material ).envMap;\r\n\r\n\t\tif ( envMap ) {\r\n\r\n\t\t\tuniforms.envMap.value = envMap;\r\n\r\n\t\t\tuniforms.flipEnvMap.value = ( envMap.isCubeTexture && envMap._needsFlipEnvMap ) ? - 1 : 1;\r\n\r\n\t\t\tuniforms.reflectivity.value = material.reflectivity;\r\n\t\t\tuniforms.refractionRatio.value = material.refractionRatio;\r\n\r\n\t\t\tconst maxMipLevel = properties.get( envMap ).__maxMipLevel;\r\n\r\n\t\t\tif ( maxMipLevel !== undefined ) {\r\n\r\n\t\t\t\tuniforms.maxMipLevel.value = maxMipLevel;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.lightMap ) {\r\n\r\n\t\t\tuniforms.lightMap.value = material.lightMap;\r\n\t\t\tuniforms.lightMapIntensity.value = material.lightMapIntensity;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.aoMap ) {\r\n\r\n\t\t\tuniforms.aoMap.value = material.aoMap;\r\n\t\t\tuniforms.aoMapIntensity.value = material.aoMapIntensity;\r\n\r\n\t\t}\r\n\r\n\t\t// uv repeat and offset setting priorities\r\n\t\t// 1. color map\r\n\t\t// 2. specular map\r\n\t\t// 3. displacementMap map\r\n\t\t// 4. normal map\r\n\t\t// 5. bump map\r\n\t\t// 6. roughnessMap map\r\n\t\t// 7. metalnessMap map\r\n\t\t// 8. alphaMap map\r\n\t\t// 9. emissiveMap map\r\n\t\t// 10. clearcoat map\r\n\t\t// 11. clearcoat normal map\r\n\t\t// 12. clearcoat roughnessMap map\r\n\r\n\t\tlet uvScaleMap;\r\n\r\n\t\tif ( material.map ) {\r\n\r\n\t\t\tuvScaleMap = material.map;\r\n\r\n\t\t} else if ( material.specularMap ) {\r\n\r\n\t\t\tuvScaleMap = material.specularMap;\r\n\r\n\t\t} else if ( material.displacementMap ) {\r\n\r\n\t\t\tuvScaleMap = material.displacementMap;\r\n\r\n\t\t} else if ( material.normalMap ) {\r\n\r\n\t\t\tuvScaleMap = material.normalMap;\r\n\r\n\t\t} else if ( material.bumpMap ) {\r\n\r\n\t\t\tuvScaleMap = material.bumpMap;\r\n\r\n\t\t} else if ( material.roughnessMap ) {\r\n\r\n\t\t\tuvScaleMap = material.roughnessMap;\r\n\r\n\t\t} else if ( material.metalnessMap ) {\r\n\r\n\t\t\tuvScaleMap = material.metalnessMap;\r\n\r\n\t\t} else if ( material.alphaMap ) {\r\n\r\n\t\t\tuvScaleMap = material.alphaMap;\r\n\r\n\t\t} else if ( material.emissiveMap ) {\r\n\r\n\t\t\tuvScaleMap = material.emissiveMap;\r\n\r\n\t\t} else if ( material.clearcoatMap ) {\r\n\r\n\t\t\tuvScaleMap = material.clearcoatMap;\r\n\r\n\t\t} else if ( material.clearcoatNormalMap ) {\r\n\r\n\t\t\tuvScaleMap = material.clearcoatNormalMap;\r\n\r\n\t\t} else if ( material.clearcoatRoughnessMap ) {\r\n\r\n\t\t\tuvScaleMap = material.clearcoatRoughnessMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( uvScaleMap !== undefined ) {\r\n\r\n\t\t\t// backwards compatibility\r\n\t\t\tif ( uvScaleMap.isWebGLRenderTarget ) {\r\n\r\n\t\t\t\tuvScaleMap = uvScaleMap.texture;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\r\n\r\n\t\t\t\tuvScaleMap.updateMatrix();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\r\n\r\n\t\t}\r\n\r\n\t\t// uv repeat and offset setting priorities for uv2\r\n\t\t// 1. ao map\r\n\t\t// 2. light map\r\n\r\n\t\tlet uv2ScaleMap;\r\n\r\n\t\tif ( material.aoMap ) {\r\n\r\n\t\t\tuv2ScaleMap = material.aoMap;\r\n\r\n\t\t} else if ( material.lightMap ) {\r\n\r\n\t\t\tuv2ScaleMap = material.lightMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( uv2ScaleMap !== undefined ) {\r\n\r\n\t\t\t// backwards compatibility\r\n\t\t\tif ( uv2ScaleMap.isWebGLRenderTarget ) {\r\n\r\n\t\t\t\tuv2ScaleMap = uv2ScaleMap.texture;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( uv2ScaleMap.matrixAutoUpdate === true ) {\r\n\r\n\t\t\t\tuv2ScaleMap.updateMatrix();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tuniforms.uv2Transform.value.copy( uv2ScaleMap.matrix );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsLine( uniforms, material ) {\r\n\r\n\t\tuniforms.diffuse.value.copy( material.color );\r\n\t\tuniforms.opacity.value = material.opacity;\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsDash( uniforms, material ) {\r\n\r\n\t\tuniforms.dashSize.value = material.dashSize;\r\n\t\tuniforms.totalSize.value = material.dashSize + material.gapSize;\r\n\t\tuniforms.scale.value = material.scale;\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsPoints( uniforms, material, pixelRatio, height ) {\r\n\r\n\t\tuniforms.diffuse.value.copy( material.color );\r\n\t\tuniforms.opacity.value = material.opacity;\r\n\t\tuniforms.size.value = material.size * pixelRatio;\r\n\t\tuniforms.scale.value = height * 0.5;\r\n\r\n\t\tif ( material.map ) {\r\n\r\n\t\t\tuniforms.map.value = material.map;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.alphaMap ) {\r\n\r\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\r\n\r\n\t\t}\r\n\r\n\t\t// uv repeat and offset setting priorities\r\n\t\t// 1. color map\r\n\t\t// 2. alpha map\r\n\r\n\t\tlet uvScaleMap;\r\n\r\n\t\tif ( material.map ) {\r\n\r\n\t\t\tuvScaleMap = material.map;\r\n\r\n\t\t} else if ( material.alphaMap ) {\r\n\r\n\t\t\tuvScaleMap = material.alphaMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( uvScaleMap !== undefined ) {\r\n\r\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\r\n\r\n\t\t\t\tuvScaleMap.updateMatrix();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsSprites( uniforms, material ) {\r\n\r\n\t\tuniforms.diffuse.value.copy( material.color );\r\n\t\tuniforms.opacity.value = material.opacity;\r\n\t\tuniforms.rotation.value = material.rotation;\r\n\r\n\t\tif ( material.map ) {\r\n\r\n\t\t\tuniforms.map.value = material.map;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.alphaMap ) {\r\n\r\n\t\t\tuniforms.alphaMap.value = material.alphaMap;\r\n\r\n\t\t}\r\n\r\n\t\t// uv repeat and offset setting priorities\r\n\t\t// 1. color map\r\n\t\t// 2. alpha map\r\n\r\n\t\tlet uvScaleMap;\r\n\r\n\t\tif ( material.map ) {\r\n\r\n\t\t\tuvScaleMap = material.map;\r\n\r\n\t\t} else if ( material.alphaMap ) {\r\n\r\n\t\t\tuvScaleMap = material.alphaMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( uvScaleMap !== undefined ) {\r\n\r\n\t\t\tif ( uvScaleMap.matrixAutoUpdate === true ) {\r\n\r\n\t\t\t\tuvScaleMap.updateMatrix();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tuniforms.uvTransform.value.copy( uvScaleMap.matrix );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsLambert( uniforms, material ) {\r\n\r\n\t\tif ( material.emissiveMap ) {\r\n\r\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsPhong( uniforms, material ) {\r\n\r\n\t\tuniforms.specular.value.copy( material.specular );\r\n\t\tuniforms.shininess.value = Math.max( material.shininess, 1e-4 ); // to prevent pow( 0.0, 0.0 )\r\n\r\n\t\tif ( material.emissiveMap ) {\r\n\r\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.bumpMap ) {\r\n\r\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\r\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\r\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.normalMap ) {\r\n\r\n\t\t\tuniforms.normalMap.value = material.normalMap;\r\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\r\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.displacementMap ) {\r\n\r\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\r\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\r\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsToon( uniforms, material ) {\r\n\r\n\t\tif ( material.gradientMap ) {\r\n\r\n\t\t\tuniforms.gradientMap.value = material.gradientMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.emissiveMap ) {\r\n\r\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.bumpMap ) {\r\n\r\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\r\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\r\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.normalMap ) {\r\n\r\n\t\t\tuniforms.normalMap.value = material.normalMap;\r\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\r\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.displacementMap ) {\r\n\r\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\r\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\r\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsStandard( uniforms, material ) {\r\n\r\n\t\tuniforms.roughness.value = material.roughness;\r\n\t\tuniforms.metalness.value = material.metalness;\r\n\r\n\t\tif ( material.roughnessMap ) {\r\n\r\n\t\t\tuniforms.roughnessMap.value = material.roughnessMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.metalnessMap ) {\r\n\r\n\t\t\tuniforms.metalnessMap.value = material.metalnessMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.emissiveMap ) {\r\n\r\n\t\t\tuniforms.emissiveMap.value = material.emissiveMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.bumpMap ) {\r\n\r\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\r\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\r\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.normalMap ) {\r\n\r\n\t\t\tuniforms.normalMap.value = material.normalMap;\r\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\r\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.displacementMap ) {\r\n\r\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\r\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\r\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\r\n\r\n\t\t}\r\n\r\n\t\tconst envMap = properties.get( material ).envMap;\r\n\r\n\t\tif ( envMap ) {\r\n\r\n\t\t\t//uniforms.envMap.value = material.envMap; // part of uniforms common\r\n\t\t\tuniforms.envMapIntensity.value = material.envMapIntensity;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsPhysical( uniforms, material ) {\r\n\r\n\t\trefreshUniformsStandard( uniforms, material );\r\n\r\n\t\tuniforms.reflectivity.value = material.reflectivity; // also part of uniforms common\r\n\r\n\t\tuniforms.clearcoat.value = material.clearcoat;\r\n\t\tuniforms.clearcoatRoughness.value = material.clearcoatRoughness;\r\n\t\tif ( material.sheen ) uniforms.sheen.value.copy( material.sheen );\r\n\r\n\t\tif ( material.clearcoatMap ) {\r\n\r\n\t\t\tuniforms.clearcoatMap.value = material.clearcoatMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.clearcoatRoughnessMap ) {\r\n\r\n\t\t\tuniforms.clearcoatRoughnessMap.value = material.clearcoatRoughnessMap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.clearcoatNormalMap ) {\r\n\r\n\t\t\tuniforms.clearcoatNormalScale.value.copy( material.clearcoatNormalScale );\r\n\t\t\tuniforms.clearcoatNormalMap.value = material.clearcoatNormalMap;\r\n\r\n\t\t\tif ( material.side === BackSide ) {\r\n\r\n\t\t\t\tuniforms.clearcoatNormalScale.value.negate();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tuniforms.transmission.value = material.transmission;\r\n\r\n\t\tif ( material.transmissionMap ) {\r\n\r\n\t\t\tuniforms.transmissionMap.value = material.transmissionMap;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsMatcap( uniforms, material ) {\r\n\r\n\t\tif ( material.matcap ) {\r\n\r\n\t\t\tuniforms.matcap.value = material.matcap;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.bumpMap ) {\r\n\r\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\r\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\r\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.normalMap ) {\r\n\r\n\t\t\tuniforms.normalMap.value = material.normalMap;\r\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\r\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.displacementMap ) {\r\n\r\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\r\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\r\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsDepth( uniforms, material ) {\r\n\r\n\t\tif ( material.displacementMap ) {\r\n\r\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\r\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\r\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsDistance( uniforms, material ) {\r\n\r\n\t\tif ( material.displacementMap ) {\r\n\r\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\r\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\r\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\r\n\r\n\t\t}\r\n\r\n\t\tuniforms.referencePosition.value.copy( material.referencePosition );\r\n\t\tuniforms.nearDistance.value = material.nearDistance;\r\n\t\tuniforms.farDistance.value = material.farDistance;\r\n\r\n\t}\r\n\r\n\tfunction refreshUniformsNormal( uniforms, material ) {\r\n\r\n\t\tif ( material.bumpMap ) {\r\n\r\n\t\t\tuniforms.bumpMap.value = material.bumpMap;\r\n\t\t\tuniforms.bumpScale.value = material.bumpScale;\r\n\t\t\tif ( material.side === BackSide ) uniforms.bumpScale.value *= - 1;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.normalMap ) {\r\n\r\n\t\t\tuniforms.normalMap.value = material.normalMap;\r\n\t\t\tuniforms.normalScale.value.copy( material.normalScale );\r\n\t\t\tif ( material.side === BackSide ) uniforms.normalScale.value.negate();\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.displacementMap ) {\r\n\r\n\t\t\tuniforms.displacementMap.value = material.displacementMap;\r\n\t\t\tuniforms.displacementScale.value = material.displacementScale;\r\n\t\t\tuniforms.displacementBias.value = material.displacementBias;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn {\r\n\t\trefreshFogUniforms: refreshFogUniforms,\r\n\t\trefreshMaterialUniforms: refreshMaterialUniforms\r\n\t};\r\n\r\n}\r\n\r\nfunction createCanvasElement() {\r\n\r\n\tconst canvas = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'canvas' );\r\n\tcanvas.style.display = 'block';\r\n\treturn canvas;\r\n\r\n}\r\n\r\nfunction WebGLRenderer( parameters ) {\r\n\r\n\tparameters = parameters || {};\r\n\r\n\tconst _canvas = parameters.canvas !== undefined ? parameters.canvas : createCanvasElement(),\r\n\t\t_context = parameters.context !== undefined ? parameters.context : null,\r\n\r\n\t\t_alpha = parameters.alpha !== undefined ? parameters.alpha : false,\r\n\t\t_depth = parameters.depth !== undefined ? parameters.depth : true,\r\n\t\t_stencil = parameters.stencil !== undefined ? parameters.stencil : true,\r\n\t\t_antialias = parameters.antialias !== undefined ? parameters.antialias : false,\r\n\t\t_premultipliedAlpha = parameters.premultipliedAlpha !== undefined ? parameters.premultipliedAlpha : true,\r\n\t\t_preserveDrawingBuffer = parameters.preserveDrawingBuffer !== undefined ? parameters.preserveDrawingBuffer : false,\r\n\t\t_powerPreference = parameters.powerPreference !== undefined ? parameters.powerPreference : 'default',\r\n\t\t_failIfMajorPerformanceCaveat = parameters.failIfMajorPerformanceCaveat !== undefined ? parameters.failIfMajorPerformanceCaveat : false;\r\n\r\n\tlet currentRenderList = null;\r\n\tlet currentRenderState = null;\r\n\r\n\t// render() can be called from within a callback triggered by another render.\r\n\t// We track this so that the nested render call gets its state isolated from the parent render call.\r\n\r\n\tconst renderStateStack = [];\r\n\r\n\t// public properties\r\n\r\n\tthis.domElement = _canvas;\r\n\r\n\t// Debug configuration container\r\n\tthis.debug = {\r\n\r\n\t\t/**\r\n\t\t * Enables error checking and reporting when shader programs are being compiled\r\n\t\t * @type {boolean}\r\n\t\t */\r\n\t\tcheckShaderErrors: true\r\n\t};\r\n\r\n\t// clearing\r\n\r\n\tthis.autoClear = true;\r\n\tthis.autoClearColor = true;\r\n\tthis.autoClearDepth = true;\r\n\tthis.autoClearStencil = true;\r\n\r\n\t// scene graph\r\n\r\n\tthis.sortObjects = true;\r\n\r\n\t// user-defined clipping\r\n\r\n\tthis.clippingPlanes = [];\r\n\tthis.localClippingEnabled = false;\r\n\r\n\t// physically based shading\r\n\r\n\tthis.gammaFactor = 2.0;\t// for backwards compatibility\r\n\tthis.outputEncoding = LinearEncoding;\r\n\r\n\t// physical lights\r\n\r\n\tthis.physicallyCorrectLights = false;\r\n\r\n\t// tone mapping\r\n\r\n\tthis.toneMapping = NoToneMapping;\r\n\tthis.toneMappingExposure = 1.0;\r\n\r\n\t// morphs\r\n\r\n\tthis.maxMorphTargets = 8;\r\n\tthis.maxMorphNormals = 4;\r\n\r\n\t// internal properties\r\n\r\n\tconst _this = this;\r\n\r\n\tlet _isContextLost = false;\r\n\r\n\t// internal state cache\r\n\r\n\tlet _framebuffer = null;\r\n\r\n\tlet _currentActiveCubeFace = 0;\r\n\tlet _currentActiveMipmapLevel = 0;\r\n\tlet _currentRenderTarget = null;\r\n\tlet _currentFramebuffer = null;\r\n\tlet _currentMaterialId = - 1;\r\n\r\n\tlet _currentCamera = null;\r\n\r\n\tconst _currentViewport = new Vector4();\r\n\tconst _currentScissor = new Vector4();\r\n\tlet _currentScissorTest = null;\r\n\r\n\t//\r\n\r\n\tlet _width = _canvas.width;\r\n\tlet _height = _canvas.height;\r\n\r\n\tlet _pixelRatio = 1;\r\n\tlet _opaqueSort = null;\r\n\tlet _transparentSort = null;\r\n\r\n\tconst _viewport = new Vector4( 0, 0, _width, _height );\r\n\tconst _scissor = new Vector4( 0, 0, _width, _height );\r\n\tlet _scissorTest = false;\r\n\r\n\t// frustum\r\n\r\n\tconst _frustum = new Frustum();\r\n\r\n\t// clipping\r\n\r\n\tlet _clippingEnabled = false;\r\n\tlet _localClippingEnabled = false;\r\n\r\n\t// camera matrices cache\r\n\r\n\tconst _projScreenMatrix = new Matrix4();\r\n\r\n\tconst _vector3 = new Vector3();\r\n\r\n\tconst _emptyScene = { background: null, fog: null, environment: null, overrideMaterial: null, isScene: true };\r\n\r\n\tfunction getTargetPixelRatio() {\r\n\r\n\t\treturn _currentRenderTarget === null ? _pixelRatio : 1;\r\n\r\n\t}\r\n\r\n\t// initialize\r\n\r\n\tlet _gl = _context;\r\n\r\n\tfunction getContext( contextNames, contextAttributes ) {\r\n\r\n\t\tfor ( let i = 0; i < contextNames.length; i ++ ) {\r\n\r\n\t\t\tconst contextName = contextNames[ i ];\r\n\t\t\tconst context = _canvas.getContext( contextName, contextAttributes );\r\n\t\t\tif ( context !== null ) return context;\r\n\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\r\n\t}\r\n\r\n\ttry {\r\n\r\n\t\tconst contextAttributes = {\r\n\t\t\talpha: _alpha,\r\n\t\t\tdepth: _depth,\r\n\t\t\tstencil: _stencil,\r\n\t\t\tantialias: _antialias,\r\n\t\t\tpremultipliedAlpha: _premultipliedAlpha,\r\n\t\t\tpreserveDrawingBuffer: _preserveDrawingBuffer,\r\n\t\t\tpowerPreference: _powerPreference,\r\n\t\t\tfailIfMajorPerformanceCaveat: _failIfMajorPerformanceCaveat\r\n\t\t};\r\n\r\n\t\t// event listeners must be registered before WebGL context is created, see #12753\r\n\r\n\t\t_canvas.addEventListener( 'webglcontextlost', onContextLost, false );\r\n\t\t_canvas.addEventListener( 'webglcontextrestored', onContextRestore, false );\r\n\r\n\t\tif ( _gl === null ) {\r\n\r\n\t\t\tconst contextNames = [ 'webgl2', 'webgl', 'experimental-webgl' ];\r\n\r\n\t\t\tif ( _this.isWebGL1Renderer === true ) {\r\n\r\n\t\t\t\tcontextNames.shift();\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_gl = getContext( contextNames, contextAttributes );\r\n\r\n\t\t\tif ( _gl === null ) {\r\n\r\n\t\t\t\tif ( getContext( contextNames ) ) {\r\n\r\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context with your selected attributes.' );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthrow new Error( 'Error creating WebGL context.' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Some experimental-webgl implementations do not have getShaderPrecisionFormat\r\n\r\n\t\tif ( _gl.getShaderPrecisionFormat === undefined ) {\r\n\r\n\t\t\t_gl.getShaderPrecisionFormat = function () {\r\n\r\n\t\t\t\treturn { 'rangeMin': 1, 'rangeMax': 1, 'precision': 1 };\r\n\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t} catch ( error ) {\r\n\r\n\t\tconsole.error( 'THREE.WebGLRenderer: ' + error.message );\r\n\t\tthrow error;\r\n\r\n\t}\r\n\r\n\tlet extensions, capabilities, state, info;\r\n\tlet properties, textures, cubemaps, attributes, geometries, objects;\r\n\tlet programCache, materials, renderLists, renderStates, clipping;\r\n\r\n\tlet background, morphtargets, bufferRenderer, indexedBufferRenderer;\r\n\r\n\tlet utils, bindingStates;\r\n\r\n\tfunction initGLContext() {\r\n\r\n\t\textensions = new WebGLExtensions( _gl );\r\n\r\n\t\tcapabilities = new WebGLCapabilities( _gl, extensions, parameters );\r\n\r\n\t\tif ( capabilities.isWebGL2 === false ) {\r\n\r\n\t\t\textensions.get( 'WEBGL_depth_texture' );\r\n\t\t\textensions.get( 'OES_texture_float' );\r\n\t\t\textensions.get( 'OES_texture_half_float' );\r\n\t\t\textensions.get( 'OES_texture_half_float_linear' );\r\n\t\t\textensions.get( 'OES_standard_derivatives' );\r\n\t\t\textensions.get( 'OES_element_index_uint' );\r\n\t\t\textensions.get( 'OES_vertex_array_object' );\r\n\t\t\textensions.get( 'ANGLE_instanced_arrays' );\r\n\r\n\t\t}\r\n\r\n\t\textensions.get( 'OES_texture_float_linear' );\r\n\r\n\t\tutils = new WebGLUtils( _gl, extensions, capabilities );\r\n\r\n\t\tstate = new WebGLState( _gl, extensions, capabilities );\r\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\r\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\r\n\r\n\t\tinfo = new WebGLInfo( _gl );\r\n\t\tproperties = new WebGLProperties();\r\n\t\ttextures = new WebGLTextures( _gl, extensions, state, properties, capabilities, utils, info );\r\n\t\tcubemaps = new WebGLCubeMaps( _this );\r\n\t\tattributes = new WebGLAttributes( _gl, capabilities );\r\n\t\tbindingStates = new WebGLBindingStates( _gl, extensions, attributes, capabilities );\r\n\t\tgeometries = new WebGLGeometries( _gl, attributes, info, bindingStates );\r\n\t\tobjects = new WebGLObjects( _gl, geometries, attributes, info );\r\n\t\tmorphtargets = new WebGLMorphtargets( _gl );\r\n\t\tclipping = new WebGLClipping( properties );\r\n\t\tprogramCache = new WebGLPrograms( _this, cubemaps, extensions, capabilities, bindingStates, clipping );\r\n\t\tmaterials = new WebGLMaterials( properties );\r\n\t\trenderLists = new WebGLRenderLists( properties );\r\n\t\trenderStates = new WebGLRenderStates( extensions, capabilities );\r\n\t\tbackground = new WebGLBackground( _this, cubemaps, state, objects, _premultipliedAlpha );\r\n\r\n\t\tbufferRenderer = new WebGLBufferRenderer( _gl, extensions, info, capabilities );\r\n\t\tindexedBufferRenderer = new WebGLIndexedBufferRenderer( _gl, extensions, info, capabilities );\r\n\r\n\t\tinfo.programs = programCache.programs;\r\n\r\n\t\t_this.capabilities = capabilities;\r\n\t\t_this.extensions = extensions;\r\n\t\t_this.properties = properties;\r\n\t\t_this.renderLists = renderLists;\r\n\t\t_this.state = state;\r\n\t\t_this.info = info;\r\n\r\n\t}\r\n\r\n\tinitGLContext();\r\n\r\n\t// xr\r\n\r\n\tconst xr = new WebXRManager( _this, _gl );\r\n\r\n\tthis.xr = xr;\r\n\r\n\t// shadow map\r\n\r\n\tconst shadowMap = new WebGLShadowMap( _this, objects, capabilities.maxTextureSize );\r\n\r\n\tthis.shadowMap = shadowMap;\r\n\r\n\t// API\r\n\r\n\tthis.getContext = function () {\r\n\r\n\t\treturn _gl;\r\n\r\n\t};\r\n\r\n\tthis.getContextAttributes = function () {\r\n\r\n\t\treturn _gl.getContextAttributes();\r\n\r\n\t};\r\n\r\n\tthis.forceContextLoss = function () {\r\n\r\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\r\n\t\tif ( extension ) extension.loseContext();\r\n\r\n\t};\r\n\r\n\tthis.forceContextRestore = function () {\r\n\r\n\t\tconst extension = extensions.get( 'WEBGL_lose_context' );\r\n\t\tif ( extension ) extension.restoreContext();\r\n\r\n\t};\r\n\r\n\tthis.getPixelRatio = function () {\r\n\r\n\t\treturn _pixelRatio;\r\n\r\n\t};\r\n\r\n\tthis.setPixelRatio = function ( value ) {\r\n\r\n\t\tif ( value === undefined ) return;\r\n\r\n\t\t_pixelRatio = value;\r\n\r\n\t\tthis.setSize( _width, _height, false );\r\n\r\n\t};\r\n\r\n\tthis.getSize = function ( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'WebGLRenderer: .getsize() now requires a Vector2 as an argument' );\r\n\r\n\t\t\ttarget = new Vector2();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.set( _width, _height );\r\n\r\n\t};\r\n\r\n\tthis.setSize = function ( width, height, updateStyle ) {\r\n\r\n\t\tif ( xr.isPresenting ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: Can\\'t change size while VR device is presenting.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\t_width = width;\r\n\t\t_height = height;\r\n\r\n\t\t_canvas.width = Math.floor( width * _pixelRatio );\r\n\t\t_canvas.height = Math.floor( height * _pixelRatio );\r\n\r\n\t\tif ( updateStyle !== false ) {\r\n\r\n\t\t\t_canvas.style.width = width + 'px';\r\n\t\t\t_canvas.style.height = height + 'px';\r\n\r\n\t\t}\r\n\r\n\t\tthis.setViewport( 0, 0, width, height );\r\n\r\n\t};\r\n\r\n\tthis.getDrawingBufferSize = function ( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'WebGLRenderer: .getdrawingBufferSize() now requires a Vector2 as an argument' );\r\n\r\n\t\t\ttarget = new Vector2();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.set( _width * _pixelRatio, _height * _pixelRatio ).floor();\r\n\r\n\t};\r\n\r\n\tthis.setDrawingBufferSize = function ( width, height, pixelRatio ) {\r\n\r\n\t\t_width = width;\r\n\t\t_height = height;\r\n\r\n\t\t_pixelRatio = pixelRatio;\r\n\r\n\t\t_canvas.width = Math.floor( width * pixelRatio );\r\n\t\t_canvas.height = Math.floor( height * pixelRatio );\r\n\r\n\t\tthis.setViewport( 0, 0, width, height );\r\n\r\n\t};\r\n\r\n\tthis.getCurrentViewport = function ( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'WebGLRenderer: .getCurrentViewport() now requires a Vector4 as an argument' );\r\n\r\n\t\t\ttarget = new Vector4();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.copy( _currentViewport );\r\n\r\n\t};\r\n\r\n\tthis.getViewport = function ( target ) {\r\n\r\n\t\treturn target.copy( _viewport );\r\n\r\n\t};\r\n\r\n\tthis.setViewport = function ( x, y, width, height ) {\r\n\r\n\t\tif ( x.isVector4 ) {\r\n\r\n\t\t\t_viewport.set( x.x, x.y, x.z, x.w );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_viewport.set( x, y, width, height );\r\n\r\n\t\t}\r\n\r\n\t\tstate.viewport( _currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor() );\r\n\r\n\t};\r\n\r\n\tthis.getScissor = function ( target ) {\r\n\r\n\t\treturn target.copy( _scissor );\r\n\r\n\t};\r\n\r\n\tthis.setScissor = function ( x, y, width, height ) {\r\n\r\n\t\tif ( x.isVector4 ) {\r\n\r\n\t\t\t_scissor.set( x.x, x.y, x.z, x.w );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_scissor.set( x, y, width, height );\r\n\r\n\t\t}\r\n\r\n\t\tstate.scissor( _currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor() );\r\n\r\n\t};\r\n\r\n\tthis.getScissorTest = function () {\r\n\r\n\t\treturn _scissorTest;\r\n\r\n\t};\r\n\r\n\tthis.setScissorTest = function ( boolean ) {\r\n\r\n\t\tstate.setScissorTest( _scissorTest = boolean );\r\n\r\n\t};\r\n\r\n\tthis.setOpaqueSort = function ( method ) {\r\n\r\n\t\t_opaqueSort = method;\r\n\r\n\t};\r\n\r\n\tthis.setTransparentSort = function ( method ) {\r\n\r\n\t\t_transparentSort = method;\r\n\r\n\t};\r\n\r\n\t// Clearing\r\n\r\n\tthis.getClearColor = function ( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'WebGLRenderer: .getClearColor() now requires a Color as an argument' );\r\n\r\n\t\t\ttarget = new Color();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.copy( background.getClearColor() );\r\n\r\n\t};\r\n\r\n\tthis.setClearColor = function () {\r\n\r\n\t\tbackground.setClearColor.apply( background, arguments );\r\n\r\n\t};\r\n\r\n\tthis.getClearAlpha = function () {\r\n\r\n\t\treturn background.getClearAlpha();\r\n\r\n\t};\r\n\r\n\tthis.setClearAlpha = function () {\r\n\r\n\t\tbackground.setClearAlpha.apply( background, arguments );\r\n\r\n\t};\r\n\r\n\tthis.clear = function ( color, depth, stencil ) {\r\n\r\n\t\tlet bits = 0;\r\n\r\n\t\tif ( color === undefined || color ) bits |= 16384;\r\n\t\tif ( depth === undefined || depth ) bits |= 256;\r\n\t\tif ( stencil === undefined || stencil ) bits |= 1024;\r\n\r\n\t\t_gl.clear( bits );\r\n\r\n\t};\r\n\r\n\tthis.clearColor = function () {\r\n\r\n\t\tthis.clear( true, false, false );\r\n\r\n\t};\r\n\r\n\tthis.clearDepth = function () {\r\n\r\n\t\tthis.clear( false, true, false );\r\n\r\n\t};\r\n\r\n\tthis.clearStencil = function () {\r\n\r\n\t\tthis.clear( false, false, true );\r\n\r\n\t};\r\n\r\n\t//\r\n\r\n\tthis.dispose = function () {\r\n\r\n\t\t_canvas.removeEventListener( 'webglcontextlost', onContextLost, false );\r\n\t\t_canvas.removeEventListener( 'webglcontextrestored', onContextRestore, false );\r\n\r\n\t\trenderLists.dispose();\r\n\t\trenderStates.dispose();\r\n\t\tproperties.dispose();\r\n\t\tcubemaps.dispose();\r\n\t\tobjects.dispose();\r\n\t\tbindingStates.dispose();\r\n\r\n\t\txr.dispose();\r\n\r\n\t\tanimation.stop();\r\n\r\n\t};\r\n\r\n\t// Events\r\n\r\n\tfunction onContextLost( event ) {\r\n\r\n\t\tevent.preventDefault();\r\n\r\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Lost.' );\r\n\r\n\t\t_isContextLost = true;\r\n\r\n\t}\r\n\r\n\tfunction onContextRestore( /* event */ ) {\r\n\r\n\t\tconsole.log( 'THREE.WebGLRenderer: Context Restored.' );\r\n\r\n\t\t_isContextLost = false;\r\n\r\n\t\tinitGLContext();\r\n\r\n\t}\r\n\r\n\tfunction onMaterialDispose( event ) {\r\n\r\n\t\tconst material = event.target;\r\n\r\n\t\tmaterial.removeEventListener( 'dispose', onMaterialDispose );\r\n\r\n\t\tdeallocateMaterial( material );\r\n\r\n\t}\r\n\r\n\t// Buffer deallocation\r\n\r\n\tfunction deallocateMaterial( material ) {\r\n\r\n\t\treleaseMaterialProgramReference( material );\r\n\r\n\t\tproperties.remove( material );\r\n\r\n\t}\r\n\r\n\r\n\tfunction releaseMaterialProgramReference( material ) {\r\n\r\n\t\tconst programInfo = properties.get( material ).program;\r\n\r\n\t\tif ( programInfo !== undefined ) {\r\n\r\n\t\t\tprogramCache.releaseProgram( programInfo );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// Buffer rendering\r\n\r\n\tfunction renderObjectImmediate( object, program ) {\r\n\r\n\t\tobject.render( function ( object ) {\r\n\r\n\t\t\t_this.renderBufferImmediate( object, program );\r\n\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tthis.renderBufferImmediate = function ( object, program ) {\r\n\r\n\t\tbindingStates.initAttributes();\r\n\r\n\t\tconst buffers = properties.get( object );\r\n\r\n\t\tif ( object.hasPositions && ! buffers.position ) buffers.position = _gl.createBuffer();\r\n\t\tif ( object.hasNormals && ! buffers.normal ) buffers.normal = _gl.createBuffer();\r\n\t\tif ( object.hasUvs && ! buffers.uv ) buffers.uv = _gl.createBuffer();\r\n\t\tif ( object.hasColors && ! buffers.color ) buffers.color = _gl.createBuffer();\r\n\r\n\t\tconst programAttributes = program.getAttributes();\r\n\r\n\t\tif ( object.hasPositions ) {\r\n\r\n\t\t\t_gl.bindBuffer( 34962, buffers.position );\r\n\t\t\t_gl.bufferData( 34962, object.positionArray, 35048 );\r\n\r\n\t\t\tbindingStates.enableAttribute( programAttributes.position );\r\n\t\t\t_gl.vertexAttribPointer( programAttributes.position, 3, 5126, false, 0, 0 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( object.hasNormals ) {\r\n\r\n\t\t\t_gl.bindBuffer( 34962, buffers.normal );\r\n\t\t\t_gl.bufferData( 34962, object.normalArray, 35048 );\r\n\r\n\t\t\tbindingStates.enableAttribute( programAttributes.normal );\r\n\t\t\t_gl.vertexAttribPointer( programAttributes.normal, 3, 5126, false, 0, 0 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( object.hasUvs ) {\r\n\r\n\t\t\t_gl.bindBuffer( 34962, buffers.uv );\r\n\t\t\t_gl.bufferData( 34962, object.uvArray, 35048 );\r\n\r\n\t\t\tbindingStates.enableAttribute( programAttributes.uv );\r\n\t\t\t_gl.vertexAttribPointer( programAttributes.uv, 2, 5126, false, 0, 0 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( object.hasColors ) {\r\n\r\n\t\t\t_gl.bindBuffer( 34962, buffers.color );\r\n\t\t\t_gl.bufferData( 34962, object.colorArray, 35048 );\r\n\r\n\t\t\tbindingStates.enableAttribute( programAttributes.color );\r\n\t\t\t_gl.vertexAttribPointer( programAttributes.color, 3, 5126, false, 0, 0 );\r\n\r\n\t\t}\r\n\r\n\t\tbindingStates.disableUnusedAttributes();\r\n\r\n\t\t_gl.drawArrays( 4, 0, object.count );\r\n\r\n\t\tobject.count = 0;\r\n\r\n\t};\r\n\r\n\tthis.renderBufferDirect = function ( camera, scene, geometry, material, object, group ) {\r\n\r\n\t\tif ( scene === null ) scene = _emptyScene; // renderBufferDirect second parameter used to be fog (could be null)\r\n\r\n\t\tconst frontFaceCW = ( object.isMesh && object.matrixWorld.determinant() < 0 );\r\n\r\n\t\tconst program = setProgram( camera, scene, material, object );\r\n\r\n\t\tstate.setMaterial( material, frontFaceCW );\r\n\r\n\t\t//\r\n\r\n\t\tlet index = geometry.index;\r\n\t\tconst position = geometry.attributes.position;\r\n\r\n\t\t//\r\n\r\n\t\tif ( index === null ) {\r\n\r\n\t\t\tif ( position === undefined || position.count === 0 ) return;\r\n\r\n\t\t} else if ( index.count === 0 ) {\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tlet rangeFactor = 1;\r\n\r\n\t\tif ( material.wireframe === true ) {\r\n\r\n\t\t\tindex = geometries.getWireframeAttribute( geometry );\r\n\t\t\trangeFactor = 2;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.morphTargets || material.morphNormals ) {\r\n\r\n\t\t\tmorphtargets.update( object, geometry, material, program );\r\n\r\n\t\t}\r\n\r\n\t\tbindingStates.setup( object, material, program, geometry, index );\r\n\r\n\t\tlet attribute;\r\n\t\tlet renderer = bufferRenderer;\r\n\r\n\t\tif ( index !== null ) {\r\n\r\n\t\t\tattribute = attributes.get( index );\r\n\r\n\t\t\trenderer = indexedBufferRenderer;\r\n\t\t\trenderer.setIndex( attribute );\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tconst dataCount = ( index !== null ) ? index.count : position.count;\r\n\r\n\t\tconst rangeStart = geometry.drawRange.start * rangeFactor;\r\n\t\tconst rangeCount = geometry.drawRange.count * rangeFactor;\r\n\r\n\t\tconst groupStart = group !== null ? group.start * rangeFactor : 0;\r\n\t\tconst groupCount = group !== null ? group.count * rangeFactor : Infinity;\r\n\r\n\t\tconst drawStart = Math.max( rangeStart, groupStart );\r\n\t\tconst drawEnd = Math.min( dataCount, rangeStart + rangeCount, groupStart + groupCount ) - 1;\r\n\r\n\t\tconst drawCount = Math.max( 0, drawEnd - drawStart + 1 );\r\n\r\n\t\tif ( drawCount === 0 ) return;\r\n\r\n\t\t//\r\n\r\n\t\tif ( object.isMesh ) {\r\n\r\n\t\t\tif ( material.wireframe === true ) {\r\n\r\n\t\t\t\tstate.setLineWidth( material.wireframeLinewidth * getTargetPixelRatio() );\r\n\t\t\t\trenderer.setMode( 1 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\trenderer.setMode( 4 );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( object.isLine ) {\r\n\r\n\t\t\tlet lineWidth = material.linewidth;\r\n\r\n\t\t\tif ( lineWidth === undefined ) lineWidth = 1; // Not using Line*Material\r\n\r\n\t\t\tstate.setLineWidth( lineWidth * getTargetPixelRatio() );\r\n\r\n\t\t\tif ( object.isLineSegments ) {\r\n\r\n\t\t\t\trenderer.setMode( 1 );\r\n\r\n\t\t\t} else if ( object.isLineLoop ) {\r\n\r\n\t\t\t\trenderer.setMode( 2 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\trenderer.setMode( 3 );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( object.isPoints ) {\r\n\r\n\t\t\trenderer.setMode( 0 );\r\n\r\n\t\t} else if ( object.isSprite ) {\r\n\r\n\t\t\trenderer.setMode( 4 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( object.isInstancedMesh ) {\r\n\r\n\t\t\trenderer.renderInstances( drawStart, drawCount, object.count );\r\n\r\n\t\t} else if ( geometry.isInstancedBufferGeometry ) {\r\n\r\n\t\t\tconst instanceCount = Math.min( geometry.instanceCount, geometry._maxInstanceCount );\r\n\r\n\t\t\trenderer.renderInstances( drawStart, drawCount, instanceCount );\r\n\r\n\t\t} else {\r\n\r\n\t\t\trenderer.render( drawStart, drawCount );\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\t// Compile\r\n\r\n\tthis.compile = function ( scene, camera ) {\r\n\r\n\t\tcurrentRenderState = renderStates.get( scene );\r\n\t\tcurrentRenderState.init();\r\n\r\n\t\tscene.traverseVisible( function ( object ) {\r\n\r\n\t\t\tif ( object.isLight && object.layers.test( camera.layers ) ) {\r\n\r\n\t\t\t\tcurrentRenderState.pushLight( object );\r\n\r\n\t\t\t\tif ( object.castShadow ) {\r\n\r\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\r\n\t\tcurrentRenderState.setupLights();\r\n\r\n\t\tconst compiled = new WeakMap();\r\n\r\n\t\tscene.traverse( function ( object ) {\r\n\r\n\t\t\tconst material = object.material;\r\n\r\n\t\t\tif ( material ) {\r\n\r\n\t\t\t\tif ( Array.isArray( material ) ) {\r\n\r\n\t\t\t\t\tfor ( let i = 0; i < material.length; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst material2 = material[ i ];\r\n\r\n\t\t\t\t\t\tif ( compiled.has( material2 ) === false ) {\r\n\r\n\t\t\t\t\t\t\tinitMaterial( material2, scene, object );\r\n\t\t\t\t\t\t\tcompiled.set( material2 );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else if ( compiled.has( material ) === false ) {\r\n\r\n\t\t\t\t\tinitMaterial( material, scene, object );\r\n\t\t\t\t\tcompiled.set( material );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t// Animation Loop\r\n\r\n\tlet onAnimationFrameCallback = null;\r\n\r\n\tfunction onAnimationFrame( time ) {\r\n\r\n\t\tif ( xr.isPresenting ) return;\r\n\t\tif ( onAnimationFrameCallback ) onAnimationFrameCallback( time );\r\n\r\n\t}\r\n\r\n\tconst animation = new WebGLAnimation();\r\n\tanimation.setAnimationLoop( onAnimationFrame );\r\n\r\n\tif ( typeof window !== 'undefined' ) animation.setContext( window );\r\n\r\n\tthis.setAnimationLoop = function ( callback ) {\r\n\r\n\t\tonAnimationFrameCallback = callback;\r\n\t\txr.setAnimationLoop( callback );\r\n\r\n\t\t( callback === null ) ? animation.stop() : animation.start();\r\n\r\n\t};\r\n\r\n\t// Rendering\r\n\r\n\tthis.render = function ( scene, camera ) {\r\n\r\n\t\tlet renderTarget, forceClear;\r\n\r\n\t\tif ( arguments[ 2 ] !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the renderTarget argument has been removed. Use .setRenderTarget() instead.' );\r\n\t\t\trenderTarget = arguments[ 2 ];\r\n\r\n\t\t}\r\n\r\n\t\tif ( arguments[ 3 ] !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer.render(): the forceClear argument has been removed. Use .clear() instead.' );\r\n\t\t\tforceClear = arguments[ 3 ];\r\n\r\n\t\t}\r\n\r\n\t\tif ( camera !== undefined && camera.isCamera !== true ) {\r\n\r\n\t\t\tconsole.error( 'THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( _isContextLost === true ) return;\r\n\r\n\t\t// reset caching for this frame\r\n\r\n\t\tbindingStates.resetDefaultState();\r\n\t\t_currentMaterialId = - 1;\r\n\t\t_currentCamera = null;\r\n\r\n\t\t// update scene graph\r\n\r\n\t\tif ( scene.autoUpdate === true ) scene.updateMatrixWorld();\r\n\r\n\t\t// update camera matrices and frustum\r\n\r\n\t\tif ( camera.parent === null ) camera.updateMatrixWorld();\r\n\r\n\t\tif ( xr.enabled === true && xr.isPresenting === true ) {\r\n\r\n\t\t\tcamera = xr.getCamera( camera );\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\t\tif ( scene.isScene === true ) scene.onBeforeRender( _this, scene, camera, renderTarget || _currentRenderTarget );\r\n\r\n\t\tcurrentRenderState = renderStates.get( scene, renderStateStack.length );\r\n\t\tcurrentRenderState.init();\r\n\r\n\t\trenderStateStack.push( currentRenderState );\r\n\r\n\t\t_projScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\r\n\t\t_frustum.setFromProjectionMatrix( _projScreenMatrix );\r\n\r\n\t\t_localClippingEnabled = this.localClippingEnabled;\r\n\t\t_clippingEnabled = clipping.init( this.clippingPlanes, _localClippingEnabled, camera );\r\n\r\n\t\tcurrentRenderList = renderLists.get( scene, camera );\r\n\t\tcurrentRenderList.init();\r\n\r\n\t\tprojectObject( scene, camera, 0, _this.sortObjects );\r\n\r\n\t\tcurrentRenderList.finish();\r\n\r\n\t\tif ( _this.sortObjects === true ) {\r\n\r\n\t\t\tcurrentRenderList.sort( _opaqueSort, _transparentSort );\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tif ( _clippingEnabled === true ) clipping.beginShadows();\r\n\r\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\r\n\r\n\t\tshadowMap.render( shadowsArray, scene, camera );\r\n\r\n\t\tcurrentRenderState.setupLights();\r\n\t\tcurrentRenderState.setupLightsView( camera );\r\n\r\n\t\tif ( _clippingEnabled === true ) clipping.endShadows();\r\n\r\n\t\t//\r\n\r\n\t\tif ( this.info.autoReset === true ) this.info.reset();\r\n\r\n\t\tif ( renderTarget !== undefined ) {\r\n\r\n\t\t\tthis.setRenderTarget( renderTarget );\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tbackground.render( currentRenderList, scene, camera, forceClear );\r\n\r\n\t\t// render scene\r\n\r\n\t\tconst opaqueObjects = currentRenderList.opaque;\r\n\t\tconst transparentObjects = currentRenderList.transparent;\r\n\r\n\t\tif ( opaqueObjects.length > 0 ) renderObjects( opaqueObjects, scene, camera );\r\n\t\tif ( transparentObjects.length > 0 ) renderObjects( transparentObjects, scene, camera );\r\n\r\n\t\t//\r\n\r\n\t\tif ( scene.isScene === true ) scene.onAfterRender( _this, scene, camera );\r\n\r\n\t\t//\r\n\r\n\t\tif ( _currentRenderTarget !== null ) {\r\n\r\n\t\t\t// Generate mipmap if we're using any kind of mipmap filtering\r\n\r\n\t\t\ttextures.updateRenderTargetMipmap( _currentRenderTarget );\r\n\r\n\t\t\t// resolve multisample renderbuffers to a single-sample texture if necessary\r\n\r\n\t\t\ttextures.updateMultisampleRenderTarget( _currentRenderTarget );\r\n\r\n\t\t}\r\n\r\n\t\t// Ensure depth buffer writing is enabled so it can be cleared on next render\r\n\r\n\t\tstate.buffers.depth.setTest( true );\r\n\t\tstate.buffers.depth.setMask( true );\r\n\t\tstate.buffers.color.setMask( true );\r\n\r\n\t\tstate.setPolygonOffset( false );\r\n\r\n\t\t// _gl.finish();\r\n\r\n\t\trenderStateStack.pop();\r\n\t\tif ( renderStateStack.length > 0 ) {\r\n\r\n\t\t\tcurrentRenderState = renderStateStack[ renderStateStack.length - 1 ];\r\n\r\n\t\t} else {\r\n\r\n\t\t\tcurrentRenderState = null;\r\n\r\n\t\t}\r\n\r\n\t\tcurrentRenderList = null;\r\n\r\n\t};\r\n\r\n\tfunction projectObject( object, camera, groupOrder, sortObjects ) {\r\n\r\n\t\tif ( object.visible === false ) return;\r\n\r\n\t\tconst visible = object.layers.test( camera.layers );\r\n\r\n\t\tif ( visible ) {\r\n\r\n\t\t\tif ( object.isGroup ) {\r\n\r\n\t\t\t\tgroupOrder = object.renderOrder;\r\n\r\n\t\t\t} else if ( object.isLOD ) {\r\n\r\n\t\t\t\tif ( object.autoUpdate === true ) object.update( camera );\r\n\r\n\t\t\t} else if ( object.isLight ) {\r\n\r\n\t\t\t\tcurrentRenderState.pushLight( object );\r\n\r\n\t\t\t\tif ( object.castShadow ) {\r\n\r\n\t\t\t\t\tcurrentRenderState.pushShadow( object );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if ( object.isSprite ) {\r\n\r\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsSprite( object ) ) {\r\n\r\n\t\t\t\t\tif ( sortObjects ) {\r\n\r\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\r\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst geometry = objects.update( object );\r\n\t\t\t\t\tconst material = object.material;\r\n\r\n\t\t\t\t\tif ( material.visible ) {\r\n\r\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if ( object.isImmediateRenderObject ) {\r\n\r\n\t\t\t\tif ( sortObjects ) {\r\n\r\n\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\r\n\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tcurrentRenderList.push( object, null, object.material, groupOrder, _vector3.z, null );\r\n\r\n\t\t\t} else if ( object.isMesh || object.isLine || object.isPoints ) {\r\n\r\n\t\t\t\tif ( object.isSkinnedMesh ) {\r\n\r\n\t\t\t\t\t// update skeleton only once in a frame\r\n\r\n\t\t\t\t\tif ( object.skeleton.frame !== info.render.frame ) {\r\n\r\n\t\t\t\t\t\tobject.skeleton.update();\r\n\t\t\t\t\t\tobject.skeleton.frame = info.render.frame;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( ! object.frustumCulled || _frustum.intersectsObject( object ) ) {\r\n\r\n\t\t\t\t\tif ( sortObjects ) {\r\n\r\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( object.matrixWorld )\r\n\t\t\t\t\t\t\t.applyMatrix4( _projScreenMatrix );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst geometry = objects.update( object );\r\n\t\t\t\t\tconst material = object.material;\r\n\r\n\t\t\t\t\tif ( Array.isArray( material ) ) {\r\n\r\n\t\t\t\t\t\tconst groups = geometry.groups;\r\n\r\n\t\t\t\t\t\tfor ( let i = 0, l = groups.length; i < l; i ++ ) {\r\n\r\n\t\t\t\t\t\t\tconst group = groups[ i ];\r\n\t\t\t\t\t\t\tconst groupMaterial = material[ group.materialIndex ];\r\n\r\n\t\t\t\t\t\t\tif ( groupMaterial && groupMaterial.visible ) {\r\n\r\n\t\t\t\t\t\t\t\tcurrentRenderList.push( object, geometry, groupMaterial, groupOrder, _vector3.z, group );\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} else if ( material.visible ) {\r\n\r\n\t\t\t\t\t\tcurrentRenderList.push( object, geometry, material, groupOrder, _vector3.z, null );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst children = object.children;\r\n\r\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\r\n\r\n\t\t\tprojectObject( children[ i ], camera, groupOrder, sortObjects );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction renderObjects( renderList, scene, camera ) {\r\n\r\n\t\tconst overrideMaterial = scene.isScene === true ? scene.overrideMaterial : null;\r\n\r\n\t\tfor ( let i = 0, l = renderList.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst renderItem = renderList[ i ];\r\n\r\n\t\t\tconst object = renderItem.object;\r\n\t\t\tconst geometry = renderItem.geometry;\r\n\t\t\tconst material = overrideMaterial === null ? renderItem.material : overrideMaterial;\r\n\t\t\tconst group = renderItem.group;\r\n\r\n\t\t\tif ( camera.isArrayCamera ) {\r\n\r\n\t\t\t\tconst cameras = camera.cameras;\r\n\r\n\t\t\t\tfor ( let j = 0, jl = cameras.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\tconst camera2 = cameras[ j ];\r\n\r\n\t\t\t\t\tif ( object.layers.test( camera2.layers ) ) {\r\n\r\n\t\t\t\t\t\tstate.viewport( _currentViewport.copy( camera2.viewport ) );\r\n\r\n\t\t\t\t\t\tcurrentRenderState.setupLightsView( camera2 );\r\n\r\n\t\t\t\t\t\trenderObject( object, scene, camera2, geometry, material, group );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\trenderObject( object, scene, camera, geometry, material, group );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction renderObject( object, scene, camera, geometry, material, group ) {\r\n\r\n\t\tobject.onBeforeRender( _this, scene, camera, geometry, material, group );\r\n\r\n\t\tobject.modelViewMatrix.multiplyMatrices( camera.matrixWorldInverse, object.matrixWorld );\r\n\t\tobject.normalMatrix.getNormalMatrix( object.modelViewMatrix );\r\n\r\n\t\tif ( object.isImmediateRenderObject ) {\r\n\r\n\t\t\tconst program = setProgram( camera, scene, material, object );\r\n\r\n\t\t\tstate.setMaterial( material );\r\n\r\n\t\t\tbindingStates.reset();\r\n\r\n\t\t\trenderObjectImmediate( object, program );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_this.renderBufferDirect( camera, scene, geometry, material, object, group );\r\n\r\n\t\t}\r\n\r\n\t\tobject.onAfterRender( _this, scene, camera, geometry, material, group );\r\n\r\n\t}\r\n\r\n\tfunction initMaterial( material, scene, object ) {\r\n\r\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\r\n\r\n\t\tconst materialProperties = properties.get( material );\r\n\r\n\t\tconst lights = currentRenderState.state.lights;\r\n\t\tconst shadowsArray = currentRenderState.state.shadowsArray;\r\n\r\n\t\tconst lightsStateVersion = lights.state.version;\r\n\r\n\t\tconst parameters = programCache.getParameters( material, lights.state, shadowsArray, scene, object );\r\n\t\tconst programCacheKey = programCache.getProgramCacheKey( parameters );\r\n\r\n\t\tlet program = materialProperties.program;\r\n\t\tlet programChange = true;\r\n\r\n\t\tif ( program === undefined ) {\r\n\r\n\t\t\t// new material\r\n\t\t\tmaterial.addEventListener( 'dispose', onMaterialDispose );\r\n\r\n\t\t} else if ( program.cacheKey !== programCacheKey ) {\r\n\r\n\t\t\t// changed glsl or parameters\r\n\t\t\treleaseMaterialProgramReference( material );\r\n\r\n\t\t} else if ( materialProperties.lightsStateVersion !== lightsStateVersion ) {\r\n\r\n\t\t\tprogramChange = false;\r\n\r\n\t\t} else if ( parameters.shaderID !== undefined ) {\r\n\r\n\t\t\t// same glsl and uniform list, envMap still needs the update here to avoid a frame-late effect\r\n\r\n\t\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\r\n\t\t\tmaterialProperties.envMap = cubemaps.get( material.envMap || environment );\r\n\r\n\t\t\treturn;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// only rebuild uniform list\r\n\t\t\tprogramChange = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( programChange ) {\r\n\r\n\t\t\tparameters.uniforms = programCache.getUniforms( material );\r\n\r\n\t\t\tmaterial.onBeforeCompile( parameters, _this );\r\n\r\n\t\t\tprogram = programCache.acquireProgram( parameters, programCacheKey );\r\n\r\n\t\t\tmaterialProperties.program = program;\r\n\t\t\tmaterialProperties.uniforms = parameters.uniforms;\r\n\t\t\tmaterialProperties.outputEncoding = parameters.outputEncoding;\r\n\r\n\t\t}\r\n\r\n\t\tconst uniforms = materialProperties.uniforms;\r\n\r\n\t\tif ( ! material.isShaderMaterial &&\r\n\t\t\t! material.isRawShaderMaterial ||\r\n\t\t\tmaterial.clipping === true ) {\r\n\r\n\t\t\tmaterialProperties.numClippingPlanes = clipping.numPlanes;\r\n\t\t\tmaterialProperties.numIntersection = clipping.numIntersection;\r\n\t\t\tuniforms.clippingPlanes = clipping.uniform;\r\n\r\n\t\t}\r\n\r\n\t\tmaterialProperties.environment = material.isMeshStandardMaterial ? scene.environment : null;\r\n\t\tmaterialProperties.fog = scene.fog;\r\n\t\tmaterialProperties.envMap = cubemaps.get( material.envMap || materialProperties.environment );\r\n\r\n\t\t// store the light setup it was created for\r\n\r\n\t\tmaterialProperties.needsLights = materialNeedsLights( material );\r\n\t\tmaterialProperties.lightsStateVersion = lightsStateVersion;\r\n\r\n\t\tif ( materialProperties.needsLights ) {\r\n\r\n\t\t\t// wire up the material to this renderer's lighting state\r\n\r\n\t\t\tuniforms.ambientLightColor.value = lights.state.ambient;\r\n\t\t\tuniforms.lightProbe.value = lights.state.probe;\r\n\t\t\tuniforms.directionalLights.value = lights.state.directional;\r\n\t\t\tuniforms.directionalLightShadows.value = lights.state.directionalShadow;\r\n\t\t\tuniforms.spotLights.value = lights.state.spot;\r\n\t\t\tuniforms.spotLightShadows.value = lights.state.spotShadow;\r\n\t\t\tuniforms.rectAreaLights.value = lights.state.rectArea;\r\n\t\t\tuniforms.ltc_1.value = lights.state.rectAreaLTC1;\r\n\t\t\tuniforms.ltc_2.value = lights.state.rectAreaLTC2;\r\n\t\t\tuniforms.pointLights.value = lights.state.point;\r\n\t\t\tuniforms.pointLightShadows.value = lights.state.pointShadow;\r\n\t\t\tuniforms.hemisphereLights.value = lights.state.hemi;\r\n\r\n\t\t\tuniforms.directionalShadowMap.value = lights.state.directionalShadowMap;\r\n\t\t\tuniforms.directionalShadowMatrix.value = lights.state.directionalShadowMatrix;\r\n\t\t\tuniforms.spotShadowMap.value = lights.state.spotShadowMap;\r\n\t\t\tuniforms.spotShadowMatrix.value = lights.state.spotShadowMatrix;\r\n\t\t\tuniforms.pointShadowMap.value = lights.state.pointShadowMap;\r\n\t\t\tuniforms.pointShadowMatrix.value = lights.state.pointShadowMatrix;\r\n\t\t\t// TODO (abelnation): add area lights shadow info to uniforms\r\n\r\n\t\t}\r\n\r\n\t\tconst progUniforms = materialProperties.program.getUniforms();\r\n\t\tconst uniformsList = WebGLUniforms.seqWithValue( progUniforms.seq, uniforms );\r\n\r\n\t\tmaterialProperties.uniformsList = uniformsList;\r\n\r\n\t}\r\n\r\n\tfunction setProgram( camera, scene, material, object ) {\r\n\r\n\t\tif ( scene.isScene !== true ) scene = _emptyScene; // scene could be a Mesh, Line, Points, ...\r\n\r\n\t\ttextures.resetTextureUnits();\r\n\r\n\t\tconst fog = scene.fog;\r\n\t\tconst environment = material.isMeshStandardMaterial ? scene.environment : null;\r\n\t\tconst encoding = ( _currentRenderTarget === null ) ? _this.outputEncoding : _currentRenderTarget.texture.encoding;\r\n\t\tconst envMap = cubemaps.get( material.envMap || environment );\r\n\r\n\t\tconst materialProperties = properties.get( material );\r\n\t\tconst lights = currentRenderState.state.lights;\r\n\r\n\t\tif ( _clippingEnabled === true ) {\r\n\r\n\t\t\tif ( _localClippingEnabled === true || camera !== _currentCamera ) {\r\n\r\n\t\t\t\tconst useCache =\r\n\t\t\t\t\tcamera === _currentCamera &&\r\n\t\t\t\t\tmaterial.id === _currentMaterialId;\r\n\r\n\t\t\t\t// we might want to call this function with some ClippingGroup\r\n\t\t\t\t// object instead of the material, once it becomes feasible\r\n\t\t\t\t// (#8465, #8379)\r\n\t\t\t\tclipping.setState( material, camera, useCache );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.version === materialProperties.__version ) {\r\n\r\n\t\t\tif ( material.fog && materialProperties.fog !== fog ) {\r\n\r\n\t\t\t\tinitMaterial( material, scene, object );\r\n\r\n\t\t\t} else if ( materialProperties.environment !== environment ) {\r\n\r\n\t\t\t\tinitMaterial( material, scene, object );\r\n\r\n\t\t\t} else if ( materialProperties.needsLights && ( materialProperties.lightsStateVersion !== lights.state.version ) ) {\r\n\r\n\t\t\t\tinitMaterial( material, scene, object );\r\n\r\n\t\t\t} else if ( materialProperties.numClippingPlanes !== undefined &&\r\n\t\t\t\t( materialProperties.numClippingPlanes !== clipping.numPlanes ||\r\n\t\t\t\tmaterialProperties.numIntersection !== clipping.numIntersection ) ) {\r\n\r\n\t\t\t\tinitMaterial( material, scene, object );\r\n\r\n\t\t\t} else if ( materialProperties.outputEncoding !== encoding ) {\r\n\r\n\t\t\t\tinitMaterial( material, scene, object );\r\n\r\n\t\t\t} else if ( materialProperties.envMap !== envMap ) {\r\n\r\n\t\t\t\tinitMaterial( material, scene, object );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tinitMaterial( material, scene, object );\r\n\t\t\tmaterialProperties.__version = material.version;\r\n\r\n\t\t}\r\n\r\n\t\tlet refreshProgram = false;\r\n\t\tlet refreshMaterial = false;\r\n\t\tlet refreshLights = false;\r\n\r\n\t\tconst program = materialProperties.program,\r\n\t\t\tp_uniforms = program.getUniforms(),\r\n\t\t\tm_uniforms = materialProperties.uniforms;\r\n\r\n\t\tif ( state.useProgram( program.program ) ) {\r\n\r\n\t\t\trefreshProgram = true;\r\n\t\t\trefreshMaterial = true;\r\n\t\t\trefreshLights = true;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.id !== _currentMaterialId ) {\r\n\r\n\t\t\t_currentMaterialId = material.id;\r\n\r\n\t\t\trefreshMaterial = true;\r\n\r\n\t\t}\r\n\r\n\t\tif ( refreshProgram || _currentCamera !== camera ) {\r\n\r\n\t\t\tp_uniforms.setValue( _gl, 'projectionMatrix', camera.projectionMatrix );\r\n\r\n\t\t\tif ( capabilities.logarithmicDepthBuffer ) {\r\n\r\n\t\t\t\tp_uniforms.setValue( _gl, 'logDepthBufFC',\r\n\t\t\t\t\t2.0 / ( Math.log( camera.far + 1.0 ) / Math.LN2 ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( _currentCamera !== camera ) {\r\n\r\n\t\t\t\t_currentCamera = camera;\r\n\r\n\t\t\t\t// lighting uniforms depend on the camera so enforce an update\r\n\t\t\t\t// now, in case this material supports lights - or later, when\r\n\t\t\t\t// the next material that does gets activated:\r\n\r\n\t\t\t\trefreshMaterial = true;\t\t// set to true on material change\r\n\t\t\t\trefreshLights = true;\t\t// remains set until update done\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// load material specific uniforms\r\n\t\t\t// (shader material also gets them for the sake of genericity)\r\n\r\n\t\t\tif ( material.isShaderMaterial ||\r\n\t\t\t\tmaterial.isMeshPhongMaterial ||\r\n\t\t\t\tmaterial.isMeshToonMaterial ||\r\n\t\t\t\tmaterial.isMeshStandardMaterial ||\r\n\t\t\t\tmaterial.envMap ) {\r\n\r\n\t\t\t\tconst uCamPos = p_uniforms.map.cameraPosition;\r\n\r\n\t\t\t\tif ( uCamPos !== undefined ) {\r\n\r\n\t\t\t\t\tuCamPos.setValue( _gl,\r\n\t\t\t\t\t\t_vector3.setFromMatrixPosition( camera.matrixWorld ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( material.isMeshPhongMaterial ||\r\n\t\t\t\tmaterial.isMeshToonMaterial ||\r\n\t\t\t\tmaterial.isMeshLambertMaterial ||\r\n\t\t\t\tmaterial.isMeshBasicMaterial ||\r\n\t\t\t\tmaterial.isMeshStandardMaterial ||\r\n\t\t\t\tmaterial.isShaderMaterial ) {\r\n\r\n\t\t\t\tp_uniforms.setValue( _gl, 'isOrthographic', camera.isOrthographicCamera === true );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( material.isMeshPhongMaterial ||\r\n\t\t\t\tmaterial.isMeshToonMaterial ||\r\n\t\t\t\tmaterial.isMeshLambertMaterial ||\r\n\t\t\t\tmaterial.isMeshBasicMaterial ||\r\n\t\t\t\tmaterial.isMeshStandardMaterial ||\r\n\t\t\t\tmaterial.isShaderMaterial ||\r\n\t\t\t\tmaterial.isShadowMaterial ||\r\n\t\t\t\tmaterial.skinning ) {\r\n\r\n\t\t\t\tp_uniforms.setValue( _gl, 'viewMatrix', camera.matrixWorldInverse );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// skinning uniforms must be set even if material didn't change\r\n\t\t// auto-setting of texture unit for bone texture must go before other textures\r\n\t\t// otherwise textures used for skinning can take over texture units reserved for other material textures\r\n\r\n\t\tif ( material.skinning ) {\r\n\r\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrix' );\r\n\t\t\tp_uniforms.setOptional( _gl, object, 'bindMatrixInverse' );\r\n\r\n\t\t\tconst skeleton = object.skeleton;\r\n\r\n\t\t\tif ( skeleton ) {\r\n\r\n\t\t\t\tconst bones = skeleton.bones;\r\n\r\n\t\t\t\tif ( capabilities.floatVertexTextures ) {\r\n\r\n\t\t\t\t\tif ( skeleton.boneTexture === null ) {\r\n\r\n\t\t\t\t\t\t// layout (1 matrix = 4 pixels)\r\n\t\t\t\t\t\t// RGBA RGBA RGBA RGBA (=> column1, column2, column3, column4)\r\n\t\t\t\t\t\t// with 8x8 pixel texture max 16 bones * 4 pixels = (8 * 8)\r\n\t\t\t\t\t\t// 16x16 pixel texture max 64 bones * 4 pixels = (16 * 16)\r\n\t\t\t\t\t\t// 32x32 pixel texture max 256 bones * 4 pixels = (32 * 32)\r\n\t\t\t\t\t\t// 64x64 pixel texture max 1024 bones * 4 pixels = (64 * 64)\r\n\r\n\r\n\t\t\t\t\t\tlet size = Math.sqrt( bones.length * 4 ); // 4 pixels needed for 1 matrix\r\n\t\t\t\t\t\tsize = MathUtils.ceilPowerOfTwo( size );\r\n\t\t\t\t\t\tsize = Math.max( size, 4 );\r\n\r\n\t\t\t\t\t\tconst boneMatrices = new Float32Array( size * size * 4 ); // 4 floats per RGBA pixel\r\n\t\t\t\t\t\tboneMatrices.set( skeleton.boneMatrices ); // copy current values\r\n\r\n\t\t\t\t\t\tconst boneTexture = new DataTexture( boneMatrices, size, size, RGBAFormat, FloatType );\r\n\r\n\t\t\t\t\t\tskeleton.boneMatrices = boneMatrices;\r\n\t\t\t\t\t\tskeleton.boneTexture = boneTexture;\r\n\t\t\t\t\t\tskeleton.boneTextureSize = size;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTexture', skeleton.boneTexture, textures );\r\n\t\t\t\t\tp_uniforms.setValue( _gl, 'boneTextureSize', skeleton.boneTextureSize );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tp_uniforms.setOptional( _gl, skeleton, 'boneMatrices' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( refreshMaterial || materialProperties.receiveShadow !== object.receiveShadow ) {\r\n\r\n\t\t\tmaterialProperties.receiveShadow = object.receiveShadow;\r\n\t\t\tp_uniforms.setValue( _gl, 'receiveShadow', object.receiveShadow );\r\n\r\n\t\t}\r\n\r\n\t\tif ( refreshMaterial ) {\r\n\r\n\t\t\tp_uniforms.setValue( _gl, 'toneMappingExposure', _this.toneMappingExposure );\r\n\r\n\t\t\tif ( materialProperties.needsLights ) {\r\n\r\n\t\t\t\t// the current material requires lighting info\r\n\r\n\t\t\t\t// note: all lighting uniforms are always set correctly\r\n\t\t\t\t// they simply reference the renderer's state for their\r\n\t\t\t\t// values\r\n\t\t\t\t//\r\n\t\t\t\t// use the current material's .needsUpdate flags to set\r\n\t\t\t\t// the GL state when required\r\n\r\n\t\t\t\tmarkUniformsLightsNeedsUpdate( m_uniforms, refreshLights );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// refresh uniforms common to several materials\r\n\r\n\t\t\tif ( fog && material.fog ) {\r\n\r\n\t\t\t\tmaterials.refreshFogUniforms( m_uniforms, fog );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmaterials.refreshMaterialUniforms( m_uniforms, material, _pixelRatio, _height );\r\n\r\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.isShaderMaterial && material.uniformsNeedUpdate === true ) {\r\n\r\n\t\t\tWebGLUniforms.upload( _gl, materialProperties.uniformsList, m_uniforms, textures );\r\n\t\t\tmaterial.uniformsNeedUpdate = false;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.isSpriteMaterial ) {\r\n\r\n\t\t\tp_uniforms.setValue( _gl, 'center', object.center );\r\n\r\n\t\t}\r\n\r\n\t\t// common matrices\r\n\r\n\t\tp_uniforms.setValue( _gl, 'modelViewMatrix', object.modelViewMatrix );\r\n\t\tp_uniforms.setValue( _gl, 'normalMatrix', object.normalMatrix );\r\n\t\tp_uniforms.setValue( _gl, 'modelMatrix', object.matrixWorld );\r\n\r\n\t\treturn program;\r\n\r\n\t}\r\n\r\n\t// If uniforms are marked as clean, they don't need to be loaded to the GPU.\r\n\r\n\tfunction markUniformsLightsNeedsUpdate( uniforms, value ) {\r\n\r\n\t\tuniforms.ambientLightColor.needsUpdate = value;\r\n\t\tuniforms.lightProbe.needsUpdate = value;\r\n\r\n\t\tuniforms.directionalLights.needsUpdate = value;\r\n\t\tuniforms.directionalLightShadows.needsUpdate = value;\r\n\t\tuniforms.pointLights.needsUpdate = value;\r\n\t\tuniforms.pointLightShadows.needsUpdate = value;\r\n\t\tuniforms.spotLights.needsUpdate = value;\r\n\t\tuniforms.spotLightShadows.needsUpdate = value;\r\n\t\tuniforms.rectAreaLights.needsUpdate = value;\r\n\t\tuniforms.hemisphereLights.needsUpdate = value;\r\n\r\n\t}\r\n\r\n\tfunction materialNeedsLights( material ) {\r\n\r\n\t\treturn material.isMeshLambertMaterial || material.isMeshToonMaterial || material.isMeshPhongMaterial ||\r\n\t\t\tmaterial.isMeshStandardMaterial || material.isShadowMaterial ||\r\n\t\t\t( material.isShaderMaterial && material.lights === true );\r\n\r\n\t}\r\n\r\n\t//\r\n\tthis.setFramebuffer = function ( value ) {\r\n\r\n\t\tif ( _framebuffer !== value && _currentRenderTarget === null ) _gl.bindFramebuffer( 36160, value );\r\n\r\n\t\t_framebuffer = value;\r\n\r\n\t};\r\n\r\n\tthis.getActiveCubeFace = function () {\r\n\r\n\t\treturn _currentActiveCubeFace;\r\n\r\n\t};\r\n\r\n\tthis.getActiveMipmapLevel = function () {\r\n\r\n\t\treturn _currentActiveMipmapLevel;\r\n\r\n\t};\r\n\r\n\tthis.getRenderList = function () {\r\n\r\n\t\treturn currentRenderList;\r\n\r\n\t};\r\n\r\n\tthis.setRenderList = function ( renderList ) {\r\n\r\n\t\tcurrentRenderList = renderList;\r\n\r\n\t};\r\n\r\n\tthis.getRenderTarget = function () {\r\n\r\n\t\treturn _currentRenderTarget;\r\n\r\n\t};\r\n\r\n\tthis.setRenderTarget = function ( renderTarget, activeCubeFace = 0, activeMipmapLevel = 0 ) {\r\n\r\n\t\t_currentRenderTarget = renderTarget;\r\n\t\t_currentActiveCubeFace = activeCubeFace;\r\n\t\t_currentActiveMipmapLevel = activeMipmapLevel;\r\n\r\n\t\tif ( renderTarget && properties.get( renderTarget ).__webglFramebuffer === undefined ) {\r\n\r\n\t\t\ttextures.setupRenderTarget( renderTarget );\r\n\r\n\t\t}\r\n\r\n\t\tlet framebuffer = _framebuffer;\r\n\t\tlet isCube = false;\r\n\r\n\t\tif ( renderTarget ) {\r\n\r\n\t\t\tconst __webglFramebuffer = properties.get( renderTarget ).__webglFramebuffer;\r\n\r\n\t\t\tif ( renderTarget.isWebGLCubeRenderTarget ) {\r\n\r\n\t\t\t\tframebuffer = __webglFramebuffer[ activeCubeFace ];\r\n\t\t\t\tisCube = true;\r\n\r\n\t\t\t} else if ( renderTarget.isWebGLMultisampleRenderTarget ) {\r\n\r\n\t\t\t\tframebuffer = properties.get( renderTarget ).__webglMultisampledFramebuffer;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tframebuffer = __webglFramebuffer;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_currentViewport.copy( renderTarget.viewport );\r\n\t\t\t_currentScissor.copy( renderTarget.scissor );\r\n\t\t\t_currentScissorTest = renderTarget.scissorTest;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_currentViewport.copy( _viewport ).multiplyScalar( _pixelRatio ).floor();\r\n\t\t\t_currentScissor.copy( _scissor ).multiplyScalar( _pixelRatio ).floor();\r\n\t\t\t_currentScissorTest = _scissorTest;\r\n\r\n\t\t}\r\n\r\n\t\tif ( _currentFramebuffer !== framebuffer ) {\r\n\r\n\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\r\n\t\t\t_currentFramebuffer = framebuffer;\r\n\r\n\t\t}\r\n\r\n\t\tstate.viewport( _currentViewport );\r\n\t\tstate.scissor( _currentScissor );\r\n\t\tstate.setScissorTest( _currentScissorTest );\r\n\r\n\t\tif ( isCube ) {\r\n\r\n\t\t\tconst textureProperties = properties.get( renderTarget.texture );\r\n\t\t\t_gl.framebufferTexture2D( 36160, 36064, 34069 + activeCubeFace, textureProperties.__webglTexture, activeMipmapLevel );\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tthis.readRenderTargetPixels = function ( renderTarget, x, y, width, height, buffer, activeCubeFaceIndex ) {\r\n\r\n\t\tif ( ! ( renderTarget && renderTarget.isWebGLRenderTarget ) ) {\r\n\r\n\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tlet framebuffer = properties.get( renderTarget ).__webglFramebuffer;\r\n\r\n\t\tif ( renderTarget.isWebGLCubeRenderTarget && activeCubeFaceIndex !== undefined ) {\r\n\r\n\t\t\tframebuffer = framebuffer[ activeCubeFaceIndex ];\r\n\r\n\t\t}\r\n\r\n\t\tif ( framebuffer ) {\r\n\r\n\t\t\tlet restore = false;\r\n\r\n\t\t\tif ( framebuffer !== _currentFramebuffer ) {\r\n\r\n\t\t\t\t_gl.bindFramebuffer( 36160, framebuffer );\r\n\r\n\t\t\t\trestore = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\r\n\t\t\t\tconst texture = renderTarget.texture;\r\n\t\t\t\tconst textureFormat = texture.format;\r\n\t\t\t\tconst textureType = texture.type;\r\n\r\n\t\t\t\tif ( textureFormat !== RGBAFormat && utils.convert( textureFormat ) !== _gl.getParameter( 35739 ) ) {\r\n\r\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.' );\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( textureType !== UnsignedByteType && utils.convert( textureType ) !== _gl.getParameter( 35738 ) && // IE11, Edge and Chrome Mac < 52 (#9513)\r\n\t\t\t\t\t! ( textureType === FloatType && ( capabilities.isWebGL2 || extensions.get( 'OES_texture_float' ) || extensions.get( 'WEBGL_color_buffer_float' ) ) ) && // Chrome Mac >= 52 and Firefox\r\n\t\t\t\t\t! ( textureType === HalfFloatType && ( capabilities.isWebGL2 ? extensions.get( 'EXT_color_buffer_float' ) : extensions.get( 'EXT_color_buffer_half_float' ) ) ) ) {\r\n\r\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.' );\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( _gl.checkFramebufferStatus( 36160 ) === 36053 ) {\r\n\r\n\t\t\t\t\t// the following if statement ensures valid read requests (no out-of-bounds pixels, see #8604)\r\n\r\n\t\t\t\t\tif ( ( x >= 0 && x <= ( renderTarget.width - width ) ) && ( y >= 0 && y <= ( renderTarget.height - height ) ) ) {\r\n\r\n\t\t\t\t\t\t_gl.readPixels( x, y, width, height, utils.convert( textureFormat ), utils.convert( textureType ), buffer );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.error( 'THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} finally {\r\n\r\n\t\t\t\tif ( restore ) {\r\n\r\n\t\t\t\t\t_gl.bindFramebuffer( 36160, _currentFramebuffer );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tthis.copyFramebufferToTexture = function ( position, texture, level = 0 ) {\r\n\r\n\t\tconst levelScale = Math.pow( 2, - level );\r\n\t\tconst width = Math.floor( texture.image.width * levelScale );\r\n\t\tconst height = Math.floor( texture.image.height * levelScale );\r\n\t\tconst glFormat = utils.convert( texture.format );\r\n\r\n\t\ttextures.setTexture2D( texture, 0 );\r\n\r\n\t\t_gl.copyTexImage2D( 3553, level, glFormat, position.x, position.y, width, height, 0 );\r\n\r\n\t\tstate.unbindTexture();\r\n\r\n\t};\r\n\r\n\tthis.copyTextureToTexture = function ( position, srcTexture, dstTexture, level = 0 ) {\r\n\r\n\t\tconst width = srcTexture.image.width;\r\n\t\tconst height = srcTexture.image.height;\r\n\t\tconst glFormat = utils.convert( dstTexture.format );\r\n\t\tconst glType = utils.convert( dstTexture.type );\r\n\r\n\t\ttextures.setTexture2D( dstTexture, 0 );\r\n\r\n\t\t// As another texture upload may have changed pixelStorei\r\n\t\t// parameters, make sure they are correct for the dstTexture\r\n\t\t_gl.pixelStorei( 37440, dstTexture.flipY );\r\n\t\t_gl.pixelStorei( 37441, dstTexture.premultiplyAlpha );\r\n\t\t_gl.pixelStorei( 3317, dstTexture.unpackAlignment );\r\n\r\n\t\tif ( srcTexture.isDataTexture ) {\r\n\r\n\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, width, height, glFormat, glType, srcTexture.image.data );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( srcTexture.isCompressedTexture ) {\r\n\r\n\t\t\t\t_gl.compressedTexSubImage2D( 3553, level, position.x, position.y, srcTexture.mipmaps[ 0 ].width, srcTexture.mipmaps[ 0 ].height, glFormat, srcTexture.mipmaps[ 0 ].data );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t_gl.texSubImage2D( 3553, level, position.x, position.y, glFormat, glType, srcTexture.image );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Generate mipmaps only when copying level 0\r\n\t\tif ( level === 0 && dstTexture.generateMipmaps ) _gl.generateMipmap( 3553 );\r\n\r\n\t\tstate.unbindTexture();\r\n\r\n\t};\r\n\r\n\tthis.initTexture = function ( texture ) {\r\n\r\n\t\ttextures.setTexture2D( texture, 0 );\r\n\r\n\t\tstate.unbindTexture();\r\n\r\n\t};\r\n\r\n\tthis.resetState = function () {\r\n\r\n\t\tstate.reset();\r\n\t\tbindingStates.reset();\r\n\r\n\t};\r\n\r\n\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\r\n\r\n\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction WebGL1Renderer( parameters ) {\r\n\r\n\tWebGLRenderer.call( this, parameters );\r\n\r\n}\r\n\r\nWebGL1Renderer.prototype = Object.assign( Object.create( WebGLRenderer.prototype ), {\r\n\r\n\tconstructor: WebGL1Renderer,\r\n\r\n\tisWebGL1Renderer: true\r\n\r\n} );\r\n\r\nclass FogExp2 {\r\n\r\n\tconstructor( color, density ) {\r\n\r\n\t\tObject.defineProperty( this, 'isFogExp2', { value: true } );\r\n\r\n\t\tthis.name = '';\r\n\r\n\t\tthis.color = new Color( color );\r\n\t\tthis.density = ( density !== undefined ) ? density : 0.00025;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new FogExp2( this.color, this.density );\r\n\r\n\t}\r\n\r\n\ttoJSON( /* meta */ ) {\r\n\r\n\t\treturn {\r\n\t\t\ttype: 'FogExp2',\r\n\t\t\tcolor: this.color.getHex(),\r\n\t\t\tdensity: this.density\r\n\t\t};\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass Fog {\r\n\r\n\tconstructor( color, near, far ) {\r\n\r\n\t\tObject.defineProperty( this, 'isFog', { value: true } );\r\n\r\n\t\tthis.name = '';\r\n\r\n\t\tthis.color = new Color( color );\r\n\r\n\t\tthis.near = ( near !== undefined ) ? near : 1;\r\n\t\tthis.far = ( far !== undefined ) ? far : 1000;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new Fog( this.color, this.near, this.far );\r\n\r\n\t}\r\n\r\n\ttoJSON( /* meta */ ) {\r\n\r\n\t\treturn {\r\n\t\t\ttype: 'Fog',\r\n\t\t\tcolor: this.color.getHex(),\r\n\t\t\tnear: this.near,\r\n\t\t\tfar: this.far\r\n\t\t};\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass Scene extends Object3D {\r\n\r\n\tconstructor() {\r\n\r\n\t\tsuper();\r\n\r\n\t\tObject.defineProperty( this, 'isScene', { value: true } );\r\n\r\n\t\tthis.type = 'Scene';\r\n\r\n\t\tthis.background = null;\r\n\t\tthis.environment = null;\r\n\t\tthis.fog = null;\r\n\r\n\t\tthis.overrideMaterial = null;\r\n\r\n\t\tthis.autoUpdate = true; // checked by the renderer\r\n\r\n\t\tif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\r\n\r\n\t\t\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'observe', { detail: this } ) ); // eslint-disable-line no-undef\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tcopy( source, recursive ) {\r\n\r\n\t\tsuper.copy( source, recursive );\r\n\r\n\t\tif ( source.background !== null ) this.background = source.background.clone();\r\n\t\tif ( source.environment !== null ) this.environment = source.environment.clone();\r\n\t\tif ( source.fog !== null ) this.fog = source.fog.clone();\r\n\r\n\t\tif ( source.overrideMaterial !== null ) this.overrideMaterial = source.overrideMaterial.clone();\r\n\r\n\t\tthis.autoUpdate = source.autoUpdate;\r\n\t\tthis.matrixAutoUpdate = source.matrixAutoUpdate;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoJSON( meta ) {\r\n\r\n\t\tconst data = super.toJSON( meta );\r\n\r\n\t\tif ( this.background !== null ) data.object.background = this.background.toJSON( meta );\r\n\t\tif ( this.environment !== null ) data.object.environment = this.environment.toJSON( meta );\r\n\t\tif ( this.fog !== null ) data.object.fog = this.fog.toJSON();\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction InterleavedBuffer( array, stride ) {\r\n\r\n\tthis.array = array;\r\n\tthis.stride = stride;\r\n\tthis.count = array !== undefined ? array.length / stride : 0;\r\n\r\n\tthis.usage = StaticDrawUsage;\r\n\tthis.updateRange = { offset: 0, count: - 1 };\r\n\r\n\tthis.version = 0;\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n}\r\n\r\nObject.defineProperty( InterleavedBuffer.prototype, 'needsUpdate', {\r\n\r\n\tset: function ( value ) {\r\n\r\n\t\tif ( value === true ) this.version ++;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( InterleavedBuffer.prototype, {\r\n\r\n\tisInterleavedBuffer: true,\r\n\r\n\tonUploadCallback: function () {},\r\n\r\n\tsetUsage: function ( value ) {\r\n\r\n\t\tthis.usage = value;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tthis.array = new source.array.constructor( source.array );\r\n\t\tthis.count = source.count;\r\n\t\tthis.stride = source.stride;\r\n\t\tthis.usage = source.usage;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopyAt: function ( index1, attribute, index2 ) {\r\n\r\n\t\tindex1 *= this.stride;\r\n\t\tindex2 *= attribute.stride;\r\n\r\n\t\tfor ( let i = 0, l = this.stride; i < l; i ++ ) {\r\n\r\n\t\t\tthis.array[ index1 + i ] = attribute.array[ index2 + i ];\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tset: function ( value, offset = 0 ) {\r\n\r\n\t\tthis.array.set( value, offset );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tclone: function ( data ) {\r\n\r\n\t\tif ( data.arrayBuffers === undefined ) {\r\n\r\n\t\t\tdata.arrayBuffers = {};\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.array.buffer._uuid === undefined ) {\r\n\r\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\r\n\r\n\t\t}\r\n\r\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\r\n\r\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = this.array.slice( 0 ).buffer;\r\n\r\n\t\t}\r\n\r\n\t\tconst array = new this.array.constructor( data.arrayBuffers[ this.array.buffer._uuid ] );\r\n\r\n\t\tconst ib = new InterleavedBuffer( array, this.stride );\r\n\t\tib.setUsage( this.usage );\r\n\r\n\t\treturn ib;\r\n\r\n\t},\r\n\r\n\tonUpload: function ( callback ) {\r\n\r\n\t\tthis.onUploadCallback = callback;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( data ) {\r\n\r\n\t\tif ( data.arrayBuffers === undefined ) {\r\n\r\n\t\t\tdata.arrayBuffers = {};\r\n\r\n\t\t}\r\n\r\n\t\t// generate UUID for array buffer if necessary\r\n\r\n\t\tif ( this.array.buffer._uuid === undefined ) {\r\n\r\n\t\t\tthis.array.buffer._uuid = MathUtils.generateUUID();\r\n\r\n\t\t}\r\n\r\n\t\tif ( data.arrayBuffers[ this.array.buffer._uuid ] === undefined ) {\r\n\r\n\t\t\tdata.arrayBuffers[ this.array.buffer._uuid ] = Array.prototype.slice.call( new Uint32Array( this.array.buffer ) );\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\treturn {\r\n\t\t\tuuid: this.uuid,\r\n\t\t\tbuffer: this.array.buffer._uuid,\r\n\t\t\ttype: this.array.constructor.name,\r\n\t\t\tstride: this.stride\r\n\t\t};\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst _vector$6 = new Vector3();\r\n\r\nfunction InterleavedBufferAttribute( interleavedBuffer, itemSize, offset, normalized ) {\r\n\r\n\tthis.name = '';\r\n\r\n\tthis.data = interleavedBuffer;\r\n\tthis.itemSize = itemSize;\r\n\tthis.offset = offset;\r\n\r\n\tthis.normalized = normalized === true;\r\n\r\n}\r\n\r\nObject.defineProperties( InterleavedBufferAttribute.prototype, {\r\n\r\n\tcount: {\r\n\r\n\t\tget: function () {\r\n\r\n\t\t\treturn this.data.count;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tarray: {\r\n\r\n\t\tget: function () {\r\n\r\n\t\t\treturn this.data.array;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tneedsUpdate: {\r\n\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tthis.data.needsUpdate = value;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( InterleavedBufferAttribute.prototype, {\r\n\r\n\tisInterleavedBufferAttribute: true,\r\n\r\n\tapplyMatrix4: function ( m ) {\r\n\r\n\t\tfor ( let i = 0, l = this.data.count; i < l; i ++ ) {\r\n\r\n\t\t\t_vector$6.x = this.getX( i );\r\n\t\t\t_vector$6.y = this.getY( i );\r\n\t\t\t_vector$6.z = this.getZ( i );\r\n\r\n\t\t\t_vector$6.applyMatrix4( m );\r\n\r\n\t\t\tthis.setXYZ( i, _vector$6.x, _vector$6.y, _vector$6.z );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetX: function ( index, x ) {\r\n\r\n\t\tthis.data.array[ index * this.data.stride + this.offset ] = x;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetY: function ( index, y ) {\r\n\r\n\t\tthis.data.array[ index * this.data.stride + this.offset + 1 ] = y;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetZ: function ( index, z ) {\r\n\r\n\t\tthis.data.array[ index * this.data.stride + this.offset + 2 ] = z;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetW: function ( index, w ) {\r\n\r\n\t\tthis.data.array[ index * this.data.stride + this.offset + 3 ] = w;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetX: function ( index ) {\r\n\r\n\t\treturn this.data.array[ index * this.data.stride + this.offset ];\r\n\r\n\t},\r\n\r\n\tgetY: function ( index ) {\r\n\r\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 1 ];\r\n\r\n\t},\r\n\r\n\tgetZ: function ( index ) {\r\n\r\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 2 ];\r\n\r\n\t},\r\n\r\n\tgetW: function ( index ) {\r\n\r\n\t\treturn this.data.array[ index * this.data.stride + this.offset + 3 ];\r\n\r\n\t},\r\n\r\n\tsetXY: function ( index, x, y ) {\r\n\r\n\t\tindex = index * this.data.stride + this.offset;\r\n\r\n\t\tthis.data.array[ index + 0 ] = x;\r\n\t\tthis.data.array[ index + 1 ] = y;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetXYZ: function ( index, x, y, z ) {\r\n\r\n\t\tindex = index * this.data.stride + this.offset;\r\n\r\n\t\tthis.data.array[ index + 0 ] = x;\r\n\t\tthis.data.array[ index + 1 ] = y;\r\n\t\tthis.data.array[ index + 2 ] = z;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetXYZW: function ( index, x, y, z, w ) {\r\n\r\n\t\tindex = index * this.data.stride + this.offset;\r\n\r\n\t\tthis.data.array[ index + 0 ] = x;\r\n\t\tthis.data.array[ index + 1 ] = y;\r\n\t\tthis.data.array[ index + 2 ] = z;\r\n\t\tthis.data.array[ index + 3 ] = w;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tclone: function ( data ) {\r\n\r\n\t\tif ( data === undefined ) {\r\n\r\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.clone(): Cloning an interlaved buffer attribute will deinterleave buffer data.' );\r\n\r\n\t\t\tconst array = [];\r\n\r\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\r\n\r\n\t\t\t\tconst index = i * this.data.stride + this.offset;\r\n\r\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\r\n\r\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn new BufferAttribute( new this.array.constructor( array ), this.itemSize, this.normalized );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( data.interleavedBuffers === undefined ) {\r\n\r\n\t\t\t\tdata.interleavedBuffers = {};\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\r\n\r\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.clone( data );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn new InterleavedBufferAttribute( data.interleavedBuffers[ this.data.uuid ], this.itemSize, this.offset, this.normalized );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( data ) {\r\n\r\n\t\tif ( data === undefined ) {\r\n\r\n\t\t\tconsole.log( 'THREE.InterleavedBufferAttribute.toJSON(): Serializing an interlaved buffer attribute will deinterleave buffer data.' );\r\n\r\n\t\t\tconst array = [];\r\n\r\n\t\t\tfor ( let i = 0; i < this.count; i ++ ) {\r\n\r\n\t\t\t\tconst index = i * this.data.stride + this.offset;\r\n\r\n\t\t\t\tfor ( let j = 0; j < this.itemSize; j ++ ) {\r\n\r\n\t\t\t\t\tarray.push( this.data.array[ index + j ] );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// deinterleave data and save it as an ordinary buffer attribute for now\r\n\r\n\t\t\treturn {\r\n\t\t\t\titemSize: this.itemSize,\r\n\t\t\t\ttype: this.array.constructor.name,\r\n\t\t\t\tarray: array,\r\n\t\t\t\tnormalized: this.normalized\r\n\t\t\t};\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// save as true interlaved attribtue\r\n\r\n\t\t\tif ( data.interleavedBuffers === undefined ) {\r\n\r\n\t\t\t\tdata.interleavedBuffers = {};\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( data.interleavedBuffers[ this.data.uuid ] === undefined ) {\r\n\r\n\t\t\t\tdata.interleavedBuffers[ this.data.uuid ] = this.data.toJSON( data );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn {\r\n\t\t\t\tisInterleavedBufferAttribute: true,\r\n\t\t\t\titemSize: this.itemSize,\r\n\t\t\t\tdata: this.data.uuid,\r\n\t\t\t\toffset: this.offset,\r\n\t\t\t\tnormalized: this.normalized\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * map: new THREE.Texture( ),\r\n * alphaMap: new THREE.Texture( ),\r\n * rotation: ,\r\n * sizeAttenuation: \r\n * }\r\n */\r\n\r\nfunction SpriteMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'SpriteMaterial';\r\n\r\n\tthis.color = new Color( 0xffffff );\r\n\r\n\tthis.map = null;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.rotation = 0;\r\n\r\n\tthis.sizeAttenuation = true;\r\n\r\n\tthis.transparent = true;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nSpriteMaterial.prototype = Object.create( Material.prototype );\r\nSpriteMaterial.prototype.constructor = SpriteMaterial;\r\nSpriteMaterial.prototype.isSpriteMaterial = true;\r\n\r\nSpriteMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.color.copy( source.color );\r\n\r\n\tthis.map = source.map;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.rotation = source.rotation;\r\n\r\n\tthis.sizeAttenuation = source.sizeAttenuation;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nlet _geometry;\r\n\r\nconst _intersectPoint = new Vector3();\r\nconst _worldScale = new Vector3();\r\nconst _mvPosition = new Vector3();\r\n\r\nconst _alignedPosition = new Vector2();\r\nconst _rotatedPosition = new Vector2();\r\nconst _viewWorldMatrix = new Matrix4();\r\n\r\nconst _vA$1 = new Vector3();\r\nconst _vB$1 = new Vector3();\r\nconst _vC$1 = new Vector3();\r\n\r\nconst _uvA$1 = new Vector2();\r\nconst _uvB$1 = new Vector2();\r\nconst _uvC$1 = new Vector2();\r\n\r\nfunction Sprite( material ) {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.type = 'Sprite';\r\n\r\n\tif ( _geometry === undefined ) {\r\n\r\n\t\t_geometry = new BufferGeometry();\r\n\r\n\t\tconst float32Array = new Float32Array( [\r\n\t\t\t- 0.5, - 0.5, 0, 0, 0,\r\n\t\t\t0.5, - 0.5, 0, 1, 0,\r\n\t\t\t0.5, 0.5, 0, 1, 1,\r\n\t\t\t- 0.5, 0.5, 0, 0, 1\r\n\t\t] );\r\n\r\n\t\tconst interleavedBuffer = new InterleavedBuffer( float32Array, 5 );\r\n\r\n\t\t_geometry.setIndex( [ 0, 1, 2,\t0, 2, 3 ] );\r\n\t\t_geometry.setAttribute( 'position', new InterleavedBufferAttribute( interleavedBuffer, 3, 0, false ) );\r\n\t\t_geometry.setAttribute( 'uv', new InterleavedBufferAttribute( interleavedBuffer, 2, 3, false ) );\r\n\r\n\t}\r\n\r\n\tthis.geometry = _geometry;\r\n\tthis.material = ( material !== undefined ) ? material : new SpriteMaterial();\r\n\r\n\tthis.center = new Vector2( 0.5, 0.5 );\r\n\r\n}\r\n\r\nSprite.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: Sprite,\r\n\r\n\tisSprite: true,\r\n\r\n\traycast: function ( raycaster, intersects ) {\r\n\r\n\t\tif ( raycaster.camera === null ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Sprite: \"Raycaster.camera\" needs to be set in order to raycast against sprites.' );\r\n\r\n\t\t}\r\n\r\n\t\t_worldScale.setFromMatrixScale( this.matrixWorld );\r\n\r\n\t\t_viewWorldMatrix.copy( raycaster.camera.matrixWorld );\r\n\t\tthis.modelViewMatrix.multiplyMatrices( raycaster.camera.matrixWorldInverse, this.matrixWorld );\r\n\r\n\t\t_mvPosition.setFromMatrixPosition( this.modelViewMatrix );\r\n\r\n\t\tif ( raycaster.camera.isPerspectiveCamera && this.material.sizeAttenuation === false ) {\r\n\r\n\t\t\t_worldScale.multiplyScalar( - _mvPosition.z );\r\n\r\n\t\t}\r\n\r\n\t\tconst rotation = this.material.rotation;\r\n\t\tlet sin, cos;\r\n\r\n\t\tif ( rotation !== 0 ) {\r\n\r\n\t\t\tcos = Math.cos( rotation );\r\n\t\t\tsin = Math.sin( rotation );\r\n\r\n\t\t}\r\n\r\n\t\tconst center = this.center;\r\n\r\n\t\ttransformVertex( _vA$1.set( - 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\r\n\t\ttransformVertex( _vB$1.set( 0.5, - 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\r\n\t\ttransformVertex( _vC$1.set( 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\r\n\r\n\t\t_uvA$1.set( 0, 0 );\r\n\t\t_uvB$1.set( 1, 0 );\r\n\t\t_uvC$1.set( 1, 1 );\r\n\r\n\t\t// check first triangle\r\n\t\tlet intersect = raycaster.ray.intersectTriangle( _vA$1, _vB$1, _vC$1, false, _intersectPoint );\r\n\r\n\t\tif ( intersect === null ) {\r\n\r\n\t\t\t// check second triangle\r\n\t\t\ttransformVertex( _vB$1.set( - 0.5, 0.5, 0 ), _mvPosition, center, _worldScale, sin, cos );\r\n\t\t\t_uvB$1.set( 0, 1 );\r\n\r\n\t\t\tintersect = raycaster.ray.intersectTriangle( _vA$1, _vC$1, _vB$1, false, _intersectPoint );\r\n\t\t\tif ( intersect === null ) {\r\n\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst distance = raycaster.ray.origin.distanceTo( _intersectPoint );\r\n\r\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\r\n\r\n\t\tintersects.push( {\r\n\r\n\t\t\tdistance: distance,\r\n\t\t\tpoint: _intersectPoint.clone(),\r\n\t\t\tuv: Triangle.getUV( _intersectPoint, _vA$1, _vB$1, _vC$1, _uvA$1, _uvB$1, _uvC$1, new Vector2() ),\r\n\t\t\tface: null,\r\n\t\t\tobject: this\r\n\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tObject3D.prototype.copy.call( this, source );\r\n\r\n\t\tif ( source.center !== undefined ) this.center.copy( source.center );\r\n\r\n\t\tthis.material = source.material;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction transformVertex( vertexPosition, mvPosition, center, scale, sin, cos ) {\r\n\r\n\t// compute position in camera space\r\n\t_alignedPosition.subVectors( vertexPosition, center ).addScalar( 0.5 ).multiply( scale );\r\n\r\n\t// to check if rotation is not zero\r\n\tif ( sin !== undefined ) {\r\n\r\n\t\t_rotatedPosition.x = ( cos * _alignedPosition.x ) - ( sin * _alignedPosition.y );\r\n\t\t_rotatedPosition.y = ( sin * _alignedPosition.x ) + ( cos * _alignedPosition.y );\r\n\r\n\t} else {\r\n\r\n\t\t_rotatedPosition.copy( _alignedPosition );\r\n\r\n\t}\r\n\r\n\r\n\tvertexPosition.copy( mvPosition );\r\n\tvertexPosition.x += _rotatedPosition.x;\r\n\tvertexPosition.y += _rotatedPosition.y;\r\n\r\n\t// transform to world space\r\n\tvertexPosition.applyMatrix4( _viewWorldMatrix );\r\n\r\n}\r\n\r\nconst _v1$4 = new Vector3();\r\nconst _v2$2 = new Vector3();\r\n\r\nfunction LOD() {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis._currentLevel = 0;\r\n\r\n\tthis.type = 'LOD';\r\n\r\n\tObject.defineProperties( this, {\r\n\t\tlevels: {\r\n\t\t\tenumerable: true,\r\n\t\t\tvalue: []\r\n\t\t}\r\n\t} );\r\n\r\n\tthis.autoUpdate = true;\r\n\r\n}\r\n\r\nLOD.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: LOD,\r\n\r\n\tisLOD: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tObject3D.prototype.copy.call( this, source, false );\r\n\r\n\t\tconst levels = source.levels;\r\n\r\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst level = levels[ i ];\r\n\r\n\t\t\tthis.addLevel( level.object.clone(), level.distance );\r\n\r\n\t\t}\r\n\r\n\t\tthis.autoUpdate = source.autoUpdate;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\taddLevel: function ( object, distance = 0 ) {\r\n\r\n\t\tdistance = Math.abs( distance );\r\n\r\n\t\tconst levels = this.levels;\r\n\r\n\t\tlet l;\r\n\r\n\t\tfor ( l = 0; l < levels.length; l ++ ) {\r\n\r\n\t\t\tif ( distance < levels[ l ].distance ) {\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tlevels.splice( l, 0, { distance: distance, object: object } );\r\n\r\n\t\tthis.add( object );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetCurrentLevel: function () {\r\n\r\n\t\treturn this._currentLevel;\r\n\r\n\t},\r\n\r\n\tgetObjectForDistance: function ( distance ) {\r\n\r\n\t\tconst levels = this.levels;\r\n\r\n\t\tif ( levels.length > 0 ) {\r\n\r\n\t\t\tlet i, l;\r\n\r\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tif ( distance < levels[ i ].distance ) {\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn levels[ i - 1 ].object;\r\n\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\r\n\t},\r\n\r\n\traycast: function ( raycaster, intersects ) {\r\n\r\n\t\tconst levels = this.levels;\r\n\r\n\t\tif ( levels.length > 0 ) {\r\n\r\n\t\t\t_v1$4.setFromMatrixPosition( this.matrixWorld );\r\n\r\n\t\t\tconst distance = raycaster.ray.origin.distanceTo( _v1$4 );\r\n\r\n\t\t\tthis.getObjectForDistance( distance ).raycast( raycaster, intersects );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tupdate: function ( camera ) {\r\n\r\n\t\tconst levels = this.levels;\r\n\r\n\t\tif ( levels.length > 1 ) {\r\n\r\n\t\t\t_v1$4.setFromMatrixPosition( camera.matrixWorld );\r\n\t\t\t_v2$2.setFromMatrixPosition( this.matrixWorld );\r\n\r\n\t\t\tconst distance = _v1$4.distanceTo( _v2$2 ) / camera.zoom;\r\n\r\n\t\t\tlevels[ 0 ].object.visible = true;\r\n\r\n\t\t\tlet i, l;\r\n\r\n\t\t\tfor ( i = 1, l = levels.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tif ( distance >= levels[ i ].distance ) {\r\n\r\n\t\t\t\t\tlevels[ i - 1 ].object.visible = false;\r\n\t\t\t\t\tlevels[ i ].object.visible = true;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis._currentLevel = i - 1;\r\n\r\n\t\t\tfor ( ; i < l; i ++ ) {\r\n\r\n\t\t\t\tlevels[ i ].object.visible = false;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\r\n\r\n\t\tif ( this.autoUpdate === false ) data.object.autoUpdate = false;\r\n\r\n\t\tdata.object.levels = [];\r\n\r\n\t\tconst levels = this.levels;\r\n\r\n\t\tfor ( let i = 0, l = levels.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst level = levels[ i ];\r\n\r\n\t\t\tdata.object.levels.push( {\r\n\t\t\t\tobject: level.object.uuid,\r\n\t\t\t\tdistance: level.distance\r\n\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst _basePosition = new Vector3();\r\n\r\nconst _skinIndex = new Vector4();\r\nconst _skinWeight = new Vector4();\r\n\r\nconst _vector$7 = new Vector3();\r\nconst _matrix$1 = new Matrix4();\r\n\r\nfunction SkinnedMesh( geometry, material ) {\r\n\r\n\tif ( geometry && geometry.isGeometry ) {\r\n\r\n\t\tconsole.error( 'THREE.SkinnedMesh no longer supports THREE.Geometry. Use THREE.BufferGeometry instead.' );\r\n\r\n\t}\r\n\r\n\tMesh.call( this, geometry, material );\r\n\r\n\tthis.type = 'SkinnedMesh';\r\n\r\n\tthis.bindMode = 'attached';\r\n\tthis.bindMatrix = new Matrix4();\r\n\tthis.bindMatrixInverse = new Matrix4();\r\n\r\n}\r\n\r\nSkinnedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\r\n\r\n\tconstructor: SkinnedMesh,\r\n\r\n\tisSkinnedMesh: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tMesh.prototype.copy.call( this, source );\r\n\r\n\t\tthis.bindMode = source.bindMode;\r\n\t\tthis.bindMatrix.copy( source.bindMatrix );\r\n\t\tthis.bindMatrixInverse.copy( source.bindMatrixInverse );\r\n\r\n\t\tthis.skeleton = source.skeleton;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tbind: function ( skeleton, bindMatrix ) {\r\n\r\n\t\tthis.skeleton = skeleton;\r\n\r\n\t\tif ( bindMatrix === undefined ) {\r\n\r\n\t\t\tthis.updateMatrixWorld( true );\r\n\r\n\t\t\tthis.skeleton.calculateInverses();\r\n\r\n\t\t\tbindMatrix = this.matrixWorld;\r\n\r\n\t\t}\r\n\r\n\t\tthis.bindMatrix.copy( bindMatrix );\r\n\t\tthis.bindMatrixInverse.copy( bindMatrix ).invert();\r\n\r\n\t},\r\n\r\n\tpose: function () {\r\n\r\n\t\tthis.skeleton.pose();\r\n\r\n\t},\r\n\r\n\tnormalizeSkinWeights: function () {\r\n\r\n\t\tconst vector = new Vector4();\r\n\r\n\t\tconst skinWeight = this.geometry.attributes.skinWeight;\r\n\r\n\t\tfor ( let i = 0, l = skinWeight.count; i < l; i ++ ) {\r\n\r\n\t\t\tvector.x = skinWeight.getX( i );\r\n\t\t\tvector.y = skinWeight.getY( i );\r\n\t\t\tvector.z = skinWeight.getZ( i );\r\n\t\t\tvector.w = skinWeight.getW( i );\r\n\r\n\t\t\tconst scale = 1.0 / vector.manhattanLength();\r\n\r\n\t\t\tif ( scale !== Infinity ) {\r\n\r\n\t\t\t\tvector.multiplyScalar( scale );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tvector.set( 1, 0, 0, 0 ); // do something reasonable\r\n\r\n\t\t\t}\r\n\r\n\t\t\tskinWeight.setXYZW( i, vector.x, vector.y, vector.z, vector.w );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tupdateMatrixWorld: function ( force ) {\r\n\r\n\t\tMesh.prototype.updateMatrixWorld.call( this, force );\r\n\r\n\t\tif ( this.bindMode === 'attached' ) {\r\n\r\n\t\t\tthis.bindMatrixInverse.copy( this.matrixWorld ).invert();\r\n\r\n\t\t} else if ( this.bindMode === 'detached' ) {\r\n\r\n\t\t\tthis.bindMatrixInverse.copy( this.bindMatrix ).invert();\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconsole.warn( 'THREE.SkinnedMesh: Unrecognized bindMode: ' + this.bindMode );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tboneTransform: function ( index, target ) {\r\n\r\n\t\tconst skeleton = this.skeleton;\r\n\t\tconst geometry = this.geometry;\r\n\r\n\t\t_skinIndex.fromBufferAttribute( geometry.attributes.skinIndex, index );\r\n\t\t_skinWeight.fromBufferAttribute( geometry.attributes.skinWeight, index );\r\n\r\n\t\t_basePosition.fromBufferAttribute( geometry.attributes.position, index ).applyMatrix4( this.bindMatrix );\r\n\r\n\t\ttarget.set( 0, 0, 0 );\r\n\r\n\t\tfor ( let i = 0; i < 4; i ++ ) {\r\n\r\n\t\t\tconst weight = _skinWeight.getComponent( i );\r\n\r\n\t\t\tif ( weight !== 0 ) {\r\n\r\n\t\t\t\tconst boneIndex = _skinIndex.getComponent( i );\r\n\r\n\t\t\t\t_matrix$1.multiplyMatrices( skeleton.bones[ boneIndex ].matrixWorld, skeleton.boneInverses[ boneIndex ] );\r\n\r\n\t\t\t\ttarget.addScaledVector( _vector$7.copy( _basePosition ).applyMatrix4( _matrix$1 ), weight );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn target.applyMatrix4( this.bindMatrixInverse );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction Bone() {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.type = 'Bone';\r\n\r\n}\r\n\r\nBone.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: Bone,\r\n\r\n\tisBone: true\r\n\r\n} );\r\n\r\nconst _offsetMatrix = new Matrix4();\r\nconst _identityMatrix = new Matrix4();\r\n\r\nfunction Skeleton( bones = [], boneInverses = [] ) {\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n\tthis.bones = bones.slice( 0 );\r\n\tthis.boneInverses = boneInverses;\r\n\tthis.boneMatrices = null;\r\n\r\n\tthis.boneTexture = null;\r\n\tthis.boneTextureSize = 0;\r\n\r\n\tthis.frame = - 1;\r\n\r\n\tthis.init();\r\n\r\n}\r\n\r\nObject.assign( Skeleton.prototype, {\r\n\r\n\tinit: function () {\r\n\r\n\t\tconst bones = this.bones;\r\n\t\tconst boneInverses = this.boneInverses;\r\n\r\n\t\tthis.boneMatrices = new Float32Array( bones.length * 16 );\r\n\r\n\t\t// calculate inverse bone matrices if necessary\r\n\r\n\t\tif ( boneInverses.length === 0 ) {\r\n\r\n\t\t\tthis.calculateInverses();\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// handle special case\r\n\r\n\t\t\tif ( bones.length !== boneInverses.length ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.Skeleton: Number of inverse bone matrices does not match amount of bones.' );\r\n\r\n\t\t\t\tthis.boneInverses = [];\r\n\r\n\t\t\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tthis.boneInverses.push( new Matrix4() );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tcalculateInverses: function () {\r\n\r\n\t\tthis.boneInverses.length = 0;\r\n\r\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst inverse = new Matrix4();\r\n\r\n\t\t\tif ( this.bones[ i ] ) {\r\n\r\n\t\t\t\tinverse.copy( this.bones[ i ].matrixWorld ).invert();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.boneInverses.push( inverse );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tpose: function () {\r\n\r\n\t\t// recover the bind-time world matrices\r\n\r\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst bone = this.bones[ i ];\r\n\r\n\t\t\tif ( bone ) {\r\n\r\n\t\t\t\tbone.matrixWorld.copy( this.boneInverses[ i ] ).invert();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// compute the local matrices, positions, rotations and scales\r\n\r\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst bone = this.bones[ i ];\r\n\r\n\t\t\tif ( bone ) {\r\n\r\n\t\t\t\tif ( bone.parent && bone.parent.isBone ) {\r\n\r\n\t\t\t\t\tbone.matrix.copy( bone.parent.matrixWorld ).invert();\r\n\t\t\t\t\tbone.matrix.multiply( bone.matrixWorld );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tbone.matrix.copy( bone.matrixWorld );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbone.matrix.decompose( bone.position, bone.quaternion, bone.scale );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tupdate: function () {\r\n\r\n\t\tconst bones = this.bones;\r\n\t\tconst boneInverses = this.boneInverses;\r\n\t\tconst boneMatrices = this.boneMatrices;\r\n\t\tconst boneTexture = this.boneTexture;\r\n\r\n\t\t// flatten bone matrices to array\r\n\r\n\t\tfor ( let i = 0, il = bones.length; i < il; i ++ ) {\r\n\r\n\t\t\t// compute the offset between the current and the original transform\r\n\r\n\t\t\tconst matrix = bones[ i ] ? bones[ i ].matrixWorld : _identityMatrix;\r\n\r\n\t\t\t_offsetMatrix.multiplyMatrices( matrix, boneInverses[ i ] );\r\n\t\t\t_offsetMatrix.toArray( boneMatrices, i * 16 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( boneTexture !== null ) {\r\n\r\n\t\t\tboneTexture.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new Skeleton( this.bones, this.boneInverses );\r\n\r\n\t},\r\n\r\n\tgetBoneByName: function ( name ) {\r\n\r\n\t\tfor ( let i = 0, il = this.bones.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst bone = this.bones[ i ];\r\n\r\n\t\t\tif ( bone.name === name ) {\r\n\r\n\t\t\t\treturn bone;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn undefined;\r\n\r\n\t},\r\n\r\n\tdispose: function ( ) {\r\n\r\n\t\tif ( this.boneTexture !== null ) {\r\n\r\n\t\t\tthis.boneTexture.dispose();\r\n\r\n\t\t\tthis.boneTexture = null;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tfromJSON: function ( json, bones ) {\r\n\r\n\t\tthis.uuid = json.uuid;\r\n\r\n\t\tfor ( let i = 0, l = json.bones.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst uuid = json.bones[ i ];\r\n\t\t\tlet bone = bones[ uuid ];\r\n\r\n\t\t\tif ( bone === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.Skeleton: No bone found with UUID:', uuid );\r\n\t\t\t\tbone = new Bone();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.bones.push( bone );\r\n\t\t\tthis.boneInverses.push( new Matrix4().fromArray( json.boneInverses[ i ] ) );\r\n\r\n\t\t}\r\n\r\n\t\tthis.init();\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\tconst data = {\r\n\t\t\tmetadata: {\r\n\t\t\t\tversion: 4.5,\r\n\t\t\t\ttype: 'Skeleton',\r\n\t\t\t\tgenerator: 'Skeleton.toJSON'\r\n\t\t\t},\r\n\t\t\tbones: [],\r\n\t\t\tboneInverses: []\r\n\t\t};\r\n\r\n\t\tdata.uuid = this.uuid;\r\n\r\n\t\tconst bones = this.bones;\r\n\t\tconst boneInverses = this.boneInverses;\r\n\r\n\t\tfor ( let i = 0, l = bones.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst bone = bones[ i ];\r\n\t\t\tdata.bones.push( bone.uuid );\r\n\r\n\t\t\tconst boneInverse = boneInverses[ i ];\r\n\t\t\tdata.boneInverses.push( boneInverse.toArray() );\r\n\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst _instanceLocalMatrix = new Matrix4();\r\nconst _instanceWorldMatrix = new Matrix4();\r\n\r\nconst _instanceIntersects = [];\r\n\r\nconst _mesh = new Mesh();\r\n\r\nfunction InstancedMesh( geometry, material, count ) {\r\n\r\n\tMesh.call( this, geometry, material );\r\n\r\n\tthis.instanceMatrix = new BufferAttribute( new Float32Array( count * 16 ), 16 );\r\n\tthis.instanceColor = null;\r\n\r\n\tthis.count = count;\r\n\r\n\tthis.frustumCulled = false;\r\n\r\n}\r\n\r\nInstancedMesh.prototype = Object.assign( Object.create( Mesh.prototype ), {\r\n\r\n\tconstructor: InstancedMesh,\r\n\r\n\tisInstancedMesh: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tMesh.prototype.copy.call( this, source );\r\n\r\n\t\tthis.instanceMatrix.copy( source.instanceMatrix );\r\n\t\tthis.count = source.count;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetColorAt: function ( index, color ) {\r\n\r\n\t\tcolor.fromArray( this.instanceColor.array, index * 3 );\r\n\r\n\t},\r\n\r\n\tgetMatrixAt: function ( index, matrix ) {\r\n\r\n\t\tmatrix.fromArray( this.instanceMatrix.array, index * 16 );\r\n\r\n\t},\r\n\r\n\traycast: function ( raycaster, intersects ) {\r\n\r\n\t\tconst matrixWorld = this.matrixWorld;\r\n\t\tconst raycastTimes = this.count;\r\n\r\n\t\t_mesh.geometry = this.geometry;\r\n\t\t_mesh.material = this.material;\r\n\r\n\t\tif ( _mesh.material === undefined ) return;\r\n\r\n\t\tfor ( let instanceId = 0; instanceId < raycastTimes; instanceId ++ ) {\r\n\r\n\t\t\t// calculate the world matrix for each instance\r\n\r\n\t\t\tthis.getMatrixAt( instanceId, _instanceLocalMatrix );\r\n\r\n\t\t\t_instanceWorldMatrix.multiplyMatrices( matrixWorld, _instanceLocalMatrix );\r\n\r\n\t\t\t// the mesh represents this single instance\r\n\r\n\t\t\t_mesh.matrixWorld = _instanceWorldMatrix;\r\n\r\n\t\t\t_mesh.raycast( raycaster, _instanceIntersects );\r\n\r\n\t\t\t// process the result of raycast\r\n\r\n\t\t\tfor ( let i = 0, l = _instanceIntersects.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst intersect = _instanceIntersects[ i ];\r\n\t\t\t\tintersect.instanceId = instanceId;\r\n\t\t\t\tintersect.object = this;\r\n\t\t\t\tintersects.push( intersect );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_instanceIntersects.length = 0;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tsetColorAt: function ( index, color ) {\r\n\r\n\t\tif ( this.instanceColor === null ) {\r\n\r\n\t\t\tthis.instanceColor = new BufferAttribute( new Float32Array( this.count * 3 ), 3 );\r\n\r\n\t\t}\r\n\r\n\t\tcolor.toArray( this.instanceColor.array, index * 3 );\r\n\r\n\t},\r\n\r\n\tsetMatrixAt: function ( index, matrix ) {\r\n\r\n\t\tmatrix.toArray( this.instanceMatrix.array, index * 16 );\r\n\r\n\t},\r\n\r\n\tupdateMorphTargets: function () {\r\n\r\n\t},\r\n\r\n\tdispose: function () {\r\n\r\n\t\tthis.dispatchEvent( { type: 'dispose' } );\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * opacity: ,\r\n *\r\n * linewidth: ,\r\n * linecap: \"round\",\r\n * linejoin: \"round\"\r\n * }\r\n */\r\n\r\nfunction LineBasicMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'LineBasicMaterial';\r\n\r\n\tthis.color = new Color( 0xffffff );\r\n\r\n\tthis.linewidth = 1;\r\n\tthis.linecap = 'round';\r\n\tthis.linejoin = 'round';\r\n\r\n\tthis.morphTargets = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nLineBasicMaterial.prototype = Object.create( Material.prototype );\r\nLineBasicMaterial.prototype.constructor = LineBasicMaterial;\r\n\r\nLineBasicMaterial.prototype.isLineBasicMaterial = true;\r\n\r\nLineBasicMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.color.copy( source.color );\r\n\r\n\tthis.linewidth = source.linewidth;\r\n\tthis.linecap = source.linecap;\r\n\tthis.linejoin = source.linejoin;\r\n\r\n\tthis.morphTargets = source.morphTargets;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nconst _start = new Vector3();\r\nconst _end = new Vector3();\r\nconst _inverseMatrix$1 = new Matrix4();\r\nconst _ray$1 = new Ray();\r\nconst _sphere$2 = new Sphere();\r\n\r\nfunction Line( geometry = new BufferGeometry(), material = new LineBasicMaterial() ) {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.type = 'Line';\r\n\r\n\tthis.geometry = geometry;\r\n\tthis.material = material;\r\n\r\n\tthis.updateMorphTargets();\r\n\r\n}\r\n\r\nLine.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: Line,\r\n\r\n\tisLine: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tObject3D.prototype.copy.call( this, source );\r\n\r\n\t\tthis.material = source.material;\r\n\t\tthis.geometry = source.geometry;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcomputeLineDistances: function () {\r\n\r\n\t\tconst geometry = this.geometry;\r\n\r\n\t\tif ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\t// we assume non-indexed geometry\r\n\r\n\t\t\tif ( geometry.index === null ) {\r\n\r\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\r\n\t\t\t\tconst lineDistances = [ 0 ];\r\n\r\n\t\t\t\tfor ( let i = 1, l = positionAttribute.count; i < l; i ++ ) {\r\n\r\n\t\t\t\t\t_start.fromBufferAttribute( positionAttribute, i - 1 );\r\n\t\t\t\t\t_end.fromBufferAttribute( positionAttribute, i );\r\n\r\n\t\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\r\n\t\t\t\t\tlineDistances[ i ] += _start.distanceTo( _end );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.Line.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( geometry.isGeometry ) {\r\n\r\n\t\t\tconst vertices = geometry.vertices;\r\n\t\t\tconst lineDistances = geometry.lineDistances;\r\n\r\n\t\t\tlineDistances[ 0 ] = 0;\r\n\r\n\t\t\tfor ( let i = 1, l = vertices.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tlineDistances[ i ] = lineDistances[ i - 1 ];\r\n\t\t\t\tlineDistances[ i ] += vertices[ i - 1 ].distanceTo( vertices[ i ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\traycast: function ( raycaster, intersects ) {\r\n\r\n\t\tconst geometry = this.geometry;\r\n\t\tconst matrixWorld = this.matrixWorld;\r\n\t\tconst threshold = raycaster.params.Line.threshold;\r\n\r\n\t\t// Checking boundingSphere distance to ray\r\n\r\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\r\n\r\n\t\t_sphere$2.copy( geometry.boundingSphere );\r\n\t\t_sphere$2.applyMatrix4( matrixWorld );\r\n\t\t_sphere$2.radius += threshold;\r\n\r\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$2 ) === false ) return;\r\n\r\n\t\t//\r\n\r\n\t\t_inverseMatrix$1.copy( matrixWorld ).invert();\r\n\t\t_ray$1.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$1 );\r\n\r\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\r\n\t\tconst localThresholdSq = localThreshold * localThreshold;\r\n\r\n\t\tconst vStart = new Vector3();\r\n\t\tconst vEnd = new Vector3();\r\n\t\tconst interSegment = new Vector3();\r\n\t\tconst interRay = new Vector3();\r\n\t\tconst step = this.isLineSegments ? 2 : 1;\r\n\r\n\t\tif ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\tconst index = geometry.index;\r\n\t\t\tconst attributes = geometry.attributes;\r\n\t\t\tconst positionAttribute = attributes.position;\r\n\r\n\t\t\tif ( index !== null ) {\r\n\r\n\t\t\t\tconst indices = index.array;\r\n\r\n\t\t\t\tfor ( let i = 0, l = indices.length - 1; i < l; i += step ) {\r\n\r\n\t\t\t\t\tconst a = indices[ i ];\r\n\t\t\t\t\tconst b = indices[ i + 1 ];\r\n\r\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, a );\r\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, b );\r\n\r\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\r\n\r\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\r\n\r\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\r\n\r\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\r\n\r\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\r\n\r\n\t\t\t\t\tintersects.push( {\r\n\r\n\t\t\t\t\t\tdistance: distance,\r\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\r\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\r\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\r\n\t\t\t\t\t\tindex: i,\r\n\t\t\t\t\t\tface: null,\r\n\t\t\t\t\t\tfaceIndex: null,\r\n\t\t\t\t\t\tobject: this\r\n\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count - 1; i < l; i += step ) {\r\n\r\n\t\t\t\t\tvStart.fromBufferAttribute( positionAttribute, i );\r\n\t\t\t\t\tvEnd.fromBufferAttribute( positionAttribute, i + 1 );\r\n\r\n\t\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vStart, vEnd, interRay, interSegment );\r\n\r\n\t\t\t\t\tif ( distSq > localThresholdSq ) continue;\r\n\r\n\t\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\r\n\r\n\t\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\r\n\r\n\t\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\r\n\r\n\t\t\t\t\tintersects.push( {\r\n\r\n\t\t\t\t\t\tdistance: distance,\r\n\t\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\r\n\t\t\t\t\t\t// point: raycaster.ray.at( distance ),\r\n\t\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\r\n\t\t\t\t\t\tindex: i,\r\n\t\t\t\t\t\tface: null,\r\n\t\t\t\t\t\tfaceIndex: null,\r\n\t\t\t\t\t\tobject: this\r\n\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( geometry.isGeometry ) {\r\n\r\n\t\t\tconst vertices = geometry.vertices;\r\n\t\t\tconst nbVertices = vertices.length;\r\n\r\n\t\t\tfor ( let i = 0; i < nbVertices - 1; i += step ) {\r\n\r\n\t\t\t\tconst distSq = _ray$1.distanceSqToSegment( vertices[ i ], vertices[ i + 1 ], interRay, interSegment );\r\n\r\n\t\t\t\tif ( distSq > localThresholdSq ) continue;\r\n\r\n\t\t\t\tinterRay.applyMatrix4( this.matrixWorld ); //Move back to world space for distance calculation\r\n\r\n\t\t\t\tconst distance = raycaster.ray.origin.distanceTo( interRay );\r\n\r\n\t\t\t\tif ( distance < raycaster.near || distance > raycaster.far ) continue;\r\n\r\n\t\t\t\tintersects.push( {\r\n\r\n\t\t\t\t\tdistance: distance,\r\n\t\t\t\t\t// What do we want? intersection point on the ray or on the segment??\r\n\t\t\t\t\t// point: raycaster.ray.at( distance ),\r\n\t\t\t\t\tpoint: interSegment.clone().applyMatrix4( this.matrixWorld ),\r\n\t\t\t\t\tindex: i,\r\n\t\t\t\t\tface: null,\r\n\t\t\t\t\tfaceIndex: null,\r\n\t\t\t\t\tobject: this\r\n\r\n\t\t\t\t} );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tupdateMorphTargets: function () {\r\n\r\n\t\tconst geometry = this.geometry;\r\n\r\n\t\tif ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\tconst morphAttributes = geometry.morphAttributes;\r\n\t\t\tconst keys = Object.keys( morphAttributes );\r\n\r\n\t\t\tif ( keys.length > 0 ) {\r\n\r\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\r\n\r\n\t\t\t\tif ( morphAttribute !== undefined ) {\r\n\r\n\t\t\t\t\tthis.morphTargetInfluences = [];\r\n\t\t\t\t\tthis.morphTargetDictionary = {};\r\n\r\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\r\n\r\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\r\n\r\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\r\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst morphTargets = geometry.morphTargets;\r\n\r\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.Line.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst _start$1 = new Vector3();\r\nconst _end$1 = new Vector3();\r\n\r\nfunction LineSegments( geometry, material ) {\r\n\r\n\tLine.call( this, geometry, material );\r\n\r\n\tthis.type = 'LineSegments';\r\n\r\n}\r\n\r\nLineSegments.prototype = Object.assign( Object.create( Line.prototype ), {\r\n\r\n\tconstructor: LineSegments,\r\n\r\n\tisLineSegments: true,\r\n\r\n\tcomputeLineDistances: function () {\r\n\r\n\t\tconst geometry = this.geometry;\r\n\r\n\t\tif ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\t// we assume non-indexed geometry\r\n\r\n\t\t\tif ( geometry.index === null ) {\r\n\r\n\t\t\t\tconst positionAttribute = geometry.attributes.position;\r\n\t\t\t\tconst lineDistances = [];\r\n\r\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i += 2 ) {\r\n\r\n\t\t\t\t\t_start$1.fromBufferAttribute( positionAttribute, i );\r\n\t\t\t\t\t_end$1.fromBufferAttribute( positionAttribute, i + 1 );\r\n\r\n\t\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\r\n\t\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgeometry.setAttribute( 'lineDistance', new Float32BufferAttribute( lineDistances, 1 ) );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.LineSegments.computeLineDistances(): Computation only possible with non-indexed BufferGeometry.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( geometry.isGeometry ) {\r\n\r\n\t\t\tconst vertices = geometry.vertices;\r\n\t\t\tconst lineDistances = geometry.lineDistances;\r\n\r\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i += 2 ) {\r\n\r\n\t\t\t\t_start$1.copy( vertices[ i ] );\r\n\t\t\t\t_end$1.copy( vertices[ i + 1 ] );\r\n\r\n\t\t\t\tlineDistances[ i ] = ( i === 0 ) ? 0 : lineDistances[ i - 1 ];\r\n\t\t\t\tlineDistances[ i + 1 ] = lineDistances[ i ] + _start$1.distanceTo( _end$1 );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction LineLoop( geometry, material ) {\r\n\r\n\tLine.call( this, geometry, material );\r\n\r\n\tthis.type = 'LineLoop';\r\n\r\n}\r\n\r\nLineLoop.prototype = Object.assign( Object.create( Line.prototype ), {\r\n\r\n\tconstructor: LineLoop,\r\n\r\n\tisLineLoop: true,\r\n\r\n} );\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * opacity: ,\r\n * map: new THREE.Texture( ),\r\n * alphaMap: new THREE.Texture( ),\r\n *\r\n * size: ,\r\n * sizeAttenuation: \r\n *\r\n * morphTargets: \r\n * }\r\n */\r\n\r\nfunction PointsMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'PointsMaterial';\r\n\r\n\tthis.color = new Color( 0xffffff );\r\n\r\n\tthis.map = null;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.size = 1;\r\n\tthis.sizeAttenuation = true;\r\n\r\n\tthis.morphTargets = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nPointsMaterial.prototype = Object.create( Material.prototype );\r\nPointsMaterial.prototype.constructor = PointsMaterial;\r\n\r\nPointsMaterial.prototype.isPointsMaterial = true;\r\n\r\nPointsMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.color.copy( source.color );\r\n\r\n\tthis.map = source.map;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.size = source.size;\r\n\tthis.sizeAttenuation = source.sizeAttenuation;\r\n\r\n\tthis.morphTargets = source.morphTargets;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nconst _inverseMatrix$2 = new Matrix4();\r\nconst _ray$2 = new Ray();\r\nconst _sphere$3 = new Sphere();\r\nconst _position$1 = new Vector3();\r\n\r\nfunction Points( geometry = new BufferGeometry(), material = new PointsMaterial() ) {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.type = 'Points';\r\n\r\n\tthis.geometry = geometry;\r\n\tthis.material = material;\r\n\r\n\tthis.updateMorphTargets();\r\n\r\n}\r\n\r\nPoints.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: Points,\r\n\r\n\tisPoints: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tObject3D.prototype.copy.call( this, source );\r\n\r\n\t\tthis.material = source.material;\r\n\t\tthis.geometry = source.geometry;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\traycast: function ( raycaster, intersects ) {\r\n\r\n\t\tconst geometry = this.geometry;\r\n\t\tconst matrixWorld = this.matrixWorld;\r\n\t\tconst threshold = raycaster.params.Points.threshold;\r\n\r\n\t\t// Checking boundingSphere distance to ray\r\n\r\n\t\tif ( geometry.boundingSphere === null ) geometry.computeBoundingSphere();\r\n\r\n\t\t_sphere$3.copy( geometry.boundingSphere );\r\n\t\t_sphere$3.applyMatrix4( matrixWorld );\r\n\t\t_sphere$3.radius += threshold;\r\n\r\n\t\tif ( raycaster.ray.intersectsSphere( _sphere$3 ) === false ) return;\r\n\r\n\t\t//\r\n\r\n\t\t_inverseMatrix$2.copy( matrixWorld ).invert();\r\n\t\t_ray$2.copy( raycaster.ray ).applyMatrix4( _inverseMatrix$2 );\r\n\r\n\t\tconst localThreshold = threshold / ( ( this.scale.x + this.scale.y + this.scale.z ) / 3 );\r\n\t\tconst localThresholdSq = localThreshold * localThreshold;\r\n\r\n\t\tif ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\tconst index = geometry.index;\r\n\t\t\tconst attributes = geometry.attributes;\r\n\t\t\tconst positionAttribute = attributes.position;\r\n\r\n\t\t\tif ( index !== null ) {\r\n\r\n\t\t\t\tconst indices = index.array;\r\n\r\n\t\t\t\tfor ( let i = 0, il = indices.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst a = indices[ i ];\r\n\r\n\t\t\t\t\t_position$1.fromBufferAttribute( positionAttribute, a );\r\n\r\n\t\t\t\t\ttestPoint( _position$1, a, localThresholdSq, matrixWorld, raycaster, intersects, this );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tfor ( let i = 0, l = positionAttribute.count; i < l; i ++ ) {\r\n\r\n\t\t\t\t\t_position$1.fromBufferAttribute( positionAttribute, i );\r\n\r\n\t\t\t\t\ttestPoint( _position$1, i, localThresholdSq, matrixWorld, raycaster, intersects, this );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst vertices = geometry.vertices;\r\n\r\n\t\t\tfor ( let i = 0, l = vertices.length; i < l; i ++ ) {\r\n\r\n\t\t\t\ttestPoint( vertices[ i ], i, localThresholdSq, matrixWorld, raycaster, intersects, this );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tupdateMorphTargets: function () {\r\n\r\n\t\tconst geometry = this.geometry;\r\n\r\n\t\tif ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\tconst morphAttributes = geometry.morphAttributes;\r\n\t\t\tconst keys = Object.keys( morphAttributes );\r\n\r\n\t\t\tif ( keys.length > 0 ) {\r\n\r\n\t\t\t\tconst morphAttribute = morphAttributes[ keys[ 0 ] ];\r\n\r\n\t\t\t\tif ( morphAttribute !== undefined ) {\r\n\r\n\t\t\t\t\tthis.morphTargetInfluences = [];\r\n\t\t\t\t\tthis.morphTargetDictionary = {};\r\n\r\n\t\t\t\t\tfor ( let m = 0, ml = morphAttribute.length; m < ml; m ++ ) {\r\n\r\n\t\t\t\t\t\tconst name = morphAttribute[ m ].name || String( m );\r\n\r\n\t\t\t\t\t\tthis.morphTargetInfluences.push( 0 );\r\n\t\t\t\t\t\tthis.morphTargetDictionary[ name ] = m;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst morphTargets = geometry.morphTargets;\r\n\r\n\t\t\tif ( morphTargets !== undefined && morphTargets.length > 0 ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.Points.updateMorphTargets() does not support THREE.Geometry. Use THREE.BufferGeometry instead.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction testPoint( point, index, localThresholdSq, matrixWorld, raycaster, intersects, object ) {\r\n\r\n\tconst rayPointDistanceSq = _ray$2.distanceSqToPoint( point );\r\n\r\n\tif ( rayPointDistanceSq < localThresholdSq ) {\r\n\r\n\t\tconst intersectPoint = new Vector3();\r\n\r\n\t\t_ray$2.closestPointToPoint( point, intersectPoint );\r\n\t\tintersectPoint.applyMatrix4( matrixWorld );\r\n\r\n\t\tconst distance = raycaster.ray.origin.distanceTo( intersectPoint );\r\n\r\n\t\tif ( distance < raycaster.near || distance > raycaster.far ) return;\r\n\r\n\t\tintersects.push( {\r\n\r\n\t\t\tdistance: distance,\r\n\t\t\tdistanceToRay: Math.sqrt( rayPointDistanceSq ),\r\n\t\t\tpoint: intersectPoint,\r\n\t\t\tindex: index,\r\n\t\t\tface: null,\r\n\t\t\tobject: object\r\n\r\n\t\t} );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction VideoTexture( video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\r\n\r\n\tTexture.call( this, video, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\r\n\r\n\tthis.format = format !== undefined ? format : RGBFormat;\r\n\r\n\tthis.minFilter = minFilter !== undefined ? minFilter : LinearFilter;\r\n\tthis.magFilter = magFilter !== undefined ? magFilter : LinearFilter;\r\n\r\n\tthis.generateMipmaps = false;\r\n\r\n\tconst scope = this;\r\n\r\n\tfunction updateVideo() {\r\n\r\n\t\tscope.needsUpdate = true;\r\n\t\tvideo.requestVideoFrameCallback( updateVideo );\r\n\r\n\t}\r\n\r\n\tif ( 'requestVideoFrameCallback' in video ) {\r\n\r\n\t\tvideo.requestVideoFrameCallback( updateVideo );\r\n\r\n\t}\r\n\r\n}\r\n\r\nVideoTexture.prototype = Object.assign( Object.create( Texture.prototype ), {\r\n\r\n\tconstructor: VideoTexture,\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new this.constructor( this.image ).copy( this );\r\n\r\n\t},\r\n\r\n\tisVideoTexture: true,\r\n\r\n\tupdate: function () {\r\n\r\n\t\tconst video = this.image;\r\n\t\tconst hasVideoFrameCallback = 'requestVideoFrameCallback' in video;\r\n\r\n\t\tif ( hasVideoFrameCallback === false && video.readyState >= video.HAVE_CURRENT_DATA ) {\r\n\r\n\t\t\tthis.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction CompressedTexture( mipmaps, width, height, format, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, encoding ) {\r\n\r\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy, encoding );\r\n\r\n\tthis.image = { width: width, height: height };\r\n\tthis.mipmaps = mipmaps;\r\n\r\n\t// no flipping for cube textures\r\n\t// (also flipping doesn't work for compressed textures )\r\n\r\n\tthis.flipY = false;\r\n\r\n\t// can't generate mipmaps for compressed textures\r\n\t// mips must be embedded in DDS files\r\n\r\n\tthis.generateMipmaps = false;\r\n\r\n}\r\n\r\nCompressedTexture.prototype = Object.create( Texture.prototype );\r\nCompressedTexture.prototype.constructor = CompressedTexture;\r\n\r\nCompressedTexture.prototype.isCompressedTexture = true;\r\n\r\nfunction CanvasTexture( canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy ) {\r\n\r\n\tTexture.call( this, canvas, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\r\n\r\n\tthis.needsUpdate = true;\r\n\r\n}\r\n\r\nCanvasTexture.prototype = Object.create( Texture.prototype );\r\nCanvasTexture.prototype.constructor = CanvasTexture;\r\nCanvasTexture.prototype.isCanvasTexture = true;\r\n\r\nfunction DepthTexture( width, height, type, mapping, wrapS, wrapT, magFilter, minFilter, anisotropy, format ) {\r\n\r\n\tformat = format !== undefined ? format : DepthFormat;\r\n\r\n\tif ( format !== DepthFormat && format !== DepthStencilFormat ) {\r\n\r\n\t\tthrow new Error( 'DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat' );\r\n\r\n\t}\r\n\r\n\tif ( type === undefined && format === DepthFormat ) type = UnsignedShortType;\r\n\tif ( type === undefined && format === DepthStencilFormat ) type = UnsignedInt248Type;\r\n\r\n\tTexture.call( this, null, mapping, wrapS, wrapT, magFilter, minFilter, format, type, anisotropy );\r\n\r\n\tthis.image = { width: width, height: height };\r\n\r\n\tthis.magFilter = magFilter !== undefined ? magFilter : NearestFilter;\r\n\tthis.minFilter = minFilter !== undefined ? minFilter : NearestFilter;\r\n\r\n\tthis.flipY = false;\r\n\tthis.generateMipmaps = false;\r\n\r\n}\r\n\r\nDepthTexture.prototype = Object.create( Texture.prototype );\r\nDepthTexture.prototype.constructor = DepthTexture;\r\nDepthTexture.prototype.isDepthTexture = true;\r\n\r\nlet _geometryId = 0; // Geometry uses even numbers as Id\r\nconst _m1$3 = new Matrix4();\r\nconst _obj$1 = new Object3D();\r\nconst _offset$1 = new Vector3();\r\n\r\nfunction Geometry() {\r\n\r\n\tObject.defineProperty( this, 'id', { value: _geometryId += 2 } );\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n\tthis.name = '';\r\n\tthis.type = 'Geometry';\r\n\r\n\tthis.vertices = [];\r\n\tthis.colors = [];\r\n\tthis.faces = [];\r\n\tthis.faceVertexUvs = [[]];\r\n\r\n\tthis.morphTargets = [];\r\n\tthis.morphNormals = [];\r\n\r\n\tthis.skinWeights = [];\r\n\tthis.skinIndices = [];\r\n\r\n\tthis.lineDistances = [];\r\n\r\n\tthis.boundingBox = null;\r\n\tthis.boundingSphere = null;\r\n\r\n\t// update flags\r\n\r\n\tthis.elementsNeedUpdate = false;\r\n\tthis.verticesNeedUpdate = false;\r\n\tthis.uvsNeedUpdate = false;\r\n\tthis.normalsNeedUpdate = false;\r\n\tthis.colorsNeedUpdate = false;\r\n\tthis.lineDistancesNeedUpdate = false;\r\n\tthis.groupsNeedUpdate = false;\r\n\r\n}\r\n\r\nGeometry.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\r\n\r\n\tconstructor: Geometry,\r\n\r\n\tisGeometry: true,\r\n\r\n\tapplyMatrix4: function ( matrix ) {\r\n\r\n\t\tconst normalMatrix = new Matrix3().getNormalMatrix( matrix );\r\n\r\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst vertex = this.vertices[ i ];\r\n\t\t\tvertex.applyMatrix4( matrix );\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst face = this.faces[ i ];\r\n\t\t\tface.normal.applyMatrix3( normalMatrix ).normalize();\r\n\r\n\t\t\tfor ( let j = 0, jl = face.vertexNormals.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\tface.vertexNormals[ j ].applyMatrix3( normalMatrix ).normalize();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.boundingBox !== null ) {\r\n\r\n\t\t\tthis.computeBoundingBox();\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.boundingSphere !== null ) {\r\n\r\n\t\t\tthis.computeBoundingSphere();\r\n\r\n\t\t}\r\n\r\n\t\tthis.verticesNeedUpdate = true;\r\n\t\tthis.normalsNeedUpdate = true;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\trotateX: function ( angle ) {\r\n\r\n\t\t// rotate geometry around world x-axis\r\n\r\n\t\t_m1$3.makeRotationX( angle );\r\n\r\n\t\tthis.applyMatrix4( _m1$3 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\trotateY: function ( angle ) {\r\n\r\n\t\t// rotate geometry around world y-axis\r\n\r\n\t\t_m1$3.makeRotationY( angle );\r\n\r\n\t\tthis.applyMatrix4( _m1$3 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\trotateZ: function ( angle ) {\r\n\r\n\t\t// rotate geometry around world z-axis\r\n\r\n\t\t_m1$3.makeRotationZ( angle );\r\n\r\n\t\tthis.applyMatrix4( _m1$3 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttranslate: function ( x, y, z ) {\r\n\r\n\t\t// translate geometry\r\n\r\n\t\t_m1$3.makeTranslation( x, y, z );\r\n\r\n\t\tthis.applyMatrix4( _m1$3 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tscale: function ( x, y, z ) {\r\n\r\n\t\t// scale geometry\r\n\r\n\t\t_m1$3.makeScale( x, y, z );\r\n\r\n\t\tthis.applyMatrix4( _m1$3 );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tlookAt: function ( vector ) {\r\n\r\n\t\t_obj$1.lookAt( vector );\r\n\r\n\t\t_obj$1.updateMatrix();\r\n\r\n\t\tthis.applyMatrix4( _obj$1.matrix );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tfromBufferGeometry: function ( geometry ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst index = geometry.index !== null ? geometry.index : undefined;\r\n\t\tconst attributes = geometry.attributes;\r\n\r\n\t\tif ( attributes.position === undefined ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Geometry.fromBufferGeometry(): Position attribute required for conversion.' );\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\tconst position = attributes.position;\r\n\t\tconst normal = attributes.normal;\r\n\t\tconst color = attributes.color;\r\n\t\tconst uv = attributes.uv;\r\n\t\tconst uv2 = attributes.uv2;\r\n\r\n\t\tif ( uv2 !== undefined ) this.faceVertexUvs[ 1 ] = [];\r\n\r\n\t\tfor ( let i = 0; i < position.count; i ++ ) {\r\n\r\n\t\t\tscope.vertices.push( new Vector3().fromBufferAttribute( position, i ) );\r\n\r\n\t\t\tif ( color !== undefined ) {\r\n\r\n\t\t\t\tscope.colors.push( new Color().fromBufferAttribute( color, i ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction addFace( a, b, c, materialIndex ) {\r\n\r\n\t\t\tconst vertexColors = ( color === undefined ) ? [] : [\r\n\t\t\t\tscope.colors[ a ].clone(),\r\n\t\t\t\tscope.colors[ b ].clone(),\r\n\t\t\t\tscope.colors[ c ].clone()\r\n\t\t\t];\r\n\r\n\t\t\tconst vertexNormals = ( normal === undefined ) ? [] : [\r\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, a ),\r\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, b ),\r\n\t\t\t\tnew Vector3().fromBufferAttribute( normal, c )\r\n\t\t\t];\r\n\r\n\t\t\tconst face = new Face3( a, b, c, vertexNormals, vertexColors, materialIndex );\r\n\r\n\t\t\tscope.faces.push( face );\r\n\r\n\t\t\tif ( uv !== undefined ) {\r\n\r\n\t\t\t\tscope.faceVertexUvs[ 0 ].push( [\r\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, a ),\r\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, b ),\r\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv, c )\r\n\t\t\t\t] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( uv2 !== undefined ) {\r\n\r\n\t\t\t\tscope.faceVertexUvs[ 1 ].push( [\r\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, a ),\r\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, b ),\r\n\t\t\t\t\tnew Vector2().fromBufferAttribute( uv2, c )\r\n\t\t\t\t] );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst groups = geometry.groups;\r\n\r\n\t\tif ( groups.length > 0 ) {\r\n\r\n\t\t\tfor ( let i = 0; i < groups.length; i ++ ) {\r\n\r\n\t\t\t\tconst group = groups[ i ];\r\n\r\n\t\t\t\tconst start = group.start;\r\n\t\t\t\tconst count = group.count;\r\n\r\n\t\t\t\tfor ( let j = start, jl = start + count; j < jl; j += 3 ) {\r\n\r\n\t\t\t\t\tif ( index !== undefined ) {\r\n\r\n\t\t\t\t\t\taddFace( index.getX( j ), index.getX( j + 1 ), index.getX( j + 2 ), group.materialIndex );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\taddFace( j, j + 1, j + 2, group.materialIndex );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( index !== undefined ) {\r\n\r\n\t\t\t\tfor ( let i = 0; i < index.count; i += 3 ) {\r\n\r\n\t\t\t\t\taddFace( index.getX( i ), index.getX( i + 1 ), index.getX( i + 2 ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tfor ( let i = 0; i < position.count; i += 3 ) {\r\n\r\n\t\t\t\t\taddFace( i, i + 1, i + 2 );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis.computeFaceNormals();\r\n\r\n\t\tif ( geometry.boundingBox !== null ) {\r\n\r\n\t\t\tthis.boundingBox = geometry.boundingBox.clone();\r\n\r\n\t\t}\r\n\r\n\t\tif ( geometry.boundingSphere !== null ) {\r\n\r\n\t\t\tthis.boundingSphere = geometry.boundingSphere.clone();\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcenter: function () {\r\n\r\n\t\tthis.computeBoundingBox();\r\n\r\n\t\tthis.boundingBox.getCenter( _offset$1 ).negate();\r\n\r\n\t\tthis.translate( _offset$1.x, _offset$1.y, _offset$1.z );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tnormalize: function () {\r\n\r\n\t\tthis.computeBoundingSphere();\r\n\r\n\t\tconst center = this.boundingSphere.center;\r\n\t\tconst radius = this.boundingSphere.radius;\r\n\r\n\t\tconst s = radius === 0 ? 1 : 1.0 / radius;\r\n\r\n\t\tconst matrix = new Matrix4();\r\n\t\tmatrix.set(\r\n\t\t\ts, 0, 0, - s * center.x,\r\n\t\t\t0, s, 0, - s * center.y,\r\n\t\t\t0, 0, s, - s * center.z,\r\n\t\t\t0, 0, 0, 1\r\n\t\t);\r\n\r\n\t\tthis.applyMatrix4( matrix );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcomputeFaceNormals: function () {\r\n\r\n\t\tconst cb = new Vector3(), ab = new Vector3();\r\n\r\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\tconst face = this.faces[ f ];\r\n\r\n\t\t\tconst vA = this.vertices[ face.a ];\r\n\t\t\tconst vB = this.vertices[ face.b ];\r\n\t\t\tconst vC = this.vertices[ face.c ];\r\n\r\n\t\t\tcb.subVectors( vC, vB );\r\n\t\t\tab.subVectors( vA, vB );\r\n\t\t\tcb.cross( ab );\r\n\r\n\t\t\tcb.normalize();\r\n\r\n\t\t\tface.normal.copy( cb );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tcomputeVertexNormals: function ( areaWeighted = true ) {\r\n\r\n\t\tconst vertices = new Array( this.vertices.length );\r\n\r\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\r\n\r\n\t\t\tvertices[ v ] = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\tif ( areaWeighted ) {\r\n\r\n\t\t\t// vertex normals weighted by triangle areas\r\n\t\t\t// http://www.iquilezles.org/www/articles/normals/normals.htm\r\n\r\n\t\t\tconst cb = new Vector3(), ab = new Vector3();\r\n\r\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\t\tconst face = this.faces[ f ];\r\n\r\n\t\t\t\tconst vA = this.vertices[ face.a ];\r\n\t\t\t\tconst vB = this.vertices[ face.b ];\r\n\t\t\t\tconst vC = this.vertices[ face.c ];\r\n\r\n\t\t\t\tcb.subVectors( vC, vB );\r\n\t\t\t\tab.subVectors( vA, vB );\r\n\t\t\t\tcb.cross( ab );\r\n\r\n\t\t\t\tvertices[ face.a ].add( cb );\r\n\t\t\t\tvertices[ face.b ].add( cb );\r\n\t\t\t\tvertices[ face.c ].add( cb );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.computeFaceNormals();\r\n\r\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\t\tconst face = this.faces[ f ];\r\n\r\n\t\t\t\tvertices[ face.a ].add( face.normal );\r\n\t\t\t\tvertices[ face.b ].add( face.normal );\r\n\t\t\t\tvertices[ face.c ].add( face.normal );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let v = 0, vl = this.vertices.length; v < vl; v ++ ) {\r\n\r\n\t\t\tvertices[ v ].normalize();\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\tconst face = this.faces[ f ];\r\n\r\n\t\t\tconst vertexNormals = face.vertexNormals;\r\n\r\n\t\t\tif ( vertexNormals.length === 3 ) {\r\n\r\n\t\t\t\tvertexNormals[ 0 ].copy( vertices[ face.a ] );\r\n\t\t\t\tvertexNormals[ 1 ].copy( vertices[ face.b ] );\r\n\t\t\t\tvertexNormals[ 2 ].copy( vertices[ face.c ] );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tvertexNormals[ 0 ] = vertices[ face.a ].clone();\r\n\t\t\t\tvertexNormals[ 1 ] = vertices[ face.b ].clone();\r\n\t\t\t\tvertexNormals[ 2 ] = vertices[ face.c ].clone();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.faces.length > 0 ) {\r\n\r\n\t\t\tthis.normalsNeedUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tcomputeFlatVertexNormals: function () {\r\n\r\n\t\tthis.computeFaceNormals();\r\n\r\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\tconst face = this.faces[ f ];\r\n\r\n\t\t\tconst vertexNormals = face.vertexNormals;\r\n\r\n\t\t\tif ( vertexNormals.length === 3 ) {\r\n\r\n\t\t\t\tvertexNormals[ 0 ].copy( face.normal );\r\n\t\t\t\tvertexNormals[ 1 ].copy( face.normal );\r\n\t\t\t\tvertexNormals[ 2 ].copy( face.normal );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tvertexNormals[ 0 ] = face.normal.clone();\r\n\t\t\t\tvertexNormals[ 1 ] = face.normal.clone();\r\n\t\t\t\tvertexNormals[ 2 ] = face.normal.clone();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.faces.length > 0 ) {\r\n\r\n\t\t\tthis.normalsNeedUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tcomputeMorphNormals: function () {\r\n\r\n\t\t// save original normals\r\n\t\t// - create temp variables on first access\r\n\t\t// otherwise just copy (for faster repeated calls)\r\n\r\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\tconst face = this.faces[ f ];\r\n\r\n\t\t\tif ( ! face.__originalFaceNormal ) {\r\n\r\n\t\t\t\tface.__originalFaceNormal = face.normal.clone();\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tface.__originalFaceNormal.copy( face.normal );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( ! face.__originalVertexNormals ) face.__originalVertexNormals = [];\r\n\r\n\t\t\tfor ( let i = 0, il = face.vertexNormals.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tif ( ! face.__originalVertexNormals[ i ] ) {\r\n\r\n\t\t\t\t\tface.__originalVertexNormals[ i ] = face.vertexNormals[ i ].clone();\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tface.__originalVertexNormals[ i ].copy( face.vertexNormals[ i ] );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// use temp geometry to compute face and vertex normals for each morph\r\n\r\n\t\tconst tmpGeo = new Geometry();\r\n\t\ttmpGeo.faces = this.faces;\r\n\r\n\t\tfor ( let i = 0, il = this.morphTargets.length; i < il; i ++ ) {\r\n\r\n\t\t\t// create on first access\r\n\r\n\t\t\tif ( ! this.morphNormals[ i ] ) {\r\n\r\n\t\t\t\tthis.morphNormals[ i ] = {};\r\n\t\t\t\tthis.morphNormals[ i ].faceNormals = [];\r\n\t\t\t\tthis.morphNormals[ i ].vertexNormals = [];\r\n\r\n\t\t\t\tconst dstNormalsFace = this.morphNormals[ i ].faceNormals;\r\n\t\t\t\tconst dstNormalsVertex = this.morphNormals[ i ].vertexNormals;\r\n\r\n\t\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\t\t\tconst faceNormal = new Vector3();\r\n\t\t\t\t\tconst vertexNormals = { a: new Vector3(), b: new Vector3(), c: new Vector3() };\r\n\r\n\t\t\t\t\tdstNormalsFace.push( faceNormal );\r\n\t\t\t\t\tdstNormalsVertex.push( vertexNormals );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst morphNormals = this.morphNormals[ i ];\r\n\r\n\t\t\t// set vertices to morph target\r\n\r\n\t\t\ttmpGeo.vertices = this.morphTargets[ i ].vertices;\r\n\r\n\t\t\t// compute morph normals\r\n\r\n\t\t\ttmpGeo.computeFaceNormals();\r\n\t\t\ttmpGeo.computeVertexNormals();\r\n\r\n\t\t\t// store morph normals\r\n\r\n\t\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\t\tconst face = this.faces[ f ];\r\n\r\n\t\t\t\tconst faceNormal = morphNormals.faceNormals[ f ];\r\n\t\t\t\tconst vertexNormals = morphNormals.vertexNormals[ f ];\r\n\r\n\t\t\t\tfaceNormal.copy( face.normal );\r\n\r\n\t\t\t\tvertexNormals.a.copy( face.vertexNormals[ 0 ] );\r\n\t\t\t\tvertexNormals.b.copy( face.vertexNormals[ 1 ] );\r\n\t\t\t\tvertexNormals.c.copy( face.vertexNormals[ 2 ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// restore original normals\r\n\r\n\t\tfor ( let f = 0, fl = this.faces.length; f < fl; f ++ ) {\r\n\r\n\t\t\tconst face = this.faces[ f ];\r\n\r\n\t\t\tface.normal = face.__originalFaceNormal;\r\n\t\t\tface.vertexNormals = face.__originalVertexNormals;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tcomputeBoundingBox: function () {\r\n\r\n\t\tif ( this.boundingBox === null ) {\r\n\r\n\t\t\tthis.boundingBox = new Box3();\r\n\r\n\t\t}\r\n\r\n\t\tthis.boundingBox.setFromPoints( this.vertices );\r\n\r\n\t},\r\n\r\n\tcomputeBoundingSphere: function () {\r\n\r\n\t\tif ( this.boundingSphere === null ) {\r\n\r\n\t\t\tthis.boundingSphere = new Sphere();\r\n\r\n\t\t}\r\n\r\n\t\tthis.boundingSphere.setFromPoints( this.vertices );\r\n\r\n\t},\r\n\r\n\tmerge: function ( geometry, matrix, materialIndexOffset = 0 ) {\r\n\r\n\t\tif ( ! ( geometry && geometry.isGeometry ) ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Geometry.merge(): geometry not an instance of THREE.Geometry.', geometry );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tlet normalMatrix;\r\n\t\tconst vertexOffset = this.vertices.length,\r\n\t\t\tvertices1 = this.vertices,\r\n\t\t\tvertices2 = geometry.vertices,\r\n\t\t\tfaces1 = this.faces,\r\n\t\t\tfaces2 = geometry.faces,\r\n\t\t\tcolors1 = this.colors,\r\n\t\t\tcolors2 = geometry.colors;\r\n\r\n\t\tif ( matrix !== undefined ) {\r\n\r\n\t\t\tnormalMatrix = new Matrix3().getNormalMatrix( matrix );\r\n\r\n\t\t}\r\n\r\n\t\t// vertices\r\n\r\n\t\tfor ( let i = 0, il = vertices2.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst vertex = vertices2[ i ];\r\n\r\n\t\t\tconst vertexCopy = vertex.clone();\r\n\r\n\t\t\tif ( matrix !== undefined ) vertexCopy.applyMatrix4( matrix );\r\n\r\n\t\t\tvertices1.push( vertexCopy );\r\n\r\n\t\t}\r\n\r\n\t\t// colors\r\n\r\n\t\tfor ( let i = 0, il = colors2.length; i < il; i ++ ) {\r\n\r\n\t\t\tcolors1.push( colors2[ i ].clone() );\r\n\r\n\t\t}\r\n\r\n\t\t// faces\r\n\r\n\t\tfor ( let i = 0, il = faces2.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst face = faces2[ i ];\r\n\t\t\tlet normal, color;\r\n\t\t\tconst faceVertexNormals = face.vertexNormals,\r\n\t\t\t\tfaceVertexColors = face.vertexColors;\r\n\r\n\t\t\tconst faceCopy = new Face3( face.a + vertexOffset, face.b + vertexOffset, face.c + vertexOffset );\r\n\t\t\tfaceCopy.normal.copy( face.normal );\r\n\r\n\t\t\tif ( normalMatrix !== undefined ) {\r\n\r\n\t\t\t\tfaceCopy.normal.applyMatrix3( normalMatrix ).normalize();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfor ( let j = 0, jl = faceVertexNormals.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\tnormal = faceVertexNormals[ j ].clone();\r\n\r\n\t\t\t\tif ( normalMatrix !== undefined ) {\r\n\r\n\t\t\t\t\tnormal.applyMatrix3( normalMatrix ).normalize();\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfaceCopy.vertexNormals.push( normal );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfaceCopy.color.copy( face.color );\r\n\r\n\t\t\tfor ( let j = 0, jl = faceVertexColors.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\tcolor = faceVertexColors[ j ];\r\n\t\t\t\tfaceCopy.vertexColors.push( color.clone() );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfaceCopy.materialIndex = face.materialIndex + materialIndexOffset;\r\n\r\n\t\t\tfaces1.push( faceCopy );\r\n\r\n\t\t}\r\n\r\n\t\t// uvs\r\n\r\n\t\tfor ( let i = 0, il = geometry.faceVertexUvs.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst faceVertexUvs2 = geometry.faceVertexUvs[ i ];\r\n\r\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) this.faceVertexUvs[ i ] = [];\r\n\r\n\t\t\tfor ( let j = 0, jl = faceVertexUvs2.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\tconst uvs2 = faceVertexUvs2[ j ], uvsCopy = [];\r\n\r\n\t\t\t\tfor ( let k = 0, kl = uvs2.length; k < kl; k ++ ) {\r\n\r\n\t\t\t\t\tuvsCopy.push( uvs2[ k ].clone() );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tmergeMesh: function ( mesh ) {\r\n\r\n\t\tif ( ! ( mesh && mesh.isMesh ) ) {\r\n\r\n\t\t\tconsole.error( 'THREE.Geometry.mergeMesh(): mesh not an instance of THREE.Mesh.', mesh );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( mesh.matrixAutoUpdate ) mesh.updateMatrix();\r\n\r\n\t\tthis.merge( mesh.geometry, mesh.matrix );\r\n\r\n\t},\r\n\r\n\t/*\r\n\t * Checks for duplicate vertices with hashmap.\r\n\t * Duplicated vertices are removed\r\n\t * and faces' vertices are updated.\r\n\t */\r\n\r\n\tmergeVertices: function ( precisionPoints = 4 ) {\r\n\r\n\t\tconst verticesMap = {}; // Hashmap for looking up vertices by position coordinates (and making sure they are unique)\r\n\t\tconst unique = [], changes = [];\r\n\r\n\t\tconst precision = Math.pow( 10, precisionPoints );\r\n\r\n\t\tfor ( let i = 0, il = this.vertices.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst v = this.vertices[ i ];\r\n\t\t\tconst key = Math.round( v.x * precision ) + '_' + Math.round( v.y * precision ) + '_' + Math.round( v.z * precision );\r\n\r\n\t\t\tif ( verticesMap[ key ] === undefined ) {\r\n\r\n\t\t\t\tverticesMap[ key ] = i;\r\n\t\t\t\tunique.push( this.vertices[ i ] );\r\n\t\t\t\tchanges[ i ] = unique.length - 1;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t//console.log('Duplicate vertex found. ', i, ' could be using ', verticesMap[key]);\r\n\t\t\t\tchanges[ i ] = changes[ verticesMap[ key ] ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\r\n\t\t// if faces are completely degenerate after merging vertices, we\r\n\t\t// have to remove them from the geometry.\r\n\t\tconst faceIndicesToRemove = [];\r\n\r\n\t\tfor ( let i = 0, il = this.faces.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst face = this.faces[ i ];\r\n\r\n\t\t\tface.a = changes[ face.a ];\r\n\t\t\tface.b = changes[ face.b ];\r\n\t\t\tface.c = changes[ face.c ];\r\n\r\n\t\t\tconst indices = [ face.a, face.b, face.c ];\r\n\r\n\t\t\t// if any duplicate vertices are found in a Face3\r\n\t\t\t// we have to remove the face as nothing can be saved\r\n\t\t\tfor ( let n = 0; n < 3; n ++ ) {\r\n\r\n\t\t\t\tif ( indices[ n ] === indices[ ( n + 1 ) % 3 ] ) {\r\n\r\n\t\t\t\t\tfaceIndicesToRemove.push( i );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = faceIndicesToRemove.length - 1; i >= 0; i -- ) {\r\n\r\n\t\t\tconst idx = faceIndicesToRemove[ i ];\r\n\r\n\t\t\tthis.faces.splice( idx, 1 );\r\n\r\n\t\t\tfor ( let j = 0, jl = this.faceVertexUvs.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\tthis.faceVertexUvs[ j ].splice( idx, 1 );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Use unique set of vertices\r\n\r\n\t\tconst diff = this.vertices.length - unique.length;\r\n\t\tthis.vertices = unique;\r\n\t\treturn diff;\r\n\r\n\t},\r\n\r\n\tsetFromPoints: function ( points ) {\r\n\r\n\t\tthis.vertices = [];\r\n\r\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst point = points[ i ];\r\n\t\t\tthis.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsortFacesByMaterialIndex: function () {\r\n\r\n\t\tconst faces = this.faces;\r\n\t\tconst length = faces.length;\r\n\r\n\t\t// tag faces\r\n\r\n\t\tfor ( let i = 0; i < length; i ++ ) {\r\n\r\n\t\t\tfaces[ i ]._id = i;\r\n\r\n\t\t}\r\n\r\n\t\t// sort faces\r\n\r\n\t\tfunction materialIndexSort( a, b ) {\r\n\r\n\t\t\treturn a.materialIndex - b.materialIndex;\r\n\r\n\t\t}\r\n\r\n\t\tfaces.sort( materialIndexSort );\r\n\r\n\t\t// sort uvs\r\n\r\n\t\tconst uvs1 = this.faceVertexUvs[ 0 ];\r\n\t\tconst uvs2 = this.faceVertexUvs[ 1 ];\r\n\r\n\t\tlet newUvs1, newUvs2;\r\n\r\n\t\tif ( uvs1 && uvs1.length === length ) newUvs1 = [];\r\n\t\tif ( uvs2 && uvs2.length === length ) newUvs2 = [];\r\n\r\n\t\tfor ( let i = 0; i < length; i ++ ) {\r\n\r\n\t\t\tconst id = faces[ i ]._id;\r\n\r\n\t\t\tif ( newUvs1 ) newUvs1.push( uvs1[ id ] );\r\n\t\t\tif ( newUvs2 ) newUvs2.push( uvs2[ id ] );\r\n\r\n\t\t}\r\n\r\n\t\tif ( newUvs1 ) this.faceVertexUvs[ 0 ] = newUvs1;\r\n\t\tif ( newUvs2 ) this.faceVertexUvs[ 1 ] = newUvs2;\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\tconst data = {\r\n\t\t\tmetadata: {\r\n\t\t\t\tversion: 4.5,\r\n\t\t\t\ttype: 'Geometry',\r\n\t\t\t\tgenerator: 'Geometry.toJSON'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// standard Geometry serialization\r\n\r\n\t\tdata.uuid = this.uuid;\r\n\t\tdata.type = this.type;\r\n\t\tif ( this.name !== '' ) data.name = this.name;\r\n\r\n\t\tif ( this.parameters !== undefined ) {\r\n\r\n\t\t\tconst parameters = this.parameters;\r\n\r\n\t\t\tfor ( const key in parameters ) {\r\n\r\n\t\t\t\tif ( parameters[ key ] !== undefined ) data[ key ] = parameters[ key ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn data;\r\n\r\n\t\t}\r\n\r\n\t\tconst vertices = [];\r\n\r\n\t\tfor ( let i = 0; i < this.vertices.length; i ++ ) {\r\n\r\n\t\t\tconst vertex = this.vertices[ i ];\r\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t}\r\n\r\n\t\tconst faces = [];\r\n\t\tconst normals = [];\r\n\t\tconst normalsHash = {};\r\n\t\tconst colors = [];\r\n\t\tconst colorsHash = {};\r\n\t\tconst uvs = [];\r\n\t\tconst uvsHash = {};\r\n\r\n\t\tfor ( let i = 0; i < this.faces.length; i ++ ) {\r\n\r\n\t\t\tconst face = this.faces[ i ];\r\n\r\n\t\t\tconst hasMaterial = true;\r\n\t\t\tconst hasFaceUv = false; // deprecated\r\n\t\t\tconst hasFaceVertexUv = this.faceVertexUvs[ 0 ][ i ] !== undefined;\r\n\t\t\tconst hasFaceNormal = face.normal.length() > 0;\r\n\t\t\tconst hasFaceVertexNormal = face.vertexNormals.length > 0;\r\n\t\t\tconst hasFaceColor = face.color.r !== 1 || face.color.g !== 1 || face.color.b !== 1;\r\n\t\t\tconst hasFaceVertexColor = face.vertexColors.length > 0;\r\n\r\n\t\t\tlet faceType = 0;\r\n\r\n\t\t\tfaceType = setBit( faceType, 0, 0 ); // isQuad\r\n\t\t\tfaceType = setBit( faceType, 1, hasMaterial );\r\n\t\t\tfaceType = setBit( faceType, 2, hasFaceUv );\r\n\t\t\tfaceType = setBit( faceType, 3, hasFaceVertexUv );\r\n\t\t\tfaceType = setBit( faceType, 4, hasFaceNormal );\r\n\t\t\tfaceType = setBit( faceType, 5, hasFaceVertexNormal );\r\n\t\t\tfaceType = setBit( faceType, 6, hasFaceColor );\r\n\t\t\tfaceType = setBit( faceType, 7, hasFaceVertexColor );\r\n\r\n\t\t\tfaces.push( faceType );\r\n\t\t\tfaces.push( face.a, face.b, face.c );\r\n\t\t\tfaces.push( face.materialIndex );\r\n\r\n\t\t\tif ( hasFaceVertexUv ) {\r\n\r\n\t\t\t\tconst faceVertexUvs = this.faceVertexUvs[ 0 ][ i ];\r\n\r\n\t\t\t\tfaces.push(\r\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 0 ] ),\r\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 1 ] ),\r\n\t\t\t\t\tgetUvIndex( faceVertexUvs[ 2 ] )\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasFaceNormal ) {\r\n\r\n\t\t\t\tfaces.push( getNormalIndex( face.normal ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasFaceVertexNormal ) {\r\n\r\n\t\t\t\tconst vertexNormals = face.vertexNormals;\r\n\r\n\t\t\t\tfaces.push(\r\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 0 ] ),\r\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 1 ] ),\r\n\t\t\t\t\tgetNormalIndex( vertexNormals[ 2 ] )\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasFaceColor ) {\r\n\r\n\t\t\t\tfaces.push( getColorIndex( face.color ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasFaceVertexColor ) {\r\n\r\n\t\t\t\tconst vertexColors = face.vertexColors;\r\n\r\n\t\t\t\tfaces.push(\r\n\t\t\t\t\tgetColorIndex( vertexColors[ 0 ] ),\r\n\t\t\t\t\tgetColorIndex( vertexColors[ 1 ] ),\r\n\t\t\t\t\tgetColorIndex( vertexColors[ 2 ] )\r\n\t\t\t\t);\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction setBit( value, position, enabled ) {\r\n\r\n\t\t\treturn enabled ? value | ( 1 << position ) : value & ( ~ ( 1 << position ) );\r\n\r\n\t\t}\r\n\r\n\t\tfunction getNormalIndex( normal ) {\r\n\r\n\t\t\tconst hash = normal.x.toString() + normal.y.toString() + normal.z.toString();\r\n\r\n\t\t\tif ( normalsHash[ hash ] !== undefined ) {\r\n\r\n\t\t\t\treturn normalsHash[ hash ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tnormalsHash[ hash ] = normals.length / 3;\r\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\r\n\r\n\t\t\treturn normalsHash[ hash ];\r\n\r\n\t\t}\r\n\r\n\t\tfunction getColorIndex( color ) {\r\n\r\n\t\t\tconst hash = color.r.toString() + color.g.toString() + color.b.toString();\r\n\r\n\t\t\tif ( colorsHash[ hash ] !== undefined ) {\r\n\r\n\t\t\t\treturn colorsHash[ hash ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcolorsHash[ hash ] = colors.length;\r\n\t\t\tcolors.push( color.getHex() );\r\n\r\n\t\t\treturn colorsHash[ hash ];\r\n\r\n\t\t}\r\n\r\n\t\tfunction getUvIndex( uv ) {\r\n\r\n\t\t\tconst hash = uv.x.toString() + uv.y.toString();\r\n\r\n\t\t\tif ( uvsHash[ hash ] !== undefined ) {\r\n\r\n\t\t\t\treturn uvsHash[ hash ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tuvsHash[ hash ] = uvs.length / 2;\r\n\t\t\tuvs.push( uv.x, uv.y );\r\n\r\n\t\t\treturn uvsHash[ hash ];\r\n\r\n\t\t}\r\n\r\n\t\tdata.data = {};\r\n\r\n\t\tdata.data.vertices = vertices;\r\n\t\tdata.data.normals = normals;\r\n\t\tif ( colors.length > 0 ) data.data.colors = colors;\r\n\t\tif ( uvs.length > 0 ) data.data.uvs = [ uvs ]; // temporal backward compatibility\r\n\t\tdata.data.faces = faces;\r\n\r\n\t\treturn data;\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\t/*\r\n\t\t // Handle primitives\r\n\r\n\t\t const parameters = this.parameters;\r\n\r\n\t\t if ( parameters !== undefined ) {\r\n\r\n\t\t const values = [];\r\n\r\n\t\t for ( const key in parameters ) {\r\n\r\n\t\t values.push( parameters[ key ] );\r\n\r\n\t\t }\r\n\r\n\t\t const geometry = Object.create( this.constructor.prototype );\r\n\t\t this.constructor.apply( geometry, values );\r\n\t\t return geometry;\r\n\r\n\t\t }\r\n\r\n\t\t return new this.constructor().copy( this );\r\n\t\t */\r\n\r\n\t\treturn new Geometry().copy( this );\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\t// reset\r\n\r\n\t\tthis.vertices = [];\r\n\t\tthis.colors = [];\r\n\t\tthis.faces = [];\r\n\t\tthis.faceVertexUvs = [[]];\r\n\t\tthis.morphTargets = [];\r\n\t\tthis.morphNormals = [];\r\n\t\tthis.skinWeights = [];\r\n\t\tthis.skinIndices = [];\r\n\t\tthis.lineDistances = [];\r\n\t\tthis.boundingBox = null;\r\n\t\tthis.boundingSphere = null;\r\n\r\n\t\t// name\r\n\r\n\t\tthis.name = source.name;\r\n\r\n\t\t// vertices\r\n\r\n\t\tconst vertices = source.vertices;\r\n\r\n\t\tfor ( let i = 0, il = vertices.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.vertices.push( vertices[ i ].clone() );\r\n\r\n\t\t}\r\n\r\n\t\t// colors\r\n\r\n\t\tconst colors = source.colors;\r\n\r\n\t\tfor ( let i = 0, il = colors.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.colors.push( colors[ i ].clone() );\r\n\r\n\t\t}\r\n\r\n\t\t// faces\r\n\r\n\t\tconst faces = source.faces;\r\n\r\n\t\tfor ( let i = 0, il = faces.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.faces.push( faces[ i ].clone() );\r\n\r\n\t\t}\r\n\r\n\t\t// face vertex uvs\r\n\r\n\t\tfor ( let i = 0, il = source.faceVertexUvs.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst faceVertexUvs = source.faceVertexUvs[ i ];\r\n\r\n\t\t\tif ( this.faceVertexUvs[ i ] === undefined ) {\r\n\r\n\t\t\t\tthis.faceVertexUvs[ i ] = [];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfor ( let j = 0, jl = faceVertexUvs.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\tconst uvs = faceVertexUvs[ j ], uvsCopy = [];\r\n\r\n\t\t\t\tfor ( let k = 0, kl = uvs.length; k < kl; k ++ ) {\r\n\r\n\t\t\t\t\tconst uv = uvs[ k ];\r\n\r\n\t\t\t\t\tuvsCopy.push( uv.clone() );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.faceVertexUvs[ i ].push( uvsCopy );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// morph targets\r\n\r\n\t\tconst morphTargets = source.morphTargets;\r\n\r\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst morphTarget = {};\r\n\t\t\tmorphTarget.name = morphTargets[ i ].name;\r\n\r\n\t\t\t// vertices\r\n\r\n\t\t\tif ( morphTargets[ i ].vertices !== undefined ) {\r\n\r\n\t\t\t\tmorphTarget.vertices = [];\r\n\r\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].vertices.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\tmorphTarget.vertices.push( morphTargets[ i ].vertices[ j ].clone() );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// normals\r\n\r\n\t\t\tif ( morphTargets[ i ].normals !== undefined ) {\r\n\r\n\t\t\t\tmorphTarget.normals = [];\r\n\r\n\t\t\t\tfor ( let j = 0, jl = morphTargets[ i ].normals.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\tmorphTarget.normals.push( morphTargets[ i ].normals[ j ].clone() );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.morphTargets.push( morphTarget );\r\n\r\n\t\t}\r\n\r\n\t\t// morph normals\r\n\r\n\t\tconst morphNormals = source.morphNormals;\r\n\r\n\t\tfor ( let i = 0, il = morphNormals.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst morphNormal = {};\r\n\r\n\t\t\t// vertex normals\r\n\r\n\t\t\tif ( morphNormals[ i ].vertexNormals !== undefined ) {\r\n\r\n\t\t\t\tmorphNormal.vertexNormals = [];\r\n\r\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].vertexNormals.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\tconst srcVertexNormal = morphNormals[ i ].vertexNormals[ j ];\r\n\t\t\t\t\tconst destVertexNormal = {};\r\n\r\n\t\t\t\t\tdestVertexNormal.a = srcVertexNormal.a.clone();\r\n\t\t\t\t\tdestVertexNormal.b = srcVertexNormal.b.clone();\r\n\t\t\t\t\tdestVertexNormal.c = srcVertexNormal.c.clone();\r\n\r\n\t\t\t\t\tmorphNormal.vertexNormals.push( destVertexNormal );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// face normals\r\n\r\n\t\t\tif ( morphNormals[ i ].faceNormals !== undefined ) {\r\n\r\n\t\t\t\tmorphNormal.faceNormals = [];\r\n\r\n\t\t\t\tfor ( let j = 0, jl = morphNormals[ i ].faceNormals.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\tmorphNormal.faceNormals.push( morphNormals[ i ].faceNormals[ j ].clone() );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.morphNormals.push( morphNormal );\r\n\r\n\t\t}\r\n\r\n\t\t// skin weights\r\n\r\n\t\tconst skinWeights = source.skinWeights;\r\n\r\n\t\tfor ( let i = 0, il = skinWeights.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.skinWeights.push( skinWeights[ i ].clone() );\r\n\r\n\t\t}\r\n\r\n\t\t// skin indices\r\n\r\n\t\tconst skinIndices = source.skinIndices;\r\n\r\n\t\tfor ( let i = 0, il = skinIndices.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.skinIndices.push( skinIndices[ i ].clone() );\r\n\r\n\t\t}\r\n\r\n\t\t// line distances\r\n\r\n\t\tconst lineDistances = source.lineDistances;\r\n\r\n\t\tfor ( let i = 0, il = lineDistances.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.lineDistances.push( lineDistances[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\t// bounding box\r\n\r\n\t\tconst boundingBox = source.boundingBox;\r\n\r\n\t\tif ( boundingBox !== null ) {\r\n\r\n\t\t\tthis.boundingBox = boundingBox.clone();\r\n\r\n\t\t}\r\n\r\n\t\t// bounding sphere\r\n\r\n\t\tconst boundingSphere = source.boundingSphere;\r\n\r\n\t\tif ( boundingSphere !== null ) {\r\n\r\n\t\t\tthis.boundingSphere = boundingSphere.clone();\r\n\r\n\t\t}\r\n\r\n\t\t// update flags\r\n\r\n\t\tthis.elementsNeedUpdate = source.elementsNeedUpdate;\r\n\t\tthis.verticesNeedUpdate = source.verticesNeedUpdate;\r\n\t\tthis.uvsNeedUpdate = source.uvsNeedUpdate;\r\n\t\tthis.normalsNeedUpdate = source.normalsNeedUpdate;\r\n\t\tthis.colorsNeedUpdate = source.colorsNeedUpdate;\r\n\t\tthis.lineDistancesNeedUpdate = source.lineDistancesNeedUpdate;\r\n\t\tthis.groupsNeedUpdate = source.groupsNeedUpdate;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tdispose: function () {\r\n\r\n\t\tthis.dispatchEvent( { type: 'dispose' } );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nclass BoxGeometry extends Geometry {\r\n\r\n\tconstructor( width, height, depth, widthSegments, heightSegments, depthSegments ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'BoxGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t\tdepth: depth,\r\n\t\t\twidthSegments: widthSegments,\r\n\t\t\theightSegments: heightSegments,\r\n\t\t\tdepthSegments: depthSegments\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new BoxBufferGeometry( width, height, depth, widthSegments, heightSegments, depthSegments ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass CircleBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( radius = 1, segments = 8, thetaStart = 0, thetaLength = Math.PI * 2 ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'CircleBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tsegments: segments,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t\tsegments = Math.max( 3, segments );\r\n\r\n\t\t// buffers\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\t// helper variables\r\n\r\n\t\tconst vertex = new Vector3();\r\n\t\tconst uv = new Vector2();\r\n\r\n\t\t// center point\r\n\r\n\t\tvertices.push( 0, 0, 0 );\r\n\t\tnormals.push( 0, 0, 1 );\r\n\t\tuvs.push( 0.5, 0.5 );\r\n\r\n\t\tfor ( let s = 0, i = 3; s <= segments; s ++, i += 3 ) {\r\n\r\n\t\t\tconst segment = thetaStart + s / segments * thetaLength;\r\n\r\n\t\t\t// vertex\r\n\r\n\t\t\tvertex.x = radius * Math.cos( segment );\r\n\t\t\tvertex.y = radius * Math.sin( segment );\r\n\r\n\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t// normal\r\n\r\n\t\t\tnormals.push( 0, 0, 1 );\r\n\r\n\t\t\t// uvs\r\n\r\n\t\t\tuv.x = ( vertices[ i ] / radius + 1 ) / 2;\r\n\t\t\tuv.y = ( vertices[ i + 1 ] / radius + 1 ) / 2;\r\n\r\n\t\t\tuvs.push( uv.x, uv.y );\r\n\r\n\t\t}\r\n\r\n\t\t// indices\r\n\r\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\r\n\r\n\t\t\tindices.push( i, i + 1, 0 );\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass CircleGeometry extends Geometry {\r\n\r\n\tconstructor( radius, segments, thetaStart, thetaLength ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'CircleGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tsegments: segments,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new CircleBufferGeometry( radius, segments, thetaStart, thetaLength ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass CylinderBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( radiusTop = 1, radiusBottom = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'CylinderBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradiusTop: radiusTop,\r\n\t\t\tradiusBottom: radiusBottom,\r\n\t\t\theight: height,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\theightSegments: heightSegments,\r\n\t\t\topenEnded: openEnded,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tradialSegments = Math.floor( radialSegments );\r\n\t\theightSegments = Math.floor( heightSegments );\r\n\r\n\t\t// buffers\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\t// helper variables\r\n\r\n\t\tlet index = 0;\r\n\t\tconst indexArray = [];\r\n\t\tconst halfHeight = height / 2;\r\n\t\tlet groupStart = 0;\r\n\r\n\t\t// generate geometry\r\n\r\n\t\tgenerateTorso();\r\n\r\n\t\tif ( openEnded === false ) {\r\n\r\n\t\t\tif ( radiusTop > 0 ) generateCap( true );\r\n\t\t\tif ( radiusBottom > 0 ) generateCap( false );\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t\tfunction generateTorso() {\r\n\r\n\t\t\tconst normal = new Vector3();\r\n\t\t\tconst vertex = new Vector3();\r\n\r\n\t\t\tlet groupCount = 0;\r\n\r\n\t\t\t// this will be used to calculate the normal\r\n\t\t\tconst slope = ( radiusBottom - radiusTop ) / height;\r\n\r\n\t\t\t// generate vertices, normals and uvs\r\n\r\n\t\t\tfor ( let y = 0; y <= heightSegments; y ++ ) {\r\n\r\n\t\t\t\tconst indexRow = [];\r\n\r\n\t\t\t\tconst v = y / heightSegments;\r\n\r\n\t\t\t\t// calculate the radius of the current row\r\n\r\n\t\t\t\tconst radius = v * ( radiusBottom - radiusTop ) + radiusTop;\r\n\r\n\t\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\r\n\r\n\t\t\t\t\tconst u = x / radialSegments;\r\n\r\n\t\t\t\t\tconst theta = u * thetaLength + thetaStart;\r\n\r\n\t\t\t\t\tconst sinTheta = Math.sin( theta );\r\n\t\t\t\t\tconst cosTheta = Math.cos( theta );\r\n\r\n\t\t\t\t\t// vertex\r\n\r\n\t\t\t\t\tvertex.x = radius * sinTheta;\r\n\t\t\t\t\tvertex.y = - v * height + halfHeight;\r\n\t\t\t\t\tvertex.z = radius * cosTheta;\r\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t\t// normal\r\n\r\n\t\t\t\t\tnormal.set( sinTheta, slope, cosTheta ).normalize();\r\n\t\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\r\n\r\n\t\t\t\t\t// uv\r\n\r\n\t\t\t\t\tuvs.push( u, 1 - v );\r\n\r\n\t\t\t\t\t// save index of vertex in respective row\r\n\r\n\t\t\t\t\tindexRow.push( index ++ );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// now save vertices of the row in our index array\r\n\r\n\t\t\t\tindexArray.push( indexRow );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// generate indices\r\n\r\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\r\n\r\n\t\t\t\tfor ( let y = 0; y < heightSegments; y ++ ) {\r\n\r\n\t\t\t\t\t// we use the index array to access the correct indices\r\n\r\n\t\t\t\t\tconst a = indexArray[ y ][ x ];\r\n\t\t\t\t\tconst b = indexArray[ y + 1 ][ x ];\r\n\t\t\t\t\tconst c = indexArray[ y + 1 ][ x + 1 ];\r\n\t\t\t\t\tconst d = indexArray[ y ][ x + 1 ];\r\n\r\n\t\t\t\t\t// faces\r\n\r\n\t\t\t\t\tindices.push( a, b, d );\r\n\t\t\t\t\tindices.push( b, c, d );\r\n\r\n\t\t\t\t\t// update group counter\r\n\r\n\t\t\t\t\tgroupCount += 6;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// add a group to the geometry. this will ensure multi material support\r\n\r\n\t\t\tscope.addGroup( groupStart, groupCount, 0 );\r\n\r\n\t\t\t// calculate new start value for groups\r\n\r\n\t\t\tgroupStart += groupCount;\r\n\r\n\t\t}\r\n\r\n\t\tfunction generateCap( top ) {\r\n\r\n\t\t\t// save the index of the first center vertex\r\n\t\t\tconst centerIndexStart = index;\r\n\r\n\t\t\tconst uv = new Vector2();\r\n\t\t\tconst vertex = new Vector3();\r\n\r\n\t\t\tlet groupCount = 0;\r\n\r\n\t\t\tconst radius = ( top === true ) ? radiusTop : radiusBottom;\r\n\t\t\tconst sign = ( top === true ) ? 1 : - 1;\r\n\r\n\t\t\t// first we generate the center vertex data of the cap.\r\n\t\t\t// because the geometry needs one set of uvs per face,\r\n\t\t\t// we must generate a center vertex per face/segment\r\n\r\n\t\t\tfor ( let x = 1; x <= radialSegments; x ++ ) {\r\n\r\n\t\t\t\t// vertex\r\n\r\n\t\t\t\tvertices.push( 0, halfHeight * sign, 0 );\r\n\r\n\t\t\t\t// normal\r\n\r\n\t\t\t\tnormals.push( 0, sign, 0 );\r\n\r\n\t\t\t\t// uv\r\n\r\n\t\t\t\tuvs.push( 0.5, 0.5 );\r\n\r\n\t\t\t\t// increase index\r\n\r\n\t\t\t\tindex ++;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// save the index of the last center vertex\r\n\t\t\tconst centerIndexEnd = index;\r\n\r\n\t\t\t// now we generate the surrounding vertices, normals and uvs\r\n\r\n\t\t\tfor ( let x = 0; x <= radialSegments; x ++ ) {\r\n\r\n\t\t\t\tconst u = x / radialSegments;\r\n\t\t\t\tconst theta = u * thetaLength + thetaStart;\r\n\r\n\t\t\t\tconst cosTheta = Math.cos( theta );\r\n\t\t\t\tconst sinTheta = Math.sin( theta );\r\n\r\n\t\t\t\t// vertex\r\n\r\n\t\t\t\tvertex.x = radius * sinTheta;\r\n\t\t\t\tvertex.y = halfHeight * sign;\r\n\t\t\t\tvertex.z = radius * cosTheta;\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t// normal\r\n\r\n\t\t\t\tnormals.push( 0, sign, 0 );\r\n\r\n\t\t\t\t// uv\r\n\r\n\t\t\t\tuv.x = ( cosTheta * 0.5 ) + 0.5;\r\n\t\t\t\tuv.y = ( sinTheta * 0.5 * sign ) + 0.5;\r\n\t\t\t\tuvs.push( uv.x, uv.y );\r\n\r\n\t\t\t\t// increase index\r\n\r\n\t\t\t\tindex ++;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// generate indices\r\n\r\n\t\t\tfor ( let x = 0; x < radialSegments; x ++ ) {\r\n\r\n\t\t\t\tconst c = centerIndexStart + x;\r\n\t\t\t\tconst i = centerIndexEnd + x;\r\n\r\n\t\t\t\tif ( top === true ) {\r\n\r\n\t\t\t\t\t// face top\r\n\r\n\t\t\t\t\tindices.push( i, i + 1, c );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// face bottom\r\n\r\n\t\t\t\t\tindices.push( i + 1, i, c );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgroupCount += 3;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// add a group to the geometry. this will ensure multi material support\r\n\r\n\t\t\tscope.addGroup( groupStart, groupCount, top === true ? 1 : 2 );\r\n\r\n\t\t\t// calculate new start value for groups\r\n\r\n\t\t\tgroupStart += groupCount;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass CylinderGeometry extends Geometry {\r\n\r\n\tconstructor( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'CylinderGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradiusTop: radiusTop,\r\n\t\t\tradiusBottom: radiusBottom,\r\n\t\t\theight: height,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\theightSegments: heightSegments,\r\n\t\t\topenEnded: openEnded,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new CylinderBufferGeometry( radiusTop, radiusBottom, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass ConeGeometry extends CylinderGeometry {\r\n\r\n\tconstructor( radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength ) {\r\n\r\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\r\n\t\tthis.type = 'ConeGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\theight: height,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\theightSegments: heightSegments,\r\n\t\t\topenEnded: openEnded,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass ConeBufferGeometry extends CylinderBufferGeometry {\r\n\r\n\tconstructor( radius = 1, height = 1, radialSegments = 8, heightSegments = 1, openEnded = false, thetaStart = 0, thetaLength = Math.PI * 2 ) {\r\n\r\n\t\tsuper( 0, radius, height, radialSegments, heightSegments, openEnded, thetaStart, thetaLength );\r\n\r\n\t\tthis.type = 'ConeBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\theight: height,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\theightSegments: heightSegments,\r\n\t\t\topenEnded: openEnded,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass PolyhedronBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( vertices, indices, radius = 1, detail = 0 ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'PolyhedronBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tvertices: vertices,\r\n\t\t\tindices: indices,\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t\t// default buffer data\r\n\r\n\t\tconst vertexBuffer = [];\r\n\t\tconst uvBuffer = [];\r\n\r\n\t\t// the subdivision creates the vertex buffer data\r\n\r\n\t\tsubdivide( detail );\r\n\r\n\t\t// all vertices should lie on a conceptual sphere with a given radius\r\n\r\n\t\tapplyRadius( radius );\r\n\r\n\t\t// finally, create the uv data\r\n\r\n\t\tgenerateUVs();\r\n\r\n\t\t// build non-indexed geometry\r\n\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertexBuffer, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( vertexBuffer.slice(), 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvBuffer, 2 ) );\r\n\r\n\t\tif ( detail === 0 ) {\r\n\r\n\t\t\tthis.computeVertexNormals(); // flat normals\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.normalizeNormals(); // smooth normals\r\n\r\n\t\t}\r\n\r\n\t\t// helper functions\r\n\r\n\t\tfunction subdivide( detail ) {\r\n\r\n\t\t\tconst a = new Vector3();\r\n\t\t\tconst b = new Vector3();\r\n\t\t\tconst c = new Vector3();\r\n\r\n\t\t\t// iterate over all faces and apply a subdivison with the given detail value\r\n\r\n\t\t\tfor ( let i = 0; i < indices.length; i += 3 ) {\r\n\r\n\t\t\t\t// get the vertices of the face\r\n\r\n\t\t\t\tgetVertexByIndex( indices[ i + 0 ], a );\r\n\t\t\t\tgetVertexByIndex( indices[ i + 1 ], b );\r\n\t\t\t\tgetVertexByIndex( indices[ i + 2 ], c );\r\n\r\n\t\t\t\t// perform subdivision\r\n\r\n\t\t\t\tsubdivideFace( a, b, c, detail );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction subdivideFace( a, b, c, detail ) {\r\n\r\n\t\t\tconst cols = detail + 1;\r\n\r\n\t\t\t// we use this multidimensional array as a data structure for creating the subdivision\r\n\r\n\t\t\tconst v = [];\r\n\r\n\t\t\t// construct all of the vertices for this subdivision\r\n\r\n\t\t\tfor ( let i = 0; i <= cols; i ++ ) {\r\n\r\n\t\t\t\tv[ i ] = [];\r\n\r\n\t\t\t\tconst aj = a.clone().lerp( c, i / cols );\r\n\t\t\t\tconst bj = b.clone().lerp( c, i / cols );\r\n\r\n\t\t\t\tconst rows = cols - i;\r\n\r\n\t\t\t\tfor ( let j = 0; j <= rows; j ++ ) {\r\n\r\n\t\t\t\t\tif ( j === 0 && i === cols ) {\r\n\r\n\t\t\t\t\t\tv[ i ][ j ] = aj;\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tv[ i ][ j ] = aj.clone().lerp( bj, j / rows );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// construct all of the faces\r\n\r\n\t\t\tfor ( let i = 0; i < cols; i ++ ) {\r\n\r\n\t\t\t\tfor ( let j = 0; j < 2 * ( cols - i ) - 1; j ++ ) {\r\n\r\n\t\t\t\t\tconst k = Math.floor( j / 2 );\r\n\r\n\t\t\t\t\tif ( j % 2 === 0 ) {\r\n\r\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\r\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\r\n\t\t\t\t\t\tpushVertex( v[ i ][ k ] );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tpushVertex( v[ i ][ k + 1 ] );\r\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k + 1 ] );\r\n\t\t\t\t\t\tpushVertex( v[ i + 1 ][ k ] );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction applyRadius( radius ) {\r\n\r\n\t\t\tconst vertex = new Vector3();\r\n\r\n\t\t\t// iterate over the entire buffer and apply the radius to each vertex\r\n\r\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\r\n\r\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\r\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\r\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\r\n\r\n\t\t\t\tvertex.normalize().multiplyScalar( radius );\r\n\r\n\t\t\t\tvertexBuffer[ i + 0 ] = vertex.x;\r\n\t\t\t\tvertexBuffer[ i + 1 ] = vertex.y;\r\n\t\t\t\tvertexBuffer[ i + 2 ] = vertex.z;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction generateUVs() {\r\n\r\n\t\t\tconst vertex = new Vector3();\r\n\r\n\t\t\tfor ( let i = 0; i < vertexBuffer.length; i += 3 ) {\r\n\r\n\t\t\t\tvertex.x = vertexBuffer[ i + 0 ];\r\n\t\t\t\tvertex.y = vertexBuffer[ i + 1 ];\r\n\t\t\t\tvertex.z = vertexBuffer[ i + 2 ];\r\n\r\n\t\t\t\tconst u = azimuth( vertex ) / 2 / Math.PI + 0.5;\r\n\t\t\t\tconst v = inclination( vertex ) / Math.PI + 0.5;\r\n\t\t\t\tuvBuffer.push( u, 1 - v );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcorrectUVs();\r\n\r\n\t\t\tcorrectSeam();\r\n\r\n\t\t}\r\n\r\n\t\tfunction correctSeam() {\r\n\r\n\t\t\t// handle case when face straddles the seam, see #3269\r\n\r\n\t\t\tfor ( let i = 0; i < uvBuffer.length; i += 6 ) {\r\n\r\n\t\t\t\t// uv data of a single face\r\n\r\n\t\t\t\tconst x0 = uvBuffer[ i + 0 ];\r\n\t\t\t\tconst x1 = uvBuffer[ i + 2 ];\r\n\t\t\t\tconst x2 = uvBuffer[ i + 4 ];\r\n\r\n\t\t\t\tconst max = Math.max( x0, x1, x2 );\r\n\t\t\t\tconst min = Math.min( x0, x1, x2 );\r\n\r\n\t\t\t\t// 0.9 is somewhat arbitrary\r\n\r\n\t\t\t\tif ( max > 0.9 && min < 0.1 ) {\r\n\r\n\t\t\t\t\tif ( x0 < 0.2 ) uvBuffer[ i + 0 ] += 1;\r\n\t\t\t\t\tif ( x1 < 0.2 ) uvBuffer[ i + 2 ] += 1;\r\n\t\t\t\t\tif ( x2 < 0.2 ) uvBuffer[ i + 4 ] += 1;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction pushVertex( vertex ) {\r\n\r\n\t\t\tvertexBuffer.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t}\r\n\r\n\t\tfunction getVertexByIndex( index, vertex ) {\r\n\r\n\t\t\tconst stride = index * 3;\r\n\r\n\t\t\tvertex.x = vertices[ stride + 0 ];\r\n\t\t\tvertex.y = vertices[ stride + 1 ];\r\n\t\t\tvertex.z = vertices[ stride + 2 ];\r\n\r\n\t\t}\r\n\r\n\t\tfunction correctUVs() {\r\n\r\n\t\t\tconst a = new Vector3();\r\n\t\t\tconst b = new Vector3();\r\n\t\t\tconst c = new Vector3();\r\n\r\n\t\t\tconst centroid = new Vector3();\r\n\r\n\t\t\tconst uvA = new Vector2();\r\n\t\t\tconst uvB = new Vector2();\r\n\t\t\tconst uvC = new Vector2();\r\n\r\n\t\t\tfor ( let i = 0, j = 0; i < vertexBuffer.length; i += 9, j += 6 ) {\r\n\r\n\t\t\t\ta.set( vertexBuffer[ i + 0 ], vertexBuffer[ i + 1 ], vertexBuffer[ i + 2 ] );\r\n\t\t\t\tb.set( vertexBuffer[ i + 3 ], vertexBuffer[ i + 4 ], vertexBuffer[ i + 5 ] );\r\n\t\t\t\tc.set( vertexBuffer[ i + 6 ], vertexBuffer[ i + 7 ], vertexBuffer[ i + 8 ] );\r\n\r\n\t\t\t\tuvA.set( uvBuffer[ j + 0 ], uvBuffer[ j + 1 ] );\r\n\t\t\t\tuvB.set( uvBuffer[ j + 2 ], uvBuffer[ j + 3 ] );\r\n\t\t\t\tuvC.set( uvBuffer[ j + 4 ], uvBuffer[ j + 5 ] );\r\n\r\n\t\t\t\tcentroid.copy( a ).add( b ).add( c ).divideScalar( 3 );\r\n\r\n\t\t\t\tconst azi = azimuth( centroid );\r\n\r\n\t\t\t\tcorrectUV( uvA, j + 0, a, azi );\r\n\t\t\t\tcorrectUV( uvB, j + 2, b, azi );\r\n\t\t\t\tcorrectUV( uvC, j + 4, c, azi );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction correctUV( uv, stride, vector, azimuth ) {\r\n\r\n\t\t\tif ( ( azimuth < 0 ) && ( uv.x === 1 ) ) {\r\n\r\n\t\t\t\tuvBuffer[ stride ] = uv.x - 1;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( ( vector.x === 0 ) && ( vector.z === 0 ) ) {\r\n\r\n\t\t\t\tuvBuffer[ stride ] = azimuth / 2 / Math.PI + 0.5;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Angle around the Y axis, counter-clockwise when looking from above.\r\n\r\n\t\tfunction azimuth( vector ) {\r\n\r\n\t\t\treturn Math.atan2( vector.z, - vector.x );\r\n\r\n\t\t}\r\n\r\n\r\n\t\t// Angle above the XZ plane.\r\n\r\n\t\tfunction inclination( vector ) {\r\n\r\n\t\t\treturn Math.atan2( - vector.y, Math.sqrt( ( vector.x * vector.x ) + ( vector.z * vector.z ) ) );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass DodecahedronBufferGeometry extends PolyhedronBufferGeometry {\r\n\r\n\tconstructor( radius = 1, detail = 0 ) {\r\n\r\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\r\n\t\tconst r = 1 / t;\r\n\r\n\t\tconst vertices = [\r\n\r\n\t\t\t// (±1, ±1, ±1)\r\n\t\t\t- 1, - 1, - 1,\t- 1, - 1, 1,\r\n\t\t\t- 1, 1, - 1, - 1, 1, 1,\r\n\t\t\t1, - 1, - 1, 1, - 1, 1,\r\n\t\t\t1, 1, - 1, 1, 1, 1,\r\n\r\n\t\t\t// (0, ±1/φ, ±φ)\r\n\t\t\t0, - r, - t, 0, - r, t,\r\n\t\t\t0, r, - t, 0, r, t,\r\n\r\n\t\t\t// (±1/φ, ±φ, 0)\r\n\t\t\t- r, - t, 0, - r, t, 0,\r\n\t\t\tr, - t, 0, r, t, 0,\r\n\r\n\t\t\t// (±φ, 0, ±1/φ)\r\n\t\t\t- t, 0, - r, t, 0, - r,\r\n\t\t\t- t, 0, r, t, 0, r\r\n\t\t];\r\n\r\n\t\tconst indices = [\r\n\t\t\t3, 11, 7, \t3, 7, 15, \t3, 15, 13,\r\n\t\t\t7, 19, 17, \t7, 17, 6, \t7, 6, 15,\r\n\t\t\t17, 4, 8, \t17, 8, 10, \t17, 10, 6,\r\n\t\t\t8, 0, 16, \t8, 16, 2, \t8, 2, 10,\r\n\t\t\t0, 12, 1, \t0, 1, 18, \t0, 18, 16,\r\n\t\t\t6, 10, 2, \t6, 2, 13, \t6, 13, 15,\r\n\t\t\t2, 16, 18, \t2, 18, 3, \t2, 3, 13,\r\n\t\t\t18, 1, 9, \t18, 9, 11, \t18, 11, 3,\r\n\t\t\t4, 14, 12, \t4, 12, 0, \t4, 0, 8,\r\n\t\t\t11, 9, 5, \t11, 5, 19, \t11, 19, 7,\r\n\t\t\t19, 5, 14, \t19, 14, 4, \t19, 4, 17,\r\n\t\t\t1, 12, 14, \t1, 14, 5, \t1, 5, 9\r\n\t\t];\r\n\r\n\t\tsuper( vertices, indices, radius, detail );\r\n\r\n\t\tthis.type = 'DodecahedronBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass DodecahedronGeometry extends Geometry {\r\n\r\n\tconstructor( radius, detail ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'DodecahedronGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new DodecahedronBufferGeometry( radius, detail ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _v0$2 = new Vector3();\r\nconst _v1$5 = new Vector3();\r\nconst _normal$1 = new Vector3();\r\nconst _triangle = new Triangle();\r\n\r\nclass EdgesGeometry extends BufferGeometry {\r\n\r\n\tconstructor( geometry, thresholdAngle ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'EdgesGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tthresholdAngle: thresholdAngle\r\n\t\t};\r\n\r\n\t\tthresholdAngle = ( thresholdAngle !== undefined ) ? thresholdAngle : 1;\r\n\r\n\t\tif ( geometry.isGeometry ) {\r\n\r\n\t\t\tgeometry = new BufferGeometry().fromGeometry( geometry );\r\n\r\n\t\t}\r\n\r\n\t\tconst precisionPoints = 4;\r\n\t\tconst precision = Math.pow( 10, precisionPoints );\r\n\t\tconst thresholdDot = Math.cos( MathUtils.DEG2RAD * thresholdAngle );\r\n\r\n\t\tconst indexAttr = geometry.getIndex();\r\n\t\tconst positionAttr = geometry.getAttribute( 'position' );\r\n\t\tconst indexCount = indexAttr ? indexAttr.count : positionAttr.count;\r\n\r\n\t\tconst indexArr = [ 0, 0, 0 ];\r\n\t\tconst vertKeys = [ 'a', 'b', 'c' ];\r\n\t\tconst hashes = new Array( 3 );\r\n\r\n\t\tconst edgeData = {};\r\n\t\tconst vertices = [];\r\n\t\tfor ( let i = 0; i < indexCount; i += 3 ) {\r\n\r\n\t\t\tif ( indexAttr ) {\r\n\r\n\t\t\t\tindexArr[ 0 ] = indexAttr.getX( i );\r\n\t\t\t\tindexArr[ 1 ] = indexAttr.getX( i + 1 );\r\n\t\t\t\tindexArr[ 2 ] = indexAttr.getX( i + 2 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tindexArr[ 0 ] = i;\r\n\t\t\t\tindexArr[ 1 ] = i + 1;\r\n\t\t\t\tindexArr[ 2 ] = i + 2;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst { a, b, c } = _triangle;\r\n\t\t\ta.fromBufferAttribute( positionAttr, indexArr[ 0 ] );\r\n\t\t\tb.fromBufferAttribute( positionAttr, indexArr[ 1 ] );\r\n\t\t\tc.fromBufferAttribute( positionAttr, indexArr[ 2 ] );\r\n\t\t\t_triangle.getNormal( _normal$1 );\r\n\r\n\t\t\t// create hashes for the edge from the vertices\r\n\t\t\thashes[ 0 ] = `${ Math.round( a.x * precision ) },${ Math.round( a.y * precision ) },${ Math.round( a.z * precision ) }`;\r\n\t\t\thashes[ 1 ] = `${ Math.round( b.x * precision ) },${ Math.round( b.y * precision ) },${ Math.round( b.z * precision ) }`;\r\n\t\t\thashes[ 2 ] = `${ Math.round( c.x * precision ) },${ Math.round( c.y * precision ) },${ Math.round( c.z * precision ) }`;\r\n\r\n\t\t\t// skip degenerate triangles\r\n\t\t\tif ( hashes[ 0 ] === hashes[ 1 ] || hashes[ 1 ] === hashes[ 2 ] || hashes[ 2 ] === hashes[ 0 ] ) {\r\n\r\n\t\t\t\tcontinue;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// iterate over every edge\r\n\t\t\tfor ( let j = 0; j < 3; j ++ ) {\r\n\r\n\t\t\t\t// get the first and next vertex making up the edge\r\n\t\t\t\tconst jNext = ( j + 1 ) % 3;\r\n\t\t\t\tconst vecHash0 = hashes[ j ];\r\n\t\t\t\tconst vecHash1 = hashes[ jNext ];\r\n\t\t\t\tconst v0 = _triangle[ vertKeys[ j ] ];\r\n\t\t\t\tconst v1 = _triangle[ vertKeys[ jNext ] ];\r\n\r\n\t\t\t\tconst hash = `${ vecHash0 }_${ vecHash1 }`;\r\n\t\t\t\tconst reverseHash = `${ vecHash1 }_${ vecHash0 }`;\r\n\r\n\t\t\t\tif ( reverseHash in edgeData && edgeData[ reverseHash ] ) {\r\n\r\n\t\t\t\t\t// if we found a sibling edge add it into the vertex array if\r\n\t\t\t\t\t// it meets the angle threshold and delete the edge from the map.\r\n\t\t\t\t\tif ( _normal$1.dot( edgeData[ reverseHash ].normal ) <= thresholdDot ) {\r\n\r\n\t\t\t\t\t\tvertices.push( v0.x, v0.y, v0.z );\r\n\t\t\t\t\t\tvertices.push( v1.x, v1.y, v1.z );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tedgeData[ reverseHash ] = null;\r\n\r\n\t\t\t\t} else if ( ! ( hash in edgeData ) ) {\r\n\r\n\t\t\t\t\t// if we've already got an edge here then skip adding a new one\r\n\t\t\t\t\tedgeData[ hash ] = {\r\n\r\n\t\t\t\t\t\tindex0: indexArr[ j ],\r\n\t\t\t\t\t\tindex1: indexArr[ jNext ],\r\n\t\t\t\t\t\tnormal: _normal$1.clone(),\r\n\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// iterate over all remaining, unmatched edges and add them to the vertex array\r\n\t\tfor ( const key in edgeData ) {\r\n\r\n\t\t\tif ( edgeData[ key ] ) {\r\n\r\n\t\t\t\tconst { index0, index1 } = edgeData[ key ];\r\n\t\t\t\t_v0$2.fromBufferAttribute( positionAttr, index0 );\r\n\t\t\t\t_v1$5.fromBufferAttribute( positionAttr, index1 );\r\n\r\n\t\t\t\tvertices.push( _v0$2.x, _v0$2.y, _v0$2.z );\r\n\t\t\t\tvertices.push( _v1$5.x, _v1$5.y, _v1$5.z );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Port from https://github.com/mapbox/earcut (v2.2.2)\r\n */\r\n\r\nconst Earcut = {\r\n\r\n\ttriangulate: function ( data, holeIndices, dim ) {\r\n\r\n\t\tdim = dim || 2;\r\n\r\n\t\tconst hasHoles = holeIndices && holeIndices.length;\r\n\t\tconst outerLen = hasHoles ? holeIndices[ 0 ] * dim : data.length;\r\n\t\tlet outerNode = linkedList( data, 0, outerLen, dim, true );\r\n\t\tconst triangles = [];\r\n\r\n\t\tif ( ! outerNode || outerNode.next === outerNode.prev ) return triangles;\r\n\r\n\t\tlet minX, minY, maxX, maxY, x, y, invSize;\r\n\r\n\t\tif ( hasHoles ) outerNode = eliminateHoles( data, holeIndices, outerNode, dim );\r\n\r\n\t\t// if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\r\n\t\tif ( data.length > 80 * dim ) {\r\n\r\n\t\t\tminX = maxX = data[ 0 ];\r\n\t\t\tminY = maxY = data[ 1 ];\r\n\r\n\t\t\tfor ( let i = dim; i < outerLen; i += dim ) {\r\n\r\n\t\t\t\tx = data[ i ];\r\n\t\t\t\ty = data[ i + 1 ];\r\n\t\t\t\tif ( x < minX ) minX = x;\r\n\t\t\t\tif ( y < minY ) minY = y;\r\n\t\t\t\tif ( x > maxX ) maxX = x;\r\n\t\t\t\tif ( y > maxY ) maxY = y;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// minX, minY and invSize are later used to transform coords into integers for z-order calculation\r\n\t\t\tinvSize = Math.max( maxX - minX, maxY - minY );\r\n\t\t\tinvSize = invSize !== 0 ? 1 / invSize : 0;\r\n\r\n\t\t}\r\n\r\n\t\tearcutLinked( outerNode, triangles, dim, minX, minY, invSize );\r\n\r\n\t\treturn triangles;\r\n\r\n\t}\r\n\r\n};\r\n\r\n// create a circular doubly linked list from polygon points in the specified winding order\r\nfunction linkedList( data, start, end, dim, clockwise ) {\r\n\r\n\tlet i, last;\r\n\r\n\tif ( clockwise === ( signedArea( data, start, end, dim ) > 0 ) ) {\r\n\r\n\t\tfor ( i = start; i < end; i += dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\r\n\r\n\t} else {\r\n\r\n\t\tfor ( i = end - dim; i >= start; i -= dim ) last = insertNode( i, data[ i ], data[ i + 1 ], last );\r\n\r\n\t}\r\n\r\n\tif ( last && equals( last, last.next ) ) {\r\n\r\n\t\tremoveNode( last );\r\n\t\tlast = last.next;\r\n\r\n\t}\r\n\r\n\treturn last;\r\n\r\n}\r\n\r\n// eliminate colinear or duplicate points\r\nfunction filterPoints( start, end ) {\r\n\r\n\tif ( ! start ) return start;\r\n\tif ( ! end ) end = start;\r\n\r\n\tlet p = start,\r\n\t\tagain;\r\n\tdo {\r\n\r\n\t\tagain = false;\r\n\r\n\t\tif ( ! p.steiner && ( equals( p, p.next ) || area( p.prev, p, p.next ) === 0 ) ) {\r\n\r\n\t\t\tremoveNode( p );\r\n\t\t\tp = end = p.prev;\r\n\t\t\tif ( p === p.next ) break;\r\n\t\t\tagain = true;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tp = p.next;\r\n\r\n\t\t}\r\n\r\n\t} while ( again || p !== end );\r\n\r\n\treturn end;\r\n\r\n}\r\n\r\n// main ear slicing loop which triangulates a polygon (given as a linked list)\r\nfunction earcutLinked( ear, triangles, dim, minX, minY, invSize, pass ) {\r\n\r\n\tif ( ! ear ) return;\r\n\r\n\t// interlink polygon nodes in z-order\r\n\tif ( ! pass && invSize ) indexCurve( ear, minX, minY, invSize );\r\n\r\n\tlet stop = ear,\r\n\t\tprev, next;\r\n\r\n\t// iterate through ears, slicing them one by one\r\n\twhile ( ear.prev !== ear.next ) {\r\n\r\n\t\tprev = ear.prev;\r\n\t\tnext = ear.next;\r\n\r\n\t\tif ( invSize ? isEarHashed( ear, minX, minY, invSize ) : isEar( ear ) ) {\r\n\r\n\t\t\t// cut off the triangle\r\n\t\t\ttriangles.push( prev.i / dim );\r\n\t\t\ttriangles.push( ear.i / dim );\r\n\t\t\ttriangles.push( next.i / dim );\r\n\r\n\t\t\tremoveNode( ear );\r\n\r\n\t\t\t// skipping the next vertex leads to less sliver triangles\r\n\t\t\tear = next.next;\r\n\t\t\tstop = next.next;\r\n\r\n\t\t\tcontinue;\r\n\r\n\t\t}\r\n\r\n\t\tear = next;\r\n\r\n\t\t// if we looped through the whole remaining polygon and can't find any more ears\r\n\t\tif ( ear === stop ) {\r\n\r\n\t\t\t// try filtering points and slicing again\r\n\t\t\tif ( ! pass ) {\r\n\r\n\t\t\t\tearcutLinked( filterPoints( ear ), triangles, dim, minX, minY, invSize, 1 );\r\n\r\n\t\t\t\t// if this didn't work, try curing all small self-intersections locally\r\n\r\n\t\t\t} else if ( pass === 1 ) {\r\n\r\n\t\t\t\tear = cureLocalIntersections( filterPoints( ear ), triangles, dim );\r\n\t\t\t\tearcutLinked( ear, triangles, dim, minX, minY, invSize, 2 );\r\n\r\n\t\t\t\t// as a last resort, try splitting the remaining polygon into two\r\n\r\n\t\t\t} else if ( pass === 2 ) {\r\n\r\n\t\t\t\tsplitEarcut( ear, triangles, dim, minX, minY, invSize );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n// check whether a polygon node forms a valid ear with adjacent nodes\r\nfunction isEar( ear ) {\r\n\r\n\tconst a = ear.prev,\r\n\t\tb = ear,\r\n\t\tc = ear.next;\r\n\r\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\r\n\r\n\t// now make sure we don't have other points inside the potential ear\r\n\tlet p = ear.next.next;\r\n\r\n\twhile ( p !== ear.prev ) {\r\n\r\n\t\tif ( pointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\r\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\r\n\t\tp = p.next;\r\n\r\n\t}\r\n\r\n\treturn true;\r\n\r\n}\r\n\r\nfunction isEarHashed( ear, minX, minY, invSize ) {\r\n\r\n\tconst a = ear.prev,\r\n\t\tb = ear,\r\n\t\tc = ear.next;\r\n\r\n\tif ( area( a, b, c ) >= 0 ) return false; // reflex, can't be an ear\r\n\r\n\t// triangle bbox; min & max are calculated like this for speed\r\n\tconst minTX = a.x < b.x ? ( a.x < c.x ? a.x : c.x ) : ( b.x < c.x ? b.x : c.x ),\r\n\t\tminTY = a.y < b.y ? ( a.y < c.y ? a.y : c.y ) : ( b.y < c.y ? b.y : c.y ),\r\n\t\tmaxTX = a.x > b.x ? ( a.x > c.x ? a.x : c.x ) : ( b.x > c.x ? b.x : c.x ),\r\n\t\tmaxTY = a.y > b.y ? ( a.y > c.y ? a.y : c.y ) : ( b.y > c.y ? b.y : c.y );\r\n\r\n\t// z-order range for the current triangle bbox;\r\n\tconst minZ = zOrder( minTX, minTY, minX, minY, invSize ),\r\n\t\tmaxZ = zOrder( maxTX, maxTY, minX, minY, invSize );\r\n\r\n\tlet p = ear.prevZ,\r\n\t\tn = ear.nextZ;\r\n\r\n\t// look for points inside the triangle in both directions\r\n\twhile ( p && p.z >= minZ && n && n.z <= maxZ ) {\r\n\r\n\t\tif ( p !== ear.prev && p !== ear.next &&\r\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\r\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\r\n\t\tp = p.prevZ;\r\n\r\n\t\tif ( n !== ear.prev && n !== ear.next &&\r\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\r\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\r\n\t\tn = n.nextZ;\r\n\r\n\t}\r\n\r\n\t// look for remaining points in decreasing z-order\r\n\twhile ( p && p.z >= minZ ) {\r\n\r\n\t\tif ( p !== ear.prev && p !== ear.next &&\r\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, p.x, p.y ) &&\r\n\t\t\tarea( p.prev, p, p.next ) >= 0 ) return false;\r\n\t\tp = p.prevZ;\r\n\r\n\t}\r\n\r\n\t// look for remaining points in increasing z-order\r\n\twhile ( n && n.z <= maxZ ) {\r\n\r\n\t\tif ( n !== ear.prev && n !== ear.next &&\r\n\t\t\tpointInTriangle( a.x, a.y, b.x, b.y, c.x, c.y, n.x, n.y ) &&\r\n\t\t\tarea( n.prev, n, n.next ) >= 0 ) return false;\r\n\t\tn = n.nextZ;\r\n\r\n\t}\r\n\r\n\treturn true;\r\n\r\n}\r\n\r\n// go through all polygon nodes and cure small local self-intersections\r\nfunction cureLocalIntersections( start, triangles, dim ) {\r\n\r\n\tlet p = start;\r\n\tdo {\r\n\r\n\t\tconst a = p.prev,\r\n\t\t\tb = p.next.next;\r\n\r\n\t\tif ( ! equals( a, b ) && intersects( a, p, p.next, b ) && locallyInside( a, b ) && locallyInside( b, a ) ) {\r\n\r\n\t\t\ttriangles.push( a.i / dim );\r\n\t\t\ttriangles.push( p.i / dim );\r\n\t\t\ttriangles.push( b.i / dim );\r\n\r\n\t\t\t// remove two nodes involved\r\n\t\t\tremoveNode( p );\r\n\t\t\tremoveNode( p.next );\r\n\r\n\t\t\tp = start = b;\r\n\r\n\t\t}\r\n\r\n\t\tp = p.next;\r\n\r\n\t} while ( p !== start );\r\n\r\n\treturn filterPoints( p );\r\n\r\n}\r\n\r\n// try splitting polygon into two and triangulate them independently\r\nfunction splitEarcut( start, triangles, dim, minX, minY, invSize ) {\r\n\r\n\t// look for a valid diagonal that divides the polygon into two\r\n\tlet a = start;\r\n\tdo {\r\n\r\n\t\tlet b = a.next.next;\r\n\t\twhile ( b !== a.prev ) {\r\n\r\n\t\t\tif ( a.i !== b.i && isValidDiagonal( a, b ) ) {\r\n\r\n\t\t\t\t// split the polygon in two by the diagonal\r\n\t\t\t\tlet c = splitPolygon( a, b );\r\n\r\n\t\t\t\t// filter colinear points around the cuts\r\n\t\t\t\ta = filterPoints( a, a.next );\r\n\t\t\t\tc = filterPoints( c, c.next );\r\n\r\n\t\t\t\t// run earcut on each half\r\n\t\t\t\tearcutLinked( a, triangles, dim, minX, minY, invSize );\r\n\t\t\t\tearcutLinked( c, triangles, dim, minX, minY, invSize );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tb = b.next;\r\n\r\n\t\t}\r\n\r\n\t\ta = a.next;\r\n\r\n\t} while ( a !== start );\r\n\r\n}\r\n\r\n// link every hole into the outer loop, producing a single-ring polygon without holes\r\nfunction eliminateHoles( data, holeIndices, outerNode, dim ) {\r\n\r\n\tconst queue = [];\r\n\tlet i, len, start, end, list;\r\n\r\n\tfor ( i = 0, len = holeIndices.length; i < len; i ++ ) {\r\n\r\n\t\tstart = holeIndices[ i ] * dim;\r\n\t\tend = i < len - 1 ? holeIndices[ i + 1 ] * dim : data.length;\r\n\t\tlist = linkedList( data, start, end, dim, false );\r\n\t\tif ( list === list.next ) list.steiner = true;\r\n\t\tqueue.push( getLeftmost( list ) );\r\n\r\n\t}\r\n\r\n\tqueue.sort( compareX );\r\n\r\n\t// process holes from left to right\r\n\tfor ( i = 0; i < queue.length; i ++ ) {\r\n\r\n\t\teliminateHole( queue[ i ], outerNode );\r\n\t\touterNode = filterPoints( outerNode, outerNode.next );\r\n\r\n\t}\r\n\r\n\treturn outerNode;\r\n\r\n}\r\n\r\nfunction compareX( a, b ) {\r\n\r\n\treturn a.x - b.x;\r\n\r\n}\r\n\r\n// find a bridge between vertices that connects hole with an outer ring and and link it\r\nfunction eliminateHole( hole, outerNode ) {\r\n\r\n\touterNode = findHoleBridge( hole, outerNode );\r\n\tif ( outerNode ) {\r\n\r\n\t\tconst b = splitPolygon( outerNode, hole );\r\n\r\n\t\t// filter collinear points around the cuts\r\n\t\tfilterPoints( outerNode, outerNode.next );\r\n\t\tfilterPoints( b, b.next );\r\n\r\n\t}\r\n\r\n}\r\n\r\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\r\nfunction findHoleBridge( hole, outerNode ) {\r\n\r\n\tlet p = outerNode;\r\n\tconst hx = hole.x;\r\n\tconst hy = hole.y;\r\n\tlet qx = - Infinity, m;\r\n\r\n\t// find a segment intersected by a ray from the hole's leftmost point to the left;\r\n\t// segment's endpoint with lesser x will be potential connection point\r\n\tdo {\r\n\r\n\t\tif ( hy <= p.y && hy >= p.next.y && p.next.y !== p.y ) {\r\n\r\n\t\t\tconst x = p.x + ( hy - p.y ) * ( p.next.x - p.x ) / ( p.next.y - p.y );\r\n\t\t\tif ( x <= hx && x > qx ) {\r\n\r\n\t\t\t\tqx = x;\r\n\t\t\t\tif ( x === hx ) {\r\n\r\n\t\t\t\t\tif ( hy === p.y ) return p;\r\n\t\t\t\t\tif ( hy === p.next.y ) return p.next;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tm = p.x < p.next.x ? p : p.next;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tp = p.next;\r\n\r\n\t} while ( p !== outerNode );\r\n\r\n\tif ( ! m ) return null;\r\n\r\n\tif ( hx === qx ) return m; // hole touches outer segment; pick leftmost endpoint\r\n\r\n\t// look for points inside the triangle of hole point, segment intersection and endpoint;\r\n\t// if there are no points found, we have a valid connection;\r\n\t// otherwise choose the point of the minimum angle with the ray as connection point\r\n\r\n\tconst stop = m,\r\n\t\tmx = m.x,\r\n\t\tmy = m.y;\r\n\tlet tanMin = Infinity, tan;\r\n\r\n\tp = m;\r\n\r\n\tdo {\r\n\r\n\t\tif ( hx >= p.x && p.x >= mx && hx !== p.x &&\r\n\t\t\t\tpointInTriangle( hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y ) ) {\r\n\r\n\t\t\ttan = Math.abs( hy - p.y ) / ( hx - p.x ); // tangential\r\n\r\n\t\t\tif ( locallyInside( p, hole ) && ( tan < tanMin || ( tan === tanMin && ( p.x > m.x || ( p.x === m.x && sectorContainsSector( m, p ) ) ) ) ) ) {\r\n\r\n\t\t\t\tm = p;\r\n\t\t\t\ttanMin = tan;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tp = p.next;\r\n\r\n\t} while ( p !== stop );\r\n\r\n\treturn m;\r\n\r\n}\r\n\r\n// whether sector in vertex m contains sector in vertex p in the same coordinates\r\nfunction sectorContainsSector( m, p ) {\r\n\r\n\treturn area( m.prev, m, p.prev ) < 0 && area( p.next, m, m.next ) < 0;\r\n\r\n}\r\n\r\n// interlink polygon nodes in z-order\r\nfunction indexCurve( start, minX, minY, invSize ) {\r\n\r\n\tlet p = start;\r\n\tdo {\r\n\r\n\t\tif ( p.z === null ) p.z = zOrder( p.x, p.y, minX, minY, invSize );\r\n\t\tp.prevZ = p.prev;\r\n\t\tp.nextZ = p.next;\r\n\t\tp = p.next;\r\n\r\n\t} while ( p !== start );\r\n\r\n\tp.prevZ.nextZ = null;\r\n\tp.prevZ = null;\r\n\r\n\tsortLinked( p );\r\n\r\n}\r\n\r\n// Simon Tatham's linked list merge sort algorithm\r\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\r\nfunction sortLinked( list ) {\r\n\r\n\tlet i, p, q, e, tail, numMerges, pSize, qSize,\r\n\t\tinSize = 1;\r\n\r\n\tdo {\r\n\r\n\t\tp = list;\r\n\t\tlist = null;\r\n\t\ttail = null;\r\n\t\tnumMerges = 0;\r\n\r\n\t\twhile ( p ) {\r\n\r\n\t\t\tnumMerges ++;\r\n\t\t\tq = p;\r\n\t\t\tpSize = 0;\r\n\t\t\tfor ( i = 0; i < inSize; i ++ ) {\r\n\r\n\t\t\t\tpSize ++;\r\n\t\t\t\tq = q.nextZ;\r\n\t\t\t\tif ( ! q ) break;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tqSize = inSize;\r\n\r\n\t\t\twhile ( pSize > 0 || ( qSize > 0 && q ) ) {\r\n\r\n\t\t\t\tif ( pSize !== 0 && ( qSize === 0 || ! q || p.z <= q.z ) ) {\r\n\r\n\t\t\t\t\te = p;\r\n\t\t\t\t\tp = p.nextZ;\r\n\t\t\t\t\tpSize --;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\te = q;\r\n\t\t\t\t\tq = q.nextZ;\r\n\t\t\t\t\tqSize --;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( tail ) tail.nextZ = e;\r\n\t\t\t\telse list = e;\r\n\r\n\t\t\t\te.prevZ = tail;\r\n\t\t\t\ttail = e;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tp = q;\r\n\r\n\t\t}\r\n\r\n\t\ttail.nextZ = null;\r\n\t\tinSize *= 2;\r\n\r\n\t} while ( numMerges > 1 );\r\n\r\n\treturn list;\r\n\r\n}\r\n\r\n// z-order of a point given coords and inverse of the longer side of data bbox\r\nfunction zOrder( x, y, minX, minY, invSize ) {\r\n\r\n\t// coords are transformed into non-negative 15-bit integer range\r\n\tx = 32767 * ( x - minX ) * invSize;\r\n\ty = 32767 * ( y - minY ) * invSize;\r\n\r\n\tx = ( x | ( x << 8 ) ) & 0x00FF00FF;\r\n\tx = ( x | ( x << 4 ) ) & 0x0F0F0F0F;\r\n\tx = ( x | ( x << 2 ) ) & 0x33333333;\r\n\tx = ( x | ( x << 1 ) ) & 0x55555555;\r\n\r\n\ty = ( y | ( y << 8 ) ) & 0x00FF00FF;\r\n\ty = ( y | ( y << 4 ) ) & 0x0F0F0F0F;\r\n\ty = ( y | ( y << 2 ) ) & 0x33333333;\r\n\ty = ( y | ( y << 1 ) ) & 0x55555555;\r\n\r\n\treturn x | ( y << 1 );\r\n\r\n}\r\n\r\n// find the leftmost node of a polygon ring\r\nfunction getLeftmost( start ) {\r\n\r\n\tlet p = start,\r\n\t\tleftmost = start;\r\n\tdo {\r\n\r\n\t\tif ( p.x < leftmost.x || ( p.x === leftmost.x && p.y < leftmost.y ) ) leftmost = p;\r\n\t\tp = p.next;\r\n\r\n\t} while ( p !== start );\r\n\r\n\treturn leftmost;\r\n\r\n}\r\n\r\n// check if a point lies within a convex triangle\r\nfunction pointInTriangle( ax, ay, bx, by, cx, cy, px, py ) {\r\n\r\n\treturn ( cx - px ) * ( ay - py ) - ( ax - px ) * ( cy - py ) >= 0 &&\r\n\t\t\t( ax - px ) * ( by - py ) - ( bx - px ) * ( ay - py ) >= 0 &&\r\n\t\t\t( bx - px ) * ( cy - py ) - ( cx - px ) * ( by - py ) >= 0;\r\n\r\n}\r\n\r\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\r\nfunction isValidDiagonal( a, b ) {\r\n\r\n\treturn a.next.i !== b.i && a.prev.i !== b.i && ! intersectsPolygon( a, b ) && // dones't intersect other edges\r\n\t\t( locallyInside( a, b ) && locallyInside( b, a ) && middleInside( a, b ) && // locally visible\r\n\t\t( area( a.prev, a, b.prev ) || area( a, b.prev, b ) ) || // does not create opposite-facing sectors\r\n\t\tequals( a, b ) && area( a.prev, a, a.next ) > 0 && area( b.prev, b, b.next ) > 0 ); // special zero-length case\r\n\r\n}\r\n\r\n// signed area of a triangle\r\nfunction area( p, q, r ) {\r\n\r\n\treturn ( q.y - p.y ) * ( r.x - q.x ) - ( q.x - p.x ) * ( r.y - q.y );\r\n\r\n}\r\n\r\n// check if two points are equal\r\nfunction equals( p1, p2 ) {\r\n\r\n\treturn p1.x === p2.x && p1.y === p2.y;\r\n\r\n}\r\n\r\n// check if two segments intersect\r\nfunction intersects( p1, q1, p2, q2 ) {\r\n\r\n\tconst o1 = sign( area( p1, q1, p2 ) );\r\n\tconst o2 = sign( area( p1, q1, q2 ) );\r\n\tconst o3 = sign( area( p2, q2, p1 ) );\r\n\tconst o4 = sign( area( p2, q2, q1 ) );\r\n\r\n\tif ( o1 !== o2 && o3 !== o4 ) return true; // general case\r\n\r\n\tif ( o1 === 0 && onSegment( p1, p2, q1 ) ) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\r\n\tif ( o2 === 0 && onSegment( p1, q2, q1 ) ) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\r\n\tif ( o3 === 0 && onSegment( p2, p1, q2 ) ) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\r\n\tif ( o4 === 0 && onSegment( p2, q1, q2 ) ) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\r\n\r\n\treturn false;\r\n\r\n}\r\n\r\n// for collinear points p, q, r, check if point q lies on segment pr\r\nfunction onSegment( p, q, r ) {\r\n\r\n\treturn q.x <= Math.max( p.x, r.x ) && q.x >= Math.min( p.x, r.x ) && q.y <= Math.max( p.y, r.y ) && q.y >= Math.min( p.y, r.y );\r\n\r\n}\r\n\r\nfunction sign( num ) {\r\n\r\n\treturn num > 0 ? 1 : num < 0 ? - 1 : 0;\r\n\r\n}\r\n\r\n// check if a polygon diagonal intersects any polygon segments\r\nfunction intersectsPolygon( a, b ) {\r\n\r\n\tlet p = a;\r\n\tdo {\r\n\r\n\t\tif ( p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\r\n\t\t\t\tintersects( p, p.next, a, b ) ) return true;\r\n\t\tp = p.next;\r\n\r\n\t} while ( p !== a );\r\n\r\n\treturn false;\r\n\r\n}\r\n\r\n// check if a polygon diagonal is locally inside the polygon\r\nfunction locallyInside( a, b ) {\r\n\r\n\treturn area( a.prev, a, a.next ) < 0 ?\r\n\t\tarea( a, b, a.next ) >= 0 && area( a, a.prev, b ) >= 0 :\r\n\t\tarea( a, b, a.prev ) < 0 || area( a, a.next, b ) < 0;\r\n\r\n}\r\n\r\n// check if the middle point of a polygon diagonal is inside the polygon\r\nfunction middleInside( a, b ) {\r\n\r\n\tlet p = a,\r\n\t\tinside = false;\r\n\tconst px = ( a.x + b.x ) / 2,\r\n\t\tpy = ( a.y + b.y ) / 2;\r\n\tdo {\r\n\r\n\t\tif ( ( ( p.y > py ) !== ( p.next.y > py ) ) && p.next.y !== p.y &&\r\n\t\t\t\t( px < ( p.next.x - p.x ) * ( py - p.y ) / ( p.next.y - p.y ) + p.x ) )\r\n\t\t\tinside = ! inside;\r\n\t\tp = p.next;\r\n\r\n\t} while ( p !== a );\r\n\r\n\treturn inside;\r\n\r\n}\r\n\r\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\r\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\r\nfunction splitPolygon( a, b ) {\r\n\r\n\tconst a2 = new Node( a.i, a.x, a.y ),\r\n\t\tb2 = new Node( b.i, b.x, b.y ),\r\n\t\tan = a.next,\r\n\t\tbp = b.prev;\r\n\r\n\ta.next = b;\r\n\tb.prev = a;\r\n\r\n\ta2.next = an;\r\n\tan.prev = a2;\r\n\r\n\tb2.next = a2;\r\n\ta2.prev = b2;\r\n\r\n\tbp.next = b2;\r\n\tb2.prev = bp;\r\n\r\n\treturn b2;\r\n\r\n}\r\n\r\n// create a node and optionally link it with previous one (in a circular doubly linked list)\r\nfunction insertNode( i, x, y, last ) {\r\n\r\n\tconst p = new Node( i, x, y );\r\n\r\n\tif ( ! last ) {\r\n\r\n\t\tp.prev = p;\r\n\t\tp.next = p;\r\n\r\n\t} else {\r\n\r\n\t\tp.next = last.next;\r\n\t\tp.prev = last;\r\n\t\tlast.next.prev = p;\r\n\t\tlast.next = p;\r\n\r\n\t}\r\n\r\n\treturn p;\r\n\r\n}\r\n\r\nfunction removeNode( p ) {\r\n\r\n\tp.next.prev = p.prev;\r\n\tp.prev.next = p.next;\r\n\r\n\tif ( p.prevZ ) p.prevZ.nextZ = p.nextZ;\r\n\tif ( p.nextZ ) p.nextZ.prevZ = p.prevZ;\r\n\r\n}\r\n\r\nfunction Node( i, x, y ) {\r\n\r\n\t// vertex index in coordinates array\r\n\tthis.i = i;\r\n\r\n\t// vertex coordinates\r\n\tthis.x = x;\r\n\tthis.y = y;\r\n\r\n\t// previous and next vertex nodes in a polygon ring\r\n\tthis.prev = null;\r\n\tthis.next = null;\r\n\r\n\t// z-order curve value\r\n\tthis.z = null;\r\n\r\n\t// previous and next nodes in z-order\r\n\tthis.prevZ = null;\r\n\tthis.nextZ = null;\r\n\r\n\t// indicates whether this is a steiner point\r\n\tthis.steiner = false;\r\n\r\n}\r\n\r\nfunction signedArea( data, start, end, dim ) {\r\n\r\n\tlet sum = 0;\r\n\tfor ( let i = start, j = end - dim; i < end; i += dim ) {\r\n\r\n\t\tsum += ( data[ j ] - data[ i ] ) * ( data[ i + 1 ] + data[ j + 1 ] );\r\n\t\tj = i;\r\n\r\n\t}\r\n\r\n\treturn sum;\r\n\r\n}\r\n\r\nconst ShapeUtils = {\r\n\r\n\t// calculate area of the contour polygon\r\n\r\n\tarea: function ( contour ) {\r\n\r\n\t\tconst n = contour.length;\r\n\t\tlet a = 0.0;\r\n\r\n\t\tfor ( let p = n - 1, q = 0; q < n; p = q ++ ) {\r\n\r\n\t\t\ta += contour[ p ].x * contour[ q ].y - contour[ q ].x * contour[ p ].y;\r\n\r\n\t\t}\r\n\r\n\t\treturn a * 0.5;\r\n\r\n\t},\r\n\r\n\tisClockWise: function ( pts ) {\r\n\r\n\t\treturn ShapeUtils.area( pts ) < 0;\r\n\r\n\t},\r\n\r\n\ttriangulateShape: function ( contour, holes ) {\r\n\r\n\t\tconst vertices = []; // flat array of vertices like [ x0,y0, x1,y1, x2,y2, ... ]\r\n\t\tconst holeIndices = []; // array of hole indices\r\n\t\tconst faces = []; // final array of vertex indices like [ [ a,b,d ], [ b,c,d ] ]\r\n\r\n\t\tremoveDupEndPts( contour );\r\n\t\taddContour( vertices, contour );\r\n\r\n\t\t//\r\n\r\n\t\tlet holeIndex = contour.length;\r\n\r\n\t\tholes.forEach( removeDupEndPts );\r\n\r\n\t\tfor ( let i = 0; i < holes.length; i ++ ) {\r\n\r\n\t\t\tholeIndices.push( holeIndex );\r\n\t\t\tholeIndex += holes[ i ].length;\r\n\t\t\taddContour( vertices, holes[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tconst triangles = Earcut.triangulate( vertices, holeIndices );\r\n\r\n\t\t//\r\n\r\n\t\tfor ( let i = 0; i < triangles.length; i += 3 ) {\r\n\r\n\t\t\tfaces.push( triangles.slice( i, i + 3 ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn faces;\r\n\r\n\t}\r\n\r\n};\r\n\r\nfunction removeDupEndPts( points ) {\r\n\r\n\tconst l = points.length;\r\n\r\n\tif ( l > 2 && points[ l - 1 ].equals( points[ 0 ] ) ) {\r\n\r\n\t\tpoints.pop();\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction addContour( vertices, contour ) {\r\n\r\n\tfor ( let i = 0; i < contour.length; i ++ ) {\r\n\r\n\t\tvertices.push( contour[ i ].x );\r\n\t\tvertices.push( contour[ i ].y );\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Creates extruded geometry from a path shape.\r\n *\r\n * parameters = {\r\n *\r\n * curveSegments: , // number of points on the curves\r\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\r\n * depth: , // Depth to extrude the shape\r\n *\r\n * bevelEnabled: , // turn on bevel\r\n * bevelThickness: , // how deep into the original shape bevel goes\r\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\r\n * bevelOffset: , // how far from shape outline does bevel start\r\n * bevelSegments: , // number of bevel layers\r\n *\r\n * extrudePath: // curve to extrude shape along\r\n *\r\n * UVGenerator: // object that provides UV generator functions\r\n *\r\n * }\r\n */\r\n\r\nclass ExtrudeBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( shapes, options ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'ExtrudeBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tshapes: shapes,\r\n\t\t\toptions: options\r\n\t\t};\r\n\r\n\t\tshapes = Array.isArray( shapes ) ? shapes : [ shapes ];\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst verticesArray = [];\r\n\t\tconst uvArray = [];\r\n\r\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst shape = shapes[ i ];\r\n\t\t\taddShape( shape );\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( verticesArray, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvArray, 2 ) );\r\n\r\n\t\tthis.computeVertexNormals();\r\n\r\n\t\t// functions\r\n\r\n\t\tfunction addShape( shape ) {\r\n\r\n\t\t\tconst placeholder = [];\r\n\r\n\t\t\t// options\r\n\r\n\t\t\tconst curveSegments = options.curveSegments !== undefined ? options.curveSegments : 12;\r\n\t\t\tconst steps = options.steps !== undefined ? options.steps : 1;\r\n\t\t\tlet depth = options.depth !== undefined ? options.depth : 100;\r\n\r\n\t\t\tlet bevelEnabled = options.bevelEnabled !== undefined ? options.bevelEnabled : true;\r\n\t\t\tlet bevelThickness = options.bevelThickness !== undefined ? options.bevelThickness : 6;\r\n\t\t\tlet bevelSize = options.bevelSize !== undefined ? options.bevelSize : bevelThickness - 2;\r\n\t\t\tlet bevelOffset = options.bevelOffset !== undefined ? options.bevelOffset : 0;\r\n\t\t\tlet bevelSegments = options.bevelSegments !== undefined ? options.bevelSegments : 3;\r\n\r\n\t\t\tconst extrudePath = options.extrudePath;\r\n\r\n\t\t\tconst uvgen = options.UVGenerator !== undefined ? options.UVGenerator : WorldUVGenerator;\r\n\r\n\t\t\t// deprecated options\r\n\r\n\t\t\tif ( options.amount !== undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.ExtrudeBufferGeometry: amount has been renamed to depth.' );\r\n\t\t\t\tdepth = options.amount;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//\r\n\r\n\t\t\tlet extrudePts, extrudeByPath = false;\r\n\t\t\tlet splineTube, binormal, normal, position2;\r\n\r\n\t\t\tif ( extrudePath ) {\r\n\r\n\t\t\t\textrudePts = extrudePath.getSpacedPoints( steps );\r\n\r\n\t\t\t\textrudeByPath = true;\r\n\t\t\t\tbevelEnabled = false; // bevels not supported for path extrusion\r\n\r\n\t\t\t\t// SETUP TNB variables\r\n\r\n\t\t\t\t// TODO1 - have a .isClosed in spline?\r\n\r\n\t\t\t\tsplineTube = extrudePath.computeFrenetFrames( steps, false );\r\n\r\n\t\t\t\t// console.log(splineTube, 'splineTube', splineTube.normals.length, 'steps', steps, 'extrudePts', extrudePts.length);\r\n\r\n\t\t\t\tbinormal = new Vector3();\r\n\t\t\t\tnormal = new Vector3();\r\n\t\t\t\tposition2 = new Vector3();\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Safeguards if bevels are not enabled\r\n\r\n\t\t\tif ( ! bevelEnabled ) {\r\n\r\n\t\t\t\tbevelSegments = 0;\r\n\t\t\t\tbevelThickness = 0;\r\n\t\t\t\tbevelSize = 0;\r\n\t\t\t\tbevelOffset = 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Variables initialization\r\n\r\n\t\t\tconst shapePoints = shape.extractPoints( curveSegments );\r\n\r\n\t\t\tlet vertices = shapePoints.shape;\r\n\t\t\tconst holes = shapePoints.holes;\r\n\r\n\t\t\tconst reverse = ! ShapeUtils.isClockWise( vertices );\r\n\r\n\t\t\tif ( reverse ) {\r\n\r\n\t\t\t\tvertices = vertices.reverse();\r\n\r\n\t\t\t\t// Maybe we should also check if holes are in the opposite direction, just to be safe ...\r\n\r\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\r\n\r\n\t\t\t\t\tconst ahole = holes[ h ];\r\n\r\n\t\t\t\t\tif ( ShapeUtils.isClockWise( ahole ) ) {\r\n\r\n\t\t\t\t\t\tholes[ h ] = ahole.reverse();\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\tconst faces = ShapeUtils.triangulateShape( vertices, holes );\r\n\r\n\t\t\t/* Vertices */\r\n\r\n\t\t\tconst contour = vertices; // vertices has all points but contour has only points of circumference\r\n\r\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\r\n\r\n\t\t\t\tconst ahole = holes[ h ];\r\n\r\n\t\t\t\tvertices = vertices.concat( ahole );\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\tfunction scalePt2( pt, vec, size ) {\r\n\r\n\t\t\t\tif ( ! vec ) console.error( 'THREE.ExtrudeGeometry: vec does not exist' );\r\n\r\n\t\t\t\treturn vec.clone().multiplyScalar( size ).add( pt );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst vlen = vertices.length, flen = faces.length;\r\n\r\n\r\n\t\t\t// Find directions for point movement\r\n\r\n\r\n\t\t\tfunction getBevelVec( inPt, inPrev, inNext ) {\r\n\r\n\t\t\t\t// computes for inPt the corresponding point inPt' on a new contour\r\n\t\t\t\t// shifted by 1 unit (length of normalized vector) to the left\r\n\t\t\t\t// if we walk along contour clockwise, this new contour is outside the old one\r\n\t\t\t\t//\r\n\t\t\t\t// inPt' is the intersection of the two lines parallel to the two\r\n\t\t\t\t// adjacent edges of inPt at a distance of 1 unit on the left side.\r\n\r\n\t\t\t\tlet v_trans_x, v_trans_y, shrink_by; // resulting translation vector for inPt\r\n\r\n\t\t\t\t// good reading for geometry algorithms (here: line-line intersection)\r\n\t\t\t\t// http://geomalgorithms.com/a05-_intersect-1.html\r\n\r\n\t\t\t\tconst v_prev_x = inPt.x - inPrev.x,\r\n\t\t\t\t\tv_prev_y = inPt.y - inPrev.y;\r\n\t\t\t\tconst v_next_x = inNext.x - inPt.x,\r\n\t\t\t\t\tv_next_y = inNext.y - inPt.y;\r\n\r\n\t\t\t\tconst v_prev_lensq = ( v_prev_x * v_prev_x + v_prev_y * v_prev_y );\r\n\r\n\t\t\t\t// check for collinear edges\r\n\t\t\t\tconst collinear0 = ( v_prev_x * v_next_y - v_prev_y * v_next_x );\r\n\r\n\t\t\t\tif ( Math.abs( collinear0 ) > Number.EPSILON ) {\r\n\r\n\t\t\t\t\t// not collinear\r\n\r\n\t\t\t\t\t// length of vectors for normalizing\r\n\r\n\t\t\t\t\tconst v_prev_len = Math.sqrt( v_prev_lensq );\r\n\t\t\t\t\tconst v_next_len = Math.sqrt( v_next_x * v_next_x + v_next_y * v_next_y );\r\n\r\n\t\t\t\t\t// shift adjacent points by unit vectors to the left\r\n\r\n\t\t\t\t\tconst ptPrevShift_x = ( inPrev.x - v_prev_y / v_prev_len );\r\n\t\t\t\t\tconst ptPrevShift_y = ( inPrev.y + v_prev_x / v_prev_len );\r\n\r\n\t\t\t\t\tconst ptNextShift_x = ( inNext.x - v_next_y / v_next_len );\r\n\t\t\t\t\tconst ptNextShift_y = ( inNext.y + v_next_x / v_next_len );\r\n\r\n\t\t\t\t\t// scaling factor for v_prev to intersection point\r\n\r\n\t\t\t\t\tconst sf = ( ( ptNextShift_x - ptPrevShift_x ) * v_next_y -\r\n\t\t\t\t\t\t\t( ptNextShift_y - ptPrevShift_y ) * v_next_x ) /\r\n\t\t\t\t\t\t( v_prev_x * v_next_y - v_prev_y * v_next_x );\r\n\r\n\t\t\t\t\t// vector from inPt to intersection point\r\n\r\n\t\t\t\t\tv_trans_x = ( ptPrevShift_x + v_prev_x * sf - inPt.x );\r\n\t\t\t\t\tv_trans_y = ( ptPrevShift_y + v_prev_y * sf - inPt.y );\r\n\r\n\t\t\t\t\t// Don't normalize!, otherwise sharp corners become ugly\r\n\t\t\t\t\t// but prevent crazy spikes\r\n\t\t\t\t\tconst v_trans_lensq = ( v_trans_x * v_trans_x + v_trans_y * v_trans_y );\r\n\t\t\t\t\tif ( v_trans_lensq <= 2 ) {\r\n\r\n\t\t\t\t\t\treturn new Vector2( v_trans_x, v_trans_y );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_trans_lensq / 2 );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// handle special case of collinear edges\r\n\r\n\t\t\t\t\tlet direction_eq = false; // assumes: opposite\r\n\r\n\t\t\t\t\tif ( v_prev_x > Number.EPSILON ) {\r\n\r\n\t\t\t\t\t\tif ( v_next_x > Number.EPSILON ) {\r\n\r\n\t\t\t\t\t\t\tdirection_eq = true;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tif ( v_prev_x < - Number.EPSILON ) {\r\n\r\n\t\t\t\t\t\t\tif ( v_next_x < - Number.EPSILON ) {\r\n\r\n\t\t\t\t\t\t\t\tdirection_eq = true;\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\tif ( Math.sign( v_prev_y ) === Math.sign( v_next_y ) ) {\r\n\r\n\t\t\t\t\t\t\t\tdirection_eq = true;\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( direction_eq ) {\r\n\r\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight sequence\");\r\n\t\t\t\t\t\tv_trans_x = - v_prev_y;\r\n\t\t\t\t\t\tv_trans_y = v_prev_x;\r\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// console.log(\"Warning: lines are a straight spike\");\r\n\t\t\t\t\t\tv_trans_x = v_prev_x;\r\n\t\t\t\t\t\tv_trans_y = v_prev_y;\r\n\t\t\t\t\t\tshrink_by = Math.sqrt( v_prev_lensq / 2 );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn new Vector2( v_trans_x / shrink_by, v_trans_y / shrink_by );\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\tconst contourMovements = [];\r\n\r\n\t\t\tfor ( let i = 0, il = contour.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\r\n\r\n\t\t\t\tif ( j === il ) j = 0;\r\n\t\t\t\tif ( k === il ) k = 0;\r\n\r\n\t\t\t\t// (j)---(i)---(k)\r\n\t\t\t\t// console.log('i,j,k', i, j , k)\r\n\r\n\t\t\t\tcontourMovements[ i ] = getBevelVec( contour[ i ], contour[ j ], contour[ k ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst holesMovements = [];\r\n\t\t\tlet oneHoleMovements, verticesMovements = contourMovements.concat();\r\n\r\n\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\r\n\r\n\t\t\t\tconst ahole = holes[ h ];\r\n\r\n\t\t\t\toneHoleMovements = [];\r\n\r\n\t\t\t\tfor ( let i = 0, il = ahole.length, j = il - 1, k = i + 1; i < il; i ++, j ++, k ++ ) {\r\n\r\n\t\t\t\t\tif ( j === il ) j = 0;\r\n\t\t\t\t\tif ( k === il ) k = 0;\r\n\r\n\t\t\t\t\t// (j)---(i)---(k)\r\n\t\t\t\t\toneHoleMovements[ i ] = getBevelVec( ahole[ i ], ahole[ j ], ahole[ k ] );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tholesMovements.push( oneHoleMovements );\r\n\t\t\t\tverticesMovements = verticesMovements.concat( oneHoleMovements );\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// Loop bevelSegments, 1 for the front, 1 for the back\r\n\r\n\t\t\tfor ( let b = 0; b < bevelSegments; b ++ ) {\r\n\r\n\t\t\t\t//for ( b = bevelSegments; b > 0; b -- ) {\r\n\r\n\t\t\t\tconst t = b / bevelSegments;\r\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\r\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\r\n\r\n\t\t\t\t// contract shape\r\n\r\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\r\n\r\n\t\t\t\t\tv( vert.x, vert.y, - z );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// expand holes\r\n\r\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\r\n\r\n\t\t\t\t\tconst ahole = holes[ h ];\r\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\r\n\r\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\r\n\r\n\t\t\t\t\t\tv( vert.x, vert.y, - z );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst bs = bevelSize + bevelOffset;\r\n\r\n\t\t\t// Back facing vertices\r\n\r\n\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\r\n\r\n\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\r\n\r\n\t\t\t\tif ( ! extrudeByPath ) {\r\n\r\n\t\t\t\t\tv( vert.x, vert.y, 0 );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ 0 ].y, extrudePts[ 0 ].x );\r\n\r\n\t\t\t\t\tnormal.copy( splineTube.normals[ 0 ] ).multiplyScalar( vert.x );\r\n\t\t\t\t\tbinormal.copy( splineTube.binormals[ 0 ] ).multiplyScalar( vert.y );\r\n\r\n\t\t\t\t\tposition2.copy( extrudePts[ 0 ] ).add( normal ).add( binormal );\r\n\r\n\t\t\t\t\tv( position2.x, position2.y, position2.z );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Add stepped vertices...\r\n\t\t\t// Including front facing vertices\r\n\r\n\t\t\tfor ( let s = 1; s <= steps; s ++ ) {\r\n\r\n\t\t\t\tfor ( let i = 0; i < vlen; i ++ ) {\r\n\r\n\t\t\t\t\tconst vert = bevelEnabled ? scalePt2( vertices[ i ], verticesMovements[ i ], bs ) : vertices[ i ];\r\n\r\n\t\t\t\t\tif ( ! extrudeByPath ) {\r\n\r\n\t\t\t\t\t\tv( vert.x, vert.y, depth / steps * s );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// v( vert.x, vert.y + extrudePts[ s - 1 ].y, extrudePts[ s - 1 ].x );\r\n\r\n\t\t\t\t\t\tnormal.copy( splineTube.normals[ s ] ).multiplyScalar( vert.x );\r\n\t\t\t\t\t\tbinormal.copy( splineTube.binormals[ s ] ).multiplyScalar( vert.y );\r\n\r\n\t\t\t\t\t\tposition2.copy( extrudePts[ s ] ).add( normal ).add( binormal );\r\n\r\n\t\t\t\t\t\tv( position2.x, position2.y, position2.z );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\t// Add bevel segments planes\r\n\r\n\t\t\t//for ( b = 1; b <= bevelSegments; b ++ ) {\r\n\t\t\tfor ( let b = bevelSegments - 1; b >= 0; b -- ) {\r\n\r\n\t\t\t\tconst t = b / bevelSegments;\r\n\t\t\t\tconst z = bevelThickness * Math.cos( t * Math.PI / 2 );\r\n\t\t\t\tconst bs = bevelSize * Math.sin( t * Math.PI / 2 ) + bevelOffset;\r\n\r\n\t\t\t\t// contract shape\r\n\r\n\t\t\t\tfor ( let i = 0, il = contour.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst vert = scalePt2( contour[ i ], contourMovements[ i ], bs );\r\n\t\t\t\t\tv( vert.x, vert.y, depth + z );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// expand holes\r\n\r\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\r\n\r\n\t\t\t\t\tconst ahole = holes[ h ];\r\n\t\t\t\t\toneHoleMovements = holesMovements[ h ];\r\n\r\n\t\t\t\t\tfor ( let i = 0, il = ahole.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst vert = scalePt2( ahole[ i ], oneHoleMovements[ i ], bs );\r\n\r\n\t\t\t\t\t\tif ( ! extrudeByPath ) {\r\n\r\n\t\t\t\t\t\t\tv( vert.x, vert.y, depth + z );\r\n\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\tv( vert.x, vert.y + extrudePts[ steps - 1 ].y, extrudePts[ steps - 1 ].x + z );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t/* Faces */\r\n\r\n\t\t\t// Top and bottom faces\r\n\r\n\t\t\tbuildLidFaces();\r\n\r\n\t\t\t// Sides faces\r\n\r\n\t\t\tbuildSideFaces();\r\n\r\n\r\n\t\t\t///// Internal functions\r\n\r\n\t\t\tfunction buildLidFaces() {\r\n\r\n\t\t\t\tconst start = verticesArray.length / 3;\r\n\r\n\t\t\t\tif ( bevelEnabled ) {\r\n\r\n\t\t\t\t\tlet layer = 0; // steps + 1\r\n\t\t\t\t\tlet offset = vlen * layer;\r\n\r\n\t\t\t\t\t// Bottom faces\r\n\r\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst face = faces[ i ];\r\n\t\t\t\t\t\tf3( face[ 2 ] + offset, face[ 1 ] + offset, face[ 0 ] + offset );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlayer = steps + bevelSegments * 2;\r\n\t\t\t\t\toffset = vlen * layer;\r\n\r\n\t\t\t\t\t// Top faces\r\n\r\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst face = faces[ i ];\r\n\t\t\t\t\t\tf3( face[ 0 ] + offset, face[ 1 ] + offset, face[ 2 ] + offset );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// Bottom faces\r\n\r\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst face = faces[ i ];\r\n\t\t\t\t\t\tf3( face[ 2 ], face[ 1 ], face[ 0 ] );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// Top faces\r\n\r\n\t\t\t\t\tfor ( let i = 0; i < flen; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst face = faces[ i ];\r\n\t\t\t\t\t\tf3( face[ 0 ] + vlen * steps, face[ 1 ] + vlen * steps, face[ 2 ] + vlen * steps );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 0 );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Create faces for the z-sides of the shape\r\n\r\n\t\t\tfunction buildSideFaces() {\r\n\r\n\t\t\t\tconst start = verticesArray.length / 3;\r\n\t\t\t\tlet layeroffset = 0;\r\n\t\t\t\tsidewalls( contour, layeroffset );\r\n\t\t\t\tlayeroffset += contour.length;\r\n\r\n\t\t\t\tfor ( let h = 0, hl = holes.length; h < hl; h ++ ) {\r\n\r\n\t\t\t\t\tconst ahole = holes[ h ];\r\n\t\t\t\t\tsidewalls( ahole, layeroffset );\r\n\r\n\t\t\t\t\t//, true\r\n\t\t\t\t\tlayeroffset += ahole.length;\r\n\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tscope.addGroup( start, verticesArray.length / 3 - start, 1 );\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfunction sidewalls( contour, layeroffset ) {\r\n\r\n\t\t\t\tlet i = contour.length;\r\n\r\n\t\t\t\twhile ( -- i >= 0 ) {\r\n\r\n\t\t\t\t\tconst j = i;\r\n\t\t\t\t\tlet k = i - 1;\r\n\t\t\t\t\tif ( k < 0 ) k = contour.length - 1;\r\n\r\n\t\t\t\t\t//console.log('b', i,j, i-1, k,vertices.length);\r\n\r\n\t\t\t\t\tfor ( let s = 0, sl = ( steps + bevelSegments * 2 ); s < sl; s ++ ) {\r\n\r\n\t\t\t\t\t\tconst slen1 = vlen * s;\r\n\t\t\t\t\t\tconst slen2 = vlen * ( s + 1 );\r\n\r\n\t\t\t\t\t\tconst a = layeroffset + j + slen1,\r\n\t\t\t\t\t\t\tb = layeroffset + k + slen1,\r\n\t\t\t\t\t\t\tc = layeroffset + k + slen2,\r\n\t\t\t\t\t\t\td = layeroffset + j + slen2;\r\n\r\n\t\t\t\t\t\tf4( a, b, c, d );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfunction v( x, y, z ) {\r\n\r\n\t\t\t\tplaceholder.push( x );\r\n\t\t\t\tplaceholder.push( y );\r\n\t\t\t\tplaceholder.push( z );\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\tfunction f3( a, b, c ) {\r\n\r\n\t\t\t\taddVertex( a );\r\n\t\t\t\taddVertex( b );\r\n\t\t\t\taddVertex( c );\r\n\r\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\r\n\t\t\t\tconst uvs = uvgen.generateTopUV( scope, verticesArray, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\r\n\r\n\t\t\t\taddUV( uvs[ 0 ] );\r\n\t\t\t\taddUV( uvs[ 1 ] );\r\n\t\t\t\taddUV( uvs[ 2 ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfunction f4( a, b, c, d ) {\r\n\r\n\t\t\t\taddVertex( a );\r\n\t\t\t\taddVertex( b );\r\n\t\t\t\taddVertex( d );\r\n\r\n\t\t\t\taddVertex( b );\r\n\t\t\t\taddVertex( c );\r\n\t\t\t\taddVertex( d );\r\n\r\n\r\n\t\t\t\tconst nextIndex = verticesArray.length / 3;\r\n\t\t\t\tconst uvs = uvgen.generateSideWallUV( scope, verticesArray, nextIndex - 6, nextIndex - 3, nextIndex - 2, nextIndex - 1 );\r\n\r\n\t\t\t\taddUV( uvs[ 0 ] );\r\n\t\t\t\taddUV( uvs[ 1 ] );\r\n\t\t\t\taddUV( uvs[ 3 ] );\r\n\r\n\t\t\t\taddUV( uvs[ 1 ] );\r\n\t\t\t\taddUV( uvs[ 2 ] );\r\n\t\t\t\taddUV( uvs[ 3 ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfunction addVertex( index ) {\r\n\r\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 0 ] );\r\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 1 ] );\r\n\t\t\t\tverticesArray.push( placeholder[ index * 3 + 2 ] );\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\tfunction addUV( vector2 ) {\r\n\r\n\t\t\t\tuvArray.push( vector2.x );\r\n\t\t\t\tuvArray.push( vector2.y );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\ttoJSON() {\r\n\r\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\r\n\r\n\t\tconst shapes = this.parameters.shapes;\r\n\t\tconst options = this.parameters.options;\r\n\r\n\t\treturn toJSON( shapes, options, data );\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst WorldUVGenerator = {\r\n\r\n\tgenerateTopUV: function ( geometry, vertices, indexA, indexB, indexC ) {\r\n\r\n\t\tconst a_x = vertices[ indexA * 3 ];\r\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\r\n\t\tconst b_x = vertices[ indexB * 3 ];\r\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\r\n\t\tconst c_x = vertices[ indexC * 3 ];\r\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\r\n\r\n\t\treturn [\r\n\t\t\tnew Vector2( a_x, a_y ),\r\n\t\t\tnew Vector2( b_x, b_y ),\r\n\t\t\tnew Vector2( c_x, c_y )\r\n\t\t];\r\n\r\n\t},\r\n\r\n\tgenerateSideWallUV: function ( geometry, vertices, indexA, indexB, indexC, indexD ) {\r\n\r\n\t\tconst a_x = vertices[ indexA * 3 ];\r\n\t\tconst a_y = vertices[ indexA * 3 + 1 ];\r\n\t\tconst a_z = vertices[ indexA * 3 + 2 ];\r\n\t\tconst b_x = vertices[ indexB * 3 ];\r\n\t\tconst b_y = vertices[ indexB * 3 + 1 ];\r\n\t\tconst b_z = vertices[ indexB * 3 + 2 ];\r\n\t\tconst c_x = vertices[ indexC * 3 ];\r\n\t\tconst c_y = vertices[ indexC * 3 + 1 ];\r\n\t\tconst c_z = vertices[ indexC * 3 + 2 ];\r\n\t\tconst d_x = vertices[ indexD * 3 ];\r\n\t\tconst d_y = vertices[ indexD * 3 + 1 ];\r\n\t\tconst d_z = vertices[ indexD * 3 + 2 ];\r\n\r\n\t\tif ( Math.abs( a_y - b_y ) < 0.01 ) {\r\n\r\n\t\t\treturn [\r\n\t\t\t\tnew Vector2( a_x, 1 - a_z ),\r\n\t\t\t\tnew Vector2( b_x, 1 - b_z ),\r\n\t\t\t\tnew Vector2( c_x, 1 - c_z ),\r\n\t\t\t\tnew Vector2( d_x, 1 - d_z )\r\n\t\t\t];\r\n\r\n\t\t} else {\r\n\r\n\t\t\treturn [\r\n\t\t\t\tnew Vector2( a_y, 1 - a_z ),\r\n\t\t\t\tnew Vector2( b_y, 1 - b_z ),\r\n\t\t\t\tnew Vector2( c_y, 1 - c_z ),\r\n\t\t\t\tnew Vector2( d_y, 1 - d_z )\r\n\t\t\t];\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\nfunction toJSON( shapes, options, data ) {\r\n\r\n\tdata.shapes = [];\r\n\r\n\tif ( Array.isArray( shapes ) ) {\r\n\r\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst shape = shapes[ i ];\r\n\r\n\t\t\tdata.shapes.push( shape.uuid );\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tdata.shapes.push( shapes.uuid );\r\n\r\n\t}\r\n\r\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\r\n\r\n\treturn data;\r\n\r\n}\r\n\r\n/**\r\n * Creates extruded geometry from a path shape.\r\n *\r\n * parameters = {\r\n *\r\n * curveSegments: , // number of points on the curves\r\n * steps: , // number of points for z-side extrusions / used for subdividing segments of extrude spline too\r\n * depth: , // Depth to extrude the shape\r\n *\r\n * bevelEnabled: , // turn on bevel\r\n * bevelThickness: , // how deep into the original shape bevel goes\r\n * bevelSize: , // how far from shape outline (including bevelOffset) is bevel\r\n * bevelOffset: , // how far from shape outline does bevel start\r\n * bevelSegments: , // number of bevel layers\r\n *\r\n * extrudePath: // curve to extrude shape along\r\n *\r\n * UVGenerator: // object that provides UV generator functions\r\n *\r\n * }\r\n */\r\n\r\nclass ExtrudeGeometry extends Geometry {\r\n\r\n\tconstructor( shapes, options ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'ExtrudeGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tshapes: shapes,\r\n\t\t\toptions: options\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new ExtrudeBufferGeometry( shapes, options ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n\ttoJSON() {\r\n\r\n\t\tconst data = super.toJSON();\r\n\r\n\t\tconst shapes = this.parameters.shapes;\r\n\t\tconst options = this.parameters.options;\r\n\r\n\t\treturn toJSON$1( shapes, options, data );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction toJSON$1( shapes, options, data ) {\r\n\r\n\tdata.shapes = [];\r\n\r\n\tif ( Array.isArray( shapes ) ) {\r\n\r\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst shape = shapes[ i ];\r\n\r\n\t\t\tdata.shapes.push( shape.uuid );\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tdata.shapes.push( shapes.uuid );\r\n\r\n\t}\r\n\r\n\tif ( options.extrudePath !== undefined ) data.options.extrudePath = options.extrudePath.toJSON();\r\n\r\n\treturn data;\r\n\r\n}\r\n\r\nclass IcosahedronBufferGeometry extends PolyhedronBufferGeometry {\r\n\r\n\tconstructor( radius = 1, detail = 0 ) {\r\n\r\n\t\tconst t = ( 1 + Math.sqrt( 5 ) ) / 2;\r\n\r\n\t\tconst vertices = [\r\n\t\t\t- 1, t, 0, \t1, t, 0, \t- 1, - t, 0, \t1, - t, 0,\r\n\t\t\t0, - 1, t, \t0, 1, t,\t0, - 1, - t, \t0, 1, - t,\r\n\t\t\tt, 0, - 1, \tt, 0, 1, \t- t, 0, - 1, \t- t, 0, 1\r\n\t\t];\r\n\r\n\t\tconst indices = [\r\n\t\t\t0, 11, 5, \t0, 5, 1, \t0, 1, 7, \t0, 7, 10, \t0, 10, 11,\r\n\t\t\t1, 5, 9, \t5, 11, 4,\t11, 10, 2,\t10, 7, 6,\t7, 1, 8,\r\n\t\t\t3, 9, 4, \t3, 4, 2,\t3, 2, 6,\t3, 6, 8,\t3, 8, 9,\r\n\t\t\t4, 9, 5, \t2, 4, 11,\t6, 2, 10,\t8, 6, 7,\t9, 8, 1\r\n\t\t];\r\n\r\n\t\tsuper( vertices, indices, radius, detail );\r\n\r\n\t\tthis.type = 'IcosahedronBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass IcosahedronGeometry extends Geometry {\r\n\r\n\tconstructor( radius, detail ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'IcosahedronGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new IcosahedronBufferGeometry( radius, detail ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass LatheBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( points, segments = 12, phiStart = 0, phiLength = Math.PI * 2 ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'LatheBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tpoints: points,\r\n\t\t\tsegments: segments,\r\n\t\t\tphiStart: phiStart,\r\n\t\t\tphiLength: phiLength\r\n\t\t};\r\n\r\n\t\tsegments = Math.floor( segments );\r\n\r\n\t\t// clamp phiLength so it's in range of [ 0, 2PI ]\r\n\r\n\t\tphiLength = MathUtils.clamp( phiLength, 0, Math.PI * 2 );\r\n\r\n\t\t// buffers\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\t// helper variables\r\n\r\n\t\tconst inverseSegments = 1.0 / segments;\r\n\t\tconst vertex = new Vector3();\r\n\t\tconst uv = new Vector2();\r\n\r\n\t\t// generate vertices and uvs\r\n\r\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\r\n\r\n\t\t\tconst phi = phiStart + i * inverseSegments * phiLength;\r\n\r\n\t\t\tconst sin = Math.sin( phi );\r\n\t\t\tconst cos = Math.cos( phi );\r\n\r\n\t\t\tfor ( let j = 0; j <= ( points.length - 1 ); j ++ ) {\r\n\r\n\t\t\t\t// vertex\r\n\r\n\t\t\t\tvertex.x = points[ j ].x * sin;\r\n\t\t\t\tvertex.y = points[ j ].y;\r\n\t\t\t\tvertex.z = points[ j ].x * cos;\r\n\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t// uv\r\n\r\n\t\t\t\tuv.x = i / segments;\r\n\t\t\t\tuv.y = j / ( points.length - 1 );\r\n\r\n\t\t\t\tuvs.push( uv.x, uv.y );\r\n\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// indices\r\n\r\n\t\tfor ( let i = 0; i < segments; i ++ ) {\r\n\r\n\t\t\tfor ( let j = 0; j < ( points.length - 1 ); j ++ ) {\r\n\r\n\t\t\t\tconst base = j + i * points.length;\r\n\r\n\t\t\t\tconst a = base;\r\n\t\t\t\tconst b = base + points.length;\r\n\t\t\t\tconst c = base + points.length + 1;\r\n\t\t\t\tconst d = base + 1;\r\n\r\n\t\t\t\t// faces\r\n\r\n\t\t\t\tindices.push( a, b, d );\r\n\t\t\t\tindices.push( b, c, d );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t\t// generate normals\r\n\r\n\t\tthis.computeVertexNormals();\r\n\r\n\t\t// if the geometry is closed, we need to average the normals along the seam.\r\n\t\t// because the corresponding vertices are identical (but still have different UVs).\r\n\r\n\t\tif ( phiLength === Math.PI * 2 ) {\r\n\r\n\t\t\tconst normals = this.attributes.normal.array;\r\n\t\t\tconst n1 = new Vector3();\r\n\t\t\tconst n2 = new Vector3();\r\n\t\t\tconst n = new Vector3();\r\n\r\n\t\t\t// this is the buffer offset for the last line of vertices\r\n\r\n\t\t\tconst base = segments * points.length * 3;\r\n\r\n\t\t\tfor ( let i = 0, j = 0; i < points.length; i ++, j += 3 ) {\r\n\r\n\t\t\t\t// select the normal of the vertex in the first line\r\n\r\n\t\t\t\tn1.x = normals[ j + 0 ];\r\n\t\t\t\tn1.y = normals[ j + 1 ];\r\n\t\t\t\tn1.z = normals[ j + 2 ];\r\n\r\n\t\t\t\t// select the normal of the vertex in the last line\r\n\r\n\t\t\t\tn2.x = normals[ base + j + 0 ];\r\n\t\t\t\tn2.y = normals[ base + j + 1 ];\r\n\t\t\t\tn2.z = normals[ base + j + 2 ];\r\n\r\n\t\t\t\t// average normals\r\n\r\n\t\t\t\tn.addVectors( n1, n2 ).normalize();\r\n\r\n\t\t\t\t// assign the new values to both normals\r\n\r\n\t\t\t\tnormals[ j + 0 ] = normals[ base + j + 0 ] = n.x;\r\n\t\t\t\tnormals[ j + 1 ] = normals[ base + j + 1 ] = n.y;\r\n\t\t\t\tnormals[ j + 2 ] = normals[ base + j + 2 ] = n.z;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass LatheGeometry extends Geometry {\r\n\r\n\tconstructor( points, segments, phiStart, phiLength ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'LatheGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tpoints: points,\r\n\t\t\tsegments: segments,\r\n\t\t\tphiStart: phiStart,\r\n\t\t\tphiLength: phiLength\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new LatheBufferGeometry( points, segments, phiStart, phiLength ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass OctahedronBufferGeometry extends PolyhedronBufferGeometry {\r\n\r\n\tconstructor( radius = 1, detail = 0 ) {\r\n\r\n\t\tconst vertices = [\r\n\t\t\t1, 0, 0, \t- 1, 0, 0,\t0, 1, 0,\r\n\t\t\t0, - 1, 0, \t0, 0, 1,\t0, 0, - 1\r\n\t\t];\r\n\r\n\t\tconst indices = [\r\n\t\t\t0, 2, 4,\t0, 4, 3,\t0, 3, 5,\r\n\t\t\t0, 5, 2,\t1, 2, 5,\t1, 5, 3,\r\n\t\t\t1, 3, 4,\t1, 4, 2\r\n\t\t];\r\n\r\n\t\tsuper( vertices, indices, radius, detail );\r\n\r\n\t\tthis.type = 'OctahedronBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass OctahedronGeometry extends Geometry {\r\n\r\n\tconstructor( radius, detail ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'OctahedronGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new OctahedronBufferGeometry( radius, detail ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Parametric Surfaces Geometry\r\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\r\n */\r\n\r\nfunction ParametricBufferGeometry( func, slices, stacks ) {\r\n\r\n\tBufferGeometry.call( this );\r\n\r\n\tthis.type = 'ParametricBufferGeometry';\r\n\r\n\tthis.parameters = {\r\n\t\tfunc: func,\r\n\t\tslices: slices,\r\n\t\tstacks: stacks\r\n\t};\r\n\r\n\t// buffers\r\n\r\n\tconst indices = [];\r\n\tconst vertices = [];\r\n\tconst normals = [];\r\n\tconst uvs = [];\r\n\r\n\tconst EPS = 0.00001;\r\n\r\n\tconst normal = new Vector3();\r\n\r\n\tconst p0 = new Vector3(), p1 = new Vector3();\r\n\tconst pu = new Vector3(), pv = new Vector3();\r\n\r\n\tif ( func.length < 3 ) {\r\n\r\n\t\tconsole.error( 'THREE.ParametricGeometry: Function must now modify a Vector3 as third parameter.' );\r\n\r\n\t}\r\n\r\n\t// generate vertices, normals and uvs\r\n\r\n\tconst sliceCount = slices + 1;\r\n\r\n\tfor ( let i = 0; i <= stacks; i ++ ) {\r\n\r\n\t\tconst v = i / stacks;\r\n\r\n\t\tfor ( let j = 0; j <= slices; j ++ ) {\r\n\r\n\t\t\tconst u = j / slices;\r\n\r\n\t\t\t// vertex\r\n\r\n\t\t\tfunc( u, v, p0 );\r\n\t\t\tvertices.push( p0.x, p0.y, p0.z );\r\n\r\n\t\t\t// normal\r\n\r\n\t\t\t// approximate tangent vectors via finite differences\r\n\r\n\t\t\tif ( u - EPS >= 0 ) {\r\n\r\n\t\t\t\tfunc( u - EPS, v, p1 );\r\n\t\t\t\tpu.subVectors( p0, p1 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tfunc( u + EPS, v, p1 );\r\n\t\t\t\tpu.subVectors( p1, p0 );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( v - EPS >= 0 ) {\r\n\r\n\t\t\t\tfunc( u, v - EPS, p1 );\r\n\t\t\t\tpv.subVectors( p0, p1 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tfunc( u, v + EPS, p1 );\r\n\t\t\t\tpv.subVectors( p1, p0 );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// cross product of tangent vectors returns surface normal\r\n\r\n\t\t\tnormal.crossVectors( pu, pv ).normalize();\r\n\t\t\tnormals.push( normal.x, normal.y, normal.z );\r\n\r\n\t\t\t// uv\r\n\r\n\t\t\tuvs.push( u, v );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// generate indices\r\n\r\n\tfor ( let i = 0; i < stacks; i ++ ) {\r\n\r\n\t\tfor ( let j = 0; j < slices; j ++ ) {\r\n\r\n\t\t\tconst a = i * sliceCount + j;\r\n\t\t\tconst b = i * sliceCount + j + 1;\r\n\t\t\tconst c = ( i + 1 ) * sliceCount + j + 1;\r\n\t\t\tconst d = ( i + 1 ) * sliceCount + j;\r\n\r\n\t\t\t// faces one and two\r\n\r\n\t\t\tindices.push( a, b, d );\r\n\t\t\tindices.push( b, c, d );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// build geometry\r\n\r\n\tthis.setIndex( indices );\r\n\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n}\r\n\r\nParametricBufferGeometry.prototype = Object.create( BufferGeometry.prototype );\r\nParametricBufferGeometry.prototype.constructor = ParametricBufferGeometry;\r\n\r\n/**\r\n * Parametric Surfaces Geometry\r\n * based on the brilliant article by @prideout https://prideout.net/blog/old/blog/index.html@p=44.html\r\n */\r\n\r\nfunction ParametricGeometry( func, slices, stacks ) {\r\n\r\n\tGeometry.call( this );\r\n\r\n\tthis.type = 'ParametricGeometry';\r\n\r\n\tthis.parameters = {\r\n\t\tfunc: func,\r\n\t\tslices: slices,\r\n\t\tstacks: stacks\r\n\t};\r\n\r\n\tthis.fromBufferGeometry( new ParametricBufferGeometry( func, slices, stacks ) );\r\n\tthis.mergeVertices();\r\n\r\n}\r\n\r\nParametricGeometry.prototype = Object.create( Geometry.prototype );\r\nParametricGeometry.prototype.constructor = ParametricGeometry;\r\n\r\nclass PlaneGeometry extends Geometry {\r\n\r\n\tconstructor( width, height, widthSegments, heightSegments ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'PlaneGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t\twidthSegments: widthSegments,\r\n\t\t\theightSegments: heightSegments\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new PlaneBufferGeometry( width, height, widthSegments, heightSegments ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass PolyhedronGeometry extends Geometry {\r\n\r\n\tconstructor( vertices, indices, radius, detail ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'PolyhedronGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tvertices: vertices,\r\n\t\t\tindices: indices,\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new PolyhedronBufferGeometry( vertices, indices, radius, detail ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass RingBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( innerRadius = 0.5, outerRadius = 1, thetaSegments = 8, phiSegments = 1, thetaStart = 0, thetaLength = Math.PI * 2 ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'RingBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tinnerRadius: innerRadius,\r\n\t\t\touterRadius: outerRadius,\r\n\t\t\tthetaSegments: thetaSegments,\r\n\t\t\tphiSegments: phiSegments,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t\tthetaSegments = Math.max( 3, thetaSegments );\r\n\t\tphiSegments = Math.max( 1, phiSegments );\r\n\r\n\t\t// buffers\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\t// some helper variables\r\n\r\n\t\tlet radius = innerRadius;\r\n\t\tconst radiusStep = ( ( outerRadius - innerRadius ) / phiSegments );\r\n\t\tconst vertex = new Vector3();\r\n\t\tconst uv = new Vector2();\r\n\r\n\t\t// generate vertices, normals and uvs\r\n\r\n\t\tfor ( let j = 0; j <= phiSegments; j ++ ) {\r\n\r\n\t\t\tfor ( let i = 0; i <= thetaSegments; i ++ ) {\r\n\r\n\t\t\t\t// values are generate from the inside of the ring to the outside\r\n\r\n\t\t\t\tconst segment = thetaStart + i / thetaSegments * thetaLength;\r\n\r\n\t\t\t\t// vertex\r\n\r\n\t\t\t\tvertex.x = radius * Math.cos( segment );\r\n\t\t\t\tvertex.y = radius * Math.sin( segment );\r\n\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t// normal\r\n\r\n\t\t\t\tnormals.push( 0, 0, 1 );\r\n\r\n\t\t\t\t// uv\r\n\r\n\t\t\t\tuv.x = ( vertex.x / outerRadius + 1 ) / 2;\r\n\t\t\t\tuv.y = ( vertex.y / outerRadius + 1 ) / 2;\r\n\r\n\t\t\t\tuvs.push( uv.x, uv.y );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// increase the radius for next row of vertices\r\n\r\n\t\t\tradius += radiusStep;\r\n\r\n\t\t}\r\n\r\n\t\t// indices\r\n\r\n\t\tfor ( let j = 0; j < phiSegments; j ++ ) {\r\n\r\n\t\t\tconst thetaSegmentLevel = j * ( thetaSegments + 1 );\r\n\r\n\t\t\tfor ( let i = 0; i < thetaSegments; i ++ ) {\r\n\r\n\t\t\t\tconst segment = i + thetaSegmentLevel;\r\n\r\n\t\t\t\tconst a = segment;\r\n\t\t\t\tconst b = segment + thetaSegments + 1;\r\n\t\t\t\tconst c = segment + thetaSegments + 2;\r\n\t\t\t\tconst d = segment + 1;\r\n\r\n\t\t\t\t// faces\r\n\r\n\t\t\t\tindices.push( a, b, d );\r\n\t\t\t\tindices.push( b, c, d );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass RingGeometry extends Geometry {\r\n\r\n\tconstructor( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'RingGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tinnerRadius: innerRadius,\r\n\t\t\touterRadius: outerRadius,\r\n\t\t\tthetaSegments: thetaSegments,\r\n\t\t\tphiSegments: phiSegments,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new RingBufferGeometry( innerRadius, outerRadius, thetaSegments, phiSegments, thetaStart, thetaLength ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass ShapeBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( shapes, curveSegments = 12 ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'ShapeBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tshapes: shapes,\r\n\t\t\tcurveSegments: curveSegments\r\n\t\t};\r\n\r\n\t\t// buffers\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\t// helper variables\r\n\r\n\t\tlet groupStart = 0;\r\n\t\tlet groupCount = 0;\r\n\r\n\t\t// allow single and array values for \"shapes\" parameter\r\n\r\n\t\tif ( Array.isArray( shapes ) === false ) {\r\n\r\n\t\t\taddShape( shapes );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tfor ( let i = 0; i < shapes.length; i ++ ) {\r\n\r\n\t\t\t\taddShape( shapes[ i ] );\r\n\r\n\t\t\t\tthis.addGroup( groupStart, groupCount, i ); // enables MultiMaterial support\r\n\r\n\t\t\t\tgroupStart += groupCount;\r\n\t\t\t\tgroupCount = 0;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\r\n\t\t// helper functions\r\n\r\n\t\tfunction addShape( shape ) {\r\n\r\n\t\t\tconst indexOffset = vertices.length / 3;\r\n\t\t\tconst points = shape.extractPoints( curveSegments );\r\n\r\n\t\t\tlet shapeVertices = points.shape;\r\n\t\t\tconst shapeHoles = points.holes;\r\n\r\n\t\t\t// check direction of vertices\r\n\r\n\t\t\tif ( ShapeUtils.isClockWise( shapeVertices ) === false ) {\r\n\r\n\t\t\t\tshapeVertices = shapeVertices.reverse();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\r\n\r\n\t\t\t\tif ( ShapeUtils.isClockWise( shapeHole ) === true ) {\r\n\r\n\t\t\t\t\tshapeHoles[ i ] = shapeHole.reverse();\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst faces = ShapeUtils.triangulateShape( shapeVertices, shapeHoles );\r\n\r\n\t\t\t// join vertices of inner and outer paths to a single array\r\n\r\n\t\t\tfor ( let i = 0, l = shapeHoles.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst shapeHole = shapeHoles[ i ];\r\n\t\t\t\tshapeVertices = shapeVertices.concat( shapeHole );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// vertices, normals, uvs\r\n\r\n\t\t\tfor ( let i = 0, l = shapeVertices.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst vertex = shapeVertices[ i ];\r\n\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, 0 );\r\n\t\t\t\tnormals.push( 0, 0, 1 );\r\n\t\t\t\tuvs.push( vertex.x, vertex.y ); // world uvs\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// incides\r\n\r\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst face = faces[ i ];\r\n\r\n\t\t\t\tconst a = face[ 0 ] + indexOffset;\r\n\t\t\t\tconst b = face[ 1 ] + indexOffset;\r\n\t\t\t\tconst c = face[ 2 ] + indexOffset;\r\n\r\n\t\t\t\tindices.push( a, b, c );\r\n\t\t\t\tgroupCount += 3;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\ttoJSON() {\r\n\r\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\r\n\r\n\t\tconst shapes = this.parameters.shapes;\r\n\r\n\t\treturn toJSON$2( shapes, data );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction toJSON$2( shapes, data ) {\r\n\r\n\tdata.shapes = [];\r\n\r\n\tif ( Array.isArray( shapes ) ) {\r\n\r\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst shape = shapes[ i ];\r\n\r\n\t\t\tdata.shapes.push( shape.uuid );\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tdata.shapes.push( shapes.uuid );\r\n\r\n\t}\r\n\r\n\treturn data;\r\n\r\n}\r\n\r\nclass ShapeGeometry extends Geometry {\r\n\r\n\tconstructor( shapes, curveSegments ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'ShapeGeometry';\r\n\r\n\t\tif ( typeof curveSegments === 'object' ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.ShapeGeometry: Options parameter has been removed.' );\r\n\r\n\t\t\tcurveSegments = curveSegments.curveSegments;\r\n\r\n\t\t}\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tshapes: shapes,\r\n\t\t\tcurveSegments: curveSegments\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new ShapeBufferGeometry( shapes, curveSegments ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n\ttoJSON() {\r\n\r\n\t\tconst data = Geometry.prototype.toJSON.call( this );\r\n\r\n\t\tconst shapes = this.parameters.shapes;\r\n\r\n\t\treturn toJSON$3( shapes, data );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction toJSON$3( shapes, data ) {\r\n\r\n\tdata.shapes = [];\r\n\r\n\tif ( Array.isArray( shapes ) ) {\r\n\r\n\t\tfor ( let i = 0, l = shapes.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst shape = shapes[ i ];\r\n\r\n\t\t\tdata.shapes.push( shape.uuid );\r\n\r\n\t\t}\r\n\r\n\t} else {\r\n\r\n\t\tdata.shapes.push( shapes.uuid );\r\n\r\n\t}\r\n\r\n\treturn data;\r\n\r\n}\r\n\r\nclass SphereBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( radius = 1, widthSegments = 8, heightSegments = 6, phiStart = 0, phiLength = Math.PI * 2, thetaStart = 0, thetaLength = Math.PI ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'SphereBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\twidthSegments: widthSegments,\r\n\t\t\theightSegments: heightSegments,\r\n\t\t\tphiStart: phiStart,\r\n\t\t\tphiLength: phiLength,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t\twidthSegments = Math.max( 3, Math.floor( widthSegments ) );\r\n\t\theightSegments = Math.max( 2, Math.floor( heightSegments ) );\r\n\r\n\t\tconst thetaEnd = Math.min( thetaStart + thetaLength, Math.PI );\r\n\r\n\t\tlet index = 0;\r\n\t\tconst grid = [];\r\n\r\n\t\tconst vertex = new Vector3();\r\n\t\tconst normal = new Vector3();\r\n\r\n\t\t// buffers\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\t// generate vertices, normals and uvs\r\n\r\n\t\tfor ( let iy = 0; iy <= heightSegments; iy ++ ) {\r\n\r\n\t\t\tconst verticesRow = [];\r\n\r\n\t\t\tconst v = iy / heightSegments;\r\n\r\n\t\t\t// special case for the poles\r\n\r\n\t\t\tlet uOffset = 0;\r\n\r\n\t\t\tif ( iy == 0 && thetaStart == 0 ) {\r\n\r\n\t\t\t\tuOffset = 0.5 / widthSegments;\r\n\r\n\t\t\t} else if ( iy == heightSegments && thetaEnd == Math.PI ) {\r\n\r\n\t\t\t\tuOffset = - 0.5 / widthSegments;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfor ( let ix = 0; ix <= widthSegments; ix ++ ) {\r\n\r\n\t\t\t\tconst u = ix / widthSegments;\r\n\r\n\t\t\t\t// vertex\r\n\r\n\t\t\t\tvertex.x = - radius * Math.cos( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\r\n\t\t\t\tvertex.y = radius * Math.cos( thetaStart + v * thetaLength );\r\n\t\t\t\tvertex.z = radius * Math.sin( phiStart + u * phiLength ) * Math.sin( thetaStart + v * thetaLength );\r\n\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t// normal\r\n\r\n\t\t\t\tnormal.copy( vertex ).normalize();\r\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\r\n\r\n\t\t\t\t// uv\r\n\r\n\t\t\t\tuvs.push( u + uOffset, 1 - v );\r\n\r\n\t\t\t\tverticesRow.push( index ++ );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tgrid.push( verticesRow );\r\n\r\n\t\t}\r\n\r\n\t\t// indices\r\n\r\n\t\tfor ( let iy = 0; iy < heightSegments; iy ++ ) {\r\n\r\n\t\t\tfor ( let ix = 0; ix < widthSegments; ix ++ ) {\r\n\r\n\t\t\t\tconst a = grid[ iy ][ ix + 1 ];\r\n\t\t\t\tconst b = grid[ iy ][ ix ];\r\n\t\t\t\tconst c = grid[ iy + 1 ][ ix ];\r\n\t\t\t\tconst d = grid[ iy + 1 ][ ix + 1 ];\r\n\r\n\t\t\t\tif ( iy !== 0 || thetaStart > 0 ) indices.push( a, b, d );\r\n\t\t\t\tif ( iy !== heightSegments - 1 || thetaEnd < Math.PI ) indices.push( b, c, d );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass SphereGeometry extends Geometry {\r\n\r\n\tconstructor( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'SphereGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\twidthSegments: widthSegments,\r\n\t\t\theightSegments: heightSegments,\r\n\t\t\tphiStart: phiStart,\r\n\t\t\tphiLength: phiLength,\r\n\t\t\tthetaStart: thetaStart,\r\n\t\t\tthetaLength: thetaLength\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new SphereBufferGeometry( radius, widthSegments, heightSegments, phiStart, phiLength, thetaStart, thetaLength ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass TetrahedronBufferGeometry extends PolyhedronBufferGeometry {\r\n\r\n\tconstructor( radius = 1, detail = 0 ) {\r\n\r\n\t\tconst vertices = [\r\n\t\t\t1, 1, 1, \t- 1, - 1, 1, \t- 1, 1, - 1, \t1, - 1, - 1\r\n\t\t];\r\n\r\n\t\tconst indices = [\r\n\t\t\t2, 1, 0, \t0, 3, 2,\t1, 3, 0,\t2, 3, 1\r\n\t\t];\r\n\r\n\t\tsuper( vertices, indices, radius, detail );\r\n\r\n\t\tthis.type = 'TetrahedronBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass TetrahedronGeometry extends Geometry {\r\n\r\n\tconstructor( radius, detail ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'TetrahedronGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\tdetail: detail\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new TetrahedronBufferGeometry( radius, detail ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Text = 3D Text\r\n *\r\n * parameters = {\r\n * font: , // font\r\n *\r\n * size: , // size of the text\r\n * height: , // thickness to extrude text\r\n * curveSegments: , // number of points on the curves\r\n *\r\n * bevelEnabled: , // turn on bevel\r\n * bevelThickness: , // how deep into text bevel goes\r\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\r\n * bevelOffset: // how far from text outline does bevel start\r\n * }\r\n */\r\n\r\nclass TextBufferGeometry extends ExtrudeBufferGeometry {\r\n\r\n\tconstructor( text, parameters = {} ) {\r\n\r\n\t\tconst font = parameters.font;\r\n\r\n\t\tif ( ! ( font && font.isFont ) ) {\r\n\r\n\t\t\tconsole.error( 'THREE.TextGeometry: font parameter is not an instance of THREE.Font.' );\r\n\t\t\treturn new BufferGeometry();\r\n\r\n\t\t}\r\n\r\n\t\tconst shapes = font.generateShapes( text, parameters.size );\r\n\r\n\t\t// translate parameters to ExtrudeGeometry API\r\n\r\n\t\tparameters.depth = parameters.height !== undefined ? parameters.height : 50;\r\n\r\n\t\t// defaults\r\n\r\n\t\tif ( parameters.bevelThickness === undefined ) parameters.bevelThickness = 10;\r\n\t\tif ( parameters.bevelSize === undefined ) parameters.bevelSize = 8;\r\n\t\tif ( parameters.bevelEnabled === undefined ) parameters.bevelEnabled = false;\r\n\r\n\t\tsuper( shapes, parameters );\r\n\r\n\t\tthis.type = 'TextBufferGeometry';\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Text = 3D Text\r\n *\r\n * parameters = {\r\n * font: , // font\r\n *\r\n * size: , // size of the text\r\n * height: , // thickness to extrude text\r\n * curveSegments: , // number of points on the curves\r\n *\r\n * bevelEnabled: , // turn on bevel\r\n * bevelThickness: , // how deep into text bevel goes\r\n * bevelSize: , // how far from text outline (including bevelOffset) is bevel\r\n * bevelOffset: // how far from text outline does bevel start\r\n * }\r\n */\r\n\r\nclass TextGeometry extends Geometry {\r\n\r\n\tconstructor( text, parameters ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'TextGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\ttext: text,\r\n\t\t\tparameters: parameters\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new TextBufferGeometry( text, parameters ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass TorusBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( radius = 1, tube = 0.4, radialSegments = 8, tubularSegments = 6, arc = Math.PI * 2 ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'TorusBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\ttube: tube,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\ttubularSegments: tubularSegments,\r\n\t\t\tarc: arc\r\n\t\t};\r\n\r\n\t\tradialSegments = Math.floor( radialSegments );\r\n\t\ttubularSegments = Math.floor( tubularSegments );\r\n\r\n\t\t// buffers\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\t// helper variables\r\n\r\n\t\tconst center = new Vector3();\r\n\t\tconst vertex = new Vector3();\r\n\t\tconst normal = new Vector3();\r\n\r\n\t\t// generate vertices, normals and uvs\r\n\r\n\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\r\n\r\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\r\n\r\n\t\t\t\tconst u = i / tubularSegments * arc;\r\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\r\n\r\n\t\t\t\t// vertex\r\n\r\n\t\t\t\tvertex.x = ( radius + tube * Math.cos( v ) ) * Math.cos( u );\r\n\t\t\t\tvertex.y = ( radius + tube * Math.cos( v ) ) * Math.sin( u );\r\n\t\t\t\tvertex.z = tube * Math.sin( v );\r\n\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t// normal\r\n\r\n\t\t\t\tcenter.x = radius * Math.cos( u );\r\n\t\t\t\tcenter.y = radius * Math.sin( u );\r\n\t\t\t\tnormal.subVectors( vertex, center ).normalize();\r\n\r\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\r\n\r\n\t\t\t\t// uv\r\n\r\n\t\t\t\tuvs.push( i / tubularSegments );\r\n\t\t\t\tuvs.push( j / radialSegments );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// generate indices\r\n\r\n\t\tfor ( let j = 1; j <= radialSegments; j ++ ) {\r\n\r\n\t\t\tfor ( let i = 1; i <= tubularSegments; i ++ ) {\r\n\r\n\t\t\t\t// indices\r\n\r\n\t\t\t\tconst a = ( tubularSegments + 1 ) * j + i - 1;\r\n\t\t\t\tconst b = ( tubularSegments + 1 ) * ( j - 1 ) + i - 1;\r\n\t\t\t\tconst c = ( tubularSegments + 1 ) * ( j - 1 ) + i;\r\n\t\t\t\tconst d = ( tubularSegments + 1 ) * j + i;\r\n\r\n\t\t\t\t// faces\r\n\r\n\t\t\t\tindices.push( a, b, d );\r\n\t\t\t\tindices.push( b, c, d );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass TorusGeometry extends Geometry {\r\n\r\n\tconstructor( radius, tube, radialSegments, tubularSegments, arc ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'TorusGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\ttube: tube,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\ttubularSegments: tubularSegments,\r\n\t\t\tarc: arc\r\n\t\t};\r\n\r\n\t\tthis.fromBufferGeometry( new TorusBufferGeometry( radius, tube, radialSegments, tubularSegments, arc ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass TorusKnotBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( radius = 1, tube = 0.4, tubularSegments = 64, radialSegments = 8, p = 2, q = 3 ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'TorusKnotBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\ttube: tube,\r\n\t\t\ttubularSegments: tubularSegments,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\tp: p,\r\n\t\t\tq: q\r\n\t\t};\r\n\r\n\t\ttubularSegments = Math.floor( tubularSegments );\r\n\t\tradialSegments = Math.floor( radialSegments );\r\n\r\n\t\t// buffers\r\n\r\n\t\tconst indices = [];\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\r\n\t\t// helper variables\r\n\r\n\t\tconst vertex = new Vector3();\r\n\t\tconst normal = new Vector3();\r\n\r\n\t\tconst P1 = new Vector3();\r\n\t\tconst P2 = new Vector3();\r\n\r\n\t\tconst B = new Vector3();\r\n\t\tconst T = new Vector3();\r\n\t\tconst N = new Vector3();\r\n\r\n\t\t// generate vertices, normals and uvs\r\n\r\n\t\tfor ( let i = 0; i <= tubularSegments; ++ i ) {\r\n\r\n\t\t\t// the radian \"u\" is used to calculate the position on the torus curve of the current tubular segement\r\n\r\n\t\t\tconst u = i / tubularSegments * p * Math.PI * 2;\r\n\r\n\t\t\t// now we calculate two points. P1 is our current position on the curve, P2 is a little farther ahead.\r\n\t\t\t// these points are used to create a special \"coordinate space\", which is necessary to calculate the correct vertex positions\r\n\r\n\t\t\tcalculatePositionOnCurve( u, p, q, radius, P1 );\r\n\t\t\tcalculatePositionOnCurve( u + 0.01, p, q, radius, P2 );\r\n\r\n\t\t\t// calculate orthonormal basis\r\n\r\n\t\t\tT.subVectors( P2, P1 );\r\n\t\t\tN.addVectors( P2, P1 );\r\n\t\t\tB.crossVectors( T, N );\r\n\t\t\tN.crossVectors( B, T );\r\n\r\n\t\t\t// normalize B, N. T can be ignored, we don't use it\r\n\r\n\t\t\tB.normalize();\r\n\t\t\tN.normalize();\r\n\r\n\t\t\tfor ( let j = 0; j <= radialSegments; ++ j ) {\r\n\r\n\t\t\t\t// now calculate the vertices. they are nothing more than an extrusion of the torus curve.\r\n\t\t\t\t// because we extrude a shape in the xy-plane, there is no need to calculate a z-value.\r\n\r\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\r\n\t\t\t\tconst cx = - tube * Math.cos( v );\r\n\t\t\t\tconst cy = tube * Math.sin( v );\r\n\r\n\t\t\t\t// now calculate the final vertex position.\r\n\t\t\t\t// first we orient the extrusion with our basis vectos, then we add it to the current position on the curve\r\n\r\n\t\t\t\tvertex.x = P1.x + ( cx * N.x + cy * B.x );\r\n\t\t\t\tvertex.y = P1.y + ( cx * N.y + cy * B.y );\r\n\t\t\t\tvertex.z = P1.z + ( cx * N.z + cy * B.z );\r\n\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t// normal (P1 is always the center/origin of the extrusion, thus we can use it to calculate the normal)\r\n\r\n\t\t\t\tnormal.subVectors( vertex, P1 ).normalize();\r\n\r\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\r\n\r\n\t\t\t\t// uv\r\n\r\n\t\t\t\tuvs.push( i / tubularSegments );\r\n\t\t\t\tuvs.push( j / radialSegments );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// generate indices\r\n\r\n\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\r\n\r\n\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\r\n\r\n\t\t\t\t// indices\r\n\r\n\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\r\n\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\r\n\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\r\n\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\r\n\r\n\t\t\t\t// faces\r\n\r\n\t\t\t\tindices.push( a, b, d );\r\n\t\t\t\tindices.push( b, c, d );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t\t// this function calculates the current position on the torus curve\r\n\r\n\t\tfunction calculatePositionOnCurve( u, p, q, radius, position ) {\r\n\r\n\t\t\tconst cu = Math.cos( u );\r\n\t\t\tconst su = Math.sin( u );\r\n\t\t\tconst quOverP = q / p * u;\r\n\t\t\tconst cs = Math.cos( quOverP );\r\n\r\n\t\t\tposition.x = radius * ( 2 + cs ) * 0.5 * cu;\r\n\t\t\tposition.y = radius * ( 2 + cs ) * su * 0.5;\r\n\t\t\tposition.z = radius * Math.sin( quOverP ) * 0.5;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass TorusKnotGeometry extends Geometry {\r\n\r\n\tconstructor( radius, tube, tubularSegments, radialSegments, p, q, heightScale ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'TorusKnotGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tradius: radius,\r\n\t\t\ttube: tube,\r\n\t\t\ttubularSegments: tubularSegments,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\tp: p,\r\n\t\t\tq: q\r\n\t\t};\r\n\r\n\t\tif ( heightScale !== undefined ) console.warn( 'THREE.TorusKnotGeometry: heightScale has been deprecated. Use .scale( x, y, z ) instead.' );\r\n\r\n\t\tthis.fromBufferGeometry( new TorusKnotBufferGeometry( radius, tube, tubularSegments, radialSegments, p, q ) );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass TubeBufferGeometry extends BufferGeometry {\r\n\r\n\tconstructor( path, tubularSegments = 64, radius = 1, radialSegments = 8, closed = false ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'TubeBufferGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tpath: path,\r\n\t\t\ttubularSegments: tubularSegments,\r\n\t\t\tradius: radius,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\tclosed: closed\r\n\t\t};\r\n\r\n\t\tconst frames = path.computeFrenetFrames( tubularSegments, closed );\r\n\r\n\t\t// expose internals\r\n\r\n\t\tthis.tangents = frames.tangents;\r\n\t\tthis.normals = frames.normals;\r\n\t\tthis.binormals = frames.binormals;\r\n\r\n\t\t// helper variables\r\n\r\n\t\tconst vertex = new Vector3();\r\n\t\tconst normal = new Vector3();\r\n\t\tconst uv = new Vector2();\r\n\t\tlet P = new Vector3();\r\n\r\n\t\t// buffer\r\n\r\n\t\tconst vertices = [];\r\n\t\tconst normals = [];\r\n\t\tconst uvs = [];\r\n\t\tconst indices = [];\r\n\r\n\t\t// create buffer data\r\n\r\n\t\tgenerateBufferData();\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setIndex( indices );\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tthis.setAttribute( 'normal', new Float32BufferAttribute( normals, 3 ) );\r\n\t\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n\t\t// functions\r\n\r\n\t\tfunction generateBufferData() {\r\n\r\n\t\t\tfor ( let i = 0; i < tubularSegments; i ++ ) {\r\n\r\n\t\t\t\tgenerateSegment( i );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// if the geometry is not closed, generate the last row of vertices and normals\r\n\t\t\t// at the regular position on the given path\r\n\t\t\t//\r\n\t\t\t// if the geometry is closed, duplicate the first row of vertices and normals (uvs will differ)\r\n\r\n\t\t\tgenerateSegment( ( closed === false ) ? tubularSegments : 0 );\r\n\r\n\t\t\t// uvs are generated in a separate function.\r\n\t\t\t// this makes it easy compute correct values for closed geometries\r\n\r\n\t\t\tgenerateUVs();\r\n\r\n\t\t\t// finally create faces\r\n\r\n\t\t\tgenerateIndices();\r\n\r\n\t\t}\r\n\r\n\t\tfunction generateSegment( i ) {\r\n\r\n\t\t\t// we use getPointAt to sample evenly distributed points from the given path\r\n\r\n\t\t\tP = path.getPointAt( i / tubularSegments, P );\r\n\r\n\t\t\t// retrieve corresponding normal and binormal\r\n\r\n\t\t\tconst N = frames.normals[ i ];\r\n\t\t\tconst B = frames.binormals[ i ];\r\n\r\n\t\t\t// generate normals and vertices for the current segment\r\n\r\n\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\r\n\r\n\t\t\t\tconst v = j / radialSegments * Math.PI * 2;\r\n\r\n\t\t\t\tconst sin = Math.sin( v );\r\n\t\t\t\tconst cos = - Math.cos( v );\r\n\r\n\t\t\t\t// normal\r\n\r\n\t\t\t\tnormal.x = ( cos * N.x + sin * B.x );\r\n\t\t\t\tnormal.y = ( cos * N.y + sin * B.y );\r\n\t\t\t\tnormal.z = ( cos * N.z + sin * B.z );\r\n\t\t\t\tnormal.normalize();\r\n\r\n\t\t\t\tnormals.push( normal.x, normal.y, normal.z );\r\n\r\n\t\t\t\t// vertex\r\n\r\n\t\t\t\tvertex.x = P.x + radius * normal.x;\r\n\t\t\t\tvertex.y = P.y + radius * normal.y;\r\n\t\t\t\tvertex.z = P.z + radius * normal.z;\r\n\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction generateIndices() {\r\n\r\n\t\t\tfor ( let j = 1; j <= tubularSegments; j ++ ) {\r\n\r\n\t\t\t\tfor ( let i = 1; i <= radialSegments; i ++ ) {\r\n\r\n\t\t\t\t\tconst a = ( radialSegments + 1 ) * ( j - 1 ) + ( i - 1 );\r\n\t\t\t\t\tconst b = ( radialSegments + 1 ) * j + ( i - 1 );\r\n\t\t\t\t\tconst c = ( radialSegments + 1 ) * j + i;\r\n\t\t\t\t\tconst d = ( radialSegments + 1 ) * ( j - 1 ) + i;\r\n\r\n\t\t\t\t\t// faces\r\n\r\n\t\t\t\t\tindices.push( a, b, d );\r\n\t\t\t\t\tindices.push( b, c, d );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfunction generateUVs() {\r\n\r\n\t\t\tfor ( let i = 0; i <= tubularSegments; i ++ ) {\r\n\r\n\t\t\t\tfor ( let j = 0; j <= radialSegments; j ++ ) {\r\n\r\n\t\t\t\t\tuv.x = i / tubularSegments;\r\n\t\t\t\t\tuv.y = j / radialSegments;\r\n\r\n\t\t\t\t\tuvs.push( uv.x, uv.y );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\ttoJSON() {\r\n\r\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\r\n\r\n\t\tdata.path = this.parameters.path.toJSON();\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass TubeGeometry extends Geometry {\r\n\r\n\tconstructor( path, tubularSegments, radius, radialSegments, closed, taper ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'TubeGeometry';\r\n\r\n\t\tthis.parameters = {\r\n\t\t\tpath: path,\r\n\t\t\ttubularSegments: tubularSegments,\r\n\t\t\tradius: radius,\r\n\t\t\tradialSegments: radialSegments,\r\n\t\t\tclosed: closed\r\n\t\t};\r\n\r\n\t\tif ( taper !== undefined ) console.warn( 'THREE.TubeGeometry: taper has been removed.' );\r\n\r\n\t\tconst bufferGeometry = new TubeBufferGeometry( path, tubularSegments, radius, radialSegments, closed );\r\n\r\n\t\t// expose internals\r\n\r\n\t\tthis.tangents = bufferGeometry.tangents;\r\n\t\tthis.normals = bufferGeometry.normals;\r\n\t\tthis.binormals = bufferGeometry.binormals;\r\n\r\n\t\t// create geometry\r\n\r\n\t\tthis.fromBufferGeometry( bufferGeometry );\r\n\t\tthis.mergeVertices();\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass WireframeGeometry extends BufferGeometry {\r\n\r\n\tconstructor( geometry ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.type = 'WireframeGeometry';\r\n\r\n\t\t// buffer\r\n\r\n\t\tconst vertices = [];\r\n\r\n\t\t// helper variables\r\n\r\n\t\tconst edge = [ 0, 0 ], edges = {};\r\n\t\tconst keys = [ 'a', 'b', 'c' ];\r\n\r\n\t\t// different logic for Geometry and BufferGeometry\r\n\r\n\t\tif ( geometry && geometry.isGeometry ) {\r\n\r\n\t\t\t// create a data structure that contains all edges without duplicates\r\n\r\n\t\t\tconst faces = geometry.faces;\r\n\r\n\t\t\tfor ( let i = 0, l = faces.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst face = faces[ i ];\r\n\r\n\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\r\n\r\n\t\t\t\t\tconst edge1 = face[ keys[ j ] ];\r\n\t\t\t\t\tconst edge2 = face[ keys[ ( j + 1 ) % 3 ] ];\r\n\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\r\n\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\r\n\r\n\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\r\n\r\n\t\t\t\t\tif ( edges[ key ] === undefined ) {\r\n\r\n\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// generate vertices\r\n\r\n\t\t\tfor ( const key in edges ) {\r\n\r\n\t\t\t\tconst e = edges[ key ];\r\n\r\n\t\t\t\tlet vertex = geometry.vertices[ e.index1 ];\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\tvertex = geometry.vertices[ e.index2 ];\r\n\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else if ( geometry && geometry.isBufferGeometry ) {\r\n\r\n\t\t\tconst vertex = new Vector3();\r\n\r\n\t\t\tif ( geometry.index !== null ) {\r\n\r\n\t\t\t\t// indexed BufferGeometry\r\n\r\n\t\t\t\tconst position = geometry.attributes.position;\r\n\t\t\t\tconst indices = geometry.index;\r\n\t\t\t\tlet groups = geometry.groups;\r\n\r\n\t\t\t\tif ( groups.length === 0 ) {\r\n\r\n\t\t\t\t\tgroups = [ { start: 0, count: indices.count, materialIndex: 0 } ];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// create a data structure that contains all eges without duplicates\r\n\r\n\t\t\t\tfor ( let o = 0, ol = groups.length; o < ol; ++ o ) {\r\n\r\n\t\t\t\t\tconst group = groups[ o ];\r\n\r\n\t\t\t\t\tconst start = group.start;\r\n\t\t\t\t\tconst count = group.count;\r\n\r\n\t\t\t\t\tfor ( let i = start, l = ( start + count ); i < l; i += 3 ) {\r\n\r\n\t\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\r\n\r\n\t\t\t\t\t\t\tconst edge1 = indices.getX( i + j );\r\n\t\t\t\t\t\t\tconst edge2 = indices.getX( i + ( j + 1 ) % 3 );\r\n\t\t\t\t\t\t\tedge[ 0 ] = Math.min( edge1, edge2 ); // sorting prevents duplicates\r\n\t\t\t\t\t\t\tedge[ 1 ] = Math.max( edge1, edge2 );\r\n\r\n\t\t\t\t\t\t\tconst key = edge[ 0 ] + ',' + edge[ 1 ];\r\n\r\n\t\t\t\t\t\t\tif ( edges[ key ] === undefined ) {\r\n\r\n\t\t\t\t\t\t\t\tedges[ key ] = { index1: edge[ 0 ], index2: edge[ 1 ] };\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// generate vertices\r\n\r\n\t\t\t\tfor ( const key in edges ) {\r\n\r\n\t\t\t\t\tconst e = edges[ key ];\r\n\r\n\t\t\t\t\tvertex.fromBufferAttribute( position, e.index1 );\r\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t\tvertex.fromBufferAttribute( position, e.index2 );\r\n\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// non-indexed BufferGeometry\r\n\r\n\t\t\t\tconst position = geometry.attributes.position;\r\n\r\n\t\t\t\tfor ( let i = 0, l = ( position.count / 3 ); i < l; i ++ ) {\r\n\r\n\t\t\t\t\tfor ( let j = 0; j < 3; j ++ ) {\r\n\r\n\t\t\t\t\t\t// three edges per triangle, an edge is represented as (index1, index2)\r\n\t\t\t\t\t\t// e.g. the first triangle has the following edges: (0,1),(1,2),(2,0)\r\n\r\n\t\t\t\t\t\tconst index1 = 3 * i + j;\r\n\t\t\t\t\t\tvertex.fromBufferAttribute( position, index1 );\r\n\t\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t\t\tconst index2 = 3 * i + ( ( j + 1 ) % 3 );\r\n\t\t\t\t\t\tvertex.fromBufferAttribute( position, index2 );\r\n\t\t\t\t\t\tvertices.push( vertex.x, vertex.y, vertex.z );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// build geometry\r\n\r\n\t\tthis.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\r\n\t}\r\n\r\n}\r\n\r\nvar Geometries = /*#__PURE__*/Object.freeze({\r\n\t__proto__: null,\r\n\tBoxGeometry: BoxGeometry,\r\n\tBoxBufferGeometry: BoxBufferGeometry,\r\n\tCircleGeometry: CircleGeometry,\r\n\tCircleBufferGeometry: CircleBufferGeometry,\r\n\tConeGeometry: ConeGeometry,\r\n\tConeBufferGeometry: ConeBufferGeometry,\r\n\tCylinderGeometry: CylinderGeometry,\r\n\tCylinderBufferGeometry: CylinderBufferGeometry,\r\n\tDodecahedronGeometry: DodecahedronGeometry,\r\n\tDodecahedronBufferGeometry: DodecahedronBufferGeometry,\r\n\tEdgesGeometry: EdgesGeometry,\r\n\tExtrudeGeometry: ExtrudeGeometry,\r\n\tExtrudeBufferGeometry: ExtrudeBufferGeometry,\r\n\tIcosahedronGeometry: IcosahedronGeometry,\r\n\tIcosahedronBufferGeometry: IcosahedronBufferGeometry,\r\n\tLatheGeometry: LatheGeometry,\r\n\tLatheBufferGeometry: LatheBufferGeometry,\r\n\tOctahedronGeometry: OctahedronGeometry,\r\n\tOctahedronBufferGeometry: OctahedronBufferGeometry,\r\n\tParametricGeometry: ParametricGeometry,\r\n\tParametricBufferGeometry: ParametricBufferGeometry,\r\n\tPlaneGeometry: PlaneGeometry,\r\n\tPlaneBufferGeometry: PlaneBufferGeometry,\r\n\tPolyhedronGeometry: PolyhedronGeometry,\r\n\tPolyhedronBufferGeometry: PolyhedronBufferGeometry,\r\n\tRingGeometry: RingGeometry,\r\n\tRingBufferGeometry: RingBufferGeometry,\r\n\tShapeGeometry: ShapeGeometry,\r\n\tShapeBufferGeometry: ShapeBufferGeometry,\r\n\tSphereGeometry: SphereGeometry,\r\n\tSphereBufferGeometry: SphereBufferGeometry,\r\n\tTetrahedronGeometry: TetrahedronGeometry,\r\n\tTetrahedronBufferGeometry: TetrahedronBufferGeometry,\r\n\tTextGeometry: TextGeometry,\r\n\tTextBufferGeometry: TextBufferGeometry,\r\n\tTorusGeometry: TorusGeometry,\r\n\tTorusBufferGeometry: TorusBufferGeometry,\r\n\tTorusKnotGeometry: TorusKnotGeometry,\r\n\tTorusKnotBufferGeometry: TorusKnotBufferGeometry,\r\n\tTubeGeometry: TubeGeometry,\r\n\tTubeBufferGeometry: TubeBufferGeometry,\r\n\tWireframeGeometry: WireframeGeometry\r\n});\r\n\r\n/**\r\n * parameters = {\r\n * color: \r\n * }\r\n */\r\n\r\nfunction ShadowMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'ShadowMaterial';\r\n\r\n\tthis.color = new Color( 0x000000 );\r\n\tthis.transparent = true;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nShadowMaterial.prototype = Object.create( Material.prototype );\r\nShadowMaterial.prototype.constructor = ShadowMaterial;\r\n\r\nShadowMaterial.prototype.isShadowMaterial = true;\r\n\r\nShadowMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.color.copy( source.color );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nfunction RawShaderMaterial( parameters ) {\r\n\r\n\tShaderMaterial.call( this, parameters );\r\n\r\n\tthis.type = 'RawShaderMaterial';\r\n\r\n}\r\n\r\nRawShaderMaterial.prototype = Object.create( ShaderMaterial.prototype );\r\nRawShaderMaterial.prototype.constructor = RawShaderMaterial;\r\n\r\nRawShaderMaterial.prototype.isRawShaderMaterial = true;\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * roughness: ,\r\n * metalness: ,\r\n * opacity: ,\r\n *\r\n * map: new THREE.Texture( ),\r\n *\r\n * lightMap: new THREE.Texture( ),\r\n * lightMapIntensity: \r\n *\r\n * aoMap: new THREE.Texture( ),\r\n * aoMapIntensity: \r\n *\r\n * emissive: ,\r\n * emissiveIntensity: \r\n * emissiveMap: new THREE.Texture( ),\r\n *\r\n * bumpMap: new THREE.Texture( ),\r\n * bumpScale: ,\r\n *\r\n * normalMap: new THREE.Texture( ),\r\n * normalMapType: THREE.TangentSpaceNormalMap,\r\n * normalScale: ,\r\n *\r\n * displacementMap: new THREE.Texture( ),\r\n * displacementScale: ,\r\n * displacementBias: ,\r\n *\r\n * roughnessMap: new THREE.Texture( ),\r\n *\r\n * metalnessMap: new THREE.Texture( ),\r\n *\r\n * alphaMap: new THREE.Texture( ),\r\n *\r\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\r\n * envMapIntensity: \r\n *\r\n * refractionRatio: ,\r\n *\r\n * wireframe: ,\r\n * wireframeLinewidth: ,\r\n *\r\n * skinning: ,\r\n * morphTargets: ,\r\n * morphNormals: \r\n * }\r\n */\r\n\r\nfunction MeshStandardMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.defines = { 'STANDARD': '' };\r\n\r\n\tthis.type = 'MeshStandardMaterial';\r\n\r\n\tthis.color = new Color( 0xffffff ); // diffuse\r\n\tthis.roughness = 1.0;\r\n\tthis.metalness = 0.0;\r\n\r\n\tthis.map = null;\r\n\r\n\tthis.lightMap = null;\r\n\tthis.lightMapIntensity = 1.0;\r\n\r\n\tthis.aoMap = null;\r\n\tthis.aoMapIntensity = 1.0;\r\n\r\n\tthis.emissive = new Color( 0x000000 );\r\n\tthis.emissiveIntensity = 1.0;\r\n\tthis.emissiveMap = null;\r\n\r\n\tthis.bumpMap = null;\r\n\tthis.bumpScale = 1;\r\n\r\n\tthis.normalMap = null;\r\n\tthis.normalMapType = TangentSpaceNormalMap;\r\n\tthis.normalScale = new Vector2( 1, 1 );\r\n\r\n\tthis.displacementMap = null;\r\n\tthis.displacementScale = 1;\r\n\tthis.displacementBias = 0;\r\n\r\n\tthis.roughnessMap = null;\r\n\r\n\tthis.metalnessMap = null;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.envMap = null;\r\n\tthis.envMapIntensity = 1.0;\r\n\r\n\tthis.refractionRatio = 0.98;\r\n\r\n\tthis.wireframe = false;\r\n\tthis.wireframeLinewidth = 1;\r\n\tthis.wireframeLinecap = 'round';\r\n\tthis.wireframeLinejoin = 'round';\r\n\r\n\tthis.skinning = false;\r\n\tthis.morphTargets = false;\r\n\tthis.morphNormals = false;\r\n\r\n\tthis.vertexTangents = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshStandardMaterial.prototype = Object.create( Material.prototype );\r\nMeshStandardMaterial.prototype.constructor = MeshStandardMaterial;\r\n\r\nMeshStandardMaterial.prototype.isMeshStandardMaterial = true;\r\n\r\nMeshStandardMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.defines = { 'STANDARD': '' };\r\n\r\n\tthis.color.copy( source.color );\r\n\tthis.roughness = source.roughness;\r\n\tthis.metalness = source.metalness;\r\n\r\n\tthis.map = source.map;\r\n\r\n\tthis.lightMap = source.lightMap;\r\n\tthis.lightMapIntensity = source.lightMapIntensity;\r\n\r\n\tthis.aoMap = source.aoMap;\r\n\tthis.aoMapIntensity = source.aoMapIntensity;\r\n\r\n\tthis.emissive.copy( source.emissive );\r\n\tthis.emissiveMap = source.emissiveMap;\r\n\tthis.emissiveIntensity = source.emissiveIntensity;\r\n\r\n\tthis.bumpMap = source.bumpMap;\r\n\tthis.bumpScale = source.bumpScale;\r\n\r\n\tthis.normalMap = source.normalMap;\r\n\tthis.normalMapType = source.normalMapType;\r\n\tthis.normalScale.copy( source.normalScale );\r\n\r\n\tthis.displacementMap = source.displacementMap;\r\n\tthis.displacementScale = source.displacementScale;\r\n\tthis.displacementBias = source.displacementBias;\r\n\r\n\tthis.roughnessMap = source.roughnessMap;\r\n\r\n\tthis.metalnessMap = source.metalnessMap;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.envMap = source.envMap;\r\n\tthis.envMapIntensity = source.envMapIntensity;\r\n\r\n\tthis.refractionRatio = source.refractionRatio;\r\n\r\n\tthis.wireframe = source.wireframe;\r\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\r\n\tthis.wireframeLinecap = source.wireframeLinecap;\r\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\r\n\r\n\tthis.skinning = source.skinning;\r\n\tthis.morphTargets = source.morphTargets;\r\n\tthis.morphNormals = source.morphNormals;\r\n\r\n\tthis.vertexTangents = source.vertexTangents;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n/**\r\n * parameters = {\r\n * clearcoat: ,\r\n * clearcoatMap: new THREE.Texture( ),\r\n * clearcoatRoughness: ,\r\n * clearcoatRoughnessMap: new THREE.Texture( ),\r\n * clearcoatNormalScale: ,\r\n * clearcoatNormalMap: new THREE.Texture( ),\r\n *\r\n * reflectivity: ,\r\n * ior: ,\r\n *\r\n * sheen: ,\r\n *\r\n * transmission: ,\r\n * transmissionMap: new THREE.Texture( )\r\n * }\r\n */\r\n\r\nfunction MeshPhysicalMaterial( parameters ) {\r\n\r\n\tMeshStandardMaterial.call( this );\r\n\r\n\tthis.defines = {\r\n\r\n\t\t'STANDARD': '',\r\n\t\t'PHYSICAL': ''\r\n\r\n\t};\r\n\r\n\tthis.type = 'MeshPhysicalMaterial';\r\n\r\n\tthis.clearcoat = 0.0;\r\n\tthis.clearcoatMap = null;\r\n\tthis.clearcoatRoughness = 0.0;\r\n\tthis.clearcoatRoughnessMap = null;\r\n\tthis.clearcoatNormalScale = new Vector2( 1, 1 );\r\n\tthis.clearcoatNormalMap = null;\r\n\r\n\tthis.reflectivity = 0.5; // maps to F0 = 0.04\r\n\r\n\tObject.defineProperty( this, 'ior', {\r\n\t\tget: function () {\r\n\r\n\t\t\treturn ( 1 + 0.4 * this.reflectivity ) / ( 1 - 0.4 * this.reflectivity );\r\n\r\n\t\t},\r\n\t\tset: function ( ior ) {\r\n\r\n\t\t\tthis.reflectivity = MathUtils.clamp( 2.5 * ( ior - 1 ) / ( ior + 1 ), 0, 1 );\r\n\r\n\t\t}\r\n\t} );\r\n\r\n\tthis.sheen = null; // null will disable sheen bsdf\r\n\r\n\tthis.transmission = 0.0;\r\n\tthis.transmissionMap = null;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshPhysicalMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\r\nMeshPhysicalMaterial.prototype.constructor = MeshPhysicalMaterial;\r\n\r\nMeshPhysicalMaterial.prototype.isMeshPhysicalMaterial = true;\r\n\r\nMeshPhysicalMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMeshStandardMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.defines = {\r\n\r\n\t\t'STANDARD': '',\r\n\t\t'PHYSICAL': ''\r\n\r\n\t};\r\n\r\n\tthis.clearcoat = source.clearcoat;\r\n\tthis.clearcoatMap = source.clearcoatMap;\r\n\tthis.clearcoatRoughness = source.clearcoatRoughness;\r\n\tthis.clearcoatRoughnessMap = source.clearcoatRoughnessMap;\r\n\tthis.clearcoatNormalMap = source.clearcoatNormalMap;\r\n\tthis.clearcoatNormalScale.copy( source.clearcoatNormalScale );\r\n\r\n\tthis.reflectivity = source.reflectivity;\r\n\r\n\tif ( source.sheen ) {\r\n\r\n\t\tthis.sheen = ( this.sheen || new Color() ).copy( source.sheen );\r\n\r\n\t} else {\r\n\r\n\t\tthis.sheen = null;\r\n\r\n\t}\r\n\r\n\tthis.transmission = source.transmission;\r\n\tthis.transmissionMap = source.transmissionMap;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * specular: ,\r\n * shininess: ,\r\n * opacity: ,\r\n *\r\n * map: new THREE.Texture( ),\r\n *\r\n * lightMap: new THREE.Texture( ),\r\n * lightMapIntensity: \r\n *\r\n * aoMap: new THREE.Texture( ),\r\n * aoMapIntensity: \r\n *\r\n * emissive: ,\r\n * emissiveIntensity: \r\n * emissiveMap: new THREE.Texture( ),\r\n *\r\n * bumpMap: new THREE.Texture( ),\r\n * bumpScale: ,\r\n *\r\n * normalMap: new THREE.Texture( ),\r\n * normalMapType: THREE.TangentSpaceNormalMap,\r\n * normalScale: ,\r\n *\r\n * displacementMap: new THREE.Texture( ),\r\n * displacementScale: ,\r\n * displacementBias: ,\r\n *\r\n * specularMap: new THREE.Texture( ),\r\n *\r\n * alphaMap: new THREE.Texture( ),\r\n *\r\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\r\n * combine: THREE.MultiplyOperation,\r\n * reflectivity: ,\r\n * refractionRatio: ,\r\n *\r\n * wireframe: ,\r\n * wireframeLinewidth: ,\r\n *\r\n * skinning: ,\r\n * morphTargets: ,\r\n * morphNormals: \r\n * }\r\n */\r\n\r\nfunction MeshPhongMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'MeshPhongMaterial';\r\n\r\n\tthis.color = new Color( 0xffffff ); // diffuse\r\n\tthis.specular = new Color( 0x111111 );\r\n\tthis.shininess = 30;\r\n\r\n\tthis.map = null;\r\n\r\n\tthis.lightMap = null;\r\n\tthis.lightMapIntensity = 1.0;\r\n\r\n\tthis.aoMap = null;\r\n\tthis.aoMapIntensity = 1.0;\r\n\r\n\tthis.emissive = new Color( 0x000000 );\r\n\tthis.emissiveIntensity = 1.0;\r\n\tthis.emissiveMap = null;\r\n\r\n\tthis.bumpMap = null;\r\n\tthis.bumpScale = 1;\r\n\r\n\tthis.normalMap = null;\r\n\tthis.normalMapType = TangentSpaceNormalMap;\r\n\tthis.normalScale = new Vector2( 1, 1 );\r\n\r\n\tthis.displacementMap = null;\r\n\tthis.displacementScale = 1;\r\n\tthis.displacementBias = 0;\r\n\r\n\tthis.specularMap = null;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.envMap = null;\r\n\tthis.combine = MultiplyOperation;\r\n\tthis.reflectivity = 1;\r\n\tthis.refractionRatio = 0.98;\r\n\r\n\tthis.wireframe = false;\r\n\tthis.wireframeLinewidth = 1;\r\n\tthis.wireframeLinecap = 'round';\r\n\tthis.wireframeLinejoin = 'round';\r\n\r\n\tthis.skinning = false;\r\n\tthis.morphTargets = false;\r\n\tthis.morphNormals = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshPhongMaterial.prototype = Object.create( Material.prototype );\r\nMeshPhongMaterial.prototype.constructor = MeshPhongMaterial;\r\n\r\nMeshPhongMaterial.prototype.isMeshPhongMaterial = true;\r\n\r\nMeshPhongMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.color.copy( source.color );\r\n\tthis.specular.copy( source.specular );\r\n\tthis.shininess = source.shininess;\r\n\r\n\tthis.map = source.map;\r\n\r\n\tthis.lightMap = source.lightMap;\r\n\tthis.lightMapIntensity = source.lightMapIntensity;\r\n\r\n\tthis.aoMap = source.aoMap;\r\n\tthis.aoMapIntensity = source.aoMapIntensity;\r\n\r\n\tthis.emissive.copy( source.emissive );\r\n\tthis.emissiveMap = source.emissiveMap;\r\n\tthis.emissiveIntensity = source.emissiveIntensity;\r\n\r\n\tthis.bumpMap = source.bumpMap;\r\n\tthis.bumpScale = source.bumpScale;\r\n\r\n\tthis.normalMap = source.normalMap;\r\n\tthis.normalMapType = source.normalMapType;\r\n\tthis.normalScale.copy( source.normalScale );\r\n\r\n\tthis.displacementMap = source.displacementMap;\r\n\tthis.displacementScale = source.displacementScale;\r\n\tthis.displacementBias = source.displacementBias;\r\n\r\n\tthis.specularMap = source.specularMap;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.envMap = source.envMap;\r\n\tthis.combine = source.combine;\r\n\tthis.reflectivity = source.reflectivity;\r\n\tthis.refractionRatio = source.refractionRatio;\r\n\r\n\tthis.wireframe = source.wireframe;\r\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\r\n\tthis.wireframeLinecap = source.wireframeLinecap;\r\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\r\n\r\n\tthis.skinning = source.skinning;\r\n\tthis.morphTargets = source.morphTargets;\r\n\tthis.morphNormals = source.morphNormals;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n *\r\n * map: new THREE.Texture( ),\r\n * gradientMap: new THREE.Texture( ),\r\n *\r\n * lightMap: new THREE.Texture( ),\r\n * lightMapIntensity: \r\n *\r\n * aoMap: new THREE.Texture( ),\r\n * aoMapIntensity: \r\n *\r\n * emissive: ,\r\n * emissiveIntensity: \r\n * emissiveMap: new THREE.Texture( ),\r\n *\r\n * bumpMap: new THREE.Texture( ),\r\n * bumpScale: ,\r\n *\r\n * normalMap: new THREE.Texture( ),\r\n * normalMapType: THREE.TangentSpaceNormalMap,\r\n * normalScale: ,\r\n *\r\n * displacementMap: new THREE.Texture( ),\r\n * displacementScale: ,\r\n * displacementBias: ,\r\n *\r\n * alphaMap: new THREE.Texture( ),\r\n *\r\n * wireframe: ,\r\n * wireframeLinewidth: ,\r\n *\r\n * skinning: ,\r\n * morphTargets: ,\r\n * morphNormals: \r\n * }\r\n */\r\n\r\nfunction MeshToonMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.defines = { 'TOON': '' };\r\n\r\n\tthis.type = 'MeshToonMaterial';\r\n\r\n\tthis.color = new Color( 0xffffff );\r\n\r\n\tthis.map = null;\r\n\tthis.gradientMap = null;\r\n\r\n\tthis.lightMap = null;\r\n\tthis.lightMapIntensity = 1.0;\r\n\r\n\tthis.aoMap = null;\r\n\tthis.aoMapIntensity = 1.0;\r\n\r\n\tthis.emissive = new Color( 0x000000 );\r\n\tthis.emissiveIntensity = 1.0;\r\n\tthis.emissiveMap = null;\r\n\r\n\tthis.bumpMap = null;\r\n\tthis.bumpScale = 1;\r\n\r\n\tthis.normalMap = null;\r\n\tthis.normalMapType = TangentSpaceNormalMap;\r\n\tthis.normalScale = new Vector2( 1, 1 );\r\n\r\n\tthis.displacementMap = null;\r\n\tthis.displacementScale = 1;\r\n\tthis.displacementBias = 0;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.wireframe = false;\r\n\tthis.wireframeLinewidth = 1;\r\n\tthis.wireframeLinecap = 'round';\r\n\tthis.wireframeLinejoin = 'round';\r\n\r\n\tthis.skinning = false;\r\n\tthis.morphTargets = false;\r\n\tthis.morphNormals = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshToonMaterial.prototype = Object.create( Material.prototype );\r\nMeshToonMaterial.prototype.constructor = MeshToonMaterial;\r\n\r\nMeshToonMaterial.prototype.isMeshToonMaterial = true;\r\n\r\nMeshToonMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.color.copy( source.color );\r\n\r\n\tthis.map = source.map;\r\n\tthis.gradientMap = source.gradientMap;\r\n\r\n\tthis.lightMap = source.lightMap;\r\n\tthis.lightMapIntensity = source.lightMapIntensity;\r\n\r\n\tthis.aoMap = source.aoMap;\r\n\tthis.aoMapIntensity = source.aoMapIntensity;\r\n\r\n\tthis.emissive.copy( source.emissive );\r\n\tthis.emissiveMap = source.emissiveMap;\r\n\tthis.emissiveIntensity = source.emissiveIntensity;\r\n\r\n\tthis.bumpMap = source.bumpMap;\r\n\tthis.bumpScale = source.bumpScale;\r\n\r\n\tthis.normalMap = source.normalMap;\r\n\tthis.normalMapType = source.normalMapType;\r\n\tthis.normalScale.copy( source.normalScale );\r\n\r\n\tthis.displacementMap = source.displacementMap;\r\n\tthis.displacementScale = source.displacementScale;\r\n\tthis.displacementBias = source.displacementBias;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.wireframe = source.wireframe;\r\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\r\n\tthis.wireframeLinecap = source.wireframeLinecap;\r\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\r\n\r\n\tthis.skinning = source.skinning;\r\n\tthis.morphTargets = source.morphTargets;\r\n\tthis.morphNormals = source.morphNormals;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n/**\r\n * parameters = {\r\n * opacity: ,\r\n *\r\n * bumpMap: new THREE.Texture( ),\r\n * bumpScale: ,\r\n *\r\n * normalMap: new THREE.Texture( ),\r\n * normalMapType: THREE.TangentSpaceNormalMap,\r\n * normalScale: ,\r\n *\r\n * displacementMap: new THREE.Texture( ),\r\n * displacementScale: ,\r\n * displacementBias: ,\r\n *\r\n * wireframe: ,\r\n * wireframeLinewidth: \r\n *\r\n * skinning: ,\r\n * morphTargets: ,\r\n * morphNormals: \r\n * }\r\n */\r\n\r\nfunction MeshNormalMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'MeshNormalMaterial';\r\n\r\n\tthis.bumpMap = null;\r\n\tthis.bumpScale = 1;\r\n\r\n\tthis.normalMap = null;\r\n\tthis.normalMapType = TangentSpaceNormalMap;\r\n\tthis.normalScale = new Vector2( 1, 1 );\r\n\r\n\tthis.displacementMap = null;\r\n\tthis.displacementScale = 1;\r\n\tthis.displacementBias = 0;\r\n\r\n\tthis.wireframe = false;\r\n\tthis.wireframeLinewidth = 1;\r\n\r\n\tthis.fog = false;\r\n\r\n\tthis.skinning = false;\r\n\tthis.morphTargets = false;\r\n\tthis.morphNormals = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshNormalMaterial.prototype = Object.create( Material.prototype );\r\nMeshNormalMaterial.prototype.constructor = MeshNormalMaterial;\r\n\r\nMeshNormalMaterial.prototype.isMeshNormalMaterial = true;\r\n\r\nMeshNormalMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.bumpMap = source.bumpMap;\r\n\tthis.bumpScale = source.bumpScale;\r\n\r\n\tthis.normalMap = source.normalMap;\r\n\tthis.normalMapType = source.normalMapType;\r\n\tthis.normalScale.copy( source.normalScale );\r\n\r\n\tthis.displacementMap = source.displacementMap;\r\n\tthis.displacementScale = source.displacementScale;\r\n\tthis.displacementBias = source.displacementBias;\r\n\r\n\tthis.wireframe = source.wireframe;\r\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\r\n\r\n\tthis.skinning = source.skinning;\r\n\tthis.morphTargets = source.morphTargets;\r\n\tthis.morphNormals = source.morphNormals;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * opacity: ,\r\n *\r\n * map: new THREE.Texture( ),\r\n *\r\n * lightMap: new THREE.Texture( ),\r\n * lightMapIntensity: \r\n *\r\n * aoMap: new THREE.Texture( ),\r\n * aoMapIntensity: \r\n *\r\n * emissive: ,\r\n * emissiveIntensity: \r\n * emissiveMap: new THREE.Texture( ),\r\n *\r\n * specularMap: new THREE.Texture( ),\r\n *\r\n * alphaMap: new THREE.Texture( ),\r\n *\r\n * envMap: new THREE.CubeTexture( [posx, negx, posy, negy, posz, negz] ),\r\n * combine: THREE.Multiply,\r\n * reflectivity: ,\r\n * refractionRatio: ,\r\n *\r\n * wireframe: ,\r\n * wireframeLinewidth: ,\r\n *\r\n * skinning: ,\r\n * morphTargets: ,\r\n * morphNormals: \r\n * }\r\n */\r\n\r\nfunction MeshLambertMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.type = 'MeshLambertMaterial';\r\n\r\n\tthis.color = new Color( 0xffffff ); // diffuse\r\n\r\n\tthis.map = null;\r\n\r\n\tthis.lightMap = null;\r\n\tthis.lightMapIntensity = 1.0;\r\n\r\n\tthis.aoMap = null;\r\n\tthis.aoMapIntensity = 1.0;\r\n\r\n\tthis.emissive = new Color( 0x000000 );\r\n\tthis.emissiveIntensity = 1.0;\r\n\tthis.emissiveMap = null;\r\n\r\n\tthis.specularMap = null;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.envMap = null;\r\n\tthis.combine = MultiplyOperation;\r\n\tthis.reflectivity = 1;\r\n\tthis.refractionRatio = 0.98;\r\n\r\n\tthis.wireframe = false;\r\n\tthis.wireframeLinewidth = 1;\r\n\tthis.wireframeLinecap = 'round';\r\n\tthis.wireframeLinejoin = 'round';\r\n\r\n\tthis.skinning = false;\r\n\tthis.morphTargets = false;\r\n\tthis.morphNormals = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshLambertMaterial.prototype = Object.create( Material.prototype );\r\nMeshLambertMaterial.prototype.constructor = MeshLambertMaterial;\r\n\r\nMeshLambertMaterial.prototype.isMeshLambertMaterial = true;\r\n\r\nMeshLambertMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.color.copy( source.color );\r\n\r\n\tthis.map = source.map;\r\n\r\n\tthis.lightMap = source.lightMap;\r\n\tthis.lightMapIntensity = source.lightMapIntensity;\r\n\r\n\tthis.aoMap = source.aoMap;\r\n\tthis.aoMapIntensity = source.aoMapIntensity;\r\n\r\n\tthis.emissive.copy( source.emissive );\r\n\tthis.emissiveMap = source.emissiveMap;\r\n\tthis.emissiveIntensity = source.emissiveIntensity;\r\n\r\n\tthis.specularMap = source.specularMap;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.envMap = source.envMap;\r\n\tthis.combine = source.combine;\r\n\tthis.reflectivity = source.reflectivity;\r\n\tthis.refractionRatio = source.refractionRatio;\r\n\r\n\tthis.wireframe = source.wireframe;\r\n\tthis.wireframeLinewidth = source.wireframeLinewidth;\r\n\tthis.wireframeLinecap = source.wireframeLinecap;\r\n\tthis.wireframeLinejoin = source.wireframeLinejoin;\r\n\r\n\tthis.skinning = source.skinning;\r\n\tthis.morphTargets = source.morphTargets;\r\n\tthis.morphNormals = source.morphNormals;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * opacity: ,\r\n *\r\n * matcap: new THREE.Texture( ),\r\n *\r\n * map: new THREE.Texture( ),\r\n *\r\n * bumpMap: new THREE.Texture( ),\r\n * bumpScale: ,\r\n *\r\n * normalMap: new THREE.Texture( ),\r\n * normalMapType: THREE.TangentSpaceNormalMap,\r\n * normalScale: ,\r\n *\r\n * displacementMap: new THREE.Texture( ),\r\n * displacementScale: ,\r\n * displacementBias: ,\r\n *\r\n * alphaMap: new THREE.Texture( ),\r\n *\r\n * skinning: ,\r\n * morphTargets: ,\r\n * morphNormals: \r\n * }\r\n */\r\n\r\nfunction MeshMatcapMaterial( parameters ) {\r\n\r\n\tMaterial.call( this );\r\n\r\n\tthis.defines = { 'MATCAP': '' };\r\n\r\n\tthis.type = 'MeshMatcapMaterial';\r\n\r\n\tthis.color = new Color( 0xffffff ); // diffuse\r\n\r\n\tthis.matcap = null;\r\n\r\n\tthis.map = null;\r\n\r\n\tthis.bumpMap = null;\r\n\tthis.bumpScale = 1;\r\n\r\n\tthis.normalMap = null;\r\n\tthis.normalMapType = TangentSpaceNormalMap;\r\n\tthis.normalScale = new Vector2( 1, 1 );\r\n\r\n\tthis.displacementMap = null;\r\n\tthis.displacementScale = 1;\r\n\tthis.displacementBias = 0;\r\n\r\n\tthis.alphaMap = null;\r\n\r\n\tthis.skinning = false;\r\n\tthis.morphTargets = false;\r\n\tthis.morphNormals = false;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nMeshMatcapMaterial.prototype = Object.create( Material.prototype );\r\nMeshMatcapMaterial.prototype.constructor = MeshMatcapMaterial;\r\n\r\nMeshMatcapMaterial.prototype.isMeshMatcapMaterial = true;\r\n\r\nMeshMatcapMaterial.prototype.copy = function ( source ) {\r\n\r\n\tMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.defines = { 'MATCAP': '' };\r\n\r\n\tthis.color.copy( source.color );\r\n\r\n\tthis.matcap = source.matcap;\r\n\r\n\tthis.map = source.map;\r\n\r\n\tthis.bumpMap = source.bumpMap;\r\n\tthis.bumpScale = source.bumpScale;\r\n\r\n\tthis.normalMap = source.normalMap;\r\n\tthis.normalMapType = source.normalMapType;\r\n\tthis.normalScale.copy( source.normalScale );\r\n\r\n\tthis.displacementMap = source.displacementMap;\r\n\tthis.displacementScale = source.displacementScale;\r\n\tthis.displacementBias = source.displacementBias;\r\n\r\n\tthis.alphaMap = source.alphaMap;\r\n\r\n\tthis.skinning = source.skinning;\r\n\tthis.morphTargets = source.morphTargets;\r\n\tthis.morphNormals = source.morphNormals;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * opacity: ,\r\n *\r\n * linewidth: ,\r\n *\r\n * scale: ,\r\n * dashSize: ,\r\n * gapSize: \r\n * }\r\n */\r\n\r\nfunction LineDashedMaterial( parameters ) {\r\n\r\n\tLineBasicMaterial.call( this );\r\n\r\n\tthis.type = 'LineDashedMaterial';\r\n\r\n\tthis.scale = 1;\r\n\tthis.dashSize = 3;\r\n\tthis.gapSize = 1;\r\n\r\n\tthis.setValues( parameters );\r\n\r\n}\r\n\r\nLineDashedMaterial.prototype = Object.create( LineBasicMaterial.prototype );\r\nLineDashedMaterial.prototype.constructor = LineDashedMaterial;\r\n\r\nLineDashedMaterial.prototype.isLineDashedMaterial = true;\r\n\r\nLineDashedMaterial.prototype.copy = function ( source ) {\r\n\r\n\tLineBasicMaterial.prototype.copy.call( this, source );\r\n\r\n\tthis.scale = source.scale;\r\n\tthis.dashSize = source.dashSize;\r\n\tthis.gapSize = source.gapSize;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nvar Materials = /*#__PURE__*/Object.freeze({\r\n\t__proto__: null,\r\n\tShadowMaterial: ShadowMaterial,\r\n\tSpriteMaterial: SpriteMaterial,\r\n\tRawShaderMaterial: RawShaderMaterial,\r\n\tShaderMaterial: ShaderMaterial,\r\n\tPointsMaterial: PointsMaterial,\r\n\tMeshPhysicalMaterial: MeshPhysicalMaterial,\r\n\tMeshStandardMaterial: MeshStandardMaterial,\r\n\tMeshPhongMaterial: MeshPhongMaterial,\r\n\tMeshToonMaterial: MeshToonMaterial,\r\n\tMeshNormalMaterial: MeshNormalMaterial,\r\n\tMeshLambertMaterial: MeshLambertMaterial,\r\n\tMeshDepthMaterial: MeshDepthMaterial,\r\n\tMeshDistanceMaterial: MeshDistanceMaterial,\r\n\tMeshBasicMaterial: MeshBasicMaterial,\r\n\tMeshMatcapMaterial: MeshMatcapMaterial,\r\n\tLineDashedMaterial: LineDashedMaterial,\r\n\tLineBasicMaterial: LineBasicMaterial,\r\n\tMaterial: Material\r\n});\r\n\r\nconst AnimationUtils = {\r\n\r\n\t// same as Array.prototype.slice, but also works on typed arrays\r\n\tarraySlice: function ( array, from, to ) {\r\n\r\n\t\tif ( AnimationUtils.isTypedArray( array ) ) {\r\n\r\n\t\t\t// in ios9 array.subarray(from, undefined) will return empty array\r\n\t\t\t// but array.subarray(from) or array.subarray(from, len) is correct\r\n\t\t\treturn new array.constructor( array.subarray( from, to !== undefined ? to : array.length ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn array.slice( from, to );\r\n\r\n\t},\r\n\r\n\t// converts an array to a specific type\r\n\tconvertArray: function ( array, type, forceClone ) {\r\n\r\n\t\tif ( ! array || // let 'undefined' and 'null' pass\r\n\t\t\t! forceClone && array.constructor === type ) return array;\r\n\r\n\t\tif ( typeof type.BYTES_PER_ELEMENT === 'number' ) {\r\n\r\n\t\t\treturn new type( array ); // create typed array\r\n\r\n\t\t}\r\n\r\n\t\treturn Array.prototype.slice.call( array ); // create Array\r\n\r\n\t},\r\n\r\n\tisTypedArray: function ( object ) {\r\n\r\n\t\treturn ArrayBuffer.isView( object ) &&\r\n\t\t\t! ( object instanceof DataView );\r\n\r\n\t},\r\n\r\n\t// returns an array by which times and values can be sorted\r\n\tgetKeyframeOrder: function ( times ) {\r\n\r\n\t\tfunction compareTime( i, j ) {\r\n\r\n\t\t\treturn times[ i ] - times[ j ];\r\n\r\n\t\t}\r\n\r\n\t\tconst n = times.length;\r\n\t\tconst result = new Array( n );\r\n\t\tfor ( let i = 0; i !== n; ++ i ) result[ i ] = i;\r\n\r\n\t\tresult.sort( compareTime );\r\n\r\n\t\treturn result;\r\n\r\n\t},\r\n\r\n\t// uses the array previously returned by 'getKeyframeOrder' to sort data\r\n\tsortedArray: function ( values, stride, order ) {\r\n\r\n\t\tconst nValues = values.length;\r\n\t\tconst result = new values.constructor( nValues );\r\n\r\n\t\tfor ( let i = 0, dstOffset = 0; dstOffset !== nValues; ++ i ) {\r\n\r\n\t\t\tconst srcOffset = order[ i ] * stride;\r\n\r\n\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\r\n\r\n\t\t\t\tresult[ dstOffset ++ ] = values[ srcOffset + j ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t},\r\n\r\n\t// function for parsing AOS keyframe formats\r\n\tflattenJSON: function ( jsonKeys, times, values, valuePropertyName ) {\r\n\r\n\t\tlet i = 1, key = jsonKeys[ 0 ];\r\n\r\n\t\twhile ( key !== undefined && key[ valuePropertyName ] === undefined ) {\r\n\r\n\t\t\tkey = jsonKeys[ i ++ ];\r\n\r\n\t\t}\r\n\r\n\t\tif ( key === undefined ) return; // no data\r\n\r\n\t\tlet value = key[ valuePropertyName ];\r\n\t\tif ( value === undefined ) return; // no data\r\n\r\n\t\tif ( Array.isArray( value ) ) {\r\n\r\n\t\t\tdo {\r\n\r\n\t\t\t\tvalue = key[ valuePropertyName ];\r\n\r\n\t\t\t\tif ( value !== undefined ) {\r\n\r\n\t\t\t\t\ttimes.push( key.time );\r\n\t\t\t\t\tvalues.push.apply( values, value ); // push all elements\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkey = jsonKeys[ i ++ ];\r\n\r\n\t\t\t} while ( key !== undefined );\r\n\r\n\t\t} else if ( value.toArray !== undefined ) {\r\n\r\n\t\t\t// ...assume THREE.Math-ish\r\n\r\n\t\t\tdo {\r\n\r\n\t\t\t\tvalue = key[ valuePropertyName ];\r\n\r\n\t\t\t\tif ( value !== undefined ) {\r\n\r\n\t\t\t\t\ttimes.push( key.time );\r\n\t\t\t\t\tvalue.toArray( values, values.length );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkey = jsonKeys[ i ++ ];\r\n\r\n\t\t\t} while ( key !== undefined );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// otherwise push as-is\r\n\r\n\t\t\tdo {\r\n\r\n\t\t\t\tvalue = key[ valuePropertyName ];\r\n\r\n\t\t\t\tif ( value !== undefined ) {\r\n\r\n\t\t\t\t\ttimes.push( key.time );\r\n\t\t\t\t\tvalues.push( value );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tkey = jsonKeys[ i ++ ];\r\n\r\n\t\t\t} while ( key !== undefined );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tsubclip: function ( sourceClip, name, startFrame, endFrame, fps = 30 ) {\r\n\r\n\t\tconst clip = sourceClip.clone();\r\n\r\n\t\tclip.name = name;\r\n\r\n\t\tconst tracks = [];\r\n\r\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\r\n\r\n\t\t\tconst track = clip.tracks[ i ];\r\n\t\t\tconst valueSize = track.getValueSize();\r\n\r\n\t\t\tconst times = [];\r\n\t\t\tconst values = [];\r\n\r\n\t\t\tfor ( let j = 0; j < track.times.length; ++ j ) {\r\n\r\n\t\t\t\tconst frame = track.times[ j ] * fps;\r\n\r\n\t\t\t\tif ( frame < startFrame || frame >= endFrame ) continue;\r\n\r\n\t\t\t\ttimes.push( track.times[ j ] );\r\n\r\n\t\t\t\tfor ( let k = 0; k < valueSize; ++ k ) {\r\n\r\n\t\t\t\t\tvalues.push( track.values[ j * valueSize + k ] );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( times.length === 0 ) continue;\r\n\r\n\t\t\ttrack.times = AnimationUtils.convertArray( times, track.times.constructor );\r\n\t\t\ttrack.values = AnimationUtils.convertArray( values, track.values.constructor );\r\n\r\n\t\t\ttracks.push( track );\r\n\r\n\t\t}\r\n\r\n\t\tclip.tracks = tracks;\r\n\r\n\t\t// find minimum .times value across all tracks in the trimmed clip\r\n\r\n\t\tlet minStartTime = Infinity;\r\n\r\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\r\n\r\n\t\t\tif ( minStartTime > clip.tracks[ i ].times[ 0 ] ) {\r\n\r\n\t\t\t\tminStartTime = clip.tracks[ i ].times[ 0 ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// shift all tracks such that clip begins at t=0\r\n\r\n\t\tfor ( let i = 0; i < clip.tracks.length; ++ i ) {\r\n\r\n\t\t\tclip.tracks[ i ].shift( - 1 * minStartTime );\r\n\r\n\t\t}\r\n\r\n\t\tclip.resetDuration();\r\n\r\n\t\treturn clip;\r\n\r\n\t},\r\n\r\n\tmakeClipAdditive: function ( targetClip, referenceFrame = 0, referenceClip = targetClip, fps = 30 ) {\r\n\r\n\t\tif ( fps <= 0 ) fps = 30;\r\n\r\n\t\tconst numTracks = referenceClip.tracks.length;\r\n\t\tconst referenceTime = referenceFrame / fps;\r\n\r\n\t\t// Make each track's values relative to the values at the reference frame\r\n\t\tfor ( let i = 0; i < numTracks; ++ i ) {\r\n\r\n\t\t\tconst referenceTrack = referenceClip.tracks[ i ];\r\n\t\t\tconst referenceTrackType = referenceTrack.ValueTypeName;\r\n\r\n\t\t\t// Skip this track if it's non-numeric\r\n\t\t\tif ( referenceTrackType === 'bool' || referenceTrackType === 'string' ) continue;\r\n\r\n\t\t\t// Find the track in the target clip whose name and type matches the reference track\r\n\t\t\tconst targetTrack = targetClip.tracks.find( function ( track ) {\r\n\r\n\t\t\t\treturn track.name === referenceTrack.name\r\n\t\t\t\t\t&& track.ValueTypeName === referenceTrackType;\r\n\r\n\t\t\t} );\r\n\r\n\t\t\tif ( targetTrack === undefined ) continue;\r\n\r\n\t\t\tlet referenceOffset = 0;\r\n\t\t\tconst referenceValueSize = referenceTrack.getValueSize();\r\n\r\n\t\t\tif ( referenceTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\r\n\r\n\t\t\t\treferenceOffset = referenceValueSize / 3;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tlet targetOffset = 0;\r\n\t\t\tconst targetValueSize = targetTrack.getValueSize();\r\n\r\n\t\t\tif ( targetTrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline ) {\r\n\r\n\t\t\t\ttargetOffset = targetValueSize / 3;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst lastIndex = referenceTrack.times.length - 1;\r\n\t\t\tlet referenceValue;\r\n\r\n\t\t\t// Find the value to subtract out of the track\r\n\t\t\tif ( referenceTime <= referenceTrack.times[ 0 ] ) {\r\n\r\n\t\t\t\t// Reference frame is earlier than the first keyframe, so just use the first keyframe\r\n\t\t\t\tconst startIndex = referenceOffset;\r\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\r\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\r\n\r\n\t\t\t} else if ( referenceTime >= referenceTrack.times[ lastIndex ] ) {\r\n\r\n\t\t\t\t// Reference frame is after the last keyframe, so just use the last keyframe\r\n\t\t\t\tconst startIndex = lastIndex * referenceValueSize + referenceOffset;\r\n\t\t\t\tconst endIndex = startIndex + referenceValueSize - referenceOffset;\r\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( referenceTrack.values, startIndex, endIndex );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Interpolate to the reference value\r\n\t\t\t\tconst interpolant = referenceTrack.createInterpolant();\r\n\t\t\t\tconst startIndex = referenceOffset;\r\n\t\t\t\tconst endIndex = referenceValueSize - referenceOffset;\r\n\t\t\t\tinterpolant.evaluate( referenceTime );\r\n\t\t\t\treferenceValue = AnimationUtils.arraySlice( interpolant.resultBuffer, startIndex, endIndex );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Conjugate the quaternion\r\n\t\t\tif ( referenceTrackType === 'quaternion' ) {\r\n\r\n\t\t\t\tconst referenceQuat = new Quaternion().fromArray( referenceValue ).normalize().conjugate();\r\n\t\t\t\treferenceQuat.toArray( referenceValue );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Subtract the reference value from all of the track values\r\n\r\n\t\t\tconst numTimes = targetTrack.times.length;\r\n\t\t\tfor ( let j = 0; j < numTimes; ++ j ) {\r\n\r\n\t\t\t\tconst valueStart = j * targetValueSize + targetOffset;\r\n\r\n\t\t\t\tif ( referenceTrackType === 'quaternion' ) {\r\n\r\n\t\t\t\t\t// Multiply the conjugate for quaternion track types\r\n\t\t\t\t\tQuaternion.multiplyQuaternionsFlat(\r\n\t\t\t\t\t\ttargetTrack.values,\r\n\t\t\t\t\t\tvalueStart,\r\n\t\t\t\t\t\treferenceValue,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\ttargetTrack.values,\r\n\t\t\t\t\t\tvalueStart\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconst valueEnd = targetValueSize - targetOffset * 2;\r\n\r\n\t\t\t\t\t// Subtract each value for all other numeric track types\r\n\t\t\t\t\tfor ( let k = 0; k < valueEnd; ++ k ) {\r\n\r\n\t\t\t\t\t\ttargetTrack.values[ valueStart + k ] -= referenceValue[ k ];\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ttargetClip.blendMode = AdditiveAnimationBlendMode;\r\n\r\n\t\treturn targetClip;\r\n\r\n\t}\r\n\r\n};\r\n\r\n/**\r\n * Abstract base class of interpolants over parametric samples.\r\n *\r\n * The parameter domain is one dimensional, typically the time or a path\r\n * along a curve defined by the data.\r\n *\r\n * The sample values can have any dimensionality and derived classes may\r\n * apply special interpretations to the data.\r\n *\r\n * This class provides the interval seek in a Template Method, deferring\r\n * the actual interpolation to derived classes.\r\n *\r\n * Time complexity is O(1) for linear access crossing at most two points\r\n * and O(log N) for random access, where N is the number of positions.\r\n *\r\n * References:\r\n *\r\n * \t\thttp://www.oodesign.com/template-method-pattern.html\r\n *\r\n */\r\n\r\nfunction Interpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\r\n\r\n\tthis.parameterPositions = parameterPositions;\r\n\tthis._cachedIndex = 0;\r\n\r\n\tthis.resultBuffer = resultBuffer !== undefined ?\r\n\t\tresultBuffer : new sampleValues.constructor( sampleSize );\r\n\tthis.sampleValues = sampleValues;\r\n\tthis.valueSize = sampleSize;\r\n\r\n}\r\n\r\nObject.assign( Interpolant.prototype, {\r\n\r\n\tevaluate: function ( t ) {\r\n\r\n\t\tconst pp = this.parameterPositions;\r\n\t\tlet i1 = this._cachedIndex,\r\n\t\t\tt1 = pp[ i1 ],\r\n\t\t\tt0 = pp[ i1 - 1 ];\r\n\r\n\t\tvalidate_interval: {\r\n\r\n\t\t\tseek: {\r\n\r\n\t\t\t\tlet right;\r\n\r\n\t\t\t\tlinear_scan: {\r\n\r\n\t\t\t\t\t//- See http://jsperf.com/comparison-to-undefined/3\r\n\t\t\t\t\t//- slower code:\r\n\t\t\t\t\t//-\r\n\t\t\t\t\t//- \t\t\t\tif ( t >= t1 || t1 === undefined ) {\r\n\t\t\t\t\tforward_scan: if ( ! ( t < t1 ) ) {\r\n\r\n\t\t\t\t\t\tfor ( let giveUpAt = i1 + 2; ; ) {\r\n\r\n\t\t\t\t\t\t\tif ( t1 === undefined ) {\r\n\r\n\t\t\t\t\t\t\t\tif ( t < t0 ) break forward_scan;\r\n\r\n\t\t\t\t\t\t\t\t// after end\r\n\r\n\t\t\t\t\t\t\t\ti1 = pp.length;\r\n\t\t\t\t\t\t\t\tthis._cachedIndex = i1;\r\n\t\t\t\t\t\t\t\treturn this.afterEnd_( i1 - 1, t, t0 );\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\r\n\r\n\t\t\t\t\t\t\tt0 = t1;\r\n\t\t\t\t\t\t\tt1 = pp[ ++ i1 ];\r\n\r\n\t\t\t\t\t\t\tif ( t < t1 ) {\r\n\r\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\r\n\t\t\t\t\t\t\t\tbreak seek;\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// prepare binary search on the right side of the index\r\n\t\t\t\t\t\tright = pp.length;\r\n\t\t\t\t\t\tbreak linear_scan;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//- slower code:\r\n\t\t\t\t\t//-\t\t\t\t\tif ( t < t0 || t0 === undefined ) {\r\n\t\t\t\t\tif ( ! ( t >= t0 ) ) {\r\n\r\n\t\t\t\t\t\t// looping?\r\n\r\n\t\t\t\t\t\tconst t1global = pp[ 1 ];\r\n\r\n\t\t\t\t\t\tif ( t < t1global ) {\r\n\r\n\t\t\t\t\t\t\ti1 = 2; // + 1, using the scan for the details\r\n\t\t\t\t\t\t\tt0 = t1global;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// linear reverse scan\r\n\r\n\t\t\t\t\t\tfor ( let giveUpAt = i1 - 2; ; ) {\r\n\r\n\t\t\t\t\t\t\tif ( t0 === undefined ) {\r\n\r\n\t\t\t\t\t\t\t\t// before start\r\n\r\n\t\t\t\t\t\t\t\tthis._cachedIndex = 0;\r\n\t\t\t\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\tif ( i1 === giveUpAt ) break; // this loop\r\n\r\n\t\t\t\t\t\t\tt1 = t0;\r\n\t\t\t\t\t\t\tt0 = pp[ -- i1 - 1 ];\r\n\r\n\t\t\t\t\t\t\tif ( t >= t0 ) {\r\n\r\n\t\t\t\t\t\t\t\t// we have arrived at the sought interval\r\n\t\t\t\t\t\t\t\tbreak seek;\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// prepare binary search on the left side of the index\r\n\t\t\t\t\t\tright = i1;\r\n\t\t\t\t\t\ti1 = 0;\r\n\t\t\t\t\t\tbreak linear_scan;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// the interval is valid\r\n\r\n\t\t\t\t\tbreak validate_interval;\r\n\r\n\t\t\t\t} // linear scan\r\n\r\n\t\t\t\t// binary search\r\n\r\n\t\t\t\twhile ( i1 < right ) {\r\n\r\n\t\t\t\t\tconst mid = ( i1 + right ) >>> 1;\r\n\r\n\t\t\t\t\tif ( t < pp[ mid ] ) {\r\n\r\n\t\t\t\t\t\tright = mid;\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\ti1 = mid + 1;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tt1 = pp[ i1 ];\r\n\t\t\t\tt0 = pp[ i1 - 1 ];\r\n\r\n\t\t\t\t// check boundary cases, again\r\n\r\n\t\t\t\tif ( t0 === undefined ) {\r\n\r\n\t\t\t\t\tthis._cachedIndex = 0;\r\n\t\t\t\t\treturn this.beforeStart_( 0, t, t1 );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( t1 === undefined ) {\r\n\r\n\t\t\t\t\ti1 = pp.length;\r\n\t\t\t\t\tthis._cachedIndex = i1;\r\n\t\t\t\t\treturn this.afterEnd_( i1 - 1, t0, t );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} // seek\r\n\r\n\t\t\tthis._cachedIndex = i1;\r\n\r\n\t\t\tthis.intervalChanged_( i1, t0, t1 );\r\n\r\n\t\t} // validate_interval\r\n\r\n\t\treturn this.interpolate_( i1, t0, t, t1 );\r\n\r\n\t},\r\n\r\n\tsettings: null, // optional, subclass-specific settings structure\r\n\t// Note: The indirection allows central control of many interpolants.\r\n\r\n\t// --- Protected interface\r\n\r\n\tDefaultSettings_: {},\r\n\r\n\tgetSettings_: function () {\r\n\r\n\t\treturn this.settings || this.DefaultSettings_;\r\n\r\n\t},\r\n\r\n\tcopySampleValue_: function ( index ) {\r\n\r\n\t\t// copies a sample value to the result buffer\r\n\r\n\t\tconst result = this.resultBuffer,\r\n\t\t\tvalues = this.sampleValues,\r\n\t\t\tstride = this.valueSize,\r\n\t\t\toffset = index * stride;\r\n\r\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\r\n\r\n\t\t\tresult[ i ] = values[ offset + i ];\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t},\r\n\r\n\t// Template methods for derived classes:\r\n\r\n\tinterpolate_: function ( /* i1, t0, t, t1 */ ) {\r\n\r\n\t\tthrow new Error( 'call to abstract method' );\r\n\t\t// implementations shall return this.resultBuffer\r\n\r\n\t},\r\n\r\n\tintervalChanged_: function ( /* i1, t0, t1 */ ) {\r\n\r\n\t\t// empty\r\n\r\n\t}\r\n\r\n} );\r\n\r\n// DECLARE ALIAS AFTER assign prototype\r\nObject.assign( Interpolant.prototype, {\r\n\r\n\t//( 0, t, t0 ), returns this.resultBuffer\r\n\tbeforeStart_: Interpolant.prototype.copySampleValue_,\r\n\r\n\t//( N-1, tN-1, t ), returns this.resultBuffer\r\n\tafterEnd_: Interpolant.prototype.copySampleValue_,\r\n\r\n} );\r\n\r\n/**\r\n * Fast and simple cubic spline interpolant.\r\n *\r\n * It was derived from a Hermitian construction setting the first derivative\r\n * at each sample position to the linear slope between neighboring positions\r\n * over their parameter interval.\r\n */\r\n\r\nfunction CubicInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\r\n\r\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\r\n\r\n\tthis._weightPrev = - 0;\r\n\tthis._offsetPrev = - 0;\r\n\tthis._weightNext = - 0;\r\n\tthis._offsetNext = - 0;\r\n\r\n}\r\n\r\nCubicInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\r\n\r\n\tconstructor: CubicInterpolant,\r\n\r\n\tDefaultSettings_: {\r\n\r\n\t\tendingStart: ZeroCurvatureEnding,\r\n\t\tendingEnd: ZeroCurvatureEnding\r\n\r\n\t},\r\n\r\n\tintervalChanged_: function ( i1, t0, t1 ) {\r\n\r\n\t\tconst pp = this.parameterPositions;\r\n\t\tlet iPrev = i1 - 2,\r\n\t\t\tiNext = i1 + 1,\r\n\r\n\t\t\ttPrev = pp[ iPrev ],\r\n\t\t\ttNext = pp[ iNext ];\r\n\r\n\t\tif ( tPrev === undefined ) {\r\n\r\n\t\t\tswitch ( this.getSettings_().endingStart ) {\r\n\r\n\t\t\t\tcase ZeroSlopeEnding:\r\n\r\n\t\t\t\t\t// f'(t0) = 0\r\n\t\t\t\t\tiPrev = i1;\r\n\t\t\t\t\ttPrev = 2 * t0 - t1;\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase WrapAroundEnding:\r\n\r\n\t\t\t\t\t// use the other end of the curve\r\n\t\t\t\t\tiPrev = pp.length - 2;\r\n\t\t\t\t\ttPrev = t0 + pp[ iPrev ] - pp[ iPrev + 1 ];\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault: // ZeroCurvatureEnding\r\n\r\n\t\t\t\t\t// f''(t0) = 0 a.k.a. Natural Spline\r\n\t\t\t\t\tiPrev = i1;\r\n\t\t\t\t\ttPrev = t1;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( tNext === undefined ) {\r\n\r\n\t\t\tswitch ( this.getSettings_().endingEnd ) {\r\n\r\n\t\t\t\tcase ZeroSlopeEnding:\r\n\r\n\t\t\t\t\t// f'(tN) = 0\r\n\t\t\t\t\tiNext = i1;\r\n\t\t\t\t\ttNext = 2 * t1 - t0;\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase WrapAroundEnding:\r\n\r\n\t\t\t\t\t// use the other end of the curve\r\n\t\t\t\t\tiNext = 1;\r\n\t\t\t\t\ttNext = t1 + pp[ 1 ] - pp[ 0 ];\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault: // ZeroCurvatureEnding\r\n\r\n\t\t\t\t\t// f''(tN) = 0, a.k.a. Natural Spline\r\n\t\t\t\t\tiNext = i1 - 1;\r\n\t\t\t\t\ttNext = t0;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst halfDt = ( t1 - t0 ) * 0.5,\r\n\t\t\tstride = this.valueSize;\r\n\r\n\t\tthis._weightPrev = halfDt / ( t0 - tPrev );\r\n\t\tthis._weightNext = halfDt / ( tNext - t1 );\r\n\t\tthis._offsetPrev = iPrev * stride;\r\n\t\tthis._offsetNext = iNext * stride;\r\n\r\n\t},\r\n\r\n\tinterpolate_: function ( i1, t0, t, t1 ) {\r\n\r\n\t\tconst result = this.resultBuffer,\r\n\t\t\tvalues = this.sampleValues,\r\n\t\t\tstride = this.valueSize,\r\n\r\n\t\t\to1 = i1 * stride,\t\to0 = o1 - stride,\r\n\t\t\toP = this._offsetPrev, \toN = this._offsetNext,\r\n\t\t\twP = this._weightPrev,\twN = this._weightNext,\r\n\r\n\t\t\tp = ( t - t0 ) / ( t1 - t0 ),\r\n\t\t\tpp = p * p,\r\n\t\t\tppp = pp * p;\r\n\r\n\t\t// evaluate polynomials\r\n\r\n\t\tconst sP = - wP * ppp + 2 * wP * pp - wP * p;\r\n\t\tconst s0 = ( 1 + wP ) * ppp + ( - 1.5 - 2 * wP ) * pp + ( - 0.5 + wP ) * p + 1;\r\n\t\tconst s1 = ( - 1 - wN ) * ppp + ( 1.5 + wN ) * pp + 0.5 * p;\r\n\t\tconst sN = wN * ppp - wN * pp;\r\n\r\n\t\t// combine data linearly\r\n\r\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\r\n\r\n\t\t\tresult[ i ] =\r\n\t\t\t\t\tsP * values[ oP + i ] +\r\n\t\t\t\t\ts0 * values[ o0 + i ] +\r\n\t\t\t\t\ts1 * values[ o1 + i ] +\r\n\t\t\t\t\tsN * values[ oN + i ];\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction LinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\r\n\r\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\r\n\r\n}\r\n\r\nLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\r\n\r\n\tconstructor: LinearInterpolant,\r\n\r\n\tinterpolate_: function ( i1, t0, t, t1 ) {\r\n\r\n\t\tconst result = this.resultBuffer,\r\n\t\t\tvalues = this.sampleValues,\r\n\t\t\tstride = this.valueSize,\r\n\r\n\t\t\toffset1 = i1 * stride,\r\n\t\t\toffset0 = offset1 - stride,\r\n\r\n\t\t\tweight1 = ( t - t0 ) / ( t1 - t0 ),\r\n\t\t\tweight0 = 1 - weight1;\r\n\r\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\r\n\r\n\t\t\tresult[ i ] =\r\n\t\t\t\t\tvalues[ offset0 + i ] * weight0 +\r\n\t\t\t\t\tvalues[ offset1 + i ] * weight1;\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n *\r\n * Interpolant that evaluates to the sample value at the position preceeding\r\n * the parameter.\r\n */\r\n\r\nfunction DiscreteInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\r\n\r\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\r\n\r\n}\r\n\r\nDiscreteInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\r\n\r\n\tconstructor: DiscreteInterpolant,\r\n\r\n\tinterpolate_: function ( i1 /*, t0, t, t1 */ ) {\r\n\r\n\t\treturn this.copySampleValue_( i1 - 1 );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction KeyframeTrack( name, times, values, interpolation ) {\r\n\r\n\tif ( name === undefined ) throw new Error( 'THREE.KeyframeTrack: track name is undefined' );\r\n\tif ( times === undefined || times.length === 0 ) throw new Error( 'THREE.KeyframeTrack: no keyframes in track named ' + name );\r\n\r\n\tthis.name = name;\r\n\r\n\tthis.times = AnimationUtils.convertArray( times, this.TimeBufferType );\r\n\tthis.values = AnimationUtils.convertArray( values, this.ValueBufferType );\r\n\r\n\tthis.setInterpolation( interpolation || this.DefaultInterpolation );\r\n\r\n}\r\n\r\n// Static methods\r\n\r\nObject.assign( KeyframeTrack, {\r\n\r\n\t// Serialization (in static context, because of constructor invocation\r\n\t// and automatic invocation of .toJSON):\r\n\r\n\ttoJSON: function ( track ) {\r\n\r\n\t\tconst trackType = track.constructor;\r\n\r\n\t\tlet json;\r\n\r\n\t\t// derived classes can define a static toJSON method\r\n\t\tif ( trackType.toJSON !== undefined ) {\r\n\r\n\t\t\tjson = trackType.toJSON( track );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// by default, we assume the data can be serialized as-is\r\n\t\t\tjson = {\r\n\r\n\t\t\t\t'name': track.name,\r\n\t\t\t\t'times': AnimationUtils.convertArray( track.times, Array ),\r\n\t\t\t\t'values': AnimationUtils.convertArray( track.values, Array )\r\n\r\n\t\t\t};\r\n\r\n\t\t\tconst interpolation = track.getInterpolation();\r\n\r\n\t\t\tif ( interpolation !== track.DefaultInterpolation ) {\r\n\r\n\t\t\t\tjson.interpolation = interpolation;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tjson.type = track.ValueTypeName; // mandatory\r\n\r\n\t\treturn json;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( KeyframeTrack.prototype, {\r\n\r\n\tconstructor: KeyframeTrack,\r\n\r\n\tTimeBufferType: Float32Array,\r\n\r\n\tValueBufferType: Float32Array,\r\n\r\n\tDefaultInterpolation: InterpolateLinear,\r\n\r\n\tInterpolantFactoryMethodDiscrete: function ( result ) {\r\n\r\n\t\treturn new DiscreteInterpolant( this.times, this.values, this.getValueSize(), result );\r\n\r\n\t},\r\n\r\n\tInterpolantFactoryMethodLinear: function ( result ) {\r\n\r\n\t\treturn new LinearInterpolant( this.times, this.values, this.getValueSize(), result );\r\n\r\n\t},\r\n\r\n\tInterpolantFactoryMethodSmooth: function ( result ) {\r\n\r\n\t\treturn new CubicInterpolant( this.times, this.values, this.getValueSize(), result );\r\n\r\n\t},\r\n\r\n\tsetInterpolation: function ( interpolation ) {\r\n\r\n\t\tlet factoryMethod;\r\n\r\n\t\tswitch ( interpolation ) {\r\n\r\n\t\t\tcase InterpolateDiscrete:\r\n\r\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodDiscrete;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase InterpolateLinear:\r\n\r\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodLinear;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase InterpolateSmooth:\r\n\r\n\t\t\t\tfactoryMethod = this.InterpolantFactoryMethodSmooth;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t}\r\n\r\n\t\tif ( factoryMethod === undefined ) {\r\n\r\n\t\t\tconst message = 'unsupported interpolation for ' +\r\n\t\t\t\tthis.ValueTypeName + ' keyframe track named ' + this.name;\r\n\r\n\t\t\tif ( this.createInterpolant === undefined ) {\r\n\r\n\t\t\t\t// fall back to default, unless the default itself is messed up\r\n\t\t\t\tif ( interpolation !== this.DefaultInterpolation ) {\r\n\r\n\t\t\t\t\tthis.setInterpolation( this.DefaultInterpolation );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthrow new Error( message ); // fatal, in this case\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconsole.warn( 'THREE.KeyframeTrack:', message );\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\tthis.createInterpolant = factoryMethod;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tgetInterpolation: function () {\r\n\r\n\t\tswitch ( this.createInterpolant ) {\r\n\r\n\t\t\tcase this.InterpolantFactoryMethodDiscrete:\r\n\r\n\t\t\t\treturn InterpolateDiscrete;\r\n\r\n\t\t\tcase this.InterpolantFactoryMethodLinear:\r\n\r\n\t\t\t\treturn InterpolateLinear;\r\n\r\n\t\t\tcase this.InterpolantFactoryMethodSmooth:\r\n\r\n\t\t\t\treturn InterpolateSmooth;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tgetValueSize: function () {\r\n\r\n\t\treturn this.values.length / this.times.length;\r\n\r\n\t},\r\n\r\n\t// move all keyframes either forwards or backwards in time\r\n\tshift: function ( timeOffset ) {\r\n\r\n\t\tif ( timeOffset !== 0.0 ) {\r\n\r\n\t\t\tconst times = this.times;\r\n\r\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\ttimes[ i ] += timeOffset;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\t// scale all keyframe times by a factor (useful for frame <-> seconds conversions)\r\n\tscale: function ( timeScale ) {\r\n\r\n\t\tif ( timeScale !== 1.0 ) {\r\n\r\n\t\t\tconst times = this.times;\r\n\r\n\t\t\tfor ( let i = 0, n = times.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\ttimes[ i ] *= timeScale;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\t// removes keyframes before and after animation without changing any values within the range [startTime, endTime].\r\n\t// IMPORTANT: We do not shift around keys to the start of the track time, because for interpolated keys this will change their values\r\n\ttrim: function ( startTime, endTime ) {\r\n\r\n\t\tconst times = this.times,\r\n\t\t\tnKeys = times.length;\r\n\r\n\t\tlet from = 0,\r\n\t\t\tto = nKeys - 1;\r\n\r\n\t\twhile ( from !== nKeys && times[ from ] < startTime ) {\r\n\r\n\t\t\t++ from;\r\n\r\n\t\t}\r\n\r\n\t\twhile ( to !== - 1 && times[ to ] > endTime ) {\r\n\r\n\t\t\t-- to;\r\n\r\n\t\t}\r\n\r\n\t\t++ to; // inclusive -> exclusive bound\r\n\r\n\t\tif ( from !== 0 || to !== nKeys ) {\r\n\r\n\t\t\t// empty tracks are forbidden, so keep at least one keyframe\r\n\t\t\tif ( from >= to ) {\r\n\r\n\t\t\t\tto = Math.max( to, 1 );\r\n\t\t\t\tfrom = to - 1;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst stride = this.getValueSize();\r\n\t\t\tthis.times = AnimationUtils.arraySlice( times, from, to );\r\n\t\t\tthis.values = AnimationUtils.arraySlice( this.values, from * stride, to * stride );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\t// ensure we do not get a GarbageInGarbageOut situation, make sure tracks are at least minimally viable\r\n\tvalidate: function () {\r\n\r\n\t\tlet valid = true;\r\n\r\n\t\tconst valueSize = this.getValueSize();\r\n\t\tif ( valueSize - Math.floor( valueSize ) !== 0 ) {\r\n\r\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Invalid value size in track.', this );\r\n\t\t\tvalid = false;\r\n\r\n\t\t}\r\n\r\n\t\tconst times = this.times,\r\n\t\t\tvalues = this.values,\r\n\r\n\t\t\tnKeys = times.length;\r\n\r\n\t\tif ( nKeys === 0 ) {\r\n\r\n\t\t\tconsole.error( 'THREE.KeyframeTrack: Track is empty.', this );\r\n\t\t\tvalid = false;\r\n\r\n\t\t}\r\n\r\n\t\tlet prevTime = null;\r\n\r\n\t\tfor ( let i = 0; i !== nKeys; i ++ ) {\r\n\r\n\t\t\tconst currTime = times[ i ];\r\n\r\n\t\t\tif ( typeof currTime === 'number' && isNaN( currTime ) ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Time is not a valid number.', this, i, currTime );\r\n\t\t\t\tvalid = false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( prevTime !== null && prevTime > currTime ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Out of order keys.', this, i, currTime, prevTime );\r\n\t\t\t\tvalid = false;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tprevTime = currTime;\r\n\r\n\t\t}\r\n\r\n\t\tif ( values !== undefined ) {\r\n\r\n\t\t\tif ( AnimationUtils.isTypedArray( values ) ) {\r\n\r\n\t\t\t\tfor ( let i = 0, n = values.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\t\tconst value = values[ i ];\r\n\r\n\t\t\t\t\tif ( isNaN( value ) ) {\r\n\r\n\t\t\t\t\t\tconsole.error( 'THREE.KeyframeTrack: Value is not a valid number.', this, i, value );\r\n\t\t\t\t\t\tvalid = false;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\r\n\t},\r\n\r\n\t// removes equivalent sequential keys as common in morph target sequences\r\n\t// (0,0,0,0,1,1,1,0,0,0,0,0,0,0) --> (0,0,1,1,0,0)\r\n\toptimize: function () {\r\n\r\n\t\t// times or values may be shared with other tracks, so overwriting is unsafe\r\n\t\tconst times = AnimationUtils.arraySlice( this.times ),\r\n\t\t\tvalues = AnimationUtils.arraySlice( this.values ),\r\n\t\t\tstride = this.getValueSize(),\r\n\r\n\t\t\tsmoothInterpolation = this.getInterpolation() === InterpolateSmooth,\r\n\r\n\t\t\tlastIndex = times.length - 1;\r\n\r\n\t\tlet writeIndex = 1;\r\n\r\n\t\tfor ( let i = 1; i < lastIndex; ++ i ) {\r\n\r\n\t\t\tlet keep = false;\r\n\r\n\t\t\tconst time = times[ i ];\r\n\t\t\tconst timeNext = times[ i + 1 ];\r\n\r\n\t\t\t// remove adjacent keyframes scheduled at the same time\r\n\r\n\t\t\tif ( time !== timeNext && ( i !== 1 || time !== time[ 0 ] ) ) {\r\n\r\n\t\t\t\tif ( ! smoothInterpolation ) {\r\n\r\n\t\t\t\t\t// remove unnecessary keyframes same as their neighbors\r\n\r\n\t\t\t\t\tconst offset = i * stride,\r\n\t\t\t\t\t\toffsetP = offset - stride,\r\n\t\t\t\t\t\toffsetN = offset + stride;\r\n\r\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\r\n\r\n\t\t\t\t\t\tconst value = values[ offset + j ];\r\n\r\n\t\t\t\t\t\tif ( value !== values[ offsetP + j ] ||\r\n\t\t\t\t\t\t\tvalue !== values[ offsetN + j ] ) {\r\n\r\n\t\t\t\t\t\t\tkeep = true;\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tkeep = true;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// in-place compaction\r\n\r\n\t\t\tif ( keep ) {\r\n\r\n\t\t\t\tif ( i !== writeIndex ) {\r\n\r\n\t\t\t\t\ttimes[ writeIndex ] = times[ i ];\r\n\r\n\t\t\t\t\tconst readOffset = i * stride,\r\n\t\t\t\t\t\twriteOffset = writeIndex * stride;\r\n\r\n\t\t\t\t\tfor ( let j = 0; j !== stride; ++ j ) {\r\n\r\n\t\t\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t++ writeIndex;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// flush last keyframe (compaction looks ahead)\r\n\r\n\t\tif ( lastIndex > 0 ) {\r\n\r\n\t\t\ttimes[ writeIndex ] = times[ lastIndex ];\r\n\r\n\t\t\tfor ( let readOffset = lastIndex * stride, writeOffset = writeIndex * stride, j = 0; j !== stride; ++ j ) {\r\n\r\n\t\t\t\tvalues[ writeOffset + j ] = values[ readOffset + j ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\t++ writeIndex;\r\n\r\n\t\t}\r\n\r\n\t\tif ( writeIndex !== times.length ) {\r\n\r\n\t\t\tthis.times = AnimationUtils.arraySlice( times, 0, writeIndex );\r\n\t\t\tthis.values = AnimationUtils.arraySlice( values, 0, writeIndex * stride );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.times = times;\r\n\t\t\tthis.values = values;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\tconst times = AnimationUtils.arraySlice( this.times, 0 );\r\n\t\tconst values = AnimationUtils.arraySlice( this.values, 0 );\r\n\r\n\t\tconst TypedKeyframeTrack = this.constructor;\r\n\t\tconst track = new TypedKeyframeTrack( this.name, times, values );\r\n\r\n\t\t// Interpolant argument to constructor is not saved, so copy the factory method directly.\r\n\t\ttrack.createInterpolant = this.createInterpolant;\r\n\r\n\t\treturn track;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * A Track of Boolean keyframe values.\r\n */\r\n\r\nfunction BooleanKeyframeTrack( name, times, values ) {\r\n\r\n\tKeyframeTrack.call( this, name, times, values );\r\n\r\n}\r\n\r\nBooleanKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\r\n\r\n\tconstructor: BooleanKeyframeTrack,\r\n\r\n\tValueTypeName: 'bool',\r\n\tValueBufferType: Array,\r\n\r\n\tDefaultInterpolation: InterpolateDiscrete,\r\n\r\n\tInterpolantFactoryMethodLinear: undefined,\r\n\tInterpolantFactoryMethodSmooth: undefined\r\n\r\n\t// Note: Actually this track could have a optimized / compressed\r\n\t// representation of a single value and a custom interpolant that\r\n\t// computes \"firstValue ^ isOdd( index )\".\r\n\r\n} );\r\n\r\n/**\r\n * A Track of keyframe values that represent color.\r\n */\r\n\r\nfunction ColorKeyframeTrack( name, times, values, interpolation ) {\r\n\r\n\tKeyframeTrack.call( this, name, times, values, interpolation );\r\n\r\n}\r\n\r\nColorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\r\n\r\n\tconstructor: ColorKeyframeTrack,\r\n\r\n\tValueTypeName: 'color'\r\n\r\n\t// ValueBufferType is inherited\r\n\r\n\t// DefaultInterpolation is inherited\r\n\r\n\t// Note: Very basic implementation and nothing special yet.\r\n\t// However, this is the place for color space parameterization.\r\n\r\n} );\r\n\r\n/**\r\n * A Track of numeric keyframe values.\r\n */\r\n\r\nfunction NumberKeyframeTrack( name, times, values, interpolation ) {\r\n\r\n\tKeyframeTrack.call( this, name, times, values, interpolation );\r\n\r\n}\r\n\r\nNumberKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\r\n\r\n\tconstructor: NumberKeyframeTrack,\r\n\r\n\tValueTypeName: 'number'\r\n\r\n\t// ValueBufferType is inherited\r\n\r\n\t// DefaultInterpolation is inherited\r\n\r\n} );\r\n\r\n/**\r\n * Spherical linear unit quaternion interpolant.\r\n */\r\n\r\nfunction QuaternionLinearInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\r\n\r\n\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\r\n\r\n}\r\n\r\nQuaternionLinearInterpolant.prototype = Object.assign( Object.create( Interpolant.prototype ), {\r\n\r\n\tconstructor: QuaternionLinearInterpolant,\r\n\r\n\tinterpolate_: function ( i1, t0, t, t1 ) {\r\n\r\n\t\tconst result = this.resultBuffer,\r\n\t\t\tvalues = this.sampleValues,\r\n\t\t\tstride = this.valueSize,\r\n\r\n\t\t\talpha = ( t - t0 ) / ( t1 - t0 );\r\n\r\n\t\tlet offset = i1 * stride;\r\n\r\n\t\tfor ( let end = offset + stride; offset !== end; offset += 4 ) {\r\n\r\n\t\t\tQuaternion.slerpFlat( result, 0, values, offset - stride, values, offset, alpha );\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * A Track of quaternion keyframe values.\r\n */\r\n\r\nfunction QuaternionKeyframeTrack( name, times, values, interpolation ) {\r\n\r\n\tKeyframeTrack.call( this, name, times, values, interpolation );\r\n\r\n}\r\n\r\nQuaternionKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\r\n\r\n\tconstructor: QuaternionKeyframeTrack,\r\n\r\n\tValueTypeName: 'quaternion',\r\n\r\n\t// ValueBufferType is inherited\r\n\r\n\tDefaultInterpolation: InterpolateLinear,\r\n\r\n\tInterpolantFactoryMethodLinear: function ( result ) {\r\n\r\n\t\treturn new QuaternionLinearInterpolant( this.times, this.values, this.getValueSize(), result );\r\n\r\n\t},\r\n\r\n\tInterpolantFactoryMethodSmooth: undefined // not yet implemented\r\n\r\n} );\r\n\r\n/**\r\n * A Track that interpolates Strings\r\n */\r\n\r\nfunction StringKeyframeTrack( name, times, values, interpolation ) {\r\n\r\n\tKeyframeTrack.call( this, name, times, values, interpolation );\r\n\r\n}\r\n\r\nStringKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\r\n\r\n\tconstructor: StringKeyframeTrack,\r\n\r\n\tValueTypeName: 'string',\r\n\tValueBufferType: Array,\r\n\r\n\tDefaultInterpolation: InterpolateDiscrete,\r\n\r\n\tInterpolantFactoryMethodLinear: undefined,\r\n\r\n\tInterpolantFactoryMethodSmooth: undefined\r\n\r\n} );\r\n\r\n/**\r\n * A Track of vectored keyframe values.\r\n */\r\n\r\nfunction VectorKeyframeTrack( name, times, values, interpolation ) {\r\n\r\n\tKeyframeTrack.call( this, name, times, values, interpolation );\r\n\r\n}\r\n\r\nVectorKeyframeTrack.prototype = Object.assign( Object.create( KeyframeTrack.prototype ), {\r\n\r\n\tconstructor: VectorKeyframeTrack,\r\n\r\n\tValueTypeName: 'vector'\r\n\r\n\t// ValueBufferType is inherited\r\n\r\n\t// DefaultInterpolation is inherited\r\n\r\n} );\r\n\r\nfunction AnimationClip( name, duration = - 1, tracks, blendMode = NormalAnimationBlendMode ) {\r\n\r\n\tthis.name = name;\r\n\tthis.tracks = tracks;\r\n\tthis.duration = duration;\r\n\tthis.blendMode = blendMode;\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n\t// this means it should figure out its duration by scanning the tracks\r\n\tif ( this.duration < 0 ) {\r\n\r\n\t\tthis.resetDuration();\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction getTrackTypeForValueTypeName( typeName ) {\r\n\r\n\tswitch ( typeName.toLowerCase() ) {\r\n\r\n\t\tcase 'scalar':\r\n\t\tcase 'double':\r\n\t\tcase 'float':\r\n\t\tcase 'number':\r\n\t\tcase 'integer':\r\n\r\n\t\t\treturn NumberKeyframeTrack;\r\n\r\n\t\tcase 'vector':\r\n\t\tcase 'vector2':\r\n\t\tcase 'vector3':\r\n\t\tcase 'vector4':\r\n\r\n\t\t\treturn VectorKeyframeTrack;\r\n\r\n\t\tcase 'color':\r\n\r\n\t\t\treturn ColorKeyframeTrack;\r\n\r\n\t\tcase 'quaternion':\r\n\r\n\t\t\treturn QuaternionKeyframeTrack;\r\n\r\n\t\tcase 'bool':\r\n\t\tcase 'boolean':\r\n\r\n\t\t\treturn BooleanKeyframeTrack;\r\n\r\n\t\tcase 'string':\r\n\r\n\t\t\treturn StringKeyframeTrack;\r\n\r\n\t}\r\n\r\n\tthrow new Error( 'THREE.KeyframeTrack: Unsupported typeName: ' + typeName );\r\n\r\n}\r\n\r\nfunction parseKeyframeTrack( json ) {\r\n\r\n\tif ( json.type === undefined ) {\r\n\r\n\t\tthrow new Error( 'THREE.KeyframeTrack: track type undefined, can not parse' );\r\n\r\n\t}\r\n\r\n\tconst trackType = getTrackTypeForValueTypeName( json.type );\r\n\r\n\tif ( json.times === undefined ) {\r\n\r\n\t\tconst times = [], values = [];\r\n\r\n\t\tAnimationUtils.flattenJSON( json.keys, times, values, 'value' );\r\n\r\n\t\tjson.times = times;\r\n\t\tjson.values = values;\r\n\r\n\t}\r\n\r\n\t// derived classes can define a static parse method\r\n\tif ( trackType.parse !== undefined ) {\r\n\r\n\t\treturn trackType.parse( json );\r\n\r\n\t} else {\r\n\r\n\t\t// by default, we assume a constructor compatible with the base\r\n\t\treturn new trackType( json.name, json.times, json.values, json.interpolation );\r\n\r\n\t}\r\n\r\n}\r\n\r\nObject.assign( AnimationClip, {\r\n\r\n\tparse: function ( json ) {\r\n\r\n\t\tconst tracks = [],\r\n\t\t\tjsonTracks = json.tracks,\r\n\t\t\tframeTime = 1.0 / ( json.fps || 1.0 );\r\n\r\n\t\tfor ( let i = 0, n = jsonTracks.length; i !== n; ++ i ) {\r\n\r\n\t\t\ttracks.push( parseKeyframeTrack( jsonTracks[ i ] ).scale( frameTime ) );\r\n\r\n\t\t}\r\n\r\n\t\tconst clip = new AnimationClip( json.name, json.duration, tracks, json.blendMode );\r\n\t\tclip.uuid = json.uuid;\r\n\r\n\t\treturn clip;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( clip ) {\r\n\r\n\t\tconst tracks = [],\r\n\t\t\tclipTracks = clip.tracks;\r\n\r\n\t\tconst json = {\r\n\r\n\t\t\t'name': clip.name,\r\n\t\t\t'duration': clip.duration,\r\n\t\t\t'tracks': tracks,\r\n\t\t\t'uuid': clip.uuid,\r\n\t\t\t'blendMode': clip.blendMode\r\n\r\n\t\t};\r\n\r\n\t\tfor ( let i = 0, n = clipTracks.length; i !== n; ++ i ) {\r\n\r\n\t\t\ttracks.push( KeyframeTrack.toJSON( clipTracks[ i ] ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn json;\r\n\r\n\t},\r\n\r\n\tCreateFromMorphTargetSequence: function ( name, morphTargetSequence, fps, noLoop ) {\r\n\r\n\t\tconst numMorphTargets = morphTargetSequence.length;\r\n\t\tconst tracks = [];\r\n\r\n\t\tfor ( let i = 0; i < numMorphTargets; i ++ ) {\r\n\r\n\t\t\tlet times = [];\r\n\t\t\tlet values = [];\r\n\r\n\t\t\ttimes.push(\r\n\t\t\t\t( i + numMorphTargets - 1 ) % numMorphTargets,\r\n\t\t\t\ti,\r\n\t\t\t\t( i + 1 ) % numMorphTargets );\r\n\r\n\t\t\tvalues.push( 0, 1, 0 );\r\n\r\n\t\t\tconst order = AnimationUtils.getKeyframeOrder( times );\r\n\t\t\ttimes = AnimationUtils.sortedArray( times, 1, order );\r\n\t\t\tvalues = AnimationUtils.sortedArray( values, 1, order );\r\n\r\n\t\t\t// if there is a key at the first frame, duplicate it as the\r\n\t\t\t// last frame as well for perfect loop.\r\n\t\t\tif ( ! noLoop && times[ 0 ] === 0 ) {\r\n\r\n\t\t\t\ttimes.push( numMorphTargets );\r\n\t\t\t\tvalues.push( values[ 0 ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttracks.push(\r\n\t\t\t\tnew NumberKeyframeTrack(\r\n\t\t\t\t\t'.morphTargetInfluences[' + morphTargetSequence[ i ].name + ']',\r\n\t\t\t\t\ttimes, values\r\n\t\t\t\t).scale( 1.0 / fps ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn new AnimationClip( name, - 1, tracks );\r\n\r\n\t},\r\n\r\n\tfindByName: function ( objectOrClipArray, name ) {\r\n\r\n\t\tlet clipArray = objectOrClipArray;\r\n\r\n\t\tif ( ! Array.isArray( objectOrClipArray ) ) {\r\n\r\n\t\t\tconst o = objectOrClipArray;\r\n\t\t\tclipArray = o.geometry && o.geometry.animations || o.animations;\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0; i < clipArray.length; i ++ ) {\r\n\r\n\t\t\tif ( clipArray[ i ].name === name ) {\r\n\r\n\t\t\t\treturn clipArray[ i ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\r\n\t},\r\n\r\n\tCreateClipsFromMorphTargetSequences: function ( morphTargets, fps, noLoop ) {\r\n\r\n\t\tconst animationToMorphTargets = {};\r\n\r\n\t\t// tested with https://regex101.com/ on trick sequences\r\n\t\t// such flamingo_flyA_003, flamingo_run1_003, crdeath0059\r\n\t\tconst pattern = /^([\\w-]*?)([\\d]+)$/;\r\n\r\n\t\t// sort morph target names into animation groups based\r\n\t\t// patterns like Walk_001, Walk_002, Run_001, Run_002\r\n\t\tfor ( let i = 0, il = morphTargets.length; i < il; i ++ ) {\r\n\r\n\t\t\tconst morphTarget = morphTargets[ i ];\r\n\t\t\tconst parts = morphTarget.name.match( pattern );\r\n\r\n\t\t\tif ( parts && parts.length > 1 ) {\r\n\r\n\t\t\t\tconst name = parts[ 1 ];\r\n\r\n\t\t\t\tlet animationMorphTargets = animationToMorphTargets[ name ];\r\n\r\n\t\t\t\tif ( ! animationMorphTargets ) {\r\n\r\n\t\t\t\t\tanimationToMorphTargets[ name ] = animationMorphTargets = [];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tanimationMorphTargets.push( morphTarget );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst clips = [];\r\n\r\n\t\tfor ( const name in animationToMorphTargets ) {\r\n\r\n\t\t\tclips.push( AnimationClip.CreateFromMorphTargetSequence( name, animationToMorphTargets[ name ], fps, noLoop ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn clips;\r\n\r\n\t},\r\n\r\n\t// parse the animation.hierarchy format\r\n\tparseAnimation: function ( animation, bones ) {\r\n\r\n\t\tif ( ! animation ) {\r\n\r\n\t\t\tconsole.error( 'THREE.AnimationClip: No animation in JSONLoader data.' );\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\tconst addNonemptyTrack = function ( trackType, trackName, animationKeys, propertyName, destTracks ) {\r\n\r\n\t\t\t// only return track if there are actually keys.\r\n\t\t\tif ( animationKeys.length !== 0 ) {\r\n\r\n\t\t\t\tconst times = [];\r\n\t\t\t\tconst values = [];\r\n\r\n\t\t\t\tAnimationUtils.flattenJSON( animationKeys, times, values, propertyName );\r\n\r\n\t\t\t\t// empty keys are filtered out, so check again\r\n\t\t\t\tif ( times.length !== 0 ) {\r\n\r\n\t\t\t\t\tdestTracks.push( new trackType( trackName, times, values ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t\tconst tracks = [];\r\n\r\n\t\tconst clipName = animation.name || 'default';\r\n\t\tconst fps = animation.fps || 30;\r\n\t\tconst blendMode = animation.blendMode;\r\n\r\n\t\t// automatic length determination in AnimationClip.\r\n\t\tlet duration = animation.length || - 1;\r\n\r\n\t\tconst hierarchyTracks = animation.hierarchy || [];\r\n\r\n\t\tfor ( let h = 0; h < hierarchyTracks.length; h ++ ) {\r\n\r\n\t\t\tconst animationKeys = hierarchyTracks[ h ].keys;\r\n\r\n\t\t\t// skip empty tracks\r\n\t\t\tif ( ! animationKeys || animationKeys.length === 0 ) continue;\r\n\r\n\t\t\t// process morph targets\r\n\t\t\tif ( animationKeys[ 0 ].morphTargets ) {\r\n\r\n\t\t\t\t// figure out all morph targets used in this track\r\n\t\t\t\tconst morphTargetNames = {};\r\n\r\n\t\t\t\tlet k;\r\n\r\n\t\t\t\tfor ( k = 0; k < animationKeys.length; k ++ ) {\r\n\r\n\t\t\t\t\tif ( animationKeys[ k ].morphTargets ) {\r\n\r\n\t\t\t\t\t\tfor ( let m = 0; m < animationKeys[ k ].morphTargets.length; m ++ ) {\r\n\r\n\t\t\t\t\t\t\tmorphTargetNames[ animationKeys[ k ].morphTargets[ m ] ] = - 1;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// create a track for each morph target with all zero\r\n\t\t\t\t// morphTargetInfluences except for the keys in which\r\n\t\t\t\t// the morphTarget is named.\r\n\t\t\t\tfor ( const morphTargetName in morphTargetNames ) {\r\n\r\n\t\t\t\t\tconst times = [];\r\n\t\t\t\t\tconst values = [];\r\n\r\n\t\t\t\t\tfor ( let m = 0; m !== animationKeys[ k ].morphTargets.length; ++ m ) {\r\n\r\n\t\t\t\t\t\tconst animationKey = animationKeys[ k ];\r\n\r\n\t\t\t\t\t\ttimes.push( animationKey.time );\r\n\t\t\t\t\t\tvalues.push( ( animationKey.morphTarget === morphTargetName ) ? 1 : 0 );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttracks.push( new NumberKeyframeTrack( '.morphTargetInfluence[' + morphTargetName + ']', times, values ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tduration = morphTargetNames.length * ( fps || 1.0 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// ...assume skeletal animation\r\n\r\n\t\t\t\tconst boneName = '.bones[' + bones[ h ].name + ']';\r\n\r\n\t\t\t\taddNonemptyTrack(\r\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.position',\r\n\t\t\t\t\tanimationKeys, 'pos', tracks );\r\n\r\n\t\t\t\taddNonemptyTrack(\r\n\t\t\t\t\tQuaternionKeyframeTrack, boneName + '.quaternion',\r\n\t\t\t\t\tanimationKeys, 'rot', tracks );\r\n\r\n\t\t\t\taddNonemptyTrack(\r\n\t\t\t\t\tVectorKeyframeTrack, boneName + '.scale',\r\n\t\t\t\t\tanimationKeys, 'scl', tracks );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( tracks.length === 0 ) {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\tconst clip = new AnimationClip( clipName, duration, tracks, blendMode );\r\n\r\n\t\treturn clip;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( AnimationClip.prototype, {\r\n\r\n\tresetDuration: function () {\r\n\r\n\t\tconst tracks = this.tracks;\r\n\t\tlet duration = 0;\r\n\r\n\t\tfor ( let i = 0, n = tracks.length; i !== n; ++ i ) {\r\n\r\n\t\t\tconst track = this.tracks[ i ];\r\n\r\n\t\t\tduration = Math.max( duration, track.times[ track.times.length - 1 ] );\r\n\r\n\t\t}\r\n\r\n\t\tthis.duration = duration;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttrim: function () {\r\n\r\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\r\n\r\n\t\t\tthis.tracks[ i ].trim( 0, this.duration );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tvalidate: function () {\r\n\r\n\t\tlet valid = true;\r\n\r\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\r\n\r\n\t\t\tvalid = valid && this.tracks[ i ].validate();\r\n\r\n\t\t}\r\n\r\n\t\treturn valid;\r\n\r\n\t},\r\n\r\n\toptimize: function () {\r\n\r\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\r\n\r\n\t\t\tthis.tracks[ i ].optimize();\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\tconst tracks = [];\r\n\r\n\t\tfor ( let i = 0; i < this.tracks.length; i ++ ) {\r\n\r\n\t\t\ttracks.push( this.tracks[ i ].clone() );\r\n\r\n\t\t}\r\n\r\n\t\treturn new AnimationClip( this.name, this.duration, tracks, this.blendMode );\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\treturn AnimationClip.toJSON( this );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst Cache = {\r\n\r\n\tenabled: false,\r\n\r\n\tfiles: {},\r\n\r\n\tadd: function ( key, file ) {\r\n\r\n\t\tif ( this.enabled === false ) return;\r\n\r\n\t\t// console.log( 'THREE.Cache', 'Adding key:', key );\r\n\r\n\t\tthis.files[ key ] = file;\r\n\r\n\t},\r\n\r\n\tget: function ( key ) {\r\n\r\n\t\tif ( this.enabled === false ) return;\r\n\r\n\t\t// console.log( 'THREE.Cache', 'Checking key:', key );\r\n\r\n\t\treturn this.files[ key ];\r\n\r\n\t},\r\n\r\n\tremove: function ( key ) {\r\n\r\n\t\tdelete this.files[ key ];\r\n\r\n\t},\r\n\r\n\tclear: function () {\r\n\r\n\t\tthis.files = {};\r\n\r\n\t}\r\n\r\n};\r\n\r\nfunction LoadingManager( onLoad, onProgress, onError ) {\r\n\r\n\tconst scope = this;\r\n\r\n\tlet isLoading = false;\r\n\tlet itemsLoaded = 0;\r\n\tlet itemsTotal = 0;\r\n\tlet urlModifier = undefined;\r\n\tconst handlers = [];\r\n\r\n\t// Refer to #5689 for the reason why we don't set .onStart\r\n\t// in the constructor\r\n\r\n\tthis.onStart = undefined;\r\n\tthis.onLoad = onLoad;\r\n\tthis.onProgress = onProgress;\r\n\tthis.onError = onError;\r\n\r\n\tthis.itemStart = function ( url ) {\r\n\r\n\t\titemsTotal ++;\r\n\r\n\t\tif ( isLoading === false ) {\r\n\r\n\t\t\tif ( scope.onStart !== undefined ) {\r\n\r\n\t\t\t\tscope.onStart( url, itemsLoaded, itemsTotal );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tisLoading = true;\r\n\r\n\t};\r\n\r\n\tthis.itemEnd = function ( url ) {\r\n\r\n\t\titemsLoaded ++;\r\n\r\n\t\tif ( scope.onProgress !== undefined ) {\r\n\r\n\t\t\tscope.onProgress( url, itemsLoaded, itemsTotal );\r\n\r\n\t\t}\r\n\r\n\t\tif ( itemsLoaded === itemsTotal ) {\r\n\r\n\t\t\tisLoading = false;\r\n\r\n\t\t\tif ( scope.onLoad !== undefined ) {\r\n\r\n\t\t\t\tscope.onLoad();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tthis.itemError = function ( url ) {\r\n\r\n\t\tif ( scope.onError !== undefined ) {\r\n\r\n\t\t\tscope.onError( url );\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tthis.resolveURL = function ( url ) {\r\n\r\n\t\tif ( urlModifier ) {\r\n\r\n\t\t\treturn urlModifier( url );\r\n\r\n\t\t}\r\n\r\n\t\treturn url;\r\n\r\n\t};\r\n\r\n\tthis.setURLModifier = function ( transform ) {\r\n\r\n\t\turlModifier = transform;\r\n\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.addHandler = function ( regex, loader ) {\r\n\r\n\t\thandlers.push( regex, loader );\r\n\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.removeHandler = function ( regex ) {\r\n\r\n\t\tconst index = handlers.indexOf( regex );\r\n\r\n\t\tif ( index !== - 1 ) {\r\n\r\n\t\t\thandlers.splice( index, 2 );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tthis.getHandler = function ( file ) {\r\n\r\n\t\tfor ( let i = 0, l = handlers.length; i < l; i += 2 ) {\r\n\r\n\t\t\tconst regex = handlers[ i ];\r\n\t\t\tconst loader = handlers[ i + 1 ];\r\n\r\n\t\t\tif ( regex.global ) regex.lastIndex = 0; // see #17920\r\n\r\n\t\t\tif ( regex.test( file ) ) {\r\n\r\n\t\t\t\treturn loader;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\r\n\t};\r\n\r\n}\r\n\r\nconst DefaultLoadingManager = new LoadingManager();\r\n\r\nfunction Loader( manager ) {\r\n\r\n\tthis.manager = ( manager !== undefined ) ? manager : DefaultLoadingManager;\r\n\r\n\tthis.crossOrigin = 'anonymous';\r\n\tthis.withCredentials = false;\r\n\tthis.path = '';\r\n\tthis.resourcePath = '';\r\n\tthis.requestHeader = {};\r\n\r\n}\r\n\r\nObject.assign( Loader.prototype, {\r\n\r\n\tload: function ( /* url, onLoad, onProgress, onError */ ) {},\r\n\r\n\tloadAsync: function ( url, onProgress ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\treturn new Promise( function ( resolve, reject ) {\r\n\r\n\t\t\tscope.load( url, resolve, onProgress, reject );\r\n\r\n\t\t} );\r\n\r\n\t},\r\n\r\n\tparse: function ( /* data */ ) {},\r\n\r\n\tsetCrossOrigin: function ( crossOrigin ) {\r\n\r\n\t\tthis.crossOrigin = crossOrigin;\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetWithCredentials: function ( value ) {\r\n\r\n\t\tthis.withCredentials = value;\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetPath: function ( path ) {\r\n\r\n\t\tthis.path = path;\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetResourcePath: function ( resourcePath ) {\r\n\r\n\t\tthis.resourcePath = resourcePath;\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetRequestHeader: function ( requestHeader ) {\r\n\r\n\t\tthis.requestHeader = requestHeader;\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst loading = {};\r\n\r\nfunction FileLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nFileLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: FileLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tif ( url === undefined ) url = '';\r\n\r\n\t\tif ( this.path !== undefined ) url = this.path + url;\r\n\r\n\t\turl = this.manager.resolveURL( url );\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst cached = Cache.get( url );\r\n\r\n\t\tif ( cached !== undefined ) {\r\n\r\n\t\t\tscope.manager.itemStart( url );\r\n\r\n\t\t\tsetTimeout( function () {\r\n\r\n\t\t\t\tif ( onLoad ) onLoad( cached );\r\n\r\n\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t}, 0 );\r\n\r\n\t\t\treturn cached;\r\n\r\n\t\t}\r\n\r\n\t\t// Check if request is duplicate\r\n\r\n\t\tif ( loading[ url ] !== undefined ) {\r\n\r\n\t\t\tloading[ url ].push( {\r\n\r\n\t\t\t\tonLoad: onLoad,\r\n\t\t\t\tonProgress: onProgress,\r\n\t\t\t\tonError: onError\r\n\r\n\t\t\t} );\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\t// Check for data: URI\r\n\t\tconst dataUriRegex = /^data:(.*?)(;base64)?,(.*)$/;\r\n\t\tconst dataUriRegexResult = url.match( dataUriRegex );\r\n\t\tlet request;\r\n\r\n\t\t// Safari can not handle Data URIs through XMLHttpRequest so process manually\r\n\t\tif ( dataUriRegexResult ) {\r\n\r\n\t\t\tconst mimeType = dataUriRegexResult[ 1 ];\r\n\t\t\tconst isBase64 = !! dataUriRegexResult[ 2 ];\r\n\r\n\t\t\tlet data = dataUriRegexResult[ 3 ];\r\n\t\t\tdata = decodeURIComponent( data );\r\n\r\n\t\t\tif ( isBase64 ) data = atob( data );\r\n\r\n\t\t\ttry {\r\n\r\n\t\t\t\tlet response;\r\n\t\t\t\tconst responseType = ( this.responseType || '' ).toLowerCase();\r\n\r\n\t\t\t\tswitch ( responseType ) {\r\n\r\n\t\t\t\t\tcase 'arraybuffer':\r\n\t\t\t\t\tcase 'blob':\r\n\r\n\t\t\t\t\t\tconst view = new Uint8Array( data.length );\r\n\r\n\t\t\t\t\t\tfor ( let i = 0; i < data.length; i ++ ) {\r\n\r\n\t\t\t\t\t\t\tview[ i ] = data.charCodeAt( i );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif ( responseType === 'blob' ) {\r\n\r\n\t\t\t\t\t\t\tresponse = new Blob( [ view.buffer ], { type: mimeType } );\r\n\r\n\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\tresponse = view.buffer;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'document':\r\n\r\n\t\t\t\t\t\tconst parser = new DOMParser();\r\n\t\t\t\t\t\tresponse = parser.parseFromString( data, mimeType );\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'json':\r\n\r\n\t\t\t\t\t\tresponse = JSON.parse( data );\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault: // 'text' or other\r\n\r\n\t\t\t\t\t\tresponse = data;\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\r\n\t\t\t\tsetTimeout( function () {\r\n\r\n\t\t\t\t\tif ( onLoad ) onLoad( response );\r\n\r\n\t\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t\t}, 0 );\r\n\r\n\t\t\t} catch ( error ) {\r\n\r\n\t\t\t\t// Wait for next browser tick like standard XMLHttpRequest event dispatching does\r\n\t\t\t\tsetTimeout( function () {\r\n\r\n\t\t\t\t\tif ( onError ) onError( error );\r\n\r\n\t\t\t\t\tscope.manager.itemError( url );\r\n\t\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t\t}, 0 );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Initialise array for duplicate requests\r\n\r\n\t\t\tloading[ url ] = [];\r\n\r\n\t\t\tloading[ url ].push( {\r\n\r\n\t\t\t\tonLoad: onLoad,\r\n\t\t\t\tonProgress: onProgress,\r\n\t\t\t\tonError: onError\r\n\r\n\t\t\t} );\r\n\r\n\t\t\trequest = new XMLHttpRequest();\r\n\r\n\t\t\trequest.open( 'GET', url, true );\r\n\r\n\t\t\trequest.addEventListener( 'load', function ( event ) {\r\n\r\n\t\t\t\tconst response = this.response;\r\n\r\n\t\t\t\tconst callbacks = loading[ url ];\r\n\r\n\t\t\t\tdelete loading[ url ];\r\n\r\n\t\t\t\tif ( this.status === 200 || this.status === 0 ) {\r\n\r\n\t\t\t\t\t// Some browsers return HTTP Status 0 when using non-http protocol\r\n\t\t\t\t\t// e.g. 'file://' or 'data://'. Handle as success.\r\n\r\n\t\t\t\t\tif ( this.status === 0 ) console.warn( 'THREE.FileLoader: HTTP Status 0 received.' );\r\n\r\n\t\t\t\t\t// Add to cache only on HTTP success, so that we do not cache\r\n\t\t\t\t\t// error response bodies as proper responses to requests.\r\n\t\t\t\t\tCache.add( url, response );\r\n\r\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst callback = callbacks[ i ];\r\n\t\t\t\t\t\tif ( callback.onLoad ) callback.onLoad( response );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\t\tconst callback = callbacks[ i ];\r\n\t\t\t\t\t\tif ( callback.onError ) callback.onError( event );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tscope.manager.itemError( url );\r\n\t\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}, false );\r\n\r\n\t\t\trequest.addEventListener( 'progress', function ( event ) {\r\n\r\n\t\t\t\tconst callbacks = loading[ url ];\r\n\r\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst callback = callbacks[ i ];\r\n\t\t\t\t\tif ( callback.onProgress ) callback.onProgress( event );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}, false );\r\n\r\n\t\t\trequest.addEventListener( 'error', function ( event ) {\r\n\r\n\t\t\t\tconst callbacks = loading[ url ];\r\n\r\n\t\t\t\tdelete loading[ url ];\r\n\r\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst callback = callbacks[ i ];\r\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.manager.itemError( url );\r\n\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t}, false );\r\n\r\n\t\t\trequest.addEventListener( 'abort', function ( event ) {\r\n\r\n\t\t\t\tconst callbacks = loading[ url ];\r\n\r\n\t\t\t\tdelete loading[ url ];\r\n\r\n\t\t\t\tfor ( let i = 0, il = callbacks.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst callback = callbacks[ i ];\r\n\t\t\t\t\tif ( callback.onError ) callback.onError( event );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.manager.itemError( url );\r\n\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t}, false );\r\n\r\n\t\t\tif ( this.responseType !== undefined ) request.responseType = this.responseType;\r\n\t\t\tif ( this.withCredentials !== undefined ) request.withCredentials = this.withCredentials;\r\n\r\n\t\t\tif ( request.overrideMimeType ) request.overrideMimeType( this.mimeType !== undefined ? this.mimeType : 'text/plain' );\r\n\r\n\t\t\tfor ( const header in this.requestHeader ) {\r\n\r\n\t\t\t\trequest.setRequestHeader( header, this.requestHeader[ header ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\trequest.send( null );\r\n\r\n\t\t}\r\n\r\n\t\tscope.manager.itemStart( url );\r\n\r\n\t\treturn request;\r\n\r\n\t},\r\n\r\n\tsetResponseType: function ( value ) {\r\n\r\n\t\tthis.responseType = value;\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetMimeType: function ( value ) {\r\n\r\n\t\tthis.mimeType = value;\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction AnimationLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nAnimationLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: AnimationLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst loader = new FileLoader( scope.manager );\r\n\t\tloader.setPath( scope.path );\r\n\t\tloader.setRequestHeader( scope.requestHeader );\r\n\t\tloader.setWithCredentials( scope.withCredentials );\r\n\t\tloader.load( url, function ( text ) {\r\n\r\n\t\t\ttry {\r\n\r\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\r\n\r\n\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\tif ( onError ) {\r\n\r\n\t\t\t\t\tonError( e );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.error( e );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.manager.itemError( url );\r\n\r\n\t\t\t}\r\n\r\n\t\t}, onProgress, onError );\r\n\r\n\t},\r\n\r\n\tparse: function ( json ) {\r\n\r\n\t\tconst animations = [];\r\n\r\n\t\tfor ( let i = 0; i < json.length; i ++ ) {\r\n\r\n\t\t\tconst clip = AnimationClip.parse( json[ i ] );\r\n\r\n\t\t\tanimations.push( clip );\r\n\r\n\t\t}\r\n\r\n\t\treturn animations;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * Abstract Base class to block based textures loader (dds, pvr, ...)\r\n *\r\n * Sub classes have to implement the parse() method which will be used in load().\r\n */\r\n\r\nfunction CompressedTextureLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nCompressedTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: CompressedTextureLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst images = [];\r\n\r\n\t\tconst texture = new CompressedTexture();\r\n\r\n\t\tconst loader = new FileLoader( this.manager );\r\n\t\tloader.setPath( this.path );\r\n\t\tloader.setResponseType( 'arraybuffer' );\r\n\t\tloader.setRequestHeader( this.requestHeader );\r\n\t\tloader.setWithCredentials( scope.withCredentials );\r\n\r\n\t\tlet loaded = 0;\r\n\r\n\t\tfunction loadTexture( i ) {\r\n\r\n\t\t\tloader.load( url[ i ], function ( buffer ) {\r\n\r\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\r\n\r\n\t\t\t\timages[ i ] = {\r\n\t\t\t\t\twidth: texDatas.width,\r\n\t\t\t\t\theight: texDatas.height,\r\n\t\t\t\t\tformat: texDatas.format,\r\n\t\t\t\t\tmipmaps: texDatas.mipmaps\r\n\t\t\t\t};\r\n\r\n\t\t\t\tloaded += 1;\r\n\r\n\t\t\t\tif ( loaded === 6 ) {\r\n\r\n\t\t\t\t\tif ( texDatas.mipmapCount === 1 ) texture.minFilter = LinearFilter;\r\n\r\n\t\t\t\t\ttexture.image = images;\r\n\t\t\t\t\ttexture.format = texDatas.format;\r\n\t\t\t\t\ttexture.needsUpdate = true;\r\n\r\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}, onProgress, onError );\r\n\r\n\t\t}\r\n\r\n\t\tif ( Array.isArray( url ) ) {\r\n\r\n\t\t\tfor ( let i = 0, il = url.length; i < il; ++ i ) {\r\n\r\n\t\t\t\tloadTexture( i );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// compressed cubemap texture stored in a single DDS file\r\n\r\n\t\t\tloader.load( url, function ( buffer ) {\r\n\r\n\t\t\t\tconst texDatas = scope.parse( buffer, true );\r\n\r\n\t\t\t\tif ( texDatas.isCubemap ) {\r\n\r\n\t\t\t\t\tconst faces = texDatas.mipmaps.length / texDatas.mipmapCount;\r\n\r\n\t\t\t\t\tfor ( let f = 0; f < faces; f ++ ) {\r\n\r\n\t\t\t\t\t\timages[ f ] = { mipmaps: [] };\r\n\r\n\t\t\t\t\t\tfor ( let i = 0; i < texDatas.mipmapCount; i ++ ) {\r\n\r\n\t\t\t\t\t\t\timages[ f ].mipmaps.push( texDatas.mipmaps[ f * texDatas.mipmapCount + i ] );\r\n\t\t\t\t\t\t\timages[ f ].format = texDatas.format;\r\n\t\t\t\t\t\t\timages[ f ].width = texDatas.width;\r\n\t\t\t\t\t\t\timages[ f ].height = texDatas.height;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttexture.image = images;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\ttexture.image.width = texDatas.width;\r\n\t\t\t\t\ttexture.image.height = texDatas.height;\r\n\t\t\t\t\ttexture.mipmaps = texDatas.mipmaps;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( texDatas.mipmapCount === 1 ) {\r\n\r\n\t\t\t\t\ttexture.minFilter = LinearFilter;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttexture.format = texDatas.format;\r\n\t\t\t\ttexture.needsUpdate = true;\r\n\r\n\t\t\t\tif ( onLoad ) onLoad( texture );\r\n\r\n\t\t\t}, onProgress, onError );\r\n\r\n\t\t}\r\n\r\n\t\treturn texture;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction ImageLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nImageLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: ImageLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tif ( this.path !== undefined ) url = this.path + url;\r\n\r\n\t\turl = this.manager.resolveURL( url );\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst cached = Cache.get( url );\r\n\r\n\t\tif ( cached !== undefined ) {\r\n\r\n\t\t\tscope.manager.itemStart( url );\r\n\r\n\t\t\tsetTimeout( function () {\r\n\r\n\t\t\t\tif ( onLoad ) onLoad( cached );\r\n\r\n\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t}, 0 );\r\n\r\n\t\t\treturn cached;\r\n\r\n\t\t}\r\n\r\n\t\tconst image = document.createElementNS( 'http://www.w3.org/1999/xhtml', 'img' );\r\n\r\n\t\tfunction onImageLoad() {\r\n\r\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\r\n\t\t\timage.removeEventListener( 'error', onImageError, false );\r\n\r\n\t\t\tCache.add( url, this );\r\n\r\n\t\t\tif ( onLoad ) onLoad( this );\r\n\r\n\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t}\r\n\r\n\t\tfunction onImageError( event ) {\r\n\r\n\t\t\timage.removeEventListener( 'load', onImageLoad, false );\r\n\t\t\timage.removeEventListener( 'error', onImageError, false );\r\n\r\n\t\t\tif ( onError ) onError( event );\r\n\r\n\t\t\tscope.manager.itemError( url );\r\n\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t}\r\n\r\n\t\timage.addEventListener( 'load', onImageLoad, false );\r\n\t\timage.addEventListener( 'error', onImageError, false );\r\n\r\n\t\tif ( url.substr( 0, 5 ) !== 'data:' ) {\r\n\r\n\t\t\tif ( this.crossOrigin !== undefined ) image.crossOrigin = this.crossOrigin;\r\n\r\n\t\t}\r\n\r\n\t\tscope.manager.itemStart( url );\r\n\r\n\t\timage.src = url;\r\n\r\n\t\treturn image;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction CubeTextureLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nCubeTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: CubeTextureLoader,\r\n\r\n\tload: function ( urls, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst texture = new CubeTexture();\r\n\r\n\t\tconst loader = new ImageLoader( this.manager );\r\n\t\tloader.setCrossOrigin( this.crossOrigin );\r\n\t\tloader.setPath( this.path );\r\n\r\n\t\tlet loaded = 0;\r\n\r\n\t\tfunction loadTexture( i ) {\r\n\r\n\t\t\tloader.load( urls[ i ], function ( image ) {\r\n\r\n\t\t\t\ttexture.images[ i ] = image;\r\n\r\n\t\t\t\tloaded ++;\r\n\r\n\t\t\t\tif ( loaded === 6 ) {\r\n\r\n\t\t\t\t\ttexture.needsUpdate = true;\r\n\r\n\t\t\t\t\tif ( onLoad ) onLoad( texture );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}, undefined, onError );\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0; i < urls.length; ++ i ) {\r\n\r\n\t\t\tloadTexture( i );\r\n\r\n\t\t}\r\n\r\n\t\treturn texture;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * Abstract Base class to load generic binary textures formats (rgbe, hdr, ...)\r\n *\r\n * Sub classes have to implement the parse() method which will be used in load().\r\n */\r\n\r\nfunction DataTextureLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nDataTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: DataTextureLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst texture = new DataTexture();\r\n\r\n\t\tconst loader = new FileLoader( this.manager );\r\n\t\tloader.setResponseType( 'arraybuffer' );\r\n\t\tloader.setRequestHeader( this.requestHeader );\r\n\t\tloader.setPath( this.path );\r\n\t\tloader.setWithCredentials( scope.withCredentials );\r\n\t\tloader.load( url, function ( buffer ) {\r\n\r\n\t\t\tconst texData = scope.parse( buffer );\r\n\r\n\t\t\tif ( ! texData ) return;\r\n\r\n\t\t\tif ( texData.image !== undefined ) {\r\n\r\n\t\t\t\ttexture.image = texData.image;\r\n\r\n\t\t\t} else if ( texData.data !== undefined ) {\r\n\r\n\t\t\t\ttexture.image.width = texData.width;\r\n\t\t\t\ttexture.image.height = texData.height;\r\n\t\t\t\ttexture.image.data = texData.data;\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttexture.wrapS = texData.wrapS !== undefined ? texData.wrapS : ClampToEdgeWrapping;\r\n\t\t\ttexture.wrapT = texData.wrapT !== undefined ? texData.wrapT : ClampToEdgeWrapping;\r\n\r\n\t\t\ttexture.magFilter = texData.magFilter !== undefined ? texData.magFilter : LinearFilter;\r\n\t\t\ttexture.minFilter = texData.minFilter !== undefined ? texData.minFilter : LinearFilter;\r\n\r\n\t\t\ttexture.anisotropy = texData.anisotropy !== undefined ? texData.anisotropy : 1;\r\n\r\n\t\t\tif ( texData.format !== undefined ) {\r\n\r\n\t\t\t\ttexture.format = texData.format;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( texData.type !== undefined ) {\r\n\r\n\t\t\t\ttexture.type = texData.type;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( texData.mipmaps !== undefined ) {\r\n\r\n\t\t\t\ttexture.mipmaps = texData.mipmaps;\r\n\t\t\t\ttexture.minFilter = LinearMipmapLinearFilter; // presumably...\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( texData.mipmapCount === 1 ) {\r\n\r\n\t\t\t\ttexture.minFilter = LinearFilter;\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttexture.needsUpdate = true;\r\n\r\n\t\t\tif ( onLoad ) onLoad( texture, texData );\r\n\r\n\t\t}, onProgress, onError );\r\n\r\n\r\n\t\treturn texture;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction TextureLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nTextureLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: TextureLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst texture = new Texture();\r\n\r\n\t\tconst loader = new ImageLoader( this.manager );\r\n\t\tloader.setCrossOrigin( this.crossOrigin );\r\n\t\tloader.setPath( this.path );\r\n\r\n\t\tloader.load( url, function ( image ) {\r\n\r\n\t\t\ttexture.image = image;\r\n\r\n\t\t\t// JPEGs can't have an alpha channel, so memory can be saved by storing them as RGB.\r\n\t\t\tconst isJPEG = url.search( /\\.jpe?g($|\\?)/i ) > 0 || url.search( /^data\\:image\\/jpeg/ ) === 0;\r\n\r\n\t\t\ttexture.format = isJPEG ? RGBFormat : RGBAFormat;\r\n\t\t\ttexture.needsUpdate = true;\r\n\r\n\t\t\tif ( onLoad !== undefined ) {\r\n\r\n\t\t\t\tonLoad( texture );\r\n\r\n\t\t\t}\r\n\r\n\t\t}, onProgress, onError );\r\n\r\n\t\treturn texture;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * Extensible curve object.\r\n *\r\n * Some common of curve methods:\r\n * .getPoint( t, optionalTarget ), .getTangent( t, optionalTarget )\r\n * .getPointAt( u, optionalTarget ), .getTangentAt( u, optionalTarget )\r\n * .getPoints(), .getSpacedPoints()\r\n * .getLength()\r\n * .updateArcLengths()\r\n *\r\n * This following curves inherit from THREE.Curve:\r\n *\r\n * -- 2D curves --\r\n * THREE.ArcCurve\r\n * THREE.CubicBezierCurve\r\n * THREE.EllipseCurve\r\n * THREE.LineCurve\r\n * THREE.QuadraticBezierCurve\r\n * THREE.SplineCurve\r\n *\r\n * -- 3D curves --\r\n * THREE.CatmullRomCurve3\r\n * THREE.CubicBezierCurve3\r\n * THREE.LineCurve3\r\n * THREE.QuadraticBezierCurve3\r\n *\r\n * A series of curves can be represented as a THREE.CurvePath.\r\n *\r\n **/\r\n\r\nfunction Curve() {\r\n\r\n\tthis.type = 'Curve';\r\n\r\n\tthis.arcLengthDivisions = 200;\r\n\r\n}\r\n\r\nObject.assign( Curve.prototype, {\r\n\r\n\t// Virtual base class method to overwrite and implement in subclasses\r\n\t//\t- t [0 .. 1]\r\n\r\n\tgetPoint: function ( /* t, optionalTarget */ ) {\r\n\r\n\t\tconsole.warn( 'THREE.Curve: .getPoint() not implemented.' );\r\n\t\treturn null;\r\n\r\n\t},\r\n\r\n\t// Get point at relative position in curve according to arc length\r\n\t// - u [0 .. 1]\r\n\r\n\tgetPointAt: function ( u, optionalTarget ) {\r\n\r\n\t\tconst t = this.getUtoTmapping( u );\r\n\t\treturn this.getPoint( t, optionalTarget );\r\n\r\n\t},\r\n\r\n\t// Get sequence of points using getPoint( t )\r\n\r\n\tgetPoints: function ( divisions = 5 ) {\r\n\r\n\t\tconst points = [];\r\n\r\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\r\n\r\n\t\t\tpoints.push( this.getPoint( d / divisions ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn points;\r\n\r\n\t},\r\n\r\n\t// Get sequence of points using getPointAt( u )\r\n\r\n\tgetSpacedPoints: function ( divisions = 5 ) {\r\n\r\n\t\tconst points = [];\r\n\r\n\t\tfor ( let d = 0; d <= divisions; d ++ ) {\r\n\r\n\t\t\tpoints.push( this.getPointAt( d / divisions ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn points;\r\n\r\n\t},\r\n\r\n\t// Get total curve arc length\r\n\r\n\tgetLength: function () {\r\n\r\n\t\tconst lengths = this.getLengths();\r\n\t\treturn lengths[ lengths.length - 1 ];\r\n\r\n\t},\r\n\r\n\t// Get list of cumulative segment lengths\r\n\r\n\tgetLengths: function ( divisions ) {\r\n\r\n\t\tif ( divisions === undefined ) divisions = this.arcLengthDivisions;\r\n\r\n\t\tif ( this.cacheArcLengths &&\r\n\t\t\t( this.cacheArcLengths.length === divisions + 1 ) &&\r\n\t\t\t! this.needsUpdate ) {\r\n\r\n\t\t\treturn this.cacheArcLengths;\r\n\r\n\t\t}\r\n\r\n\t\tthis.needsUpdate = false;\r\n\r\n\t\tconst cache = [];\r\n\t\tlet current, last = this.getPoint( 0 );\r\n\t\tlet sum = 0;\r\n\r\n\t\tcache.push( 0 );\r\n\r\n\t\tfor ( let p = 1; p <= divisions; p ++ ) {\r\n\r\n\t\t\tcurrent = this.getPoint( p / divisions );\r\n\t\t\tsum += current.distanceTo( last );\r\n\t\t\tcache.push( sum );\r\n\t\t\tlast = current;\r\n\r\n\t\t}\r\n\r\n\t\tthis.cacheArcLengths = cache;\r\n\r\n\t\treturn cache; // { sums: cache, sum: sum }; Sum is in the last element.\r\n\r\n\t},\r\n\r\n\tupdateArcLengths: function () {\r\n\r\n\t\tthis.needsUpdate = true;\r\n\t\tthis.getLengths();\r\n\r\n\t},\r\n\r\n\t// Given u ( 0 .. 1 ), get a t to find p. This gives you points which are equidistant\r\n\r\n\tgetUtoTmapping: function ( u, distance ) {\r\n\r\n\t\tconst arcLengths = this.getLengths();\r\n\r\n\t\tlet i = 0;\r\n\t\tconst il = arcLengths.length;\r\n\r\n\t\tlet targetArcLength; // The targeted u distance value to get\r\n\r\n\t\tif ( distance ) {\r\n\r\n\t\t\ttargetArcLength = distance;\r\n\r\n\t\t} else {\r\n\r\n\t\t\ttargetArcLength = u * arcLengths[ il - 1 ];\r\n\r\n\t\t}\r\n\r\n\t\t// binary search for the index with largest value smaller than target u distance\r\n\r\n\t\tlet low = 0, high = il - 1, comparison;\r\n\r\n\t\twhile ( low <= high ) {\r\n\r\n\t\t\ti = Math.floor( low + ( high - low ) / 2 ); // less likely to overflow, though probably not issue here, JS doesn't really have integers, all numbers are floats\r\n\r\n\t\t\tcomparison = arcLengths[ i ] - targetArcLength;\r\n\r\n\t\t\tif ( comparison < 0 ) {\r\n\r\n\t\t\t\tlow = i + 1;\r\n\r\n\t\t\t} else if ( comparison > 0 ) {\r\n\r\n\t\t\t\thigh = i - 1;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\thigh = i;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t\t// DONE\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\ti = high;\r\n\r\n\t\tif ( arcLengths[ i ] === targetArcLength ) {\r\n\r\n\t\t\treturn i / ( il - 1 );\r\n\r\n\t\t}\r\n\r\n\t\t// we could get finer grain at lengths, or use simple interpolation between two points\r\n\r\n\t\tconst lengthBefore = arcLengths[ i ];\r\n\t\tconst lengthAfter = arcLengths[ i + 1 ];\r\n\r\n\t\tconst segmentLength = lengthAfter - lengthBefore;\r\n\r\n\t\t// determine where we are between the 'before' and 'after' points\r\n\r\n\t\tconst segmentFraction = ( targetArcLength - lengthBefore ) / segmentLength;\r\n\r\n\t\t// add that fractional amount to t\r\n\r\n\t\tconst t = ( i + segmentFraction ) / ( il - 1 );\r\n\r\n\t\treturn t;\r\n\r\n\t},\r\n\r\n\t// Returns a unit vector tangent at t\r\n\t// In case any sub curve does not implement its tangent derivation,\r\n\t// 2 points a small delta apart will be used to find its gradient\r\n\t// which seems to give a reasonable approximation\r\n\r\n\tgetTangent: function ( t, optionalTarget ) {\r\n\r\n\t\tconst delta = 0.0001;\r\n\t\tlet t1 = t - delta;\r\n\t\tlet t2 = t + delta;\r\n\r\n\t\t// Capping in case of danger\r\n\r\n\t\tif ( t1 < 0 ) t1 = 0;\r\n\t\tif ( t2 > 1 ) t2 = 1;\r\n\r\n\t\tconst pt1 = this.getPoint( t1 );\r\n\t\tconst pt2 = this.getPoint( t2 );\r\n\r\n\t\tconst tangent = optionalTarget || ( ( pt1.isVector2 ) ? new Vector2() : new Vector3() );\r\n\r\n\t\ttangent.copy( pt2 ).sub( pt1 ).normalize();\r\n\r\n\t\treturn tangent;\r\n\r\n\t},\r\n\r\n\tgetTangentAt: function ( u, optionalTarget ) {\r\n\r\n\t\tconst t = this.getUtoTmapping( u );\r\n\t\treturn this.getTangent( t, optionalTarget );\r\n\r\n\t},\r\n\r\n\tcomputeFrenetFrames: function ( segments, closed ) {\r\n\r\n\t\t// see http://www.cs.indiana.edu/pub/techreports/TR425.pdf\r\n\r\n\t\tconst normal = new Vector3();\r\n\r\n\t\tconst tangents = [];\r\n\t\tconst normals = [];\r\n\t\tconst binormals = [];\r\n\r\n\t\tconst vec = new Vector3();\r\n\t\tconst mat = new Matrix4();\r\n\r\n\t\t// compute the tangent vectors for each segment on the curve\r\n\r\n\t\tfor ( let i = 0; i <= segments; i ++ ) {\r\n\r\n\t\t\tconst u = i / segments;\r\n\r\n\t\t\ttangents[ i ] = this.getTangentAt( u, new Vector3() );\r\n\t\t\ttangents[ i ].normalize();\r\n\r\n\t\t}\r\n\r\n\t\t// select an initial normal vector perpendicular to the first tangent vector,\r\n\t\t// and in the direction of the minimum tangent xyz component\r\n\r\n\t\tnormals[ 0 ] = new Vector3();\r\n\t\tbinormals[ 0 ] = new Vector3();\r\n\t\tlet min = Number.MAX_VALUE;\r\n\t\tconst tx = Math.abs( tangents[ 0 ].x );\r\n\t\tconst ty = Math.abs( tangents[ 0 ].y );\r\n\t\tconst tz = Math.abs( tangents[ 0 ].z );\r\n\r\n\t\tif ( tx <= min ) {\r\n\r\n\t\t\tmin = tx;\r\n\t\t\tnormal.set( 1, 0, 0 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( ty <= min ) {\r\n\r\n\t\t\tmin = ty;\r\n\t\t\tnormal.set( 0, 1, 0 );\r\n\r\n\t\t}\r\n\r\n\t\tif ( tz <= min ) {\r\n\r\n\t\t\tnormal.set( 0, 0, 1 );\r\n\r\n\t\t}\r\n\r\n\t\tvec.crossVectors( tangents[ 0 ], normal ).normalize();\r\n\r\n\t\tnormals[ 0 ].crossVectors( tangents[ 0 ], vec );\r\n\t\tbinormals[ 0 ].crossVectors( tangents[ 0 ], normals[ 0 ] );\r\n\r\n\r\n\t\t// compute the slowly-varying normal and binormal vectors for each segment on the curve\r\n\r\n\t\tfor ( let i = 1; i <= segments; i ++ ) {\r\n\r\n\t\t\tnormals[ i ] = normals[ i - 1 ].clone();\r\n\r\n\t\t\tbinormals[ i ] = binormals[ i - 1 ].clone();\r\n\r\n\t\t\tvec.crossVectors( tangents[ i - 1 ], tangents[ i ] );\r\n\r\n\t\t\tif ( vec.length() > Number.EPSILON ) {\r\n\r\n\t\t\t\tvec.normalize();\r\n\r\n\t\t\t\tconst theta = Math.acos( MathUtils.clamp( tangents[ i - 1 ].dot( tangents[ i ] ), - 1, 1 ) ); // clamp for floating pt errors\r\n\r\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( vec, theta ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\t// if the curve is closed, postprocess the vectors so the first and last normal vectors are the same\r\n\r\n\t\tif ( closed === true ) {\r\n\r\n\t\t\tlet theta = Math.acos( MathUtils.clamp( normals[ 0 ].dot( normals[ segments ] ), - 1, 1 ) );\r\n\t\t\ttheta /= segments;\r\n\r\n\t\t\tif ( tangents[ 0 ].dot( vec.crossVectors( normals[ 0 ], normals[ segments ] ) ) > 0 ) {\r\n\r\n\t\t\t\ttheta = - theta;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfor ( let i = 1; i <= segments; i ++ ) {\r\n\r\n\t\t\t\t// twist a little...\r\n\t\t\t\tnormals[ i ].applyMatrix4( mat.makeRotationAxis( tangents[ i ], theta * i ) );\r\n\t\t\t\tbinormals[ i ].crossVectors( tangents[ i ], normals[ i ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\ttangents: tangents,\r\n\t\t\tnormals: normals,\r\n\t\t\tbinormals: binormals\r\n\t\t};\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tthis.arcLengthDivisions = source.arcLengthDivisions;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\tconst data = {\r\n\t\t\tmetadata: {\r\n\t\t\t\tversion: 4.5,\r\n\t\t\t\ttype: 'Curve',\r\n\t\t\t\tgenerator: 'Curve.toJSON'\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tdata.arcLengthDivisions = this.arcLengthDivisions;\r\n\t\tdata.type = this.type;\r\n\r\n\t\treturn data;\r\n\r\n\t},\r\n\r\n\tfromJSON: function ( json ) {\r\n\r\n\t\tthis.arcLengthDivisions = json.arcLengthDivisions;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'EllipseCurve';\r\n\r\n\tthis.aX = aX || 0;\r\n\tthis.aY = aY || 0;\r\n\r\n\tthis.xRadius = xRadius || 1;\r\n\tthis.yRadius = yRadius || 1;\r\n\r\n\tthis.aStartAngle = aStartAngle || 0;\r\n\tthis.aEndAngle = aEndAngle || 2 * Math.PI;\r\n\r\n\tthis.aClockwise = aClockwise || false;\r\n\r\n\tthis.aRotation = aRotation || 0;\r\n\r\n}\r\n\r\nEllipseCurve.prototype = Object.create( Curve.prototype );\r\nEllipseCurve.prototype.constructor = EllipseCurve;\r\n\r\nEllipseCurve.prototype.isEllipseCurve = true;\r\n\r\nEllipseCurve.prototype.getPoint = function ( t, optionalTarget ) {\r\n\r\n\tconst point = optionalTarget || new Vector2();\r\n\r\n\tconst twoPi = Math.PI * 2;\r\n\tlet deltaAngle = this.aEndAngle - this.aStartAngle;\r\n\tconst samePoints = Math.abs( deltaAngle ) < Number.EPSILON;\r\n\r\n\t// ensures that deltaAngle is 0 .. 2 PI\r\n\twhile ( deltaAngle < 0 ) deltaAngle += twoPi;\r\n\twhile ( deltaAngle > twoPi ) deltaAngle -= twoPi;\r\n\r\n\tif ( deltaAngle < Number.EPSILON ) {\r\n\r\n\t\tif ( samePoints ) {\r\n\r\n\t\t\tdeltaAngle = 0;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tdeltaAngle = twoPi;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tif ( this.aClockwise === true && ! samePoints ) {\r\n\r\n\t\tif ( deltaAngle === twoPi ) {\r\n\r\n\t\t\tdeltaAngle = - twoPi;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tdeltaAngle = deltaAngle - twoPi;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tconst angle = this.aStartAngle + t * deltaAngle;\r\n\tlet x = this.aX + this.xRadius * Math.cos( angle );\r\n\tlet y = this.aY + this.yRadius * Math.sin( angle );\r\n\r\n\tif ( this.aRotation !== 0 ) {\r\n\r\n\t\tconst cos = Math.cos( this.aRotation );\r\n\t\tconst sin = Math.sin( this.aRotation );\r\n\r\n\t\tconst tx = x - this.aX;\r\n\t\tconst ty = y - this.aY;\r\n\r\n\t\t// Rotate the point about the center of the ellipse.\r\n\t\tx = tx * cos - ty * sin + this.aX;\r\n\t\ty = tx * sin + ty * cos + this.aY;\r\n\r\n\t}\r\n\r\n\treturn point.set( x, y );\r\n\r\n};\r\n\r\nEllipseCurve.prototype.copy = function ( source ) {\r\n\r\n\tCurve.prototype.copy.call( this, source );\r\n\r\n\tthis.aX = source.aX;\r\n\tthis.aY = source.aY;\r\n\r\n\tthis.xRadius = source.xRadius;\r\n\tthis.yRadius = source.yRadius;\r\n\r\n\tthis.aStartAngle = source.aStartAngle;\r\n\tthis.aEndAngle = source.aEndAngle;\r\n\r\n\tthis.aClockwise = source.aClockwise;\r\n\r\n\tthis.aRotation = source.aRotation;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n\r\nEllipseCurve.prototype.toJSON = function () {\r\n\r\n\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\tdata.aX = this.aX;\r\n\tdata.aY = this.aY;\r\n\r\n\tdata.xRadius = this.xRadius;\r\n\tdata.yRadius = this.yRadius;\r\n\r\n\tdata.aStartAngle = this.aStartAngle;\r\n\tdata.aEndAngle = this.aEndAngle;\r\n\r\n\tdata.aClockwise = this.aClockwise;\r\n\r\n\tdata.aRotation = this.aRotation;\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nEllipseCurve.prototype.fromJSON = function ( json ) {\r\n\r\n\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\tthis.aX = json.aX;\r\n\tthis.aY = json.aY;\r\n\r\n\tthis.xRadius = json.xRadius;\r\n\tthis.yRadius = json.yRadius;\r\n\r\n\tthis.aStartAngle = json.aStartAngle;\r\n\tthis.aEndAngle = json.aEndAngle;\r\n\r\n\tthis.aClockwise = json.aClockwise;\r\n\r\n\tthis.aRotation = json.aRotation;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nfunction ArcCurve( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\r\n\r\n\tEllipseCurve.call( this, aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\r\n\r\n\tthis.type = 'ArcCurve';\r\n\r\n}\r\n\r\nArcCurve.prototype = Object.create( EllipseCurve.prototype );\r\nArcCurve.prototype.constructor = ArcCurve;\r\n\r\nArcCurve.prototype.isArcCurve = true;\r\n\r\n/**\r\n * Centripetal CatmullRom Curve - which is useful for avoiding\r\n * cusps and self-intersections in non-uniform catmull rom curves.\r\n * http://www.cemyuksel.com/research/catmullrom_param/catmullrom.pdf\r\n *\r\n * curve.type accepts centripetal(default), chordal and catmullrom\r\n * curve.tension is used for catmullrom which defaults to 0.5\r\n */\r\n\r\n\r\n/*\r\nBased on an optimized c++ solution in\r\n - http://stackoverflow.com/questions/9489736/catmull-rom-curve-with-no-cusps-and-no-self-intersections/\r\n - http://ideone.com/NoEbVM\r\n\r\nThis CubicPoly class could be used for reusing some variables and calculations,\r\nbut for three.js curve use, it could be possible inlined and flatten into a single function call\r\nwhich can be placed in CurveUtils.\r\n*/\r\n\r\nfunction CubicPoly() {\r\n\r\n\tlet c0 = 0, c1 = 0, c2 = 0, c3 = 0;\r\n\r\n\t/*\r\n\t * Compute coefficients for a cubic polynomial\r\n\t * p(s) = c0 + c1*s + c2*s^2 + c3*s^3\r\n\t * such that\r\n\t * p(0) = x0, p(1) = x1\r\n\t * and\r\n\t * p'(0) = t0, p'(1) = t1.\r\n\t */\r\n\tfunction init( x0, x1, t0, t1 ) {\r\n\r\n\t\tc0 = x0;\r\n\t\tc1 = t0;\r\n\t\tc2 = - 3 * x0 + 3 * x1 - 2 * t0 - t1;\r\n\t\tc3 = 2 * x0 - 2 * x1 + t0 + t1;\r\n\r\n\t}\r\n\r\n\treturn {\r\n\r\n\t\tinitCatmullRom: function ( x0, x1, x2, x3, tension ) {\r\n\r\n\t\t\tinit( x1, x2, tension * ( x2 - x0 ), tension * ( x3 - x1 ) );\r\n\r\n\t\t},\r\n\r\n\t\tinitNonuniformCatmullRom: function ( x0, x1, x2, x3, dt0, dt1, dt2 ) {\r\n\r\n\t\t\t// compute tangents when parameterized in [t1,t2]\r\n\t\t\tlet t1 = ( x1 - x0 ) / dt0 - ( x2 - x0 ) / ( dt0 + dt1 ) + ( x2 - x1 ) / dt1;\r\n\t\t\tlet t2 = ( x2 - x1 ) / dt1 - ( x3 - x1 ) / ( dt1 + dt2 ) + ( x3 - x2 ) / dt2;\r\n\r\n\t\t\t// rescale tangents for parametrization in [0,1]\r\n\t\t\tt1 *= dt1;\r\n\t\t\tt2 *= dt1;\r\n\r\n\t\t\tinit( x1, x2, t1, t2 );\r\n\r\n\t\t},\r\n\r\n\t\tcalc: function ( t ) {\r\n\r\n\t\t\tconst t2 = t * t;\r\n\t\t\tconst t3 = t2 * t;\r\n\t\t\treturn c0 + c1 * t + c2 * t2 + c3 * t3;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n}\r\n\r\n//\r\n\r\nconst tmp = new Vector3();\r\nconst px = new CubicPoly(), py = new CubicPoly(), pz = new CubicPoly();\r\n\r\nfunction CatmullRomCurve3( points = [], closed = false, curveType = 'centripetal', tension = 0.5 ) {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'CatmullRomCurve3';\r\n\r\n\tthis.points = points;\r\n\tthis.closed = closed;\r\n\tthis.curveType = curveType;\r\n\tthis.tension = tension;\r\n\r\n}\r\n\r\nCatmullRomCurve3.prototype = Object.create( Curve.prototype );\r\nCatmullRomCurve3.prototype.constructor = CatmullRomCurve3;\r\n\r\nCatmullRomCurve3.prototype.isCatmullRomCurve3 = true;\r\n\r\nCatmullRomCurve3.prototype.getPoint = function ( t, optionalTarget = new Vector3() ) {\r\n\r\n\tconst point = optionalTarget;\r\n\r\n\tconst points = this.points;\r\n\tconst l = points.length;\r\n\r\n\tconst p = ( l - ( this.closed ? 0 : 1 ) ) * t;\r\n\tlet intPoint = Math.floor( p );\r\n\tlet weight = p - intPoint;\r\n\r\n\tif ( this.closed ) {\r\n\r\n\t\tintPoint += intPoint > 0 ? 0 : ( Math.floor( Math.abs( intPoint ) / l ) + 1 ) * l;\r\n\r\n\t} else if ( weight === 0 && intPoint === l - 1 ) {\r\n\r\n\t\tintPoint = l - 2;\r\n\t\tweight = 1;\r\n\r\n\t}\r\n\r\n\tlet p0, p3; // 4 points (p1 & p2 defined below)\r\n\r\n\tif ( this.closed || intPoint > 0 ) {\r\n\r\n\t\tp0 = points[ ( intPoint - 1 ) % l ];\r\n\r\n\t} else {\r\n\r\n\t\t// extrapolate first point\r\n\t\ttmp.subVectors( points[ 0 ], points[ 1 ] ).add( points[ 0 ] );\r\n\t\tp0 = tmp;\r\n\r\n\t}\r\n\r\n\tconst p1 = points[ intPoint % l ];\r\n\tconst p2 = points[ ( intPoint + 1 ) % l ];\r\n\r\n\tif ( this.closed || intPoint + 2 < l ) {\r\n\r\n\t\tp3 = points[ ( intPoint + 2 ) % l ];\r\n\r\n\t} else {\r\n\r\n\t\t// extrapolate last point\r\n\t\ttmp.subVectors( points[ l - 1 ], points[ l - 2 ] ).add( points[ l - 1 ] );\r\n\t\tp3 = tmp;\r\n\r\n\t}\r\n\r\n\tif ( this.curveType === 'centripetal' || this.curveType === 'chordal' ) {\r\n\r\n\t\t// init Centripetal / Chordal Catmull-Rom\r\n\t\tconst pow = this.curveType === 'chordal' ? 0.5 : 0.25;\r\n\t\tlet dt0 = Math.pow( p0.distanceToSquared( p1 ), pow );\r\n\t\tlet dt1 = Math.pow( p1.distanceToSquared( p2 ), pow );\r\n\t\tlet dt2 = Math.pow( p2.distanceToSquared( p3 ), pow );\r\n\r\n\t\t// safety check for repeated points\r\n\t\tif ( dt1 < 1e-4 ) dt1 = 1.0;\r\n\t\tif ( dt0 < 1e-4 ) dt0 = dt1;\r\n\t\tif ( dt2 < 1e-4 ) dt2 = dt1;\r\n\r\n\t\tpx.initNonuniformCatmullRom( p0.x, p1.x, p2.x, p3.x, dt0, dt1, dt2 );\r\n\t\tpy.initNonuniformCatmullRom( p0.y, p1.y, p2.y, p3.y, dt0, dt1, dt2 );\r\n\t\tpz.initNonuniformCatmullRom( p0.z, p1.z, p2.z, p3.z, dt0, dt1, dt2 );\r\n\r\n\t} else if ( this.curveType === 'catmullrom' ) {\r\n\r\n\t\tpx.initCatmullRom( p0.x, p1.x, p2.x, p3.x, this.tension );\r\n\t\tpy.initCatmullRom( p0.y, p1.y, p2.y, p3.y, this.tension );\r\n\t\tpz.initCatmullRom( p0.z, p1.z, p2.z, p3.z, this.tension );\r\n\r\n\t}\r\n\r\n\tpoint.set(\r\n\t\tpx.calc( weight ),\r\n\t\tpy.calc( weight ),\r\n\t\tpz.calc( weight )\r\n\t);\r\n\r\n\treturn point;\r\n\r\n};\r\n\r\nCatmullRomCurve3.prototype.copy = function ( source ) {\r\n\r\n\tCurve.prototype.copy.call( this, source );\r\n\r\n\tthis.points = [];\r\n\r\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\r\n\r\n\t\tconst point = source.points[ i ];\r\n\r\n\t\tthis.points.push( point.clone() );\r\n\r\n\t}\r\n\r\n\tthis.closed = source.closed;\r\n\tthis.curveType = source.curveType;\r\n\tthis.tension = source.tension;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nCatmullRomCurve3.prototype.toJSON = function () {\r\n\r\n\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\tdata.points = [];\r\n\r\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\r\n\r\n\t\tconst point = this.points[ i ];\r\n\t\tdata.points.push( point.toArray() );\r\n\r\n\t}\r\n\r\n\tdata.closed = this.closed;\r\n\tdata.curveType = this.curveType;\r\n\tdata.tension = this.tension;\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nCatmullRomCurve3.prototype.fromJSON = function ( json ) {\r\n\r\n\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\tthis.points = [];\r\n\r\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\r\n\r\n\t\tconst point = json.points[ i ];\r\n\t\tthis.points.push( new Vector3().fromArray( point ) );\r\n\r\n\t}\r\n\r\n\tthis.closed = json.closed;\r\n\tthis.curveType = json.curveType;\r\n\tthis.tension = json.tension;\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\n/**\r\n * Bezier Curves formulas obtained from\r\n * http://en.wikipedia.org/wiki/Bézier_curve\r\n */\r\n\r\nfunction CatmullRom( t, p0, p1, p2, p3 ) {\r\n\r\n\tconst v0 = ( p2 - p0 ) * 0.5;\r\n\tconst v1 = ( p3 - p1 ) * 0.5;\r\n\tconst t2 = t * t;\r\n\tconst t3 = t * t2;\r\n\treturn ( 2 * p1 - 2 * p2 + v0 + v1 ) * t3 + ( - 3 * p1 + 3 * p2 - 2 * v0 - v1 ) * t2 + v0 * t + p1;\r\n\r\n}\r\n\r\n//\r\n\r\nfunction QuadraticBezierP0( t, p ) {\r\n\r\n\tconst k = 1 - t;\r\n\treturn k * k * p;\r\n\r\n}\r\n\r\nfunction QuadraticBezierP1( t, p ) {\r\n\r\n\treturn 2 * ( 1 - t ) * t * p;\r\n\r\n}\r\n\r\nfunction QuadraticBezierP2( t, p ) {\r\n\r\n\treturn t * t * p;\r\n\r\n}\r\n\r\nfunction QuadraticBezier( t, p0, p1, p2 ) {\r\n\r\n\treturn QuadraticBezierP0( t, p0 ) + QuadraticBezierP1( t, p1 ) +\r\n\t\tQuadraticBezierP2( t, p2 );\r\n\r\n}\r\n\r\n//\r\n\r\nfunction CubicBezierP0( t, p ) {\r\n\r\n\tconst k = 1 - t;\r\n\treturn k * k * k * p;\r\n\r\n}\r\n\r\nfunction CubicBezierP1( t, p ) {\r\n\r\n\tconst k = 1 - t;\r\n\treturn 3 * k * k * t * p;\r\n\r\n}\r\n\r\nfunction CubicBezierP2( t, p ) {\r\n\r\n\treturn 3 * ( 1 - t ) * t * t * p;\r\n\r\n}\r\n\r\nfunction CubicBezierP3( t, p ) {\r\n\r\n\treturn t * t * t * p;\r\n\r\n}\r\n\r\nfunction CubicBezier( t, p0, p1, p2, p3 ) {\r\n\r\n\treturn CubicBezierP0( t, p0 ) + CubicBezierP1( t, p1 ) + CubicBezierP2( t, p2 ) +\r\n\t\tCubicBezierP3( t, p3 );\r\n\r\n}\r\n\r\nfunction CubicBezierCurve( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2(), v3 = new Vector2() ) {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'CubicBezierCurve';\r\n\r\n\tthis.v0 = v0;\r\n\tthis.v1 = v1;\r\n\tthis.v2 = v2;\r\n\tthis.v3 = v3;\r\n\r\n}\r\n\r\nCubicBezierCurve.prototype = Object.create( Curve.prototype );\r\nCubicBezierCurve.prototype.constructor = CubicBezierCurve;\r\n\r\nCubicBezierCurve.prototype.isCubicBezierCurve = true;\r\n\r\nCubicBezierCurve.prototype.getPoint = function ( t, optionalTarget = new Vector2() ) {\r\n\r\n\tconst point = optionalTarget;\r\n\r\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\r\n\r\n\tpoint.set(\r\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\r\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y )\r\n\t);\r\n\r\n\treturn point;\r\n\r\n};\r\n\r\nCubicBezierCurve.prototype.copy = function ( source ) {\r\n\r\n\tCurve.prototype.copy.call( this, source );\r\n\r\n\tthis.v0.copy( source.v0 );\r\n\tthis.v1.copy( source.v1 );\r\n\tthis.v2.copy( source.v2 );\r\n\tthis.v3.copy( source.v3 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nCubicBezierCurve.prototype.toJSON = function () {\r\n\r\n\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\tdata.v0 = this.v0.toArray();\r\n\tdata.v1 = this.v1.toArray();\r\n\tdata.v2 = this.v2.toArray();\r\n\tdata.v3 = this.v3.toArray();\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nCubicBezierCurve.prototype.fromJSON = function ( json ) {\r\n\r\n\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\tthis.v0.fromArray( json.v0 );\r\n\tthis.v1.fromArray( json.v1 );\r\n\tthis.v2.fromArray( json.v2 );\r\n\tthis.v3.fromArray( json.v3 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nfunction CubicBezierCurve3( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3(), v3 = new Vector3() ) {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'CubicBezierCurve3';\r\n\r\n\tthis.v0 = v0;\r\n\tthis.v1 = v1;\r\n\tthis.v2 = v2;\r\n\tthis.v3 = v3;\r\n\r\n}\r\n\r\nCubicBezierCurve3.prototype = Object.create( Curve.prototype );\r\nCubicBezierCurve3.prototype.constructor = CubicBezierCurve3;\r\n\r\nCubicBezierCurve3.prototype.isCubicBezierCurve3 = true;\r\n\r\nCubicBezierCurve3.prototype.getPoint = function ( t, optionalTarget = new Vector3() ) {\r\n\r\n\tconst point = optionalTarget;\r\n\r\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2, v3 = this.v3;\r\n\r\n\tpoint.set(\r\n\t\tCubicBezier( t, v0.x, v1.x, v2.x, v3.x ),\r\n\t\tCubicBezier( t, v0.y, v1.y, v2.y, v3.y ),\r\n\t\tCubicBezier( t, v0.z, v1.z, v2.z, v3.z )\r\n\t);\r\n\r\n\treturn point;\r\n\r\n};\r\n\r\nCubicBezierCurve3.prototype.copy = function ( source ) {\r\n\r\n\tCurve.prototype.copy.call( this, source );\r\n\r\n\tthis.v0.copy( source.v0 );\r\n\tthis.v1.copy( source.v1 );\r\n\tthis.v2.copy( source.v2 );\r\n\tthis.v3.copy( source.v3 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nCubicBezierCurve3.prototype.toJSON = function () {\r\n\r\n\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\tdata.v0 = this.v0.toArray();\r\n\tdata.v1 = this.v1.toArray();\r\n\tdata.v2 = this.v2.toArray();\r\n\tdata.v3 = this.v3.toArray();\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nCubicBezierCurve3.prototype.fromJSON = function ( json ) {\r\n\r\n\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\tthis.v0.fromArray( json.v0 );\r\n\tthis.v1.fromArray( json.v1 );\r\n\tthis.v2.fromArray( json.v2 );\r\n\tthis.v3.fromArray( json.v3 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nfunction LineCurve( v1 = new Vector2(), v2 = new Vector2() ) {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'LineCurve';\r\n\r\n\tthis.v1 = v1;\r\n\tthis.v2 = v2;\r\n\r\n}\r\n\r\nLineCurve.prototype = Object.create( Curve.prototype );\r\nLineCurve.prototype.constructor = LineCurve;\r\n\r\nLineCurve.prototype.isLineCurve = true;\r\n\r\nLineCurve.prototype.getPoint = function ( t, optionalTarget = new Vector2() ) {\r\n\r\n\tconst point = optionalTarget;\r\n\r\n\tif ( t === 1 ) {\r\n\r\n\t\tpoint.copy( this.v2 );\r\n\r\n\t} else {\r\n\r\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\r\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\r\n\r\n\t}\r\n\r\n\treturn point;\r\n\r\n};\r\n\r\n// Line curve is linear, so we can overwrite default getPointAt\r\n\r\nLineCurve.prototype.getPointAt = function ( u, optionalTarget ) {\r\n\r\n\treturn this.getPoint( u, optionalTarget );\r\n\r\n};\r\n\r\nLineCurve.prototype.getTangent = function ( t, optionalTarget ) {\r\n\r\n\tconst tangent = optionalTarget || new Vector2();\r\n\r\n\ttangent.copy( this.v2 ).sub( this.v1 ).normalize();\r\n\r\n\treturn tangent;\r\n\r\n};\r\n\r\nLineCurve.prototype.copy = function ( source ) {\r\n\r\n\tCurve.prototype.copy.call( this, source );\r\n\r\n\tthis.v1.copy( source.v1 );\r\n\tthis.v2.copy( source.v2 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nLineCurve.prototype.toJSON = function () {\r\n\r\n\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\tdata.v1 = this.v1.toArray();\r\n\tdata.v2 = this.v2.toArray();\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nLineCurve.prototype.fromJSON = function ( json ) {\r\n\r\n\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\tthis.v1.fromArray( json.v1 );\r\n\tthis.v2.fromArray( json.v2 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nfunction LineCurve3( v1 = new Vector3(), v2 = new Vector3() ) {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'LineCurve3';\r\n\r\n\tthis.v1 = v1;\r\n\tthis.v2 = v2;\r\n\r\n}\r\n\r\nLineCurve3.prototype = Object.create( Curve.prototype );\r\nLineCurve3.prototype.constructor = LineCurve3;\r\n\r\nLineCurve3.prototype.isLineCurve3 = true;\r\n\r\nLineCurve3.prototype.getPoint = function ( t, optionalTarget = new Vector3() ) {\r\n\r\n\tconst point = optionalTarget;\r\n\r\n\tif ( t === 1 ) {\r\n\r\n\t\tpoint.copy( this.v2 );\r\n\r\n\t} else {\r\n\r\n\t\tpoint.copy( this.v2 ).sub( this.v1 );\r\n\t\tpoint.multiplyScalar( t ).add( this.v1 );\r\n\r\n\t}\r\n\r\n\treturn point;\r\n\r\n};\r\n\r\n// Line curve is linear, so we can overwrite default getPointAt\r\n\r\nLineCurve3.prototype.getPointAt = function ( u, optionalTarget ) {\r\n\r\n\treturn this.getPoint( u, optionalTarget );\r\n\r\n};\r\n\r\nLineCurve3.prototype.copy = function ( source ) {\r\n\r\n\tCurve.prototype.copy.call( this, source );\r\n\r\n\tthis.v1.copy( source.v1 );\r\n\tthis.v2.copy( source.v2 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nLineCurve3.prototype.toJSON = function () {\r\n\r\n\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\tdata.v1 = this.v1.toArray();\r\n\tdata.v2 = this.v2.toArray();\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nLineCurve3.prototype.fromJSON = function ( json ) {\r\n\r\n\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\tthis.v1.fromArray( json.v1 );\r\n\tthis.v2.fromArray( json.v2 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nfunction QuadraticBezierCurve( v0 = new Vector2(), v1 = new Vector2(), v2 = new Vector2() ) {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'QuadraticBezierCurve';\r\n\r\n\tthis.v0 = v0;\r\n\tthis.v1 = v1;\r\n\tthis.v2 = v2;\r\n\r\n}\r\n\r\nQuadraticBezierCurve.prototype = Object.create( Curve.prototype );\r\nQuadraticBezierCurve.prototype.constructor = QuadraticBezierCurve;\r\n\r\nQuadraticBezierCurve.prototype.isQuadraticBezierCurve = true;\r\n\r\nQuadraticBezierCurve.prototype.getPoint = function ( t, optionalTarget = new Vector2() ) {\r\n\r\n\tconst point = optionalTarget;\r\n\r\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\r\n\r\n\tpoint.set(\r\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\r\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y )\r\n\t);\r\n\r\n\treturn point;\r\n\r\n};\r\n\r\nQuadraticBezierCurve.prototype.copy = function ( source ) {\r\n\r\n\tCurve.prototype.copy.call( this, source );\r\n\r\n\tthis.v0.copy( source.v0 );\r\n\tthis.v1.copy( source.v1 );\r\n\tthis.v2.copy( source.v2 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nQuadraticBezierCurve.prototype.toJSON = function () {\r\n\r\n\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\tdata.v0 = this.v0.toArray();\r\n\tdata.v1 = this.v1.toArray();\r\n\tdata.v2 = this.v2.toArray();\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nQuadraticBezierCurve.prototype.fromJSON = function ( json ) {\r\n\r\n\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\tthis.v0.fromArray( json.v0 );\r\n\tthis.v1.fromArray( json.v1 );\r\n\tthis.v2.fromArray( json.v2 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nfunction QuadraticBezierCurve3( v0 = new Vector3(), v1 = new Vector3(), v2 = new Vector3() ) {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'QuadraticBezierCurve3';\r\n\r\n\tthis.v0 = v0;\r\n\tthis.v1 = v1;\r\n\tthis.v2 = v2;\r\n\r\n}\r\n\r\nQuadraticBezierCurve3.prototype = Object.create( Curve.prototype );\r\nQuadraticBezierCurve3.prototype.constructor = QuadraticBezierCurve3;\r\n\r\nQuadraticBezierCurve3.prototype.isQuadraticBezierCurve3 = true;\r\n\r\nQuadraticBezierCurve3.prototype.getPoint = function ( t, optionalTarget = new Vector3() ) {\r\n\r\n\tconst point = optionalTarget;\r\n\r\n\tconst v0 = this.v0, v1 = this.v1, v2 = this.v2;\r\n\r\n\tpoint.set(\r\n\t\tQuadraticBezier( t, v0.x, v1.x, v2.x ),\r\n\t\tQuadraticBezier( t, v0.y, v1.y, v2.y ),\r\n\t\tQuadraticBezier( t, v0.z, v1.z, v2.z )\r\n\t);\r\n\r\n\treturn point;\r\n\r\n};\r\n\r\nQuadraticBezierCurve3.prototype.copy = function ( source ) {\r\n\r\n\tCurve.prototype.copy.call( this, source );\r\n\r\n\tthis.v0.copy( source.v0 );\r\n\tthis.v1.copy( source.v1 );\r\n\tthis.v2.copy( source.v2 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nQuadraticBezierCurve3.prototype.toJSON = function () {\r\n\r\n\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\tdata.v0 = this.v0.toArray();\r\n\tdata.v1 = this.v1.toArray();\r\n\tdata.v2 = this.v2.toArray();\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nQuadraticBezierCurve3.prototype.fromJSON = function ( json ) {\r\n\r\n\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\tthis.v0.fromArray( json.v0 );\r\n\tthis.v1.fromArray( json.v1 );\r\n\tthis.v2.fromArray( json.v2 );\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nfunction SplineCurve( points = [] ) {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'SplineCurve';\r\n\r\n\tthis.points = points;\r\n\r\n}\r\n\r\nSplineCurve.prototype = Object.create( Curve.prototype );\r\nSplineCurve.prototype.constructor = SplineCurve;\r\n\r\nSplineCurve.prototype.isSplineCurve = true;\r\n\r\nSplineCurve.prototype.getPoint = function ( t, optionalTarget = new Vector2() ) {\r\n\r\n\tconst point = optionalTarget;\r\n\r\n\tconst points = this.points;\r\n\tconst p = ( points.length - 1 ) * t;\r\n\r\n\tconst intPoint = Math.floor( p );\r\n\tconst weight = p - intPoint;\r\n\r\n\tconst p0 = points[ intPoint === 0 ? intPoint : intPoint - 1 ];\r\n\tconst p1 = points[ intPoint ];\r\n\tconst p2 = points[ intPoint > points.length - 2 ? points.length - 1 : intPoint + 1 ];\r\n\tconst p3 = points[ intPoint > points.length - 3 ? points.length - 1 : intPoint + 2 ];\r\n\r\n\tpoint.set(\r\n\t\tCatmullRom( weight, p0.x, p1.x, p2.x, p3.x ),\r\n\t\tCatmullRom( weight, p0.y, p1.y, p2.y, p3.y )\r\n\t);\r\n\r\n\treturn point;\r\n\r\n};\r\n\r\nSplineCurve.prototype.copy = function ( source ) {\r\n\r\n\tCurve.prototype.copy.call( this, source );\r\n\r\n\tthis.points = [];\r\n\r\n\tfor ( let i = 0, l = source.points.length; i < l; i ++ ) {\r\n\r\n\t\tconst point = source.points[ i ];\r\n\r\n\t\tthis.points.push( point.clone() );\r\n\r\n\t}\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nSplineCurve.prototype.toJSON = function () {\r\n\r\n\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\tdata.points = [];\r\n\r\n\tfor ( let i = 0, l = this.points.length; i < l; i ++ ) {\r\n\r\n\t\tconst point = this.points[ i ];\r\n\t\tdata.points.push( point.toArray() );\r\n\r\n\t}\r\n\r\n\treturn data;\r\n\r\n};\r\n\r\nSplineCurve.prototype.fromJSON = function ( json ) {\r\n\r\n\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\tthis.points = [];\r\n\r\n\tfor ( let i = 0, l = json.points.length; i < l; i ++ ) {\r\n\r\n\t\tconst point = json.points[ i ];\r\n\t\tthis.points.push( new Vector2().fromArray( point ) );\r\n\r\n\t}\r\n\r\n\treturn this;\r\n\r\n};\r\n\r\nvar Curves = /*#__PURE__*/Object.freeze({\r\n\t__proto__: null,\r\n\tArcCurve: ArcCurve,\r\n\tCatmullRomCurve3: CatmullRomCurve3,\r\n\tCubicBezierCurve: CubicBezierCurve,\r\n\tCubicBezierCurve3: CubicBezierCurve3,\r\n\tEllipseCurve: EllipseCurve,\r\n\tLineCurve: LineCurve,\r\n\tLineCurve3: LineCurve3,\r\n\tQuadraticBezierCurve: QuadraticBezierCurve,\r\n\tQuadraticBezierCurve3: QuadraticBezierCurve3,\r\n\tSplineCurve: SplineCurve\r\n});\r\n\r\n/**************************************************************\r\n *\tCurved Path - a curve path is simply a array of connected\r\n * curves, but retains the api of a curve\r\n **************************************************************/\r\n\r\nfunction CurvePath() {\r\n\r\n\tCurve.call( this );\r\n\r\n\tthis.type = 'CurvePath';\r\n\r\n\tthis.curves = [];\r\n\tthis.autoClose = false; // Automatically closes the path\r\n\r\n}\r\n\r\nCurvePath.prototype = Object.assign( Object.create( Curve.prototype ), {\r\n\r\n\tconstructor: CurvePath,\r\n\r\n\tadd: function ( curve ) {\r\n\r\n\t\tthis.curves.push( curve );\r\n\r\n\t},\r\n\r\n\tclosePath: function () {\r\n\r\n\t\t// Add a line curve if start and end of lines are not connected\r\n\t\tconst startPoint = this.curves[ 0 ].getPoint( 0 );\r\n\t\tconst endPoint = this.curves[ this.curves.length - 1 ].getPoint( 1 );\r\n\r\n\t\tif ( ! startPoint.equals( endPoint ) ) {\r\n\r\n\t\t\tthis.curves.push( new LineCurve( endPoint, startPoint ) );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t// To get accurate point with reference to\r\n\t// entire path distance at time t,\r\n\t// following has to be done:\r\n\r\n\t// 1. Length of each sub path have to be known\r\n\t// 2. Locate and identify type of curve\r\n\t// 3. Get t for the curve\r\n\t// 4. Return curve.getPointAt(t')\r\n\r\n\tgetPoint: function ( t ) {\r\n\r\n\t\tconst d = t * this.getLength();\r\n\t\tconst curveLengths = this.getCurveLengths();\r\n\t\tlet i = 0;\r\n\r\n\t\t// To think about boundaries points.\r\n\r\n\t\twhile ( i < curveLengths.length ) {\r\n\r\n\t\t\tif ( curveLengths[ i ] >= d ) {\r\n\r\n\t\t\t\tconst diff = curveLengths[ i ] - d;\r\n\t\t\t\tconst curve = this.curves[ i ];\r\n\r\n\t\t\t\tconst segmentLength = curve.getLength();\r\n\t\t\t\tconst u = segmentLength === 0 ? 0 : 1 - diff / segmentLength;\r\n\r\n\t\t\t\treturn curve.getPointAt( u );\r\n\r\n\t\t\t}\r\n\r\n\t\t\ti ++;\r\n\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\r\n\t\t// loop where sum != 0, sum > d , sum+1 1 && ! points[ points.length - 1 ].equals( points[ 0 ] ) ) {\r\n\r\n\t\t\tpoints.push( points[ 0 ] );\r\n\r\n\t\t}\r\n\r\n\t\treturn points;\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tCurve.prototype.copy.call( this, source );\r\n\r\n\t\tthis.curves = [];\r\n\r\n\t\tfor ( let i = 0, l = source.curves.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst curve = source.curves[ i ];\r\n\r\n\t\t\tthis.curves.push( curve.clone() );\r\n\r\n\t\t}\r\n\r\n\t\tthis.autoClose = source.autoClose;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\tconst data = Curve.prototype.toJSON.call( this );\r\n\r\n\t\tdata.autoClose = this.autoClose;\r\n\t\tdata.curves = [];\r\n\r\n\t\tfor ( let i = 0, l = this.curves.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst curve = this.curves[ i ];\r\n\t\t\tdata.curves.push( curve.toJSON() );\r\n\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\r\n\t},\r\n\r\n\tfromJSON: function ( json ) {\r\n\r\n\t\tCurve.prototype.fromJSON.call( this, json );\r\n\r\n\t\tthis.autoClose = json.autoClose;\r\n\t\tthis.curves = [];\r\n\r\n\t\tfor ( let i = 0, l = json.curves.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst curve = json.curves[ i ];\r\n\t\t\tthis.curves.push( new Curves[ curve.type ]().fromJSON( curve ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction Path( points ) {\r\n\r\n\tCurvePath.call( this );\r\n\r\n\tthis.type = 'Path';\r\n\r\n\tthis.currentPoint = new Vector2();\r\n\r\n\tif ( points ) {\r\n\r\n\t\tthis.setFromPoints( points );\r\n\r\n\t}\r\n\r\n}\r\n\r\nPath.prototype = Object.assign( Object.create( CurvePath.prototype ), {\r\n\r\n\tconstructor: Path,\r\n\r\n\tsetFromPoints: function ( points ) {\r\n\r\n\t\tthis.moveTo( points[ 0 ].x, points[ 0 ].y );\r\n\r\n\t\tfor ( let i = 1, l = points.length; i < l; i ++ ) {\r\n\r\n\t\t\tthis.lineTo( points[ i ].x, points[ i ].y );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tmoveTo: function ( x, y ) {\r\n\r\n\t\tthis.currentPoint.set( x, y ); // TODO consider referencing vectors instead of copying?\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tlineTo: function ( x, y ) {\r\n\r\n\t\tconst curve = new LineCurve( this.currentPoint.clone(), new Vector2( x, y ) );\r\n\t\tthis.curves.push( curve );\r\n\r\n\t\tthis.currentPoint.set( x, y );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\r\n\r\n\t\tconst curve = new QuadraticBezierCurve(\r\n\t\t\tthis.currentPoint.clone(),\r\n\t\t\tnew Vector2( aCPx, aCPy ),\r\n\t\t\tnew Vector2( aX, aY )\r\n\t\t);\r\n\r\n\t\tthis.curves.push( curve );\r\n\r\n\t\tthis.currentPoint.set( aX, aY );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\r\n\r\n\t\tconst curve = new CubicBezierCurve(\r\n\t\t\tthis.currentPoint.clone(),\r\n\t\t\tnew Vector2( aCP1x, aCP1y ),\r\n\t\t\tnew Vector2( aCP2x, aCP2y ),\r\n\t\t\tnew Vector2( aX, aY )\r\n\t\t);\r\n\r\n\t\tthis.curves.push( curve );\r\n\r\n\t\tthis.currentPoint.set( aX, aY );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsplineThru: function ( pts /*Array of Vector*/ ) {\r\n\r\n\t\tconst npts = [ this.currentPoint.clone() ].concat( pts );\r\n\r\n\t\tconst curve = new SplineCurve( npts );\r\n\t\tthis.curves.push( curve );\r\n\r\n\t\tthis.currentPoint.copy( pts[ pts.length - 1 ] );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\r\n\r\n\t\tconst x0 = this.currentPoint.x;\r\n\t\tconst y0 = this.currentPoint.y;\r\n\r\n\t\tthis.absarc( aX + x0, aY + y0, aRadius,\r\n\t\t\taStartAngle, aEndAngle, aClockwise );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tabsarc: function ( aX, aY, aRadius, aStartAngle, aEndAngle, aClockwise ) {\r\n\r\n\t\tthis.absellipse( aX, aY, aRadius, aRadius, aStartAngle, aEndAngle, aClockwise );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\r\n\r\n\t\tconst x0 = this.currentPoint.x;\r\n\t\tconst y0 = this.currentPoint.y;\r\n\r\n\t\tthis.absellipse( aX + x0, aY + y0, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tabsellipse: function ( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation ) {\r\n\r\n\t\tconst curve = new EllipseCurve( aX, aY, xRadius, yRadius, aStartAngle, aEndAngle, aClockwise, aRotation );\r\n\r\n\t\tif ( this.curves.length > 0 ) {\r\n\r\n\t\t\t// if a previous curve is present, attempt to join\r\n\t\t\tconst firstPoint = curve.getPoint( 0 );\r\n\r\n\t\t\tif ( ! firstPoint.equals( this.currentPoint ) ) {\r\n\r\n\t\t\t\tthis.lineTo( firstPoint.x, firstPoint.y );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis.curves.push( curve );\r\n\r\n\t\tconst lastPoint = curve.getPoint( 1 );\r\n\t\tthis.currentPoint.copy( lastPoint );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tCurvePath.prototype.copy.call( this, source );\r\n\r\n\t\tthis.currentPoint.copy( source.currentPoint );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\tconst data = CurvePath.prototype.toJSON.call( this );\r\n\r\n\t\tdata.currentPoint = this.currentPoint.toArray();\r\n\r\n\t\treturn data;\r\n\r\n\t},\r\n\r\n\tfromJSON: function ( json ) {\r\n\r\n\t\tCurvePath.prototype.fromJSON.call( this, json );\r\n\r\n\t\tthis.currentPoint.fromArray( json.currentPoint );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction Shape( points ) {\r\n\r\n\tPath.call( this, points );\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n\tthis.type = 'Shape';\r\n\r\n\tthis.holes = [];\r\n\r\n}\r\n\r\nShape.prototype = Object.assign( Object.create( Path.prototype ), {\r\n\r\n\tconstructor: Shape,\r\n\r\n\tgetPointsHoles: function ( divisions ) {\r\n\r\n\t\tconst holesPts = [];\r\n\r\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\r\n\r\n\t\t\tholesPts[ i ] = this.holes[ i ].getPoints( divisions );\r\n\r\n\t\t}\r\n\r\n\t\treturn holesPts;\r\n\r\n\t},\r\n\r\n\t// get points of shape and holes (keypoints based on segments parameter)\r\n\r\n\textractPoints: function ( divisions ) {\r\n\r\n\t\treturn {\r\n\r\n\t\t\tshape: this.getPoints( divisions ),\r\n\t\t\tholes: this.getPointsHoles( divisions )\r\n\r\n\t\t};\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tPath.prototype.copy.call( this, source );\r\n\r\n\t\tthis.holes = [];\r\n\r\n\t\tfor ( let i = 0, l = source.holes.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst hole = source.holes[ i ];\r\n\r\n\t\t\tthis.holes.push( hole.clone() );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\tconst data = Path.prototype.toJSON.call( this );\r\n\r\n\t\tdata.uuid = this.uuid;\r\n\t\tdata.holes = [];\r\n\r\n\t\tfor ( let i = 0, l = this.holes.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst hole = this.holes[ i ];\r\n\t\t\tdata.holes.push( hole.toJSON() );\r\n\r\n\t\t}\r\n\r\n\t\treturn data;\r\n\r\n\t},\r\n\r\n\tfromJSON: function ( json ) {\r\n\r\n\t\tPath.prototype.fromJSON.call( this, json );\r\n\r\n\t\tthis.uuid = json.uuid;\r\n\t\tthis.holes = [];\r\n\r\n\t\tfor ( let i = 0, l = json.holes.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst hole = json.holes[ i ];\r\n\t\t\tthis.holes.push( new Path().fromJSON( hole ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction Light( color, intensity = 1 ) {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.type = 'Light';\r\n\r\n\tthis.color = new Color( color );\r\n\tthis.intensity = intensity;\r\n\r\n}\r\n\r\nLight.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: Light,\r\n\r\n\tisLight: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tObject3D.prototype.copy.call( this, source );\r\n\r\n\t\tthis.color.copy( source.color );\r\n\t\tthis.intensity = source.intensity;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\r\n\r\n\t\tdata.object.color = this.color.getHex();\r\n\t\tdata.object.intensity = this.intensity;\r\n\r\n\t\tif ( this.groundColor !== undefined ) data.object.groundColor = this.groundColor.getHex();\r\n\r\n\t\tif ( this.distance !== undefined ) data.object.distance = this.distance;\r\n\t\tif ( this.angle !== undefined ) data.object.angle = this.angle;\r\n\t\tif ( this.decay !== undefined ) data.object.decay = this.decay;\r\n\t\tif ( this.penumbra !== undefined ) data.object.penumbra = this.penumbra;\r\n\r\n\t\tif ( this.shadow !== undefined ) data.object.shadow = this.shadow.toJSON();\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction HemisphereLight( skyColor, groundColor, intensity ) {\r\n\r\n\tLight.call( this, skyColor, intensity );\r\n\r\n\tthis.type = 'HemisphereLight';\r\n\r\n\tthis.position.copy( Object3D.DefaultUp );\r\n\tthis.updateMatrix();\r\n\r\n\tthis.groundColor = new Color( groundColor );\r\n\r\n}\r\n\r\nHemisphereLight.prototype = Object.assign( Object.create( Light.prototype ), {\r\n\r\n\tconstructor: HemisphereLight,\r\n\r\n\tisHemisphereLight: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tLight.prototype.copy.call( this, source );\r\n\r\n\t\tthis.groundColor.copy( source.groundColor );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction LightShadow( camera ) {\r\n\r\n\tthis.camera = camera;\r\n\r\n\tthis.bias = 0;\r\n\tthis.normalBias = 0;\r\n\tthis.radius = 1;\r\n\r\n\tthis.mapSize = new Vector2( 512, 512 );\r\n\r\n\tthis.map = null;\r\n\tthis.mapPass = null;\r\n\tthis.matrix = new Matrix4();\r\n\r\n\tthis.autoUpdate = true;\r\n\tthis.needsUpdate = false;\r\n\r\n\tthis._frustum = new Frustum();\r\n\tthis._frameExtents = new Vector2( 1, 1 );\r\n\r\n\tthis._viewportCount = 1;\r\n\r\n\tthis._viewports = [\r\n\r\n\t\tnew Vector4( 0, 0, 1, 1 )\r\n\r\n\t];\r\n\r\n}\r\n\r\nObject.assign( LightShadow.prototype, {\r\n\r\n\t_projScreenMatrix: new Matrix4(),\r\n\r\n\t_lightPositionWorld: new Vector3(),\r\n\r\n\t_lookTarget: new Vector3(),\r\n\r\n\tgetViewportCount: function () {\r\n\r\n\t\treturn this._viewportCount;\r\n\r\n\t},\r\n\r\n\tgetFrustum: function () {\r\n\r\n\t\treturn this._frustum;\r\n\r\n\t},\r\n\r\n\tupdateMatrices: function ( light ) {\r\n\r\n\t\tconst shadowCamera = this.camera,\r\n\t\t\tshadowMatrix = this.matrix,\r\n\t\t\tprojScreenMatrix = this._projScreenMatrix,\r\n\t\t\tlookTarget = this._lookTarget,\r\n\t\t\tlightPositionWorld = this._lightPositionWorld;\r\n\r\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\r\n\t\tshadowCamera.position.copy( lightPositionWorld );\r\n\r\n\t\tlookTarget.setFromMatrixPosition( light.target.matrixWorld );\r\n\t\tshadowCamera.lookAt( lookTarget );\r\n\t\tshadowCamera.updateMatrixWorld();\r\n\r\n\t\tprojScreenMatrix.multiplyMatrices( shadowCamera.projectionMatrix, shadowCamera.matrixWorldInverse );\r\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\r\n\r\n\t\tshadowMatrix.set(\r\n\t\t\t0.5, 0.0, 0.0, 0.5,\r\n\t\t\t0.0, 0.5, 0.0, 0.5,\r\n\t\t\t0.0, 0.0, 0.5, 0.5,\r\n\t\t\t0.0, 0.0, 0.0, 1.0\r\n\t\t);\r\n\r\n\t\tshadowMatrix.multiply( shadowCamera.projectionMatrix );\r\n\t\tshadowMatrix.multiply( shadowCamera.matrixWorldInverse );\r\n\r\n\t},\r\n\r\n\tgetViewport: function ( viewportIndex ) {\r\n\r\n\t\treturn this._viewports[ viewportIndex ];\r\n\r\n\t},\r\n\r\n\tgetFrameExtents: function () {\r\n\r\n\t\treturn this._frameExtents;\r\n\r\n\t},\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tthis.camera = source.camera.clone();\r\n\r\n\t\tthis.bias = source.bias;\r\n\t\tthis.radius = source.radius;\r\n\r\n\t\tthis.mapSize.copy( source.mapSize );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\tconst object = {};\r\n\r\n\t\tif ( this.bias !== 0 ) object.bias = this.bias;\r\n\t\tif ( this.normalBias !== 0 ) object.normalBias = this.normalBias;\r\n\t\tif ( this.radius !== 1 ) object.radius = this.radius;\r\n\t\tif ( this.mapSize.x !== 512 || this.mapSize.y !== 512 ) object.mapSize = this.mapSize.toArray();\r\n\r\n\t\tobject.camera = this.camera.toJSON( false ).object;\r\n\t\tdelete object.camera.matrix;\r\n\r\n\t\treturn object;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction SpotLightShadow() {\r\n\r\n\tLightShadow.call( this, new PerspectiveCamera( 50, 1, 0.5, 500 ) );\r\n\r\n\tthis.focus = 1;\r\n\r\n}\r\n\r\nSpotLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\r\n\r\n\tconstructor: SpotLightShadow,\r\n\r\n\tisSpotLightShadow: true,\r\n\r\n\tupdateMatrices: function ( light ) {\r\n\r\n\t\tconst camera = this.camera;\r\n\r\n\t\tconst fov = MathUtils.RAD2DEG * 2 * light.angle * this.focus;\r\n\t\tconst aspect = this.mapSize.width / this.mapSize.height;\r\n\t\tconst far = light.distance || camera.far;\r\n\r\n\t\tif ( fov !== camera.fov || aspect !== camera.aspect || far !== camera.far ) {\r\n\r\n\t\t\tcamera.fov = fov;\r\n\t\t\tcamera.aspect = aspect;\r\n\t\t\tcamera.far = far;\r\n\t\t\tcamera.updateProjectionMatrix();\r\n\r\n\t\t}\r\n\r\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction SpotLight( color, intensity, distance, angle, penumbra, decay ) {\r\n\r\n\tLight.call( this, color, intensity );\r\n\r\n\tthis.type = 'SpotLight';\r\n\r\n\tthis.position.copy( Object3D.DefaultUp );\r\n\tthis.updateMatrix();\r\n\r\n\tthis.target = new Object3D();\r\n\r\n\tObject.defineProperty( this, 'power', {\r\n\t\tget: function () {\r\n\r\n\t\t\t// intensity = power per solid angle.\r\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\n\t\t\treturn this.intensity * Math.PI;\r\n\r\n\t\t},\r\n\t\tset: function ( power ) {\r\n\r\n\t\t\t// intensity = power per solid angle.\r\n\t\t\t// ref: equation (17) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\n\t\t\tthis.intensity = power / Math.PI;\r\n\r\n\t\t}\r\n\t} );\r\n\r\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\r\n\tthis.angle = ( angle !== undefined ) ? angle : Math.PI / 3;\r\n\tthis.penumbra = ( penumbra !== undefined ) ? penumbra : 0;\r\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\r\n\r\n\tthis.shadow = new SpotLightShadow();\r\n\r\n}\r\n\r\nSpotLight.prototype = Object.assign( Object.create( Light.prototype ), {\r\n\r\n\tconstructor: SpotLight,\r\n\r\n\tisSpotLight: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tLight.prototype.copy.call( this, source );\r\n\r\n\t\tthis.distance = source.distance;\r\n\t\tthis.angle = source.angle;\r\n\t\tthis.penumbra = source.penumbra;\r\n\t\tthis.decay = source.decay;\r\n\r\n\t\tthis.target = source.target.clone();\r\n\r\n\t\tthis.shadow = source.shadow.clone();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction PointLightShadow() {\r\n\r\n\tLightShadow.call( this, new PerspectiveCamera( 90, 1, 0.5, 500 ) );\r\n\r\n\tthis._frameExtents = new Vector2( 4, 2 );\r\n\r\n\tthis._viewportCount = 6;\r\n\r\n\tthis._viewports = [\r\n\t\t// These viewports map a cube-map onto a 2D texture with the\r\n\t\t// following orientation:\r\n\t\t//\r\n\t\t// xzXZ\r\n\t\t// y Y\r\n\t\t//\r\n\t\t// X - Positive x direction\r\n\t\t// x - Negative x direction\r\n\t\t// Y - Positive y direction\r\n\t\t// y - Negative y direction\r\n\t\t// Z - Positive z direction\r\n\t\t// z - Negative z direction\r\n\r\n\t\t// positive X\r\n\t\tnew Vector4( 2, 1, 1, 1 ),\r\n\t\t// negative X\r\n\t\tnew Vector4( 0, 1, 1, 1 ),\r\n\t\t// positive Z\r\n\t\tnew Vector4( 3, 1, 1, 1 ),\r\n\t\t// negative Z\r\n\t\tnew Vector4( 1, 1, 1, 1 ),\r\n\t\t// positive Y\r\n\t\tnew Vector4( 3, 0, 1, 1 ),\r\n\t\t// negative Y\r\n\t\tnew Vector4( 1, 0, 1, 1 )\r\n\t];\r\n\r\n\tthis._cubeDirections = [\r\n\t\tnew Vector3( 1, 0, 0 ), new Vector3( - 1, 0, 0 ), new Vector3( 0, 0, 1 ),\r\n\t\tnew Vector3( 0, 0, - 1 ), new Vector3( 0, 1, 0 ), new Vector3( 0, - 1, 0 )\r\n\t];\r\n\r\n\tthis._cubeUps = [\r\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ), new Vector3( 0, 1, 0 ),\r\n\t\tnew Vector3( 0, 1, 0 ), new Vector3( 0, 0, 1 ),\tnew Vector3( 0, 0, - 1 )\r\n\t];\r\n\r\n}\r\n\r\nPointLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\r\n\r\n\tconstructor: PointLightShadow,\r\n\r\n\tisPointLightShadow: true,\r\n\r\n\tupdateMatrices: function ( light, viewportIndex = 0 ) {\r\n\r\n\t\tconst camera = this.camera,\r\n\t\t\tshadowMatrix = this.matrix,\r\n\t\t\tlightPositionWorld = this._lightPositionWorld,\r\n\t\t\tlookTarget = this._lookTarget,\r\n\t\t\tprojScreenMatrix = this._projScreenMatrix;\r\n\r\n\t\tlightPositionWorld.setFromMatrixPosition( light.matrixWorld );\r\n\t\tcamera.position.copy( lightPositionWorld );\r\n\r\n\t\tlookTarget.copy( camera.position );\r\n\t\tlookTarget.add( this._cubeDirections[ viewportIndex ] );\r\n\t\tcamera.up.copy( this._cubeUps[ viewportIndex ] );\r\n\t\tcamera.lookAt( lookTarget );\r\n\t\tcamera.updateMatrixWorld();\r\n\r\n\t\tshadowMatrix.makeTranslation( - lightPositionWorld.x, - lightPositionWorld.y, - lightPositionWorld.z );\r\n\r\n\t\tprojScreenMatrix.multiplyMatrices( camera.projectionMatrix, camera.matrixWorldInverse );\r\n\t\tthis._frustum.setFromProjectionMatrix( projScreenMatrix );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction PointLight( color, intensity, distance, decay ) {\r\n\r\n\tLight.call( this, color, intensity );\r\n\r\n\tthis.type = 'PointLight';\r\n\r\n\tObject.defineProperty( this, 'power', {\r\n\t\tget: function () {\r\n\r\n\t\t\t// intensity = power per solid angle.\r\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\n\t\t\treturn this.intensity * 4 * Math.PI;\r\n\r\n\t\t},\r\n\t\tset: function ( power ) {\r\n\r\n\t\t\t// intensity = power per solid angle.\r\n\t\t\t// ref: equation (15) from https://seblagarde.files.wordpress.com/2015/07/course_notes_moving_frostbite_to_pbr_v32.pdf\r\n\t\t\tthis.intensity = power / ( 4 * Math.PI );\r\n\r\n\t\t}\r\n\t} );\r\n\r\n\tthis.distance = ( distance !== undefined ) ? distance : 0;\r\n\tthis.decay = ( decay !== undefined ) ? decay : 1;\t// for physically correct lights, should be 2.\r\n\r\n\tthis.shadow = new PointLightShadow();\r\n\r\n}\r\n\r\nPointLight.prototype = Object.assign( Object.create( Light.prototype ), {\r\n\r\n\tconstructor: PointLight,\r\n\r\n\tisPointLight: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tLight.prototype.copy.call( this, source );\r\n\r\n\t\tthis.distance = source.distance;\r\n\t\tthis.decay = source.decay;\r\n\r\n\t\tthis.shadow = source.shadow.clone();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction OrthographicCamera( left = - 1, right = 1, top = 1, bottom = - 1, near = 0.1, far = 2000 ) {\r\n\r\n\tCamera.call( this );\r\n\r\n\tthis.type = 'OrthographicCamera';\r\n\r\n\tthis.zoom = 1;\r\n\tthis.view = null;\r\n\r\n\tthis.left = left;\r\n\tthis.right = right;\r\n\tthis.top = top;\r\n\tthis.bottom = bottom;\r\n\r\n\tthis.near = near;\r\n\tthis.far = far;\r\n\r\n\tthis.updateProjectionMatrix();\r\n\r\n}\r\n\r\nOrthographicCamera.prototype = Object.assign( Object.create( Camera.prototype ), {\r\n\r\n\tconstructor: OrthographicCamera,\r\n\r\n\tisOrthographicCamera: true,\r\n\r\n\tcopy: function ( source, recursive ) {\r\n\r\n\t\tCamera.prototype.copy.call( this, source, recursive );\r\n\r\n\t\tthis.left = source.left;\r\n\t\tthis.right = source.right;\r\n\t\tthis.top = source.top;\r\n\t\tthis.bottom = source.bottom;\r\n\t\tthis.near = source.near;\r\n\t\tthis.far = source.far;\r\n\r\n\t\tthis.zoom = source.zoom;\r\n\t\tthis.view = source.view === null ? null : Object.assign( {}, source.view );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetViewOffset: function ( fullWidth, fullHeight, x, y, width, height ) {\r\n\r\n\t\tif ( this.view === null ) {\r\n\r\n\t\t\tthis.view = {\r\n\t\t\t\tenabled: true,\r\n\t\t\t\tfullWidth: 1,\r\n\t\t\t\tfullHeight: 1,\r\n\t\t\t\toffsetX: 0,\r\n\t\t\t\toffsetY: 0,\r\n\t\t\t\twidth: 1,\r\n\t\t\t\theight: 1\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t\tthis.view.enabled = true;\r\n\t\tthis.view.fullWidth = fullWidth;\r\n\t\tthis.view.fullHeight = fullHeight;\r\n\t\tthis.view.offsetX = x;\r\n\t\tthis.view.offsetY = y;\r\n\t\tthis.view.width = width;\r\n\t\tthis.view.height = height;\r\n\r\n\t\tthis.updateProjectionMatrix();\r\n\r\n\t},\r\n\r\n\tclearViewOffset: function () {\r\n\r\n\t\tif ( this.view !== null ) {\r\n\r\n\t\t\tthis.view.enabled = false;\r\n\r\n\t\t}\r\n\r\n\t\tthis.updateProjectionMatrix();\r\n\r\n\t},\r\n\r\n\tupdateProjectionMatrix: function () {\r\n\r\n\t\tconst dx = ( this.right - this.left ) / ( 2 * this.zoom );\r\n\t\tconst dy = ( this.top - this.bottom ) / ( 2 * this.zoom );\r\n\t\tconst cx = ( this.right + this.left ) / 2;\r\n\t\tconst cy = ( this.top + this.bottom ) / 2;\r\n\r\n\t\tlet left = cx - dx;\r\n\t\tlet right = cx + dx;\r\n\t\tlet top = cy + dy;\r\n\t\tlet bottom = cy - dy;\r\n\r\n\t\tif ( this.view !== null && this.view.enabled ) {\r\n\r\n\t\t\tconst scaleW = ( this.right - this.left ) / this.view.fullWidth / this.zoom;\r\n\t\t\tconst scaleH = ( this.top - this.bottom ) / this.view.fullHeight / this.zoom;\r\n\r\n\t\t\tleft += scaleW * this.view.offsetX;\r\n\t\t\tright = left + scaleW * this.view.width;\r\n\t\t\ttop -= scaleH * this.view.offsetY;\r\n\t\t\tbottom = top - scaleH * this.view.height;\r\n\r\n\t\t}\r\n\r\n\t\tthis.projectionMatrix.makeOrthographic( left, right, top, bottom, this.near, this.far );\r\n\r\n\t\tthis.projectionMatrixInverse.copy( this.projectionMatrix ).invert();\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst data = Object3D.prototype.toJSON.call( this, meta );\r\n\r\n\t\tdata.object.zoom = this.zoom;\r\n\t\tdata.object.left = this.left;\r\n\t\tdata.object.right = this.right;\r\n\t\tdata.object.top = this.top;\r\n\t\tdata.object.bottom = this.bottom;\r\n\t\tdata.object.near = this.near;\r\n\t\tdata.object.far = this.far;\r\n\r\n\t\tif ( this.view !== null ) data.object.view = Object.assign( {}, this.view );\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction DirectionalLightShadow() {\r\n\r\n\tLightShadow.call( this, new OrthographicCamera( - 5, 5, 5, - 5, 0.5, 500 ) );\r\n\r\n}\r\n\r\nDirectionalLightShadow.prototype = Object.assign( Object.create( LightShadow.prototype ), {\r\n\r\n\tconstructor: DirectionalLightShadow,\r\n\r\n\tisDirectionalLightShadow: true,\r\n\r\n\tupdateMatrices: function ( light ) {\r\n\r\n\t\tLightShadow.prototype.updateMatrices.call( this, light );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction DirectionalLight( color, intensity ) {\r\n\r\n\tLight.call( this, color, intensity );\r\n\r\n\tthis.type = 'DirectionalLight';\r\n\r\n\tthis.position.copy( Object3D.DefaultUp );\r\n\tthis.updateMatrix();\r\n\r\n\tthis.target = new Object3D();\r\n\r\n\tthis.shadow = new DirectionalLightShadow();\r\n\r\n}\r\n\r\nDirectionalLight.prototype = Object.assign( Object.create( Light.prototype ), {\r\n\r\n\tconstructor: DirectionalLight,\r\n\r\n\tisDirectionalLight: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tLight.prototype.copy.call( this, source );\r\n\r\n\t\tthis.target = source.target.clone();\r\n\r\n\t\tthis.shadow = source.shadow.clone();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction AmbientLight( color, intensity ) {\r\n\r\n\tLight.call( this, color, intensity );\r\n\r\n\tthis.type = 'AmbientLight';\r\n\r\n}\r\n\r\nAmbientLight.prototype = Object.assign( Object.create( Light.prototype ), {\r\n\r\n\tconstructor: AmbientLight,\r\n\r\n\tisAmbientLight: true\r\n\r\n} );\r\n\r\nfunction RectAreaLight( color, intensity, width, height ) {\r\n\r\n\tLight.call( this, color, intensity );\r\n\r\n\tthis.type = 'RectAreaLight';\r\n\r\n\tthis.width = ( width !== undefined ) ? width : 10;\r\n\tthis.height = ( height !== undefined ) ? height : 10;\r\n\r\n}\r\n\r\nRectAreaLight.prototype = Object.assign( Object.create( Light.prototype ), {\r\n\r\n\tconstructor: RectAreaLight,\r\n\r\n\tisRectAreaLight: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tLight.prototype.copy.call( this, source );\r\n\r\n\t\tthis.width = source.width;\r\n\t\tthis.height = source.height;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\r\n\r\n\t\tdata.object.width = this.width;\r\n\t\tdata.object.height = this.height;\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * Primary reference:\r\n * https://graphics.stanford.edu/papers/envmap/envmap.pdf\r\n *\r\n * Secondary reference:\r\n * https://www.ppsloan.org/publications/StupidSH36.pdf\r\n */\r\n\r\n// 3-band SH defined by 9 coefficients\r\n\r\nclass SphericalHarmonics3 {\r\n\r\n\tconstructor() {\r\n\r\n\t\tObject.defineProperty( this, 'isSphericalHarmonics3', { value: true } );\r\n\r\n\t\tthis.coefficients = [];\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tthis.coefficients.push( new Vector3() );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tset( coefficients ) {\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tthis.coefficients[ i ].copy( coefficients[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tzero() {\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tthis.coefficients[ i ].set( 0, 0, 0 );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t// get the radiance in the direction of the normal\r\n\t// target is a Vector3\r\n\tgetAt( normal, target ) {\r\n\r\n\t\t// normal is assumed to be unit length\r\n\r\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\r\n\r\n\t\tconst coeff = this.coefficients;\r\n\r\n\t\t// band 0\r\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.282095 );\r\n\r\n\t\t// band 1\r\n\t\ttarget.addScaledVector( coeff[ 1 ], 0.488603 * y );\r\n\t\ttarget.addScaledVector( coeff[ 2 ], 0.488603 * z );\r\n\t\ttarget.addScaledVector( coeff[ 3 ], 0.488603 * x );\r\n\r\n\t\t// band 2\r\n\t\ttarget.addScaledVector( coeff[ 4 ], 1.092548 * ( x * y ) );\r\n\t\ttarget.addScaledVector( coeff[ 5 ], 1.092548 * ( y * z ) );\r\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.315392 * ( 3.0 * z * z - 1.0 ) );\r\n\t\ttarget.addScaledVector( coeff[ 7 ], 1.092548 * ( x * z ) );\r\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.546274 * ( x * x - y * y ) );\r\n\r\n\t\treturn target;\r\n\r\n\t}\r\n\r\n\t// get the irradiance (radiance convolved with cosine lobe) in the direction of the normal\r\n\t// target is a Vector3\r\n\t// https://graphics.stanford.edu/papers/envmap/envmap.pdf\r\n\tgetIrradianceAt( normal, target ) {\r\n\r\n\t\t// normal is assumed to be unit length\r\n\r\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\r\n\r\n\t\tconst coeff = this.coefficients;\r\n\r\n\t\t// band 0\r\n\t\ttarget.copy( coeff[ 0 ] ).multiplyScalar( 0.886227 ); // π * 0.282095\r\n\r\n\t\t// band 1\r\n\t\ttarget.addScaledVector( coeff[ 1 ], 2.0 * 0.511664 * y ); // ( 2 * π / 3 ) * 0.488603\r\n\t\ttarget.addScaledVector( coeff[ 2 ], 2.0 * 0.511664 * z );\r\n\t\ttarget.addScaledVector( coeff[ 3 ], 2.0 * 0.511664 * x );\r\n\r\n\t\t// band 2\r\n\t\ttarget.addScaledVector( coeff[ 4 ], 2.0 * 0.429043 * x * y ); // ( π / 4 ) * 1.092548\r\n\t\ttarget.addScaledVector( coeff[ 5 ], 2.0 * 0.429043 * y * z );\r\n\t\ttarget.addScaledVector( coeff[ 6 ], 0.743125 * z * z - 0.247708 ); // ( π / 4 ) * 0.315392 * 3\r\n\t\ttarget.addScaledVector( coeff[ 7 ], 2.0 * 0.429043 * x * z );\r\n\t\ttarget.addScaledVector( coeff[ 8 ], 0.429043 * ( x * x - y * y ) ); // ( π / 4 ) * 0.546274\r\n\r\n\t\treturn target;\r\n\r\n\t}\r\n\r\n\tadd( sh ) {\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tthis.coefficients[ i ].add( sh.coefficients[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\taddScaledSH( sh, s ) {\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tthis.coefficients[ i ].addScaledVector( sh.coefficients[ i ], s );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tscale( s ) {\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tthis.coefficients[ i ].multiplyScalar( s );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tlerp( sh, alpha ) {\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tthis.coefficients[ i ].lerp( sh.coefficients[ i ], alpha );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( sh ) {\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tif ( ! this.coefficients[ i ].equals( sh.coefficients[ i ] ) ) {\r\n\r\n\t\t\t\treturn false;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\r\n\t}\r\n\r\n\tcopy( sh ) {\r\n\r\n\t\treturn this.set( sh.coefficients );\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tfromArray( array, offset = 0 ) {\r\n\r\n\t\tconst coefficients = this.coefficients;\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tcoefficients[ i ].fromArray( array, offset + ( i * 3 ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttoArray( array = [], offset = 0 ) {\r\n\r\n\t\tconst coefficients = this.coefficients;\r\n\r\n\t\tfor ( let i = 0; i < 9; i ++ ) {\r\n\r\n\t\t\tcoefficients[ i ].toArray( array, offset + ( i * 3 ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn array;\r\n\r\n\t}\r\n\r\n\t// evaluate the basis functions\r\n\t// shBasis is an Array[ 9 ]\r\n\tstatic getBasisAt( normal, shBasis ) {\r\n\r\n\t\t// normal is assumed to be unit length\r\n\r\n\t\tconst x = normal.x, y = normal.y, z = normal.z;\r\n\r\n\t\t// band 0\r\n\t\tshBasis[ 0 ] = 0.282095;\r\n\r\n\t\t// band 1\r\n\t\tshBasis[ 1 ] = 0.488603 * y;\r\n\t\tshBasis[ 2 ] = 0.488603 * z;\r\n\t\tshBasis[ 3 ] = 0.488603 * x;\r\n\r\n\t\t// band 2\r\n\t\tshBasis[ 4 ] = 1.092548 * x * y;\r\n\t\tshBasis[ 5 ] = 1.092548 * y * z;\r\n\t\tshBasis[ 6 ] = 0.315392 * ( 3 * z * z - 1 );\r\n\t\tshBasis[ 7 ] = 1.092548 * x * z;\r\n\t\tshBasis[ 8 ] = 0.546274 * ( x * x - y * y );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction LightProbe( sh, intensity ) {\r\n\r\n\tLight.call( this, undefined, intensity );\r\n\r\n\tthis.type = 'LightProbe';\r\n\r\n\tthis.sh = ( sh !== undefined ) ? sh : new SphericalHarmonics3();\r\n\r\n}\r\n\r\nLightProbe.prototype = Object.assign( Object.create( Light.prototype ), {\r\n\r\n\tconstructor: LightProbe,\r\n\r\n\tisLightProbe: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tLight.prototype.copy.call( this, source );\r\n\r\n\t\tthis.sh.copy( source.sh );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tfromJSON: function ( json ) {\r\n\r\n\t\tthis.intensity = json.intensity; // TODO: Move this bit to Light.fromJSON();\r\n\t\tthis.sh.fromArray( json.sh );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst data = Light.prototype.toJSON.call( this, meta );\r\n\r\n\t\tdata.object.sh = this.sh.toArray();\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction MaterialLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n\tthis.textures = {};\r\n\r\n}\r\n\r\nMaterialLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: MaterialLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst loader = new FileLoader( scope.manager );\r\n\t\tloader.setPath( scope.path );\r\n\t\tloader.setRequestHeader( scope.requestHeader );\r\n\t\tloader.setWithCredentials( scope.withCredentials );\r\n\t\tloader.load( url, function ( text ) {\r\n\r\n\t\t\ttry {\r\n\r\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\r\n\r\n\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\tif ( onError ) {\r\n\r\n\t\t\t\t\tonError( e );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.error( e );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.manager.itemError( url );\r\n\r\n\t\t\t}\r\n\r\n\t\t}, onProgress, onError );\r\n\r\n\t},\r\n\r\n\tparse: function ( json ) {\r\n\r\n\t\tconst textures = this.textures;\r\n\r\n\t\tfunction getTexture( name ) {\r\n\r\n\t\t\tif ( textures[ name ] === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.MaterialLoader: Undefined texture', name );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn textures[ name ];\r\n\r\n\t\t}\r\n\r\n\t\tconst material = new Materials[ json.type ]();\r\n\r\n\t\tif ( json.uuid !== undefined ) material.uuid = json.uuid;\r\n\t\tif ( json.name !== undefined ) material.name = json.name;\r\n\t\tif ( json.color !== undefined && material.color !== undefined ) material.color.setHex( json.color );\r\n\t\tif ( json.roughness !== undefined ) material.roughness = json.roughness;\r\n\t\tif ( json.metalness !== undefined ) material.metalness = json.metalness;\r\n\t\tif ( json.sheen !== undefined ) material.sheen = new Color().setHex( json.sheen );\r\n\t\tif ( json.emissive !== undefined && material.emissive !== undefined ) material.emissive.setHex( json.emissive );\r\n\t\tif ( json.specular !== undefined && material.specular !== undefined ) material.specular.setHex( json.specular );\r\n\t\tif ( json.shininess !== undefined ) material.shininess = json.shininess;\r\n\t\tif ( json.clearcoat !== undefined ) material.clearcoat = json.clearcoat;\r\n\t\tif ( json.clearcoatRoughness !== undefined ) material.clearcoatRoughness = json.clearcoatRoughness;\r\n\t\tif ( json.fog !== undefined ) material.fog = json.fog;\r\n\t\tif ( json.flatShading !== undefined ) material.flatShading = json.flatShading;\r\n\t\tif ( json.blending !== undefined ) material.blending = json.blending;\r\n\t\tif ( json.combine !== undefined ) material.combine = json.combine;\r\n\t\tif ( json.side !== undefined ) material.side = json.side;\r\n\t\tif ( json.opacity !== undefined ) material.opacity = json.opacity;\r\n\t\tif ( json.transparent !== undefined ) material.transparent = json.transparent;\r\n\t\tif ( json.alphaTest !== undefined ) material.alphaTest = json.alphaTest;\r\n\t\tif ( json.depthTest !== undefined ) material.depthTest = json.depthTest;\r\n\t\tif ( json.depthWrite !== undefined ) material.depthWrite = json.depthWrite;\r\n\t\tif ( json.colorWrite !== undefined ) material.colorWrite = json.colorWrite;\r\n\r\n\t\tif ( json.stencilWrite !== undefined ) material.stencilWrite = json.stencilWrite;\r\n\t\tif ( json.stencilWriteMask !== undefined ) material.stencilWriteMask = json.stencilWriteMask;\r\n\t\tif ( json.stencilFunc !== undefined ) material.stencilFunc = json.stencilFunc;\r\n\t\tif ( json.stencilRef !== undefined ) material.stencilRef = json.stencilRef;\r\n\t\tif ( json.stencilFuncMask !== undefined ) material.stencilFuncMask = json.stencilFuncMask;\r\n\t\tif ( json.stencilFail !== undefined ) material.stencilFail = json.stencilFail;\r\n\t\tif ( json.stencilZFail !== undefined ) material.stencilZFail = json.stencilZFail;\r\n\t\tif ( json.stencilZPass !== undefined ) material.stencilZPass = json.stencilZPass;\r\n\r\n\t\tif ( json.wireframe !== undefined ) material.wireframe = json.wireframe;\r\n\t\tif ( json.wireframeLinewidth !== undefined ) material.wireframeLinewidth = json.wireframeLinewidth;\r\n\t\tif ( json.wireframeLinecap !== undefined ) material.wireframeLinecap = json.wireframeLinecap;\r\n\t\tif ( json.wireframeLinejoin !== undefined ) material.wireframeLinejoin = json.wireframeLinejoin;\r\n\r\n\t\tif ( json.rotation !== undefined ) material.rotation = json.rotation;\r\n\r\n\t\tif ( json.linewidth !== 1 ) material.linewidth = json.linewidth;\r\n\t\tif ( json.dashSize !== undefined ) material.dashSize = json.dashSize;\r\n\t\tif ( json.gapSize !== undefined ) material.gapSize = json.gapSize;\r\n\t\tif ( json.scale !== undefined ) material.scale = json.scale;\r\n\r\n\t\tif ( json.polygonOffset !== undefined ) material.polygonOffset = json.polygonOffset;\r\n\t\tif ( json.polygonOffsetFactor !== undefined ) material.polygonOffsetFactor = json.polygonOffsetFactor;\r\n\t\tif ( json.polygonOffsetUnits !== undefined ) material.polygonOffsetUnits = json.polygonOffsetUnits;\r\n\r\n\t\tif ( json.skinning !== undefined ) material.skinning = json.skinning;\r\n\t\tif ( json.morphTargets !== undefined ) material.morphTargets = json.morphTargets;\r\n\t\tif ( json.morphNormals !== undefined ) material.morphNormals = json.morphNormals;\r\n\t\tif ( json.dithering !== undefined ) material.dithering = json.dithering;\r\n\r\n\t\tif ( json.vertexTangents !== undefined ) material.vertexTangents = json.vertexTangents;\r\n\r\n\t\tif ( json.visible !== undefined ) material.visible = json.visible;\r\n\r\n\t\tif ( json.toneMapped !== undefined ) material.toneMapped = json.toneMapped;\r\n\r\n\t\tif ( json.userData !== undefined ) material.userData = json.userData;\r\n\r\n\t\tif ( json.vertexColors !== undefined ) {\r\n\r\n\t\t\tif ( typeof json.vertexColors === 'number' ) {\r\n\r\n\t\t\t\tmaterial.vertexColors = ( json.vertexColors > 0 ) ? true : false;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tmaterial.vertexColors = json.vertexColors;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Shader Material\r\n\r\n\t\tif ( json.uniforms !== undefined ) {\r\n\r\n\t\t\tfor ( const name in json.uniforms ) {\r\n\r\n\t\t\t\tconst uniform = json.uniforms[ name ];\r\n\r\n\t\t\t\tmaterial.uniforms[ name ] = {};\r\n\r\n\t\t\t\tswitch ( uniform.type ) {\r\n\r\n\t\t\t\t\tcase 't':\r\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = getTexture( uniform.value );\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'c':\r\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Color().setHex( uniform.value );\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'v2':\r\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector2().fromArray( uniform.value );\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'v3':\r\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector3().fromArray( uniform.value );\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'v4':\r\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Vector4().fromArray( uniform.value );\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'm3':\r\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix3().fromArray( uniform.value );\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'm4':\r\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = new Matrix4().fromArray( uniform.value );\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tmaterial.uniforms[ name ].value = uniform.value;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( json.defines !== undefined ) material.defines = json.defines;\r\n\t\tif ( json.vertexShader !== undefined ) material.vertexShader = json.vertexShader;\r\n\t\tif ( json.fragmentShader !== undefined ) material.fragmentShader = json.fragmentShader;\r\n\r\n\t\tif ( json.extensions !== undefined ) {\r\n\r\n\t\t\tfor ( const key in json.extensions ) {\r\n\r\n\t\t\t\tmaterial.extensions[ key ] = json.extensions[ key ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Deprecated\r\n\r\n\t\tif ( json.shading !== undefined ) material.flatShading = json.shading === 1; // THREE.FlatShading\r\n\r\n\t\t// for PointsMaterial\r\n\r\n\t\tif ( json.size !== undefined ) material.size = json.size;\r\n\t\tif ( json.sizeAttenuation !== undefined ) material.sizeAttenuation = json.sizeAttenuation;\r\n\r\n\t\t// maps\r\n\r\n\t\tif ( json.map !== undefined ) material.map = getTexture( json.map );\r\n\t\tif ( json.matcap !== undefined ) material.matcap = getTexture( json.matcap );\r\n\r\n\t\tif ( json.alphaMap !== undefined ) material.alphaMap = getTexture( json.alphaMap );\r\n\r\n\t\tif ( json.bumpMap !== undefined ) material.bumpMap = getTexture( json.bumpMap );\r\n\t\tif ( json.bumpScale !== undefined ) material.bumpScale = json.bumpScale;\r\n\r\n\t\tif ( json.normalMap !== undefined ) material.normalMap = getTexture( json.normalMap );\r\n\t\tif ( json.normalMapType !== undefined ) material.normalMapType = json.normalMapType;\r\n\t\tif ( json.normalScale !== undefined ) {\r\n\r\n\t\t\tlet normalScale = json.normalScale;\r\n\r\n\t\t\tif ( Array.isArray( normalScale ) === false ) {\r\n\r\n\t\t\t\t// Blender exporter used to export a scalar. See #7459\r\n\r\n\t\t\t\tnormalScale = [ normalScale, normalScale ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmaterial.normalScale = new Vector2().fromArray( normalScale );\r\n\r\n\t\t}\r\n\r\n\t\tif ( json.displacementMap !== undefined ) material.displacementMap = getTexture( json.displacementMap );\r\n\t\tif ( json.displacementScale !== undefined ) material.displacementScale = json.displacementScale;\r\n\t\tif ( json.displacementBias !== undefined ) material.displacementBias = json.displacementBias;\r\n\r\n\t\tif ( json.roughnessMap !== undefined ) material.roughnessMap = getTexture( json.roughnessMap );\r\n\t\tif ( json.metalnessMap !== undefined ) material.metalnessMap = getTexture( json.metalnessMap );\r\n\r\n\t\tif ( json.emissiveMap !== undefined ) material.emissiveMap = getTexture( json.emissiveMap );\r\n\t\tif ( json.emissiveIntensity !== undefined ) material.emissiveIntensity = json.emissiveIntensity;\r\n\r\n\t\tif ( json.specularMap !== undefined ) material.specularMap = getTexture( json.specularMap );\r\n\r\n\t\tif ( json.envMap !== undefined ) material.envMap = getTexture( json.envMap );\r\n\t\tif ( json.envMapIntensity !== undefined ) material.envMapIntensity = json.envMapIntensity;\r\n\r\n\t\tif ( json.reflectivity !== undefined ) material.reflectivity = json.reflectivity;\r\n\t\tif ( json.refractionRatio !== undefined ) material.refractionRatio = json.refractionRatio;\r\n\r\n\t\tif ( json.lightMap !== undefined ) material.lightMap = getTexture( json.lightMap );\r\n\t\tif ( json.lightMapIntensity !== undefined ) material.lightMapIntensity = json.lightMapIntensity;\r\n\r\n\t\tif ( json.aoMap !== undefined ) material.aoMap = getTexture( json.aoMap );\r\n\t\tif ( json.aoMapIntensity !== undefined ) material.aoMapIntensity = json.aoMapIntensity;\r\n\r\n\t\tif ( json.gradientMap !== undefined ) material.gradientMap = getTexture( json.gradientMap );\r\n\r\n\t\tif ( json.clearcoatMap !== undefined ) material.clearcoatMap = getTexture( json.clearcoatMap );\r\n\t\tif ( json.clearcoatRoughnessMap !== undefined ) material.clearcoatRoughnessMap = getTexture( json.clearcoatRoughnessMap );\r\n\t\tif ( json.clearcoatNormalMap !== undefined ) material.clearcoatNormalMap = getTexture( json.clearcoatNormalMap );\r\n\t\tif ( json.clearcoatNormalScale !== undefined ) material.clearcoatNormalScale = new Vector2().fromArray( json.clearcoatNormalScale );\r\n\r\n\t\tif ( json.transmission !== undefined ) material.transmission = json.transmission;\r\n\t\tif ( json.transmissionMap !== undefined ) material.transmissionMap = getTexture( json.transmissionMap );\r\n\r\n\t\treturn material;\r\n\r\n\t},\r\n\r\n\tsetTextures: function ( value ) {\r\n\r\n\t\tthis.textures = value;\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst LoaderUtils = {\r\n\r\n\tdecodeText: function ( array ) {\r\n\r\n\t\tif ( typeof TextDecoder !== 'undefined' ) {\r\n\r\n\t\t\treturn new TextDecoder().decode( array );\r\n\r\n\t\t}\r\n\r\n\t\t// Avoid the String.fromCharCode.apply(null, array) shortcut, which\r\n\t\t// throws a \"maximum call stack size exceeded\" error for large arrays.\r\n\r\n\t\tlet s = '';\r\n\r\n\t\tfor ( let i = 0, il = array.length; i < il; i ++ ) {\r\n\r\n\t\t\t// Implicitly assumes little-endian.\r\n\t\t\ts += String.fromCharCode( array[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\ttry {\r\n\r\n\t\t\t// merges multi-byte utf-8 characters.\r\n\r\n\t\t\treturn decodeURIComponent( escape( s ) );\r\n\r\n\t\t} catch ( e ) { // see #16358\r\n\r\n\t\t\treturn s;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\textractUrlBase: function ( url ) {\r\n\r\n\t\tconst index = url.lastIndexOf( '/' );\r\n\r\n\t\tif ( index === - 1 ) return './';\r\n\r\n\t\treturn url.substr( 0, index + 1 );\r\n\r\n\t}\r\n\r\n};\r\n\r\nfunction InstancedBufferGeometry() {\r\n\r\n\tBufferGeometry.call( this );\r\n\r\n\tthis.type = 'InstancedBufferGeometry';\r\n\tthis.instanceCount = Infinity;\r\n\r\n}\r\n\r\nInstancedBufferGeometry.prototype = Object.assign( Object.create( BufferGeometry.prototype ), {\r\n\r\n\tconstructor: InstancedBufferGeometry,\r\n\r\n\tisInstancedBufferGeometry: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tBufferGeometry.prototype.copy.call( this, source );\r\n\r\n\t\tthis.instanceCount = source.instanceCount;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tclone: function () {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t},\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\tconst data = BufferGeometry.prototype.toJSON.call( this );\r\n\r\n\t\tdata.instanceCount = this.instanceCount;\r\n\r\n\t\tdata.isInstancedBufferGeometry = true;\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction InstancedBufferAttribute( array, itemSize, normalized, meshPerAttribute ) {\r\n\r\n\tif ( typeof ( normalized ) === 'number' ) {\r\n\r\n\t\tmeshPerAttribute = normalized;\r\n\r\n\t\tnormalized = false;\r\n\r\n\t\tconsole.error( 'THREE.InstancedBufferAttribute: The constructor now expects normalized as the third argument.' );\r\n\r\n\t}\r\n\r\n\tBufferAttribute.call( this, array, itemSize, normalized );\r\n\r\n\tthis.meshPerAttribute = meshPerAttribute || 1;\r\n\r\n}\r\n\r\nInstancedBufferAttribute.prototype = Object.assign( Object.create( BufferAttribute.prototype ), {\r\n\r\n\tconstructor: InstancedBufferAttribute,\r\n\r\n\tisInstancedBufferAttribute: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tBufferAttribute.prototype.copy.call( this, source );\r\n\r\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ()\t{\r\n\r\n\t\tconst data = BufferAttribute.prototype.toJSON.call( this );\r\n\r\n\t\tdata.meshPerAttribute = this.meshPerAttribute;\r\n\r\n\t\tdata.isInstancedBufferAttribute = true;\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction BufferGeometryLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nBufferGeometryLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: BufferGeometryLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst loader = new FileLoader( scope.manager );\r\n\t\tloader.setPath( scope.path );\r\n\t\tloader.setRequestHeader( scope.requestHeader );\r\n\t\tloader.setWithCredentials( scope.withCredentials );\r\n\t\tloader.load( url, function ( text ) {\r\n\r\n\t\t\ttry {\r\n\r\n\t\t\t\tonLoad( scope.parse( JSON.parse( text ) ) );\r\n\r\n\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\tif ( onError ) {\r\n\r\n\t\t\t\t\tonError( e );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.error( e );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.manager.itemError( url );\r\n\r\n\t\t\t}\r\n\r\n\t\t}, onProgress, onError );\r\n\r\n\t},\r\n\r\n\tparse: function ( json ) {\r\n\r\n\t\tconst interleavedBufferMap = {};\r\n\t\tconst arrayBufferMap = {};\r\n\r\n\t\tfunction getInterleavedBuffer( json, uuid ) {\r\n\r\n\t\t\tif ( interleavedBufferMap[ uuid ] !== undefined ) return interleavedBufferMap[ uuid ];\r\n\r\n\t\t\tconst interleavedBuffers = json.interleavedBuffers;\r\n\t\t\tconst interleavedBuffer = interleavedBuffers[ uuid ];\r\n\r\n\t\t\tconst buffer = getArrayBuffer( json, interleavedBuffer.buffer );\r\n\r\n\t\t\tconst array = getTypedArray( interleavedBuffer.type, buffer );\r\n\t\t\tconst ib = new InterleavedBuffer( array, interleavedBuffer.stride );\r\n\t\t\tib.uuid = interleavedBuffer.uuid;\r\n\r\n\t\t\tinterleavedBufferMap[ uuid ] = ib;\r\n\r\n\t\t\treturn ib;\r\n\r\n\t\t}\r\n\r\n\t\tfunction getArrayBuffer( json, uuid ) {\r\n\r\n\t\t\tif ( arrayBufferMap[ uuid ] !== undefined ) return arrayBufferMap[ uuid ];\r\n\r\n\t\t\tconst arrayBuffers = json.arrayBuffers;\r\n\t\t\tconst arrayBuffer = arrayBuffers[ uuid ];\r\n\r\n\t\t\tconst ab = new Uint32Array( arrayBuffer ).buffer;\r\n\r\n\t\t\tarrayBufferMap[ uuid ] = ab;\r\n\r\n\t\t\treturn ab;\r\n\r\n\t\t}\r\n\r\n\t\tconst geometry = json.isInstancedBufferGeometry ? new InstancedBufferGeometry() : new BufferGeometry();\r\n\r\n\t\tconst index = json.data.index;\r\n\r\n\t\tif ( index !== undefined ) {\r\n\r\n\t\t\tconst typedArray = getTypedArray( index.type, index.array );\r\n\t\t\tgeometry.setIndex( new BufferAttribute( typedArray, 1 ) );\r\n\r\n\t\t}\r\n\r\n\t\tconst attributes = json.data.attributes;\r\n\r\n\t\tfor ( const key in attributes ) {\r\n\r\n\t\t\tconst attribute = attributes[ key ];\r\n\t\t\tlet bufferAttribute;\r\n\r\n\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\r\n\r\n\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\r\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\r\n\t\t\t\tconst bufferAttributeConstr = attribute.isInstancedBufferAttribute ? InstancedBufferAttribute : BufferAttribute;\r\n\t\t\t\tbufferAttribute = new bufferAttributeConstr( typedArray, attribute.itemSize, attribute.normalized );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\r\n\t\t\tgeometry.setAttribute( key, bufferAttribute );\r\n\r\n\t\t}\r\n\r\n\t\tconst morphAttributes = json.data.morphAttributes;\r\n\r\n\t\tif ( morphAttributes ) {\r\n\r\n\t\t\tfor ( const key in morphAttributes ) {\r\n\r\n\t\t\t\tconst attributeArray = morphAttributes[ key ];\r\n\r\n\t\t\t\tconst array = [];\r\n\r\n\t\t\t\tfor ( let i = 0, il = attributeArray.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tconst attribute = attributeArray[ i ];\r\n\t\t\t\t\tlet bufferAttribute;\r\n\r\n\t\t\t\t\tif ( attribute.isInterleavedBufferAttribute ) {\r\n\r\n\t\t\t\t\t\tconst interleavedBuffer = getInterleavedBuffer( json.data, attribute.data );\r\n\t\t\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( interleavedBuffer, attribute.itemSize, attribute.offset, attribute.normalized );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tconst typedArray = getTypedArray( attribute.type, attribute.array );\r\n\t\t\t\t\t\tbufferAttribute = new BufferAttribute( typedArray, attribute.itemSize, attribute.normalized );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( attribute.name !== undefined ) bufferAttribute.name = attribute.name;\r\n\t\t\t\t\tarray.push( bufferAttribute );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgeometry.morphAttributes[ key ] = array;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst morphTargetsRelative = json.data.morphTargetsRelative;\r\n\r\n\t\tif ( morphTargetsRelative ) {\r\n\r\n\t\t\tgeometry.morphTargetsRelative = true;\r\n\r\n\t\t}\r\n\r\n\t\tconst groups = json.data.groups || json.data.drawcalls || json.data.offsets;\r\n\r\n\t\tif ( groups !== undefined ) {\r\n\r\n\t\t\tfor ( let i = 0, n = groups.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\tconst group = groups[ i ];\r\n\r\n\t\t\t\tgeometry.addGroup( group.start, group.count, group.materialIndex );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst boundingSphere = json.data.boundingSphere;\r\n\r\n\t\tif ( boundingSphere !== undefined ) {\r\n\r\n\t\t\tconst center = new Vector3();\r\n\r\n\t\t\tif ( boundingSphere.center !== undefined ) {\r\n\r\n\t\t\t\tcenter.fromArray( boundingSphere.center );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tgeometry.boundingSphere = new Sphere( center, boundingSphere.radius );\r\n\r\n\t\t}\r\n\r\n\t\tif ( json.name ) geometry.name = json.name;\r\n\t\tif ( json.userData ) geometry.userData = json.userData;\r\n\r\n\t\treturn geometry;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nclass ObjectLoader extends Loader {\r\n\r\n\tconstructor( manager ) {\r\n\r\n\t\tsuper( manager );\r\n\r\n\t}\r\n\r\n\tload( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst path = ( this.path === '' ) ? LoaderUtils.extractUrlBase( url ) : this.path;\r\n\t\tthis.resourcePath = this.resourcePath || path;\r\n\r\n\t\tconst loader = new FileLoader( this.manager );\r\n\t\tloader.setPath( this.path );\r\n\t\tloader.setRequestHeader( this.requestHeader );\r\n\t\tloader.setWithCredentials( this.withCredentials );\r\n\t\tloader.load( url, function ( text ) {\r\n\r\n\t\t\tlet json = null;\r\n\r\n\t\t\ttry {\r\n\r\n\t\t\t\tjson = JSON.parse( text );\r\n\r\n\t\t\t} catch ( error ) {\r\n\r\n\t\t\t\tif ( onError !== undefined ) onError( error );\r\n\r\n\t\t\t\tconsole.error( 'THREE:ObjectLoader: Can\\'t parse ' + url + '.', error.message );\r\n\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst metadata = json.metadata;\r\n\r\n\t\t\tif ( metadata === undefined || metadata.type === undefined || metadata.type.toLowerCase() === 'geometry' ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.ObjectLoader: Can\\'t load ' + url );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tscope.parse( json, onLoad );\r\n\r\n\t\t}, onProgress, onError );\r\n\r\n\t}\r\n\r\n\tparse( json, onLoad ) {\r\n\r\n\t\tconst animations = this.parseAnimations( json.animations );\r\n\t\tconst shapes = this.parseShapes( json.shapes );\r\n\t\tconst geometries = this.parseGeometries( json.geometries, shapes );\r\n\r\n\t\tconst images = this.parseImages( json.images, function () {\r\n\r\n\t\t\tif ( onLoad !== undefined ) onLoad( object );\r\n\r\n\t\t} );\r\n\r\n\t\tconst textures = this.parseTextures( json.textures, images );\r\n\t\tconst materials = this.parseMaterials( json.materials, textures );\r\n\r\n\t\tconst object = this.parseObject( json.object, geometries, materials, animations );\r\n\t\tconst skeletons = this.parseSkeletons( json.skeletons, object );\r\n\r\n\t\tthis.bindSkeletons( object, skeletons );\r\n\r\n\t\t//\r\n\r\n\t\tif ( onLoad !== undefined ) {\r\n\r\n\t\t\tlet hasImages = false;\r\n\r\n\t\t\tfor ( const uuid in images ) {\r\n\r\n\t\t\t\tif ( images[ uuid ] instanceof HTMLImageElement ) {\r\n\r\n\t\t\t\t\thasImages = true;\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasImages === false ) onLoad( object );\r\n\r\n\t\t}\r\n\r\n\t\treturn object;\r\n\r\n\t}\r\n\r\n\tparseShapes( json ) {\r\n\r\n\t\tconst shapes = {};\r\n\r\n\t\tif ( json !== undefined ) {\r\n\r\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst shape = new Shape().fromJSON( json[ i ] );\r\n\r\n\t\t\t\tshapes[ shape.uuid ] = shape;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn shapes;\r\n\r\n\t}\r\n\r\n\tparseSkeletons( json, object ) {\r\n\r\n\t\tconst skeletons = {};\r\n\t\tconst bones = {};\r\n\r\n\t\t// generate bone lookup table\r\n\r\n\t\tobject.traverse( function ( child ) {\r\n\r\n\t\t\tif ( child.isBone ) bones[ child.uuid ] = child;\r\n\r\n\t\t} );\r\n\r\n\t\t// create skeletons\r\n\r\n\t\tif ( json !== undefined ) {\r\n\r\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst skeleton = new Skeleton().fromJSON( json[ i ], bones );\r\n\r\n\t\t\t\tskeletons[ skeleton.uuid ] = skeleton;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn skeletons;\r\n\r\n\t}\r\n\r\n\tparseGeometries( json, shapes ) {\r\n\r\n\t\tconst geometries = {};\r\n\t\tlet geometryShapes;\r\n\r\n\t\tif ( json !== undefined ) {\r\n\r\n\t\t\tconst bufferGeometryLoader = new BufferGeometryLoader();\r\n\r\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tlet geometry;\r\n\t\t\t\tconst data = json[ i ];\r\n\r\n\t\t\t\tswitch ( data.type ) {\r\n\r\n\t\t\t\t\tcase 'PlaneGeometry':\r\n\t\t\t\t\tcase 'PlaneBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.width,\r\n\t\t\t\t\t\t\tdata.height,\r\n\t\t\t\t\t\t\tdata.widthSegments,\r\n\t\t\t\t\t\t\tdata.heightSegments\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'BoxGeometry':\r\n\t\t\t\t\tcase 'BoxBufferGeometry':\r\n\t\t\t\t\tcase 'CubeGeometry': // backwards compatible\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.width,\r\n\t\t\t\t\t\t\tdata.height,\r\n\t\t\t\t\t\t\tdata.depth,\r\n\t\t\t\t\t\t\tdata.widthSegments,\r\n\t\t\t\t\t\t\tdata.heightSegments,\r\n\t\t\t\t\t\t\tdata.depthSegments\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'CircleGeometry':\r\n\t\t\t\t\tcase 'CircleBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.radius,\r\n\t\t\t\t\t\t\tdata.segments,\r\n\t\t\t\t\t\t\tdata.thetaStart,\r\n\t\t\t\t\t\t\tdata.thetaLength\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'CylinderGeometry':\r\n\t\t\t\t\tcase 'CylinderBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.radiusTop,\r\n\t\t\t\t\t\t\tdata.radiusBottom,\r\n\t\t\t\t\t\t\tdata.height,\r\n\t\t\t\t\t\t\tdata.radialSegments,\r\n\t\t\t\t\t\t\tdata.heightSegments,\r\n\t\t\t\t\t\t\tdata.openEnded,\r\n\t\t\t\t\t\t\tdata.thetaStart,\r\n\t\t\t\t\t\t\tdata.thetaLength\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'ConeGeometry':\r\n\t\t\t\t\tcase 'ConeBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.radius,\r\n\t\t\t\t\t\t\tdata.height,\r\n\t\t\t\t\t\t\tdata.radialSegments,\r\n\t\t\t\t\t\t\tdata.heightSegments,\r\n\t\t\t\t\t\t\tdata.openEnded,\r\n\t\t\t\t\t\t\tdata.thetaStart,\r\n\t\t\t\t\t\t\tdata.thetaLength\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'SphereGeometry':\r\n\t\t\t\t\tcase 'SphereBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.radius,\r\n\t\t\t\t\t\t\tdata.widthSegments,\r\n\t\t\t\t\t\t\tdata.heightSegments,\r\n\t\t\t\t\t\t\tdata.phiStart,\r\n\t\t\t\t\t\t\tdata.phiLength,\r\n\t\t\t\t\t\t\tdata.thetaStart,\r\n\t\t\t\t\t\t\tdata.thetaLength\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'DodecahedronGeometry':\r\n\t\t\t\t\tcase 'DodecahedronBufferGeometry':\r\n\t\t\t\t\tcase 'IcosahedronGeometry':\r\n\t\t\t\t\tcase 'IcosahedronBufferGeometry':\r\n\t\t\t\t\tcase 'OctahedronGeometry':\r\n\t\t\t\t\tcase 'OctahedronBufferGeometry':\r\n\t\t\t\t\tcase 'TetrahedronGeometry':\r\n\t\t\t\t\tcase 'TetrahedronBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.radius,\r\n\t\t\t\t\t\t\tdata.detail\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'RingGeometry':\r\n\t\t\t\t\tcase 'RingBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.innerRadius,\r\n\t\t\t\t\t\t\tdata.outerRadius,\r\n\t\t\t\t\t\t\tdata.thetaSegments,\r\n\t\t\t\t\t\t\tdata.phiSegments,\r\n\t\t\t\t\t\t\tdata.thetaStart,\r\n\t\t\t\t\t\t\tdata.thetaLength\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'TorusGeometry':\r\n\t\t\t\t\tcase 'TorusBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.radius,\r\n\t\t\t\t\t\t\tdata.tube,\r\n\t\t\t\t\t\t\tdata.radialSegments,\r\n\t\t\t\t\t\t\tdata.tubularSegments,\r\n\t\t\t\t\t\t\tdata.arc\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'TorusKnotGeometry':\r\n\t\t\t\t\tcase 'TorusKnotBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.radius,\r\n\t\t\t\t\t\t\tdata.tube,\r\n\t\t\t\t\t\t\tdata.tubularSegments,\r\n\t\t\t\t\t\t\tdata.radialSegments,\r\n\t\t\t\t\t\t\tdata.p,\r\n\t\t\t\t\t\t\tdata.q\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'TubeGeometry':\r\n\t\t\t\t\tcase 'TubeBufferGeometry':\r\n\r\n\t\t\t\t\t\t// This only works for built-in curves (e.g. CatmullRomCurve3).\r\n\t\t\t\t\t\t// User defined curves or instances of CurvePath will not be deserialized.\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tnew Curves[ data.path.type ]().fromJSON( data.path ),\r\n\t\t\t\t\t\t\tdata.tubularSegments,\r\n\t\t\t\t\t\t\tdata.radius,\r\n\t\t\t\t\t\t\tdata.radialSegments,\r\n\t\t\t\t\t\t\tdata.closed\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'LatheGeometry':\r\n\t\t\t\t\tcase 'LatheBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.points,\r\n\t\t\t\t\t\t\tdata.segments,\r\n\t\t\t\t\t\t\tdata.phiStart,\r\n\t\t\t\t\t\t\tdata.phiLength\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'PolyhedronGeometry':\r\n\t\t\t\t\tcase 'PolyhedronBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tdata.vertices,\r\n\t\t\t\t\t\t\tdata.indices,\r\n\t\t\t\t\t\t\tdata.radius,\r\n\t\t\t\t\t\t\tdata.details\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'ShapeGeometry':\r\n\t\t\t\t\tcase 'ShapeBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometryShapes = [];\r\n\r\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\r\n\r\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tgeometryShapes,\r\n\t\t\t\t\t\t\tdata.curveSegments\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\r\n\t\t\t\t\tcase 'ExtrudeGeometry':\r\n\t\t\t\t\tcase 'ExtrudeBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometryShapes = [];\r\n\r\n\t\t\t\t\t\tfor ( let j = 0, jl = data.shapes.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\t\t\tconst shape = shapes[ data.shapes[ j ] ];\r\n\r\n\t\t\t\t\t\t\tgeometryShapes.push( shape );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tconst extrudePath = data.options.extrudePath;\r\n\r\n\t\t\t\t\t\tif ( extrudePath !== undefined ) {\r\n\r\n\t\t\t\t\t\t\tdata.options.extrudePath = new Curves[ extrudePath.type ]().fromJSON( extrudePath );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tgeometry = new Geometries[ data.type ](\r\n\t\t\t\t\t\t\tgeometryShapes,\r\n\t\t\t\t\t\t\tdata.options\r\n\t\t\t\t\t\t);\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'BufferGeometry':\r\n\t\t\t\t\tcase 'InstancedBufferGeometry':\r\n\r\n\t\t\t\t\t\tgeometry = bufferGeometryLoader.parse( data );\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase 'Geometry':\r\n\r\n\t\t\t\t\t\tconsole.error( 'THREE.ObjectLoader: Loading \"Geometry\" is not supported anymore.' );\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tdefault:\r\n\r\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Unsupported geometry type \"' + data.type + '\"' );\r\n\r\n\t\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgeometry.uuid = data.uuid;\r\n\r\n\t\t\t\tif ( data.name !== undefined ) geometry.name = data.name;\r\n\t\t\t\tif ( geometry.isBufferGeometry === true && data.userData !== undefined ) geometry.userData = data.userData;\r\n\r\n\t\t\t\tgeometries[ data.uuid ] = geometry;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn geometries;\r\n\r\n\t}\r\n\r\n\tparseMaterials( json, textures ) {\r\n\r\n\t\tconst cache = {}; // MultiMaterial\r\n\t\tconst materials = {};\r\n\r\n\t\tif ( json !== undefined ) {\r\n\r\n\t\t\tconst loader = new MaterialLoader();\r\n\t\t\tloader.setTextures( textures );\r\n\r\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst data = json[ i ];\r\n\r\n\t\t\t\tif ( data.type === 'MultiMaterial' ) {\r\n\r\n\t\t\t\t\t// Deprecated\r\n\r\n\t\t\t\t\tconst array = [];\r\n\r\n\t\t\t\t\tfor ( let j = 0; j < data.materials.length; j ++ ) {\r\n\r\n\t\t\t\t\t\tconst material = data.materials[ j ];\r\n\r\n\t\t\t\t\t\tif ( cache[ material.uuid ] === undefined ) {\r\n\r\n\t\t\t\t\t\t\tcache[ material.uuid ] = loader.parse( material );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tarray.push( cache[ material.uuid ] );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmaterials[ data.uuid ] = array;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tif ( cache[ data.uuid ] === undefined ) {\r\n\r\n\t\t\t\t\t\tcache[ data.uuid ] = loader.parse( data );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmaterials[ data.uuid ] = cache[ data.uuid ];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn materials;\r\n\r\n\t}\r\n\r\n\tparseAnimations( json ) {\r\n\r\n\t\tconst animations = {};\r\n\r\n\t\tif ( json !== undefined ) {\r\n\r\n\t\t\tfor ( let i = 0; i < json.length; i ++ ) {\r\n\r\n\t\t\t\tconst data = json[ i ];\r\n\r\n\t\t\t\tconst clip = AnimationClip.parse( data );\r\n\r\n\t\t\t\tanimations[ clip.uuid ] = clip;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn animations;\r\n\r\n\t}\r\n\r\n\tparseImages( json, onLoad ) {\r\n\r\n\t\tconst scope = this;\r\n\t\tconst images = {};\r\n\r\n\t\tlet loader;\r\n\r\n\t\tfunction loadImage( url ) {\r\n\r\n\t\t\tscope.manager.itemStart( url );\r\n\r\n\t\t\treturn loader.load( url, function () {\r\n\r\n\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t}, undefined, function () {\r\n\r\n\t\t\t\tscope.manager.itemError( url );\r\n\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t\tfunction deserializeImage( image ) {\r\n\r\n\t\t\tif ( typeof image === 'string' ) {\r\n\r\n\t\t\t\tconst url = image;\r\n\r\n\t\t\t\tconst path = /^(\\/\\/)|([a-z]+:(\\/\\/)?)/i.test( url ) ? url : scope.resourcePath + url;\r\n\r\n\t\t\t\treturn loadImage( path );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif ( image.data ) {\r\n\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdata: getTypedArray( image.type, image.data ),\r\n\t\t\t\t\t\twidth: image.width,\r\n\t\t\t\t\t\theight: image.height\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\treturn null;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( json !== undefined && json.length > 0 ) {\r\n\r\n\t\t\tconst manager = new LoadingManager( onLoad );\r\n\r\n\t\t\tloader = new ImageLoader( manager );\r\n\t\t\tloader.setCrossOrigin( this.crossOrigin );\r\n\r\n\t\t\tfor ( let i = 0, il = json.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tconst image = json[ i ];\r\n\t\t\t\tconst url = image.url;\r\n\r\n\t\t\t\tif ( Array.isArray( url ) ) {\r\n\r\n\t\t\t\t\t// load array of images e.g CubeTexture\r\n\r\n\t\t\t\t\timages[ image.uuid ] = [];\r\n\r\n\t\t\t\t\tfor ( let j = 0, jl = url.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\t\tconst currentUrl = url[ j ];\r\n\r\n\t\t\t\t\t\tconst deserializedImage = deserializeImage( currentUrl );\r\n\r\n\t\t\t\t\t\tif ( deserializedImage !== null ) {\r\n\r\n\t\t\t\t\t\t\tif ( deserializedImage instanceof HTMLImageElement ) {\r\n\r\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( deserializedImage );\r\n\r\n\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\t// special case: handle array of data textures for cube textures\r\n\r\n\t\t\t\t\t\t\t\timages[ image.uuid ].push( new DataTexture( deserializedImage.data, deserializedImage.width, deserializedImage.height ) );\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// load single image\r\n\r\n\t\t\t\t\tconst deserializedImage = deserializeImage( image.url );\r\n\r\n\t\t\t\t\tif ( deserializedImage !== null ) {\r\n\r\n\t\t\t\t\t\timages[ image.uuid ] = deserializedImage;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn images;\r\n\r\n\t}\r\n\r\n\tparseTextures( json, images ) {\r\n\r\n\t\tfunction parseConstant( value, type ) {\r\n\r\n\t\t\tif ( typeof value === 'number' ) return value;\r\n\r\n\t\t\tconsole.warn( 'THREE.ObjectLoader.parseTexture: Constant should be in numeric form.', value );\r\n\r\n\t\t\treturn type[ value ];\r\n\r\n\t\t}\r\n\r\n\t\tconst textures = {};\r\n\r\n\t\tif ( json !== undefined ) {\r\n\r\n\t\t\tfor ( let i = 0, l = json.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst data = json[ i ];\r\n\r\n\t\t\t\tif ( data.image === undefined ) {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No \"image\" specified for', data.uuid );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( images[ data.image ] === undefined ) {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined image', data.image );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet texture;\r\n\t\t\t\tconst image = images[ data.image ];\r\n\r\n\t\t\t\tif ( Array.isArray( image ) ) {\r\n\r\n\t\t\t\t\ttexture = new CubeTexture( image );\r\n\r\n\t\t\t\t\tif ( image.length === 6 ) texture.needsUpdate = true;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tif ( image && image.data ) {\r\n\r\n\t\t\t\t\t\ttexture = new DataTexture( image.data, image.width, image.height );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\ttexture = new Texture( image );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( image ) texture.needsUpdate = true; // textures can have undefined image data\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttexture.uuid = data.uuid;\r\n\r\n\t\t\t\tif ( data.name !== undefined ) texture.name = data.name;\r\n\r\n\t\t\t\tif ( data.mapping !== undefined ) texture.mapping = parseConstant( data.mapping, TEXTURE_MAPPING );\r\n\r\n\t\t\t\tif ( data.offset !== undefined ) texture.offset.fromArray( data.offset );\r\n\t\t\t\tif ( data.repeat !== undefined ) texture.repeat.fromArray( data.repeat );\r\n\t\t\t\tif ( data.center !== undefined ) texture.center.fromArray( data.center );\r\n\t\t\t\tif ( data.rotation !== undefined ) texture.rotation = data.rotation;\r\n\r\n\t\t\t\tif ( data.wrap !== undefined ) {\r\n\r\n\t\t\t\t\ttexture.wrapS = parseConstant( data.wrap[ 0 ], TEXTURE_WRAPPING );\r\n\t\t\t\t\ttexture.wrapT = parseConstant( data.wrap[ 1 ], TEXTURE_WRAPPING );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( data.format !== undefined ) texture.format = data.format;\r\n\t\t\t\tif ( data.type !== undefined ) texture.type = data.type;\r\n\t\t\t\tif ( data.encoding !== undefined ) texture.encoding = data.encoding;\r\n\r\n\t\t\t\tif ( data.minFilter !== undefined ) texture.minFilter = parseConstant( data.minFilter, TEXTURE_FILTER );\r\n\t\t\t\tif ( data.magFilter !== undefined ) texture.magFilter = parseConstant( data.magFilter, TEXTURE_FILTER );\r\n\t\t\t\tif ( data.anisotropy !== undefined ) texture.anisotropy = data.anisotropy;\r\n\r\n\t\t\t\tif ( data.flipY !== undefined ) texture.flipY = data.flipY;\r\n\r\n\t\t\t\tif ( data.premultiplyAlpha !== undefined ) texture.premultiplyAlpha = data.premultiplyAlpha;\r\n\t\t\t\tif ( data.unpackAlignment !== undefined ) texture.unpackAlignment = data.unpackAlignment;\r\n\r\n\t\t\t\ttextures[ data.uuid ] = texture;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn textures;\r\n\r\n\t}\r\n\r\n\tparseObject( data, geometries, materials, animations ) {\r\n\r\n\t\tlet object;\r\n\r\n\t\tfunction getGeometry( name ) {\r\n\r\n\t\t\tif ( geometries[ name ] === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined geometry', name );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn geometries[ name ];\r\n\r\n\t\t}\r\n\r\n\t\tfunction getMaterial( name ) {\r\n\r\n\t\t\tif ( name === undefined ) return undefined;\r\n\r\n\t\t\tif ( Array.isArray( name ) ) {\r\n\r\n\t\t\t\tconst array = [];\r\n\r\n\t\t\t\tfor ( let i = 0, l = name.length; i < l; i ++ ) {\r\n\r\n\t\t\t\t\tconst uuid = name[ i ];\r\n\r\n\t\t\t\t\tif ( materials[ uuid ] === undefined ) {\r\n\r\n\t\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', uuid );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tarray.push( materials[ uuid ] );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn array;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( materials[ name ] === undefined ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.ObjectLoader: Undefined material', name );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn materials[ name ];\r\n\r\n\t\t}\r\n\r\n\t\tlet geometry, material;\r\n\r\n\t\tswitch ( data.type ) {\r\n\r\n\t\t\tcase 'Scene':\r\n\r\n\t\t\t\tobject = new Scene();\r\n\r\n\t\t\t\tif ( data.background !== undefined ) {\r\n\r\n\t\t\t\t\tif ( Number.isInteger( data.background ) ) {\r\n\r\n\t\t\t\t\t\tobject.background = new Color( data.background );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( data.fog !== undefined ) {\r\n\r\n\t\t\t\t\tif ( data.fog.type === 'Fog' ) {\r\n\r\n\t\t\t\t\t\tobject.fog = new Fog( data.fog.color, data.fog.near, data.fog.far );\r\n\r\n\t\t\t\t\t} else if ( data.fog.type === 'FogExp2' ) {\r\n\r\n\t\t\t\t\t\tobject.fog = new FogExp2( data.fog.color, data.fog.density );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PerspectiveCamera':\r\n\r\n\t\t\t\tobject = new PerspectiveCamera( data.fov, data.aspect, data.near, data.far );\r\n\r\n\t\t\t\tif ( data.focus !== undefined ) object.focus = data.focus;\r\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\r\n\t\t\t\tif ( data.filmGauge !== undefined ) object.filmGauge = data.filmGauge;\r\n\t\t\t\tif ( data.filmOffset !== undefined ) object.filmOffset = data.filmOffset;\r\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'OrthographicCamera':\r\n\r\n\t\t\t\tobject = new OrthographicCamera( data.left, data.right, data.top, data.bottom, data.near, data.far );\r\n\r\n\t\t\t\tif ( data.zoom !== undefined ) object.zoom = data.zoom;\r\n\t\t\t\tif ( data.view !== undefined ) object.view = Object.assign( {}, data.view );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'AmbientLight':\r\n\r\n\t\t\t\tobject = new AmbientLight( data.color, data.intensity );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'DirectionalLight':\r\n\r\n\t\t\t\tobject = new DirectionalLight( data.color, data.intensity );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PointLight':\r\n\r\n\t\t\t\tobject = new PointLight( data.color, data.intensity, data.distance, data.decay );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'RectAreaLight':\r\n\r\n\t\t\t\tobject = new RectAreaLight( data.color, data.intensity, data.width, data.height );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'SpotLight':\r\n\r\n\t\t\t\tobject = new SpotLight( data.color, data.intensity, data.distance, data.angle, data.penumbra, data.decay );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'HemisphereLight':\r\n\r\n\t\t\t\tobject = new HemisphereLight( data.color, data.groundColor, data.intensity );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'LightProbe':\r\n\r\n\t\t\t\tobject = new LightProbe().fromJSON( data );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'SkinnedMesh':\r\n\r\n\t\t\t\tgeometry = getGeometry( data.geometry );\r\n\t\t\t \tmaterial = getMaterial( data.material );\r\n\r\n\t\t\t\tobject = new SkinnedMesh( geometry, material );\r\n\r\n\t\t\t\tif ( data.bindMode !== undefined ) object.bindMode = data.bindMode;\r\n\t\t\t\tif ( data.bindMatrix !== undefined ) object.bindMatrix.fromArray( data.bindMatrix );\r\n\t\t\t\tif ( data.skeleton !== undefined ) object.skeleton = data.skeleton;\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Mesh':\r\n\r\n\t\t\t\tgeometry = getGeometry( data.geometry );\r\n\t\t\t\tmaterial = getMaterial( data.material );\r\n\r\n\t\t\t\tobject = new Mesh( geometry, material );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'InstancedMesh':\r\n\r\n\t\t\t\tgeometry = getGeometry( data.geometry );\r\n\t\t\t\tmaterial = getMaterial( data.material );\r\n\t\t\t\tconst count = data.count;\r\n\t\t\t\tconst instanceMatrix = data.instanceMatrix;\r\n\r\n\t\t\t\tobject = new InstancedMesh( geometry, material, count );\r\n\t\t\t\tobject.instanceMatrix = new BufferAttribute( new Float32Array( instanceMatrix.array ), 16 );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'LOD':\r\n\r\n\t\t\t\tobject = new LOD();\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Line':\r\n\r\n\t\t\t\tobject = new Line( getGeometry( data.geometry ), getMaterial( data.material ) );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'LineLoop':\r\n\r\n\t\t\t\tobject = new LineLoop( getGeometry( data.geometry ), getMaterial( data.material ) );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'LineSegments':\r\n\r\n\t\t\t\tobject = new LineSegments( getGeometry( data.geometry ), getMaterial( data.material ) );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'PointCloud':\r\n\t\t\tcase 'Points':\r\n\r\n\t\t\t\tobject = new Points( getGeometry( data.geometry ), getMaterial( data.material ) );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Sprite':\r\n\r\n\t\t\t\tobject = new Sprite( getMaterial( data.material ) );\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Group':\r\n\r\n\t\t\t\tobject = new Group();\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'Bone':\r\n\r\n\t\t\t\tobject = new Bone();\r\n\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\r\n\t\t\t\tobject = new Object3D();\r\n\r\n\t\t}\r\n\r\n\t\tobject.uuid = data.uuid;\r\n\r\n\t\tif ( data.name !== undefined ) object.name = data.name;\r\n\r\n\t\tif ( data.matrix !== undefined ) {\r\n\r\n\t\t\tobject.matrix.fromArray( data.matrix );\r\n\r\n\t\t\tif ( data.matrixAutoUpdate !== undefined ) object.matrixAutoUpdate = data.matrixAutoUpdate;\r\n\t\t\tif ( object.matrixAutoUpdate ) object.matrix.decompose( object.position, object.quaternion, object.scale );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( data.position !== undefined ) object.position.fromArray( data.position );\r\n\t\t\tif ( data.rotation !== undefined ) object.rotation.fromArray( data.rotation );\r\n\t\t\tif ( data.quaternion !== undefined ) object.quaternion.fromArray( data.quaternion );\r\n\t\t\tif ( data.scale !== undefined ) object.scale.fromArray( data.scale );\r\n\r\n\t\t}\r\n\r\n\t\tif ( data.castShadow !== undefined ) object.castShadow = data.castShadow;\r\n\t\tif ( data.receiveShadow !== undefined ) object.receiveShadow = data.receiveShadow;\r\n\r\n\t\tif ( data.shadow ) {\r\n\r\n\t\t\tif ( data.shadow.bias !== undefined ) object.shadow.bias = data.shadow.bias;\r\n\t\t\tif ( data.shadow.normalBias !== undefined ) object.shadow.normalBias = data.shadow.normalBias;\r\n\t\t\tif ( data.shadow.radius !== undefined ) object.shadow.radius = data.shadow.radius;\r\n\t\t\tif ( data.shadow.mapSize !== undefined ) object.shadow.mapSize.fromArray( data.shadow.mapSize );\r\n\t\t\tif ( data.shadow.camera !== undefined ) object.shadow.camera = this.parseObject( data.shadow.camera );\r\n\r\n\t\t}\r\n\r\n\t\tif ( data.visible !== undefined ) object.visible = data.visible;\r\n\t\tif ( data.frustumCulled !== undefined ) object.frustumCulled = data.frustumCulled;\r\n\t\tif ( data.renderOrder !== undefined ) object.renderOrder = data.renderOrder;\r\n\t\tif ( data.userData !== undefined ) object.userData = data.userData;\r\n\t\tif ( data.layers !== undefined ) object.layers.mask = data.layers;\r\n\r\n\t\tif ( data.children !== undefined ) {\r\n\r\n\t\t\tconst children = data.children;\r\n\r\n\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\r\n\r\n\t\t\t\tobject.add( this.parseObject( children[ i ], geometries, materials, animations ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( data.animations !== undefined ) {\r\n\r\n\t\t\tconst objectAnimations = data.animations;\r\n\r\n\t\t\tfor ( let i = 0; i < objectAnimations.length; i ++ ) {\r\n\r\n\t\t\t\tconst uuid = objectAnimations[ i ];\r\n\r\n\t\t\t\tobject.animations.push( animations[ uuid ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( data.type === 'LOD' ) {\r\n\r\n\t\t\tif ( data.autoUpdate !== undefined ) object.autoUpdate = data.autoUpdate;\r\n\r\n\t\t\tconst levels = data.levels;\r\n\r\n\t\t\tfor ( let l = 0; l < levels.length; l ++ ) {\r\n\r\n\t\t\t\tconst level = levels[ l ];\r\n\t\t\t\tconst child = object.getObjectByProperty( 'uuid', level.object );\r\n\r\n\t\t\t\tif ( child !== undefined ) {\r\n\r\n\t\t\t\t\tobject.addLevel( child, level.distance );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn object;\r\n\r\n\t}\r\n\r\n\tbindSkeletons( object, skeletons ) {\r\n\r\n\t\tif ( Object.keys( skeletons ).length === 0 ) return;\r\n\r\n\t\tobject.traverse( function ( child ) {\r\n\r\n\t\t\tif ( child.isSkinnedMesh === true && child.skeleton !== undefined ) {\r\n\r\n\t\t\t\tconst skeleton = skeletons[ child.skeleton ];\r\n\r\n\t\t\t\tif ( skeleton === undefined ) {\r\n\r\n\t\t\t\t\tconsole.warn( 'THREE.ObjectLoader: No skeleton found with UUID:', child.skeleton );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tchild.bind( skeleton, child.bindMatrix );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\t/* DEPRECATED */\r\n\r\n\tsetTexturePath( value ) {\r\n\r\n\t\tconsole.warn( 'THREE.ObjectLoader: .setTexturePath() has been renamed to .setResourcePath().' );\r\n\t\treturn this.setResourcePath( value );\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst TEXTURE_MAPPING = {\r\n\tUVMapping: UVMapping,\r\n\tCubeReflectionMapping: CubeReflectionMapping,\r\n\tCubeRefractionMapping: CubeRefractionMapping,\r\n\tEquirectangularReflectionMapping: EquirectangularReflectionMapping,\r\n\tEquirectangularRefractionMapping: EquirectangularRefractionMapping,\r\n\tCubeUVReflectionMapping: CubeUVReflectionMapping,\r\n\tCubeUVRefractionMapping: CubeUVRefractionMapping\r\n};\r\n\r\nconst TEXTURE_WRAPPING = {\r\n\tRepeatWrapping: RepeatWrapping,\r\n\tClampToEdgeWrapping: ClampToEdgeWrapping,\r\n\tMirroredRepeatWrapping: MirroredRepeatWrapping\r\n};\r\n\r\nconst TEXTURE_FILTER = {\r\n\tNearestFilter: NearestFilter,\r\n\tNearestMipmapNearestFilter: NearestMipmapNearestFilter,\r\n\tNearestMipmapLinearFilter: NearestMipmapLinearFilter,\r\n\tLinearFilter: LinearFilter,\r\n\tLinearMipmapNearestFilter: LinearMipmapNearestFilter,\r\n\tLinearMipmapLinearFilter: LinearMipmapLinearFilter\r\n};\r\n\r\nfunction ImageBitmapLoader( manager ) {\r\n\r\n\tif ( typeof createImageBitmap === 'undefined' ) {\r\n\r\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: createImageBitmap() not supported.' );\r\n\r\n\t}\r\n\r\n\tif ( typeof fetch === 'undefined' ) {\r\n\r\n\t\tconsole.warn( 'THREE.ImageBitmapLoader: fetch() not supported.' );\r\n\r\n\t}\r\n\r\n\tLoader.call( this, manager );\r\n\r\n\tthis.options = { premultiplyAlpha: 'none' };\r\n\r\n}\r\n\r\nImageBitmapLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: ImageBitmapLoader,\r\n\r\n\tisImageBitmapLoader: true,\r\n\r\n\tsetOptions: function setOptions( options ) {\r\n\r\n\t\tthis.options = options;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tif ( url === undefined ) url = '';\r\n\r\n\t\tif ( this.path !== undefined ) url = this.path + url;\r\n\r\n\t\turl = this.manager.resolveURL( url );\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst cached = Cache.get( url );\r\n\r\n\t\tif ( cached !== undefined ) {\r\n\r\n\t\t\tscope.manager.itemStart( url );\r\n\r\n\t\t\tsetTimeout( function () {\r\n\r\n\t\t\t\tif ( onLoad ) onLoad( cached );\r\n\r\n\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t}, 0 );\r\n\r\n\t\t\treturn cached;\r\n\r\n\t\t}\r\n\r\n\t\tconst fetchOptions = {};\r\n\t\tfetchOptions.credentials = ( this.crossOrigin === 'anonymous' ) ? 'same-origin' : 'include';\r\n\r\n\t\tfetch( url, fetchOptions ).then( function ( res ) {\r\n\r\n\t\t\treturn res.blob();\r\n\r\n\t\t} ).then( function ( blob ) {\r\n\r\n\t\t\treturn createImageBitmap( blob, scope.options );\r\n\r\n\t\t} ).then( function ( imageBitmap ) {\r\n\r\n\t\t\tCache.add( url, imageBitmap );\r\n\r\n\t\t\tif ( onLoad ) onLoad( imageBitmap );\r\n\r\n\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t} ).catch( function ( e ) {\r\n\r\n\t\t\tif ( onError ) onError( e );\r\n\r\n\t\t\tscope.manager.itemError( url );\r\n\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t} );\r\n\r\n\t\tscope.manager.itemStart( url );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction ShapePath() {\r\n\r\n\tthis.type = 'ShapePath';\r\n\r\n\tthis.color = new Color();\r\n\r\n\tthis.subPaths = [];\r\n\tthis.currentPath = null;\r\n\r\n}\r\n\r\nObject.assign( ShapePath.prototype, {\r\n\r\n\tmoveTo: function ( x, y ) {\r\n\r\n\t\tthis.currentPath = new Path();\r\n\t\tthis.subPaths.push( this.currentPath );\r\n\t\tthis.currentPath.moveTo( x, y );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tlineTo: function ( x, y ) {\r\n\r\n\t\tthis.currentPath.lineTo( x, y );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tquadraticCurveTo: function ( aCPx, aCPy, aX, aY ) {\r\n\r\n\t\tthis.currentPath.quadraticCurveTo( aCPx, aCPy, aX, aY );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tbezierCurveTo: function ( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY ) {\r\n\r\n\t\tthis.currentPath.bezierCurveTo( aCP1x, aCP1y, aCP2x, aCP2y, aX, aY );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsplineThru: function ( pts ) {\r\n\r\n\t\tthis.currentPath.splineThru( pts );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoShapes: function ( isCCW, noHoles ) {\r\n\r\n\t\tfunction toShapesNoHoles( inSubpaths ) {\r\n\r\n\t\t\tconst shapes = [];\r\n\r\n\t\t\tfor ( let i = 0, l = inSubpaths.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst tmpPath = inSubpaths[ i ];\r\n\r\n\t\t\t\tconst tmpShape = new Shape();\r\n\t\t\t\ttmpShape.curves = tmpPath.curves;\r\n\r\n\t\t\t\tshapes.push( tmpShape );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn shapes;\r\n\r\n\t\t}\r\n\r\n\t\tfunction isPointInsidePolygon( inPt, inPolygon ) {\r\n\r\n\t\t\tconst polyLen = inPolygon.length;\r\n\r\n\t\t\t// inPt on polygon contour => immediate success or\r\n\t\t\t// toggling of inside/outside at every single! intersection point of an edge\r\n\t\t\t// with the horizontal line through inPt, left of inPt\r\n\t\t\t// not counting lowerY endpoints of edges and whole edges on that line\r\n\t\t\tlet inside = false;\r\n\t\t\tfor ( let p = polyLen - 1, q = 0; q < polyLen; p = q ++ ) {\r\n\r\n\t\t\t\tlet edgeLowPt = inPolygon[ p ];\r\n\t\t\t\tlet edgeHighPt = inPolygon[ q ];\r\n\r\n\t\t\t\tlet edgeDx = edgeHighPt.x - edgeLowPt.x;\r\n\t\t\t\tlet edgeDy = edgeHighPt.y - edgeLowPt.y;\r\n\r\n\t\t\t\tif ( Math.abs( edgeDy ) > Number.EPSILON ) {\r\n\r\n\t\t\t\t\t// not parallel\r\n\t\t\t\t\tif ( edgeDy < 0 ) {\r\n\r\n\t\t\t\t\t\tedgeLowPt = inPolygon[ q ]; edgeDx = - edgeDx;\r\n\t\t\t\t\t\tedgeHighPt = inPolygon[ p ]; edgeDy = - edgeDy;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( ( inPt.y < edgeLowPt.y ) || ( inPt.y > edgeHighPt.y ) ) \t\tcontinue;\r\n\r\n\t\t\t\t\tif ( inPt.y === edgeLowPt.y ) {\r\n\r\n\t\t\t\t\t\tif ( inPt.x === edgeLowPt.x )\t\treturn\ttrue;\t\t// inPt is on contour ?\r\n\t\t\t\t\t\t// continue;\t\t\t\t// no intersection or edgeLowPt => doesn't count !!!\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tconst perpEdge = edgeDy * ( inPt.x - edgeLowPt.x ) - edgeDx * ( inPt.y - edgeLowPt.y );\r\n\t\t\t\t\t\tif ( perpEdge === 0 )\t\t\t\treturn\ttrue;\t\t// inPt is on contour ?\r\n\t\t\t\t\t\tif ( perpEdge < 0 ) \t\t\t\tcontinue;\r\n\t\t\t\t\t\tinside = ! inside;\t\t// true intersection left of inPt\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// parallel or collinear\r\n\t\t\t\t\tif ( inPt.y !== edgeLowPt.y ) \t\tcontinue;\t\t\t// parallel\r\n\t\t\t\t\t// edge lies on the same horizontal line as inPt\r\n\t\t\t\t\tif ( ( ( edgeHighPt.x <= inPt.x ) && ( inPt.x <= edgeLowPt.x ) ) ||\r\n\t\t\t\t\t\t ( ( edgeLowPt.x <= inPt.x ) && ( inPt.x <= edgeHighPt.x ) ) )\t\treturn\ttrue;\t// inPt: Point on contour !\r\n\t\t\t\t\t// continue;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn\tinside;\r\n\r\n\t\t}\r\n\r\n\t\tconst isClockWise = ShapeUtils.isClockWise;\r\n\r\n\t\tconst subPaths = this.subPaths;\r\n\t\tif ( subPaths.length === 0 ) return [];\r\n\r\n\t\tif ( noHoles === true )\treturn\ttoShapesNoHoles( subPaths );\r\n\r\n\r\n\t\tlet solid, tmpPath, tmpShape;\r\n\t\tconst shapes = [];\r\n\r\n\t\tif ( subPaths.length === 1 ) {\r\n\r\n\t\t\ttmpPath = subPaths[ 0 ];\r\n\t\t\ttmpShape = new Shape();\r\n\t\t\ttmpShape.curves = tmpPath.curves;\r\n\t\t\tshapes.push( tmpShape );\r\n\t\t\treturn shapes;\r\n\r\n\t\t}\r\n\r\n\t\tlet holesFirst = ! isClockWise( subPaths[ 0 ].getPoints() );\r\n\t\tholesFirst = isCCW ? ! holesFirst : holesFirst;\r\n\r\n\t\t// console.log(\"Holes first\", holesFirst);\r\n\r\n\t\tconst betterShapeHoles = [];\r\n\t\tconst newShapes = [];\r\n\t\tlet newShapeHoles = [];\r\n\t\tlet mainIdx = 0;\r\n\t\tlet tmpPoints;\r\n\r\n\t\tnewShapes[ mainIdx ] = undefined;\r\n\t\tnewShapeHoles[ mainIdx ] = [];\r\n\r\n\t\tfor ( let i = 0, l = subPaths.length; i < l; i ++ ) {\r\n\r\n\t\t\ttmpPath = subPaths[ i ];\r\n\t\t\ttmpPoints = tmpPath.getPoints();\r\n\t\t\tsolid = isClockWise( tmpPoints );\r\n\t\t\tsolid = isCCW ? ! solid : solid;\r\n\r\n\t\t\tif ( solid ) {\r\n\r\n\t\t\t\tif ( ( ! holesFirst ) && ( newShapes[ mainIdx ] ) )\tmainIdx ++;\r\n\r\n\t\t\t\tnewShapes[ mainIdx ] = { s: new Shape(), p: tmpPoints };\r\n\t\t\t\tnewShapes[ mainIdx ].s.curves = tmpPath.curves;\r\n\r\n\t\t\t\tif ( holesFirst )\tmainIdx ++;\r\n\t\t\t\tnewShapeHoles[ mainIdx ] = [];\r\n\r\n\t\t\t\t//console.log('cw', i);\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tnewShapeHoles[ mainIdx ].push( { h: tmpPath, p: tmpPoints[ 0 ] } );\r\n\r\n\t\t\t\t//console.log('ccw', i);\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// only Holes? -> probably all Shapes with wrong orientation\r\n\t\tif ( ! newShapes[ 0 ] )\treturn\ttoShapesNoHoles( subPaths );\r\n\r\n\r\n\t\tif ( newShapes.length > 1 ) {\r\n\r\n\t\t\tlet ambiguous = false;\r\n\t\t\tconst toChange = [];\r\n\r\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\r\n\r\n\t\t\t\tbetterShapeHoles[ sIdx ] = [];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfor ( let sIdx = 0, sLen = newShapes.length; sIdx < sLen; sIdx ++ ) {\r\n\r\n\t\t\t\tconst sho = newShapeHoles[ sIdx ];\r\n\r\n\t\t\t\tfor ( let hIdx = 0; hIdx < sho.length; hIdx ++ ) {\r\n\r\n\t\t\t\t\tconst ho = sho[ hIdx ];\r\n\t\t\t\t\tlet hole_unassigned = true;\r\n\r\n\t\t\t\t\tfor ( let s2Idx = 0; s2Idx < newShapes.length; s2Idx ++ ) {\r\n\r\n\t\t\t\t\t\tif ( isPointInsidePolygon( ho.p, newShapes[ s2Idx ].p ) ) {\r\n\r\n\t\t\t\t\t\t\tif ( sIdx !== s2Idx )\ttoChange.push( { froms: sIdx, tos: s2Idx, hole: hIdx } );\r\n\t\t\t\t\t\t\tif ( hole_unassigned ) {\r\n\r\n\t\t\t\t\t\t\t\thole_unassigned = false;\r\n\t\t\t\t\t\t\t\tbetterShapeHoles[ s2Idx ].push( ho );\r\n\r\n\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\tambiguous = true;\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( hole_unassigned ) {\r\n\r\n\t\t\t\t\t\tbetterShapeHoles[ sIdx ].push( ho );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t\t// console.log(\"ambiguous: \", ambiguous);\r\n\r\n\t\t\tif ( toChange.length > 0 ) {\r\n\r\n\t\t\t\t// console.log(\"to change: \", toChange);\r\n\t\t\t\tif ( ! ambiguous )\tnewShapeHoles = betterShapeHoles;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tlet tmpHoles;\r\n\r\n\t\tfor ( let i = 0, il = newShapes.length; i < il; i ++ ) {\r\n\r\n\t\t\ttmpShape = newShapes[ i ].s;\r\n\t\t\tshapes.push( tmpShape );\r\n\t\t\ttmpHoles = newShapeHoles[ i ];\r\n\r\n\t\t\tfor ( let j = 0, jl = tmpHoles.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\ttmpShape.holes.push( tmpHoles[ j ].h );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t//console.log(\"shape\", shapes);\r\n\r\n\t\treturn shapes;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction Font( data ) {\r\n\r\n\tthis.type = 'Font';\r\n\r\n\tthis.data = data;\r\n\r\n}\r\n\r\nObject.assign( Font.prototype, {\r\n\r\n\tisFont: true,\r\n\r\n\tgenerateShapes: function ( text, size = 100 ) {\r\n\r\n\t\tconst shapes = [];\r\n\t\tconst paths = createPaths( text, size, this.data );\r\n\r\n\t\tfor ( let p = 0, pl = paths.length; p < pl; p ++ ) {\r\n\r\n\t\t\tArray.prototype.push.apply( shapes, paths[ p ].toShapes() );\r\n\r\n\t\t}\r\n\r\n\t\treturn shapes;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction createPaths( text, size, data ) {\r\n\r\n\tconst chars = Array.from ? Array.from( text ) : String( text ).split( '' ); // workaround for IE11, see #13988\r\n\tconst scale = size / data.resolution;\r\n\tconst line_height = ( data.boundingBox.yMax - data.boundingBox.yMin + data.underlineThickness ) * scale;\r\n\r\n\tconst paths = [];\r\n\r\n\tlet offsetX = 0, offsetY = 0;\r\n\r\n\tfor ( let i = 0; i < chars.length; i ++ ) {\r\n\r\n\t\tconst char = chars[ i ];\r\n\r\n\t\tif ( char === '\\n' ) {\r\n\r\n\t\t\toffsetX = 0;\r\n\t\t\toffsetY -= line_height;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst ret = createPath( char, scale, offsetX, offsetY, data );\r\n\t\t\toffsetX += ret.offsetX;\r\n\t\t\tpaths.push( ret.path );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn paths;\r\n\r\n}\r\n\r\nfunction createPath( char, scale, offsetX, offsetY, data ) {\r\n\r\n\tconst glyph = data.glyphs[ char ] || data.glyphs[ '?' ];\r\n\r\n\tif ( ! glyph ) {\r\n\r\n\t\tconsole.error( 'THREE.Font: character \"' + char + '\" does not exists in font family ' + data.familyName + '.' );\r\n\r\n\t\treturn;\r\n\r\n\t}\r\n\r\n\tconst path = new ShapePath();\r\n\r\n\tlet x, y, cpx, cpy, cpx1, cpy1, cpx2, cpy2;\r\n\r\n\tif ( glyph.o ) {\r\n\r\n\t\tconst outline = glyph._cachedOutline || ( glyph._cachedOutline = glyph.o.split( ' ' ) );\r\n\r\n\t\tfor ( let i = 0, l = outline.length; i < l; ) {\r\n\r\n\t\t\tconst action = outline[ i ++ ];\r\n\r\n\t\t\tswitch ( action ) {\r\n\r\n\t\t\t\tcase 'm': // moveTo\r\n\r\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\r\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\r\n\r\n\t\t\t\t\tpath.moveTo( x, y );\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'l': // lineTo\r\n\r\n\t\t\t\t\tx = outline[ i ++ ] * scale + offsetX;\r\n\t\t\t\t\ty = outline[ i ++ ] * scale + offsetY;\r\n\r\n\t\t\t\t\tpath.lineTo( x, y );\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'q': // quadraticCurveTo\r\n\r\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\r\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\r\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\r\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\r\n\r\n\t\t\t\t\tpath.quadraticCurveTo( cpx1, cpy1, cpx, cpy );\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'b': // bezierCurveTo\r\n\r\n\t\t\t\t\tcpx = outline[ i ++ ] * scale + offsetX;\r\n\t\t\t\t\tcpy = outline[ i ++ ] * scale + offsetY;\r\n\t\t\t\t\tcpx1 = outline[ i ++ ] * scale + offsetX;\r\n\t\t\t\t\tcpy1 = outline[ i ++ ] * scale + offsetY;\r\n\t\t\t\t\tcpx2 = outline[ i ++ ] * scale + offsetX;\r\n\t\t\t\t\tcpy2 = outline[ i ++ ] * scale + offsetY;\r\n\r\n\t\t\t\t\tpath.bezierCurveTo( cpx1, cpy1, cpx2, cpy2, cpx, cpy );\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn { offsetX: glyph.ha * scale, path: path };\r\n\r\n}\r\n\r\nfunction FontLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nFontLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: FontLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst loader = new FileLoader( this.manager );\r\n\t\tloader.setPath( this.path );\r\n\t\tloader.setRequestHeader( this.requestHeader );\r\n\t\tloader.setWithCredentials( scope.withCredentials );\r\n\t\tloader.load( url, function ( text ) {\r\n\r\n\t\t\tlet json;\r\n\r\n\t\t\ttry {\r\n\r\n\t\t\t\tjson = JSON.parse( text );\r\n\r\n\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.FontLoader: typeface.js support is being deprecated. Use typeface.json instead.' );\r\n\t\t\t\tjson = JSON.parse( text.substring( 65, text.length - 2 ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst font = scope.parse( json );\r\n\r\n\t\t\tif ( onLoad ) onLoad( font );\r\n\r\n\t\t}, onProgress, onError );\r\n\r\n\t},\r\n\r\n\tparse: function ( json ) {\r\n\r\n\t\treturn new Font( json );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nlet _context;\r\n\r\nconst AudioContext = {\r\n\r\n\tgetContext: function () {\r\n\r\n\t\tif ( _context === undefined ) {\r\n\r\n\t\t\t_context = new ( window.AudioContext || window.webkitAudioContext )();\r\n\r\n\t\t}\r\n\r\n\t\treturn _context;\r\n\r\n\t},\r\n\r\n\tsetContext: function ( value ) {\r\n\r\n\t\t_context = value;\r\n\r\n\t}\r\n\r\n};\r\n\r\nfunction AudioLoader( manager ) {\r\n\r\n\tLoader.call( this, manager );\r\n\r\n}\r\n\r\nAudioLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\tconstructor: AudioLoader,\r\n\r\n\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tconst loader = new FileLoader( scope.manager );\r\n\t\tloader.setResponseType( 'arraybuffer' );\r\n\t\tloader.setPath( scope.path );\r\n\t\tloader.setRequestHeader( scope.requestHeader );\r\n\t\tloader.setWithCredentials( scope.withCredentials );\r\n\t\tloader.load( url, function ( buffer ) {\r\n\r\n\t\t\ttry {\r\n\r\n\t\t\t\t// Create a copy of the buffer. The `decodeAudioData` method\r\n\t\t\t\t// detaches the buffer when complete, preventing reuse.\r\n\t\t\t\tconst bufferCopy = buffer.slice( 0 );\r\n\r\n\t\t\t\tconst context = AudioContext.getContext();\r\n\t\t\t\tcontext.decodeAudioData( bufferCopy, function ( audioBuffer ) {\r\n\r\n\t\t\t\t\tonLoad( audioBuffer );\r\n\r\n\t\t\t\t} );\r\n\r\n\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\tif ( onError ) {\r\n\r\n\t\t\t\t\tonError( e );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.error( e );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.manager.itemError( url );\r\n\r\n\t\t\t}\r\n\r\n\t\t}, onProgress, onError );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction HemisphereLightProbe( skyColor, groundColor, intensity ) {\r\n\r\n\tLightProbe.call( this, undefined, intensity );\r\n\r\n\tconst color1 = new Color().set( skyColor );\r\n\tconst color2 = new Color().set( groundColor );\r\n\r\n\tconst sky = new Vector3( color1.r, color1.g, color1.b );\r\n\tconst ground = new Vector3( color2.r, color2.g, color2.b );\r\n\r\n\t// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );\r\n\tconst c0 = Math.sqrt( Math.PI );\r\n\tconst c1 = c0 * Math.sqrt( 0.75 );\r\n\r\n\tthis.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );\r\n\tthis.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );\r\n\r\n}\r\n\r\nHemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\r\n\r\n\tconstructor: HemisphereLightProbe,\r\n\r\n\tisHemisphereLightProbe: true,\r\n\r\n\tcopy: function ( source ) { // modifying colors not currently supported\r\n\r\n\t\tLightProbe.prototype.copy.call( this, source );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\r\n\r\n\t\t// data.sh = this.sh.toArray(); // todo\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction AmbientLightProbe( color, intensity ) {\r\n\r\n\tLightProbe.call( this, undefined, intensity );\r\n\r\n\tconst color1 = new Color().set( color );\r\n\r\n\t// without extra factor of PI in the shader, would be 2 / Math.sqrt( Math.PI );\r\n\tthis.sh.coefficients[ 0 ].set( color1.r, color1.g, color1.b ).multiplyScalar( 2 * Math.sqrt( Math.PI ) );\r\n\r\n}\r\n\r\nAmbientLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {\r\n\r\n\tconstructor: AmbientLightProbe,\r\n\r\n\tisAmbientLightProbe: true,\r\n\r\n\tcopy: function ( source ) { // modifying color not currently supported\r\n\r\n\t\tLightProbe.prototype.copy.call( this, source );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( meta ) {\r\n\r\n\t\tconst data = LightProbe.prototype.toJSON.call( this, meta );\r\n\r\n\t\t// data.sh = this.sh.toArray(); // todo\r\n\r\n\t\treturn data;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nconst _eyeRight = new Matrix4();\r\nconst _eyeLeft = new Matrix4();\r\n\r\nfunction StereoCamera() {\r\n\r\n\tthis.type = 'StereoCamera';\r\n\r\n\tthis.aspect = 1;\r\n\r\n\tthis.eyeSep = 0.064;\r\n\r\n\tthis.cameraL = new PerspectiveCamera();\r\n\tthis.cameraL.layers.enable( 1 );\r\n\tthis.cameraL.matrixAutoUpdate = false;\r\n\r\n\tthis.cameraR = new PerspectiveCamera();\r\n\tthis.cameraR.layers.enable( 2 );\r\n\tthis.cameraR.matrixAutoUpdate = false;\r\n\r\n\tthis._cache = {\r\n\t\tfocus: null,\r\n\t\tfov: null,\r\n\t\taspect: null,\r\n\t\tnear: null,\r\n\t\tfar: null,\r\n\t\tzoom: null,\r\n\t\teyeSep: null\r\n\t};\r\n\r\n}\r\n\r\nObject.assign( StereoCamera.prototype, {\r\n\r\n\tupdate: function ( camera ) {\r\n\r\n\t\tconst cache = this._cache;\r\n\r\n\t\tconst needsUpdate = cache.focus !== camera.focus || cache.fov !== camera.fov ||\r\n\t\t\tcache.aspect !== camera.aspect * this.aspect || cache.near !== camera.near ||\r\n\t\t\tcache.far !== camera.far || cache.zoom !== camera.zoom || cache.eyeSep !== this.eyeSep;\r\n\r\n\t\tif ( needsUpdate ) {\r\n\r\n\t\t\tcache.focus = camera.focus;\r\n\t\t\tcache.fov = camera.fov;\r\n\t\t\tcache.aspect = camera.aspect * this.aspect;\r\n\t\t\tcache.near = camera.near;\r\n\t\t\tcache.far = camera.far;\r\n\t\t\tcache.zoom = camera.zoom;\r\n\t\t\tcache.eyeSep = this.eyeSep;\r\n\r\n\t\t\t// Off-axis stereoscopic effect based on\r\n\t\t\t// http://paulbourke.net/stereographics/stereorender/\r\n\r\n\t\t\tconst projectionMatrix = camera.projectionMatrix.clone();\r\n\t\t\tconst eyeSepHalf = cache.eyeSep / 2;\r\n\t\t\tconst eyeSepOnProjection = eyeSepHalf * cache.near / cache.focus;\r\n\t\t\tconst ymax = ( cache.near * Math.tan( MathUtils.DEG2RAD * cache.fov * 0.5 ) ) / cache.zoom;\r\n\t\t\tlet xmin, xmax;\r\n\r\n\t\t\t// translate xOffset\r\n\r\n\t\t\t_eyeLeft.elements[ 12 ] = - eyeSepHalf;\r\n\t\t\t_eyeRight.elements[ 12 ] = eyeSepHalf;\r\n\r\n\t\t\t// for left eye\r\n\r\n\t\t\txmin = - ymax * cache.aspect + eyeSepOnProjection;\r\n\t\t\txmax = ymax * cache.aspect + eyeSepOnProjection;\r\n\r\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\r\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\r\n\r\n\t\t\tthis.cameraL.projectionMatrix.copy( projectionMatrix );\r\n\r\n\t\t\t// for right eye\r\n\r\n\t\t\txmin = - ymax * cache.aspect - eyeSepOnProjection;\r\n\t\t\txmax = ymax * cache.aspect - eyeSepOnProjection;\r\n\r\n\t\t\tprojectionMatrix.elements[ 0 ] = 2 * cache.near / ( xmax - xmin );\r\n\t\t\tprojectionMatrix.elements[ 8 ] = ( xmax + xmin ) / ( xmax - xmin );\r\n\r\n\t\t\tthis.cameraR.projectionMatrix.copy( projectionMatrix );\r\n\r\n\t\t}\r\n\r\n\t\tthis.cameraL.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeLeft );\r\n\t\tthis.cameraR.matrixWorld.copy( camera.matrixWorld ).multiply( _eyeRight );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nclass Clock {\r\n\r\n\tconstructor( autoStart ) {\r\n\r\n\t\tthis.autoStart = ( autoStart !== undefined ) ? autoStart : true;\r\n\r\n\t\tthis.startTime = 0;\r\n\t\tthis.oldTime = 0;\r\n\t\tthis.elapsedTime = 0;\r\n\r\n\t\tthis.running = false;\r\n\r\n\t}\r\n\r\n\tstart() {\r\n\r\n\t\tthis.startTime = now();\r\n\r\n\t\tthis.oldTime = this.startTime;\r\n\t\tthis.elapsedTime = 0;\r\n\t\tthis.running = true;\r\n\r\n\t}\r\n\r\n\tstop() {\r\n\r\n\t\tthis.getElapsedTime();\r\n\t\tthis.running = false;\r\n\t\tthis.autoStart = false;\r\n\r\n\t}\r\n\r\n\tgetElapsedTime() {\r\n\r\n\t\tthis.getDelta();\r\n\t\treturn this.elapsedTime;\r\n\r\n\t}\r\n\r\n\tgetDelta() {\r\n\r\n\t\tlet diff = 0;\r\n\r\n\t\tif ( this.autoStart && ! this.running ) {\r\n\r\n\t\t\tthis.start();\r\n\t\t\treturn 0;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.running ) {\r\n\r\n\t\t\tconst newTime = now();\r\n\r\n\t\t\tdiff = ( newTime - this.oldTime ) / 1000;\r\n\t\t\tthis.oldTime = newTime;\r\n\r\n\t\t\tthis.elapsedTime += diff;\r\n\r\n\t\t}\r\n\r\n\t\treturn diff;\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction now() {\r\n\r\n\treturn ( typeof performance === 'undefined' ? Date : performance ).now(); // see #10732\r\n\r\n}\r\n\r\nconst _position$2 = /*@__PURE__*/ new Vector3();\r\nconst _quaternion$3 = /*@__PURE__*/ new Quaternion();\r\nconst _scale$1 = /*@__PURE__*/ new Vector3();\r\nconst _orientation = /*@__PURE__*/ new Vector3();\r\n\r\nclass AudioListener extends Object3D {\r\n\r\n\tconstructor() {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'AudioListener';\r\n\r\n\t\tthis.context = AudioContext.getContext();\r\n\r\n\t\tthis.gain = this.context.createGain();\r\n\t\tthis.gain.connect( this.context.destination );\r\n\r\n\t\tthis.filter = null;\r\n\r\n\t\tthis.timeDelta = 0;\r\n\r\n\t\t// private\r\n\r\n\t\tthis._clock = new Clock();\r\n\r\n\t}\r\n\r\n\tgetInput() {\r\n\r\n\t\treturn this.gain;\r\n\r\n\t}\r\n\r\n\tremoveFilter() {\r\n\r\n\t\tif ( this.filter !== null ) {\r\n\r\n\t\t\tthis.gain.disconnect( this.filter );\r\n\t\t\tthis.filter.disconnect( this.context.destination );\r\n\t\t\tthis.gain.connect( this.context.destination );\r\n\t\t\tthis.filter = null;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetFilter() {\r\n\r\n\t\treturn this.filter;\r\n\r\n\t}\r\n\r\n\tsetFilter( value ) {\r\n\r\n\t\tif ( this.filter !== null ) {\r\n\r\n\t\t\tthis.gain.disconnect( this.filter );\r\n\t\t\tthis.filter.disconnect( this.context.destination );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.gain.disconnect( this.context.destination );\r\n\r\n\t\t}\r\n\r\n\t\tthis.filter = value;\r\n\t\tthis.gain.connect( this.filter );\r\n\t\tthis.filter.connect( this.context.destination );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetMasterVolume() {\r\n\r\n\t\treturn this.gain.gain.value;\r\n\r\n\t}\r\n\r\n\tsetMasterVolume( value ) {\r\n\r\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tupdateMatrixWorld( force ) {\r\n\r\n\t\tsuper.updateMatrixWorld( force );\r\n\r\n\t\tconst listener = this.context.listener;\r\n\t\tconst up = this.up;\r\n\r\n\t\tthis.timeDelta = this._clock.getDelta();\r\n\r\n\t\tthis.matrixWorld.decompose( _position$2, _quaternion$3, _scale$1 );\r\n\r\n\t\t_orientation.set( 0, 0, - 1 ).applyQuaternion( _quaternion$3 );\r\n\r\n\t\tif ( listener.positionX ) {\r\n\r\n\t\t\t// code path for Chrome (see #14393)\r\n\r\n\t\t\tconst endTime = this.context.currentTime + this.timeDelta;\r\n\r\n\t\t\tlistener.positionX.linearRampToValueAtTime( _position$2.x, endTime );\r\n\t\t\tlistener.positionY.linearRampToValueAtTime( _position$2.y, endTime );\r\n\t\t\tlistener.positionZ.linearRampToValueAtTime( _position$2.z, endTime );\r\n\t\t\tlistener.forwardX.linearRampToValueAtTime( _orientation.x, endTime );\r\n\t\t\tlistener.forwardY.linearRampToValueAtTime( _orientation.y, endTime );\r\n\t\t\tlistener.forwardZ.linearRampToValueAtTime( _orientation.z, endTime );\r\n\t\t\tlistener.upX.linearRampToValueAtTime( up.x, endTime );\r\n\t\t\tlistener.upY.linearRampToValueAtTime( up.y, endTime );\r\n\t\t\tlistener.upZ.linearRampToValueAtTime( up.z, endTime );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tlistener.setPosition( _position$2.x, _position$2.y, _position$2.z );\r\n\t\t\tlistener.setOrientation( _orientation.x, _orientation.y, _orientation.z, up.x, up.y, up.z );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass Audio extends Object3D {\r\n\r\n\tconstructor( listener ) {\r\n\r\n\t\tsuper();\r\n\r\n\t\tthis.type = 'Audio';\r\n\r\n\t\tthis.listener = listener;\r\n\t\tthis.context = listener.context;\r\n\r\n\t\tthis.gain = this.context.createGain();\r\n\t\tthis.gain.connect( listener.getInput() );\r\n\r\n\t\tthis.autoplay = false;\r\n\r\n\t\tthis.buffer = null;\r\n\t\tthis.detune = 0;\r\n\t\tthis.loop = false;\r\n\t\tthis.loopStart = 0;\r\n\t\tthis.loopEnd = 0;\r\n\t\tthis.offset = 0;\r\n\t\tthis.duration = undefined;\r\n\t\tthis.playbackRate = 1;\r\n\t\tthis.isPlaying = false;\r\n\t\tthis.hasPlaybackControl = true;\r\n\t\tthis.source = null;\r\n\t\tthis.sourceType = 'empty';\r\n\r\n\t\tthis._startedAt = 0;\r\n\t\tthis._progress = 0;\r\n\t\tthis._connected = false;\r\n\r\n\t\tthis.filters = [];\r\n\r\n\t}\r\n\r\n\tgetOutput() {\r\n\r\n\t\treturn this.gain;\r\n\r\n\t}\r\n\r\n\tsetNodeSource( audioNode ) {\r\n\r\n\t\tthis.hasPlaybackControl = false;\r\n\t\tthis.sourceType = 'audioNode';\r\n\t\tthis.source = audioNode;\r\n\t\tthis.connect();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetMediaElementSource( mediaElement ) {\r\n\r\n\t\tthis.hasPlaybackControl = false;\r\n\t\tthis.sourceType = 'mediaNode';\r\n\t\tthis.source = this.context.createMediaElementSource( mediaElement );\r\n\t\tthis.connect();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetMediaStreamSource( mediaStream ) {\r\n\r\n\t\tthis.hasPlaybackControl = false;\r\n\t\tthis.sourceType = 'mediaStreamNode';\r\n\t\tthis.source = this.context.createMediaStreamSource( mediaStream );\r\n\t\tthis.connect();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetBuffer( audioBuffer ) {\r\n\r\n\t\tthis.buffer = audioBuffer;\r\n\t\tthis.sourceType = 'buffer';\r\n\r\n\t\tif ( this.autoplay ) this.play();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tplay( delay = 0 ) {\r\n\r\n\t\tif ( this.isPlaying === true ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Audio: Audio is already playing.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.hasPlaybackControl === false ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tthis._startedAt = this.context.currentTime + delay;\r\n\r\n\t\tconst source = this.context.createBufferSource();\r\n\t\tsource.buffer = this.buffer;\r\n\t\tsource.loop = this.loop;\r\n\t\tsource.loopStart = this.loopStart;\r\n\t\tsource.loopEnd = this.loopEnd;\r\n\t\tsource.onended = this.onEnded.bind( this );\r\n\t\tsource.start( this._startedAt, this._progress + this.offset, this.duration );\r\n\r\n\t\tthis.isPlaying = true;\r\n\r\n\t\tthis.source = source;\r\n\r\n\t\tthis.setDetune( this.detune );\r\n\t\tthis.setPlaybackRate( this.playbackRate );\r\n\r\n\t\treturn this.connect();\r\n\r\n\t}\r\n\r\n\tpause() {\r\n\r\n\t\tif ( this.hasPlaybackControl === false ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.isPlaying === true ) {\r\n\r\n\t\t\t// update current progress\r\n\r\n\t\t\tthis._progress += Math.max( this.context.currentTime - this._startedAt, 0 ) * this.playbackRate;\r\n\r\n\t\t\tif ( this.loop === true ) {\r\n\r\n\t\t\t\t// ensure _progress does not exceed duration with looped audios\r\n\r\n\t\t\t\tthis._progress = this._progress % ( this.duration || this.buffer.duration );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.source.stop();\r\n\t\t\tthis.source.onended = null;\r\n\r\n\t\t\tthis.isPlaying = false;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tstop() {\r\n\r\n\t\tif ( this.hasPlaybackControl === false ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tthis._progress = 0;\r\n\r\n\t\tthis.source.stop();\r\n\t\tthis.source.onended = null;\r\n\t\tthis.isPlaying = false;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tconnect() {\r\n\r\n\t\tif ( this.filters.length > 0 ) {\r\n\r\n\t\t\tthis.source.connect( this.filters[ 0 ] );\r\n\r\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tthis.filters[ i - 1 ].connect( this.filters[ i ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.filters[ this.filters.length - 1 ].connect( this.getOutput() );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.source.connect( this.getOutput() );\r\n\r\n\t\t}\r\n\r\n\t\tthis._connected = true;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tdisconnect() {\r\n\r\n\t\tif ( this.filters.length > 0 ) {\r\n\r\n\t\t\tthis.source.disconnect( this.filters[ 0 ] );\r\n\r\n\t\t\tfor ( let i = 1, l = this.filters.length; i < l; i ++ ) {\r\n\r\n\t\t\t\tthis.filters[ i - 1 ].disconnect( this.filters[ i ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.filters[ this.filters.length - 1 ].disconnect( this.getOutput() );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.source.disconnect( this.getOutput() );\r\n\r\n\t\t}\r\n\r\n\t\tthis._connected = false;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetFilters() {\r\n\r\n\t\treturn this.filters;\r\n\r\n\t}\r\n\r\n\tsetFilters( value ) {\r\n\r\n\t\tif ( ! value ) value = [];\r\n\r\n\t\tif ( this._connected === true ) {\r\n\r\n\t\t\tthis.disconnect();\r\n\t\t\tthis.filters = value.slice();\r\n\t\t\tthis.connect();\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.filters = value.slice();\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetDetune( value ) {\r\n\r\n\t\tthis.detune = value;\r\n\r\n\t\tif ( this.source.detune === undefined ) return; // only set detune when available\r\n\r\n\t\tif ( this.isPlaying === true ) {\r\n\r\n\t\t\tthis.source.detune.setTargetAtTime( this.detune, this.context.currentTime, 0.01 );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetDetune() {\r\n\r\n\t\treturn this.detune;\r\n\r\n\t}\r\n\r\n\tgetFilter() {\r\n\r\n\t\treturn this.getFilters()[ 0 ];\r\n\r\n\t}\r\n\r\n\tsetFilter( filter ) {\r\n\r\n\t\treturn this.setFilters( filter ? [ filter ] : [] );\r\n\r\n\t}\r\n\r\n\tsetPlaybackRate( value ) {\r\n\r\n\t\tif ( this.hasPlaybackControl === false ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tthis.playbackRate = value;\r\n\r\n\t\tif ( this.isPlaying === true ) {\r\n\r\n\t\t\tthis.source.playbackRate.setTargetAtTime( this.playbackRate, this.context.currentTime, 0.01 );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetPlaybackRate() {\r\n\r\n\t\treturn this.playbackRate;\r\n\r\n\t}\r\n\r\n\tonEnded() {\r\n\r\n\t\tthis.isPlaying = false;\r\n\r\n\t}\r\n\r\n\tgetLoop() {\r\n\r\n\t\tif ( this.hasPlaybackControl === false ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\r\n\t\t\treturn false;\r\n\r\n\t\t}\r\n\r\n\t\treturn this.loop;\r\n\r\n\t}\r\n\r\n\tsetLoop( value ) {\r\n\r\n\t\tif ( this.hasPlaybackControl === false ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Audio: this Audio has no playback control.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tthis.loop = value;\r\n\r\n\t\tif ( this.isPlaying === true ) {\r\n\r\n\t\t\tthis.source.loop = this.loop;\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetLoopStart( value ) {\r\n\r\n\t\tthis.loopStart = value;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetLoopEnd( value ) {\r\n\r\n\t\tthis.loopEnd = value;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetVolume() {\r\n\r\n\t\treturn this.gain.gain.value;\r\n\r\n\t}\r\n\r\n\tsetVolume( value ) {\r\n\r\n\t\tthis.gain.gain.setTargetAtTime( value, this.context.currentTime, 0.01 );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _position$3 = /*@__PURE__*/ new Vector3();\r\nconst _quaternion$4 = /*@__PURE__*/ new Quaternion();\r\nconst _scale$2 = /*@__PURE__*/ new Vector3();\r\nconst _orientation$1 = /*@__PURE__*/ new Vector3();\r\n\r\nclass PositionalAudio extends Audio {\r\n\r\n\tconstructor( listener ) {\r\n\r\n\t\tsuper( listener );\r\n\r\n\t\tthis.panner = this.context.createPanner();\r\n\t\tthis.panner.panningModel = 'HRTF';\r\n\t\tthis.panner.connect( this.gain );\r\n\r\n\t}\r\n\r\n\tgetOutput() {\r\n\r\n\t\treturn this.panner;\r\n\r\n\t}\r\n\r\n\tgetRefDistance() {\r\n\r\n\t\treturn this.panner.refDistance;\r\n\r\n\t}\r\n\r\n\tsetRefDistance( value ) {\r\n\r\n\t\tthis.panner.refDistance = value;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetRolloffFactor() {\r\n\r\n\t\treturn this.panner.rolloffFactor;\r\n\r\n\t}\r\n\r\n\tsetRolloffFactor( value ) {\r\n\r\n\t\tthis.panner.rolloffFactor = value;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetDistanceModel() {\r\n\r\n\t\treturn this.panner.distanceModel;\r\n\r\n\t}\r\n\r\n\tsetDistanceModel( value ) {\r\n\r\n\t\tthis.panner.distanceModel = value;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetMaxDistance() {\r\n\r\n\t\treturn this.panner.maxDistance;\r\n\r\n\t}\r\n\r\n\tsetMaxDistance( value ) {\r\n\r\n\t\tthis.panner.maxDistance = value;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetDirectionalCone( coneInnerAngle, coneOuterAngle, coneOuterGain ) {\r\n\r\n\t\tthis.panner.coneInnerAngle = coneInnerAngle;\r\n\t\tthis.panner.coneOuterAngle = coneOuterAngle;\r\n\t\tthis.panner.coneOuterGain = coneOuterGain;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tupdateMatrixWorld( force ) {\r\n\r\n\t\tsuper.updateMatrixWorld( force );\r\n\r\n\t\tif ( this.hasPlaybackControl === true && this.isPlaying === false ) return;\r\n\r\n\t\tthis.matrixWorld.decompose( _position$3, _quaternion$4, _scale$2 );\r\n\r\n\t\t_orientation$1.set( 0, 0, 1 ).applyQuaternion( _quaternion$4 );\r\n\r\n\t\tconst panner = this.panner;\r\n\r\n\t\tif ( panner.positionX ) {\r\n\r\n\t\t\t// code path for Chrome and Firefox (see #14393)\r\n\r\n\t\t\tconst endTime = this.context.currentTime + this.listener.timeDelta;\r\n\r\n\t\t\tpanner.positionX.linearRampToValueAtTime( _position$3.x, endTime );\r\n\t\t\tpanner.positionY.linearRampToValueAtTime( _position$3.y, endTime );\r\n\t\t\tpanner.positionZ.linearRampToValueAtTime( _position$3.z, endTime );\r\n\t\t\tpanner.orientationX.linearRampToValueAtTime( _orientation$1.x, endTime );\r\n\t\t\tpanner.orientationY.linearRampToValueAtTime( _orientation$1.y, endTime );\r\n\t\t\tpanner.orientationZ.linearRampToValueAtTime( _orientation$1.z, endTime );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tpanner.setPosition( _position$3.x, _position$3.y, _position$3.z );\r\n\t\t\tpanner.setOrientation( _orientation$1.x, _orientation$1.y, _orientation$1.z );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass AudioAnalyser {\r\n\r\n\tconstructor( audio, fftSize = 2048 ) {\r\n\r\n\t\tthis.analyser = audio.context.createAnalyser();\r\n\t\tthis.analyser.fftSize = fftSize;\r\n\r\n\t\tthis.data = new Uint8Array( this.analyser.frequencyBinCount );\r\n\r\n\t\taudio.getOutput().connect( this.analyser );\r\n\r\n\t}\r\n\r\n\r\n\tgetFrequencyData() {\r\n\r\n\t\tthis.analyser.getByteFrequencyData( this.data );\r\n\r\n\t\treturn this.data;\r\n\r\n\t}\r\n\r\n\tgetAverageFrequency() {\r\n\r\n\t\tlet value = 0;\r\n\t\tconst data = this.getFrequencyData();\r\n\r\n\t\tfor ( let i = 0; i < data.length; i ++ ) {\r\n\r\n\t\t\tvalue += data[ i ];\r\n\r\n\t\t}\r\n\r\n\t\treturn value / data.length;\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction PropertyMixer( binding, typeName, valueSize ) {\r\n\r\n\tthis.binding = binding;\r\n\tthis.valueSize = valueSize;\r\n\r\n\tlet mixFunction,\r\n\t\tmixFunctionAdditive,\r\n\t\tsetIdentity;\r\n\r\n\t// buffer layout: [ incoming | accu0 | accu1 | orig | addAccu | (optional work) ]\r\n\t//\r\n\t// interpolators can use .buffer as their .result\r\n\t// the data then goes to 'incoming'\r\n\t//\r\n\t// 'accu0' and 'accu1' are used frame-interleaved for\r\n\t// the cumulative result and are compared to detect\r\n\t// changes\r\n\t//\r\n\t// 'orig' stores the original state of the property\r\n\t//\r\n\t// 'add' is used for additive cumulative results\r\n\t//\r\n\t// 'work' is optional and is only present for quaternion types. It is used\r\n\t// to store intermediate quaternion multiplication results\r\n\r\n\tswitch ( typeName ) {\r\n\r\n\t\tcase 'quaternion':\r\n\t\t\tmixFunction = this._slerp;\r\n\t\t\tmixFunctionAdditive = this._slerpAdditive;\r\n\t\t\tsetIdentity = this._setAdditiveIdentityQuaternion;\r\n\r\n\t\t\tthis.buffer = new Float64Array( valueSize * 6 );\r\n\t\t\tthis._workIndex = 5;\r\n\t\t\tbreak;\r\n\r\n\t\tcase 'string':\r\n\t\tcase 'bool':\r\n\t\t\tmixFunction = this._select;\r\n\r\n\t\t\t// Use the regular mix function and for additive on these types,\r\n\t\t\t// additive is not relevant for non-numeric types\r\n\t\t\tmixFunctionAdditive = this._select;\r\n\r\n\t\t\tsetIdentity = this._setAdditiveIdentityOther;\r\n\r\n\t\t\tthis.buffer = new Array( valueSize * 5 );\r\n\t\t\tbreak;\r\n\r\n\t\tdefault:\r\n\t\t\tmixFunction = this._lerp;\r\n\t\t\tmixFunctionAdditive = this._lerpAdditive;\r\n\t\t\tsetIdentity = this._setAdditiveIdentityNumeric;\r\n\r\n\t\t\tthis.buffer = new Float64Array( valueSize * 5 );\r\n\r\n\t}\r\n\r\n\tthis._mixBufferRegion = mixFunction;\r\n\tthis._mixBufferRegionAdditive = mixFunctionAdditive;\r\n\tthis._setIdentity = setIdentity;\r\n\tthis._origIndex = 3;\r\n\tthis._addIndex = 4;\r\n\r\n\tthis.cumulativeWeight = 0;\r\n\tthis.cumulativeWeightAdditive = 0;\r\n\r\n\tthis.useCount = 0;\r\n\tthis.referenceCount = 0;\r\n\r\n}\r\n\r\nObject.assign( PropertyMixer.prototype, {\r\n\r\n\t// accumulate data in the 'incoming' region into 'accu'\r\n\taccumulate: function ( accuIndex, weight ) {\r\n\r\n\t\t// note: happily accumulating nothing when weight = 0, the caller knows\r\n\t\t// the weight and shouldn't have made the call in the first place\r\n\r\n\t\tconst buffer = this.buffer,\r\n\t\t\tstride = this.valueSize,\r\n\t\t\toffset = accuIndex * stride + stride;\r\n\r\n\t\tlet currentWeight = this.cumulativeWeight;\r\n\r\n\t\tif ( currentWeight === 0 ) {\r\n\r\n\t\t\t// accuN := incoming * weight\r\n\r\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\r\n\r\n\t\t\t\tbuffer[ offset + i ] = buffer[ i ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcurrentWeight = weight;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// accuN := accuN + incoming * weight\r\n\r\n\t\t\tcurrentWeight += weight;\r\n\t\t\tconst mix = weight / currentWeight;\r\n\t\t\tthis._mixBufferRegion( buffer, offset, 0, mix, stride );\r\n\r\n\t\t}\r\n\r\n\t\tthis.cumulativeWeight = currentWeight;\r\n\r\n\t},\r\n\r\n\t// accumulate data in the 'incoming' region into 'add'\r\n\taccumulateAdditive: function ( weight ) {\r\n\r\n\t\tconst buffer = this.buffer,\r\n\t\t\tstride = this.valueSize,\r\n\t\t\toffset = stride * this._addIndex;\r\n\r\n\t\tif ( this.cumulativeWeightAdditive === 0 ) {\r\n\r\n\t\t\t// add = identity\r\n\r\n\t\t\tthis._setIdentity();\r\n\r\n\t\t}\r\n\r\n\t\t// add := add + incoming * weight\r\n\r\n\t\tthis._mixBufferRegionAdditive( buffer, offset, 0, weight, stride );\r\n\t\tthis.cumulativeWeightAdditive += weight;\r\n\r\n\t},\r\n\r\n\t// apply the state of 'accu' to the binding when accus differ\r\n\tapply: function ( accuIndex ) {\r\n\r\n\t\tconst stride = this.valueSize,\r\n\t\t\tbuffer = this.buffer,\r\n\t\t\toffset = accuIndex * stride + stride,\r\n\r\n\t\t\tweight = this.cumulativeWeight,\r\n\t\t\tweightAdditive = this.cumulativeWeightAdditive,\r\n\r\n\t\t\tbinding = this.binding;\r\n\r\n\t\tthis.cumulativeWeight = 0;\r\n\t\tthis.cumulativeWeightAdditive = 0;\r\n\r\n\t\tif ( weight < 1 ) {\r\n\r\n\t\t\t// accuN := accuN + original * ( 1 - cumulativeWeight )\r\n\r\n\t\t\tconst originalValueOffset = stride * this._origIndex;\r\n\r\n\t\t\tthis._mixBufferRegion(\r\n\t\t\t\tbuffer, offset, originalValueOffset, 1 - weight, stride );\r\n\r\n\t\t}\r\n\r\n\t\tif ( weightAdditive > 0 ) {\r\n\r\n\t\t\t// accuN := accuN + additive accuN\r\n\r\n\t\t\tthis._mixBufferRegionAdditive( buffer, offset, this._addIndex * stride, 1, stride );\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = stride, e = stride + stride; i !== e; ++ i ) {\r\n\r\n\t\t\tif ( buffer[ i ] !== buffer[ i + stride ] ) {\r\n\r\n\t\t\t\t// value has changed -> update scene graph\r\n\r\n\t\t\t\tbinding.setValue( buffer, offset );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t// remember the state of the bound property and copy it to both accus\r\n\tsaveOriginalState: function () {\r\n\r\n\t\tconst binding = this.binding;\r\n\r\n\t\tconst buffer = this.buffer,\r\n\t\t\tstride = this.valueSize,\r\n\r\n\t\t\toriginalValueOffset = stride * this._origIndex;\r\n\r\n\t\tbinding.getValue( buffer, originalValueOffset );\r\n\r\n\t\t// accu[0..1] := orig -- initially detect changes against the original\r\n\t\tfor ( let i = stride, e = originalValueOffset; i !== e; ++ i ) {\r\n\r\n\t\t\tbuffer[ i ] = buffer[ originalValueOffset + ( i % stride ) ];\r\n\r\n\t\t}\r\n\r\n\t\t// Add to identity for additive\r\n\t\tthis._setIdentity();\r\n\r\n\t\tthis.cumulativeWeight = 0;\r\n\t\tthis.cumulativeWeightAdditive = 0;\r\n\r\n\t},\r\n\r\n\t// apply the state previously taken via 'saveOriginalState' to the binding\r\n\trestoreOriginalState: function () {\r\n\r\n\t\tconst originalValueOffset = this.valueSize * 3;\r\n\t\tthis.binding.setValue( this.buffer, originalValueOffset );\r\n\r\n\t},\r\n\r\n\t_setAdditiveIdentityNumeric: function () {\r\n\r\n\t\tconst startIndex = this._addIndex * this.valueSize;\r\n\t\tconst endIndex = startIndex + this.valueSize;\r\n\r\n\t\tfor ( let i = startIndex; i < endIndex; i ++ ) {\r\n\r\n\t\t\tthis.buffer[ i ] = 0;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_setAdditiveIdentityQuaternion: function () {\r\n\r\n\t\tthis._setAdditiveIdentityNumeric();\r\n\t\tthis.buffer[ this._addIndex * this.valueSize + 3 ] = 1;\r\n\r\n\t},\r\n\r\n\t_setAdditiveIdentityOther: function () {\r\n\r\n\t\tconst startIndex = this._origIndex * this.valueSize;\r\n\t\tconst targetIndex = this._addIndex * this.valueSize;\r\n\r\n\t\tfor ( let i = 0; i < this.valueSize; i ++ ) {\r\n\r\n\t\t\tthis.buffer[ targetIndex + i ] = this.buffer[ startIndex + i ];\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\r\n\t// mix functions\r\n\r\n\t_select: function ( buffer, dstOffset, srcOffset, t, stride ) {\r\n\r\n\t\tif ( t >= 0.5 ) {\r\n\r\n\t\t\tfor ( let i = 0; i !== stride; ++ i ) {\r\n\r\n\t\t\t\tbuffer[ dstOffset + i ] = buffer[ srcOffset + i ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_slerp: function ( buffer, dstOffset, srcOffset, t ) {\r\n\r\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, srcOffset, t );\r\n\r\n\t},\r\n\r\n\t_slerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\r\n\r\n\t\tconst workOffset = this._workIndex * stride;\r\n\r\n\t\t// Store result in intermediate buffer offset\r\n\t\tQuaternion.multiplyQuaternionsFlat( buffer, workOffset, buffer, dstOffset, buffer, srcOffset );\r\n\r\n\t\t// Slerp to the intermediate result\r\n\t\tQuaternion.slerpFlat( buffer, dstOffset, buffer, dstOffset, buffer, workOffset, t );\r\n\r\n\t},\r\n\r\n\t_lerp: function ( buffer, dstOffset, srcOffset, t, stride ) {\r\n\r\n\t\tconst s = 1 - t;\r\n\r\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\r\n\r\n\t\t\tconst j = dstOffset + i;\r\n\r\n\t\t\tbuffer[ j ] = buffer[ j ] * s + buffer[ srcOffset + i ] * t;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_lerpAdditive: function ( buffer, dstOffset, srcOffset, t, stride ) {\r\n\r\n\t\tfor ( let i = 0; i !== stride; ++ i ) {\r\n\r\n\t\t\tconst j = dstOffset + i;\r\n\r\n\t\t\tbuffer[ j ] = buffer[ j ] + buffer[ srcOffset + i ] * t;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\n// Characters [].:/ are reserved for track binding syntax.\r\nconst _RESERVED_CHARS_RE = '\\\\[\\\\]\\\\.:\\\\/';\r\nconst _reservedRe = new RegExp( '[' + _RESERVED_CHARS_RE + ']', 'g' );\r\n\r\n// Attempts to allow node names from any language. ES5's `\\w` regexp matches\r\n// only latin characters, and the unicode \\p{L} is not yet supported. So\r\n// instead, we exclude reserved characters and match everything else.\r\nconst _wordChar = '[^' + _RESERVED_CHARS_RE + ']';\r\nconst _wordCharOrDot = '[^' + _RESERVED_CHARS_RE.replace( '\\\\.', '' ) + ']';\r\n\r\n// Parent directories, delimited by '/' or ':'. Currently unused, but must\r\n// be matched to parse the rest of the track name.\r\nconst _directoryRe = /((?:WC+[\\/:])*)/.source.replace( 'WC', _wordChar );\r\n\r\n// Target node. May contain word characters (a-zA-Z0-9_) and '.' or '-'.\r\nconst _nodeRe = /(WCOD+)?/.source.replace( 'WCOD', _wordCharOrDot );\r\n\r\n// Object on target node, and accessor. May not contain reserved\r\n// characters. Accessor may contain any character except closing bracket.\r\nconst _objectRe = /(?:\\.(WC+)(?:\\[(.+)\\])?)?/.source.replace( 'WC', _wordChar );\r\n\r\n// Property and accessor. May not contain reserved characters. Accessor may\r\n// contain any non-bracket characters.\r\nconst _propertyRe = /\\.(WC+)(?:\\[(.+)\\])?/.source.replace( 'WC', _wordChar );\r\n\r\nconst _trackRe = new RegExp( ''\r\n\t+ '^'\r\n\t+ _directoryRe\r\n\t+ _nodeRe\r\n\t+ _objectRe\r\n\t+ _propertyRe\r\n\t+ '$'\r\n);\r\n\r\nconst _supportedObjectNames = [ 'material', 'materials', 'bones' ];\r\n\r\nfunction Composite( targetGroup, path, optionalParsedPath ) {\r\n\r\n\tconst parsedPath = optionalParsedPath || PropertyBinding.parseTrackName( path );\r\n\r\n\tthis._targetGroup = targetGroup;\r\n\tthis._bindings = targetGroup.subscribe_( path, parsedPath );\r\n\r\n}\r\n\r\nObject.assign( Composite.prototype, {\r\n\r\n\tgetValue: function ( array, offset ) {\r\n\r\n\t\tthis.bind(); // bind all binding\r\n\r\n\t\tconst firstValidIndex = this._targetGroup.nCachedObjects_,\r\n\t\t\tbinding = this._bindings[ firstValidIndex ];\r\n\r\n\t\t// and only call .getValue on the first\r\n\t\tif ( binding !== undefined ) binding.getValue( array, offset );\r\n\r\n\t},\r\n\r\n\tsetValue: function ( array, offset ) {\r\n\r\n\t\tconst bindings = this._bindings;\r\n\r\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\r\n\r\n\t\t\tbindings[ i ].setValue( array, offset );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tbind: function () {\r\n\r\n\t\tconst bindings = this._bindings;\r\n\r\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\r\n\r\n\t\t\tbindings[ i ].bind();\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tunbind: function () {\r\n\r\n\t\tconst bindings = this._bindings;\r\n\r\n\t\tfor ( let i = this._targetGroup.nCachedObjects_, n = bindings.length; i !== n; ++ i ) {\r\n\r\n\t\t\tbindings[ i ].unbind();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\n\r\nfunction PropertyBinding( rootNode, path, parsedPath ) {\r\n\r\n\tthis.path = path;\r\n\tthis.parsedPath = parsedPath || PropertyBinding.parseTrackName( path );\r\n\r\n\tthis.node = PropertyBinding.findNode( rootNode, this.parsedPath.nodeName ) || rootNode;\r\n\r\n\tthis.rootNode = rootNode;\r\n\r\n}\r\n\r\nObject.assign( PropertyBinding, {\r\n\r\n\tComposite: Composite,\r\n\r\n\tcreate: function ( root, path, parsedPath ) {\r\n\r\n\t\tif ( ! ( root && root.isAnimationObjectGroup ) ) {\r\n\r\n\t\t\treturn new PropertyBinding( root, path, parsedPath );\r\n\r\n\t\t} else {\r\n\r\n\t\t\treturn new PropertyBinding.Composite( root, path, parsedPath );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * Replaces spaces with underscores and removes unsupported characters from\r\n\t * node names, to ensure compatibility with parseTrackName().\r\n\t *\r\n\t * @param {string} name Node name to be sanitized.\r\n\t * @return {string}\r\n\t */\r\n\tsanitizeNodeName: function ( name ) {\r\n\r\n\t\treturn name.replace( /\\s/g, '_' ).replace( _reservedRe, '' );\r\n\r\n\t},\r\n\r\n\tparseTrackName: function ( trackName ) {\r\n\r\n\t\tconst matches = _trackRe.exec( trackName );\r\n\r\n\t\tif ( ! matches ) {\r\n\r\n\t\t\tthrow new Error( 'PropertyBinding: Cannot parse trackName: ' + trackName );\r\n\r\n\t\t}\r\n\r\n\t\tconst results = {\r\n\t\t\t// directoryName: matches[ 1 ], // (tschw) currently unused\r\n\t\t\tnodeName: matches[ 2 ],\r\n\t\t\tobjectName: matches[ 3 ],\r\n\t\t\tobjectIndex: matches[ 4 ],\r\n\t\t\tpropertyName: matches[ 5 ], // required\r\n\t\t\tpropertyIndex: matches[ 6 ]\r\n\t\t};\r\n\r\n\t\tconst lastDot = results.nodeName && results.nodeName.lastIndexOf( '.' );\r\n\r\n\t\tif ( lastDot !== undefined && lastDot !== - 1 ) {\r\n\r\n\t\t\tconst objectName = results.nodeName.substring( lastDot + 1 );\r\n\r\n\t\t\t// Object names must be checked against an allowlist. Otherwise, there\r\n\t\t\t// is no way to parse 'foo.bar.baz': 'baz' must be a property, but\r\n\t\t\t// 'bar' could be the objectName, or part of a nodeName (which can\r\n\t\t\t// include '.' characters).\r\n\t\t\tif ( _supportedObjectNames.indexOf( objectName ) !== - 1 ) {\r\n\r\n\t\t\t\tresults.nodeName = results.nodeName.substring( 0, lastDot );\r\n\t\t\t\tresults.objectName = objectName;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( results.propertyName === null || results.propertyName.length === 0 ) {\r\n\r\n\t\t\tthrow new Error( 'PropertyBinding: can not parse propertyName from trackName: ' + trackName );\r\n\r\n\t\t}\r\n\r\n\t\treturn results;\r\n\r\n\t},\r\n\r\n\tfindNode: function ( root, nodeName ) {\r\n\r\n\t\tif ( ! nodeName || nodeName === '' || nodeName === '.' || nodeName === - 1 || nodeName === root.name || nodeName === root.uuid ) {\r\n\r\n\t\t\treturn root;\r\n\r\n\t\t}\r\n\r\n\t\t// search into skeleton bones.\r\n\t\tif ( root.skeleton ) {\r\n\r\n\t\t\tconst bone = root.skeleton.getBoneByName( nodeName );\r\n\r\n\t\t\tif ( bone !== undefined ) {\r\n\r\n\t\t\t\treturn bone;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// search into node subtree.\r\n\t\tif ( root.children ) {\r\n\r\n\t\t\tconst searchNodeSubtree = function ( children ) {\r\n\r\n\t\t\t\tfor ( let i = 0; i < children.length; i ++ ) {\r\n\r\n\t\t\t\t\tconst childNode = children[ i ];\r\n\r\n\t\t\t\t\tif ( childNode.name === nodeName || childNode.uuid === nodeName ) {\r\n\r\n\t\t\t\t\t\treturn childNode;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst result = searchNodeSubtree( childNode.children );\r\n\r\n\t\t\t\t\tif ( result ) return result;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn null;\r\n\r\n\t\t\t};\r\n\r\n\t\t\tconst subTreeNode = searchNodeSubtree( root.children );\r\n\r\n\t\t\tif ( subTreeNode ) {\r\n\r\n\t\t\t\treturn subTreeNode;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( PropertyBinding.prototype, { // prototype, continued\r\n\r\n\t// these are used to \"bind\" a nonexistent property\r\n\t_getValue_unavailable: function () {},\r\n\t_setValue_unavailable: function () {},\r\n\r\n\tBindingType: {\r\n\t\tDirect: 0,\r\n\t\tEntireArray: 1,\r\n\t\tArrayElement: 2,\r\n\t\tHasFromToArray: 3\r\n\t},\r\n\r\n\tVersioning: {\r\n\t\tNone: 0,\r\n\t\tNeedsUpdate: 1,\r\n\t\tMatrixWorldNeedsUpdate: 2\r\n\t},\r\n\r\n\tGetterByBindingType: [\r\n\r\n\t\tfunction getValue_direct( buffer, offset ) {\r\n\r\n\t\t\tbuffer[ offset ] = this.node[ this.propertyName ];\r\n\r\n\t\t},\r\n\r\n\t\tfunction getValue_array( buffer, offset ) {\r\n\r\n\t\t\tconst source = this.resolvedProperty;\r\n\r\n\t\t\tfor ( let i = 0, n = source.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\tbuffer[ offset ++ ] = source[ i ];\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tfunction getValue_arrayElement( buffer, offset ) {\r\n\r\n\t\t\tbuffer[ offset ] = this.resolvedProperty[ this.propertyIndex ];\r\n\r\n\t\t},\r\n\r\n\t\tfunction getValue_toArray( buffer, offset ) {\r\n\r\n\t\t\tthis.resolvedProperty.toArray( buffer, offset );\r\n\r\n\t\t}\r\n\r\n\t],\r\n\r\n\tSetterByBindingTypeAndVersioning: [\r\n\r\n\t\t[\r\n\t\t\t// Direct\r\n\r\n\t\t\tfunction setValue_direct( buffer, offset ) {\r\n\r\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfunction setValue_direct_setNeedsUpdate( buffer, offset ) {\r\n\r\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\r\n\t\t\t\tthis.targetObject.needsUpdate = true;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfunction setValue_direct_setMatrixWorldNeedsUpdate( buffer, offset ) {\r\n\r\n\t\t\t\tthis.targetObject[ this.propertyName ] = buffer[ offset ];\r\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t], [\r\n\r\n\t\t\t// EntireArray\r\n\r\n\t\t\tfunction setValue_array( buffer, offset ) {\r\n\r\n\t\t\t\tconst dest = this.resolvedProperty;\r\n\r\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfunction setValue_array_setNeedsUpdate( buffer, offset ) {\r\n\r\n\t\t\t\tconst dest = this.resolvedProperty;\r\n\r\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.targetObject.needsUpdate = true;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfunction setValue_array_setMatrixWorldNeedsUpdate( buffer, offset ) {\r\n\r\n\t\t\t\tconst dest = this.resolvedProperty;\r\n\r\n\t\t\t\tfor ( let i = 0, n = dest.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\t\tdest[ i ] = buffer[ offset ++ ];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t], [\r\n\r\n\t\t\t// ArrayElement\r\n\r\n\t\t\tfunction setValue_arrayElement( buffer, offset ) {\r\n\r\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfunction setValue_arrayElement_setNeedsUpdate( buffer, offset ) {\r\n\r\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\r\n\t\t\t\tthis.targetObject.needsUpdate = true;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfunction setValue_arrayElement_setMatrixWorldNeedsUpdate( buffer, offset ) {\r\n\r\n\t\t\t\tthis.resolvedProperty[ this.propertyIndex ] = buffer[ offset ];\r\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t], [\r\n\r\n\t\t\t// HasToFromArray\r\n\r\n\t\t\tfunction setValue_fromArray( buffer, offset ) {\r\n\r\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfunction setValue_fromArray_setNeedsUpdate( buffer, offset ) {\r\n\r\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\r\n\t\t\t\tthis.targetObject.needsUpdate = true;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tfunction setValue_fromArray_setMatrixWorldNeedsUpdate( buffer, offset ) {\r\n\r\n\t\t\t\tthis.resolvedProperty.fromArray( buffer, offset );\r\n\t\t\t\tthis.targetObject.matrixWorldNeedsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t]\r\n\r\n\t],\r\n\r\n\tgetValue: function getValue_unbound( targetArray, offset ) {\r\n\r\n\t\tthis.bind();\r\n\t\tthis.getValue( targetArray, offset );\r\n\r\n\t\t// Note: This class uses a State pattern on a per-method basis:\r\n\t\t// 'bind' sets 'this.getValue' / 'setValue' and shadows the\r\n\t\t// prototype version of these methods with one that represents\r\n\t\t// the bound state. When the property is not found, the methods\r\n\t\t// become no-ops.\r\n\r\n\t},\r\n\r\n\tsetValue: function getValue_unbound( sourceArray, offset ) {\r\n\r\n\t\tthis.bind();\r\n\t\tthis.setValue( sourceArray, offset );\r\n\r\n\t},\r\n\r\n\t// create getter / setter pair for a property in the scene graph\r\n\tbind: function () {\r\n\r\n\t\tlet targetObject = this.node;\r\n\t\tconst parsedPath = this.parsedPath;\r\n\r\n\t\tconst objectName = parsedPath.objectName;\r\n\t\tconst propertyName = parsedPath.propertyName;\r\n\t\tlet propertyIndex = parsedPath.propertyIndex;\r\n\r\n\t\tif ( ! targetObject ) {\r\n\r\n\t\t\ttargetObject = PropertyBinding.findNode( this.rootNode, parsedPath.nodeName ) || this.rootNode;\r\n\r\n\t\t\tthis.node = targetObject;\r\n\r\n\t\t}\r\n\r\n\t\t// set fail state so we can just 'return' on error\r\n\t\tthis.getValue = this._getValue_unavailable;\r\n\t\tthis.setValue = this._setValue_unavailable;\r\n\r\n\t\t// ensure there is a value node\r\n\t\tif ( ! targetObject ) {\r\n\r\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update node for track: ' + this.path + ' but it wasn\\'t found.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( objectName ) {\r\n\r\n\t\t\tlet objectIndex = parsedPath.objectIndex;\r\n\r\n\t\t\t// special cases were we need to reach deeper into the hierarchy to get the face materials....\r\n\t\t\tswitch ( objectName ) {\r\n\r\n\t\t\t\tcase 'materials':\r\n\r\n\t\t\t\t\tif ( ! targetObject.material ) {\r\n\r\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material as node does not have a material.', this );\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( ! targetObject.material.materials ) {\r\n\r\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to material.materials as node.material does not have a materials array.', this );\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttargetObject = targetObject.material.materials;\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'bones':\r\n\r\n\t\t\t\t\tif ( ! targetObject.skeleton ) {\r\n\r\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to bones as node does not have a skeleton.', this );\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// potential future optimization: skip this if propertyIndex is already an integer\r\n\t\t\t\t\t// and convert the integer string to a true integer.\r\n\r\n\t\t\t\t\ttargetObject = targetObject.skeleton.bones;\r\n\r\n\t\t\t\t\t// support resolving morphTarget names into indices.\r\n\t\t\t\t\tfor ( let i = 0; i < targetObject.length; i ++ ) {\r\n\r\n\t\t\t\t\t\tif ( targetObject[ i ].name === objectIndex ) {\r\n\r\n\t\t\t\t\t\t\tobjectIndex = i;\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tif ( targetObject[ objectName ] === undefined ) {\r\n\r\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to objectName of node undefined.', this );\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttargetObject = targetObject[ objectName ];\r\n\r\n\t\t\t}\r\n\r\n\r\n\t\t\tif ( objectIndex !== undefined ) {\r\n\r\n\t\t\t\tif ( targetObject[ objectIndex ] === undefined ) {\r\n\r\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to bind to objectIndex of objectName, but is undefined.', this, targetObject );\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\ttargetObject = targetObject[ objectIndex ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// resolve property\r\n\t\tconst nodeProperty = targetObject[ propertyName ];\r\n\r\n\t\tif ( nodeProperty === undefined ) {\r\n\r\n\t\t\tconst nodeName = parsedPath.nodeName;\r\n\r\n\t\t\tconsole.error( 'THREE.PropertyBinding: Trying to update property for track: ' + nodeName +\r\n\t\t\t\t'.' + propertyName + ' but it wasn\\'t found.', targetObject );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\t// determine versioning scheme\r\n\t\tlet versioning = this.Versioning.None;\r\n\r\n\t\tthis.targetObject = targetObject;\r\n\r\n\t\tif ( targetObject.needsUpdate !== undefined ) { // material\r\n\r\n\t\t\tversioning = this.Versioning.NeedsUpdate;\r\n\r\n\t\t} else if ( targetObject.matrixWorldNeedsUpdate !== undefined ) { // node transform\r\n\r\n\t\t\tversioning = this.Versioning.MatrixWorldNeedsUpdate;\r\n\r\n\t\t}\r\n\r\n\t\t// determine how the property gets bound\r\n\t\tlet bindingType = this.BindingType.Direct;\r\n\r\n\t\tif ( propertyIndex !== undefined ) {\r\n\r\n\t\t\t// access a sub element of the property array (only primitives are supported right now)\r\n\r\n\t\t\tif ( propertyName === 'morphTargetInfluences' ) {\r\n\r\n\t\t\t\t// potential optimization, skip this if propertyIndex is already an integer, and convert the integer string to a true integer.\r\n\r\n\t\t\t\t// support resolving morphTarget names into indices.\r\n\t\t\t\tif ( ! targetObject.geometry ) {\r\n\r\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.', this );\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( targetObject.geometry.isBufferGeometry ) {\r\n\r\n\t\t\t\t\tif ( ! targetObject.geometry.morphAttributes ) {\r\n\r\n\t\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences because node does not have a geometry.morphAttributes.', this );\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( targetObject.morphTargetDictionary[ propertyIndex ] !== undefined ) {\r\n\r\n\t\t\t\t\t\tpropertyIndex = targetObject.morphTargetDictionary[ propertyIndex ];\r\n\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.error( 'THREE.PropertyBinding: Can not bind to morphTargetInfluences on THREE.Geometry. Use THREE.BufferGeometry instead.', this );\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tbindingType = this.BindingType.ArrayElement;\r\n\r\n\t\t\tthis.resolvedProperty = nodeProperty;\r\n\t\t\tthis.propertyIndex = propertyIndex;\r\n\r\n\t\t} else if ( nodeProperty.fromArray !== undefined && nodeProperty.toArray !== undefined ) {\r\n\r\n\t\t\t// must use copy for Object3D.Euler/Quaternion\r\n\r\n\t\t\tbindingType = this.BindingType.HasFromToArray;\r\n\r\n\t\t\tthis.resolvedProperty = nodeProperty;\r\n\r\n\t\t} else if ( Array.isArray( nodeProperty ) ) {\r\n\r\n\t\t\tbindingType = this.BindingType.EntireArray;\r\n\r\n\t\t\tthis.resolvedProperty = nodeProperty;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.propertyName = propertyName;\r\n\r\n\t\t}\r\n\r\n\t\t// select getter / setter\r\n\t\tthis.getValue = this.GetterByBindingType[ bindingType ];\r\n\t\tthis.setValue = this.SetterByBindingTypeAndVersioning[ bindingType ][ versioning ];\r\n\r\n\t},\r\n\r\n\tunbind: function () {\r\n\r\n\t\tthis.node = null;\r\n\r\n\t\t// back to the prototype version of getValue / setValue\r\n\t\t// note: avoiding to mutate the shape of 'this' via 'delete'\r\n\t\tthis.getValue = this._getValue_unbound;\r\n\t\tthis.setValue = this._setValue_unbound;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n// DECLARE ALIAS AFTER assign prototype\r\nObject.assign( PropertyBinding.prototype, {\r\n\r\n\t// initial state of these methods that calls 'bind'\r\n\t_getValue_unbound: PropertyBinding.prototype.getValue,\r\n\t_setValue_unbound: PropertyBinding.prototype.setValue,\r\n\r\n} );\r\n\r\n/**\r\n *\r\n * A group of objects that receives a shared animation state.\r\n *\r\n * Usage:\r\n *\r\n * - Add objects you would otherwise pass as 'root' to the\r\n * constructor or the .clipAction method of AnimationMixer.\r\n *\r\n * - Instead pass this object as 'root'.\r\n *\r\n * - You can also add and remove objects later when the mixer\r\n * is running.\r\n *\r\n * Note:\r\n *\r\n * Objects of this class appear as one object to the mixer,\r\n * so cache control of the individual objects must be done\r\n * on the group.\r\n *\r\n * Limitation:\r\n *\r\n * - The animated properties must be compatible among the\r\n * all objects in the group.\r\n *\r\n * - A single property can either be controlled through a\r\n * target group or directly, but not both.\r\n */\r\n\r\nfunction AnimationObjectGroup() {\r\n\r\n\tthis.uuid = MathUtils.generateUUID();\r\n\r\n\t// cached objects followed by the active ones\r\n\tthis._objects = Array.prototype.slice.call( arguments );\r\n\r\n\tthis.nCachedObjects_ = 0; // threshold\r\n\t// note: read by PropertyBinding.Composite\r\n\r\n\tconst indices = {};\r\n\tthis._indicesByUUID = indices; // for bookkeeping\r\n\r\n\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\r\n\r\n\t\tindices[ arguments[ i ].uuid ] = i;\r\n\r\n\t}\r\n\r\n\tthis._paths = []; // inside: string\r\n\tthis._parsedPaths = []; // inside: { we don't care, here }\r\n\tthis._bindings = []; // inside: Array< PropertyBinding >\r\n\tthis._bindingsIndicesByPath = {}; // inside: indices in these arrays\r\n\r\n\tconst scope = this;\r\n\r\n\tthis.stats = {\r\n\r\n\t\tobjects: {\r\n\t\t\tget total() {\r\n\r\n\t\t\t\treturn scope._objects.length;\r\n\r\n\t\t\t},\r\n\t\t\tget inUse() {\r\n\r\n\t\t\t\treturn this.total - scope.nCachedObjects_;\r\n\r\n\t\t\t}\r\n\t\t},\r\n\t\tget bindingsPerObject() {\r\n\r\n\t\t\treturn scope._bindings.length;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n}\r\n\r\nObject.assign( AnimationObjectGroup.prototype, {\r\n\r\n\tisAnimationObjectGroup: true,\r\n\r\n\tadd: function () {\r\n\r\n\t\tconst objects = this._objects,\r\n\t\t\tindicesByUUID = this._indicesByUUID,\r\n\t\t\tpaths = this._paths,\r\n\t\t\tparsedPaths = this._parsedPaths,\r\n\t\t\tbindings = this._bindings,\r\n\t\t\tnBindings = bindings.length;\r\n\r\n\t\tlet knownObject = undefined,\r\n\t\t\tnObjects = objects.length,\r\n\t\t\tnCachedObjects = this.nCachedObjects_;\r\n\r\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\r\n\r\n\t\t\tconst object = arguments[ i ],\r\n\t\t\t\tuuid = object.uuid;\r\n\t\t\tlet index = indicesByUUID[ uuid ];\r\n\r\n\t\t\tif ( index === undefined ) {\r\n\r\n\t\t\t\t// unknown object -> add it to the ACTIVE region\r\n\r\n\t\t\t\tindex = nObjects ++;\r\n\t\t\t\tindicesByUUID[ uuid ] = index;\r\n\t\t\t\tobjects.push( object );\r\n\r\n\t\t\t\t// accounting is done, now do the same for all bindings\r\n\r\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\r\n\r\n\t\t\t\t\tbindings[ j ].push( new PropertyBinding( object, paths[ j ], parsedPaths[ j ] ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if ( index < nCachedObjects ) {\r\n\r\n\t\t\t\tknownObject = objects[ index ];\r\n\r\n\t\t\t\t// move existing object to the ACTIVE region\r\n\r\n\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\r\n\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ];\r\n\r\n\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\r\n\t\t\t\tobjects[ index ] = lastCachedObject;\r\n\r\n\t\t\t\tindicesByUUID[ uuid ] = firstActiveIndex;\r\n\t\t\t\tobjects[ firstActiveIndex ] = object;\r\n\r\n\t\t\t\t// accounting is done, now do the same for all bindings\r\n\r\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\r\n\r\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\r\n\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ];\r\n\r\n\t\t\t\t\tlet binding = bindingsForPath[ index ];\r\n\r\n\t\t\t\t\tbindingsForPath[ index ] = lastCached;\r\n\r\n\t\t\t\t\tif ( binding === undefined ) {\r\n\r\n\t\t\t\t\t\t// since we do not bother to create new bindings\r\n\t\t\t\t\t\t// for objects that are cached, the binding may\r\n\t\t\t\t\t\t// or may not exist\r\n\r\n\t\t\t\t\t\tbinding = new PropertyBinding( object, paths[ j ], parsedPaths[ j ] );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = binding;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else if ( objects[ index ] !== knownObject ) {\r\n\r\n\t\t\t\tconsole.error( 'THREE.AnimationObjectGroup: Different objects with the same UUID ' +\r\n\t\t\t\t\t'detected. Clean the caches or recreate your infrastructure when reloading scenes.' );\r\n\r\n\t\t\t} // else the object is already where we want it to be\r\n\r\n\t\t} // for arguments\r\n\r\n\t\tthis.nCachedObjects_ = nCachedObjects;\r\n\r\n\t},\r\n\r\n\tremove: function () {\r\n\r\n\t\tconst objects = this._objects,\r\n\t\t\tindicesByUUID = this._indicesByUUID,\r\n\t\t\tbindings = this._bindings,\r\n\t\t\tnBindings = bindings.length;\r\n\r\n\t\tlet nCachedObjects = this.nCachedObjects_;\r\n\r\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\r\n\r\n\t\t\tconst object = arguments[ i ],\r\n\t\t\t\tuuid = object.uuid,\r\n\t\t\t\tindex = indicesByUUID[ uuid ];\r\n\r\n\t\t\tif ( index !== undefined && index >= nCachedObjects ) {\r\n\r\n\t\t\t\t// move existing object into the CACHED region\r\n\r\n\t\t\t\tconst lastCachedIndex = nCachedObjects ++,\r\n\t\t\t\t\tfirstActiveObject = objects[ lastCachedIndex ];\r\n\r\n\t\t\t\tindicesByUUID[ firstActiveObject.uuid ] = index;\r\n\t\t\t\tobjects[ index ] = firstActiveObject;\r\n\r\n\t\t\t\tindicesByUUID[ uuid ] = lastCachedIndex;\r\n\t\t\t\tobjects[ lastCachedIndex ] = object;\r\n\r\n\t\t\t\t// accounting is done, now do the same for all bindings\r\n\r\n\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\r\n\r\n\t\t\t\t\tconst bindingsForPath = bindings[ j ],\r\n\t\t\t\t\t\tfirstActive = bindingsForPath[ lastCachedIndex ],\r\n\t\t\t\t\t\tbinding = bindingsForPath[ index ];\r\n\r\n\t\t\t\t\tbindingsForPath[ index ] = firstActive;\r\n\t\t\t\t\tbindingsForPath[ lastCachedIndex ] = binding;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t} // for arguments\r\n\r\n\t\tthis.nCachedObjects_ = nCachedObjects;\r\n\r\n\t},\r\n\r\n\t// remove & forget\r\n\tuncache: function () {\r\n\r\n\t\tconst objects = this._objects,\r\n\t\t\tindicesByUUID = this._indicesByUUID,\r\n\t\t\tbindings = this._bindings,\r\n\t\t\tnBindings = bindings.length;\r\n\r\n\t\tlet nCachedObjects = this.nCachedObjects_,\r\n\t\t\tnObjects = objects.length;\r\n\r\n\t\tfor ( let i = 0, n = arguments.length; i !== n; ++ i ) {\r\n\r\n\t\t\tconst object = arguments[ i ],\r\n\t\t\t\tuuid = object.uuid,\r\n\t\t\t\tindex = indicesByUUID[ uuid ];\r\n\r\n\t\t\tif ( index !== undefined ) {\r\n\r\n\t\t\t\tdelete indicesByUUID[ uuid ];\r\n\r\n\t\t\t\tif ( index < nCachedObjects ) {\r\n\r\n\t\t\t\t\t// object is cached, shrink the CACHED region\r\n\r\n\t\t\t\t\tconst firstActiveIndex = -- nCachedObjects,\r\n\t\t\t\t\t\tlastCachedObject = objects[ firstActiveIndex ],\r\n\t\t\t\t\t\tlastIndex = -- nObjects,\r\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\r\n\r\n\t\t\t\t\t// last cached object takes this object's place\r\n\t\t\t\t\tindicesByUUID[ lastCachedObject.uuid ] = index;\r\n\t\t\t\t\tobjects[ index ] = lastCachedObject;\r\n\r\n\t\t\t\t\t// last object goes to the activated slot and pop\r\n\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = firstActiveIndex;\r\n\t\t\t\t\tobjects[ firstActiveIndex ] = lastObject;\r\n\t\t\t\t\tobjects.pop();\r\n\r\n\t\t\t\t\t// accounting is done, now do the same for all bindings\r\n\r\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\r\n\r\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ],\r\n\t\t\t\t\t\t\tlastCached = bindingsForPath[ firstActiveIndex ],\r\n\t\t\t\t\t\t\tlast = bindingsForPath[ lastIndex ];\r\n\r\n\t\t\t\t\t\tbindingsForPath[ index ] = lastCached;\r\n\t\t\t\t\t\tbindingsForPath[ firstActiveIndex ] = last;\r\n\t\t\t\t\t\tbindingsForPath.pop();\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// object is active, just swap with the last and pop\r\n\r\n\t\t\t\t\tconst lastIndex = -- nObjects,\r\n\t\t\t\t\t\tlastObject = objects[ lastIndex ];\r\n\r\n\t\t\t\t\tif ( lastIndex > 0 ) {\r\n\r\n\t\t\t\t\t\tindicesByUUID[ lastObject.uuid ] = index;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tobjects[ index ] = lastObject;\r\n\t\t\t\t\tobjects.pop();\r\n\r\n\t\t\t\t\t// accounting is done, now do the same for all bindings\r\n\r\n\t\t\t\t\tfor ( let j = 0, m = nBindings; j !== m; ++ j ) {\r\n\r\n\t\t\t\t\t\tconst bindingsForPath = bindings[ j ];\r\n\r\n\t\t\t\t\t\tbindingsForPath[ index ] = bindingsForPath[ lastIndex ];\r\n\t\t\t\t\t\tbindingsForPath.pop();\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} // cached or active\r\n\r\n\t\t\t} // if object is known\r\n\r\n\t\t} // for arguments\r\n\r\n\t\tthis.nCachedObjects_ = nCachedObjects;\r\n\r\n\t},\r\n\r\n\t// Internal interface used by befriended PropertyBinding.Composite:\r\n\r\n\tsubscribe_: function ( path, parsedPath ) {\r\n\r\n\t\t// returns an array of bindings for the given path that is changed\r\n\t\t// according to the contained objects in the group\r\n\r\n\t\tconst indicesByPath = this._bindingsIndicesByPath;\r\n\t\tlet index = indicesByPath[ path ];\r\n\t\tconst bindings = this._bindings;\r\n\r\n\t\tif ( index !== undefined ) return bindings[ index ];\r\n\r\n\t\tconst paths = this._paths,\r\n\t\t\tparsedPaths = this._parsedPaths,\r\n\t\t\tobjects = this._objects,\r\n\t\t\tnObjects = objects.length,\r\n\t\t\tnCachedObjects = this.nCachedObjects_,\r\n\t\t\tbindingsForPath = new Array( nObjects );\r\n\r\n\t\tindex = bindings.length;\r\n\r\n\t\tindicesByPath[ path ] = index;\r\n\r\n\t\tpaths.push( path );\r\n\t\tparsedPaths.push( parsedPath );\r\n\t\tbindings.push( bindingsForPath );\r\n\r\n\t\tfor ( let i = nCachedObjects, n = objects.length; i !== n; ++ i ) {\r\n\r\n\t\t\tconst object = objects[ i ];\r\n\t\t\tbindingsForPath[ i ] = new PropertyBinding( object, path, parsedPath );\r\n\r\n\t\t}\r\n\r\n\t\treturn bindingsForPath;\r\n\r\n\t},\r\n\r\n\tunsubscribe_: function ( path ) {\r\n\r\n\t\t// tells the group to forget about a property path and no longer\r\n\t\t// update the array previously obtained with 'subscribe_'\r\n\r\n\t\tconst indicesByPath = this._bindingsIndicesByPath,\r\n\t\t\tindex = indicesByPath[ path ];\r\n\r\n\t\tif ( index !== undefined ) {\r\n\r\n\t\t\tconst paths = this._paths,\r\n\t\t\t\tparsedPaths = this._parsedPaths,\r\n\t\t\t\tbindings = this._bindings,\r\n\t\t\t\tlastBindingsIndex = bindings.length - 1,\r\n\t\t\t\tlastBindings = bindings[ lastBindingsIndex ],\r\n\t\t\t\tlastBindingsPath = path[ lastBindingsIndex ];\r\n\r\n\t\t\tindicesByPath[ lastBindingsPath ] = index;\r\n\r\n\t\t\tbindings[ index ] = lastBindings;\r\n\t\t\tbindings.pop();\r\n\r\n\t\t\tparsedPaths[ index ] = parsedPaths[ lastBindingsIndex ];\r\n\t\t\tparsedPaths.pop();\r\n\r\n\t\t\tpaths[ index ] = paths[ lastBindingsIndex ];\r\n\t\t\tpaths.pop();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\nclass AnimationAction {\r\n\r\n\tconstructor( mixer, clip, localRoot = null, blendMode = clip.blendMode ) {\r\n\r\n\t\tthis._mixer = mixer;\r\n\t\tthis._clip = clip;\r\n\t\tthis._localRoot = localRoot;\r\n\t\tthis.blendMode = blendMode;\r\n\r\n\t\tconst tracks = clip.tracks,\r\n\t\t\tnTracks = tracks.length,\r\n\t\t\tinterpolants = new Array( nTracks );\r\n\r\n\t\tconst interpolantSettings = {\r\n\t\t\tendingStart: ZeroCurvatureEnding,\r\n\t\t\tendingEnd: ZeroCurvatureEnding\r\n\t\t};\r\n\r\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\r\n\r\n\t\t\tconst interpolant = tracks[ i ].createInterpolant( null );\r\n\t\t\tinterpolants[ i ] = interpolant;\r\n\t\t\tinterpolant.settings = interpolantSettings;\r\n\r\n\t\t}\r\n\r\n\t\tthis._interpolantSettings = interpolantSettings;\r\n\r\n\t\tthis._interpolants = interpolants; // bound by the mixer\r\n\r\n\t\t// inside: PropertyMixer (managed by the mixer)\r\n\t\tthis._propertyBindings = new Array( nTracks );\r\n\r\n\t\tthis._cacheIndex = null; // for the memory manager\r\n\t\tthis._byClipCacheIndex = null; // for the memory manager\r\n\r\n\t\tthis._timeScaleInterpolant = null;\r\n\t\tthis._weightInterpolant = null;\r\n\r\n\t\tthis.loop = LoopRepeat;\r\n\t\tthis._loopCount = - 1;\r\n\r\n\t\t// global mixer time when the action is to be started\r\n\t\t// it's set back to 'null' upon start of the action\r\n\t\tthis._startTime = null;\r\n\r\n\t\t// scaled local time of the action\r\n\t\t// gets clamped or wrapped to 0..clip.duration according to loop\r\n\t\tthis.time = 0;\r\n\r\n\t\tthis.timeScale = 1;\r\n\t\tthis._effectiveTimeScale = 1;\r\n\r\n\t\tthis.weight = 1;\r\n\t\tthis._effectiveWeight = 1;\r\n\r\n\t\tthis.repetitions = Infinity; // no. of repetitions when looping\r\n\r\n\t\tthis.paused = false; // true -> zero effective time scale\r\n\t\tthis.enabled = true; // false -> zero effective weight\r\n\r\n\t\tthis.clampWhenFinished = false;// keep feeding the last frame?\r\n\r\n\t\tthis.zeroSlopeAtStart = true;// for smooth interpolation w/o separate\r\n\t\tthis.zeroSlopeAtEnd = true;// clips for start, loop and end\r\n\r\n\t}\r\n\r\n\t// State & Scheduling\r\n\r\n\tplay() {\r\n\r\n\t\tthis._mixer._activateAction( this );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tstop() {\r\n\r\n\t\tthis._mixer._deactivateAction( this );\r\n\r\n\t\treturn this.reset();\r\n\r\n\t}\r\n\r\n\treset() {\r\n\r\n\t\tthis.paused = false;\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.time = 0; // restart clip\r\n\t\tthis._loopCount = - 1;// forget previous loops\r\n\t\tthis._startTime = null;// forget scheduling\r\n\r\n\t\treturn this.stopFading().stopWarping();\r\n\r\n\t}\r\n\r\n\tisRunning() {\r\n\r\n\t\treturn this.enabled && ! this.paused && this.timeScale !== 0 &&\r\n\t\t\tthis._startTime === null && this._mixer._isActiveAction( this );\r\n\r\n\t}\r\n\r\n\t// return true when play has been called\r\n\tisScheduled() {\r\n\r\n\t\treturn this._mixer._isActiveAction( this );\r\n\r\n\t}\r\n\r\n\tstartAt( time ) {\r\n\r\n\t\tthis._startTime = time;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetLoop( mode, repetitions ) {\r\n\r\n\t\tthis.loop = mode;\r\n\t\tthis.repetitions = repetitions;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t// Weight\r\n\r\n\t// set the weight stopping any scheduled fading\r\n\t// although .enabled = false yields an effective weight of zero, this\r\n\t// method does *not* change .enabled, because it would be confusing\r\n\tsetEffectiveWeight( weight ) {\r\n\r\n\t\tthis.weight = weight;\r\n\r\n\t\t// note: same logic as when updated at runtime\r\n\t\tthis._effectiveWeight = this.enabled ? weight : 0;\r\n\r\n\t\treturn this.stopFading();\r\n\r\n\t}\r\n\r\n\t// return the weight considering fading and .enabled\r\n\tgetEffectiveWeight() {\r\n\r\n\t\treturn this._effectiveWeight;\r\n\r\n\t}\r\n\r\n\tfadeIn( duration ) {\r\n\r\n\t\treturn this._scheduleFading( duration, 0, 1 );\r\n\r\n\t}\r\n\r\n\tfadeOut( duration ) {\r\n\r\n\t\treturn this._scheduleFading( duration, 1, 0 );\r\n\r\n\t}\r\n\r\n\tcrossFadeFrom( fadeOutAction, duration, warp ) {\r\n\r\n\t\tfadeOutAction.fadeOut( duration );\r\n\t\tthis.fadeIn( duration );\r\n\r\n\t\tif ( warp ) {\r\n\r\n\t\t\tconst fadeInDuration = this._clip.duration,\r\n\t\t\t\tfadeOutDuration = fadeOutAction._clip.duration,\r\n\r\n\t\t\t\tstartEndRatio = fadeOutDuration / fadeInDuration,\r\n\t\t\t\tendStartRatio = fadeInDuration / fadeOutDuration;\r\n\r\n\t\t\tfadeOutAction.warp( 1.0, startEndRatio, duration );\r\n\t\t\tthis.warp( endStartRatio, 1.0, duration );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcrossFadeTo( fadeInAction, duration, warp ) {\r\n\r\n\t\treturn fadeInAction.crossFadeFrom( this, duration, warp );\r\n\r\n\t}\r\n\r\n\tstopFading() {\r\n\r\n\t\tconst weightInterpolant = this._weightInterpolant;\r\n\r\n\t\tif ( weightInterpolant !== null ) {\r\n\r\n\t\t\tthis._weightInterpolant = null;\r\n\t\t\tthis._mixer._takeBackControlInterpolant( weightInterpolant );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t// Time Scale Control\r\n\r\n\t// set the time scale stopping any scheduled warping\r\n\t// although .paused = true yields an effective time scale of zero, this\r\n\t// method does *not* change .paused, because it would be confusing\r\n\tsetEffectiveTimeScale( timeScale ) {\r\n\r\n\t\tthis.timeScale = timeScale;\r\n\t\tthis._effectiveTimeScale = this.paused ? 0 : timeScale;\r\n\r\n\t\treturn this.stopWarping();\r\n\r\n\t}\r\n\r\n\t// return the time scale considering warping and .paused\r\n\tgetEffectiveTimeScale() {\r\n\r\n\t\treturn this._effectiveTimeScale;\r\n\r\n\t}\r\n\r\n\tsetDuration( duration ) {\r\n\r\n\t\tthis.timeScale = this._clip.duration / duration;\r\n\r\n\t\treturn this.stopWarping();\r\n\r\n\t}\r\n\r\n\tsyncWith( action ) {\r\n\r\n\t\tthis.time = action.time;\r\n\t\tthis.timeScale = action.timeScale;\r\n\r\n\t\treturn this.stopWarping();\r\n\r\n\t}\r\n\r\n\thalt( duration ) {\r\n\r\n\t\treturn this.warp( this._effectiveTimeScale, 0, duration );\r\n\r\n\t}\r\n\r\n\twarp( startTimeScale, endTimeScale, duration ) {\r\n\r\n\t\tconst mixer = this._mixer,\r\n\t\t\tnow = mixer.time,\r\n\t\t\ttimeScale = this.timeScale;\r\n\r\n\t\tlet interpolant = this._timeScaleInterpolant;\r\n\r\n\t\tif ( interpolant === null ) {\r\n\r\n\t\t\tinterpolant = mixer._lendControlInterpolant();\r\n\t\t\tthis._timeScaleInterpolant = interpolant;\r\n\r\n\t\t}\r\n\r\n\t\tconst times = interpolant.parameterPositions,\r\n\t\t\tvalues = interpolant.sampleValues;\r\n\r\n\t\ttimes[ 0 ] = now;\r\n\t\ttimes[ 1 ] = now + duration;\r\n\r\n\t\tvalues[ 0 ] = startTimeScale / timeScale;\r\n\t\tvalues[ 1 ] = endTimeScale / timeScale;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tstopWarping() {\r\n\r\n\t\tconst timeScaleInterpolant = this._timeScaleInterpolant;\r\n\r\n\t\tif ( timeScaleInterpolant !== null ) {\r\n\r\n\t\t\tthis._timeScaleInterpolant = null;\r\n\t\t\tthis._mixer._takeBackControlInterpolant( timeScaleInterpolant );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t// Object Accessors\r\n\r\n\tgetMixer() {\r\n\r\n\t\treturn this._mixer;\r\n\r\n\t}\r\n\r\n\tgetClip() {\r\n\r\n\t\treturn this._clip;\r\n\r\n\t}\r\n\r\n\tgetRoot() {\r\n\r\n\t\treturn this._localRoot || this._mixer._root;\r\n\r\n\t}\r\n\r\n\t// Interna\r\n\r\n\t_update( time, deltaTime, timeDirection, accuIndex ) {\r\n\r\n\t\t// called by the mixer\r\n\r\n\t\tif ( ! this.enabled ) {\r\n\r\n\t\t\t// call ._updateWeight() to update ._effectiveWeight\r\n\r\n\t\t\tthis._updateWeight( time );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tconst startTime = this._startTime;\r\n\r\n\t\tif ( startTime !== null ) {\r\n\r\n\t\t\t// check for scheduled start of action\r\n\r\n\t\t\tconst timeRunning = ( time - startTime ) * timeDirection;\r\n\t\t\tif ( timeRunning < 0 || timeDirection === 0 ) {\r\n\r\n\t\t\t\treturn; // yet to come / don't decide when delta = 0\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// start\r\n\r\n\t\t\tthis._startTime = null; // unschedule\r\n\t\t\tdeltaTime = timeDirection * timeRunning;\r\n\r\n\t\t}\r\n\r\n\t\t// apply time scale and advance time\r\n\r\n\t\tdeltaTime *= this._updateTimeScale( time );\r\n\t\tconst clipTime = this._updateTime( deltaTime );\r\n\r\n\t\t// note: _updateTime may disable the action resulting in\r\n\t\t// an effective weight of 0\r\n\r\n\t\tconst weight = this._updateWeight( time );\r\n\r\n\t\tif ( weight > 0 ) {\r\n\r\n\t\t\tconst interpolants = this._interpolants;\r\n\t\t\tconst propertyMixers = this._propertyBindings;\r\n\r\n\t\t\tswitch ( this.blendMode ) {\r\n\r\n\t\t\t\tcase AdditiveAnimationBlendMode:\r\n\r\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\r\n\r\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\r\n\t\t\t\t\t\tpropertyMixers[ j ].accumulateAdditive( weight );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase NormalAnimationBlendMode:\r\n\t\t\t\tdefault:\r\n\r\n\t\t\t\t\tfor ( let j = 0, m = interpolants.length; j !== m; ++ j ) {\r\n\r\n\t\t\t\t\t\tinterpolants[ j ].evaluate( clipTime );\r\n\t\t\t\t\t\tpropertyMixers[ j ].accumulate( accuIndex, weight );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_updateWeight( time ) {\r\n\r\n\t\tlet weight = 0;\r\n\r\n\t\tif ( this.enabled ) {\r\n\r\n\t\t\tweight = this.weight;\r\n\t\t\tconst interpolant = this._weightInterpolant;\r\n\r\n\t\t\tif ( interpolant !== null ) {\r\n\r\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\r\n\r\n\t\t\t\tweight *= interpolantValue;\r\n\r\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\r\n\r\n\t\t\t\t\tthis.stopFading();\r\n\r\n\t\t\t\t\tif ( interpolantValue === 0 ) {\r\n\r\n\t\t\t\t\t\t// faded out, disable\r\n\t\t\t\t\t\tthis.enabled = false;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis._effectiveWeight = weight;\r\n\t\treturn weight;\r\n\r\n\t}\r\n\r\n\t_updateTimeScale( time ) {\r\n\r\n\t\tlet timeScale = 0;\r\n\r\n\t\tif ( ! this.paused ) {\r\n\r\n\t\t\ttimeScale = this.timeScale;\r\n\r\n\t\t\tconst interpolant = this._timeScaleInterpolant;\r\n\r\n\t\t\tif ( interpolant !== null ) {\r\n\r\n\t\t\t\tconst interpolantValue = interpolant.evaluate( time )[ 0 ];\r\n\r\n\t\t\t\ttimeScale *= interpolantValue;\r\n\r\n\t\t\t\tif ( time > interpolant.parameterPositions[ 1 ] ) {\r\n\r\n\t\t\t\t\tthis.stopWarping();\r\n\r\n\t\t\t\t\tif ( timeScale === 0 ) {\r\n\r\n\t\t\t\t\t\t// motion has halted, pause\r\n\t\t\t\t\t\tthis.paused = true;\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t// warp done - apply final time scale\r\n\t\t\t\t\t\tthis.timeScale = timeScale;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tthis._effectiveTimeScale = timeScale;\r\n\t\treturn timeScale;\r\n\r\n\t}\r\n\r\n\t_updateTime( deltaTime ) {\r\n\r\n\t\tconst duration = this._clip.duration;\r\n\t\tconst loop = this.loop;\r\n\r\n\t\tlet time = this.time + deltaTime;\r\n\t\tlet loopCount = this._loopCount;\r\n\r\n\t\tconst pingPong = ( loop === LoopPingPong );\r\n\r\n\t\tif ( deltaTime === 0 ) {\r\n\r\n\t\t\tif ( loopCount === - 1 ) return time;\r\n\r\n\t\t\treturn ( pingPong && ( loopCount & 1 ) === 1 ) ? duration - time : time;\r\n\r\n\t\t}\r\n\r\n\t\tif ( loop === LoopOnce ) {\r\n\r\n\t\t\tif ( loopCount === - 1 ) {\r\n\r\n\t\t\t\t// just started\r\n\r\n\t\t\t\tthis._loopCount = 0;\r\n\t\t\t\tthis._setEndings( true, true, false );\r\n\r\n\t\t\t}\r\n\r\n\t\t\thandle_stop: {\r\n\r\n\t\t\t\tif ( time >= duration ) {\r\n\r\n\t\t\t\t\ttime = duration;\r\n\r\n\t\t\t\t} else if ( time < 0 ) {\r\n\r\n\t\t\t\t\ttime = 0;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthis.time = time;\r\n\r\n\t\t\t\t\tbreak handle_stop;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\r\n\t\t\t\telse this.enabled = false;\r\n\r\n\t\t\t\tthis.time = time;\r\n\r\n\t\t\t\tthis._mixer.dispatchEvent( {\r\n\t\t\t\t\ttype: 'finished', action: this,\r\n\t\t\t\t\tdirection: deltaTime < 0 ? - 1 : 1\r\n\t\t\t\t} );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else { // repetitive Repeat or PingPong\r\n\r\n\t\t\tif ( loopCount === - 1 ) {\r\n\r\n\t\t\t\t// just started\r\n\r\n\t\t\t\tif ( deltaTime >= 0 ) {\r\n\r\n\t\t\t\t\tloopCount = 0;\r\n\r\n\t\t\t\t\tthis._setEndings( true, this.repetitions === 0, pingPong );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// when looping in reverse direction, the initial\r\n\t\t\t\t\t// transition through zero counts as a repetition,\r\n\t\t\t\t\t// so leave loopCount at -1\r\n\r\n\t\t\t\t\tthis._setEndings( this.repetitions === 0, true, pingPong );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( time >= duration || time < 0 ) {\r\n\r\n\t\t\t\t// wrap around\r\n\r\n\t\t\t\tconst loopDelta = Math.floor( time / duration ); // signed\r\n\t\t\t\ttime -= duration * loopDelta;\r\n\r\n\t\t\t\tloopCount += Math.abs( loopDelta );\r\n\r\n\t\t\t\tconst pending = this.repetitions - loopCount;\r\n\r\n\t\t\t\tif ( pending <= 0 ) {\r\n\r\n\t\t\t\t\t// have to stop (switch state, clamp time, fire event)\r\n\r\n\t\t\t\t\tif ( this.clampWhenFinished ) this.paused = true;\r\n\t\t\t\t\telse this.enabled = false;\r\n\r\n\t\t\t\t\ttime = deltaTime > 0 ? duration : 0;\r\n\r\n\t\t\t\t\tthis.time = time;\r\n\r\n\t\t\t\t\tthis._mixer.dispatchEvent( {\r\n\t\t\t\t\t\ttype: 'finished', action: this,\r\n\t\t\t\t\t\tdirection: deltaTime > 0 ? 1 : - 1\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// keep running\r\n\r\n\t\t\t\t\tif ( pending === 1 ) {\r\n\r\n\t\t\t\t\t\t// entering the last round\r\n\r\n\t\t\t\t\t\tconst atStart = deltaTime < 0;\r\n\t\t\t\t\t\tthis._setEndings( atStart, ! atStart, pingPong );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tthis._setEndings( false, false, pingPong );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis._loopCount = loopCount;\r\n\r\n\t\t\t\t\tthis.time = time;\r\n\r\n\t\t\t\t\tthis._mixer.dispatchEvent( {\r\n\t\t\t\t\t\ttype: 'loop', action: this, loopDelta: loopDelta\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tthis.time = time;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( pingPong && ( loopCount & 1 ) === 1 ) {\r\n\r\n\t\t\t\t// invert time for the \"pong round\"\r\n\r\n\t\t\t\treturn duration - time;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn time;\r\n\r\n\t}\r\n\r\n\t_setEndings( atStart, atEnd, pingPong ) {\r\n\r\n\t\tconst settings = this._interpolantSettings;\r\n\r\n\t\tif ( pingPong ) {\r\n\r\n\t\t\tsettings.endingStart = ZeroSlopeEnding;\r\n\t\t\tsettings.endingEnd = ZeroSlopeEnding;\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// assuming for LoopOnce atStart == atEnd == true\r\n\r\n\t\t\tif ( atStart ) {\r\n\r\n\t\t\t\tsettings.endingStart = this.zeroSlopeAtStart ? ZeroSlopeEnding : ZeroCurvatureEnding;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tsettings.endingStart = WrapAroundEnding;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( atEnd ) {\r\n\r\n\t\t\t\tsettings.endingEnd = this.zeroSlopeAtEnd ? ZeroSlopeEnding : ZeroCurvatureEnding;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tsettings.endingEnd \t = WrapAroundEnding;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t_scheduleFading( duration, weightNow, weightThen ) {\r\n\r\n\t\tconst mixer = this._mixer, now = mixer.time;\r\n\t\tlet interpolant = this._weightInterpolant;\r\n\r\n\t\tif ( interpolant === null ) {\r\n\r\n\t\t\tinterpolant = mixer._lendControlInterpolant();\r\n\t\t\tthis._weightInterpolant = interpolant;\r\n\r\n\t\t}\r\n\r\n\t\tconst times = interpolant.parameterPositions,\r\n\t\t\tvalues = interpolant.sampleValues;\r\n\r\n\t\ttimes[ 0 ] = now;\r\n\t\tvalues[ 0 ] = weightNow;\r\n\t\ttimes[ 1 ] = now + duration;\r\n\t\tvalues[ 1 ] = weightThen;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction AnimationMixer( root ) {\r\n\r\n\tthis._root = root;\r\n\tthis._initMemoryManager();\r\n\tthis._accuIndex = 0;\r\n\r\n\tthis.time = 0;\r\n\r\n\tthis.timeScale = 1.0;\r\n\r\n}\r\n\r\nAnimationMixer.prototype = Object.assign( Object.create( EventDispatcher.prototype ), {\r\n\r\n\tconstructor: AnimationMixer,\r\n\r\n\t_bindAction: function ( action, prototypeAction ) {\r\n\r\n\t\tconst root = action._localRoot || this._root,\r\n\t\t\ttracks = action._clip.tracks,\r\n\t\t\tnTracks = tracks.length,\r\n\t\t\tbindings = action._propertyBindings,\r\n\t\t\tinterpolants = action._interpolants,\r\n\t\t\trootUuid = root.uuid,\r\n\t\t\tbindingsByRoot = this._bindingsByRootAndName;\r\n\r\n\t\tlet bindingsByName = bindingsByRoot[ rootUuid ];\r\n\r\n\t\tif ( bindingsByName === undefined ) {\r\n\r\n\t\t\tbindingsByName = {};\r\n\t\t\tbindingsByRoot[ rootUuid ] = bindingsByName;\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0; i !== nTracks; ++ i ) {\r\n\r\n\t\t\tconst track = tracks[ i ],\r\n\t\t\t\ttrackName = track.name;\r\n\r\n\t\t\tlet binding = bindingsByName[ trackName ];\r\n\r\n\t\t\tif ( binding !== undefined ) {\r\n\r\n\t\t\t\tbindings[ i ] = binding;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tbinding = bindings[ i ];\r\n\r\n\t\t\t\tif ( binding !== undefined ) {\r\n\r\n\t\t\t\t\t// existing binding, make sure the cache knows\r\n\r\n\t\t\t\t\tif ( binding._cacheIndex === null ) {\r\n\r\n\t\t\t\t\t\t++ binding.referenceCount;\r\n\t\t\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst path = prototypeAction && prototypeAction.\r\n\t\t\t\t\t_propertyBindings[ i ].binding.parsedPath;\r\n\r\n\t\t\t\tbinding = new PropertyMixer(\r\n\t\t\t\t\tPropertyBinding.create( root, trackName, path ),\r\n\t\t\t\t\ttrack.ValueTypeName, track.getValueSize() );\r\n\r\n\t\t\t\t++ binding.referenceCount;\r\n\t\t\t\tthis._addInactiveBinding( binding, rootUuid, trackName );\r\n\r\n\t\t\t\tbindings[ i ] = binding;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tinterpolants[ i ].resultBuffer = binding.buffer;\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_activateAction: function ( action ) {\r\n\r\n\t\tif ( ! this._isActiveAction( action ) ) {\r\n\r\n\t\t\tif ( action._cacheIndex === null ) {\r\n\r\n\t\t\t\t// this action has been forgotten by the cache, but the user\r\n\t\t\t\t// appears to be still using it -> rebind\r\n\r\n\t\t\t\tconst rootUuid = ( action._localRoot || this._root ).uuid,\r\n\t\t\t\t\tclipUuid = action._clip.uuid,\r\n\t\t\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\r\n\r\n\t\t\t\tthis._bindAction( action,\r\n\t\t\t\t\tactionsForClip && actionsForClip.knownActions[ 0 ] );\r\n\r\n\t\t\t\tthis._addInactiveAction( action, clipUuid, rootUuid );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tconst bindings = action._propertyBindings;\r\n\r\n\t\t\t// increment reference counts / sort out state\r\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\tconst binding = bindings[ i ];\r\n\r\n\t\t\t\tif ( binding.useCount ++ === 0 ) {\r\n\r\n\t\t\t\t\tthis._lendBinding( binding );\r\n\t\t\t\t\tbinding.saveOriginalState();\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis._lendAction( action );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_deactivateAction: function ( action ) {\r\n\r\n\t\tif ( this._isActiveAction( action ) ) {\r\n\r\n\t\t\tconst bindings = action._propertyBindings;\r\n\r\n\t\t\t// decrement reference counts / sort out state\r\n\t\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\tconst binding = bindings[ i ];\r\n\r\n\t\t\t\tif ( -- binding.useCount === 0 ) {\r\n\r\n\t\t\t\t\tbinding.restoreOriginalState();\r\n\t\t\t\t\tthis._takeBackBinding( binding );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis._takeBackAction( action );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t// Memory manager\r\n\r\n\t_initMemoryManager: function () {\r\n\r\n\t\tthis._actions = []; // 'nActiveActions' followed by inactive ones\r\n\t\tthis._nActiveActions = 0;\r\n\r\n\t\tthis._actionsByClip = {};\r\n\t\t// inside:\r\n\t\t// {\r\n\t\t// \tknownActions: Array< AnimationAction > - used as prototypes\r\n\t\t// \tactionByRoot: AnimationAction - lookup\r\n\t\t// }\r\n\r\n\r\n\t\tthis._bindings = []; // 'nActiveBindings' followed by inactive ones\r\n\t\tthis._nActiveBindings = 0;\r\n\r\n\t\tthis._bindingsByRootAndName = {}; // inside: Map< name, PropertyMixer >\r\n\r\n\r\n\t\tthis._controlInterpolants = []; // same game as above\r\n\t\tthis._nActiveControlInterpolants = 0;\r\n\r\n\t\tconst scope = this;\r\n\r\n\t\tthis.stats = {\r\n\r\n\t\t\tactions: {\r\n\t\t\t\tget total() {\r\n\r\n\t\t\t\t\treturn scope._actions.length;\r\n\r\n\t\t\t\t},\r\n\t\t\t\tget inUse() {\r\n\r\n\t\t\t\t\treturn scope._nActiveActions;\r\n\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tbindings: {\r\n\t\t\t\tget total() {\r\n\r\n\t\t\t\t\treturn scope._bindings.length;\r\n\r\n\t\t\t\t},\r\n\t\t\t\tget inUse() {\r\n\r\n\t\t\t\t\treturn scope._nActiveBindings;\r\n\r\n\t\t\t\t}\r\n\t\t\t},\r\n\t\t\tcontrolInterpolants: {\r\n\t\t\t\tget total() {\r\n\r\n\t\t\t\t\treturn scope._controlInterpolants.length;\r\n\r\n\t\t\t\t},\r\n\t\t\t\tget inUse() {\r\n\r\n\t\t\t\t\treturn scope._nActiveControlInterpolants;\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t},\r\n\r\n\t// Memory management for AnimationAction objects\r\n\r\n\t_isActiveAction: function ( action ) {\r\n\r\n\t\tconst index = action._cacheIndex;\r\n\t\treturn index !== null && index < this._nActiveActions;\r\n\r\n\t},\r\n\r\n\t_addInactiveAction: function ( action, clipUuid, rootUuid ) {\r\n\r\n\t\tconst actions = this._actions,\r\n\t\t\tactionsByClip = this._actionsByClip;\r\n\r\n\t\tlet actionsForClip = actionsByClip[ clipUuid ];\r\n\r\n\t\tif ( actionsForClip === undefined ) {\r\n\r\n\t\t\tactionsForClip = {\r\n\r\n\t\t\t\tknownActions: [ action ],\r\n\t\t\t\tactionByRoot: {}\r\n\r\n\t\t\t};\r\n\r\n\t\t\taction._byClipCacheIndex = 0;\r\n\r\n\t\t\tactionsByClip[ clipUuid ] = actionsForClip;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst knownActions = actionsForClip.knownActions;\r\n\r\n\t\t\taction._byClipCacheIndex = knownActions.length;\r\n\t\t\tknownActions.push( action );\r\n\r\n\t\t}\r\n\r\n\t\taction._cacheIndex = actions.length;\r\n\t\tactions.push( action );\r\n\r\n\t\tactionsForClip.actionByRoot[ rootUuid ] = action;\r\n\r\n\t},\r\n\r\n\t_removeInactiveAction: function ( action ) {\r\n\r\n\t\tconst actions = this._actions,\r\n\t\t\tlastInactiveAction = actions[ actions.length - 1 ],\r\n\t\t\tcacheIndex = action._cacheIndex;\r\n\r\n\t\tlastInactiveAction._cacheIndex = cacheIndex;\r\n\t\tactions[ cacheIndex ] = lastInactiveAction;\r\n\t\tactions.pop();\r\n\r\n\t\taction._cacheIndex = null;\r\n\r\n\r\n\t\tconst clipUuid = action._clip.uuid,\r\n\t\t\tactionsByClip = this._actionsByClip,\r\n\t\t\tactionsForClip = actionsByClip[ clipUuid ],\r\n\t\t\tknownActionsForClip = actionsForClip.knownActions,\r\n\r\n\t\t\tlastKnownAction =\r\n\t\t\t\tknownActionsForClip[ knownActionsForClip.length - 1 ],\r\n\r\n\t\t\tbyClipCacheIndex = action._byClipCacheIndex;\r\n\r\n\t\tlastKnownAction._byClipCacheIndex = byClipCacheIndex;\r\n\t\tknownActionsForClip[ byClipCacheIndex ] = lastKnownAction;\r\n\t\tknownActionsForClip.pop();\r\n\r\n\t\taction._byClipCacheIndex = null;\r\n\r\n\r\n\t\tconst actionByRoot = actionsForClip.actionByRoot,\r\n\t\t\trootUuid = ( action._localRoot || this._root ).uuid;\r\n\r\n\t\tdelete actionByRoot[ rootUuid ];\r\n\r\n\t\tif ( knownActionsForClip.length === 0 ) {\r\n\r\n\t\t\tdelete actionsByClip[ clipUuid ];\r\n\r\n\t\t}\r\n\r\n\t\tthis._removeInactiveBindingsForAction( action );\r\n\r\n\t},\r\n\r\n\t_removeInactiveBindingsForAction: function ( action ) {\r\n\r\n\t\tconst bindings = action._propertyBindings;\r\n\r\n\t\tfor ( let i = 0, n = bindings.length; i !== n; ++ i ) {\r\n\r\n\t\t\tconst binding = bindings[ i ];\r\n\r\n\t\t\tif ( -- binding.referenceCount === 0 ) {\r\n\r\n\t\t\t\tthis._removeInactiveBinding( binding );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_lendAction: function ( action ) {\r\n\r\n\t\t// [ active actions | inactive actions ]\r\n\t\t// [ active actions >| inactive actions ]\r\n\t\t// s a\r\n\t\t// <-swap->\r\n\t\t// a s\r\n\r\n\t\tconst actions = this._actions,\r\n\t\t\tprevIndex = action._cacheIndex,\r\n\r\n\t\t\tlastActiveIndex = this._nActiveActions ++,\r\n\r\n\t\t\tfirstInactiveAction = actions[ lastActiveIndex ];\r\n\r\n\t\taction._cacheIndex = lastActiveIndex;\r\n\t\tactions[ lastActiveIndex ] = action;\r\n\r\n\t\tfirstInactiveAction._cacheIndex = prevIndex;\r\n\t\tactions[ prevIndex ] = firstInactiveAction;\r\n\r\n\t},\r\n\r\n\t_takeBackAction: function ( action ) {\r\n\r\n\t\t// [ active actions | inactive actions ]\r\n\t\t// [ active actions |< inactive actions ]\r\n\t\t// a s\r\n\t\t// <-swap->\r\n\t\t// s a\r\n\r\n\t\tconst actions = this._actions,\r\n\t\t\tprevIndex = action._cacheIndex,\r\n\r\n\t\t\tfirstInactiveIndex = -- this._nActiveActions,\r\n\r\n\t\t\tlastActiveAction = actions[ firstInactiveIndex ];\r\n\r\n\t\taction._cacheIndex = firstInactiveIndex;\r\n\t\tactions[ firstInactiveIndex ] = action;\r\n\r\n\t\tlastActiveAction._cacheIndex = prevIndex;\r\n\t\tactions[ prevIndex ] = lastActiveAction;\r\n\r\n\t},\r\n\r\n\t// Memory management for PropertyMixer objects\r\n\r\n\t_addInactiveBinding: function ( binding, rootUuid, trackName ) {\r\n\r\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\r\n\t\t\tbindings = this._bindings;\r\n\r\n\t\tlet bindingByName = bindingsByRoot[ rootUuid ];\r\n\r\n\t\tif ( bindingByName === undefined ) {\r\n\r\n\t\t\tbindingByName = {};\r\n\t\t\tbindingsByRoot[ rootUuid ] = bindingByName;\r\n\r\n\t\t}\r\n\r\n\t\tbindingByName[ trackName ] = binding;\r\n\r\n\t\tbinding._cacheIndex = bindings.length;\r\n\t\tbindings.push( binding );\r\n\r\n\t},\r\n\r\n\t_removeInactiveBinding: function ( binding ) {\r\n\r\n\t\tconst bindings = this._bindings,\r\n\t\t\tpropBinding = binding.binding,\r\n\t\t\trootUuid = propBinding.rootNode.uuid,\r\n\t\t\ttrackName = propBinding.path,\r\n\t\t\tbindingsByRoot = this._bindingsByRootAndName,\r\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ],\r\n\r\n\t\t\tlastInactiveBinding = bindings[ bindings.length - 1 ],\r\n\t\t\tcacheIndex = binding._cacheIndex;\r\n\r\n\t\tlastInactiveBinding._cacheIndex = cacheIndex;\r\n\t\tbindings[ cacheIndex ] = lastInactiveBinding;\r\n\t\tbindings.pop();\r\n\r\n\t\tdelete bindingByName[ trackName ];\r\n\r\n\t\tif ( Object.keys( bindingByName ).length === 0 ) {\r\n\r\n\t\t\tdelete bindingsByRoot[ rootUuid ];\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t_lendBinding: function ( binding ) {\r\n\r\n\t\tconst bindings = this._bindings,\r\n\t\t\tprevIndex = binding._cacheIndex,\r\n\r\n\t\t\tlastActiveIndex = this._nActiveBindings ++,\r\n\r\n\t\t\tfirstInactiveBinding = bindings[ lastActiveIndex ];\r\n\r\n\t\tbinding._cacheIndex = lastActiveIndex;\r\n\t\tbindings[ lastActiveIndex ] = binding;\r\n\r\n\t\tfirstInactiveBinding._cacheIndex = prevIndex;\r\n\t\tbindings[ prevIndex ] = firstInactiveBinding;\r\n\r\n\t},\r\n\r\n\t_takeBackBinding: function ( binding ) {\r\n\r\n\t\tconst bindings = this._bindings,\r\n\t\t\tprevIndex = binding._cacheIndex,\r\n\r\n\t\t\tfirstInactiveIndex = -- this._nActiveBindings,\r\n\r\n\t\t\tlastActiveBinding = bindings[ firstInactiveIndex ];\r\n\r\n\t\tbinding._cacheIndex = firstInactiveIndex;\r\n\t\tbindings[ firstInactiveIndex ] = binding;\r\n\r\n\t\tlastActiveBinding._cacheIndex = prevIndex;\r\n\t\tbindings[ prevIndex ] = lastActiveBinding;\r\n\r\n\t},\r\n\r\n\r\n\t// Memory management of Interpolants for weight and time scale\r\n\r\n\t_lendControlInterpolant: function () {\r\n\r\n\t\tconst interpolants = this._controlInterpolants,\r\n\t\t\tlastActiveIndex = this._nActiveControlInterpolants ++;\r\n\r\n\t\tlet interpolant = interpolants[ lastActiveIndex ];\r\n\r\n\t\tif ( interpolant === undefined ) {\r\n\r\n\t\t\tinterpolant = new LinearInterpolant(\r\n\t\t\t\tnew Float32Array( 2 ), new Float32Array( 2 ),\r\n\t\t\t\t1, this._controlInterpolantsResultBuffer );\r\n\r\n\t\t\tinterpolant.__cacheIndex = lastActiveIndex;\r\n\t\t\tinterpolants[ lastActiveIndex ] = interpolant;\r\n\r\n\t\t}\r\n\r\n\t\treturn interpolant;\r\n\r\n\t},\r\n\r\n\t_takeBackControlInterpolant: function ( interpolant ) {\r\n\r\n\t\tconst interpolants = this._controlInterpolants,\r\n\t\t\tprevIndex = interpolant.__cacheIndex,\r\n\r\n\t\t\tfirstInactiveIndex = -- this._nActiveControlInterpolants,\r\n\r\n\t\t\tlastActiveInterpolant = interpolants[ firstInactiveIndex ];\r\n\r\n\t\tinterpolant.__cacheIndex = firstInactiveIndex;\r\n\t\tinterpolants[ firstInactiveIndex ] = interpolant;\r\n\r\n\t\tlastActiveInterpolant.__cacheIndex = prevIndex;\r\n\t\tinterpolants[ prevIndex ] = lastActiveInterpolant;\r\n\r\n\t},\r\n\r\n\t_controlInterpolantsResultBuffer: new Float32Array( 1 ),\r\n\r\n\t// return an action for a clip optionally using a custom root target\r\n\t// object (this method allocates a lot of dynamic memory in case a\r\n\t// previously unknown clip/root combination is specified)\r\n\tclipAction: function ( clip, optionalRoot, blendMode ) {\r\n\r\n\t\tconst root = optionalRoot || this._root,\r\n\t\t\trootUuid = root.uuid;\r\n\r\n\t\tlet clipObject = typeof clip === 'string' ? AnimationClip.findByName( root, clip ) : clip;\r\n\r\n\t\tconst clipUuid = clipObject !== null ? clipObject.uuid : clip;\r\n\r\n\t\tconst actionsForClip = this._actionsByClip[ clipUuid ];\r\n\t\tlet prototypeAction = null;\r\n\r\n\t\tif ( blendMode === undefined ) {\r\n\r\n\t\t\tif ( clipObject !== null ) {\r\n\r\n\t\t\t\tblendMode = clipObject.blendMode;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tblendMode = NormalAnimationBlendMode;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( actionsForClip !== undefined ) {\r\n\r\n\t\t\tconst existingAction = actionsForClip.actionByRoot[ rootUuid ];\r\n\r\n\t\t\tif ( existingAction !== undefined && existingAction.blendMode === blendMode ) {\r\n\r\n\t\t\t\treturn existingAction;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// we know the clip, so we don't have to parse all\r\n\t\t\t// the bindings again but can just copy\r\n\t\t\tprototypeAction = actionsForClip.knownActions[ 0 ];\r\n\r\n\t\t\t// also, take the clip from the prototype action\r\n\t\t\tif ( clipObject === null )\r\n\t\t\t\tclipObject = prototypeAction._clip;\r\n\r\n\t\t}\r\n\r\n\t\t// clip must be known when specified via string\r\n\t\tif ( clipObject === null ) return null;\r\n\r\n\t\t// allocate all resources required to run it\r\n\t\tconst newAction = new AnimationAction( this, clipObject, optionalRoot, blendMode );\r\n\r\n\t\tthis._bindAction( newAction, prototypeAction );\r\n\r\n\t\t// and make the action known to the memory manager\r\n\t\tthis._addInactiveAction( newAction, clipUuid, rootUuid );\r\n\r\n\t\treturn newAction;\r\n\r\n\t},\r\n\r\n\t// get an existing action\r\n\texistingAction: function ( clip, optionalRoot ) {\r\n\r\n\t\tconst root = optionalRoot || this._root,\r\n\t\t\trootUuid = root.uuid,\r\n\r\n\t\t\tclipObject = typeof clip === 'string' ?\r\n\t\t\t\tAnimationClip.findByName( root, clip ) : clip,\r\n\r\n\t\t\tclipUuid = clipObject ? clipObject.uuid : clip,\r\n\r\n\t\t\tactionsForClip = this._actionsByClip[ clipUuid ];\r\n\r\n\t\tif ( actionsForClip !== undefined ) {\r\n\r\n\t\t\treturn actionsForClip.actionByRoot[ rootUuid ] || null;\r\n\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\r\n\t},\r\n\r\n\t// deactivates all previously scheduled actions\r\n\tstopAllAction: function () {\r\n\r\n\t\tconst actions = this._actions,\r\n\t\t\tnActions = this._nActiveActions;\r\n\r\n\t\tfor ( let i = nActions - 1; i >= 0; -- i ) {\r\n\r\n\t\t\tactions[ i ].stop();\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\t// advance the time and update apply the animation\r\n\tupdate: function ( deltaTime ) {\r\n\r\n\t\tdeltaTime *= this.timeScale;\r\n\r\n\t\tconst actions = this._actions,\r\n\t\t\tnActions = this._nActiveActions,\r\n\r\n\t\t\ttime = this.time += deltaTime,\r\n\t\t\ttimeDirection = Math.sign( deltaTime ),\r\n\r\n\t\t\taccuIndex = this._accuIndex ^= 1;\r\n\r\n\t\t// run active actions\r\n\r\n\t\tfor ( let i = 0; i !== nActions; ++ i ) {\r\n\r\n\t\t\tconst action = actions[ i ];\r\n\r\n\t\t\taction._update( time, deltaTime, timeDirection, accuIndex );\r\n\r\n\t\t}\r\n\r\n\t\t// update scene graph\r\n\r\n\t\tconst bindings = this._bindings,\r\n\t\t\tnBindings = this._nActiveBindings;\r\n\r\n\t\tfor ( let i = 0; i !== nBindings; ++ i ) {\r\n\r\n\t\t\tbindings[ i ].apply( accuIndex );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\t// Allows you to seek to a specific time in an animation.\r\n\tsetTime: function ( timeInSeconds ) {\r\n\r\n\t\tthis.time = 0; // Zero out time attribute for AnimationMixer object;\r\n\t\tfor ( let i = 0; i < this._actions.length; i ++ ) {\r\n\r\n\t\t\tthis._actions[ i ].time = 0; // Zero out time attribute for all associated AnimationAction objects.\r\n\r\n\t\t}\r\n\r\n\t\treturn this.update( timeInSeconds ); // Update used to set exact time. Returns \"this\" AnimationMixer object.\r\n\r\n\t},\r\n\r\n\t// return this mixer's root target object\r\n\tgetRoot: function () {\r\n\r\n\t\treturn this._root;\r\n\r\n\t},\r\n\r\n\t// free all resources specific to a particular clip\r\n\tuncacheClip: function ( clip ) {\r\n\r\n\t\tconst actions = this._actions,\r\n\t\t\tclipUuid = clip.uuid,\r\n\t\t\tactionsByClip = this._actionsByClip,\r\n\t\t\tactionsForClip = actionsByClip[ clipUuid ];\r\n\r\n\t\tif ( actionsForClip !== undefined ) {\r\n\r\n\t\t\t// note: just calling _removeInactiveAction would mess up the\r\n\t\t\t// iteration state and also require updating the state we can\r\n\t\t\t// just throw away\r\n\r\n\t\t\tconst actionsToRemove = actionsForClip.knownActions;\r\n\r\n\t\t\tfor ( let i = 0, n = actionsToRemove.length; i !== n; ++ i ) {\r\n\r\n\t\t\t\tconst action = actionsToRemove[ i ];\r\n\r\n\t\t\t\tthis._deactivateAction( action );\r\n\r\n\t\t\t\tconst cacheIndex = action._cacheIndex,\r\n\t\t\t\t\tlastInactiveAction = actions[ actions.length - 1 ];\r\n\r\n\t\t\t\taction._cacheIndex = null;\r\n\t\t\t\taction._byClipCacheIndex = null;\r\n\r\n\t\t\t\tlastInactiveAction._cacheIndex = cacheIndex;\r\n\t\t\t\tactions[ cacheIndex ] = lastInactiveAction;\r\n\t\t\t\tactions.pop();\r\n\r\n\t\t\t\tthis._removeInactiveBindingsForAction( action );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tdelete actionsByClip[ clipUuid ];\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t// free all resources specific to a particular root target object\r\n\tuncacheRoot: function ( root ) {\r\n\r\n\t\tconst rootUuid = root.uuid,\r\n\t\t\tactionsByClip = this._actionsByClip;\r\n\r\n\t\tfor ( const clipUuid in actionsByClip ) {\r\n\r\n\t\t\tconst actionByRoot = actionsByClip[ clipUuid ].actionByRoot,\r\n\t\t\t\taction = actionByRoot[ rootUuid ];\r\n\r\n\t\t\tif ( action !== undefined ) {\r\n\r\n\t\t\t\tthis._deactivateAction( action );\r\n\t\t\t\tthis._removeInactiveAction( action );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst bindingsByRoot = this._bindingsByRootAndName,\r\n\t\t\tbindingByName = bindingsByRoot[ rootUuid ];\r\n\r\n\t\tif ( bindingByName !== undefined ) {\r\n\r\n\t\t\tfor ( const trackName in bindingByName ) {\r\n\r\n\t\t\t\tconst binding = bindingByName[ trackName ];\r\n\t\t\t\tbinding.restoreOriginalState();\r\n\t\t\t\tthis._removeInactiveBinding( binding );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\t// remove a targeted clip from the cache\r\n\tuncacheAction: function ( clip, optionalRoot ) {\r\n\r\n\t\tconst action = this.existingAction( clip, optionalRoot );\r\n\r\n\t\tif ( action !== null ) {\r\n\r\n\t\t\tthis._deactivateAction( action );\r\n\t\t\tthis._removeInactiveAction( action );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n} );\r\n\r\nclass Uniform {\r\n\r\n\tconstructor( value ) {\r\n\r\n\t\tif ( typeof value === 'string' ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Uniform: Type parameter is no longer needed.' );\r\n\t\t\tvalue = arguments[ 1 ];\r\n\r\n\t\t}\r\n\r\n\t\tthis.value = value;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new Uniform( this.value.clone === undefined ? this.value : this.value.clone() );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction InstancedInterleavedBuffer( array, stride, meshPerAttribute ) {\r\n\r\n\tInterleavedBuffer.call( this, array, stride );\r\n\r\n\tthis.meshPerAttribute = meshPerAttribute || 1;\r\n\r\n}\r\n\r\nInstancedInterleavedBuffer.prototype = Object.assign( Object.create( InterleavedBuffer.prototype ), {\r\n\r\n\tconstructor: InstancedInterleavedBuffer,\r\n\r\n\tisInstancedInterleavedBuffer: true,\r\n\r\n\tcopy: function ( source ) {\r\n\r\n\t\tInterleavedBuffer.prototype.copy.call( this, source );\r\n\r\n\t\tthis.meshPerAttribute = source.meshPerAttribute;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tclone: function ( data ) {\r\n\r\n\t\tconst ib = InterleavedBuffer.prototype.clone.call( this, data );\r\n\r\n\t\tib.meshPerAttribute = this.meshPerAttribute;\r\n\r\n\t\treturn ib;\r\n\r\n\t},\r\n\r\n\ttoJSON: function ( data ) {\r\n\r\n\t\tconst json = InterleavedBuffer.prototype.toJSON.call( this, data );\r\n\r\n\t\tjson.isInstancedInterleavedBuffer = true;\r\n\t\tjson.meshPerAttribute = this.meshPerAttribute;\r\n\r\n\t\treturn json;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nfunction GLBufferAttribute( buffer, type, itemSize, elementSize, count ) {\r\n\r\n\tthis.buffer = buffer;\r\n\tthis.type = type;\r\n\tthis.itemSize = itemSize;\r\n\tthis.elementSize = elementSize;\r\n\tthis.count = count;\r\n\r\n\tthis.version = 0;\r\n\r\n}\r\n\r\nObject.defineProperty( GLBufferAttribute.prototype, 'needsUpdate', {\r\n\r\n\tset: function ( value ) {\r\n\r\n\t\tif ( value === true ) this.version ++;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( GLBufferAttribute.prototype, {\r\n\r\n\tisGLBufferAttribute: true,\r\n\r\n\tsetBuffer: function ( buffer ) {\r\n\r\n\t\tthis.buffer = buffer;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetType: function ( type, elementSize ) {\r\n\r\n\t\tthis.type = type;\r\n\t\tthis.elementSize = elementSize;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetItemSize: function ( itemSize ) {\r\n\r\n\t\tthis.itemSize = itemSize;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetCount: function ( count ) {\r\n\r\n\t\tthis.count = count;\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n} );\r\n\r\nfunction Raycaster( origin, direction, near, far ) {\r\n\r\n\tthis.ray = new Ray( origin, direction );\r\n\t// direction is assumed to be normalized (for accurate distance calculations)\r\n\r\n\tthis.near = near || 0;\r\n\tthis.far = far || Infinity;\r\n\tthis.camera = null;\r\n\tthis.layers = new Layers();\r\n\r\n\tthis.params = {\r\n\t\tMesh: {},\r\n\t\tLine: { threshold: 1 },\r\n\t\tLOD: {},\r\n\t\tPoints: { threshold: 1 },\r\n\t\tSprite: {}\r\n\t};\r\n\r\n\tObject.defineProperties( this.params, {\r\n\t\tPointCloud: {\r\n\t\t\tget: function () {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.Raycaster: params.PointCloud has been renamed to params.Points.' );\r\n\t\t\t\treturn this.Points;\r\n\r\n\t\t\t}\r\n\t\t}\r\n\t} );\r\n\r\n}\r\n\r\nfunction ascSort( a, b ) {\r\n\r\n\treturn a.distance - b.distance;\r\n\r\n}\r\n\r\nfunction intersectObject( object, raycaster, intersects, recursive ) {\r\n\r\n\tif ( object.layers.test( raycaster.layers ) ) {\r\n\r\n\t\tobject.raycast( raycaster, intersects );\r\n\r\n\t}\r\n\r\n\tif ( recursive === true ) {\r\n\r\n\t\tconst children = object.children;\r\n\r\n\t\tfor ( let i = 0, l = children.length; i < l; i ++ ) {\r\n\r\n\t\t\tintersectObject( children[ i ], raycaster, intersects, true );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nObject.assign( Raycaster.prototype, {\r\n\r\n\tset: function ( origin, direction ) {\r\n\r\n\t\t// direction is assumed to be normalized (for accurate distance calculations)\r\n\r\n\t\tthis.ray.set( origin, direction );\r\n\r\n\t},\r\n\r\n\tsetFromCamera: function ( coords, camera ) {\r\n\r\n\t\tif ( camera && camera.isPerspectiveCamera ) {\r\n\r\n\t\t\tthis.ray.origin.setFromMatrixPosition( camera.matrixWorld );\r\n\t\t\tthis.ray.direction.set( coords.x, coords.y, 0.5 ).unproject( camera ).sub( this.ray.origin ).normalize();\r\n\t\t\tthis.camera = camera;\r\n\r\n\t\t} else if ( camera && camera.isOrthographicCamera ) {\r\n\r\n\t\t\tthis.ray.origin.set( coords.x, coords.y, ( camera.near + camera.far ) / ( camera.near - camera.far ) ).unproject( camera ); // set origin in plane of camera\r\n\t\t\tthis.ray.direction.set( 0, 0, - 1 ).transformDirection( camera.matrixWorld );\r\n\t\t\tthis.camera = camera;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconsole.error( 'THREE.Raycaster: Unsupported camera type: ' + camera.type );\r\n\r\n\t\t}\r\n\r\n\t},\r\n\r\n\tintersectObject: function ( object, recursive, optionalTarget ) {\r\n\r\n\t\tconst intersects = optionalTarget || [];\r\n\r\n\t\tintersectObject( object, this, intersects, recursive );\r\n\r\n\t\tintersects.sort( ascSort );\r\n\r\n\t\treturn intersects;\r\n\r\n\t},\r\n\r\n\tintersectObjects: function ( objects, recursive, optionalTarget ) {\r\n\r\n\t\tconst intersects = optionalTarget || [];\r\n\r\n\t\tif ( Array.isArray( objects ) === false ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Raycaster.intersectObjects: objects is not an Array.' );\r\n\t\t\treturn intersects;\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0, l = objects.length; i < l; i ++ ) {\r\n\r\n\t\t\tintersectObject( objects[ i ], this, intersects, recursive );\r\n\r\n\t\t}\r\n\r\n\t\tintersects.sort( ascSort );\r\n\r\n\t\treturn intersects;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * Ref: https://en.wikipedia.org/wiki/Spherical_coordinate_system\r\n *\r\n * The polar angle (phi) is measured from the positive y-axis. The positive y-axis is up.\r\n * The azimuthal angle (theta) is measured from the positive z-axis.\r\n */\r\n\r\nclass Spherical {\r\n\r\n\tconstructor( radius = 1, phi = 0, theta = 0 ) {\r\n\r\n\t\tthis.radius = radius;\r\n\t\tthis.phi = phi; // polar angle\r\n\t\tthis.theta = theta; // azimuthal angle\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tset( radius, phi, theta ) {\r\n\r\n\t\tthis.radius = radius;\r\n\t\tthis.phi = phi;\r\n\t\tthis.theta = theta;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( other ) {\r\n\r\n\t\tthis.radius = other.radius;\r\n\t\tthis.phi = other.phi;\r\n\t\tthis.theta = other.theta;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\t// restrict phi to be betwee EPS and PI-EPS\r\n\tmakeSafe() {\r\n\r\n\t\tconst EPS = 0.000001;\r\n\t\tthis.phi = Math.max( EPS, Math.min( Math.PI - EPS, this.phi ) );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromVector3( v ) {\r\n\r\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\r\n\r\n\t}\r\n\r\n\tsetFromCartesianCoords( x, y, z ) {\r\n\r\n\t\tthis.radius = Math.sqrt( x * x + y * y + z * z );\r\n\r\n\t\tif ( this.radius === 0 ) {\r\n\r\n\t\t\tthis.theta = 0;\r\n\t\t\tthis.phi = 0;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.theta = Math.atan2( x, z );\r\n\t\t\tthis.phi = Math.acos( MathUtils.clamp( y / this.radius, - 1, 1 ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Ref: https://en.wikipedia.org/wiki/Cylindrical_coordinate_system\r\n */\r\n\r\nclass Cylindrical {\r\n\r\n\tconstructor( radius, theta, y ) {\r\n\r\n\t\tthis.radius = ( radius !== undefined ) ? radius : 1.0; // distance from the origin to a point in the x-z plane\r\n\t\tthis.theta = ( theta !== undefined ) ? theta : 0; // counterclockwise angle in the x-z plane measured in radians from the positive z-axis\r\n\t\tthis.y = ( y !== undefined ) ? y : 0; // height above the x-z plane\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tset( radius, theta, y ) {\r\n\r\n\t\tthis.radius = radius;\r\n\t\tthis.theta = theta;\r\n\t\tthis.y = y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( other ) {\r\n\r\n\t\tthis.radius = other.radius;\r\n\t\tthis.theta = other.theta;\r\n\t\tthis.y = other.y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromVector3( v ) {\r\n\r\n\t\treturn this.setFromCartesianCoords( v.x, v.y, v.z );\r\n\r\n\t}\r\n\r\n\tsetFromCartesianCoords( x, y, z ) {\r\n\r\n\t\tthis.radius = Math.sqrt( x * x + z * z );\r\n\t\tthis.theta = Math.atan2( x, z );\r\n\t\tthis.y = y;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _vector$8 = /*@__PURE__*/ new Vector2();\r\n\r\nclass Box2 {\r\n\r\n\tconstructor( min, max ) {\r\n\r\n\t\tObject.defineProperty( this, 'isBox2', { value: true } );\r\n\r\n\t\tthis.min = ( min !== undefined ) ? min : new Vector2( + Infinity, + Infinity );\r\n\t\tthis.max = ( max !== undefined ) ? max : new Vector2( - Infinity, - Infinity );\r\n\r\n\t}\r\n\r\n\tset( min, max ) {\r\n\r\n\t\tthis.min.copy( min );\r\n\t\tthis.max.copy( max );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromPoints( points ) {\r\n\r\n\t\tthis.makeEmpty();\r\n\r\n\t\tfor ( let i = 0, il = points.length; i < il; i ++ ) {\r\n\r\n\t\t\tthis.expandByPoint( points[ i ] );\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tsetFromCenterAndSize( center, size ) {\r\n\r\n\t\tconst halfSize = _vector$8.copy( size ).multiplyScalar( 0.5 );\r\n\t\tthis.min.copy( center ).sub( halfSize );\r\n\t\tthis.max.copy( center ).add( halfSize );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( box ) {\r\n\r\n\t\tthis.min.copy( box.min );\r\n\t\tthis.max.copy( box.max );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tmakeEmpty() {\r\n\r\n\t\tthis.min.x = this.min.y = + Infinity;\r\n\t\tthis.max.x = this.max.y = - Infinity;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tisEmpty() {\r\n\r\n\t\t// this is a more robust check for empty than ( volume <= 0 ) because volume can get positive with two negative axes\r\n\r\n\t\treturn ( this.max.x < this.min.x ) || ( this.max.y < this.min.y );\r\n\r\n\t}\r\n\r\n\tgetCenter( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Box2: .getCenter() target is now required' );\r\n\t\t\ttarget = new Vector2();\r\n\r\n\t\t}\r\n\r\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.addVectors( this.min, this.max ).multiplyScalar( 0.5 );\r\n\r\n\t}\r\n\r\n\tgetSize( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Box2: .getSize() target is now required' );\r\n\t\t\ttarget = new Vector2();\r\n\r\n\t\t}\r\n\r\n\t\treturn this.isEmpty() ? target.set( 0, 0 ) : target.subVectors( this.max, this.min );\r\n\r\n\t}\r\n\r\n\texpandByPoint( point ) {\r\n\r\n\t\tthis.min.min( point );\r\n\t\tthis.max.max( point );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\texpandByVector( vector ) {\r\n\r\n\t\tthis.min.sub( vector );\r\n\t\tthis.max.add( vector );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\texpandByScalar( scalar ) {\r\n\r\n\t\tthis.min.addScalar( - scalar );\r\n\t\tthis.max.addScalar( scalar );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcontainsPoint( point ) {\r\n\r\n\t\treturn point.x < this.min.x || point.x > this.max.x ||\r\n\t\t\tpoint.y < this.min.y || point.y > this.max.y ? false : true;\r\n\r\n\t}\r\n\r\n\tcontainsBox( box ) {\r\n\r\n\t\treturn this.min.x <= box.min.x && box.max.x <= this.max.x &&\r\n\t\t\tthis.min.y <= box.min.y && box.max.y <= this.max.y;\r\n\r\n\t}\r\n\r\n\tgetParameter( point, target ) {\r\n\r\n\t\t// This can potentially have a divide by zero if the box\r\n\t\t// has a size dimension of 0.\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Box2: .getParameter() target is now required' );\r\n\t\t\ttarget = new Vector2();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.set(\r\n\t\t\t( point.x - this.min.x ) / ( this.max.x - this.min.x ),\r\n\t\t\t( point.y - this.min.y ) / ( this.max.y - this.min.y )\r\n\t\t);\r\n\r\n\t}\r\n\r\n\tintersectsBox( box ) {\r\n\r\n\t\t// using 4 splitting planes to rule out intersections\r\n\r\n\t\treturn box.max.x < this.min.x || box.min.x > this.max.x ||\r\n\t\t\tbox.max.y < this.min.y || box.min.y > this.max.y ? false : true;\r\n\r\n\t}\r\n\r\n\tclampPoint( point, target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Box2: .clampPoint() target is now required' );\r\n\t\t\ttarget = new Vector2();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.copy( point ).clamp( this.min, this.max );\r\n\r\n\t}\r\n\r\n\tdistanceToPoint( point ) {\r\n\r\n\t\tconst clampedPoint = _vector$8.copy( point ).clamp( this.min, this.max );\r\n\t\treturn clampedPoint.sub( point ).length();\r\n\r\n\t}\r\n\r\n\tintersect( box ) {\r\n\r\n\t\tthis.min.max( box.min );\r\n\t\tthis.max.min( box.max );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tunion( box ) {\r\n\r\n\t\tthis.min.min( box.min );\r\n\t\tthis.max.max( box.max );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\ttranslate( offset ) {\r\n\r\n\t\tthis.min.add( offset );\r\n\t\tthis.max.add( offset );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( box ) {\r\n\r\n\t\treturn box.min.equals( this.min ) && box.max.equals( this.max );\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _startP = /*@__PURE__*/ new Vector3();\r\nconst _startEnd = /*@__PURE__*/ new Vector3();\r\n\r\nclass Line3 {\r\n\r\n\tconstructor( start, end ) {\r\n\r\n\t\tthis.start = ( start !== undefined ) ? start : new Vector3();\r\n\t\tthis.end = ( end !== undefined ) ? end : new Vector3();\r\n\r\n\t}\r\n\r\n\tset( start, end ) {\r\n\r\n\t\tthis.start.copy( start );\r\n\t\tthis.end.copy( end );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tclone() {\r\n\r\n\t\treturn new this.constructor().copy( this );\r\n\r\n\t}\r\n\r\n\tcopy( line ) {\r\n\r\n\t\tthis.start.copy( line.start );\r\n\t\tthis.end.copy( line.end );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tgetCenter( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Line3: .getCenter() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.addVectors( this.start, this.end ).multiplyScalar( 0.5 );\r\n\r\n\t}\r\n\r\n\tdelta( target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Line3: .delta() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn target.subVectors( this.end, this.start );\r\n\r\n\t}\r\n\r\n\tdistanceSq() {\r\n\r\n\t\treturn this.start.distanceToSquared( this.end );\r\n\r\n\t}\r\n\r\n\tdistance() {\r\n\r\n\t\treturn this.start.distanceTo( this.end );\r\n\r\n\t}\r\n\r\n\tat( t, target ) {\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Line3: .at() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\r\n\r\n\t}\r\n\r\n\tclosestPointToPointParameter( point, clampToLine ) {\r\n\r\n\t\t_startP.subVectors( point, this.start );\r\n\t\t_startEnd.subVectors( this.end, this.start );\r\n\r\n\t\tconst startEnd2 = _startEnd.dot( _startEnd );\r\n\t\tconst startEnd_startP = _startEnd.dot( _startP );\r\n\r\n\t\tlet t = startEnd_startP / startEnd2;\r\n\r\n\t\tif ( clampToLine ) {\r\n\r\n\t\t\tt = MathUtils.clamp( t, 0, 1 );\r\n\r\n\t\t}\r\n\r\n\t\treturn t;\r\n\r\n\t}\r\n\r\n\tclosestPointToPoint( point, clampToLine, target ) {\r\n\r\n\t\tconst t = this.closestPointToPointParameter( point, clampToLine );\r\n\r\n\t\tif ( target === undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Line3: .closestPointToPoint() target is now required' );\r\n\t\t\ttarget = new Vector3();\r\n\r\n\t\t}\r\n\r\n\t\treturn this.delta( target ).multiplyScalar( t ).add( this.start );\r\n\r\n\t}\r\n\r\n\tapplyMatrix4( matrix ) {\r\n\r\n\t\tthis.start.applyMatrix4( matrix );\r\n\t\tthis.end.applyMatrix4( matrix );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tequals( line ) {\r\n\r\n\t\treturn line.start.equals( this.start ) && line.end.equals( this.end );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction ImmediateRenderObject( material ) {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.material = material;\r\n\tthis.render = function ( /* renderCallback */ ) {};\r\n\r\n\tthis.hasPositions = false;\r\n\tthis.hasNormals = false;\r\n\tthis.hasColors = false;\r\n\tthis.hasUvs = false;\r\n\r\n\tthis.positionArray = null;\r\n\tthis.normalArray = null;\r\n\tthis.colorArray = null;\r\n\tthis.uvArray = null;\r\n\r\n\tthis.count = 0;\r\n\r\n}\r\n\r\nImmediateRenderObject.prototype = Object.create( Object3D.prototype );\r\nImmediateRenderObject.prototype.constructor = ImmediateRenderObject;\r\n\r\nImmediateRenderObject.prototype.isImmediateRenderObject = true;\r\n\r\nconst _vector$9 = /*@__PURE__*/ new Vector3();\r\n\r\nclass SpotLightHelper extends Object3D {\r\n\r\n\tconstructor( light, color ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.light = light;\r\n\t\tthis.light.updateMatrixWorld();\r\n\r\n\t\tthis.matrix = light.matrixWorld;\r\n\t\tthis.matrixAutoUpdate = false;\r\n\r\n\t\tthis.color = color;\r\n\r\n\t\tconst geometry = new BufferGeometry();\r\n\r\n\t\tconst positions = [\r\n\t\t\t0, 0, 0, \t0, 0, 1,\r\n\t\t\t0, 0, 0, \t1, 0, 1,\r\n\t\t\t0, 0, 0,\t- 1, 0, 1,\r\n\t\t\t0, 0, 0, \t0, 1, 1,\r\n\t\t\t0, 0, 0, \t0, - 1, 1\r\n\t\t];\r\n\r\n\t\tfor ( let i = 0, j = 1, l = 32; i < l; i ++, j ++ ) {\r\n\r\n\t\t\tconst p1 = ( i / l ) * Math.PI * 2;\r\n\t\t\tconst p2 = ( j / l ) * Math.PI * 2;\r\n\r\n\t\t\tpositions.push(\r\n\t\t\t\tMath.cos( p1 ), Math.sin( p1 ), 1,\r\n\t\t\t\tMath.cos( p2 ), Math.sin( p2 ), 1\r\n\t\t\t);\r\n\r\n\t\t}\r\n\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\r\n\r\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\r\n\r\n\t\tthis.cone = new LineSegments( geometry, material );\r\n\t\tthis.add( this.cone );\r\n\r\n\t\tthis.update();\r\n\r\n\t}\r\n\r\n\tdispose() {\r\n\r\n\t\tthis.cone.geometry.dispose();\r\n\t\tthis.cone.material.dispose();\r\n\r\n\t}\r\n\r\n\tupdate() {\r\n\r\n\t\tthis.light.updateMatrixWorld();\r\n\r\n\t\tconst coneLength = this.light.distance ? this.light.distance : 1000;\r\n\t\tconst coneWidth = coneLength * Math.tan( this.light.angle );\r\n\r\n\t\tthis.cone.scale.set( coneWidth, coneWidth, coneLength );\r\n\r\n\t\t_vector$9.setFromMatrixPosition( this.light.target.matrixWorld );\r\n\r\n\t\tthis.cone.lookAt( _vector$9 );\r\n\r\n\t\tif ( this.color !== undefined ) {\r\n\r\n\t\t\tthis.cone.material.color.set( this.color );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.cone.material.color.copy( this.light.color );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _vector$a = /*@__PURE__*/ new Vector3();\r\nconst _boneMatrix = /*@__PURE__*/ new Matrix4();\r\nconst _matrixWorldInv = /*@__PURE__*/ new Matrix4();\r\n\r\n\r\nclass SkeletonHelper extends LineSegments {\r\n\r\n\tconstructor( object ) {\r\n\r\n\t\tconst bones = getBoneList( object );\r\n\r\n\t\tconst geometry = new BufferGeometry();\r\n\r\n\t\tconst vertices = [];\r\n\t\tconst colors = [];\r\n\r\n\t\tconst color1 = new Color( 0, 0, 1 );\r\n\t\tconst color2 = new Color( 0, 1, 0 );\r\n\r\n\t\tfor ( let i = 0; i < bones.length; i ++ ) {\r\n\r\n\t\t\tconst bone = bones[ i ];\r\n\r\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\r\n\r\n\t\t\t\tvertices.push( 0, 0, 0 );\r\n\t\t\t\tvertices.push( 0, 0, 0 );\r\n\t\t\t\tcolors.push( color1.r, color1.g, color1.b );\r\n\t\t\t\tcolors.push( color2.r, color2.g, color2.b );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\r\n\r\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, depthTest: false, depthWrite: false, toneMapped: false, transparent: true } );\r\n\r\n\t\tsuper( geometry, material );\r\n\r\n\t\tthis.type = 'SkeletonHelper';\r\n\t\tthis.isSkeletonHelper = true;\r\n\r\n\t\tthis.root = object;\r\n\t\tthis.bones = bones;\r\n\r\n\t\tthis.matrix = object.matrixWorld;\r\n\t\tthis.matrixAutoUpdate = false;\r\n\r\n\t}\r\n\r\n\tupdateMatrixWorld( force ) {\r\n\r\n\t\tconst bones = this.bones;\r\n\r\n\t\tconst geometry = this.geometry;\r\n\t\tconst position = geometry.getAttribute( 'position' );\r\n\r\n\t\t_matrixWorldInv.copy( this.root.matrixWorld ).invert();\r\n\r\n\t\tfor ( let i = 0, j = 0; i < bones.length; i ++ ) {\r\n\r\n\t\t\tconst bone = bones[ i ];\r\n\r\n\t\t\tif ( bone.parent && bone.parent.isBone ) {\r\n\r\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.matrixWorld );\r\n\t\t\t\t_vector$a.setFromMatrixPosition( _boneMatrix );\r\n\t\t\t\tposition.setXYZ( j, _vector$a.x, _vector$a.y, _vector$a.z );\r\n\r\n\t\t\t\t_boneMatrix.multiplyMatrices( _matrixWorldInv, bone.parent.matrixWorld );\r\n\t\t\t\t_vector$a.setFromMatrixPosition( _boneMatrix );\r\n\t\t\t\tposition.setXYZ( j + 1, _vector$a.x, _vector$a.y, _vector$a.z );\r\n\r\n\t\t\t\tj += 2;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\r\n\r\n\t\tsuper.updateMatrixWorld( force );\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\nfunction getBoneList( object ) {\r\n\r\n\tconst boneList = [];\r\n\r\n\tif ( object && object.isBone ) {\r\n\r\n\t\tboneList.push( object );\r\n\r\n\t}\r\n\r\n\tfor ( let i = 0; i < object.children.length; i ++ ) {\r\n\r\n\t\tboneList.push.apply( boneList, getBoneList( object.children[ i ] ) );\r\n\r\n\t}\r\n\r\n\treturn boneList;\r\n\r\n}\r\n\r\nclass PointLightHelper extends Mesh {\r\n\r\n\tconstructor( light, sphereSize, color ) {\r\n\r\n\t\tconst geometry = new SphereBufferGeometry( sphereSize, 4, 2 );\r\n\t\tconst material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\r\n\r\n\t\tsuper( geometry, material );\r\n\r\n\t\tthis.light = light;\r\n\t\tthis.light.updateMatrixWorld();\r\n\r\n\t\tthis.color = color;\r\n\r\n\t\tthis.type = 'PointLightHelper';\r\n\r\n\t\tthis.matrix = this.light.matrixWorld;\r\n\t\tthis.matrixAutoUpdate = false;\r\n\r\n\t\tthis.update();\r\n\r\n\r\n\t\t/*\r\n\t// TODO: delete this comment?\r\n\tconst distanceGeometry = new THREE.IcosahedronBufferGeometry( 1, 2 );\r\n\tconst distanceMaterial = new THREE.MeshBasicMaterial( { color: hexColor, fog: false, wireframe: true, opacity: 0.1, transparent: true } );\r\n\r\n\tthis.lightSphere = new THREE.Mesh( bulbGeometry, bulbMaterial );\r\n\tthis.lightDistance = new THREE.Mesh( distanceGeometry, distanceMaterial );\r\n\r\n\tconst d = light.distance;\r\n\r\n\tif ( d === 0.0 ) {\r\n\r\n\t\tthis.lightDistance.visible = false;\r\n\r\n\t} else {\r\n\r\n\t\tthis.lightDistance.scale.set( d, d, d );\r\n\r\n\t}\r\n\r\n\tthis.add( this.lightDistance );\r\n\t*/\r\n\r\n\t}\r\n\r\n\tdispose() {\r\n\r\n\t\tthis.geometry.dispose();\r\n\t\tthis.material.dispose();\r\n\r\n\t}\r\n\r\n\tupdate() {\r\n\r\n\t\tif ( this.color !== undefined ) {\r\n\r\n\t\t\tthis.material.color.set( this.color );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.material.color.copy( this.light.color );\r\n\r\n\t\t}\r\n\r\n\t\t/*\r\n\t\tconst d = this.light.distance;\r\n\r\n\t\tif ( d === 0.0 ) {\r\n\r\n\t\t\tthis.lightDistance.visible = false;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.lightDistance.visible = true;\r\n\t\t\tthis.lightDistance.scale.set( d, d, d );\r\n\r\n\t\t}\r\n\t\t*/\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _vector$b = /*@__PURE__*/ new Vector3();\r\nconst _color1 = /*@__PURE__*/ new Color();\r\nconst _color2 = /*@__PURE__*/ new Color();\r\n\r\nclass HemisphereLightHelper extends Object3D {\r\n\r\n\tconstructor( light, size, color ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.light = light;\r\n\t\tthis.light.updateMatrixWorld();\r\n\r\n\t\tthis.matrix = light.matrixWorld;\r\n\t\tthis.matrixAutoUpdate = false;\r\n\r\n\t\tthis.color = color;\r\n\r\n\t\tconst geometry = new OctahedronBufferGeometry( size );\r\n\t\tgeometry.rotateY( Math.PI * 0.5 );\r\n\r\n\t\tthis.material = new MeshBasicMaterial( { wireframe: true, fog: false, toneMapped: false } );\r\n\t\tif ( this.color === undefined ) this.material.vertexColors = true;\r\n\r\n\t\tconst position = geometry.getAttribute( 'position' );\r\n\t\tconst colors = new Float32Array( position.count * 3 );\r\n\r\n\t\tgeometry.setAttribute( 'color', new BufferAttribute( colors, 3 ) );\r\n\r\n\t\tthis.add( new Mesh( geometry, this.material ) );\r\n\r\n\t\tthis.update();\r\n\r\n\t}\r\n\r\n\tdispose() {\r\n\r\n\t\tthis.children[ 0 ].geometry.dispose();\r\n\t\tthis.children[ 0 ].material.dispose();\r\n\r\n\t}\r\n\r\n\tupdate() {\r\n\r\n\t\tconst mesh = this.children[ 0 ];\r\n\r\n\t\tif ( this.color !== undefined ) {\r\n\r\n\t\t\tthis.material.color.set( this.color );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tconst colors = mesh.geometry.getAttribute( 'color' );\r\n\r\n\t\t\t_color1.copy( this.light.color );\r\n\t\t\t_color2.copy( this.light.groundColor );\r\n\r\n\t\t\tfor ( let i = 0, l = colors.count; i < l; i ++ ) {\r\n\r\n\t\t\t\tconst color = ( i < ( l / 2 ) ) ? _color1 : _color2;\r\n\r\n\t\t\t\tcolors.setXYZ( i, color.r, color.g, color.b );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tcolors.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t\tmesh.lookAt( _vector$b.setFromMatrixPosition( this.light.matrixWorld ).negate() );\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass GridHelper extends LineSegments {\r\n\r\n\tconstructor( size = 10, divisions = 10, color1 = 0x444444, color2 = 0x888888 ) {\r\n\r\n\t\tcolor1 = new Color( color1 );\r\n\t\tcolor2 = new Color( color2 );\r\n\r\n\t\tconst center = divisions / 2;\r\n\t\tconst step = size / divisions;\r\n\t\tconst halfSize = size / 2;\r\n\r\n\t\tconst vertices = [], colors = [];\r\n\r\n\t\tfor ( let i = 0, j = 0, k = - halfSize; i <= divisions; i ++, k += step ) {\r\n\r\n\t\t\tvertices.push( - halfSize, 0, k, halfSize, 0, k );\r\n\t\t\tvertices.push( k, 0, - halfSize, k, 0, halfSize );\r\n\r\n\t\t\tconst color = i === center ? color1 : color2;\r\n\r\n\t\t\tcolor.toArray( colors, j ); j += 3;\r\n\t\t\tcolor.toArray( colors, j ); j += 3;\r\n\t\t\tcolor.toArray( colors, j ); j += 3;\r\n\t\t\tcolor.toArray( colors, j ); j += 3;\r\n\r\n\t\t}\r\n\r\n\t\tconst geometry = new BufferGeometry();\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\r\n\r\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\r\n\r\n\t\tsuper( geometry, material );\r\n\r\n\t\tthis.type = 'GridHelper';\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass PolarGridHelper extends LineSegments {\r\n\r\n\tconstructor( radius = 10, radials = 16, circles = 8, divisions = 64, color1 = 0x444444, color2 = 0x888888 ) {\r\n\r\n\t\tcolor1 = new Color( color1 );\r\n\t\tcolor2 = new Color( color2 );\r\n\r\n\t\tconst vertices = [];\r\n\t\tconst colors = [];\r\n\r\n\t\t// create the radials\r\n\r\n\t\tfor ( let i = 0; i <= radials; i ++ ) {\r\n\r\n\t\t\tconst v = ( i / radials ) * ( Math.PI * 2 );\r\n\r\n\t\t\tconst x = Math.sin( v ) * radius;\r\n\t\t\tconst z = Math.cos( v ) * radius;\r\n\r\n\t\t\tvertices.push( 0, 0, 0 );\r\n\t\t\tvertices.push( x, 0, z );\r\n\r\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\r\n\r\n\t\t\tcolors.push( color.r, color.g, color.b );\r\n\t\t\tcolors.push( color.r, color.g, color.b );\r\n\r\n\t\t}\r\n\r\n\t\t// create the circles\r\n\r\n\t\tfor ( let i = 0; i <= circles; i ++ ) {\r\n\r\n\t\t\tconst color = ( i & 1 ) ? color1 : color2;\r\n\r\n\t\t\tconst r = radius - ( radius / circles * i );\r\n\r\n\t\t\tfor ( let j = 0; j < divisions; j ++ ) {\r\n\r\n\t\t\t\t// first vertex\r\n\r\n\t\t\t\tlet v = ( j / divisions ) * ( Math.PI * 2 );\r\n\r\n\t\t\t\tlet x = Math.sin( v ) * r;\r\n\t\t\t\tlet z = Math.cos( v ) * r;\r\n\r\n\t\t\t\tvertices.push( x, 0, z );\r\n\t\t\t\tcolors.push( color.r, color.g, color.b );\r\n\r\n\t\t\t\t// second vertex\r\n\r\n\t\t\t\tv = ( ( j + 1 ) / divisions ) * ( Math.PI * 2 );\r\n\r\n\t\t\t\tx = Math.sin( v ) * r;\r\n\t\t\t\tz = Math.cos( v ) * r;\r\n\r\n\t\t\t\tvertices.push( x, 0, z );\r\n\t\t\t\tcolors.push( color.r, color.g, color.b );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst geometry = new BufferGeometry();\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\r\n\r\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\r\n\r\n\t\tsuper( geometry, material );\r\n\r\n\t\tthis.type = 'PolarGridHelper';\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _v1$6 = /*@__PURE__*/ new Vector3();\r\nconst _v2$3 = /*@__PURE__*/ new Vector3();\r\nconst _v3$1 = /*@__PURE__*/ new Vector3();\r\n\r\nclass DirectionalLightHelper extends Object3D {\r\n\r\n\tconstructor( light, size, color ) {\r\n\r\n\t\tsuper();\r\n\t\tthis.light = light;\r\n\t\tthis.light.updateMatrixWorld();\r\n\r\n\t\tthis.matrix = light.matrixWorld;\r\n\t\tthis.matrixAutoUpdate = false;\r\n\r\n\t\tthis.color = color;\r\n\r\n\t\tif ( size === undefined ) size = 1;\r\n\r\n\t\tlet geometry = new BufferGeometry();\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [\r\n\t\t\t- size, size, 0,\r\n\t\t\tsize, size, 0,\r\n\t\t\tsize, - size, 0,\r\n\t\t\t- size, - size, 0,\r\n\t\t\t- size, size, 0\r\n\t\t], 3 ) );\r\n\r\n\t\tconst material = new LineBasicMaterial( { fog: false, toneMapped: false } );\r\n\r\n\t\tthis.lightPlane = new Line( geometry, material );\r\n\t\tthis.add( this.lightPlane );\r\n\r\n\t\tgeometry = new BufferGeometry();\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 0, 1 ], 3 ) );\r\n\r\n\t\tthis.targetLine = new Line( geometry, material );\r\n\t\tthis.add( this.targetLine );\r\n\r\n\t\tthis.update();\r\n\r\n\t}\r\n\r\n\tdispose() {\r\n\r\n\t\tthis.lightPlane.geometry.dispose();\r\n\t\tthis.lightPlane.material.dispose();\r\n\t\tthis.targetLine.geometry.dispose();\r\n\t\tthis.targetLine.material.dispose();\r\n\r\n\t}\r\n\r\n\tupdate() {\r\n\r\n\t\t_v1$6.setFromMatrixPosition( this.light.matrixWorld );\r\n\t\t_v2$3.setFromMatrixPosition( this.light.target.matrixWorld );\r\n\t\t_v3$1.subVectors( _v2$3, _v1$6 );\r\n\r\n\t\tthis.lightPlane.lookAt( _v2$3 );\r\n\r\n\t\tif ( this.color !== undefined ) {\r\n\r\n\t\t\tthis.lightPlane.material.color.set( this.color );\r\n\t\t\tthis.targetLine.material.color.set( this.color );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.lightPlane.material.color.copy( this.light.color );\r\n\t\t\tthis.targetLine.material.color.copy( this.light.color );\r\n\r\n\t\t}\r\n\r\n\t\tthis.targetLine.lookAt( _v2$3 );\r\n\t\tthis.targetLine.scale.z = _v3$1.length();\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _vector$c = /*@__PURE__*/ new Vector3();\r\nconst _camera = /*@__PURE__*/ new Camera();\r\n\r\n/**\r\n *\t- shows frustum, line of sight and up of the camera\r\n *\t- suitable for fast updates\r\n * \t- based on frustum visualization in lightgl.js shadowmap example\r\n *\t\thttp://evanw.github.com/lightgl.js/tests/shadowmap.html\r\n */\r\n\r\nclass CameraHelper extends LineSegments {\r\n\r\n\tconstructor( camera ) {\r\n\r\n\t\tconst geometry = new BufferGeometry();\r\n\t\tconst material = new LineBasicMaterial( { color: 0xffffff, vertexColors: true, toneMapped: false } );\r\n\r\n\t\tconst vertices = [];\r\n\t\tconst colors = [];\r\n\r\n\t\tconst pointMap = {};\r\n\r\n\t\t// colors\r\n\r\n\t\tconst colorFrustum = new Color( 0xffaa00 );\r\n\t\tconst colorCone = new Color( 0xff0000 );\r\n\t\tconst colorUp = new Color( 0x00aaff );\r\n\t\tconst colorTarget = new Color( 0xffffff );\r\n\t\tconst colorCross = new Color( 0x333333 );\r\n\r\n\t\t// near\r\n\r\n\t\taddLine( 'n1', 'n2', colorFrustum );\r\n\t\taddLine( 'n2', 'n4', colorFrustum );\r\n\t\taddLine( 'n4', 'n3', colorFrustum );\r\n\t\taddLine( 'n3', 'n1', colorFrustum );\r\n\r\n\t\t// far\r\n\r\n\t\taddLine( 'f1', 'f2', colorFrustum );\r\n\t\taddLine( 'f2', 'f4', colorFrustum );\r\n\t\taddLine( 'f4', 'f3', colorFrustum );\r\n\t\taddLine( 'f3', 'f1', colorFrustum );\r\n\r\n\t\t// sides\r\n\r\n\t\taddLine( 'n1', 'f1', colorFrustum );\r\n\t\taddLine( 'n2', 'f2', colorFrustum );\r\n\t\taddLine( 'n3', 'f3', colorFrustum );\r\n\t\taddLine( 'n4', 'f4', colorFrustum );\r\n\r\n\t\t// cone\r\n\r\n\t\taddLine( 'p', 'n1', colorCone );\r\n\t\taddLine( 'p', 'n2', colorCone );\r\n\t\taddLine( 'p', 'n3', colorCone );\r\n\t\taddLine( 'p', 'n4', colorCone );\r\n\r\n\t\t// up\r\n\r\n\t\taddLine( 'u1', 'u2', colorUp );\r\n\t\taddLine( 'u2', 'u3', colorUp );\r\n\t\taddLine( 'u3', 'u1', colorUp );\r\n\r\n\t\t// target\r\n\r\n\t\taddLine( 'c', 't', colorTarget );\r\n\t\taddLine( 'p', 'c', colorCross );\r\n\r\n\t\t// cross\r\n\r\n\t\taddLine( 'cn1', 'cn2', colorCross );\r\n\t\taddLine( 'cn3', 'cn4', colorCross );\r\n\r\n\t\taddLine( 'cf1', 'cf2', colorCross );\r\n\t\taddLine( 'cf3', 'cf4', colorCross );\r\n\r\n\t\tfunction addLine( a, b, color ) {\r\n\r\n\t\t\taddPoint( a, color );\r\n\t\t\taddPoint( b, color );\r\n\r\n\t\t}\r\n\r\n\t\tfunction addPoint( id, color ) {\r\n\r\n\t\t\tvertices.push( 0, 0, 0 );\r\n\t\t\tcolors.push( color.r, color.g, color.b );\r\n\r\n\t\t\tif ( pointMap[ id ] === undefined ) {\r\n\r\n\t\t\t\tpointMap[ id ] = [];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tpointMap[ id ].push( ( vertices.length / 3 ) - 1 );\r\n\r\n\t\t}\r\n\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\r\n\r\n\t\tsuper( geometry, material );\r\n\r\n\t\tthis.type = 'CameraHelper';\r\n\r\n\t\tthis.camera = camera;\r\n\t\tif ( this.camera.updateProjectionMatrix ) this.camera.updateProjectionMatrix();\r\n\r\n\t\tthis.matrix = camera.matrixWorld;\r\n\t\tthis.matrixAutoUpdate = false;\r\n\r\n\t\tthis.pointMap = pointMap;\r\n\r\n\t\tthis.update();\r\n\r\n\t}\r\n\r\n\tupdate() {\r\n\r\n\t\tconst geometry = this.geometry;\r\n\t\tconst pointMap = this.pointMap;\r\n\r\n\t\tconst w = 1, h = 1;\r\n\r\n\t\t// we need just camera projection matrix inverse\r\n\t\t// world matrix must be identity\r\n\r\n\t\t_camera.projectionMatrixInverse.copy( this.camera.projectionMatrixInverse );\r\n\r\n\t\t// center / target\r\n\r\n\t\tsetPoint( 'c', pointMap, geometry, _camera, 0, 0, - 1 );\r\n\t\tsetPoint( 't', pointMap, geometry, _camera, 0, 0, 1 );\r\n\r\n\t\t// near\r\n\r\n\t\tsetPoint( 'n1', pointMap, geometry, _camera, - w, - h, - 1 );\r\n\t\tsetPoint( 'n2', pointMap, geometry, _camera, w, - h, - 1 );\r\n\t\tsetPoint( 'n3', pointMap, geometry, _camera, - w, h, - 1 );\r\n\t\tsetPoint( 'n4', pointMap, geometry, _camera, w, h, - 1 );\r\n\r\n\t\t// far\r\n\r\n\t\tsetPoint( 'f1', pointMap, geometry, _camera, - w, - h, 1 );\r\n\t\tsetPoint( 'f2', pointMap, geometry, _camera, w, - h, 1 );\r\n\t\tsetPoint( 'f3', pointMap, geometry, _camera, - w, h, 1 );\r\n\t\tsetPoint( 'f4', pointMap, geometry, _camera, w, h, 1 );\r\n\r\n\t\t// up\r\n\r\n\t\tsetPoint( 'u1', pointMap, geometry, _camera, w * 0.7, h * 1.1, - 1 );\r\n\t\tsetPoint( 'u2', pointMap, geometry, _camera, - w * 0.7, h * 1.1, - 1 );\r\n\t\tsetPoint( 'u3', pointMap, geometry, _camera, 0, h * 2, - 1 );\r\n\r\n\t\t// cross\r\n\r\n\t\tsetPoint( 'cf1', pointMap, geometry, _camera, - w, 0, 1 );\r\n\t\tsetPoint( 'cf2', pointMap, geometry, _camera, w, 0, 1 );\r\n\t\tsetPoint( 'cf3', pointMap, geometry, _camera, 0, - h, 1 );\r\n\t\tsetPoint( 'cf4', pointMap, geometry, _camera, 0, h, 1 );\r\n\r\n\t\tsetPoint( 'cn1', pointMap, geometry, _camera, - w, 0, - 1 );\r\n\t\tsetPoint( 'cn2', pointMap, geometry, _camera, w, 0, - 1 );\r\n\t\tsetPoint( 'cn3', pointMap, geometry, _camera, 0, - h, - 1 );\r\n\t\tsetPoint( 'cn4', pointMap, geometry, _camera, 0, h, - 1 );\r\n\r\n\t\tgeometry.getAttribute( 'position' ).needsUpdate = true;\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\nfunction setPoint( point, pointMap, geometry, camera, x, y, z ) {\r\n\r\n\t_vector$c.set( x, y, z ).unproject( camera );\r\n\r\n\tconst points = pointMap[ point ];\r\n\r\n\tif ( points !== undefined ) {\r\n\r\n\t\tconst position = geometry.getAttribute( 'position' );\r\n\r\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\r\n\r\n\t\t\tposition.setXYZ( points[ i ], _vector$c.x, _vector$c.y, _vector$c.z );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _box$3 = /*@__PURE__*/ new Box3();\r\n\r\nclass BoxHelper extends LineSegments {\r\n\r\n\tconstructor( object, color = 0xffff00 ) {\r\n\r\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\r\n\t\tconst positions = new Float32Array( 8 * 3 );\r\n\r\n\t\tconst geometry = new BufferGeometry();\r\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\r\n\t\tgeometry.setAttribute( 'position', new BufferAttribute( positions, 3 ) );\r\n\r\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\r\n\r\n\t\tthis.object = object;\r\n\t\tthis.type = 'BoxHelper';\r\n\r\n\t\tthis.matrixAutoUpdate = false;\r\n\r\n\t\tthis.update();\r\n\r\n\t}\r\n\r\n\tupdate( object ) {\r\n\r\n\t\tif ( object !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.BoxHelper: .update() has no longer arguments.' );\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.object !== undefined ) {\r\n\r\n\t\t\t_box$3.setFromObject( this.object );\r\n\r\n\t\t}\r\n\r\n\t\tif ( _box$3.isEmpty() ) return;\r\n\r\n\t\tconst min = _box$3.min;\r\n\t\tconst max = _box$3.max;\r\n\r\n\t\t/*\r\n\t\t\t5____4\r\n\t\t1/___0/|\r\n\t\t| 6__|_7\r\n\t\t2/___3/\r\n\r\n\t\t0: max.x, max.y, max.z\r\n\t\t1: min.x, max.y, max.z\r\n\t\t2: min.x, min.y, max.z\r\n\t\t3: max.x, min.y, max.z\r\n\t\t4: max.x, max.y, min.z\r\n\t\t5: min.x, max.y, min.z\r\n\t\t6: min.x, min.y, min.z\r\n\t\t7: max.x, min.y, min.z\r\n\t\t*/\r\n\r\n\t\tconst position = this.geometry.attributes.position;\r\n\t\tconst array = position.array;\r\n\r\n\t\tarray[ 0 ] = max.x; array[ 1 ] = max.y; array[ 2 ] = max.z;\r\n\t\tarray[ 3 ] = min.x; array[ 4 ] = max.y; array[ 5 ] = max.z;\r\n\t\tarray[ 6 ] = min.x; array[ 7 ] = min.y; array[ 8 ] = max.z;\r\n\t\tarray[ 9 ] = max.x; array[ 10 ] = min.y; array[ 11 ] = max.z;\r\n\t\tarray[ 12 ] = max.x; array[ 13 ] = max.y; array[ 14 ] = min.z;\r\n\t\tarray[ 15 ] = min.x; array[ 16 ] = max.y; array[ 17 ] = min.z;\r\n\t\tarray[ 18 ] = min.x; array[ 19 ] = min.y; array[ 20 ] = min.z;\r\n\t\tarray[ 21 ] = max.x; array[ 22 ] = min.y; array[ 23 ] = min.z;\r\n\r\n\t\tposition.needsUpdate = true;\r\n\r\n\t\tthis.geometry.computeBoundingSphere();\r\n\r\n\r\n\t}\r\n\r\n\tsetFromObject( object ) {\r\n\r\n\t\tthis.object = object;\r\n\t\tthis.update();\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n\tcopy( source ) {\r\n\r\n\t\tLineSegments.prototype.copy.call( this, source );\r\n\r\n\t\tthis.object = source.object;\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass Box3Helper extends LineSegments {\r\n\r\n\tconstructor( box, color = 0xffff00 ) {\r\n\r\n\t\tconst indices = new Uint16Array( [ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ] );\r\n\r\n\t\tconst positions = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 1, - 1, 1, - 1, - 1 ];\r\n\r\n\t\tconst geometry = new BufferGeometry();\r\n\r\n\t\tgeometry.setIndex( new BufferAttribute( indices, 1 ) );\r\n\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\r\n\r\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\r\n\r\n\t\tthis.box = box;\r\n\r\n\t\tthis.type = 'Box3Helper';\r\n\r\n\t\tthis.geometry.computeBoundingSphere();\r\n\r\n\t}\r\n\r\n\tupdateMatrixWorld( force ) {\r\n\r\n\t\tconst box = this.box;\r\n\r\n\t\tif ( box.isEmpty() ) return;\r\n\r\n\t\tbox.getCenter( this.position );\r\n\r\n\t\tbox.getSize( this.scale );\r\n\r\n\t\tthis.scale.multiplyScalar( 0.5 );\r\n\r\n\t\tsuper.updateMatrixWorld( force );\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass PlaneHelper extends Line {\r\n\r\n\tconstructor( plane, size = 1, hex = 0xffff00 ) {\r\n\r\n\t\tconst color = hex;\r\n\r\n\t\tconst positions = [ 1, - 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, - 1, 1, 1, 1, 1, 0, 0, 1, 0, 0, 0 ];\r\n\r\n\t\tconst geometry = new BufferGeometry();\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\r\n\t\tgeometry.computeBoundingSphere();\r\n\r\n\t\tsuper( geometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\r\n\r\n\t\tthis.type = 'PlaneHelper';\r\n\r\n\t\tthis.plane = plane;\r\n\r\n\t\tthis.size = size;\r\n\r\n\t\tconst positions2 = [ 1, 1, 1, - 1, 1, 1, - 1, - 1, 1, 1, 1, 1, - 1, - 1, 1, 1, - 1, 1 ];\r\n\r\n\t\tconst geometry2 = new BufferGeometry();\r\n\t\tgeometry2.setAttribute( 'position', new Float32BufferAttribute( positions2, 3 ) );\r\n\t\tgeometry2.computeBoundingSphere();\r\n\r\n\t\tthis.add( new Mesh( geometry2, new MeshBasicMaterial( { color: color, opacity: 0.2, transparent: true, depthWrite: false, toneMapped: false } ) ) );\r\n\r\n\t}\r\n\r\n\tupdateMatrixWorld( force ) {\r\n\r\n\t\tlet scale = - this.plane.constant;\r\n\r\n\t\tif ( Math.abs( scale ) < 1e-8 ) scale = 1e-8; // sign does not matter\r\n\r\n\t\tthis.scale.set( 0.5 * this.size, 0.5 * this.size, scale );\r\n\r\n\t\tthis.children[ 0 ].material.side = ( scale < 0 ) ? BackSide : FrontSide; // renderer flips side when determinant < 0; flipping not wanted here\r\n\r\n\t\tthis.lookAt( this.plane.normal );\r\n\r\n\t\tsuper.updateMatrixWorld( force );\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _axis = /*@__PURE__*/ new Vector3();\r\nlet _lineGeometry, _coneGeometry;\r\n\r\nclass ArrowHelper extends Object3D {\r\n\r\n\tconstructor( dir, origin, length, color, headLength, headWidth ) {\r\n\r\n\t\tsuper();\r\n\t\t// dir is assumed to be normalized\r\n\r\n\t\tthis.type = 'ArrowHelper';\r\n\r\n\t\tif ( dir === undefined ) dir = new Vector3( 0, 0, 1 );\r\n\t\tif ( origin === undefined ) origin = new Vector3( 0, 0, 0 );\r\n\t\tif ( length === undefined ) length = 1;\r\n\t\tif ( color === undefined ) color = 0xffff00;\r\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\r\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\r\n\r\n\t\tif ( _lineGeometry === undefined ) {\r\n\r\n\t\t\t_lineGeometry = new BufferGeometry();\r\n\t\t\t_lineGeometry.setAttribute( 'position', new Float32BufferAttribute( [ 0, 0, 0, 0, 1, 0 ], 3 ) );\r\n\r\n\t\t\t_coneGeometry = new CylinderBufferGeometry( 0, 0.5, 1, 5, 1 );\r\n\t\t\t_coneGeometry.translate( 0, - 0.5, 0 );\r\n\r\n\t\t}\r\n\r\n\t\tthis.position.copy( origin );\r\n\r\n\t\tthis.line = new Line( _lineGeometry, new LineBasicMaterial( { color: color, toneMapped: false } ) );\r\n\t\tthis.line.matrixAutoUpdate = false;\r\n\t\tthis.add( this.line );\r\n\r\n\t\tthis.cone = new Mesh( _coneGeometry, new MeshBasicMaterial( { color: color, toneMapped: false } ) );\r\n\t\tthis.cone.matrixAutoUpdate = false;\r\n\t\tthis.add( this.cone );\r\n\r\n\t\tthis.setDirection( dir );\r\n\t\tthis.setLength( length, headLength, headWidth );\r\n\r\n\t}\r\n\r\n\tsetDirection( dir ) {\r\n\r\n\t\t// dir is assumed to be normalized\r\n\r\n\t\tif ( dir.y > 0.99999 ) {\r\n\r\n\t\t\tthis.quaternion.set( 0, 0, 0, 1 );\r\n\r\n\t\t} else if ( dir.y < - 0.99999 ) {\r\n\r\n\t\t\tthis.quaternion.set( 1, 0, 0, 0 );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t_axis.set( dir.z, 0, - dir.x ).normalize();\r\n\r\n\t\t\tconst radians = Math.acos( dir.y );\r\n\r\n\t\t\tthis.quaternion.setFromAxisAngle( _axis, radians );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tsetLength( length, headLength, headWidth ) {\r\n\r\n\t\tif ( headLength === undefined ) headLength = 0.2 * length;\r\n\t\tif ( headWidth === undefined ) headWidth = 0.2 * headLength;\r\n\r\n\t\tthis.line.scale.set( 1, Math.max( 0.0001, length - headLength ), 1 ); // see #17458\r\n\t\tthis.line.updateMatrix();\r\n\r\n\t\tthis.cone.scale.set( headWidth, headLength, headWidth );\r\n\t\tthis.cone.position.y = length;\r\n\t\tthis.cone.updateMatrix();\r\n\r\n\t}\r\n\r\n\tsetColor( color ) {\r\n\r\n\t\tthis.line.material.color.set( color );\r\n\t\tthis.cone.material.color.set( color );\r\n\r\n\t}\r\n\r\n\tcopy( source ) {\r\n\r\n\t\tsuper.copy( source, false );\r\n\r\n\t\tthis.line.copy( source.line );\r\n\t\tthis.cone.copy( source.cone );\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n}\r\n\r\nclass AxesHelper extends LineSegments {\r\n\r\n\tconstructor( size = 1 ) {\r\n\r\n\t\tconst vertices = [\r\n\t\t\t0, 0, 0,\tsize, 0, 0,\r\n\t\t\t0, 0, 0,\t0, size, 0,\r\n\t\t\t0, 0, 0,\t0, 0, size\r\n\t\t];\r\n\r\n\t\tconst colors = [\r\n\t\t\t1, 0, 0,\t1, 0.6, 0,\r\n\t\t\t0, 1, 0,\t0.6, 1, 0,\r\n\t\t\t0, 0, 1,\t0, 0.6, 1\r\n\t\t];\r\n\r\n\t\tconst geometry = new BufferGeometry();\r\n\t\tgeometry.setAttribute( 'position', new Float32BufferAttribute( vertices, 3 ) );\r\n\t\tgeometry.setAttribute( 'color', new Float32BufferAttribute( colors, 3 ) );\r\n\r\n\t\tconst material = new LineBasicMaterial( { vertexColors: true, toneMapped: false } );\r\n\r\n\t\tsuper( geometry, material );\r\n\r\n\t\tthis.type = 'AxesHelper';\r\n\r\n\t}\r\n\r\n}\r\n\r\nconst _floatView = new Float32Array( 1 );\r\nconst _int32View = new Int32Array( _floatView.buffer );\r\n\r\nconst DataUtils = {\r\n\r\n\t// Converts float32 to float16 (stored as uint16 value).\r\n\r\n\ttoHalfFloat: function ( val ) {\r\n\r\n\t\t// Source: http://gamedev.stackexchange.com/questions/17326/conversion-of-a-number-from-single-precision-floating-point-representation-to-a/17410#17410\r\n\r\n\t\t/* This method is faster than the OpenEXR implementation (very often\r\n\t\t* used, eg. in Ogre), with the additional benefit of rounding, inspired\r\n\t\t* by James Tursa?s half-precision code. */\r\n\r\n\t\t_floatView[ 0 ] = val;\r\n\t\tconst x = _int32View[ 0 ];\r\n\r\n\t\tlet bits = ( x >> 16 ) & 0x8000; /* Get the sign */\r\n\t\tlet m = ( x >> 12 ) & 0x07ff; /* Keep one extra bit for rounding */\r\n\t\tconst e = ( x >> 23 ) & 0xff; /* Using int is faster here */\r\n\r\n\t\t/* If zero, or denormal, or exponent underflows too much for a denormal\r\n\t\t\t* half, return signed zero. */\r\n\t\tif ( e < 103 ) return bits;\r\n\r\n\t\t/* If NaN, return NaN. If Inf or exponent overflow, return Inf. */\r\n\t\tif ( e > 142 ) {\r\n\r\n\t\t\tbits |= 0x7c00;\r\n\t\t\t/* If exponent was 0xff and one mantissa bit was set, it means NaN,\r\n\t\t\t\t\t\t* not Inf, so make sure we set one mantissa bit too. */\r\n\t\t\tbits |= ( ( e == 255 ) ? 0 : 1 ) && ( x & 0x007fffff );\r\n\t\t\treturn bits;\r\n\r\n\t\t}\r\n\r\n\t\t/* If exponent underflows but not too much, return a denormal */\r\n\t\tif ( e < 113 ) {\r\n\r\n\t\t\tm |= 0x0800;\r\n\t\t\t/* Extra rounding may overflow and set mantissa to 0 and exponent\r\n\t\t\t\t* to 1, which is OK. */\r\n\t\t\tbits |= ( m >> ( 114 - e ) ) + ( ( m >> ( 113 - e ) ) & 1 );\r\n\t\t\treturn bits;\r\n\r\n\t\t}\r\n\r\n\t\tbits |= ( ( e - 112 ) << 10 ) | ( m >> 1 );\r\n\t\t/* Extra rounding. An overflow will set mantissa to 0 and increment\r\n\t\t\t* the exponent, which is OK. */\r\n\t\tbits += m & 1;\r\n\t\treturn bits;\r\n\r\n\t}\r\n\r\n};\r\n\r\nconst LOD_MIN = 4;\r\nconst LOD_MAX = 8;\r\nconst SIZE_MAX = Math.pow( 2, LOD_MAX );\r\n\r\n// The standard deviations (radians) associated with the extra mips. These are\r\n// chosen to approximate a Trowbridge-Reitz distribution function times the\r\n// geometric shadowing function. These sigma values squared must match the\r\n// variance #defines in cube_uv_reflection_fragment.glsl.js.\r\nconst EXTRA_LOD_SIGMA = [ 0.125, 0.215, 0.35, 0.446, 0.526, 0.582 ];\r\n\r\nconst TOTAL_LODS = LOD_MAX - LOD_MIN + 1 + EXTRA_LOD_SIGMA.length;\r\n\r\n// The maximum length of the blur for loop. Smaller sigmas will use fewer\r\n// samples and exit early, but not recompile the shader.\r\nconst MAX_SAMPLES = 20;\r\n\r\nconst ENCODINGS = {\r\n\t[ LinearEncoding ]: 0,\r\n\t[ sRGBEncoding ]: 1,\r\n\t[ RGBEEncoding ]: 2,\r\n\t[ RGBM7Encoding ]: 3,\r\n\t[ RGBM16Encoding ]: 4,\r\n\t[ RGBDEncoding ]: 5,\r\n\t[ GammaEncoding ]: 6\r\n};\r\n\r\nconst _flatCamera = /*@__PURE__*/ new OrthographicCamera();\r\nconst { _lodPlanes, _sizeLods, _sigmas } = /*@__PURE__*/ _createPlanes();\r\nconst _clearColor = /*@__PURE__*/ new Color();\r\nlet _oldTarget = null;\r\n\r\n// Golden Ratio\r\nconst PHI = ( 1 + Math.sqrt( 5 ) ) / 2;\r\nconst INV_PHI = 1 / PHI;\r\n\r\n// Vertices of a dodecahedron (except the opposites, which represent the\r\n// same axis), used as axis directions evenly spread on a sphere.\r\nconst _axisDirections = [\r\n\t/*@__PURE__*/ new Vector3( 1, 1, 1 ),\r\n\t/*@__PURE__*/ new Vector3( - 1, 1, 1 ),\r\n\t/*@__PURE__*/ new Vector3( 1, 1, - 1 ),\r\n\t/*@__PURE__*/ new Vector3( - 1, 1, - 1 ),\r\n\t/*@__PURE__*/ new Vector3( 0, PHI, INV_PHI ),\r\n\t/*@__PURE__*/ new Vector3( 0, PHI, - INV_PHI ),\r\n\t/*@__PURE__*/ new Vector3( INV_PHI, 0, PHI ),\r\n\t/*@__PURE__*/ new Vector3( - INV_PHI, 0, PHI ),\r\n\t/*@__PURE__*/ new Vector3( PHI, INV_PHI, 0 ),\r\n\t/*@__PURE__*/ new Vector3( - PHI, INV_PHI, 0 ) ];\r\n\r\n/**\r\n * This class generates a Prefiltered, Mipmapped Radiance Environment Map\r\n * (PMREM) from a cubeMap environment texture. This allows different levels of\r\n * blur to be quickly accessed based on material roughness. It is packed into a\r\n * special CubeUV format that allows us to perform custom interpolation so that\r\n * we can support nonlinear formats such as RGBE. Unlike a traditional mipmap\r\n * chain, it only goes down to the LOD_MIN level (above), and then creates extra\r\n * even more filtered 'mips' at the same LOD_MIN resolution, associated with\r\n * higher roughness levels. In this way we maintain resolution to smoothly\r\n * interpolate diffuse lighting while limiting sampling computation.\r\n */\r\n\r\nclass PMREMGenerator {\r\n\r\n\tconstructor( renderer ) {\r\n\r\n\t\tthis._renderer = renderer;\r\n\t\tthis._pingPongRenderTarget = null;\r\n\r\n\t\tthis._blurMaterial = _getBlurShader( MAX_SAMPLES );\r\n\t\tthis._equirectShader = null;\r\n\t\tthis._cubemapShader = null;\r\n\r\n\t\tthis._compileMaterial( this._blurMaterial );\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a PMREM from a supplied Scene, which can be faster than using an\r\n\t * image if networking bandwidth is low. Optional sigma specifies a blur radius\r\n\t * in radians to be applied to the scene before PMREM generation. Optional near\r\n\t * and far planes ensure the scene is rendered in its entirety (the cubeCamera\r\n\t * is placed at the origin).\r\n\t */\r\n\tfromScene( scene, sigma = 0, near = 0.1, far = 100 ) {\r\n\r\n\t\t_oldTarget = this._renderer.getRenderTarget();\r\n\t\tconst cubeUVRenderTarget = this._allocateTargets();\r\n\r\n\t\tthis._sceneToCubeUV( scene, near, far, cubeUVRenderTarget );\r\n\t\tif ( sigma > 0 ) {\r\n\r\n\t\t\tthis._blur( cubeUVRenderTarget, 0, 0, sigma );\r\n\r\n\t\t}\r\n\r\n\t\tthis._applyPMREM( cubeUVRenderTarget );\r\n\t\tthis._cleanup( cubeUVRenderTarget );\r\n\r\n\t\treturn cubeUVRenderTarget;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a PMREM from an equirectangular texture, which can be either LDR\r\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input image size is 1k (1024 x 512),\r\n\t * as this matches best with the 256 x 256 cubemap output.\r\n\t */\r\n\tfromEquirectangular( equirectangular ) {\r\n\r\n\t\treturn this._fromTexture( equirectangular );\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Generates a PMREM from an cubemap texture, which can be either LDR\r\n\t * (RGBFormat) or HDR (RGBEFormat). The ideal input cube size is 256 x 256,\r\n\t * as this matches best with the 256 x 256 cubemap output.\r\n\t */\r\n\tfromCubemap( cubemap ) {\r\n\r\n\t\treturn this._fromTexture( cubemap );\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Pre-compiles the cubemap shader. You can get faster start-up by invoking this method during\r\n\t * your texture's network fetch for increased concurrency.\r\n\t */\r\n\tcompileCubemapShader() {\r\n\r\n\t\tif ( this._cubemapShader === null ) {\r\n\r\n\t\t\tthis._cubemapShader = _getCubemapShader();\r\n\t\t\tthis._compileMaterial( this._cubemapShader );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Pre-compiles the equirectangular shader. You can get faster start-up by invoking this method during\r\n\t * your texture's network fetch for increased concurrency.\r\n\t */\r\n\tcompileEquirectangularShader() {\r\n\r\n\t\tif ( this._equirectShader === null ) {\r\n\r\n\t\t\tthis._equirectShader = _getEquirectShader();\r\n\t\t\tthis._compileMaterial( this._equirectShader );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Disposes of the PMREMGenerator's internal memory. Note that PMREMGenerator is a static class,\r\n\t * so you should not need more than one PMREMGenerator object. If you do, calling dispose() on\r\n\t * one of them will cause any others to also become unusable.\r\n\t */\r\n\tdispose() {\r\n\r\n\t\tthis._blurMaterial.dispose();\r\n\r\n\t\tif ( this._cubemapShader !== null ) this._cubemapShader.dispose();\r\n\t\tif ( this._equirectShader !== null ) this._equirectShader.dispose();\r\n\r\n\t\tfor ( let i = 0; i < _lodPlanes.length; i ++ ) {\r\n\r\n\t\t\t_lodPlanes[ i ].dispose();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t// private interface\r\n\r\n\t_cleanup( outputTarget ) {\r\n\r\n\t\tthis._pingPongRenderTarget.dispose();\r\n\t\tthis._renderer.setRenderTarget( _oldTarget );\r\n\t\toutputTarget.scissorTest = false;\r\n\t\t_setViewport( outputTarget, 0, 0, outputTarget.width, outputTarget.height );\r\n\r\n\t}\r\n\r\n\t_fromTexture( texture ) {\r\n\r\n\t\t_oldTarget = this._renderer.getRenderTarget();\r\n\t\tconst cubeUVRenderTarget = this._allocateTargets( texture );\r\n\t\tthis._textureToCubeUV( texture, cubeUVRenderTarget );\r\n\t\tthis._applyPMREM( cubeUVRenderTarget );\r\n\t\tthis._cleanup( cubeUVRenderTarget );\r\n\r\n\t\treturn cubeUVRenderTarget;\r\n\r\n\t}\r\n\r\n\t_allocateTargets( texture ) { // warning: null texture is valid\r\n\r\n\t\tconst params = {\r\n\t\t\tmagFilter: NearestFilter,\r\n\t\t\tminFilter: NearestFilter,\r\n\t\t\tgenerateMipmaps: false,\r\n\t\t\ttype: UnsignedByteType,\r\n\t\t\tformat: RGBEFormat,\r\n\t\t\tencoding: _isLDR( texture ) ? texture.encoding : RGBEEncoding,\r\n\t\t\tdepthBuffer: false\r\n\t\t};\r\n\r\n\t\tconst cubeUVRenderTarget = _createRenderTarget( params );\r\n\t\tcubeUVRenderTarget.depthBuffer = texture ? false : true;\r\n\t\tthis._pingPongRenderTarget = _createRenderTarget( params );\r\n\t\treturn cubeUVRenderTarget;\r\n\r\n\t}\r\n\r\n\t_compileMaterial( material ) {\r\n\r\n\t\tconst tmpMesh = new Mesh( _lodPlanes[ 0 ], material );\r\n\t\tthis._renderer.compile( tmpMesh, _flatCamera );\r\n\r\n\t}\r\n\r\n\t_sceneToCubeUV( scene, near, far, cubeUVRenderTarget ) {\r\n\r\n\t\tconst fov = 90;\r\n\t\tconst aspect = 1;\r\n\t\tconst cubeCamera = new PerspectiveCamera( fov, aspect, near, far );\r\n\t\tconst upSign = [ 1, - 1, 1, 1, 1, 1 ];\r\n\t\tconst forwardSign = [ 1, 1, 1, - 1, - 1, - 1 ];\r\n\t\tconst renderer = this._renderer;\r\n\r\n\t\tconst outputEncoding = renderer.outputEncoding;\r\n\t\tconst toneMapping = renderer.toneMapping;\r\n\t\trenderer.getClearColor( _clearColor );\r\n\t\tconst clearAlpha = renderer.getClearAlpha();\r\n\r\n\t\trenderer.toneMapping = NoToneMapping;\r\n\t\trenderer.outputEncoding = LinearEncoding;\r\n\r\n\t\tlet background = scene.background;\r\n\t\tif ( background && background.isColor ) {\r\n\r\n\t\t\tbackground.convertSRGBToLinear();\r\n\t\t\t// Convert linear to RGBE\r\n\t\t\tconst maxComponent = Math.max( background.r, background.g, background.b );\r\n\t\t\tconst fExp = Math.min( Math.max( Math.ceil( Math.log2( maxComponent ) ), - 128.0 ), 127.0 );\r\n\t\t\tbackground = background.multiplyScalar( Math.pow( 2.0, - fExp ) );\r\n\t\t\tconst alpha = ( fExp + 128.0 ) / 255.0;\r\n\t\t\trenderer.setClearColor( background, alpha );\r\n\t\t\tscene.background = null;\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0; i < 6; i ++ ) {\r\n\r\n\t\t\tconst col = i % 3;\r\n\t\t\tif ( col == 0 ) {\r\n\r\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\r\n\t\t\t\tcubeCamera.lookAt( forwardSign[ i ], 0, 0 );\r\n\r\n\t\t\t} else if ( col == 1 ) {\r\n\r\n\t\t\t\tcubeCamera.up.set( 0, 0, upSign[ i ] );\r\n\t\t\t\tcubeCamera.lookAt( 0, forwardSign[ i ], 0 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tcubeCamera.up.set( 0, upSign[ i ], 0 );\r\n\t\t\t\tcubeCamera.lookAt( 0, 0, forwardSign[ i ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t_setViewport( cubeUVRenderTarget,\r\n\t\t\t\tcol * SIZE_MAX, i > 2 ? SIZE_MAX : 0, SIZE_MAX, SIZE_MAX );\r\n\t\t\trenderer.setRenderTarget( cubeUVRenderTarget );\r\n\t\t\trenderer.render( scene, cubeCamera );\r\n\r\n\t\t}\r\n\r\n\t\trenderer.toneMapping = toneMapping;\r\n\t\trenderer.outputEncoding = outputEncoding;\r\n\t\trenderer.setClearColor( _clearColor, clearAlpha );\r\n\r\n\t}\r\n\r\n\t_textureToCubeUV( texture, cubeUVRenderTarget ) {\r\n\r\n\t\tconst renderer = this._renderer;\r\n\r\n\t\tif ( texture.isCubeTexture ) {\r\n\r\n\t\t\tif ( this._cubemapShader == null ) {\r\n\r\n\t\t\t\tthis._cubemapShader = _getCubemapShader();\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( this._equirectShader == null ) {\r\n\r\n\t\t\t\tthis._equirectShader = _getEquirectShader();\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tconst material = texture.isCubeTexture ? this._cubemapShader : this._equirectShader;\r\n\t\tconst mesh = new Mesh( _lodPlanes[ 0 ], material );\r\n\r\n\t\tconst uniforms = material.uniforms;\r\n\r\n\t\tuniforms[ 'envMap' ].value = texture;\r\n\r\n\t\tif ( ! texture.isCubeTexture ) {\r\n\r\n\t\t\tuniforms[ 'texelSize' ].value.set( 1.0 / texture.image.width, 1.0 / texture.image.height );\r\n\r\n\t\t}\r\n\r\n\t\tuniforms[ 'inputEncoding' ].value = ENCODINGS[ texture.encoding ];\r\n\t\tuniforms[ 'outputEncoding' ].value = ENCODINGS[ cubeUVRenderTarget.texture.encoding ];\r\n\r\n\t\t_setViewport( cubeUVRenderTarget, 0, 0, 3 * SIZE_MAX, 2 * SIZE_MAX );\r\n\r\n\t\trenderer.setRenderTarget( cubeUVRenderTarget );\r\n\t\trenderer.render( mesh, _flatCamera );\r\n\r\n\t}\r\n\r\n\t_applyPMREM( cubeUVRenderTarget ) {\r\n\r\n\t\tconst renderer = this._renderer;\r\n\t\tconst autoClear = renderer.autoClear;\r\n\t\trenderer.autoClear = false;\r\n\r\n\t\tfor ( let i = 1; i < TOTAL_LODS; i ++ ) {\r\n\r\n\t\t\tconst sigma = Math.sqrt( _sigmas[ i ] * _sigmas[ i ] - _sigmas[ i - 1 ] * _sigmas[ i - 1 ] );\r\n\r\n\t\t\tconst poleAxis = _axisDirections[ ( i - 1 ) % _axisDirections.length ];\r\n\r\n\t\t\tthis._blur( cubeUVRenderTarget, i - 1, i, sigma, poleAxis );\r\n\r\n\t\t}\r\n\r\n\t\trenderer.autoClear = autoClear;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * This is a two-pass Gaussian blur for a cubemap. Normally this is done\r\n\t * vertically and horizontally, but this breaks down on a cube. Here we apply\r\n\t * the blur latitudinally (around the poles), and then longitudinally (towards\r\n\t * the poles) to approximate the orthogonally-separable blur. It is least\r\n\t * accurate at the poles, but still does a decent job.\r\n\t */\r\n\t_blur( cubeUVRenderTarget, lodIn, lodOut, sigma, poleAxis ) {\r\n\r\n\t\tconst pingPongRenderTarget = this._pingPongRenderTarget;\r\n\r\n\t\tthis._halfBlur(\r\n\t\t\tcubeUVRenderTarget,\r\n\t\t\tpingPongRenderTarget,\r\n\t\t\tlodIn,\r\n\t\t\tlodOut,\r\n\t\t\tsigma,\r\n\t\t\t'latitudinal',\r\n\t\t\tpoleAxis );\r\n\r\n\t\tthis._halfBlur(\r\n\t\t\tpingPongRenderTarget,\r\n\t\t\tcubeUVRenderTarget,\r\n\t\t\tlodOut,\r\n\t\t\tlodOut,\r\n\t\t\tsigma,\r\n\t\t\t'longitudinal',\r\n\t\t\tpoleAxis );\r\n\r\n\t}\r\n\r\n\t_halfBlur( targetIn, targetOut, lodIn, lodOut, sigmaRadians, direction, poleAxis ) {\r\n\r\n\t\tconst renderer = this._renderer;\r\n\t\tconst blurMaterial = this._blurMaterial;\r\n\r\n\t\tif ( direction !== 'latitudinal' && direction !== 'longitudinal' ) {\r\n\r\n\t\t\tconsole.error(\r\n\t\t\t\t'blur direction must be either latitudinal or longitudinal!' );\r\n\r\n\t\t}\r\n\r\n\t\t// Number of standard deviations at which to cut off the discrete approximation.\r\n\t\tconst STANDARD_DEVIATIONS = 3;\r\n\r\n\t\tconst blurMesh = new Mesh( _lodPlanes[ lodOut ], blurMaterial );\r\n\t\tconst blurUniforms = blurMaterial.uniforms;\r\n\r\n\t\tconst pixels = _sizeLods[ lodIn ] - 1;\r\n\t\tconst radiansPerPixel = isFinite( sigmaRadians ) ? Math.PI / ( 2 * pixels ) : 2 * Math.PI / ( 2 * MAX_SAMPLES - 1 );\r\n\t\tconst sigmaPixels = sigmaRadians / radiansPerPixel;\r\n\t\tconst samples = isFinite( sigmaRadians ) ? 1 + Math.floor( STANDARD_DEVIATIONS * sigmaPixels ) : MAX_SAMPLES;\r\n\r\n\t\tif ( samples > MAX_SAMPLES ) {\r\n\r\n\t\t\tconsole.warn( `sigmaRadians, ${\r\n\t\t\t\tsigmaRadians}, is too large and will clip, as it requested ${\r\n\t\t\t\tsamples} samples when the maximum is set to ${MAX_SAMPLES}` );\r\n\r\n\t\t}\r\n\r\n\t\tconst weights = [];\r\n\t\tlet sum = 0;\r\n\r\n\t\tfor ( let i = 0; i < MAX_SAMPLES; ++ i ) {\r\n\r\n\t\t\tconst x = i / sigmaPixels;\r\n\t\t\tconst weight = Math.exp( - x * x / 2 );\r\n\t\t\tweights.push( weight );\r\n\r\n\t\t\tif ( i == 0 ) {\r\n\r\n\t\t\t\tsum += weight;\r\n\r\n\t\t\t} else if ( i < samples ) {\r\n\r\n\t\t\t\tsum += 2 * weight;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tfor ( let i = 0; i < weights.length; i ++ ) {\r\n\r\n\t\t\tweights[ i ] = weights[ i ] / sum;\r\n\r\n\t\t}\r\n\r\n\t\tblurUniforms[ 'envMap' ].value = targetIn.texture;\r\n\t\tblurUniforms[ 'samples' ].value = samples;\r\n\t\tblurUniforms[ 'weights' ].value = weights;\r\n\t\tblurUniforms[ 'latitudinal' ].value = direction === 'latitudinal';\r\n\r\n\t\tif ( poleAxis ) {\r\n\r\n\t\t\tblurUniforms[ 'poleAxis' ].value = poleAxis;\r\n\r\n\t\t}\r\n\r\n\t\tblurUniforms[ 'dTheta' ].value = radiansPerPixel;\r\n\t\tblurUniforms[ 'mipInt' ].value = LOD_MAX - lodIn;\r\n\t\tblurUniforms[ 'inputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\r\n\t\tblurUniforms[ 'outputEncoding' ].value = ENCODINGS[ targetIn.texture.encoding ];\r\n\r\n\t\tconst outputSize = _sizeLods[ lodOut ];\r\n\t\tconst x = 3 * Math.max( 0, SIZE_MAX - 2 * outputSize );\r\n\t\tconst y = ( lodOut === 0 ? 0 : 2 * SIZE_MAX ) + 2 * outputSize * ( lodOut > LOD_MAX - LOD_MIN ? lodOut - LOD_MAX + LOD_MIN : 0 );\r\n\r\n\t\t_setViewport( targetOut, x, y, 3 * outputSize, 2 * outputSize );\r\n\t\trenderer.setRenderTarget( targetOut );\r\n\t\trenderer.render( blurMesh, _flatCamera );\r\n\r\n\t}\r\n\r\n}\r\n\r\nfunction _isLDR( texture ) {\r\n\r\n\tif ( texture === undefined || texture.type !== UnsignedByteType ) return false;\r\n\r\n\treturn texture.encoding === LinearEncoding || texture.encoding === sRGBEncoding || texture.encoding === GammaEncoding;\r\n\r\n}\r\n\r\nfunction _createPlanes() {\r\n\r\n\tconst _lodPlanes = [];\r\n\tconst _sizeLods = [];\r\n\tconst _sigmas = [];\r\n\r\n\tlet lod = LOD_MAX;\r\n\r\n\tfor ( let i = 0; i < TOTAL_LODS; i ++ ) {\r\n\r\n\t\tconst sizeLod = Math.pow( 2, lod );\r\n\t\t_sizeLods.push( sizeLod );\r\n\t\tlet sigma = 1.0 / sizeLod;\r\n\r\n\t\tif ( i > LOD_MAX - LOD_MIN ) {\r\n\r\n\t\t\tsigma = EXTRA_LOD_SIGMA[ i - LOD_MAX + LOD_MIN - 1 ];\r\n\r\n\t\t} else if ( i == 0 ) {\r\n\r\n\t\t\tsigma = 0;\r\n\r\n\t\t}\r\n\r\n\t\t_sigmas.push( sigma );\r\n\r\n\t\tconst texelSize = 1.0 / ( sizeLod - 1 );\r\n\t\tconst min = - texelSize / 2;\r\n\t\tconst max = 1 + texelSize / 2;\r\n\t\tconst uv1 = [ min, min, max, min, max, max, min, min, max, max, min, max ];\r\n\r\n\t\tconst cubeFaces = 6;\r\n\t\tconst vertices = 6;\r\n\t\tconst positionSize = 3;\r\n\t\tconst uvSize = 2;\r\n\t\tconst faceIndexSize = 1;\r\n\r\n\t\tconst position = new Float32Array( positionSize * vertices * cubeFaces );\r\n\t\tconst uv = new Float32Array( uvSize * vertices * cubeFaces );\r\n\t\tconst faceIndex = new Float32Array( faceIndexSize * vertices * cubeFaces );\r\n\r\n\t\tfor ( let face = 0; face < cubeFaces; face ++ ) {\r\n\r\n\t\t\tconst x = ( face % 3 ) * 2 / 3 - 1;\r\n\t\t\tconst y = face > 2 ? 0 : - 1;\r\n\t\t\tconst coordinates = [\r\n\t\t\t\tx, y, 0,\r\n\t\t\t\tx + 2 / 3, y, 0,\r\n\t\t\t\tx + 2 / 3, y + 1, 0,\r\n\t\t\t\tx, y, 0,\r\n\t\t\t\tx + 2 / 3, y + 1, 0,\r\n\t\t\t\tx, y + 1, 0\r\n\t\t\t];\r\n\t\t\tposition.set( coordinates, positionSize * vertices * face );\r\n\t\t\tuv.set( uv1, uvSize * vertices * face );\r\n\t\t\tconst fill = [ face, face, face, face, face, face ];\r\n\t\t\tfaceIndex.set( fill, faceIndexSize * vertices * face );\r\n\r\n\t\t}\r\n\r\n\t\tconst planes = new BufferGeometry();\r\n\t\tplanes.setAttribute( 'position', new BufferAttribute( position, positionSize ) );\r\n\t\tplanes.setAttribute( 'uv', new BufferAttribute( uv, uvSize ) );\r\n\t\tplanes.setAttribute( 'faceIndex', new BufferAttribute( faceIndex, faceIndexSize ) );\r\n\t\t_lodPlanes.push( planes );\r\n\r\n\t\tif ( lod > LOD_MIN ) {\r\n\r\n\t\t\tlod --;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\treturn { _lodPlanes, _sizeLods, _sigmas };\r\n\r\n}\r\n\r\nfunction _createRenderTarget( params ) {\r\n\r\n\tconst cubeUVRenderTarget = new WebGLRenderTarget( 3 * SIZE_MAX, 3 * SIZE_MAX, params );\r\n\tcubeUVRenderTarget.texture.mapping = CubeUVReflectionMapping;\r\n\tcubeUVRenderTarget.texture.name = 'PMREM.cubeUv';\r\n\tcubeUVRenderTarget.scissorTest = true;\r\n\treturn cubeUVRenderTarget;\r\n\r\n}\r\n\r\nfunction _setViewport( target, x, y, width, height ) {\r\n\r\n\ttarget.viewport.set( x, y, width, height );\r\n\ttarget.scissor.set( x, y, width, height );\r\n\r\n}\r\n\r\nfunction _getBlurShader( maxSamples ) {\r\n\r\n\tconst weights = new Float32Array( maxSamples );\r\n\tconst poleAxis = new Vector3( 0, 1, 0 );\r\n\tconst shaderMaterial = new RawShaderMaterial( {\r\n\r\n\t\tname: 'SphericalGaussianBlur',\r\n\r\n\t\tdefines: { 'n': maxSamples },\r\n\r\n\t\tuniforms: {\r\n\t\t\t'envMap': { value: null },\r\n\t\t\t'samples': { value: 1 },\r\n\t\t\t'weights': { value: weights },\r\n\t\t\t'latitudinal': { value: false },\r\n\t\t\t'dTheta': { value: 0 },\r\n\t\t\t'mipInt': { value: 0 },\r\n\t\t\t'poleAxis': { value: poleAxis },\r\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\r\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\r\n\t\t},\r\n\r\n\t\tvertexShader: _getCommonVertexShader(),\r\n\r\n\t\tfragmentShader: /* glsl */`\r\n\r\n\t\t\tprecision mediump float;\r\n\t\t\tprecision mediump int;\r\n\r\n\t\t\tvarying vec3 vOutputDirection;\r\n\r\n\t\t\tuniform sampler2D envMap;\r\n\t\t\tuniform int samples;\r\n\t\t\tuniform float weights[ n ];\r\n\t\t\tuniform bool latitudinal;\r\n\t\t\tuniform float dTheta;\r\n\t\t\tuniform float mipInt;\r\n\t\t\tuniform vec3 poleAxis;\r\n\r\n\t\t\t${ _getEncodings() }\r\n\r\n\t\t\t#define ENVMAP_TYPE_CUBE_UV\r\n\t\t\t#include \r\n\r\n\t\t\tvec3 getSample( float theta, vec3 axis ) {\r\n\r\n\t\t\t\tfloat cosTheta = cos( theta );\r\n\t\t\t\t// Rodrigues' axis-angle rotation\r\n\t\t\t\tvec3 sampleDirection = vOutputDirection * cosTheta\r\n\t\t\t\t\t+ cross( axis, vOutputDirection ) * sin( theta )\r\n\t\t\t\t\t+ axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta );\r\n\r\n\t\t\t\treturn bilinearCubeUV( envMap, sampleDirection, mipInt );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvoid main() {\r\n\r\n\t\t\t\tvec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection );\r\n\r\n\t\t\t\tif ( all( equal( axis, vec3( 0.0 ) ) ) ) {\r\n\r\n\t\t\t\t\taxis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxis = normalize( axis );\r\n\r\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\r\n\t\t\t\tgl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis );\r\n\r\n\t\t\t\tfor ( int i = 1; i < n; i++ ) {\r\n\r\n\t\t\t\t\tif ( i >= samples ) {\r\n\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tfloat theta = dTheta * float( i );\r\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis );\r\n\t\t\t\t\tgl_FragColor.rgb += weights[ i ] * getSample( theta, axis );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\r\n\r\n\t\t\t}\r\n\t\t`,\r\n\r\n\t\tblending: NoBlending,\r\n\t\tdepthTest: false,\r\n\t\tdepthWrite: false\r\n\r\n\t} );\r\n\r\n\treturn shaderMaterial;\r\n\r\n}\r\n\r\nfunction _getEquirectShader() {\r\n\r\n\tconst texelSize = new Vector2( 1, 1 );\r\n\tconst shaderMaterial = new RawShaderMaterial( {\r\n\r\n\t\tname: 'EquirectangularToCubeUV',\r\n\r\n\t\tuniforms: {\r\n\t\t\t'envMap': { value: null },\r\n\t\t\t'texelSize': { value: texelSize },\r\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\r\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\r\n\t\t},\r\n\r\n\t\tvertexShader: _getCommonVertexShader(),\r\n\r\n\t\tfragmentShader: /* glsl */`\r\n\r\n\t\t\tprecision mediump float;\r\n\t\t\tprecision mediump int;\r\n\r\n\t\t\tvarying vec3 vOutputDirection;\r\n\r\n\t\t\tuniform sampler2D envMap;\r\n\t\t\tuniform vec2 texelSize;\r\n\r\n\t\t\t${ _getEncodings() }\r\n\r\n\t\t\t#include \r\n\r\n\t\t\tvoid main() {\r\n\r\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\r\n\r\n\t\t\t\tvec3 outputDirection = normalize( vOutputDirection );\r\n\t\t\t\tvec2 uv = equirectUv( outputDirection );\r\n\r\n\t\t\t\tvec2 f = fract( uv / texelSize - 0.5 );\r\n\t\t\t\tuv -= f * texelSize;\r\n\t\t\t\tvec3 tl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\r\n\t\t\t\tuv.x += texelSize.x;\r\n\t\t\t\tvec3 tr = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\r\n\t\t\t\tuv.y += texelSize.y;\r\n\t\t\t\tvec3 br = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\r\n\t\t\t\tuv.x -= texelSize.x;\r\n\t\t\t\tvec3 bl = envMapTexelToLinear( texture2D ( envMap, uv ) ).rgb;\r\n\r\n\t\t\t\tvec3 tm = mix( tl, tr, f.x );\r\n\t\t\t\tvec3 bm = mix( bl, br, f.x );\r\n\t\t\t\tgl_FragColor.rgb = mix( tm, bm, f.y );\r\n\r\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\r\n\r\n\t\t\t}\r\n\t\t`,\r\n\r\n\t\tblending: NoBlending,\r\n\t\tdepthTest: false,\r\n\t\tdepthWrite: false\r\n\r\n\t} );\r\n\r\n\treturn shaderMaterial;\r\n\r\n}\r\n\r\nfunction _getCubemapShader() {\r\n\r\n\tconst shaderMaterial = new RawShaderMaterial( {\r\n\r\n\t\tname: 'CubemapToCubeUV',\r\n\r\n\t\tuniforms: {\r\n\t\t\t'envMap': { value: null },\r\n\t\t\t'inputEncoding': { value: ENCODINGS[ LinearEncoding ] },\r\n\t\t\t'outputEncoding': { value: ENCODINGS[ LinearEncoding ] }\r\n\t\t},\r\n\r\n\t\tvertexShader: _getCommonVertexShader(),\r\n\r\n\t\tfragmentShader: /* glsl */`\r\n\r\n\t\t\tprecision mediump float;\r\n\t\t\tprecision mediump int;\r\n\r\n\t\t\tvarying vec3 vOutputDirection;\r\n\r\n\t\t\tuniform samplerCube envMap;\r\n\r\n\t\t\t${ _getEncodings() }\r\n\r\n\t\t\tvoid main() {\r\n\r\n\t\t\t\tgl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 );\r\n\t\t\t\tgl_FragColor.rgb = envMapTexelToLinear( textureCube( envMap, vec3( - vOutputDirection.x, vOutputDirection.yz ) ) ).rgb;\r\n\t\t\t\tgl_FragColor = linearToOutputTexel( gl_FragColor );\r\n\r\n\t\t\t}\r\n\t\t`,\r\n\r\n\t\tblending: NoBlending,\r\n\t\tdepthTest: false,\r\n\t\tdepthWrite: false\r\n\r\n\t} );\r\n\r\n\treturn shaderMaterial;\r\n\r\n}\r\n\r\nfunction _getCommonVertexShader() {\r\n\r\n\treturn /* glsl */`\r\n\r\n\t\tprecision mediump float;\r\n\t\tprecision mediump int;\r\n\r\n\t\tattribute vec3 position;\r\n\t\tattribute vec2 uv;\r\n\t\tattribute float faceIndex;\r\n\r\n\t\tvarying vec3 vOutputDirection;\r\n\r\n\t\t// RH coordinate system; PMREM face-indexing convention\r\n\t\tvec3 getDirection( vec2 uv, float face ) {\r\n\r\n\t\t\tuv = 2.0 * uv - 1.0;\r\n\r\n\t\t\tvec3 direction = vec3( uv, 1.0 );\r\n\r\n\t\t\tif ( face == 0.0 ) {\r\n\r\n\t\t\t\tdirection = direction.zyx; // ( 1, v, u ) pos x\r\n\r\n\t\t\t} else if ( face == 1.0 ) {\r\n\r\n\t\t\t\tdirection = direction.xzy;\r\n\t\t\t\tdirection.xz *= -1.0; // ( -u, 1, -v ) pos y\r\n\r\n\t\t\t} else if ( face == 2.0 ) {\r\n\r\n\t\t\t\tdirection.x *= -1.0; // ( -u, v, 1 ) pos z\r\n\r\n\t\t\t} else if ( face == 3.0 ) {\r\n\r\n\t\t\t\tdirection = direction.zyx;\r\n\t\t\t\tdirection.xz *= -1.0; // ( -1, v, -u ) neg x\r\n\r\n\t\t\t} else if ( face == 4.0 ) {\r\n\r\n\t\t\t\tdirection = direction.xzy;\r\n\t\t\t\tdirection.xy *= -1.0; // ( -u, -1, v ) neg y\r\n\r\n\t\t\t} else if ( face == 5.0 ) {\r\n\r\n\t\t\t\tdirection.z *= -1.0; // ( u, v, -1 ) neg z\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn direction;\r\n\r\n\t\t}\r\n\r\n\t\tvoid main() {\r\n\r\n\t\t\tvOutputDirection = getDirection( uv, faceIndex );\r\n\t\t\tgl_Position = vec4( position, 1.0 );\r\n\r\n\t\t}\r\n\t`;\r\n\r\n}\r\n\r\nfunction _getEncodings() {\r\n\r\n\treturn /* glsl */`\r\n\r\n\t\tuniform int inputEncoding;\r\n\t\tuniform int outputEncoding;\r\n\r\n\t\t#include \r\n\r\n\t\tvec4 inputTexelToLinear( vec4 value ) {\r\n\r\n\t\t\tif ( inputEncoding == 0 ) {\r\n\r\n\t\t\t\treturn value;\r\n\r\n\t\t\t} else if ( inputEncoding == 1 ) {\r\n\r\n\t\t\t\treturn sRGBToLinear( value );\r\n\r\n\t\t\t} else if ( inputEncoding == 2 ) {\r\n\r\n\t\t\t\treturn RGBEToLinear( value );\r\n\r\n\t\t\t} else if ( inputEncoding == 3 ) {\r\n\r\n\t\t\t\treturn RGBMToLinear( value, 7.0 );\r\n\r\n\t\t\t} else if ( inputEncoding == 4 ) {\r\n\r\n\t\t\t\treturn RGBMToLinear( value, 16.0 );\r\n\r\n\t\t\t} else if ( inputEncoding == 5 ) {\r\n\r\n\t\t\t\treturn RGBDToLinear( value, 256.0 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\treturn GammaToLinear( value, 2.2 );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tvec4 linearToOutputTexel( vec4 value ) {\r\n\r\n\t\t\tif ( outputEncoding == 0 ) {\r\n\r\n\t\t\t\treturn value;\r\n\r\n\t\t\t} else if ( outputEncoding == 1 ) {\r\n\r\n\t\t\t\treturn LinearTosRGB( value );\r\n\r\n\t\t\t} else if ( outputEncoding == 2 ) {\r\n\r\n\t\t\t\treturn LinearToRGBE( value );\r\n\r\n\t\t\t} else if ( outputEncoding == 3 ) {\r\n\r\n\t\t\t\treturn LinearToRGBM( value, 7.0 );\r\n\r\n\t\t\t} else if ( outputEncoding == 4 ) {\r\n\r\n\t\t\t\treturn LinearToRGBM( value, 16.0 );\r\n\r\n\t\t\t} else if ( outputEncoding == 5 ) {\r\n\r\n\t\t\t\treturn LinearToRGBD( value, 256.0 );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\treturn LinearToGamma( value, 2.2 );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tvec4 envMapTexelToLinear( vec4 color ) {\r\n\r\n\t\t\treturn inputTexelToLinear( color );\r\n\r\n\t\t}\r\n\t`;\r\n\r\n}\r\n\r\nfunction Face4( a, b, c, d, normal, color, materialIndex ) {\r\n\r\n\tconsole.warn( 'THREE.Face4 has been removed. A THREE.Face3 will be created instead.' );\r\n\treturn new Face3( a, b, c, normal, color, materialIndex );\r\n\r\n}\r\n\r\nconst LineStrip = 0;\r\nconst LinePieces = 1;\r\nconst NoColors = 0;\r\nconst FaceColors = 1;\r\nconst VertexColors = 2;\r\n\r\nfunction MeshFaceMaterial( materials ) {\r\n\r\n\tconsole.warn( 'THREE.MeshFaceMaterial has been removed. Use an Array instead.' );\r\n\treturn materials;\r\n\r\n}\r\n\r\nfunction MultiMaterial( materials = [] ) {\r\n\r\n\tconsole.warn( 'THREE.MultiMaterial has been removed. Use an Array instead.' );\r\n\tmaterials.isMultiMaterial = true;\r\n\tmaterials.materials = materials;\r\n\tmaterials.clone = function () {\r\n\r\n\t\treturn materials.slice();\r\n\r\n\t};\r\n\r\n\treturn materials;\r\n\r\n}\r\n\r\nfunction PointCloud( geometry, material ) {\r\n\r\n\tconsole.warn( 'THREE.PointCloud has been renamed to THREE.Points.' );\r\n\treturn new Points( geometry, material );\r\n\r\n}\r\n\r\nfunction Particle( material ) {\r\n\r\n\tconsole.warn( 'THREE.Particle has been renamed to THREE.Sprite.' );\r\n\treturn new Sprite( material );\r\n\r\n}\r\n\r\nfunction ParticleSystem( geometry, material ) {\r\n\r\n\tconsole.warn( 'THREE.ParticleSystem has been renamed to THREE.Points.' );\r\n\treturn new Points( geometry, material );\r\n\r\n}\r\n\r\nfunction PointCloudMaterial( parameters ) {\r\n\r\n\tconsole.warn( 'THREE.PointCloudMaterial has been renamed to THREE.PointsMaterial.' );\r\n\treturn new PointsMaterial( parameters );\r\n\r\n}\r\n\r\nfunction ParticleBasicMaterial( parameters ) {\r\n\r\n\tconsole.warn( 'THREE.ParticleBasicMaterial has been renamed to THREE.PointsMaterial.' );\r\n\treturn new PointsMaterial( parameters );\r\n\r\n}\r\n\r\nfunction ParticleSystemMaterial( parameters ) {\r\n\r\n\tconsole.warn( 'THREE.ParticleSystemMaterial has been renamed to THREE.PointsMaterial.' );\r\n\treturn new PointsMaterial( parameters );\r\n\r\n}\r\n\r\nfunction Vertex( x, y, z ) {\r\n\r\n\tconsole.warn( 'THREE.Vertex has been removed. Use THREE.Vector3 instead.' );\r\n\treturn new Vector3( x, y, z );\r\n\r\n}\r\n\r\n//\r\n\r\nfunction DynamicBufferAttribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.DynamicBufferAttribute has been removed. Use new THREE.BufferAttribute().setUsage( THREE.DynamicDrawUsage ) instead.' );\r\n\treturn new BufferAttribute( array, itemSize ).setUsage( DynamicDrawUsage );\r\n\r\n}\r\n\r\nfunction Int8Attribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.Int8Attribute has been removed. Use new THREE.Int8BufferAttribute() instead.' );\r\n\treturn new Int8BufferAttribute( array, itemSize );\r\n\r\n}\r\n\r\nfunction Uint8Attribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.Uint8Attribute has been removed. Use new THREE.Uint8BufferAttribute() instead.' );\r\n\treturn new Uint8BufferAttribute( array, itemSize );\r\n\r\n}\r\n\r\nfunction Uint8ClampedAttribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.Uint8ClampedAttribute has been removed. Use new THREE.Uint8ClampedBufferAttribute() instead.' );\r\n\treturn new Uint8ClampedBufferAttribute( array, itemSize );\r\n\r\n}\r\n\r\nfunction Int16Attribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.Int16Attribute has been removed. Use new THREE.Int16BufferAttribute() instead.' );\r\n\treturn new Int16BufferAttribute( array, itemSize );\r\n\r\n}\r\n\r\nfunction Uint16Attribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.Uint16Attribute has been removed. Use new THREE.Uint16BufferAttribute() instead.' );\r\n\treturn new Uint16BufferAttribute( array, itemSize );\r\n\r\n}\r\n\r\nfunction Int32Attribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.Int32Attribute has been removed. Use new THREE.Int32BufferAttribute() instead.' );\r\n\treturn new Int32BufferAttribute( array, itemSize );\r\n\r\n}\r\n\r\nfunction Uint32Attribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.Uint32Attribute has been removed. Use new THREE.Uint32BufferAttribute() instead.' );\r\n\treturn new Uint32BufferAttribute( array, itemSize );\r\n\r\n}\r\n\r\nfunction Float32Attribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.Float32Attribute has been removed. Use new THREE.Float32BufferAttribute() instead.' );\r\n\treturn new Float32BufferAttribute( array, itemSize );\r\n\r\n}\r\n\r\nfunction Float64Attribute( array, itemSize ) {\r\n\r\n\tconsole.warn( 'THREE.Float64Attribute has been removed. Use new THREE.Float64BufferAttribute() instead.' );\r\n\treturn new Float64BufferAttribute( array, itemSize );\r\n\r\n}\r\n\r\n//\r\n\r\nCurve.create = function ( construct, getPoint ) {\r\n\r\n\tconsole.log( 'THREE.Curve.create() has been deprecated' );\r\n\r\n\tconstruct.prototype = Object.create( Curve.prototype );\r\n\tconstruct.prototype.constructor = construct;\r\n\tconstruct.prototype.getPoint = getPoint;\r\n\r\n\treturn construct;\r\n\r\n};\r\n\r\n//\r\n\r\nObject.assign( CurvePath.prototype, {\r\n\r\n\tcreatePointsGeometry: function ( divisions ) {\r\n\r\n\t\tconsole.warn( 'THREE.CurvePath: .createPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\r\n\r\n\t\t// generate geometry from path points (for Line or Points objects)\r\n\r\n\t\tconst pts = this.getPoints( divisions );\r\n\t\treturn this.createGeometry( pts );\r\n\r\n\t},\r\n\r\n\tcreateSpacedPointsGeometry: function ( divisions ) {\r\n\r\n\t\tconsole.warn( 'THREE.CurvePath: .createSpacedPointsGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\r\n\r\n\t\t// generate geometry from equidistant sampling along the path\r\n\r\n\t\tconst pts = this.getSpacedPoints( divisions );\r\n\t\treturn this.createGeometry( pts );\r\n\r\n\t},\r\n\r\n\tcreateGeometry: function ( points ) {\r\n\r\n\t\tconsole.warn( 'THREE.CurvePath: .createGeometry() has been removed. Use new THREE.Geometry().setFromPoints( points ) instead.' );\r\n\r\n\t\tconst geometry = new Geometry();\r\n\r\n\t\tfor ( let i = 0, l = points.length; i < l; i ++ ) {\r\n\r\n\t\t\tconst point = points[ i ];\r\n\t\t\tgeometry.vertices.push( new Vector3( point.x, point.y, point.z || 0 ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn geometry;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nObject.assign( Path.prototype, {\r\n\r\n\tfromPoints: function ( points ) {\r\n\r\n\t\tconsole.warn( 'THREE.Path: .fromPoints() has been renamed to .setFromPoints().' );\r\n\t\treturn this.setFromPoints( points );\r\n\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nfunction ClosedSplineCurve3( points ) {\r\n\r\n\tconsole.warn( 'THREE.ClosedSplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\r\n\r\n\tCatmullRomCurve3.call( this, points );\r\n\tthis.type = 'catmullrom';\r\n\tthis.closed = true;\r\n\r\n}\r\n\r\nClosedSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\r\n\r\n//\r\n\r\nfunction SplineCurve3( points ) {\r\n\r\n\tconsole.warn( 'THREE.SplineCurve3 has been deprecated. Use THREE.CatmullRomCurve3 instead.' );\r\n\r\n\tCatmullRomCurve3.call( this, points );\r\n\tthis.type = 'catmullrom';\r\n\r\n}\r\n\r\nSplineCurve3.prototype = Object.create( CatmullRomCurve3.prototype );\r\n\r\n//\r\n\r\nfunction Spline( points ) {\r\n\r\n\tconsole.warn( 'THREE.Spline has been removed. Use THREE.CatmullRomCurve3 instead.' );\r\n\r\n\tCatmullRomCurve3.call( this, points );\r\n\tthis.type = 'catmullrom';\r\n\r\n}\r\n\r\nSpline.prototype = Object.create( CatmullRomCurve3.prototype );\r\n\r\nObject.assign( Spline.prototype, {\r\n\r\n\tinitFromArray: function ( /* a */ ) {\r\n\r\n\t\tconsole.error( 'THREE.Spline: .initFromArray() has been removed.' );\r\n\r\n\t},\r\n\tgetControlPointsArray: function ( /* optionalTarget */ ) {\r\n\r\n\t\tconsole.error( 'THREE.Spline: .getControlPointsArray() has been removed.' );\r\n\r\n\t},\r\n\treparametrizeByArcLength: function ( /* samplingCoef */ ) {\r\n\r\n\t\tconsole.error( 'THREE.Spline: .reparametrizeByArcLength() has been removed.' );\r\n\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nfunction AxisHelper( size ) {\r\n\r\n\tconsole.warn( 'THREE.AxisHelper has been renamed to THREE.AxesHelper.' );\r\n\treturn new AxesHelper( size );\r\n\r\n}\r\n\r\nfunction BoundingBoxHelper( object, color ) {\r\n\r\n\tconsole.warn( 'THREE.BoundingBoxHelper has been deprecated. Creating a THREE.BoxHelper instead.' );\r\n\treturn new BoxHelper( object, color );\r\n\r\n}\r\n\r\nfunction EdgesHelper( object, hex ) {\r\n\r\n\tconsole.warn( 'THREE.EdgesHelper has been removed. Use THREE.EdgesGeometry instead.' );\r\n\treturn new LineSegments( new EdgesGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\r\n\r\n}\r\n\r\nGridHelper.prototype.setColors = function () {\r\n\r\n\tconsole.error( 'THREE.GridHelper: setColors() has been deprecated, pass them in the constructor instead.' );\r\n\r\n};\r\n\r\nSkeletonHelper.prototype.update = function () {\r\n\r\n\tconsole.error( 'THREE.SkeletonHelper: update() no longer needs to be called.' );\r\n\r\n};\r\n\r\nfunction WireframeHelper( object, hex ) {\r\n\r\n\tconsole.warn( 'THREE.WireframeHelper has been removed. Use THREE.WireframeGeometry instead.' );\r\n\treturn new LineSegments( new WireframeGeometry( object.geometry ), new LineBasicMaterial( { color: hex !== undefined ? hex : 0xffffff } ) );\r\n\r\n}\r\n\r\n//\r\n\r\nObject.assign( Loader.prototype, {\r\n\r\n\textractUrlBase: function ( url ) {\r\n\r\n\t\tconsole.warn( 'THREE.Loader: .extractUrlBase() has been deprecated. Use THREE.LoaderUtils.extractUrlBase() instead.' );\r\n\t\treturn LoaderUtils.extractUrlBase( url );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nLoader.Handlers = {\r\n\r\n\tadd: function ( /* regex, loader */ ) {\r\n\r\n\t\tconsole.error( 'THREE.Loader: Handlers.add() has been removed. Use LoadingManager.addHandler() instead.' );\r\n\r\n\t},\r\n\r\n\tget: function ( /* file */ ) {\r\n\r\n\t\tconsole.error( 'THREE.Loader: Handlers.get() has been removed. Use LoadingManager.getHandler() instead.' );\r\n\r\n\t}\r\n\r\n};\r\n\r\nfunction XHRLoader( manager ) {\r\n\r\n\tconsole.warn( 'THREE.XHRLoader has been renamed to THREE.FileLoader.' );\r\n\treturn new FileLoader( manager );\r\n\r\n}\r\n\r\nfunction BinaryTextureLoader( manager ) {\r\n\r\n\tconsole.warn( 'THREE.BinaryTextureLoader has been renamed to THREE.DataTextureLoader.' );\r\n\treturn new DataTextureLoader( manager );\r\n\r\n}\r\n\r\n//\r\n\r\nObject.assign( Box2.prototype, {\r\n\r\n\tcenter: function ( optionalTarget ) {\r\n\r\n\t\tconsole.warn( 'THREE.Box2: .center() has been renamed to .getCenter().' );\r\n\t\treturn this.getCenter( optionalTarget );\r\n\r\n\t},\r\n\tempty: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Box2: .empty() has been renamed to .isEmpty().' );\r\n\t\treturn this.isEmpty();\r\n\r\n\t},\r\n\tisIntersectionBox: function ( box ) {\r\n\r\n\t\tconsole.warn( 'THREE.Box2: .isIntersectionBox() has been renamed to .intersectsBox().' );\r\n\t\treturn this.intersectsBox( box );\r\n\r\n\t},\r\n\tsize: function ( optionalTarget ) {\r\n\r\n\t\tconsole.warn( 'THREE.Box2: .size() has been renamed to .getSize().' );\r\n\t\treturn this.getSize( optionalTarget );\r\n\r\n\t}\r\n} );\r\n\r\nObject.assign( Box3.prototype, {\r\n\r\n\tcenter: function ( optionalTarget ) {\r\n\r\n\t\tconsole.warn( 'THREE.Box3: .center() has been renamed to .getCenter().' );\r\n\t\treturn this.getCenter( optionalTarget );\r\n\r\n\t},\r\n\tempty: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Box3: .empty() has been renamed to .isEmpty().' );\r\n\t\treturn this.isEmpty();\r\n\r\n\t},\r\n\tisIntersectionBox: function ( box ) {\r\n\r\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionBox() has been renamed to .intersectsBox().' );\r\n\t\treturn this.intersectsBox( box );\r\n\r\n\t},\r\n\tisIntersectionSphere: function ( sphere ) {\r\n\r\n\t\tconsole.warn( 'THREE.Box3: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\r\n\t\treturn this.intersectsSphere( sphere );\r\n\r\n\t},\r\n\tsize: function ( optionalTarget ) {\r\n\r\n\t\tconsole.warn( 'THREE.Box3: .size() has been renamed to .getSize().' );\r\n\t\treturn this.getSize( optionalTarget );\r\n\r\n\t}\r\n} );\r\n\r\nObject.assign( Sphere.prototype, {\r\n\r\n\tempty: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Sphere: .empty() has been renamed to .isEmpty().' );\r\n\t\treturn this.isEmpty();\r\n\r\n\t},\r\n\r\n} );\r\n\r\nFrustum.prototype.setFromMatrix = function ( m ) {\r\n\r\n\tconsole.warn( 'THREE.Frustum: .setFromMatrix() has been renamed to .setFromProjectionMatrix().' );\r\n\treturn this.setFromProjectionMatrix( m );\r\n\r\n};\r\n\r\nLine3.prototype.center = function ( optionalTarget ) {\r\n\r\n\tconsole.warn( 'THREE.Line3: .center() has been renamed to .getCenter().' );\r\n\treturn this.getCenter( optionalTarget );\r\n\r\n};\r\n\r\nObject.assign( MathUtils, {\r\n\r\n\trandom16: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Math: .random16() has been deprecated. Use Math.random() instead.' );\r\n\t\treturn Math.random();\r\n\r\n\t},\r\n\r\n\tnearestPowerOfTwo: function ( value ) {\r\n\r\n\t\tconsole.warn( 'THREE.Math: .nearestPowerOfTwo() has been renamed to .floorPowerOfTwo().' );\r\n\t\treturn MathUtils.floorPowerOfTwo( value );\r\n\r\n\t},\r\n\r\n\tnextPowerOfTwo: function ( value ) {\r\n\r\n\t\tconsole.warn( 'THREE.Math: .nextPowerOfTwo() has been renamed to .ceilPowerOfTwo().' );\r\n\t\treturn MathUtils.ceilPowerOfTwo( value );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Matrix3.prototype, {\r\n\r\n\tflattenToArrayOffset: function ( array, offset ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix3: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\r\n\t\treturn this.toArray( array, offset );\r\n\r\n\t},\r\n\tmultiplyVector3: function ( vector ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix3: .multiplyVector3() has been removed. Use vector.applyMatrix3( matrix ) instead.' );\r\n\t\treturn vector.applyMatrix3( this );\r\n\r\n\t},\r\n\tmultiplyVector3Array: function ( /* a */ ) {\r\n\r\n\t\tconsole.error( 'THREE.Matrix3: .multiplyVector3Array() has been removed.' );\r\n\r\n\t},\r\n\tapplyToBufferAttribute: function ( attribute ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix3: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix3( matrix ) instead.' );\r\n\t\treturn attribute.applyMatrix3( this );\r\n\r\n\t},\r\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\r\n\r\n\t\tconsole.error( 'THREE.Matrix3: .applyToVector3Array() has been removed.' );\r\n\r\n\t},\r\n\tgetInverse: function ( matrix ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix3: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\r\n\t\treturn this.copy( matrix ).invert();\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Matrix4.prototype, {\r\n\r\n\textractPosition: function ( m ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .extractPosition() has been renamed to .copyPosition().' );\r\n\t\treturn this.copyPosition( m );\r\n\r\n\t},\r\n\tflattenToArrayOffset: function ( array, offset ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .flattenToArrayOffset() has been deprecated. Use .toArray() instead.' );\r\n\t\treturn this.toArray( array, offset );\r\n\r\n\t},\r\n\tgetPosition: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .getPosition() has been removed. Use Vector3.setFromMatrixPosition( matrix ) instead.' );\r\n\t\treturn new Vector3().setFromMatrixColumn( this, 3 );\r\n\r\n\t},\r\n\tsetRotationFromQuaternion: function ( q ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .setRotationFromQuaternion() has been renamed to .makeRotationFromQuaternion().' );\r\n\t\treturn this.makeRotationFromQuaternion( q );\r\n\r\n\t},\r\n\tmultiplyToArray: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyToArray() has been removed.' );\r\n\r\n\t},\r\n\tmultiplyVector3: function ( vector ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector3() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\r\n\t\treturn vector.applyMatrix4( this );\r\n\r\n\t},\r\n\tmultiplyVector4: function ( vector ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .multiplyVector4() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\r\n\t\treturn vector.applyMatrix4( this );\r\n\r\n\t},\r\n\tmultiplyVector3Array: function ( /* a */ ) {\r\n\r\n\t\tconsole.error( 'THREE.Matrix4: .multiplyVector3Array() has been removed.' );\r\n\r\n\t},\r\n\trotateAxis: function ( v ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .rotateAxis() has been removed. Use Vector3.transformDirection( matrix ) instead.' );\r\n\t\tv.transformDirection( this );\r\n\r\n\t},\r\n\tcrossVector: function ( vector ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .crossVector() has been removed. Use vector.applyMatrix4( matrix ) instead.' );\r\n\t\treturn vector.applyMatrix4( this );\r\n\r\n\t},\r\n\ttranslate: function () {\r\n\r\n\t\tconsole.error( 'THREE.Matrix4: .translate() has been removed.' );\r\n\r\n\t},\r\n\trotateX: function () {\r\n\r\n\t\tconsole.error( 'THREE.Matrix4: .rotateX() has been removed.' );\r\n\r\n\t},\r\n\trotateY: function () {\r\n\r\n\t\tconsole.error( 'THREE.Matrix4: .rotateY() has been removed.' );\r\n\r\n\t},\r\n\trotateZ: function () {\r\n\r\n\t\tconsole.error( 'THREE.Matrix4: .rotateZ() has been removed.' );\r\n\r\n\t},\r\n\trotateByAxis: function () {\r\n\r\n\t\tconsole.error( 'THREE.Matrix4: .rotateByAxis() has been removed.' );\r\n\r\n\t},\r\n\tapplyToBufferAttribute: function ( attribute ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .applyToBufferAttribute() has been removed. Use attribute.applyMatrix4( matrix ) instead.' );\r\n\t\treturn attribute.applyMatrix4( this );\r\n\r\n\t},\r\n\tapplyToVector3Array: function ( /* array, offset, length */ ) {\r\n\r\n\t\tconsole.error( 'THREE.Matrix4: .applyToVector3Array() has been removed.' );\r\n\r\n\t},\r\n\tmakeFrustum: function ( left, right, bottom, top, near, far ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .makeFrustum() has been removed. Use .makePerspective( left, right, top, bottom, near, far ) instead.' );\r\n\t\treturn this.makePerspective( left, right, top, bottom, near, far );\r\n\r\n\t},\r\n\tgetInverse: function ( matrix ) {\r\n\r\n\t\tconsole.warn( 'THREE.Matrix4: .getInverse() has been removed. Use matrixInv.copy( matrix ).invert(); instead.' );\r\n\t\treturn this.copy( matrix ).invert();\r\n\r\n\t}\r\n\r\n} );\r\n\r\nPlane.prototype.isIntersectionLine = function ( line ) {\r\n\r\n\tconsole.warn( 'THREE.Plane: .isIntersectionLine() has been renamed to .intersectsLine().' );\r\n\treturn this.intersectsLine( line );\r\n\r\n};\r\n\r\nObject.assign( Quaternion.prototype, {\r\n\r\n\tmultiplyVector3: function ( vector ) {\r\n\r\n\t\tconsole.warn( 'THREE.Quaternion: .multiplyVector3() has been removed. Use is now vector.applyQuaternion( quaternion ) instead.' );\r\n\t\treturn vector.applyQuaternion( this );\r\n\r\n\t},\r\n\tinverse: function ( ) {\r\n\r\n\t\tconsole.warn( 'THREE.Quaternion: .inverse() has been renamed to invert().' );\r\n\t\treturn this.invert();\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Ray.prototype, {\r\n\r\n\tisIntersectionBox: function ( box ) {\r\n\r\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionBox() has been renamed to .intersectsBox().' );\r\n\t\treturn this.intersectsBox( box );\r\n\r\n\t},\r\n\tisIntersectionPlane: function ( plane ) {\r\n\r\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionPlane() has been renamed to .intersectsPlane().' );\r\n\t\treturn this.intersectsPlane( plane );\r\n\r\n\t},\r\n\tisIntersectionSphere: function ( sphere ) {\r\n\r\n\t\tconsole.warn( 'THREE.Ray: .isIntersectionSphere() has been renamed to .intersectsSphere().' );\r\n\t\treturn this.intersectsSphere( sphere );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Triangle.prototype, {\r\n\r\n\tarea: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Triangle: .area() has been renamed to .getArea().' );\r\n\t\treturn this.getArea();\r\n\r\n\t},\r\n\tbarycoordFromPoint: function ( point, target ) {\r\n\r\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\r\n\t\treturn this.getBarycoord( point, target );\r\n\r\n\t},\r\n\tmidpoint: function ( target ) {\r\n\r\n\t\tconsole.warn( 'THREE.Triangle: .midpoint() has been renamed to .getMidpoint().' );\r\n\t\treturn this.getMidpoint( target );\r\n\r\n\t},\r\n\tnormal: function ( target ) {\r\n\r\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\r\n\t\treturn this.getNormal( target );\r\n\r\n\t},\r\n\tplane: function ( target ) {\r\n\r\n\t\tconsole.warn( 'THREE.Triangle: .plane() has been renamed to .getPlane().' );\r\n\t\treturn this.getPlane( target );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Triangle, {\r\n\r\n\tbarycoordFromPoint: function ( point, a, b, c, target ) {\r\n\r\n\t\tconsole.warn( 'THREE.Triangle: .barycoordFromPoint() has been renamed to .getBarycoord().' );\r\n\t\treturn Triangle.getBarycoord( point, a, b, c, target );\r\n\r\n\t},\r\n\tnormal: function ( a, b, c, target ) {\r\n\r\n\t\tconsole.warn( 'THREE.Triangle: .normal() has been renamed to .getNormal().' );\r\n\t\treturn Triangle.getNormal( a, b, c, target );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Shape.prototype, {\r\n\r\n\textractAllPoints: function ( divisions ) {\r\n\r\n\t\tconsole.warn( 'THREE.Shape: .extractAllPoints() has been removed. Use .extractPoints() instead.' );\r\n\t\treturn this.extractPoints( divisions );\r\n\r\n\t},\r\n\textrude: function ( options ) {\r\n\r\n\t\tconsole.warn( 'THREE.Shape: .extrude() has been removed. Use ExtrudeGeometry() instead.' );\r\n\t\treturn new ExtrudeGeometry( this, options );\r\n\r\n\t},\r\n\tmakeGeometry: function ( options ) {\r\n\r\n\t\tconsole.warn( 'THREE.Shape: .makeGeometry() has been removed. Use ShapeGeometry() instead.' );\r\n\t\treturn new ShapeGeometry( this, options );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Vector2.prototype, {\r\n\r\n\tfromAttribute: function ( attribute, index, offset ) {\r\n\r\n\t\tconsole.warn( 'THREE.Vector2: .fromAttribute() has been renamed to .fromBufferAttribute().' );\r\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\r\n\r\n\t},\r\n\tdistanceToManhattan: function ( v ) {\r\n\r\n\t\tconsole.warn( 'THREE.Vector2: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\r\n\t\treturn this.manhattanDistanceTo( v );\r\n\r\n\t},\r\n\tlengthManhattan: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Vector2: .lengthManhattan() has been renamed to .manhattanLength().' );\r\n\t\treturn this.manhattanLength();\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Vector3.prototype, {\r\n\r\n\tsetEulerFromRotationMatrix: function () {\r\n\r\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromRotationMatrix() has been removed. Use Euler.setFromRotationMatrix() instead.' );\r\n\r\n\t},\r\n\tsetEulerFromQuaternion: function () {\r\n\r\n\t\tconsole.error( 'THREE.Vector3: .setEulerFromQuaternion() has been removed. Use Euler.setFromQuaternion() instead.' );\r\n\r\n\t},\r\n\tgetPositionFromMatrix: function ( m ) {\r\n\r\n\t\tconsole.warn( 'THREE.Vector3: .getPositionFromMatrix() has been renamed to .setFromMatrixPosition().' );\r\n\t\treturn this.setFromMatrixPosition( m );\r\n\r\n\t},\r\n\tgetScaleFromMatrix: function ( m ) {\r\n\r\n\t\tconsole.warn( 'THREE.Vector3: .getScaleFromMatrix() has been renamed to .setFromMatrixScale().' );\r\n\t\treturn this.setFromMatrixScale( m );\r\n\r\n\t},\r\n\tgetColumnFromMatrix: function ( index, matrix ) {\r\n\r\n\t\tconsole.warn( 'THREE.Vector3: .getColumnFromMatrix() has been renamed to .setFromMatrixColumn().' );\r\n\t\treturn this.setFromMatrixColumn( matrix, index );\r\n\r\n\t},\r\n\tapplyProjection: function ( m ) {\r\n\r\n\t\tconsole.warn( 'THREE.Vector3: .applyProjection() has been removed. Use .applyMatrix4( m ) instead.' );\r\n\t\treturn this.applyMatrix4( m );\r\n\r\n\t},\r\n\tfromAttribute: function ( attribute, index, offset ) {\r\n\r\n\t\tconsole.warn( 'THREE.Vector3: .fromAttribute() has been renamed to .fromBufferAttribute().' );\r\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\r\n\r\n\t},\r\n\tdistanceToManhattan: function ( v ) {\r\n\r\n\t\tconsole.warn( 'THREE.Vector3: .distanceToManhattan() has been renamed to .manhattanDistanceTo().' );\r\n\t\treturn this.manhattanDistanceTo( v );\r\n\r\n\t},\r\n\tlengthManhattan: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Vector3: .lengthManhattan() has been renamed to .manhattanLength().' );\r\n\t\treturn this.manhattanLength();\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Vector4.prototype, {\r\n\r\n\tfromAttribute: function ( attribute, index, offset ) {\r\n\r\n\t\tconsole.warn( 'THREE.Vector4: .fromAttribute() has been renamed to .fromBufferAttribute().' );\r\n\t\treturn this.fromBufferAttribute( attribute, index, offset );\r\n\r\n\t},\r\n\tlengthManhattan: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Vector4: .lengthManhattan() has been renamed to .manhattanLength().' );\r\n\t\treturn this.manhattanLength();\r\n\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nObject.assign( Geometry.prototype, {\r\n\r\n\tcomputeTangents: function () {\r\n\r\n\t\tconsole.error( 'THREE.Geometry: .computeTangents() has been removed.' );\r\n\r\n\t},\r\n\tcomputeLineDistances: function () {\r\n\r\n\t\tconsole.error( 'THREE.Geometry: .computeLineDistances() has been removed. Use THREE.Line.computeLineDistances() instead.' );\r\n\r\n\t},\r\n\tapplyMatrix: function ( matrix ) {\r\n\r\n\t\tconsole.warn( 'THREE.Geometry: .applyMatrix() has been renamed to .applyMatrix4().' );\r\n\t\treturn this.applyMatrix4( matrix );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Object3D.prototype, {\r\n\r\n\tgetChildByName: function ( name ) {\r\n\r\n\t\tconsole.warn( 'THREE.Object3D: .getChildByName() has been renamed to .getObjectByName().' );\r\n\t\treturn this.getObjectByName( name );\r\n\r\n\t},\r\n\trenderDepth: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Object3D: .renderDepth has been removed. Use .renderOrder, instead.' );\r\n\r\n\t},\r\n\ttranslate: function ( distance, axis ) {\r\n\r\n\t\tconsole.warn( 'THREE.Object3D: .translate() has been removed. Use .translateOnAxis( axis, distance ) instead.' );\r\n\t\treturn this.translateOnAxis( axis, distance );\r\n\r\n\t},\r\n\tgetWorldRotation: function () {\r\n\r\n\t\tconsole.error( 'THREE.Object3D: .getWorldRotation() has been removed. Use THREE.Object3D.getWorldQuaternion( target ) instead.' );\r\n\r\n\t},\r\n\tapplyMatrix: function ( matrix ) {\r\n\r\n\t\tconsole.warn( 'THREE.Object3D: .applyMatrix() has been renamed to .applyMatrix4().' );\r\n\t\treturn this.applyMatrix4( matrix );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( Object3D.prototype, {\r\n\r\n\teulerOrder: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\r\n\t\t\treturn this.rotation.order;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Object3D: .eulerOrder is now .rotation.order.' );\r\n\t\t\tthis.rotation.order = value;\r\n\r\n\t\t}\r\n\t},\r\n\tuseQuaternion: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\r\n\r\n\t\t},\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Object3D: .useQuaternion has been removed. The library now uses quaternions by default.' );\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( Mesh.prototype, {\r\n\r\n\tsetDrawMode: function () {\r\n\r\n\t\tconsole.error( 'THREE.Mesh: .setDrawMode() has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\r\n\r\n\t},\r\n\r\n} );\r\n\r\nObject.defineProperties( Mesh.prototype, {\r\n\r\n\tdrawMode: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode.' );\r\n\t\t\treturn TrianglesDrawMode;\r\n\r\n\t\t},\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.error( 'THREE.Mesh: .drawMode has been removed. The renderer now always assumes THREE.TrianglesDrawMode. Transform your geometry via BufferGeometryUtils.toTrianglesDrawMode() if necessary.' );\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( LOD.prototype, {\r\n\r\n\tobjects: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.LOD: .objects has been renamed to .levels.' );\r\n\t\t\treturn this.levels;\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperty( Skeleton.prototype, 'useVertexTexture', {\r\n\r\n\tget: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\r\n\r\n\t},\r\n\tset: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Skeleton: useVertexTexture has been removed.' );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nSkinnedMesh.prototype.initBones = function () {\r\n\r\n\tconsole.error( 'THREE.SkinnedMesh: initBones() has been removed.' );\r\n\r\n};\r\n\r\nObject.defineProperty( Curve.prototype, '__arcLengthDivisions', {\r\n\r\n\tget: function () {\r\n\r\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\r\n\t\treturn this.arcLengthDivisions;\r\n\r\n\t},\r\n\tset: function ( value ) {\r\n\r\n\t\tconsole.warn( 'THREE.Curve: .__arcLengthDivisions is now .arcLengthDivisions.' );\r\n\t\tthis.arcLengthDivisions = value;\r\n\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nPerspectiveCamera.prototype.setLens = function ( focalLength, filmGauge ) {\r\n\r\n\tconsole.warn( 'THREE.PerspectiveCamera.setLens is deprecated. ' +\r\n\t\t\t'Use .setFocalLength and .filmGauge for a photographic setup.' );\r\n\r\n\tif ( filmGauge !== undefined ) this.filmGauge = filmGauge;\r\n\tthis.setFocalLength( focalLength );\r\n\r\n};\r\n\r\n//\r\n\r\nObject.defineProperties( Light.prototype, {\r\n\tonlyShadow: {\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .onlyShadow has been removed.' );\r\n\r\n\t\t}\r\n\t},\r\n\tshadowCameraFov: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFov is now .shadow.camera.fov.' );\r\n\t\t\tthis.shadow.camera.fov = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowCameraLeft: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraLeft is now .shadow.camera.left.' );\r\n\t\t\tthis.shadow.camera.left = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowCameraRight: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraRight is now .shadow.camera.right.' );\r\n\t\t\tthis.shadow.camera.right = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowCameraTop: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraTop is now .shadow.camera.top.' );\r\n\t\t\tthis.shadow.camera.top = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowCameraBottom: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraBottom is now .shadow.camera.bottom.' );\r\n\t\t\tthis.shadow.camera.bottom = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowCameraNear: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraNear is now .shadow.camera.near.' );\r\n\t\t\tthis.shadow.camera.near = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowCameraFar: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraFar is now .shadow.camera.far.' );\r\n\t\t\tthis.shadow.camera.far = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowCameraVisible: {\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowCameraVisible has been removed. Use new THREE.CameraHelper( light.shadow.camera ) instead.' );\r\n\r\n\t\t}\r\n\t},\r\n\tshadowBias: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowBias is now .shadow.bias.' );\r\n\t\t\tthis.shadow.bias = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowDarkness: {\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowDarkness has been removed.' );\r\n\r\n\t\t}\r\n\t},\r\n\tshadowMapWidth: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapWidth is now .shadow.mapSize.width.' );\r\n\t\t\tthis.shadow.mapSize.width = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowMapHeight: {\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Light: .shadowMapHeight is now .shadow.mapSize.height.' );\r\n\t\t\tthis.shadow.mapSize.height = value;\r\n\r\n\t\t}\r\n\t}\r\n} );\r\n\r\n//\r\n\r\nObject.defineProperties( BufferAttribute.prototype, {\r\n\r\n\tlength: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .length has been deprecated. Use .count instead.' );\r\n\t\t\treturn this.array.length;\r\n\r\n\t\t}\r\n\t},\r\n\tdynamic: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\r\n\t\t\treturn this.usage === DynamicDrawUsage;\r\n\r\n\t\t},\r\n\t\tset: function ( /* value */ ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.BufferAttribute: .dynamic has been deprecated. Use .usage instead.' );\r\n\t\t\tthis.setUsage( DynamicDrawUsage );\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( BufferAttribute.prototype, {\r\n\tsetDynamic: function ( value ) {\r\n\r\n\t\tconsole.warn( 'THREE.BufferAttribute: .setDynamic() has been deprecated. Use .setUsage() instead.' );\r\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\r\n\t\treturn this;\r\n\r\n\t},\r\n\tcopyIndicesArray: function ( /* indices */ ) {\r\n\r\n\t\tconsole.error( 'THREE.BufferAttribute: .copyIndicesArray() has been removed.' );\r\n\r\n\t},\r\n\tsetArray: function ( /* array */ ) {\r\n\r\n\t\tconsole.error( 'THREE.BufferAttribute: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\r\n\r\n\t}\r\n} );\r\n\r\nObject.assign( BufferGeometry.prototype, {\r\n\r\n\taddIndex: function ( index ) {\r\n\r\n\t\tconsole.warn( 'THREE.BufferGeometry: .addIndex() has been renamed to .setIndex().' );\r\n\t\tthis.setIndex( index );\r\n\r\n\t},\r\n\taddAttribute: function ( name, attribute ) {\r\n\r\n\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() has been renamed to .setAttribute().' );\r\n\r\n\t\tif ( ! ( attribute && attribute.isBufferAttribute ) && ! ( attribute && attribute.isInterleavedBufferAttribute ) ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addAttribute() now expects ( name, attribute ).' );\r\n\r\n\t\t\treturn this.setAttribute( name, new BufferAttribute( arguments[ 1 ], arguments[ 2 ] ) );\r\n\r\n\t\t}\r\n\r\n\t\tif ( name === 'index' ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute.' );\r\n\t\t\tthis.setIndex( attribute );\r\n\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\treturn this.setAttribute( name, attribute );\r\n\r\n\t},\r\n\taddDrawCall: function ( start, count, indexOffset ) {\r\n\r\n\t\tif ( indexOffset !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() no longer supports indexOffset.' );\r\n\r\n\t\t}\r\n\r\n\t\tconsole.warn( 'THREE.BufferGeometry: .addDrawCall() is now .addGroup().' );\r\n\t\tthis.addGroup( start, count );\r\n\r\n\t},\r\n\tclearDrawCalls: function () {\r\n\r\n\t\tconsole.warn( 'THREE.BufferGeometry: .clearDrawCalls() is now .clearGroups().' );\r\n\t\tthis.clearGroups();\r\n\r\n\t},\r\n\tcomputeTangents: function () {\r\n\r\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeTangents() has been removed.' );\r\n\r\n\t},\r\n\tcomputeOffsets: function () {\r\n\r\n\t\tconsole.warn( 'THREE.BufferGeometry: .computeOffsets() has been removed.' );\r\n\r\n\t},\r\n\tremoveAttribute: function ( name ) {\r\n\r\n\t\tconsole.warn( 'THREE.BufferGeometry: .removeAttribute() has been renamed to .deleteAttribute().' );\r\n\r\n\t\treturn this.deleteAttribute( name );\r\n\r\n\t},\r\n\tapplyMatrix: function ( matrix ) {\r\n\r\n\t\tconsole.warn( 'THREE.BufferGeometry: .applyMatrix() has been renamed to .applyMatrix4().' );\r\n\t\treturn this.applyMatrix4( matrix );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( BufferGeometry.prototype, {\r\n\r\n\tdrawcalls: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.error( 'THREE.BufferGeometry: .drawcalls has been renamed to .groups.' );\r\n\t\t\treturn this.groups;\r\n\r\n\t\t}\r\n\t},\r\n\toffsets: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.BufferGeometry: .offsets has been renamed to .groups.' );\r\n\t\t\treturn this.groups;\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( InstancedBufferGeometry.prototype, {\r\n\r\n\tmaxInstancedCount: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\r\n\t\t\treturn this.instanceCount;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.InstancedBufferGeometry: .maxInstancedCount has been renamed to .instanceCount.' );\r\n\t\t\tthis.instanceCount = value;\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( Raycaster.prototype, {\r\n\r\n\tlinePrecision: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\r\n\t\t\treturn this.params.Line.threshold;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Raycaster: .linePrecision has been deprecated. Use .params.Line.threshold instead.' );\r\n\t\t\tthis.params.Line.threshold = value;\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( InterleavedBuffer.prototype, {\r\n\r\n\tdynamic: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\r\n\t\t\treturn this.usage === DynamicDrawUsage;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.InterleavedBuffer: .length has been deprecated. Use .usage instead.' );\r\n\t\t\tthis.setUsage( value );\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.assign( InterleavedBuffer.prototype, {\r\n\tsetDynamic: function ( value ) {\r\n\r\n\t\tconsole.warn( 'THREE.InterleavedBuffer: .setDynamic() has been deprecated. Use .setUsage() instead.' );\r\n\t\tthis.setUsage( value === true ? DynamicDrawUsage : StaticDrawUsage );\r\n\t\treturn this;\r\n\r\n\t},\r\n\tsetArray: function ( /* array */ ) {\r\n\r\n\t\tconsole.error( 'THREE.InterleavedBuffer: .setArray has been removed. Use BufferGeometry .setAttribute to replace/resize attribute buffers' );\r\n\r\n\t}\r\n} );\r\n\r\n//\r\n\r\nObject.assign( ExtrudeBufferGeometry.prototype, {\r\n\r\n\tgetArrays: function () {\r\n\r\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .getArrays() has been removed.' );\r\n\r\n\t},\r\n\r\n\taddShapeList: function () {\r\n\r\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShapeList() has been removed.' );\r\n\r\n\t},\r\n\r\n\taddShape: function () {\r\n\r\n\t\tconsole.error( 'THREE.ExtrudeBufferGeometry: .addShape() has been removed.' );\r\n\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nObject.assign( Scene.prototype, {\r\n\r\n\tdispose: function () {\r\n\r\n\t\tconsole.error( 'THREE.Scene: .dispose() has been removed.' );\r\n\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nObject.defineProperties( Uniform.prototype, {\r\n\r\n\tdynamic: {\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Uniform: .dynamic has been removed. Use object.onBeforeRender() instead.' );\r\n\r\n\t\t}\r\n\t},\r\n\tonUpdate: {\r\n\t\tvalue: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Uniform: .onUpdate() has been removed. Use object.onBeforeRender() instead.' );\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nObject.defineProperties( Material.prototype, {\r\n\r\n\twrapAround: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\r\n\r\n\t\t},\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Material: .wrapAround has been removed.' );\r\n\r\n\t\t}\r\n\t},\r\n\r\n\toverdraw: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\r\n\r\n\t\t},\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Material: .overdraw has been removed.' );\r\n\r\n\t\t}\r\n\t},\r\n\r\n\twrapRGB: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Material: .wrapRGB has been removed.' );\r\n\t\t\treturn new Color();\r\n\r\n\t\t}\r\n\t},\r\n\r\n\tshading: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.error( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .shading has been removed. Use the boolean .flatShading instead.' );\r\n\t\t\tthis.flatShading = ( value === FlatShading );\r\n\r\n\t\t}\r\n\t},\r\n\r\n\tstencilMask: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\r\n\t\t\treturn this.stencilFuncMask;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.' + this.type + ': .stencilMask has been removed. Use .stencilFuncMask instead.' );\r\n\t\t\tthis.stencilFuncMask = value;\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( MeshPhongMaterial.prototype, {\r\n\r\n\tmetal: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead.' );\r\n\t\t\treturn false;\r\n\r\n\t\t},\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.MeshPhongMaterial: .metal has been removed. Use THREE.MeshStandardMaterial instead' );\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( MeshPhysicalMaterial.prototype, {\r\n\r\n\ttransparency: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\r\n\t\t\treturn this.transmission;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.MeshPhysicalMaterial: .transparency has been renamed to .transmission.' );\r\n\t\t\tthis.transmission = value;\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( ShaderMaterial.prototype, {\r\n\r\n\tderivatives: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\r\n\t\t\treturn this.extensions.derivatives;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE. ShaderMaterial: .derivatives has been moved to .extensions.derivatives.' );\r\n\t\t\tthis.extensions.derivatives = value;\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nObject.assign( WebGLRenderer.prototype, {\r\n\r\n\tclearTarget: function ( renderTarget, color, depth, stencil ) {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .clearTarget() has been deprecated. Use .setRenderTarget() and .clear() instead.' );\r\n\t\tthis.setRenderTarget( renderTarget );\r\n\t\tthis.clear( color, depth, stencil );\r\n\r\n\t},\r\n\tanimate: function ( callback ) {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .animate() is now .setAnimationLoop().' );\r\n\t\tthis.setAnimationLoop( callback );\r\n\r\n\t},\r\n\tgetCurrentRenderTarget: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getCurrentRenderTarget() is now .getRenderTarget().' );\r\n\t\treturn this.getRenderTarget();\r\n\r\n\t},\r\n\tgetMaxAnisotropy: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getMaxAnisotropy() is now .capabilities.getMaxAnisotropy().' );\r\n\t\treturn this.capabilities.getMaxAnisotropy();\r\n\r\n\t},\r\n\tgetPrecision: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getPrecision() is now .capabilities.precision.' );\r\n\t\treturn this.capabilities.precision;\r\n\r\n\t},\r\n\tresetGLState: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .resetGLState() is now .state.reset().' );\r\n\t\treturn this.state.reset();\r\n\r\n\t},\r\n\tsupportsFloatTextures: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsFloatTextures() is now .extensions.get( \\'OES_texture_float\\' ).' );\r\n\t\treturn this.extensions.get( 'OES_texture_float' );\r\n\r\n\t},\r\n\tsupportsHalfFloatTextures: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsHalfFloatTextures() is now .extensions.get( \\'OES_texture_half_float\\' ).' );\r\n\t\treturn this.extensions.get( 'OES_texture_half_float' );\r\n\r\n\t},\r\n\tsupportsStandardDerivatives: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsStandardDerivatives() is now .extensions.get( \\'OES_standard_derivatives\\' ).' );\r\n\t\treturn this.extensions.get( 'OES_standard_derivatives' );\r\n\r\n\t},\r\n\tsupportsCompressedTextureS3TC: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTextureS3TC() is now .extensions.get( \\'WEBGL_compressed_texture_s3tc\\' ).' );\r\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_s3tc' );\r\n\r\n\t},\r\n\tsupportsCompressedTexturePVRTC: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsCompressedTexturePVRTC() is now .extensions.get( \\'WEBGL_compressed_texture_pvrtc\\' ).' );\r\n\t\treturn this.extensions.get( 'WEBGL_compressed_texture_pvrtc' );\r\n\r\n\t},\r\n\tsupportsBlendMinMax: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsBlendMinMax() is now .extensions.get( \\'EXT_blend_minmax\\' ).' );\r\n\t\treturn this.extensions.get( 'EXT_blend_minmax' );\r\n\r\n\t},\r\n\tsupportsVertexTextures: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsVertexTextures() is now .capabilities.vertexTextures.' );\r\n\t\treturn this.capabilities.vertexTextures;\r\n\r\n\t},\r\n\tsupportsInstancedArrays: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .supportsInstancedArrays() is now .extensions.get( \\'ANGLE_instanced_arrays\\' ).' );\r\n\t\treturn this.extensions.get( 'ANGLE_instanced_arrays' );\r\n\r\n\t},\r\n\tenableScissorTest: function ( boolean ) {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .enableScissorTest() is now .setScissorTest().' );\r\n\t\tthis.setScissorTest( boolean );\r\n\r\n\t},\r\n\tinitMaterial: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .initMaterial() has been removed.' );\r\n\r\n\t},\r\n\taddPrePlugin: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPrePlugin() has been removed.' );\r\n\r\n\t},\r\n\taddPostPlugin: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .addPostPlugin() has been removed.' );\r\n\r\n\t},\r\n\tupdateShadowMap: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .updateShadowMap() has been removed.' );\r\n\r\n\t},\r\n\tsetFaceCulling: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setFaceCulling() has been removed.' );\r\n\r\n\t},\r\n\tallocTextureUnit: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .allocTextureUnit() has been removed.' );\r\n\r\n\t},\r\n\tsetTexture: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture() has been removed.' );\r\n\r\n\t},\r\n\tsetTexture2D: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTexture2D() has been removed.' );\r\n\r\n\t},\r\n\tsetTextureCube: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .setTextureCube() has been removed.' );\r\n\r\n\t},\r\n\tgetActiveMipMapLevel: function () {\r\n\r\n\t\tconsole.warn( 'THREE.WebGLRenderer: .getActiveMipMapLevel() is now .getActiveMipmapLevel().' );\r\n\t\treturn this.getActiveMipmapLevel();\r\n\r\n\t}\r\n\r\n} );\r\n\r\nObject.defineProperties( WebGLRenderer.prototype, {\r\n\r\n\tshadowMapEnabled: {\r\n\t\tget: function () {\r\n\r\n\t\t\treturn this.shadowMap.enabled;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapEnabled is now .shadowMap.enabled.' );\r\n\t\t\tthis.shadowMap.enabled = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowMapType: {\r\n\t\tget: function () {\r\n\r\n\t\t\treturn this.shadowMap.type;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapType is now .shadowMap.type.' );\r\n\t\t\tthis.shadowMap.type = value;\r\n\r\n\t\t}\r\n\t},\r\n\tshadowMapCullFace: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\r\n\t\t\treturn undefined;\r\n\r\n\t\t},\r\n\t\tset: function ( /* value */ ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMapCullFace has been removed. Set Material.shadowSide instead.' );\r\n\r\n\t\t}\r\n\t},\r\n\tcontext: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .context has been removed. Use .getContext() instead.' );\r\n\t\t\treturn this.getContext();\r\n\r\n\t\t}\r\n\t},\r\n\tvr: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .vr has been renamed to .xr' );\r\n\t\t\treturn this.xr;\r\n\r\n\t\t}\r\n\t},\r\n\tgammaInput: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\r\n\t\t\treturn false;\r\n\r\n\t\t},\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaInput has been removed. Set the encoding for textures via Texture.encoding instead.' );\r\n\r\n\t\t}\r\n\t},\r\n\tgammaOutput: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\r\n\t\t\treturn false;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .gammaOutput has been removed. Set WebGLRenderer.outputEncoding instead.' );\r\n\t\t\tthis.outputEncoding = ( value === true ) ? sRGBEncoding : LinearEncoding;\r\n\r\n\t\t}\r\n\t},\r\n\ttoneMappingWhitePoint: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\r\n\t\t\treturn 1.0;\r\n\r\n\t\t},\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .toneMappingWhitePoint has been removed.' );\r\n\r\n\t\t}\r\n\t},\r\n\r\n} );\r\n\r\nObject.defineProperties( WebGLShadowMap.prototype, {\r\n\r\n\tcullFace: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\r\n\t\t\treturn undefined;\r\n\r\n\t\t},\r\n\t\tset: function ( /* cullFace */ ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.cullFace has been removed. Set Material.shadowSide instead.' );\r\n\r\n\t\t}\r\n\t},\r\n\trenderReverseSided: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\r\n\t\t\treturn undefined;\r\n\r\n\t\t},\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderReverseSided has been removed. Set Material.shadowSide instead.' );\r\n\r\n\t\t}\r\n\t},\r\n\trenderSingleSided: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\r\n\t\t\treturn undefined;\r\n\r\n\t\t},\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderer: .shadowMap.renderSingleSided has been removed. Set Material.shadowSide instead.' );\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nfunction WebGLRenderTargetCube( width, height, options ) {\r\n\r\n\tconsole.warn( 'THREE.WebGLRenderTargetCube( width, height, options ) is now WebGLCubeRenderTarget( size, options ).' );\r\n\treturn new WebGLCubeRenderTarget( width, options );\r\n\r\n}\r\n\r\n//\r\n\r\nObject.defineProperties( WebGLRenderTarget.prototype, {\r\n\r\n\twrapS: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\r\n\t\t\treturn this.texture.wrapS;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapS is now .texture.wrapS.' );\r\n\t\t\tthis.texture.wrapS = value;\r\n\r\n\t\t}\r\n\t},\r\n\twrapT: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\r\n\t\t\treturn this.texture.wrapT;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .wrapT is now .texture.wrapT.' );\r\n\t\t\tthis.texture.wrapT = value;\r\n\r\n\t\t}\r\n\t},\r\n\tmagFilter: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\r\n\t\t\treturn this.texture.magFilter;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .magFilter is now .texture.magFilter.' );\r\n\t\t\tthis.texture.magFilter = value;\r\n\r\n\t\t}\r\n\t},\r\n\tminFilter: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\r\n\t\t\treturn this.texture.minFilter;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .minFilter is now .texture.minFilter.' );\r\n\t\t\tthis.texture.minFilter = value;\r\n\r\n\t\t}\r\n\t},\r\n\tanisotropy: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\r\n\t\t\treturn this.texture.anisotropy;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .anisotropy is now .texture.anisotropy.' );\r\n\t\t\tthis.texture.anisotropy = value;\r\n\r\n\t\t}\r\n\t},\r\n\toffset: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\r\n\t\t\treturn this.texture.offset;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .offset is now .texture.offset.' );\r\n\t\t\tthis.texture.offset = value;\r\n\r\n\t\t}\r\n\t},\r\n\trepeat: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\r\n\t\t\treturn this.texture.repeat;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .repeat is now .texture.repeat.' );\r\n\t\t\tthis.texture.repeat = value;\r\n\r\n\t\t}\r\n\t},\r\n\tformat: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\r\n\t\t\treturn this.texture.format;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .format is now .texture.format.' );\r\n\t\t\tthis.texture.format = value;\r\n\r\n\t\t}\r\n\t},\r\n\ttype: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\r\n\t\t\treturn this.texture.type;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .type is now .texture.type.' );\r\n\t\t\tthis.texture.type = value;\r\n\r\n\t\t}\r\n\t},\r\n\tgenerateMipmaps: {\r\n\t\tget: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\r\n\t\t\treturn this.texture.generateMipmaps;\r\n\r\n\t\t},\r\n\t\tset: function ( value ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.WebGLRenderTarget: .generateMipmaps is now .texture.generateMipmaps.' );\r\n\t\t\tthis.texture.generateMipmaps = value;\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\n//\r\n\r\nObject.defineProperties( Audio.prototype, {\r\n\r\n\tload: {\r\n\t\tvalue: function ( file ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.Audio: .load has been deprecated. Use THREE.AudioLoader instead.' );\r\n\t\t\tconst scope = this;\r\n\t\t\tconst audioLoader = new AudioLoader();\r\n\t\t\taudioLoader.load( file, function ( buffer ) {\r\n\r\n\t\t\t\tscope.setBuffer( buffer );\r\n\r\n\t\t\t} );\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\t},\r\n\tstartTime: {\r\n\t\tset: function () {\r\n\r\n\t\t\tconsole.warn( 'THREE.Audio: .startTime is now .play( delay ).' );\r\n\r\n\t\t}\r\n\t}\r\n\r\n} );\r\n\r\nAudioAnalyser.prototype.getData = function () {\r\n\r\n\tconsole.warn( 'THREE.AudioAnalyser: .getData() is now .getFrequencyData().' );\r\n\treturn this.getFrequencyData();\r\n\r\n};\r\n\r\n//\r\n\r\nCubeCamera.prototype.updateCubeMap = function ( renderer, scene ) {\r\n\r\n\tconsole.warn( 'THREE.CubeCamera: .updateCubeMap() is now .update().' );\r\n\treturn this.update( renderer, scene );\r\n\r\n};\r\n\r\nCubeCamera.prototype.clear = function ( renderer, color, depth, stencil ) {\r\n\r\n\tconsole.warn( 'THREE.CubeCamera: .clear() is now .renderTarget.clear().' );\r\n\treturn this.renderTarget.clear( renderer, color, depth, stencil );\r\n\r\n};\r\n\r\n//\r\n\r\nconst GeometryUtils = {\r\n\r\n\tmerge: function ( geometry1, geometry2, materialIndexOffset ) {\r\n\r\n\t\tconsole.warn( 'THREE.GeometryUtils: .merge() has been moved to Geometry. Use geometry.merge( geometry2, matrix, materialIndexOffset ) instead.' );\r\n\t\tlet matrix;\r\n\r\n\t\tif ( geometry2.isMesh ) {\r\n\r\n\t\t\tgeometry2.matrixAutoUpdate && geometry2.updateMatrix();\r\n\r\n\t\t\tmatrix = geometry2.matrix;\r\n\t\t\tgeometry2 = geometry2.geometry;\r\n\r\n\t\t}\r\n\r\n\t\tgeometry1.merge( geometry2, matrix, materialIndexOffset );\r\n\r\n\t},\r\n\r\n\tcenter: function ( geometry ) {\r\n\r\n\t\tconsole.warn( 'THREE.GeometryUtils: .center() has been moved to Geometry. Use geometry.center() instead.' );\r\n\t\treturn geometry.center();\r\n\r\n\t}\r\n\r\n};\r\n\r\nImageUtils.crossOrigin = undefined;\r\n\r\nImageUtils.loadTexture = function ( url, mapping, onLoad, onError ) {\r\n\r\n\tconsole.warn( 'THREE.ImageUtils.loadTexture has been deprecated. Use THREE.TextureLoader() instead.' );\r\n\r\n\tconst loader = new TextureLoader();\r\n\tloader.setCrossOrigin( this.crossOrigin );\r\n\r\n\tconst texture = loader.load( url, onLoad, undefined, onError );\r\n\r\n\tif ( mapping ) texture.mapping = mapping;\r\n\r\n\treturn texture;\r\n\r\n};\r\n\r\nImageUtils.loadTextureCube = function ( urls, mapping, onLoad, onError ) {\r\n\r\n\tconsole.warn( 'THREE.ImageUtils.loadTextureCube has been deprecated. Use THREE.CubeTextureLoader() instead.' );\r\n\r\n\tconst loader = new CubeTextureLoader();\r\n\tloader.setCrossOrigin( this.crossOrigin );\r\n\r\n\tconst texture = loader.load( urls, onLoad, undefined, onError );\r\n\r\n\tif ( mapping ) texture.mapping = mapping;\r\n\r\n\treturn texture;\r\n\r\n};\r\n\r\nImageUtils.loadCompressedTexture = function () {\r\n\r\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTexture has been removed. Use THREE.DDSLoader instead.' );\r\n\r\n};\r\n\r\nImageUtils.loadCompressedTextureCube = function () {\r\n\r\n\tconsole.error( 'THREE.ImageUtils.loadCompressedTextureCube has been removed. Use THREE.DDSLoader instead.' );\r\n\r\n};\r\n\r\n//\r\n\r\nfunction CanvasRenderer() {\r\n\r\n\tconsole.error( 'THREE.CanvasRenderer has been removed' );\r\n\r\n}\r\n\r\n//\r\n\r\nfunction JSONLoader() {\r\n\r\n\tconsole.error( 'THREE.JSONLoader has been removed.' );\r\n\r\n}\r\n\r\n//\r\n\r\nconst SceneUtils = {\r\n\r\n\tcreateMultiMaterialObject: function ( /* geometry, materials */ ) {\r\n\r\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\r\n\r\n\t},\r\n\r\n\tdetach: function ( /* child, parent, scene */ ) {\r\n\r\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\r\n\r\n\t},\r\n\r\n\tattach: function ( /* child, scene, parent */ ) {\r\n\r\n\t\tconsole.error( 'THREE.SceneUtils has been moved to /examples/jsm/utils/SceneUtils.js' );\r\n\r\n\t}\r\n\r\n};\r\n\r\n//\r\n\r\nfunction LensFlare() {\r\n\r\n\tconsole.error( 'THREE.LensFlare has been moved to /examples/jsm/objects/Lensflare.js' );\r\n\r\n}\r\n\r\nif ( typeof __THREE_DEVTOOLS__ !== 'undefined' ) {\r\n\r\n\t/* eslint-disable no-undef */\r\n\t__THREE_DEVTOOLS__.dispatchEvent( new CustomEvent( 'register', { detail: {\r\n\t\trevision: REVISION,\r\n\t} } ) );\r\n\t/* eslint-enable no-undef */\r\n\r\n}\r\n\r\nexport { ACESFilmicToneMapping, AddEquation, AddOperation, AdditiveAnimationBlendMode, AdditiveBlending, AlphaFormat, AlwaysDepth, AlwaysStencilFunc, AmbientLight, AmbientLightProbe, AnimationClip, AnimationLoader, AnimationMixer, AnimationObjectGroup, AnimationUtils, ArcCurve, ArrayCamera, ArrowHelper, Audio, AudioAnalyser, AudioContext, AudioListener, AudioLoader, AxesHelper, AxisHelper, BackSide, BasicDepthPacking, BasicShadowMap, BinaryTextureLoader, Bone, BooleanKeyframeTrack, BoundingBoxHelper, Box2, Box3, Box3Helper, BoxBufferGeometry, BoxGeometry, BoxHelper, BufferAttribute, BufferGeometry, BufferGeometryLoader, ByteType, Cache, Camera, CameraHelper, CanvasRenderer, CanvasTexture, CatmullRomCurve3, CineonToneMapping, CircleBufferGeometry, CircleGeometry, ClampToEdgeWrapping, Clock, ClosedSplineCurve3, Color, ColorKeyframeTrack, CompressedTexture, CompressedTextureLoader, ConeBufferGeometry, ConeGeometry, CubeCamera, BoxGeometry as CubeGeometry, CubeReflectionMapping, CubeRefractionMapping, CubeTexture, CubeTextureLoader, CubeUVReflectionMapping, CubeUVRefractionMapping, CubicBezierCurve, CubicBezierCurve3, CubicInterpolant, CullFaceBack, CullFaceFront, CullFaceFrontBack, CullFaceNone, Curve, CurvePath, CustomBlending, CustomToneMapping, CylinderBufferGeometry, CylinderGeometry, Cylindrical, DataTexture, DataTexture2DArray, DataTexture3D, DataTextureLoader, DataUtils, DecrementStencilOp, DecrementWrapStencilOp, DefaultLoadingManager, DepthFormat, DepthStencilFormat, DepthTexture, DirectionalLight, DirectionalLightHelper, DiscreteInterpolant, DodecahedronBufferGeometry, DodecahedronGeometry, DoubleSide, DstAlphaFactor, DstColorFactor, DynamicBufferAttribute, DynamicCopyUsage, DynamicDrawUsage, DynamicReadUsage, EdgesGeometry, EdgesHelper, EllipseCurve, EqualDepth, EqualStencilFunc, EquirectangularReflectionMapping, EquirectangularRefractionMapping, Euler, EventDispatcher, ExtrudeBufferGeometry, ExtrudeGeometry, Face3, Face4, FaceColors, FileLoader, FlatShading, Float16BufferAttribute, Float32Attribute, Float32BufferAttribute, Float64Attribute, Float64BufferAttribute, FloatType, Fog, FogExp2, Font, FontLoader, FrontSide, Frustum, GLBufferAttribute, GLSL1, GLSL3, GammaEncoding, Geometry, GeometryUtils, GreaterDepth, GreaterEqualDepth, GreaterEqualStencilFunc, GreaterStencilFunc, GridHelper, Group, HalfFloatType, HemisphereLight, HemisphereLightHelper, HemisphereLightProbe, IcosahedronBufferGeometry, IcosahedronGeometry, ImageBitmapLoader, ImageLoader, ImageUtils, ImmediateRenderObject, IncrementStencilOp, IncrementWrapStencilOp, InstancedBufferAttribute, InstancedBufferGeometry, InstancedInterleavedBuffer, InstancedMesh, Int16Attribute, Int16BufferAttribute, Int32Attribute, Int32BufferAttribute, Int8Attribute, Int8BufferAttribute, IntType, InterleavedBuffer, InterleavedBufferAttribute, Interpolant, InterpolateDiscrete, InterpolateLinear, InterpolateSmooth, InvertStencilOp, JSONLoader, KeepStencilOp, KeyframeTrack, LOD, LatheBufferGeometry, LatheGeometry, Layers, LensFlare, LessDepth, LessEqualDepth, LessEqualStencilFunc, LessStencilFunc, Light, LightProbe, Line, Line3, LineBasicMaterial, LineCurve, LineCurve3, LineDashedMaterial, LineLoop, LinePieces, LineSegments, LineStrip, LinearEncoding, LinearFilter, LinearInterpolant, LinearMipMapLinearFilter, LinearMipMapNearestFilter, LinearMipmapLinearFilter, LinearMipmapNearestFilter, LinearToneMapping, Loader, LoaderUtils, LoadingManager, LogLuvEncoding, LoopOnce, LoopPingPong, LoopRepeat, LuminanceAlphaFormat, LuminanceFormat, MOUSE, Material, MaterialLoader, MathUtils as Math, MathUtils, Matrix3, Matrix4, MaxEquation, Mesh, MeshBasicMaterial, MeshDepthMaterial, MeshDistanceMaterial, MeshFaceMaterial, MeshLambertMaterial, MeshMatcapMaterial, MeshNormalMaterial, MeshPhongMaterial, MeshPhysicalMaterial, MeshStandardMaterial, MeshToonMaterial, MinEquation, MirroredRepeatWrapping, MixOperation, MultiMaterial, MultiplyBlending, MultiplyOperation, NearestFilter, NearestMipMapLinearFilter, NearestMipMapNearestFilter, NearestMipmapLinearFilter, NearestMipmapNearestFilter, NeverDepth, NeverStencilFunc, NoBlending, NoColors, NoToneMapping, NormalAnimationBlendMode, NormalBlending, NotEqualDepth, NotEqualStencilFunc, NumberKeyframeTrack, Object3D, ObjectLoader, ObjectSpaceNormalMap, OctahedronBufferGeometry, OctahedronGeometry, OneFactor, OneMinusDstAlphaFactor, OneMinusDstColorFactor, OneMinusSrcAlphaFactor, OneMinusSrcColorFactor, OrthographicCamera, PCFShadowMap, PCFSoftShadowMap, PMREMGenerator, ParametricBufferGeometry, ParametricGeometry, Particle, ParticleBasicMaterial, ParticleSystem, ParticleSystemMaterial, Path, PerspectiveCamera, Plane, PlaneBufferGeometry, PlaneGeometry, PlaneHelper, PointCloud, PointCloudMaterial, PointLight, PointLightHelper, Points, PointsMaterial, PolarGridHelper, PolyhedronBufferGeometry, PolyhedronGeometry, PositionalAudio, PropertyBinding, PropertyMixer, QuadraticBezierCurve, QuadraticBezierCurve3, Quaternion, QuaternionKeyframeTrack, QuaternionLinearInterpolant, REVISION, RGBADepthPacking, RGBAFormat, RGBAIntegerFormat, RGBA_ASTC_10x10_Format, RGBA_ASTC_10x5_Format, RGBA_ASTC_10x6_Format, RGBA_ASTC_10x8_Format, RGBA_ASTC_12x10_Format, RGBA_ASTC_12x12_Format, RGBA_ASTC_4x4_Format, RGBA_ASTC_5x4_Format, RGBA_ASTC_5x5_Format, RGBA_ASTC_6x5_Format, RGBA_ASTC_6x6_Format, RGBA_ASTC_8x5_Format, RGBA_ASTC_8x6_Format, RGBA_ASTC_8x8_Format, RGBA_BPTC_Format, RGBA_ETC2_EAC_Format, RGBA_PVRTC_2BPPV1_Format, RGBA_PVRTC_4BPPV1_Format, RGBA_S3TC_DXT1_Format, RGBA_S3TC_DXT3_Format, RGBA_S3TC_DXT5_Format, RGBDEncoding, RGBEEncoding, RGBEFormat, RGBFormat, RGBIntegerFormat, RGBM16Encoding, RGBM7Encoding, RGB_ETC1_Format, RGB_ETC2_Format, RGB_PVRTC_2BPPV1_Format, RGB_PVRTC_4BPPV1_Format, RGB_S3TC_DXT1_Format, RGFormat, RGIntegerFormat, RawShaderMaterial, Ray, Raycaster, RectAreaLight, RedFormat, RedIntegerFormat, ReinhardToneMapping, RepeatWrapping, ReplaceStencilOp, ReverseSubtractEquation, RingBufferGeometry, RingGeometry, SRGB8_ALPHA8_ASTC_10x10_Format, SRGB8_ALPHA8_ASTC_10x5_Format, SRGB8_ALPHA8_ASTC_10x6_Format, SRGB8_ALPHA8_ASTC_10x8_Format, SRGB8_ALPHA8_ASTC_12x10_Format, SRGB8_ALPHA8_ASTC_12x12_Format, SRGB8_ALPHA8_ASTC_4x4_Format, SRGB8_ALPHA8_ASTC_5x4_Format, SRGB8_ALPHA8_ASTC_5x5_Format, SRGB8_ALPHA8_ASTC_6x5_Format, SRGB8_ALPHA8_ASTC_6x6_Format, SRGB8_ALPHA8_ASTC_8x5_Format, SRGB8_ALPHA8_ASTC_8x6_Format, SRGB8_ALPHA8_ASTC_8x8_Format, Scene, SceneUtils, ShaderChunk, ShaderLib, ShaderMaterial, ShadowMaterial, Shape, ShapeBufferGeometry, ShapeGeometry, ShapePath, ShapeUtils, ShortType, Skeleton, SkeletonHelper, SkinnedMesh, SmoothShading, Sphere, SphereBufferGeometry, SphereGeometry, Spherical, SphericalHarmonics3, Spline, SplineCurve, SplineCurve3, SpotLight, SpotLightHelper, Sprite, SpriteMaterial, SrcAlphaFactor, SrcAlphaSaturateFactor, SrcColorFactor, StaticCopyUsage, StaticDrawUsage, StaticReadUsage, StereoCamera, StreamCopyUsage, StreamDrawUsage, StreamReadUsage, StringKeyframeTrack, SubtractEquation, SubtractiveBlending, TOUCH, TangentSpaceNormalMap, TetrahedronBufferGeometry, TetrahedronGeometry, TextBufferGeometry, TextGeometry, Texture, TextureLoader, TorusBufferGeometry, TorusGeometry, TorusKnotBufferGeometry, TorusKnotGeometry, Triangle, TriangleFanDrawMode, TriangleStripDrawMode, TrianglesDrawMode, TubeBufferGeometry, TubeGeometry, UVMapping, Uint16Attribute, Uint16BufferAttribute, Uint32Attribute, Uint32BufferAttribute, Uint8Attribute, Uint8BufferAttribute, Uint8ClampedAttribute, Uint8ClampedBufferAttribute, Uniform, UniformsLib, UniformsUtils, UnsignedByteType, UnsignedInt248Type, UnsignedIntType, UnsignedShort4444Type, UnsignedShort5551Type, UnsignedShort565Type, UnsignedShortType, VSMShadowMap, Vector2, Vector3, Vector4, VectorKeyframeTrack, Vertex, VertexColors, VideoTexture, WebGL1Renderer, WebGLCubeRenderTarget, WebGLMultisampleRenderTarget, WebGLRenderTarget, WebGLRenderTargetCube, WebGLRenderer, WebGLUtils, WireframeGeometry, WireframeHelper, WrapAroundEnding, XHRLoader, ZeroCurvatureEnding, ZeroFactor, ZeroSlopeEnding, ZeroStencilOp, sRGBEncoding };\r\n","\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\n\r\nexport class PathAnimation{\r\n\t\r\n\tconstructor(path, start, end, speed, callback){\r\n\t\t\tthis.path = path;\r\n\t\t\tthis.length = this.path.spline.getLength();\r\n\t\t\tthis.speed = speed;\r\n\t\t\tthis.callback = callback;\r\n\t\t\tthis.tween = null;\r\n\t\t\tthis.startPoint = Math.max(start, 0);\r\n\t\t\tthis.endPoint = Math.min(end, this.length);\r\n\t\t\tthis.t = 0.0;\r\n\t}\r\n\r\n\tstart(resume = false){\r\n\t\tif(this.tween){\r\n\t\t\tthis.tween.stop();\r\n\t\t\tthis.tween = null;\r\n\t\t}\r\n\t\r\n\t\tlet tStart;\r\n\t\tif(resume){\r\n\t\t\ttStart = this.t;\r\n\t\t}else{\r\n\t\t\ttStart = this.startPoint / this.length;\r\n\t\t}\r\n\t\tlet tEnd = this.endPoint / this.length;\r\n\t\tlet animationDuration = (tEnd - tStart) * this.length * 1000 / this.speed;\r\n\t\r\n\t\tlet progress = {t: tStart};\r\n\t\tthis.tween = new TWEEN.Tween(progress).to({t: tEnd}, animationDuration);\r\n\t\tthis.tween.easing(TWEEN.Easing.Linear.None);\r\n\t\tthis.tween.onUpdate((e) => {\r\n\t\t\tthis.t = progress.t;\r\n\t\t\tthis.callback(progress.t);\r\n\t\t});\r\n\t\tthis.tween.onComplete(() => {\r\n\t\t\tif(this.repeat){\r\n\t\t\t\tthis.start();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tsetTimeout(() => {\r\n\t\t\tthis.tween.start();\r\n\t\t}, 0);\r\n\t}\r\n\r\n\tstop(){\r\n\t\tif(!this.tween){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.tween.stop();\r\n\t\tthis.tween = null;\r\n\t\tthis.t = 0;\r\n\t}\r\n\r\n\tpause(){\r\n\t\tif(!this.tween){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tthis.tween.stop();\r\n\t\tTWEEN.remove(this.tween);\r\n\t\tthis.tween = null;\r\n\t}\r\n\r\n\tresume(){\r\n\t\tthis.start(true);\r\n\t}\r\n\r\n\tgetPoint(t){\r\n\t\treturn this.path.spline.getPoint(t);\r\n\t}\r\n\r\n}\r\n\r\nexport class AnimationPath{\r\n\tconstructor (points = []) {\r\n\t\tthis.points = points;\r\n\t\tthis.spline = new THREE.CatmullRomCurve3(points);\r\n\t\t//this.spline.reparametrizeByArcLength(1 / this.spline.getLength().total);\r\n\t}\r\n\r\n\tget (t) {\r\n\t\treturn this.spline.getPoint(t);\r\n\t}\r\n\r\n\tgetLength () {\r\n\t\treturn this.spline.getLength();\r\n\t}\r\n\r\n\tanimate (start, end, speed, callback) {\r\n\t\tlet animation = new PathAnimation(this, start, end, speed, callback);\r\n\t\tanimation.start();\r\n\r\n\t\treturn animation;\r\n\t}\r\n\r\n\tpause () {\r\n\t\tif (this.tween) {\r\n\t\t\tthis.tween.stop();\r\n\t\t}\r\n\t}\r\n\r\n\tresume () {\r\n\t\tif (this.tween) {\r\n\t\t\tthis.tween.start();\r\n\t\t}\r\n\t}\r\n\r\n\tgetGeometry () {\r\n\t\tlet geometry = new THREE.Geometry();\r\n\r\n\t\tlet samples = 500;\r\n\t\tlet i = 0;\r\n\t\tfor (let u = 0; u <= 1; u += 1 / samples) {\r\n\t\t\tlet position = this.spline.getPoint(u);\r\n\t\t\tgeometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z);\r\n\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\tif(this.closed){\r\n\t\t\tlet position = this.spline.getPoint(0);\r\n\t\t\tgeometry.vertices[i] = new THREE.Vector3(position.x, position.y, position.z);\r\n\t\t}\r\n\r\n\t\treturn geometry;\r\n\t}\r\n\r\n\tget closed(){\r\n\t\treturn this.spline.closed;\r\n\t}\r\n\r\n\tset closed(value){\r\n\t\tthis.spline.closed = value;\r\n\t}\r\n\r\n}","\r\nconst XHRFactory = {\r\n\tconfig: {\r\n\t\twithCredentials: false,\r\n\t\tcustomHeaders: [\r\n\t\t\t{ header: null, value: null }\r\n\t\t]\r\n\t},\r\n\r\n\tcreateXMLHttpRequest: function () {\r\n\t\tlet xhr = new XMLHttpRequest();\r\n\r\n\t\tif (this.config.customHeaders &&\r\n\t\t\tArray.isArray(this.config.customHeaders) &&\r\n\t\t\tthis.config.customHeaders.length > 0) {\r\n\t\t\tlet baseOpen = xhr.open;\r\n\t\t\tlet customHeaders = this.config.customHeaders;\r\n\t\t\txhr.open = function () {\r\n\t\t\t\tbaseOpen.apply(this, [].slice.call(arguments));\r\n\t\t\t\tcustomHeaders.forEach(function (customHeader) {\r\n\t\t\t\t\tif (!!customHeader.header && !!customHeader.value) {\r\n\t\t\t\t\t\txhr.setRequestHeader(customHeader.header, customHeader.value);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t};\r\n\t\t}\r\n\r\n\t\treturn xhr;\r\n\t}\r\n};\r\n\r\nexport {XHRFactory};","\r\n\r\n// /**\r\n// * adapted from http://stemkoski.github.io/Three.js/Sprite-Text-Labels.html\r\n// */\r\n\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\n\r\nexport class TextSprite extends THREE.Object3D{\r\n\t\r\n\tconstructor(text){\r\n\t\tsuper();\r\n\r\n\t\tlet texture = new THREE.Texture();\r\n\t\ttexture.minFilter = THREE.LinearFilter;\r\n\t\ttexture.magFilter = THREE.LinearFilter;\r\n\t\tlet spriteMaterial = new THREE.SpriteMaterial({\r\n\t\t\tmap: texture,\r\n\t\t\tdepthTest: false,\r\n\t\t\tdepthWrite: false});\r\n\r\n\t\tthis.texture = texture;\r\n\r\n\t\tthis.material = spriteMaterial;\r\n\t\t//this.material = getRawMaterial(texture);\r\n\t\tthis.sprite = new THREE.Sprite(this.material);\r\n\t\tthis.add(this.sprite);\r\n\r\n\t\tthis.borderThickness = 4;\r\n\t\tthis.fontface = 'Arial';\r\n\t\tthis.fontsize = 28;\r\n\t\tthis.borderColor = { r: 0, g: 0, b: 0, a: 1.0 };\r\n\t\tthis.backgroundColor = { r: 255, g: 255, b: 255, a: 1.0 };\r\n\t\tthis.textColor = {r: 255, g: 255, b: 255, a: 1.0};\r\n\t\tthis.text = '';\r\n\r\n\t\tthis.setText(text);\r\n\t}\r\n\r\n\tsetText(text){\r\n\t\tif (this.text !== text){\r\n\t\t\tthis.text = text;\r\n\r\n\t\t\tthis.update();\r\n\t\t}\r\n\t}\r\n\r\n\tsetTextColor(color){\r\n\t\tthis.textColor = color;\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tsetBorderColor(color){\r\n\t\tthis.borderColor = color;\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tsetBackgroundColor(color){\r\n\t\tthis.backgroundColor = color;\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tlet canvas = document.createElement('canvas');\r\n\t\tlet context = canvas.getContext('2d');\r\n\t\tcontext.font = 'Bold ' + this.fontsize + 'px ' + this.fontface;\r\n\r\n\t\t// get size data (height depends only on font size)\r\n\t\tlet metrics = context.measureText(this.text);\r\n\t\tlet textWidth = metrics.width;\r\n\t\tlet margin = 5;\r\n\t\tlet spriteWidth = 2 * margin + textWidth + 2 * this.borderThickness;\r\n\t\tlet spriteHeight = this.fontsize * 1.4 + 2 * this.borderThickness;\r\n\r\n\t\tcontext.canvas.width = spriteWidth;\r\n\t\tcontext.canvas.height = spriteHeight;\r\n\t\tcontext.font = 'Bold ' + this.fontsize + 'px ' + this.fontface;\r\n\r\n\t\t// background color\r\n\t\tcontext.fillStyle = 'rgba(' + this.backgroundColor.r + ',' + this.backgroundColor.g + ',' +\r\n\t\t\tthis.backgroundColor.b + ',' + this.backgroundColor.a + ')';\r\n\t\t// border color\r\n\t\tcontext.strokeStyle = 'rgba(' + this.borderColor.r + ',' + this.borderColor.g + ',' +\r\n\t\t\tthis.borderColor.b + ',' + this.borderColor.a + ')';\r\n\r\n\t\tcontext.lineWidth = this.borderThickness;\r\n\t\tthis.roundRect(context, this.borderThickness / 2, this.borderThickness / 2,\r\n\t\t\ttextWidth + this.borderThickness + 2 * margin, this.fontsize * 1.4 + this.borderThickness, 6);\r\n\r\n\t\t// text color\r\n\t\tcontext.strokeStyle = 'rgba(0, 0, 0, 1.0)';\r\n\t\tcontext.strokeText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness);\r\n\r\n\t\tcontext.fillStyle = 'rgba(' + this.textColor.r + ',' + this.textColor.g + ',' +\r\n\t\t\tthis.textColor.b + ',' + this.textColor.a + ')';\r\n\t\tcontext.fillText(this.text, this.borderThickness + margin, this.fontsize + this.borderThickness);\r\n\r\n\t\tlet texture = new THREE.Texture(canvas);\r\n\t\ttexture.minFilter = THREE.LinearFilter;\r\n\t\ttexture.magFilter = THREE.LinearFilter;\r\n\t\ttexture.needsUpdate = true;\r\n\t\t//this.material.needsUpdate = true;\r\n\r\n\t\t// { // screen-space sprite\r\n\t\t// \tlet [screenWidth, screenHeight] = [1620, 937];\r\n\r\n\t\t// \tlet uniforms = this.sprite.material.uniforms;\r\n\t\t// \tlet aspect = spriteHeight / spriteWidth;\r\n\t\t// \tlet factor = 0.5;\r\n\r\n\t\t// \tlet w = spriteWidth / screenWidth;\r\n\t\t// \tlet h = spriteHeight / screenHeight;\r\n\r\n\t\t// \tuniforms.uScale.value = [2 * w, 2 * h];\r\n\t\t// \t//uniforms.uScale.value = [factor * 1, factor * aspect];\r\n\t\t//\tthis.sprite.material.uniforms.map.value = texture;\r\n\t\t// }\r\n\r\n\t\tthis.sprite.material.map = texture;\r\n\t\tthis.texture = texture;\r\n\r\n\t\tthis.sprite.scale.set(spriteWidth * 0.01, spriteHeight * 0.01, 1.0);\r\n\t}\r\n\r\n\troundRect(ctx, x, y, w, h, r){\r\n\t\tctx.beginPath();\r\n\t\tctx.moveTo(x + r, y);\r\n\t\tctx.lineTo(x + w - r, y);\r\n\t\tctx.quadraticCurveTo(x + w, y, x + w, y + r);\r\n\t\tctx.lineTo(x + w, y + h - r);\r\n\t\tctx.quadraticCurveTo(x + w, y + h, x + w - r, y + h);\r\n\t\tctx.lineTo(x + r, y + h);\r\n\t\tctx.quadraticCurveTo(x, y + h, x, y + h - r);\r\n\t\tctx.lineTo(x, y + r);\r\n\t\tctx.quadraticCurveTo(x, y, x + r, y);\r\n\t\tctx.closePath();\r\n\t\tctx.fill();\r\n\t\tctx.stroke();\r\n\t}\r\n\r\n}\r\n\r\n\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {TextSprite} from \"../TextSprite.js\";\r\n\r\nexport class Volume extends THREE.Object3D {\r\n\tconstructor (args = {}) {\r\n\t\tsuper();\r\n\r\n\t\tif(this.constructor.name === \"Volume\"){\r\n\t\t\tconsole.warn(\"Can't create object of class Volume directly. Use classes BoxVolume or SphereVolume instead.\");\r\n\t\t}\r\n\r\n\t\t//console.log(this);\r\n\t\t//console.log(this.constructor);\r\n\t\t//console.log(this.constructor.name);\r\n\r\n\t\tthis._clip = args.clip || false;\r\n\t\tthis._visible = true;\r\n\t\tthis.showVolumeLabel = true;\r\n\t\tthis._modifiable = args.modifiable || true;\r\n\r\n\t\tthis.label = new TextSprite('0');\r\n\t\tthis.label.setBorderColor({r: 0, g: 255, b: 0, a: 0.0});\r\n\t\tthis.label.setBackgroundColor({r: 0, g: 255, b: 0, a: 0.0});\r\n\t\tthis.label.material.depthTest = false;\r\n\t\tthis.label.material.depthWrite = false;\r\n\t\tthis.label.material.transparent = true;\r\n\t\tthis.label.position.y -= 0.5;\r\n\t\tthis.add(this.label);\r\n\r\n\t\tthis.label.updateMatrixWorld = () => {\r\n\t\t\tlet volumeWorldPos = new THREE.Vector3();\r\n\t\t\tvolumeWorldPos.setFromMatrixPosition(this.matrixWorld);\r\n\t\t\tthis.label.position.copy(volumeWorldPos);\r\n\t\t\tthis.label.updateMatrix();\r\n\t\t\tthis.label.matrixWorld.copy(this.label.matrix);\r\n\t\t\tthis.label.matrixWorldNeedsUpdate = false;\r\n\r\n\t\t\tfor (let i = 0, l = this.label.children.length; i < l; i++) {\r\n\t\t\t\tthis.label.children[ i ].updateMatrixWorld(true);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t{ // event listeners\r\n\t\t\tthis.addEventListener('select', e => {});\r\n\t\t\tthis.addEventListener('deselect', e => {});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tget visible(){\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\tset visible(value){\r\n\t\tif(this._visible !== value){\r\n\t\t\tthis._visible = value;\r\n\r\n\t\t\tthis.dispatchEvent({type: \"visibility_changed\", object: this});\r\n\t\t}\r\n\t}\r\n\r\n\tgetVolume () {\r\n\t\tconsole.warn(\"override this in subclass\");\r\n\t}\r\n\r\n\tupdate () {\r\n\t\t\r\n\t};\r\n\r\n\traycast (raycaster, intersects) {\r\n\r\n\t}\r\n\r\n\tget clip () {\r\n\t\treturn this._clip;\r\n\t}\r\n\r\n\tset clip (value) {\r\n\r\n\t\tif(this._clip !== value){\r\n\t\t\tthis._clip = value;\r\n\r\n\t\t\tthis.update();\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: \"clip_changed\",\r\n\t\t\t\tobject: this\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\tget modifieable () {\r\n\t\treturn this._modifiable;\r\n\t}\r\n\r\n\tset modifieable (value) {\r\n\t\tthis._modifiable = value;\r\n\r\n\t\tthis.update();\r\n\t}\r\n};\r\n\r\n\r\nexport class BoxVolume extends Volume{\r\n\r\n\tconstructor(args = {}){\r\n\t\tsuper(args);\r\n\r\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\r\n\t\tthis.name = 'box_' + this.constructor.counter;\r\n\r\n\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\r\n\t\tboxGeometry.computeBoundingBox();\r\n\r\n\t\tlet boxFrameGeometry = new THREE.Geometry();\r\n\t\t{\r\n\t\t\tlet Vector3 = THREE.Vector3;\r\n\r\n\t\t\tboxFrameGeometry.vertices.push(\r\n\r\n\t\t\t\t// bottom\r\n\t\t\t\tnew Vector3(-0.5, -0.5, 0.5),\r\n\t\t\t\tnew Vector3(0.5, -0.5, 0.5),\r\n\t\t\t\tnew Vector3(0.5, -0.5, 0.5),\r\n\t\t\t\tnew Vector3(0.5, -0.5, -0.5),\r\n\t\t\t\tnew Vector3(0.5, -0.5, -0.5),\r\n\t\t\t\tnew Vector3(-0.5, -0.5, -0.5),\r\n\t\t\t\tnew Vector3(-0.5, -0.5, -0.5),\r\n\t\t\t\tnew Vector3(-0.5, -0.5, 0.5),\r\n\t\t\t\t// top\r\n\t\t\t\tnew Vector3(-0.5, 0.5, 0.5),\r\n\t\t\t\tnew Vector3(0.5, 0.5, 0.5),\r\n\t\t\t\tnew Vector3(0.5, 0.5, 0.5),\r\n\t\t\t\tnew Vector3(0.5, 0.5, -0.5),\r\n\t\t\t\tnew Vector3(0.5, 0.5, -0.5),\r\n\t\t\t\tnew Vector3(-0.5, 0.5, -0.5),\r\n\t\t\t\tnew Vector3(-0.5, 0.5, -0.5),\r\n\t\t\t\tnew Vector3(-0.5, 0.5, 0.5),\r\n\t\t\t\t// sides\r\n\t\t\t\tnew Vector3(-0.5, -0.5, 0.5),\r\n\t\t\t\tnew Vector3(-0.5, 0.5, 0.5),\r\n\t\t\t\tnew Vector3(0.5, -0.5, 0.5),\r\n\t\t\t\tnew Vector3(0.5, 0.5, 0.5),\r\n\t\t\t\tnew Vector3(0.5, -0.5, -0.5),\r\n\t\t\t\tnew Vector3(0.5, 0.5, -0.5),\r\n\t\t\t\tnew Vector3(-0.5, -0.5, -0.5),\r\n\t\t\t\tnew Vector3(-0.5, 0.5, -0.5),\r\n\r\n\t\t\t);\r\n\r\n\t\t}\r\n\r\n\t\tthis.material = new THREE.MeshBasicMaterial({\r\n\t\t\tcolor: 0x00ff00,\r\n\t\t\ttransparent: true,\r\n\t\t\topacity: 0.3,\r\n\t\t\tdepthTest: true,\r\n\t\t\tdepthWrite: false});\r\n\t\tthis.box = new THREE.Mesh(boxGeometry, this.material);\r\n\t\tthis.box.geometry.computeBoundingBox();\r\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\r\n\t\tthis.add(this.box);\r\n\r\n\t\tthis.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\r\n\t\t// this.frame.mode = THREE.Lines;\r\n\t\tthis.add(this.frame);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\r\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\r\n\t\tif (this._clip) {\r\n\t\t\tthis.box.visible = false;\r\n\t\t\tthis.label.visible = false;\r\n\t\t} else {\r\n\t\t\tthis.box.visible = true;\r\n\t\t\tthis.label.visible = this.showVolumeLabel;\r\n\t\t}\r\n\t}\r\n\r\n\traycast (raycaster, intersects) {\r\n\t\tlet is = [];\r\n\t\tthis.box.raycast(raycaster, is);\r\n\r\n\t\tif (is.length > 0) {\r\n\t\t\tlet I = is[0];\r\n\t\t\tintersects.push({\r\n\t\t\t\tdistance: I.distance,\r\n\t\t\t\tobject: this,\r\n\t\t\t\tpoint: I.point.clone()\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tgetVolume(){\r\n\t\treturn Math.abs(this.scale.x * this.scale.y * this.scale.z);\r\n\t}\r\n\r\n};\r\n\r\nexport class SphereVolume extends Volume{\r\n\r\n\tconstructor(args = {}){\r\n\t\tsuper(args);\r\n\r\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\r\n\t\tthis.name = 'sphere_' + this.constructor.counter;\r\n\r\n\t\tlet sphereGeometry = new THREE.SphereGeometry(1, 32, 32);\r\n\t\tsphereGeometry.computeBoundingBox();\r\n\r\n\t\tthis.material = new THREE.MeshBasicMaterial({\r\n\t\t\tcolor: 0x00ff00,\r\n\t\t\ttransparent: true,\r\n\t\t\topacity: 0.3,\r\n\t\t\tdepthTest: true,\r\n\t\t\tdepthWrite: false});\r\n\t\tthis.sphere = new THREE.Mesh(sphereGeometry, this.material);\r\n\t\tthis.sphere.visible = false;\r\n\t\tthis.sphere.geometry.computeBoundingBox();\r\n\t\tthis.boundingBox = this.sphere.geometry.boundingBox;\r\n\t\tthis.add(this.sphere);\r\n\r\n\t\tthis.label.visible = false;\r\n\r\n\r\n\t\tlet frameGeometry = new THREE.Geometry();\r\n\t\t{\r\n\t\t\tlet steps = 64;\r\n\t\t\tlet uSegments = 8;\r\n\t\t\tlet vSegments = 5;\r\n\t\t\tlet r = 1;\r\n\r\n\t\t\tfor(let uSegment = 0; uSegment < uSegments; uSegment++){\r\n\r\n\t\t\t\tlet alpha = (uSegment / uSegments) * Math.PI * 2;\r\n\t\t\t\tlet dirx = Math.cos(alpha);\r\n\t\t\t\tlet diry = Math.sin(alpha);\r\n\r\n\t\t\t\tfor(let i = 0; i <= steps; i++){\r\n\t\t\t\t\tlet v = (i / steps) * Math.PI * 2;\r\n\t\t\t\t\tlet vNext = v + 2 * Math.PI / steps;\r\n\r\n\t\t\t\t\tlet height = Math.sin(v);\r\n\t\t\t\t\tlet xyAmount = Math.cos(v);\r\n\r\n\t\t\t\t\tlet heightNext = Math.sin(vNext);\r\n\t\t\t\t\tlet xyAmountNext = Math.cos(vNext);\r\n\r\n\t\t\t\t\tlet vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height);\r\n\t\t\t\t\tframeGeometry.vertices.push(vertex);\r\n\r\n\t\t\t\t\tlet vertexNext = new THREE.Vector3(dirx * xyAmountNext, diry * xyAmountNext, heightNext);\r\n\t\t\t\t\tframeGeometry.vertices.push(vertexNext);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// creates rings at poles, just because it's easier to implement\r\n\t\t\tfor(let vSegment = 0; vSegment <= vSegments + 1; vSegment++){\r\n\r\n\t\t\t\t//let height = (vSegment / (vSegments + 1)) * 2 - 1; // -1 to 1\r\n\t\t\t\tlet uh = (vSegment / (vSegments + 1)); // -1 to 1\r\n\t\t\t\tuh = (1 - uh) * (-Math.PI / 2) + uh *(Math.PI / 2);\r\n\t\t\t\tlet height = Math.sin(uh);\r\n\r\n\t\t\t\tconsole.log(uh, height);\r\n\r\n\t\t\t\tfor(let i = 0; i <= steps; i++){\r\n\t\t\t\t\tlet u = (i / steps) * Math.PI * 2;\r\n\t\t\t\t\tlet uNext = u + 2 * Math.PI / steps;\r\n\r\n\t\t\t\t\tlet dirx = Math.cos(u);\r\n\t\t\t\t\tlet diry = Math.sin(u);\r\n\r\n\t\t\t\t\tlet dirxNext = Math.cos(uNext);\r\n\t\t\t\t\tlet diryNext = Math.sin(uNext);\r\n\r\n\t\t\t\t\tlet xyAmount = Math.sqrt(1 - height * height);\r\n\r\n\t\t\t\t\tlet vertex = new THREE.Vector3(dirx * xyAmount, diry * xyAmount, height);\r\n\t\t\t\t\tframeGeometry.vertices.push(vertex);\r\n\r\n\t\t\t\t\tlet vertexNext = new THREE.Vector3(dirxNext * xyAmount, diryNext * xyAmount, height);\r\n\t\t\t\t\tframeGeometry.vertices.push(vertexNext);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.frame = new THREE.LineSegments(frameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\r\n\t\tthis.add(this.frame);\r\n\r\n\t\tlet frameMaterial = new THREE.MeshBasicMaterial({wireframe: true, color: 0x000000});\r\n\t\tthis.frame = new THREE.Mesh(sphereGeometry, frameMaterial);\r\n\t\t//this.add(this.frame);\r\n\r\n\t\t//this.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\r\n\t\t// this.frame.mode = THREE.Lines;\r\n\t\t//this.add(this.frame);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tthis.boundingBox = this.sphere.geometry.boundingBox;\r\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\r\n\t\t//if (this._clip) {\r\n\t\t//\tthis.sphere.visible = false;\r\n\t\t//\tthis.label.visible = false;\r\n\t\t//} else {\r\n\t\t//\tthis.sphere.visible = true;\r\n\t\t//\tthis.label.visible = this.showVolumeLabel;\r\n\t\t//}\r\n\t}\r\n\r\n\traycast (raycaster, intersects) {\r\n\t\tlet is = [];\r\n\t\tthis.sphere.raycast(raycaster, is);\r\n\r\n\t\tif (is.length > 0) {\r\n\t\t\tlet I = is[0];\r\n\t\t\tintersects.push({\r\n\t\t\t\tdistance: I.distance,\r\n\t\t\t\tobject: this,\r\n\t\t\t\tpoint: I.point.clone()\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\t\r\n\t// see https://en.wikipedia.org/wiki/Ellipsoid#Volume\r\n\tgetVolume(){\r\n\t\treturn (4 / 3) * Math.PI * this.scale.x * this.scale.y * this.scale.z;\r\n\t}\r\n\r\n};","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Utils} from \"../utils.js\";\r\n\r\nexport class Profile extends THREE.Object3D{\r\n\r\n\tconstructor () {\r\n\t\tsuper();\r\n\r\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\r\n\r\n\t\tthis.name = 'Profile_' + this.constructor.counter;\r\n\t\tthis.points = [];\r\n\t\tthis.spheres = [];\r\n\t\tthis.edges = [];\r\n\t\tthis.boxes = [];\r\n\t\tthis.width = 1;\r\n\t\tthis.height = 20;\r\n\t\tthis._modifiable = true;\r\n\r\n\t\tthis.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10);\r\n\t\tthis.color = new THREE.Color(0xff0000);\r\n\t\tthis.lineColor = new THREE.Color(0xff0000);\r\n\t}\r\n\r\n\tcreateSphereMaterial () {\r\n\t\tlet sphereMaterial = new THREE.MeshLambertMaterial({\r\n\t\t\t//shading: THREE.SmoothShading,\r\n\t\t\tcolor: 0xff0000,\r\n\t\t\tdepthTest: false,\r\n\t\t\tdepthWrite: false}\r\n\t\t);\r\n\r\n\t\treturn sphereMaterial;\r\n\t};\r\n\r\n\tgetSegments () {\r\n\t\tlet segments = [];\r\n\r\n\t\tfor (let i = 0; i < this.points.length - 1; i++) {\r\n\t\t\tlet start = this.points[i].clone();\r\n\t\t\tlet end = this.points[i + 1].clone();\r\n\t\t\tsegments.push({start: start, end: end});\r\n\t\t}\r\n\r\n\t\treturn segments;\r\n\t}\r\n\r\n\tgetSegmentMatrices () {\r\n\t\tlet segments = this.getSegments();\r\n\t\tlet matrices = [];\r\n\r\n\t\tfor (let segment of segments) {\r\n\t\t\tlet {start, end} = segment;\r\n\r\n\t\t\tlet box = new THREE.Object3D();\r\n\r\n\t\t\tlet length = start.clone().setZ(0).distanceTo(end.clone().setZ(0));\r\n\t\t\tbox.scale.set(length, 10000, this.width);\r\n\t\t\tbox.up.set(0, 0, 1);\r\n\r\n\t\t\tlet center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\r\n\t\t\tlet diff = new THREE.Vector3().subVectors(end, start);\r\n\t\t\tlet target = new THREE.Vector3(diff.y, -diff.x, 0);\r\n\r\n\t\t\tbox.position.set(0, 0, 0);\r\n\t\t\tbox.lookAt(target);\r\n\t\t\tbox.position.copy(center);\r\n\r\n\t\t\tbox.updateMatrixWorld();\r\n\t\t\tmatrices.push(box.matrixWorld);\r\n\t\t}\r\n\r\n\t\treturn matrices;\r\n\t}\r\n\r\n\taddMarker (point) {\r\n\t\tthis.points.push(point);\r\n\r\n\t\tlet sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial());\r\n\r\n\t\tthis.add(sphere);\r\n\t\tthis.spheres.push(sphere);\r\n\r\n\t\t// edges & boxes\r\n\t\tif (this.points.length > 1) {\r\n\t\t\tlet lineGeometry = new THREE.Geometry();\r\n\t\t\tlineGeometry.vertices.push(new THREE.Vector3(), new THREE.Vector3());\r\n\t\t\tlineGeometry.colors.push(this.lineColor, this.lineColor, this.lineColor);\r\n\t\t\tlet lineMaterial = new THREE.LineBasicMaterial({\r\n\t\t\t\tvertexColors: THREE.VertexColors,\r\n\t\t\t\tlinewidth: 2,\r\n\t\t\t\ttransparent: true,\r\n\t\t\t\topacity: 0.4\r\n\t\t\t});\r\n\t\t\tlineMaterial.depthTest = false;\r\n\t\t\tlet edge = new THREE.Line(lineGeometry, lineMaterial);\r\n\t\t\tedge.visible = false;\r\n\r\n\t\t\tthis.add(edge);\r\n\t\t\tthis.edges.push(edge);\r\n\r\n\t\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\r\n\t\t\tlet boxMaterial = new THREE.MeshBasicMaterial({color: 0xff0000, transparent: true, opacity: 0.2});\r\n\t\t\tlet box = new THREE.Mesh(boxGeometry, boxMaterial);\r\n\t\t\tbox.visible = false;\r\n\r\n\t\t\tthis.add(box);\r\n\t\t\tthis.boxes.push(box);\r\n\t\t}\r\n\r\n\t\t{ // event listeners\r\n\t\t\tlet drag = (e) => {\r\n\t\t\t\tlet I = Utils.getMousePointCloudIntersection(\r\n\t\t\t\t\te.drag.end, \r\n\t\t\t\t\te.viewer.scene.getActiveCamera(), \r\n\t\t\t\t\te.viewer, \r\n\t\t\t\t\te.viewer.scene.pointclouds);\r\n\r\n\t\t\t\tif (I) {\r\n\t\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\r\n\t\t\t\t\tif (i !== -1) {\r\n\t\t\t\t\t\tthis.setPosition(i, I.location);\r\n\t\t\t\t\t\t//this.dispatchEvent({\r\n\t\t\t\t\t\t//\t'type': 'marker_moved',\r\n\t\t\t\t\t\t//\t'profile': this,\r\n\t\t\t\t\t\t//\t'index': i\r\n\t\t\t\t\t\t//});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tlet drop = e => {\r\n\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\r\n\t\t\t\tif (i !== -1) {\r\n\t\t\t\t\tthis.dispatchEvent({\r\n\t\t\t\t\t\t'type': 'marker_dropped',\r\n\t\t\t\t\t\t'profile': this,\r\n\t\t\t\t\t\t'index': i\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tlet mouseover = (e) => e.object.material.emissive.setHex(0x888888);\r\n\t\t\tlet mouseleave = (e) => e.object.material.emissive.setHex(0x000000);\r\n\r\n\t\t\tsphere.addEventListener('drag', drag);\r\n\t\t\tsphere.addEventListener('drop', drop);\r\n\t\t\tsphere.addEventListener('mouseover', mouseover);\r\n\t\t\tsphere.addEventListener('mouseleave', mouseleave);\r\n\t\t}\r\n\r\n\t\tlet event = {\r\n\t\t\ttype: 'marker_added',\r\n\t\t\tprofile: this,\r\n\t\t\tsphere: sphere\r\n\t\t};\r\n\t\tthis.dispatchEvent(event);\r\n\r\n\t\tthis.setPosition(this.points.length - 1, point);\r\n\t}\r\n\r\n\tremoveMarker (index) {\r\n\t\tthis.points.splice(index, 1);\r\n\r\n\t\tthis.remove(this.spheres[index]);\r\n\r\n\t\tlet edgeIndex = (index === 0) ? 0 : (index - 1);\r\n\t\tthis.remove(this.edges[edgeIndex]);\r\n\t\tthis.edges.splice(edgeIndex, 1);\r\n\t\tthis.remove(this.boxes[edgeIndex]);\r\n\t\tthis.boxes.splice(edgeIndex, 1);\r\n\r\n\t\tthis.spheres.splice(index, 1);\r\n\r\n\t\tthis.update();\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\t'type': 'marker_removed',\r\n\t\t\t'profile': this\r\n\t\t});\r\n\t}\r\n\r\n\tsetPosition (index, position) {\r\n\t\tlet point = this.points[index];\r\n\t\tpoint.copy(position);\r\n\r\n\t\tlet event = {\r\n\t\t\ttype: 'marker_moved',\r\n\t\t\tprofile:\tthis,\r\n\t\t\tindex:\tindex,\r\n\t\t\tposition: point.clone()\r\n\t\t};\r\n\t\tthis.dispatchEvent(event);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tsetWidth (width) {\r\n\t\tthis.width = width;\r\n\r\n\t\tlet event = {\r\n\t\t\ttype: 'width_changed',\r\n\t\t\tprofile:\tthis,\r\n\t\t\twidth:\twidth\r\n\t\t};\r\n\t\tthis.dispatchEvent(event);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tgetWidth () {\r\n\t\treturn this.width;\r\n\t}\r\n\r\n\tupdate () {\r\n\t\tif (this.points.length === 0) {\r\n\t\t\treturn;\r\n\t\t} else if (this.points.length === 1) {\r\n\t\t\tlet point = this.points[0];\r\n\t\t\tthis.spheres[0].position.copy(point);\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet min = this.points[0].clone();\r\n\t\tlet max = this.points[0].clone();\r\n\t\tlet centroid = new THREE.Vector3();\r\n\t\tlet lastIndex = this.points.length - 1;\r\n\t\tfor (let i = 0; i <= lastIndex; i++) {\r\n\t\t\tlet point = this.points[i];\r\n\t\t\tlet sphere = this.spheres[i];\r\n\t\t\tlet leftIndex = (i === 0) ? lastIndex : i - 1;\r\n\t\t\t// let rightIndex = (i === lastIndex) ? 0 : i + 1;\r\n\t\t\tlet leftVertex = this.points[leftIndex];\r\n\t\t\t// let rightVertex = this.points[rightIndex];\r\n\t\t\tlet leftEdge = this.edges[leftIndex];\r\n\t\t\tlet rightEdge = this.edges[i];\r\n\t\t\tlet leftBox = this.boxes[leftIndex];\r\n\t\t\t// rightBox = this.boxes[i];\r\n\r\n\t\t\t// let leftEdgeLength = point.distanceTo(leftVertex);\r\n\t\t\t// let rightEdgeLength = point.distanceTo(rightVertex);\r\n\t\t\t// let leftEdgeCenter = new THREE.Vector3().addVectors(leftVertex, point).multiplyScalar(0.5);\r\n\t\t\t// let rightEdgeCenter = new THREE.Vector3().addVectors(point, rightVertex).multiplyScalar(0.5);\r\n\r\n\t\t\tsphere.position.copy(point);\r\n\r\n\t\t\tif (this._modifiable) {\r\n\t\t\t\tsphere.visible = true;\r\n\t\t\t} else {\r\n\t\t\t\tsphere.visible = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (leftEdge) {\r\n\t\t\t\tleftEdge.geometry.vertices[1].copy(point);\r\n\t\t\t\tleftEdge.geometry.verticesNeedUpdate = true;\r\n\t\t\t\tleftEdge.geometry.computeBoundingSphere();\r\n\t\t\t}\r\n\r\n\t\t\tif (rightEdge) {\r\n\t\t\t\trightEdge.geometry.vertices[0].copy(point);\r\n\t\t\t\trightEdge.geometry.verticesNeedUpdate = true;\r\n\t\t\t\trightEdge.geometry.computeBoundingSphere();\r\n\t\t\t}\r\n\r\n\t\t\tif (leftBox) {\r\n\t\t\t\tlet start = leftVertex;\r\n\t\t\t\tlet end = point;\r\n\t\t\t\tlet length = start.clone().setZ(0).distanceTo(end.clone().setZ(0));\r\n\t\t\t\tleftBox.scale.set(length, 1000000, this.width);\r\n\t\t\t\tleftBox.up.set(0, 0, 1);\r\n\r\n\t\t\t\tlet center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\r\n\t\t\t\tlet diff = new THREE.Vector3().subVectors(end, start);\r\n\t\t\t\tlet target = new THREE.Vector3(diff.y, -diff.x, 0);\r\n\r\n\t\t\t\tleftBox.position.set(0, 0, 0);\r\n\t\t\t\tleftBox.lookAt(target);\r\n\t\t\t\tleftBox.position.copy(center);\r\n\t\t\t}\r\n\r\n\t\t\tcentroid.add(point);\r\n\t\t\tmin.min(point);\r\n\t\t\tmax.max(point);\r\n\t\t}\r\n\t\tcentroid.multiplyScalar(1 / this.points.length);\r\n\r\n\t\tfor (let i = 0; i < this.boxes.length; i++) {\r\n\t\t\tlet box = this.boxes[i];\r\n\r\n\t\t\tbox.position.z = min.z + (max.z - min.z) / 2;\r\n\t\t}\r\n\t}\r\n\r\n\traycast (raycaster, intersects) {\r\n\t\tfor (let i = 0; i < this.points.length; i++) {\r\n\t\t\tlet sphere = this.spheres[i];\r\n\r\n\t\t\tsphere.raycast(raycaster, intersects);\r\n\t\t}\r\n\r\n\t\t// recalculate distances because they are not necessarely correct\r\n\t\t// for scaled objects.\r\n\t\t// see https://github.com/mrdoob/three.js/issues/5827\r\n\t\t// TODO: remove this once the bug has been fixed\r\n\t\tfor (let i = 0; i < intersects.length; i++) {\r\n\t\t\tlet I = intersects[i];\r\n\t\t\tI.distance = raycaster.ray.origin.distanceTo(I.point);\r\n\t\t}\r\n\t\tintersects.sort(function (a, b) { return a.distance - b.distance; });\r\n\t};\r\n\r\n\tget modifiable () {\r\n\t\treturn this._modifiable;\r\n\t}\r\n\r\n\tset modifiable (value) {\r\n\t\tthis._modifiable = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n}\r\n","import {\r\n\tBox3,\r\n\tFloat32BufferAttribute,\r\n\tInstancedBufferGeometry,\r\n\tInstancedInterleavedBuffer,\r\n\tInterleavedBufferAttribute,\r\n\tSphere,\r\n\tVector3,\r\n\tWireframeGeometry\r\n} from '../build/three.module.js';\r\n\r\nvar LineSegmentsGeometry = function () {\r\n\r\n\tInstancedBufferGeometry.call( this );\r\n\r\n\tthis.type = 'LineSegmentsGeometry';\r\n\r\n\tvar positions = [ - 1, 2, 0, 1, 2, 0, - 1, 1, 0, 1, 1, 0, - 1, 0, 0, 1, 0, 0, - 1, - 1, 0, 1, - 1, 0 ];\r\n\tvar uvs = [ - 1, 2, 1, 2, - 1, 1, 1, 1, - 1, - 1, 1, - 1, - 1, - 2, 1, - 2 ];\r\n\tvar index = [ 0, 2, 1, 2, 3, 1, 2, 4, 3, 4, 5, 3, 4, 6, 5, 6, 7, 5 ];\r\n\r\n\tthis.setIndex( index );\r\n\tthis.setAttribute( 'position', new Float32BufferAttribute( positions, 3 ) );\r\n\tthis.setAttribute( 'uv', new Float32BufferAttribute( uvs, 2 ) );\r\n\r\n};\r\n\r\nLineSegmentsGeometry.prototype = Object.assign( Object.create( InstancedBufferGeometry.prototype ), {\r\n\r\n\tconstructor: LineSegmentsGeometry,\r\n\r\n\tisLineSegmentsGeometry: true,\r\n\r\n\tapplyMatrix4: function ( matrix ) {\r\n\r\n\t\tvar start = this.attributes.instanceStart;\r\n\t\tvar end = this.attributes.instanceEnd;\r\n\r\n\t\tif ( start !== undefined ) {\r\n\r\n\t\t\tstart.applyMatrix4( matrix );\r\n\r\n\t\t\tend.applyMatrix4( matrix );\r\n\r\n\t\t\tstart.needsUpdate = true;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.boundingBox !== null ) {\r\n\r\n\t\t\tthis.computeBoundingBox();\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.boundingSphere !== null ) {\r\n\r\n\t\t\tthis.computeBoundingSphere();\r\n\r\n\t\t}\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetPositions: function ( array ) {\r\n\r\n\t\tvar lineSegments;\r\n\r\n\t\tif ( array instanceof Float32Array ) {\r\n\r\n\t\t\tlineSegments = array;\r\n\r\n\t\t} else if ( Array.isArray( array ) ) {\r\n\r\n\t\t\tlineSegments = new Float32Array( array );\r\n\r\n\t\t}\r\n\r\n\t\tvar instanceBuffer = new InstancedInterleavedBuffer( lineSegments, 6, 1 ); // xyz, xyz\r\n\r\n\t\tthis.setAttribute( 'instanceStart', new InterleavedBufferAttribute( instanceBuffer, 3, 0 ) ); // xyz\r\n\t\tthis.setAttribute( 'instanceEnd', new InterleavedBufferAttribute( instanceBuffer, 3, 3 ) ); // xyz\r\n\r\n\t\t//\r\n\r\n\t\tthis.computeBoundingBox();\r\n\t\tthis.computeBoundingSphere();\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetColors: function ( array ) {\r\n\r\n\t\tvar colors;\r\n\r\n\t\tif ( array instanceof Float32Array ) {\r\n\r\n\t\t\tcolors = array;\r\n\r\n\t\t} else if ( Array.isArray( array ) ) {\r\n\r\n\t\t\tcolors = new Float32Array( array );\r\n\r\n\t\t}\r\n\r\n\t\tvar instanceColorBuffer = new InstancedInterleavedBuffer( colors, 6, 1 ); // rgb, rgb\r\n\r\n\t\tthis.setAttribute( 'instanceColorStart', new InterleavedBufferAttribute( instanceColorBuffer, 3, 0 ) ); // rgb\r\n\t\tthis.setAttribute( 'instanceColorEnd', new InterleavedBufferAttribute( instanceColorBuffer, 3, 3 ) ); // rgb\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tfromWireframeGeometry: function ( geometry ) {\r\n\r\n\t\tthis.setPositions( geometry.attributes.position.array );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tfromEdgesGeometry: function ( geometry ) {\r\n\r\n\t\tthis.setPositions( geometry.attributes.position.array );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tfromMesh: function ( mesh ) {\r\n\r\n\t\tthis.fromWireframeGeometry( new WireframeGeometry( mesh.geometry ) );\r\n\r\n\t\t// set colors, maybe\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tfromLineSegments: function ( lineSegments ) {\r\n\r\n\t\tvar geometry = lineSegments.geometry;\r\n\r\n\t\tif ( geometry.isGeometry ) {\r\n\r\n\t\t\tthis.setPositions( geometry.vertices );\r\n\r\n\t\t} else if ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\tthis.setPositions( geometry.attributes.position.array ); // assumes non-indexed\r\n\r\n\t\t}\r\n\r\n\t\t// set colors, maybe\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcomputeBoundingBox: function () {\r\n\r\n\t\tvar box = new Box3();\r\n\r\n\t\treturn function computeBoundingBox() {\r\n\r\n\t\t\tif ( this.boundingBox === null ) {\r\n\r\n\t\t\t\tthis.boundingBox = new Box3();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar start = this.attributes.instanceStart;\r\n\t\t\tvar end = this.attributes.instanceEnd;\r\n\r\n\t\t\tif ( start !== undefined && end !== undefined ) {\r\n\r\n\t\t\t\tthis.boundingBox.setFromBufferAttribute( start );\r\n\r\n\t\t\t\tbox.setFromBufferAttribute( end );\r\n\r\n\t\t\t\tthis.boundingBox.union( box );\r\n\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t}(),\r\n\r\n\tcomputeBoundingSphere: function () {\r\n\r\n\t\tvar vector = new Vector3();\r\n\r\n\t\treturn function computeBoundingSphere() {\r\n\r\n\t\t\tif ( this.boundingSphere === null ) {\r\n\r\n\t\t\t\tthis.boundingSphere = new Sphere();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( this.boundingBox === null ) {\r\n\r\n\t\t\t\tthis.computeBoundingBox();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar start = this.attributes.instanceStart;\r\n\t\t\tvar end = this.attributes.instanceEnd;\r\n\r\n\t\t\tif ( start !== undefined && end !== undefined ) {\r\n\r\n\t\t\t\tvar center = this.boundingSphere.center;\r\n\r\n\t\t\t\tthis.boundingBox.getCenter( center );\r\n\r\n\t\t\t\tvar maxRadiusSq = 0;\r\n\r\n\t\t\t\tfor ( var i = 0, il = start.count; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tvector.fromBufferAttribute( start, i );\r\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\r\n\r\n\t\t\t\t\tvector.fromBufferAttribute( end, i );\r\n\t\t\t\t\tmaxRadiusSq = Math.max( maxRadiusSq, center.distanceToSquared( vector ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.boundingSphere.radius = Math.sqrt( maxRadiusSq );\r\n\r\n\t\t\t\tif ( isNaN( this.boundingSphere.radius ) ) {\r\n\r\n\t\t\t\t\tconsole.error( 'THREE.LineSegmentsGeometry.computeBoundingSphere(): Computed radius is NaN. The instanced position data is likely to have NaN values.', this );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t}(),\r\n\r\n\ttoJSON: function () {\r\n\r\n\t\t// todo\r\n\r\n\t},\r\n\r\n\tapplyMatrix: function ( matrix ) {\r\n\r\n\t\tconsole.warn( 'THREE.LineSegmentsGeometry: applyMatrix() has been renamed to applyMatrix4().' );\r\n\r\n\t\treturn this.applyMatrix4( matrix );\r\n\r\n\t}\r\n\r\n} );\r\n\r\nexport { LineSegmentsGeometry };\r\n","import {\r\n\tShaderLib,\r\n\tShaderMaterial,\r\n\tUniformsLib,\r\n\tUniformsUtils,\r\n\tVector2\r\n} from '../build/three.module.js';\r\n\r\n/**\r\n * parameters = {\r\n * color: ,\r\n * linewidth: ,\r\n * dashed: ,\r\n * dashScale: ,\r\n * dashSize: ,\r\n * dashOffset: ,\r\n * gapSize: ,\r\n * resolution: , // to be set by renderer\r\n * }\r\n */\r\n\r\nUniformsLib.line = {\r\n\r\n\tlinewidth: { value: 1 },\r\n\tresolution: { value: new Vector2( 1, 1 ) },\r\n\tdashScale: { value: 1 },\r\n\tdashSize: { value: 1 },\r\n\tdashOffset: { value: 0 },\r\n\tgapSize: { value: 1 }, // todo FIX - maybe change to totalSize\r\n\topacity: { value: 1 }\r\n\r\n};\r\n\r\nShaderLib[ 'line' ] = {\r\n\r\n\tuniforms: UniformsUtils.merge( [\r\n\t\tUniformsLib.common,\r\n\t\tUniformsLib.fog,\r\n\t\tUniformsLib.line\r\n\t] ),\r\n\r\n\tvertexShader:\r\n\t\t`\r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\r\n\t\tuniform float linewidth;\r\n\t\tuniform vec2 resolution;\r\n\r\n\t\tattribute vec3 instanceStart;\r\n\t\tattribute vec3 instanceEnd;\r\n\r\n\t\tattribute vec3 instanceColorStart;\r\n\t\tattribute vec3 instanceColorEnd;\r\n\r\n\t\tvarying vec2 vUv;\r\n\r\n\t\t#ifdef USE_DASH\r\n\r\n\t\t\tuniform float dashScale;\r\n\t\t\tattribute float instanceDistanceStart;\r\n\t\t\tattribute float instanceDistanceEnd;\r\n\t\t\tvarying float vLineDistance;\r\n\r\n\t\t#endif\r\n\r\n\t\tvoid trimSegment( const in vec4 start, inout vec4 end ) {\r\n\r\n\t\t\t// trim end segment so it terminates between the camera plane and the near plane\r\n\r\n\t\t\t// conservative estimate of the near plane\r\n\t\t\tfloat a = projectionMatrix[ 2 ][ 2 ]; // 3nd entry in 3th column\r\n\t\t\tfloat b = projectionMatrix[ 3 ][ 2 ]; // 3nd entry in 4th column\r\n\t\t\tfloat nearEstimate = - 0.5 * b / a;\r\n\r\n\t\t\tfloat alpha = ( nearEstimate - start.z ) / ( end.z - start.z );\r\n\r\n\t\t\tend.xyz = mix( start.xyz, end.xyz, alpha );\r\n\r\n\t\t}\r\n\r\n\t\tvoid main() {\r\n\r\n\t\t\t#ifdef USE_COLOR\r\n\r\n\t\t\t\tvColor.xyz = ( position.y < 0.5 ) ? instanceColorStart : instanceColorEnd;\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\t#ifdef USE_DASH\r\n\r\n\t\t\t\tvLineDistance = ( position.y < 0.5 ) ? dashScale * instanceDistanceStart : dashScale * instanceDistanceEnd;\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tfloat aspect = resolution.x / resolution.y;\r\n\r\n\t\t\tvUv = uv;\r\n\r\n\t\t\t// camera space\r\n\t\t\tvec4 start = modelViewMatrix * vec4( instanceStart, 1.0 );\r\n\t\t\tvec4 end = modelViewMatrix * vec4( instanceEnd, 1.0 );\r\n\r\n\t\t\t// special case for perspective projection, and segments that terminate either in, or behind, the camera plane\r\n\t\t\t// clearly the gpu firmware has a way of addressing this issue when projecting into ndc space\r\n\t\t\t// but we need to perform ndc-space calculations in the shader, so we must address this issue directly\r\n\t\t\t// perhaps there is a more elegant solution -- WestLangley\r\n\r\n\t\t\tbool perspective = ( projectionMatrix[ 2 ][ 3 ] == - 1.0 ); // 4th entry in the 3rd column\r\n\r\n\t\t\tif ( perspective ) {\r\n\r\n\t\t\t\tif ( start.z < 0.0 && end.z >= 0.0 ) {\r\n\r\n\t\t\t\t\ttrimSegment( start, end );\r\n\r\n\t\t\t\t} else if ( end.z < 0.0 && start.z >= 0.0 ) {\r\n\r\n\t\t\t\t\ttrimSegment( end, start );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// clip space\r\n\t\t\tvec4 clipStart = projectionMatrix * start;\r\n\t\t\tvec4 clipEnd = projectionMatrix * end;\r\n\r\n\t\t\t// ndc space\r\n\t\t\tvec2 ndcStart = clipStart.xy / clipStart.w;\r\n\t\t\tvec2 ndcEnd = clipEnd.xy / clipEnd.w;\r\n\r\n\t\t\t// direction\r\n\t\t\tvec2 dir = ndcEnd - ndcStart;\r\n\r\n\t\t\t// account for clip-space aspect ratio\r\n\t\t\tdir.x *= aspect;\r\n\t\t\tdir = normalize( dir );\r\n\r\n\t\t\t// perpendicular to dir\r\n\t\t\tvec2 offset = vec2( dir.y, - dir.x );\r\n\r\n\t\t\t// undo aspect ratio adjustment\r\n\t\t\tdir.x /= aspect;\r\n\t\t\toffset.x /= aspect;\r\n\r\n\t\t\t// sign flip\r\n\t\t\tif ( position.x < 0.0 ) offset *= - 1.0;\r\n\r\n\t\t\t// endcaps\r\n\t\t\tif ( position.y < 0.0 ) {\r\n\r\n\t\t\t\toffset += - dir;\r\n\r\n\t\t\t} else if ( position.y > 1.0 ) {\r\n\r\n\t\t\t\toffset += dir;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// adjust for linewidth\r\n\t\t\toffset *= linewidth;\r\n\r\n\t\t\t// adjust for clip-space to screen-space conversion // maybe resolution should be based on viewport ...\r\n\t\t\toffset /= resolution.y;\r\n\r\n\t\t\t// select end\r\n\t\t\tvec4 clip = ( position.y < 0.5 ) ? clipStart : clipEnd;\r\n\r\n\t\t\t// back to clip space\r\n\t\t\toffset *= clip.w;\r\n\r\n\t\t\tclip.xy += offset;\r\n\r\n\t\t\tgl_Position = clip;\r\n\r\n\t\t\tvec4 mvPosition = ( position.y < 0.5 ) ? start : end; // this is an approximation\r\n\r\n\t\t\t#include \r\n\t\t\t#include \r\n\t\t\t#include \r\n\r\n\t\t}\r\n\t\t`,\r\n\r\n\tfragmentShader:\r\n\t\t`\r\n\t\tuniform vec3 diffuse;\r\n\t\tuniform float opacity;\r\n\r\n\t\t#ifdef USE_DASH\r\n\r\n\t\t\tuniform float dashSize;\r\n\t\t\tuniform float dashOffset;\r\n\t\t\tuniform float gapSize;\r\n\r\n\t\t#endif\r\n\r\n\t\tvarying float vLineDistance;\r\n\r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\t\t#include \r\n\r\n\t\tvarying vec2 vUv;\r\n\r\n\t\tvoid main() {\r\n\r\n\t\t\t#include \r\n\r\n\t\t\t#ifdef USE_DASH\r\n\r\n\t\t\t\tif ( vUv.y < - 1.0 || vUv.y > 1.0 ) discard; // discard endcaps\r\n\r\n\t\t\t\tif ( mod( vLineDistance + dashOffset, dashSize + gapSize ) > dashSize ) discard; // todo - FIX\r\n\r\n\t\t\t#endif\r\n\r\n\t\t\tif ( abs( vUv.y ) > 1.0 ) {\r\n\r\n\t\t\t\tfloat a = vUv.x;\r\n\t\t\t\tfloat b = ( vUv.y > 0.0 ) ? vUv.y - 1.0 : vUv.y + 1.0;\r\n\t\t\t\tfloat len2 = a * a + b * b;\r\n\r\n\t\t\t\tif ( len2 > 1.0 ) discard;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvec4 diffuseColor = vec4( diffuse, opacity );\r\n\r\n\t\t\t#include \r\n\t\t\t#include \r\n\r\n\t\t\tgl_FragColor = vec4( diffuseColor.rgb, diffuseColor.a );\r\n\r\n\t\t\t#include \r\n\t\t\t#include \r\n\t\t\t#include \r\n\t\t\t#include \r\n\r\n\t\t}\r\n\t\t`\r\n};\r\n\r\nvar LineMaterial = function ( parameters ) {\r\n\r\n\tShaderMaterial.call( this, {\r\n\r\n\t\ttype: 'LineMaterial',\r\n\r\n\t\tuniforms: UniformsUtils.clone( ShaderLib[ 'line' ].uniforms ),\r\n\r\n\t\tvertexShader: ShaderLib[ 'line' ].vertexShader,\r\n\t\tfragmentShader: ShaderLib[ 'line' ].fragmentShader,\r\n\r\n\t\tclipping: true // required for clipping support\r\n\r\n\t} );\r\n\r\n\tthis.dashed = false;\r\n\r\n\tObject.defineProperties( this, {\r\n\r\n\t\tcolor: {\r\n\r\n\t\t\tenumerable: true,\r\n\r\n\t\t\tget: function () {\r\n\r\n\t\t\t\treturn this.uniforms.diffuse.value;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tset: function ( value ) {\r\n\r\n\t\t\t\tthis.uniforms.diffuse.value = value;\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tlinewidth: {\r\n\r\n\t\t\tenumerable: true,\r\n\r\n\t\t\tget: function () {\r\n\r\n\t\t\t\treturn this.uniforms.linewidth.value;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tset: function ( value ) {\r\n\r\n\t\t\t\tthis.uniforms.linewidth.value = value;\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tdashScale: {\r\n\r\n\t\t\tenumerable: true,\r\n\r\n\t\t\tget: function () {\r\n\r\n\t\t\t\treturn this.uniforms.dashScale.value;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tset: function ( value ) {\r\n\r\n\t\t\t\tthis.uniforms.dashScale.value = value;\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tdashSize: {\r\n\r\n\t\t\tenumerable: true,\r\n\r\n\t\t\tget: function () {\r\n\r\n\t\t\t\treturn this.uniforms.dashSize.value;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tset: function ( value ) {\r\n\r\n\t\t\t\tthis.uniforms.dashSize.value = value;\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tdashOffset: {\r\n\r\n\t\t\tenumerable: true,\r\n\r\n\t\t\tget: function () {\r\n\r\n\t\t\t\treturn this.uniforms.dashOffset.value;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tset: function ( value ) {\r\n\r\n\t\t\t\tthis.uniforms.dashOffset.value = value;\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tgapSize: {\r\n\r\n\t\t\tenumerable: true,\r\n\r\n\t\t\tget: function () {\r\n\r\n\t\t\t\treturn this.uniforms.gapSize.value;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tset: function ( value ) {\r\n\r\n\t\t\t\tthis.uniforms.gapSize.value = value;\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\topacity: {\r\n\r\n\t\t\tenumerable: true,\r\n\r\n\t\t\tget: function () {\r\n\r\n\t\t\t\treturn this.uniforms.opacity.value;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tset: function ( value ) {\r\n\r\n\t\t\t\tthis.uniforms.opacity.value = value;\r\n\r\n\t\t\t}\r\n\r\n\t\t},\r\n\r\n\t\tresolution: {\r\n\r\n\t\t\tenumerable: true,\r\n\r\n\t\t\tget: function () {\r\n\r\n\t\t\t\treturn this.uniforms.resolution.value;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tset: function ( value ) {\r\n\r\n\t\t\t\tthis.uniforms.resolution.value.copy( value );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t} );\r\n\r\n\tthis.setValues( parameters );\r\n\r\n};\r\n\r\nLineMaterial.prototype = Object.create( ShaderMaterial.prototype );\r\nLineMaterial.prototype.constructor = LineMaterial;\r\n\r\nLineMaterial.prototype.isLineMaterial = true;\r\n\r\nexport { LineMaterial };\r\n","import {\r\n\tInstancedInterleavedBuffer,\r\n\tInterleavedBufferAttribute,\r\n\tLine3,\r\n\tMathUtils,\r\n\tMatrix4,\r\n\tMesh,\r\n\tVector3,\r\n\tVector4\r\n} from '../build/three.module.js';\r\nimport { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js';\r\nimport { LineMaterial } from '../lines/LineMaterial.js';\r\n\r\nvar LineSegments2 = function ( geometry, material ) {\r\n\r\n\tif ( geometry === undefined ) geometry = new LineSegmentsGeometry();\r\n\tif ( material === undefined ) material = new LineMaterial( { color: Math.random() * 0xffffff } );\r\n\r\n\tMesh.call( this, geometry, material );\r\n\r\n\tthis.type = 'LineSegments2';\r\n\r\n};\r\n\r\nLineSegments2.prototype = Object.assign( Object.create( Mesh.prototype ), {\r\n\r\n\tconstructor: LineSegments2,\r\n\r\n\tisLineSegments2: true,\r\n\r\n\tcomputeLineDistances: ( function () { // for backwards-compatability, but could be a method of LineSegmentsGeometry...\r\n\r\n\t\tvar start = new Vector3();\r\n\t\tvar end = new Vector3();\r\n\r\n\t\treturn function computeLineDistances() {\r\n\r\n\t\t\tvar geometry = this.geometry;\r\n\r\n\t\t\tvar instanceStart = geometry.attributes.instanceStart;\r\n\t\t\tvar instanceEnd = geometry.attributes.instanceEnd;\r\n\t\t\tvar lineDistances = new Float32Array( 2 * instanceStart.data.count );\r\n\r\n\t\t\tfor ( var i = 0, j = 0, l = instanceStart.data.count; i < l; i ++, j += 2 ) {\r\n\r\n\t\t\t\tstart.fromBufferAttribute( instanceStart, i );\r\n\t\t\t\tend.fromBufferAttribute( instanceEnd, i );\r\n\r\n\t\t\t\tlineDistances[ j ] = ( j === 0 ) ? 0 : lineDistances[ j - 1 ];\r\n\t\t\t\tlineDistances[ j + 1 ] = lineDistances[ j ] + start.distanceTo( end );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar instanceDistanceBuffer = new InstancedInterleavedBuffer( lineDistances, 2, 1 ); // d0, d1\r\n\r\n\t\t\tgeometry.setAttribute( 'instanceDistanceStart', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 0 ) ); // d0\r\n\t\t\tgeometry.setAttribute( 'instanceDistanceEnd', new InterleavedBufferAttribute( instanceDistanceBuffer, 1, 1 ) ); // d1\r\n\r\n\t\t\treturn this;\r\n\r\n\t\t};\r\n\r\n\t}() ),\r\n\r\n\traycast: ( function () {\r\n\r\n\t\tvar start = new Vector4();\r\n\t\tvar end = new Vector4();\r\n\r\n\t\tvar ssOrigin = new Vector4();\r\n\t\tvar ssOrigin3 = new Vector3();\r\n\t\tvar mvMatrix = new Matrix4();\r\n\t\tvar line = new Line3();\r\n\t\tvar closestPoint = new Vector3();\r\n\r\n\t\treturn function raycast( raycaster, intersects ) {\r\n\r\n\t\t\tif ( raycaster.camera === null ) {\r\n\r\n\t\t\t\tconsole.error( 'LineSegments2: \"Raycaster.camera\" needs to be set in order to raycast against LineSegments2.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar threshold = ( raycaster.params.Line2 !== undefined ) ? raycaster.params.Line2.threshold || 0 : 0;\r\n\r\n\t\t\tvar ray = raycaster.ray;\r\n\t\t\tvar camera = raycaster.camera;\r\n\t\t\tvar projectionMatrix = camera.projectionMatrix;\r\n\r\n\t\t\tvar geometry = this.geometry;\r\n\t\t\tvar material = this.material;\r\n\t\t\tvar resolution = material.resolution;\r\n\t\t\tvar lineWidth = material.linewidth + threshold;\r\n\r\n\t\t\tvar instanceStart = geometry.attributes.instanceStart;\r\n\t\t\tvar instanceEnd = geometry.attributes.instanceEnd;\r\n\r\n\t\t\t// pick a point 1 unit out along the ray to avoid the ray origin\r\n\t\t\t// sitting at the camera origin which will cause \"w\" to be 0 when\r\n\t\t\t// applying the projection matrix.\r\n\t\t\tray.at( 1, ssOrigin );\r\n\r\n\t\t\t// ndc space [ - 1.0, 1.0 ]\r\n\t\t\tssOrigin.w = 1;\r\n\t\t\tssOrigin.applyMatrix4( camera.matrixWorldInverse );\r\n\t\t\tssOrigin.applyMatrix4( projectionMatrix );\r\n\t\t\tssOrigin.multiplyScalar( 1 / ssOrigin.w );\r\n\r\n\t\t\t// screen space\r\n\t\t\tssOrigin.x *= resolution.x / 2;\r\n\t\t\tssOrigin.y *= resolution.y / 2;\r\n\t\t\tssOrigin.z = 0;\r\n\r\n\t\t\tssOrigin3.copy( ssOrigin );\r\n\r\n\t\t\tvar matrixWorld = this.matrixWorld;\r\n\t\t\tmvMatrix.multiplyMatrices( camera.matrixWorldInverse, matrixWorld );\r\n\r\n\t\t\tfor ( var i = 0, l = instanceStart.count; i < l; i ++ ) {\r\n\r\n\t\t\t\tstart.fromBufferAttribute( instanceStart, i );\r\n\t\t\t\tend.fromBufferAttribute( instanceEnd, i );\r\n\r\n\t\t\t\tstart.w = 1;\r\n\t\t\t\tend.w = 1;\r\n\r\n\t\t\t\t// camera space\r\n\t\t\t\tstart.applyMatrix4( mvMatrix );\r\n\t\t\t\tend.applyMatrix4( mvMatrix );\r\n\r\n\t\t\t\t// clip space\r\n\t\t\t\tstart.applyMatrix4( projectionMatrix );\r\n\t\t\t\tend.applyMatrix4( projectionMatrix );\r\n\r\n\t\t\t\t// ndc space [ - 1.0, 1.0 ]\r\n\t\t\t\tstart.multiplyScalar( 1 / start.w );\r\n\t\t\t\tend.multiplyScalar( 1 / end.w );\r\n\r\n\t\t\t\t// skip the segment if it's outside the camera near and far planes\r\n\t\t\t\tvar isBehindCameraNear = start.z < - 1 && end.z < - 1;\r\n\t\t\t\tvar isPastCameraFar = start.z > 1 && end.z > 1;\r\n\t\t\t\tif ( isBehindCameraNear || isPastCameraFar ) {\r\n\r\n\t\t\t\t\tcontinue;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// screen space\r\n\t\t\t\tstart.x *= resolution.x / 2;\r\n\t\t\t\tstart.y *= resolution.y / 2;\r\n\r\n\t\t\t\tend.x *= resolution.x / 2;\r\n\t\t\t\tend.y *= resolution.y / 2;\r\n\r\n\t\t\t\t// create 2d segment\r\n\t\t\t\tline.start.copy( start );\r\n\t\t\t\tline.start.z = 0;\r\n\r\n\t\t\t\tline.end.copy( end );\r\n\t\t\t\tline.end.z = 0;\r\n\r\n\t\t\t\t// get closest point on ray to segment\r\n\t\t\t\tvar param = line.closestPointToPointParameter( ssOrigin3, true );\r\n\t\t\t\tline.at( param, closestPoint );\r\n\r\n\t\t\t\t// check if the intersection point is within clip space\r\n\t\t\t\tvar zPos = MathUtils.lerp( start.z, end.z, param );\r\n\t\t\t\tvar isInClipSpace = zPos >= - 1 && zPos <= 1;\r\n\r\n\t\t\t\tvar isInside = ssOrigin3.distanceTo( closestPoint ) < lineWidth * 0.5;\r\n\r\n\t\t\t\tif ( isInClipSpace && isInside ) {\r\n\r\n\t\t\t\t\tline.start.fromBufferAttribute( instanceStart, i );\r\n\t\t\t\t\tline.end.fromBufferAttribute( instanceEnd, i );\r\n\r\n\t\t\t\t\tline.start.applyMatrix4( matrixWorld );\r\n\t\t\t\t\tline.end.applyMatrix4( matrixWorld );\r\n\r\n\t\t\t\t\tvar pointOnLine = new Vector3();\r\n\t\t\t\t\tvar point = new Vector3();\r\n\r\n\t\t\t\t\tray.distanceSqToSegment( line.start, line.end, point, pointOnLine );\r\n\r\n\t\t\t\t\tintersects.push( {\r\n\r\n\t\t\t\t\t\tpoint: point,\r\n\t\t\t\t\t\tpointOnLine: pointOnLine,\r\n\t\t\t\t\t\tdistance: ray.origin.distanceTo( point ),\r\n\r\n\t\t\t\t\t\tobject: this,\r\n\t\t\t\t\t\tface: null,\r\n\t\t\t\t\t\tfaceIndex: i,\r\n\t\t\t\t\t\tuv: null,\r\n\t\t\t\t\t\tuv2: null,\r\n\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t}() )\r\n\r\n} );\r\n\r\nexport { LineSegments2 };\r\n","import { LineSegmentsGeometry } from '../lines/LineSegmentsGeometry.js';\r\n\r\nvar LineGeometry = function () {\r\n\r\n\tLineSegmentsGeometry.call( this );\r\n\r\n\tthis.type = 'LineGeometry';\r\n\r\n};\r\n\r\nLineGeometry.prototype = Object.assign( Object.create( LineSegmentsGeometry.prototype ), {\r\n\r\n\tconstructor: LineGeometry,\r\n\r\n\tisLineGeometry: true,\r\n\r\n\tsetPositions: function ( array ) {\r\n\r\n\t\t// converts [ x1, y1, z1, x2, y2, z2, ... ] to pairs format\r\n\r\n\t\tvar length = array.length - 3;\r\n\t\tvar points = new Float32Array( 2 * length );\r\n\r\n\t\tfor ( var i = 0; i < length; i += 3 ) {\r\n\r\n\t\t\tpoints[ 2 * i ] = array[ i ];\r\n\t\t\tpoints[ 2 * i + 1 ] = array[ i + 1 ];\r\n\t\t\tpoints[ 2 * i + 2 ] = array[ i + 2 ];\r\n\r\n\t\t\tpoints[ 2 * i + 3 ] = array[ i + 3 ];\r\n\t\t\tpoints[ 2 * i + 4 ] = array[ i + 4 ];\r\n\t\t\tpoints[ 2 * i + 5 ] = array[ i + 5 ];\r\n\r\n\t\t}\r\n\r\n\t\tLineSegmentsGeometry.prototype.setPositions.call( this, points );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tsetColors: function ( array ) {\r\n\r\n\t\t// converts [ r1, g1, b1, r2, g2, b2, ... ] to pairs format\r\n\r\n\t\tvar length = array.length - 3;\r\n\t\tvar colors = new Float32Array( 2 * length );\r\n\r\n\t\tfor ( var i = 0; i < length; i += 3 ) {\r\n\r\n\t\t\tcolors[ 2 * i ] = array[ i ];\r\n\t\t\tcolors[ 2 * i + 1 ] = array[ i + 1 ];\r\n\t\t\tcolors[ 2 * i + 2 ] = array[ i + 2 ];\r\n\r\n\t\t\tcolors[ 2 * i + 3 ] = array[ i + 3 ];\r\n\t\t\tcolors[ 2 * i + 4 ] = array[ i + 4 ];\r\n\t\t\tcolors[ 2 * i + 5 ] = array[ i + 5 ];\r\n\r\n\t\t}\r\n\r\n\t\tLineSegmentsGeometry.prototype.setColors.call( this, colors );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tfromLine: function ( line ) {\r\n\r\n\t\tvar geometry = line.geometry;\r\n\r\n\t\tif ( geometry.isGeometry ) {\r\n\r\n\t\t\tthis.setPositions( geometry.vertices );\r\n\r\n\t\t} else if ( geometry.isBufferGeometry ) {\r\n\r\n\t\t\tthis.setPositions( geometry.attributes.position.array ); // assumes non-indexed\r\n\r\n\t\t}\r\n\r\n\t\t// set colors, maybe\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\tcopy: function ( /* source */ ) {\r\n\r\n\t\t// todo\r\n\r\n\t\treturn this;\r\n\r\n\t}\r\n\r\n} );\r\n\r\nexport { LineGeometry };\r\n","import { LineSegments2 } from '../lines/LineSegments2.js';\r\nimport { LineGeometry } from '../lines/LineGeometry.js';\r\nimport { LineMaterial } from '../lines/LineMaterial.js';\r\n\r\nvar Line2 = function ( geometry, material ) {\r\n\r\n\tif ( geometry === undefined ) geometry = new LineGeometry();\r\n\tif ( material === undefined ) material = new LineMaterial( { color: Math.random() * 0xffffff } );\r\n\r\n\tLineSegments2.call( this, geometry, material );\r\n\r\n\tthis.type = 'Line2';\r\n\r\n};\r\n\r\nLine2.prototype = Object.assign( Object.create( LineSegments2.prototype ), {\r\n\r\n\tconstructor: Line2,\r\n\r\n\tisLine2: true\r\n\r\n} );\r\n\r\nexport { Line2 };\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {TextSprite} from \"../TextSprite.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {Line2} from \"../../libs/three.js/lines/Line2.js\";\r\nimport {LineGeometry} from \"../../libs/three.js/lines/LineGeometry.js\";\r\nimport {LineMaterial} from \"../../libs/three.js/lines/LineMaterial.js\";\r\n\r\nfunction createHeightLine(){\r\n\tlet lineGeometry = new LineGeometry();\r\n\r\n\tlineGeometry.setPositions([\r\n\t\t0, 0, 0,\r\n\t\t0, 0, 0,\r\n\t]);\r\n\r\n\tlet lineMaterial = new LineMaterial({ \r\n\t\tcolor: 0x00ff00, \r\n\t\tdashSize: 5, \r\n\t\tgapSize: 2,\r\n\t\tlinewidth: 2, \r\n\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t});\r\n\r\n\tlineMaterial.depthTest = false;\r\n\tconst heightEdge = new Line2(lineGeometry, lineMaterial);\r\n\theightEdge.visible = false;\r\n\r\n\t//this.add(this.heightEdge);\r\n\t\r\n\treturn heightEdge;\r\n}\r\n\r\nfunction createHeightLabel(){\r\n\tconst heightLabel = new TextSprite('');\r\n\r\n\theightLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\r\n\theightLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\theightLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\theightLabel.fontsize = 16;\r\n\theightLabel.material.depthTest = false;\r\n\theightLabel.material.opacity = 1;\r\n\theightLabel.visible = false;\r\n\r\n\treturn heightLabel;\r\n}\r\n\r\nfunction createAreaLabel(){\r\n\tconst areaLabel = new TextSprite('');\r\n\r\n\tareaLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\r\n\tareaLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\tareaLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\tareaLabel.fontsize = 16;\r\n\tareaLabel.material.depthTest = false;\r\n\tareaLabel.material.opacity = 1;\r\n\tareaLabel.visible = false;\r\n\t\r\n\treturn areaLabel;\r\n}\r\n\r\nfunction createCircleRadiusLabel(){\r\n\tconst circleRadiusLabel = new TextSprite(\"\");\r\n\r\n\tcircleRadiusLabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\r\n\tcircleRadiusLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\tcircleRadiusLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\tcircleRadiusLabel.fontsize = 16;\r\n\tcircleRadiusLabel.material.depthTest = false;\r\n\tcircleRadiusLabel.material.opacity = 1;\r\n\tcircleRadiusLabel.visible = false;\r\n\t\r\n\treturn circleRadiusLabel;\r\n}\r\n\r\nfunction createCircleRadiusLine(){\r\n\tconst lineGeometry = new LineGeometry();\r\n\r\n\tlineGeometry.setPositions([\r\n\t\t0, 0, 0,\r\n\t\t0, 0, 0,\r\n\t]);\r\n\r\n\tconst lineMaterial = new LineMaterial({ \r\n\t\tcolor: 0xff0000, \r\n\t\tlinewidth: 2, \r\n\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\tgapSize: 1,\r\n\t\tdashed: true,\r\n\t});\r\n\r\n\tlineMaterial.depthTest = false;\r\n\r\n\tconst circleRadiusLine = new Line2(lineGeometry, lineMaterial);\r\n\tcircleRadiusLine.visible = false;\r\n\r\n\treturn circleRadiusLine;\r\n}\r\n\r\nfunction createCircleLine(){\r\n\tconst coordinates = [];\r\n\r\n\tlet n = 128;\r\n\tfor(let i = 0; i <= n; i++){\r\n\t\tlet u0 = 2 * Math.PI * (i / n);\r\n\t\tlet u1 = 2 * Math.PI * (i + 1) / n;\r\n\r\n\t\tlet p0 = new THREE.Vector3(\r\n\t\t\tMath.cos(u0), \r\n\t\t\tMath.sin(u0), \r\n\t\t\t0\r\n\t\t);\r\n\r\n\t\tlet p1 = new THREE.Vector3(\r\n\t\t\tMath.cos(u1), \r\n\t\t\tMath.sin(u1), \r\n\t\t\t0\r\n\t\t);\r\n\r\n\t\tcoordinates.push(\r\n\t\t\t...p0.toArray(),\r\n\t\t\t...p1.toArray(),\r\n\t\t);\r\n\t}\r\n\r\n\tconst geometry = new LineGeometry();\r\n\tgeometry.setPositions(coordinates);\r\n\r\n\tconst material = new LineMaterial({ \r\n\t\tcolor: 0xff0000, \r\n\t\tdashSize: 5, \r\n\t\tgapSize: 2,\r\n\t\tlinewidth: 2, \r\n\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t});\r\n\r\n\tmaterial.depthTest = false;\r\n\r\n\tconst circleLine = new Line2(geometry, material);\r\n\tcircleLine.visible = false;\r\n\tcircleLine.computeLineDistances();\r\n\r\n\treturn circleLine;\r\n}\r\n\r\nfunction createCircleCenter(){\r\n\tconst sg = new THREE.SphereGeometry(1, 32, 32);\r\n\tconst sm = new THREE.MeshNormalMaterial();\r\n\t\r\n\tconst circleCenter = new THREE.Mesh(sg, sm);\r\n\tcircleCenter.visible = false;\r\n\r\n\treturn circleCenter;\r\n}\r\n\r\nfunction createLine(){\r\n\tconst geometry = new LineGeometry();\r\n\r\n\tgeometry.setPositions([\r\n\t\t0, 0, 0,\r\n\t\t0, 0, 0,\r\n\t]);\r\n\r\n\tconst material = new LineMaterial({ \r\n\t\tcolor: 0xff0000, \r\n\t\tlinewidth: 2, \r\n\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\tgapSize: 1,\r\n\t\tdashed: true,\r\n\t});\r\n\r\n\tmaterial.depthTest = false;\r\n\r\n\tconst line = new Line2(geometry, material);\r\n\r\n\treturn line;\r\n}\r\n\r\nfunction createCircle(){\r\n\r\n\tconst coordinates = [];\r\n\r\n\tlet n = 128;\r\n\tfor(let i = 0; i <= n; i++){\r\n\t\tlet u0 = 2 * Math.PI * (i / n);\r\n\t\tlet u1 = 2 * Math.PI * (i + 1) / n;\r\n\r\n\t\tlet p0 = new THREE.Vector3(\r\n\t\t\tMath.cos(u0), \r\n\t\t\tMath.sin(u0), \r\n\t\t\t0\r\n\t\t);\r\n\r\n\t\tlet p1 = new THREE.Vector3(\r\n\t\t\tMath.cos(u1), \r\n\t\t\tMath.sin(u1), \r\n\t\t\t0\r\n\t\t);\r\n\r\n\t\tcoordinates.push(\r\n\t\t\t...p0.toArray(),\r\n\t\t\t...p1.toArray(),\r\n\t\t);\r\n\t}\r\n\r\n\tconst geometry = new LineGeometry();\r\n\tgeometry.setPositions(coordinates);\r\n\r\n\tconst material = new LineMaterial({ \r\n\t\tcolor: 0xff0000, \r\n\t\tdashSize: 5, \r\n\t\tgapSize: 2,\r\n\t\tlinewidth: 2, \r\n\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t});\r\n\r\n\tmaterial.depthTest = false;\r\n\r\n\tconst line = new Line2(geometry, material);\r\n\tline.computeLineDistances();\r\n\r\n\treturn line;\r\n\r\n}\r\n\r\nfunction createAzimuth(){\r\n\r\n\tconst azimuth = {\r\n\t\tlabel: null,\r\n\t\tcenter: null,\r\n\t\ttarget: null,\r\n\t\tnorth: null,\r\n\t\tcenterToNorth: null,\r\n\t\tcenterToTarget: null,\r\n\t\tcenterToTargetground: null,\r\n\t\ttargetgroundToTarget: null,\r\n\t\tcircle: null,\r\n\r\n\t\tnode: null,\r\n\t};\r\n\r\n\tconst sg = new THREE.SphereGeometry(1, 32, 32);\r\n\tconst sm = new THREE.MeshNormalMaterial();\r\n\r\n\t{\r\n\t\tconst label = new TextSprite(\"\");\r\n\r\n\t\tlabel.setTextColor({r: 140, g: 250, b: 140, a: 1.0});\r\n\t\tlabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\t\tlabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\t\tlabel.fontsize = 16;\r\n\t\tlabel.material.depthTest = false;\r\n\t\tlabel.material.opacity = 1;\r\n\r\n\t\tazimuth.label = label;\r\n\t}\r\n\r\n\tazimuth.center = new THREE.Mesh(sg, sm);\r\n\tazimuth.target = new THREE.Mesh(sg, sm);\r\n\tazimuth.north = new THREE.Mesh(sg, sm);\r\n\tazimuth.centerToNorth = createLine();\r\n\tazimuth.centerToTarget = createLine();\r\n\tazimuth.centerToTargetground = createLine();\r\n\tazimuth.targetgroundToTarget = createLine();\r\n\tazimuth.circle = createCircle();\r\n\r\n\tazimuth.node = new THREE.Object3D();\r\n\tazimuth.node.add(\r\n\t\tazimuth.centerToNorth,\r\n\t\tazimuth.centerToTarget,\r\n\t\tazimuth.centerToTargetground,\r\n\t\tazimuth.targetgroundToTarget,\r\n\t\tazimuth.circle,\r\n\t\tazimuth.label,\r\n\t\tazimuth.center,\r\n\t\tazimuth.target,\r\n\t\tazimuth.north,\r\n\t);\r\n\r\n\treturn azimuth;\r\n}\r\n\r\nexport class Measure extends THREE.Object3D {\r\n\tconstructor () {\r\n\t\tsuper();\r\n\r\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\r\n\r\n\t\tthis.name = 'Measure_' + this.constructor.counter;\r\n\t\tthis.points = [];\r\n\t\tthis._showDistances = true;\r\n\t\tthis._showCoordinates = false;\r\n\t\tthis._showArea = false;\r\n\t\tthis._closed = true;\r\n\t\tthis._showAngles = false;\r\n\t\tthis._showCircle = false;\r\n\t\tthis._showHeight = false;\r\n\t\tthis._showEdges = true;\r\n\t\tthis._showAzimuth = false;\r\n\t\tthis.maxMarkers = Number.MAX_SAFE_INTEGER;\r\n\r\n\t\tthis.sphereGeometry = new THREE.SphereGeometry(0.4, 10, 10);\r\n\t\tthis.color = new THREE.Color(0xff0000);\r\n\r\n\t\tthis.spheres = [];\r\n\t\tthis.edges = [];\r\n\t\tthis.sphereLabels = [];\r\n\t\tthis.edgeLabels = [];\r\n\t\tthis.angleLabels = [];\r\n\t\tthis.coordinateLabels = [];\r\n\r\n\t\tthis.heightEdge = createHeightLine();\r\n\t\tthis.heightLabel = createHeightLabel();\r\n\t\tthis.areaLabel = createAreaLabel();\r\n\t\tthis.circleRadiusLabel = createCircleRadiusLabel();\r\n\t\tthis.circleRadiusLine = createCircleRadiusLine();\r\n\t\tthis.circleLine = createCircleLine();\r\n\t\tthis.circleCenter = createCircleCenter();\r\n\r\n\t\tthis.azimuth = createAzimuth();\r\n\r\n\t\tthis.add(this.heightEdge);\r\n\t\tthis.add(this.heightLabel);\r\n\t\tthis.add(this.areaLabel);\r\n\t\tthis.add(this.circleRadiusLabel);\r\n\t\tthis.add(this.circleRadiusLine);\r\n\t\tthis.add(this.circleLine);\r\n\t\tthis.add(this.circleCenter);\r\n\r\n\t\tthis.add(this.azimuth.node);\r\n\r\n\t}\r\n\r\n\tcreateSphereMaterial () {\r\n\t\tlet sphereMaterial = new THREE.MeshLambertMaterial({\r\n\t\t\t//shading: THREE.SmoothShading,\r\n\t\t\tcolor: this.color,\r\n\t\t\tdepthTest: false,\r\n\t\t\tdepthWrite: false}\r\n\t\t);\r\n\r\n\t\treturn sphereMaterial;\r\n\t};\r\n\r\n\taddMarker (point) {\r\n\t\tif (point.x != null) {\r\n\t\t\tpoint = {position: point};\r\n\t\t}else if(point instanceof Array){\r\n\t\t\tpoint = {position: new THREE.Vector3(...point)};\r\n\t\t}\r\n\t\tthis.points.push(point);\r\n\r\n\t\t// sphere\r\n\t\tlet sphere = new THREE.Mesh(this.sphereGeometry, this.createSphereMaterial());\r\n\r\n\t\tthis.add(sphere);\r\n\t\tthis.spheres.push(sphere);\r\n\r\n\t\t{ // edges\r\n\t\t\tlet lineGeometry = new LineGeometry();\r\n\t\t\tlineGeometry.setPositions( [\r\n\t\t\t\t\t0, 0, 0,\r\n\t\t\t\t\t0, 0, 0,\r\n\t\t\t]);\r\n\r\n\t\t\tlet lineMaterial = new LineMaterial({\r\n\t\t\t\tcolor: 0xff0000, \r\n\t\t\t\tlinewidth: 2, \r\n\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t});\r\n\r\n\t\t\tlineMaterial.depthTest = false;\r\n\r\n\t\t\tlet edge = new Line2(lineGeometry, lineMaterial);\r\n\t\t\tedge.visible = true;\r\n\r\n\t\t\tthis.add(edge);\r\n\t\t\tthis.edges.push(edge);\r\n\t\t}\r\n\r\n\t\t{ // edge labels\r\n\t\t\tlet edgeLabel = new TextSprite();\r\n\t\t\tedgeLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\t\t\tedgeLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\t\t\tedgeLabel.material.depthTest = false;\r\n\t\t\tedgeLabel.visible = false;\r\n\t\t\tedgeLabel.fontsize = 16;\r\n\t\t\tthis.edgeLabels.push(edgeLabel);\r\n\t\t\tthis.add(edgeLabel);\r\n\t\t}\r\n\r\n\t\t{ // angle labels\r\n\t\t\tlet angleLabel = new TextSprite();\r\n\t\t\tangleLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\t\t\tangleLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\t\t\tangleLabel.fontsize = 16;\r\n\t\t\tangleLabel.material.depthTest = false;\r\n\t\t\tangleLabel.material.opacity = 1;\r\n\t\t\tangleLabel.visible = false;\r\n\t\t\tthis.angleLabels.push(angleLabel);\r\n\t\t\tthis.add(angleLabel);\r\n\t\t}\r\n\r\n\t\t{ // coordinate labels\r\n\t\t\tlet coordinateLabel = new TextSprite();\r\n\t\t\tcoordinateLabel.setBorderColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\t\t\tcoordinateLabel.setBackgroundColor({r: 0, g: 0, b: 0, a: 1.0});\r\n\t\t\tcoordinateLabel.fontsize = 16;\r\n\t\t\tcoordinateLabel.material.depthTest = false;\r\n\t\t\tcoordinateLabel.material.opacity = 1;\r\n\t\t\tcoordinateLabel.visible = false;\r\n\t\t\tthis.coordinateLabels.push(coordinateLabel);\r\n\t\t\tthis.add(coordinateLabel);\r\n\t\t}\r\n\r\n\t\t{ // Event Listeners\r\n\t\t\tlet drag = (e) => {\r\n\t\t\t\tlet I = Utils.getMousePointCloudIntersection(\r\n\t\t\t\t\te.drag.end, \r\n\t\t\t\t\te.viewer.scene.getActiveCamera(), \r\n\t\t\t\t\te.viewer, \r\n\t\t\t\t\te.viewer.scene.pointclouds,\r\n\t\t\t\t\t{pickClipped: true});\r\n\r\n\t\t\t\tif (I) {\r\n\t\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\r\n\t\t\t\t\tif (i !== -1) {\r\n\t\t\t\t\t\tlet point = this.points[i];\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t// loop through current keys and cleanup ones that will be orphaned\r\n\t\t\t\t\t\tfor (let key of Object.keys(point)) {\r\n\t\t\t\t\t\t\tif (!I.point[key]) {\r\n\t\t\t\t\t\t\t\tdelete point[key];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tfor (let key of Object.keys(I.point).filter(e => e !== 'position')) {\r\n\t\t\t\t\t\t\tpoint[key] = I.point[key];\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.setPosition(i, I.location);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tlet drop = e => {\r\n\t\t\t\tlet i = this.spheres.indexOf(e.drag.object);\r\n\t\t\t\tif (i !== -1) {\r\n\t\t\t\t\tthis.dispatchEvent({\r\n\t\t\t\t\t\t'type': 'marker_dropped',\r\n\t\t\t\t\t\t'measurement': this,\r\n\t\t\t\t\t\t'index': i\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tlet mouseover = (e) => e.object.material.emissive.setHex(0x888888);\r\n\t\t\tlet mouseleave = (e) => e.object.material.emissive.setHex(0x000000);\r\n\r\n\t\t\tsphere.addEventListener('drag', drag);\r\n\t\t\tsphere.addEventListener('drop', drop);\r\n\t\t\tsphere.addEventListener('mouseover', mouseover);\r\n\t\t\tsphere.addEventListener('mouseleave', mouseleave);\r\n\t\t}\r\n\r\n\t\tlet event = {\r\n\t\t\ttype: 'marker_added',\r\n\t\t\tmeasurement: this,\r\n\t\t\tsphere: sphere\r\n\t\t};\r\n\t\tthis.dispatchEvent(event);\r\n\r\n\t\tthis.setMarker(this.points.length - 1, point);\r\n\t};\r\n\r\n\tremoveMarker (index) {\r\n\t\tthis.points.splice(index, 1);\r\n\r\n\t\tthis.remove(this.spheres[index]);\r\n\r\n\t\tlet edgeIndex = (index === 0) ? 0 : (index - 1);\r\n\t\tthis.remove(this.edges[edgeIndex]);\r\n\t\tthis.edges.splice(edgeIndex, 1);\r\n\r\n\t\tthis.remove(this.edgeLabels[edgeIndex]);\r\n\t\tthis.edgeLabels.splice(edgeIndex, 1);\r\n\t\tthis.coordinateLabels.splice(index, 1);\r\n\r\n\t\tthis.remove(this.angleLabels[index]);\r\n\t\tthis.angleLabels.splice(index, 1);\r\n\r\n\t\tthis.spheres.splice(index, 1);\r\n\r\n\t\tthis.update();\r\n\r\n\t\tthis.dispatchEvent({type: 'marker_removed', measurement: this});\r\n\t};\r\n\r\n\tsetMarker (index, point) {\r\n\t\tthis.points[index] = point;\r\n\r\n\t\tlet event = {\r\n\t\t\ttype: 'marker_moved',\r\n\t\t\tmeasure:\tthis,\r\n\t\t\tindex:\tindex,\r\n\t\t\tposition: point.position.clone()\r\n\t\t};\r\n\t\tthis.dispatchEvent(event);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tsetPosition (index, position) {\r\n\t\tlet point = this.points[index];\r\n\t\tpoint.position.copy(position);\r\n\r\n\t\tlet event = {\r\n\t\t\ttype: 'marker_moved',\r\n\t\t\tmeasure:\tthis,\r\n\t\t\tindex:\tindex,\r\n\t\t\tposition: position.clone()\r\n\t\t};\r\n\t\tthis.dispatchEvent(event);\r\n\r\n\t\tthis.update();\r\n\t};\r\n\r\n\tgetArea () {\r\n\t\tlet area = 0;\r\n\t\tlet j = this.points.length - 1;\r\n\r\n\t\tfor (let i = 0; i < this.points.length; i++) {\r\n\t\t\tlet p1 = this.points[i].position;\r\n\t\t\tlet p2 = this.points[j].position;\r\n\t\t\tarea += (p2.x + p1.x) * (p1.y - p2.y);\r\n\t\t\tj = i;\r\n\t\t}\r\n\r\n\t\treturn Math.abs(area / 2);\r\n\t};\r\n\r\n\tgetTotalDistance () {\r\n\t\tif (this.points.length === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet distance = 0;\r\n\r\n\t\tfor (let i = 1; i < this.points.length; i++) {\r\n\t\t\tlet prev = this.points[i - 1].position;\r\n\t\t\tlet curr = this.points[i].position;\r\n\t\t\tlet d = prev.distanceTo(curr);\r\n\r\n\t\t\tdistance += d;\r\n\t\t}\r\n\r\n\t\tif (this.closed && this.points.length > 1) {\r\n\t\t\tlet first = this.points[0].position;\r\n\t\t\tlet last = this.points[this.points.length - 1].position;\r\n\t\t\tlet d = last.distanceTo(first);\r\n\r\n\t\t\tdistance += d;\r\n\t\t}\r\n\r\n\t\treturn distance;\r\n\t}\r\n\r\n\tgetAngleBetweenLines (cornerPoint, point1, point2) {\r\n\t\tlet v1 = new THREE.Vector3().subVectors(point1.position, cornerPoint.position);\r\n\t\tlet v2 = new THREE.Vector3().subVectors(point2.position, cornerPoint.position);\r\n\r\n\t\t// avoid the error printed by threejs if denominator is 0\r\n\t\tconst denominator = Math.sqrt( v1.lengthSq() * v2.lengthSq() );\r\n\t\tif(denominator === 0){\r\n\t\t\treturn 0;\r\n\t\t}else{\r\n\t\t\treturn v1.angleTo(v2);\r\n\t\t}\r\n\t};\r\n\r\n\tgetAngle (index) {\r\n\t\tif (this.points.length < 3 || index >= this.points.length) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\tlet previous = (index === 0) ? this.points[this.points.length - 1] : this.points[index - 1];\r\n\t\tlet point = this.points[index];\r\n\t\tlet next = this.points[(index + 1) % (this.points.length)];\r\n\r\n\t\treturn this.getAngleBetweenLines(point, previous, next);\r\n\t}\r\n\r\n\t// updateAzimuth(){\r\n\t// \t// if(this.points.length !== 2){\r\n\t// \t// \treturn;\r\n\t// \t// }\r\n\r\n\t// \t// const azimuth = this.azimuth;\r\n\r\n\t// \t// const [p0, p1] = this.points;\r\n\r\n\t// \t// const r = p0.position.distanceTo(p1.position);\r\n\t\t\r\n\t// }\r\n\r\n\tupdate () {\r\n\t\tif (this.points.length === 0) {\r\n\t\t\treturn;\r\n\t\t} else if (this.points.length === 1) {\r\n\t\t\tlet point = this.points[0];\r\n\t\t\tlet position = point.position;\r\n\t\t\tthis.spheres[0].position.copy(position);\r\n\r\n\t\t\t{ // coordinate labels\r\n\t\t\t\tlet coordinateLabel = this.coordinateLabels[0];\r\n\t\t\t\t\r\n\t\t\t\tlet msg = position.toArray().map(p => Utils.addCommas(p.toFixed(2))).join(\" / \");\r\n\t\t\t\tcoordinateLabel.setText(msg);\r\n\r\n\t\t\t\tcoordinateLabel.visible = this.showCoordinates;\r\n\t\t\t}\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet lastIndex = this.points.length - 1;\r\n\r\n\t\tlet centroid = new THREE.Vector3();\r\n\t\tfor (let i = 0; i <= lastIndex; i++) {\r\n\t\t\tlet point = this.points[i];\r\n\t\t\tcentroid.add(point.position);\r\n\t\t}\r\n\t\tcentroid.divideScalar(this.points.length);\r\n\r\n\t\tfor (let i = 0; i <= lastIndex; i++) {\r\n\t\t\tlet index = i;\r\n\t\t\tlet nextIndex = (i + 1 > lastIndex) ? 0 : i + 1;\r\n\t\t\tlet previousIndex = (i === 0) ? lastIndex : i - 1;\r\n\r\n\t\t\tlet point = this.points[index];\r\n\t\t\tlet nextPoint = this.points[nextIndex];\r\n\t\t\tlet previousPoint = this.points[previousIndex];\r\n\r\n\t\t\tlet sphere = this.spheres[index];\r\n\r\n\t\t\t// spheres\r\n\t\t\tsphere.position.copy(point.position);\r\n\t\t\tsphere.material.color = this.color;\r\n\r\n\t\t\t{ // edges\r\n\t\t\t\tlet edge = this.edges[index];\r\n\r\n\t\t\t\tedge.material.color = this.color;\r\n\r\n\t\t\t\tedge.position.copy(point.position);\r\n\r\n\t\t\t\tedge.geometry.setPositions([\r\n\t\t\t\t\t0, 0, 0,\r\n\t\t\t\t\t...nextPoint.position.clone().sub(point.position).toArray(),\r\n\t\t\t\t]);\r\n\r\n\t\t\t\tedge.geometry.verticesNeedUpdate = true;\r\n\t\t\t\tedge.geometry.computeBoundingSphere();\r\n\t\t\t\tedge.computeLineDistances();\r\n\t\t\t\tedge.visible = index < lastIndex || this.closed;\r\n\t\t\t\t\r\n\t\t\t\tif(!this.showEdges){\r\n\t\t\t\t\tedge.visible = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t{ // edge labels\r\n\t\t\t\tlet edgeLabel = this.edgeLabels[i];\r\n\r\n\t\t\t\tlet center = new THREE.Vector3().add(point.position);\r\n\t\t\t\tcenter.add(nextPoint.position);\r\n\t\t\t\tcenter = center.multiplyScalar(0.5);\r\n\t\t\t\tlet distance = point.position.distanceTo(nextPoint.position);\r\n\r\n\t\t\t\tedgeLabel.position.copy(center);\r\n\r\n\t\t\t\tlet suffix = \"\";\r\n\t\t\t\tif(this.lengthUnit != null && this.lengthUnitDisplay != null){\r\n\t\t\t\t\tdistance = distance / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit\r\n\t\t\t\t\tsuffix = this.lengthUnitDisplay.code;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet txtLength = Utils.addCommas(distance.toFixed(2));\r\n\t\t\t\tedgeLabel.setText(`${txtLength} ${suffix}`);\r\n\t\t\t\tedgeLabel.visible = this.showDistances && (index < lastIndex || this.closed) && this.points.length >= 2 && distance > 0;\r\n\t\t\t}\r\n\r\n\t\t\t{ // angle labels\r\n\t\t\t\tlet angleLabel = this.angleLabels[i];\r\n\t\t\t\tlet angle = this.getAngleBetweenLines(point, previousPoint, nextPoint);\r\n\r\n\t\t\t\tlet dir = nextPoint.position.clone().sub(previousPoint.position);\r\n\t\t\t\tdir.multiplyScalar(0.5);\r\n\t\t\t\tdir = previousPoint.position.clone().add(dir).sub(point.position).normalize();\r\n\r\n\t\t\t\tlet dist = Math.min(point.position.distanceTo(previousPoint.position), point.position.distanceTo(nextPoint.position));\r\n\t\t\t\tdist = dist / 9;\r\n\r\n\t\t\t\tlet labelPos = point.position.clone().add(dir.multiplyScalar(dist));\r\n\t\t\t\tangleLabel.position.copy(labelPos);\r\n\r\n\t\t\t\tlet msg = Utils.addCommas((angle * (180.0 / Math.PI)).toFixed(1)) + '\\u00B0';\r\n\t\t\t\tangleLabel.setText(msg);\r\n\r\n\t\t\t\tangleLabel.visible = this.showAngles && (index < lastIndex || this.closed) && this.points.length >= 3 && angle > 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // update height stuff\r\n\t\t\tlet heightEdge = this.heightEdge;\r\n\t\t\theightEdge.visible = this.showHeight;\r\n\t\t\tthis.heightLabel.visible = this.showHeight;\r\n\r\n\t\t\tif (this.showHeight) {\r\n\t\t\t\tlet sorted = this.points.slice().sort((a, b) => a.position.z - b.position.z);\r\n\t\t\t\tlet lowPoint = sorted[0].position.clone();\r\n\t\t\t\tlet highPoint = sorted[sorted.length - 1].position.clone();\r\n\t\t\t\tlet min = lowPoint.z;\r\n\t\t\t\tlet max = highPoint.z;\r\n\t\t\t\tlet height = max - min;\r\n\r\n\t\t\t\tlet start = new THREE.Vector3(highPoint.x, highPoint.y, min);\r\n\t\t\t\tlet end = new THREE.Vector3(highPoint.x, highPoint.y, max);\r\n\r\n\t\t\t\theightEdge.position.copy(lowPoint);\r\n\r\n\t\t\t\theightEdge.geometry.setPositions([\r\n\t\t\t\t\t0, 0, 0,\r\n\t\t\t\t\t...start.clone().sub(lowPoint).toArray(),\r\n\t\t\t\t\t...start.clone().sub(lowPoint).toArray(),\r\n\t\t\t\t\t...end.clone().sub(lowPoint).toArray(),\r\n\t\t\t\t]);\r\n\r\n\t\t\t\theightEdge.geometry.verticesNeedUpdate = true;\r\n\t\t\t\t// heightEdge.geometry.computeLineDistances();\r\n\t\t\t\t// heightEdge.geometry.lineDistancesNeedUpdate = true;\r\n\t\t\t\theightEdge.geometry.computeBoundingSphere();\r\n\t\t\t\theightEdge.computeLineDistances();\r\n\r\n\t\t\t\t// heightEdge.material.dashSize = height / 40;\r\n\t\t\t\t// heightEdge.material.gapSize = height / 40;\r\n\r\n\t\t\t\tlet heightLabelPosition = start.clone().add(end).multiplyScalar(0.5);\r\n\t\t\t\tthis.heightLabel.position.copy(heightLabelPosition);\r\n\r\n\t\t\t\tlet suffix = \"\";\r\n\t\t\t\tif(this.lengthUnit != null && this.lengthUnitDisplay != null){\r\n\t\t\t\t\theight = height / this.lengthUnit.unitspermeter * this.lengthUnitDisplay.unitspermeter; //convert to meters then to the display unit\r\n\t\t\t\t\tsuffix = this.lengthUnitDisplay.code;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet txtHeight = Utils.addCommas(height.toFixed(2));\r\n\t\t\t\tlet msg = `${txtHeight} ${suffix}`;\r\n\t\t\t\tthis.heightLabel.setText(msg);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // update circle stuff\r\n\t\t\tconst circleRadiusLabel = this.circleRadiusLabel;\r\n\t\t\tconst circleRadiusLine = this.circleRadiusLine;\r\n\t\t\tconst circleLine = this.circleLine;\r\n\t\t\tconst circleCenter = this.circleCenter;\r\n\r\n\t\t\tconst circleOkay = this.points.length === 3;\r\n\r\n\t\t\tcircleRadiusLabel.visible = this.showCircle && circleOkay;\r\n\t\t\tcircleRadiusLine.visible = this.showCircle && circleOkay;\r\n\t\t\tcircleLine.visible = this.showCircle && circleOkay;\r\n\t\t\tcircleCenter.visible = this.showCircle && circleOkay;\r\n\r\n\t\t\tif(this.showCircle && circleOkay){\r\n\r\n\t\t\t\tconst A = this.points[0].position;\r\n\t\t\t\tconst B = this.points[1].position;\r\n\t\t\t\tconst C = this.points[2].position;\r\n\t\t\t\tconst AB = B.clone().sub(A);\r\n\t\t\t\tconst AC = C.clone().sub(A);\r\n\t\t\t\tconst N = AC.clone().cross(AB).normalize();\r\n\r\n\t\t\t\tconst center = Potree.Utils.computeCircleCenter(A, B, C);\r\n\t\t\t\tconst radius = center.distanceTo(A);\r\n\r\n\r\n\t\t\t\tconst scale = radius / 20;\r\n\t\t\t\tcircleCenter.position.copy(center);\r\n\t\t\t\tcircleCenter.scale.set(scale, scale, scale);\r\n\r\n\t\t\t\t//circleRadiusLine.geometry.vertices[0].set(0, 0, 0);\r\n\t\t\t\t//circleRadiusLine.geometry.vertices[1].copy(B.clone().sub(center));\r\n\r\n\t\t\t\tcircleRadiusLine.geometry.setPositions( [\r\n\t\t\t\t\t0, 0, 0,\r\n\t\t\t\t\t...B.clone().sub(center).toArray()\r\n\t\t\t\t] );\r\n\r\n\t\t\t\tcircleRadiusLine.geometry.verticesNeedUpdate = true;\r\n\t\t\t\tcircleRadiusLine.geometry.computeBoundingSphere();\r\n\t\t\t\tcircleRadiusLine.position.copy(center);\r\n\t\t\t\tcircleRadiusLine.computeLineDistances();\r\n\r\n\t\t\t\tconst target = center.clone().add(N);\r\n\t\t\t\tcircleLine.position.copy(center);\r\n\t\t\t\tcircleLine.scale.set(radius, radius, radius);\r\n\t\t\t\tcircleLine.lookAt(target);\r\n\t\t\t\t\r\n\t\t\t\tcircleRadiusLabel.visible = true;\r\n\t\t\t\tcircleRadiusLabel.position.copy(center.clone().add(B).multiplyScalar(0.5));\r\n\t\t\t\tcircleRadiusLabel.setText(`${radius.toFixed(3)}`);\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // update area label\r\n\t\t\tthis.areaLabel.position.copy(centroid);\r\n\t\t\tthis.areaLabel.visible = this.showArea && this.points.length >= 3;\r\n\t\t\tlet area = this.getArea();\r\n\r\n\t\t\tlet suffix = \"\";\r\n\t\t\tif(this.lengthUnit != null && this.lengthUnitDisplay != null){\r\n\t\t\t\tarea = area / Math.pow(this.lengthUnit.unitspermeter, 2) * Math.pow(this.lengthUnitDisplay.unitspermeter, 2); //convert to square meters then to the square display unit\r\n\t\t\t\tsuffix = this.lengthUnitDisplay.code;\r\n\t\t\t}\r\n\r\n\t\t\tlet txtArea = Utils.addCommas(area.toFixed(1));\r\n\t\t\tlet msg = `${txtArea} ${suffix}\\u00B2`;\r\n\t\t\tthis.areaLabel.setText(msg);\r\n\t\t}\r\n\r\n\t\t// this.updateAzimuth();\r\n\t};\r\n\r\n\traycast (raycaster, intersects) {\r\n\t\tfor (let i = 0; i < this.points.length; i++) {\r\n\t\t\tlet sphere = this.spheres[i];\r\n\r\n\t\t\tsphere.raycast(raycaster, intersects);\r\n\t\t}\r\n\r\n\t\t// recalculate distances because they are not necessarely correct\r\n\t\t// for scaled objects.\r\n\t\t// see https://github.com/mrdoob/three.js/issues/5827\r\n\t\t// TODO: remove this once the bug has been fixed\r\n\t\tfor (let i = 0; i < intersects.length; i++) {\r\n\t\t\tlet I = intersects[i];\r\n\t\t\tI.distance = raycaster.ray.origin.distanceTo(I.point);\r\n\t\t}\r\n\t\tintersects.sort(function (a, b) { return a.distance - b.distance; });\r\n\t};\r\n\r\n\tget showCoordinates () {\r\n\t\treturn this._showCoordinates;\r\n\t}\r\n\r\n\tset showCoordinates (value) {\r\n\t\tthis._showCoordinates = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tget showAngles () {\r\n\t\treturn this._showAngles;\r\n\t}\r\n\r\n\tset showAngles (value) {\r\n\t\tthis._showAngles = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tget showCircle () {\r\n\t\treturn this._showCircle;\r\n\t}\r\n\r\n\tset showCircle (value) {\r\n\t\tthis._showCircle = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tget showAzimuth(){\r\n\t\treturn this._showAzimuth;\r\n\t}\r\n\r\n\tset showAzimuth(value){\r\n\t\tthis._showAzimuth = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tget showEdges () {\r\n\t\treturn this._showEdges;\r\n\t}\r\n\r\n\tset showEdges (value) {\r\n\t\tthis._showEdges = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tget showHeight () {\r\n\t\treturn this._showHeight;\r\n\t}\r\n\r\n\tset showHeight (value) {\r\n\t\tthis._showHeight = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tget showArea () {\r\n\t\treturn this._showArea;\r\n\t}\r\n\r\n\tset showArea (value) {\r\n\t\tthis._showArea = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tget closed () {\r\n\t\treturn this._closed;\r\n\t}\r\n\r\n\tset closed (value) {\r\n\t\tthis._closed = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tget showDistances () {\r\n\t\treturn this._showDistances;\r\n\t}\r\n\r\n\tset showDistances (value) {\r\n\t\tthis._showDistances = value;\r\n\t\tthis.update();\r\n\t}\r\n\r\n}\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nexport class PolygonClipVolume extends THREE.Object3D{\r\n\t\r\n\tconstructor(camera){\r\n\t\tsuper();\r\n\r\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\r\n\t\tthis.name = \"polygon_clip_volume_\" + this.constructor.counter;\r\n\r\n\t\tthis.camera = camera.clone();\r\n\t\tthis.camera.rotation.set(...camera.rotation.toArray()); // [r85] workaround because camera.clone() doesn't work on rotation\r\n\t\tthis.camera.rotation.order = camera.rotation.order;\r\n\t\tthis.camera.updateMatrixWorld();\r\n\t\tthis.camera.updateProjectionMatrix();\r\n\t\tthis.camera.matrixWorldInverse.copy(this.camera.matrixWorld).invert();\r\n\r\n\t\tthis.viewMatrix = this.camera.matrixWorldInverse.clone();\r\n\t\tthis.projMatrix = this.camera.projectionMatrix.clone();\r\n\r\n\t\t// projected markers\r\n\t\tthis.markers = [];\r\n\t\tthis.initialized = false;\r\n\t}\r\n\r\n\taddMarker() {\r\n\r\n\t\tlet marker = new THREE.Mesh();\r\n\r\n\t\tlet cancel;\r\n\r\n\t\tlet drag = e => {\r\n\t\t\tlet size = e.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\t\tlet projectedPos = new THREE.Vector3(\r\n\t\t\t\t2.0 * (e.drag.end.x / size.width) - 1.0,\r\n\t\t\t\t-2.0 * (e.drag.end.y / size.height) + 1.0,\r\n\t\t\t\t0\r\n\t\t\t);\r\n\r\n\t\t\tmarker.position.copy(projectedPos);\r\n\t\t};\r\n\t\t\r\n\t\tlet drop = e => {\t\r\n\t\t\tcancel();\r\n\t\t};\r\n\t\t\r\n\t\tcancel = e => {\r\n\t\t\tmarker.removeEventListener(\"drag\", drag);\r\n\t\t\tmarker.removeEventListener(\"drop\", drop);\r\n\t\t};\r\n\t\t\r\n\t\tmarker.addEventListener(\"drag\", drag);\r\n\t\tmarker.addEventListener(\"drop\", drop);\r\n\r\n\r\n\t\tthis.markers.push(marker);\r\n\t}\r\n\r\n\tremoveLastMarker() {\r\n\t\tif(this.markers.length > 0) {\r\n\t\t\tthis.markers.splice(this.markers.length - 1, 1);\r\n\t\t}\r\n\t}\r\n\r\n};","\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\nimport {XHRFactory} from \"./XHRFactory.js\";\r\nimport {Volume} from \"./utils/Volume.js\";\r\nimport {Profile} from \"./utils/Profile.js\";\r\nimport {Measure} from \"./utils/Measure.js\";\r\nimport {PolygonClipVolume} from \"./utils/PolygonClipVolume.js\";\r\n\r\nexport class Utils {\r\n\tstatic async loadShapefileFeatures (file, callback) {\r\n\t\tlet features = [];\r\n\r\n\t\tlet handleFinish = () => {\r\n\t\t\tcallback(features);\r\n\t\t};\r\n\r\n\t\tlet source = await shapefile.open(file);\r\n\r\n\t\twhile(true){\r\n\t\t\tlet result = await source.read();\r\n\r\n\t\t\tif (result.done) {\r\n\t\t\t\thandleFinish();\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) {\r\n\t\t\t\tfeatures.push(result.value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tstatic toString (value) {\r\n\t\tif (value.x != null) {\r\n\t\t\treturn value.x.toFixed(2) + ', ' + value.y.toFixed(2) + ', ' + value.z.toFixed(2);\r\n\t\t} else {\r\n\t\t\treturn '' + value + '';\r\n\t\t}\r\n\t}\r\n\r\n\tstatic normalizeURL (url) {\r\n\t\tlet u = new URL(url);\r\n\r\n\t\treturn u.protocol + '//' + u.hostname + u.pathname.replace(/\\/+/g, '/');\r\n\t};\r\n\r\n\tstatic pathExists (url) {\r\n\t\tlet req = XHRFactory.createXMLHttpRequest();\r\n\t\treq.open('GET', url, false);\r\n\t\treq.send(null);\r\n\t\tif (req.status !== 200) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\r\n\tstatic debugSphere(parent, position, scale, color){\r\n\t\tlet geometry = new THREE.SphereGeometry(1, 8, 8);\r\n\t\tlet material;\r\n\r\n\t\tif(color !== undefined){\r\n\t\t\tmaterial = new THREE.MeshBasicMaterial({color: color});\r\n\t\t}else{\r\n\t\t\tmaterial = new THREE.MeshNormalMaterial();\r\n\t\t}\r\n\t\tlet sphere = new THREE.Mesh(geometry, material);\r\n\t\tsphere.position.copy(position);\r\n\t\tsphere.scale.set(scale, scale, scale);\r\n\t\tparent.add(sphere);\r\n\r\n\t\treturn sphere;\r\n\t}\r\n\r\n\tstatic debugLine(parent, start, end, color){\r\n\r\n\t\tlet material = new THREE.LineBasicMaterial({ color: color }); \r\n\t\tlet geometry = new THREE.Geometry();\r\n\r\n\t\tconst p1 = new THREE.Vector3(0, 0, 0);\r\n\t\tconst p2 = end.clone().sub(start);\r\n\r\n\t\tgeometry.vertices.push(p1, p2);\r\n\r\n\t\tlet tl = new THREE.Line( geometry, material );\r\n\t\ttl.position.copy(start);\r\n\r\n\t\tparent.add(tl);\r\n\r\n\t\tlet line = {\r\n\t\t\tnode: tl,\r\n\t\t\tset: (start, end) => {\r\n\t\t\t\tgeometry.vertices[0].copy(start);\r\n\t\t\t\tgeometry.vertices[1].copy(end);\r\n\t\t\t\tgeometry.verticesNeedUpdate = true;\r\n\t\t\t},\r\n\t\t};\r\n\r\n\t\treturn line;\r\n\t}\r\n\r\n\tstatic debugCircle(parent, center, radius, normal, color){\r\n\t\tlet material = new THREE.LineBasicMaterial({ color: color });\r\n\r\n\t\tlet geometry = new THREE.Geometry();\r\n\r\n\t\tlet n = 32;\r\n\t\tfor(let i = 0; i <= n; i++){\r\n\t\t\tlet u0 = 2 * Math.PI * (i / n);\r\n\t\t\tlet u1 = 2 * Math.PI * (i + 1) / n;\r\n\r\n\t\t\tlet p0 = new THREE.Vector3(\r\n\t\t\t\tMath.cos(u0), \r\n\t\t\t\tMath.sin(u0), \r\n\t\t\t\t0\r\n\t\t\t);\r\n\r\n\t\t\tlet p1 = new THREE.Vector3(\r\n\t\t\t\tMath.cos(u1), \r\n\t\t\t\tMath.sin(u1), \r\n\t\t\t\t0\r\n\t\t\t);\r\n\r\n\t\t\tgeometry.vertices.push(p0, p1); \r\n\t\t}\r\n\r\n\t\tlet tl = new THREE.Line( geometry, material ); \r\n\t\ttl.position.copy(center);\r\n\t\ttl.scale.set(radius, radius, radius);\r\n\r\n\t\tparent.add(tl);\r\n\t}\r\n\r\n\tstatic debugBox(parent, box, transform = new THREE.Matrix4(), color = 0xFFFF00){\r\n\t\t\r\n\t\tlet vertices = [\r\n\t\t\t[box.min.x, box.min.y, box.min.z],\r\n\t\t\t[box.min.x, box.min.y, box.max.z],\r\n\t\t\t[box.min.x, box.max.y, box.min.z],\r\n\t\t\t[box.min.x, box.max.y, box.max.z],\r\n\r\n\t\t\t[box.max.x, box.min.y, box.min.z],\r\n\t\t\t[box.max.x, box.min.y, box.max.z],\r\n\t\t\t[box.max.x, box.max.y, box.min.z],\r\n\t\t\t[box.max.x, box.max.y, box.max.z],\r\n\t\t].map(v => new THREE.Vector3(...v));\r\n\r\n\t\tlet edges = [\r\n\t\t\t[0, 4], [4, 5], [5, 1], [1, 0],\r\n\t\t\t[2, 6], [6, 7], [7, 3], [3, 2],\r\n\t\t\t[0, 2], [4, 6], [5, 7], [1, 3]\r\n\t\t];\r\n\r\n\t\tlet center = box.getCenter(new THREE.Vector3());\r\n\r\n\t\tlet centroids = [\r\n\t\t\t{position: [box.min.x, center.y, center.z], color: 0xFF0000},\r\n\t\t\t{position: [box.max.x, center.y, center.z], color: 0x880000},\r\n\r\n\t\t\t{position: [center.x, box.min.y, center.z], color: 0x00FF00},\r\n\t\t\t{position: [center.x, box.max.y, center.z], color: 0x008800},\r\n\r\n\t\t\t{position: [center.x, center.y, box.min.z], color: 0x0000FF},\r\n\t\t\t{position: [center.x, center.y, box.max.z], color: 0x000088},\r\n\t\t];\r\n\r\n\t\tfor(let vertex of vertices){\r\n\t\t\tlet pos = vertex.clone().applyMatrix4(transform);\r\n\r\n\t\t\tUtils.debugSphere(parent, pos, 0.1, 0xFF0000);\r\n\t\t}\r\n\r\n\t\tfor(let edge of edges){\r\n\t\t\tlet start = vertices[edge[0]].clone().applyMatrix4(transform);\r\n\t\t\tlet end = vertices[edge[1]].clone().applyMatrix4(transform);\r\n\r\n\t\t\tUtils.debugLine(parent, start, end, color);\r\n\t\t}\r\n\r\n\t\tfor(let centroid of centroids){\r\n\t\t\tlet pos = new THREE.Vector3(...centroid.position).applyMatrix4(transform);\r\n\r\n\t\t\tUtils.debugSphere(parent, pos, 0.1, centroid.color);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic debugPlane(parent, plane, size = 1, color = 0x0000FF){\r\n\r\n\t\tlet planehelper = new THREE.PlaneHelper(plane, size, color);\r\n\r\n\t\tparent.add(planehelper);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * adapted from mhluska at https://github.com/mrdoob/three.js/issues/1561\r\n\t */\r\n\tstatic computeTransformedBoundingBox (box, transform) {\r\n\t\tlet vertices = [\r\n\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform),\r\n\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.min.z).applyMatrix4(transform),\r\n\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.min.z).applyMatrix4(transform),\r\n\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.min.z).applyMatrix4(transform),\r\n\t\t\tnew THREE.Vector3(box.min.x, box.min.y, box.max.z).applyMatrix4(transform),\r\n\t\t\tnew THREE.Vector3(box.min.x, box.max.y, box.max.z).applyMatrix4(transform),\r\n\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.min.z).applyMatrix4(transform),\r\n\t\t\tnew THREE.Vector3(box.max.x, box.min.y, box.max.z).applyMatrix4(transform),\r\n\t\t\tnew THREE.Vector3(box.max.x, box.max.y, box.max.z).applyMatrix4(transform)\r\n\t\t];\r\n\r\n\t\tlet boundingBox = new THREE.Box3();\r\n\t\tboundingBox.setFromPoints(vertices);\r\n\r\n\t\treturn boundingBox;\r\n\t};\r\n\r\n\t/**\r\n\t * add separators to large numbers\r\n\t *\r\n\t * @param nStr\r\n\t * @returns\r\n\t */\r\n\tstatic addCommas (nStr) {\r\n\t\tnStr += '';\r\n\t\tlet x = nStr.split('.');\r\n\t\tlet x1 = x[0];\r\n\t\tlet x2 = x.length > 1 ? '.' + x[1] : '';\r\n\t\tlet rgx = /(\\d+)(\\d{3})/;\r\n\t\twhile (rgx.test(x1)) {\r\n\t\t\tx1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n\t\t}\r\n\t\treturn x1 + x2;\r\n\t};\r\n\r\n\tstatic removeCommas (str) {\r\n\t\treturn str.replace(/,/g, '');\r\n\t}\r\n\r\n\t/**\r\n\t * create worker from a string\r\n\t *\r\n\t * code from http://stackoverflow.com/questions/10343913/how-to-create-a-web-worker-from-a-string\r\n\t */\r\n\tstatic createWorker (code) {\r\n\t\tlet blob = new Blob([code], {type: 'application/javascript'});\r\n\t\tlet worker = new Worker(URL.createObjectURL(blob));\r\n\r\n\t\treturn worker;\r\n\t};\r\n\r\n\tstatic moveTo(scene, endPosition, endTarget){\r\n\r\n\t\tlet view = scene.view;\r\n\t\tlet camera = scene.getActiveCamera();\r\n\t\tlet animationDuration = 500;\r\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\r\n\r\n\t\t{ // animate camera position\r\n\t\t\tlet tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration);\r\n\t\t\ttween.easing(easing);\r\n\t\t\ttween.start();\r\n\t\t}\r\n\r\n\t\t{ // animate camera target\r\n\t\t\tlet camTargetDistance = camera.position.distanceTo(endTarget);\r\n\t\t\tlet target = new THREE.Vector3().addVectors(\r\n\t\t\t\tcamera.position,\r\n\t\t\t\tcamera.getWorldDirection(new THREE.Vector3()).clone().multiplyScalar(camTargetDistance)\r\n\t\t\t);\r\n\t\t\tlet tween = new TWEEN.Tween(target).to(endTarget, animationDuration);\r\n\t\t\ttween.easing(easing);\r\n\t\t\ttween.onUpdate(() => {\r\n\t\t\t\tview.lookAt(target);\r\n\t\t\t});\r\n\t\t\ttween.onComplete(() => {\r\n\t\t\t\tview.lookAt(target);\r\n\t\t\t});\r\n\t\t\ttween.start();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tstatic loadSkybox (path) {\r\n\t\tlet parent = new THREE.Object3D(\"skybox_root\");\r\n\r\n\t\tlet camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 100000);\r\n\t\tcamera.up.set(0, 0, 1);\r\n\t\tlet scene = new THREE.Scene();\r\n\r\n\t\tlet format = '.jpg';\r\n\t\tlet urls = [\r\n\t\t\tpath + 'px' + format, path + 'nx' + format,\r\n\t\t\tpath + 'py' + format, path + 'ny' + format,\r\n\t\t\tpath + 'pz' + format, path + 'nz' + format\r\n\t\t];\r\n\r\n\t\tlet materialArray = [];\r\n\t\t{\r\n\t\t\tfor (let i = 0; i < 6; i++) {\r\n\t\t\t\tlet material = new THREE.MeshBasicMaterial({\r\n\t\t\t\t\tmap: null,\r\n\t\t\t\t\tside: THREE.BackSide,\r\n\t\t\t\t\tdepthTest: false,\r\n\t\t\t\t\tdepthWrite: false,\r\n\t\t\t\t\tcolor: 0x424556\r\n\t\t\t\t});\r\n\r\n\t\t\t\tmaterialArray.push(material);\r\n\r\n\t\t\t\tlet loader = new THREE.TextureLoader();\r\n\t\t\t\tloader.load(urls[i],\r\n\t\t\t\t\tfunction loaded (texture) {\r\n\t\t\t\t\t\tmaterial.map = texture;\r\n\t\t\t\t\t\tmaterial.needsUpdate = true;\r\n\t\t\t\t\t\tmaterial.color.setHex(0xffffff);\r\n\t\t\t\t\t}, function progress (xhr) {\r\n\t\t\t\t\t\t// console.log( (xhr.loaded / xhr.total * 100) + '% loaded' );\r\n\t\t\t\t\t}, function error (xhr) {\r\n\t\t\t\t\t\tconsole.log('An error happened', xhr);\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet skyGeometry = new THREE.CubeGeometry(700, 700, 700);\r\n\t\tlet skybox = new THREE.Mesh(skyGeometry, materialArray);\r\n\r\n\t\tscene.add(skybox);\r\n\r\n\t\tscene.traverse(n => n.frustumCulled = false);\r\n\r\n\t\t// z up\r\n\t\tscene.rotation.x = Math.PI / 2;\r\n\r\n\t\tparent.children.push(camera);\r\n\t\tcamera.parent = parent;\r\n\r\n\t\treturn {camera, scene, parent};\r\n\t};\r\n\r\n\tstatic createGrid (width, length, spacing, color) {\r\n\t\tlet material = new THREE.LineBasicMaterial({\r\n\t\t\tcolor: color || 0x888888\r\n\t\t});\r\n\r\n\t\tlet geometry = new THREE.Geometry();\r\n\t\tfor (let i = 0; i <= length; i++) {\r\n\t\t\tgeometry.vertices.push(new THREE.Vector3(-(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0));\r\n\t\t\tgeometry.vertices.push(new THREE.Vector3(+(spacing * width) / 2, i * spacing - (spacing * length) / 2, 0));\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i <= width; i++) {\r\n\t\t\tgeometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, -(spacing * length) / 2, 0));\r\n\t\t\tgeometry.vertices.push(new THREE.Vector3(i * spacing - (spacing * width) / 2, +(spacing * length) / 2, 0));\r\n\t\t}\r\n\r\n\t\tlet line = new THREE.LineSegments(geometry, material, THREE.LinePieces);\r\n\t\tline.receiveShadow = true;\r\n\t\treturn line;\r\n\t}\r\n\r\n\tstatic createBackgroundTexture (width, height) {\r\n\t\tfunction gauss (x, y) {\r\n\t\t\treturn (1 / (2 * Math.PI)) * Math.exp(-(x * x + y * y) / 2);\r\n\t\t};\r\n\r\n\t\t// map.magFilter = THREE.NearestFilter;\r\n\t\tlet size = width * height;\r\n\t\tlet data = new Uint8Array(3 * size);\r\n\r\n\t\tlet chroma = [1, 1.5, 1.7];\r\n\t\tlet max = gauss(0, 0);\r\n\r\n\t\tfor (let x = 0; x < width; x++) {\r\n\t\t\tfor (let y = 0; y < height; y++) {\r\n\t\t\t\tlet u = 2 * (x / width) - 1;\r\n\t\t\t\tlet v = 2 * (y / height) - 1;\r\n\r\n\t\t\t\tlet i = x + width * y;\r\n\t\t\t\tlet d = gauss(2 * u, 2 * v) / max;\r\n\t\t\t\tlet r = (Math.random() + Math.random() + Math.random()) / 3;\r\n\t\t\t\tr = (d * 0.5 + 0.5) * r * 0.03;\r\n\t\t\t\tr = r * 0.4;\r\n\r\n\t\t\t\t// d = Math.pow(d, 0.6);\r\n\r\n\t\t\t\tdata[3 * i + 0] = 255 * (d / 15 + 0.05 + r) * chroma[0];\r\n\t\t\t\tdata[3 * i + 1] = 255 * (d / 15 + 0.05 + r) * chroma[1];\r\n\t\t\t\tdata[3 * i + 2] = 255 * (d / 15 + 0.05 + r) * chroma[2];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet texture = new THREE.DataTexture(data, width, height, THREE.RGBFormat);\r\n\t\ttexture.needsUpdate = true;\r\n\r\n\t\treturn texture;\r\n\t}\r\n\r\n\tstatic getMousePointCloudIntersection (mouse, camera, viewer, pointclouds, params = {}) {\r\n\t\t\r\n\t\tlet renderer = viewer.renderer;\r\n\t\t\r\n\t\tlet nmouse = {\r\n\t\t\tx: (mouse.x / renderer.domElement.clientWidth) * 2 - 1,\r\n\t\t\ty: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1\r\n\t\t};\r\n\r\n\t\tlet pickParams = {};\r\n\r\n\t\tif(params.pickClipped){\r\n\t\t\tpickParams.pickClipped = params.pickClipped;\r\n\t\t}\r\n\r\n\t\tpickParams.x = mouse.x;\r\n\t\tpickParams.y = renderer.domElement.clientHeight - mouse.y;\r\n\r\n\t\tlet raycaster = new THREE.Raycaster();\r\n\t\traycaster.setFromCamera(nmouse, camera);\r\n\t\tlet ray = raycaster.ray;\r\n\r\n\t\tlet selectedPointcloud = null;\r\n\t\tlet closestDistance = Infinity;\r\n\t\tlet closestIntersection = null;\r\n\t\tlet closestPoint = null;\r\n\t\t\r\n\t\tfor(let pointcloud of pointclouds){\r\n\t\t\tlet point = pointcloud.pick(viewer, camera, ray, pickParams);\r\n\t\t\t\r\n\t\t\tif(!point){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet distance = camera.position.distanceTo(point.position);\r\n\r\n\t\t\tif (distance < closestDistance) {\r\n\t\t\t\tclosestDistance = distance;\r\n\t\t\t\tselectedPointcloud = pointcloud;\r\n\t\t\t\tclosestIntersection = point.position;\r\n\t\t\t\tclosestPoint = point;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (selectedPointcloud) {\r\n\t\t\treturn {\r\n\t\t\t\tlocation: closestIntersection,\r\n\t\t\t\tdistance: closestDistance,\r\n\t\t\t\tpointcloud: selectedPointcloud,\r\n\t\t\t\tpoint: closestPoint\r\n\t\t\t};\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic pixelsArrayToImage (pixels, width, height) {\r\n\t\tlet canvas = document.createElement('canvas');\r\n\t\tcanvas.width = width;\r\n\t\tcanvas.height = height;\r\n\r\n\t\tlet context = canvas.getContext('2d');\r\n\r\n\t\tpixels = new pixels.constructor(pixels);\r\n\r\n\t\tfor (let i = 0; i < pixels.length; i++) {\r\n\t\t\tpixels[i * 4 + 3] = 255;\r\n\t\t}\r\n\r\n\t\tlet imageData = context.createImageData(width, height);\r\n\t\timageData.data.set(pixels);\r\n\t\tcontext.putImageData(imageData, 0, 0);\r\n\r\n\t\tlet img = new Image();\r\n\t\timg.src = canvas.toDataURL();\r\n\t\t// img.style.transform = \"scaleY(-1)\";\r\n\r\n\t\treturn img;\r\n\t}\r\n\r\n\tstatic pixelsArrayToDataUrl(pixels, width, height) {\r\n\t\tlet canvas = document.createElement('canvas');\r\n\t\tcanvas.width = width;\r\n\t\tcanvas.height = height;\r\n\r\n\t\tlet context = canvas.getContext('2d');\r\n\r\n\t\tpixels = new pixels.constructor(pixels);\r\n\r\n\t\tfor (let i = 0; i < pixels.length; i++) {\r\n\t\t\tpixels[i * 4 + 3] = 255;\r\n\t\t}\r\n\r\n\t\tlet imageData = context.createImageData(width, height);\r\n\t\timageData.data.set(pixels);\r\n\t\tcontext.putImageData(imageData, 0, 0);\r\n\r\n\t\tlet dataURL = canvas.toDataURL();\r\n\r\n\t\treturn dataURL;\r\n\t}\r\n\r\n\tstatic pixelsArrayToCanvas(pixels, width, height){\r\n\t\tlet canvas = document.createElement('canvas');\r\n\t\tcanvas.width = width;\r\n\t\tcanvas.height = height;\r\n\r\n\t\tlet context = canvas.getContext('2d');\r\n\r\n\t\tpixels = new pixels.constructor(pixels);\r\n\r\n\t\t//for (let i = 0; i < pixels.length; i++) {\r\n\t\t//\tpixels[i * 4 + 3] = 255;\r\n\t\t//}\r\n\r\n\t\t// flip vertically\r\n\t\tlet bytesPerLine = width * 4;\r\n\t\tfor(let i = 0; i < parseInt(height / 2); i++){\r\n\t\t\tlet j = height - i - 1;\r\n\r\n\t\t\tlet lineI = pixels.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine);\r\n\t\t\tlet lineJ = pixels.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine);\r\n\t\t\tpixels.set(lineJ, i * bytesPerLine);\r\n\t\t\tpixels.set(lineI, j * bytesPerLine);\r\n\t\t}\r\n\r\n\t\tlet imageData = context.createImageData(width, height);\r\n\t\timageData.data.set(pixels);\r\n\t\tcontext.putImageData(imageData, 0, 0);\r\n\r\n\t\treturn canvas;\r\n\t}\r\n\r\n\tstatic removeListeners(dispatcher, type){\r\n\t\tif (dispatcher._listeners === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (dispatcher._listeners[ type ]) {\r\n\t\t\tdelete dispatcher._listeners[ type ];\r\n\t\t}\r\n\t}\r\n\r\n\tstatic mouseToRay(mouse, camera, width, height){\r\n\r\n\t\tlet normalizedMouse = {\r\n\t\t\tx: (mouse.x / width) * 2 - 1,\r\n\t\t\ty: -(mouse.y / height) * 2 + 1\r\n\t\t};\r\n\r\n\t\tlet vector = new THREE.Vector3(normalizedMouse.x, normalizedMouse.y, 0.5);\r\n\t\tlet origin = camera.position.clone();\r\n\t\tvector.unproject(camera);\r\n\t\tlet direction = new THREE.Vector3().subVectors(vector, origin).normalize();\r\n\r\n\t\tlet ray = new THREE.Ray(origin, direction);\r\n\r\n\t\treturn ray;\r\n\t}\r\n\r\n\tstatic projectedRadius(radius, camera, distance, screenWidth, screenHeight){\r\n\t\tif(camera instanceof THREE.OrthographicCamera){\r\n\t\t\treturn Utils.projectedRadiusOrtho(radius, camera.projectionMatrix, screenWidth, screenHeight);\r\n\t\t}else if(camera instanceof THREE.PerspectiveCamera){\r\n\t\t\treturn Utils.projectedRadiusPerspective(radius, camera.fov * Math.PI / 180, distance, screenHeight);\r\n\t\t}else{\r\n\t\t\tthrow new Error(\"invalid parameters\");\r\n\t\t}\r\n\t}\r\n\r\n\tstatic projectedRadiusPerspective(radius, fov, distance, screenHeight) {\r\n\t\tlet projFactor = (1 / Math.tan(fov / 2)) / distance;\r\n\t\tprojFactor = projFactor * screenHeight / 2;\r\n\r\n\t\treturn radius * projFactor;\r\n\t}\r\n\r\n\tstatic projectedRadiusOrtho(radius, proj, screenWidth, screenHeight) {\r\n\t\tlet p1 = new THREE.Vector4(0);\r\n\t\tlet p2 = new THREE.Vector4(radius);\r\n\r\n\t\tp1.applyMatrix4(proj);\r\n\t\tp2.applyMatrix4(proj);\r\n\t\tp1 = new THREE.Vector3(p1.x, p1.y, p1.z);\r\n\t\tp2 = new THREE.Vector3(p2.x, p2.y, p2.z);\r\n\t\tp1.x = (p1.x + 1.0) * 0.5 * screenWidth;\r\n\t\tp1.y = (p1.y + 1.0) * 0.5 * screenHeight;\r\n\t\tp2.x = (p2.x + 1.0) * 0.5 * screenWidth;\r\n\t\tp2.y = (p2.y + 1.0) * 0.5 * screenHeight;\r\n\t\treturn p1.distanceTo(p2);\r\n\t}\r\n\t\t\r\n\t\t\r\n\tstatic topView(camera, node){\r\n\t\tcamera.position.set(0, 1, 0);\r\n\t\tcamera.rotation.set(-Math.PI / 2, 0, 0);\r\n\t\tcamera.zoomTo(node, 1);\r\n\t}\r\n\r\n\tstatic frontView (camera, node) {\r\n\t\tcamera.position.set(0, 0, 1);\r\n\t\tcamera.rotation.set(0, 0, 0);\r\n\t\tcamera.zoomTo(node, 1);\r\n\t}\r\n\r\n\tstatic leftView (camera, node) {\r\n\t\tcamera.position.set(-1, 0, 0);\r\n\t\tcamera.rotation.set(0, -Math.PI / 2, 0);\r\n\t\tcamera.zoomTo(node, 1);\r\n\t}\r\n\r\n\tstatic rightView (camera, node) {\r\n\t\tcamera.position.set(1, 0, 0);\r\n\t\tcamera.rotation.set(0, Math.PI / 2, 0);\r\n\t\tcamera.zoomTo(node, 1);\r\n\t}\r\n\r\n\t\r\n\tstatic findClosestGpsTime(target, viewer){\r\n\t\tconst start = performance.now();\r\n\r\n\t\tconst nodes = [];\r\n\t\tfor(const pc of viewer.scene.pointclouds){\r\n\t\t\tnodes.push(pc.root);\r\n\r\n\t\t\tfor(const child of pc.root.children){\r\n\t\t\t\tif(child){\r\n\t\t\t\t\tnodes.push(child);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet closestNode = null;\r\n\t\tlet closestIndex = Infinity;\r\n\t\tlet closestDistance = Infinity;\r\n\t\tlet closestValue = 0;\r\n\r\n\t\tfor(const node of nodes){\r\n\r\n\t\t\tconst isOkay = node.geometryNode != null \r\n\t\t\t\t&& node.geometryNode.geometry != null\r\n\t\t\t\t&& node.sceneNode != null;\r\n\r\n\t\t\tif(!isOkay){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet geometry = node.geometryNode.geometry;\r\n\t\t\tlet gpsTime = geometry.attributes[\"gps-time\"];\r\n\t\t\tlet range = gpsTime.potree.range;\r\n\r\n\t\t\tfor(let i = 0; i < gpsTime.array.length; i++){\r\n\t\t\t\tlet value = gpsTime.array[i];\r\n\t\t\t\tvalue = value * (range[1] - range[0]) + range[0];\r\n\t\t\t\tconst distance = Math.abs(target - value);\r\n\r\n\t\t\t\tif(distance < closestDistance){\r\n\t\t\t\t\tclosestIndex = i;\r\n\t\t\t\t\tclosestDistance = distance;\r\n\t\t\t\t\tclosestValue = value;\r\n\t\t\t\t\tclosestNode = node;\r\n\t\t\t\t\t//console.log(\"found a closer one: \" + value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst geometry = closestNode.geometryNode.geometry;\r\n\t\tconst position = new THREE.Vector3(\r\n\t\t\tgeometry.attributes.position.array[3 * closestIndex + 0],\r\n\t\t\tgeometry.attributes.position.array[3 * closestIndex + 1],\r\n\t\t\tgeometry.attributes.position.array[3 * closestIndex + 2],\r\n\t\t);\r\n\r\n\t\tposition.applyMatrix4(closestNode.sceneNode.matrixWorld);\r\n\r\n\t\tconst end = performance.now();\r\n\t\tconst duration = (end - start);\r\n\t\tconsole.log(`duration: ${duration.toFixed(3)}ms`);\r\n\r\n\t\treturn {\r\n\t\t\tnode: closestNode,\r\n\t\t\tindex: closestIndex,\r\n\t\t\tposition: position,\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * 0: no intersection\r\n\t * 1: intersection\r\n\t * 2: fully inside\r\n\t */\r\n\tstatic frustumSphereIntersection (frustum, sphere) {\r\n\t\tlet planes = frustum.planes;\r\n\t\tlet center = sphere.center;\r\n\t\tlet negRadius = -sphere.radius;\r\n\r\n\t\tlet minDistance = Number.MAX_VALUE;\r\n\r\n\t\tfor (let i = 0; i < 6; i++) {\r\n\t\t\tlet distance = planes[ i ].distanceToPoint(center);\r\n\r\n\t\t\tif (distance < negRadius) {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\r\n\t\t\tminDistance = Math.min(minDistance, distance);\r\n\t\t}\r\n\r\n\t\treturn (minDistance >= sphere.radius) ? 2 : 1;\r\n\t}\r\n\r\n\t// code taken from three.js\r\n\t// ImageUtils - generateDataTexture()\r\n\tstatic generateDataTexture (width, height, color) {\r\n\t\tlet size = width * height;\r\n\t\tlet data = new Uint8Array(4 * width * height);\r\n\r\n\t\tlet r = Math.floor(color.r * 255);\r\n\t\tlet g = Math.floor(color.g * 255);\r\n\t\tlet b = Math.floor(color.b * 255);\r\n\r\n\t\tfor (let i = 0; i < size; i++) {\r\n\t\t\tdata[ i * 3 ] = r;\r\n\t\t\tdata[ i * 3 + 1 ] = g;\r\n\t\t\tdata[ i * 3 + 2 ] = b;\r\n\t\t}\r\n\r\n\t\tlet texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat);\r\n\t\ttexture.needsUpdate = true;\r\n\t\ttexture.magFilter = THREE.NearestFilter;\r\n\r\n\t\treturn texture;\r\n\t}\r\n\r\n\t// from http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript\r\n\tstatic getParameterByName (name) {\r\n\t\tname = name.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n\t\tlet regex = new RegExp('[\\\\?&]' + name + '=([^&#]*)');\r\n\t\tlet results = regex.exec(document.location.search);\r\n\t\treturn results === null ? null : decodeURIComponent(results[1].replace(/\\+/g, ' '));\r\n\t}\r\n\r\n\tstatic setParameter (name, value) {\r\n\t\t// value = encodeURIComponent(value);\r\n\r\n\t\tname = name.replace(/[[]/, '\\\\[').replace(/[\\]]/, '\\\\]');\r\n\t\tlet regex = new RegExp('([\\\\?&])(' + name + '=([^&#]*))');\r\n\t\tlet results = regex.exec(document.location.search);\r\n\r\n\t\tlet url = window.location.href;\r\n\t\tif (results === null) {\r\n\t\t\tif (window.location.search.length === 0) {\r\n\t\t\t\turl = url + '?';\r\n\t\t\t} else {\r\n\t\t\t\turl = url + '&';\r\n\t\t\t}\r\n\r\n\t\t\turl = url + name + '=' + value;\r\n\t\t} else {\r\n\t\t\tlet newValue = name + '=' + value;\r\n\t\t\turl = url.replace(results[2], newValue);\r\n\t\t}\r\n\t\twindow.history.replaceState({}, '', url);\r\n\t}\r\n\r\n\tstatic createChildAABB(aabb, index){\r\n\t\tlet min = aabb.min.clone();\r\n\t\tlet max = aabb.max.clone();\r\n\t\tlet size = new THREE.Vector3().subVectors(max, min);\r\n\r\n\t\tif ((index & 0b0001) > 0) {\r\n\t\t\tmin.z += size.z / 2;\r\n\t\t} else {\r\n\t\t\tmax.z -= size.z / 2;\r\n\t\t}\r\n\r\n\t\tif ((index & 0b0010) > 0) {\r\n\t\t\tmin.y += size.y / 2;\r\n\t\t} else {\r\n\t\t\tmax.y -= size.y / 2;\r\n\t\t}\r\n\r\n\t\tif ((index & 0b0100) > 0) {\r\n\t\t\tmin.x += size.x / 2;\r\n\t\t} else {\r\n\t\t\tmax.x -= size.x / 2;\r\n\t\t}\r\n\r\n\t\treturn new THREE.Box3(min, max);\r\n\t}\r\n\r\n\t// see https://stackoverflow.com/questions/400212/how-do-i-copy-to-the-clipboard-in-javascript\r\n\tstatic clipboardCopy(text){\r\n\t\tlet textArea = document.createElement(\"textarea\");\r\n\r\n\t\ttextArea.style.position = 'fixed';\r\n\t\ttextArea.style.top = 0;\r\n\t\ttextArea.style.left = 0;\r\n\r\n\t\ttextArea.style.width = '2em';\r\n\t\ttextArea.style.height = '2em';\r\n\r\n\t\ttextArea.style.padding = 0;\r\n\r\n\t\ttextArea.style.border = 'none';\r\n\t\ttextArea.style.outline = 'none';\r\n\t\ttextArea.style.boxShadow = 'none';\r\n\r\n\t\ttextArea.style.background = 'transparent';\r\n\r\n\t\ttextArea.value = text;\r\n\r\n\t\tdocument.body.appendChild(textArea);\r\n\r\n\t\ttextArea.select();\r\n\r\n\t\t try {\r\n\t\t\tlet success = document.execCommand('copy');\r\n\t\t\tif(success){\r\n\t\t\t\tconsole.log(\"copied text to clipboard\");\r\n\t\t\t}else{\r\n\t\t\t\tconsole.log(\"copy to clipboard failed\");\r\n\t\t\t}\r\n\t\t} catch (err) {\r\n\t\t\tconsole.log(\"error while trying to copy to clipboard\");\r\n\t\t}\r\n\r\n\t\tdocument.body.removeChild(textArea);\r\n\r\n\t}\r\n\r\n\tstatic getMeasurementIcon(measurement){\r\n\t\tif (measurement instanceof Measure) {\r\n\t\t\tif (measurement.showDistances && !measurement.showArea && !measurement.showAngles) {\r\n\t\t\t\treturn `${Potree.resourcePath}/icons/distance.svg`;\r\n\t\t\t} else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) {\r\n\t\t\t\treturn `${Potree.resourcePath}/icons/area.svg`;\r\n\t\t\t} else if (measurement.maxMarkers === 1) {\r\n\t\t\t\treturn `${Potree.resourcePath}/icons/point.svg`;\r\n\t\t\t} else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) {\r\n\t\t\t\treturn `${Potree.resourcePath}/icons/angle.png`;\r\n\t\t\t} else if (measurement.showHeight) {\r\n\t\t\t\treturn `${Potree.resourcePath}/icons/height.svg`;\r\n\t\t\t} else {\r\n\t\t\t\treturn `${Potree.resourcePath}/icons/distance.svg`;\r\n\t\t\t}\r\n\t\t} else if (measurement instanceof Profile) {\r\n\t\t\treturn `${Potree.resourcePath}/icons/profile.svg`;\r\n\t\t} else if (measurement instanceof Volume) {\r\n\t\t\treturn `${Potree.resourcePath}/icons/volume.svg`;\r\n\t\t} else if (measurement instanceof PolygonClipVolume) {\r\n\t\t\treturn `${Potree.resourcePath}/icons/clip-polygon.svg`;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic lineToLineIntersection(P0, P1, P2, P3){\r\n\r\n\t\tconst P = [P0, P1, P2, P3];\r\n\r\n\t\tconst d = (m, n, o, p) => {\r\n\t\t\tlet result = \r\n\t\t\t\t (P[m].x - P[n].x) * (P[o].x - P[p].x)\r\n\t\t\t\t+ (P[m].y - P[n].y) * (P[o].y - P[p].y)\r\n\t\t\t\t+ (P[m].z - P[n].z) * (P[o].z - P[p].z);\r\n\r\n\t\t\treturn result;\r\n\t\t};\r\n\r\n\r\n\t\tconst mua = (d(0, 2, 3, 2) * d(3, 2, 1, 0) - d(0, 2, 1, 0) * d(3, 2, 3, 2))\r\n\t\t /**-----------------------------------------------------------------**/ /\r\n\t\t (d(1, 0, 1, 0) * d(3, 2, 3, 2) - d(3, 2, 1, 0) * d(3, 2, 1, 0));\r\n\r\n\r\n\t\tconst mub = (d(0, 2, 3, 2) + mua * d(3, 2, 1, 0))\r\n\t\t /**--------------------------------------**/ /\r\n\t\t d(3, 2, 3, 2);\r\n\r\n\r\n\t\tconst P01 = P1.clone().sub(P0);\r\n\t\tconst P23 = P3.clone().sub(P2);\r\n\t\t\r\n\t\tconst Pa = P0.clone().add(P01.multiplyScalar(mua));\r\n\t\tconst Pb = P2.clone().add(P23.multiplyScalar(mub));\r\n\r\n\t\tconst center = Pa.clone().add(Pb).multiplyScalar(0.5);\r\n\r\n\t\treturn center;\r\n\t}\r\n\r\n\tstatic computeCircleCenter(A, B, C){\r\n\t\tconst AB = B.clone().sub(A);\r\n\t\tconst AC = C.clone().sub(A);\r\n\r\n\t\tconst N = AC.clone().cross(AB).normalize();\r\n\r\n\t\tconst ab_dir = AB.clone().cross(N).normalize();\r\n\t\tconst ac_dir = AC.clone().cross(N).normalize();\r\n\r\n\t\tconst ab_origin = A.clone().add(B).multiplyScalar(0.5);\r\n\t\tconst ac_origin = A.clone().add(C).multiplyScalar(0.5);\r\n\r\n\t\tconst P0 = ab_origin;\r\n\t\tconst P1 = ab_origin.clone().add(ab_dir);\r\n\r\n\t\tconst P2 = ac_origin;\r\n\t\tconst P3 = ac_origin.clone().add(ac_dir);\r\n\r\n\t\tconst center = Utils.lineToLineIntersection(P0, P1, P2, P3);\r\n\r\n\t\treturn center;\r\n\r\n\t\t// Potree.Utils.debugLine(viewer.scene.scene, P0, P1, 0x00ff00);\r\n\t\t// Potree.Utils.debugLine(viewer.scene.scene, P2, P3, 0x0000ff);\r\n\r\n\t\t// Potree.Utils.debugSphere(viewer.scene.scene, center, 0.03, 0xff00ff);\r\n\r\n\t\t// const radius = center.distanceTo(A);\r\n\t\t// Potree.Utils.debugCircle(viewer.scene.scene, center, radius, new THREE.Vector3(0, 0, 1), 0xff00ff);\r\n\t}\r\n\r\n\tstatic getNorthVec(p1, distance, projection){\r\n\t\tif(projection){\r\n\t\t\t// if there is a projection, transform coordinates to WGS84\r\n\t\t\t// and compute angle to north there\r\n\r\n\t\t\tproj4.defs(\"pointcloud\", projection);\r\n\t\t\tconst transform = proj4(\"pointcloud\", \"WGS84\");\r\n\r\n\t\t\tconst llP1 = transform.forward(p1.toArray());\r\n\t\t\tlet llP2 = transform.forward([p1.x, p1.y + distance]);\r\n\t\t\tconst polarRadius = Math.sqrt((llP2[0] - llP1[0]) ** 2 + (llP2[1] - llP1[1]) ** 2);\r\n\t\t\tllP2 = [llP1[0], llP1[1] + polarRadius];\r\n\r\n\t\t\tconst northVec = transform.inverse(llP2);\r\n\t\t\t\r\n\t\t\treturn new THREE.Vector3(...northVec, p1.z).sub(p1);\r\n\t\t}else{\r\n\t\t\t// if there is no projection, assume [0, 1, 0] as north direction\r\n\r\n\t\t\tconst vec = new THREE.Vector3(0, 1, 0).multiplyScalar(distance);\r\n\t\t\t\r\n\t\t\treturn vec;\r\n\t\t}\r\n\t}\r\n\r\n\tstatic computeAzimuth(p1, p2, projection){\r\n\r\n\t\tlet azimuth = 0;\r\n\r\n\t\tif(projection){\r\n\t\t\t// if there is a projection, transform coordinates to WGS84\r\n\t\t\t// and compute angle to north there\r\n\r\n\t\t\tlet transform;\r\n\r\n\t\t\tif (projection.includes('EPSG')) {\r\n\t\t\t\ttransform = proj4(projection, \"WGS84\");\r\n\t\t\t} else {\r\n\t\t\t\tproj4.defs(\"pointcloud\", projection);\r\n\t\t\t\ttransform = proj4(\"pointcloud\", \"WGS84\");\r\n\t\t\t}\r\n\r\n\t\t\tconst llP1 = transform.forward(p1.toArray());\r\n\t\t\tconst llP2 = transform.forward(p2.toArray());\r\n\t\t\tconst dir = [\r\n\t\t\t\tllP2[0] - llP1[0],\r\n\t\t\t\tllP2[1] - llP1[1],\r\n\t\t\t];\r\n\t\t\tazimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2;\r\n\t\t}else{\r\n\t\t\t// if there is no projection, assume [0, 1, 0] as north direction\r\n\r\n\t\t\tconst dir = [p2.x - p1.x, p2.y - p1.y];\r\n\t\t\tazimuth = Math.atan2(dir[1], dir[0]) - Math.PI / 2;\r\n\t\t}\r\n\r\n\t\t// make clockwise\r\n\t\tazimuth = -azimuth;\r\n\r\n\t\treturn azimuth;\r\n\t}\r\n\r\n\tstatic async loadScript(url){\r\n\r\n\t\treturn new Promise( resolve => {\r\n\r\n\t\t\tconst element = document.getElementById(url);\r\n\r\n\t\t\tif(element){\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tconst script = document.createElement(\"script\");\r\n\r\n\t\t\t\tscript.id = url;\r\n\r\n\t\t\t\tscript.onload = () => {\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t};\r\n\t\t\t\tscript.src = url;\r\n\r\n\t\t\t\tdocument.body.appendChild(script);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tstatic createSvgGradient(scheme){\r\n\r\n\t\t// this is what we are creating:\r\n\t\t//\r\n\t\t//\r\n\t\t//\t\r\n\t\t//\t\t\r\n\t\t//\t\t\r\n\t\t//\t\t...\r\n\t\t//\t\t\r\n\t\t//\t\t\r\n\t\t//\t\r\n\t\t//\t\r\n\t\t//\t\r\n\t\t//\r\n\r\n\r\n\t\tconst gradientId = `${Math.random()}_${Date.now()}`;\r\n\t\t\r\n\t\tconst svgn = \"http://www.w3.org/2000/svg\";\r\n\t\tconst svg = document.createElementNS(svgn, \"svg\");\r\n\t\tsvg.setAttributeNS(null, \"width\", \"2em\");\r\n\t\tsvg.setAttributeNS(null, \"height\", \"3em\");\r\n\t\t\r\n\t\t{ // \r\n\t\t\tconst defs = document.createElementNS(svgn, \"defs\");\r\n\t\t\t\r\n\t\t\tconst linearGradient = document.createElementNS(svgn, \"linearGradient\");\r\n\t\t\tlinearGradient.setAttributeNS(null, \"id\", gradientId);\r\n\t\t\tlinearGradient.setAttributeNS(null, \"gradientTransform\", \"rotate(90)\");\r\n\r\n\t\t\tfor(let i = scheme.length - 1; i >= 0; i--){\r\n\t\t\t\tconst stopVal = scheme[i];\r\n\t\t\t\tconst percent = parseInt(100 - stopVal[0] * 100);\r\n\t\t\t\tconst [r, g, b] = stopVal[1].toArray().map(v => parseInt(v * 255));\r\n\r\n\t\t\t\tconst stop = document.createElementNS(svgn, \"stop\");\r\n\t\t\t\tstop.setAttributeNS(null, \"offset\", `${percent}%`);\r\n\t\t\t\tstop.setAttributeNS(null, \"stop-color\", `rgb(${r}, ${g}, ${b})`);\r\n\r\n\t\t\t\tlinearGradient.appendChild(stop);\r\n\t\t\t}\r\n\r\n\t\t\tdefs.appendChild(linearGradient);\r\n\t\t\tsvg.appendChild(defs);\r\n\t\t}\r\n\r\n\t\tconst rect = document.createElementNS(svgn, \"rect\");\r\n\t\trect.setAttributeNS(null, \"width\", `100%`);\r\n\t\trect.setAttributeNS(null, \"height\", `100%`);\r\n\t\trect.setAttributeNS(null, \"fill\", `url(\"#${gradientId}\")`);\r\n\t\trect.setAttributeNS(null, \"stroke\", `black`);\r\n\t\trect.setAttributeNS(null, \"stroke-width\", `0.1em`);\r\n\r\n\t\tsvg.appendChild(rect);\r\n\t\t\r\n\t\treturn svg;\r\n\t}\r\n\r\n\tstatic async waitAny(promises){\r\n\t\t\r\n\t\treturn new Promise( (resolve) => {\r\n\r\n\t\t\tpromises.map( promise => {\r\n\t\t\t\tpromise.then( () => {\r\n\t\t\t\t\tresolve();\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t});\r\n\r\n\t}\r\n\r\n}\r\n\r\nUtils.screenPass = new function () {\r\n\tthis.screenScene = new THREE.Scene();\r\n\tthis.screenQuad = new THREE.Mesh(new THREE.PlaneBufferGeometry(2, 2, 1));\r\n\tthis.screenQuad.material.depthTest = true;\r\n\tthis.screenQuad.material.depthWrite = true;\r\n\tthis.screenQuad.material.transparent = true;\r\n\tthis.screenScene.add(this.screenQuad);\r\n\tthis.camera = new THREE.Camera();\r\n\r\n\tthis.render = function (renderer, material, target) {\r\n\t\tthis.screenQuad.material = material;\r\n\r\n\t\tif (typeof target === 'undefined') {\r\n\t\t\trenderer.render(this.screenScene, this.camera);\r\n\t\t} else {\r\n\t\t\trenderer.render(this.screenScene, this.camera, target);\r\n\t\t}\r\n\t};\r\n}();\r\n","\r\n\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\nimport {Action} from \"./Actions.js\";\r\nimport {Utils} from \"./utils.js\";\r\nimport {EventDispatcher} from \"./EventDispatcher.js\";\r\n\r\nexport class Annotation extends EventDispatcher {\r\n\tconstructor (args = {}) {\r\n\t\tsuper();\r\n\r\n\t\tthis.scene = null;\r\n\t\tthis._title = args.title || 'No Title';\r\n\t\tthis._description = args.description || '';\r\n\t\tthis.offset = new THREE.Vector3();\r\n\t\tthis.uuid = THREE.Math.generateUUID();\r\n\r\n\t\tif (!args.position) {\r\n\t\t\tthis.position = null;\r\n\t\t} else if (args.position.x != null) {\r\n\t\t\tthis.position = args.position;\r\n\t\t} else {\r\n\t\t\tthis.position = new THREE.Vector3(...args.position);\r\n\t\t}\r\n\r\n\t\tthis.cameraPosition = (args.cameraPosition instanceof Array)\r\n\t\t\t? new THREE.Vector3().fromArray(args.cameraPosition) : args.cameraPosition;\r\n\t\tthis.cameraTarget = (args.cameraTarget instanceof Array)\r\n\t\t\t? new THREE.Vector3().fromArray(args.cameraTarget) : args.cameraTarget;\r\n\t\tthis.radius = args.radius;\r\n\t\tthis.view = args.view || null;\r\n\t\tthis.keepOpen = false;\r\n\t\tthis.descriptionVisible = false;\r\n\t\tthis.showDescription = true;\r\n\t\tthis.actions = args.actions || [];\r\n\t\tthis.isHighlighted = false;\r\n\t\tthis._visible = true;\r\n\t\tthis.__visible = true;\r\n\t\tthis._display = true;\r\n\t\tthis._expand = false;\r\n\t\tthis.collapseThreshold = [args.collapseThreshold, 100].find(e => e !== undefined);\r\n\r\n\t\tthis.children = [];\r\n\t\tthis.parent = null;\r\n\t\tthis.boundingBox = new THREE.Box3();\r\n\r\n\t\tlet iconClose = exports.resourcePath + '/icons/close.svg';\r\n\r\n\t\tthis.domElement = $(`\r\n\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t${this._description}\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t`);\r\n\r\n\t\tthis.elTitlebar = this.domElement.find('.annotation-titlebar');\r\n\t\tthis.elTitle = this.elTitlebar.find('.annotation-label');\r\n\t\tthis.elTitle.append(this._title);\r\n\t\tthis.elDescription = this.domElement.find('.annotation-description');\r\n\t\tthis.elDescriptionClose = this.elDescription.find('.annotation-description-close');\r\n\t\t// this.elDescriptionContent = this.elDescription.find(\".annotation-description-content\");\r\n\r\n\t\tthis.clickTitle = () => {\r\n\t\t\tif(this.hasView()){\r\n\t\t\t\tthis.moveHere(this.scene.getActiveCamera());\r\n\t\t\t}\r\n\t\t\tthis.dispatchEvent({type: 'click', target: this});\r\n\t\t};\r\n\r\n\t\tthis.elTitle.click(this.clickTitle);\r\n\r\n\t\tthis.actions = this.actions.map(a => {\r\n\t\t\tif (a instanceof Action) {\r\n\t\t\t\treturn a;\r\n\t\t\t} else {\r\n\t\t\t\treturn new Action(a);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tfor (let action of this.actions) {\r\n\t\t\taction.pairWith(this);\r\n\t\t}\r\n\r\n\t\tlet actions = this.actions.filter(\r\n\t\t\ta => a.showIn === undefined || a.showIn.includes('scene'));\r\n\r\n\t\tfor (let action of actions) {\r\n\t\t\tlet elButton = $(``);\r\n\t\t\tthis.elTitlebar.append(elButton);\r\n\t\t\telButton.click(() => action.onclick({annotation: this}));\r\n\t\t}\r\n\r\n\t\tthis.elDescriptionClose.hover(\r\n\t\t\te => this.elDescriptionClose.css('opacity', '1'),\r\n\t\t\te => this.elDescriptionClose.css('opacity', '0.5')\r\n\t\t);\r\n\t\tthis.elDescriptionClose.click(e => this.setHighlighted(false));\r\n\t\t// this.elDescriptionContent.html(this._description);\r\n\r\n\t\tthis.domElement.mouseenter(e => this.setHighlighted(true));\r\n\t\tthis.domElement.mouseleave(e => this.setHighlighted(false));\r\n\r\n\t\tthis.domElement.on('touchstart', e => {\r\n\t\t\tthis.setHighlighted(!this.isHighlighted);\r\n\t\t});\r\n\r\n\t\tthis.display = false;\r\n\t\t//this.display = true;\r\n\r\n\t}\r\n\r\n\tinstallHandles(viewer){\r\n\t\tif(this.handles !== undefined){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet domElement = $(`\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t`);\r\n\t\t\r\n\t\tlet svg = domElement.find(\"svg\")[0];\r\n\t\tlet elLine = domElement.find(\"line\")[0];\r\n\t\tlet elStart = domElement.find(\"circle\")[0];\r\n\t\tlet elEnd = domElement.find(\"circle\")[1];\r\n\r\n\t\tlet setCoordinates = (start, end) => {\r\n\t\t\telStart.setAttribute(\"cx\", `${start.x}`);\r\n\t\t\telStart.setAttribute(\"cy\", `${start.y}`);\r\n\r\n\t\t\telEnd.setAttribute(\"cx\", `${end.x}`);\r\n\t\t\telEnd.setAttribute(\"cy\", `${end.y}`);\r\n\r\n\t\t\telLine.setAttribute(\"x1\", start.x);\r\n\t\t\telLine.setAttribute(\"y1\", start.y);\r\n\t\t\telLine.setAttribute(\"x2\", end.x);\r\n\t\t\telLine.setAttribute(\"y2\", end.y);\r\n\r\n\t\t\tlet box = svg.getBBox();\r\n\t\t\tsvg.setAttribute(\"width\", `${box.width}`);\r\n\t\t\tsvg.setAttribute(\"height\", `${box.height}`);\r\n\t\t\tsvg.setAttribute(\"viewBox\", `${box.x} ${box.y} ${box.width} ${box.height}`);\r\n\r\n\t\t\tlet ya = start.y - end.y;\r\n\t\t\tlet xa = start.x - end.x;\r\n\r\n\t\t\tif(ya > 0){\r\n\t\t\t\tstart.y = start.y - ya;\r\n\t\t\t}\r\n\t\t\tif(xa > 0){\r\n\t\t\t\tstart.x = start.x - xa;\r\n\t\t\t}\r\n\r\n\t\t\tdomElement.css(\"left\", `${start.x}px`);\r\n\t\t\tdomElement.css(\"top\", `${start.y}px`);\r\n\r\n\t\t};\r\n\r\n\t\t$(viewer.renderArea).append(domElement);\r\n\r\n\r\n\t\tlet annotationStartPos = this.position.clone();\r\n\t\tlet annotationStartOffset = this.offset.clone();\r\n\r\n\t\t$(this.domElement).draggable({\r\n\t\t\tstart: (event, ui) => {\r\n\t\t\t\tannotationStartPos = this.position.clone();\r\n\t\t\t\tannotationStartOffset = this.offset.clone();\r\n\t\t\t\t$(this.domElement).find(\".annotation-titlebar\").css(\"pointer-events\", \"none\");\r\n\r\n\t\t\t\tconsole.log($(this.domElement).find(\".annotation-titlebar\"));\r\n\t\t\t},\r\n\t\t\tstop: () => {\r\n\t\t\t\t$(this.domElement).find(\".annotation-titlebar\").css(\"pointer-events\", \"\");\r\n\t\t\t},\r\n\t\t\tdrag: (event, ui ) => {\r\n\t\t\t\tlet renderAreaWidth = viewer.renderer.getSize(new THREE.Vector2()).width;\r\n\t\t\t\t//let renderAreaHeight = viewer.renderer.getSize().height;\r\n\r\n\t\t\t\tlet diff = {\r\n\t\t\t\t\tx: ui.originalPosition.left - ui.position.left, \r\n\t\t\t\t\ty: ui.originalPosition.top - ui.position.top\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet nDiff = {\r\n\t\t\t\t\tx: -(diff.x / renderAreaWidth) * 2,\r\n\t\t\t\t\ty: (diff.y / renderAreaWidth) * 2\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet camera = viewer.scene.getActiveCamera();\r\n\t\t\t\tlet oldScreenPos = new THREE.Vector3()\r\n\t\t\t\t\t.addVectors(annotationStartPos, annotationStartOffset)\r\n\t\t\t\t\t.project(camera);\r\n\r\n\t\t\t\tlet newScreenPos = oldScreenPos.clone();\r\n\t\t\t\tnewScreenPos.x += nDiff.x;\r\n\t\t\t\tnewScreenPos.y += nDiff.y;\r\n\r\n\t\t\t\tlet newPos = newScreenPos.clone();\r\n\t\t\t\tnewPos.unproject(camera);\r\n\r\n\t\t\t\tlet newOffset = new THREE.Vector3().subVectors(newPos, this.position);\r\n\t\t\t\tthis.offset.copy(newOffset);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet updateCallback = () => {\r\n\t\t\tlet position = this.position;\r\n\t\t\tlet scene = viewer.scene;\r\n\r\n\t\t\tconst renderAreaSize = viewer.renderer.getSize(new THREE.Vector2());\r\n\t\t\tlet renderAreaWidth = renderAreaSize.width;\r\n\t\t\tlet renderAreaHeight = renderAreaSize.height;\r\n\r\n\t\t\tlet start = this.position.clone();\r\n\t\t\tlet end = new THREE.Vector3().addVectors(this.position, this.offset);\r\n\r\n\t\t\tlet toScreen = (position) => {\r\n\t\t\t\tlet camera = scene.getActiveCamera();\r\n\t\t\t\tlet screenPos = new THREE.Vector3();\r\n\r\n\t\t\t\tlet worldView = new THREE.Matrix4().multiplyMatrices(camera.projectionMatrix, camera.matrixWorldInverse);\r\n\t\t\t\tlet ndc = new THREE.Vector4(position.x, position.y, position.z, 1.0).applyMatrix4(worldView);\r\n\t\t\t\t// limit w to small positive value, in case position is behind the camera\r\n\t\t\t\tndc.w = Math.max(ndc.w, 0.1);\r\n\t\t\t\tndc.divideScalar(ndc.w);\r\n\r\n\t\t\t\tscreenPos.copy(ndc);\r\n\t\t\t\tscreenPos.x = renderAreaWidth * (screenPos.x + 1) / 2;\r\n\t\t\t\tscreenPos.y = renderAreaHeight * (1 - (screenPos.y + 1) / 2);\r\n\r\n\t\t\t\treturn screenPos;\r\n\t\t\t};\r\n\t\t\t\r\n\t\t\tstart = toScreen(start);\r\n\t\t\tend = toScreen(end);\r\n\r\n\t\t\tsetCoordinates(start, end);\r\n\r\n\t\t};\r\n\r\n\t\tviewer.addEventListener(\"update\", updateCallback);\r\n\r\n\t\tthis.handles = {\r\n\t\t\tdomElement: domElement,\r\n\t\t\tsetCoordinates: setCoordinates,\r\n\t\t\tupdateCallback: updateCallback\r\n\t\t};\r\n\t}\r\n\r\n\tremoveHandles(viewer){\r\n\t\tif(this.handles === undefined){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t//$(viewer.renderArea).remove(this.handles.domElement);\r\n\t\tthis.handles.domElement.remove();\r\n\t\tviewer.removeEventListener(\"update\", this.handles.updateCallback);\r\n\r\n\t\tdelete this.handles;\r\n\t}\r\n\r\n\tget visible () {\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\tset visible (value) {\r\n\t\tif (this._visible === value) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._visible = value;\r\n\r\n\t\t//this.traverse(node => {\r\n\t\t//\tnode.display = value;\r\n\t\t//});\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'visibility_changed',\r\n\t\t\tannotation: this\r\n\t\t});\r\n\t}\r\n\r\n\tget display () {\r\n\t\treturn this._display;\r\n\t}\r\n\r\n\tset display (display) {\r\n\t\tif (this._display === display) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._display = display;\r\n\r\n\t\tif (display) {\r\n\t\t\t// this.domElement.fadeIn(200);\r\n\t\t\tthis.domElement.show();\r\n\t\t} else {\r\n\t\t\t// this.domElement.fadeOut(200);\r\n\t\t\tthis.domElement.hide();\r\n\t\t}\r\n\t}\r\n\r\n\tget expand () {\r\n\t\treturn this._expand;\r\n\t}\r\n\r\n\tset expand (expand) {\r\n\t\tif (this._expand === expand) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (expand) {\r\n\t\t\tthis.display = false;\r\n\t\t} else {\r\n\t\t\tthis.display = true;\r\n\t\t\tthis.traverseDescendants(node => {\r\n\t\t\t\tnode.display = false;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis._expand = expand;\r\n\t}\r\n\r\n\tget title () {\r\n\t\treturn this._title;\r\n\t}\r\n\r\n\tset title (title) {\r\n\t\tif (this._title === title) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._title = title;\r\n\t\tthis.elTitle.empty();\r\n\t\tthis.elTitle.append(this._title);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"annotation_changed\",\r\n\t\t\tannotation: this,\r\n\t\t});\r\n\t}\r\n\r\n\tget description () {\r\n\t\treturn this._description;\r\n\t}\r\n\r\n\tset description (description) {\r\n\t\tif (this._description === description) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis._description = description;\r\n\r\n\t\tconst elDescriptionContent = this.elDescription.find(\".annotation-description-content\");\r\n\t\telDescriptionContent.empty();\r\n\t\telDescriptionContent.append(this._description);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"annotation_changed\",\r\n\t\t\tannotation: this,\r\n\t\t});\r\n\t}\r\n\r\n\tadd (annotation) {\r\n\t\tif (!this.children.includes(annotation)) {\r\n\t\t\tthis.children.push(annotation);\r\n\t\t\tannotation.parent = this;\r\n\r\n\t\t\tlet descendants = [];\r\n\t\t\tannotation.traverse(a => { descendants.push(a); });\r\n\r\n\t\t\tfor (let descendant of descendants) {\r\n\t\t\t\tlet c = this;\r\n\t\t\t\twhile (c !== null) {\r\n\t\t\t\t\tc.dispatchEvent({\r\n\t\t\t\t\t\t'type': 'annotation_added',\r\n\t\t\t\t\t\t'annotation': descendant\r\n\t\t\t\t\t});\r\n\t\t\t\t\tc = c.parent;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tlevel () {\r\n\t\tif (this.parent === null) {\r\n\t\t\treturn 0;\r\n\t\t} else {\r\n\t\t\treturn this.parent.level() + 1;\r\n\t\t}\r\n\t}\r\n\r\n\thasChild(annotation) {\r\n\t\treturn this.children.includes(annotation);\r\n\t}\r\n\r\n\tremove (annotation) {\r\n\t\tif (this.hasChild(annotation)) {\r\n\t\t\tannotation.removeAllChildren();\r\n\t\t\tannotation.dispose();\r\n\t\t\tthis.children = this.children.filter(e => e !== annotation);\r\n\t\t\tannotation.parent = null;\r\n\t\t}\r\n\t}\r\n\r\n\tremoveAllChildren() {\r\n\t\tthis.children.forEach((child) => {\r\n\t\t\tif (child.children.length > 0) {\r\n\t\t\t\tchild.removeAllChildren();\r\n\t\t\t}\r\n\r\n\t\t\tthis.remove(child);\r\n\t\t});\r\n\t}\r\n\r\n\tupdateBounds () {\r\n\t\tlet box = new THREE.Box3();\r\n\r\n\t\tif (this.position) {\r\n\t\t\tbox.expandByPoint(this.position);\r\n\t\t}\r\n\r\n\t\tfor (let child of this.children) {\r\n\t\t\tchild.updateBounds();\r\n\r\n\t\t\tbox.union(child.boundingBox);\r\n\t\t}\r\n\r\n\t\tthis.boundingBox.copy(box);\r\n\t}\r\n\r\n\ttraverse (handler) {\r\n\t\tlet expand = handler(this);\r\n\r\n\t\tif (expand === undefined || expand === true) {\r\n\t\t\tfor (let child of this.children) {\r\n\t\t\t\tchild.traverse(handler);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttraverseDescendants (handler) {\r\n\t\tfor (let child of this.children) {\r\n\t\t\tchild.traverse(handler);\r\n\t\t}\r\n\t}\r\n\r\n\tflatten () {\r\n\t\tlet annotations = [];\r\n\r\n\t\tthis.traverse(annotation => {\r\n\t\t\tannotations.push(annotation);\r\n\t\t});\r\n\r\n\t\treturn annotations;\r\n\t}\r\n\r\n\tdescendants () {\r\n\t\tlet annotations = [];\r\n\r\n\t\tthis.traverse(annotation => {\r\n\t\t\tif (annotation !== this) {\r\n\t\t\t\tannotations.push(annotation);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn annotations;\r\n\t}\r\n\r\n\tsetHighlighted (highlighted) {\r\n\t\tif (highlighted) {\r\n\t\t\tthis.domElement.css('opacity', '0.8');\r\n\t\t\tthis.elTitlebar.css('box-shadow', '0 0 5px #fff');\r\n\t\t\tthis.domElement.css('z-index', '1000');\r\n\r\n\t\t\tif (this._description) {\r\n\t\t\t\tthis.descriptionVisible = true;\r\n\t\t\t\tthis.elDescription.fadeIn(200);\r\n\t\t\t\tthis.elDescription.css('position', 'relative');\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.domElement.css('opacity', '0.5');\r\n\t\t\tthis.elTitlebar.css('box-shadow', '');\r\n\t\t\tthis.domElement.css('z-index', '100');\r\n\t\t\tthis.descriptionVisible = false;\r\n\t\t\tthis.elDescription.css('display', 'none');\r\n\t\t}\r\n\r\n\t\tthis.isHighlighted = highlighted;\r\n\t}\r\n\r\n\thasView () {\r\n\t\tlet hasPosTargetView = this.cameraTarget.x != null;\r\n\t\thasPosTargetView = hasPosTargetView && this.cameraPosition.x != null;\r\n\r\n\t\tlet hasRadiusView = this.radius !== undefined;\r\n\r\n\t\tlet hasView = hasPosTargetView || hasRadiusView;\r\n\r\n\t\treturn hasView;\r\n\t};\r\n\r\n\tmoveHere (camera) {\r\n\t\tif (!this.hasView()) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet view = this.scene.view;\r\n\t\tlet animationDuration = 500;\r\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\r\n\r\n\t\tlet endTarget;\r\n\t\tif (this.cameraTarget) {\r\n\t\t\tendTarget = this.cameraTarget;\r\n\t\t} else if (this.position) {\r\n\t\t\tendTarget = this.position;\r\n\t\t} else {\r\n\t\t\tendTarget = this.boundingBox.getCenter(new THREE.Vector3());\r\n\t\t}\r\n\r\n\t\tif (this.cameraPosition) {\r\n\t\t\tlet endPosition = this.cameraPosition;\r\n\r\n\t\t\tUtils.moveTo(this.scene, endPosition, endTarget);\r\n\t\t} else if (this.radius) {\r\n\t\t\tlet direction = view.direction;\r\n\t\t\tlet endPosition = endTarget.clone().add(direction.multiplyScalar(-this.radius));\r\n\t\t\tlet startRadius = view.radius;\r\n\t\t\tlet endRadius = this.radius;\r\n\r\n\t\t\t{ // animate camera position\r\n\t\t\t\tlet tween = new TWEEN.Tween(view.position).to(endPosition, animationDuration);\r\n\t\t\t\ttween.easing(easing);\r\n\t\t\t\ttween.start();\r\n\t\t\t}\r\n\r\n\t\t\t{ // animate radius\r\n\t\t\t\tlet t = {x: 0};\r\n\r\n\t\t\t\tlet tween = new TWEEN.Tween(t)\r\n\t\t\t\t\t.to({x: 1}, animationDuration)\r\n\t\t\t\t\t.onUpdate(function () {\r\n\t\t\t\t\t\tview.radius = this.x * endRadius + (1 - this.x) * startRadius;\r\n\t\t\t\t\t});\r\n\t\t\t\ttween.easing(easing);\r\n\t\t\t\ttween.start();\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\r\n\tdispose () {\r\n\t\tif (this.domElement.parentElement) {\r\n\t\t\tthis.domElement.parentElement.removeChild(this.domElement);\r\n\t\t}\r\n\t};\r\n\r\n\ttoString () {\r\n\t\treturn 'Annotation: ' + this._title;\r\n\t}\r\n};\r\n","\r\nclass EnumItem{\r\n\tconstructor(object){\r\n\t\tfor(let key of Object.keys(object)){\r\n\t\t\tthis[key] = object[key];\r\n\t\t}\r\n\t}\r\n\r\n\tinspect(){\r\n\t\treturn `Enum(${this.name}: ${this.value})`;\r\n\t}\r\n};\r\n\r\nclass Enum{\r\n\r\n\tconstructor(object){\r\n\t\tthis.object = object;\r\n\r\n\t\tfor(let key of Object.keys(object)){\r\n\t\t\tlet value = object[key];\r\n\r\n\t\t\tif(typeof value === \"object\"){\r\n\t\t\t\tvalue.name = key;\r\n\t\t\t}else{\r\n\t\t\t\tvalue = {name: key, value: value};\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis[key] = new EnumItem(value);\r\n\t\t}\r\n\t}\r\n\r\n\tfromValue(value){\r\n\t\tfor(let key of Object.keys(this.object)){\r\n\t\t\tif(this[key].value === value){\r\n\t\t\t\treturn this[key];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthrow new Error(`No enum for value: ${value}`);\r\n\t}\r\n\t\r\n};\r\n\r\nexport {Enum, EnumItem};","\r\nimport {Enum} from \"./Enum.js\";\r\n\r\n\r\nexport const CameraMode = {\r\n\tORTHOGRAPHIC: 0,\r\n\tPERSPECTIVE: 1,\r\n\tVR: 2,\r\n};\r\n\r\nexport const ClipTask = {\r\n\tNONE: 0,\r\n\tHIGHLIGHT: 1,\r\n\tSHOW_INSIDE: 2,\r\n\tSHOW_OUTSIDE: 3\r\n};\r\n\r\nexport const ClipMethod = {\r\n\tINSIDE_ANY: 0,\r\n\tINSIDE_ALL: 1\r\n};\r\n\r\nexport const ElevationGradientRepeat = {\r\n\tCLAMP: 0,\r\n\tREPEAT: 1,\r\n\tMIRRORED_REPEAT: 2,\r\n};\r\n\r\nexport const MOUSE = {\r\n\tLEFT: 0b0001,\r\n\tRIGHT: 0b0010,\r\n\tMIDDLE: 0b0100\r\n};\r\n\r\nexport const PointSizeType = {\r\n\tFIXED: 0,\r\n\tATTENUATED: 1,\r\n\tADAPTIVE: 2\r\n};\r\n\r\nexport const PointShape = {\r\n\tSQUARE: 0,\r\n\tCIRCLE: 1,\r\n\tPARABOLOID: 2\r\n};\r\n\r\nexport const TreeType = {\r\n\tOCTREE:\t0,\r\n\tKDTREE:\t1\r\n};\r\n\r\nexport const LengthUnits = {\r\n\tMETER: {code: 'm', unitspermeter: 1.0},\r\n\tFEET: {code: 'ft', unitspermeter: 3.28084},\r\n\tINCH: {code: '\\u2033', unitspermeter: 39.3701}\r\n};","\r\nlet ftCanvas = document.createElement('canvas');\r\n\r\nexport const Features = (function () {\r\n\r\n\tlet gl = ftCanvas.getContext('webgl') || ftCanvas.getContext('experimental-webgl');\r\n\tif (gl === null){ \r\n\t\treturn null; \r\n\t}\r\n\r\n\t// -- code taken from THREE.WebGLRenderer --\r\n\tlet _vertexShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.HIGH_FLOAT);\r\n\tlet _vertexShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.MEDIUM_FLOAT);\r\n\t// Unused: let _vertexShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.VERTEX_SHADER, gl.LOW_FLOAT);\r\n\r\n\tlet _fragmentShaderPrecisionHighpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.HIGH_FLOAT);\r\n\tlet _fragmentShaderPrecisionMediumpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.MEDIUM_FLOAT);\r\n\t// Unused: let _fragmentShaderPrecisionLowpFloat = gl.getShaderPrecisionFormat(gl.FRAGMENT_SHADER, gl.LOW_FLOAT);\r\n\r\n\tlet highpAvailable = _vertexShaderPrecisionHighpFloat.precision > 0 && _fragmentShaderPrecisionHighpFloat.precision > 0;\r\n\tlet mediumpAvailable = _vertexShaderPrecisionMediumpFloat.precision > 0 && _fragmentShaderPrecisionMediumpFloat.precision > 0;\r\n\t// -----------------------------------------\r\n\r\n\tlet precision;\r\n\tif (highpAvailable) {\r\n\t\tprecision = 'highp';\r\n\t} else if (mediumpAvailable) {\r\n\t\tprecision = 'mediump';\r\n\t} else {\r\n\t\tprecision = 'lowp';\r\n\t}\r\n\r\n\treturn {\r\n\t\tSHADER_INTERPOLATION: {\r\n\t\t\tisSupported: function () {\r\n\t\t\t\tlet supported = true;\r\n\r\n\t\t\t\tsupported = supported && gl.getExtension('EXT_frag_depth');\r\n\t\t\t\tsupported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8;\r\n\r\n\t\t\t\treturn supported;\r\n\t\t\t}\r\n\t\t},\r\n\t\tSHADER_SPLATS: {\r\n\t\t\tisSupported: function () {\r\n\t\t\t\tlet supported = true;\r\n\r\n\t\t\t\tsupported = supported && gl.getExtension('EXT_frag_depth');\r\n\t\t\t\tsupported = supported && gl.getExtension('OES_texture_float');\r\n\t\t\t\tsupported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8;\r\n\r\n\t\t\t\treturn supported;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\tSHADER_EDL: {\r\n\t\t\tisSupported: function () {\r\n\t\t\t\tlet supported = true;\r\n\r\n\t\t\t\tsupported = supported && gl.getExtension('EXT_frag_depth');\r\n\t\t\t\tsupported = supported && gl.getExtension('OES_texture_float');\r\n\t\t\t\tsupported = supported && gl.getParameter(gl.MAX_VARYING_VECTORS) >= 8;\r\n\r\n\t\t\t\t//supported = supported || (gl instanceof WebGL2RenderingContext);\r\n\r\n\t\t\t\treturn supported;\r\n\t\t\t}\r\n\r\n\t\t},\r\n\t\t//WEBGL2: {\r\n\t\t//\tisSupported: function(){\r\n\t\t//\t\treturn gl instanceof WebGL2RenderingContext;\r\n\t\t//\t}\r\n\t\t//},\r\n\t\tprecision: precision\r\n\t};\r\n}());\r\n\r\n","\r\n\r\nexport const KeyCodes = {\r\n\r\n\tLEFT: 37,\r\n\tUP: 38,\r\n\tRIGHT: 39,\r\n\tBOTTOM: 40,\r\n\tDELETE: 46,\r\n\r\n\tA: 'A'.charCodeAt(0),\r\n\tS: 'S'.charCodeAt(0),\r\n\tD: 'D'.charCodeAt(0),\r\n\tW: 'W'.charCodeAt(0),\r\n\tQ: 'Q'.charCodeAt(0),\r\n\tE: 'E'.charCodeAt(0),\r\n\tR: 'R'.charCodeAt(0),\r\n\tF: 'F'.charCodeAt(0)\r\n\t\r\n};","\r\n\r\nclass LRUItem{\r\n\r\n\tconstructor(node){\r\n\t\tthis.previous = null;\r\n\t\tthis.next = null;\r\n\t\tthis.node = node;\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n *\r\n * @class A doubly-linked-list of the least recently used elements.\r\n */\r\nclass LRU{\r\n\r\n\tconstructor(){\r\n\t\t// the least recently used item\r\n\t\tthis.first = null;\r\n\t\t// the most recently used item\r\n\t\tthis.last = null;\r\n\t\t// a list of all items in the lru list\r\n\t\tthis.items = {};\r\n\t\tthis.elements = 0;\r\n\t\tthis.numPoints = 0;\r\n\t}\r\n\r\n\tsize(){\r\n\t\treturn this.elements;\r\n\t}\r\n\r\n\tcontains(node){\r\n\t\treturn this.items[node.id] == null;\r\n\t}\r\n\r\n\ttouch(node){\r\n\t\tif (!node.loaded) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet item;\r\n\t\tif (this.items[node.id] == null) {\r\n\t\t\t// add to list\r\n\t\t\titem = new LRUItem(node);\r\n\t\t\titem.previous = this.last;\r\n\t\t\tthis.last = item;\r\n\t\t\tif (item.previous !== null) {\r\n\t\t\t\titem.previous.next = item;\r\n\t\t\t}\r\n\r\n\t\t\tthis.items[node.id] = item;\r\n\t\t\tthis.elements++;\r\n\r\n\t\t\tif (this.first === null) {\r\n\t\t\t\tthis.first = item;\r\n\t\t\t}\r\n\t\t\tthis.numPoints += node.numPoints;\r\n\t\t} else {\r\n\t\t\t// update in list\r\n\t\t\titem = this.items[node.id];\r\n\t\t\tif (item.previous === null) {\r\n\t\t\t\t// handle touch on first element\r\n\t\t\t\tif (item.next !== null) {\r\n\t\t\t\t\tthis.first = item.next;\r\n\t\t\t\t\tthis.first.previous = null;\r\n\t\t\t\t\titem.previous = this.last;\r\n\t\t\t\t\titem.next = null;\r\n\t\t\t\t\tthis.last = item;\r\n\t\t\t\t\titem.previous.next = item;\r\n\t\t\t\t}\r\n\t\t\t} else if (item.next === null) {\r\n\t\t\t\t// handle touch on last element\r\n\t\t\t} else {\r\n\t\t\t\t// handle touch on any other element\r\n\t\t\t\titem.previous.next = item.next;\r\n\t\t\t\titem.next.previous = item.previous;\r\n\t\t\t\titem.previous = this.last;\r\n\t\t\t\titem.next = null;\r\n\t\t\t\tthis.last = item;\r\n\t\t\t\titem.previous.next = item;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tremove(node){\r\n\t\tlet lruItem = this.items[node.id];\r\n\t\tif (lruItem) {\r\n\t\t\tif (this.elements === 1) {\r\n\t\t\t\tthis.first = null;\r\n\t\t\t\tthis.last = null;\r\n\t\t\t} else {\r\n\t\t\t\tif (!lruItem.previous) {\r\n\t\t\t\t\tthis.first = lruItem.next;\r\n\t\t\t\t\tthis.first.previous = null;\r\n\t\t\t\t}\r\n\t\t\t\tif (!lruItem.next) {\r\n\t\t\t\t\tthis.last = lruItem.previous;\r\n\t\t\t\t\tthis.last.next = null;\r\n\t\t\t\t}\r\n\t\t\t\tif (lruItem.previous && lruItem.next) {\r\n\t\t\t\t\tlruItem.previous.next = lruItem.next;\r\n\t\t\t\t\tlruItem.next.previous = lruItem.previous;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tdelete this.items[node.id];\r\n\t\t\tthis.elements--;\r\n\t\t\tthis.numPoints -= node.numPoints;\r\n\t\t}\r\n\t}\r\n\r\n\tgetLRUItem(){\r\n\t\tif (this.first === null) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t\tlet lru = this.first;\r\n\r\n\t\treturn lru.node;\r\n\t}\r\n\r\n\ttoString(){\r\n\t\tlet string = '{ ';\r\n\t\tlet curr = this.first;\r\n\t\twhile (curr !== null) {\r\n\t\t\tstring += curr.node.id;\r\n\t\t\tif (curr.next !== null) {\r\n\t\t\t\tstring += ', ';\r\n\t\t\t}\r\n\t\t\tcurr = curr.next;\r\n\t\t}\r\n\t\tstring += '}';\r\n\t\tstring += '(' + this.size() + ')';\r\n\t\treturn string;\r\n\t}\r\n\r\n\tfreeMemory(){\r\n\t\tif (this.elements <= 1) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\twhile (this.numPoints > Potree.pointLoadLimit) {\r\n\t\t\tlet element = this.first;\r\n\t\t\tlet node = element.node;\r\n\t\t\tthis.disposeDescendants(node);\r\n\t\t}\r\n\t}\r\n\r\n\tdisposeDescendants(node){\r\n\t\tlet stack = [];\r\n\t\tstack.push(node);\r\n\t\twhile (stack.length > 0) {\r\n\t\t\tlet current = stack.pop();\r\n\r\n\t\t\t// console.log(current);\r\n\r\n\t\t\tcurrent.dispose();\r\n\t\t\tthis.remove(current);\r\n\r\n\t\t\tfor (let key in current.children) {\r\n\t\t\t\tif (current.children.hasOwnProperty(key)) {\r\n\t\t\t\t\tlet child = current.children[key];\r\n\t\t\t\t\tif (child.loaded) {\r\n\t\t\t\t\t\tstack.push(current.children[key]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\nexport {LRU, LRUItem};","\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\nimport { EventDispatcher } from \"./EventDispatcher.js\";\r\n\r\n\r\nexport class PointCloudTreeNode extends EventDispatcher{\r\n\r\n\tconstructor(){\r\n\t\tsuper();\r\n\t\tthis.needsTransformUpdate = true;\r\n\t}\r\n\r\n\tgetChildren () {\r\n\t\tthrow new Error('override function');\r\n\t}\r\n\r\n\tgetBoundingBox () {\r\n\t\tthrow new Error('override function');\r\n\t}\r\n\r\n\tisLoaded () {\r\n\t\tthrow new Error('override function');\r\n\t}\r\n\r\n\tisGeometryNode () {\r\n\t\tthrow new Error('override function');\r\n\t}\r\n\r\n\tisTreeNode () {\r\n\t\tthrow new Error('override function');\r\n\t}\r\n\r\n\tgetLevel () {\r\n\t\tthrow new Error('override function');\r\n\t}\r\n\r\n\tgetBoundingSphere () {\r\n\t\tthrow new Error('override function');\r\n\t}\r\n};\r\n\r\nexport class PointCloudTree extends THREE.Object3D {\r\n\tconstructor () {\r\n\t\tsuper();\r\n\t}\r\n\r\n\tinitialized () {\r\n\t\treturn this.root !== null;\r\n\t}\r\n};\r\n","\r\n/**\r\n * Some types of possible point attribute data formats\r\n *\r\n * @class\r\n */\r\nconst PointAttributeTypes = {\r\n\tDATA_TYPE_DOUBLE: {ordinal: 0, name: \"double\", size: 8},\r\n\tDATA_TYPE_FLOAT: {ordinal: 1, name: \"float\", size: 4},\r\n\tDATA_TYPE_INT8: {ordinal: 2, name: \"int8\", size: 1},\r\n\tDATA_TYPE_UINT8: {ordinal: 3, name: \"uint8\", size: 1},\r\n\tDATA_TYPE_INT16: {ordinal: 4, name: \"int16\", size: 2},\r\n\tDATA_TYPE_UINT16: {ordinal: 5, name: \"uint16\", size: 2},\r\n\tDATA_TYPE_INT32: {ordinal: 6, name: \"int32\", size: 4},\r\n\tDATA_TYPE_UINT32: {ordinal: 7, name: \"uint32\", size: 4},\r\n\tDATA_TYPE_INT64: {ordinal: 8, name: \"int64\", size: 8},\r\n\tDATA_TYPE_UINT64: {ordinal: 9, name: \"uint64\", size: 8}\r\n};\r\n\r\nlet i = 0;\r\nfor (let obj in PointAttributeTypes) {\r\n\tPointAttributeTypes[i] = PointAttributeTypes[obj];\r\n\ti++;\r\n}\r\n\r\nexport {PointAttributeTypes};\r\n\r\n\r\nclass PointAttribute{\r\n\t\r\n\tconstructor(name, type, numElements){\r\n\t\tthis.name = name;\r\n\t\tthis.type = type;\r\n\t\tthis.numElements = numElements;\r\n\t\tthis.byteSize = this.numElements * this.type.size;\r\n\t\tthis.description = \"\";\r\n\t\tthis.range = [Infinity, -Infinity];\r\n\t}\r\n\r\n};\r\n\r\nPointAttribute.POSITION_CARTESIAN = new PointAttribute(\r\n\t\"POSITION_CARTESIAN\", PointAttributeTypes.DATA_TYPE_FLOAT, 3);\r\n\r\nPointAttribute.RGBA_PACKED = new PointAttribute(\r\n\t\"COLOR_PACKED\", PointAttributeTypes.DATA_TYPE_INT8, 4);\r\n\r\nPointAttribute.COLOR_PACKED = PointAttribute.RGBA_PACKED;\r\n\r\nPointAttribute.RGB_PACKED = new PointAttribute(\r\n\t\"COLOR_PACKED\", PointAttributeTypes.DATA_TYPE_INT8, 3);\r\n\r\nPointAttribute.NORMAL_FLOATS = new PointAttribute(\r\n\t\"NORMAL_FLOATS\", PointAttributeTypes.DATA_TYPE_FLOAT, 3);\r\n\r\nPointAttribute.INTENSITY = new PointAttribute(\r\n\t\"INTENSITY\", PointAttributeTypes.DATA_TYPE_UINT16, 1);\r\n\r\nPointAttribute.CLASSIFICATION = new PointAttribute(\r\n\t\"CLASSIFICATION\", PointAttributeTypes.DATA_TYPE_UINT8, 1);\r\n\r\nPointAttribute.NORMAL_SPHEREMAPPED = new PointAttribute(\r\n\t\"NORMAL_SPHEREMAPPED\", PointAttributeTypes.DATA_TYPE_UINT8, 2);\r\n\r\nPointAttribute.NORMAL_OCT16 = new PointAttribute(\r\n\t\"NORMAL_OCT16\", PointAttributeTypes.DATA_TYPE_UINT8, 2);\r\n\r\nPointAttribute.NORMAL = new PointAttribute(\r\n\t\"NORMAL\", PointAttributeTypes.DATA_TYPE_FLOAT, 3);\r\n\t\r\nPointAttribute.RETURN_NUMBER = new PointAttribute(\r\n\t\"RETURN_NUMBER\", PointAttributeTypes.DATA_TYPE_UINT8, 1);\r\n\t\r\nPointAttribute.NUMBER_OF_RETURNS = new PointAttribute(\r\n\t\"NUMBER_OF_RETURNS\", PointAttributeTypes.DATA_TYPE_UINT8, 1);\r\n\t\r\nPointAttribute.SOURCE_ID = new PointAttribute(\r\n\t\"SOURCE_ID\", PointAttributeTypes.DATA_TYPE_UINT16, 1);\r\n\r\nPointAttribute.INDICES = new PointAttribute(\r\n\t\"INDICES\", PointAttributeTypes.DATA_TYPE_UINT32, 1);\r\n\r\nPointAttribute.SPACING = new PointAttribute(\r\n\t\"SPACING\", PointAttributeTypes.DATA_TYPE_FLOAT, 1);\r\n\r\nPointAttribute.GPS_TIME = new PointAttribute(\r\n\t\"GPS_TIME\", PointAttributeTypes.DATA_TYPE_DOUBLE, 1);\r\n\r\nexport {PointAttribute};\r\n\r\nexport class PointAttributes{\r\n\r\n\tconstructor(pointAttributes){\r\n\t\tthis.attributes = [];\r\n\t\tthis.byteSize = 0;\r\n\t\tthis.size = 0;\r\n\t\tthis.vectors = [];\r\n\r\n\t\tif (pointAttributes != null) {\r\n\t\t\tfor (let i = 0; i < pointAttributes.length; i++) {\r\n\t\t\t\tlet pointAttributeName = pointAttributes[i];\r\n\t\t\t\tlet pointAttribute = PointAttribute[pointAttributeName];\r\n\t\t\t\tthis.attributes.push(pointAttribute);\r\n\t\t\t\tthis.byteSize += pointAttribute.byteSize;\r\n\t\t\t\tthis.size++;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tadd(pointAttribute){\r\n\t\tthis.attributes.push(pointAttribute);\r\n\t\tthis.byteSize += pointAttribute.byteSize;\r\n\t\tthis.size++;\r\n\t};\r\n\r\n\taddVector(vector){\r\n\t\tthis.vectors.push(vector);\r\n\t}\r\n\r\n\thasNormals(){\r\n\t\tfor (let name in this.attributes) {\r\n\t\t\tlet pointAttribute = this.attributes[name];\r\n\t\t\tif (\r\n\t\t\t\tpointAttribute === PointAttribute.NORMAL_SPHEREMAPPED ||\r\n\t\t\t\tpointAttribute === PointAttribute.NORMAL_FLOATS ||\r\n\t\t\t\tpointAttribute === PointAttribute.NORMAL ||\r\n\t\t\t\tpointAttribute === PointAttribute.NORMAL_OCT16) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\t};\r\n\r\n}\r\n","import {PointCloudTreeNode} from \"./PointCloudTree.js\";\r\nimport {PointAttributes, PointAttribute, PointAttributeTypes} from \"./loader/PointAttributes.js\";\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\n\r\nclass U {\r\n\tstatic toVector3(v, offset) {\r\n\t\treturn new THREE.Vector3().fromArray(v, offset || 0);\r\n\t}\r\n\r\n\tstatic toBox3(b) {\r\n\t\treturn new THREE.Box3(U.toVector3(b), U.toVector3(b, 3));\r\n\t};\r\n\r\n\tstatic findDim(schema, name) {\r\n\t\tvar dim = schema.find((dim) => dim.name == name);\r\n\t\tif (!dim) throw new Error('Failed to find ' + name + ' in schema');\r\n\t\treturn dim;\r\n\t}\r\n\r\n\tstatic sphereFrom(b) {\r\n\t\treturn b.getBoundingSphere(new THREE.Sphere());\r\n\t}\r\n\r\n\tstatic toPotreeName([d, x, y, z]) {\r\n\t\tvar name = 'r';\r\n\r\n\t\tfor (var i = 0; i < d; ++i) {\r\n\t\t\tvar shift = d - i - 1;\r\n\t\t\tvar mask = 1 << shift;\r\n\t\t\tvar step = 0;\r\n\r\n\t\t\tif (x & mask) step += 4;\r\n\t\t\tif (y & mask) step += 2;\r\n\t\t\tif (z & mask) step += 1;\r\n\r\n\t\t\tname += step;\r\n\t\t}\r\n\r\n\t\treturn name;\r\n\t}\r\n\r\n\tstatic maybeSrs(srs) {\r\n\t\ttry { \r\n\t\t\tproj4(srs) \r\n\t\t\treturn srs\r\n\t\t} catch (e) {}\r\n\t}\r\n};\r\n\r\nclass BaseGeometry {\r\n\tconstructor({ \r\n\t\tcube,\r\n\t\tboundsConforming,\r\n\t\tspacing,\r\n\t\tsrs,\r\n\t}) {\r\n\t\tthis.cube = cube;\r\n\r\n\t\tthis.boundingBox = U.toBox3(cube);\r\n\t\tthis.tightBoundingBox = U.toBox3(boundsConforming);\r\n\t\tthis.boundingSphere = U.sphereFrom(this.boundingBox);\r\n\t\tthis.tightBoundingSphere = U.sphereFrom(this.tightBoundingBox);\r\n\t\tthis.offset = U.toVector3([0, 0, 0]);\r\n\t\tthis.version = new Potree.Version('1.7');\r\n\r\n\t\tthis.loader = new Potree.CopcLaszipLoader();\r\n\r\n\t\tthis.spacing = spacing;\r\n\t\tthis.projection = srs || null;\r\n\t\ttry {\r\n\t\t\tproj4(this.projection);\r\n\t\t} catch(e) {\r\n\t\t\tthis.projection = null;\r\n\t\t}\r\n\r\n\t\tconst attributes = new PointAttributes();\r\n\t\tattributes.add(PointAttribute.POSITION_CARTESIAN);\r\n\t\tattributes.add(new PointAttribute(\"rgba\", PointAttributeTypes.DATA_TYPE_UINT8, 4));\r\n\t\tattributes.add(new PointAttribute(\"intensity\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\r\n\t\tattributes.add(new PointAttribute(\"classification\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\r\n\t\tattributes.add(new PointAttribute(\"gps-time\", PointAttributeTypes.DATA_TYPE_FLOAT, 1));\r\n\t\tattributes.add(new PointAttribute(\"returnNumber\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\r\n\t\tattributes.add(new PointAttribute(\"number of returns\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\r\n\t\tattributes.add(new PointAttribute(\"return number\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\r\n\t\tattributes.add(new PointAttribute(\"source id\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\r\n\t\tthis.pointAttributes = attributes;\r\n\t}\r\n}\r\n\r\nexport class PointCloudCopcGeometry extends BaseGeometry {\r\n\tstatic parse({ header, info, wkt }) {\r\n\t\treturn {\r\n\t\t\tcube: info.cube,\r\n\t\t\tboundsConforming: [...header.min, ...header.max],\r\n\t\t\tspacing: info.spacing,\r\n\t\t\tsrs: wkt,\r\n\t\t}\r\n\t}\r\n\r\n\tconstructor(getter, copc) {\r\n\t\tsuper(PointCloudCopcGeometry.parse(copc))\r\n\r\n\t\tthis.type = 'copc';\r\n\t\tthis.getter = getter\r\n\t\tthis.copc = copc;\r\n\t\tthis.pages = { '0-0-0-0': copc.info.rootHierarchyPage }\r\n\r\n\t\tthis.loader = new Potree.CopcLaszipLoader();\r\n\t}\r\n\r\n\tasync loadHierarchyPage(key) {\r\n\t\tconst { Copc, Key } = window.Copc\r\n\t\tconst page = this.pages[Key.toString(key)]\r\n\t\treturn Copc.loadHierarchyPage(this.getter, page)\r\n\t}\r\n};\r\n\r\nexport class PointCloudEptGeometry extends BaseGeometry {\r\n\tstatic parse(ept) {\r\n\t\tconst { bounds: cube, boundsConforming, span, srs: filesrs } = ept\r\n\r\n\t\tconst spacing = (cube[3] - cube[0]) / span\r\n\r\n\t\tlet srs\r\n\t\tif (filesrs) {\r\n\t\t\tconst { authority, horizontal, wkt } = filesrs\r\n\t\t\tif (authority && horizontal) {\r\n\t\t\t\tsrs = U.maybeSrs(`${authority}:${horizontal}`)\r\n\t\t\t}\r\n\t\t\tif (!srs && wkt) srs = U.maybeSrs(wkt)\r\n\t\t}\r\n\r\n\t\treturn { cube, boundsConforming, spacing, srs }\r\n\t}\r\n\r\n\tconstructor(base, ept) {\r\n\t\tsuper(PointCloudEptGeometry.parse(ept))\r\n\r\n\t\tthis.type = 'ept';\r\n\t\tthis.base = base;\r\n\t\tthis.ept = ept;\r\n\r\n\t\tthis.loader = (() => {\r\n\t\t\tswitch (ept.dataType) {\r\n\t\t\t\tcase 'laszip': return new Potree.EptLaszipLoader()\r\n\t\t\t\tcase 'binary': return new Potree.EptBinaryLoader()\r\n\t\t\t\tcase 'zstandard': return new Potree.EptZstandardLoader()\r\n\t\t\t\tdefault: throw new Error('Invalid data type: ' + ept.dataType)\r\n\t\t\t}\r\n\t\t})()\r\n\t}\r\n\r\n\tasync loadHierarchyPage(key) {\r\n\t\tconst { Ept, Key } = window.Copc\r\n\r\n\t\tconst filename = `${this.base}/ept-hierarchy/${Key.toString(key)}.json`\r\n\t\tconst response = await fetch(filename);\r\n\t\tconst json = await response.json();\r\n\t\treturn Ept.Hierarchy.parse(json)\r\n\t}\r\n}\r\n\r\nexport class PointCloudCopcGeometryNode extends PointCloudTreeNode {\r\n\tconstructor(owner, key, bounds) {\r\n\t\tsuper();\r\n\r\n\t\tconst { Key } = Copc\r\n\r\n\t\tthis.owner = owner\r\n\t\tthis.key = key || Key.create(0, 0, 0, 0)\r\n\t\tthis.bounds = bounds || owner.cube\r\n\r\n\t\tthis.id = PointCloudCopcGeometryNode.IDCount++;\r\n\t\tthis.geometry = null;\r\n\t\tthis.boundingBox = U.toBox3(this.bounds)\r\n\t\tthis.tightBoundingBox = this.boundingBox;\r\n\t\tthis.spacing = this.owner.spacing / Math.pow(2, Key.depth(this.key));\r\n\t\tthis.boundingSphere = U.sphereFrom(this.boundingBox);\r\n\r\n\t\t// These are set during hierarchy loading.\r\n\t\tthis.hasChildren = false;\r\n\t\tthis.children = { };\r\n\t\tthis.nodeinfo = undefined\r\n\t\tthis.numPoints = -1;\r\n\r\n\t\tthis.level = Key.depth(this.key);\r\n\t\tthis.loaded = false;\r\n\t\tthis.loading = false;\r\n\t\tthis.oneTimeDisposeHandlers = [];\r\n\r\n\t\tthis.name = U.toPotreeName(this.key);\r\n\t\tthis.index = parseInt(this.name.charAt(this.name.length - 1));\r\n\t}\r\n\r\n\tisGeometryNode() { return true; }\r\n\tgetLevel() { return this.level; }\r\n\tisTreeNode() { return false; }\r\n\tisLoaded() { return this.loaded; }\r\n\tgetBoundingSphere() { return this.boundingSphere; }\r\n\tgetBoundingBox() { return this.boundingBox; }\r\n\tgetNumPoints() { \r\n\t\treturn this.nodeinfo ? this.nodeinfo.pointCount : -1; \r\n\t}\r\n\r\n\tgetChildren() {\r\n\t\tlet children = [];\r\n\r\n\t\tfor (let i = 0; i < 8; i++) {\r\n\t\t\tif (this.children[i]) {\r\n\t\t\t\tchildren.push(this.children[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\taddChild(child) {\r\n\t\tthis.children[child.index] = child;\r\n\t\tchild.parent = this;\r\n\t}\r\n\r\n\tasync load() {\r\n\t\tif (this.loaded || this.loading) return;\r\n\t\tif (Potree.numNodesLoading >= Potree.maxNodesLoading) return;\r\n\r\n\t\tthis.loading = true;\r\n\t\t++Potree.numNodesLoading;\r\n\r\n\t\tif (!this.nodeinfo) await this.loadHierarchy();\r\n\t\tthis.loadPoints();\r\n\t}\r\n\r\n\tloadPoints(){\r\n\t\tthis.owner.loader.load(this);\r\n\t}\r\n\r\n\tasync loadHierarchy() {\r\n\t\tconst { Bounds, Key } = window.Copc\r\n\t\tconst ourkeyname = Key.toString(this.key)\r\n\r\n\t\tlet nodemap = { };\r\n\t\tnodemap[ourkeyname] = this;\r\n\t\tthis.hasChildren = false;\r\n\r\n\t\tconst { nodes, pages } = await this.owner.loadHierarchyPage(this.key)\r\n\r\n\t\t// Since we want to traverse top-down, and 10 comes lexicographically \r\n\t\t// before 9 (for example), do a deep sort.\r\n\t\tconst keys = Object.keys({ ...nodes, ...pages })\r\n\t\t\t.map(Key.create)\r\n\t\t\t.sort(Key.compare)\r\n\r\n\t\tkeys.forEach((key) => {\r\n\t\t\tconst keyname = Key.toString(key)\r\n\t\t\tif (keyname === ourkeyname) {\r\n\t\t\t\tthis.nodeinfo = nodes[keyname]\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tconst [_d, x, y, z] = key\r\n\t\t\tconst step = [x & 1, y & 1, z & 1]\r\n\r\n\t\t\tlet parentName = Key.toString(Key.up(key))\r\n\t\t\tlet parentNode = nodemap[parentName];\r\n\t\t\tif (!parentNode) return;\r\n\t\t\tparentNode.hasChildren = true;\r\n\r\n\t\t\tconst bounds = Bounds.step(parentNode.bounds, step)\r\n\t\t\tconst node = new Potree.PointCloudCopcGeometryNode(\r\n\t\t\t\tthis.owner,\r\n\t\t\t\tkey, \r\n\t\t\t\tbounds);\r\n\t\t\tparentNode.addChild(node);\r\n\t\t\tnodemap[keyname] = node;\r\n\r\n\t\t\t// For data nodes, add their point data offset/point counts.\r\n\t\t\tconst nodeinfo = nodes[keyname]\r\n\t\t\tif (nodeinfo) node.nodeinfo = nodeinfo\r\n\r\n\t\t\t// And for leaf nodes whose data is in a different hierarchy page, \r\n\t\t\t// store the info for the hierarchy page in our page map. This is\r\n\t\t\t// only applicable for COPC data since we need hierarchy page \r\n\t\t\t// ranges to fetch them - EPT data on the other hand we just need\r\n\t\t\t// the node key to fetch the file.\r\n\t\t\tconst pageinfo = pages[keyname]\r\n\t\t\tif (this.owner.pages && pageinfo) {\r\n\t\t\t\tthis.owner.pages[keyname] = pageinfo\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\tdoneLoading(bufferGeometry, tightBoundingBox, np, mean) {\r\n\t\tbufferGeometry.boundingBox = this.boundingBox;\r\n\t\tthis.geometry = bufferGeometry;\r\n\t\tthis.tightBoundingBox = tightBoundingBox;\r\n\t\tthis.numPoints = np;\r\n\t\tthis.mean = mean;\r\n\t\tthis.loaded = true;\r\n\t\tthis.loading = false;\r\n\t\t--Potree.numNodesLoading;\r\n\t}\r\n\r\n\tdispose() {\r\n\t\tif (this.geometry && this.parent) {\r\n\t\t\tthis.geometry.dispose();\r\n\t\t\tthis.geometry = null;\r\n\t\t\tthis.loaded = false;\r\n\r\n\t\t\t// this.dispatchEvent( { type: 'dispose' } );\r\n\t\t\tfor (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\r\n\t\t\t\tlet handler = this.oneTimeDisposeHandlers[i];\r\n\t\t\t\thandler();\r\n\t\t\t}\r\n\t\t\tthis.oneTimeDisposeHandlers = [];\r\n\t\t}\r\n\t}\r\n}\r\n\r\nPointCloudCopcGeometryNode.IDCount = 0;\r\n","\r\n\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\nimport {PointCloudTreeNode} from \"./PointCloudTree.js\";\r\nimport {XHRFactory} from \"./XHRFactory.js\";\r\nimport {Utils} from \"./utils.js\";\r\n\r\nexport class PointCloudOctreeGeometry{\r\n\r\n\tconstructor(){\r\n\t\tthis.url = null;\r\n\t\tthis.octreeDir = null;\r\n\t\tthis.spacing = 0;\r\n\t\tthis.boundingBox = null;\r\n\t\tthis.root = null;\r\n\t\tthis.nodes = null;\r\n\t\tthis.pointAttributes = null;\r\n\t\tthis.hierarchyStepSize = -1;\r\n\t\tthis.loader = null;\r\n\t}\r\n\t\r\n}\r\n\r\nexport class PointCloudOctreeGeometryNode extends PointCloudTreeNode{\r\n\r\n\tconstructor(name, pcoGeometry, boundingBox){\r\n\t\tsuper();\r\n\r\n\t\tthis.id = PointCloudOctreeGeometryNode.IDCount++;\r\n\t\tthis.name = name;\r\n\t\tthis.index = parseInt(name.charAt(name.length - 1));\r\n\t\tthis.pcoGeometry = pcoGeometry;\r\n\t\tthis.geometry = null;\r\n\t\tthis.boundingBox = boundingBox;\r\n\t\tthis.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\tthis.children = {};\r\n\t\tthis.numPoints = 0;\r\n\t\tthis.level = null;\r\n\t\tthis.loaded = false;\r\n\t\tthis.oneTimeDisposeHandlers = [];\r\n\t}\r\n\r\n\tisGeometryNode(){\r\n\t\treturn true;\r\n\t}\r\n\r\n\tgetLevel(){\r\n\t\treturn this.level;\r\n\t}\r\n\r\n\tisTreeNode(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tisLoaded(){\r\n\t\treturn this.loaded;\r\n\t}\r\n\r\n\tgetBoundingSphere(){\r\n\t\treturn this.boundingSphere;\r\n\t}\r\n\r\n\tgetBoundingBox(){\r\n\t\treturn this.boundingBox;\r\n\t}\r\n\r\n\tgetChildren(){\r\n\t\tlet children = [];\r\n\r\n\t\tfor (let i = 0; i < 8; i++) {\r\n\t\t\tif (this.children[i]) {\r\n\t\t\t\tchildren.push(this.children[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\tgetBoundingBox(){\r\n\t\treturn this.boundingBox;\r\n\t}\r\n\r\n\tgetURL(){\r\n\t\tlet url = '';\r\n\r\n\t\tlet version = this.pcoGeometry.loader.version;\r\n\r\n\t\tif (version.equalOrHigher('1.5')) {\r\n\t\t\turl = this.pcoGeometry.octreeDir + '/' + this.getHierarchyPath() + '/' + this.name;\r\n\t\t} else if (version.equalOrHigher('1.4')) {\r\n\t\t\turl = this.pcoGeometry.octreeDir + '/' + this.name;\r\n\t\t} else if (version.upTo('1.3')) {\r\n\t\t\turl = this.pcoGeometry.octreeDir + '/' + this.name;\r\n\t\t}\r\n\r\n\t\treturn url;\r\n\t}\r\n\r\n\tgetHierarchyPath(){\r\n\t\tlet path = 'r/';\r\n\r\n\t\tlet hierarchyStepSize = this.pcoGeometry.hierarchyStepSize;\r\n\t\tlet indices = this.name.substr(1);\r\n\r\n\t\tlet numParts = Math.floor(indices.length / hierarchyStepSize);\r\n\t\tfor (let i = 0; i < numParts; i++) {\r\n\t\t\tpath += indices.substr(i * hierarchyStepSize, hierarchyStepSize) + '/';\r\n\t\t}\r\n\r\n\t\tpath = path.slice(0, -1);\r\n\r\n\t\treturn path;\r\n\t}\r\n\r\n\taddChild(child) {\r\n\t\tthis.children[child.index] = child;\r\n\t\tchild.parent = this;\r\n\t}\r\n\r\n\tload(){\r\n\t\tif (this.loading === true || this.loaded === true || Potree.numNodesLoading >= Potree.maxNodesLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.loading = true;\r\n\r\n\t\tPotree.numNodesLoading++;\r\n\r\n\t\tif (this.pcoGeometry.loader.version.equalOrHigher('1.5')) {\r\n\t\t\tif ((this.level % this.pcoGeometry.hierarchyStepSize) === 0 && this.hasChildren) {\r\n\t\t\t\tthis.loadHierachyThenPoints();\r\n\t\t\t} else {\r\n\t\t\t\tthis.loadPoints();\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\tthis.loadPoints();\r\n\t\t}\r\n\t}\r\n\r\n\tloadPoints(){\r\n\t\tthis.pcoGeometry.loader.load(this);\r\n\t}\r\n\r\n\tloadHierachyThenPoints(){\r\n\t\tlet node = this;\r\n\r\n\t\t// load hierarchy\r\n\t\tlet callback = function (node, hbuffer) {\r\n\r\n\t\t\tlet tStart = performance.now();\r\n\r\n\t\t\tlet view = new DataView(hbuffer);\r\n\r\n\t\t\tlet stack = [];\r\n\t\t\tlet children = view.getUint8(0);\r\n\t\t\tlet numPoints = view.getUint32(1, true);\r\n\t\t\tnode.numPoints = numPoints;\r\n\t\t\tstack.push({children: children, numPoints: numPoints, name: node.name});\r\n\r\n\t\t\tlet decoded = [];\r\n\r\n\t\t\tlet offset = 5;\r\n\t\t\twhile (stack.length > 0) {\r\n\t\t\t\tlet snode = stack.shift();\r\n\t\t\t\tlet mask = 1;\r\n\t\t\t\tfor (let i = 0; i < 8; i++) {\r\n\t\t\t\t\tif ((snode.children & mask) !== 0) {\r\n\t\t\t\t\t\tlet childName = snode.name + i;\r\n\r\n\t\t\t\t\t\tlet childChildren = view.getUint8(offset);\r\n\t\t\t\t\t\tlet childNumPoints = view.getUint32(offset + 1, true);\r\n\r\n\t\t\t\t\t\tstack.push({children: childChildren, numPoints: childNumPoints, name: childName});\r\n\r\n\t\t\t\t\t\tdecoded.push({children: childChildren, numPoints: childNumPoints, name: childName});\r\n\r\n\t\t\t\t\t\toffset += 5;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tmask = mask * 2;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (offset === hbuffer.byteLength) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// console.log(decoded);\r\n\r\n\t\t\tlet nodes = {};\r\n\t\t\tnodes[node.name] = node;\r\n\t\t\tlet pco = node.pcoGeometry;\r\n\r\n\t\t\tfor (let i = 0; i < decoded.length; i++) {\r\n\t\t\t\tlet name = decoded[i].name;\r\n\t\t\t\tlet decodedNumPoints = decoded[i].numPoints;\r\n\t\t\t\tlet index = parseInt(name.charAt(name.length - 1));\r\n\t\t\t\tlet parentName = name.substring(0, name.length - 1);\r\n\t\t\t\tlet parentNode = nodes[parentName];\r\n\t\t\t\tlet level = name.length - 1;\r\n\t\t\t\tlet boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\r\n\r\n\t\t\t\tlet currentNode = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\r\n\t\t\t\tcurrentNode.level = level;\r\n\t\t\t\tcurrentNode.numPoints = decodedNumPoints;\r\n\t\t\t\tcurrentNode.hasChildren = decoded[i].children > 0;\r\n\t\t\t\tcurrentNode.spacing = pco.spacing / Math.pow(2, level);\r\n\t\t\t\tparentNode.addChild(currentNode);\r\n\t\t\t\tnodes[name] = currentNode;\r\n\t\t\t}\r\n\r\n\t\t\tlet duration = performance.now() - tStart;\r\n\t\t\tif(duration > 5){\r\n\t\t\t\tlet msg = `duration: ${duration}ms, numNodes: ${decoded.length}`;\r\n\t\t\t\tconsole.log(msg);\r\n\t\t\t}\r\n\r\n\t\t\tnode.loadPoints();\r\n\t\t};\r\n\t\tif ((node.level % node.pcoGeometry.hierarchyStepSize) === 0) {\r\n\t\t\t// let hurl = node.pcoGeometry.octreeDir + \"/../hierarchy/\" + node.name + \".hrc\";\r\n\t\t\tlet hurl = node.pcoGeometry.octreeDir + '/' + node.getHierarchyPath() + '/' + node.name + '.hrc';\r\n\r\n\t\t\tlet xhr = XHRFactory.createXMLHttpRequest();\r\n\t\t\txhr.open('GET', hurl, true);\r\n\t\t\txhr.responseType = 'arraybuffer';\r\n\t\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\r\n\t\t\txhr.onreadystatechange = () => {\r\n\t\t\t\tif (xhr.readyState === 4) {\r\n\t\t\t\t\tif (xhr.status === 200 || xhr.status === 0) {\r\n\t\t\t\t\t\tlet hbuffer = xhr.response;\r\n\t\t\t\t\t\tcallback(node, hbuffer);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tconsole.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + hurl);\r\n\t\t\t\t\t\tPotree.numNodesLoading--;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\ttry {\r\n\t\t\t\txhr.send(null);\r\n\t\t\t} catch (e) {\r\n\t\t\t\tconsole.log('fehler beim laden der punktwolke: ' + e);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumPoints(){\r\n\t\treturn this.numPoints;\r\n\t}\r\n\r\n\tdispose(){\r\n\t\tif (this.geometry && this.parent != null) {\r\n\t\t\tthis.geometry.dispose();\r\n\t\t\tthis.geometry = null;\r\n\t\t\tthis.loaded = false;\r\n\r\n\t\t\tthis.dispatchEvent( { type: 'dispose' } );\r\n\t\t\t\r\n\t\t\tfor (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\r\n\t\t\t\tlet handler = this.oneTimeDisposeHandlers[i];\r\n\t\t\t\thandler();\r\n\t\t\t}\r\n\t\t\tthis.oneTimeDisposeHandlers = [];\r\n\t\t}\r\n\t}\r\n\t\r\n}\r\n\r\nPointCloudOctreeGeometryNode.IDCount = 0;\r\n","import * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\n// -------------------------------------------\r\n// to get a ready to use gradient array from a chroma.js gradient:\r\n// http://gka.github.io/chroma.js/\r\n// -------------------------------------------\r\n//\r\n// let stops = [];\r\n// for(let i = 0; i <= 10; i++){\r\n//\tlet range = chroma.scale(['yellow', 'navy']).mode('lch').domain([10,0])(i)._rgb\r\n//\t\t.slice(0, 3)\r\n//\t\t.map(v => (v / 255).toFixed(4))\r\n//\t\t.join(\", \");\r\n//\r\n//\tlet line = `[${i / 10}, new THREE.Color(${range})],`;\r\n//\r\n//\tstops.push(line);\r\n// }\r\n// stops.join(\"\\n\");\r\n//\r\n//\r\n//\r\n// -------------------------------------------\r\n// to get a ready to use gradient array from matplotlib:\r\n// -------------------------------------------\r\n// import matplotlib.pyplot as plt\r\n// import matplotlib.colors as colors\r\n//\r\n// norm = colors.Normalize(vmin=0,vmax=1)\r\n// cmap = plt.cm.viridis\r\n//\r\n// for i in range(0,11):\r\n//\tu = i / 10\r\n//\trgb = cmap(norm(u))[0:3]\r\n//\trgb = [\"{0:.3f}\".format(v) for v in rgb]\r\n//\trgb = \"[\" + str(u) + \", new THREE.Color(\" + \", \".join(rgb) + \")],\"\r\n//\tprint(rgb)\r\n\r\nlet Gradients = {\r\n\t// From chroma spectral http://gka.github.io/chroma.js/\r\n\tSPECTRAL: [\r\n\t\t[0, new THREE.Color(0.3686, 0.3098, 0.6353)],\r\n\t\t[0.1, new THREE.Color(0.1961, 0.5333, 0.7412)],\r\n\t\t[0.2, new THREE.Color(0.4000, 0.7608, 0.6471)],\r\n\t\t[0.3, new THREE.Color(0.6706, 0.8667, 0.6431)],\r\n\t\t[0.4, new THREE.Color(0.9020, 0.9608, 0.5961)],\r\n\t\t[0.5, new THREE.Color(1.0000, 1.0000, 0.7490)],\r\n\t\t[0.6, new THREE.Color(0.9961, 0.8784, 0.5451)],\r\n\t\t[0.7, new THREE.Color(0.9922, 0.6824, 0.3804)],\r\n\t\t[0.8, new THREE.Color(0.9569, 0.4275, 0.2627)],\r\n\t\t[0.9, new THREE.Color(0.8353, 0.2431, 0.3098)],\r\n\t\t[1, new THREE.Color(0.6196, 0.0039, 0.2588)]\r\n\t],\r\n\tPLASMA: [\r\n\t\t[0.0, new THREE.Color(0.241, 0.015, 0.610)],\r\n\t\t[0.1, new THREE.Color(0.387, 0.001, 0.654)],\r\n\t\t[0.2, new THREE.Color(0.524, 0.025, 0.653)],\r\n\t\t[0.3, new THREE.Color(0.651, 0.125, 0.596)],\r\n\t\t[0.4, new THREE.Color(0.752, 0.227, 0.513)],\r\n\t\t[0.5, new THREE.Color(0.837, 0.329, 0.431)],\r\n\t\t[0.6, new THREE.Color(0.907, 0.435, 0.353)],\r\n\t\t[0.7, new THREE.Color(0.963, 0.554, 0.272)],\r\n\t\t[0.8, new THREE.Color(0.992, 0.681, 0.195)],\r\n\t\t[0.9, new THREE.Color(0.987, 0.822, 0.144)],\r\n\t\t[1.0, new THREE.Color(0.940, 0.975, 0.131)]\r\n\t],\r\n\tYELLOW_GREEN: [\r\n\t\t[0, new THREE.Color(0.1647, 0.2824, 0.3451)],\r\n\t\t[0.1, new THREE.Color(0.1338, 0.3555, 0.4227)],\r\n\t\t[0.2, new THREE.Color(0.0610, 0.4319, 0.4864)],\r\n\t\t[0.3, new THREE.Color(0.0000, 0.5099, 0.5319)],\r\n\t\t[0.4, new THREE.Color(0.0000, 0.5881, 0.5569)],\r\n\t\t[0.5, new THREE.Color(0.1370, 0.6650, 0.5614)],\r\n\t\t[0.6, new THREE.Color(0.2906, 0.7395, 0.5477)],\r\n\t\t[0.7, new THREE.Color(0.4453, 0.8099, 0.5201)],\r\n\t\t[0.8, new THREE.Color(0.6102, 0.8748, 0.4850)],\r\n\t\t[0.9, new THREE.Color(0.7883, 0.9323, 0.4514)],\r\n\t\t[1, new THREE.Color(0.9804, 0.9804, 0.4314)]\r\n\t],\r\n\tVIRIDIS: [\r\n\t\t[0.0, new THREE.Color(0.267, 0.005, 0.329)],\r\n\t\t[0.1, new THREE.Color(0.283, 0.141, 0.458)],\r\n\t\t[0.2, new THREE.Color(0.254, 0.265, 0.530)],\r\n\t\t[0.3, new THREE.Color(0.207, 0.372, 0.553)],\r\n\t\t[0.4, new THREE.Color(0.164, 0.471, 0.558)],\r\n\t\t[0.5, new THREE.Color(0.128, 0.567, 0.551)],\r\n\t\t[0.6, new THREE.Color(0.135, 0.659, 0.518)],\r\n\t\t[0.7, new THREE.Color(0.267, 0.749, 0.441)],\r\n\t\t[0.8, new THREE.Color(0.478, 0.821, 0.318)],\r\n\t\t[0.9, new THREE.Color(0.741, 0.873, 0.150)],\r\n\t\t[1.0, new THREE.Color(0.993, 0.906, 0.144)]\r\n\t],\r\n\tINFERNO: [\r\n\t\t[0.0, new THREE.Color(0.077, 0.042, 0.206)],\r\n\t\t[0.1, new THREE.Color(0.225, 0.036, 0.388)],\r\n\t\t[0.2, new THREE.Color(0.373, 0.074, 0.432)],\r\n\t\t[0.3, new THREE.Color(0.522, 0.128, 0.420)],\r\n\t\t[0.4, new THREE.Color(0.665, 0.182, 0.370)],\r\n\t\t[0.5, new THREE.Color(0.797, 0.255, 0.287)],\r\n\t\t[0.6, new THREE.Color(0.902, 0.364, 0.184)],\r\n\t\t[0.7, new THREE.Color(0.969, 0.516, 0.063)],\r\n\t\t[0.8, new THREE.Color(0.988, 0.683, 0.072)],\r\n\t\t[0.9, new THREE.Color(0.961, 0.859, 0.298)],\r\n\t\t[1.0, new THREE.Color(0.988, 0.998, 0.645)]\r\n\t],\r\n\tGRAYSCALE: [\r\n\t\t[0, new THREE.Color(0, 0, 0)],\r\n\t\t[1, new THREE.Color(1, 1, 1)]\r\n\t],\r\n\t// 16 samples of the TURBU color scheme\r\n\t// values taken from: https://gist.github.com/mikhailov-work/ee72ba4191942acecc03fe6da94fc73f\r\n\t// original file licensed under Apache-2.0\r\n\tTURBO: [\r\n\t\t[0.00, new THREE.Color(0.18995, 0.07176, 0.23217)],\r\n\t\t[0.07, new THREE.Color(0.25107, 0.25237, 0.63374)],\r\n\t\t[0.13, new THREE.Color(0.27628, 0.42118, 0.89123)],\r\n\t\t[0.20, new THREE.Color(0.25862, 0.57958, 0.99876)],\r\n\t\t[0.27, new THREE.Color(0.15844, 0.73551, 0.92305)],\r\n\t\t[0.33, new THREE.Color(0.09267, 0.86554, 0.7623)],\r\n\t\t[0.40, new THREE.Color(0.19659, 0.94901, 0.59466)],\r\n\t\t[0.47, new THREE.Color(0.42778, 0.99419, 0.38575)],\r\n\t\t[0.53, new THREE.Color(0.64362, 0.98999, 0.23356)],\r\n\t\t[0.60, new THREE.Color(0.80473, 0.92452, 0.20459)],\r\n\t\t[0.67, new THREE.Color(0.93301, 0.81236, 0.22667)],\r\n\t\t[0.73, new THREE.Color(0.99314, 0.67408, 0.20348)],\r\n\t\t[0.80, new THREE.Color(0.9836, 0.49291, 0.12849)],\r\n\t\t[0.87, new THREE.Color(0.92105, 0.31489, 0.05475)],\r\n\t\t[0.93, new THREE.Color(0.81608, 0.18462, 0.01809)],\r\n\t\t[1.00, new THREE.Color(0.66449, 0.08436, 0.00424)],\r\n\t],\r\n\tRAINBOW: [\r\n\t\t[0, new THREE.Color(0.278, 0, 0.714)],\r\n\t\t[1 / 6, new THREE.Color(0, 0, 1)],\r\n\t\t[2 / 6, new THREE.Color(0, 1, 1)],\r\n\t\t[3 / 6, new THREE.Color(0, 1, 0)],\r\n\t\t[4 / 6, new THREE.Color(1, 1, 0)],\r\n\t\t[5 / 6, new THREE.Color(1, 0.64, 0)],\r\n\t\t[1, new THREE.Color(1, 0, 0)]\r\n\t],\r\n\tCONTOUR: [\r\n\t\t[0.00, new THREE.Color(0, 0, 0)],\r\n\t\t[0.03, new THREE.Color(0, 0, 0)],\r\n\t\t[0.04, new THREE.Color(1, 1, 1)],\r\n\t\t[1.00, new THREE.Color(1, 1, 1)]\r\n\t],\r\n};\r\n\r\n\r\nexport {Gradients};\r\n","let Shaders = {};\n\nShaders[\"pointcloud.vs\"] = `\r\nprecision highp float;\r\nprecision highp int;\r\n\r\n#define max_clip_polygons 8\r\n#define PI 3.141592653589793\r\n\r\nattribute vec3 position;\r\nattribute vec3 color;\r\nattribute float intensity;\r\nattribute float classification;\r\nattribute float returnNumber;\r\nattribute float numberOfReturns;\r\nattribute float pointSourceID;\r\nattribute vec4 indices;\r\nattribute float spacing;\r\nattribute float gpsTime;\r\nattribute vec3 normal;\r\nattribute float aExtra;\r\n\r\nuniform mat4 modelMatrix;\r\nuniform mat4 modelViewMatrix;\r\nuniform mat4 projectionMatrix;\r\nuniform mat4 viewMatrix;\r\nuniform mat4 uViewInv;\r\n\r\nuniform float uScreenWidth;\r\nuniform float uScreenHeight;\r\nuniform float fov;\r\nuniform float near;\r\nuniform float far;\r\n\r\nuniform bool uDebug;\r\n\r\nuniform bool uUseOrthographicCamera;\r\nuniform float uOrthoWidth;\r\nuniform float uOrthoHeight;\r\n\r\n#define CLIPTASK_NONE 0\r\n#define CLIPTASK_HIGHLIGHT 1\r\n#define CLIPTASK_SHOW_INSIDE 2\r\n#define CLIPTASK_SHOW_OUTSIDE 3\r\n\r\n#define CLIPMETHOD_INSIDE_ANY 0\r\n#define CLIPMETHOD_INSIDE_ALL 1\r\n\r\nuniform int clipTask;\r\nuniform int clipMethod;\r\n#if defined(num_clipboxes) && num_clipboxes > 0\r\n\tuniform mat4 clipBoxes[num_clipboxes];\r\n#endif\r\n\r\n#if defined(num_clipspheres) && num_clipspheres > 0\r\n\tuniform mat4 uClipSpheres[num_clipspheres];\r\n#endif\r\n\r\n#if defined(num_clippolygons) && num_clippolygons > 0\r\n\tuniform int uClipPolygonVCount[num_clippolygons];\r\n\tuniform vec3 uClipPolygonVertices[num_clippolygons * 8];\r\n\tuniform mat4 uClipPolygonWVP[num_clippolygons];\r\n#endif\r\n\r\n\r\nuniform float size;\r\nuniform float minSize;\r\nuniform float maxSize;\r\n\r\nuniform float uPCIndex;\r\nuniform float uOctreeSpacing;\r\nuniform float uNodeSpacing;\r\nuniform float uOctreeSize;\r\nuniform vec3 uBBSize;\r\nuniform float uLevel;\r\nuniform float uVNStart;\r\nuniform bool uIsLeafNode;\r\n\r\nuniform vec3 uColor;\r\nuniform float uOpacity;\r\n\r\nuniform vec2 elevationRange;\r\nuniform vec2 intensityRange;\r\n\r\nuniform vec2 uFilterReturnNumberRange;\r\nuniform vec2 uFilterNumberOfReturnsRange;\r\nuniform vec2 uFilterPointSourceIDClipRange;\r\nuniform vec2 uFilterGPSTimeClipRange;\r\nuniform float uGpsScale;\r\nuniform float uGpsOffset;\r\n\r\nuniform vec2 uNormalizedGpsBufferRange;\r\n\r\nuniform vec3 uIntensity_gbc;\r\nuniform vec3 uRGB_gbc;\r\nuniform vec3 uExtra_gbc;\r\n\r\nuniform float uTransition;\r\nuniform float wRGB;\r\nuniform float wIntensity;\r\nuniform float wElevation;\r\nuniform float wClassification;\r\nuniform float wReturnNumber;\r\nuniform float wSourceID;\r\n\r\nuniform vec2 uExtraNormalizedRange;\r\nuniform vec2 uExtraRange;\r\nuniform float uExtraScale;\r\nuniform float uExtraOffset;\r\n\r\nuniform vec3 uShadowColor;\r\n\r\nuniform sampler2D visibleNodes;\r\nuniform sampler2D gradient;\r\nuniform sampler2D classificationLUT;\r\n\r\n#if defined(color_type_matcap)\r\nuniform sampler2D matcapTextureUniform;\r\n#endif\r\nuniform bool backfaceCulling;\r\n\r\n#if defined(num_shadowmaps) && num_shadowmaps > 0\r\nuniform sampler2D uShadowMap[num_shadowmaps];\r\nuniform mat4 uShadowWorldView[num_shadowmaps];\r\nuniform mat4 uShadowProj[num_shadowmaps];\r\n#endif\r\n\r\nvarying vec3\tvColor;\r\nvarying float\tvLogDepth;\r\nvarying vec3\tvViewPosition;\r\nvarying float \tvRadius;\r\nvarying float \tvPointSize;\r\n\r\n\r\nfloat round(float number){\r\n\treturn floor(number + 0.5);\r\n}\r\n\r\n// \r\n// ### ######## ### ######## ######## #### ## ## ######## ###### #### ######## ######## ###### \r\n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \r\n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \r\n// ## ## ## ## ## ## ######## ## ## ## ## ###### ###### ## ## ###### ###### \r\n// ######### ## ## ######### ## ## ## ## ## ## ## ## ## ## ## \r\n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \r\n// ## ## ######## ## ## ## ## #### ### ######## ###### #### ######## ######## ###### \r\n// \t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\r\n\r\n\r\n// ---------------------\r\n// OCTREE\r\n// ---------------------\r\n\r\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_octree)\r\n/**\r\n * number of 1-bits up to inclusive index position\r\n * number is treated as if it were an integer in the range 0-255\r\n *\r\n */\r\nint numberOfOnes(int number, int index){\r\n\tint numOnes = 0;\r\n\tint tmp = 128;\r\n\tfor(int i = 7; i >= 0; i--){\r\n\t\t\r\n\t\tif(number >= tmp){\r\n\t\t\tnumber = number - tmp;\r\n\r\n\t\t\tif(i <= index){\r\n\t\t\t\tnumOnes++;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\ttmp = tmp / 2;\r\n\t}\r\n\r\n\treturn numOnes;\r\n}\r\n\r\n\r\n/**\r\n * checks whether the bit at index is 1\r\n * number is treated as if it were an integer in the range 0-255\r\n *\r\n */\r\nbool isBitSet(int number, int index){\r\n\r\n\t// weird multi else if due to lack of proper array, int and bitwise support in WebGL 1.0\r\n\tint powi = 1;\r\n\tif(index == 0){\r\n\t\tpowi = 1;\r\n\t}else if(index == 1){\r\n\t\tpowi = 2;\r\n\t}else if(index == 2){\r\n\t\tpowi = 4;\r\n\t}else if(index == 3){\r\n\t\tpowi = 8;\r\n\t}else if(index == 4){\r\n\t\tpowi = 16;\r\n\t}else if(index == 5){\r\n\t\tpowi = 32;\r\n\t}else if(index == 6){\r\n\t\tpowi = 64;\r\n\t}else if(index == 7){\r\n\t\tpowi = 128;\r\n\t}else{\r\n\t\treturn false;\r\n\t}\r\n\r\n\tint ndp = number / powi;\r\n\r\n\treturn mod(float(ndp), 2.0) != 0.0;\r\n}\r\n\r\n\r\n/**\r\n * find the LOD at the point position\r\n */\r\nfloat getLOD(){\r\n\t\r\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\r\n\tint iOffset = int(uVNStart);\r\n\tfloat depth = uLevel;\r\n\tfor(float i = 0.0; i <= 30.0; i++){\r\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\r\n\t\t\r\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\r\n\t\tindex3d = floor(index3d + 0.5);\r\n\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\r\n\t\t\r\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\r\n\t\tint mask = int(round(value.r * 255.0));\r\n\r\n\t\tif(isBitSet(mask, index)){\r\n\t\t\t// there are more visible child nodes at this position\r\n\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\r\n\t\t\tint advanceB = int(round(value.b * 255.0));\r\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\r\n\t\t\tint advance = advanceG + advanceB + advanceChild;\r\n\r\n\t\t\tiOffset = iOffset + advance;\r\n\t\t\t\r\n\t\t\tdepth++;\r\n\t\t}else{\r\n\t\t\t// no more visible child nodes at this position\r\n\t\t\t//return value.a * 255.0;\r\n\r\n\t\t\tfloat lodOffset = (255.0 * value.a) / 10.0 - 10.0;\r\n\r\n\t\t\treturn depth + lodOffset;\r\n\t\t}\r\n\t\t\r\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\r\n\t}\r\n\t\t\r\n\treturn depth;\r\n}\r\n\r\nfloat getSpacing(){\r\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\r\n\tint iOffset = int(uVNStart);\r\n\tfloat depth = uLevel;\r\n\tfloat spacing = uNodeSpacing;\r\n\tfor(float i = 0.0; i <= 30.0; i++){\r\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\r\n\t\t\r\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\r\n\t\tindex3d = floor(index3d + 0.5);\r\n\t\tint index = int(round(4.0 * index3d.x + 2.0 * index3d.y + index3d.z));\r\n\t\t\r\n\t\tvec4 value = texture2D(visibleNodes, vec2(float(iOffset) / 2048.0, 0.0));\r\n\t\tint mask = int(round(value.r * 255.0));\r\n\t\tfloat spacingFactor = value.a;\r\n\r\n\t\tif(i > 0.0){\r\n\t\t\tspacing = spacing / (255.0 * spacingFactor);\r\n\t\t}\r\n\t\t\r\n\r\n\t\tif(isBitSet(mask, index)){\r\n\t\t\t// there are more visible child nodes at this position\r\n\t\t\tint advanceG = int(round(value.g * 255.0)) * 256;\r\n\t\t\tint advanceB = int(round(value.b * 255.0));\r\n\t\t\tint advanceChild = numberOfOnes(mask, index - 1);\r\n\t\t\tint advance = advanceG + advanceB + advanceChild;\r\n\r\n\t\t\tiOffset = iOffset + advance;\r\n\r\n\t\t\t//spacing = spacing / (255.0 * spacingFactor);\r\n\t\t\t//spacing = spacing / 3.0;\r\n\t\t\t\r\n\t\t\tdepth++;\r\n\t\t}else{\r\n\t\t\t// no more visible child nodes at this position\r\n\t\t\treturn spacing;\r\n\t\t}\r\n\t\t\r\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\r\n\t}\r\n\t\t\r\n\treturn spacing;\r\n}\r\n\r\nfloat getPointSizeAttenuation(){\r\n\treturn pow(2.0, getLOD());\r\n}\r\n\r\n\r\n#endif\r\n\r\n\r\n// ---------------------\r\n// KD-TREE\r\n// ---------------------\r\n\r\n#if (defined(adaptive_point_size) || defined(color_type_level_of_detail)) && defined(tree_type_kdtree)\r\n\r\nfloat getLOD(){\r\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\r\n\tfloat iOffset = 0.0;\r\n\tfloat depth = 0.0;\r\n\t\t\r\n\t\t\r\n\tvec3 size = uBBSize;\t\r\n\tvec3 pos = position;\r\n\t\t\r\n\tfor(float i = 0.0; i <= 1000.0; i++){\r\n\t\t\r\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\r\n\t\t\r\n\t\tint children = int(value.r * 255.0);\r\n\t\tfloat next = value.g * 255.0;\r\n\t\tint split = int(value.b * 255.0);\r\n\t\t\r\n\t\tif(next == 0.0){\r\n\t\t \treturn depth;\r\n\t\t}\r\n\t\t\r\n\t\tvec3 splitv = vec3(0.0, 0.0, 0.0);\r\n\t\tif(split == 1){\r\n\t\t\tsplitv.x = 1.0;\r\n\t\t}else if(split == 2){\r\n\t\t \tsplitv.y = 1.0;\r\n\t\t}else if(split == 4){\r\n\t\t \tsplitv.z = 1.0;\r\n\t\t}\r\n\t\t\r\n\t\tiOffset = iOffset + next;\r\n\t\t\r\n\t\tfloat factor = length(pos * splitv / size);\r\n\t\tif(factor < 0.5){\r\n\t\t\t// left\r\n\t\tif(children == 0 || children == 2){\r\n\t\t\t\treturn depth;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\t// right\r\n\t\t\tpos = pos - size * splitv * 0.5;\r\n\t\t\tif(children == 0 || children == 1){\r\n\t\t\t\treturn depth;\r\n\t\t\t}\r\n\t\t\tif(children == 3){\r\n\t\t\t\tiOffset = iOffset + 1.0;\r\n\t\t\t}\r\n\t\t}\r\n\t\tsize = size * ((1.0 - (splitv + 1.0) / 2.0) + 0.5);\r\n\t\t\r\n\t\tdepth++;\r\n\t}\r\n\t\t\r\n\t\t\r\n\treturn depth;\t\r\n}\r\n\r\nfloat getPointSizeAttenuation(){\r\n\treturn 0.5 * pow(1.3, getLOD());\r\n}\r\n\r\n#endif\r\n\r\n\r\n\r\n// \r\n// ### ######## ######## ######## #### ######## ## ## ######## ######## ###### \r\n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \r\n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## \r\n// ## ## ## ## ######## ## ######## ## ## ## ###### ###### \r\n// ######### ## ## ## ## ## ## ## ## ## ## ## ## \r\n// ## ## ## ## ## ## ## ## ## ## ## ## ## ## ## \r\n// ## ## ## ## ## ## #### ######## ####### ## ######## ###### \r\n// \r\n\r\n\r\n\r\n// formula adapted from: http://www.dfstudios.co.uk/articles/programming/image-programming-algorithms/image-processing-algorithms-part-5-contrast-adjustment/\r\nfloat getContrastFactor(float contrast){\r\n\treturn (1.0158730158730156 * (contrast + 1.0)) / (1.0158730158730156 - contrast);\r\n}\r\n\r\nvec3 getRGB(){\r\n\tvec3 rgb = color;\r\n\t\r\n\trgb = pow(rgb, vec3(uRGB_gbc.x));\r\n\trgb = rgb + uRGB_gbc.y;\r\n\trgb = (rgb - 0.5) * getContrastFactor(uRGB_gbc.z) + 0.5;\r\n\trgb = clamp(rgb, 0.0, 1.0);\r\n\r\n\treturn rgb;\r\n}\r\n\r\nfloat getIntensity(){\r\n\tfloat w = (intensity - intensityRange.x) / (intensityRange.y - intensityRange.x);\r\n\tw = pow(w, uIntensity_gbc.x);\r\n\tw = w + uIntensity_gbc.y;\r\n\tw = (w - 0.5) * getContrastFactor(uIntensity_gbc.z) + 0.5;\r\n\tw = clamp(w, 0.0, 1.0);\r\n\r\n\treturn w;\r\n}\r\n\r\nvec3 getGpsTime(){\r\n\r\n\tfloat w = (gpsTime + uGpsOffset) * uGpsScale;\r\n\r\n\r\n\tvec3 c = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\r\n\r\n\r\n\t// vec2 r = uNormalizedGpsBufferRange;\r\n\t// float w = gpsTime * (r.y - r.x) + r.x;\r\n\t// w = clamp(w, 0.0, 1.0);\r\n\t// vec3 c = texture2D(gradient, vec2(w,1.0-w)).rgb;\r\n\t\r\n\treturn c;\r\n}\r\n\r\nvec3 getElevation(){\r\n\tvec4 world = modelMatrix * vec4( position, 1.0 );\r\n\tfloat w = (world.z - elevationRange.x) / (elevationRange.y - elevationRange.x);\r\n\tvec3 cElevation = texture2D(gradient, vec2(w,1.0-w)).rgb;\r\n\t\r\n\treturn cElevation;\r\n}\r\n\r\nvec4 getClassification(){\r\n\tvec2 uv = vec2(classification / 255.0, 0.5);\r\n\tvec4 classColor = texture2D(classificationLUT, uv);\r\n\t\r\n\treturn classColor;\r\n}\r\n\r\nvec3 getReturns(){\r\n\r\n\t// 0b 00_000_111\r\n\tfloat rn = mod(returnNumber, 8.0);\r\n\t// 0b 00_111_000\r\n\tfloat nr = mod(returnNumber / 8.0, 8.0);\r\n\r\n\tif(nr <= 1.0){\r\n\t\treturn vec3(1.0, 0.0, 0.0);\r\n\t}else{\r\n\t\treturn vec3(0.0, 1.0, 0.0);\r\n\t}\r\n\r\n\t// return vec3(nr / 4.0, 0.0, 0.0);\r\n\r\n\t// if(nr == 1.0){\r\n\t// \treturn vec3(1.0, 1.0, 0.0);\r\n\t// }else{\r\n\t// \tif(rn == 1.0){\r\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\r\n\t// \t}else if(rn == nr){\r\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\r\n\t// \t}else{\r\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\r\n\t// \t}\r\n\t// }\r\n\r\n\t// if(numberOfReturns == 1.0){\r\n\t// \treturn vec3(1.0, 1.0, 0.0);\r\n\t// }else{\r\n\t// \tif(returnNumber == 1.0){\r\n\t// \t\treturn vec3(1.0, 0.0, 0.0);\r\n\t// \t}else if(returnNumber == numberOfReturns){\r\n\t// \t\treturn vec3(0.0, 0.0, 1.0);\r\n\t// \t}else{\r\n\t// \t\treturn vec3(0.0, 1.0, 0.0);\r\n\t// \t}\r\n\t// }\r\n}\r\n\r\nvec3 getReturnNumber(){\r\n\tif(numberOfReturns == 1.0){\r\n\t\treturn vec3(1.0, 1.0, 0.0);\r\n\t}else{\r\n\t\tif(returnNumber == 1.0){\r\n\t\t\treturn vec3(1.0, 0.0, 0.0);\r\n\t\t}else if(returnNumber == numberOfReturns){\r\n\t\t\treturn vec3(0.0, 0.0, 1.0);\r\n\t\t}else{\r\n\t\t\treturn vec3(0.0, 1.0, 0.0);\r\n\t\t}\r\n\t}\r\n}\r\n\r\nvec3 getNumberOfReturns(){\r\n\tfloat value = numberOfReturns;\r\n\r\n\tfloat w = value / 6.0;\r\n\r\n\tvec3 color = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\r\n\r\n\treturn color;\r\n}\r\n\r\nvec3 getSourceID(){\r\n\tfloat w = mod(pointSourceID, 10.0) / 10.0;\r\n\treturn texture2D(gradient, vec2(w,1.0 - w)).rgb;\r\n}\r\n\r\nvec3 getCompositeColor(){\r\n\tvec3 c;\r\n\tfloat w;\r\n\r\n\tc += wRGB * getRGB();\r\n\tw += wRGB;\r\n\t\r\n\tc += wIntensity * getIntensity() * vec3(1.0, 1.0, 1.0);\r\n\tw += wIntensity;\r\n\t\r\n\tc += wElevation * getElevation();\r\n\tw += wElevation;\r\n\t\r\n\tc += wReturnNumber * getReturnNumber();\r\n\tw += wReturnNumber;\r\n\t\r\n\tc += wSourceID * getSourceID();\r\n\tw += wSourceID;\r\n\t\r\n\tvec4 cl = wClassification * getClassification();\r\n\tc += cl.a * cl.rgb;\r\n\tw += wClassification * cl.a;\r\n\r\n\tc = c / w;\r\n\t\r\n\tif(w == 0.0){\r\n\t\t//c = color;\r\n\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\r\n\t}\r\n\t\r\n\treturn c;\r\n}\r\n\r\n\r\nvec3 getNormal(){\r\n\t//vec3 n_hsv = vec3( modelMatrix * vec4( normal, 0.0 )) * 0.5 + 0.5; // (n_world.xyz + vec3(1.,1.,1.)) / 2.;\r\n\tvec3 n_view = normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\r\n\treturn n_view;\r\n}\r\nbool applyBackfaceCulling() {\r\n\t// Black not facing vertices / Backface culling\r\n\tvec3 e = normalize(vec3(modelViewMatrix * vec4( position, 1. )));\r\n\tvec3 n = getNormal(); // normalize( vec3(modelViewMatrix * vec4( normal, 0.0 )) );\r\n\r\n\tif((uUseOrthographicCamera && n.z <= 0.) || (!uUseOrthographicCamera && dot( n, e ) >= 0.)) { \r\n\t\treturn true;\r\n\t} else {\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\n#if defined(color_type_matcap)\r\n// Matcap Material\r\nvec3 getMatcap(){ \r\n\tvec3 eye = normalize( vec3( modelViewMatrix * vec4( position, 1. ) ) ); \r\n\tif(uUseOrthographicCamera) { \r\n\t\teye = vec3(0., 0., -1.);\r\n\t}\r\n\tvec3 r_en = reflect( eye, getNormal() ); // or r_en = e - 2. * dot( n, e ) * n;\r\n\tfloat m = 2. * sqrt(pow( r_en.x, 2. ) + pow( r_en.y, 2. ) + pow( r_en.z + 1., 2. ));\r\n\tvec2 vN = r_en.xy / m + .5;\r\n\treturn texture2D(matcapTextureUniform, vN).rgb; \r\n}\r\n#endif\r\n\r\nvec3 getExtra(){\r\n\r\n\tfloat w = (aExtra + uExtraOffset) * uExtraScale;\r\n\tw = clamp(w, 0.0, 1.0);\r\n\r\n\tvec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\r\n\r\n\t// vec2 r = uExtraNormalizedRange;\r\n\r\n\t// float w = aExtra * (r.y - r.x) + r.x;\r\n\r\n\t// w = (w - uExtraRange.x) / (uExtraRange.y - uExtraRange.x);\r\n\r\n\t// w = clamp(w, 0.0, 1.0);\r\n\r\n\t// vec3 color = texture2D(gradient, vec2(w,1.0-w)).rgb;\r\n\r\n\treturn color;\r\n}\r\n\r\nvec3 getColor(){\r\n\tvec3 color;\r\n\t\r\n\t#ifdef color_type_rgba\r\n\t\tcolor = getRGB();\r\n\t#elif defined color_type_height || defined color_type_elevation\r\n\t\tcolor = getElevation();\r\n\t#elif defined color_type_rgb_height\r\n\t\tvec3 cHeight = getElevation();\r\n\t\tcolor = (1.0 - uTransition) * getRGB() + uTransition * cHeight;\r\n\t#elif defined color_type_depth\r\n\t\tfloat linearDepth = gl_Position.w;\r\n\t\tfloat expDepth = (gl_Position.z / gl_Position.w) * 0.5 + 0.5;\r\n\t\tcolor = vec3(linearDepth, expDepth, 0.0);\r\n\t\t//color = vec3(1.0, 0.5, 0.3);\r\n\t#elif defined color_type_intensity\r\n\t\tfloat w = getIntensity();\r\n\t\tcolor = vec3(w, w, w);\r\n\t#elif defined color_type_gps_time\r\n\t\tcolor = getGpsTime();\r\n\t#elif defined color_type_intensity_gradient\r\n\t\tfloat w = getIntensity();\r\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\r\n\t#elif defined color_type_color\r\n\t\tcolor = uColor;\r\n\t#elif defined color_type_level_of_detail\r\n\t\tfloat depth = getLOD();\r\n\t\tfloat w = depth / 10.0;\r\n\t\tcolor = texture2D(gradient, vec2(w,1.0-w)).rgb;\r\n\t#elif defined color_type_indices\r\n\t\tcolor = indices.rgb;\r\n\t#elif defined color_type_classification\r\n\t\tvec4 cl = getClassification(); \r\n\t\tcolor = cl.rgb;\r\n\t#elif defined color_type_return_number\r\n\t\tcolor = getReturnNumber();\r\n\t#elif defined color_type_returns\r\n\t\tcolor = getReturns();\r\n\t#elif defined color_type_number_of_returns\r\n\t\tcolor = getNumberOfReturns();\r\n\t#elif defined color_type_source_id\r\n\t\tcolor = getSourceID();\r\n\t#elif defined color_type_point_source_id\r\n\t\tcolor = getSourceID();\r\n\t#elif defined color_type_normal\r\n\t\tcolor = (modelMatrix * vec4(normal, 0.0)).xyz;\r\n\t#elif defined color_type_phong\r\n\t\tcolor = color;\r\n\t#elif defined color_type_composite\r\n\t\tcolor = getCompositeColor();\r\n\t#elif defined color_type_matcap\r\n\t\tcolor = getMatcap();\r\n\t#else \r\n\t\tcolor = getExtra();\r\n\t#endif\r\n\t\r\n\tif (backfaceCulling && applyBackfaceCulling()) {\r\n\t\tcolor = vec3(0.);\r\n\t}\r\n\r\n\treturn color;\r\n}\r\n\r\nfloat getPointSize(){\r\n\tfloat pointSize = 1.0;\r\n\t\r\n\tfloat slope = tan(fov / 2.0);\r\n\tfloat projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z);\r\n\r\n\tfloat scale = length(\r\n\t\tmodelViewMatrix * vec4(0, 0, 0, 1) - \r\n\t\tmodelViewMatrix * vec4(uOctreeSpacing, 0, 0, 1)\r\n\t) / uOctreeSpacing;\r\n\tprojFactor = projFactor * scale;\r\n\t\r\n\tfloat r = uOctreeSpacing * 1.7;\r\n\tvRadius = r;\r\n\t#if defined fixed_point_size\r\n\t\tpointSize = size;\r\n\t#elif defined attenuated_point_size\r\n\t\tif(uUseOrthographicCamera){\r\n\t\t\tpointSize = size;\r\n\t\t}else{\r\n\t\t\tpointSize = size * spacing * projFactor;\r\n\t\t\t//pointSize = pointSize * projFactor;\r\n\t\t}\r\n\t#elif defined adaptive_point_size\r\n\t\tif(uUseOrthographicCamera) {\r\n\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\r\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth;\r\n\t\t} else {\r\n\t\t\tfloat worldSpaceSize = 1.0 * size * r / getPointSizeAttenuation();\r\n\t\t\tpointSize = worldSpaceSize * projFactor;\r\n\t\t}\r\n\t#endif\r\n\r\n\tpointSize = max(minSize, pointSize);\r\n\tpointSize = min(maxSize, pointSize);\r\n\t\r\n\tvRadius = pointSize / projFactor;\r\n\r\n\treturn pointSize;\r\n}\r\n\r\n#if defined(num_clippolygons) && num_clippolygons > 0\r\nbool pointInClipPolygon(vec3 point, int polyIdx) {\r\n\r\n\tmat4 wvp = uClipPolygonWVP[polyIdx];\r\n\t//vec4 screenClipPos = uClipPolygonVP[polyIdx] * modelMatrix * vec4(point, 1.0);\r\n\t//screenClipPos.xy = screenClipPos.xy / screenClipPos.w * 0.5 + 0.5;\r\n\r\n\tvec4 pointNDC = wvp * vec4(point, 1.0);\r\n\tpointNDC.xy = pointNDC.xy / pointNDC.w;\r\n\r\n\tint j = uClipPolygonVCount[polyIdx] - 1;\r\n\tbool c = false;\r\n\tfor(int i = 0; i < 8; i++) {\r\n\t\tif(i == uClipPolygonVCount[polyIdx]) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\t//vec4 verti = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + i], 1);\r\n\t\t//vec4 vertj = wvp * vec4(uClipPolygonVertices[polyIdx * 8 + j], 1);\r\n\r\n\t\t//verti.xy = verti.xy / verti.w;\r\n\t\t//vertj.xy = vertj.xy / vertj.w;\r\n\r\n\t\t//verti.xy = verti.xy / verti.w * 0.5 + 0.5;\r\n\t\t//vertj.xy = vertj.xy / vertj.w * 0.5 + 0.5;\r\n\r\n\t\tvec3 verti = uClipPolygonVertices[polyIdx * 8 + i];\r\n\t\tvec3 vertj = uClipPolygonVertices[polyIdx * 8 + j];\r\n\r\n\t\tif( ((verti.y > pointNDC.y) != (vertj.y > pointNDC.y)) && \r\n\t\t\t(pointNDC.x < (vertj.x-verti.x) * (pointNDC.y-verti.y) / (vertj.y-verti.y) + verti.x) ) {\r\n\t\t\tc = !c;\r\n\t\t}\r\n\t\tj = i;\r\n\t}\r\n\r\n\treturn c;\r\n}\r\n#endif\r\n\r\nvoid doClipping(){\r\n\r\n\t{\r\n\t\tvec4 cl = getClassification(); \r\n\t\tif(cl.a == 0.0){\r\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\r\n\t#if defined(clip_return_number_enabled)\r\n\t{ // return number filter\r\n\t\tvec2 range = uFilterReturnNumberRange;\r\n\t\tif(returnNumber < range.x || returnNumber > range.y){\r\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\t#endif\r\n\r\n\t#if defined(clip_number_of_returns_enabled)\r\n\t{ // number of return filter\r\n\t\tvec2 range = uFilterNumberOfReturnsRange;\r\n\t\tif(numberOfReturns < range.x || numberOfReturns > range.y){\r\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\t#endif\r\n\r\n\t#if defined(clip_gps_enabled)\r\n\t{ // GPS time filter\r\n\t\tfloat time = (gpsTime + uGpsOffset) * uGpsScale;\r\n\t\tvec2 range = uFilterGPSTimeClipRange;\r\n\r\n\t\tif(time < range.x || time > range.y){\r\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\t#endif\r\n\r\n\t#if defined(clip_point_source_id_enabled)\r\n\t{ // point source id filter\r\n\t\tvec2 range = uFilterPointSourceIDClipRange;\r\n\t\tif(pointSourceID < range.x || pointSourceID > range.y){\r\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 0.0);\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\t}\r\n\t#endif\r\n\r\n\tint clipVolumesCount = 0;\r\n\tint insideCount = 0;\r\n\r\n\t#if defined(num_clipboxes) && num_clipboxes > 0\r\n\t\tfor(int i = 0; i < num_clipboxes; i++){\r\n\t\t\tvec4 clipPosition = clipBoxes[i] * modelMatrix * vec4( position, 1.0 );\r\n\t\t\tbool inside = -0.5 <= clipPosition.x && clipPosition.x <= 0.5;\r\n\t\t\tinside = inside && -0.5 <= clipPosition.y && clipPosition.y <= 0.5;\r\n\t\t\tinside = inside && -0.5 <= clipPosition.z && clipPosition.z <= 0.5;\r\n\r\n\t\t\tinsideCount = insideCount + (inside ? 1 : 0);\r\n\t\t\tclipVolumesCount++;\r\n\t\t}\t\r\n\t#endif\r\n\r\n\t#if defined(num_clippolygons) && num_clippolygons > 0\r\n\t\tfor(int i = 0; i < num_clippolygons; i++) {\r\n\t\t\tbool inside = pointInClipPolygon(position, i);\r\n\r\n\t\t\tinsideCount = insideCount + (inside ? 1 : 0);\r\n\t\t\tclipVolumesCount++;\r\n\t\t}\r\n\t#endif\r\n\r\n\tbool insideAny = insideCount > 0;\r\n\tbool insideAll = (clipVolumesCount > 0) && (clipVolumesCount == insideCount);\r\n\r\n\tif(clipMethod == CLIPMETHOD_INSIDE_ANY){\r\n\t\tif(insideAny && clipTask == CLIPTASK_HIGHLIGHT){\r\n\t\t\tvColor.r += 0.5;\r\n\t\t}else if(!insideAny && clipTask == CLIPTASK_SHOW_INSIDE){\r\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\r\n\t\t}else if(insideAny && clipTask == CLIPTASK_SHOW_OUTSIDE){\r\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\r\n\t\t}\r\n\t}else if(clipMethod == CLIPMETHOD_INSIDE_ALL){\r\n\t\tif(insideAll && clipTask == CLIPTASK_HIGHLIGHT){\r\n\t\t\tvColor.r += 0.5;\r\n\t\t}else if(!insideAll && clipTask == CLIPTASK_SHOW_INSIDE){\r\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\r\n\t\t}else if(insideAll && clipTask == CLIPTASK_SHOW_OUTSIDE){\r\n\t\t\tgl_Position = vec4(100.0, 100.0, 100.0, 1.0);\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n\r\n// \r\n// ## ## ### #### ## ## \r\n// ### ### ## ## ## ### ## \r\n// #### #### ## ## ## #### ## \r\n// ## ### ## ## ## ## ## ## ## \r\n// ## ## ######### ## ## #### \r\n// ## ## ## ## ## ## ### \r\n// ## ## ## ## #### ## ## \r\n//\r\n\r\nvoid main() {\r\n\tvec4 mvPosition = modelViewMatrix * vec4(position, 1.0 );\r\n\tvViewPosition = mvPosition.xyz;\r\n\tgl_Position = projectionMatrix * mvPosition;\r\n\tvLogDepth = log2(-mvPosition.z);\r\n\r\n\t//gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\r\n\t//gl_PointSize = 5.0;\r\n\r\n\t// POINT SIZE\r\n\tfloat pointSize = getPointSize();\r\n\t//float pointSize = 2.0;\r\n\tgl_PointSize = pointSize;\r\n\tvPointSize = pointSize;\r\n\r\n\t// COLOR\r\n\tvColor = getColor();\r\n\t// vColor = vec3(1.0, 0.0, 0.0);\r\n\r\n\t//gl_Position = vec4(0.0, 0.0, 0.0, 1.0);\r\n\t//gl_Position = vec4(position.xzy / 1000.0, 1.0 );\r\n\r\n\t//gl_PointSize = 5.0;\r\n\t//vColor = vec3(1.0, 1.0, 1.0);\r\n\r\n\t// only for \"replacing\" approaches\r\n\t// if(getLOD() != uLevel){\r\n\t// \tgl_Position = vec4(10.0, 10.0, 10.0, 1.0);\r\n\t// }\r\n\r\n\r\n\t#if defined hq_depth_pass\r\n\t\tfloat originalDepth = gl_Position.w;\r\n\t\tfloat adjustedDepth = originalDepth + 2.0 * vRadius;\r\n\t\tfloat adjust = adjustedDepth / originalDepth;\r\n\r\n\t\tmvPosition.xyz = mvPosition.xyz * adjust;\r\n\t\tgl_Position = projectionMatrix * mvPosition;\r\n\t#endif\r\n\r\n\r\n\t// CLIPPING\r\n\tdoClipping();\r\n\r\n\t#if defined(num_clipspheres) && num_clipspheres > 0\r\n\t\tfor(int i = 0; i < num_clipspheres; i++){\r\n\t\t\tvec4 sphereLocal = uClipSpheres[i] * mvPosition;\r\n\r\n\t\t\tfloat distance = length(sphereLocal.xyz);\r\n\r\n\t\t\tif(distance < 1.0){\r\n\t\t\t\tfloat w = distance;\r\n\t\t\t\tvec3 cGradient = texture2D(gradient, vec2(w, 1.0 - w)).rgb;\r\n\t\t\t\t\r\n\t\t\t\tvColor = cGradient;\r\n\t\t\t\t//vColor = cGradient * 0.7 + vColor * 0.3;\r\n\t\t\t}\r\n\t\t}\r\n\t#endif\r\n\r\n\t#if defined(num_shadowmaps) && num_shadowmaps > 0\r\n\r\n\t\tconst float sm_near = 0.1;\r\n\t\tconst float sm_far = 10000.0;\r\n\r\n\t\tfor(int i = 0; i < num_shadowmaps; i++){\r\n\t\t\tvec3 viewPos = (uShadowWorldView[i] * vec4(position, 1.0)).xyz;\r\n\t\t\tfloat distanceToLight = abs(viewPos.z);\r\n\t\t\t\r\n\t\t\tvec4 projPos = uShadowProj[i] * uShadowWorldView[i] * vec4(position, 1);\r\n\t\t\tvec3 nc = projPos.xyz / projPos.w;\r\n\t\t\t\r\n\t\t\tfloat u = nc.x * 0.5 + 0.5;\r\n\t\t\tfloat v = nc.y * 0.5 + 0.5;\r\n\r\n\t\t\tvec2 sampleStep = vec2(1.0 / (2.0*1024.0), 1.0 / (2.0*1024.0)) * 1.5;\r\n\t\t\tvec2 sampleLocations[9];\r\n\t\t\tsampleLocations[0] = vec2(0.0, 0.0);\r\n\t\t\tsampleLocations[1] = sampleStep;\r\n\t\t\tsampleLocations[2] = -sampleStep;\r\n\t\t\tsampleLocations[3] = vec2(sampleStep.x, -sampleStep.y);\r\n\t\t\tsampleLocations[4] = vec2(-sampleStep.x, sampleStep.y);\r\n\r\n\t\t\tsampleLocations[5] = vec2(0.0, sampleStep.y);\r\n\t\t\tsampleLocations[6] = vec2(0.0, -sampleStep.y);\r\n\t\t\tsampleLocations[7] = vec2(sampleStep.x, 0.0);\r\n\t\t\tsampleLocations[8] = vec2(-sampleStep.x, 0.0);\r\n\r\n\t\t\tfloat visibleSamples = 0.0;\r\n\t\t\tfloat numSamples = 0.0;\r\n\r\n\t\t\tfloat bias = vRadius * 2.0;\r\n\r\n\t\t\tfor(int j = 0; j < 9; j++){\r\n\t\t\t\tvec4 depthMapValue = texture2D(uShadowMap[i], vec2(u, v) + sampleLocations[j]);\r\n\r\n\t\t\t\tfloat linearDepthFromSM = depthMapValue.x + bias;\r\n\t\t\t\tfloat linearDepthFromViewer = distanceToLight;\r\n\r\n\t\t\t\tif(linearDepthFromSM > linearDepthFromViewer){\r\n\t\t\t\t\tvisibleSamples += 1.0;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnumSamples += 1.0;\r\n\t\t\t}\r\n\r\n\t\t\tfloat visibility = visibleSamples / numSamples;\r\n\r\n\t\t\tif(u < 0.0 || u > 1.0 || v < 0.0 || v > 1.0 || nc.x < -1.0 || nc.x > 1.0 || nc.y < -1.0 || nc.y > 1.0 || nc.z < -1.0 || nc.z > 1.0){\r\n\t\t\t\t//vColor = vec3(0.0, 0.0, 0.2);\r\n\t\t\t}else{\r\n\t\t\t\t//vColor = vec3(1.0, 1.0, 1.0) * visibility + vec3(1.0, 1.0, 1.0) * vec3(0.5, 0.0, 0.0) * (1.0 - visibility);\r\n\t\t\t\tvColor = vColor * visibility + vColor * uShadowColor * (1.0 - visibility);\r\n\t\t\t}\r\n\r\n\r\n\t\t}\r\n\r\n\t#endif\r\n}\r\n`\n\nShaders[\"pointcloud.fs\"] = `\r\n#if defined paraboloid_point_shape\r\n\t#extension GL_EXT_frag_depth : enable\r\n#endif\r\n\r\nprecision highp float;\r\nprecision highp int;\r\n\r\nuniform mat4 viewMatrix;\r\nuniform mat4 uViewInv;\r\nuniform mat4 uProjInv;\r\nuniform vec3 cameraPosition;\r\n\r\n\r\nuniform mat4 projectionMatrix;\r\nuniform float uOpacity;\r\n\r\nuniform float blendHardness;\r\nuniform float blendDepthSupplement;\r\nuniform float fov;\r\nuniform float uSpacing;\r\nuniform float near;\r\nuniform float far;\r\nuniform float uPCIndex;\r\nuniform float uScreenWidth;\r\nuniform float uScreenHeight;\r\n\r\nvarying vec3\tvColor;\r\nvarying float\tvLogDepth;\r\nvarying vec3\tvViewPosition;\r\nvarying float\tvRadius;\r\nvarying float \tvPointSize;\r\nvarying vec3 \tvPosition;\r\n\r\n\r\nfloat specularStrength = 1.0;\r\n\r\nvoid main() {\r\n\r\n\t// gl_FragColor = vec4(vColor, 1.0);\r\n\r\n\tvec3 color = vColor;\r\n\tfloat depth = gl_FragCoord.z;\r\n\r\n\t#if defined(circle_point_shape) || defined(paraboloid_point_shape) \r\n\t\tfloat u = 2.0 * gl_PointCoord.x - 1.0;\r\n\t\tfloat v = 2.0 * gl_PointCoord.y - 1.0;\r\n\t#endif\r\n\t\r\n\t#if defined(circle_point_shape) \r\n\t\tfloat cc = u*u + v*v;\r\n\t\tif(cc > 1.0){\r\n\t\t\tdiscard;\r\n\t\t}\r\n\t#endif\r\n\t\t\r\n\t#if defined color_type_indices\r\n\t\tgl_FragColor = vec4(color, uPCIndex / 255.0);\r\n\t#else\r\n\t\tgl_FragColor = vec4(color, uOpacity);\r\n\t#endif\r\n\r\n\t#if defined paraboloid_point_shape\r\n\t\tfloat wi = 0.0 - ( u*u + v*v);\r\n\t\tvec4 pos = vec4(vViewPosition, 1.0);\r\n\t\tpos.z += wi * vRadius;\r\n\t\tfloat linearDepth = -pos.z;\r\n\t\tpos = projectionMatrix * pos;\r\n\t\tpos = pos / pos.w;\r\n\t\tfloat expDepth = pos.z;\r\n\t\tdepth = (pos.z + 1.0) / 2.0;\r\n\t\tgl_FragDepthEXT = depth;\r\n\t\t\r\n\t\t#if defined(color_type_depth)\r\n\t\t\tcolor.r = linearDepth;\r\n\t\t\tcolor.g = expDepth;\r\n\t\t#endif\r\n\t\t\r\n\t\t#if defined(use_edl)\r\n\t\t\tgl_FragColor.a = log2(linearDepth);\r\n\t\t#endif\r\n\t\t\r\n\t#else\r\n\t\t#if defined(use_edl)\r\n\t\t\tgl_FragColor.a = vLogDepth;\r\n\t\t#endif\r\n\t#endif\r\n\r\n\t#if defined(weighted_splats)\r\n\t\tfloat distance = 2.0 * length(gl_PointCoord.xy - 0.5);\r\n\t\tfloat weight = max(0.0, 1.0 - distance);\r\n\t\tweight = pow(weight, 1.5);\r\n\r\n\t\tgl_FragColor.a = weight;\r\n\t\tgl_FragColor.xyz = gl_FragColor.xyz * weight;\r\n\t#endif\r\n\r\n\t//gl_FragColor = vec4(0.0, 0.7, 0.0, 1.0);\r\n\t\r\n}\r\n\r\n\r\n`\n\nShaders[\"pointcloud_sm.vs\"] = `\r\nprecision mediump float;\r\nprecision mediump int;\r\n\r\nattribute vec3 position;\r\nattribute vec3 color;\r\n\r\nuniform mat4 modelMatrix;\r\nuniform mat4 modelViewMatrix;\r\nuniform mat4 projectionMatrix;\r\nuniform mat4 viewMatrix;\r\n\r\nuniform float uScreenWidth;\r\nuniform float uScreenHeight;\r\nuniform float near;\r\nuniform float far;\r\n\r\nuniform float uSpacing;\r\nuniform float uOctreeSize;\r\nuniform float uLevel;\r\nuniform float uVNStart;\r\n\r\nuniform sampler2D visibleNodes;\r\n\r\nvarying float vLinearDepth;\r\nvarying vec3 vColor;\r\n\r\n#define PI 3.141592653589793\r\n\r\n\r\n\r\n// ---------------------\r\n// OCTREE\r\n// ---------------------\r\n\r\n#if defined(adaptive_point_size)\r\n/**\r\n * number of 1-bits up to inclusive index position\r\n * number is treated as if it were an integer in the range 0-255\r\n *\r\n */\r\nfloat numberOfOnes(float number, float index){\r\n\tfloat tmp = mod(number, pow(2.0, index + 1.0));\r\n\tfloat numOnes = 0.0;\r\n\tfor(float i = 0.0; i < 8.0; i++){\r\n\t\tif(mod(tmp, 2.0) != 0.0){\r\n\t\t\tnumOnes++;\r\n\t\t}\r\n\t\ttmp = floor(tmp / 2.0);\r\n\t}\r\n\treturn numOnes;\r\n}\r\n\r\n\r\n/**\r\n * checks whether the bit at index is 1\r\n * number is treated as if it were an integer in the range 0-255\r\n *\r\n */\r\nbool isBitSet(float number, float index){\r\n\treturn mod(floor(number / pow(2.0, index)), 2.0) != 0.0;\r\n}\r\n\r\n\r\n/**\r\n * find the LOD at the point position\r\n */\r\nfloat getLOD(){\r\n\t\r\n\tvec3 offset = vec3(0.0, 0.0, 0.0);\r\n\tfloat iOffset = uVNStart;\r\n\tfloat depth = uLevel;\r\n\tfor(float i = 0.0; i <= 30.0; i++){\r\n\t\tfloat nodeSizeAtLevel = uOctreeSize / pow(2.0, i + uLevel + 0.0);\r\n\t\t\r\n\t\tvec3 index3d = (position-offset) / nodeSizeAtLevel;\r\n\t\tindex3d = floor(index3d + 0.5);\r\n\t\tfloat index = 4.0 * index3d.x + 2.0 * index3d.y + index3d.z;\r\n\t\t\r\n\t\tvec4 value = texture2D(visibleNodes, vec2(iOffset / 2048.0, 0.0));\r\n\t\tfloat mask = value.r * 255.0;\r\n\t\tif(isBitSet(mask, index)){\r\n\t\t\t// there are more visible child nodes at this position\r\n\t\t\tiOffset = iOffset + value.g * 255.0 * 256.0 + value.b * 255.0 + numberOfOnes(mask, index - 1.0);\r\n\t\t\tdepth++;\r\n\t\t}else{\r\n\t\t\t// no more visible child nodes at this position\r\n\t\t\treturn depth;\r\n\t\t}\r\n\t\t\r\n\t\toffset = offset + (vec3(1.0, 1.0, 1.0) * nodeSizeAtLevel * 0.5) * index3d;\r\n\t}\r\n\t\t\r\n\treturn depth;\r\n}\r\n\r\n#endif\r\n\r\nfloat getPointSize(){\r\n\tfloat pointSize = 1.0;\r\n\t\r\n\tfloat slope = tan(fov / 2.0);\r\n\tfloat projFactor = -0.5 * uScreenHeight / (slope * vViewPosition.z);\r\n\t\r\n\tfloat r = uOctreeSpacing * 1.5;\r\n\tvRadius = r;\r\n\t#if defined fixed_point_size\r\n\t\tpointSize = size;\r\n\t#elif defined attenuated_point_size\r\n\t\tif(uUseOrthographicCamera){\r\n\t\t\tpointSize = size;\t\t\t\r\n\t\t}else{\r\n\t\t\tpointSize = pointSize * projFactor;\r\n\t\t}\r\n\t#elif defined adaptive_point_size\r\n\t\tif(uUseOrthographicCamera) {\r\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\r\n\t\t\tpointSize = (worldSpaceSize / uOrthoWidth) * uScreenWidth;\r\n\t\t} else {\r\n\t\t\tfloat worldSpaceSize = 1.5 * size * r / getPointSizeAttenuation();\r\n\t\t\tpointSize = worldSpaceSize * projFactor;\r\n\t\t}\r\n\t#endif\r\n\r\n\tpointSize = max(minSize, pointSize);\r\n\tpointSize = min(maxSize, pointSize);\r\n\t\r\n\tvRadius = pointSize / projFactor;\r\n\r\n\treturn pointSize;\r\n}\r\n\r\n\r\nvoid main() {\r\n\r\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\r\n\tvLinearDepth = gl_Position.w;\r\n\r\n\tfloat pointSize = getPointSize();\r\n\tgl_PointSize = pointSize;\r\n\r\n}\r\n`\n\nShaders[\"pointcloud_sm.fs\"] = `\r\nprecision mediump float;\r\nprecision mediump int;\r\n\r\nvarying vec3 vColor;\r\nvarying float vLinearDepth;\r\n\r\nvoid main() {\r\n\r\n\t//gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);\r\n\t//gl_FragColor = vec4(vColor, 1.0);\r\n\t//gl_FragColor = vec4(vLinearDepth, pow(vLinearDepth, 2.0), 0.0, 1.0);\r\n\tgl_FragColor = vec4(vLinearDepth, vLinearDepth / 30.0, vLinearDepth / 30.0, 1.0);\r\n\t\r\n}\r\n\r\n\r\n`\n\nShaders[\"normalize.vs\"] = `\r\nprecision mediump float;\r\nprecision mediump int;\r\n\r\nattribute vec3 position;\r\nattribute vec2 uv;\r\n\r\nuniform mat4 projectionMatrix;\r\nuniform mat4 modelViewMatrix;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\tvUv = uv;\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\r\n}`\n\nShaders[\"normalize.fs\"] = `\r\n#extension GL_EXT_frag_depth : enable\r\n\r\nprecision mediump float;\r\nprecision mediump int;\r\n\r\nuniform sampler2D uWeightMap;\r\nuniform sampler2D uDepthMap;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\tfloat depth = texture2D(uDepthMap, vUv).r;\r\n\t\r\n\tif(depth >= 1.0){\r\n\t\tdiscard;\r\n\t}\r\n\r\n\tgl_FragColor = vec4(depth, 1.0, 0.0, 1.0);\r\n\r\n\tvec4 color = texture2D(uWeightMap, vUv); \r\n\tcolor = color / color.w;\r\n\t\r\n\tgl_FragColor = vec4(color.xyz, 1.0); \r\n\t\r\n\tgl_FragDepthEXT = depth;\r\n\r\n\r\n}`\n\nShaders[\"normalize_and_edl.fs\"] = `\r\n#extension GL_EXT_frag_depth : enable\r\n\r\n// \r\n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\r\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\r\n//\r\n\r\nprecision mediump float;\r\nprecision mediump int;\r\n\r\nuniform sampler2D uWeightMap;\r\nuniform sampler2D uEDLMap;\r\nuniform sampler2D uDepthMap;\r\n\r\nuniform float screenWidth;\r\nuniform float screenHeight;\r\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\r\nuniform float edlStrength;\r\nuniform float radius;\r\n\r\nvarying vec2 vUv;\r\n\r\nfloat response(float depth){\r\n\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\r\n\t\r\n\tfloat sum = 0.0;\r\n\t\r\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\r\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\r\n\t\t\r\n\t\tfloat neighbourDepth = texture2D(uEDLMap, uvNeighbor).a;\r\n\r\n\t\tif(neighbourDepth != 0.0){\r\n\t\t\tif(depth == 0.0){\r\n\t\t\t\tsum += 100.0;\r\n\t\t\t}else{\r\n\t\t\t\tsum += max(0.0, depth - neighbourDepth);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treturn sum / float(NEIGHBOUR_COUNT);\r\n}\r\n\r\nvoid main() {\r\n\r\n\tfloat edlDepth = texture2D(uEDLMap, vUv).a;\r\n\tfloat res = response(edlDepth);\r\n\tfloat shade = exp(-res * 300.0 * edlStrength);\r\n\r\n\tfloat depth = texture2D(uDepthMap, vUv).r;\r\n\tif(depth >= 1.0 && res == 0.0){\r\n\t\tdiscard;\r\n\t}\r\n\t\r\n\tvec4 color = texture2D(uWeightMap, vUv); \r\n\tcolor = color / color.w;\r\n\tcolor = color * shade;\r\n\r\n\tgl_FragColor = vec4(color.xyz, 1.0); \r\n\r\n\tgl_FragDepthEXT = depth;\r\n}`\n\nShaders[\"edl.vs\"] = `\r\nprecision mediump float;\r\nprecision mediump int;\r\n\r\nattribute vec3 position;\r\nattribute vec2 uv;\r\n\r\nuniform mat4 projectionMatrix;\r\nuniform mat4 modelViewMatrix;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\tvUv = uv;\r\n\t\r\n\tvec4 mvPosition = modelViewMatrix * vec4(position,1.0);\r\n\r\n\tgl_Position = projectionMatrix * mvPosition;\r\n}`\n\nShaders[\"edl.fs\"] = `\r\n#extension GL_EXT_frag_depth : enable\r\n\r\n// \r\n// adapted from the EDL shader code from Christian Boucheny in cloud compare:\r\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\r\n//\r\n\r\nprecision mediump float;\r\nprecision mediump int;\r\n\r\nuniform float screenWidth;\r\nuniform float screenHeight;\r\nuniform vec2 neighbours[NEIGHBOUR_COUNT];\r\nuniform float edlStrength;\r\nuniform float radius;\r\nuniform float opacity;\r\n\r\nuniform float uNear;\r\nuniform float uFar;\r\n\r\nuniform mat4 uProj;\r\n\r\nuniform sampler2D uEDLColor;\r\nuniform sampler2D uEDLDepth;\r\n\r\nvarying vec2 vUv;\r\n\r\nfloat response(float depth){\r\n\tvec2 uvRadius = radius / vec2(screenWidth, screenHeight);\r\n\t\r\n\tfloat sum = 0.0;\r\n\t\r\n\tfor(int i = 0; i < NEIGHBOUR_COUNT; i++){\r\n\t\tvec2 uvNeighbor = vUv + uvRadius * neighbours[i];\r\n\t\t\r\n\t\tfloat neighbourDepth = texture2D(uEDLColor, uvNeighbor).a;\r\n\t\tneighbourDepth = (neighbourDepth == 1.0) ? 0.0 : neighbourDepth;\r\n\r\n\t\tif(neighbourDepth != 0.0){\r\n\t\t\tif(depth == 0.0){\r\n\t\t\t\tsum += 100.0;\r\n\t\t\t}else{\r\n\t\t\t\tsum += max(0.0, depth - neighbourDepth);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\treturn sum / float(NEIGHBOUR_COUNT);\r\n}\r\n\r\nvoid main(){\r\n\tvec4 cEDL = texture2D(uEDLColor, vUv);\r\n\t\r\n\tfloat depth = cEDL.a;\r\n\tdepth = (depth == 1.0) ? 0.0 : depth;\r\n\tfloat res = response(depth);\r\n\tfloat shade = exp(-res * 300.0 * edlStrength);\r\n\r\n\tgl_FragColor = vec4(cEDL.rgb * shade, opacity);\r\n\r\n\t{ // write regular hyperbolic depth values to depth buffer\r\n\t\tfloat dl = pow(2.0, depth);\r\n\r\n\t\tvec4 dp = uProj * vec4(0.0, 0.0, -dl, 1.0);\r\n\t\tfloat pz = dp.z / dp.w;\r\n\t\tfloat fragDepth = (pz + 1.0) / 2.0;\r\n\r\n\t\tgl_FragDepthEXT = fragDepth;\r\n\t}\r\n\r\n\tif(depth == 0.0){\r\n\t\tdiscard;\r\n\t}\r\n\r\n}\r\n`\n\nShaders[\"blur.vs\"] = `\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\tvUv = uv;\r\n\r\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4(position,1.0);\r\n}`\n\nShaders[\"blur.fs\"] = `\r\nuniform mat4 projectionMatrix;\r\n\r\nuniform float screenWidth;\r\nuniform float screenHeight;\r\nuniform float near;\r\nuniform float far;\r\n\r\nuniform sampler2D map;\r\n\r\nvarying vec2 vUv;\r\n\r\nvoid main() {\r\n\r\n\tfloat dx = 1.0 / screenWidth;\r\n\tfloat dy = 1.0 / screenHeight;\r\n\r\n\tvec3 color = vec3(0.0, 0.0, 0.0);\r\n\tcolor += texture2D(map, vUv + vec2(-dx, -dy)).rgb;\r\n\tcolor += texture2D(map, vUv + vec2( 0, -dy)).rgb;\r\n\tcolor += texture2D(map, vUv + vec2(+dx, -dy)).rgb;\r\n\tcolor += texture2D(map, vUv + vec2(-dx, 0)).rgb;\r\n\tcolor += texture2D(map, vUv + vec2( 0, 0)).rgb;\r\n\tcolor += texture2D(map, vUv + vec2(+dx, 0)).rgb;\r\n\tcolor += texture2D(map, vUv + vec2(-dx, dy)).rgb;\r\n\tcolor += texture2D(map, vUv + vec2( 0, dy)).rgb;\r\n\tcolor += texture2D(map, vUv + vec2(+dx, dy)).rgb;\r\n\r\n\tcolor = color / 9.0;\r\n\t\r\n\tgl_FragColor = vec4(color, 1.0);\r\n}`\n\nexport {Shaders};","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nexport const ClassificationScheme = {\r\n\r\n\tDEFAULT: {\r\n\t\t0: { visible: true, name: 'never classified' , color: [0.5, 0.5, 0.5, 1.0] },\r\n\t\t1: { visible: true, name: 'unclassified' , color: [0.5, 0.5, 0.5, 1.0] },\r\n\t\t2: { visible: true, name: 'ground' , color: [0.63, 0.32, 0.18, 1.0] },\r\n\t\t3: { visible: true, name: 'low vegetation' , color: [0.0, 1.0, 0.0, 1.0] },\r\n\t\t4: { visible: true, name: 'medium vegetation' , color: [0.0, 0.8, 0.0, 1.0] },\r\n\t\t5: { visible: true, name: 'high vegetation' , color: [0.0, 0.6, 0.0, 1.0] },\r\n\t\t6: { visible: true, name: 'building' , color: [1.0, 0.66, 0.0, 1.0] },\r\n\t\t7: { visible: true, name: 'low point(noise)' , color: [1.0, 0.0, 1.0, 1.0] },\r\n\t\t8: { visible: true, name: 'key-point' , color: [1.0, 0.0, 0.0, 1.0] },\r\n\t\t9: { visible: true, name: 'water' , color: [0.0, 0.0, 1.0, 1.0] },\r\n\t\t12: { visible: true, name: 'overlap' , color: [1.0, 1.0, 0.0, 1.0] },\r\n\t\tDEFAULT: { visible: true, name: 'default' , color: [0.3, 0.6, 0.6, 0.5] },\r\n\t}\r\n};\r\n\r\nObject.defineProperty(ClassificationScheme, 'RANDOM', {\r\n\tget: function() { \r\n\r\n\t\tlet scheme = {};\r\n\r\n\t\tfor(let i = 0; i <= 255; i++){\r\n\t\t\tscheme[i] = new THREE.Vector4(Math.random(), Math.random(), Math.random());\r\n\t\t}\r\n\r\n\t\tscheme[\"DEFAULT\"] = new THREE.Vector4(Math.random(), Math.random(), Math.random());\r\n\r\n\t\treturn scheme;\r\n\t}\r\n});","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {Gradients} from \"./Gradients.js\";\r\nimport {Shaders} from \"../../build/shaders/shaders.js\";\r\nimport {ClassificationScheme} from \"./ClassificationScheme.js\";\r\nimport {PointSizeType, PointShape, TreeType, ElevationGradientRepeat} from \"../defines.js\";\r\n\r\n//\r\n// how to calculate the radius of a projected sphere in screen space\r\n// http://stackoverflow.com/questions/21648630/radius-of-projected-sphere-in-screen-space\r\n// http://stackoverflow.com/questions/3717226/radius-of-projected-sphere\r\n//\r\n\r\n\r\nexport class PointCloudMaterial extends THREE.RawShaderMaterial {\r\n\tconstructor (parameters = {}) {\r\n\t\tsuper();\r\n\r\n\t\tthis.visibleNodesTexture = Utils.generateDataTexture(2048, 1, new THREE.Color(0xffffff));\r\n\t\tthis.visibleNodesTexture.minFilter = THREE.NearestFilter;\r\n\t\tthis.visibleNodesTexture.magFilter = THREE.NearestFilter;\r\n\r\n\t\tlet getValid = (a, b) => {\r\n\t\t\tif(a !== undefined){\r\n\t\t\t\treturn a;\r\n\t\t\t}else{\r\n\t\t\t\treturn b;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet pointSize = getValid(parameters.size, 1.0);\r\n\t\tlet minSize = getValid(parameters.minSize, 2.0);\r\n\t\tlet maxSize = getValid(parameters.maxSize, 50.0);\r\n\t\tlet treeType = getValid(parameters.treeType, TreeType.OCTREE);\r\n\r\n\t\tthis._pointSizeType = PointSizeType.FIXED;\r\n\t\tthis._shape = PointShape.SQUARE;\r\n\t\tthis._useClipBox = false;\r\n\t\tthis.clipBoxes = [];\r\n\t\tthis.clipPolygons = [];\r\n\t\tthis._weighted = false;\r\n\t\tthis._gradient = Gradients.SPECTRAL;\r\n\t\tthis.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient);\r\n\t\tthis._matcap = \"matcap.jpg\";\r\n\t\tthis.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap);\r\n\t\tthis.lights = false;\r\n\t\tthis.fog = false;\r\n\t\tthis._treeType = treeType;\r\n\t\tthis._useEDL = false;\r\n\t\tthis.defines = new Map();\r\n\r\n\t\tthis.ranges = new Map();\r\n\r\n\t\tthis._activeAttributeName = null;\r\n\r\n\t\tthis._defaultIntensityRangeChanged = false;\r\n\t\tthis._defaultElevationRangeChanged = false;\r\n\r\n\t\t{\r\n\t\t\tconst [width, height] = [256, 1];\r\n\t\t\tlet data = new Uint8Array(width * 4);\r\n\t\t\tlet texture = new THREE.DataTexture(data, width, height, THREE.RGBAFormat);\r\n\t\t\ttexture.magFilter = THREE.NearestFilter;\r\n\t\t\ttexture.needsUpdate = true;\r\n\r\n\t\t\tthis.classificationTexture = texture;\r\n\t\t}\r\n\r\n\t\tthis.attributes = {\r\n\t\t\tposition: { type: 'fv', value: [] },\r\n\t\t\tcolor: { type: 'fv', value: [] },\r\n\t\t\tnormal: { type: 'fv', value: [] },\r\n\t\t\tintensity: { type: 'f', value: [] },\r\n\t\t\tclassification: { type: 'f', value: [] },\r\n\t\t\treturnNumber: { type: 'f', value: [] },\r\n\t\t\tnumberOfReturns: { type: 'f', value: [] },\r\n\t\t\tpointSourceID: { type: 'f', value: [] },\r\n\t\t\tindices: { type: 'fv', value: [] }\r\n\t\t};\r\n\r\n\t\tthis.uniforms = {\r\n\t\t\tlevel:\t\t\t\t{ type: \"f\", value: 0.0 },\r\n\t\t\tvnStart:\t\t\t{ type: \"f\", value: 0.0 },\r\n\t\t\tspacing:\t\t\t{ type: \"f\", value: 1.0 },\r\n\t\t\tblendHardness:\t\t{ type: \"f\", value: 2.0 },\r\n\t\t\tblendDepthSupplement:\t{ type: \"f\", value: 0.0 },\r\n\t\t\tfov:\t\t\t\t{ type: \"f\", value: 1.0 },\r\n\t\t\tscreenWidth:\t\t{ type: \"f\", value: 1.0 },\r\n\t\t\tscreenHeight:\t\t{ type: \"f\", value: 1.0 },\r\n\t\t\tnear:\t\t\t\t{ type: \"f\", value: 0.1 },\r\n\t\t\tfar:\t\t\t\t{ type: \"f\", value: 1.0 },\r\n\t\t\tuColor:\t\t\t\t{ type: \"c\", value: new THREE.Color( 0xffffff ) },\r\n\t\t\tuOpacity:\t\t\t{ type: \"f\", value: 1.0 },\r\n\t\t\tsize:\t\t\t\t{ type: \"f\", value: pointSize },\r\n\t\t\tminSize:\t\t\t{ type: \"f\", value: minSize },\r\n\t\t\tmaxSize:\t\t\t{ type: \"f\", value: maxSize },\r\n\t\t\toctreeSize:\t\t\t{ type: \"f\", value: 0 },\r\n\t\t\tbbSize:\t\t\t\t{ type: \"fv\", value: [0, 0, 0] },\r\n\t\t\televationRange:\t\t{ type: \"2fv\", value: [0, 0] },\r\n\r\n\t\t\tclipBoxCount:\t\t{ type: \"f\", value: 0 },\r\n\t\t\t//clipSphereCount:\t{ type: \"f\", value: 0 },\r\n\t\t\tclipPolygonCount:\t{ type: \"i\", value: 0 },\r\n\t\t\tclipBoxes:\t\t\t{ type: \"Matrix4fv\", value: [] },\r\n\t\t\t//clipSpheres:\t\t{ type: \"Matrix4fv\", value: [] },\r\n\t\t\tclipPolygons:\t\t{ type: \"3fv\", value: [] },\r\n\t\t\tclipPolygonVCount:\t{ type: \"iv\", value: [] },\r\n\t\t\tclipPolygonVP:\t\t{ type: \"Matrix4fv\", value: [] },\r\n\r\n\t\t\tvisibleNodes:\t\t{ type: \"t\", value: this.visibleNodesTexture },\r\n\t\t\tpcIndex:\t\t\t{ type: \"f\", value: 0 },\r\n\t\t\tgradient:\t\t\t{ type: \"t\", value: this.gradientTexture },\r\n\t\t\tclassificationLUT:\t{ type: \"t\", value: this.classificationTexture },\r\n\t\t\tuHQDepthMap:\t\t{ type: \"t\", value: null },\r\n\t\t\ttoModel:\t\t\t{ type: \"Matrix4f\", value: [] },\r\n\t\t\tdiffuse:\t\t\t{ type: \"fv\", value: [1, 1, 1] },\r\n\t\t\ttransition:\t\t\t{ type: \"f\", value: 0.5 },\r\n\r\n\t\t\t intensityRange:\t\t{ type: \"fv\", value: [Infinity, -Infinity] },\r\n\r\n\t\t\tintensity_gbc: \t\t{ type: \"fv\", value: [1, 0, 0]},\r\n\t\t\tuRGB_gbc:\t \t\t{ type: \"fv\", value: [1, 0, 0]},\r\n\t\t\t// intensityGamma:\t\t{ type: \"f\", value: 1 },\r\n\t\t\t// intensityContrast:\t{ type: \"f\", value: 0 },\r\n\t\t\t// intensityBrightness:{ type: \"f\", value: 0 },\r\n\t\t\t// rgbGamma:\t\t\t{ type: \"f\", value: 1 },\r\n\t\t\t// rgbContrast:\t\t{ type: \"f\", value: 0 },\r\n\t\t\t// rgbBrightness:\t\t{ type: \"f\", value: 0 },\r\n\t\t\twRGB:\t\t\t\t{ type: \"f\", value: 1 },\r\n\t\t\twIntensity:\t\t\t{ type: \"f\", value: 0 },\r\n\t\t\twElevation:\t\t\t{ type: \"f\", value: 0 },\r\n\t\t\twClassification:\t{ type: \"f\", value: 0 },\r\n\t\t\twReturnNumber:\t\t{ type: \"f\", value: 0 },\r\n\t\t\twSourceID:\t\t\t{ type: \"f\", value: 0 },\r\n\t\t\tuseOrthographicCamera: { type: \"b\", value: false },\r\n\t\t\televationGradientRepat: { type: \"i\", value: ElevationGradientRepeat.CLAMP },\r\n\t\t\tclipTask:\t\t\t{ type: \"i\", value: 1 },\r\n\t\t\tclipMethod:\t\t\t{ type: \"i\", value: 1 },\r\n\t\t\tuShadowColor:\t\t{ type: \"3fv\", value: [0, 0, 0] },\r\n\r\n\t\t\tuExtraScale:\t\t{ type: \"f\", value: 1},\r\n\t\t\tuExtraOffset:\t\t{ type: \"f\", value: 0},\r\n\t\t\tuExtraRange:\t\t{ type: \"2fv\", value: [0, 1] },\r\n\t\t\tuExtraGammaBrightContr:\t{ type: \"3fv\", value: [1, 0, 0] },\r\n\r\n\t\t\tuFilterReturnNumberRange:\t\t{ type: \"fv\", value: [0, 7]},\r\n\t\t\tuFilterNumberOfReturnsRange:\t{ type: \"fv\", value: [0, 7]},\r\n\t\t\tuFilterGPSTimeClipRange:\t\t{ type: \"fv\", value: [0, 7]},\r\n\t\t\tuFilterPointSourceIDClipRange:\t\t{ type: \"fv\", value: [0, 65535]},\r\n\t\t\tmatcapTextureUniform: \t{ type: \"t\", value: this.matcapTexture },\r\n\t\t\tbackfaceCulling: { type: \"b\", value: false },\r\n\t\t};\r\n\r\n\t\tthis.classification = ClassificationScheme.DEFAULT;\r\n\r\n\t\tthis.defaultAttributeValues.normal = [0, 0, 0];\r\n\t\tthis.defaultAttributeValues.classification = [0, 0, 0];\r\n\t\tthis.defaultAttributeValues.indices = [0, 0, 0, 0];\r\n\r\n\t\tthis.vertexShader = Shaders['pointcloud.vs'];\r\n\t\tthis.fragmentShader = Shaders['pointcloud.fs'];\r\n\t\t\r\n\t\tthis.vertexColors = THREE.VertexColors;\r\n\r\n\t\tthis.updateShaderSource();\r\n\t}\r\n\r\n\tsetDefine(key, value){\r\n\t\tif(value !== undefined && value !== null){\r\n\t\t\tif(this.defines.get(key) !== value){\r\n\t\t\t\tthis.defines.set(key, value);\r\n\t\t\t\tthis.updateShaderSource();\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tthis.removeDefine(key);\r\n\t\t}\r\n\t}\r\n\r\n\tremoveDefine(key){\r\n\t\tthis.defines.delete(key);\r\n\t}\r\n\r\n\tupdateShaderSource () {\r\n\r\n\t\tlet vs = Shaders['pointcloud.vs'];\r\n\t\tlet fs = Shaders['pointcloud.fs'];\r\n\t\tlet definesString = this.getDefines();\r\n\r\n\t\tlet vsVersionIndex = vs.indexOf(\"#version \");\r\n\t\tlet fsVersionIndex = fs.indexOf(\"#version \");\r\n\r\n\t\tif(vsVersionIndex >= 0){\r\n\t\t\tvs = vs.replace(/(#version .*)/, `$1\\n${definesString}`)\r\n\t\t}else{\r\n\t\t\tvs = `${definesString}\\n${vs}`;\r\n\t\t}\r\n\r\n\t\tif(fsVersionIndex >= 0){\r\n\t\t\tfs = fs.replace(/(#version .*)/, `$1\\n${definesString}`)\r\n\t\t}else{\r\n\t\t\tfs = `${definesString}\\n${fs}`;\r\n\t\t}\r\n\r\n\t\tthis.vertexShader = vs;\r\n\t\tthis.fragmentShader = fs;\r\n\r\n\t\tif (this.opacity === 1.0) {\r\n\t\t\tthis.blending = THREE.NoBlending;\r\n\t\t\tthis.transparent = false;\r\n\t\t\tthis.depthTest = true;\r\n\t\t\tthis.depthWrite = true;\r\n\t\t\tthis.depthFunc = THREE.LessEqualDepth;\r\n\t\t} else if (this.opacity < 1.0 && !this.useEDL) {\r\n\t\t\tthis.blending = THREE.AdditiveBlending;\r\n\t\t\tthis.transparent = true;\r\n\t\t\tthis.depthTest = false;\r\n\t\t\tthis.depthWrite = true;\r\n\t\t\tthis.depthFunc = THREE.AlwaysDepth;\r\n\t\t}\r\n\r\n\t\tif (this.weighted) {\r\n\t\t\tthis.blending = THREE.AdditiveBlending;\r\n\t\t\tthis.transparent = true;\r\n\t\t\tthis.depthTest = true;\r\n\t\t\tthis.depthWrite = false;\r\n\t\t}\r\n\r\n\t\tthis.needsUpdate = true;\r\n\t}\r\n\r\n\tgetDefines () {\r\n\t\tlet defines = [];\r\n\r\n\t\tif (this.pointSizeType === PointSizeType.FIXED) {\r\n\t\t\tdefines.push('#define fixed_point_size');\r\n\t\t} else if (this.pointSizeType === PointSizeType.ATTENUATED) {\r\n\t\t\tdefines.push('#define attenuated_point_size');\r\n\t\t} else if (this.pointSizeType === PointSizeType.ADAPTIVE) {\r\n\t\t\tdefines.push('#define adaptive_point_size');\r\n\t\t}\r\n\r\n\t\tif (this.shape === PointShape.SQUARE) {\r\n\t\t\tdefines.push('#define square_point_shape');\r\n\t\t} else if (this.shape === PointShape.CIRCLE) {\r\n\t\t\tdefines.push('#define circle_point_shape');\r\n\t\t} else if (this.shape === PointShape.PARABOLOID) {\r\n\t\t\tdefines.push('#define paraboloid_point_shape');\r\n\t\t}\r\n\r\n\t\tif (this._useEDL) {\r\n\t\t\tdefines.push('#define use_edl');\r\n\t\t}\r\n\r\n\t\tif(this.activeAttributeName){\r\n\t\t\tlet attributeName = this.activeAttributeName.replace(/[^a-zA-Z0-9]/g, '_');\r\n\r\n\t\t\tdefines.push(`#define color_type_${attributeName}`);\r\n\t\t}\r\n\t\t\r\n\t\tif(this._treeType === TreeType.OCTREE){\r\n\t\t\tdefines.push('#define tree_type_octree');\r\n\t\t}else if(this._treeType === TreeType.KDTREE){\r\n\t\t\tdefines.push('#define tree_type_kdtree');\r\n\t\t}\r\n\r\n\t\tif (this.weighted) {\r\n\t\t\tdefines.push('#define weighted_splats');\r\n\t\t}\r\n\r\n\t\tfor(let [key, value] of this.defines){\r\n\t\t\tdefines.push(value);\r\n\t\t}\r\n\r\n\t\treturn defines.join(\"\\n\");\r\n\t}\r\n\r\n\tsetClipBoxes (clipBoxes) {\r\n\t\tif (!clipBoxes) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet doUpdate = (this.clipBoxes.length !== clipBoxes.length) && (clipBoxes.length === 0 || this.clipBoxes.length === 0);\r\n\r\n\t\tthis.uniforms.clipBoxCount.value = this.clipBoxes.length;\r\n\t\tthis.clipBoxes = clipBoxes;\r\n\r\n\t\tif (doUpdate) {\r\n\t\t\tthis.updateShaderSource();\r\n\t\t}\r\n\r\n\t\tthis.uniforms.clipBoxes.value = new Float32Array(this.clipBoxes.length * 16);\r\n\r\n\t\tfor (let i = 0; i < this.clipBoxes.length; i++) {\r\n\t\t\tlet box = clipBoxes[i];\r\n\r\n\t\t\tthis.uniforms.clipBoxes.value.set(box.inverse.elements, 16 * i);\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < this.uniforms.clipBoxes.value.length; i++) {\r\n\t\t\tif (Number.isNaN(this.uniforms.clipBoxes.value[i])) {\r\n\t\t\t\tthis.uniforms.clipBoxes.value[i] = Infinity;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetClipPolygons(clipPolygons, maxPolygonVertices) {\r\n\t\tif(!clipPolygons){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.clipPolygons = clipPolygons;\r\n\r\n\t\tlet doUpdate = (this.clipPolygons.length !== clipPolygons.length);\r\n\r\n\t\tif(doUpdate){\r\n\t\t\tthis.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\t\r\n\tget gradient(){\r\n\t\treturn this._gradient;\r\n\t}\r\n\r\n\tset gradient (value) {\r\n\t\tif (this._gradient !== value) {\r\n\t\t\tthis._gradient = value;\r\n\t\t\tthis.gradientTexture = PointCloudMaterial.generateGradientTexture(this._gradient);\r\n\t\t\tthis.uniforms.gradient.value = this.gradientTexture;\r\n\t\t}\r\n\t}\r\n\r\n\tget matcap(){\r\n\t\treturn this._matcap;\r\n\t}\r\n\r\n\tset matcap (value) {\r\n\t\tif (this._matcap !== value) {\r\n\t\t\tthis._matcap = value;\r\n\t\t\tthis.matcapTexture = Potree.PointCloudMaterial.generateMatcapTexture(this._matcap);\r\n\t\t\tthis.uniforms.matcapTextureUniform.value = this.matcapTexture;\r\n\t\t}\r\n\t}\r\n\tget useOrthographicCamera() {\r\n\t\treturn this.uniforms.useOrthographicCamera.value;\r\n\t}\r\n\r\n\tset useOrthographicCamera(value) {\r\n\t\tif(this.uniforms.useOrthographicCamera.value !== value){\r\n\t\t\tthis.uniforms.useOrthographicCamera.value = value;\r\n\t\t}\r\n\t}\r\n\tget backfaceCulling() {\r\n\t\treturn this.uniforms.backfaceCulling.value;\r\n\t}\r\n\r\n\tset backfaceCulling(value) {\r\n\t\tif(this.uniforms.backfaceCulling.value !== value){\r\n\t\t\tthis.uniforms.backfaceCulling.value = value;\r\n\t\t\tthis.dispatchEvent({type: 'backface_changed', target: this});\r\n\t\t}\r\n\t}\r\n\r\n\trecomputeClassification () {\r\n\t\tconst classification = this.classification;\r\n\t\tconst data = this.classificationTexture.image.data;\r\n\r\n\t\tlet width = 256;\r\n\t\tconst black = [1, 1, 1, 1];\r\n\r\n\t\tlet valuesChanged = false;\r\n\r\n\t\tfor (let i = 0; i < width; i++) {\r\n\r\n\t\t\tlet color;\r\n\t\t\tlet visible = true;\r\n\r\n\t\t\tif (classification[i]) {\r\n\t\t\t\tcolor = classification[i].color;\r\n\t\t\t\tvisible = classification[i].visible;\r\n\t\t\t} else if (classification[i % 32]) {\r\n\t\t\t\tcolor = classification[i % 32].color;\r\n\t\t\t\tvisible = classification[i % 32].visible;\r\n\t\t\t} else if(classification.DEFAULT) {\r\n\t\t\t\tcolor = classification.DEFAULT.color;\r\n\t\t\t\tvisible = classification.DEFAULT.visible;\r\n\t\t\t}else{\r\n\t\t\t\tcolor = black;\r\n\t\t\t}\r\n\r\n\t\t\tconst r = parseInt(255 * color[0]);\r\n\t\t\tconst g = parseInt(255 * color[1]);\r\n\t\t\tconst b = parseInt(255 * color[2]);\r\n\t\t\tconst a = visible ? parseInt(255 * color[3]) : 0;\r\n\r\n\r\n\t\t\tif(data[4 * i + 0] !== r){\r\n\t\t\t\tdata[4 * i + 0] = r;\r\n\t\t\t\tvaluesChanged = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(data[4 * i + 1] !== g){\r\n\t\t\t\tdata[4 * i + 1] = g;\r\n\t\t\t\tvaluesChanged = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(data[4 * i + 2] !== b){\r\n\t\t\t\tdata[4 * i + 2] = b;\r\n\t\t\t\tvaluesChanged = true;\r\n\t\t\t}\r\n\r\n\t\t\tif(data[4 * i + 3] !== a){\r\n\t\t\t\tdata[4 * i + 3] = a;\r\n\t\t\t\tvaluesChanged = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(valuesChanged){\r\n\t\t\tthis.classificationTexture.needsUpdate = true;\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget spacing () {\r\n\t\treturn this.uniforms.spacing.value;\r\n\t}\r\n\r\n\tset spacing (value) {\r\n\t\tif (this.uniforms.spacing.value !== value) {\r\n\t\t\tthis.uniforms.spacing.value = value;\r\n\t\t}\r\n\t}\r\n\r\n\tget useClipBox () {\r\n\t\treturn this._useClipBox;\r\n\t}\r\n\r\n\tset useClipBox (value) {\r\n\t\tif (this._useClipBox !== value) {\r\n\t\t\tthis._useClipBox = value;\r\n\t\t\tthis.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\r\n\tget clipTask(){\r\n\t\treturn this.uniforms.clipTask.value;\r\n\t}\r\n\r\n\tset clipTask(mode){\r\n\t\tthis.uniforms.clipTask.value = mode;\r\n\t}\r\n\r\n\tget elevationGradientRepat(){\r\n\t\treturn this.uniforms.elevationGradientRepat.value;\r\n\t}\r\n\r\n\tset elevationGradientRepat(mode){\r\n\t\tthis.uniforms.elevationGradientRepat.value = mode;\r\n\t}\r\n\r\n\tget clipMethod(){\r\n\t\treturn this.uniforms.clipMethod.value;\r\n\t}\r\n\r\n\tset clipMethod(mode){\r\n\t\tthis.uniforms.clipMethod.value = mode;\r\n\t}\r\n\r\n\tget weighted(){\r\n\t\treturn this._weighted;\r\n\t}\r\n\r\n\tset weighted (value) {\r\n\t\tif (this._weighted !== value) {\r\n\t\t\tthis._weighted = value;\r\n\t\t\tthis.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\r\n\tget fov () {\r\n\t\treturn this.uniforms.fov.value;\r\n\t}\r\n\r\n\tset fov (value) {\r\n\t\tif (this.uniforms.fov.value !== value) {\r\n\t\t\tthis.uniforms.fov.value = value;\r\n\t\t\t// this.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\r\n\tget screenWidth () {\r\n\t\treturn this.uniforms.screenWidth.value;\r\n\t}\r\n\r\n\tset screenWidth (value) {\r\n\t\tif (this.uniforms.screenWidth.value !== value) {\r\n\t\t\tthis.uniforms.screenWidth.value = value;\r\n\t\t\t// this.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\r\n\tget screenHeight () {\r\n\t\treturn this.uniforms.screenHeight.value;\r\n\t}\r\n\r\n\tset screenHeight (value) {\r\n\t\tif (this.uniforms.screenHeight.value !== value) {\r\n\t\t\tthis.uniforms.screenHeight.value = value;\r\n\t\t\t// this.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\r\n\tget near () {\r\n\t\treturn this.uniforms.near.value;\r\n\t}\r\n\r\n\tset near (value) {\r\n\t\tif (this.uniforms.near.value !== value) {\r\n\t\t\tthis.uniforms.near.value = value;\r\n\t\t}\r\n\t}\r\n\r\n\tget far () {\r\n\t\treturn this.uniforms.far.value;\r\n\t}\r\n\r\n\tset far (value) {\r\n\t\tif (this.uniforms.far.value !== value) {\r\n\t\t\tthis.uniforms.far.value = value;\r\n\t\t}\r\n\t}\r\n\t\r\n\tget opacity(){\r\n\t\treturn this.uniforms.uOpacity.value;\r\n\t}\r\n\r\n\tset opacity (value) {\r\n\t\tif (this.uniforms && this.uniforms.uOpacity) {\r\n\t\t\tif (this.uniforms.uOpacity.value !== value) {\r\n\t\t\t\tthis.uniforms.uOpacity.value = value;\r\n\t\t\t\tthis.updateShaderSource();\r\n\t\t\t\tthis.dispatchEvent({\r\n\t\t\t\t\ttype: 'opacity_changed',\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t});\r\n\t\t\t\tthis.dispatchEvent({\r\n\t\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\t\ttarget: this\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tget activeAttributeName(){\r\n\t\treturn this._activeAttributeName;\r\n\t}\r\n\r\n\tset activeAttributeName(value){\r\n\t\tif (this._activeAttributeName !== value) {\r\n\t\t\tthis._activeAttributeName = value;\r\n\r\n\t\t\tthis.updateShaderSource();\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'active_attribute_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget pointSizeType () {\r\n\t\treturn this._pointSizeType;\r\n\t}\r\n\r\n\tset pointSizeType (value) {\r\n\t\tif (this._pointSizeType !== value) {\r\n\t\t\tthis._pointSizeType = value;\r\n\t\t\tthis.updateShaderSource();\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'point_size_type_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget useEDL(){\r\n\t\treturn this._useEDL;\r\n\t}\r\n\r\n\tset useEDL (value) {\r\n\t\tif (this._useEDL !== value) {\r\n\t\t\tthis._useEDL = value;\r\n\t\t\tthis.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\r\n\tget color () {\r\n\t\treturn this.uniforms.uColor.value;\r\n\t}\r\n\r\n\tset color (value) {\r\n\t\tif (!this.uniforms.uColor.value.equals(value)) {\r\n\t\t\tthis.uniforms.uColor.value.copy(value);\r\n\t\t\t\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'color_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget shape () {\r\n\t\treturn this._shape;\r\n\t}\r\n\r\n\tset shape (value) {\r\n\t\tif (this._shape !== value) {\r\n\t\t\tthis._shape = value;\r\n\t\t\tthis.updateShaderSource();\r\n\t\t\tthis.dispatchEvent({type: 'point_shape_changed', target: this});\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget treeType () {\r\n\t\treturn this._treeType;\r\n\t}\r\n\r\n\tset treeType (value) {\r\n\t\tif (this._treeType !== value) {\r\n\t\t\tthis._treeType = value;\r\n\t\t\tthis.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\r\n\tget bbSize () {\r\n\t\treturn this.uniforms.bbSize.value;\r\n\t}\r\n\r\n\tset bbSize (value) {\r\n\t\tthis.uniforms.bbSize.value = value;\r\n\t}\r\n\r\n\tget size () {\r\n\t\treturn this.uniforms.size.value;\r\n\t}\r\n\r\n\tset size (value) {\r\n\t\tif (this.uniforms.size.value !== value) {\r\n\t\t\tthis.uniforms.size.value = value;\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'point_size_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget minSize(){\r\n\t\treturn this.uniforms.minSize.value;\r\n\t}\r\n\r\n\tset minSize(value){\r\n\t\tif (this.uniforms.minSize.value !== value) {\r\n\t\t\tthis.uniforms.minSize.value = value;\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'point_size_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget elevationRange () {\r\n\t\treturn this.uniforms.elevationRange.value;\r\n\t}\r\n\r\n\tset elevationRange (value) {\r\n\t\tlet changed = this.uniforms.elevationRange.value[0] !== value[0]\r\n\t\t\t|| this.uniforms.elevationRange.value[1] !== value[1];\r\n\r\n\t\tif(changed){\r\n\t\t\tthis.uniforms.elevationRange.value = value;\r\n\r\n\t\t\tthis._defaultElevationRangeChanged = true;\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget heightMin () {\r\n\t\treturn this.uniforms.elevationRange.value[0];\r\n\t}\r\n\r\n\tset heightMin (value) {\r\n\t\tthis.elevationRange = [value, this.elevationRange[1]];\r\n\t}\r\n\r\n\tget heightMax () {\r\n\t\treturn this.uniforms.elevationRange.value[1];\r\n\t}\r\n\r\n\tset heightMax (value) {\r\n\t\tthis.elevationRange = [this.elevationRange[0], value];\r\n\t}\r\n\r\n\tget transition () {\r\n\t\treturn this.uniforms.transition.value;\r\n\t}\r\n\r\n\tset transition (value) {\r\n\t\tthis.uniforms.transition.value = value;\r\n\t}\r\n\r\n\tget intensityRange () {\r\n\t\treturn this.uniforms.intensityRange.value;\r\n\t}\r\n\r\n\tset intensityRange (value) {\r\n\t\tif (!(value instanceof Array && value.length === 2)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (value[0] === this.uniforms.intensityRange.value[0] &&\r\n\t\t\tvalue[1] === this.uniforms.intensityRange.value[1]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.uniforms.intensityRange.value = value;\r\n\r\n\t\tthis._defaultIntensityRangeChanged = true;\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'material_property_changed',\r\n\t\t\ttarget: this\r\n\t\t});\r\n\t}\r\n\r\n\tget intensityGamma () {\r\n\t\treturn this.uniforms.intensity_gbc.value[0];\r\n\t}\r\n\r\n\tset intensityGamma (value) {\r\n\t\tif (this.uniforms.intensity_gbc.value[0] !== value) {\r\n\t\t\tthis.uniforms.intensity_gbc.value[0] = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget intensityContrast () {\r\n\t\treturn this.uniforms.intensity_gbc.value[2];\r\n\t}\r\n\r\n\tset intensityContrast (value) {\r\n\t\tif (this.uniforms.intensity_gbc.value[2] !== value) {\r\n\t\t\tthis.uniforms.intensity_gbc.value[2] = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget intensityBrightness () {\r\n\t\treturn this.uniforms.intensity_gbc.value[1];\r\n\t}\r\n\r\n\tset intensityBrightness (value) {\r\n\t\tif (this.uniforms.intensity_gbc.value[1] !== value) {\r\n\t\t\tthis.uniforms.intensity_gbc.value[1] = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget rgbGamma () {\r\n\t\treturn this.uniforms.uRGB_gbc.value[0];\r\n\t}\r\n\r\n\tset rgbGamma (value) {\r\n\t\tif (this.uniforms.uRGB_gbc.value[0] !== value) {\r\n\t\t\tthis.uniforms.uRGB_gbc.value[0] = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget rgbContrast () {\r\n\t\treturn this.uniforms.uRGB_gbc.value[2];\r\n\t}\r\n\r\n\tset rgbContrast (value) {\r\n\t\tif (this.uniforms.uRGB_gbc.value[2] !== value) {\r\n\t\t\tthis.uniforms.uRGB_gbc.value[2] = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget rgbBrightness () {\r\n\t\treturn this.uniforms.uRGB_gbc.value[1];\r\n\t}\r\n\r\n\tset rgbBrightness (value) {\r\n\t\tif (this.uniforms.uRGB_gbc.value[1] !== value) {\r\n\t\t\tthis.uniforms.uRGB_gbc.value[1] = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\tget extraGamma () {\r\n\t\treturn this.uniforms.uExtraGammaBrightContr.value[0];\r\n\t}\r\n\r\n\tset extraGamma (value) {\r\n\t\tif (this.uniforms.uExtraGammaBrightContr.value[0] !== value) {\r\n\t\t\tthis.uniforms.uExtraGammaBrightContr.value[0] = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget extraBrightness () {\r\n\t\treturn this.uniforms.uExtraGammaBrightContr.value[1];\r\n\t}\r\n\r\n\tset extraBrightness (value) {\r\n\t\tif (this.uniforms.uExtraGammaBrightContr.value[1] !== value) {\r\n\t\t\tthis.uniforms.uExtraGammaBrightContr.value[1] = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget extraContrast () {\r\n\t\treturn this.uniforms.uExtraGammaBrightContr.value[2];\r\n\t}\r\n\r\n\tset extraContrast (value) {\r\n\t\tif (this.uniforms.uExtraGammaBrightContr.value[2] !== value) {\r\n\t\t\tthis.uniforms.uExtraGammaBrightContr.value[2] = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tgetRange(attributeName){\r\n\t\treturn this.ranges.get(attributeName);\r\n\t}\r\n\r\n\tsetRange(attributeName, newRange){\r\n\r\n\t\tlet rangeChanged = false;\r\n\r\n\t\tlet oldRange = this.ranges.get(attributeName);\r\n\r\n\t\tif(oldRange != null && newRange != null){\r\n\t\t\trangeChanged = oldRange[0] !== newRange[0] || oldRange[1] !== newRange[1];\r\n\t\t}else{\r\n\t\t\trangeChanged = true;\r\n\t\t}\r\n\r\n\t\tthis.ranges.set(attributeName, newRange);\r\n\r\n\t\tif(rangeChanged){\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget extraRange () {\r\n\t\treturn this.uniforms.uExtraRange.value;\r\n\t}\r\n\r\n\tset extraRange (value) {\r\n\t\tif (!(value instanceof Array && value.length === 2)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (value[0] === this.uniforms.uExtraRange.value[0] &&\r\n\t\t\tvalue[1] === this.uniforms.uExtraRange.value[1]) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.uniforms.uExtraRange.value = value;\r\n\r\n\t\tthis._defaultExtraRangeChanged = true;\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'material_property_changed',\r\n\t\t\ttarget: this\r\n\t\t});\r\n\t}\r\n\r\n\tget weightRGB () {\r\n\t\treturn this.uniforms.wRGB.value;\r\n\t}\r\n\r\n\tset weightRGB (value) {\r\n\t\tif(this.uniforms.wRGB.value !== value){\r\n\t\t\tthis.uniforms.wRGB.value = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget weightIntensity () {\r\n\t\treturn this.uniforms.wIntensity.value;\r\n\t}\r\n\r\n\tset weightIntensity (value) {\r\n\t\tif(this.uniforms.wIntensity.value !== value){\r\n\t\t\tthis.uniforms.wIntensity.value = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget weightElevation () {\r\n\t\treturn this.uniforms.wElevation.value;\r\n\t}\r\n\r\n\tset weightElevation (value) {\r\n\t\tif(this.uniforms.wElevation.value !== value){\r\n\t\t\tthis.uniforms.wElevation.value = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget weightClassification () {\r\n\t\treturn this.uniforms.wClassification.value;\r\n\t}\r\n\r\n\tset weightClassification (value) {\r\n\t\tif(this.uniforms.wClassification.value !== value){\r\n\t\t\tthis.uniforms.wClassification.value = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget weightReturnNumber () {\r\n\t\treturn this.uniforms.wReturnNumber.value;\r\n\t}\r\n\r\n\tset weightReturnNumber (value) {\r\n\t\tif(this.uniforms.wReturnNumber.value !== value){\r\n\t\t\tthis.uniforms.wReturnNumber.value = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tget weightSourceID () {\r\n\t\treturn this.uniforms.wSourceID.value;\r\n\t}\r\n\r\n\tset weightSourceID (value) {\r\n\t\tif(this.uniforms.wSourceID.value !== value){\r\n\t\t\tthis.uniforms.wSourceID.value = value;\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'material_property_changed',\r\n\t\t\t\ttarget: this\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic generateGradientTexture (gradient) {\r\n\t\tlet size = 64;\r\n\r\n\t\t// create canvas\r\n\t\tlet canvas = document.createElement('canvas');\r\n\t\tcanvas.width = size;\r\n\t\tcanvas.height = size;\r\n\r\n\t\t// get context\r\n\t\tlet context = canvas.getContext('2d');\r\n\r\n\t\t// draw gradient\r\n\t\tcontext.rect(0, 0, size, size);\r\n\t\tlet ctxGradient = context.createLinearGradient(0, 0, size, size);\r\n\r\n\t\tfor (let i = 0; i < gradient.length; i++) {\r\n\t\t\tlet step = gradient[i];\r\n\r\n\t\t\tctxGradient.addColorStop(step[0], '#' + step[1].getHexString());\r\n\t\t}\r\n\r\n\t\tcontext.fillStyle = ctxGradient;\r\n\t\tcontext.fill();\r\n\t\t\r\n\t\t//let texture = new THREE.Texture(canvas);\r\n\t\tlet texture = new THREE.CanvasTexture(canvas);\r\n\t\ttexture.needsUpdate = true;\r\n\t\t\r\n\t\ttexture.minFilter = THREE.LinearFilter;\r\n\t\ttexture.wrap = THREE.RepeatWrapping;\r\n\t\ttexture.repeat = 2;\r\n\t\t// textureImage = texture.image;\r\n\r\n\t\treturn texture;\r\n\t}\r\n\t\r\n\tstatic generateMatcapTexture (matcap) {\r\n\tvar url = new URL(Potree.resourcePath + \"/textures/matcap/\" + matcap).href;\r\n\tlet texture = new THREE.TextureLoader().load( url );\r\n\t\ttexture.magFilter = texture.minFilter = THREE.LinearFilter; \r\n\t\ttexture.needsUpdate = true;\r\n\t\t// PotreeConverter_1.6_2018_07_29_windows_x64\\PotreeConverter.exe autzen_xyzrgbXYZ_ascii.xyz -f xyzrgbXYZ -a RGB NORMAL -o autzen_xyzrgbXYZ_ascii_a -p index --overwrite\r\n\t\t// Switch matcap texture on the fly : viewer.scene.pointclouds[0].material.matcap = 'matcap1.jpg'; \r\n\t\t// For non power of 2, use LinearFilter and dont generate mipmaps, For power of 2, use NearestFilter and generate mipmaps : matcap2.jpg 1 2 8 11 12 13\r\n\t\treturn texture; \r\n\t}\r\n\r\n\tdisableEvents(){\r\n\t\tif(this._hiddenListeners === undefined){\r\n\t\t\tthis._hiddenListeners = this._listeners;\r\n\t\t\tthis._listeners = {};\r\n\t\t}\r\n\t};\r\n\r\n\tenableEvents(){\r\n\t\tthis._listeners = this._hiddenListeners;\r\n\t\tthis._hiddenListeners = undefined;\r\n\t};\r\n\r\n\t// copyFrom(from){\r\n\r\n\t// \tvar a = 10;\r\n\r\n\t// \tfor(let name of Object.keys(this.uniforms)){\r\n\t// \t\tthis.uniforms[name].value = from.uniforms[name].value;\r\n\t// \t}\r\n\t// }\r\n\r\n\t// copy(from){\r\n\t// \tthis.copyFrom(from);\r\n\t// }\r\n\r\n}\r\n","\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\nimport {PointCloudTree, PointCloudTreeNode} from \"./PointCloudTree.js\";\r\nimport {PointCloudOctreeGeometryNode} from \"./PointCloudOctreeGeometry.js\";\r\nimport {Utils} from \"./utils.js\";\r\nimport {PointCloudMaterial} from \"./materials/PointCloudMaterial.js\";\r\n\r\n\r\nexport class PointCloudOctreeNode extends PointCloudTreeNode {\r\n\tconstructor () {\r\n\t\tsuper();\r\n\r\n\t\t//this.children = {};\r\n\t\tthis.children = [];\r\n\t\tthis.sceneNode = null;\r\n\t\tthis.octree = null;\r\n\t}\r\n\r\n\tgetNumPoints () {\r\n\t\treturn this.geometryNode.numPoints;\r\n\t}\r\n\r\n\tisLoaded () {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tisTreeNode () {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tisGeometryNode () {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetLevel () {\r\n\t\treturn this.geometryNode.level;\r\n\t}\r\n\r\n\tgetBoundingSphere () {\r\n\t\treturn this.geometryNode.boundingSphere;\r\n\t}\r\n\r\n\tgetBoundingBox () {\r\n\t\treturn this.geometryNode.boundingBox;\r\n\t}\r\n\r\n\tgetChildren () {\r\n\t\tlet children = [];\r\n\r\n\t\tfor (let i = 0; i < 8; i++) {\r\n\t\t\tif (this.children[i]) {\r\n\t\t\t\tchildren.push(this.children[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\tgetPointsInBox(boxNode){\r\n\r\n\t\tif(!this.sceneNode){\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tlet buffer = this.geometryNode.buffer;\r\n\r\n\t\tlet posOffset = buffer.offset(\"position\");\r\n\t\tlet stride = buffer.stride;\r\n\t\tlet view = new DataView(buffer.data);\r\n\r\n\t\tlet worldToBox = boxNode.matrixWorld.clone().invert();\r\n\t\tlet objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, this.sceneNode.matrixWorld);\r\n\r\n\t\tlet inBox = [];\r\n\r\n\t\tlet pos = new THREE.Vector4();\r\n\t\tfor(let i = 0; i < buffer.numElements; i++){\r\n\t\t\tlet x = view.getFloat32(i * stride + posOffset + 0, true);\r\n\t\t\tlet y = view.getFloat32(i * stride + posOffset + 4, true);\r\n\t\t\tlet z = view.getFloat32(i * stride + posOffset + 8, true);\r\n\r\n\t\t\tpos.set(x, y, z, 1);\r\n\t\t\tpos.applyMatrix4(objectToBox);\r\n\r\n\t\t\tif(-0.5 < pos.x && pos.x < 0.5){\r\n\t\t\t\tif(-0.5 < pos.y && pos.y < 0.5){\r\n\t\t\t\t\tif(-0.5 < pos.z && pos.z < 0.5){\r\n\t\t\t\t\t\tpos.set(x, y, z, 1).applyMatrix4(this.sceneNode.matrixWorld);\r\n\t\t\t\t\t\tinBox.push(new THREE.Vector3(pos.x, pos.y, pos.z));\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn inBox;\r\n\t}\r\n\r\n\tget name () {\r\n\t\treturn this.geometryNode.name;\r\n\t}\r\n};\r\n\r\nexport class PointCloudOctree extends PointCloudTree {\r\n\tconstructor (geometry, material) {\r\n\t\tsuper();\r\n\r\n\t\tthis.pointBudget = Infinity;\r\n\t\tthis.pcoGeometry = geometry;\r\n\t\tthis.boundingBox = this.pcoGeometry.boundingBox;\r\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\tthis.material = material || new PointCloudMaterial();\r\n\t\tthis.visiblePointsTarget = 2 * 1000 * 1000;\r\n\t\tthis.minimumNodePixelSize = 150;\r\n\t\tthis.level = 0;\r\n\t\tthis.position.copy(geometry.offset);\r\n\t\tthis.updateMatrix();\r\n\r\n\t\t{\r\n\r\n\t\t\tlet priorityQueue = [\"rgba\", \"rgb\", \"intensity\", \"classification\"];\r\n\t\t\tlet selected = \"rgba\";\r\n\r\n\t\t\tfor(let attributeName of priorityQueue){\r\n\t\t\t\tlet attribute = this.pcoGeometry.pointAttributes.attributes.find(a => a.name === attributeName);\r\n\r\n\t\t\t\tif(!attribute){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet min = attribute.range[0].constructor.name === \"Array\" ? attribute.range[0] : [attribute.range[0]];\r\n\t\t\t\tlet max = attribute.range[1].constructor.name === \"Array\" ? attribute.range[1] : [attribute.range[1]];\r\n\r\n\t\t\t\tlet range_min = new THREE.Vector3(...min);\r\n\t\t\t\tlet range_max = new THREE.Vector3(...max);\r\n\t\t\t\tlet range = range_min.distanceTo(range_max);\r\n\r\n\t\t\t\tif(range === 0){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tselected = attributeName;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tthis.material.activeAttributeName = selected;\r\n\t\t}\r\n\r\n\t\tthis.showBoundingBox = false;\r\n\t\tthis.boundingBoxNodes = [];\r\n\t\tthis.loadQueue = [];\r\n\t\tthis.visibleBounds = new THREE.Box3();\r\n\t\tthis.visibleNodes = [];\r\n\t\tthis.visibleGeometry = [];\r\n\t\tthis.generateDEM = false;\r\n\t\tthis.profileRequests = [];\r\n\t\tthis.name = '';\r\n\t\tthis._visible = true;\r\n\r\n\t\t{\r\n\t\t\tlet box = [this.pcoGeometry.tightBoundingBox, this.getBoundingBoxWorld()]\r\n\t\t\t\t.find(v => v !== undefined);\r\n\r\n\t\t\tthis.updateMatrixWorld(true);\r\n\t\t\tbox = Utils.computeTransformedBoundingBox(box, this.matrixWorld);\r\n\r\n\t\t\tlet bMin = box.min.z;\r\n\t\t\tlet bMax = box.max.z;\r\n\t\t\tthis.material.heightMin = bMin;\r\n\t\t\tthis.material.heightMax = bMax;\r\n\t\t}\r\n\r\n\t\t// TODO read projection from file instead\r\n\t\tthis.projection = geometry.projection;\r\n\t\tthis.fallbackProjection = geometry.fallbackProjection;\r\n\r\n\t\tthis.root = this.pcoGeometry.root;\r\n\t}\r\n\r\n\tsetName (name) {\r\n\t\tif (this.name !== name) {\r\n\t\t\tthis.name = name;\r\n\t\t\tthis.dispatchEvent({type: 'name_changed', name: name, pointcloud: this});\r\n\t\t}\r\n\t}\r\n\r\n\tgetName () {\r\n\t\treturn this.name;\r\n\t}\r\n\r\n\tgetAttribute(name){\r\n\r\n\t\tconst attribute = this.pcoGeometry.pointAttributes.attributes.find(a => a.name === name);\r\n\r\n\t\tif(attribute){\r\n\t\t\treturn attribute;\r\n\t\t}else{\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tgetAttributes(){\r\n\t\treturn this.pcoGeometry.pointAttributes;\r\n\t}\r\n\r\n\ttoTreeNode (geometryNode, parent) {\r\n\t\tlet node = new PointCloudOctreeNode();\r\n\r\n\t\t// if(geometryNode.name === \"r40206\"){\r\n\t\t//\tconsole.log(\"creating node for r40206\");\r\n\t\t// }\r\n\t\tlet sceneNode = new THREE.Points(geometryNode.geometry, this.material);\r\n\t\tsceneNode.name = geometryNode.name;\r\n\t\tsceneNode.position.copy(geometryNode.boundingBox.min);\r\n\t\tsceneNode.frustumCulled = false;\r\n\t\tsceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => {\r\n\t\t\tif (material.program) {\r\n\t\t\t\t_this.getContext().useProgram(material.program.program);\r\n\r\n\t\t\t\tif (material.program.getUniforms().map.level) {\r\n\t\t\t\t\tlet level = geometryNode.getLevel();\r\n\t\t\t\t\tmaterial.uniforms.level.value = level;\r\n\t\t\t\t\tmaterial.program.getUniforms().map.level.setValue(_this.getContext(), level);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) {\r\n\t\t\t\t\tlet vnStart = this.visibleNodeTextureOffsets.get(node);\r\n\t\t\t\t\tmaterial.uniforms.vnStart.value = vnStart;\r\n\t\t\t\t\tmaterial.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (material.program.getUniforms().map.pcIndex) {\r\n\t\t\t\t\tlet i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node);\r\n\t\t\t\t\tmaterial.uniforms.pcIndex.value = i;\r\n\t\t\t\t\tmaterial.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t// { // DEBUG\r\n\t\t//\tlet sg = new THREE.SphereGeometry(1, 16, 16);\r\n\t\t//\tlet sm = new THREE.MeshNormalMaterial();\r\n\t\t//\tlet s = new THREE.Mesh(sg, sm);\r\n\t\t//\ts.scale.set(5, 5, 5);\r\n\t\t//\ts.position.copy(geometryNode.mean)\r\n\t\t//\t\t.add(this.position)\r\n\t\t//\t\t.add(geometryNode.boundingBox.min);\r\n\t\t//\r\n\t\t//\tviewer.scene.scene.add(s);\r\n\t\t// }\r\n\r\n\t\tnode.geometryNode = geometryNode;\r\n\t\tnode.sceneNode = sceneNode;\r\n\t\tnode.pointcloud = this;\r\n\t\tnode.children = [];\r\n\t\t//for (let key in geometryNode.children) {\r\n\t\t//\tnode.children[key] = geometryNode.children[key];\r\n\t\t//}\r\n\t\tfor(let i = 0; i < 8; i++){\r\n\t\t\tnode.children[i] = geometryNode.children[i];\r\n\t\t}\r\n\r\n\t\tif (!parent) {\r\n\t\t\tthis.root = node;\r\n\t\t\tthis.add(sceneNode);\r\n\t\t} else {\r\n\t\t\tlet childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]);\r\n\t\t\tparent.sceneNode.add(sceneNode);\r\n\t\t\tparent.children[childIndex] = node;\r\n\t\t}\r\n\r\n\t\tlet disposeListener = function () {\r\n\t\t\tlet childIndex = parseInt(geometryNode.name[geometryNode.name.length - 1]);\r\n\t\t\tparent.sceneNode.remove(node.sceneNode);\r\n\t\t\tparent.children[childIndex] = geometryNode;\r\n\t\t};\r\n\t\tgeometryNode.oneTimeDisposeHandlers.push(disposeListener);\r\n\r\n\t\treturn node;\r\n\t}\r\n\r\n\tupdateVisibleBounds () {\r\n\t\tlet leafNodes = [];\r\n\t\tfor (let i = 0; i < this.visibleNodes.length; i++) {\r\n\t\t\tlet node = this.visibleNodes[i];\r\n\t\t\tlet isLeaf = true;\r\n\r\n\t\t\tfor (let j = 0; j < node.children.length; j++) {\r\n\t\t\t\tlet child = node.children[j];\r\n\t\t\t\tif (child instanceof PointCloudOctreeNode) {\r\n\t\t\t\t\tisLeaf = isLeaf && !child.sceneNode.visible;\r\n\t\t\t\t} else if (child instanceof PointCloudOctreeGeometryNode) {\r\n\t\t\t\t\tisLeaf = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (isLeaf) {\r\n\t\t\t\tleafNodes.push(node);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.visibleBounds.min = new THREE.Vector3(Infinity, Infinity, Infinity);\r\n\t\tthis.visibleBounds.max = new THREE.Vector3(-Infinity, -Infinity, -Infinity);\r\n\t\tfor (let i = 0; i < leafNodes.length; i++) {\r\n\t\t\tlet node = leafNodes[i];\r\n\r\n\t\t\tthis.visibleBounds.expandByPoint(node.getBoundingBox().min);\r\n\t\t\tthis.visibleBounds.expandByPoint(node.getBoundingBox().max);\r\n\t\t}\r\n\t}\r\n\r\n\tupdateMaterial (material, visibleNodes, camera, renderer) {\r\n\t\tmaterial.fov = camera.fov * (Math.PI / 180);\r\n\t\tmaterial.screenWidth = renderer.domElement.clientWidth;\r\n\t\tmaterial.screenHeight = renderer.domElement.clientHeight;\r\n\t\tmaterial.spacing = this.pcoGeometry.spacing; // * Math.max(this.scale.x, this.scale.y, this.scale.z);\r\n\t\tmaterial.near = camera.near;\r\n\t\tmaterial.far = camera.far;\r\n\t\tmaterial.uniforms.octreeSize.value = this.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\r\n\t}\r\n\r\n\tcomputeVisibilityTextureData(nodes, camera){\r\n\r\n\t\tif(Potree.measureTimings) performance.mark(\"computeVisibilityTextureData-start\");\r\n\r\n\t\tlet data = new Uint8Array(nodes.length * 4);\r\n\t\tlet visibleNodeTextureOffsets = new Map();\r\n\r\n\t\t// copy array\r\n\t\tnodes = nodes.slice();\r\n\r\n\t\t// sort by level and index, e.g. r, r0, r3, r4, r01, r07, r30, ...\r\n\t\tlet sort = function (a, b) {\r\n\t\t\tlet na = a.geometryNode.name;\r\n\t\t\tlet nb = b.geometryNode.name;\r\n\t\t\tif (na.length !== nb.length) return na.length - nb.length;\r\n\t\t\tif (na < nb) return -1;\r\n\t\t\tif (na > nb) return 1;\r\n\t\t\treturn 0;\r\n\t\t};\r\n\t\tnodes.sort(sort);\r\n\r\n\t\tlet worldDir = new THREE.Vector3();\r\n\r\n\t\tlet nodeMap = new Map();\r\n\t\tlet offsetsToChild = new Array(nodes.length).fill(Infinity);\r\n\r\n\t\tfor(let i = 0; i < nodes.length; i++){\r\n\t\t\tlet node = nodes[i];\r\n\r\n\t\t\tnodeMap.set(node.name, node);\r\n\t\t\tvisibleNodeTextureOffsets.set(node, i);\r\n\r\n\t\t\tif(i > 0){\r\n\t\t\t\tlet index = parseInt(node.name.slice(-1));\r\n\t\t\t\tlet parentName = node.name.slice(0, -1);\r\n\t\t\t\tlet parent = nodeMap.get(parentName);\r\n\t\t\t\tlet parentOffset = visibleNodeTextureOffsets.get(parent);\r\n\r\n\t\t\t\tlet parentOffsetToChild = (i - parentOffset);\r\n\r\n\t\t\t\toffsetsToChild[parentOffset] = Math.min(offsetsToChild[parentOffset], parentOffsetToChild);\r\n\r\n\t\t\t\tdata[parentOffset * 4 + 0] = data[parentOffset * 4 + 0] | (1 << index);\r\n\t\t\t\tdata[parentOffset * 4 + 1] = (offsetsToChild[parentOffset] >> 8);\r\n\t\t\t\tdata[parentOffset * 4 + 2] = (offsetsToChild[parentOffset] % 256);\r\n\t\t\t}\r\n\r\n\t\t\tlet density = node.geometryNode.density;\r\n\t\t\t\r\n\t\t\tif(typeof density === \"number\" && !Number.isNaN(density)){\r\n\t\t\t\tlet lodOffset = Math.log2(density) / 2 - 1.5;\r\n\r\n\t\t\t\tlet offsetUint8 = (lodOffset + 10) * 10;\r\n\r\n\t\t\t\tdata[i * 4 + 3] = offsetUint8;\r\n\t\t\t}else{\r\n\t\t\t\tdata[i * 4 + 3] = 100;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif(Potree.measureTimings){\r\n\t\t\tperformance.mark(\"computeVisibilityTextureData-end\");\r\n\t\t\tperformance.measure(\"render.computeVisibilityTextureData\", \"computeVisibilityTextureData-start\", \"computeVisibilityTextureData-end\");\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tdata: data,\r\n\t\t\toffsets: visibleNodeTextureOffsets\r\n\t\t};\r\n\t}\r\n\r\n\tnodeIntersectsProfile (node, profile) {\r\n\t\tlet bbWorld = node.boundingBox.clone().applyMatrix4(this.matrixWorld);\r\n\t\tlet bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere());\r\n\r\n\t\tlet intersects = false;\r\n\r\n\t\tfor (let i = 0; i < profile.points.length - 1; i++) {\r\n\r\n\t\t\tlet start = new THREE.Vector3(profile.points[i + 0].x, profile.points[i + 0].y, bsWorld.center.z);\r\n\t\t\tlet end = new THREE.Vector3(profile.points[i + 1].x, profile.points[i + 1].y, bsWorld.center.z);\r\n\r\n\t\t\tlet closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3());\r\n\t\t\tlet distance = closest.distanceTo(bsWorld.center);\r\n\r\n\t\t\tintersects = intersects || (distance < (bsWorld.radius + profile.width));\r\n\t\t}\r\n\r\n\t\t//console.log(`${node.name}: ${intersects}`);\r\n\r\n\t\treturn intersects;\r\n\t}\r\n\r\n\tdeepestNodeAt(position){\r\n\t\t\r\n\t\tconst toObjectSpace = this.matrixWorld.clone().invert();\r\n\r\n\t\tconst objPos = position.clone().applyMatrix4(toObjectSpace);\r\n\r\n\t\tlet current = this.root;\r\n\t\twhile(true){\r\n\r\n\t\t\tlet containingChild = null;\r\n\r\n\t\t\tfor(const child of current.children){\r\n\r\n\t\t\t\tif(child !== undefined){\r\n\t\t\t\t\tif(child.getBoundingBox().containsPoint(objPos)){\r\n\t\t\t\t\t\tcontainingChild = child;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(containingChild !== null && containingChild instanceof PointCloudOctreeNode){\r\n\t\t\t\tcurrent = containingChild;\r\n\t\t\t}else{\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconst deepest = current;\r\n\r\n\t\treturn deepest;\r\n\t}\r\n\r\n\tnodesOnRay (nodes, ray) {\r\n\t\tlet nodesOnRay = [];\r\n\r\n\t\tlet _ray = ray.clone();\r\n\t\tfor (let i = 0; i < nodes.length; i++) {\r\n\t\t\tlet node = nodes[i];\r\n\t\t\tlet sphere = node.getBoundingSphere().clone().applyMatrix4(this.matrixWorld);\r\n\r\n\t\t\tif (_ray.intersectsSphere(sphere)) {\r\n\t\t\t\tnodesOnRay.push(node);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn nodesOnRay;\r\n\t}\r\n\r\n\tupdateMatrixWorld (force) {\r\n\t\tif (this.matrixAutoUpdate === true) this.updateMatrix();\r\n\r\n\t\tif (this.matrixWorldNeedsUpdate === true || force === true) {\r\n\t\t\tif (!this.parent) {\r\n\t\t\t\tthis.matrixWorld.copy(this.matrix);\r\n\t\t\t} else {\r\n\t\t\t\tthis.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\r\n\t\t\t}\r\n\r\n\t\t\tthis.matrixWorldNeedsUpdate = false;\r\n\r\n\t\t\tforce = true;\r\n\t\t}\r\n\t}\r\n\r\n\thideDescendants (object) {\r\n\t\tlet stack = [];\r\n\t\tfor (let i = 0; i < object.children.length; i++) {\r\n\t\t\tlet child = object.children[i];\r\n\t\t\tif (child.visible) {\r\n\t\t\t\tstack.push(child);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twhile (stack.length > 0) {\r\n\t\t\tlet object = stack.shift();\r\n\r\n\t\t\tobject.visible = false;\r\n\r\n\t\t\tfor (let i = 0; i < object.children.length; i++) {\r\n\t\t\t\tlet child = object.children[i];\r\n\t\t\t\tif (child.visible) {\r\n\t\t\t\t\tstack.push(child);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tmoveToOrigin () {\r\n\t\tthis.position.set(0, 0, 0);\r\n\t\tthis.updateMatrixWorld(true);\r\n\t\tlet box = this.boundingBox;\r\n\t\tlet transform = this.matrixWorld;\r\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\r\n\t\tthis.position.set(0, 0, 0).sub(tBox.getCenter(new THREE.Vector3()));\r\n\t};\r\n\r\n\tmoveToGroundPlane () {\r\n\t\tthis.updateMatrixWorld(true);\r\n\t\tlet box = this.boundingBox;\r\n\t\tlet transform = this.matrixWorld;\r\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\r\n\t\tthis.position.y += -tBox.min.y;\r\n\t};\r\n\r\n\tgetBoundingBoxWorld () {\r\n\t\tthis.updateMatrixWorld(true);\r\n\t\tlet box = this.boundingBox;\r\n\t\tlet transform = this.matrixWorld;\r\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\r\n\r\n\t\treturn tBox;\r\n\t};\r\n\r\n\t/**\r\n\t * returns points inside the profile points\r\n\t *\r\n\t * maxDepth:\t\tsearch points up to the given octree depth\r\n\t *\r\n\t *\r\n\t * The return value is an array with all segments of the profile path\r\n\t *\tlet segment = {\r\n\t *\t\tstart:\tTHREE.Vector3,\r\n\t *\t\tend:\tTHREE.Vector3,\r\n\t *\t\tpoints: {}\r\n\t *\t\tproject: function()\r\n\t *\t};\r\n\t *\r\n\t * The project() function inside each segment can be used to transform\r\n\t * that segments point coordinates to line up along the x-axis.\r\n\t *\r\n\t *\r\n\t */\r\n\tgetPointsInProfile (profile, maxDepth, callback) {\r\n\t\tif (callback) {\r\n\t\t\tlet request = new Potree.ProfileRequest(this, profile, maxDepth, callback);\r\n\t\t\tthis.profileRequests.push(request);\r\n\r\n\t\t\treturn request;\r\n\t\t}\r\n\r\n\t\tlet points = {\r\n\t\t\tsegments: [],\r\n\t\t\tboundingBox: new THREE.Box3(),\r\n\t\t\tprojectedBoundingBox: new THREE.Box2()\r\n\t\t};\r\n\r\n\t\t// evaluate segments\r\n\t\tfor (let i = 0; i < profile.points.length - 1; i++) {\r\n\t\t\tlet start = profile.points[i];\r\n\t\t\tlet end = profile.points[i + 1];\r\n\t\t\tlet ps = this.getProfile(start, end, profile.width, maxDepth);\r\n\r\n\t\t\tlet segment = {\r\n\t\t\t\tstart: start,\r\n\t\t\t\tend: end,\r\n\t\t\t\tpoints: ps,\r\n\t\t\t\tproject: null\r\n\t\t\t};\r\n\r\n\t\t\tpoints.segments.push(segment);\r\n\r\n\t\t\tpoints.boundingBox.expandByPoint(ps.boundingBox.min);\r\n\t\t\tpoints.boundingBox.expandByPoint(ps.boundingBox.max);\r\n\t\t}\r\n\r\n\t\t// add projection functions to the segments\r\n\t\tlet mileage = new THREE.Vector3();\r\n\t\tfor (let i = 0; i < points.segments.length; i++) {\r\n\t\t\tlet segment = points.segments[i];\r\n\t\t\tlet start = segment.start;\r\n\t\t\tlet end = segment.end;\r\n\r\n\t\t\tlet project = (function (_start, _end, _mileage, _boundingBox) {\r\n\t\t\t\tlet start = _start;\r\n\t\t\t\tlet end = _end;\r\n\t\t\t\tlet mileage = _mileage;\r\n\t\t\t\tlet boundingBox = _boundingBox;\r\n\r\n\t\t\t\tlet xAxis = new THREE.Vector3(1, 0, 0);\r\n\t\t\t\tlet dir = new THREE.Vector3().subVectors(end, start);\r\n\t\t\t\tdir.y = 0;\r\n\t\t\t\tdir.normalize();\r\n\t\t\t\tlet alpha = Math.acos(xAxis.dot(dir));\r\n\t\t\t\tif (dir.z > 0) {\r\n\t\t\t\t\talpha = -alpha;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn function (position) {\r\n\t\t\t\t\tlet toOrigin = new THREE.Matrix4().makeTranslation(-start.x, -boundingBox.min.y, -start.z);\r\n\t\t\t\t\tlet alignWithX = new THREE.Matrix4().makeRotationY(-alpha);\r\n\t\t\t\t\tlet applyMileage = new THREE.Matrix4().makeTranslation(mileage.x, 0, 0);\r\n\r\n\t\t\t\t\tlet pos = position.clone();\r\n\t\t\t\t\tpos.applyMatrix4(toOrigin);\r\n\t\t\t\t\tpos.applyMatrix4(alignWithX);\r\n\t\t\t\t\tpos.applyMatrix4(applyMileage);\r\n\r\n\t\t\t\t\treturn pos;\r\n\t\t\t\t};\r\n\t\t\t}(start, end, mileage.clone(), points.boundingBox.clone()));\r\n\r\n\t\t\tsegment.project = project;\r\n\r\n\t\t\tmileage.x += new THREE.Vector3(start.x, 0, start.z).distanceTo(new THREE.Vector3(end.x, 0, end.z));\r\n\t\t\tmileage.y += end.y - start.y;\r\n\t\t}\r\n\r\n\t\tpoints.projectedBoundingBox.min.x = 0;\r\n\t\tpoints.projectedBoundingBox.min.y = points.boundingBox.min.y;\r\n\t\tpoints.projectedBoundingBox.max.x = mileage.x;\r\n\t\tpoints.projectedBoundingBox.max.y = points.boundingBox.max.y;\r\n\r\n\t\treturn points;\r\n\t}\r\n\r\n\t/**\r\n\t * returns points inside the given profile bounds.\r\n\t *\r\n\t * start:\r\n\t * end:\r\n\t * width:\r\n\t * depth:\t\tsearch points up to the given octree depth\r\n\t * callback:\tif specified, points are loaded before searching\r\n\t *\r\n\t *\r\n\t */\r\n\tgetProfile (start, end, width, depth, callback) {\r\n\t\tlet request = new Potree.ProfileRequest(start, end, width, depth, callback);\r\n\t\tthis.profileRequests.push(request);\r\n\t};\r\n\r\n\tgetVisibleExtent () {\r\n\t\treturn this.visibleBounds.applyMatrix4(this.matrixWorld);\r\n\t};\r\n\r\n\tintersectsPoint(position){\r\n\r\n\t\tlet rootAvailable = this.pcoGeometry.root && this.pcoGeometry.root.geometry;\r\n\r\n\t\tif(!rootAvailable){\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\tif(typeof this.signedDistanceField === \"undefined\"){\r\n\r\n\t\t\tconst resolution = 32;\r\n\t\t\tconst field = new Float32Array(resolution ** 3).fill(Infinity);\r\n\r\n\t\t\tconst positions = this.pcoGeometry.root.geometry.attributes.position;\r\n\t\t\tconst boundingBox = this.boundingBox;\r\n\r\n\t\t\tconst n = positions.count;\r\n\r\n\t\t\tfor(let i = 0; i < n; i = i + 3){\r\n\t\t\t\tconst x = positions.array[3 * i + 0];\r\n\t\t\t\tconst y = positions.array[3 * i + 1];\r\n\t\t\t\tconst z = positions.array[3 * i + 2];\r\n\r\n\t\t\t\tconst ix = parseInt(Math.min(resolution * (x / boundingBox.max.x), resolution - 1));\r\n\t\t\t\tconst iy = parseInt(Math.min(resolution * (y / boundingBox.max.y), resolution - 1));\r\n\t\t\t\tconst iz = parseInt(Math.min(resolution * (z / boundingBox.max.z), resolution - 1));\r\n\r\n\t\t\t\tconst index = ix + iy * resolution + iz * resolution * resolution;\r\n\r\n\t\t\t\tfield[index] = 0;\r\n\t\t\t}\r\n\r\n\t\t\tconst sdf = {\r\n\t\t\t\tresolution: resolution,\r\n\t\t\t\tfield: field,\r\n\t\t\t};\r\n\r\n\t\t\tthis.signedDistanceField = sdf;\r\n\t\t}\r\n\r\n\r\n\t\t{\r\n\t\t\tconst sdf = this.signedDistanceField;\r\n\t\t\tconst boundingBox = this.boundingBox;\r\n\r\n\t\t\tconst toObjectSpace = this.matrixWorld.clone().invert();\r\n\r\n\t\t\tconst objPos = position.clone().applyMatrix4(toObjectSpace);\r\n\r\n\t\t\tconst resolution = sdf.resolution;\r\n\t\t\tconst ix = parseInt(resolution * (objPos.x / boundingBox.max.x));\r\n\t\t\tconst iy = parseInt(resolution * (objPos.y / boundingBox.max.y));\r\n\t\t\tconst iz = parseInt(resolution * (objPos.z / boundingBox.max.z));\r\n\r\n\t\t\tif(ix < 0 || iy < 0 || iz < 0){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t\tif(ix >= resolution || iy >= resolution || iz >= resolution){\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tconst index = ix + iy * resolution + iz * resolution * resolution;\r\n\r\n\t\t\tconst value = sdf.field[index];\r\n\r\n\t\t\tif(value === 0){\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn false;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t *\r\n\t *\r\n\t * params.pickWindowSize:\tLook for points inside a pixel window of this size.\r\n\t *\t\t\t\t\t\t\tUse odd values: 1, 3, 5, ...\r\n\t *\r\n\t *\r\n\t * TODO: only draw pixels that are actually read with readPixels().\r\n\t *\r\n\t */\r\n\tpick(viewer, camera, ray, params = {}){\r\n\r\n\t\tlet renderer = viewer.renderer;\r\n\t\tlet pRenderer = viewer.pRenderer;\r\n\r\n\t\tperformance.mark(\"pick-start\");\r\n\r\n\t\tlet getVal = (a, b) => a !== undefined ? a : b;\r\n\r\n\t\tlet pickWindowSize = getVal(params.pickWindowSize, 65);\r\n\t\tlet pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false);\r\n\r\n\t\tlet size = renderer.getSize(new THREE.Vector2());\r\n\r\n\t\tlet width = Math.ceil(getVal(params.width, size.width));\r\n\t\tlet height = Math.ceil(getVal(params.height, size.height));\r\n\r\n\t\tlet pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType);\r\n\t\tlet pointSize = getVal(params.pointSize, this.material.size);\r\n\r\n\t\tlet nodes = this.nodesOnRay(this.visibleNodes, ray);\r\n\r\n\t\tif (nodes.length === 0) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (!this.pickState) {\r\n\t\t\tlet scene = new THREE.Scene();\r\n\r\n\t\t\tlet material = new Potree.PointCloudMaterial();\r\n\t\t\tmaterial.activeAttributeName = \"indices\";\r\n\r\n\t\t\tlet renderTarget = new THREE.WebGLRenderTarget(\r\n\t\t\t\t1, 1,\r\n\t\t\t\t{ minFilter: THREE.LinearFilter,\r\n\t\t\t\t\tmagFilter: THREE.NearestFilter,\r\n\t\t\t\t\tformat: THREE.RGBAFormat }\r\n\t\t\t);\r\n\r\n\t\t\tthis.pickState = {\r\n\t\t\t\trenderTarget: renderTarget,\r\n\t\t\t\tmaterial: material,\r\n\t\t\t\tscene: scene\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tlet pickState = this.pickState;\r\n\t\tlet pickMaterial = pickState.material;\r\n\r\n\t\t{ // update pick material\r\n\t\t\tpickMaterial.pointSizeType = pointSizeType;\r\n\t\t\t//pickMaterial.shape = this.material.shape;\r\n\t\t\tpickMaterial.shape = Potree.PointShape.PARABOLOID;\r\n\r\n\t\t\tpickMaterial.uniforms.uFilterReturnNumberRange.value = this.material.uniforms.uFilterReturnNumberRange.value;\r\n\t\t\tpickMaterial.uniforms.uFilterNumberOfReturnsRange.value = this.material.uniforms.uFilterNumberOfReturnsRange.value;\r\n\t\t\tpickMaterial.uniforms.uFilterGPSTimeClipRange.value = this.material.uniforms.uFilterGPSTimeClipRange.value;\r\n\t\t\tpickMaterial.uniforms.uFilterPointSourceIDClipRange.value = this.material.uniforms.uFilterPointSourceIDClipRange.value;\r\n\r\n\t\t\tpickMaterial.activeAttributeName = \"indices\";\r\n\r\n\t\t\tpickMaterial.size = pointSize;\r\n\t\t\tpickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value;\r\n\t\t\tpickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value;\r\n\t\t\tpickMaterial.classification = this.material.classification;\r\n\t\t\tpickMaterial.recomputeClassification();\r\n\r\n\t\t\tif(params.pickClipped){\r\n\t\t\t\tpickMaterial.clipBoxes = this.material.clipBoxes;\r\n\t\t\t\tpickMaterial.uniforms.clipBoxes = this.material.uniforms.clipBoxes;\r\n\t\t\t\tif(this.material.clipTask === Potree.ClipTask.HIGHLIGHT){\r\n\t\t\t\t\tpickMaterial.clipTask = Potree.ClipTask.NONE;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpickMaterial.clipTask = this.material.clipTask;\r\n\t\t\t\t}\r\n\t\t\t\tpickMaterial.clipMethod = this.material.clipMethod;\r\n\t\t\t}else{\r\n\t\t\t\tpickMaterial.clipBoxes = [];\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateMaterial(pickMaterial, nodes, camera, renderer);\r\n\t\t}\r\n\r\n\t\tpickState.renderTarget.setSize(width, height);\r\n\r\n\t\tlet pixelPos = new THREE.Vector2(params.x, params.y);\r\n\r\n\t\tlet gl = renderer.getContext();\r\n\t\tgl.enable(gl.SCISSOR_TEST);\r\n\t\tgl.scissor(\r\n\t\t\tparseInt(pixelPos.x - (pickWindowSize - 1) / 2),\r\n\t\t\tparseInt(pixelPos.y - (pickWindowSize - 1) / 2),\r\n\t\t\tparseInt(pickWindowSize), parseInt(pickWindowSize));\r\n\r\n\r\n\t\trenderer.state.buffers.depth.setTest(pickMaterial.depthTest);\r\n\t\trenderer.state.buffers.depth.setMask(pickMaterial.depthWrite);\r\n\t\trenderer.state.setBlending(THREE.NoBlending);\r\n\r\n\t\t{ // RENDER\r\n\t\t\trenderer.setRenderTarget(pickState.renderTarget);\r\n\t\t\tgl.clearColor(0, 0, 0, 0);\r\n\t\t\trenderer.clear(true, true, true);\r\n\r\n\t\t\tlet tmp = this.material;\r\n\t\t\tthis.material = pickMaterial;\r\n\r\n\t\t\tpRenderer.renderOctree(this, nodes, camera, pickState.renderTarget);\r\n\r\n\t\t\tthis.material = tmp;\r\n\t\t}\r\n\r\n\t\tlet clamp = (number, min, max) => Math.min(Math.max(min, number), max);\r\n\r\n\t\tlet x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width));\r\n\t\tlet y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height));\r\n\t\tlet w = parseInt(Math.min(x + pickWindowSize, width) - x);\r\n\t\tlet h = parseInt(Math.min(y + pickWindowSize, height) - y);\r\n\r\n\t\tlet pixelCount = w * h;\r\n\t\tlet buffer = new Uint8Array(4 * pixelCount);\r\n\r\n\t\tgl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer);\r\n\r\n\t\trenderer.setRenderTarget(null);\r\n\t\trenderer.state.reset();\r\n\t\trenderer.setScissorTest(false);\r\n\t\tgl.disable(gl.SCISSOR_TEST);\r\n\r\n\t\tlet pixels = buffer;\r\n\t\tlet ibuffer = new Uint32Array(buffer.buffer);\r\n\r\n\t\t// find closest hit inside pixelWindow boundaries\r\n\t\tlet min = Number.MAX_VALUE;\r\n\t\tlet hits = [];\r\n\t\tfor (let u = 0; u < pickWindowSize; u++) {\r\n\t\t\tfor (let v = 0; v < pickWindowSize; v++) {\r\n\t\t\t\tlet offset = (u + v * pickWindowSize);\r\n\t\t\t\tlet distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2);\r\n\r\n\t\t\t\tlet pcIndex = pixels[4 * offset + 3];\r\n\t\t\t\tpixels[4 * offset + 3] = 0;\r\n\t\t\t\tlet pIndex = ibuffer[offset];\r\n\r\n\t\t\t\tif(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){\r\n\t\t\t\t\tlet hit = {\r\n\t\t\t\t\t\tpIndex: pIndex,\r\n\t\t\t\t\t\tpcIndex: pcIndex,\r\n\t\t\t\t\t\tdistanceToCenter: distance\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif(params.all){\r\n\t\t\t\t\t\thits.push(hit);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(hits.length > 0){\r\n\t\t\t\t\t\t\tif(distance < hits[0].distanceToCenter){\r\n\t\t\t\t\t\t\t\thits[0] = hit;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\thits.push(hit);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\r\n\t\t// { // DEBUG: show panel with pick image\r\n\t\t// \tlet img = Utils.pixelsArrayToImage(buffer, w, h);\r\n\t\t// \tlet screenshot = img.src;\r\n\t\t\r\n\t\t// \tif(!this.debugDIV){\r\n\t\t// \t\tthis.debugDIV = $(`\r\n\t\t// \t\t\t
`);\r\n\t\t// \t\t$(document.body).append(this.debugDIV);\r\n\t\t// \t}\r\n\t\t\r\n\t\t// \tthis.debugDIV.empty();\r\n\t\t// \tthis.debugDIV.append($(``));\r\n\t\t// \t//$(this.debugWindow.document).append($(``));\r\n\t\t// \t//this.debugWindow.document.write('');\r\n\t\t// }\r\n\r\n\r\n\t\tfor(let hit of hits){\r\n\t\t\tlet point = {};\r\n\r\n\t\t\tif (!nodes[hit.pcIndex]) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t\tlet node = nodes[hit.pcIndex];\r\n\t\t\tlet pc = node.sceneNode;\r\n\t\t\tlet geometry = node.geometryNode.geometry;\r\n\r\n\t\t\tfor(let attributeName in geometry.attributes){\r\n\t\t\t\tlet attribute = geometry.attributes[attributeName];\r\n\r\n\t\t\t\tif (attributeName === 'position') {\r\n\t\t\t\t\tlet x = attribute.array[3 * hit.pIndex + 0];\r\n\t\t\t\t\tlet y = attribute.array[3 * hit.pIndex + 1];\r\n\t\t\t\t\tlet z = attribute.array[3 * hit.pIndex + 2];\r\n\r\n\t\t\t\t\tlet position = new THREE.Vector3(x, y, z);\r\n\t\t\t\t\tposition.applyMatrix4(pc.matrixWorld);\r\n\r\n\t\t\t\t\tpoint[attributeName] = position;\r\n\t\t\t\t} else if (attributeName === 'indices') {\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tlet values = attribute.array.slice(attribute.itemSize * hit.pIndex, attribute.itemSize * (hit.pIndex + 1)) ;\r\n\r\n\t\t\t\t\tif(attribute.potree){\r\n\t\t\t\t\t\tconst {scale, offset} = attribute.potree;\r\n\t\t\t\t\t\tvalues = values.map(v => v / scale + offset);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpoint[attributeName] = values;\r\n\r\n\t\t\t\t\t//debugger;\r\n\t\t\t\t\t//if (values.itemSize === 1) {\r\n\t\t\t\t\t//\tpoint[attribute.name] = values.array[hit.pIndex];\r\n\t\t\t\t\t//} else {\r\n\t\t\t\t\t//\tlet value = [];\r\n\t\t\t\t\t//\tfor (let j = 0; j < values.itemSize; j++) {\r\n\t\t\t\t\t//\t\tvalue.push(values.array[values.itemSize * hit.pIndex + j]);\r\n\t\t\t\t\t//\t}\r\n\t\t\t\t\t//\tpoint[attribute.name] = value;\r\n\t\t\t\t\t//}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\thit.point = point;\r\n\t\t}\r\n\r\n\t\tperformance.mark(\"pick-end\");\r\n\t\tperformance.measure(\"pick\", \"pick-start\", \"pick-end\");\r\n\r\n\t\tif(params.all){\r\n\t\t\treturn hits.map(hit => hit.point);\r\n\t\t}else{\r\n\t\t\tif(hits.length === 0){\r\n\t\t\t\treturn null;\r\n\t\t\t}else{\r\n\t\t\t\treturn hits[0].point;\r\n\t\t\t\t//let sorted = hits.sort( (a, b) => a.distanceToCenter - b.distanceToCenter);\r\n\r\n\t\t\t\t//return sorted[0].point;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t};\r\n\r\n\t* getFittedBoxGen(boxNode){\r\n\t\tlet start = performance.now();\r\n\r\n\t\tlet shrinkedLocalBounds = new THREE.Box3();\r\n\t\tlet worldToBox = boxNode.matrixWorld.clone().invert();\r\n\r\n\t\tfor(let node of this.visibleNodes){\r\n\t\t\tif(!node.sceneNode){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet buffer = node.geometryNode.buffer;\r\n\r\n\t\t\tlet posOffset = buffer.offset(\"position\");\r\n\t\t\tlet stride = buffer.stride;\r\n\t\t\tlet view = new DataView(buffer.data);\r\n\r\n\t\t\tlet objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld);\r\n\r\n\t\t\tlet pos = new THREE.Vector4();\r\n\t\t\tfor(let i = 0; i < buffer.numElements; i++){\r\n\t\t\t\tlet x = view.getFloat32(i * stride + posOffset + 0, true);\r\n\t\t\t\tlet y = view.getFloat32(i * stride + posOffset + 4, true);\r\n\t\t\t\tlet z = view.getFloat32(i * stride + posOffset + 8, true);\r\n\r\n\t\t\t\tpos.set(x, y, z, 1);\r\n\t\t\t\tpos.applyMatrix4(objectToBox);\r\n\r\n\t\t\t\tif(-0.5 < pos.x && pos.x < 0.5){\r\n\t\t\t\t\tif(-0.5 < pos.y && pos.y < 0.5){\r\n\t\t\t\t\t\tif(-0.5 < pos.z && pos.z < 0.5){\r\n\t\t\t\t\t\t\tshrinkedLocalBounds.expandByPoint(pos);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tyield;\r\n\t\t}\r\n\r\n\t\tlet fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld);\r\n\r\n\t\tlet fitted = new THREE.Object3D();\r\n\t\tfitted.position.copy(fittedPosition);\r\n\t\tfitted.scale.copy(boxNode.scale);\r\n\t\tfitted.rotation.copy(boxNode.rotation);\r\n\r\n\t\tlet ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min);\r\n\t\tfitted.scale.multiply(ds);\r\n\r\n\t\tlet duration = performance.now() - start;\r\n\t\tconsole.log(\"duration: \", duration);\r\n\r\n\t\tyield fitted;\r\n\t}\r\n\r\n\tgetFittedBox(boxNode, maxLevel = Infinity){\r\n\r\n\t\tmaxLevel = Infinity;\r\n\r\n\t\tlet start = performance.now();\r\n\r\n\t\tlet shrinkedLocalBounds = new THREE.Box3();\r\n\t\tlet worldToBox = boxNode.matrixWorld.clone().invert();\r\n\r\n\t\tfor(let node of this.visibleNodes){\r\n\t\t\tif(!node.sceneNode || node.getLevel() > maxLevel){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet buffer = node.geometryNode.buffer;\r\n\r\n\t\t\tlet posOffset = buffer.offset(\"position\");\r\n\t\t\tlet stride = buffer.stride;\r\n\t\t\tlet view = new DataView(buffer.data);\r\n\r\n\t\t\tlet objectToBox = new THREE.Matrix4().multiplyMatrices(worldToBox, node.sceneNode.matrixWorld);\r\n\r\n\t\t\tlet pos = new THREE.Vector4();\r\n\t\t\tfor(let i = 0; i < buffer.numElements; i++){\r\n\t\t\t\tlet x = view.getFloat32(i * stride + posOffset + 0, true);\r\n\t\t\t\tlet y = view.getFloat32(i * stride + posOffset + 4, true);\r\n\t\t\t\tlet z = view.getFloat32(i * stride + posOffset + 8, true);\r\n\r\n\t\t\t\tpos.set(x, y, z, 1);\r\n\t\t\t\tpos.applyMatrix4(objectToBox);\r\n\r\n\t\t\t\tif(-0.5 < pos.x && pos.x < 0.5){\r\n\t\t\t\t\tif(-0.5 < pos.y && pos.y < 0.5){\r\n\t\t\t\t\t\tif(-0.5 < pos.z && pos.z < 0.5){\r\n\t\t\t\t\t\t\tshrinkedLocalBounds.expandByPoint(pos);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet fittedPosition = shrinkedLocalBounds.getCenter(new THREE.Vector3()).applyMatrix4(boxNode.matrixWorld);\r\n\r\n\t\tlet fitted = new THREE.Object3D();\r\n\t\tfitted.position.copy(fittedPosition);\r\n\t\tfitted.scale.copy(boxNode.scale);\r\n\t\tfitted.rotation.copy(boxNode.rotation);\r\n\r\n\t\tlet ds = new THREE.Vector3().subVectors(shrinkedLocalBounds.max, shrinkedLocalBounds.min);\r\n\t\tfitted.scale.multiply(ds);\r\n\r\n\t\tlet duration = performance.now() - start;\r\n\t\tconsole.log(\"duration: \", duration);\r\n\r\n\t\treturn fitted;\r\n\t}\r\n\r\n\tget progress () {\r\n\t\treturn this.visibleNodes.length / this.visibleGeometry.length;\r\n\t}\r\n\r\n\tfind(name){\r\n\t\tlet node = null;\r\n\t\tfor(let char of name){\r\n\t\t\tif(char === \"r\"){\r\n\t\t\t\tnode = this.root;\r\n\t\t\t}else{\r\n\t\t\t\tnode = node.children[char];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn node;\r\n\t}\r\n\r\n\tget visible(){\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\tset visible(value){\r\n\r\n\t\tif(value !== this._visible){\r\n\t\t\tthis._visible = value;\r\n\r\n\t\t\tthis.dispatchEvent({type: 'visibility_changed', pointcloud: this});\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\n\r\nexport class Points {\r\n\t\r\n\tconstructor () {\r\n\t\tthis.boundingBox = new THREE.Box3();\r\n\t\tthis.numPoints = 0;\r\n\t\tthis.data = {};\r\n\t}\r\n\r\n\tadd (points) {\r\n\t\tlet currentSize = this.numPoints;\r\n\t\tlet additionalSize = points.numPoints;\r\n\t\tlet newSize = currentSize + additionalSize;\r\n\r\n\t\tlet thisAttributes = Object.keys(this.data);\r\n\t\tlet otherAttributes = Object.keys(points.data);\r\n\t\tlet attributes = new Set([...thisAttributes, ...otherAttributes]);\r\n\r\n\t\tfor (let attribute of attributes) {\r\n\t\t\tif (thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) {\r\n\t\t\t\t// attribute in both, merge\r\n\t\t\t\tlet Type = this.data[attribute].constructor;\r\n\t\t\t\tlet merged = new Type(this.data[attribute].length + points.data[attribute].length);\r\n\t\t\t\tmerged.set(this.data[attribute], 0);\r\n\t\t\t\tmerged.set(points.data[attribute], this.data[attribute].length);\r\n\t\t\t\tthis.data[attribute] = merged;\r\n\t\t\t} else if (thisAttributes.includes(attribute) && !otherAttributes.includes(attribute)) {\r\n\t\t\t\t// attribute only in this; take over this and expand to new size\r\n\t\t\t\tlet elementsPerPoint = this.data[attribute].length / this.numPoints;\r\n\t\t\t\tlet Type = this.data[attribute].constructor;\r\n\t\t\t\tlet expanded = new Type(elementsPerPoint * newSize);\r\n\t\t\t\texpanded.set(this.data[attribute], 0);\r\n\t\t\t\tthis.data[attribute] = expanded;\r\n\t\t\t} else if (!thisAttributes.includes(attribute) && otherAttributes.includes(attribute)) {\r\n\t\t\t\t// attribute only in points to be added; take over new points and expand to new size\r\n\t\t\t\tlet elementsPerPoint = points.data[attribute].length / points.numPoints;\r\n\t\t\t\tlet Type = points.data[attribute].constructor;\r\n\t\t\t\tlet expanded = new Type(elementsPerPoint * newSize);\r\n\t\t\t\texpanded.set(points.data[attribute], elementsPerPoint * currentSize);\r\n\t\t\t\tthis.data[attribute] = expanded;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.numPoints = newSize;\r\n\r\n\t\tthis.boundingBox.union(points.boundingBox);\r\n\t}\r\n}","/**\r\n *\r\n * code adapted from three.js BoxHelper.js\r\n * https://github.com/mrdoob/three.js/blob/dev/src/helpers/BoxHelper.js\r\n *\r\n * @author mrdoob / http://mrdoob.com/\r\n * @author Mugen87 / http://github.com/Mugen87\r\n * @author mschuetz / http://potree.org\r\n */\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nexport class Box3Helper extends THREE.LineSegments {\r\n\tconstructor (box, color) {\r\n\t\tif (color === undefined) color = 0xffff00;\r\n\r\n\t\tlet indices = new Uint16Array([ 0, 1, 1, 2, 2, 3, 3, 0, 4, 5, 5, 6, 6, 7, 7, 4, 0, 4, 1, 5, 2, 6, 3, 7 ]);\r\n\t\tlet positions = new Float32Array([\r\n\t\t\tbox.min.x, box.min.y, box.min.z,\r\n\t\t\tbox.max.x, box.min.y, box.min.z,\r\n\t\t\tbox.max.x, box.min.y, box.max.z,\r\n\t\t\tbox.min.x, box.min.y, box.max.z,\r\n\t\t\tbox.min.x, box.max.y, box.min.z,\r\n\t\t\tbox.max.x, box.max.y, box.min.z,\r\n\t\t\tbox.max.x, box.max.y, box.max.z,\r\n\t\t\tbox.min.x, box.max.y, box.max.z\r\n\t\t]);\r\n\r\n\t\tlet geometry = new THREE.BufferGeometry();\r\n\t\tgeometry.setIndex(new THREE.BufferAttribute(indices, 1));\r\n\t\tgeometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));\r\n\r\n\t\tlet material = new THREE.LineBasicMaterial({ color: color });\r\n\r\n\t\tsuper(geometry, material);\r\n\t}\r\n}\r\n","\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\nimport {ClipTask, ClipMethod} from \"./defines.js\";\r\nimport {Box3Helper} from \"./utils/Box3Helper.js\";\r\n\r\nexport function updatePointClouds(pointclouds, camera, renderer){\r\n\r\n\tfor (let pointcloud of pointclouds) {\r\n\t\tlet start = performance.now();\r\n\r\n\t\tfor (let profileRequest of pointcloud.profileRequests) {\r\n\t\t\tprofileRequest.update();\r\n\r\n\t\t\tlet duration = performance.now() - start;\r\n\t\t\tif(duration > 5){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet duration = performance.now() - start;\r\n\t}\r\n\r\n\tlet result = updateVisibility(pointclouds, camera, renderer);\r\n\r\n\tfor (let pointcloud of pointclouds) {\r\n\t\tpointcloud.updateMaterial(pointcloud.material, pointcloud.visibleNodes, camera, renderer);\r\n\t\tpointcloud.updateVisibleBounds();\r\n\t}\r\n\r\n\texports.lru.freeMemory();\r\n\r\n\treturn result;\r\n};\r\n\r\n\r\n\r\nexport function updateVisibilityStructures(pointclouds, camera, renderer) {\r\n\tlet frustums = [];\r\n\tlet camObjPositions = [];\r\n\tlet priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; });\r\n\r\n\tfor (let i = 0; i < pointclouds.length; i++) {\r\n\t\tlet pointcloud = pointclouds[i];\r\n\r\n\t\tif (!pointcloud.initialized()) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tpointcloud.numVisibleNodes = 0;\r\n\t\tpointcloud.numVisiblePoints = 0;\r\n\t\tpointcloud.deepestVisibleLevel = 0;\r\n\t\tpointcloud.visibleNodes = [];\r\n\t\tpointcloud.visibleGeometry = [];\r\n\r\n\t\t// frustum in object space\r\n\t\tcamera.updateMatrixWorld();\r\n\t\tlet frustum = new THREE.Frustum();\r\n\t\tlet viewI = camera.matrixWorldInverse;\r\n\t\tlet world = pointcloud.matrixWorld;\r\n\t\t\r\n\t\t// use close near plane for frustum intersection\r\n\t\tlet frustumCam = camera.clone();\r\n\t\tfrustumCam.near = Math.min(camera.near, 0.1);\r\n\t\tfrustumCam.updateProjectionMatrix();\r\n\t\tlet proj = camera.projectionMatrix;\r\n\r\n\t\tlet fm = new THREE.Matrix4().multiply(proj).multiply(viewI).multiply(world);\r\n\t\tfrustum.setFromProjectionMatrix(fm);\r\n\t\tfrustums.push(frustum);\r\n\r\n\t\t// camera position in object space\r\n\t\tlet view = camera.matrixWorld;\r\n\t\tlet worldI = world.clone().invert();\r\n\t\tlet camMatrixObject = new THREE.Matrix4().multiply(worldI).multiply(view);\r\n\t\tlet camObjPos = new THREE.Vector3().setFromMatrixPosition(camMatrixObject);\r\n\t\tcamObjPositions.push(camObjPos);\r\n\r\n\t\tif (pointcloud.visible && pointcloud.root !== null) {\r\n\t\t\tpriorityQueue.push({pointcloud: i, node: pointcloud.root, weight: Number.MAX_VALUE});\r\n\t\t}\r\n\r\n\t\t// hide all previously visible nodes\r\n\t\t// if(pointcloud.root instanceof PointCloudOctreeNode){\r\n\t\t//\tpointcloud.hideDescendants(pointcloud.root.sceneNode);\r\n\t\t// }\r\n\t\tif (pointcloud.root.isTreeNode()) {\r\n\t\t\tpointcloud.hideDescendants(pointcloud.root.sceneNode);\r\n\t\t}\r\n\r\n\t\tfor (let j = 0; j < pointcloud.boundingBoxNodes.length; j++) {\r\n\t\t\tpointcloud.boundingBoxNodes[j].visible = false;\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\t'frustums': frustums,\r\n\t\t'camObjPositions': camObjPositions,\r\n\t\t'priorityQueue': priorityQueue\r\n\t};\r\n};\r\n\r\n\r\nexport function updateVisibility(pointclouds, camera, renderer){\r\n\r\n\tlet numVisibleNodes = 0;\r\n\tlet numVisiblePoints = 0;\r\n\r\n\tlet numVisiblePointsInPointclouds = new Map(pointclouds.map(pc => [pc, 0]));\r\n\r\n\tlet visibleNodes = [];\r\n\tlet visibleGeometry = [];\r\n\tlet unloadedGeometry = [];\r\n\r\n\tlet lowestSpacing = Infinity;\r\n\r\n\t// calculate object space frustum and cam pos and setup priority queue\r\n\tlet s = updateVisibilityStructures(pointclouds, camera, renderer);\r\n\tlet frustums = s.frustums;\r\n\tlet camObjPositions = s.camObjPositions;\r\n\tlet priorityQueue = s.priorityQueue;\r\n\r\n\tlet loadedToGPUThisFrame = 0;\r\n\t\r\n\tlet domWidth = renderer.domElement.clientWidth;\r\n\tlet domHeight = renderer.domElement.clientHeight;\r\n\r\n\t// check if pointcloud has been transformed\r\n\t// some code will only be executed if changes have been detected\r\n\tif(!Potree._pointcloudTransformVersion){\r\n\t\tPotree._pointcloudTransformVersion = new Map();\r\n\t}\r\n\tlet pointcloudTransformVersion = Potree._pointcloudTransformVersion;\r\n\tfor(let pointcloud of pointclouds){\r\n\r\n\t\tif(!pointcloud.visible){\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\tpointcloud.updateMatrixWorld();\r\n\r\n\t\tif(!pointcloudTransformVersion.has(pointcloud)){\r\n\t\t\tpointcloudTransformVersion.set(pointcloud, {number: 0, transform: pointcloud.matrixWorld.clone()});\r\n\t\t}else{\r\n\t\t\tlet version = pointcloudTransformVersion.get(pointcloud);\r\n\r\n\t\t\tif(!version.transform.equals(pointcloud.matrixWorld)){\r\n\t\t\t\tversion.number++;\r\n\t\t\t\tversion.transform.copy(pointcloud.matrixWorld);\r\n\r\n\t\t\t\tpointcloud.dispatchEvent({\r\n\t\t\t\t\ttype: \"transformation_changed\",\r\n\t\t\t\t\ttarget: pointcloud\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\twhile (priorityQueue.size() > 0) {\r\n\t\tlet element = priorityQueue.pop();\r\n\t\tlet node = element.node;\r\n\t\tlet parent = element.parent;\r\n\t\tlet pointcloud = pointclouds[element.pointcloud];\r\n\r\n\t\t// { // restrict to certain nodes for debugging\r\n\t\t//\tlet allowedNodes = [\"r\", \"r0\", \"r4\"];\r\n\t\t//\tif(!allowedNodes.includes(node.name)){\r\n\t\t//\t\tcontinue;\r\n\t\t//\t}\r\n\t\t// }\r\n\r\n\t\tlet box = node.getBoundingBox();\r\n\t\tlet frustum = frustums[element.pointcloud];\r\n\t\tlet camObjPos = camObjPositions[element.pointcloud];\r\n\r\n\t\tlet insideFrustum = frustum.intersectsBox(box);\r\n\t\tlet maxLevel = pointcloud.maxLevel || Infinity;\r\n\t\tlet level = node.getLevel();\r\n\t\tlet visible = insideFrustum;\r\n\t\tvisible = visible && !(numVisiblePoints + node.getNumPoints() > Potree.pointBudget);\r\n\t\tvisible = visible && !(numVisiblePointsInPointclouds.get(pointcloud) + node.getNumPoints() > pointcloud.pointBudget);\r\n\t\tvisible = visible && level < maxLevel;\r\n\t\tvisible = visible || node.getLevel() <= 2;\r\n\r\n\t\tlet clipBoxes = pointcloud.material.clipBoxes;\r\n\t\tif(true && clipBoxes.length > 0){\r\n\r\n\t\t\t//node.debug = false;\r\n\r\n\t\t\tlet numIntersecting = 0;\r\n\t\t\tlet numIntersectionVolumes = 0;\r\n\r\n\t\t\t//if(node.name === \"r60\"){\r\n\t\t\t//\tvar a = 10;\r\n\t\t\t//}\r\n\r\n\t\t\tfor(let clipBox of clipBoxes){\r\n\r\n\t\t\t\tlet pcWorldInverse = pointcloud.matrixWorld.clone().invert();\r\n\t\t\t\tlet toPCObject = pcWorldInverse.multiply(clipBox.box.matrixWorld);\r\n\r\n\t\t\t\tlet px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(pcWorldInverse);\r\n\t\t\t\tlet nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(pcWorldInverse);\r\n\t\t\t\tlet py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(pcWorldInverse);\r\n\t\t\t\tlet ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(pcWorldInverse);\r\n\t\t\t\tlet pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(pcWorldInverse);\r\n\t\t\t\tlet nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(pcWorldInverse);\r\n\r\n\t\t\t\tlet pxN = new THREE.Vector3().subVectors(nx, px).normalize();\r\n\t\t\t\tlet nxN = pxN.clone().multiplyScalar(-1);\r\n\t\t\t\tlet pyN = new THREE.Vector3().subVectors(ny, py).normalize();\r\n\t\t\t\tlet nyN = pyN.clone().multiplyScalar(-1);\r\n\t\t\t\tlet pzN = new THREE.Vector3().subVectors(nz, pz).normalize();\r\n\t\t\t\tlet nzN = pzN.clone().multiplyScalar(-1);\r\n\r\n\t\t\t\tlet pxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px);\r\n\t\t\t\tlet nxPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx);\r\n\t\t\t\tlet pyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py);\r\n\t\t\t\tlet nyPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny);\r\n\t\t\t\tlet pzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz);\r\n\t\t\t\tlet nzPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz);\r\n\r\n\t\t\t\t//if(window.debugdraw !== undefined && window.debugdraw === true && node.name === \"r60\"){\r\n\r\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, pxPlane, 1, 0xFF0000);\r\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, nxPlane, 1, 0x990000);\r\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, pyPlane, 1, 0x00FF00);\r\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, nyPlane, 1, 0x009900);\r\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, pzPlane, 1, 0x0000FF);\r\n\t\t\t\t//\tPotree.utils.debugPlane(viewer.scene.scene, nzPlane, 1, 0x000099);\r\n\r\n\t\t\t\t//\tPotree.utils.debugBox(viewer.scene.scene, box, new THREE.Matrix4(), 0x00FF00);\r\n\t\t\t\t//\tPotree.utils.debugBox(viewer.scene.scene, box, pointcloud.matrixWorld, 0xFF0000);\r\n\t\t\t\t//\tPotree.utils.debugBox(viewer.scene.scene, clipBox.box.boundingBox, clipBox.box.matrixWorld, 0xFF0000);\r\n\r\n\t\t\t\t//\twindow.debugdraw = false;\r\n\t\t\t\t//}\r\n\r\n\t\t\t\tlet frustum = new THREE.Frustum(pxPlane, nxPlane, pyPlane, nyPlane, pzPlane, nzPlane);\r\n\t\t\t\tlet intersects = frustum.intersectsBox(box);\r\n\r\n\t\t\t\tif(intersects){\r\n\t\t\t\t\tnumIntersecting++;\r\n\t\t\t\t}\r\n\t\t\t\tnumIntersectionVolumes++;\r\n\t\t\t}\r\n\r\n\t\t\tlet insideAny = numIntersecting > 0;\r\n\t\t\tlet insideAll = numIntersecting === numIntersectionVolumes;\r\n\r\n\t\t\tif(pointcloud.material.clipTask === ClipTask.SHOW_INSIDE){\r\n\t\t\t\tif(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && insideAny){\r\n\t\t\t\t\t//node.debug = true\r\n\t\t\t\t}else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && insideAll){\r\n\t\t\t\t\t//node.debug = true;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvisible = false;\r\n\t\t\t\t}\r\n\t\t\t} else if(pointcloud.material.clipTask === ClipTask.SHOW_OUTSIDE){\r\n\t\t\t\t//if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ANY && !insideAny){\r\n\t\t\t\t//\t//visible = true;\r\n\t\t\t\t//\tlet a = 10;\r\n\t\t\t\t//}else if(pointcloud.material.clipMethod === ClipMethod.INSIDE_ALL && !insideAll){\r\n\t\t\t\t//\t//visible = true;\r\n\t\t\t\t//\tlet a = 20;\r\n\t\t\t\t//}else{\r\n\t\t\t\t//\tvisible = false;\r\n\t\t\t\t//}\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t}\r\n\r\n\t\t// visible = [\"r\", \"r0\", \"r06\", \"r060\"].includes(node.name);\r\n\t\t// visible = [\"r\"].includes(node.name);\r\n\r\n\t\tif (node.spacing) {\r\n\t\t\tlowestSpacing = Math.min(lowestSpacing, node.spacing);\r\n\t\t} else if (node.geometryNode && node.geometryNode.spacing) {\r\n\t\t\tlowestSpacing = Math.min(lowestSpacing, node.geometryNode.spacing);\r\n\t\t}\r\n\r\n\t\tif (numVisiblePoints + node.getNumPoints() > Potree.pointBudget) {\r\n\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tif (!visible) {\r\n\t\t\tcontinue;\r\n\t\t}\r\n\r\n\t\t// TODO: not used, same as the declaration?\r\n\t\t// numVisibleNodes++;\r\n\t\tnumVisiblePoints += node.getNumPoints();\r\n\t\tlet numVisiblePointsInPointcloud = numVisiblePointsInPointclouds.get(pointcloud);\r\n\t\tnumVisiblePointsInPointclouds.set(pointcloud, numVisiblePointsInPointcloud + node.getNumPoints());\r\n\r\n\t\tpointcloud.numVisibleNodes++;\r\n\t\tpointcloud.numVisiblePoints += node.getNumPoints();\r\n\r\n\t\tif (node.isGeometryNode() && (!parent || parent.isTreeNode())) {\r\n\t\t\tif (node.isLoaded() && loadedToGPUThisFrame < 2) {\r\n\t\t\t\tnode = pointcloud.toTreeNode(node, parent);\r\n\t\t\t\tloadedToGPUThisFrame++;\r\n\t\t\t} else {\r\n\t\t\t\tunloadedGeometry.push(node);\r\n\t\t\t\tvisibleGeometry.push(node);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (node.isTreeNode()) {\r\n\t\t\texports.lru.touch(node.geometryNode);\r\n\t\t\tnode.sceneNode.visible = true;\r\n\t\t\tnode.sceneNode.material = pointcloud.material;\r\n\r\n\t\t\tvisibleNodes.push(node);\r\n\t\t\tpointcloud.visibleNodes.push(node);\r\n\r\n\t\t\tif(node._transformVersion === undefined){\r\n\t\t\t\tnode._transformVersion = -1;\r\n\t\t\t}\r\n\t\t\tlet transformVersion = pointcloudTransformVersion.get(pointcloud);\r\n\t\t\tif(node._transformVersion !== transformVersion.number){\r\n\t\t\t\tnode.sceneNode.updateMatrix();\r\n\t\t\t\tnode.sceneNode.matrixWorld.multiplyMatrices(pointcloud.matrixWorld, node.sceneNode.matrix);\t\r\n\t\t\t\tnode._transformVersion = transformVersion.number;\r\n\t\t\t}\r\n\r\n\t\t\tif (pointcloud.showBoundingBox && !node.boundingBoxNode && node.getBoundingBox) {\r\n\t\t\t\tlet boxHelper = new Box3Helper(node.getBoundingBox());\r\n\t\t\t\tboxHelper.matrixAutoUpdate = false;\r\n\t\t\t\tpointcloud.boundingBoxNodes.push(boxHelper);\r\n\t\t\t\tnode.boundingBoxNode = boxHelper;\r\n\t\t\t\tnode.boundingBoxNode.matrix.copy(pointcloud.matrixWorld);\r\n\t\t\t} else if (pointcloud.showBoundingBox) {\r\n\t\t\t\tnode.boundingBoxNode.visible = true;\r\n\t\t\t\tnode.boundingBoxNode.matrix.copy(pointcloud.matrixWorld);\r\n\t\t\t} else if (!pointcloud.showBoundingBox && node.boundingBoxNode) {\r\n\t\t\t\tnode.boundingBoxNode.visible = false;\r\n\t\t\t}\r\n\r\n\t\t\t// if(node.boundingBoxNode !== undefined && exports.debug.allowedNodes !== undefined){\r\n\t\t\t// \tif(!exports.debug.allowedNodes.includes(node.name)){\r\n\t\t\t// \t\tnode.boundingBoxNode.visible = false;\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\t\t}\r\n\r\n\t\t// add child nodes to priorityQueue\r\n\t\tlet children = node.getChildren();\r\n\t\tfor (let i = 0; i < children.length; i++) {\r\n\t\t\tlet child = children[i];\r\n\r\n\t\t\tlet weight = 0; \r\n\t\t\tif(camera.isPerspectiveCamera){\r\n\t\t\t\tlet sphere = child.getBoundingSphere();\r\n\t\t\t\tlet center = sphere.center;\r\n\t\t\t\t//let distance = sphere.center.distanceTo(camObjPos);\r\n\t\t\t\t\r\n\t\t\t\tlet dx = camObjPos.x - center.x;\r\n\t\t\t\tlet dy = camObjPos.y - center.y;\r\n\t\t\t\tlet dz = camObjPos.z - center.z;\r\n\t\t\t\t\r\n\t\t\t\tlet dd = dx * dx + dy * dy + dz * dz;\r\n\t\t\t\tlet distance = Math.sqrt(dd);\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tlet radius = sphere.radius;\r\n\t\t\t\t\r\n\t\t\t\tlet fov = (camera.fov * Math.PI) / 180;\r\n\t\t\t\tlet slope = Math.tan(fov / 2);\r\n\t\t\t\tlet projFactor = (0.5 * domHeight) / (slope * distance);\r\n\t\t\t\tlet screenPixelRadius = radius * projFactor;\r\n\t\t\t\t\r\n\t\t\t\tif(screenPixelRadius < pointcloud.minimumNodePixelSize){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\r\n\t\t\t\tweight = screenPixelRadius;\r\n\r\n\t\t\t\tif(distance - radius < 0){\r\n\t\t\t\t\tweight = Number.MAX_VALUE;\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// TODO ortho visibility\r\n\t\t\t\tlet bb = child.getBoundingBox();\t\t\t\t\r\n\t\t\t\tlet distance = child.getBoundingSphere().center.distanceTo(camObjPos);\r\n\t\t\t\tlet diagonal = bb.max.clone().sub(bb.min).length();\r\n\t\t\t\t//weight = diagonal / distance;\r\n\r\n\t\t\t\tweight = diagonal;\r\n\t\t\t}\r\n\r\n\t\t\tpriorityQueue.push({pointcloud: element.pointcloud, node: child, parent: node, weight: weight});\r\n\t\t}\r\n\t}// end priority queue loop\r\n\r\n\t{ // update DEM\r\n\t\tlet maxDEMLevel = 4;\r\n\t\tlet candidates = pointclouds\r\n\t\t\t.filter(p => (p.generateDEM && p.dem instanceof Potree.DEM));\r\n\t\tfor (let pointcloud of candidates) {\r\n\t\t\tlet updatingNodes = pointcloud.visibleNodes.filter(n => n.getLevel() <= maxDEMLevel);\r\n\t\t\tpointcloud.dem.update(updatingNodes);\r\n\t\t}\r\n\t}\r\n\r\n\tfor (let i = 0; i < Math.min(Potree.maxNodesLoading, unloadedGeometry.length); i++) {\r\n\t\tunloadedGeometry[i].load();\r\n\t}\r\n\r\n\treturn {\r\n\t\tvisibleNodes: visibleNodes,\r\n\t\tnumVisiblePoints: numVisiblePoints,\r\n\t\tlowestSpacing: lowestSpacing\r\n\t};\r\n};\r\n\r\n","\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {PointCloudTree, PointCloudTreeNode} from \"../PointCloudTree.js\";\r\nimport {PointCloudMaterial} from \"../materials/PointCloudMaterial.js\";\r\nimport {PointSizeType, ClipTask, TreeType} from \"../defines.js\";\r\nimport {Utils} from \"../utils.js\";\r\n\r\n\r\n\r\nexport class PointCloudArena4DNode extends PointCloudTreeNode {\r\n\tconstructor () {\r\n\t\tsuper();\r\n\r\n\t\tthis.left = null;\r\n\t\tthis.right = null;\r\n\t\tthis.sceneNode = null;\r\n\t\tthis.kdtree = null;\r\n\t}\r\n\r\n\tgetNumPoints () {\r\n\t\treturn this.geometryNode.numPoints;\r\n\t}\r\n\r\n\tisLoaded () {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tisTreeNode () {\r\n\t\treturn true;\r\n\t}\r\n\r\n\tisGeometryNode () {\r\n\t\treturn false;\r\n\t}\r\n\r\n\tgetLevel () {\r\n\t\treturn this.geometryNode.level;\r\n\t}\r\n\r\n\tgetBoundingSphere () {\r\n\t\treturn this.geometryNode.boundingSphere;\r\n\t}\r\n\r\n\tgetBoundingBox () {\r\n\t\treturn this.geometryNode.boundingBox;\r\n\t}\r\n\r\n\ttoTreeNode (child) {\r\n\t\tlet geometryNode = null;\r\n\r\n\t\tif (this.left === child) {\r\n\t\t\tgeometryNode = this.left;\r\n\t\t} else if (this.right === child) {\r\n\t\t\tgeometryNode = this.right;\r\n\t\t}\r\n\r\n\t\tif (!geometryNode.loaded) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet node = new PointCloudArena4DNode();\r\n\t\tlet sceneNode = THREE.PointCloud(geometryNode.geometry, this.kdtree.material);\r\n\t\tsceneNode.visible = false;\r\n\r\n\t\tnode.kdtree = this.kdtree;\r\n\t\tnode.geometryNode = geometryNode;\r\n\t\tnode.sceneNode = sceneNode;\r\n\t\tnode.parent = this;\r\n\t\tnode.left = this.geometryNode.left;\r\n\t\tnode.right = this.geometryNode.right;\r\n\t}\r\n\r\n\tgetChildren () {\r\n\t\tlet children = [];\r\n\r\n\t\tif (this.left) {\r\n\t\t\tchildren.push(this.left);\r\n\t\t}\r\n\r\n\t\tif (this.right) {\r\n\t\t\tchildren.push(this.right);\r\n\t\t}\r\n\r\n\t\treturn children;\r\n\t}\r\n};\r\n\r\nexport class PointCloudArena4D extends PointCloudTree{\r\n\tconstructor (geometry) {\r\n\t\tsuper();\r\n\r\n\t\tthis.root = null;\r\n\t\tif (geometry.root) {\r\n\t\t\tthis.root = geometry.root;\r\n\t\t} else {\r\n\t\t\tgeometry.addEventListener('hierarchy_loaded', () => {\r\n\t\t\t\tthis.root = geometry.root;\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.visiblePointsTarget = 2 * 1000 * 1000;\r\n\t\tthis.minimumNodePixelSize = 150;\r\n\r\n\t\tthis.position.sub(geometry.offset);\r\n\t\tthis.updateMatrix();\r\n\r\n\t\tthis.numVisibleNodes = 0;\r\n\t\tthis.numVisiblePoints = 0;\r\n\r\n\t\tthis.boundingBoxNodes = [];\r\n\t\tthis.loadQueue = [];\r\n\t\tthis.visibleNodes = [];\r\n\r\n\t\tthis.pcoGeometry = geometry;\r\n\t\tthis.boundingBox = this.pcoGeometry.boundingBox;\r\n\t\tthis.boundingSphere = this.pcoGeometry.boundingSphere;\r\n\t\tthis.material = new PointCloudMaterial({vertexColors: THREE.VertexColors, size: 0.05, treeType: TreeType.KDTREE});\r\n\t\tthis.material.sizeType = PointSizeType.ATTENUATED;\r\n\t\tthis.material.size = 0.05;\r\n\t\tthis.profileRequests = [];\r\n\t\tthis.name = '';\r\n\t}\r\n\r\n\tgetBoundingBoxWorld () {\r\n\t\tthis.updateMatrixWorld(true);\r\n\t\tlet box = this.boundingBox;\r\n\t\tlet transform = this.matrixWorld;\r\n\t\tlet tBox = Utils.computeTransformedBoundingBox(box, transform);\r\n\r\n\t\treturn tBox;\r\n\t};\r\n\r\n\tsetName (name) {\r\n\t\tif (this.name !== name) {\r\n\t\t\tthis.name = name;\r\n\t\t\tthis.dispatchEvent({type: 'name_changed', name: name, pointcloud: this});\r\n\t\t}\r\n\t}\r\n\r\n\tgetName () {\r\n\t\treturn this.name;\r\n\t}\r\n\r\n\tgetLevel () {\r\n\t\treturn this.level;\r\n\t}\r\n\r\n\ttoTreeNode (geometryNode, parent) {\r\n\t\tlet node = new PointCloudArena4DNode();\r\n\t\tlet sceneNode = new THREE.Points(geometryNode.geometry, this.material);\r\n\r\n\t\tsceneNode.frustumCulled = false;\r\n\t\tsceneNode.onBeforeRender = (_this, scene, camera, geometry, material, group) => {\r\n\t\t\tif (material.program) {\r\n\t\t\t\t_this.getContext().useProgram(material.program.program);\r\n\r\n\t\t\t\tif (material.program.getUniforms().map.level) {\r\n\t\t\t\t\tlet level = geometryNode.getLevel();\r\n\t\t\t\t\tmaterial.uniforms.level.value = level;\r\n\t\t\t\t\tmaterial.program.getUniforms().map.level.setValue(_this.getContext(), level);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.visibleNodeTextureOffsets && material.program.getUniforms().map.vnStart) {\r\n\t\t\t\t\tlet vnStart = this.visibleNodeTextureOffsets.get(node);\r\n\t\t\t\t\tmaterial.uniforms.vnStart.value = vnStart;\r\n\t\t\t\t\tmaterial.program.getUniforms().map.vnStart.setValue(_this.getContext(), vnStart);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (material.program.getUniforms().map.pcIndex) {\r\n\t\t\t\t\tlet i = node.pcIndex ? node.pcIndex : this.visibleNodes.indexOf(node);\r\n\t\t\t\t\tmaterial.uniforms.pcIndex.value = i;\r\n\t\t\t\t\tmaterial.program.getUniforms().map.pcIndex.setValue(_this.getContext(), i);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tnode.geometryNode = geometryNode;\r\n\t\tnode.sceneNode = sceneNode;\r\n\t\tnode.pointcloud = this;\r\n\t\tnode.left = geometryNode.left;\r\n\t\tnode.right = geometryNode.right;\r\n\r\n\t\tif (!parent) {\r\n\t\t\tthis.root = node;\r\n\t\t\tthis.add(sceneNode);\r\n\t\t} else {\r\n\t\t\tparent.sceneNode.add(sceneNode);\r\n\r\n\t\t\tif (parent.left === geometryNode) {\r\n\t\t\t\tparent.left = node;\r\n\t\t\t} else if (parent.right === geometryNode) {\r\n\t\t\t\tparent.right = node;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet disposeListener = function () {\r\n\t\t\tparent.sceneNode.remove(node.sceneNode);\r\n\r\n\t\t\tif (parent.left === node) {\r\n\t\t\t\tparent.left = geometryNode;\r\n\t\t\t} else if (parent.right === node) {\r\n\t\t\t\tparent.right = geometryNode;\r\n\t\t\t}\r\n\t\t};\r\n\t\tgeometryNode.oneTimeDisposeHandlers.push(disposeListener);\r\n\r\n\t\treturn node;\r\n\t}\r\n\r\n\tupdateMaterial (material, visibleNodes, camera, renderer) {\r\n\t\tmaterial.fov = camera.fov * (Math.PI / 180);\r\n\t\tmaterial.screenWidth = renderer.domElement.clientWidth;\r\n\t\tmaterial.screenHeight = renderer.domElement.clientHeight;\r\n\t\tmaterial.spacing = this.pcoGeometry.spacing;\r\n\t\tmaterial.near = camera.near;\r\n\t\tmaterial.far = camera.far;\r\n\r\n\t\t// reduce shader source updates by setting maxLevel slightly higher than actually necessary\r\n\t\tif (this.maxLevel > material.levels) {\r\n\t\t\tmaterial.levels = this.maxLevel + 2;\r\n\t\t}\r\n\r\n\t\t// material.uniforms.octreeSize.value = this.boundingBox.size().x;\r\n\t\tlet bbSize = this.boundingBox.getSize(new THREE.Vector3());\r\n\t\tmaterial.bbSize = [bbSize.x, bbSize.y, bbSize.z];\r\n\t}\r\n\r\n\tupdateVisibleBounds () {\r\n\r\n\t}\r\n\r\n\thideDescendants (object) {\r\n\t\tlet stack = [];\r\n\t\tfor (let i = 0; i < object.children.length; i++) {\r\n\t\t\tlet child = object.children[i];\r\n\t\t\tif (child.visible) {\r\n\t\t\t\tstack.push(child);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twhile (stack.length > 0) {\r\n\t\t\tlet child = stack.shift();\r\n\r\n\t\t\tchild.visible = false;\r\n\t\t\tif (child.boundingBoxNode) {\r\n\t\t\t\tchild.boundingBoxNode.visible = false;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let i = 0; i < child.children.length; i++) {\r\n\t\t\t\tlet childOfChild = child.children[i];\r\n\t\t\t\tif (childOfChild.visible) {\r\n\t\t\t\t\tstack.push(childOfChild);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdateMatrixWorld (force) {\r\n\t\t// node.matrixWorld.multiplyMatrices( node.parent.matrixWorld, node.matrix );\r\n\r\n\t\tif (this.matrixAutoUpdate === true) this.updateMatrix();\r\n\r\n\t\tif (this.matrixWorldNeedsUpdate === true || force === true) {\r\n\t\t\tif (this.parent === undefined) {\r\n\t\t\t\tthis.matrixWorld.copy(this.matrix);\r\n\t\t\t} else {\r\n\t\t\t\tthis.matrixWorld.multiplyMatrices(this.parent.matrixWorld, this.matrix);\r\n\t\t\t}\r\n\r\n\t\t\tthis.matrixWorldNeedsUpdate = false;\r\n\r\n\t\t\tforce = true;\r\n\t\t}\r\n\t}\r\n\r\n\tnodesOnRay (nodes, ray) {\r\n\t\tlet nodesOnRay = [];\r\n\r\n\t\tlet _ray = ray.clone();\r\n\t\tfor (let i = 0; i < nodes.length; i++) {\r\n\t\t\tlet node = nodes[i];\r\n\t\t\tlet sphere = node.getBoundingSphere().clone().applyMatrix4(node.sceneNode.matrixWorld);\r\n\t\t\t// TODO Unused: let box = node.getBoundingBox().clone().applyMatrix4(node.sceneNode.matrixWorld);\r\n\r\n\t\t\tif (_ray.intersectsSphere(sphere)) {\r\n\t\t\t\tnodesOnRay.push(node);\r\n\t\t\t}\r\n\t\t\t// if(_ray.isIntersectionBox(box)){\r\n\t\t\t//\tnodesOnRay.push(node);\r\n\t\t\t// }\r\n\t\t}\r\n\r\n\t\treturn nodesOnRay;\r\n\t}\r\n\r\n\tpick(viewer, camera, ray, params = {}){\r\n\r\n\t\tlet renderer = viewer.renderer;\r\n\t\tlet pRenderer = viewer.pRenderer;\r\n\r\n\t\tperformance.mark(\"pick-start\");\r\n\r\n\t\tlet getVal = (a, b) => a !== undefined ? a : b;\r\n\r\n\t\tlet pickWindowSize = getVal(params.pickWindowSize, 17);\r\n\t\tlet pickOutsideClipRegion = getVal(params.pickOutsideClipRegion, false);\r\n\r\n\t\tlet size = renderer.getSize(new THREE.Vector2());\r\n\r\n\t\tlet width = Math.ceil(getVal(params.width, size.width));\r\n\t\tlet height = Math.ceil(getVal(params.height, size.height));\r\n\r\n\t\tlet pointSizeType = getVal(params.pointSizeType, this.material.pointSizeType);\r\n\t\tlet pointSize = getVal(params.pointSize, this.material.size);\r\n\r\n\t\tlet nodes = this.nodesOnRay(this.visibleNodes, ray);\r\n\r\n\t\tif (nodes.length === 0) {\r\n\t\t\treturn null;\r\n\t\t}\r\n\r\n\t\tif (!this.pickState) {\r\n\t\t\tlet scene = new THREE.Scene();\r\n\r\n\t\t\tlet material = new PointCloudMaterial();\r\n\t\t\tmaterial.activeAttributeName = \"indices\";\r\n\r\n\t\t\tlet renderTarget = new THREE.WebGLRenderTarget(\r\n\t\t\t\t1, 1,\r\n\t\t\t\t{ minFilter: THREE.LinearFilter,\r\n\t\t\t\t\tmagFilter: THREE.NearestFilter,\r\n\t\t\t\t\tformat: THREE.RGBAFormat }\r\n\t\t\t);\r\n\r\n\t\t\tthis.pickState = {\r\n\t\t\t\trenderTarget: renderTarget,\r\n\t\t\t\tmaterial: material,\r\n\t\t\t\tscene: scene\r\n\t\t\t};\r\n\t\t};\r\n\r\n\t\tlet pickState = this.pickState;\r\n\t\tlet pickMaterial = pickState.material;\r\n\r\n\t\t{ // update pick material\r\n\t\t\tpickMaterial.pointSizeType = pointSizeType;\r\n\t\t\tpickMaterial.shape = this.material.shape;\r\n\r\n\t\t\tpickMaterial.size = pointSize;\r\n\t\t\tpickMaterial.uniforms.minSize.value = this.material.uniforms.minSize.value;\r\n\t\t\tpickMaterial.uniforms.maxSize.value = this.material.uniforms.maxSize.value;\r\n\t\t\tpickMaterial.classification = this.material.classification;\r\n\t\t\tif(params.pickClipped){\r\n\t\t\t\tpickMaterial.clipBoxes = this.material.clipBoxes;\r\n\t\t\t\tif(this.material.clipTask === ClipTask.HIGHLIGHT){\r\n\t\t\t\t\tpickMaterial.clipTask = ClipTask.NONE;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpickMaterial.clipTask = this.material.clipTask;\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tpickMaterial.clipBoxes = [];\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.updateMaterial(pickMaterial, nodes, camera, renderer);\r\n\t\t}\r\n\r\n\t\tpickState.renderTarget.setSize(width, height);\r\n\r\n\t\tlet pixelPos = new THREE.Vector2(params.x, params.y);\r\n\t\t\r\n\t\tlet gl = renderer.getContext();\r\n\t\tgl.enable(gl.SCISSOR_TEST);\r\n\t\tgl.scissor(\r\n\t\t\tparseInt(pixelPos.x - (pickWindowSize - 1) / 2),\r\n\t\t\tparseInt(pixelPos.y - (pickWindowSize - 1) / 2),\r\n\t\t\tparseInt(pickWindowSize), parseInt(pickWindowSize));\r\n\r\n\r\n\t\trenderer.state.buffers.depth.setTest(pickMaterial.depthTest);\r\n\t\trenderer.state.buffers.depth.setMask(pickMaterial.depthWrite);\r\n\t\trenderer.state.setBlending(THREE.NoBlending);\r\n\r\n\t\trenderer.clearTarget(pickState.renderTarget, true, true, true);\r\n\r\n\t\t{ // RENDER\r\n\t\t\trenderer.setRenderTarget(pickState.renderTarget);\r\n\t\t\tgl.clearColor(0, 0, 0, 0);\r\n\t\t\trenderer.clearTarget( pickState.renderTarget, true, true, true );\r\n\t\t\t\r\n\t\t\tlet tmp = this.material;\r\n\t\t\tthis.material = pickMaterial;\r\n\t\t\t\r\n\t\t\tpRenderer.renderOctree(this, nodes, camera, pickState.renderTarget);\r\n\t\t\t\r\n\t\t\tthis.material = tmp;\r\n\t\t}\r\n\r\n\t\tlet clamp = (number, min, max) => Math.min(Math.max(min, number), max);\r\n\r\n\t\tlet x = parseInt(clamp(pixelPos.x - (pickWindowSize - 1) / 2, 0, width));\r\n\t\tlet y = parseInt(clamp(pixelPos.y - (pickWindowSize - 1) / 2, 0, height));\r\n\t\tlet w = parseInt(Math.min(x + pickWindowSize, width) - x);\r\n\t\tlet h = parseInt(Math.min(y + pickWindowSize, height) - y);\r\n\r\n\t\tlet pixelCount = w * h;\r\n\t\tlet buffer = new Uint8Array(4 * pixelCount);\r\n\t\t\r\n\t\tgl.readPixels(x, y, pickWindowSize, pickWindowSize, gl.RGBA, gl.UNSIGNED_BYTE, buffer); \r\n\t\t\r\n\t\trenderer.setRenderTarget(null);\r\n\t\trenderer.state.reset();\r\n\t\trenderer.setScissorTest(false);\r\n\t\tgl.disable(gl.SCISSOR_TEST);\r\n\t\t\r\n\t\tlet pixels = buffer;\r\n\t\tlet ibuffer = new Uint32Array(buffer.buffer);\r\n\r\n\t\t// find closest hit inside pixelWindow boundaries\r\n\t\tlet min = Number.MAX_VALUE;\r\n\t\tlet hits = [];\r\n\t\tfor (let u = 0; u < pickWindowSize; u++) {\r\n\t\t\tfor (let v = 0; v < pickWindowSize; v++) {\r\n\t\t\t\tlet offset = (u + v * pickWindowSize);\r\n\t\t\t\tlet distance = Math.pow(u - (pickWindowSize - 1) / 2, 2) + Math.pow(v - (pickWindowSize - 1) / 2, 2);\r\n\r\n\t\t\t\tlet pcIndex = pixels[4 * offset + 3];\r\n\t\t\t\tpixels[4 * offset + 3] = 0;\r\n\t\t\t\tlet pIndex = ibuffer[offset];\r\n\r\n\t\t\t\tif(!(pcIndex === 0 && pIndex === 0) && (pcIndex !== undefined) && (pIndex !== undefined)){\r\n\t\t\t\t\tlet hit = {\r\n\t\t\t\t\t\tpIndex: pIndex,\r\n\t\t\t\t\t\tpcIndex: pcIndex,\r\n\t\t\t\t\t\tdistanceToCenter: distance\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tif(params.all){\r\n\t\t\t\t\t\thits.push(hit);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tif(hits.length > 0){\r\n\t\t\t\t\t\t\tif(distance < hits[0].distanceToCenter){\r\n\t\t\t\t\t\t\t\thits[0] = hit;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}else{\r\n\t\t\t\t\t\t\thits.push(hit);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\r\n\t\tfor(let hit of hits){\r\n\t\t\tlet point = {};\r\n\t\t\r\n\t\t\tif (!nodes[hit.pcIndex]) {\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\t\t\r\n\t\t\tlet node = nodes[hit.pcIndex];\r\n\t\t\tlet pc = node.sceneNode;\r\n\t\t\tlet geometry = node.geometryNode.geometry;\r\n\t\t\t\r\n\t\t\tfor(let attributeName in geometry.attributes){\r\n\t\t\t\tlet attribute = geometry.attributes[attributeName];\r\n\t\t\r\n\t\t\t\tif (attributeName === 'position') {\r\n\t\t\t\t\tlet x = attribute.array[3 * hit.pIndex + 0];\r\n\t\t\t\t\tlet y = attribute.array[3 * hit.pIndex + 1];\r\n\t\t\t\t\tlet z = attribute.array[3 * hit.pIndex + 2];\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet position = new THREE.Vector3(x, y, z);\r\n\t\t\t\t\tposition.applyMatrix4(pc.matrixWorld);\r\n\t\t\r\n\t\t\t\t\tpoint[attributeName] = position;\r\n\t\t\t\t} else if (attributeName === 'indices') {\r\n\t\t\r\n\t\t\t\t} else {\r\n\t\t\t\t\t//if (values.itemSize === 1) {\r\n\t\t\t\t\t//\tpoint[attribute.name] = values.array[hit.pIndex];\r\n\t\t\t\t\t//} else {\r\n\t\t\t\t\t//\tlet value = [];\r\n\t\t\t\t\t//\tfor (let j = 0; j < values.itemSize; j++) {\r\n\t\t\t\t\t//\t\tvalue.push(values.array[values.itemSize * hit.pIndex + j]);\r\n\t\t\t\t\t//\t}\r\n\t\t\t\t\t//\tpoint[attribute.name] = value;\r\n\t\t\t\t\t//}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}\r\n\r\n\t\t\thit.point = point;\r\n\t\t}\r\n\r\n\t\tperformance.mark(\"pick-end\");\r\n\t\tperformance.measure(\"pick\", \"pick-start\", \"pick-end\");\r\n\r\n\t\tif(params.all){\r\n\t\t\treturn hits.map(hit => hit.point);\r\n\t\t}else{\r\n\t\t\tif(hits.length === 0){\r\n\t\t\t\treturn null;\r\n\t\t\t}else{\r\n\t\t\t\treturn hits[0].point;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tcomputeVisibilityTextureData(nodes){\r\n\r\n\t\tif(exports.measureTimings) performance.mark(\"computeVisibilityTextureData-start\");\r\n\r\n\t\tlet data = new Uint8Array(nodes.length * 3);\r\n\t\tlet visibleNodeTextureOffsets = new Map();\r\n\r\n\t\t// copy array\r\n\t\tnodes = nodes.slice();\r\n\r\n\t\t// sort by level and number\r\n\t\tlet sort = function (a, b) {\r\n\t\t\tlet la = a.geometryNode.level;\r\n\t\t\tlet lb = b.geometryNode.level;\r\n\t\t\tlet na = a.geometryNode.number;\r\n\t\t\tlet nb = b.geometryNode.number;\r\n\t\t\tif (la !== lb) return la - lb;\r\n\t\t\tif (na < nb) return -1;\r\n\t\t\tif (na > nb) return 1;\r\n\t\t\treturn 0;\r\n\t\t};\r\n\t\tnodes.sort(sort);\r\n\r\n\t\tlet visibleNodeNames = [];\r\n\t\tfor (let i = 0; i < nodes.length; i++) {\r\n\t\t\tvisibleNodeNames.push(nodes[i].geometryNode.number);\r\n\t\t}\r\n\r\n\t\tfor (let i = 0; i < nodes.length; i++) {\r\n\t\t\tlet node = nodes[i];\r\n\r\n\t\t\tvisibleNodeTextureOffsets.set(node, i);\r\n\r\n\t\t\tlet b1 = 0;\t// children\r\n\t\t\tlet b2 = 0;\t// offset to first child\r\n\t\t\tlet b3 = 0;\t// split\r\n\r\n\t\t\tif (node.geometryNode.left && visibleNodeNames.indexOf(node.geometryNode.left.number) > 0) {\r\n\t\t\t\tb1 += 1;\r\n\t\t\t\tb2 = visibleNodeNames.indexOf(node.geometryNode.left.number) - i;\r\n\t\t\t}\r\n\t\t\tif (node.geometryNode.right && visibleNodeNames.indexOf(node.geometryNode.right.number) > 0) {\r\n\t\t\t\tb1 += 2;\r\n\t\t\t\tb2 = (b2 === 0) ? visibleNodeNames.indexOf(node.geometryNode.right.number) - i : b2;\r\n\t\t\t}\r\n\r\n\t\t\tif (node.geometryNode.split === 'X') {\r\n\t\t\t\tb3 = 1;\r\n\t\t\t} else if (node.geometryNode.split === 'Y') {\r\n\t\t\t\tb3 = 2;\r\n\t\t\t} else if (node.geometryNode.split === 'Z') {\r\n\t\t\t\tb3 = 4;\r\n\t\t\t}\r\n\r\n\t\t\tdata[i * 3 + 0] = b1;\r\n\t\t\tdata[i * 3 + 1] = b2;\r\n\t\t\tdata[i * 3 + 2] = b3;\r\n\t\t}\r\n\r\n\t\tif(exports.measureTimings){\r\n\t\t\tperformance.mark(\"computeVisibilityTextureData-end\");\r\n\t\t\tperformance.measure(\"render.computeVisibilityTextureData\", \"computeVisibilityTextureData-start\", \"computeVisibilityTextureData-end\");\r\n\t\t}\r\n\r\n\t\treturn {\r\n\t\t\tdata: data,\r\n\t\t\toffsets: visibleNodeTextureOffsets\r\n\t\t};\r\n\t}\r\n\r\n\tget progress () {\r\n\t\tif (this.pcoGeometry.root) {\r\n\t\t\treturn exports.numNodesLoading > 0 ? 0 : 1;\r\n\t\t} else {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t}\r\n};\r\n","\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\nimport {PointCloudTree} from \"./PointCloudTree.js\";\r\nimport {PointCloudOctreeNode} from \"./PointCloudOctree.js\";\r\nimport {PointCloudArena4DNode} from \"./arena4d/PointCloudArena4D.js\";\r\nimport {PointSizeType, ClipTask, ElevationGradientRepeat} from \"./defines.js\";\r\n\r\n// Copied from three.js: WebGLRenderer.js\r\nfunction paramThreeToGL(_gl, p) {\r\n\r\n\tlet extension;\r\n\r\n\tif (p === THREE.RepeatWrapping) return _gl.REPEAT;\r\n\tif (p === THREE.ClampToEdgeWrapping) return _gl.CLAMP_TO_EDGE;\r\n\tif (p === THREE.MirroredRepeatWrapping) return _gl.MIRRORED_REPEAT;\r\n\r\n\tif (p === THREE.NearestFilter) return _gl.NEAREST;\r\n\tif (p === THREE.NearestMipMapNearestFilter) return _gl.NEAREST_MIPMAP_NEAREST;\r\n\tif (p === THREE.NearestMipMapLinearFilter) return _gl.NEAREST_MIPMAP_LINEAR;\r\n\r\n\tif (p === THREE.LinearFilter) return _gl.LINEAR;\r\n\tif (p === THREE.LinearMipMapNearestFilter) return _gl.LINEAR_MIPMAP_NEAREST;\r\n\tif (p === THREE.LinearMipMapLinearFilter) return _gl.LINEAR_MIPMAP_LINEAR;\r\n\r\n\tif (p === THREE.UnsignedByteType) return _gl.UNSIGNED_BYTE;\r\n\tif (p === THREE.UnsignedShort4444Type) return _gl.UNSIGNED_SHORT_4_4_4_4;\r\n\tif (p === THREE.UnsignedShort5551Type) return _gl.UNSIGNED_SHORT_5_5_5_1;\r\n\tif (p === THREE.UnsignedShort565Type) return _gl.UNSIGNED_SHORT_5_6_5;\r\n\r\n\tif (p === THREE.ByteType) return _gl.BYTE;\r\n\tif (p === THREE.ShortType) return _gl.SHORT;\r\n\tif (p === THREE.UnsignedShortType) return _gl.UNSIGNED_SHORT;\r\n\tif (p === THREE.IntType) return _gl.INT;\r\n\tif (p === THREE.UnsignedIntType) return _gl.UNSIGNED_INT;\r\n\tif (p === THREE.FloatType) return _gl.FLOAT;\r\n\r\n\tif (p === THREE.HalfFloatType) {\r\n\r\n\t\textension = extensions.get('OES_texture_half_float');\r\n\r\n\t\tif (extension !== null) return extension.HALF_FLOAT_OES;\r\n\r\n\t}\r\n\r\n\tif (p === THREE.AlphaFormat) return _gl.ALPHA;\r\n\tif (p === THREE.RGBFormat) return _gl.RGB;\r\n\tif (p === THREE.RGBAFormat) return _gl.RGBA;\r\n\tif (p === THREE.LuminanceFormat) return _gl.LUMINANCE;\r\n\tif (p === THREE.LuminanceAlphaFormat) return _gl.LUMINANCE_ALPHA;\r\n\tif (p === THREE.DepthFormat) return _gl.DEPTH_COMPONENT;\r\n\tif (p === THREE.DepthStencilFormat) return _gl.DEPTH_STENCIL;\r\n\r\n\tif (p === THREE.AddEquation) return _gl.FUNC_ADD;\r\n\tif (p === THREE.SubtractEquation) return _gl.FUNC_SUBTRACT;\r\n\tif (p === THREE.ReverseSubtractEquation) return _gl.FUNC_REVERSE_SUBTRACT;\r\n\r\n\tif (p === THREE.ZeroFactor) return _gl.ZERO;\r\n\tif (p === THREE.OneFactor) return _gl.ONE;\r\n\tif (p === THREE.SrcColorFactor) return _gl.SRC_COLOR;\r\n\tif (p === THREE.OneMinusSrcColorFactor) return _gl.ONE_MINUS_SRC_COLOR;\r\n\tif (p === THREE.SrcAlphaFactor) return _gl.SRC_ALPHA;\r\n\tif (p === THREE.OneMinusSrcAlphaFactor) return _gl.ONE_MINUS_SRC_ALPHA;\r\n\tif (p === THREE.DstAlphaFactor) return _gl.DST_ALPHA;\r\n\tif (p === THREE.OneMinusDstAlphaFactor) return _gl.ONE_MINUS_DST_ALPHA;\r\n\r\n\tif (p === THREE.DstColorFactor) return _gl.DST_COLOR;\r\n\tif (p === THREE.OneMinusDstColorFactor) return _gl.ONE_MINUS_DST_COLOR;\r\n\tif (p === THREE.SrcAlphaSaturateFactor) return _gl.SRC_ALPHA_SATURATE;\r\n\r\n\tif (p === THREE.RGB_S3TC_DXT1_Format || p === RGBA_S3TC_DXT1_Format ||\r\n\t\tp === THREE.RGBA_S3TC_DXT3_Format || p === RGBA_S3TC_DXT5_Format) {\r\n\r\n\t\textension = extensions.get('WEBGL_compressed_texture_s3tc');\r\n\r\n\t\tif (extension !== null) {\r\n\r\n\t\t\tif (p === THREE.RGB_S3TC_DXT1_Format) return extension.COMPRESSED_RGB_S3TC_DXT1_EXT;\r\n\t\t\tif (p === THREE.RGBA_S3TC_DXT1_Format) return extension.COMPRESSED_RGBA_S3TC_DXT1_EXT;\r\n\t\t\tif (p === THREE.RGBA_S3TC_DXT3_Format) return extension.COMPRESSED_RGBA_S3TC_DXT3_EXT;\r\n\t\t\tif (p === THREE.RGBA_S3TC_DXT5_Format) return extension.COMPRESSED_RGBA_S3TC_DXT5_EXT;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tif (p === THREE.RGB_PVRTC_4BPPV1_Format || p === THREE.RGB_PVRTC_2BPPV1_Format ||\r\n\t\tp === THREE.RGBA_PVRTC_4BPPV1_Format || p === THREE.RGBA_PVRTC_2BPPV1_Format) {\r\n\r\n\t\textension = extensions.get('WEBGL_compressed_texture_pvrtc');\r\n\r\n\t\tif (extension !== null) {\r\n\r\n\t\t\tif (p === THREE.RGB_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_4BPPV1_IMG;\r\n\t\t\tif (p === THREE.RGB_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGB_PVRTC_2BPPV1_IMG;\r\n\t\t\tif (p === THREE.RGBA_PVRTC_4BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_4BPPV1_IMG;\r\n\t\t\tif (p === THREE.RGBA_PVRTC_2BPPV1_Format) return extension.COMPRESSED_RGBA_PVRTC_2BPPV1_IMG;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tif (p === THREE.RGB_ETC1_Format) {\r\n\r\n\t\textension = extensions.get('WEBGL_compressed_texture_etc1');\r\n\r\n\t\tif (extension !== null) return extension.COMPRESSED_RGB_ETC1_WEBGL;\r\n\r\n\t}\r\n\r\n\tif (p === THREE.MinEquation || p === THREE.MaxEquation) {\r\n\r\n\t\textension = extensions.get('EXT_blend_minmax');\r\n\r\n\t\tif (extension !== null) {\r\n\r\n\t\t\tif (p === THREE.MinEquation) return extension.MIN_EXT;\r\n\t\t\tif (p === THREE.MaxEquation) return extension.MAX_EXT;\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tif (p === UnsignedInt248Type) {\r\n\r\n\t\textension = extensions.get('WEBGL_depth_texture');\r\n\r\n\t\tif (extension !== null) return extension.UNSIGNED_INT_24_8_WEBGL;\r\n\r\n\t}\r\n\r\n\treturn 0;\r\n\r\n};\r\n\r\nlet attributeLocations = {\r\n\t\"position\": {name: \"position\", location: 0},\r\n\t\"color\": {name: \"color\", location: 1},\r\n\t\"rgba\": {name: \"color\", location: 1},\r\n\t\"intensity\": {name: \"intensity\", location: 2},\r\n\t\"classification\": {name: \"classification\", location: 3},\r\n\t\"returnNumber\": {name: \"returnNumber\", location: 4},\r\n\t\"return number\": {name: \"returnNumber\", location: 4},\r\n\t\"returns\": {name: \"returnNumber\", location: 4},\r\n\t\"numberOfReturns\": {name: \"numberOfReturns\", location: 5},\r\n\t\"number of returns\": {name: \"numberOfReturns\", location: 5},\r\n\t\"pointSourceID\": {name: \"pointSourceID\", location: 6},\r\n\t\"source id\": {name: \"pointSourceID\", location: 6},\r\n\t\"point source id\": {name: \"pointSourceID\", location: 6},\r\n\t\"indices\": {name: \"indices\", location: 7},\r\n\t\"normal\": {name: \"normal\", location: 8},\r\n\t\"spacing\": {name: \"spacing\", location: 9},\r\n\t\"gps-time\": {name: \"gpsTime\", location: 10},\r\n\t\"aExtra\": {name: \"aExtra\", location: 11},\r\n};\r\n\r\nclass Shader {\r\n\r\n\tconstructor(gl, name, vsSource, fsSource) {\r\n\t\tthis.gl = gl;\r\n\t\tthis.name = name;\r\n\t\tthis.vsSource = vsSource;\r\n\t\tthis.fsSource = fsSource;\r\n\r\n\t\tthis.cache = new Map();\r\n\r\n\t\tthis.vs = null;\r\n\t\tthis.fs = null;\r\n\t\tthis.program = null;\r\n\r\n\t\tthis.uniformLocations = {};\r\n\t\tthis.attributeLocations = {};\r\n\t\tthis.uniformBlockIndices = {};\r\n\t\tthis.uniformBlocks = {};\r\n\t\tthis.uniforms = {};\r\n\r\n\t\tthis.update(vsSource, fsSource);\r\n\t}\r\n\r\n\tupdate(vsSource, fsSource) {\r\n\t\tthis.vsSource = vsSource;\r\n\t\tthis.fsSource = fsSource;\r\n\r\n\t\tthis.linkProgram();\r\n\t}\r\n\r\n\tcompileShader(shader, source){\r\n\t\tlet gl = this.gl;\r\n\r\n\t\tgl.shaderSource(shader, source);\r\n\r\n\t\tgl.compileShader(shader);\r\n\r\n\t\tlet success = gl.getShaderParameter(shader, gl.COMPILE_STATUS);\r\n\t\tif (!success) {\r\n\t\t\tlet info = gl.getShaderInfoLog(shader);\r\n\t\t\tlet numberedSource = source.split(\"\\n\").map((a, i) => `${i + 1}`.padEnd(5) + a).join(\"\\n\");\r\n\t\t\tthrow `could not compile shader ${this.name}: ${info}, \\n${numberedSource}`;\r\n\t\t}\r\n\t}\r\n\r\n\tlinkProgram() {\r\n\r\n\t\tconst tStart = performance.now();\r\n\r\n\t\tlet gl = this.gl;\r\n\r\n\t\tthis.uniformLocations = {};\r\n\t\tthis.attributeLocations = {};\r\n\t\tthis.uniforms = {};\r\n\r\n\t\tgl.useProgram(null);\r\n\r\n\t\tlet cached = this.cache.get(`${this.vsSource}, ${this.fsSource}`);\r\n\t\tif (cached) {\r\n\t\t\tthis.program = cached.program;\r\n\t\t\tthis.vs = cached.vs;\r\n\t\t\tthis.fs = cached.fs;\r\n\t\t\tthis.attributeLocations = cached.attributeLocations;\r\n\t\t\tthis.uniformLocations = cached.uniformLocations;\r\n\t\t\tthis.uniformBlocks = cached.uniformBlocks;\r\n\t\t\tthis.uniforms = cached.uniforms;\r\n\r\n\t\t\treturn;\r\n\t\t} else {\r\n\r\n\t\t\tthis.vs = gl.createShader(gl.VERTEX_SHADER);\r\n\t\t\tthis.fs = gl.createShader(gl.FRAGMENT_SHADER);\r\n\t\t\tthis.program = gl.createProgram();\r\n\r\n\t\t\tfor(let name of Object.keys(attributeLocations)){\r\n\t\t\t\tlet location = attributeLocations[name].location;\r\n\t\t\t\tlet glslName = attributeLocations[name].name;\r\n\t\t\t\tgl.bindAttribLocation(this.program, location, glslName);\r\n\t\t\t}\r\n\r\n\t\t\tthis.compileShader(this.vs, this.vsSource);\r\n\t\t\tthis.compileShader(this.fs, this.fsSource);\r\n\r\n\t\t\tlet program = this.program;\r\n\r\n\t\t\tgl.attachShader(program, this.vs);\r\n\t\t\tgl.attachShader(program, this.fs);\r\n\r\n\t\t\tgl.linkProgram(program);\r\n\r\n\t\t\tgl.detachShader(program, this.vs);\r\n\t\t\tgl.detachShader(program, this.fs);\r\n\r\n\t\t\tlet success = gl.getProgramParameter(program, gl.LINK_STATUS);\r\n\t\t\tif (!success) {\r\n\t\t\t\tlet info = gl.getProgramInfoLog(program);\r\n\t\t\t\tthrow `could not link program ${this.name}: ${info}`;\r\n\t\t\t}\r\n\r\n\t\t\t{ // attribute locations\r\n\t\t\t\tlet numAttributes = gl.getProgramParameter(program, gl.ACTIVE_ATTRIBUTES);\r\n\r\n\t\t\t\tfor (let i = 0; i < numAttributes; i++) {\r\n\t\t\t\t\tlet attribute = gl.getActiveAttrib(program, i);\r\n\r\n\t\t\t\t\tlet location = gl.getAttribLocation(program, attribute.name);\r\n\r\n\t\t\t\t\tthis.attributeLocations[attribute.name] = location;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t{ // uniform locations\r\n\t\t\t\tlet numUniforms = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\r\n\r\n\t\t\t\tfor (let i = 0; i < numUniforms; i++) {\r\n\t\t\t\t\tlet uniform = gl.getActiveUniform(program, i);\r\n\r\n\t\t\t\t\tlet location = gl.getUniformLocation(program, uniform.name);\r\n\r\n\t\t\t\t\tthis.uniformLocations[uniform.name] = location;\r\n\t\t\t\t\tthis.uniforms[uniform.name] = {\r\n\t\t\t\t\t\tlocation: location,\r\n\t\t\t\t\t\tvalue: null,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// uniform blocks\r\n\t\t\tif(gl instanceof WebGL2RenderingContext){ \r\n\t\t\t\tlet numBlocks = gl.getProgramParameter(program, gl.ACTIVE_UNIFORM_BLOCKS);\r\n\r\n\t\t\t\tfor (let i = 0; i < numBlocks; i++) {\r\n\t\t\t\t\tlet blockName = gl.getActiveUniformBlockName(program, i);\r\n\r\n\t\t\t\t\tlet blockIndex = gl.getUniformBlockIndex(program, blockName);\r\n\r\n\t\t\t\t\tthis.uniformBlockIndices[blockName] = blockIndex;\r\n\r\n\t\t\t\t\tgl.uniformBlockBinding(program, blockIndex, blockIndex);\r\n\t\t\t\t\tlet dataSize = gl.getActiveUniformBlockParameter(program, blockIndex, gl.UNIFORM_BLOCK_DATA_SIZE);\r\n\r\n\t\t\t\t\tlet uBuffer = gl.createBuffer();\t\r\n\t\t\t\t\tgl.bindBuffer(gl.UNIFORM_BUFFER, uBuffer);\r\n\t\t\t\t\tgl.bufferData(gl.UNIFORM_BUFFER, dataSize, gl.DYNAMIC_READ);\r\n\r\n\t\t\t\t\tgl.bindBufferBase(gl.UNIFORM_BUFFER, blockIndex, uBuffer);\r\n\r\n\t\t\t\t\tgl.bindBuffer(gl.UNIFORM_BUFFER, null);\r\n\r\n\t\t\t\t\tthis.uniformBlocks[blockName] = {\r\n\t\t\t\t\t\tname: blockName,\r\n\t\t\t\t\t\tindex: blockIndex,\r\n\t\t\t\t\t\tdataSize: dataSize,\r\n\t\t\t\t\t\tbuffer: uBuffer\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet cached = {\r\n\t\t\t\tprogram: this.program,\r\n\t\t\t\tvs: this.vs,\r\n\t\t\t\tfs: this.fs,\r\n\t\t\t\tattributeLocations: this.attributeLocations,\r\n\t\t\t\tuniformLocations: this.uniformLocations,\r\n\t\t\t\tuniforms: this.uniforms,\r\n\t\t\t\tuniformBlocks: this.uniformBlocks,\r\n\t\t\t};\r\n\r\n\t\t\tthis.cache.set(`${this.vsSource}, ${this.fsSource}`, cached);\r\n\t\t}\r\n\r\n\t\tconst tEnd = performance.now();\r\n\t\tconst duration = tEnd - tStart;\r\n\r\n\t\tconsole.log(`shader compile duration: ${duration.toFixed(3)}`);\r\n\r\n\r\n\t}\r\n\r\n\tsetUniformMatrix4(name, value) {\r\n\t\tconst gl = this.gl;\r\n\t\tconst location = this.uniformLocations[name];\r\n\r\n\t\tif (location == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet tmp = new Float32Array(value.elements);\r\n\t\tgl.uniformMatrix4fv(location, false, tmp);\r\n\t}\r\n\r\n\tsetUniform1f(name, value) {\r\n\t\tconst gl = this.gl;\r\n\t\tconst uniform = this.uniforms[name];\r\n\r\n\t\tif (uniform === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(uniform.value === value){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tuniform.value = value;\r\n\r\n\t\tgl.uniform1f(uniform.location, value);\r\n\t}\r\n\r\n\tsetUniformBoolean(name, value) {\r\n\t\tconst gl = this.gl;\r\n\t\tconst uniform = this.uniforms[name];\r\n\r\n\t\tif (uniform === undefined) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(uniform.value === value){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tuniform.value = value;\r\n\r\n\t\tgl.uniform1i(uniform.location, value);\r\n\t}\r\n\r\n\tsetUniformTexture(name, value) {\r\n\t\tconst gl = this.gl;\r\n\t\tconst location = this.uniformLocations[name];\r\n\r\n\t\tif (location == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tgl.uniform1i(location, value);\r\n\t}\r\n\r\n\tsetUniform2f(name, value) {\r\n\t\tconst gl = this.gl;\r\n\t\tconst location = this.uniformLocations[name];\r\n\r\n\t\tif (location == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tgl.uniform2f(location, value[0], value[1]);\r\n\t}\r\n\r\n\tsetUniform3f(name, value) {\r\n\t\tconst gl = this.gl;\r\n\t\tconst location = this.uniformLocations[name];\r\n\r\n\t\tif (location == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tgl.uniform3f(location, value[0], value[1], value[2]);\r\n\t}\r\n\r\n\tsetUniform(name, value) {\r\n\r\n\t\tif (value.constructor === THREE.Matrix4) {\r\n\t\t\tthis.setUniformMatrix4(name, value);\r\n\t\t} else if (typeof value === \"number\") {\r\n\t\t\tthis.setUniform1f(name, value);\r\n\t\t} else if (typeof value === \"boolean\") {\r\n\t\t\tthis.setUniformBoolean(name, value);\r\n\t\t} else if (value instanceof WebGLTexture) {\r\n\t\t\tthis.setUniformTexture(name, value);\r\n\t\t} else if (value instanceof Array) {\r\n\r\n\t\t\tif (value.length === 2) {\r\n\t\t\t\tthis.setUniform2f(name, value);\r\n\t\t\t} else if (value.length === 3) {\r\n\t\t\t\tthis.setUniform3f(name, value);\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\t\t\tconsole.error(\"unhandled uniform type: \", name, value);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\tsetUniform1i(name, value) {\r\n\t\tlet gl = this.gl;\r\n\t\tlet location = this.uniformLocations[name];\r\n\r\n\t\tif (location == null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tgl.uniform1i(location, value);\r\n\t}\r\n\r\n};\r\n\r\nclass WebGLTexture {\r\n\r\n\tconstructor(gl, texture) {\r\n\t\tthis.gl = gl;\r\n\r\n\t\tthis.texture = texture;\r\n\t\tthis.id = gl.createTexture();\r\n\r\n\t\tthis.target = gl.TEXTURE_2D;\r\n\t\tthis.version = -1;\r\n\r\n\t\tthis.update(texture);\r\n\t}\r\n\r\n\tupdate() {\r\n\r\n\t\tif (!this.texture.image) {\r\n\t\t\tthis.version = this.texture.version;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet gl = this.gl;\r\n\t\tlet texture = this.texture;\r\n\r\n\t\tif (this.version === texture.version) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.target = gl.TEXTURE_2D;\r\n\r\n\t\tgl.bindTexture(this.target, this.id);\r\n\r\n\t\tlet level = 0;\r\n\t\tlet internalFormat = paramThreeToGL(gl, texture.format);\r\n\t\tlet width = texture.image.width;\r\n\t\tlet height = texture.image.height;\r\n\t\tlet border = 0;\r\n\t\tlet srcFormat = internalFormat;\r\n\t\tlet srcType = paramThreeToGL(gl, texture.type);\r\n\t\tlet data;\r\n\r\n\t\tgl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, texture.flipY);\r\n\t\tgl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, texture.premultiplyAlpha);\r\n\t\tgl.pixelStorei(gl.UNPACK_ALIGNMENT, texture.unpackAlignment);\r\n\r\n\t\tif (texture instanceof THREE.DataTexture) {\r\n\t\t\tdata = texture.image.data;\r\n\r\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n\r\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter));\r\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter));\r\n\r\n\t\t\tgl.texImage2D(this.target, level, internalFormat,\r\n\t\t\t\twidth, height, border, srcFormat, srcType,\r\n\t\t\t\tdata);\r\n\t\t} else if ((texture instanceof THREE.CanvasTexture) || (texture instanceof THREE.Texture)) {\r\n\t\t\tdata = texture.image;\r\n\r\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_S, paramThreeToGL(gl, texture.wrapS));\r\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_WRAP_T, paramThreeToGL(gl, texture.wrapT));\r\n\r\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MAG_FILTER, paramThreeToGL(gl, texture.magFilter));\r\n\t\t\tgl.texParameteri(this.target, gl.TEXTURE_MIN_FILTER, paramThreeToGL(gl, texture.minFilter));\r\n\r\n\t\t\tgl.texImage2D(this.target, level, internalFormat,\r\n\t\t\t\tinternalFormat, srcType, data);\r\n\r\n\t\t\tif (texture instanceof THREE.Texture) {gl.generateMipmap(gl.TEXTURE_2D);}\r\n\t\t}\r\n\r\n\t\tgl.bindTexture(this.target, null);\r\n\r\n\t\tthis.version = texture.version;\r\n\t}\r\n\r\n};\r\n\r\nclass WebGLBuffer {\r\n\r\n\tconstructor() {\r\n\t\tthis.numElements = 0;\r\n\t\tthis.vao = null;\r\n\t\tthis.vbos = new Map();\r\n\t}\r\n\r\n};\r\n\r\nexport class Renderer {\r\n\r\n\tconstructor(threeRenderer) {\r\n\t\tthis.threeRenderer = threeRenderer;\r\n\t\tthis.gl = this.threeRenderer.getContext();\r\n\r\n\t\tthis.buffers = new Map();\r\n\t\tthis.shaders = new Map();\r\n\t\tthis.textures = new Map();\r\n\r\n\t\tthis.glTypeMapping = new Map();\r\n\t\tthis.glTypeMapping.set(Float32Array, this.gl.FLOAT);\r\n\t\tthis.glTypeMapping.set(Uint8Array, this.gl.UNSIGNED_BYTE);\r\n\t\tthis.glTypeMapping.set(Uint16Array, this.gl.UNSIGNED_SHORT);\r\n\r\n\t\tthis.toggle = 0;\r\n\t}\r\n\r\n\tdeleteBuffer(geometry) {\r\n\r\n\t\tlet gl = this.gl;\r\n\t\tlet webglBuffer = this.buffers.get(geometry);\r\n\t\tif (webglBuffer != null) {\r\n\t\t\tfor (let attributeName in geometry.attributes) {\r\n\t\t\t\tgl.deleteBuffer(webglBuffer.vbos.get(attributeName).handle);\r\n\t\t\t}\r\n\t\t\tthis.buffers.delete(geometry);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateBuffer(geometry){\r\n\t\tlet gl = this.gl;\r\n\t\tlet webglBuffer = new WebGLBuffer();\r\n\t\twebglBuffer.vao = gl.createVertexArray();\r\n\t\twebglBuffer.numElements = geometry.attributes.position.count;\r\n\r\n\t\tgl.bindVertexArray(webglBuffer.vao);\r\n\r\n\t\tfor(let attributeName in geometry.attributes){\r\n\t\t\tlet bufferAttribute = geometry.attributes[attributeName];\r\n\r\n\t\t\tlet vbo = gl.createBuffer();\r\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo);\r\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW);\r\n\r\n\t\t\tlet normalized = bufferAttribute.normalized;\r\n\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\r\n\r\n\t\t\tif(attributeLocations[attributeName] === undefined){\r\n\t\t\t\t//attributeLocation = attributeLocations[\"aExtra\"];\r\n\t\t\t}else{\r\n\t\t\t\tlet attributeLocation = attributeLocations[attributeName].location;\r\n\r\n\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\r\n\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\r\n\t\t\t}\r\n\r\n\r\n\t\t\twebglBuffer.vbos.set(attributeName, {\r\n\t\t\t\thandle: vbo,\r\n\t\t\t\tname: attributeName,\r\n\t\t\t\tcount: bufferAttribute.count,\r\n\t\t\t\titemSize: bufferAttribute.itemSize,\r\n\t\t\t\ttype: geometry.attributes.position.array.constructor,\r\n\t\t\t\tversion: 0\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\r\n\t\tgl.bindVertexArray(null);\r\n\r\n\t\tlet disposeHandler = (event) => {\r\n\t\t\tthis.deleteBuffer(geometry);\r\n\t\t\tgeometry.removeEventListener(\"dispose\", disposeHandler);\r\n\t\t};\r\n\t\tgeometry.addEventListener(\"dispose\", disposeHandler);\r\n\r\n\t\treturn webglBuffer;\r\n\t}\r\n\r\n\tupdateBuffer(geometry){\r\n\t\tlet gl = this.gl;\r\n\r\n\t\tlet webglBuffer = this.buffers.get(geometry);\r\n\r\n\t\tgl.bindVertexArray(webglBuffer.vao);\r\n\r\n\t\tfor(let attributeName in geometry.attributes){\r\n\t\t\tlet bufferAttribute = geometry.attributes[attributeName];\r\n\r\n\t\t\tlet normalized = bufferAttribute.normalized;\r\n\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\r\n\r\n\t\t\tlet vbo = null;\r\n\t\t\tif(!webglBuffer.vbos.has(attributeName)){\r\n\t\t\t\tvbo = gl.createBuffer();\r\n\r\n\t\t\t\twebglBuffer.vbos.set(attributeName, {\r\n\t\t\t\t\thandle: vbo,\r\n\t\t\t\t\tname: attributeName,\r\n\t\t\t\t\tcount: bufferAttribute.count,\r\n\t\t\t\t\titemSize: bufferAttribute.itemSize,\r\n\t\t\t\t\ttype: geometry.attributes.position.array.constructor,\r\n\t\t\t\t\tversion: bufferAttribute.version\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\t\t\t\tvbo = webglBuffer.vbos.get(attributeName).handle;\r\n\t\t\t\twebglBuffer.vbos.get(attributeName).version = bufferAttribute.version;\r\n\t\t\t}\r\n\r\n\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo);\r\n\t\t\tgl.bufferData(gl.ARRAY_BUFFER, bufferAttribute.array, gl.STATIC_DRAW);\r\n\r\n\t\t\tif(attributeLocations[attributeName] === undefined){\r\n\t\t\t\t//attributeLocation = attributeLocations[\"aExtra\"];\r\n\t\t\t}else{\r\n\t\t\t\tlet attributeLocation = attributeLocations[attributeName].location;\r\n\t\t\t\t\r\n\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\r\n\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\r\n\t\tgl.bindVertexArray(null);\r\n\t}\r\n\r\n\ttraverse(scene) {\r\n\r\n\t\tlet octrees = [];\r\n\r\n\t\tlet stack = [scene];\r\n\t\twhile (stack.length > 0) {\r\n\r\n\t\t\tlet node = stack.pop();\r\n\r\n\t\t\tif (node instanceof PointCloudTree) {\r\n\t\t\t\toctrees.push(node);\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet visibleChildren = node.children.filter(c => c.visible);\r\n\t\t\tstack.push(...visibleChildren);\r\n\r\n\t\t}\r\n\r\n\t\tlet result = {\r\n\t\t\toctrees: octrees\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\r\n\r\n\trenderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params) {\r\n\r\n\t\tif (exports.measureTimings) performance.mark(\"renderNodes-start\");\r\n\r\n\t\tlet gl = this.gl;\r\n\r\n\t\tlet material = params.material ? params.material : octree.material;\r\n\t\tlet shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps;\r\n\t\tlet view = camera.matrixWorldInverse;\r\n\r\n\t\tif(params.viewOverride){\r\n\t\t\tview = params.viewOverride;\r\n\t\t}\r\n\r\n\t\tlet worldView = new THREE.Matrix4();\r\n\r\n\t\tlet mat4holder = new Float32Array(16);\r\n\r\n\t\tlet i = 0;\r\n\t\tfor (let node of nodes) {\r\n\r\n\t\t\tif(exports.debug.allowedNodes !== undefined){\r\n\t\t\t\tif(!exports.debug.allowedNodes.includes(node.name)){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet world = node.sceneNode.matrixWorld;\r\n\t\t\tworldView.multiplyMatrices(view, world);\r\n\r\n\t\t\tif (visibilityTextureData) {\r\n\t\t\t\tlet vnStart = visibilityTextureData.offsets.get(node);\r\n\t\t\t\tshader.setUniform1f(\"uVNStart\", vnStart);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tlet level = node.getLevel();\r\n\r\n\t\t\tif(node.debug){\r\n\t\t\t\tshader.setUniform(\"uDebug\", true);\r\n\t\t\t}else{\r\n\t\t\t\tshader.setUniform(\"uDebug\", false);\r\n\t\t\t}\r\n\r\n\t\t\t// let isLeaf = false;\r\n\t\t\t// if(node instanceof PointCloudOctreeNode){\r\n\t\t\t// \tisLeaf = Object.keys(node.children).length === 0;\r\n\t\t\t// }else if(node instanceof PointCloudArena4DNode){\r\n\t\t\t// \tisLeaf = node.geometryNode.isLeaf;\r\n\t\t\t// }\r\n\t\t\t// shader.setUniform(\"uIsLeafNode\", isLeaf);\r\n\r\n\t\t\t// let isLeaf = node.children.filter(n => n != null).length === 0;\r\n\t\t\t// if(!isLeaf){\r\n\t\t\t// \tcontinue;\r\n\t\t\t// }\r\n\r\n\r\n\t\t\t// TODO consider passing matrices in an array to avoid uniformMatrix4fv overhead\r\n\t\t\tconst lModel = shader.uniformLocations[\"modelMatrix\"];\r\n\t\t\tif (lModel) {\r\n\t\t\t\tmat4holder.set(world.elements);\r\n\t\t\t\tgl.uniformMatrix4fv(lModel, false, mat4holder);\r\n\t\t\t}\r\n\r\n\t\t\tconst lModelView = shader.uniformLocations[\"modelViewMatrix\"];\r\n\t\t\t//mat4holder.set(worldView.elements);\r\n\t\t\t// faster then set in chrome 63\r\n\t\t\tfor(let j = 0; j < 16; j++){\r\n\t\t\t\tmat4holder[j] = worldView.elements[j];\r\n\t\t\t}\r\n\t\t\tgl.uniformMatrix4fv(lModelView, false, mat4holder);\r\n\r\n\t\t\t{ // Clip Polygons\r\n\t\t\t\tif(material.clipPolygons && material.clipPolygons.length > 0){\r\n\r\n\t\t\t\t\tlet clipPolygonVCount = [];\r\n\t\t\t\t\tlet worldViewProjMatrices = [];\r\n\r\n\t\t\t\t\tfor(let clipPolygon of material.clipPolygons){\r\n\r\n\t\t\t\t\t\tlet view = clipPolygon.viewMatrix;\r\n\t\t\t\t\t\tlet proj = clipPolygon.projMatrix;\r\n\r\n\t\t\t\t\t\tlet worldViewProj = proj.clone().multiply(view).multiply(world);\r\n\r\n\t\t\t\t\t\tclipPolygonVCount.push(clipPolygon.markers.length);\r\n\t\t\t\t\t\tworldViewProjMatrices.push(worldViewProj);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet flattenedMatrices = [].concat(...worldViewProjMatrices.map(m => m.elements));\r\n\r\n\t\t\t\t\tlet flattenedVertices = new Array(8 * 3 * material.clipPolygons.length);\r\n\t\t\t\t\tfor(let i = 0; i < material.clipPolygons.length; i++){\r\n\t\t\t\t\t\tlet clipPolygon = material.clipPolygons[i];\r\n\t\t\t\t\t\tfor(let j = 0; j < clipPolygon.markers.length; j++){\r\n\t\t\t\t\t\t\tflattenedVertices[i * 24 + (j * 3 + 0)] = clipPolygon.markers[j].position.x;\r\n\t\t\t\t\t\t\tflattenedVertices[i * 24 + (j * 3 + 1)] = clipPolygon.markers[j].position.y;\r\n\t\t\t\t\t\t\tflattenedVertices[i * 24 + (j * 3 + 2)] = clipPolygon.markers[j].position.z;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst lClipPolygonVCount = shader.uniformLocations[\"uClipPolygonVCount[0]\"];\r\n\t\t\t\t\tgl.uniform1iv(lClipPolygonVCount, clipPolygonVCount);\r\n\r\n\t\t\t\t\tconst lClipPolygonVP = shader.uniformLocations[\"uClipPolygonWVP[0]\"];\r\n\t\t\t\t\tgl.uniformMatrix4fv(lClipPolygonVP, false, flattenedMatrices);\r\n\r\n\t\t\t\t\tconst lClipPolygons = shader.uniformLocations[\"uClipPolygonVertices[0]\"];\r\n\t\t\t\t\tgl.uniform3fv(lClipPolygons, flattenedVertices);\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//shader.setUniformMatrix4(\"modelMatrix\", world);\r\n\t\t\t//shader.setUniformMatrix4(\"modelViewMatrix\", worldView);\r\n\t\t\tshader.setUniform1f(\"uLevel\", level);\r\n\t\t\tshader.setUniform1f(\"uNodeSpacing\", node.geometryNode.estimatedSpacing);\r\n\r\n\t\t\tshader.setUniform1f(\"uPCIndex\", i);\r\n\t\t\t// uBBSize\r\n\r\n\t\t\tif (shadowMaps.length > 0) {\r\n\r\n\t\t\t\tconst lShadowMap = shader.uniformLocations[\"uShadowMap[0]\"];\r\n\r\n\t\t\t\tshader.setUniform3f(\"uShadowColor\", material.uniforms.uShadowColor.value);\r\n\r\n\t\t\t\tlet bindingStart = 5;\r\n\t\t\t\tlet bindingPoints = new Array(shadowMaps.length).fill(bindingStart).map((a, i) => (a + i));\r\n\t\t\t\tgl.uniform1iv(lShadowMap, bindingPoints);\r\n\r\n\t\t\t\tfor (let i = 0; i < shadowMaps.length; i++) {\r\n\t\t\t\t\tlet shadowMap = shadowMaps[i];\r\n\t\t\t\t\tlet bindingPoint = bindingPoints[i];\r\n\t\t\t\t\tlet glTexture = this.threeRenderer.properties.get(shadowMap.target.texture).__webglTexture;\r\n\r\n\t\t\t\t\tgl.activeTexture(gl[`TEXTURE${bindingPoint}`]);\r\n\t\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, glTexture);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{\r\n\r\n\t\t\t\t\tlet worldViewMatrices = shadowMaps\r\n\t\t\t\t\t\t.map(sm => sm.camera.matrixWorldInverse)\r\n\t\t\t\t\t\t.map(view => new THREE.Matrix4().multiplyMatrices(view, world))\r\n\r\n\t\t\t\t\tlet flattenedMatrices = [].concat(...worldViewMatrices.map(c => c.elements));\r\n\t\t\t\t\tconst lWorldView = shader.uniformLocations[\"uShadowWorldView[0]\"];\r\n\t\t\t\t\tgl.uniformMatrix4fv(lWorldView, false, flattenedMatrices);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\tlet flattenedMatrices = [].concat(...shadowMaps.map(sm => sm.camera.projectionMatrix.elements));\r\n\t\t\t\t\tconst lProj = shader.uniformLocations[\"uShadowProj[0]\"];\r\n\t\t\t\t\tgl.uniformMatrix4fv(lProj, false, flattenedMatrices);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst geometry = node.geometryNode.geometry;\r\n\r\n\t\t\tif (!geometry) console.log('Missing geometry', node)\r\n\t\t\tif(geometry.attributes[\"gps-time\"]){\r\n\t\t\t\tconst bufferAttribute = geometry.attributes[\"gps-time\"];\r\n\t\t\t\tconst attGPS = octree.getAttribute(\"gps-time\");\r\n\r\n\t\t\t\tlet initialRange = attGPS.initialRange;\r\n\t\t\t\tlet initialRangeSize = initialRange[1] - initialRange[0];\r\n\r\n\t\t\t\tlet globalRange = attGPS.range;\r\n\t\t\t\tlet globalRangeSize = globalRange[1] - globalRange[0];\r\n\r\n\t\t\t\tlet scale = initialRangeSize / globalRangeSize;\r\n\t\t\t\tlet offset = -(globalRange[0] - initialRange[0]) / initialRangeSize;\r\n\r\n\t\t\t\tscale = Number.isNaN(scale) ? 1 : scale;\r\n\t\t\t\toffset = Number.isNaN(offset) ? 0 : offset;\r\n\r\n\t\t\t\tshader.setUniform1f(\"uGpsScale\", scale);\r\n\t\t\t\tshader.setUniform1f(\"uGpsOffset\", offset);\r\n\t\t\t\t//shader.setUniform2f(\"uFilterGPSTimeClipRange\", [-Infinity, Infinity]);\r\n\r\n\t\t\t\tlet uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value;\r\n\t\t\t\t// let gpsCliPRangeMin = uFilterGPSTimeClipRange[0]\r\n\t\t\t\t// let gpsCliPRangeMax = uFilterGPSTimeClipRange[1]\r\n\t\t\t\t// shader.setUniform2f(\"uFilterGPSTimeClipRange\", [gpsCliPRangeMin, gpsCliPRangeMax]);\r\n\r\n\t\t\t\tlet normalizedClipRange = [\r\n\t\t\t\t\t(uFilterGPSTimeClipRange[0] - globalRange[0]) / globalRangeSize,\r\n\t\t\t\t\t(uFilterGPSTimeClipRange[1] - globalRange[0]) / globalRangeSize,\r\n\t\t\t\t];\r\n\r\n\t\t\t\tshader.setUniform2f(\"uFilterGPSTimeClipRange\", normalizedClipRange);\r\n\r\n\r\n\r\n\t\t\t\t// // ranges in full gps coordinate system\r\n\t\t\t\t// const globalRange = attGPS.range;\r\n\t\t\t\t// const bufferRange = bufferAttribute.potree.range;\r\n\r\n\t\t\t\t// // ranges in [0, 1]\r\n\t\t\t\t// // normalizedGlobalRange = [0, 1]\r\n\t\t\t\t// // normalizedBufferRange: norm buffer within norm global range e.g. [0.2, 0.8]\r\n\t\t\t\t// const globalWidth = globalRange[1] - globalRange[0];\r\n\t\t\t\t// const normalizedBufferRange = [\r\n\t\t\t\t// \t(bufferRange[0] - globalRange[0]) / globalWidth,\r\n\t\t\t\t// \t(bufferRange[1] - globalRange[0]) / globalWidth,\r\n\t\t\t\t// ];\r\n\r\n\t\t\t\t// shader.setUniform2f(\"uNormalizedGpsBufferRange\", normalizedBufferRange);\r\n\r\n\t\t\t\t// let uFilterGPSTimeClipRange = material.uniforms.uFilterGPSTimeClipRange.value;\r\n\t\t\t\t// let gpsCliPRangeMin = uFilterGPSTimeClipRange[0]\r\n\t\t\t\t// let gpsCliPRangeMax = uFilterGPSTimeClipRange[1]\r\n\t\t\t\t// shader.setUniform2f(\"uFilterGPSTimeClipRange\", [gpsCliPRangeMin, gpsCliPRangeMax]);\r\n\r\n\t\t\t\t// shader.setUniform1f(\"uGpsScale\", bufferAttribute.potree.scale);\r\n\t\t\t\t// shader.setUniform1f(\"uGpsOffset\", bufferAttribute.potree.offset);\r\n\t\t\t}\r\n\r\n\t\t\t{\r\n\t\t\t\tlet uFilterReturnNumberRange = material.uniforms.uFilterReturnNumberRange.value;\r\n\t\t\t\tlet uFilterNumberOfReturnsRange = material.uniforms.uFilterNumberOfReturnsRange.value;\r\n\t\t\t\tlet uFilterPointSourceIDClipRange = material.uniforms.uFilterPointSourceIDClipRange.value;\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tshader.setUniform2f(\"uFilterReturnNumberRange\", uFilterReturnNumberRange);\r\n\t\t\t\tshader.setUniform2f(\"uFilterNumberOfReturnsRange\", uFilterNumberOfReturnsRange);\r\n\t\t\t\tshader.setUniform2f(\"uFilterPointSourceIDClipRange\", uFilterPointSourceIDClipRange);\r\n\t\t\t}\r\n\r\n\t\t\tlet webglBuffer = null;\r\n\t\t\tif(!this.buffers.has(geometry)){\r\n\t\t\t\twebglBuffer = this.createBuffer(geometry);\r\n\t\t\t\tthis.buffers.set(geometry, webglBuffer);\r\n\t\t\t}else{\r\n\t\t\t\twebglBuffer = this.buffers.get(geometry);\r\n\t\t\t\tfor(let attributeName in geometry.attributes){\r\n\t\t\t\t\tlet attribute = geometry.attributes[attributeName];\r\n\r\n\t\t\t\t\tif(attribute.version > webglBuffer.vbos.get(attributeName).version){\r\n\t\t\t\t\t\tthis.updateBuffer(geometry);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tgl.bindVertexArray(webglBuffer.vao);\r\n\r\n\t\t\tlet isExtraAttribute =\r\n\t\t\t\tattributeLocations[material.activeAttributeName] === undefined\r\n\t\t\t\t&& Object.keys(geometry.attributes).includes(material.activeAttributeName);\r\n\r\n\t\t\tif(isExtraAttribute){\r\n\r\n\t\t\t\tconst attributeLocation = attributeLocations[\"aExtra\"].location;\r\n\r\n\t\t\t\tfor(const attributeName in geometry.attributes){\r\n\t\t\t\t\tconst bufferAttribute = geometry.attributes[attributeName];\r\n\t\t\t\t\tconst vbo = webglBuffer.vbos.get(attributeName);\r\n\t\t\t\t\t\r\n\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle);\r\n\t\t\t\t\tgl.disableVertexAttribArray(attributeLocation);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst attName = material.activeAttributeName;\r\n\t\t\t\tconst bufferAttribute = geometry.attributes[attName];\r\n\t\t\t\tconst vbo = webglBuffer.vbos.get(attName);\r\n\r\n\t\t\t\tif(bufferAttribute !== undefined && vbo !== undefined){\r\n\t\t\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\r\n\t\t\t\t\tlet normalized = bufferAttribute.normalized;\r\n\r\n\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle);\r\n\t\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\r\n\t\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\r\n\t\t\t\t}\r\n\r\n\r\n\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\tconst attExtra = octree.pcoGeometry.pointAttributes.attributes\r\n\t\t\t\t\t\t.find(a => a.name === attName);\r\n\r\n\t\t\t\t\tlet range = material.getRange(attName);\r\n\t\t\t\t\tif(!range){\r\n\t\t\t\t\t\trange = attExtra.range;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(!range){\r\n\t\t\t\t\t\trange = [0, 1];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet initialRange = attExtra.initialRange;\r\n\t\t\t\t\tlet initialRangeSize = initialRange[1] - initialRange[0];\r\n\r\n\t\t\t\t\tlet globalRange = range;\r\n\t\t\t\t\tlet globalRangeSize = globalRange[1] - globalRange[0];\r\n\r\n\t\t\t\t\tlet scale = initialRangeSize / globalRangeSize;\r\n\t\t\t\t\tlet offset = -(globalRange[0] - initialRange[0]) / initialRangeSize;\r\n\r\n\t\t\t\t\tscale = Number.isNaN(scale) ? 1 : scale;\r\n\t\t\t\t\toffset = Number.isNaN(offset) ? 0 : offset;\r\n\r\n\t\t\t\t\tshader.setUniform1f(\"uExtraScale\", scale);\r\n\t\t\t\t\tshader.setUniform1f(\"uExtraOffset\", offset);\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t}else{\r\n\r\n\t\t\t\tfor(const attributeName in geometry.attributes){\r\n\t\t\t\t\tconst bufferAttribute = geometry.attributes[attributeName];\r\n\t\t\t\t\tconst vbo = webglBuffer.vbos.get(attributeName);\r\n\r\n\r\n\t\t\t\t\tif(attributeLocations[attributeName] !== undefined){\r\n\t\t\t\t\t\tconst attributeLocation = attributeLocations[attributeName].location;\r\n\r\n\t\t\t\t\t\tlet type = this.glTypeMapping.get(bufferAttribute.array.constructor);\r\n\t\t\t\t\t\tlet normalized = bufferAttribute.normalized;\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tgl.bindBuffer(gl.ARRAY_BUFFER, vbo.handle);\r\n\t\t\t\t\t\tgl.vertexAttribPointer(attributeLocation, bufferAttribute.itemSize, type, normalized, 0, 0);\r\n\t\t\t\t\t\tgl.enableVertexAttribArray(attributeLocation);\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet numPoints = webglBuffer.numElements;\r\n\t\t\tgl.drawArrays(gl.POINTS, 0, numPoints);\r\n\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\tgl.bindVertexArray(null);\r\n\r\n\t\tif (exports.measureTimings) {\r\n\t\t\tperformance.mark(\"renderNodes-end\");\r\n\t\t\tperformance.measure(\"render.renderNodes\", \"renderNodes-start\", \"renderNodes-end\");\r\n\t\t}\r\n\t}\r\n\r\n\trenderOctree(octree, nodes, camera, target, params = {}){\r\n\r\n\t\tlet gl = this.gl;\r\n\r\n\t\tlet material = params.material ? params.material : octree.material;\r\n\t\tlet shadowMaps = params.shadowMaps == null ? [] : params.shadowMaps;\r\n\t\tlet view = camera.matrixWorldInverse;\r\n\t\tlet viewInv = camera.matrixWorld;\r\n\r\n\t\tif(params.viewOverride){\r\n\t\t\tview = params.viewOverride;\r\n\t\t\tviewInv = view.clone().invert();\r\n\t\t}\r\n\r\n\t\tlet proj = camera.projectionMatrix;\r\n\t\tlet projInv = proj.clone().invert();\r\n\t\t//let worldView = new THREE.Matrix4();\r\n\r\n\t\tlet shader = null;\r\n\t\tlet visibilityTextureData = null;\r\n\r\n\t\tlet currentTextureBindingPoint = 0;\r\n\r\n\t\tif (material.pointSizeType >= 0) {\r\n\t\t\tif (material.pointSizeType === PointSizeType.ADAPTIVE ||\r\n\t\t\t\tmaterial.activeAttributeName === \"level of detail\") {\r\n\r\n\t\t\t\tlet vnNodes = (params.vnTextureNodes != null) ? params.vnTextureNodes : nodes;\r\n\t\t\t\tvisibilityTextureData = octree.computeVisibilityTextureData(vnNodes, camera);\r\n\r\n\t\t\t\tconst vnt = material.visibleNodesTexture;\r\n\t\t\t\tconst data = vnt.image.data;\r\n\t\t\t\tdata.set(visibilityTextureData.data);\r\n\t\t\t\tvnt.needsUpdate = true;\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // UPDATE SHADER AND TEXTURES\r\n\t\t\tif (!this.shaders.has(material)) {\r\n\t\t\t\tlet [vs, fs] = [material.vertexShader, material.fragmentShader];\r\n\t\t\t\tlet shader = new Shader(gl, \"pointcloud\", vs, fs);\r\n\r\n\t\t\t\tthis.shaders.set(material, shader);\r\n\t\t\t}\r\n\r\n\t\t\tshader = this.shaders.get(material);\r\n\r\n\t\t\t//if(material.needsUpdate){\r\n\t\t\t{\r\n\t\t\t\tlet [vs, fs] = [material.vertexShader, material.fragmentShader];\r\n\r\n\t\t\t\tlet numSnapshots = material.snapEnabled ? material.numSnapshots : 0;\r\n\t\t\t\tlet numClipBoxes = (material.clipBoxes && material.clipBoxes.length) ? material.clipBoxes.length : 0;\r\n\t\t\t\tlet numClipSpheres = (params.clipSpheres && params.clipSpheres.length) ? params.clipSpheres.length : 0;\r\n\t\t\t\tlet numClipPolygons = (material.clipPolygons && material.clipPolygons.length) ? material.clipPolygons.length : 0;\r\n\r\n\t\t\t\tlet defines = [\r\n\t\t\t\t\t`#define num_shadowmaps ${shadowMaps.length}`,\r\n\t\t\t\t\t`#define num_snapshots ${numSnapshots}`,\r\n\t\t\t\t\t`#define num_clipboxes ${numClipBoxes}`,\r\n\t\t\t\t\t`#define num_clipspheres ${numClipSpheres}`,\r\n\t\t\t\t\t`#define num_clippolygons ${numClipPolygons}`,\r\n\t\t\t\t];\r\n\r\n\r\n\t\t\t\tif(octree.pcoGeometry.root.isLoaded()){\r\n\t\t\t\t\tlet attributes = octree.pcoGeometry.root.geometry.attributes;\r\n\r\n\t\t\t\t\tif(attributes[\"gps-time\"]){\r\n\t\t\t\t\t\tdefines.push(\"#define clip_gps_enabled\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(attributes[\"return number\"]){\r\n\t\t\t\t\t\tdefines.push(\"#define clip_return_number_enabled\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(attributes[\"number of returns\"]){\r\n\t\t\t\t\t\tdefines.push(\"#define clip_number_of_returns_enabled\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif(attributes[\"source id\"] || attributes[\"point source id\"]){\r\n\t\t\t\t\t\tdefines.push(\"#define clip_point_source_id_enabled\");\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet definesString = defines.join(\"\\n\");\r\n\r\n\t\t\t\tlet vsVersionIndex = vs.indexOf(\"#version \");\r\n\t\t\t\tlet fsVersionIndex = fs.indexOf(\"#version \");\r\n\r\n\t\t\t\tif(vsVersionIndex >= 0){\r\n\t\t\t\t\tvs = vs.replace(/(#version .*)/, `$1\\n${definesString}`)\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvs = `${definesString}\\n${vs}`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(fsVersionIndex >= 0){\r\n\t\t\t\t\tfs = fs.replace(/(#version .*)/, `$1\\n${definesString}`)\r\n\t\t\t\t}else{\r\n\t\t\t\t\tfs = `${definesString}\\n${fs}`;\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tshader.update(vs, fs);\r\n\r\n\t\t\t\tmaterial.needsUpdate = false;\r\n\t\t\t}\r\n\r\n\t\t\tfor (let uniformName of Object.keys(material.uniforms)) {\r\n\t\t\t\tlet uniform = material.uniforms[uniformName];\r\n\r\n\t\t\t\tif (uniform.type == \"t\") {\r\n\r\n\t\t\t\t\tlet texture = uniform.value;\r\n\r\n\t\t\t\t\tif (!texture) {\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (!this.textures.has(texture)) {\r\n\t\t\t\t\t\tlet webglTexture = new WebGLTexture(gl, texture);\r\n\r\n\t\t\t\t\t\tthis.textures.set(texture, webglTexture);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet webGLTexture = this.textures.get(texture);\r\n\t\t\t\t\twebGLTexture.update();\r\n\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tgl.useProgram(shader.program);\r\n\r\n\t\tlet transparent = false;\r\n\t\tif(params.transparent !== undefined){\r\n\t\t\ttransparent = params.transparent && material.opacity < 1;\r\n\t\t}else{\r\n\t\t\ttransparent = material.opacity < 1;\r\n\t\t}\r\n\r\n\t\tif (transparent){\r\n\t\t\tgl.enable(gl.BLEND);\r\n\t\t\tgl.blendFunc(gl.SRC_ALPHA, gl.ONE);\r\n\t\t\tgl.depthMask(false);\r\n\t\t\tgl.disable(gl.DEPTH_TEST);\r\n\t\t} else {\r\n\t\t\tgl.disable(gl.BLEND);\r\n\t\t\tgl.depthMask(true);\r\n\t\t\tgl.enable(gl.DEPTH_TEST);\r\n\t\t}\r\n\r\n\t\tif(params.blendFunc !== undefined){\r\n\t\t\tgl.enable(gl.BLEND);\r\n\t\t\tgl.blendFunc(...params.blendFunc);\r\n\t\t}\r\n\r\n\t\tif(params.depthTest !== undefined){\r\n\t\t\tif(params.depthTest === true){\r\n\t\t\t\tgl.enable(gl.DEPTH_TEST);\r\n\t\t\t}else{\r\n\t\t\t\tgl.disable(gl.DEPTH_TEST);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(params.depthWrite !== undefined){\r\n\t\t\t if(params.depthWrite === true){\r\n\t\t\t\t gl.depthMask(true);\r\n\t\t\t }else{\r\n\t\t\t\t gl.depthMask(false);\r\n\t\t\t }\r\n\t\t\t \r\n\t\t}\r\n\r\n\r\n\t\t{ // UPDATE UNIFORMS\r\n\t\t\tshader.setUniformMatrix4(\"projectionMatrix\", proj);\r\n\t\t\tshader.setUniformMatrix4(\"viewMatrix\", view);\r\n\t\t\tshader.setUniformMatrix4(\"uViewInv\", viewInv);\r\n\t\t\tshader.setUniformMatrix4(\"uProjInv\", projInv);\r\n\r\n\t\t\tlet screenWidth = target ? target.width : material.screenWidth;\r\n\t\t\tlet screenHeight = target ? target.height : material.screenHeight;\r\n\r\n\t\t\tshader.setUniform1f(\"uScreenWidth\", screenWidth);\r\n\t\t\tshader.setUniform1f(\"uScreenHeight\", screenHeight);\r\n\t\t\tshader.setUniform1f(\"fov\", Math.PI * camera.fov / 180);\r\n\t\t\tshader.setUniform1f(\"near\", camera.near);\r\n\t\t\tshader.setUniform1f(\"far\", camera.far);\r\n\t\t\t\r\n\t\t\tif(camera instanceof THREE.OrthographicCamera){\r\n\t\t\t\tshader.setUniform(\"uUseOrthographicCamera\", true);\r\n\t\t\t\tshader.setUniform(\"uOrthoWidth\", camera.right - camera.left); \r\n\t\t\t\tshader.setUniform(\"uOrthoHeight\", camera.top - camera.bottom);\r\n\t\t\t}else{\r\n\t\t\t\tshader.setUniform(\"uUseOrthographicCamera\", false);\r\n\t\t\t}\r\n\r\n\t\t\tif(material.clipBoxes.length + material.clipPolygons.length === 0){\r\n\t\t\t\tshader.setUniform1i(\"clipTask\", ClipTask.NONE);\r\n\t\t\t}else{\r\n\t\t\t\tshader.setUniform1i(\"clipTask\", material.clipTask);\r\n\t\t\t}\r\n\r\n\t\t\tshader.setUniform1i(\"clipMethod\", material.clipMethod);\r\n\r\n\t\t\tif (material.clipBoxes && material.clipBoxes.length > 0) {\r\n\t\t\t\t//let flattenedMatrices = [].concat(...material.clipBoxes.map(c => c.inverse.elements));\r\n\r\n\t\t\t\t//const lClipBoxes = shader.uniformLocations[\"clipBoxes[0]\"];\r\n\t\t\t\t//gl.uniformMatrix4fv(lClipBoxes, false, flattenedMatrices);\r\n\r\n\t\t\t\tconst lClipBoxes = shader.uniformLocations[\"clipBoxes[0]\"];\r\n\t\t\t\tgl.uniformMatrix4fv(lClipBoxes, false, material.uniforms.clipBoxes.value);\r\n\t\t\t}\r\n\r\n\t\t\t// TODO CLIPSPHERES\r\n\t\t\tif(params.clipSpheres && params.clipSpheres.length > 0){\r\n\r\n\t\t\t\tlet clipSpheres = params.clipSpheres;\r\n\r\n\t\t\t\tlet matrices = [];\r\n\t\t\t\tfor(let clipSphere of clipSpheres){\r\n\t\t\t\t\t//let mScale = new THREE.Matrix4().makeScale(...clipSphere.scale.toArray());\r\n\t\t\t\t\t//let mTranslate = new THREE.Matrix4().makeTranslation(...clipSphere.position.toArray());\r\n\r\n\t\t\t\t\t//let clipToWorld = new THREE.Matrix4().multiplyMatrices(mTranslate, mScale);\r\n\t\t\t\t\tlet clipToWorld = clipSphere.matrixWorld;\r\n\t\t\t\t\tlet viewToWorld = camera.matrixWorld\r\n\t\t\t\t\tlet worldToClip = clipToWorld.clone().invert();\r\n\r\n\t\t\t\t\tlet viewToClip = new THREE.Matrix4().multiplyMatrices(worldToClip, viewToWorld);\r\n\r\n\t\t\t\t\tmatrices.push(viewToClip);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet flattenedMatrices = [].concat(...matrices.map(matrix => matrix.elements));\r\n\r\n\t\t\t\tconst lClipSpheres = shader.uniformLocations[\"uClipSpheres[0]\"];\r\n\t\t\t\tgl.uniformMatrix4fv(lClipSpheres, false, flattenedMatrices);\r\n\t\t\t\t\r\n\t\t\t\t//const lClipSpheres = shader.uniformLocations[\"uClipSpheres[0]\"];\r\n\t\t\t\t//gl.uniformMatrix4fv(lClipSpheres, false, material.uniforms.clipSpheres.value);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tshader.setUniform1f(\"size\", material.size);\r\n\t\t\tshader.setUniform1f(\"maxSize\", material.uniforms.maxSize.value);\r\n\t\t\tshader.setUniform1f(\"minSize\", material.uniforms.minSize.value);\r\n\r\n\r\n\t\t\t// uniform float uPCIndex\r\n\t\t\tshader.setUniform1f(\"uOctreeSpacing\", material.spacing);\r\n\t\t\tshader.setUniform(\"uOctreeSize\", material.uniforms.octreeSize.value);\r\n\r\n\r\n\t\t\t//uniform vec3 uColor;\r\n\t\t\tshader.setUniform3f(\"uColor\", material.color.toArray());\r\n\t\t\t//uniform float opacity;\r\n\t\t\tshader.setUniform1f(\"uOpacity\", material.opacity);\r\n\r\n\t\t\tshader.setUniform2f(\"elevationRange\", material.elevationRange);\r\n\t\t\tshader.setUniform2f(\"intensityRange\", material.intensityRange);\r\n\r\n\r\n\t\t\tshader.setUniform3f(\"uIntensity_gbc\", [\r\n\t\t\t\tmaterial.intensityGamma, \r\n\t\t\t\tmaterial.intensityBrightness, \r\n\t\t\t\tmaterial.intensityContrast\r\n\t\t\t]);\r\n\r\n\t\t\tshader.setUniform3f(\"uRGB_gbc\", [\r\n\t\t\t\tmaterial.rgbGamma, \r\n\t\t\t\tmaterial.rgbBrightness, \r\n\t\t\t\tmaterial.rgbContrast\r\n\t\t\t]);\r\n\r\n\t\t\tshader.setUniform1f(\"uTransition\", material.transition);\r\n\t\t\tshader.setUniform1f(\"wRGB\", material.weightRGB);\r\n\t\t\tshader.setUniform1f(\"wIntensity\", material.weightIntensity);\r\n\t\t\tshader.setUniform1f(\"wElevation\", material.weightElevation);\r\n\t\t\tshader.setUniform1f(\"wClassification\", material.weightClassification);\r\n\t\t\tshader.setUniform1f(\"wReturnNumber\", material.weightReturnNumber);\r\n\t\t\tshader.setUniform1f(\"wSourceID\", material.weightSourceID);\r\n\r\n\t\t\tshader.setUniform(\"backfaceCulling\", material.uniforms.backfaceCulling.value);\r\n\r\n\t\t\tlet vnWebGLTexture = this.textures.get(material.visibleNodesTexture);\r\n\t\t\tif(vnWebGLTexture){\r\n\t\t\t\tshader.setUniform1i(\"visibleNodesTexture\", currentTextureBindingPoint);\r\n\t\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\r\n\t\t\t\tgl.bindTexture(vnWebGLTexture.target, vnWebGLTexture.id);\r\n\t\t\t\tcurrentTextureBindingPoint++;\r\n\t\t\t}\r\n\r\n\t\t\tlet gradientTexture = this.textures.get(material.gradientTexture);\r\n\t\t\tshader.setUniform1i(\"gradient\", currentTextureBindingPoint);\r\n\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\r\n\t\t\tgl.bindTexture(gradientTexture.target, gradientTexture.id);\r\n\r\n\t\t\tconst repeat = material.elevationGradientRepeat;\r\n\t\t\tif(repeat === ElevationGradientRepeat.REPEAT){\r\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.REPEAT);\r\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.REPEAT);\r\n\t\t\t}else if(repeat === ElevationGradientRepeat.MIRRORED_REPEAT){\r\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.MIRRORED_REPEAT);\r\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.MIRRORED_REPEAT);\r\n\t\t\t}else{\r\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\r\n\t\t\t\tgl.texParameteri(gradientTexture.target, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\r\n\t\t\t}\r\n\t\t\tcurrentTextureBindingPoint++;\r\n\r\n\t\t\tlet classificationTexture = this.textures.get(material.classificationTexture);\r\n\t\t\tshader.setUniform1i(\"classificationLUT\", currentTextureBindingPoint);\r\n\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\r\n\t\t\tgl.bindTexture(classificationTexture.target, classificationTexture.id);\r\n\t\t\tcurrentTextureBindingPoint++;\r\n\r\n\t\t\tlet matcapTexture = this.textures.get(material.matcapTexture);\r\n\t\t\tshader.setUniform1i(\"matcapTextureUniform\", currentTextureBindingPoint);\r\n\t\t\tgl.activeTexture(gl.TEXTURE0 + currentTextureBindingPoint);\r\n\t\t\tgl.bindTexture(matcapTexture.target, matcapTexture.id);\r\n\t\t\tcurrentTextureBindingPoint++;\r\n\r\n\r\n\t\t\tif (material.snapEnabled === true) {\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\tconst lSnapshot = shader.uniformLocations[\"uSnapshot[0]\"];\r\n\t\t\t\t\tconst lSnapshotDepth = shader.uniformLocations[\"uSnapshotDepth[0]\"];\r\n\r\n\t\t\t\t\tlet bindingStart = currentTextureBindingPoint;\r\n\t\t\t\t\tlet lSnapshotBindingPoints = new Array(5).fill(bindingStart).map((a, i) => (a + i));\r\n\t\t\t\t\tlet lSnapshotDepthBindingPoints = new Array(5)\r\n\t\t\t\t\t\t.fill(1 + Math.max(...lSnapshotBindingPoints))\r\n\t\t\t\t\t\t.map((a, i) => (a + i));\r\n\t\t\t\t\tcurrentTextureBindingPoint = 1 + Math.max(...lSnapshotDepthBindingPoints);\r\n\r\n\t\t\t\t\tgl.uniform1iv(lSnapshot, lSnapshotBindingPoints);\r\n\t\t\t\t\tgl.uniform1iv(lSnapshotDepth, lSnapshotDepthBindingPoints);\r\n\r\n\t\t\t\t\tfor (let i = 0; i < 5; i++) {\r\n\t\t\t\t\t\tlet texture = material.uniforms[`uSnapshot`].value[i];\r\n\t\t\t\t\t\tlet textureDepth = material.uniforms[`uSnapshotDepth`].value[i];\r\n\r\n\t\t\t\t\t\tif (!texture) {\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tlet snapTexture = this.threeRenderer.properties.get(texture).__webglTexture;\r\n\t\t\t\t\t\tlet snapTextureDepth = this.threeRenderer.properties.get(textureDepth).__webglTexture;\r\n\r\n\t\t\t\t\t\tlet bindingPoint = lSnapshotBindingPoints[i];\r\n\t\t\t\t\t\tlet depthBindingPoint = lSnapshotDepthBindingPoints[i];\r\n\r\n\t\t\t\t\t\tgl.activeTexture(gl[`TEXTURE${bindingPoint}`]);\r\n\t\t\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, snapTexture);\r\n\r\n\t\t\t\t\t\tgl.activeTexture(gl[`TEXTURE${depthBindingPoint}`]);\r\n\t\t\t\t\t\tgl.bindTexture(gl.TEXTURE_2D, snapTextureDepth);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapView.value.map(c => c.elements));\r\n\t\t\t\t\tconst lSnapView = shader.uniformLocations[\"uSnapView[0]\"];\r\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapView, false, flattenedMatrices);\r\n\t\t\t\t}\r\n\t\t\t\t{\r\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapProj.value.map(c => c.elements));\r\n\t\t\t\t\tconst lSnapProj = shader.uniformLocations[\"uSnapProj[0]\"];\r\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapProj, false, flattenedMatrices);\r\n\t\t\t\t}\r\n\t\t\t\t{\r\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapProjInv.value.map(c => c.elements));\r\n\t\t\t\t\tconst lSnapProjInv = shader.uniformLocations[\"uSnapProjInv[0]\"];\r\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapProjInv, false, flattenedMatrices);\r\n\t\t\t\t}\r\n\t\t\t\t{\r\n\t\t\t\t\tlet flattenedMatrices = [].concat(...material.uniforms.uSnapViewInv.value.map(c => c.elements));\r\n\t\t\t\t\tconst lSnapViewInv = shader.uniformLocations[\"uSnapViewInv[0]\"];\r\n\t\t\t\t\tgl.uniformMatrix4fv(lSnapViewInv, false, flattenedMatrices);\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.renderNodes(octree, nodes, visibilityTextureData, camera, target, shader, params);\r\n\r\n\t\tgl.activeTexture(gl.TEXTURE2);\r\n\t\tgl.bindTexture(gl.TEXTURE_2D, null);\r\n\t\tgl.activeTexture(gl.TEXTURE0);\r\n\t}\r\n\r\n\trender(scene, camera, target = null, params = {}) {\r\n\r\n\t\tconst gl = this.gl;\r\n\r\n\t\t// PREPARE \r\n\t\tif (target != null) {\r\n\t\t\tthis.threeRenderer.setRenderTarget(target);\r\n\t\t}\r\n\r\n\t\t//camera.updateProjectionMatrix();\r\n\t\t// camera.matrixWorldInverse.invert(camera.matrixWorld);\r\n\r\n\t\tconst traversalResult = this.traverse(scene);\r\n\r\n\r\n\t\t// RENDER\r\n\t\tfor (const octree of traversalResult.octrees) {\r\n\t\t\tlet nodes = octree.visibleNodes;\r\n\t\t\tthis.renderOctree(octree, nodes, camera, target, params);\r\n\t\t}\r\n\r\n\r\n\t\t// CLEANUP\r\n\t\tgl.activeTexture(gl.TEXTURE1);\r\n\t\tgl.bindTexture(gl.TEXTURE_2D, null);\r\n\t\tgl.bindBuffer(gl.ARRAY_BUFFER, null);\r\n\t\tgl.bindVertexArray(null);\r\n\r\n\t\tthis.threeRenderer.resetState();\r\n\t}\r\n\r\n\r\n\r\n};\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","\r\nimport * as THREE from \"../libs/three.js/build/three.module.js\";\r\nimport {Points} from \"./Points.js\";\r\n\r\nexport class ProfileData {\r\n\tconstructor (profile) {\r\n\t\tthis.profile = profile;\r\n\r\n\t\tthis.segments = [];\r\n\t\tthis.boundingBox = new THREE.Box3();\r\n\r\n\t\tfor (let i = 0; i < profile.points.length - 1; i++) {\r\n\t\t\tlet start = profile.points[i];\r\n\t\t\tlet end = profile.points[i + 1];\r\n\r\n\t\t\tlet startGround = new THREE.Vector3(start.x, start.y, 0);\r\n\t\t\tlet endGround = new THREE.Vector3(end.x, end.y, 0);\r\n\r\n\t\t\tlet center = new THREE.Vector3().addVectors(endGround, startGround).multiplyScalar(0.5);\r\n\t\t\tlet length = startGround.distanceTo(endGround);\r\n\t\t\tlet side = new THREE.Vector3().subVectors(endGround, startGround).normalize();\r\n\t\t\tlet up = new THREE.Vector3(0, 0, 1);\r\n\t\t\tlet forward = new THREE.Vector3().crossVectors(side, up).normalize();\r\n\t\t\tlet N = forward;\r\n\t\t\tlet cutPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(N, startGround);\r\n\t\t\tlet halfPlane = new THREE.Plane().setFromNormalAndCoplanarPoint(side, center);\r\n\r\n\t\t\tlet segment = {\r\n\t\t\t\tstart: start,\r\n\t\t\t\tend: end,\r\n\t\t\t\tcutPlane: cutPlane,\r\n\t\t\t\thalfPlane: halfPlane,\r\n\t\t\t\tlength: length,\r\n\t\t\t\tpoints: new Points()\r\n\t\t\t};\r\n\r\n\t\t\tthis.segments.push(segment);\r\n\t\t}\r\n\t}\r\n\r\n\tsize () {\r\n\t\tlet size = 0;\r\n\t\tfor (let segment of this.segments) {\r\n\t\t\tsize += segment.points.numPoints;\r\n\t\t}\r\n\r\n\t\treturn size;\r\n\t}\r\n};\r\n\r\nexport class ProfileRequest {\r\n\tconstructor (pointcloud, profile, maxDepth, callback) {\r\n\t\tthis.pointcloud = pointcloud;\r\n\t\tthis.profile = profile;\r\n\t\tthis.maxDepth = maxDepth || Number.MAX_VALUE;\r\n\t\tthis.callback = callback;\r\n\t\tthis.temporaryResult = new ProfileData(this.profile);\r\n\t\tthis.pointsServed = 0;\r\n\t\tthis.highestLevelServed = 0;\r\n\r\n\t\tthis.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; });\r\n\r\n\t\tthis.initialize();\r\n\t}\r\n\r\n\tinitialize () {\r\n\t\tthis.priorityQueue.push({node: this.pointcloud.pcoGeometry.root, weight: Infinity});\r\n\t};\r\n\r\n\t// traverse the node and add intersecting descendants to queue\r\n\ttraverse (node) {\r\n\t\tlet stack = [];\r\n\t\tfor (let i = 0; i < 8; i++) {\r\n\t\t\tlet child = node.children[i];\r\n\t\t\tif (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) {\r\n\t\t\t\tstack.push(child);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\twhile (stack.length > 0) {\r\n\t\t\tlet node = stack.pop();\r\n\t\t\tlet weight = node.boundingSphere.radius;\r\n\r\n\t\t\tthis.priorityQueue.push({node: node, weight: weight});\r\n\r\n\t\t\t// add children that intersect the cutting plane\r\n\t\t\tif (node.level < this.maxDepth) {\r\n\t\t\t\tfor (let i = 0; i < 8; i++) {\r\n\t\t\t\t\tlet child = node.children[i];\r\n\t\t\t\t\tif (child && this.pointcloud.nodeIntersectsProfile(child, this.profile)) {\r\n\t\t\t\t\t\tstack.push(child);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tif(!this.updateGeneratorInstance){\r\n\t\t\tthis.updateGeneratorInstance = this.updateGenerator();\r\n\t\t}\r\n\r\n\t\tlet result = this.updateGeneratorInstance.next();\r\n\t\tif(result.done){\r\n\t\t\tthis.updateGeneratorInstance = null;\r\n\t\t}\r\n\t}\r\n\r\n\t* updateGenerator(){\r\n\t\t// load nodes in queue\r\n\t\t// if hierarchy expands, also load nodes from expanded hierarchy\r\n\t\t// once loaded, add data to this.points and remove node from queue\r\n\t\t// only evaluate 1-50 nodes per frame to maintain responsiveness\r\n\r\n\t\tlet start = performance.now();\r\n\r\n\t\tlet maxNodesPerUpdate = 1;\r\n\t\tlet intersectedNodes = [];\r\n\r\n\t\tfor (let i = 0; i < Math.min(maxNodesPerUpdate, this.priorityQueue.size()); i++) {\r\n\t\t\tlet element = this.priorityQueue.pop();\r\n\t\t\tlet node = element.node;\r\n\r\n\t\t\tif(node.level > this.maxDepth){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tif (node.loaded) {\r\n\t\t\t\t// add points to result\r\n\t\t\t\tintersectedNodes.push(node);\r\n\t\t\t\texports.lru.touch(node);\r\n\t\t\t\tthis.highestLevelServed = Math.max(node.getLevel(), this.highestLevelServed);\r\n\r\n\t\t\t\tvar geom = node.pcoGeometry;\r\n\t\t\t\tvar hierarchyStepSize = geom ? geom.hierarchyStepSize : 1;\r\n\r\n\t\t\t\tvar doTraverse = node.getLevel() === 0 ||\r\n\t\t\t\t\t(node.level % hierarchyStepSize === 0 && node.hasChildren);\r\n\r\n\t\t\t\tif (doTraverse) {\r\n\t\t\t\t\tthis.traverse(node);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnode.load();\r\n\t\t\t\tthis.priorityQueue.push(element);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (intersectedNodes.length > 0) {\r\n\r\n\t\t\tfor(let done of this.getPointsInsideProfile(intersectedNodes, this.temporaryResult)){\r\n\t\t\t\tif(!done){\r\n\t\t\t\t\t//console.log(\"updateGenerator yields\");\r\n\t\t\t\t\tyield false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.temporaryResult.size() > 100) {\r\n\t\t\t\tthis.pointsServed += this.temporaryResult.size();\r\n\t\t\t\tthis.callback.onProgress({request: this, points: this.temporaryResult});\r\n\t\t\t\tthis.temporaryResult = new ProfileData(this.profile);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.priorityQueue.size() === 0) {\r\n\t\t\t// we're done! inform callback and remove from pending requests\r\n\r\n\t\t\tif (this.temporaryResult.size() > 0) {\r\n\t\t\t\tthis.pointsServed += this.temporaryResult.size();\r\n\t\t\t\tthis.callback.onProgress({request: this, points: this.temporaryResult});\r\n\t\t\t\tthis.temporaryResult = new ProfileData(this.profile);\r\n\t\t\t}\r\n\r\n\t\t\tthis.callback.onFinish({request: this});\r\n\r\n\t\t\tlet index = this.pointcloud.profileRequests.indexOf(this);\r\n\t\t\tif (index >= 0) {\r\n\t\t\t\tthis.pointcloud.profileRequests.splice(index, 1);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tyield true;\r\n\t};\r\n\r\n\t* getAccepted(numPoints, node, matrix, segment, segmentDir, points, totalMileage){\r\n\t\tlet checkpoint = performance.now();\r\n\r\n\t\tlet accepted = new Uint32Array(numPoints);\r\n\t\tlet mileage = new Float64Array(numPoints);\r\n\t\tlet acceptedPositions = new Float32Array(numPoints * 3);\r\n\t\tlet numAccepted = 0;\r\n\r\n\t\tlet pos = new THREE.Vector3();\r\n\t\tlet svp = new THREE.Vector3();\r\n\r\n\t\tlet view = new Float32Array(node.geometry.attributes.position.array);\r\n\r\n\t\tfor (let i = 0; i < numPoints; i++) {\r\n\r\n\t\t\tpos.set(\r\n\t\t\t\tview[i * 3 + 0],\r\n\t\t\t\tview[i * 3 + 1],\r\n\t\t\t\tview[i * 3 + 2]);\r\n\r\n\t\t\tpos.applyMatrix4(matrix);\r\n\t\t\tlet distance = Math.abs(segment.cutPlane.distanceToPoint(pos));\r\n\t\t\tlet centerDistance = Math.abs(segment.halfPlane.distanceToPoint(pos));\r\n\r\n\t\t\tif (distance < this.profile.width / 2 && centerDistance < segment.length / 2) {\r\n\t\t\t\tsvp.subVectors(pos, segment.start);\r\n\t\t\t\tlet localMileage = segmentDir.dot(svp);\r\n\r\n\t\t\t\taccepted[numAccepted] = i;\r\n\t\t\t\tmileage[numAccepted] = localMileage + totalMileage;\r\n\t\t\t\tpoints.boundingBox.expandByPoint(pos);\r\n\r\n\t\t\t\tpos.sub(this.pointcloud.position);\r\n\r\n\t\t\t\tacceptedPositions[3 * numAccepted + 0] = pos.x;\r\n\t\t\t\tacceptedPositions[3 * numAccepted + 1] = pos.y;\r\n\t\t\t\tacceptedPositions[3 * numAccepted + 2] = pos.z;\r\n\r\n\t\t\t\tnumAccepted++;\r\n\t\t\t}\r\n\r\n\t\t\tif((i % 1000) === 0){\r\n\t\t\t\tlet duration = performance.now() - checkpoint;\r\n\t\t\t\tif(duration > 4){\r\n\t\t\t\t\t//console.log(`getAccepted yield after ${duration}ms`);\r\n\t\t\t\t\tyield false;\r\n\t\t\t\t\tcheckpoint = performance.now();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\taccepted = accepted.subarray(0, numAccepted);\r\n\t\tmileage = mileage.subarray(0, numAccepted);\r\n\t\tacceptedPositions = acceptedPositions.subarray(0, numAccepted * 3);\r\n\r\n\t\t//let end = performance.now();\r\n\t\t//let duration = end - start;\r\n\t\t//console.log(\"accepted duration \", duration)\r\n\r\n\t\t//console.log(`getAccepted finished`);\r\n\r\n\t\tyield [accepted, mileage, acceptedPositions];\r\n\t}\r\n\r\n\t* getPointsInsideProfile(nodes, target){\r\n\t\tlet checkpoint = performance.now();\r\n\t\tlet totalMileage = 0;\r\n\r\n\t\tlet pointsProcessed = 0;\r\n\r\n\t\tfor (let segment of target.segments) {\r\n\t\t\tfor (let node of nodes) {\r\n\t\t\t\tlet numPoints = node.numPoints;\r\n\t\t\t\tlet geometry = node.geometry;\r\n\r\n\t\t\t\tif(!numPoints){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{ // skip if current node doesn't intersect current segment\r\n\t\t\t\t\tlet bbWorld = node.boundingBox.clone().applyMatrix4(this.pointcloud.matrixWorld);\r\n\t\t\t\t\tlet bsWorld = bbWorld.getBoundingSphere(new THREE.Sphere());\r\n\r\n\t\t\t\t\tlet start = new THREE.Vector3(segment.start.x, segment.start.y, bsWorld.center.z);\r\n\t\t\t\t\tlet end = new THREE.Vector3(segment.end.x, segment.end.y, bsWorld.center.z);\r\n\r\n\t\t\t\t\tlet closest = new THREE.Line3(start, end).closestPointToPoint(bsWorld.center, true, new THREE.Vector3());\r\n\t\t\t\t\tlet distance = closest.distanceTo(bsWorld.center);\r\n\r\n\t\t\t\t\tlet intersects = (distance < (bsWorld.radius + target.profile.width));\r\n\r\n\t\t\t\t\tif(!intersects){\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//{// DEBUG\r\n\t\t\t\t//\tconsole.log(node.name);\r\n\t\t\t\t//\tlet boxHelper = new Potree.Box3Helper(node.getBoundingBox());\r\n\t\t\t\t//\tboxHelper.matrixAutoUpdate = false;\r\n\t\t\t\t//\tboxHelper.matrix.copy(viewer.scene.pointclouds[0].matrixWorld);\r\n\t\t\t\t//\tviewer.scene.scene.add(boxHelper);\r\n\t\t\t\t//}\r\n\r\n\t\t\t\tlet sv = new THREE.Vector3().subVectors(segment.end, segment.start).setZ(0);\r\n\t\t\t\tlet segmentDir = sv.clone().normalize();\r\n\r\n\t\t\t\tlet points = new Points();\r\n\r\n\t\t\t\tlet nodeMatrix = new THREE.Matrix4().makeTranslation(...node.boundingBox.min.toArray());\r\n\r\n\t\t\t\tlet matrix = new THREE.Matrix4().multiplyMatrices(\r\n\t\t\t\t\tthis.pointcloud.matrixWorld, nodeMatrix);\r\n\r\n\t\t\t\tpointsProcessed = pointsProcessed + numPoints;\r\n\r\n\t\t\t\tlet accepted = null;\r\n\t\t\t\tlet mileage = null;\r\n\t\t\t\tlet acceptedPositions = null;\r\n\t\t\t\tfor(let result of this.getAccepted(numPoints, node, matrix, segment, segmentDir, points,totalMileage)){\r\n\t\t\t\t\tif(!result){\r\n\t\t\t\t\t\tlet duration = performance.now() - checkpoint;\r\n\t\t\t\t\t\t//console.log(`getPointsInsideProfile yield after ${duration}ms`);\r\n\t\t\t\t\t\tyield false;\r\n\t\t\t\t\t\tcheckpoint = performance.now();\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t[accepted, mileage, acceptedPositions] = result;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet duration = performance.now() - checkpoint;\r\n\t\t\t\tif(duration > 4){\r\n\t\t\t\t\t//console.log(`getPointsInsideProfile yield after ${duration}ms`);\r\n\t\t\t\t\tyield false;\r\n\t\t\t\t\tcheckpoint = performance.now();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tpoints.data.position = acceptedPositions;\r\n\r\n\t\t\t\tlet relevantAttributes = Object.keys(geometry.attributes).filter(a => ![\"position\", \"indices\"].includes(a));\r\n\t\t\t\tfor(let attributeName of relevantAttributes){\r\n\r\n\t\t\t\t\tlet attribute = geometry.attributes[attributeName];\r\n\t\t\t\t\tlet numElements = attribute.array.length / numPoints;\r\n\r\n\t\t\t\t\tif(numElements !== parseInt(numElements)){\r\n\t\t\t\t\t\tdebugger;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet Type = attribute.array.constructor;\r\n\r\n\t\t\t\t\tlet filteredBuffer = new Type(numElements * accepted.length);\r\n\r\n\t\t\t\t\tlet source = attribute.array;\r\n\t\t\t\t\tlet target = filteredBuffer;\r\n\r\n\t\t\t\t\tfor(let i = 0; i < accepted.length; i++){\r\n\r\n\t\t\t\t\t\tlet index = accepted[i];\r\n\r\n\t\t\t\t\t\tlet start = index * numElements;\r\n\t\t\t\t\t\tlet end = start + numElements;\r\n\t\t\t\t\t\tlet sub = source.subarray(start, end);\r\n\r\n\t\t\t\t\t\ttarget.set(sub, i * numElements);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpoints.data[attributeName] = filteredBuffer;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tpoints.data['mileage'] = mileage;\r\n\t\t\t\tpoints.numPoints = accepted.length;\r\n\r\n\t\t\t\tsegment.points.add(points);\r\n\t\t\t}\r\n\r\n\t\t\ttotalMileage += segment.length;\r\n\t\t}\r\n\r\n\t\tfor (let segment of target.segments) {\r\n\t\t\ttarget.boundingBox.union(segment.points.boundingBox);\r\n\t\t}\r\n\r\n\t\t//console.log(`getPointsInsideProfile finished`);\r\n\t\tyield true;\r\n\t};\r\n\r\n\tfinishLevelThenCancel () {\r\n\t\tif (this.cancelRequested) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.maxDepth = this.highestLevelServed;\r\n\t\tthis.cancelRequested = true;\r\n\r\n\t\t//console.log(`maxDepth: ${this.maxDepth}`);\r\n\t};\r\n\r\n\tcancel () {\r\n\t\tthis.callback.onCancel();\r\n\r\n\t\tthis.priorityQueue = new BinaryHeap(function (x) { return 1 / x.weight; });\r\n\r\n\t\tlet index = this.pointcloud.profileRequests.indexOf(this);\r\n\t\tif (index >= 0) {\r\n\t\t\tthis.pointcloud.profileRequests.splice(index, 1);\r\n\t\t}\r\n\t};\r\n}\r\n","\r\nexport class Version{\r\n\r\n\tconstructor(version){\r\n\t\tthis.version = version;\r\n\t\tlet vmLength = (version.indexOf('.') === -1) ? version.length : version.indexOf('.');\r\n\t\tthis.versionMajor = parseInt(version.substr(0, vmLength));\r\n\t\tthis.versionMinor = parseInt(version.substr(vmLength + 1));\r\n\t\tif (this.versionMinor.length === 0) {\r\n\t\t\tthis.versionMinor = 0;\r\n\t\t}\r\n\t}\r\n\r\n\tnewerThan(version){\r\n\t\tlet v = new Version(version);\r\n\r\n\t\tif (this.versionMajor > v.versionMajor) {\r\n\t\t\treturn true;\r\n\t\t} else if (this.versionMajor === v.versionMajor && this.versionMinor > v.versionMinor) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tequalOrHigher(version){\r\n\t\tlet v = new Version(version);\r\n\r\n\t\tif (this.versionMajor > v.versionMajor) {\r\n\t\t\treturn true;\r\n\t\t} else if (this.versionMajor === v.versionMajor && this.versionMinor >= v.versionMinor) {\r\n\t\t\treturn true;\r\n\t\t} else {\r\n\t\t\treturn false;\r\n\t\t}\r\n\t}\r\n\r\n\tupTo(version){\r\n\t\treturn !this.newerThan(version);\r\n\t}\r\n\r\n}\r\n\r\n\r\n","\r\nexport class WorkerPool{\r\n\tconstructor(){\r\n\t\tthis.workers = {};\r\n\t}\r\n\r\n\tgetWorker(url){\r\n\t\tif (!this.workers[url]){\r\n\t\t\tthis.workers[url] = [];\r\n\t\t}\r\n\r\n\t\tif (this.workers[url].length === 0){\r\n\t\t\tlet worker = new Worker(url);\r\n\t\t\tthis.workers[url].push(worker);\r\n\t\t}\r\n\r\n\t\tlet worker = this.workers[url].pop();\r\n\r\n\t\treturn worker;\r\n\t}\r\n\r\n\treturnWorker(url, worker){\r\n\t\tthis.workers[url].push(worker);\r\n\t}\r\n};\r\n\r\n//Potree.workerPool = new Potree.WorkerPool();\r\n","\r\n\r\nfunction createPointcloudData(pointcloud) {\r\n\r\n\tlet material = pointcloud.material;\r\n\r\n\tlet ranges = [];\r\n\t\r\n\tfor(let [name, value] of material.ranges){\r\n\t\tranges.push({\r\n\t\t\tname: name,\r\n\t\t\tvalue: value,\r\n\t\t});\r\n\t}\r\n\r\n\tif(typeof material.elevationRange[0] === \"number\"){\r\n\t\tranges.push({\r\n\t\t\tname: \"elevationRange\",\r\n\t\t\tvalue: material.elevationRange,\r\n\t\t});\r\n\t}\r\n\tif(typeof material.intensityRange[0] === \"number\"){\r\n\t\tranges.push({\r\n\t\t\tname: \"intensityRange\",\r\n\t\t\tvalue: material.intensityRange,\r\n\t\t});\r\n\t}\r\n\r\n\tlet pointSizeTypeName = Object.entries(Potree.PointSizeType).find(e => e[1] === material.pointSizeType)[0];\r\n\r\n\tlet jsonMaterial = {\r\n\t\tactiveAttributeName: material.activeAttributeName,\r\n\t\tranges: ranges,\r\n\t\tsize: material.size,\r\n\t\tminSize: material.minSize,\r\n\t\tpointSizeType: pointSizeTypeName,\r\n\t\tmatcap: material.matcap,\r\n\t};\r\n\r\n\tconst pcdata = {\r\n\t\tname: pointcloud.name,\r\n\t\turl: pointcloud.pcoGeometry.url,\r\n\t\tposition: pointcloud.position.toArray(),\r\n\t\trotation: pointcloud.rotation.toArray(),\r\n\t\tscale: pointcloud.scale.toArray(),\r\n\t\tmaterial: jsonMaterial,\r\n\t};\r\n\r\n\treturn pcdata;\r\n}\r\n\r\nfunction createProfileData(profile){\r\n\tconst data = {\r\n\t\tuuid: profile.uuid,\r\n\t\tname: profile.name,\r\n\t\tpoints: profile.points.map(p => p.toArray()),\r\n\t\theight: profile.height,\r\n\t\twidth: profile.width,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createVolumeData(volume){\r\n\tconst data = {\r\n\t\tuuid: volume.uuid,\r\n\t\ttype: volume.constructor.name,\r\n\t\tname: volume.name,\r\n\t\tposition: volume.position.toArray(),\r\n\t\trotation: volume.rotation.toArray(),\r\n\t\tscale: volume.scale.toArray(),\r\n\t\tvisible: volume.visible,\r\n\t\tclip: volume.clip,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createCameraAnimationData(animation){\r\n\r\n\tconst controlPoints = animation.controlPoints.map( cp => {\r\n\t\tconst cpdata = {\r\n\t\t\tposition: cp.position.toArray(),\r\n\t\t\ttarget: cp.target.toArray(),\r\n\t\t};\r\n\r\n\t\treturn cpdata;\r\n\t});\r\n\r\n\tconst data = {\r\n\t\tuuid: animation.uuid,\r\n\t\tname: animation.name,\r\n\t\tduration: animation.duration,\r\n\t\tt: animation.t,\r\n\t\tcurveType: animation.curveType,\r\n\t\tvisible: animation.visible,\r\n\t\tcontrolPoints: controlPoints,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createMeasurementData(measurement){\r\n\r\n\tconst data = {\r\n\t\tuuid: measurement.uuid,\r\n\t\tname: measurement.name,\r\n\t\tpoints: measurement.points.map(p => p.position.toArray()),\r\n\t\tshowDistances: measurement.showDistances,\r\n\t\tshowCoordinates: measurement.showCoordinates,\r\n\t\tshowArea: measurement.showArea,\r\n\t\tclosed: measurement.closed,\r\n\t\tshowAngles: measurement.showAngles,\r\n\t\tshowHeight: measurement.showHeight,\r\n\t\tshowCircle: measurement.showCircle,\r\n\t\tshowAzimuth: measurement.showAzimuth,\r\n\t\tshowEdges: measurement.showEdges,\r\n\t\tcolor: measurement.color.toArray(),\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createOrientedImagesData(images){\r\n\tconst data = {\r\n\t\tcameraParamsPath: images.cameraParamsPath,\r\n\t\timageParamsPath: images.imageParamsPath,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createGeopackageData(geopackage){\r\n\tconst data = {\r\n\t\tpath: geopackage.path,\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createAnnotationData(annotation){\r\n\r\n\tconst data = {\r\n\t\tuuid: annotation.uuid,\r\n\t\ttitle: annotation.title.toString(),\r\n\t\tdescription: annotation.description,\r\n\t\tposition: annotation.position.toArray(),\r\n\t\toffset: annotation.offset.toArray(),\r\n\t\tchildren: [],\r\n\t};\r\n\r\n\tif(annotation.cameraPosition){\r\n\t\tdata.cameraPosition = annotation.cameraPosition.toArray();\r\n\t}\r\n\r\n\tif(annotation.cameraTarget){\r\n\t\tdata.cameraTarget = annotation.cameraTarget.toArray();\r\n\t}\r\n\r\n\tif(typeof annotation.radius !== \"undefined\"){\r\n\t\tdata.radius = annotation.radius;\r\n\t}\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createAnnotationsData(viewer){\r\n\t\r\n\tconst map = new Map();\r\n\r\n\tviewer.scene.annotations.traverseDescendants(a => {\r\n\t\tconst aData = createAnnotationData(a);\r\n\r\n\t\tmap.set(a, aData);\r\n\t});\r\n\r\n\tfor(const [annotation, data] of map){\r\n\t\tfor(const child of annotation.children){\r\n\t\t\tconst childData = map.get(child);\r\n\t\t\tdata.children.push(childData);\r\n\t\t}\r\n\t}\r\n\r\n\tconst annotations = viewer.scene.annotations.children.map(a => map.get(a));\r\n\r\n\treturn annotations;\r\n}\r\n\r\nfunction createSettingsData(viewer){\r\n\treturn {\r\n\t\tpointBudget: viewer.getPointBudget(),\r\n\t\tfov: viewer.getFOV(),\r\n\t\tedlEnabled: viewer.getEDLEnabled(),\r\n\t\tedlRadius: viewer.getEDLRadius(),\r\n\t\tedlStrength: viewer.getEDLStrength(),\r\n\t\tbackground: viewer.getBackground(),\r\n\t\tminNodeSize: viewer.getMinNodeSize(),\r\n\t\tshowBoundingBoxes: viewer.getShowBoundingBox(),\r\n\t};\r\n}\r\n\r\nfunction createSceneContentData(viewer){\r\n\r\n\tconst data = [];\r\n\r\n\tconst potreeObjects = [];\r\n\r\n\tviewer.scene.scene.traverse(node => {\r\n\t\tif(node.potree){\r\n\t\t\tpotreeObjects.push(node);\r\n\t\t}\r\n\t});\r\n\r\n\tfor(const object of potreeObjects){\r\n\t\t\r\n\t\tif(object.potree.file){\r\n\t\t\tconst saveObject = {\r\n\t\t\t\tfile: object.potree.file,\r\n\t\t\t};\r\n\r\n\t\t\tdata.push(saveObject);\r\n\t\t}\r\n\r\n\r\n\t}\r\n\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createViewData(viewer){\r\n\tconst view = viewer.scene.view;\r\n\r\n\tconst data = {\r\n\t\tposition: view.position.toArray(),\r\n\t\ttarget: view.getPivot().toArray(),\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n\r\nfunction createClassificationData(viewer){\r\n\tconst classifications = viewer.classifications;\r\n\r\n\tconst data = classifications;\r\n\r\n\treturn data;\r\n}\r\n\r\nexport function saveProject(viewer) {\r\n\r\n\tconst scene = viewer.scene;\r\n\r\n\tconst data = {\r\n\t\ttype: \"Potree\",\r\n\t\tversion: 1.7,\r\n\t\tsettings: createSettingsData(viewer),\r\n\t\tview: createViewData(viewer),\r\n\t\tclassification: createClassificationData(viewer),\r\n\t\tpointclouds: scene.pointclouds.map(createPointcloudData),\r\n\t\tmeasurements: scene.measurements.map(createMeasurementData),\r\n\t\tvolumes: scene.volumes.map(createVolumeData),\r\n\t\tcameraAnimations: scene.cameraAnimations.map(createCameraAnimationData),\r\n\t\tprofiles: scene.profiles.map(createProfileData),\r\n\t\tannotations: createAnnotationsData(viewer),\r\n\t\torientedImages: scene.orientedImages.map(createOrientedImagesData),\r\n\t\tgeopackages: scene.geopackages.map(createGeopackageData),\r\n\t\t// objects: createSceneContentData(viewer),\r\n\t};\r\n\r\n\treturn data;\r\n}\r\n","\r\nimport * as THREE from \"../../../libs/three.js/build/three.module.js\";\r\nimport { EventDispatcher } from \"../../EventDispatcher.js\";\r\nimport { Utils } from \"../../utils.js\";\r\nimport {Line2} from \"../../../libs/three.js/lines/Line2.js\";\r\nimport {LineGeometry} from \"../../../libs/three.js/lines/LineGeometry.js\";\r\nimport {LineMaterial} from \"../../../libs/three.js/lines/LineMaterial.js\";\r\n\r\n\r\nclass ControlPoint{\r\n\r\n\tconstructor(){\r\n\t\tthis.position = new THREE.Vector3(0, 0, 0);\r\n\t\tthis.target = new THREE.Vector3(0, 0, 0);\r\n\t\tthis.positionHandle = null;\r\n\t\tthis.targetHandle = null;\r\n\t}\r\n\r\n};\r\n\r\n\r\n\r\nexport class CameraAnimation extends EventDispatcher{\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\t\t\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.selectedElement = null;\r\n\r\n\t\tthis.controlPoints = [];\r\n\r\n\t\tthis.uuid = THREE.Math.generateUUID();\r\n\r\n\t\tthis.node = new THREE.Object3D();\r\n\t\tthis.node.name = \"camera animation\";\r\n\t\tthis.viewer.scene.scene.add(this.node);\r\n\r\n\t\tthis.frustum = this.createFrustum();\r\n\t\tthis.node.add(this.frustum);\r\n\r\n\t\tthis.name = \"Camera Animation\";\r\n\t\tthis.duration = 5;\r\n\t\tthis.t = 0;\r\n\t\t// \"centripetal\", \"chordal\", \"catmullrom\"\r\n\t\tthis.curveType = \"centripetal\" \r\n\t\tthis.visible = true;\r\n\r\n\t\tthis.createUpdateHook();\r\n\t\tthis.createPath();\r\n\t}\r\n\r\n\tstatic defaultFromView(viewer){\r\n\t\tconst animation = new CameraAnimation(viewer);\r\n\r\n\t\tconst camera = viewer.scene.getActiveCamera();\r\n\t\tconst target = viewer.scene.view.getPivot();\r\n\r\n\t\tconst cpCenter = new THREE.Vector3(\r\n\t\t\t0.3 * camera.position.x + 0.7 * target.x,\r\n\t\t\t0.3 * camera.position.y + 0.7 * target.y,\r\n\t\t\t0.3 * camera.position.z + 0.7 * target.z,\r\n\t\t);\r\n\r\n\t\tconst targetCenter = new THREE.Vector3(\r\n\t\t\t0.05 * camera.position.x + 0.95 * target.x,\r\n\t\t\t0.05 * camera.position.y + 0.95 * target.y,\r\n\t\t\t0.05 * camera.position.z + 0.95 * target.z,\r\n\t\t);\r\n\r\n\t\tconst r = camera.position.distanceTo(target) * 0.3;\r\n\r\n\t\t//const dir = target.clone().sub(camera.position).normalize();\r\n\t\tconst angle = Utils.computeAzimuth(camera.position, target);\r\n\r\n\t\tconst n = 5;\r\n\t\tfor(let i = 0; i < n; i++){\r\n\t\t\tlet u = 1.5 * Math.PI * (i / n) + angle;\r\n\r\n\t\t\tconst dx = r * Math.cos(u);\r\n\t\t\tconst dy = r * Math.sin(u);\r\n\r\n\t\t\tconst cpPos = [\r\n\t\t\t\tcpCenter.x + dx,\r\n\t\t\t\tcpCenter.y + dy,\r\n\t\t\t\tcpCenter.z,\r\n\t\t\t];\r\n\r\n\t\t\tconst targetPos = [\r\n\t\t\t\ttargetCenter.x + dx * 0.1,\r\n\t\t\t\ttargetCenter.y + dy * 0.1,\r\n\t\t\t\ttargetCenter.z,\r\n\t\t\t];\r\n\r\n\t\t\tconst cp = animation.createControlPoint();\r\n\t\t\tcp.position.set(...cpPos);\r\n\t\t\tcp.target.set(...targetPos);\r\n\t\t}\r\n\r\n\t\treturn animation;\r\n\t}\r\n\r\n\tcreateUpdateHook(){\r\n\t\tconst viewer = this.viewer;\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\r\n\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\t\t\tconst {width, height} = viewer.renderer.getSize(new THREE.Vector2());\r\n\r\n\t\t\tthis.node.visible = this.visible;\r\n\r\n\t\t\tfor(const cp of this.controlPoints){\r\n\t\t\t\t\r\n\t\t\t\t{ // position\r\n\t\t\t\t\tconst projected = cp.position.clone().project(camera);\r\n\r\n\t\t\t\t\tconst visible = this.visible && (projected.z < 1 && projected.z > -1);\r\n\r\n\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\tconst x = width * (projected.x * 0.5 + 0.5);\r\n\t\t\t\t\t\tconst y = height - height * (projected.y * 0.5 + 0.5);\r\n\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.left = x - cp.positionHandle.svg.clientWidth / 2;\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.top = y - cp.positionHandle.svg.clientHeight / 2;\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.display = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcp.positionHandle.svg.style.display = \"none\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{ // target\r\n\t\t\t\t\tconst projected = cp.target.clone().project(camera);\r\n\r\n\t\t\t\t\tconst visible = this.visible && (projected.z < 1 && projected.z > -1);\r\n\r\n\t\t\t\t\tif(visible){\r\n\t\t\t\t\t\tconst x = width * (projected.x * 0.5 + 0.5);\r\n\t\t\t\t\t\tconst y = height - height * (projected.y * 0.5 + 0.5);\r\n\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.left = x - cp.targetHandle.svg.clientWidth / 2;\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.top = y - cp.targetHandle.svg.clientHeight / 2;\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.display = \"\";\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tcp.targetHandle.svg.style.display = \"none\";\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.line.material.resolution.set(width, height);\r\n\r\n\t\t\tthis.updatePath();\r\n\r\n\t\t\t{ // frustum\r\n\t\t\t\tconst frame = this.at(this.t);\r\n\t\t\t\tconst frustum = this.frustum;\r\n\r\n\t\t\t\tfrustum.position.copy(frame.position);\r\n\t\t\t\tfrustum.lookAt(...frame.target.toArray());\r\n\t\t\t\tfrustum.scale.set(20, 20, 20);\r\n\r\n\t\t\t\tfrustum.material.resolution.set(width, height);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\t}\r\n\r\n\tcreateControlPoint(index){\r\n\r\n\t\tif(index === undefined){\r\n\t\t\tindex = this.controlPoints.length;\r\n\t\t}\r\n\r\n\t\tconst cp = new ControlPoint();\r\n\r\n\r\n\t\tif(this.controlPoints.length >= 2 && index === 0){\r\n\t\t\tconst cp1 = this.controlPoints[0];\r\n\t\t\tconst cp2 = this.controlPoints[1];\r\n\r\n\t\t\tconst dir = cp1.position.clone().sub(cp2.position).multiplyScalar(0.5);\r\n\t\t\tcp.position.copy(cp1.position).add(dir);\r\n\r\n\t\t\tconst tDir = cp1.target.clone().sub(cp2.target).multiplyScalar(0.5);\r\n\t\t\tcp.target.copy(cp1.target).add(tDir);\r\n\t\t}else if(this.controlPoints.length >= 2 && index === this.controlPoints.length){\r\n\t\t\tconst cp1 = this.controlPoints[this.controlPoints.length - 2];\r\n\t\t\tconst cp2 = this.controlPoints[this.controlPoints.length - 1];\r\n\r\n\t\t\tconst dir = cp2.position.clone().sub(cp1.position).multiplyScalar(0.5);\r\n\t\t\tcp.position.copy(cp1.position).add(dir);\r\n\r\n\t\t\tconst tDir = cp2.target.clone().sub(cp1.target).multiplyScalar(0.5);\r\n\t\t\tcp.target.copy(cp2.target).add(tDir);\r\n\t\t}else if(this.controlPoints.length >= 2){\r\n\t\t\tconst cp1 = this.controlPoints[index - 1];\r\n\t\t\tconst cp2 = this.controlPoints[index];\r\n\r\n\t\t\tcp.position.copy(cp1.position.clone().add(cp2.position).multiplyScalar(0.5));\r\n\t\t\tcp.target.copy(cp1.target.clone().add(cp2.target).multiplyScalar(0.5));\r\n\t\t}\r\n\r\n\t\t// cp.position.copy(viewer.scene.view.position);\r\n\t\t// cp.target.copy(viewer.scene.view.getPivot());\r\n\r\n\t\tcp.positionHandle = this.createHandle(cp.position);\r\n\t\tcp.targetHandle = this.createHandle(cp.target);\r\n\r\n\t\tthis.controlPoints.splice(index, 0, cp);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"controlpoint_added\",\r\n\t\t\tcontrolpoint: cp,\r\n\t\t});\r\n\r\n\t\treturn cp;\r\n\t}\r\n\r\n\tremoveControlPoint(cp){\r\n\t\tthis.controlPoints = this.controlPoints.filter(_cp => _cp !== cp);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"controlpoint_removed\",\r\n\t\t\tcontrolpoint: cp,\r\n\t\t});\r\n\r\n\t\tcp.positionHandle.svg.remove();\r\n\t\tcp.targetHandle.svg.remove();\r\n\r\n\t\t// TODO destroy cp\r\n\t}\r\n\r\n\tcreatePath(){\r\n\r\n\t\t{ // position\r\n\t\t\tconst geometry = new LineGeometry();\r\n\r\n\t\t\tlet material = new LineMaterial({ \r\n\t\t\t\tcolor: 0x00ff00, \r\n\t\t\t\tdashSize: 5, \r\n\t\t\t\tgapSize: 2,\r\n\t\t\t\tlinewidth: 2, \r\n\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t});\r\n\r\n\t\t\tconst line = new Line2(geometry, material);\r\n\r\n\t\t\tthis.line = line;\r\n\t\t\tthis.node.add(line);\r\n\t\t}\r\n\r\n\t\t{ // target\r\n\t\t\tconst geometry = new LineGeometry();\r\n\r\n\t\t\tlet material = new LineMaterial({ \r\n\t\t\t\tcolor: 0x0000ff, \r\n\t\t\t\tdashSize: 5, \r\n\t\t\t\tgapSize: 2,\r\n\t\t\t\tlinewidth: 2, \r\n\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t});\r\n\r\n\t\t\tconst line = new Line2(geometry, material);\r\n\r\n\t\t\tthis.targetLine = line;\r\n\t\t\tthis.node.add(line);\r\n\t\t}\r\n\t}\r\n\r\n\tcreateFrustum(){\r\n\r\n\t\tconst f = 0.3;\r\n\r\n\t\tconst positions = [\r\n\t\t\t 0, 0, 0,\r\n\t\t\t-f, -f, +1,\r\n\r\n\t\t\t 0, 0, 0,\r\n\t\t\t f, -f, +1,\r\n\r\n\t\t\t 0, 0, 0,\r\n\t\t\t f, f, +1,\r\n\r\n\t\t\t 0, 0, 0,\r\n\t\t\t-f, f, +1,\r\n\r\n\t\t\t-f, -f, +1,\r\n\t\t\t f, -f, +1,\r\n\r\n\t\t\t f, -f, +1,\r\n\t\t\t f, f, +1,\r\n\r\n\t\t\t f, f, +1,\r\n\t\t\t-f, f, +1,\r\n\r\n\t\t\t-f, f, +1,\r\n\t\t\t-f, -f, +1,\r\n\t\t];\r\n\r\n\t\tconst geometry = new LineGeometry();\r\n\r\n\t\tgeometry.setPositions(positions);\r\n\t\tgeometry.verticesNeedUpdate = true;\r\n\t\tgeometry.computeBoundingSphere();\r\n\r\n\t\tlet material = new LineMaterial({ \r\n\t\t\tcolor: 0xff0000, \r\n\t\t\tlinewidth: 2, \r\n\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t});\r\n\r\n\t\tconst line = new Line2(geometry, material);\r\n\t\tline.computeLineDistances();\r\n\t\t\r\n\t\treturn line;\r\n\t}\r\n\r\n\tupdatePath(){\r\n\r\n\t\t{ // positions\r\n\t\t\tconst positions = this.controlPoints.map(cp => cp.position);\r\n\t\t\tconst first = positions[0];\r\n\r\n\t\t\tconst curve = new THREE.CatmullRomCurve3(positions);\r\n\t\t\tcurve.curveType = this.curveType;\r\n\r\n\t\t\tconst n = 100;\r\n\r\n\t\t\tconst curvePositions = [];\r\n\t\t\tfor(let k = 0; k <= n; k++){\r\n\t\t\t\tconst t = k / n;\r\n\r\n\t\t\t\tconst position = curve.getPoint(t).sub(first);\r\n\r\n\t\t\t\tcurvePositions.push(position.x, position.y, position.z);\r\n\t\t\t}\r\n\r\n\t\t\tthis.line.geometry.setPositions(curvePositions);\r\n\t\t\tthis.line.geometry.verticesNeedUpdate = true;\r\n\t\t\tthis.line.geometry.computeBoundingSphere();\r\n\t\t\tthis.line.position.copy(first);\r\n\t\t\tthis.line.computeLineDistances();\r\n\r\n\t\t\tthis.cameraCurve = curve;\r\n\t\t}\r\n\r\n\t\t{ // targets\r\n\t\t\tconst positions = this.controlPoints.map(cp => cp.target);\r\n\t\t\tconst first = positions[0];\r\n\r\n\t\t\tconst curve = new THREE.CatmullRomCurve3(positions);\r\n\t\t\tcurve.curveType = this.curveType;\r\n\r\n\t\t\tconst n = 100;\r\n\r\n\t\t\tconst curvePositions = [];\r\n\t\t\tfor(let k = 0; k <= n; k++){\r\n\t\t\t\tconst t = k / n;\r\n\r\n\t\t\t\tconst position = curve.getPoint(t).sub(first);\r\n\r\n\t\t\t\tcurvePositions.push(position.x, position.y, position.z);\r\n\t\t\t}\r\n\r\n\t\t\tthis.targetLine.geometry.setPositions(curvePositions);\r\n\t\t\tthis.targetLine.geometry.verticesNeedUpdate = true;\r\n\t\t\tthis.targetLine.geometry.computeBoundingSphere();\r\n\t\t\tthis.targetLine.position.copy(first);\r\n\t\t\tthis.targetLine.computeLineDistances();\r\n\r\n\t\t\tthis.targetCurve = curve;\r\n\t\t}\r\n\t}\r\n\r\n\tat(t){\r\n\t\t\r\n\t\tif(t > 1){\r\n\t\t\tt = 1;\r\n\t\t}else if(t < 0){\r\n\t\t\tt = 0;\r\n\t\t}\r\n\r\n\t\tconst camPos = this.cameraCurve.getPointAt(t);\r\n\t\tconst target = this.targetCurve.getPointAt(t);\r\n\r\n\t\tconst frame = {\r\n\t\t\tposition: camPos,\r\n\t\t\ttarget: target,\r\n\t\t};\r\n\r\n\t\treturn frame;\r\n\t}\r\n\r\n\tset(t){\r\n\t\tthis.t = t;\r\n\t}\r\n\r\n\tcreateHandle(vector){\r\n\t\t\r\n\t\tconst svgns = \"http://www.w3.org/2000/svg\";\r\n\t\tconst svg = document.createElementNS(svgns, \"svg\");\r\n\r\n\t\tsvg.setAttribute(\"width\", \"2em\");\r\n\t\tsvg.setAttribute(\"height\", \"2em\");\r\n\t\tsvg.setAttribute(\"position\", \"absolute\");\r\n\r\n\t\tsvg.style.left = \"50px\";\r\n\t\tsvg.style.top = \"50px\";\r\n\t\tsvg.style.position = \"absolute\";\r\n\t\tsvg.style.zIndex = \"10000\";\r\n\r\n\t\tconst circle = document.createElementNS(svgns, 'circle');\r\n\t\tcircle.setAttributeNS(null, 'cx', \"1em\");\r\n\t\tcircle.setAttributeNS(null, 'cy', \"1em\");\r\n\t\tcircle.setAttributeNS(null, 'r', \"0.5em\");\r\n\t\tcircle.setAttributeNS(null, 'style', 'fill: red; stroke: black; stroke-width: 0.2em;' );\r\n\t\tsvg.appendChild(circle);\r\n\r\n\r\n\t\tconst element = this.viewer.renderer.domElement.parentElement;\r\n\t\telement.appendChild(svg);\r\n\r\n\r\n\t\tconst startDrag = (evt) => {\r\n\t\t\tthis.selectedElement = svg;\r\n\r\n\t\t\tdocument.addEventListener(\"mousemove\", drag);\r\n\t\t};\r\n\r\n\t\tconst endDrag = (evt) => {\r\n\t\t\tthis.selectedElement = null;\r\n\r\n\t\t\tdocument.removeEventListener(\"mousemove\", drag);\r\n\t\t};\r\n\r\n\t\tconst drag = (evt) => {\r\n\t\t\tif (this.selectedElement) {\r\n\t\t\t\tevt.preventDefault();\r\n\r\n\t\t\t\tconst rect = viewer.renderer.domElement.getBoundingClientRect();\r\n\r\n\t\t\t\tconst x = evt.clientX - rect.x;\r\n\t\t\t\tconst y = evt.clientY - rect.y;\r\n\r\n\t\t\t\tconst {width, height} = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\t\t\tconst camera = this.viewer.scene.getActiveCamera();\r\n\t\t\t\t//const cp = this.controlPoints.find(cp => cp.handle.svg === svg);\r\n\t\t\t\tconst projected = vector.clone().project(camera);\r\n\r\n\t\t\t\tprojected.x = ((x / width) - 0.5) / 0.5;\r\n\t\t\t\tprojected.y = (-(y - height) / height - 0.5) / 0.5;\r\n\r\n\t\t\t\tconst unprojected = projected.clone().unproject(camera);\r\n\t\t\t\tvector.set(unprojected.x, unprojected.y, unprojected.z);\r\n\r\n\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tsvg.addEventListener('mousedown', startDrag);\r\n\t\tsvg.addEventListener('mouseup', endDrag);\r\n\r\n\t\tconst handle = {\r\n\t\t\tsvg: svg,\r\n\t\t};\r\n\r\n\t\treturn handle;\r\n\t}\r\n\r\n\tsetVisible(visible){\r\n\t\tthis.node.visible = visible;\r\n\r\n\t\tconst display = visible ? \"\" : \"none\";\r\n\r\n\t\tfor(const cp of this.controlPoints){\r\n\t\t\tcp.positionHandle.svg.style.display = display;\r\n\t\t\tcp.targetHandle.svg.style.display = display;\r\n\t\t}\r\n\r\n\t\tthis.visible = visible;\r\n\t}\r\n\r\n\tsetDuration(duration){\r\n\t\tthis.duration = duration;\r\n\t}\r\n\r\n\tgetDuration(duration){\r\n\t\treturn this.duration;\r\n\t}\r\n\r\n\tplay(){\r\n\r\n\t\tconst tStart = performance.now();\r\n\t\tconst duration = this.duration;\r\n\r\n\t\tconst originalyVisible = this.visible;\r\n\t\tthis.setVisible(false);\r\n\r\n\t\tconst onUpdate = (delta) => {\r\n\r\n\t\t\tlet tNow = performance.now();\r\n\t\t\tlet elapsed = (tNow - tStart) / 1000;\r\n\t\t\tlet t = elapsed / duration;\r\n\r\n\t\t\tthis.set(t);\r\n\r\n\t\t\tconst frame = this.at(t);\r\n\r\n\t\t\tviewer.scene.view.position.copy(frame.position);\r\n\t\t\tviewer.scene.view.lookAt(frame.target);\r\n\r\n\r\n\t\t\tif(t > 1){\r\n\t\t\t\tthis.setVisible(originalyVisible);\r\n\r\n\t\t\t\tthis.viewer.removeEventListener(\"update\", onUpdate);\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t\tthis.viewer.addEventListener(\"update\", onUpdate);\r\n\r\n\t}\r\n\r\n}\r\n\r\n\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Annotation} from \"../Annotation.js\";\r\nimport {Measure} from \"../utils/Measure.js\";\r\nimport {CameraAnimation} from \"../modules/CameraAnimation/CameraAnimation.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {PointSizeType} from \"../defines.js\";\r\n\r\nfunction loadPointCloud(viewer, data){\r\n\r\n\tlet loadMaterial = (target) => {\r\n\r\n\t\tif(data.material){\r\n\r\n\t\t\tif(data.material.activeAttributeName != null){\r\n\t\t\t\ttarget.activeAttributeName = data.material.activeAttributeName;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.ranges != null){\r\n\t\t\t\tfor(let range of data.material.ranges){\r\n\r\n\t\t\t\t\tif(range.name === \"elevationRange\"){\r\n\t\t\t\t\t\ttarget.elevationRange = range.value;\r\n\t\t\t\t\t}else if(range.name === \"intensityRange\"){\r\n\t\t\t\t\t\ttarget.intensityRange = range.value;\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\ttarget.setRange(range.name, range.value);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.size != null){\r\n\t\t\t\ttarget.size = data.material.size;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.minSize != null){\r\n\t\t\t\ttarget.minSize = data.material.minSize;\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.pointSizeType != null){\r\n\t\t\t\ttarget.pointSizeType = PointSizeType[data.material.pointSizeType];\r\n\t\t\t}\r\n\r\n\t\t\tif(data.material.matcap != null){\r\n\t\t\t\ttarget.matcap = data.material.matcap;\r\n\t\t\t}\r\n\r\n\t\t}else if(data.activeAttributeName != null){\r\n\t\t\ttarget.activeAttributeName = data.activeAttributeName;\r\n\t\t}else{\r\n\t\t\t// no material data\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tconst promise = new Promise((resolve) => {\r\n\r\n\t\tconst names = viewer.scene.pointclouds.map(p => p.name);\r\n\t\tconst alreadyExists = names.includes(data.name);\r\n\r\n\t\tif(alreadyExists){\r\n\t\t\tresolve();\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tPotree.loadPointCloud(data.url, data.name, (e) => {\r\n\t\t\tconst {pointcloud} = e;\r\n\r\n\t\t\tpointcloud.position.set(...data.position);\r\n\t\t\tpointcloud.rotation.set(...data.rotation);\r\n\t\t\tpointcloud.scale.set(...data.scale);\r\n\r\n\t\t\tloadMaterial(pointcloud.material);\r\n\r\n\t\t\tviewer.scene.addPointCloud(pointcloud);\r\n\r\n\t\t\tresolve(pointcloud);\r\n\t\t});\r\n\t});\r\n\r\n\treturn promise;\r\n}\r\n\r\nfunction loadMeasurement(viewer, data){\r\n\r\n\tconst duplicate = viewer.scene.measurements.find(measure => measure.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst measure = new Measure();\r\n\r\n\tmeasure.uuid = data.uuid;\r\n\tmeasure.name = data.name;\r\n\tmeasure.showDistances = data.showDistances;\r\n\tmeasure.showCoordinates = data.showCoordinates;\r\n\tmeasure.showArea = data.showArea;\r\n\tmeasure.closed = data.closed;\r\n\tmeasure.showAngles = data.showAngles;\r\n\tmeasure.showHeight = data.showHeight;\r\n\tmeasure.showCircle = data.showCircle;\r\n\tmeasure.showAzimuth = data.showAzimuth;\r\n\tmeasure.showEdges = data.showEdges;\r\n\t// color\r\n\r\n\tfor(const point of data.points){\r\n\t\tconst pos = new THREE.Vector3(...point);\r\n\t\tmeasure.addMarker(pos);\r\n\t}\r\n\r\n\tviewer.scene.addMeasurement(measure);\r\n\r\n}\r\n\r\nfunction loadVolume(viewer, data){\r\n\r\n\tconst duplicate = viewer.scene.volumes.find(volume => volume.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tlet volume = new Potree[data.type];\r\n\r\n\tvolume.uuid = data.uuid;\r\n\tvolume.name = data.name;\r\n\tvolume.position.set(...data.position);\r\n\tvolume.rotation.set(...data.rotation);\r\n\tvolume.scale.set(...data.scale);\r\n\tvolume.visible = data.visible;\r\n\tvolume.clip = data.clip;\r\n\r\n\tviewer.scene.addVolume(volume);\r\n}\r\n\r\nfunction loadCameraAnimation(viewer, data){\r\n\r\n\tconst duplicate = viewer.scene.cameraAnimations.find(a => a.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst animation = new CameraAnimation(viewer);\r\n\r\n\tanimation.uuid = data.uuid;\r\n\tanimation.name = data.name;\r\n\tanimation.duration = data.duration;\r\n\tanimation.t = data.t;\r\n\tanimation.curveType = data.curveType;\r\n\tanimation.visible = data.visible;\r\n\tanimation.controlPoints = [];\r\n\r\n\tfor(const cpdata of data.controlPoints){\r\n\t\tconst cp = animation.createControlPoint();\r\n\r\n\t\tcp.position.set(...cpdata.position);\r\n\t\tcp.target.set(...cpdata.target);\r\n\t}\r\n\r\n\tviewer.scene.addCameraAnimation(animation);\r\n}\r\n\r\nfunction loadOrientedImages(viewer, images){\r\n\r\n\tconst {cameraParamsPath, imageParamsPath} = images;\r\n\r\n\tconst duplicate = viewer.scene.orientedImages.find(i => i.imageParamsPath === imageParamsPath);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tPotree.OrientedImageLoader.load(cameraParamsPath, imageParamsPath, viewer).then( images => {\r\n\t\tviewer.scene.addOrientedImages(images);\r\n\t});\r\n\r\n}\r\n\r\nfunction loadGeopackage(viewer, geopackage){\r\n\r\n\tconst path = geopackage.path;\r\n\r\n\tconst duplicate = viewer.scene.geopackages.find(i => i.path === path);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst projection = viewer.getProjection();\r\n\r\n\tproj4.defs(\"WGS84\", \"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs\");\r\n\tproj4.defs(\"pointcloud\", projection);\r\n\tconst transform = proj4(\"WGS84\", \"pointcloud\");\r\n\tconst params = {\r\n\t\ttransform: transform,\r\n\t};\r\n\r\n\tPotree.GeoPackageLoader.loadUrl(path, params).then(data => {\r\n\t\tviewer.scene.addGeopackage(data);\r\n\t});\r\n\t\r\n\r\n}\r\n\r\nfunction loadSettings(viewer, data){\r\n\tif(!data){\r\n\t\treturn;\r\n\t}\r\n\r\n\tviewer.setPointBudget(data.pointBudget);\r\n\tviewer.setFOV(data.fov);\r\n\tviewer.setEDLEnabled(data.edlEnabled);\r\n\tviewer.setEDLRadius(data.edlRadius);\r\n\tviewer.setEDLStrength(data.edlStrength);\r\n\tviewer.setBackground(data.background);\r\n\tviewer.setMinNodeSize(data.minNodeSize);\r\n\tviewer.setShowBoundingBox(data.showBoundingBoxes);\r\n}\r\n\r\nfunction loadView(viewer, view){\r\n\tviewer.scene.view.position.set(...view.position);\r\n\tviewer.scene.view.lookAt(...view.target);\r\n}\r\n\r\nfunction loadAnnotationItem(item){\r\n\r\n\tconst annotation = new Annotation({\r\n\t\tposition: item.position,\r\n\t\ttitle: item.title,\r\n\t\tcameraPosition: item.cameraPosition,\r\n\t\tcameraTarget: item.cameraTarget,\r\n\t});\r\n\r\n\r\n\tannotation.description = item.description;\r\n\tannotation.uuid = item.uuid;\r\n\r\n\tif(item.offset){\r\n\t\tannotation.offset.set(...item.offset);\r\n\t}\r\n\r\n\treturn annotation;\r\n}\r\n\r\nfunction loadAnnotations(viewer, data){\r\n\r\n\tif(!data){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst findDuplicate = (item) => {\r\n\r\n\t\tlet duplicate = null;\r\n\r\n\t\tviewer.scene.annotations.traverse( a => {\r\n\t\t\tif(a.uuid === item.uuid){\r\n\t\t\t\tduplicate = a;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn duplicate;\r\n\t};\r\n\r\n\tconst traverse = (item, parent) => {\r\n\r\n\t\tconst duplicate = findDuplicate(item);\r\n\t\tif(duplicate){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst annotation = loadAnnotationItem(item);\r\n\r\n\t\tfor(const childItem of item.children){\r\n\t\t\ttraverse(childItem, annotation);\r\n\t\t}\r\n\r\n\t\tparent.add(annotation);\r\n\r\n\t};\r\n\r\n\tfor(const item of data){\r\n\t\ttraverse(item, viewer.scene.annotations);\r\n\t}\r\n\r\n}\r\n\r\nfunction loadProfile(viewer, data){\r\n\t\r\n\tconst {name, points} = data;\r\n\r\n\tconst duplicate = viewer.scene.profiles.find(profile => profile.uuid === data.uuid);\r\n\tif(duplicate){\r\n\t\treturn;\r\n\t}\r\n\r\n\tlet profile = new Potree.Profile();\r\n\tprofile.name = name;\r\n\tprofile.uuid = data.uuid;\r\n\r\n\tprofile.setWidth(data.width);\r\n\r\n\tfor(const point of points){\r\n\t\tprofile.addMarker(new THREE.Vector3(...point));\r\n\t}\r\n\t\r\n\tviewer.scene.addProfile(profile);\r\n}\r\n\r\nfunction loadClassification(viewer, data){\r\n\tif(!data){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst classifications = data;\r\n\r\n\tviewer.setClassifications(classifications);\r\n}\r\n\r\nexport async function loadProject(viewer, data){\r\n\r\n\tif(data.type !== \"Potree\"){\r\n\t\tconsole.error(\"not a valid Potree project\");\r\n\t\treturn;\r\n\t}\r\n\r\n\tloadSettings(viewer, data.settings);\r\n\r\n\tloadView(viewer, data.view);\r\n\r\n\tconst pointcloudPromises = [];\r\n\tfor(const pointcloud of data.pointclouds){\r\n\t\tconst promise = loadPointCloud(viewer, pointcloud);\r\n\t\tpointcloudPromises.push(promise);\r\n\t}\r\n\r\n\tfor(const measure of data.measurements){\r\n\t\tloadMeasurement(viewer, measure);\r\n\t}\r\n\r\n\tfor(const volume of data.volumes){\r\n\t\tloadVolume(viewer, volume);\r\n\t}\r\n\r\n\tfor(const animation of data.cameraAnimations){\r\n\t\tloadCameraAnimation(viewer, animation);\r\n\t}\r\n\r\n\tfor(const profile of data.profiles){\r\n\t\tloadProfile(viewer, profile);\r\n\t}\r\n\r\n\tif(data.orientedImages){\r\n\t\tfor(const images of data.orientedImages){\r\n\t\t\tloadOrientedImages(viewer, images);\r\n\t\t}\r\n\t}\r\n\r\n\tloadAnnotations(viewer, data.annotations);\r\n\r\n\tloadClassification(viewer, data.classification);\r\n\r\n\t// need to load at least one point cloud that defines the scene projection,\r\n\t// before we can load stuff in other projections such as geopackages\r\n\t//await Promise.any(pointcloudPromises); // (not yet supported)\r\n\tUtils.waitAny(pointcloudPromises).then( () => {\r\n\t\tif(data.geopackages){\r\n\t\t\tfor(const geopackage of data.geopackages){\r\n\t\t\t\tloadGeopackage(viewer, geopackage);\r\n\t\t\t}\r\n\t\t}\r\n\t});\r\n\r\n\tawait Promise.all(pointcloudPromises);\r\n}","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Shaders} from \"../../build/shaders/shaders.js\";\r\n\r\n//\r\n// Algorithm by Christian Boucheny\r\n// shader code taken and adapted from CloudCompare\r\n//\r\n// see\r\n// https://github.com/cloudcompare/trunk/tree/master/plugins/qEDL/shaders/EDL\r\n// http://www.kitware.com/source/home/post/9\r\n// https://tel.archives-ouvertes.fr/tel-00438464/document p. 115+ (french)\r\n\r\nexport class EyeDomeLightingMaterial extends THREE.RawShaderMaterial{\r\n\r\n\tconstructor(parameters = {}){\r\n\t\tsuper();\r\n\r\n\t\tlet uniforms = {\r\n\t\t\tscreenWidth: { type: 'f', \tvalue: 0 },\r\n\t\t\tscreenHeight: { type: 'f', \tvalue: 0 },\r\n\t\t\tedlStrength: { type: 'f', \tvalue: 1.0 },\r\n\t\t\tuNear: { type: 'f', \tvalue: 1.0 },\r\n\t\t\tuFar: { type: 'f', \tvalue: 1.0 },\r\n\t\t\tradius: { type: 'f', \tvalue: 1.0 },\r\n\t\t\tneighbours: { type: '2fv', \tvalue: [] },\r\n\t\t\tdepthMap: { type: 't', \tvalue: null },\r\n\t\t\tuEDLColor: { type: 't', \tvalue: null },\r\n\t\t\tuEDLDepth: { type: 't', \tvalue: null },\r\n\t\t\topacity: { type: 'f',\tvalue: 1.0 },\r\n\t\t\tuProj: { type: \"Matrix4fv\", value: [] },\r\n\t\t};\r\n\r\n\t\tthis.setValues({\r\n\t\t\tuniforms: uniforms,\r\n\t\t\tvertexShader: this.getDefines() + Shaders['edl.vs'],\r\n\t\t\tfragmentShader: this.getDefines() + Shaders['edl.fs'],\r\n\t\t\tlights: false\r\n\t\t});\r\n\r\n\t\tthis.neighbourCount = 8;\r\n\t}\r\n\r\n\tgetDefines() {\r\n\t\tlet defines = '';\r\n\r\n\t\tdefines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\\n';\r\n\r\n\t\treturn defines;\r\n\t}\r\n\r\n\tupdateShaderSource() {\r\n\r\n\t\tlet vs = this.getDefines() + Shaders['edl.vs'];\r\n\t\tlet fs = this.getDefines() + Shaders['edl.fs'];\r\n\r\n\t\tthis.setValues({\r\n\t\t\tvertexShader: vs,\r\n\t\t\tfragmentShader: fs\r\n\t\t});\r\n\r\n\t\tthis.uniforms.neighbours.value = this.neighbours;\r\n\r\n\t\tthis.needsUpdate = true;\r\n\t}\r\n\r\n\tget neighbourCount(){\r\n\t\treturn this._neighbourCount;\r\n\t}\r\n\r\n\tset neighbourCount(value){\r\n\t\tif (this._neighbourCount !== value) {\r\n\t\t\tthis._neighbourCount = value;\r\n\t\t\tthis.neighbours = new Float32Array(this._neighbourCount * 2);\r\n\t\t\tfor (let c = 0; c < this._neighbourCount; c++) {\r\n\t\t\t\tthis.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount);\r\n\t\t\t\tthis.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount);\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n}\r\n\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Shaders} from \"../../build/shaders/shaders.js\";\r\n\r\n\r\nexport class NormalizationEDLMaterial extends THREE.RawShaderMaterial{\r\n\r\n\tconstructor(parameters = {}){\r\n\t\tsuper();\r\n\r\n\t\tlet uniforms = {\r\n\t\t\tscreenWidth: { type: 'f', value: 0 },\r\n\t\t\tscreenHeight: { type: 'f', value: 0 },\r\n\t\t\tedlStrength: { type: 'f', value: 1.0 },\r\n\t\t\tradius: { type: 'f', value: 1.0 },\r\n\t\t\tneighbours: { type: '2fv', value: [] },\r\n\t\t\tuEDLMap: { type: 't', value: null },\r\n\t\t\tuDepthMap: { type: 't', value: null },\r\n\t\t\tuWeightMap: { type: 't', value: null },\r\n\t\t};\r\n\r\n\t\tthis.setValues({\r\n\t\t\tuniforms: uniforms,\r\n\t\t\tvertexShader: this.getDefines() + Shaders['normalize.vs'],\r\n\t\t\tfragmentShader: this.getDefines() + Shaders['normalize_and_edl.fs'],\r\n\t\t});\r\n\r\n\t\tthis.neighbourCount = 8;\r\n\t}\r\n\r\n\tgetDefines() {\r\n\t\tlet defines = '';\r\n\r\n\t\tdefines += '#define NEIGHBOUR_COUNT ' + this.neighbourCount + '\\n';\r\n\r\n\t\treturn defines;\r\n\t}\r\n\r\n\tupdateShaderSource() {\r\n\r\n\t\tlet vs = this.getDefines() + Shaders['normalize.vs'];\r\n\t\tlet fs = this.getDefines() + Shaders['normalize_and_edl.fs'];\r\n\r\n\t\tthis.setValues({\r\n\t\t\tvertexShader: vs,\r\n\t\t\tfragmentShader: fs\r\n\t\t});\r\n\r\n\t\tthis.uniforms.neighbours.value = this.neighbours;\r\n\r\n\t\tthis.needsUpdate = true;\r\n\t}\r\n\r\n\tget neighbourCount(){\r\n\t\treturn this._neighbourCount;\r\n\t}\r\n\r\n\tset neighbourCount(value){\r\n\t\tif (this._neighbourCount !== value) {\r\n\t\t\tthis._neighbourCount = value;\r\n\t\t\tthis.neighbours = new Float32Array(this._neighbourCount * 2);\r\n\t\t\tfor (let c = 0; c < this._neighbourCount; c++) {\r\n\t\t\t\tthis.neighbours[2 * c + 0] = Math.cos(2 * c * Math.PI / this._neighbourCount);\r\n\t\t\t\tthis.neighbours[2 * c + 1] = Math.sin(2 * c * Math.PI / this._neighbourCount);\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateShaderSource();\r\n\t\t}\r\n\t}\r\n\t\r\n}\r\n\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Shaders} from \"../../build/shaders/shaders.js\";\r\n\r\nexport class NormalizationMaterial extends THREE.RawShaderMaterial{\r\n\r\n\tconstructor(parameters = {}){\r\n\t\tsuper();\r\n\r\n\t\tlet uniforms = {\r\n\t\t\tuDepthMap:\t\t{ type: 't', value: null },\r\n\t\t\tuWeightMap:\t\t{ type: 't', value: null },\r\n\t\t};\r\n\r\n\t\tthis.setValues({\r\n\t\t\tuniforms: uniforms,\r\n\t\t\tvertexShader: this.getDefines() + Shaders['normalize.vs'],\r\n\t\t\tfragmentShader: this.getDefines() + Shaders['normalize.fs'],\r\n\t\t});\r\n\t}\r\n\r\n\tgetDefines() {\r\n\t\tlet defines = '';\r\n\r\n\t\treturn defines;\r\n\t}\r\n\r\n\tupdateShaderSource() {\r\n\r\n\t\tlet vs = this.getDefines() + Shaders['normalize.vs'];\r\n\t\tlet fs = this.getDefines() + Shaders['normalize.fs'];\r\n\r\n\t\tthis.setValues({\r\n\t\t\tvertexShader: vs,\r\n\t\t\tfragmentShader: fs\r\n\t\t});\r\n\r\n\t\tthis.needsUpdate = true;\r\n\t}\r\n\r\n}\r\n\r\n","\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Version} from \"../Version.js\";\r\nimport {XHRFactory} from \"../XHRFactory.js\";\r\n\r\n/**\r\n * laslaz code taken and adapted from plas.io js-laslaz\r\n *\thttp://plas.io/\r\n * https://github.com/verma/plasio\r\n *\r\n * Thanks to Uday Verma and Howard Butler\r\n *\r\n */\r\n\r\nexport class LasLazLoader {\r\n\r\n\tconstructor (version, extension) {\r\n\t\tif (typeof (version) === 'string') {\r\n\t\t\tthis.version = new Version(version);\r\n\t\t} else {\r\n\t\t\tthis.version = version;\r\n\t\t}\r\n\r\n\t\tthis.extension = extension;\r\n\t}\r\n\r\n\tstatic progressCB () {\r\n\r\n\t}\r\n\r\n\tload (node) {\r\n\t\tif (node.loaded) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet url = node.getURL();\r\n\r\n\t\tif (this.version.equalOrHigher('1.4')) {\r\n\t\t\turl += `.${this.extension}`;\r\n\t\t}\r\n\r\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\r\n\t\txhr.open('GET', url, true);\r\n\t\txhr.responseType = 'arraybuffer';\r\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\r\n\t\txhr.onreadystatechange = () => {\r\n\t\t\tif (xhr.readyState === 4) {\r\n\t\t\t\tif (xhr.status === 200 || xhr.status === 0) {\r\n\t\t\t\t\tlet buffer = xhr.response;\r\n\t\t\t\t\tthis.parse(node, buffer);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log('Failed to load file! HTTP status: ' + xhr.status + ', file: ' + url);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\txhr.send(null);\r\n\t}\r\n\r\n\tasync parse(node, buffer){\r\n\t\tlet lf = new LASFile(buffer);\r\n\t\tlet handler = new LasLazBatcher(node);\r\n\r\n\t\ttry{\r\n\t\t\t await lf.open();\r\n\t\t\t lf.isOpen = true;\r\n\t\t}catch(e){\r\n\t\t\tconsole.log(\"failed to open file. :(\");\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet header = await lf.getHeader();\r\n\r\n\t\tlet skip = 1;\r\n\t\tlet totalRead = 0;\r\n\t\tlet totalToRead = (skip <= 1 ? header.pointsCount : header.pointsCount / skip);\r\n\r\n\t\tlet hasMoreData = true;\r\n\r\n\t\twhile(hasMoreData){\r\n\t\t\tlet data = await lf.readData(1000 * 1000, 0, skip);\r\n\r\n\t\t\thandler.push(new LASDecoder(data.buffer,\r\n\t\t\t\theader.pointsFormatId,\r\n\t\t\t\theader.pointsStructSize,\r\n\t\t\t\tdata.count,\r\n\t\t\t\theader.scale,\r\n\t\t\t\theader.offset,\r\n\t\t\t\theader.mins, header.maxs));\r\n\r\n\t\t\ttotalRead += data.count;\r\n\t\t\tLasLazLoader.progressCB(totalRead / totalToRead);\r\n\r\n\t\t\thasMoreData = data.hasMoreData;\r\n\t\t}\r\n\r\n\t\theader.totalRead = totalRead;\r\n\t\theader.versionAsString = lf.versionAsString;\r\n\t\theader.isCompressed = lf.isCompressed;\r\n\r\n\t\tLasLazLoader.progressCB(1);\r\n\r\n\t\ttry{\r\n\t\t\tawait lf.close();\r\n\r\n\t\t\tlf.isOpen = false;\r\n\t\t}catch(e){\r\n\t\t\tconsole.error(\"failed to close las/laz file!!!\");\r\n\t\t\t\r\n\t\t\tthrow e;\r\n\t\t}\r\n\t}\r\n\r\n\thandle (node, url) {\r\n\r\n\t}\r\n};\r\n\r\nexport class LasLazBatcher{\r\n\r\n\tconstructor (node) {\r\n\t\tthis.node = node;\r\n\t}\r\n\r\n\tpush (lasBuffer) {\r\n\t\tconst workerPath = Potree.scriptPath + '/workers/LASDecoderWorker.js';\r\n\t\tconst worker = Potree.workerPool.getWorker(workerPath);\r\n\t\tconst node = this.node;\r\n\t\tconst pointAttributes = node.pcoGeometry.pointAttributes;\r\n\r\n\t\tworker.onmessage = (e) => {\r\n\t\t\tlet geometry = new THREE.BufferGeometry();\r\n\t\t\tlet numPoints = lasBuffer.pointsCount;\r\n\r\n\t\t\tlet positions = new Float32Array(e.data.position);\r\n\t\t\tlet colors = new Uint8Array(e.data.color);\r\n\t\t\tlet intensities = new Float32Array(e.data.intensity);\r\n\t\t\tlet classifications = new Uint8Array(e.data.classification);\r\n\t\t\tlet returnNumbers = new Uint8Array(e.data.returnNumber);\r\n\t\t\tlet numberOfReturns = new Uint8Array(e.data.numberOfReturns);\r\n\t\t\tlet pointSourceIDs = new Uint16Array(e.data.pointSourceID);\r\n\t\t\tlet indices = new Uint8Array(e.data.indices);\r\n\r\n\t\t\tgeometry.setAttribute('position', new THREE.BufferAttribute(positions, 3));\r\n\t\t\tgeometry.setAttribute('color', new THREE.BufferAttribute(colors, 4, true));\r\n\t\t\tgeometry.setAttribute('intensity', new THREE.BufferAttribute(intensities, 1));\r\n\t\t\tgeometry.setAttribute('classification', new THREE.BufferAttribute(classifications, 1));\r\n\t\t\tgeometry.setAttribute('return number', new THREE.BufferAttribute(returnNumbers, 1));\r\n\t\t\tgeometry.setAttribute('number of returns', new THREE.BufferAttribute(numberOfReturns, 1));\r\n\t\t\tgeometry.setAttribute('source id', new THREE.BufferAttribute(pointSourceIDs, 1));\r\n\t\t\tgeometry.setAttribute('indices', new THREE.BufferAttribute(indices, 4));\r\n\t\t\tgeometry.attributes.indices.normalized = true;\r\n\r\n\t\t\tfor(const key in e.data.ranges){\r\n\t\t\t\tconst range = e.data.ranges[key];\r\n\r\n\t\t\t\tconst attribute = pointAttributes.attributes.find(a => a.name === key);\r\n\t\t\t\tattribute.range[0] = Math.min(attribute.range[0], range[0]);\r\n\t\t\t\tattribute.range[1] = Math.max(attribute.range[1], range[1]);\r\n\t\t\t}\r\n\r\n\t\t\tlet tightBoundingBox = new THREE.Box3(\r\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.min),\r\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.max)\r\n\t\t\t);\r\n\r\n\t\t\tgeometry.boundingBox = this.node.boundingBox;\r\n\t\t\tthis.node.tightBoundingBox = tightBoundingBox;\r\n\r\n\t\t\tthis.node.geometry = geometry;\r\n\t\t\tthis.node.numPoints = numPoints;\r\n\t\t\tthis.node.loaded = true;\r\n\t\t\tthis.node.loading = false;\r\n\t\t\tPotree.numNodesLoading--;\r\n\t\t\tthis.node.mean = new THREE.Vector3(...e.data.mean);\r\n\r\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\r\n\t\t};\r\n\r\n\t\tlet message = {\r\n\t\t\tbuffer: lasBuffer.arrayb,\r\n\t\t\tnumPoints: lasBuffer.pointsCount,\r\n\t\t\tpointSize: lasBuffer.pointSize,\r\n\t\t\tpointFormatID: 2,\r\n\t\t\tscale: lasBuffer.scale,\r\n\t\t\toffset: lasBuffer.offset,\r\n\t\t\tmins: lasBuffer.mins,\r\n\t\t\tmaxs: lasBuffer.maxs\r\n\t\t};\r\n\t\tworker.postMessage(message, [message.buffer]);\r\n\t};\r\n}\r\n","\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Version} from \"../Version.js\";\r\nimport {XHRFactory} from \"../XHRFactory.js\";\r\n\r\n\r\nexport class BinaryLoader{\r\n\r\n\tconstructor(version, boundingBox, scale){\r\n\t\tif (typeof (version) === 'string') {\r\n\t\t\tthis.version = new Version(version);\r\n\t\t} else {\r\n\t\t\tthis.version = version;\r\n\t\t}\r\n\r\n\t\tthis.boundingBox = boundingBox;\r\n\t\tthis.scale = scale;\r\n\t}\r\n\r\n\tload(node){\r\n\t\tif (node.loaded) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet url = node.getURL();\r\n\r\n\t\tif (this.version.equalOrHigher('1.4')) {\r\n\t\t\turl += '.bin';\r\n\t\t}\r\n\r\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\r\n\t\txhr.open('GET', url, true);\r\n\t\txhr.responseType = 'arraybuffer';\r\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\r\n\t\txhr.onreadystatechange = () => {\r\n\t\t\tif (xhr.readyState === 4) {\r\n\t\t\t\tif((xhr.status === 200 || xhr.status === 0) && xhr.response !== null){\r\n\t\t\t\t\tlet buffer = xhr.response;\r\n\t\t\t\t\tthis.parse(node, buffer);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t//console.error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`);\r\n\t\t\t\t\tthrow new Error(`Failed to load file! HTTP status: ${xhr.status}, file: ${url}`);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\ttry {\r\n\t\t\txhr.send(null);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log('fehler beim laden der punktwolke: ' + e);\r\n\t\t}\r\n\t};\r\n\r\n\tparse(node, buffer){\r\n\t\tlet pointAttributes = node.pcoGeometry.pointAttributes;\r\n\t\tlet numPoints = buffer.byteLength / node.pcoGeometry.pointAttributes.byteSize;\r\n\r\n\t\tif (this.version.upTo('1.5')) {\r\n\t\t\tnode.numPoints = numPoints;\r\n\t\t}\r\n\r\n\t\tlet workerPath = Potree.scriptPath + '/workers/BinaryDecoderWorker.js';\r\n\t\tlet worker = Potree.workerPool.getWorker(workerPath);\r\n\r\n\t\tworker.onmessage = function (e) {\r\n\r\n\t\t\tlet data = e.data;\r\n\t\t\tlet buffers = data.attributeBuffers;\r\n\t\t\tlet tightBoundingBox = new THREE.Box3(\r\n\t\t\t\tnew THREE.Vector3().fromArray(data.tightBoundingBox.min),\r\n\t\t\t\tnew THREE.Vector3().fromArray(data.tightBoundingBox.max)\r\n\t\t\t);\r\n\r\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\r\n\r\n\t\t\tlet geometry = new THREE.BufferGeometry();\r\n\r\n\t\t\tfor(let property in buffers){\r\n\t\t\t\tlet buffer = buffers[property].buffer;\r\n\t\t\t\tlet batchAttribute = buffers[property].attribute;\r\n\r\n\t\t\t\tif (property === \"POSITION_CARTESIAN\") {\r\n\t\t\t\t\tgeometry.setAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3));\r\n\t\t\t\t} else if (property === \"rgba\") {\r\n\t\t\t\t\tgeometry.setAttribute(\"rgba\", new THREE.BufferAttribute(new Uint8Array(buffer), 4, true));\r\n\t\t\t\t} else if (property === \"NORMAL_SPHEREMAPPED\") {\r\n\t\t\t\t\tgeometry.setAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\r\n\t\t\t\t} else if (property === \"NORMAL_OCT16\") {\r\n\t\t\t\t\tgeometry.setAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\r\n\t\t\t\t} else if (property === \"NORMAL\") {\r\n\t\t\t\t\tgeometry.setAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\r\n\t\t\t\t} else if (property === \"INDICES\") {\r\n\t\t\t\t\tlet bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4);\r\n\t\t\t\t\tbufferAttribute.normalized = true;\r\n\t\t\t\t\tgeometry.setAttribute('indices', bufferAttribute);\r\n\t\t\t\t} else if (property === \"SPACING\") {\r\n\t\t\t\t\tlet bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1);\r\n\t\t\t\t\tgeometry.setAttribute('spacing', bufferAttribute);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconst bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1);\r\n\r\n\t\t\t\t\tbufferAttribute.potree = {\r\n\t\t\t\t\t\toffset: buffers[property].offset,\r\n\t\t\t\t\t\tscale: buffers[property].scale,\r\n\t\t\t\t\t\tpreciseBuffer: buffers[property].preciseBuffer,\r\n\t\t\t\t\t\trange: batchAttribute.range,\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tgeometry.setAttribute(property, bufferAttribute);\r\n\r\n\t\t\t\t\tconst attribute = pointAttributes.attributes.find(a => a.name === batchAttribute.name);\r\n\t\t\t\t\tattribute.range[0] = Math.min(attribute.range[0], batchAttribute.range[0]);\r\n\t\t\t\t\tattribute.range[1] = Math.max(attribute.range[1], batchAttribute.range[1]);\r\n\r\n\t\t\t\t\tif(node.getLevel() === 0){\r\n\t\t\t\t\t\tattribute.initialRange = batchAttribute.range;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\ttightBoundingBox.max.sub(tightBoundingBox.min);\r\n\t\t\ttightBoundingBox.min.set(0, 0, 0);\r\n\r\n\t\t\tlet numPoints = e.data.buffer.byteLength / pointAttributes.byteSize;\r\n\t\t\t\r\n\t\t\tnode.numPoints = numPoints;\r\n\t\t\tnode.geometry = geometry;\r\n\t\t\tnode.mean = new THREE.Vector3(...data.mean);\r\n\t\t\tnode.tightBoundingBox = tightBoundingBox;\r\n\t\t\tnode.loaded = true;\r\n\t\t\tnode.loading = false;\r\n\t\t\tnode.estimatedSpacing = data.estimatedSpacing;\r\n\t\t\tPotree.numNodesLoading--;\r\n\t\t};\r\n\r\n\t\tlet message = {\r\n\t\t\tbuffer: buffer,\r\n\t\t\tpointAttributes: pointAttributes,\r\n\t\t\tversion: this.version.version,\r\n\t\t\tmin: [ node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z ],\r\n\t\t\toffset: [node.pcoGeometry.offset.x, node.pcoGeometry.offset.y, node.pcoGeometry.offset.z],\r\n\t\t\tscale: this.scale,\r\n\t\t\tspacing: node.spacing,\r\n\t\t\thasChildren: node.hasChildren,\r\n\t\t\tname: node.name\r\n\t\t};\r\n\t\tworker.postMessage(message, [message.buffer]);\r\n\t};\r\n\r\n\t\r\n}\r\n\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {PointCloudOctreeGeometry, PointCloudOctreeGeometryNode} from \"../PointCloudOctreeGeometry.js\";\r\nimport {Version} from \"../Version.js\";\r\nimport {XHRFactory} from \"../XHRFactory.js\";\r\nimport {LasLazLoader} from \"./LasLazLoader.js\";\r\nimport {BinaryLoader} from \"./BinaryLoader.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {PointAttribute, PointAttributes, PointAttributeTypes} from \"./PointAttributes.js\";\r\n\r\nfunction parseAttributes(cloudjs){\r\n\r\n\tlet version = new Version(cloudjs.version);\r\n\r\n\tconst replacements = {\r\n\t\t\"COLOR_PACKED\": \"rgba\",\r\n\t\t\"RGBA\": \"rgba\",\r\n\t\t\"INTENSITY\": \"intensity\",\r\n\t\t\"CLASSIFICATION\": \"classification\",\r\n\t\t\"GPS_TIME\": \"gps-time\",\r\n\t};\r\n\r\n\tconst replaceOldNames = (old) => {\r\n\t\tif(replacements[old]){\r\n\t\t\treturn replacements[old];\r\n\t\t}else{\r\n\t\t\treturn old;\r\n\t\t}\r\n\t};\r\n\r\n\tconst pointAttributes = [];\r\n\tif(version.upTo('1.7')){\r\n\t\t\r\n\t\tfor(let attributeName of cloudjs.pointAttributes){\r\n\t\t\tconst oldAttribute = PointAttribute[attributeName];\r\n\r\n\t\t\tconst attribute = {\r\n\t\t\t\tname: oldAttribute.name,\r\n\t\t\t\tsize: oldAttribute.byteSize,\r\n\t\t\t\telements: oldAttribute.numElements,\r\n\t\t\t\telementSize: oldAttribute.byteSize / oldAttribute.numElements,\r\n\t\t\t\ttype: oldAttribute.type.name,\r\n\t\t\t\tdescription: \"\",\r\n\t\t\t};\r\n\r\n\t\t\tpointAttributes.push(attribute);\r\n\t\t}\r\n\r\n\t}else{\r\n\t\tpointAttributes.push(...cloudjs.pointAttributes);\r\n\t}\r\n\r\n\r\n\t{\r\n\t\tconst attributes = new PointAttributes();\r\n\r\n\t\tconst typeConversion = {\r\n\t\t\tint8: PointAttributeTypes.DATA_TYPE_INT8,\r\n\t\t\tint16: PointAttributeTypes.DATA_TYPE_INT16,\r\n\t\t\tint32: PointAttributeTypes.DATA_TYPE_INT32,\r\n\t\t\tint64: PointAttributeTypes.DATA_TYPE_INT64,\r\n\t\t\tuint8: PointAttributeTypes.DATA_TYPE_UINT8,\r\n\t\t\tuint16: PointAttributeTypes.DATA_TYPE_UINT16,\r\n\t\t\tuint32: PointAttributeTypes.DATA_TYPE_UINT32,\r\n\t\t\tuint64: PointAttributeTypes.DATA_TYPE_UINT64,\r\n\t\t\tdouble: PointAttributeTypes.DATA_TYPE_DOUBLE,\r\n\t\t\tfloat: PointAttributeTypes.DATA_TYPE_FLOAT,\r\n\t\t};\r\n\r\n\t\tfor(const jsAttribute of pointAttributes){\r\n\t\t\tconst name = replaceOldNames(jsAttribute.name);\r\n\t\t\tconst type = typeConversion[jsAttribute.type];\r\n\t\t\tconst numElements = jsAttribute.elements;\r\n\t\t\tconst description = jsAttribute.description;\r\n\r\n\t\t\tconst attribute = new PointAttribute(name, type, numElements);\r\n\r\n\t\t\tattributes.add(attribute);\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\t// check if it has normals\r\n\t\t\tlet hasNormals = \r\n\t\t\t\tpointAttributes.find(a => a.name === \"NormalX\") !== undefined &&\r\n\t\t\t\tpointAttributes.find(a => a.name === \"NormalY\") !== undefined &&\r\n\t\t\t\tpointAttributes.find(a => a.name === \"NormalZ\") !== undefined;\r\n\r\n\t\t\tif(hasNormals){\r\n\t\t\t\tlet vector = {\r\n\t\t\t\t\tname: \"NORMAL\",\r\n\t\t\t\t\tattributes: [\"NormalX\", \"NormalY\", \"NormalZ\"],\r\n\t\t\t\t};\r\n\t\t\t\tattributes.addVector(vector);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn attributes;\r\n\t}\r\n\r\n}\r\n\r\nfunction lasLazAttributes(fMno){\r\n\tconst attributes = new PointAttributes();\r\n\r\n\tattributes.add(PointAttribute.POSITION_CARTESIAN);\r\n\tattributes.add(new PointAttribute(\"rgba\", PointAttributeTypes.DATA_TYPE_UINT8, 4));\r\n\tattributes.add(new PointAttribute(\"intensity\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\r\n\tattributes.add(new PointAttribute(\"classification\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\r\n\tattributes.add(new PointAttribute(\"gps-time\", PointAttributeTypes.DATA_TYPE_DOUBLE, 1));\r\n\tattributes.add(new PointAttribute(\"number of returns\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\r\n\tattributes.add(new PointAttribute(\"return number\", PointAttributeTypes.DATA_TYPE_UINT8, 1));\r\n\tattributes.add(new PointAttribute(\"source id\", PointAttributeTypes.DATA_TYPE_UINT16, 1));\r\n\t//attributes.add(new PointAttribute(\"pointSourceID\", PointAttributeTypes.DATA_TYPE_INT8, 4));\r\n\r\n\r\n\treturn attributes;\r\n}\r\n\r\nexport class POCLoader {\r\n\r\n\tstatic load(url, callback){\r\n\t\ttry {\r\n\t\t\tlet pco = new PointCloudOctreeGeometry();\r\n\t\t\tpco.url = url;\r\n\t\t\tlet xhr = XHRFactory.createXMLHttpRequest();\r\n\t\t\txhr.open('GET', url, true);\r\n\r\n\t\t\txhr.onreadystatechange = function () {\r\n\t\t\t\tif (xhr.readyState === 4 && (xhr.status === 200 || xhr.status === 0)) {\r\n\t\t\t\t\tlet fMno = JSON.parse(xhr.responseText);\r\n\r\n\t\t\t\t\tlet version = new Version(fMno.version);\r\n\r\n\t\t\t\t\t// assume octreeDir is absolute if it starts with http\r\n\t\t\t\t\tif (fMno.octreeDir.indexOf('http') === 0) {\r\n\t\t\t\t\t\tpco.octreeDir = fMno.octreeDir;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpco.octreeDir = url + '/../' + fMno.octreeDir;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpco.spacing = fMno.spacing;\r\n\t\t\t\t\tpco.hierarchyStepSize = fMno.hierarchyStepSize;\r\n\r\n\t\t\t\t\tpco.pointAttributes = fMno.pointAttributes;\r\n\r\n\t\t\t\t\tlet min = new THREE.Vector3(fMno.boundingBox.lx, fMno.boundingBox.ly, fMno.boundingBox.lz);\r\n\t\t\t\t\tlet max = new THREE.Vector3(fMno.boundingBox.ux, fMno.boundingBox.uy, fMno.boundingBox.uz);\r\n\t\t\t\t\tlet boundingBox = new THREE.Box3(min, max);\r\n\t\t\t\t\tlet tightBoundingBox = boundingBox.clone();\r\n\r\n\t\t\t\t\tif (fMno.tightBoundingBox) {\r\n\t\t\t\t\t\ttightBoundingBox.min.copy(new THREE.Vector3(fMno.tightBoundingBox.lx, fMno.tightBoundingBox.ly, fMno.tightBoundingBox.lz));\r\n\t\t\t\t\t\ttightBoundingBox.max.copy(new THREE.Vector3(fMno.tightBoundingBox.ux, fMno.tightBoundingBox.uy, fMno.tightBoundingBox.uz));\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet offset = min.clone();\r\n\r\n\t\t\t\t\tboundingBox.min.sub(offset);\r\n\t\t\t\t\tboundingBox.max.sub(offset);\r\n\r\n\t\t\t\t\ttightBoundingBox.min.sub(offset);\r\n\t\t\t\t\ttightBoundingBox.max.sub(offset);\r\n\r\n\t\t\t\t\tpco.projection = fMno.projection;\r\n\t\t\t\t\tpco.boundingBox = boundingBox;\r\n\t\t\t\t\tpco.tightBoundingBox = tightBoundingBox;\r\n\t\t\t\t\tpco.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\t\t\t\tpco.tightBoundingSphere = tightBoundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\t\t\t\tpco.offset = offset;\r\n\t\t\t\t\tif (fMno.pointAttributes === 'LAS') {\r\n\t\t\t\t\t\tpco.loader = new LasLazLoader(fMno.version, \"las\");\r\n\t\t\t\t\t\tpco.pointAttributes = lasLazAttributes(fMno);\r\n\t\t\t\t\t} else if (fMno.pointAttributes === 'LAZ') {\r\n\t\t\t\t\t\tpco.loader = new LasLazLoader(fMno.version, \"laz\");\r\n\t\t\t\t\t\tpco.pointAttributes = lasLazAttributes(fMno);\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tpco.loader = new BinaryLoader(fMno.version, boundingBox, fMno.scale);\r\n\t\t\t\t\t\tpco.pointAttributes = parseAttributes(fMno);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet nodes = {};\r\n\r\n\t\t\t\t\t{ // load root\r\n\t\t\t\t\t\tlet name = 'r';\r\n\r\n\t\t\t\t\t\tlet root = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\r\n\t\t\t\t\t\troot.level = 0;\r\n\t\t\t\t\t\troot.hasChildren = true;\r\n\t\t\t\t\t\troot.spacing = pco.spacing;\r\n\t\t\t\t\t\tif (version.upTo('1.5')) {\r\n\t\t\t\t\t\t\troot.numPoints = fMno.hierarchy[0][1];\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\troot.numPoints = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tpco.root = root;\r\n\t\t\t\t\t\tpco.root.load();\r\n\t\t\t\t\t\tnodes[name] = root;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// load remaining hierarchy\r\n\t\t\t\t\tif (version.upTo('1.4')) {\r\n\t\t\t\t\t\tfor (let i = 1; i < fMno.hierarchy.length; i++) {\r\n\t\t\t\t\t\t\tlet name = fMno.hierarchy[i][0];\r\n\t\t\t\t\t\t\tlet numPoints = fMno.hierarchy[i][1];\r\n\t\t\t\t\t\t\tlet index = parseInt(name.charAt(name.length - 1));\r\n\t\t\t\t\t\t\tlet parentName = name.substring(0, name.length - 1);\r\n\t\t\t\t\t\t\tlet parentNode = nodes[parentName];\r\n\t\t\t\t\t\t\tlet level = name.length - 1;\r\n\t\t\t\t\t\t\t//let boundingBox = POCLoader.createChildAABB(parentNode.boundingBox, index);\r\n\t\t\t\t\t\t\tlet boundingBox = Utils.createChildAABB(parentNode.boundingBox, index);\r\n\r\n\t\t\t\t\t\t\tlet node = new PointCloudOctreeGeometryNode(name, pco, boundingBox);\r\n\t\t\t\t\t\t\tnode.level = level;\r\n\t\t\t\t\t\t\tnode.numPoints = numPoints;\r\n\t\t\t\t\t\t\tnode.spacing = pco.spacing / Math.pow(2, level);\r\n\t\t\t\t\t\t\tparentNode.addChild(node);\r\n\t\t\t\t\t\t\tnodes[name] = node;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpco.nodes = nodes;\r\n\r\n\t\t\t\t\tcallback(pco);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\txhr.send(null);\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log(\"loading failed: '\" + url + \"'\");\r\n\t\t\tconsole.log(e);\r\n\r\n\t\t\tcallback();\r\n\t\t}\r\n\t}\r\n\r\n\tloadPointAttributes(mno){\r\n\t\tlet fpa = mno.pointAttributes;\r\n\t\tlet pa = new PointAttributes();\r\n\r\n\t\tfor (let i = 0; i < fpa.length; i++) {\r\n\t\t\tlet pointAttribute = PointAttribute[fpa[i]];\r\n\t\t\tpa.add(pointAttribute);\r\n\t\t}\r\n\r\n\t\treturn pa;\r\n\t}\r\n\r\n\tcreateChildAABB(aabb, index){\r\n\t\tlet min = aabb.min.clone();\r\n\t\tlet max = aabb.max.clone();\r\n\t\tlet size = new THREE.Vector3().subVectors(max, min);\r\n\r\n\t\tif ((index & 0b0001) > 0) {\r\n\t\t\tmin.z += size.z / 2;\r\n\t\t} else {\r\n\t\t\tmax.z -= size.z / 2;\r\n\t\t}\r\n\r\n\t\tif ((index & 0b0010) > 0) {\r\n\t\t\tmin.y += size.y / 2;\r\n\t\t} else {\r\n\t\t\tmax.y -= size.y / 2;\r\n\t\t}\r\n\r\n\t\tif ((index & 0b0100) > 0) {\r\n\t\t\tmin.x += size.x / 2;\r\n\t\t} else {\r\n\t\t\tmax.x -= size.x / 2;\r\n\t\t}\r\n\r\n\t\treturn new THREE.Box3(min, max);\r\n\t}\r\n}\r\n\r\n","\r\nimport * as THREE from \"../../../../libs/three.js/build/three.module.js\";\r\n\r\nexport class OctreeGeometry{\r\n\r\n\tconstructor(){\r\n\t\tthis.url = null;\r\n\t\tthis.spacing = 0;\r\n\t\tthis.boundingBox = null;\r\n\t\tthis.root = null;\r\n\t\tthis.pointAttributes = null;\r\n\t\tthis.loader = null;\r\n\t}\r\n\r\n};\r\n\r\nexport class OctreeGeometryNode{\r\n\r\n\tconstructor(name, octreeGeometry, boundingBox){\r\n\t\tthis.id = OctreeGeometryNode.IDCount++;\r\n\t\tthis.name = name;\r\n\t\tthis.index = parseInt(name.charAt(name.length - 1));\r\n\t\tthis.octreeGeometry = octreeGeometry;\r\n\t\tthis.boundingBox = boundingBox;\r\n\t\tthis.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\tthis.children = {};\r\n\t\tthis.numPoints = 0;\r\n\t\tthis.level = null;\r\n\t\tthis.oneTimeDisposeHandlers = [];\r\n\t}\r\n\r\n\tisGeometryNode(){\r\n\t\treturn true;\r\n\t}\r\n\r\n\tgetLevel(){\r\n\t\treturn this.level;\r\n\t}\r\n\r\n\tisTreeNode(){\r\n\t\treturn false;\r\n\t}\r\n\r\n\tisLoaded(){\r\n\t\treturn this.loaded;\r\n\t}\r\n\r\n\tgetBoundingSphere(){\r\n\t\treturn this.boundingSphere;\r\n\t}\r\n\r\n\tgetBoundingBox(){\r\n\t\treturn this.boundingBox;\r\n\t}\r\n\r\n\tgetChildren(){\r\n\t\tlet children = [];\r\n\r\n\t\tfor (let i = 0; i < 8; i++) {\r\n\t\t\tif (this.children[i]) {\r\n\t\t\t\tchildren.push(this.children[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn children;\r\n\t}\r\n\r\n\tgetBoundingBox(){\r\n\t\treturn this.boundingBox;\r\n\t}\r\n\r\n\tload(){\r\n\r\n\t\tif (Potree.numNodesLoading >= Potree.maxNodesLoading) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.octreeGeometry.loader.load(this);\r\n\t}\r\n\r\n\tgetNumPoints(){\r\n\t\treturn this.numPoints;\r\n\t}\r\n\r\n\tdispose(){\r\n\t\tif (this.geometry && this.parent != null) {\r\n\t\t\tthis.geometry.dispose();\r\n\t\t\tthis.geometry = null;\r\n\t\t\tthis.loaded = false;\r\n\r\n\t\t\t// this.dispatchEvent( { type: 'dispose' } );\r\n\t\t\tfor (let i = 0; i < this.oneTimeDisposeHandlers.length; i++) {\r\n\t\t\t\tlet handler = this.oneTimeDisposeHandlers[i];\r\n\t\t\t\thandler();\r\n\t\t\t}\r\n\t\t\tthis.oneTimeDisposeHandlers = [];\r\n\t\t}\r\n\t}\r\n\r\n};\r\n\r\nOctreeGeometryNode.IDCount = 0;","\r\nimport * as THREE from \"../../../../libs/three.js/build/three.module.js\";\r\nimport {PointAttribute, PointAttributes, PointAttributeTypes} from \"../../../loader/PointAttributes.js\";\r\nimport {OctreeGeometry, OctreeGeometryNode} from \"./OctreeGeometry.js\";\r\n\r\n// let loadedNodes = new Set();\r\n\r\nexport class NodeLoader{\r\n\r\n\tconstructor(url){\r\n\t\tthis.url = url;\r\n\t}\r\n\r\n\tasync load(node){\r\n\r\n\t\tif(node.loaded || node.loading){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tnode.loading = true;\r\n\t\tPotree.numNodesLoading++;\r\n\r\n\t\t// console.log(node.name, node.numPoints);\r\n\r\n\t\t// if(loadedNodes.has(node.name)){\r\n\t\t// \t// debugger;\r\n\t\t// }\r\n\t\t// loadedNodes.add(node.name);\r\n\r\n\t\ttry{\r\n\t\t\tif(node.nodeType === 2){\r\n\t\t\t\tawait this.loadHierarchy(node);\r\n\t\t\t}\r\n\r\n\t\t\tlet {byteOffset, byteSize} = node;\r\n\r\n\r\n\t\t\tlet urlOctree = `${this.url}/../octree.bin`;\r\n\r\n\t\t\tlet first = byteOffset;\r\n\t\t\tlet last = byteOffset + byteSize - 1n;\r\n\r\n\t\t\tlet buffer;\r\n\r\n\t\t\tif(byteSize === 0n){\r\n\t\t\t\tbuffer = new ArrayBuffer(0);\r\n\t\t\t\tconsole.warn(`loaded node with 0 bytes: ${node.name}`);\r\n\t\t\t}else{\r\n\t\t\t\tlet response = await fetch(urlOctree, {\r\n\t\t\t\t\theaders: {\r\n\t\t\t\t\t\t'content-type': 'multipart/byteranges',\r\n\t\t\t\t\t\t'Range': `bytes=${first}-${last}`,\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\r\n\t\t\t\tbuffer = await response.arrayBuffer();\r\n\t\t\t}\r\n\r\n\t\t\tlet workerPath;\r\n\t\t\tif(this.metadata.encoding === \"BROTLI\"){\r\n\t\t\t\tworkerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker_brotli.js';\r\n\t\t\t}else{\r\n\t\t\t\tworkerPath = Potree.scriptPath + '/workers/2.0/DecoderWorker.js';\r\n\t\t\t}\r\n\r\n\t\t\tlet worker = Potree.workerPool.getWorker(workerPath);\r\n\r\n\t\t\tworker.onmessage = function (e) {\r\n\r\n\t\t\t\tlet data = e.data;\r\n\t\t\t\tlet buffers = data.attributeBuffers;\r\n\r\n\t\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\r\n\r\n\t\t\t\tlet geometry = new THREE.BufferGeometry();\r\n\t\t\t\t\r\n\t\t\t\tfor(let property in buffers){\r\n\r\n\t\t\t\t\tlet buffer = buffers[property].buffer;\r\n\r\n\t\t\t\t\tif(property === \"position\"){\r\n\t\t\t\t\t\tgeometry.setAttribute('position', new THREE.BufferAttribute(new Float32Array(buffer), 3));\r\n\t\t\t\t\t}else if(property === \"rgba\"){\r\n\t\t\t\t\t\tgeometry.setAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true));\r\n\t\t\t\t\t}else if(property === \"NORMAL\"){\r\n\t\t\t\t\t\t//geometry.setAttribute('rgba', new THREE.BufferAttribute(new Uint8Array(buffer), 4, true));\r\n\t\t\t\t\t\tgeometry.setAttribute('normal', new THREE.BufferAttribute(new Float32Array(buffer), 3));\r\n\t\t\t\t\t}else if (property === \"INDICES\") {\r\n\t\t\t\t\t\tlet bufferAttribute = new THREE.BufferAttribute(new Uint8Array(buffer), 4);\r\n\t\t\t\t\t\tbufferAttribute.normalized = true;\r\n\t\t\t\t\t\tgeometry.setAttribute('indices', bufferAttribute);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tconst bufferAttribute = new THREE.BufferAttribute(new Float32Array(buffer), 1);\r\n\r\n\t\t\t\t\t\tlet batchAttribute = buffers[property].attribute;\r\n\t\t\t\t\t\tbufferAttribute.potree = {\r\n\t\t\t\t\t\t\toffset: buffers[property].offset,\r\n\t\t\t\t\t\t\tscale: buffers[property].scale,\r\n\t\t\t\t\t\t\tpreciseBuffer: buffers[property].preciseBuffer,\r\n\t\t\t\t\t\t\trange: batchAttribute.range,\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\tgeometry.setAttribute(property, bufferAttribute);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\t// indices ??\r\n\r\n\t\t\t\tnode.density = data.density;\r\n\t\t\t\tnode.geometry = geometry;\r\n\t\t\t\tnode.loaded = true;\r\n\t\t\t\tnode.loading = false;\r\n\t\t\t\tPotree.numNodesLoading--;\r\n\t\t\t};\r\n\r\n\t\t\tlet pointAttributes = node.octreeGeometry.pointAttributes;\r\n\t\t\tlet scale = node.octreeGeometry.scale;\r\n\r\n\t\t\tlet box = node.boundingBox;\r\n\t\t\tlet min = node.octreeGeometry.offset.clone().add(box.min);\r\n\t\t\tlet size = box.max.clone().sub(box.min);\r\n\t\t\tlet max = min.clone().add(size);\r\n\t\t\tlet numPoints = node.numPoints;\r\n\r\n\t\t\tlet offset = node.octreeGeometry.loader.offset;\r\n\r\n\t\t\tlet message = {\r\n\t\t\t\tname: node.name,\r\n\t\t\t\tbuffer: buffer,\r\n\t\t\t\tpointAttributes: pointAttributes,\r\n\t\t\t\tscale: scale,\r\n\t\t\t\tmin: min,\r\n\t\t\t\tmax: max,\r\n\t\t\t\tsize: size,\r\n\t\t\t\toffset: offset,\r\n\t\t\t\tnumPoints: numPoints\r\n\t\t\t};\r\n\r\n\t\t\tworker.postMessage(message, [message.buffer]);\r\n\t\t}catch(e){\r\n\t\t\tnode.loaded = false;\r\n\t\t\tnode.loading = false;\r\n\t\t\tPotree.numNodesLoading--;\r\n\r\n\t\t\tconsole.log(`failed to load ${node.name}`);\r\n\t\t\tconsole.log(e);\r\n\t\t\tconsole.log(`trying again!`);\r\n\t\t}\r\n\t}\r\n\r\n\tparseHierarchy(node, buffer){\r\n\r\n\t\tlet view = new DataView(buffer);\r\n\t\tlet tStart = performance.now();\r\n\r\n\t\tlet bytesPerNode = 22;\r\n\t\tlet numNodes = buffer.byteLength / bytesPerNode;\r\n\r\n\t\tlet octree = node.octreeGeometry;\r\n\t\t// let nodes = [node];\r\n\t\tlet nodes = new Array(numNodes);\r\n\t\tnodes[0] = node;\r\n\t\tlet nodePos = 1;\r\n\r\n\t\tfor(let i = 0; i < numNodes; i++){\r\n\t\t\tlet current = nodes[i];\r\n\r\n\t\t\tlet type = view.getUint8(i * bytesPerNode + 0);\r\n\t\t\tlet childMask = view.getUint8(i * bytesPerNode + 1);\r\n\t\t\tlet numPoints = view.getUint32(i * bytesPerNode + 2, true);\r\n\t\t\tlet byteOffset = view.getBigInt64(i * bytesPerNode + 6, true);\r\n\t\t\tlet byteSize = view.getBigInt64(i * bytesPerNode + 14, true);\r\n\r\n\t\t\t// if(byteSize === 0n){\r\n\t\t\t// \t// debugger;\r\n\t\t\t// }\r\n\r\n\r\n\t\t\tif(current.nodeType === 2){\r\n\t\t\t\t// replace proxy with real node\r\n\t\t\t\tcurrent.byteOffset = byteOffset;\r\n\t\t\t\tcurrent.byteSize = byteSize;\r\n\t\t\t\tcurrent.numPoints = numPoints;\r\n\t\t\t}else if(type === 2){\r\n\t\t\t\t// load proxy\r\n\t\t\t\tcurrent.hierarchyByteOffset = byteOffset;\r\n\t\t\t\tcurrent.hierarchyByteSize = byteSize;\r\n\t\t\t\tcurrent.numPoints = numPoints;\r\n\t\t\t}else{\r\n\t\t\t\t// load real node \r\n\t\t\t\tcurrent.byteOffset = byteOffset;\r\n\t\t\t\tcurrent.byteSize = byteSize;\r\n\t\t\t\tcurrent.numPoints = numPoints;\r\n\t\t\t}\r\n\r\n\t\t\tif(current.byteSize === 0n){\r\n\t\t\t\t// workaround for issue #1125\r\n\t\t\t\t// some inner nodes erroneously report >0 points even though have 0 points\r\n\t\t\t\t// however, they still report a byteSize of 0, so based on that we now set node.numPoints to 0\r\n\t\t\t\tcurrent.numPoints = 0;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tcurrent.nodeType = type;\r\n\r\n\t\t\tif(current.nodeType === 2){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tfor(let childIndex = 0; childIndex < 8; childIndex++){\r\n\t\t\t\tlet childExists = ((1 << childIndex) & childMask) !== 0;\r\n\r\n\t\t\t\tif(!childExists){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet childName = current.name + childIndex;\r\n\r\n\t\t\t\tlet childAABB = createChildAABB(current.boundingBox, childIndex);\r\n\t\t\t\tlet child = new OctreeGeometryNode(childName, octree, childAABB);\r\n\t\t\t\tchild.name = childName;\r\n\t\t\t\tchild.spacing = current.spacing / 2;\r\n\t\t\t\tchild.level = current.level + 1;\r\n\r\n\t\t\t\tcurrent.children[childIndex] = child;\r\n\t\t\t\tchild.parent = current;\r\n\r\n\t\t\t\t// nodes.push(child);\r\n\t\t\t\tnodes[nodePos] = child;\r\n\t\t\t\tnodePos++;\r\n\t\t\t}\r\n\r\n\t\t\t// if((i % 500) === 0){\r\n\t\t\t// \tyield;\r\n\t\t\t// }\r\n\t\t}\r\n\r\n\t\tlet duration = (performance.now() - tStart);\r\n\r\n\t\t// if(duration > 20){\r\n\t\t// \tlet msg = `duration: ${duration}ms, numNodes: ${numNodes}`;\r\n\t\t// \tconsole.log(msg);\r\n\t\t// }\r\n\t}\r\n\r\n\tasync loadHierarchy(node){\r\n\r\n\t\tlet {hierarchyByteOffset, hierarchyByteSize} = node;\r\n\t\tlet hierarchyPath = `${this.url}/../hierarchy.bin`;\r\n\t\t\r\n\t\tlet first = hierarchyByteOffset;\r\n\t\tlet last = first + hierarchyByteSize - 1n;\r\n\r\n\t\tlet response = await fetch(hierarchyPath, {\r\n\t\t\theaders: {\r\n\t\t\t\t'content-type': 'multipart/byteranges',\r\n\t\t\t\t'Range': `bytes=${first}-${last}`,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\r\n\r\n\t\tlet buffer = await response.arrayBuffer();\r\n\r\n\t\tthis.parseHierarchy(node, buffer);\r\n\r\n\t\t// let promise = new Promise((resolve) => {\r\n\t\t// \tlet generator = this.parseHierarchy(node, buffer);\r\n\r\n\t\t// \tlet repeatUntilDone = () => {\r\n\t\t// \t\tlet result = generator.next();\r\n\r\n\t\t// \t\tif(result.done){\r\n\t\t// \t\t\tresolve();\r\n\t\t// \t\t}else{\r\n\t\t// \t\t\trequestAnimationFrame(repeatUntilDone);\r\n\t\t// \t\t}\r\n\t\t// \t};\r\n\t\t\t\r\n\t\t// \trepeatUntilDone();\r\n\t\t// });\r\n\r\n\t\t// await promise;\r\n\r\n\t\t\r\n\r\n\r\n\r\n\t}\r\n\r\n}\r\n\r\nlet tmpVec3 = new THREE.Vector3();\r\nfunction createChildAABB(aabb, index){\r\n\tlet min = aabb.min.clone();\r\n\tlet max = aabb.max.clone();\r\n\tlet size = tmpVec3.subVectors(max, min);\r\n\r\n\tif ((index & 0b0001) > 0) {\r\n\t\tmin.z += size.z / 2;\r\n\t} else {\r\n\t\tmax.z -= size.z / 2;\r\n\t}\r\n\r\n\tif ((index & 0b0010) > 0) {\r\n\t\tmin.y += size.y / 2;\r\n\t} else {\r\n\t\tmax.y -= size.y / 2;\r\n\t}\r\n\t\r\n\tif ((index & 0b0100) > 0) {\r\n\t\tmin.x += size.x / 2;\r\n\t} else {\r\n\t\tmax.x -= size.x / 2;\r\n\t}\r\n\r\n\treturn new THREE.Box3(min, max);\r\n}\r\n\r\nlet typenameTypeattributeMap = {\r\n\t\"double\": PointAttributeTypes.DATA_TYPE_DOUBLE,\r\n\t\"float\": PointAttributeTypes.DATA_TYPE_FLOAT,\r\n\t\"int8\": PointAttributeTypes.DATA_TYPE_INT8,\r\n\t\"uint8\": PointAttributeTypes.DATA_TYPE_UINT8,\r\n\t\"int16\": PointAttributeTypes.DATA_TYPE_INT16,\r\n\t\"uint16\": PointAttributeTypes.DATA_TYPE_UINT16,\r\n\t\"int32\": PointAttributeTypes.DATA_TYPE_INT32,\r\n\t\"uint32\": PointAttributeTypes.DATA_TYPE_UINT32,\r\n\t\"int64\": PointAttributeTypes.DATA_TYPE_INT64,\r\n\t\"uint64\": PointAttributeTypes.DATA_TYPE_UINT64,\r\n}\r\n\r\nexport class OctreeLoader{\r\n\r\n\tstatic parseAttributes(jsonAttributes){\r\n\r\n\t\tlet attributes = new PointAttributes();\r\n\r\n\t\tlet replacements = {\r\n\t\t\t\"rgb\": \"rgba\",\r\n\t\t};\r\n\r\n\t\tfor (const jsonAttribute of jsonAttributes) {\r\n\t\t\tlet {name, description, size, numElements, elementSize, min, max} = jsonAttribute;\r\n\r\n\t\t\tlet type = typenameTypeattributeMap[jsonAttribute.type];\r\n\r\n\t\t\tlet potreeAttributeName = replacements[name] ? replacements[name] : name;\r\n\r\n\t\t\tlet attribute = new PointAttribute(potreeAttributeName, type, numElements);\r\n\r\n\t\t\tif(numElements === 1){\r\n\t\t\t\tattribute.range = [min[0], max[0]];\r\n\t\t\t}else{\r\n\t\t\t\tattribute.range = [min, max];\r\n\t\t\t}\r\n\r\n\t\t\tif (name === \"gps-time\") { // HACK: Guard against bad gpsTime range in metadata, see potree/potree#909\r\n\t\t\t\tif (attribute.range[0] === attribute.range[1]) {\r\n\t\t\t\t\tattribute.range[1] += 1;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tattribute.initialRange = attribute.range;\r\n\r\n\t\t\tattributes.add(attribute);\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\t// check if it has normals\r\n\t\t\tlet hasNormals = \r\n\t\t\t\tattributes.attributes.find(a => a.name === \"NormalX\") !== undefined &&\r\n\t\t\t\tattributes.attributes.find(a => a.name === \"NormalY\") !== undefined &&\r\n\t\t\t\tattributes.attributes.find(a => a.name === \"NormalZ\") !== undefined;\r\n\r\n\t\t\tif(hasNormals){\r\n\t\t\t\tlet vector = {\r\n\t\t\t\t\tname: \"NORMAL\",\r\n\t\t\t\t\tattributes: [\"NormalX\", \"NormalY\", \"NormalZ\"],\r\n\t\t\t\t};\r\n\t\t\t\tattributes.addVector(vector);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn attributes;\r\n\t}\r\n\r\n\tstatic async load(url){\r\n\r\n\t\tlet response = await fetch(url);\r\n\t\tlet metadata = await response.json();\r\n\r\n\t\tlet attributes = OctreeLoader.parseAttributes(metadata.attributes);\r\n\r\n\t\tlet loader = new NodeLoader(url);\r\n\t\tloader.metadata = metadata;\r\n\t\tloader.attributes = attributes;\r\n\t\tloader.scale = metadata.scale;\r\n\t\tloader.offset = metadata.offset;\r\n\r\n\t\tlet octree = new OctreeGeometry();\r\n\t\toctree.url = url;\r\n\t\toctree.spacing = metadata.spacing;\r\n\t\toctree.scale = metadata.scale;\r\n\r\n\t\t// let aPosition = metadata.attributes.find(a => a.name === \"position\");\r\n\t\t// octree\r\n\r\n\t\tlet min = new THREE.Vector3(...metadata.boundingBox.min);\r\n\t\tlet max = new THREE.Vector3(...metadata.boundingBox.max);\r\n\t\tlet boundingBox = new THREE.Box3(min, max);\r\n\r\n\t\tlet offset = min.clone();\r\n\t\tboundingBox.min.sub(offset);\r\n\t\tboundingBox.max.sub(offset);\r\n\r\n\t\toctree.projection = metadata.projection;\r\n\t\toctree.boundingBox = boundingBox;\r\n\t\toctree.tightBoundingBox = boundingBox.clone();\r\n\t\toctree.boundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\toctree.tightBoundingSphere = boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\toctree.offset = offset;\r\n\t\toctree.pointAttributes = OctreeLoader.parseAttributes(metadata.attributes);\r\n\t\toctree.loader = loader;\r\n\r\n\t\tlet root = new OctreeGeometryNode(\"r\", octree, boundingBox);\r\n\t\troot.level = 0;\r\n\t\troot.nodeType = 2;\r\n\t\troot.hierarchyByteOffset = 0n;\r\n\t\troot.hierarchyByteSize = BigInt(metadata.hierarchy.firstChunkSize);\r\n\t\troot.hasChildren = false;\r\n\t\troot.spacing = octree.spacing;\r\n\t\troot.byteOffset = 0;\r\n\r\n\t\toctree.root = root;\r\n\r\n\t\tloader.load(root);\r\n\r\n\t\tlet result = {\r\n\t\t\tgeometry: octree,\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\r\n\t}\r\n\r\n};","/**\r\n * @author Connor Manning\r\n */\r\n\r\nexport class EptLoader {\r\n\tstatic async load(file, callback) {\r\n\r\n\t\tlet response = await fetch(file);\r\n\t\tlet json = await response.json();\r\n\r\n\t\tlet url = file.substr(0, file.lastIndexOf('/ept.json'));\r\n\t\tlet geometry = new Potree.PointCloudEptGeometry(url, json);\r\n\t\tlet root = new Potree.PointCloudCopcGeometryNode(geometry);\r\n\r\n\t\tgeometry.root = root;\r\n\t\tgeometry.root.load();\r\n\r\n\t\tcallback(geometry);\r\n\t}\r\n};\r\n\r\nexport class CopcLoader {\r\n\tstatic async load(file, callback) {\r\n\t\tconst { Copc, Getter } = window.Copc\r\n\r\n\t\tconst url = file;\r\n\t\tconst getter = Getter.http(url);\r\n\t\tconst copc = await Copc.create(getter);\r\n\r\n\t\tlet geometry = new Potree.PointCloudCopcGeometry(getter, copc);\r\n\t\tlet root = new Potree.PointCloudCopcGeometryNode(geometry);\r\n\r\n\t\tgeometry.root = root;\r\n\t\tgeometry.root.load();\r\n\r\n\t\tcallback(geometry);\r\n\t}\r\n}\r\n","\r\nimport * as THREE from \"../../../libs/three.js/build/three.module.js\";\r\nimport {XHRFactory} from \"../../XHRFactory.js\";\r\n\r\nexport class EptBinaryLoader {\r\n\textension() {\r\n\t\treturn '.bin';\r\n\t}\r\n\r\n\tworkerPath() {\r\n\t\treturn Potree.scriptPath + '/workers/EptBinaryDecoderWorker.js';\r\n\t}\r\n\r\n\tload(node) {\r\n\t\tif (node.loaded) return;\r\n\r\n\t\tlet url = node.url() + this.extension();\r\n\r\n\t\tlet xhr = XHRFactory.createXMLHttpRequest();\r\n\t\txhr.open('GET', url, true);\r\n\t\txhr.responseType = 'arraybuffer';\r\n\t\txhr.overrideMimeType('text/plain; charset=x-user-defined');\r\n\t\txhr.onreadystatechange = () => {\r\n\t\t\tif (xhr.readyState === 4) {\r\n\t\t\t\tif (xhr.status === 200) {\r\n\t\t\t\t\tlet buffer = xhr.response;\r\n\t\t\t\t\tthis.parse(node, buffer);\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.log('Failed ' + url + ': ' + xhr.status);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\ttry {\r\n\t\t\txhr.send(null);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tconsole.log('Failed request: ' + e);\r\n\t\t}\r\n\t}\r\n\r\n\tparse(node, buffer) {\r\n\t\tlet workerPath = this.workerPath();\r\n\t\tlet worker = Potree.workerPool.getWorker(workerPath);\r\n\r\n\t\tworker.onmessage = function(e) {\r\n\t\t\tlet g = new THREE.BufferGeometry();\r\n\t\t\tlet numPoints = e.data.numPoints;\r\n\r\n\t\t\tlet position = new Float32Array(e.data.position);\r\n\t\t\tg.setAttribute('position', new THREE.BufferAttribute(position, 3));\r\n\r\n\t\t\tlet indices = new Uint8Array(e.data.indices);\r\n\t\t\tg.setAttribute('indices', new THREE.BufferAttribute(indices, 4));\r\n\r\n\t\t\tif (e.data.color) {\r\n\t\t\t\tlet color = new Uint8Array(e.data.color);\r\n\t\t\t\tg.setAttribute('color', new THREE.BufferAttribute(color, 4, true));\r\n\t\t\t}\r\n\t\t\tif (e.data.intensity) {\r\n\t\t\t\tlet intensity = new Float32Array(e.data.intensity);\r\n\t\t\t\tg.setAttribute('intensity',\r\n\t\t\t\t\t\tnew THREE.BufferAttribute(intensity, 1));\r\n\t\t\t}\r\n\t\t\tif (e.data.classification) {\r\n\t\t\t\tlet classification = new Uint8Array(e.data.classification);\r\n\t\t\t\tg.setAttribute('classification',\r\n\t\t\t\t\t\tnew THREE.BufferAttribute(classification, 1));\r\n\t\t\t}\r\n\t\t\tif (e.data.returnNumber) {\r\n\t\t\t\tlet returnNumber = new Uint8Array(e.data.returnNumber);\r\n\t\t\t\tg.setAttribute('return number',\r\n\t\t\t\t\t\tnew THREE.BufferAttribute(returnNumber, 1));\r\n\t\t\t}\r\n\t\t\tif (e.data.numberOfReturns) {\r\n\t\t\t\tlet numberOfReturns = new Uint8Array(e.data.numberOfReturns);\r\n\t\t\t\tg.setAttribute('number of returns',\r\n\t\t\t\t\t\tnew THREE.BufferAttribute(numberOfReturns, 1));\r\n\t\t\t}\r\n\t\t\tif (e.data.pointSourceId) {\r\n\t\t\t\tlet pointSourceId = new Uint16Array(e.data.pointSourceId);\r\n\t\t\t\tg.setAttribute('source id',\r\n\t\t\t\t\t\tnew THREE.BufferAttribute(pointSourceId, 1));\r\n\t\t\t}\r\n\r\n\t\t\tg.attributes.indices.normalized = true;\r\n\r\n\t\t\tlet tightBoundingBox = new THREE.Box3(\r\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.min),\r\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.max)\r\n\t\t\t);\r\n\r\n\t\t\tnode.doneLoading(\r\n\t\t\t\t\tg,\r\n\t\t\t\t\ttightBoundingBox,\r\n\t\t\t\t\tnumPoints,\r\n\t\t\t\t\tnew THREE.Vector3(...e.data.mean));\r\n\r\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\r\n\t\t};\r\n\r\n\t\tlet toArray = (v) => [v.x, v.y, v.z];\r\n\t\tlet message = {\r\n\t\t\tbuffer: buffer,\r\n\t\t\tschema: node.ept.schema,\r\n\t\t\tscale: node.ept.eptScale,\r\n\t\t\toffset: node.ept.eptOffset,\r\n\t\t\tmins: toArray(node.key.b.min)\r\n\t\t};\r\n\r\n\t\tworker.postMessage(message, [message.buffer]);\r\n\t}\r\n};\r\n\r\n","import * as THREE from \"../../../libs/three.js/build/three.module.js\";\r\n\r\nexport class EptLaszipLoader {\r\n\tasync load(node) {\r\n\t\tif (node.loaded) return;\r\n\r\n\t\tconst { Key } = window.Copc\r\n\r\n\t\tconst url = `${node.owner.base}/ept-data/${Key.toString(node.key)}.laz`\r\n\t\tconst response = await fetch(url);\r\n\t\tconst buffer = await response.arrayBuffer();\r\n\t\tthis.parse(node, buffer);\r\n\t}\r\n\r\n\tasync parse(node, compressed){\r\n\t\tlet handler = new EptLazBatcher(node);\r\n\r\n\t\ttry {\r\n\t\t\tconst { Bounds, Las } = Copc\r\n\r\n\t\t\tconst get = (begin, end) => new Uint8Array(compressed, begin, end - begin)\r\n\r\n\t\t\tconst header = Las.Header.parse(new Uint8Array(compressed))\r\n\t\t\tconst vlrs = await Las.Vlr.walk(get, header)\r\n\t\t\tlet eb = []\r\n\t\t\tconst ebVlr = Las.Vlr.find(vlrs, 'LASF_Spec', 4)\r\n\t\t\tif (ebVlr) eb = Las.ExtraBytes.parse(await Las.Vlr.fetch(get, ebVlr))\r\n\r\n\t\t\tconst message = {\r\n\t\t\t\tisFullFile: true,\r\n\t\t\t\tcompressed,\r\n\t\t\t\theader,\r\n\t\t\t\teb,\r\n\t\t\t\tpointCount: header.pointCount,\r\n\t\t\t\tnodemin: Bounds.min(node.bounds),\r\n\t\t\t}\r\n\t\t\thandler.push(message)\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log('Failed:', e)\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport class CopcLaszipLoader {\r\n\tasync load(node) {\r\n\t\tif (node.loaded) return;\r\n\r\n\t\t// There are utilities to do all of this in one async call via copc.js,\r\n\t\t// however we must split things out a bit to accommodate the expensive\r\n\t\t// calls to go in the worker. So in this non-worker context, we just\r\n\t\t// isolate the compressed data buffer, which is passed to the worker.\r\n\t\t// The time-consuming decompression and extracting the data into \r\n\t\t// GPU-compatible buffers happens in the worker.\r\n\t\tconst { pointCount, pointDataOffset, pointDataLength } = node.nodeinfo\r\n\r\n\t\t// Note that COPC explicitly allows nodes to exist with no data. They\r\n\t\t// may have children, but there is no point cloud data. Make sure we\r\n\t\t// don't try to fetch a slice of point data in this case.\r\n\t\tif (!pointCount) return this.parse(node, new ArrayBuffer())\r\n\t\tconst compressed = await node.owner.getter(\r\n\t\t\tpointDataOffset, \r\n\t\t\tpointDataOffset + pointDataLength)\r\n\t\tthis.parse(node, compressed.buffer);\r\n\t}\r\n\r\n\tasync parse(node, compressed) {\r\n\t\tlet handler = new EptLazBatcher(node);\r\n\r\n\t\ttry {\r\n\t\t\thandler.push({\r\n\t\t\t\tisFullFile: false,\r\n\t\t\t\tcompressed,\r\n\t\t\t\theader: node.owner.copc.header,\r\n\t\t\t\teb: node.owner.copc.eb,\r\n\t\t\t\tpointCount: node.nodeinfo.pointCount,\r\n\t\t\t\tnodemin: node.bounds.slice(0, 3),\r\n\t\t\t})\r\n\t\t} catch (e) {\r\n\t\t\tconsole.log('Failed:', e)\r\n\t\t}\r\n\t}\r\n};\r\n\r\nexport class EptLazBatcher {\r\n\tconstructor(node) { this.node = node; }\r\n\r\n\tpush(las) {\r\n\t\tconst { isFullFile, compressed, header, eb, pointCount, nodemin } = las\r\n\r\n\t\tlet workerPath = Potree.scriptPath +\r\n\t\t\t'/workers/EptLaszipDecoderWorker.js';\r\n\t\tlet worker = Potree.workerPool.getWorker(workerPath);\r\n\t\tconst pointAttributes = this.node.owner.pointAttributes;\r\n\r\n\t\tworker.onmessage = (e) => {\r\n\t\t\tlet g = new THREE.BufferGeometry();\r\n\r\n\t\t\tlet positions = new Float32Array(e.data.position);\r\n\t\t\tlet colors = new Uint8Array(e.data.color);\r\n\t\t\t\r\n\t\t\tlet intensities = new Float32Array(e.data.intensity);\r\n\t\t\tlet classifications = new Uint8Array(e.data.classification);\r\n\t\t\tlet returnNumbers = new Uint8Array(e.data.returnNumber);\r\n\t\t\tlet numberOfReturns = new Uint8Array(e.data.numberOfReturns);\r\n\t\t\tlet pointSourceIds = new Uint16Array(e.data.pointSourceId);\r\n\t\t\tlet indices = new Uint8Array(e.data.indices);\r\n\t\t\tlet gpsTime = new Float32Array(e.data.gpsTime);\r\n\r\n\t\t\tg.setAttribute('position',\r\n\t\t\t\t\tnew THREE.BufferAttribute(positions, 3));\r\n\t\t\tg.setAttribute('rgba',\r\n\t\t\t\t\tnew THREE.BufferAttribute(colors, 4, true));\r\n\t\t\tg.setAttribute('intensity',\r\n\t\t\t\t\tnew THREE.BufferAttribute(intensities, 1));\r\n\t\t\tg.setAttribute('classification',\r\n\t\t\t\t\tnew THREE.BufferAttribute(classifications, 1));\r\n\t\t\tg.setAttribute('return number',\r\n\t\t\t\t\tnew THREE.BufferAttribute(returnNumbers, 1));\r\n\t\t\tg.setAttribute('number of returns',\r\n\t\t\t\t\tnew THREE.BufferAttribute(numberOfReturns, 1));\r\n\t\t\tg.setAttribute('source id',\r\n\t\t\t\t\tnew THREE.BufferAttribute(pointSourceIds, 1));\r\n\t\t\tg.setAttribute('indices',\r\n\t\t\t\t\tnew THREE.BufferAttribute(indices, 4));\r\n\t\t\tg.setAttribute('gps-time',\r\n\t\t\t\t\tnew THREE.BufferAttribute(gpsTime, 1));\r\n\t\t\tthis.node.gpsTime = e.data.gpsMeta;\r\n\r\n\t\t\tg.attributes.indices.normalized = true;\r\n\r\n\t\t\tfor (const key in e.data.ranges) {\r\n\t\t\t\tconst range = e.data.ranges[key];\r\n\t\t\t\tconst attribute = pointAttributes.attributes.find(a => a.name === key);\r\n\t\t\t\tif (attribute) {\r\n\t\t\t\t\tattribute.range[0] = Math.min(attribute.range[0], range[0]);\r\n\t\t\t\t\tattribute.range[1] = Math.max(attribute.range[1], range[1]);\r\n\r\n\t\t\t\t\t// May not be right, but we need something here or we crash.\r\n\t\t\t\t\tif (!attribute.initialRange) {\r\n\t\t\t\t\t\tattribute.initialRange = attribute.range\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet tightBoundingBox = new THREE.Box3(\r\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.min),\r\n\t\t\t\tnew THREE.Vector3().fromArray(e.data.tightBoundingBox.max)\r\n\t\t\t);\r\n\r\n\t\t\tthis.node.doneLoading(\r\n\t\t\t\tg,\r\n\t\t\t\ttightBoundingBox,\r\n\t\t\t\tpointCount,\r\n\t\t\t\tnew THREE.Vector3(...e.data.mean));\r\n\r\n\t\t\tPotree.workerPool.returnWorker(workerPath, worker);\r\n\t\t};\r\n\r\n\t\tlet message = { isFullFile, compressed, header, eb, pointCount, nodemin };\r\n\r\n\t\tworker.postMessage(message, [message.compressed]);\r\n\t};\r\n};\r\n","import {EptBinaryLoader} from \"./BinaryLoader.js\";\r\n\r\nexport class EptZstandardLoader extends EptBinaryLoader {\r\n extension() {\r\n return '.zst';\r\n }\r\n\r\n workerPath() {\r\n return Potree.scriptPath + '/workers/EptZstandardDecoderWorker.js';\r\n }\r\n};\r\n\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Line2} from \"../../libs/three.js/lines/Line2.js\";\r\nimport {LineGeometry} from \"../../libs/three.js/lines/LineGeometry.js\";\r\nimport {LineMaterial} from \"../../libs/three.js/lines/LineMaterial.js\";\r\n\r\nexport class ShapefileLoader{\r\n\r\n\tconstructor(){\r\n\t\tthis.transform = null;\r\n\t}\r\n\r\n\tasync load(path){\r\n\r\n\t\tconst matLine = new LineMaterial( {\r\n\t\t\tcolor: 0xff0000,\r\n\t\t\tlinewidth: 3, // in pixels\r\n\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\tdashed: false\r\n\t\t} );\r\n\r\n\t\tconst features = await this.loadShapefileFeatures(path);\r\n\t\tconst node = new THREE.Object3D();\r\n\t\t\r\n\t\tfor(const feature of features){\r\n\t\t\tconst fnode = this.featureToSceneNode(feature, matLine);\r\n\t\t\tnode.add(fnode);\r\n\t\t}\r\n\r\n\t\tlet setResolution = (x, y) => {\r\n\t\t\tmatLine.resolution.set(x, y);\r\n\t\t};\r\n\r\n\t\tconst result = {\r\n\t\t\tfeatures: features,\r\n\t\t\tnode: node,\r\n\t\t\tsetResolution: setResolution,\r\n\t\t};\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tfeatureToSceneNode(feature, matLine){\r\n\t\tlet geometry = feature.geometry;\r\n\t\t\r\n\t\tlet color = new THREE.Color(1, 1, 1);\r\n\r\n\t\tlet transform = this.transform;\r\n\t\tif(transform === null){\r\n\t\t\ttransform = {forward: (v) => v};\r\n\t\t}\r\n\t\t\r\n\t\tif(feature.geometry.type === \"Point\"){\r\n\t\t\tlet sg = new THREE.SphereGeometry(1, 18, 18);\r\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\r\n\t\t\tlet s = new THREE.Mesh(sg, sm);\r\n\t\t\t\r\n\t\t\tlet [long, lat] = geometry.coordinates;\r\n\t\t\tlet pos = transform.forward([long, lat]);\r\n\t\t\t\r\n\t\t\ts.position.set(...pos, 20);\r\n\t\t\t\r\n\t\t\ts.scale.set(10, 10, 10);\r\n\t\t\t\r\n\t\t\treturn s;\r\n\t\t}else if(geometry.type === \"LineString\"){\r\n\t\t\tlet coordinates = [];\r\n\t\t\t\r\n\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\r\n\t\t\tfor(let i = 0; i < geometry.coordinates.length; i++){\r\n\t\t\t\tlet [long, lat] = geometry.coordinates[i];\r\n\t\t\t\tlet pos = transform.forward([long, lat]);\r\n\t\t\t\t\r\n\t\t\t\tmin.x = Math.min(min.x, pos[0]);\r\n\t\t\t\tmin.y = Math.min(min.y, pos[1]);\r\n\t\t\t\tmin.z = Math.min(min.z, 20);\r\n\t\t\t\t\r\n\t\t\t\tcoordinates.push(...pos, 20);\r\n\t\t\t\tif(i > 0 && i < geometry.coordinates.length - 1){\r\n\t\t\t\t\tcoordinates.push(...pos, 20);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\r\n\t\t\t\tcoordinates[i+0] -= min.x;\r\n\t\t\t\tcoordinates[i+1] -= min.y;\r\n\t\t\t\tcoordinates[i+2] -= min.z;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst lineGeometry = new LineGeometry();\r\n\t\t\tlineGeometry.setPositions( coordinates );\r\n\r\n\t\t\tconst line = new Line2( lineGeometry, matLine );\r\n\t\t\tline.computeLineDistances();\r\n\t\t\tline.scale.set( 1, 1, 1 );\r\n\t\t\tline.position.copy(min);\r\n\t\t\t\r\n\t\t\treturn line;\r\n\t\t}else if(geometry.type === \"Polygon\"){\r\n\t\t\tfor(let pc of geometry.coordinates){\r\n\t\t\t\tlet coordinates = [];\r\n\t\t\t\t\r\n\t\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\r\n\t\t\t\tfor(let i = 0; i < pc.length; i++){\r\n\t\t\t\t\tlet [long, lat] = pc[i];\r\n\t\t\t\t\tlet pos = transform.forward([long, lat]);\r\n\t\t\t\t\t\r\n\t\t\t\t\tmin.x = Math.min(min.x, pos[0]);\r\n\t\t\t\t\tmin.y = Math.min(min.y, pos[1]);\r\n\t\t\t\t\tmin.z = Math.min(min.z, 20);\r\n\t\t\t\t\t\r\n\t\t\t\t\tcoordinates.push(...pos, 20);\r\n\t\t\t\t\tif(i > 0 && i < pc.length - 1){\r\n\t\t\t\t\t\tcoordinates.push(...pos, 20);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\r\n\t\t\t\t\tcoordinates[i+0] -= min.x;\r\n\t\t\t\t\tcoordinates[i+1] -= min.y;\r\n\t\t\t\t\tcoordinates[i+2] -= min.z;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst lineGeometry = new LineGeometry();\r\n\t\t\t\tlineGeometry.setPositions( coordinates );\r\n\r\n\t\t\t\tconst line = new Line2( lineGeometry, matLine );\r\n\t\t\t\tline.computeLineDistances();\r\n\t\t\t\tline.scale.set( 1, 1, 1 );\r\n\t\t\t\tline.position.copy(min);\r\n\t\t\t\t\r\n\t\t\t\treturn line;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.log(\"unhandled feature: \", feature);\r\n\t\t}\r\n\t}\r\n\r\n\tasync loadShapefileFeatures(file){\r\n\t\tlet features = [];\r\n\r\n\t\tlet source = await shapefile.open(file);\r\n\r\n\t\twhile(true){\r\n\t\t\tlet result = await source.read();\r\n\r\n\t\t\tif (result.done) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tif (result.value && result.value.type === 'Feature' && result.value.geometry !== undefined) {\r\n\t\t\t\tfeatures.push(result.value);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn features;\r\n\t}\r\n\r\n};\r\n\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Line2} from \"../../libs/three.js/lines/Line2.js\";\r\nimport {LineGeometry} from \"../../libs/three.js/lines/LineGeometry.js\";\r\nimport {LineMaterial} from \"../../libs/three.js/lines/LineMaterial.js\";\r\nimport {Utils} from \"../utils.js\";\r\n\r\nconst defaultColors = {\r\n\t\"landuse\": [0.5, 0.5, 0.5],\r\n\t\"natural\": [0.0, 1.0, 0.0],\r\n\t\"places\": [1.0, 0.0, 1.0],\r\n\t\"points\": [0.0, 1.0, 1.0],\r\n\t\"roads\": [1.0, 1.0, 0.0],\r\n\t\"waterways\": [0.0, 0.0, 1.0],\r\n\t\"default\": [0.9, 0.6, 0.1],\r\n};\r\n\r\nfunction getColor(feature){\r\n\tlet color = defaultColors[feature];\r\n\r\n\tif(!color){\r\n\t\tcolor = defaultColors[\"default\"];\r\n\t}\r\n\r\n\treturn color;\r\n}\r\n\r\nexport class Geopackage{\r\n\tconstructor(){\r\n\t\tthis.path = null;\r\n\t\tthis.node = null;\r\n\t}\r\n};\r\n\r\nexport class GeoPackageLoader{\r\n\r\n\tconstructor(){\r\n\r\n\t}\r\n\r\n\tstatic async loadUrl(url, params){\r\n\r\n\t\tawait Promise.all([\r\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`),\r\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`),\r\n\t\t]);\r\n\t\t\r\n\t\tconst result = await fetch(url);\r\n\t\tconst buffer = await result.arrayBuffer();\r\n\r\n\t\tparams = params || {};\r\n\r\n\t\tparams.source = url;\r\n\r\n\t\treturn GeoPackageLoader.loadBuffer(buffer, params);\r\n\t}\r\n\r\n\tstatic async loadBuffer(buffer, params){\r\n\r\n\t\tawait Promise.all([\r\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/geopackage/geopackage.js`),\r\n\t\t\tUtils.loadScript(`${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.js`),\r\n\t\t]);\r\n\r\n\t\tparams = params || {};\r\n\r\n\t\tconst resolver = async (resolve) => {\r\n\t\t\t\r\n\t\t\tlet transform = params.transform;\r\n\t\t\tif(!transform){\r\n\t\t\t\ttransform = {forward: (arg) => arg};\r\n\t\t\t}\r\n\r\n\t\t\tconst wasmPath = `${Potree.scriptPath}/lazylibs/sql.js/sql-wasm.wasm`;\r\n\t\t\tconst SQL = await initSqlJs({ locateFile: filename => wasmPath});\r\n\r\n\t\t\tconst u8 = new Uint8Array(buffer);\r\n\r\n\t\t\tconst data = await geopackage.open(u8);\r\n\t\t\twindow.data = data;\r\n\r\n\t\t\tconst geopackageNode = new THREE.Object3D();\r\n\t\t\tgeopackageNode.name = params.source;\r\n\t\t\tgeopackageNode.potree = {\r\n\t\t\t\tsource: params.source,\r\n\t\t\t};\r\n\r\n\t\t\tconst geo = new Geopackage();\r\n\t\t\tgeo.path = params.source;\r\n\t\t\tgeo.node = geopackageNode;\r\n\r\n\t\t\tconst tables = data.getTables();\r\n\r\n\t\t\tfor(const table of tables.features){\r\n\t\t\t\tconst dao = data.getFeatureDao(table);\r\n\r\n\t\t\t\tlet boundingBox = dao.getBoundingBox();\r\n\t\t\t\tboundingBox = boundingBox.projectBoundingBox(dao.projection, 'EPSG:4326');\r\n\t\t\t\tconst geoJson = data.queryForGeoJSONFeaturesInTable(table, boundingBox);\r\n\r\n\t\t\t\tconst matLine = new LineMaterial( {\r\n\t\t\t\t\tcolor: new THREE.Color().setRGB(...getColor(table)),\r\n\t\t\t\t\tlinewidth: 2, \r\n\t\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t\t\tdashed: false\r\n\t\t\t\t} );\r\n\r\n\t\t\t\tconst node = new THREE.Object3D();\r\n\t\t\t\tnode.name = table;\r\n\t\t\t\tgeo.node.add(node);\r\n\r\n\t\t\t\tfor(const [index, feature] of Object.entries(geoJson)){\r\n\t\t\t\t\t//const featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, transform);\r\n\t\t\t\t\tconst featureNode = GeoPackageLoader.featureToSceneNode(feature, matLine, dao.projection, transform);\r\n\t\t\t\t\tnode.add(featureNode);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tresolve(geo);\r\n\t\t}\r\n\r\n\t\treturn new Promise(resolver);\r\n\t}\r\n\r\n\tstatic featureToSceneNode(feature, matLine, geopackageProjection, transform){\r\n\t\tlet geometry = feature.geometry;\r\n\t\t\r\n\t\tlet color = new THREE.Color(1, 1, 1);\r\n\t\t\r\n\t\tif(feature.geometry.type === \"Point\"){\r\n\t\t\tlet sg = new THREE.SphereGeometry(1, 18, 18);\r\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\r\n\t\t\tlet s = new THREE.Mesh(sg, sm);\r\n\t\t\t\r\n\t\t\tlet [long, lat] = geometry.coordinates;\r\n\t\t\tlet pos = transform.forward(geopackageProjection.forward([long, lat]));\r\n\t\t\t\r\n\t\t\ts.position.set(...pos, 20);\r\n\t\t\t\r\n\t\t\ts.scale.set(10, 10, 10);\r\n\t\t\t\r\n\t\t\treturn s;\r\n\t\t}else if(geometry.type === \"LineString\"){\r\n\t\t\tlet coordinates = [];\r\n\t\t\t\r\n\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\r\n\t\t\tfor(let i = 0; i < geometry.coordinates.length; i++){\r\n\t\t\t\tlet [long, lat] = geometry.coordinates[i];\r\n\t\t\t\tlet pos = transform.forward(geopackageProjection.forward([long, lat]));\r\n\t\t\t\t\r\n\t\t\t\tmin.x = Math.min(min.x, pos[0]);\r\n\t\t\t\tmin.y = Math.min(min.y, pos[1]);\r\n\t\t\t\tmin.z = Math.min(min.z, 20);\r\n\t\t\t\t\r\n\t\t\t\tcoordinates.push(...pos, 20);\r\n\t\t\t\tif(i > 0 && i < geometry.coordinates.length - 1){\r\n\t\t\t\t\tcoordinates.push(...pos, 20);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\r\n\t\t\t\tcoordinates[i+0] -= min.x;\r\n\t\t\t\tcoordinates[i+1] -= min.y;\r\n\t\t\t\tcoordinates[i+2] -= min.z;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tconst lineGeometry = new LineGeometry();\r\n\t\t\tlineGeometry.setPositions( coordinates );\r\n\r\n\t\t\tconst line = new Line2( lineGeometry, matLine );\r\n\t\t\tline.computeLineDistances();\r\n\t\t\tline.scale.set( 1, 1, 1 );\r\n\t\t\tline.position.copy(min);\r\n\t\t\t\r\n\t\t\treturn line;\r\n\t\t}else if(geometry.type === \"Polygon\"){\r\n\t\t\tfor(let pc of geometry.coordinates){\r\n\t\t\t\tlet coordinates = [];\r\n\t\t\t\t\r\n\t\t\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\r\n\t\t\t\tfor(let i = 0; i < pc.length; i++){\r\n\t\t\t\t\tlet [long, lat] = pc[i];\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet pos = transform.forward(geopackageProjection.forward([long, lat]));\r\n\t\t\t\t\t\r\n\t\t\t\t\tmin.x = Math.min(min.x, pos[0]);\r\n\t\t\t\t\tmin.y = Math.min(min.y, pos[1]);\r\n\t\t\t\t\tmin.z = Math.min(min.z, 20);\r\n\t\t\t\t\t\r\n\t\t\t\t\tcoordinates.push(...pos, 20);\r\n\t\t\t\t\tif(i > 0 && i < pc.length - 1){\r\n\t\t\t\t\t\tcoordinates.push(...pos, 20);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tfor(let i = 0; i < coordinates.length; i += 3){\r\n\t\t\t\t\tcoordinates[i+0] -= min.x;\r\n\t\t\t\t\tcoordinates[i+1] -= min.y;\r\n\t\t\t\t\tcoordinates[i+2] -= min.z;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst lineGeometry = new LineGeometry();\r\n\t\t\t\tlineGeometry.setPositions( coordinates );\r\n\r\n\t\t\t\tconst line = new Line2( lineGeometry, matLine );\r\n\t\t\t\tline.computeLineDistances();\r\n\t\t\t\tline.scale.set( 1, 1, 1 );\r\n\t\t\t\tline.position.copy(min);\r\n\t\t\t\t\r\n\t\t\t\treturn line;\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tconsole.log(\"unhandled feature: \", feature);\r\n\t\t}\r\n\t}\r\n\r\n};","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nexport class ClipVolume extends THREE.Object3D{\r\n\t\r\n\tconstructor(args){\r\n\t\tsuper();\r\n\t\t\r\n\t\tthis.constructor.counter = (this.constructor.counter === undefined) ? 0 : this.constructor.counter + 1;\r\n\t\tthis.name = \"clip_volume_\" + this.constructor.counter;\r\n\r\n\t\tlet alpha = args.alpha || 0;\r\n\t\tlet beta = args.beta || 0;\r\n\t\tlet gamma = args.gamma || 0;\r\n\r\n\t\tthis.rotation.x = alpha;\r\n\t\tthis.rotation.y = beta;\r\n\t\tthis.rotation.z = gamma;\r\n\r\n\t\tthis.clipOffset = 0.001;\r\n\t\tthis.clipRotOffset = 1;\r\n\t\t\t\t\r\n\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\r\n\t\tboxGeometry.computeBoundingBox();\r\n\t\t\r\n\t\tlet boxFrameGeometry = new THREE.Geometry();\r\n\t\t{\t\t\t\r\n\t\t\t// bottom\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\r\n\t\t\t// top\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\r\n\t\t\t// sides\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\r\n\r\n\t\t\tboxFrameGeometry.colors.push(new THREE.Vector3(1, 1, 1));\r\n\t\t}\r\n\r\n\t\tlet planeFrameGeometry = new THREE.Geometry();\r\n\t\t{\t\t\t\t\t\t\r\n\t\t\t// middle line\r\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0));\r\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0));\r\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0));\r\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0));\r\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.0));\r\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.0));\r\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.0));\r\n\t\t\tplaneFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.0));\r\n\t\t}\r\n\r\n\t\tthis.dimension = new THREE.Vector3(1, 1, 1);\r\n\t\tthis.material = new THREE.MeshBasicMaterial( {\r\n\t\t\tcolor: 0x00ff00, \r\n\t\t\ttransparent: true, \r\n\t\t\topacity: 0.3,\r\n\t\t\tdepthTest: true, \r\n\t\t\tdepthWrite: false} );\r\n\t\tthis.box = new THREE.Mesh(boxGeometry, this.material);\r\n\t\tthis.box.geometry.computeBoundingBox();\r\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\r\n\t\tthis.add(this.box);\r\n\t\t\r\n\t\tthis.frame = new THREE.LineSegments( boxFrameGeometry, new THREE.LineBasicMaterial({color: 0x000000}));\r\n\t\tthis.add(this.frame);\r\n\t\tthis.planeFrame = new THREE.LineSegments( planeFrameGeometry, new THREE.LineBasicMaterial({color: 0xff0000}));\r\n\t\tthis.add(this.planeFrame);\r\n\r\n\t\t// set default thickness\r\n\t\tthis.setScaleZ(0.1);\r\n\r\n\t\t// create local coordinate system\r\n\t\tlet createArrow = (name, direction, color) => {\r\n\t\t\tlet material = new THREE.MeshBasicMaterial({\r\n\t\t\t\tcolor: color, \r\n\t\t\t\tdepthTest: false, \r\n\t\t\t\tdepthWrite: false});\r\n\t\t\t\t\r\n\t\t\tlet shaftGeometry = new THREE.Geometry();\r\n\t\t\tshaftGeometry.vertices.push(new THREE.Vector3(0, 0, 0));\r\n\t\t\tshaftGeometry.vertices.push(new THREE.Vector3(0, 1, 0));\r\n\t\t\t\r\n\t\t\tlet shaftMaterial = new THREE.LineBasicMaterial({\r\n\t\t\t\tcolor: color, \r\n\t\t\t\tdepthTest: false, \r\n\t\t\t\tdepthWrite: false,\r\n\t\t\t\ttransparent: true\r\n\t\t\t\t});\r\n\t\t\tlet shaft = new THREE.Line(shaftGeometry, shaftMaterial);\r\n\t\t\tshaft.name = name + \"_shaft\";\r\n\t\t\t\r\n\t\t\tlet headGeometry = new THREE.CylinderGeometry(0, 0.04, 0.1, 10, 1, false);\r\n\t\t\tlet headMaterial = material;\r\n\t\t\tlet head = new THREE.Mesh(headGeometry, headMaterial);\r\n\t\t\thead.name = name + \"_head\";\r\n\t\t\thead.position.y = 1;\r\n\t\t\t\r\n\t\t\tlet arrow = new THREE.Object3D();\r\n\t\t\tarrow.name = name;\r\n\t\t\tarrow.add(shaft);\r\n\t\t\tarrow.add(head);\r\n\r\n\t\t\treturn arrow;\r\n\t\t};\r\n\t\t\r\n\t\tthis.arrowX = createArrow(\"arrow_x\", new THREE.Vector3(1, 0, 0), 0xFF0000);\r\n\t\tthis.arrowY = createArrow(\"arrow_y\", new THREE.Vector3(0, 1, 0), 0x00FF00);\r\n\t\tthis.arrowZ = createArrow(\"arrow_z\", new THREE.Vector3(0, 0, 1), 0x0000FF);\r\n\t\t\r\n\t\tthis.arrowX.rotation.z = -Math.PI / 2;\r\n\t\tthis.arrowZ.rotation.x = Math.PI / 2;\r\n\r\n\t\tthis.arrowX.visible = false;\r\n\t\tthis.arrowY.visible = false;\r\n\t\tthis.arrowZ.visible = false;\r\n\r\n\t\tthis.add(this.arrowX);\r\n\t\tthis.add(this.arrowY);\r\n\t\tthis.add(this.arrowZ);\r\n\t\t\r\n\t\t{ // event listeners\r\n\t\t\tthis.addEventListener(\"ui_select\", e => { \r\n\t\t\t\tthis.arrowX.visible = true;\r\n\t\t\t\tthis.arrowY.visible = true;\r\n\t\t\t\tthis.arrowZ.visible = true; \r\n\t\t\t});\r\n\t\t\tthis.addEventListener(\"ui_deselect\", e => {\r\n\t\t\t\tthis.arrowX.visible = false;\r\n\t\t\t\tthis.arrowY.visible = false;\r\n\t\t\t\tthis.arrowZ.visible = false; \t\t\t\t\r\n\t\t\t});\r\n\t\t\tthis.addEventListener(\"select\", e => { \r\n\t\t\t\tlet scene_header = $(\"#\" + this.name + \" .scene_header\");\r\n\t\t\t\tif(!scene_header.next().is(\":visible\")) {\r\n\t\t\t\t\tscene_header.click();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\tthis.addEventListener(\"deselect\", e => { \r\n\t\t\t\tlet scene_header = $(\"#\" + this.name + \" .scene_header\");\r\n\t\t\t\tif(scene_header.next().is(\":visible\")) {\r\n\t\t\t\t\tscene_header.click();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.update();\r\n\t};\r\n\r\n\tsetClipOffset(offset) {\t\t\r\n\t\tthis.clipOffset = offset;\t\r\n\t}\r\n\r\n\tsetClipRotOffset(offset) {\t\t\r\n\t\tthis.clipRotOffset = offset;\t\t\r\n\t}\r\n\r\n\tsetScaleX(x) {\r\n\t\tthis.box.scale.x = x;\r\n\t\tthis.frame.scale.x = x;\r\n\t\tthis.planeFrame.scale.x = x;\t\t\t\r\n\t}\r\n\r\n\tsetScaleY(y) {\r\n\t\tthis.box.scale.y = y;\r\n\t\tthis.frame.scale.y = y;\r\n\t\tthis.planeFrame.scale.y = y;\t\t\r\n\t}\r\n\r\n\tsetScaleZ(z) {\r\n\t\tthis.box.scale.z = z;\r\n\t\tthis.frame.scale.z = z;\r\n\t\tthis.planeFrame.scale.z = z;\t\t\r\n\t}\r\n\r\n\toffset(args) {\r\n\t\tlet cs = args.cs || null;\r\n\t\tlet axis = args.axis || null;\r\n\t\tlet dir = args.dir || null;\r\n\r\n\t\tif(!cs || !axis || !dir) return;\r\n\r\n\t\tif(axis === \"x\") {\r\n\t\t\tif(cs === \"local\") {\r\n\t\t\t\tthis.position.add(this.localX.clone().multiplyScalar(dir * this.clipOffset));\r\n\t\t\t} else if(cs === \"global\") {\r\n\t\t\t\tthis.position.x = this.position.x + dir * this.clipOffset;\r\n\t\t\t}\r\n\t\t}else if(axis === \"y\") {\r\n\t\t\tif(cs === \"local\") {\r\n\t\t\t\tthis.position.add(this.localY.clone().multiplyScalar(dir * this.clipOffset));\r\n\t\t\t} else if(cs === \"global\") {\r\n\t\t\t\tthis.position.y = this.position.y + dir * this.clipOffset;\r\n\t\t\t}\r\n\t\t}else if(axis === \"z\") {\r\n\t\t\tif(cs === \"local\") {\r\n\t\t\t\tthis.position.add(this.localZ.clone().multiplyScalar(dir * this.clipOffset));\r\n\t\t\t} else if(cs === \"global\") {\r\n\t\t\t\tthis.position.z = this.position.z + dir * this.clipOffset;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.dispatchEvent({\"type\": \"clip_volume_changed\", \"viewer\": viewer, \"volume\": this});\r\n\t}\t\r\n\r\n\trotate(args) {\r\n\t\tlet cs = args.cs || null;\r\n\t\tlet axis = args.axis || null;\r\n\t\tlet dir = args.dir || null;\r\n\r\n\t\tif(!cs || !axis || !dir) return;\r\n\r\n\t\tif(cs === \"local\") {\r\n\t\t\tif(axis === \"x\") {\r\n\t\t\t\tthis.rotateOnAxis(new THREE.Vector3(1, 0, 0), dir * this.clipRotOffset * Math.PI / 180);\r\n\t\t\t} else if(axis === \"y\") {\r\n\t\t\t\tthis.rotateOnAxis(new THREE.Vector3(0, 1, 0), dir * this.clipRotOffset * Math.PI / 180);\r\n\t\t\t} else if(axis === \"z\") {\r\n\t\t\t\tthis.rotateOnAxis(new THREE.Vector3(0, 0, 1), dir * this.clipRotOffset * Math.PI / 180);\r\n\t\t\t}\r\n\t\t} else if(cs === \"global\") {\r\n\t\t\tlet rotaxis = new THREE.Vector4(1, 0, 0, 0);\t\r\n\t\t\tif(axis === \"y\") {\r\n\t\t\t\trotaxis = new THREE.Vector4(0, 1, 0, 0);\r\n\t\t\t} else if(axis === \"z\") {\r\n\t\t\t\trotaxis = new THREE.Vector4(0, 0, 1, 0);\r\n\t\t\t}\r\n\t\t\tthis.updateMatrixWorld();\r\n\t\t\tlet invM = newthis.matrixWorld.clone().invert();\r\n\t\t\trotaxis = rotaxis.applyMatrix4(invM).normalize();\r\n\t\t\trotaxis = new THREE.Vector3(rotaxis.x, rotaxis.y, rotaxis.z);\r\n\t\t\tthis.rotateOnAxis(rotaxis, dir * this.clipRotOffset * Math.PI / 180);\r\n\t\t}\r\n\r\n\t\tthis.updateLocalSystem();\r\n\r\n\t\tthis.dispatchEvent({\"type\": \"clip_volume_changed\", \"viewer\": viewer, \"volume\": this});\r\n\t}\t\r\n\r\n\tupdate(){\r\n\t\tthis.boundingBox = this.box.geometry.boundingBox;\r\n\t\tthis.boundingSphere = this.boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\t\r\n\t\tthis.box.visible = false;\r\n\r\n\t\tthis.updateLocalSystem();\r\n\t};\r\n\r\n\tupdateLocalSystem() {\t\t\r\n\t\t// extract local coordinate axes\r\n\t\tlet rotQuat = this.getWorldQuaternion();\r\n\t\tthis.localX = new THREE.Vector3(1, 0, 0).applyQuaternion(rotQuat).normalize();\r\n\t\tthis.localY = new THREE.Vector3(0, 1, 0).applyQuaternion(rotQuat).normalize();\r\n\t\tthis.localZ = new THREE.Vector3(0, 0, 1).applyQuaternion(rotQuat).normalize();\r\n\t}\r\n\t\r\n\traycast(raycaster, intersects){\r\n\t\t\r\n\t\tlet is = [];\r\n\t\tthis.box.raycast(raycaster, is);\r\n\t\r\n\t\tif(is.length > 0){\r\n\t\t\tlet I = is[0];\r\n\t\t\tintersects.push({\r\n\t\t\t\tdistance: I.distance,\r\n\t\t\t\tobject: this,\r\n\t\t\t\tpoint: I.point.clone()\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n};\r\n","\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {ClipVolume} from \"./ClipVolume.js\";\r\nimport {PolygonClipVolume} from \"./PolygonClipVolume.js\";\r\nimport { EventDispatcher } from \"../EventDispatcher.js\";\r\n\r\nexport class ClippingTool extends EventDispatcher{\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper(); \r\n\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.maxPolygonVertices = 8; \r\n\t\t\r\n\t\tthis.addEventListener(\"start_inserting_clipping_volume\", e => {\r\n\t\t\tthis.viewer.dispatchEvent({\r\n\t\t\t\ttype: \"cancel_insertions\"\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.sceneMarker = new THREE.Scene();\r\n\t\tthis.sceneVolume = new THREE.Scene();\r\n\t\tthis.sceneVolume.name = \"scene_clip_volume\";\r\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.sceneVolume);\r\n\r\n\t\tthis.onRemove = e => {\r\n\t\t\tthis.sceneVolume.remove(e.volume);\r\n\t\t};\r\n\t\t\r\n\t\tthis.onAdd = e => {\r\n\t\t\tthis.sceneVolume.add(e.volume);\r\n\t\t};\r\n\t\t\r\n\t\tthis.viewer.inputHandler.addEventListener(\"delete\", e => {\r\n\t\t\tlet volumes = e.selection.filter(e => (e instanceof ClipVolume));\r\n\t\t\tvolumes.forEach(e => this.viewer.scene.removeClipVolume(e));\r\n\t\t\tlet polyVolumes = e.selection.filter(e => (e instanceof PolygonClipVolume));\r\n\t\t\tpolyVolumes.forEach(e => this.viewer.scene.removePolygonClipVolume(e));\r\n\t\t});\r\n\t}\r\n\r\n\tsetScene(scene){\r\n\t\tif(this.scene === scene){\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tif(this.scene){\r\n\t\t\tthis.scene.removeEventListeners(\"clip_volume_added\", this.onAdd);\r\n\t\t\tthis.scene.removeEventListeners(\"clip_volume_removed\", this.onRemove);\r\n\t\t\tthis.scene.removeEventListeners(\"polygon_clip_volume_added\", this.onAdd);\r\n\t\t\tthis.scene.removeEventListeners(\"polygon_clip_volume_removed\", this.onRemove);\r\n\t\t}\r\n\t\t\r\n\t\tthis.scene = scene;\r\n\t\t\r\n\t\tthis.scene.addEventListener(\"clip_volume_added\", this.onAdd);\r\n\t\tthis.scene.addEventListener(\"clip_volume_removed\", this.onRemove);\r\n\t\tthis.scene.addEventListener(\"polygon_clip_volume_added\", this.onAdd);\r\n\t\tthis.scene.addEventListener(\"polygon_clip_volume_removed\", this.onRemove);\r\n\t}\r\n\r\n\tstartInsertion(args = {}) {\t\r\n\t\tlet type = args.type || null;\r\n\r\n\t\tif(!type) return null;\r\n\r\n\t\tlet domElement = this.viewer.renderer.domElement;\r\n\t\tlet canvasSize = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\r\n\t\tlet svg = $(`\r\n\t\t\r\n\r\n\t\t\t\r\n\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\r\n\t\t\t\r\n\r\n\t\t\t\r\n\t\t`);\r\n\t\t$(domElement.parentElement).append(svg);\r\n\r\n\t\tlet polyClipVol = new PolygonClipVolume(this.viewer.scene.getActiveCamera().clone());\r\n\r\n\t\tthis.dispatchEvent({\"type\": \"start_inserting_clipping_volume\"});\r\n\r\n\t\tthis.viewer.scene.addPolygonClipVolume(polyClipVol);\r\n\t\tthis.sceneMarker.add(polyClipVol);\r\n\r\n\t\tlet cancel = {\r\n\t\t\tcallback: null\r\n\t\t};\r\n\r\n\t\tlet insertionCallback = (e) => {\r\n\t\t\tif(e.button === THREE.MOUSE.LEFT){\r\n\t\t\t\t\r\n\t\t\t\tpolyClipVol.addMarker();\r\n\r\n\t\t\t\t// SVC Screen Line\r\n\t\t\t\tsvg.find(\"polyline\").each((index, target) => {\r\n\t\t\t\t\tlet newPoint = svg[0].createSVGPoint();\r\n\t\t\t\t\tnewPoint.x = e.offsetX;\r\n\t\t\t\t\tnewPoint.y = e.offsetY;\r\n\t\t\t\t\tlet polyline = target.points.appendItem(newPoint);\r\n\t\t\t\t});\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\tif(polyClipVol.markers.length > this.maxPolygonVertices){\r\n\t\t\t\t\tcancel.callback();\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.viewer.inputHandler.startDragging(\r\n\t\t\t\t\tpolyClipVol.markers[polyClipVol.markers.length - 1]);\r\n\t\t\t}else if(e.button === THREE.MOUSE.RIGHT){\r\n\t\t\t\tcancel.callback(e);\r\n\t\t\t}\r\n\t\t};\r\n\t\t\r\n\t\tcancel.callback = e => {\r\n\r\n\t\t\t//let first = svg.find(\"polyline\")[0].points[0];\r\n\t\t\t//svg.find(\"polyline\").each((index, target) => {\r\n\t\t\t//\tlet newPoint = svg[0].createSVGPoint();\r\n\t\t\t//\tnewPoint.x = first.x;\r\n\t\t\t//\tnewPoint.y = first.y;\r\n\t\t\t//\tlet polyline = target.points.appendItem(newPoint);\r\n\t\t\t//});\r\n\t\t\tsvg.remove();\r\n\r\n\t\t\tif(polyClipVol.markers.length > 3) {\r\n\t\t\t\tpolyClipVol.removeLastMarker();\r\n\t\t\t\tpolyClipVol.initialized = true;\t\r\n\t\t\t} else {\r\n\t\t\t\tthis.viewer.scene.removePolygonClipVolume(polyClipVol);\r\n\t\t\t}\r\n\r\n\t\t\tthis.viewer.renderer.domElement.removeEventListener(\"mouseup\", insertionCallback, true);\r\n\t\t\tthis.viewer.removeEventListener(\"cancel_insertions\", cancel.callback);\r\n\t\t\tthis.viewer.inputHandler.enabled = true;\r\n\t\t};\r\n\t\t\r\n\t\tthis.viewer.addEventListener(\"cancel_insertions\", cancel.callback);\r\n\t\tthis.viewer.renderer.domElement.addEventListener(\"mouseup\", insertionCallback , true);\r\n\t\tthis.viewer.inputHandler.enabled = false;\r\n\t\t\r\n\t\tpolyClipVol.addMarker();\r\n\t\tthis.viewer.inputHandler.startDragging(\r\n\t\t\tpolyClipVol.markers[polyClipVol.markers.length - 1]);\r\n\r\n\t\treturn polyClipVol;\r\n\t}\r\n\r\n\tupdate() {\r\n\r\n\t}\r\n};","\r\nimport {Enum} from \"../Enum.js\";\r\n\r\nvar GeoTIFF = (function (exports) {\r\n'use strict';\r\n\r\nconst Endianness = new Enum({\r\n\tLITTLE: \"II\",\r\n\tBIG: \"MM\",\r\n});\r\n\r\nconst Type = new Enum({\r\n\tBYTE: {value: 1, bytes: 1},\r\n\tASCII: {value: 2, bytes: 1},\r\n\tSHORT: {value: 3, bytes: 2},\r\n\tLONG: {value: 4, bytes: 4},\r\n\tRATIONAL: {value: 5, bytes: 8},\r\n\tSBYTE: {value: 6, bytes: 1},\r\n\tUNDEFINED: {value: 7, bytes: 1},\r\n\tSSHORT: {value: 8, bytes: 2},\r\n\tSLONG: {value: 9, bytes: 4},\r\n\tSRATIONAL: {value: 10, bytes: 8},\r\n\tFLOAT: {value: 11, bytes: 4},\r\n\tDOUBLE: {value: 12, bytes: 8},\r\n});\r\n\r\nconst Tag = new Enum({\r\n\tIMAGE_WIDTH: 256,\r\n\tIMAGE_HEIGHT: 257,\r\n\tBITS_PER_SAMPLE: 258,\r\n\tCOMPRESSION: 259,\r\n\tPHOTOMETRIC_INTERPRETATION: 262,\r\n\tSTRIP_OFFSETS: 273,\r\n\tORIENTATION: 274,\r\n\tSAMPLES_PER_PIXEL: 277,\r\n\tROWS_PER_STRIP: 278,\r\n\tSTRIP_BYTE_COUNTS: 279,\r\n\tX_RESOLUTION: 282,\r\n\tY_RESOLUTION: 283,\r\n\tPLANAR_CONFIGURATION: 284,\r\n\tRESOLUTION_UNIT: 296,\r\n\tSOFTWARE: 305,\r\n\tCOLOR_MAP: 320,\r\n\tSAMPLE_FORMAT: 339,\r\n\tMODEL_PIXEL_SCALE: 33550, // [GeoTIFF] TYPE: double N: 3\r\n\tMODEL_TIEPOINT: 33922, // [GeoTIFF] TYPE: double N: 6 * NUM_TIEPOINTS\r\n\tGEO_KEY_DIRECTORY: 34735, // [GeoTIFF] TYPE: short N: >= 4\r\n\tGEO_DOUBLE_PARAMS: 34736, // [GeoTIFF] TYPE: short N: variable\r\n\tGEO_ASCII_PARAMS: 34737, // [GeoTIFF] TYPE: ascii N: variable\r\n});\r\n\r\nconst typeMapping = new Map([\r\n\t[Type.BYTE, Uint8Array],\r\n\t[Type.ASCII, Uint8Array],\r\n\t[Type.SHORT, Uint16Array],\r\n\t[Type.LONG, Uint32Array],\r\n\t[Type.RATIONAL, Uint32Array],\r\n\t[Type.SBYTE, Int8Array],\r\n\t[Type.UNDEFINED, Uint8Array],\r\n\t[Type.SSHORT, Int16Array],\r\n\t[Type.SLONG, Int32Array],\r\n\t[Type.SRATIONAL, Int32Array],\r\n\t[Type.FLOAT, Float32Array],\r\n\t[Type.DOUBLE, Float64Array],\r\n]);\r\n\r\nclass IFDEntry{\r\n\r\n\tconstructor(tag, type, count, offset, value){\r\n\t\tthis.tag = tag;\r\n\t\tthis.type = type;\r\n\t\tthis.count = count;\r\n\t\tthis.offset = offset;\r\n\t\tthis.value = value;\r\n\t}\r\n\r\n}\r\n\r\nclass Image{\r\n\r\n\tconstructor(){\r\n\t\tthis.width = 0;\r\n\t\tthis.height = 0;\r\n\t\tthis.buffer = null;\r\n\t\tthis.metadata = [];\r\n\t}\r\n\r\n}\r\n\r\nclass Reader{\r\n\r\n\tconstructor(){\r\n\r\n\t}\r\n\r\n\tstatic read(data){\r\n\r\n\t\tlet endiannessTag = String.fromCharCode(...Array.from(data.slice(0, 2)));\r\n\t\tlet endianness = Endianness.fromValue(endiannessTag);\r\n\r\n\t\tlet tiffCheckTag = data.readUInt8(2);\r\n\r\n\t\tif(tiffCheckTag !== 42){\r\n\t\t\tthrow new Error(\"not a valid tiff file\");\r\n\t\t}\r\n\r\n\t\tlet offsetToFirstIFD = data.readUInt32LE(4);\r\n\r\n\t\tconsole.log(\"offsetToFirstIFD\", offsetToFirstIFD);\r\n\r\n\t\tlet ifds = [];\r\n\t\tlet IFDsRead = false;\r\n\t\tlet currentIFDOffset = offsetToFirstIFD;\r\n\t\tlet i = 0;\r\n\t\twhile(IFDsRead || i < 100){\r\n\r\n\t\t\tconsole.log(\"currentIFDOffset\", currentIFDOffset);\r\n\t\t\tlet numEntries = data.readUInt16LE(currentIFDOffset);\r\n\t\t\tlet nextIFDOffset = data.readUInt32LE(currentIFDOffset + 2 + numEntries * 12);\r\n\r\n\t\t\tconsole.log(\"next offset: \", currentIFDOffset + 2 + numEntries * 12);\r\n\r\n\t\t\tlet entryBuffer = data.slice(currentIFDOffset + 2, currentIFDOffset + 2 + 12 * numEntries);\r\n\r\n\t\t\tfor(let i = 0; i < numEntries; i++){\r\n\t\t\t\tlet tag = Tag.fromValue(entryBuffer.readUInt16LE(i * 12));\r\n\t\t\t\tlet type = Type.fromValue(entryBuffer.readUInt16LE(i * 12 + 2));\r\n\t\t\t\tlet count = entryBuffer.readUInt32LE(i * 12 + 4);\r\n\t\t\t\tlet offsetOrValue = entryBuffer.readUInt32LE(i * 12 + 8);\r\n\t\t\t\tlet valueBytes = type.bytes * count;\r\n\r\n\t\t\t\tlet value;\r\n\t\t\t\tif(valueBytes <= 4){\r\n\t\t\t\t\tvalue = offsetOrValue;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tlet valueBuffer = new Uint8Array(valueBytes);\r\n\t\t\t\t\tvalueBuffer.set(data.slice(offsetOrValue, offsetOrValue + valueBytes));\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet ArrayType = typeMapping.get(type);\r\n\r\n\t\t\t\t\tvalue = new ArrayType(valueBuffer.buffer);\r\n\r\n\t\t\t\t\tif(type === Type.ASCII){\r\n\t\t\t\t\t\tvalue = String.fromCharCode(...value);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet ifd = new IFDEntry(tag, type, count, offsetOrValue, value);\r\n\r\n\t\t\t\tifds.push(ifd);\r\n\t\t\t}\r\n\r\n\t\t\tconsole.log(\"nextIFDOffset\", nextIFDOffset);\r\n\r\n\t\t\tif(nextIFDOffset === 0){\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\r\n\t\t\tcurrentIFDOffset = nextIFDOffset;\r\n\t\t\ti++;\r\n\t\t}\r\n\r\n\t\tlet ifdForTag = (tag) => {\r\n\t\t\tfor(let entry of ifds){\r\n\t\t\t\tif(entry.tag === tag){\r\n\t\t\t\t\treturn entry;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\t\t};\r\n\r\n\t\tlet width = ifdForTag(Tag.IMAGE_WIDTH, ifds).value;\r\n\t\tlet height = ifdForTag(Tag.IMAGE_HEIGHT, ifds).value;\r\n\t\tlet compression = ifdForTag(Tag.COMPRESSION, ifds).value;\r\n\t\tlet rowsPerStrip = ifdForTag(Tag.ROWS_PER_STRIP, ifds).value; \r\n\t\tlet ifdStripOffsets = ifdForTag(Tag.STRIP_OFFSETS, ifds);\r\n\t\tlet ifdStripByteCounts = ifdForTag(Tag.STRIP_BYTE_COUNTS, ifds);\r\n\r\n\t\tlet numStrips = Math.ceil(height / rowsPerStrip);\r\n\r\n\t\tlet stripByteCounts = [];\r\n\t\tfor(let i = 0; i < ifdStripByteCounts.count; i++){\r\n\t\t\tlet type = ifdStripByteCounts.type;\r\n\t\t\tlet offset = ifdStripByteCounts.offset + i * type.bytes;\r\n\r\n\t\t\tlet value;\r\n\t\t\tif(type === Type.SHORT){\r\n\t\t\t\tvalue = data.readUInt16LE(offset);\r\n\t\t\t}else if(type === Type.LONG){\r\n\t\t\t\tvalue = data.readUInt32LE(offset);\r\n\t\t\t}\r\n\r\n\t\t\tstripByteCounts.push(value);\r\n\t\t}\r\n\r\n\t\tlet stripOffsets = [];\r\n\t\tfor(let i = 0; i < ifdStripOffsets.count; i++){\r\n\t\t\tlet type = ifdStripOffsets.type;\r\n\t\t\tlet offset = ifdStripOffsets.offset + i * type.bytes;\r\n\r\n\t\t\tlet value;\r\n\t\t\tif(type === Type.SHORT){\r\n\t\t\t\tvalue = data.readUInt16LE(offset);\r\n\t\t\t}else if(type === Type.LONG){\r\n\t\t\t\tvalue = data.readUInt32LE(offset);\r\n\t\t\t}\r\n\r\n\t\t\tstripOffsets.push(value);\r\n\t\t}\r\n\r\n\t\tlet imageBuffer = new Uint8Array(width * height * 3);\r\n\t\t\r\n\t\tlet linesProcessed = 0;\r\n\t\tfor(let i = 0; i < numStrips; i++){\r\n\t\t\tlet stripOffset = stripOffsets[i];\r\n\t\t\tlet stripBytes = stripByteCounts[i];\r\n\t\t\tlet stripData = data.slice(stripOffset, stripOffset + stripBytes);\r\n\t\t\tlet lineBytes = width * 3;\r\n\t\t\tfor(let y = 0; y < rowsPerStrip; y++){\r\n\t\t\t\tlet line = stripData.slice(y * lineBytes, y * lineBytes + lineBytes);\r\n\t\t\t\timageBuffer.set(line, linesProcessed * lineBytes);\r\n\t\t\r\n\t\t\t\tif(line.length === lineBytes){\r\n\t\t\t\t\tlinesProcessed++;\r\n\t\t\t\t}else{\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tconsole.log(`width: ${width}`);\r\n\t\tconsole.log(`height: ${height}`);\r\n\t\tconsole.log(`numStrips: ${numStrips}`);\r\n\t\tconsole.log(\"stripByteCounts\", stripByteCounts.join(\", \"));\r\n\t\tconsole.log(\"stripOffsets\", stripOffsets.join(\", \"));\r\n\r\n\t\tlet image = new Image();\r\n\t\timage.width = width;\r\n\t\timage.height = height;\r\n\t\timage.buffer = imageBuffer;\r\n\t\timage.metadata = ifds;\r\n\r\n\t\treturn image;\r\n\t}\r\n\r\n}\r\n\r\n\r\nclass Exporter{\r\n\r\n\tconstructor(){\r\n\r\n\t}\r\n\r\n\tstatic toTiffBuffer(image, params = {}){\r\n\r\n\t\tlet offsetToFirstIFD = 8;\r\n\t\t\r\n\t\tlet headerBuffer = new Uint8Array([0x49, 0x49, 42, 0, offsetToFirstIFD, 0, 0, 0]);\r\n\r\n\t\tlet [width, height] = [image.width, image.height];\r\n\r\n\t\tlet ifds = [\r\n\t\t\tnew IFDEntry(Tag.IMAGE_WIDTH, Type.SHORT, 1, null, width),\r\n\t\t\tnew IFDEntry(Tag.IMAGE_HEIGHT, Type.SHORT, 1, null, height),\r\n\t\t\tnew IFDEntry(Tag.BITS_PER_SAMPLE, Type.SHORT, 4, null, new Uint16Array([8, 8, 8, 8])),\r\n\t\t\tnew IFDEntry(Tag.COMPRESSION, Type.SHORT, 1, null, 1),\r\n\t\t\tnew IFDEntry(Tag.PHOTOMETRIC_INTERPRETATION, Type.SHORT, 1, null, 2),\r\n\t\t\tnew IFDEntry(Tag.ORIENTATION, Type.SHORT, 1, null, 1),\r\n\t\t\tnew IFDEntry(Tag.SAMPLES_PER_PIXEL, Type.SHORT, 1, null, 4),\r\n\t\t\tnew IFDEntry(Tag.ROWS_PER_STRIP, Type.LONG, 1, null, height),\r\n\t\t\tnew IFDEntry(Tag.STRIP_BYTE_COUNTS, Type.LONG, 1, null, width * height * 3),\r\n\t\t\tnew IFDEntry(Tag.PLANAR_CONFIGURATION, Type.SHORT, 1, null, 1),\r\n\t\t\tnew IFDEntry(Tag.RESOLUTION_UNIT, Type.SHORT, 1, null, 1),\r\n\t\t\tnew IFDEntry(Tag.SOFTWARE, Type.ASCII, 6, null, \"......\"),\r\n\t\t\tnew IFDEntry(Tag.STRIP_OFFSETS, Type.LONG, 1, null, null),\r\n\t\t\tnew IFDEntry(Tag.X_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])),\r\n\t\t\tnew IFDEntry(Tag.Y_RESOLUTION, Type.RATIONAL, 1, null, new Uint32Array([1, 1])),\r\n\t\t];\r\n\r\n\t\tif(params.ifdEntries){\r\n\t\t\tifds.push(...params.ifdEntries);\r\n\t\t}\r\n\r\n\t\tlet valueOffset = offsetToFirstIFD + 2 + ifds.length * 12 + 4;\r\n\r\n\t\t// create 12 byte buffer for each ifd and variable length buffers for ifd values\r\n\t\tlet ifdEntryBuffers = new Map();\r\n\t\tlet ifdValueBuffers = new Map();\r\n\t\tfor(let ifd of ifds){\r\n\t\t\tlet entryBuffer = new ArrayBuffer(12);\r\n\t\t\tlet entryView = new DataView(entryBuffer);\r\n\r\n\t\t\tlet valueBytes = ifd.type.bytes * ifd.count;\r\n\r\n\t\t\tentryView.setUint16(0, ifd.tag.value, true);\r\n\t\t\tentryView.setUint16(2, ifd.type.value, true);\r\n\t\t\tentryView.setUint32(4, ifd.count, true);\r\n\r\n\t\t\tif(ifd.count === 1 && ifd.type.bytes <= 4){\r\n\t\t\t\tentryView.setUint32(8, ifd.value, true);\r\n\t\t\t}else{\r\n\t\t\t\tentryView.setUint32(8, valueOffset, true);\r\n\r\n\t\t\t\tlet valueBuffer = new Uint8Array(ifd.count * ifd.type.bytes);\r\n\t\t\t\tif(ifd.type === Type.ASCII){\r\n\t\t\t\t\tvalueBuffer.set(new Uint8Array(ifd.value.split(\"\").map(c => c.charCodeAt(0))));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tvalueBuffer.set(new Uint8Array(ifd.value.buffer));\r\n\t\t\t\t}\r\n\t\t\t\tifdValueBuffers.set(ifd.tag, valueBuffer);\r\n\r\n\t\t\t\tvalueOffset = valueOffset + valueBuffer.byteLength;\r\n\t\t\t}\r\n\r\n\t\t\tifdEntryBuffers.set(ifd.tag, entryBuffer);\r\n\t\t}\r\n\r\n\t\tlet imageBufferOffset = valueOffset;\r\n\r\n\t\tnew DataView(ifdEntryBuffers.get(Tag.STRIP_OFFSETS)).setUint32(8, imageBufferOffset, true);\r\n\r\n\t\tlet concatBuffers = (buffers) => {\r\n\r\n\t\t\tlet totalLength = buffers.reduce( (sum, buffer) => (sum + buffer.byteLength), 0);\r\n\t\t\tlet merged = new Uint8Array(totalLength);\r\n\r\n\t\t\tlet offset = 0;\r\n\t\t\tfor(let buffer of buffers){\r\n\t\t\t\tmerged.set(new Uint8Array(buffer), offset);\r\n\t\t\t\toffset += buffer.byteLength;\r\n\t\t\t}\r\n\r\n\t\t\treturn merged;\r\n\t\t};\r\n\t\t\r\n\t\tlet ifdBuffer = concatBuffers([\r\n\t\t\tnew Uint16Array([ifds.length]), \r\n\t\t\t...ifdEntryBuffers.values(), \r\n\t\t\tnew Uint32Array([0])]);\r\n\t\tlet ifdValueBuffer = concatBuffers([...ifdValueBuffers.values()]);\r\n\r\n\t\tlet tiffBuffer = concatBuffers([\r\n\t\t\theaderBuffer,\r\n\t\t\tifdBuffer,\r\n\t\t\tifdValueBuffer,\r\n\t\t\timage.buffer\r\n\t\t]);\r\n\r\n\t\treturn {width: width, height: height, buffer: tiffBuffer};\r\n\t}\r\n\r\n}\r\n\r\nexports.Tag = Tag;\r\nexports.Type = Type;\r\nexports.IFDEntry = IFDEntry;\r\nexports.Image = Image;\r\nexports.Reader = Reader;\r\nexports.Exporter = Exporter;\r\n\r\nreturn exports;\r\n\r\n}({}));\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Measure} from \"./Measure.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {CameraMode} from \"../defines.js\";\r\nimport { EventDispatcher } from \"../EventDispatcher.js\";\r\n\r\nfunction updateAzimuth(viewer, measure){\r\n\r\n\tconst azimuth = measure.azimuth;\r\n\r\n\tconst isOkay = measure.points.length === 2;\r\n\r\n\tazimuth.node.visible = isOkay && measure.showAzimuth;\r\n\r\n\tif(!azimuth.node.visible){\r\n\t\treturn;\r\n\t}\r\n\r\n\tconst camera = viewer.scene.getActiveCamera();\r\n\tconst renderAreaSize = viewer.renderer.getSize(new THREE.Vector2());\r\n\tconst width = renderAreaSize.width;\r\n\tconst height = renderAreaSize.height;\r\n\t\r\n\tconst [p0, p1] = measure.points;\r\n\tconst r = p0.position.distanceTo(p1.position);\r\n\tconst northVec = Utils.getNorthVec(p0.position, r, viewer.getProjection());\r\n\tconst northPos = p0.position.clone().add(northVec);\r\n\r\n\tazimuth.center.position.copy(p0.position);\r\n\tazimuth.center.scale.set(2, 2, 2);\r\n\t\r\n\tazimuth.center.visible = false;\r\n\t// azimuth.target.visible = false;\r\n\r\n\r\n\t{ // north\r\n\t\tazimuth.north.position.copy(northPos);\r\n\t\tazimuth.north.scale.set(2, 2, 2);\r\n\r\n\t\tlet distance = azimuth.north.position.distanceTo(camera.position);\r\n\t\tlet pr = Utils.projectedRadius(1, camera, distance, width, height);\r\n\r\n\t\tlet scale = (5 / pr);\r\n\t\tazimuth.north.scale.set(scale, scale, scale);\r\n\t}\r\n\r\n\t{ // target\r\n\t\tazimuth.target.position.copy(p1.position);\r\n\t\tazimuth.target.position.z = azimuth.north.position.z;\r\n\r\n\t\tlet distance = azimuth.target.position.distanceTo(camera.position);\r\n\t\tlet pr = Utils.projectedRadius(1, camera, distance, width, height);\r\n\r\n\t\tlet scale = (5 / pr);\r\n\t\tazimuth.target.scale.set(scale, scale, scale);\r\n\t}\r\n\r\n\r\n\tazimuth.circle.position.copy(p0.position);\r\n\tazimuth.circle.scale.set(r, r, r);\r\n\tazimuth.circle.material.resolution.set(width, height);\r\n\r\n\t// to target\r\n\tazimuth.centerToTarget.geometry.setPositions([\r\n\t\t0, 0, 0,\r\n\t\t...p1.position.clone().sub(p0.position).toArray(),\r\n\t]);\r\n\tazimuth.centerToTarget.position.copy(p0.position);\r\n\tazimuth.centerToTarget.geometry.verticesNeedUpdate = true;\r\n\tazimuth.centerToTarget.geometry.computeBoundingSphere();\r\n\tazimuth.centerToTarget.computeLineDistances();\r\n\tazimuth.centerToTarget.material.resolution.set(width, height);\r\n\r\n\t// to target ground\r\n\tazimuth.centerToTargetground.geometry.setPositions([\r\n\t\t0, 0, 0,\r\n\t\tp1.position.x - p0.position.x,\r\n\t\tp1.position.y - p0.position.y,\r\n\t\t0,\r\n\t]);\r\n\tazimuth.centerToTargetground.position.copy(p0.position);\r\n\tazimuth.centerToTargetground.geometry.verticesNeedUpdate = true;\r\n\tazimuth.centerToTargetground.geometry.computeBoundingSphere();\r\n\tazimuth.centerToTargetground.computeLineDistances();\r\n\tazimuth.centerToTargetground.material.resolution.set(width, height);\r\n\r\n\t// to north\r\n\tazimuth.centerToNorth.geometry.setPositions([\r\n\t\t0, 0, 0,\r\n\t\tnorthPos.x - p0.position.x,\r\n\t\tnorthPos.y - p0.position.y,\r\n\t\t0,\r\n\t]);\r\n\tazimuth.centerToNorth.position.copy(p0.position);\r\n\tazimuth.centerToNorth.geometry.verticesNeedUpdate = true;\r\n\tazimuth.centerToNorth.geometry.computeBoundingSphere();\r\n\tazimuth.centerToNorth.computeLineDistances();\r\n\tazimuth.centerToNorth.material.resolution.set(width, height);\r\n\r\n\t// label\r\n\tconst radians = Utils.computeAzimuth(p0.position, p1.position, viewer.getProjection());\r\n\tlet degrees = THREE.Math.radToDeg(radians);\r\n\tif(degrees < 0){\r\n\t\tdegrees = 360 + degrees;\r\n\t}\r\n\tconst txtDegrees = `${degrees.toFixed(2)}°`;\r\n\tconst labelDir = northPos.clone().add(p1.position).multiplyScalar(0.5).sub(p0.position);\r\n\tif(labelDir.length() > 0){\r\n\t\tlabelDir.z = 0;\r\n\t\tlabelDir.normalize();\r\n\t\tconst labelVec = labelDir.clone().multiplyScalar(r);\r\n\t\tconst labelPos = p0.position.clone().add(labelVec);\r\n\t\tazimuth.label.position.copy(labelPos);\r\n\t}\r\n\tazimuth.label.setText(txtDegrees);\r\n\tlet distance = azimuth.label.position.distanceTo(camera.position);\r\n\tlet pr = Utils.projectedRadius(1, camera, distance, width, height);\r\n\tlet scale = (70 / pr);\r\n\tazimuth.label.scale.set(scale, scale, scale);\r\n}\r\n\r\nexport class MeasuringTool extends EventDispatcher{\r\n\tconstructor (viewer) {\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\tthis.addEventListener('start_inserting_measurement', e => {\r\n\t\t\tthis.viewer.dispatchEvent({\r\n\t\t\t\ttype: 'cancel_insertions'\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.showLabels = true;\r\n\t\tthis.scene = new THREE.Scene();\r\n\t\tthis.scene.name = 'scene_measurement';\r\n\t\tthis.light = new THREE.PointLight(0xffffff, 1.0);\r\n\t\tthis.scene.add(this.light);\r\n\r\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\r\n\r\n\t\tthis.onRemove = (e) => { this.scene.remove(e.measurement);};\r\n\t\tthis.onAdd = e => {this.scene.add(e.measurement);};\r\n\r\n\t\tfor(let measurement of viewer.scene.measurements){\r\n\t\t\tthis.onAdd({measurement: measurement});\r\n\t\t}\r\n\r\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\r\n\t\tviewer.addEventListener(\"render.pass.perspective_overlay\", this.render.bind(this));\r\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\r\n\r\n\t\tviewer.scene.addEventListener('measurement_added', this.onAdd);\r\n\t\tviewer.scene.addEventListener('measurement_removed', this.onRemove);\r\n\t}\r\n\r\n\tonSceneChange(e){\r\n\t\tif(e.oldScene){\r\n\t\t\te.oldScene.removeEventListener('measurement_added', this.onAdd);\r\n\t\t\te.oldScene.removeEventListener('measurement_removed', this.onRemove);\r\n\t\t}\r\n\r\n\t\te.scene.addEventListener('measurement_added', this.onAdd);\r\n\t\te.scene.addEventListener('measurement_removed', this.onRemove);\r\n\t}\r\n\r\n\tstartInsertion (args = {}) {\r\n\t\tlet domElement = this.viewer.renderer.domElement;\r\n\r\n\t\tlet measure = new Measure();\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'start_inserting_measurement',\r\n\t\t\tmeasure: measure\r\n\t\t});\r\n\r\n\t\tconst pick = (defaul, alternative) => {\r\n\t\t\tif(defaul != null){\r\n\t\t\t\treturn defaul;\r\n\t\t\t}else{\r\n\t\t\t\treturn alternative;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tmeasure.showDistances = (args.showDistances === null) ? true : args.showDistances;\r\n\r\n\t\tmeasure.showArea = pick(args.showArea, false);\r\n\t\tmeasure.showAngles = pick(args.showAngles, false);\r\n\t\tmeasure.showCoordinates = pick(args.showCoordinates, false);\r\n\t\tmeasure.showHeight = pick(args.showHeight, false);\r\n\t\tmeasure.showCircle = pick(args.showCircle, false);\r\n\t\tmeasure.showAzimuth = pick(args.showAzimuth, false);\r\n\t\tmeasure.showEdges = pick(args.showEdges, true);\r\n\t\tmeasure.closed = pick(args.closed, false);\r\n\t\tmeasure.maxMarkers = pick(args.maxMarkers, Infinity);\r\n\r\n\t\tmeasure.name = args.name || 'Measurement';\r\n\r\n\t\tthis.scene.add(measure);\r\n\r\n\t\tlet cancel = {\r\n\t\t\tremoveLastMarker: measure.maxMarkers > 3,\r\n\t\t\tcallback: null\r\n\t\t};\r\n\r\n\t\tlet insertionCallback = (e) => {\r\n\t\t\tif (e.button === THREE.MOUSE.LEFT) {\r\n\t\t\t\tmeasure.addMarker(measure.points[measure.points.length - 1].position.clone());\r\n\r\n\t\t\t\tif (measure.points.length >= measure.maxMarkers) {\r\n\t\t\t\t\tcancel.callback();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.viewer.inputHandler.startDragging(\r\n\t\t\t\t\tmeasure.spheres[measure.spheres.length - 1]);\r\n\t\t\t} else if (e.button === THREE.MOUSE.RIGHT) {\r\n\t\t\t\tcancel.callback();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tcancel.callback = e => {\r\n\t\t\tif (cancel.removeLastMarker) {\r\n\t\t\t\tmeasure.removeMarker(measure.points.length - 1);\r\n\t\t\t}\r\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, false);\r\n\t\t\tthis.viewer.removeEventListener('cancel_insertions', cancel.callback);\r\n\t\t};\r\n\r\n\t\tif (measure.maxMarkers > 1) {\r\n\t\t\tthis.viewer.addEventListener('cancel_insertions', cancel.callback);\r\n\t\t\tdomElement.addEventListener('mouseup', insertionCallback, false);\r\n\t\t}\r\n\r\n\t\tmeasure.addMarker(new THREE.Vector3(0, 0, 0));\r\n\t\tthis.viewer.inputHandler.startDragging(\r\n\t\t\tmeasure.spheres[measure.spheres.length - 1]);\r\n\r\n\t\tthis.viewer.scene.addMeasurement(measure);\r\n\r\n\t\treturn measure;\r\n\t}\r\n\t\r\n\tupdate(){\r\n\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\t\tlet domElement = this.renderer.domElement;\r\n\t\tlet measurements = this.viewer.scene.measurements;\r\n\r\n\t\tconst renderAreaSize = this.renderer.getSize(new THREE.Vector2());\r\n\t\tlet clientWidth = renderAreaSize.width;\r\n\t\tlet clientHeight = renderAreaSize.height;\r\n\r\n\t\tthis.light.position.copy(camera.position);\r\n\r\n\t\t// make size independant of distance\r\n\t\tfor (let measure of measurements) {\r\n\t\t\tmeasure.lengthUnit = this.viewer.lengthUnit;\r\n\t\t\tmeasure.lengthUnitDisplay = this.viewer.lengthUnitDisplay;\r\n\t\t\tmeasure.update();\r\n\r\n\t\t\tupdateAzimuth(this.viewer, measure);\r\n\r\n\t\t\t// spheres\r\n\t\t\tfor(let sphere of measure.spheres){\r\n\t\t\t\tlet distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3()));\r\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\r\n\t\t\t\tlet scale = (15 / pr);\r\n\t\t\t\tsphere.scale.set(scale, scale, scale);\r\n\t\t\t}\r\n\r\n\t\t\t// labels\r\n\t\t\tlet labels = measure.edgeLabels.concat(measure.angleLabels);\r\n\t\t\tfor(let label of labels){\r\n\t\t\t\tlet distance = camera.position.distanceTo(label.getWorldPosition(new THREE.Vector3()));\r\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\r\n\t\t\t\tlet scale = (70 / pr);\r\n\r\n\t\t\t\tif(Potree.debug.scale){\r\n\t\t\t\t\tscale = (Potree.debug.scale / pr);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlabel.scale.set(scale, scale, scale);\r\n\t\t\t}\r\n\r\n\t\t\t// coordinate labels\r\n\t\t\tfor (let j = 0; j < measure.coordinateLabels.length; j++) {\r\n\t\t\t\tlet label = measure.coordinateLabels[j];\r\n\t\t\t\tlet sphere = measure.spheres[j];\r\n\r\n\t\t\t\tlet distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3()));\r\n\r\n\t\t\t\tlet screenPos = sphere.getWorldPosition(new THREE.Vector3()).clone().project(camera);\r\n\t\t\t\tscreenPos.x = Math.round((screenPos.x + 1) * clientWidth / 2);\r\n\t\t\t\tscreenPos.y = Math.round((-screenPos.y + 1) * clientHeight / 2);\r\n\t\t\t\tscreenPos.z = 0;\r\n\t\t\t\tscreenPos.y -= 30;\r\n\r\n\t\t\t\tlet labelPos = new THREE.Vector3( \r\n\t\t\t\t\t(screenPos.x / clientWidth) * 2 - 1, \r\n\t\t\t\t\t-(screenPos.y / clientHeight) * 2 + 1, \r\n\t\t\t\t\t0.5 );\r\n\t\t\t\tlabelPos.unproject(camera);\r\n\t\t\t\tif(this.viewer.scene.cameraMode == CameraMode.PERSPECTIVE) {\r\n\t\t\t\t\tlet direction = labelPos.sub(camera.position).normalize();\r\n\t\t\t\t\tlabelPos = new THREE.Vector3().addVectors(\r\n\t\t\t\t\t\tcamera.position, direction.multiplyScalar(distance));\r\n\r\n\t\t\t\t}\r\n\t\t\t\tlabel.position.copy(labelPos);\r\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\r\n\t\t\t\tlet scale = (70 / pr);\r\n\t\t\t\tlabel.scale.set(scale, scale, scale);\r\n\t\t\t}\r\n\r\n\t\t\t// height label\r\n\t\t\tif (measure.showHeight) {\r\n\t\t\t\tlet label = measure.heightLabel;\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\tlet distance = label.position.distanceTo(camera.position);\r\n\t\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\r\n\t\t\t\t\tlet scale = (70 / pr);\r\n\t\t\t\t\tlabel.scale.set(scale, scale, scale);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{ // height edge\r\n\t\t\t\t\tlet edge = measure.heightEdge;\r\n\r\n\t\t\t\t\tlet sorted = measure.points.slice().sort((a, b) => a.position.z - b.position.z);\r\n\t\t\t\t\tlet lowPoint = sorted[0].position.clone();\r\n\t\t\t\t\tlet highPoint = sorted[sorted.length - 1].position.clone();\r\n\t\t\t\t\tlet min = lowPoint.z;\r\n\t\t\t\t\tlet max = highPoint.z;\r\n\r\n\t\t\t\t\tlet start = new THREE.Vector3(highPoint.x, highPoint.y, min);\r\n\t\t\t\t\tlet end = new THREE.Vector3(highPoint.x, highPoint.y, max);\r\n\r\n\t\t\t\t\tlet lowScreen = lowPoint.clone().project(camera);\r\n\t\t\t\t\tlet startScreen = start.clone().project(camera);\r\n\t\t\t\t\tlet endScreen = end.clone().project(camera);\r\n\r\n\t\t\t\t\tlet toPixelCoordinates = v => {\r\n\t\t\t\t\t\tlet r = v.clone().addScalar(1).divideScalar(2);\r\n\t\t\t\t\t\tr.x = r.x * clientWidth;\r\n\t\t\t\t\t\tr.y = r.y * clientHeight;\r\n\t\t\t\t\t\tr.z = 0;\r\n\r\n\t\t\t\t\t\treturn r;\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlet lowEL = toPixelCoordinates(lowScreen);\r\n\t\t\t\t\tlet startEL = toPixelCoordinates(startScreen);\r\n\t\t\t\t\tlet endEL = toPixelCoordinates(endScreen);\r\n\r\n\t\t\t\t\tlet lToS = lowEL.distanceTo(startEL);\r\n\t\t\t\t\tlet sToE = startEL.distanceTo(endEL);\r\n\r\n\t\t\t\t\tedge.geometry.lineDistances = [0, lToS, lToS, lToS + sToE];\r\n\t\t\t\t\tedge.geometry.lineDistancesNeedUpdate = true;\r\n\r\n\t\t\t\t\tedge.material.dashSize = 10;\r\n\t\t\t\t\tedge.material.gapSize = 10;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t{ // area label\r\n\t\t\t\tlet label = measure.areaLabel;\r\n\t\t\t\tlet distance = label.position.distanceTo(camera.position);\r\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\r\n\r\n\t\t\t\tlet scale = (70 / pr);\r\n\t\t\t\tlabel.scale.set(scale, scale, scale);\r\n\t\t\t}\r\n\r\n\t\t\t{ // radius label\r\n\t\t\t\tlet label = measure.circleRadiusLabel;\r\n\t\t\t\tlet distance = label.position.distanceTo(camera.position);\r\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\r\n\r\n\t\t\t\tlet scale = (70 / pr);\r\n\t\t\t\tlabel.scale.set(scale, scale, scale);\r\n\t\t\t}\r\n\r\n\t\t\t{ // edges\r\n\t\t\t\tconst materials = [\r\n\t\t\t\t\tmeasure.circleRadiusLine.material,\r\n\t\t\t\t\t...measure.edges.map( (e) => e.material),\r\n\t\t\t\t\tmeasure.heightEdge.material,\r\n\t\t\t\t\tmeasure.circleLine.material,\r\n\t\t\t\t];\r\n\r\n\t\t\t\tfor(const material of materials){\r\n\t\t\t\t\tmaterial.resolution.set(clientWidth, clientHeight);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.showLabels){\r\n\r\n\t\t\t\tconst labels = [\r\n\t\t\t\t\t...measure.sphereLabels, \r\n\t\t\t\t\t...measure.edgeLabels, \r\n\t\t\t\t\t...measure.angleLabels, \r\n\t\t\t\t\t...measure.coordinateLabels,\r\n\t\t\t\t\tmeasure.heightLabel,\r\n\t\t\t\t\tmeasure.areaLabel,\r\n\t\t\t\t\tmeasure.circleRadiusLabel,\r\n\t\t\t\t];\r\n\r\n\t\t\t\tfor(const label of labels){\r\n\t\t\t\t\tlabel.visible = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trender(){\r\n\t\tthis.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\r\n\t}\r\n};\r\n","\r\nexport class Message{\r\n\r\n\tconstructor(content){\r\n\t\tthis.content = content;\r\n\r\n\t\tlet closeIcon = `${exports.resourcePath}/icons/close.svg`;\r\n\r\n\t\tthis.element = $(`\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
`);\r\n\r\n\t\tthis.elClose = this.element.find(\"img[name=close]\");\r\n\r\n\t\tthis.elContainer = this.element.find(\"span[name=content_container]\");\r\n\r\n\t\tif(typeof content === \"string\"){\r\n\t\t\tthis.elContainer.append($(`${content}`));\r\n\t\t}else{\r\n\t\t\tthis.elContainer.append(content);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tsetMessage(content){\r\n\t\tthis.elContainer.empty();\r\n\t\tif(typeof content === \"string\"){\r\n\t\t\tthis.elContainer.append($(`${content}`));\r\n\t\t}else{\r\n\t\t\tthis.elContainer.append(content);\r\n\t\t}\r\n\t}\r\n\r\n}","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nexport class PointCloudSM{\r\n\r\n\tconstructor(potreeRenderer){\r\n\r\n\t\tthis.potreeRenderer = potreeRenderer;\r\n\t\tthis.threeRenderer = this.potreeRenderer.threeRenderer;\r\n\r\n\t\tthis.target = new THREE.WebGLRenderTarget(2 * 1024, 2 * 1024, {\r\n\t\t\tminFilter: THREE.LinearFilter,\r\n\t\t\tmagFilter: THREE.LinearFilter,\r\n\t\t\tformat: THREE.RGBAFormat,\r\n\t\t\ttype: THREE.FloatType\r\n\t\t});\r\n\t\tthis.target.depthTexture = new THREE.DepthTexture();\r\n\t\tthis.target.depthTexture.type = THREE.UnsignedIntType;\r\n\r\n\t\t//this.threeRenderer.setClearColor(0x000000, 1);\r\n\t\tthis.threeRenderer.setClearColor(0xff0000, 1);\r\n\r\n\t\t//HACK? removed while moving to three.js 109\r\n\t\t//this.threeRenderer.clearTarget(this.target, true, true, true); \r\n\t\t{\r\n\t\t\tconst oldTarget = this.threeRenderer.getRenderTarget();\r\n\r\n\t\t\tthis.threeRenderer.setRenderTarget(this.target);\r\n\t\t\tthis.threeRenderer.clear(true, true, true);\r\n\r\n\t\t\tthis.threeRenderer.setRenderTarget(oldTarget);\r\n\t\t}\r\n\t}\r\n\r\n\tsetLight(light){\r\n\t\tthis.light = light;\r\n\r\n\t\tlet fov = (180 * light.angle) / Math.PI;\r\n\t\tlet aspect = light.shadow.mapSize.width / light.shadow.mapSize.height;\r\n\t\tlet near = 0.1;\r\n\t\tlet far = light.distance === 0 ? 10000 : light.distance;\r\n\t\tthis.camera = new THREE.PerspectiveCamera(fov, aspect, near, far);\r\n\t\tthis.camera.up.set(0, 0, 1);\r\n\t\tthis.camera.position.copy(light.position);\r\n\r\n\t\tlet target = new THREE.Vector3().subVectors(light.position, light.getWorldDirection(new THREE.Vector3()));\r\n\t\tthis.camera.lookAt(target);\r\n\r\n\t\tthis.camera.updateProjectionMatrix();\r\n\t\tthis.camera.updateMatrix();\r\n\t\tthis.camera.updateMatrixWorld();\r\n\t\tthis.camera.matrixWorldInverse.copy(this.camera.matrixWorld).invert();\r\n\t}\r\n\r\n\tsetSize(width, height){\r\n\t\tif(this.target.width !== width || this.target.height !== height){\r\n\t\t\tthis.target.dispose();\r\n\t\t}\r\n\t\tthis.target.setSize(width, height);\r\n\t}\r\n\r\n\trender(scene, camera){\r\n\r\n\t\tthis.threeRenderer.setClearColor(0x000000, 1);\r\n\t\t\r\n\t\tconst oldTarget = this.threeRenderer.getRenderTarget();\r\n\r\n\t\tthis.threeRenderer.setRenderTarget(this.target);\r\n\t\tthis.threeRenderer.clear(true, true, true);\r\n\r\n\t\tthis.potreeRenderer.render(scene, this.camera, this.target, {});\r\n\r\n\t\tthis.threeRenderer.setRenderTarget(oldTarget);\r\n\t}\r\n\r\n\r\n}","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Profile} from \"./Profile.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport { EventDispatcher } from \"../EventDispatcher.js\";\r\n\r\n\r\nexport class ProfileTool extends EventDispatcher {\r\n\tconstructor (viewer) {\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\tthis.addEventListener('start_inserting_profile', e => {\r\n\t\t\tthis.viewer.dispatchEvent({\r\n\t\t\t\ttype: 'cancel_insertions'\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.scene = new THREE.Scene();\r\n\t\tthis.scene.name = 'scene_profile';\r\n\t\tthis.light = new THREE.PointLight(0xffffff, 1.0);\r\n\t\tthis.scene.add(this.light);\r\n\r\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\r\n\r\n\t\tthis.onRemove = e => this.scene.remove(e.profile);\r\n\t\tthis.onAdd = e => this.scene.add(e.profile);\r\n\r\n\t\tfor(let profile of viewer.scene.profiles){\r\n\t\t\tthis.onAdd({profile: profile});\r\n\t\t}\r\n\r\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\r\n\t\tviewer.addEventListener(\"render.pass.perspective_overlay\", this.render.bind(this));\r\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\r\n\r\n\t\tviewer.scene.addEventListener('profile_added', this.onAdd);\r\n\t\tviewer.scene.addEventListener('profile_removed', this.onRemove);\r\n\t}\r\n\r\n\tonSceneChange(e){\r\n\t\tif(e.oldScene){\r\n\t\t\te.oldScene.removeEventListeners('profile_added', this.onAdd);\r\n\t\t\te.oldScene.removeEventListeners('profile_removed', this.onRemove);\r\n\t\t}\r\n\r\n\t\te.scene.addEventListener('profile_added', this.onAdd);\r\n\t\te.scene.addEventListener('profile_removed', this.onRemove);\r\n\t}\r\n\r\n\tstartInsertion (args = {}) {\r\n\t\tlet domElement = this.viewer.renderer.domElement;\r\n\r\n\t\tlet profile = new Profile();\r\n\t\tprofile.name = args.name || 'Profile';\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'start_inserting_profile',\r\n\t\t\tprofile: profile\r\n\t\t});\r\n\r\n\t\tthis.scene.add(profile);\r\n\r\n\t\tlet cancel = {\r\n\t\t\tcallback: null\r\n\t\t};\r\n\r\n\t\tlet insertionCallback = (e) => {\r\n\t\t\tif(e.button === THREE.MOUSE.LEFT){\r\n\t\t\t\tif(profile.points.length <= 1){\r\n\t\t\t\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\t\t\t\t\tlet distance = camera.position.distanceTo(profile.points[0]);\r\n\t\t\t\t\tlet clientSize = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientSize.width, clientSize.height);\r\n\t\t\t\t\tlet width = (10 / pr);\r\n\r\n\t\t\t\t\tprofile.setWidth(width);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tprofile.addMarker(profile.points[profile.points.length - 1].clone());\r\n\r\n\t\t\t\tthis.viewer.inputHandler.startDragging(\r\n\t\t\t\t\tprofile.spheres[profile.spheres.length - 1]);\r\n\t\t\t} else if (e.button === THREE.MOUSE.RIGHT) {\r\n\t\t\t\tcancel.callback();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tcancel.callback = e => {\r\n\t\t\tprofile.removeMarker(profile.points.length - 1);\r\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, false);\r\n\t\t\tthis.viewer.removeEventListener('cancel_insertions', cancel.callback);\r\n\t\t};\r\n\r\n\t\tthis.viewer.addEventListener('cancel_insertions', cancel.callback);\r\n\t\tdomElement.addEventListener('mouseup', insertionCallback, false);\r\n\r\n\t\tprofile.addMarker(new THREE.Vector3(0, 0, 0));\r\n\t\tthis.viewer.inputHandler.startDragging(\r\n\t\t\tprofile.spheres[profile.spheres.length - 1]);\r\n\r\n\t\tthis.viewer.scene.addProfile(profile);\r\n\r\n\t\treturn profile;\r\n\t}\r\n\t\r\n\tupdate(){\r\n\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\t\tlet profiles = this.viewer.scene.profiles;\r\n\t\tlet renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\tlet clientWidth = renderAreaSize.width;\r\n\t\tlet clientHeight = renderAreaSize.height;\r\n\r\n\t\tthis.light.position.copy(camera.position);\r\n\r\n\t\t// make size independant of distance\r\n\t\tfor(let profile of profiles){\r\n\t\t\tfor(let sphere of profile.spheres){\t\t\t\t\r\n\t\t\t\tlet distance = camera.position.distanceTo(sphere.getWorldPosition(new THREE.Vector3()));\r\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\r\n\t\t\t\tlet scale = (15 / pr);\r\n\t\t\t\tsphere.scale.set(scale, scale, scale);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trender(){\r\n\t\tthis.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\r\n\t}\r\n\r\n}\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {BoxVolume} from \"./Volume.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {PointSizeType} from \"../defines.js\";\r\nimport { EventDispatcher } from \"../EventDispatcher.js\";\r\n\r\n\r\nexport class ScreenBoxSelectTool extends EventDispatcher{\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.scene = new THREE.Scene();\r\n\r\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\r\n\t\tviewer.addEventListener(\"render.pass.perspective_overlay\", this.render.bind(this));\r\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\r\n\t}\r\n\r\n\tonSceneChange(scene){\r\n\t\tconsole.log(\"scene changed\");\r\n\t}\r\n\r\n\tstartInsertion(){\r\n\t\tlet domElement = this.viewer.renderer.domElement;\r\n\r\n\t\tlet volume = new BoxVolume();\r\n\t\tvolume.position.set(12345, 12345, 12345);\r\n\t\tvolume.showVolumeLabel = false;\r\n\t\tvolume.visible = false;\r\n\t\tvolume.update();\r\n\t\tthis.viewer.scene.addVolume(volume);\r\n\r\n\t\tthis.importance = 10;\r\n\r\n\t\tlet selectionBox = $(`
`);\r\n\t\t$(domElement.parentElement).append(selectionBox);\r\n\t\tselectionBox.css(\"right\", \"10px\");\r\n\t\tselectionBox.css(\"bottom\", \"10px\");\r\n\r\n\t\tlet drag = e =>{\r\n\r\n\t\t\tvolume.visible = true;\r\n\r\n\t\t\tlet mStart = e.drag.start;\r\n\t\t\tlet mEnd = e.drag.end;\r\n\r\n\t\t\tlet box2D = new THREE.Box2();\r\n\t\t\tbox2D.expandByPoint(mStart);\r\n\t\t\tbox2D.expandByPoint(mEnd);\r\n\r\n\t\t\tselectionBox.css(\"left\", `${box2D.min.x}px`);\r\n\t\t\tselectionBox.css(\"top\", `${box2D.min.y}px`);\r\n\t\t\tselectionBox.css(\"width\", `${box2D.max.x - box2D.min.x}px`);\r\n\t\t\tselectionBox.css(\"height\", `${box2D.max.y - box2D.min.y}px`);\r\n\r\n\t\t\tlet camera = e.viewer.scene.getActiveCamera();\r\n\t\t\tlet size = e.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\t\tlet frustumSize = new THREE.Vector2(\r\n\t\t\t\tcamera.right - camera.left, \r\n\t\t\t\tcamera.top - camera.bottom);\r\n\r\n\t\t\tlet screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5);\r\n\t\t\tlet ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height);\r\n\r\n\t\t\tlet diff = new THREE.Vector2().subVectors(e.drag.end, e.drag.start);\r\n\t\t\tdiff.divide(size).multiply(frustumSize);\r\n\t\t\t\r\n\t\t\tvolume.position.copy(ray.origin);\r\n\t\t\tvolume.up.copy(camera.up);\r\n\t\t\tvolume.rotation.copy(camera.rotation);\r\n\t\t\tvolume.scale.set(diff.x, diff.y, 1000 * 100);\r\n\r\n\t\t\te.consume();\r\n\t\t};\r\n\r\n\t\tlet drop = e => {\r\n\t\t\tthis.importance = 0;\r\n\r\n\t\t\t$(selectionBox).remove();\r\n\r\n\t\t\tthis.viewer.inputHandler.deselectAll();\r\n\t\t\tthis.viewer.inputHandler.toggleSelection(volume);\r\n\r\n\t\t\tlet camera = e.viewer.scene.getActiveCamera();\r\n\t\t\tlet size = e.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\t\tlet screenCentroid = new THREE.Vector2().addVectors(e.drag.end, e.drag.start).multiplyScalar(0.5);\r\n\t\t\tlet ray = Utils.mouseToRay(screenCentroid, camera, size.width, size.height);\r\n\r\n\t\t\tlet line = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction));\r\n\r\n\t\t\tthis.removeEventListener(\"drag\", drag);\r\n\t\t\tthis.removeEventListener(\"drop\", drop);\r\n\r\n\t\t\tlet allPointsNear = [];\r\n\t\t\tlet allPointsFar = [];\r\n\r\n\t\t\t// TODO support more than one point cloud\r\n\t\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\r\n\r\n\t\t\t\tif(!pointcloud.visible){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet volCam = camera.clone();\r\n\t\t\t\tvolCam.left = -volume.scale.x / 2; \r\n\t\t\t\tvolCam.right = +volume.scale.x / 2;\r\n\t\t\t\tvolCam.top = +volume.scale.y / 2;\r\n\t\t\t\tvolCam.bottom = -volume.scale.y / 2;\r\n\t\t\t\tvolCam.near = -volume.scale.z / 2;\r\n\t\t\t\tvolCam.far = +volume.scale.z / 2;\r\n\t\t\t\tvolCam.rotation.copy(volume.rotation);\r\n\t\t\t\tvolCam.position.copy(volume.position);\r\n\r\n\t\t\t\tvolCam.updateMatrix();\r\n\t\t\t\tvolCam.updateMatrixWorld();\r\n\t\t\t\tvolCam.updateProjectionMatrix();\r\n\t\t\t\tvolCam.matrixWorldInverse.copy(volCam.matrixWorld).invert();\r\n\r\n\t\t\t\tlet ray = new THREE.Ray(volCam.getWorldPosition(new THREE.Vector3()), volCam.getWorldDirection(new THREE.Vector3()));\r\n\t\t\t\tlet rayInverse = new THREE.Ray(\r\n\t\t\t\t\tray.origin.clone().add(ray.direction.clone().multiplyScalar(volume.scale.z)),\r\n\t\t\t\t\tray.direction.clone().multiplyScalar(-1));\r\n\r\n\t\t\t\tlet pickerSettings = {\r\n\t\t\t\t\twidth: 8, \r\n\t\t\t\t\theight: 8, \r\n\t\t\t\t\tpickWindowSize: 8, \r\n\t\t\t\t\tall: true,\r\n\t\t\t\t\tpickClipped: true,\r\n\t\t\t\t\tpointSizeType: PointSizeType.FIXED,\r\n\t\t\t\t\tpointSize: 1};\r\n\t\t\t\tlet pointsNear = pointcloud.pick(viewer, volCam, ray, pickerSettings);\r\n\r\n\t\t\t\tvolCam.rotateX(Math.PI);\r\n\t\t\t\tvolCam.updateMatrix();\r\n\t\t\t\tvolCam.updateMatrixWorld();\r\n\t\t\t\tvolCam.updateProjectionMatrix();\r\n\t\t\t\tvolCam.matrixWorldInverse.copy(volCam.matrixWorld).invert();\r\n\t\t\t\tlet pointsFar = pointcloud.pick(viewer, volCam, rayInverse, pickerSettings);\r\n\r\n\t\t\t\tallPointsNear.push(...pointsNear);\r\n\t\t\t\tallPointsFar.push(...pointsFar);\r\n\t\t\t}\r\n\r\n\t\t\tif(allPointsNear.length > 0 && allPointsFar.length > 0){\r\n\t\t\t\tlet viewLine = new THREE.Line3(ray.origin, new THREE.Vector3().addVectors(ray.origin, ray.direction));\r\n\r\n\t\t\t\tlet closestOnLine = allPointsNear.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3()));\r\n\t\t\t\tlet closest = closestOnLine.sort( (a, b) => ray.origin.distanceTo(a) - ray.origin.distanceTo(b))[0];\r\n\r\n\t\t\t\tlet farthestOnLine = allPointsFar.map(p => viewLine.closestPointToPoint(p.position, false, new THREE.Vector3()));\r\n\t\t\t\tlet farthest = farthestOnLine.sort( (a, b) => ray.origin.distanceTo(b) - ray.origin.distanceTo(a))[0];\r\n\r\n\t\t\t\tlet distance = closest.distanceTo(farthest);\r\n\t\t\t\tlet centroid = new THREE.Vector3().addVectors(closest, farthest).multiplyScalar(0.5);\r\n\t\t\t\tvolume.scale.z = distance * 1.1;\r\n\t\t\t\tvolume.position.copy(centroid);\r\n\t\t\t}\r\n\r\n\t\t\tvolume.clip = true;\r\n\t\t};\r\n\r\n\t\tthis.addEventListener(\"drag\", drag);\r\n\t\tthis.addEventListener(\"drop\", drop);\r\n\r\n\t\tviewer.inputHandler.addInputListener(this);\r\n\r\n\t\treturn volume;\r\n\t}\r\n\r\n\tupdate(e){\r\n\t\t//console.log(e.delta)\r\n\t}\r\n\r\n\trender(){\r\n\t\tthis.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\r\n\t}\r\n\r\n}","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nexport class SpotLightHelper extends THREE.Object3D{\r\n\r\n\tconstructor(light, color){\r\n\t\tsuper();\r\n\r\n\t\tthis.light = light;\r\n\t\tthis.color = color;\r\n\r\n\t\t//this.up.set(0, 0, 1);\r\n\t\tthis.updateMatrix();\r\n\t\tthis.updateMatrixWorld();\r\n\r\n\t\t{ // SPHERE\r\n\t\t\tlet sg = new THREE.SphereGeometry(1, 32, 32);\r\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\r\n\t\t\tthis.sphere = new THREE.Mesh(sg, sm);\r\n\t\t\tthis.sphere.scale.set(0.5, 0.5, 0.5);\r\n\t\t\tthis.add(this.sphere);\r\n\t\t}\r\n\r\n\t\t{ // LINES\r\n\t\t\t\r\n\r\n\t\t\tlet positions = new Float32Array([\r\n\t\t\t\t+0, +0, +0, +0, +0, -1,\r\n\r\n\t\t\t\t+0, +0, +0, -1, -1, -1,\r\n\t\t\t\t+0, +0, +0, +1, -1, -1,\r\n\t\t\t\t+0, +0, +0, +1, +1, -1,\r\n\t\t\t\t+0, +0, +0, -1, +1, -1,\r\n\r\n\t\t\t\t-1, -1, -1, +1, -1, -1,\r\n\t\t\t\t+1, -1, -1, +1, +1, -1,\r\n\t\t\t\t+1, +1, -1, -1, +1, -1,\r\n\t\t\t\t-1, +1, -1, -1, -1, -1,\r\n\t\t\t]);\r\n\r\n\t\t\tlet geometry = new THREE.BufferGeometry();\r\n\t\t\tgeometry.setAttribute(\"position\", new THREE.BufferAttribute(positions, 3));\r\n\r\n\t\t\tlet material = new THREE.LineBasicMaterial();\r\n\r\n\t\t\tthis.frustum = new THREE.LineSegments(geometry, material);\r\n\t\t\tthis.add(this.frustum);\r\n\r\n\t\t}\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\r\n\t\tthis.light.updateMatrix();\r\n\t\tthis.light.updateMatrixWorld();\r\n\r\n\t\tlet position = this.light.position;\r\n\t\tlet target = new THREE.Vector3().addVectors(\r\n\t\t\tthis.light.position, this.light.getWorldDirection(new THREE.Vector3()).multiplyScalar(-1));\r\n\t\t\r\n\t\tlet quat = new THREE.Quaternion().setFromRotationMatrix(\r\n\t\t\tnew THREE.Matrix4().lookAt( position, target, new THREE.Vector3( 0, 0, 1 ) )\r\n\t\t);\r\n\r\n\t\tthis.setRotationFromQuaternion(quat);\r\n\t\tthis.position.copy(position);\r\n\r\n\r\n\t\tlet coneLength = (this.light.distance > 0) ? this.light.distance : 1000;\r\n\t\tlet coneWidth = coneLength * Math.tan( this.light.angle * 0.5 );\r\n\r\n\t\tthis.frustum.scale.set(coneWidth, coneWidth, coneLength);\r\n\r\n\t}\r\n\r\n}","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Utils} from \"../utils.js\";\r\n\r\nexport class TransformationTool {\r\n\tconstructor(viewer) {\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.scene = new THREE.Scene();\r\n\r\n\t\tthis.selection = [];\r\n\t\tthis.pivot = new THREE.Vector3();\r\n\t\tthis.dragging = false;\r\n\t\tthis.showPickVolumes = false;\r\n\r\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\r\n\t\tthis.viewer.inputHandler.addEventListener('selection_changed', (e) => {\r\n\t\t\tfor(let selected of this.selection){\r\n\t\t\t\tthis.viewer.inputHandler.blacklist.delete(selected);\r\n\t\t\t}\r\n\r\n\t\t\tthis.selection = e.selection;\r\n\r\n\t\t\tfor(let selected of this.selection){\r\n\t\t\t\tthis.viewer.inputHandler.blacklist.add(selected);\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tlet red = 0xE73100;\r\n\t\tlet green = 0x44A24A;\r\n\t\tlet blue = 0x2669E7;\r\n\t\t\r\n\t\tthis.activeHandle = null;\r\n\t\tthis.scaleHandles = {\r\n\t\t\t\"scale.x+\": {name: \"scale.x+\", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]},\r\n\t\t\t\"scale.x-\": {name: \"scale.x-\", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]},\r\n\t\t\t\"scale.y+\": {name: \"scale.y+\", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]},\r\n\t\t\t\"scale.y-\": {name: \"scale.y-\", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]},\r\n\t\t\t\"scale.z+\": {name: \"scale.z+\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]},\r\n\t\t\t\"scale.z-\": {name: \"scale.z-\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]},\r\n\t\t};\r\n\t\tthis.focusHandles = {\r\n\t\t\t\"focus.x+\": {name: \"focus.x+\", node: new THREE.Object3D(), color: red, alignment: [+1, +0, +0]},\r\n\t\t\t\"focus.x-\": {name: \"focus.x-\", node: new THREE.Object3D(), color: red, alignment: [-1, +0, +0]},\r\n\t\t\t\"focus.y+\": {name: \"focus.y+\", node: new THREE.Object3D(), color: green, alignment: [+0, +1, +0]},\r\n\t\t\t\"focus.y-\": {name: \"focus.y-\", node: new THREE.Object3D(), color: green, alignment: [+0, -1, +0]},\r\n\t\t\t\"focus.z+\": {name: \"focus.z+\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, +1]},\r\n\t\t\t\"focus.z-\": {name: \"focus.z-\", node: new THREE.Object3D(), color: blue, alignment: [+0, +0, -1]},\r\n\t\t};\r\n\t\tthis.translationHandles = {\r\n\t\t\t\"translation.x\": {name: \"translation.x\", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]},\r\n\t\t\t\"translation.y\": {name: \"translation.y\", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]},\r\n\t\t\t\"translation.z\": {name: \"translation.z\", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]},\r\n\t\t};\r\n\t\tthis.rotationHandles = {\r\n\t\t\t\"rotation.x\": {name: \"rotation.x\", node: new THREE.Object3D(), color: red, alignment: [1, 0, 0]},\r\n\t\t\t\"rotation.y\": {name: \"rotation.y\", node: new THREE.Object3D(), color: green, alignment: [0, 1, 0]},\r\n\t\t\t\"rotation.z\": {name: \"rotation.z\", node: new THREE.Object3D(), color: blue, alignment: [0, 0, 1]},\r\n\t\t};\r\n\t\tthis.handles = Object.assign({}, this.scaleHandles, this.focusHandles, this.translationHandles, this.rotationHandles);\r\n\t\tthis.pickVolumes = [];\r\n\r\n\t\tthis.initializeScaleHandles();\r\n\t\tthis.initializeFocusHandles();\r\n\t\tthis.initializeTranslationHandles();\r\n\t\tthis.initializeRotationHandles();\r\n\r\n\r\n\t\tlet boxFrameGeometry = new THREE.Geometry();\r\n\t\t{\r\n\t\t\t// bottom\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\r\n\t\t\t// top\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\r\n\t\t\t// sides\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, 0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(0.5, 0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, -0.5, -0.5));\r\n\t\t\tboxFrameGeometry.vertices.push(new THREE.Vector3(-0.5, 0.5, -0.5));\r\n\t\t}\r\n\t\tthis.frame = new THREE.LineSegments(boxFrameGeometry, new THREE.LineBasicMaterial({color: 0xffff00}));\r\n\t\tthis.scene.add(this.frame);\r\n\r\n\t\t\r\n\t}\r\n\r\n\tinitializeScaleHandles(){\r\n\t\tlet sgSphere = new THREE.SphereGeometry(1, 32, 32);\r\n\t\tlet sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16);\r\n\r\n\t\tfor(let handleName of Object.keys(this.scaleHandles)){\r\n\t\t\tlet handle = this.scaleHandles[handleName];\r\n\t\t\tlet node = handle.node;\r\n\t\t\tthis.scene.add(node);\r\n\t\t\tnode.position.set(...handle.alignment).multiplyScalar(0.5);\r\n\r\n\t\t\tlet material = new THREE.MeshBasicMaterial({\r\n\t\t\t\tcolor: handle.color,\r\n\t\t\t\topacity: 0.4,\r\n\t\t\t\ttransparent: true\r\n\t\t\t\t});\r\n\r\n\t\t\tlet outlineMaterial = new THREE.MeshBasicMaterial({\r\n\t\t\t\tcolor: 0x000000, \r\n\t\t\t\tside: THREE.BackSide,\r\n\t\t\t\topacity: 0.4,\r\n\t\t\t\ttransparent: true});\r\n\r\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\r\n\t\t\t\topacity: 0.2,\r\n\t\t\t\ttransparent: true,\r\n\t\t\t\tvisible: this.showPickVolumes});\r\n\r\n\t\t\tlet sphere = new THREE.Mesh(sgSphere, material);\r\n\t\t\tsphere.scale.set(1.3, 1.3, 1.3);\r\n\t\t\tsphere.name = `${handleName}.handle`;\r\n\t\t\tnode.add(sphere);\r\n\t\t\t\r\n\t\t\tlet outline = new THREE.Mesh(sgSphere, outlineMaterial);\r\n\t\t\toutline.scale.set(1.4, 1.4, 1.4);\r\n\t\t\toutline.name = `${handleName}.outline`;\r\n\t\t\tsphere.add(outline);\r\n\r\n\t\t\tlet pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial);\r\n\t\t\tpickSphere.name = `${handleName}.pick_volume`;\r\n\t\t\tpickSphere.scale.set(3, 3, 3);\r\n\t\t\tsphere.add(pickSphere);\r\n\t\t\tpickSphere.handle = handleName;\r\n\t\t\tthis.pickVolumes.push(pickSphere);\r\n\r\n\t\t\tnode.setOpacity = (target) => {\r\n\t\t\t\tlet opacity = {x: material.opacity};\r\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\r\n\t\t\t\tt.onUpdate(() => {\r\n\t\t\t\t\tsphere.visible = opacity.x > 0;\r\n\t\t\t\t\tpickSphere.visible = opacity.x > 0;\r\n\t\t\t\t\tmaterial.opacity = opacity.x;\r\n\t\t\t\t\toutlineMaterial.opacity = opacity.x;\r\n\t\t\t\t\tpickSphere.material.opacity = opacity.x * 0.5;\r\n\t\t\t\t});\r\n\t\t\t\tt.start();\r\n\t\t\t};\r\n\r\n\t\t\tpickSphere.addEventListener(\"drag\", (e) => this.dragScaleHandle(e));\r\n\t\t\tpickSphere.addEventListener(\"drop\", (e) => this.dropScaleHandle(e));\r\n\r\n\t\t\tpickSphere.addEventListener(\"mouseover\", e => {\r\n\t\t\t\t//node.setOpacity(1);\r\n\t\t\t});\r\n\r\n\t\t\tpickSphere.addEventListener(\"click\", e => {\r\n\t\t\t\te.consume();\r\n\t\t\t});\r\n\r\n\t\t\tpickSphere.addEventListener(\"mouseleave\", e => {\r\n\t\t\t\t//node.setOpacity(0.4);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeFocusHandles(){\r\n\t\t//let sgBox = new THREE.BoxGeometry(1, 1, 1);\r\n\t\tlet sgPlane = new THREE.PlaneGeometry(4, 4, 1, 1);\r\n\t\tlet sgLowPolySphere = new THREE.SphereGeometry(1, 16, 16);\r\n\r\n\t\tlet texture = new THREE.TextureLoader().load(`${exports.resourcePath}/icons/eye_2.png`);\r\n\r\n\t\tfor(let handleName of Object.keys(this.focusHandles)){\r\n\t\t\tlet handle = this.focusHandles[handleName];\r\n\t\t\tlet node = handle.node;\r\n\t\t\tthis.scene.add(node);\r\n\t\t\tlet align = handle.alignment;\r\n\r\n\t\t\t//node.lookAt(new THREE.Vector3().addVectors(node.position, new THREE.Vector3(...align)));\r\n\t\t\tnode.lookAt(new THREE.Vector3(...align));\r\n\r\n\t\t\tlet off = 0.8;\r\n\t\t\tif(align[0] === 1){\r\n\t\t\t\tnode.position.set(1, off, -off).multiplyScalar(0.5);\r\n\t\t\t\tnode.rotation.z = Math.PI / 2;\r\n\t\t\t}else if(align[0] === -1){\r\n\t\t\t\tnode.position.set(-1, -off, -off).multiplyScalar(0.5);\r\n\t\t\t\tnode.rotation.z = Math.PI / 2;\r\n\t\t\t}else if(align[1] === 1){\r\n\t\t\t\tnode.position.set(-off, 1, -off).multiplyScalar(0.5);\r\n\t\t\t\tnode.rotation.set(Math.PI / 2, Math.PI, 0.0);\r\n\t\t\t}else if(align[1] === -1){\r\n\t\t\t\tnode.position.set(off, -1, -off).multiplyScalar(0.5);\r\n\t\t\t\tnode.rotation.set(Math.PI / 2, 0.0, 0.0);\r\n\t\t\t}else if(align[2] === 1){\r\n\t\t\t\tnode.position.set(off, off, 1).multiplyScalar(0.5);\r\n\t\t\t}else if(align[2] === -1){\r\n\t\t\t\tnode.position.set(-off, off, -1).multiplyScalar(0.5);\r\n\t\t\t}\r\n\r\n\t\t\tlet material = new THREE.MeshBasicMaterial({\r\n\t\t\t\tcolor: handle.color,\r\n\t\t\t\topacity: 0,\r\n\t\t\t\ttransparent: true,\r\n\t\t\t\tmap: texture\r\n\t\t\t});\r\n\r\n\t\t\t//let outlineMaterial = new THREE.MeshBasicMaterial({\r\n\t\t\t//\tcolor: 0x000000, \r\n\t\t\t//\tside: THREE.BackSide,\r\n\t\t\t//\topacity: 0,\r\n\t\t\t//\ttransparent: true});\r\n\r\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\r\n\t\t\t\t//opacity: 0,\r\n\t\t\t\ttransparent: true,\r\n\t\t\t\tvisible: this.showPickVolumes});\r\n\r\n\t\t\tlet box = new THREE.Mesh(sgPlane, material);\r\n\t\t\tbox.name = `${handleName}.handle`;\r\n\t\t\tbox.scale.set(1.5, 1.5, 1.5);\r\n\t\t\tbox.position.set(0, 0, 0);\r\n\t\t\tbox.visible = false;\r\n\t\t\tnode.add(box);\r\n\t\t\t//handle.focusNode = box;\r\n\t\t\t\r\n\t\t\t//let outline = new THREE.Mesh(sgPlane, outlineMaterial);\r\n\t\t\t//outline.scale.set(1.4, 1.4, 1.4);\r\n\t\t\t//outline.name = `${handleName}.outline`;\r\n\t\t\t//box.add(outline);\r\n\r\n\t\t\tlet pickSphere = new THREE.Mesh(sgLowPolySphere, pickMaterial);\r\n\t\t\tpickSphere.name = `${handleName}.pick_volume`;\r\n\t\t\tpickSphere.scale.set(3, 3, 3);\r\n\t\t\tbox.add(pickSphere);\r\n\t\t\tpickSphere.handle = handleName;\r\n\t\t\tthis.pickVolumes.push(pickSphere);\r\n\r\n\t\t\tnode.setOpacity = (target) => {\r\n\t\t\t\tlet opacity = {x: material.opacity};\r\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\r\n\t\t\t\tt.onUpdate(() => {\r\n\t\t\t\t\tpickSphere.visible = opacity.x > 0;\r\n\t\t\t\t\tbox.visible = opacity.x > 0;\r\n\t\t\t\t\tmaterial.opacity = opacity.x;\r\n\t\t\t\t\t//outlineMaterial.opacity = opacity.x;\r\n\t\t\t\t\tpickSphere.material.opacity = opacity.x * 0.5;\r\n\t\t\t\t});\r\n\t\t\t\tt.start();\r\n\t\t\t};\r\n\r\n\t\t\tpickSphere.addEventListener(\"drag\", e => {});\r\n\r\n\t\t\tpickSphere.addEventListener(\"mouseup\", e => {\r\n\t\t\t\te.consume();\r\n\t\t\t});\r\n\r\n\t\t\tpickSphere.addEventListener(\"mousedown\", e => {\r\n\t\t\t\te.consume();\r\n\t\t\t});\r\n\r\n\t\t\tpickSphere.addEventListener(\"click\", e => {\r\n\t\t\t\te.consume();\r\n\r\n\t\t\t\tlet selected = this.selection[0];\r\n\t\t\t\tlet maxScale = Math.max(...selected.scale.toArray());\r\n\t\t\t\tlet minScale = Math.min(...selected.scale.toArray());\r\n\t\t\t\tlet handleLength = Math.abs(selected.scale.dot(new THREE.Vector3(...handle.alignment)));\r\n\t\t\t\tlet alignment = new THREE.Vector3(...handle.alignment).multiplyScalar(2 * maxScale / handleLength);\r\n\t\t\t\talignment.applyMatrix4(selected.matrixWorld);\r\n\t\t\t\tlet newCamPos = alignment;\r\n\t\t\t\tlet newCamTarget = selected.getWorldPosition(new THREE.Vector3());\r\n\r\n\t\t\t\tUtils.moveTo(this.viewer.scene, newCamPos, newCamTarget);\r\n\t\t\t});\r\n\r\n\t\t\tpickSphere.addEventListener(\"mouseover\", e => {\r\n\t\t\t\t//box.setOpacity(1);\r\n\t\t\t});\r\n\r\n\t\t\tpickSphere.addEventListener(\"mouseleave\", e => {\r\n\t\t\t\t//box.setOpacity(0.4);\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeTranslationHandles(){\r\n\t\tlet boxGeometry = new THREE.BoxGeometry(1, 1, 1);\r\n\r\n\t\tfor(let handleName of Object.keys(this.translationHandles)){\r\n\t\t\tlet handle = this.handles[handleName];\r\n\t\t\tlet node = handle.node;\r\n\t\t\tthis.scene.add(node);\r\n\r\n\t\t\tlet material = new THREE.MeshBasicMaterial({\r\n\t\t\t\tcolor: handle.color,\r\n\t\t\t\topacity: 0.4,\r\n\t\t\t\ttransparent: true});\r\n\r\n\t\t\tlet outlineMaterial = new THREE.MeshBasicMaterial({\r\n\t\t\t\tcolor: 0x000000, \r\n\t\t\t\tside: THREE.BackSide,\r\n\t\t\t\topacity: 0.4,\r\n\t\t\t\ttransparent: true});\r\n\r\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\r\n\t\t\t\topacity: 0.2,\r\n\t\t\t\ttransparent: true,\r\n\t\t\t\tvisible: this.showPickVolumes\r\n\t\t\t});\r\n\r\n\t\t\tlet box = new THREE.Mesh(boxGeometry, material);\r\n\t\t\tbox.name = `${handleName}.handle`;\r\n\t\t\tbox.scale.set(0.2, 0.2, 40);\r\n\t\t\tbox.lookAt(new THREE.Vector3(...handle.alignment));\r\n\t\t\tbox.renderOrder = 10;\r\n\t\t\tnode.add(box);\r\n\t\t\thandle.translateNode = box;\r\n\r\n\t\t\tlet outline = new THREE.Mesh(boxGeometry, outlineMaterial);\r\n\t\t\toutline.name = `${handleName}.outline`;\r\n\t\t\toutline.scale.set(3, 3, 1.03);\r\n\t\t\toutline.renderOrder = 0;\r\n\t\t\tbox.add(outline);\r\n\r\n\t\t\tlet pickVolume = new THREE.Mesh(boxGeometry, pickMaterial);\r\n\t\t\tpickVolume.name = `${handleName}.pick_volume`;\r\n\t\t\tpickVolume.scale.set(12, 12, 1.1);\r\n\t\t\tpickVolume.handle = handleName;\r\n\t\t\tbox.add(pickVolume);\r\n\t\t\tthis.pickVolumes.push(pickVolume);\r\n\r\n\t\t\tnode.setOpacity = (target) => {\r\n\t\t\t\tlet opacity = {x: material.opacity};\r\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\r\n\t\t\t\tt.onUpdate(() => {\r\n\t\t\t\t\tbox.visible = opacity.x > 0;\r\n\t\t\t\t\tpickVolume.visible = opacity.x > 0;\r\n\t\t\t\t\tmaterial.opacity = opacity.x;\r\n\t\t\t\t\toutlineMaterial.opacity = opacity.x;\r\n\t\t\t\t\tpickMaterial.opacity = opacity.x * 0.5;\r\n\t\t\t\t});\r\n\t\t\t\tt.start();\r\n\t\t\t};\r\n\r\n\t\t\tpickVolume.addEventListener(\"drag\", (e) => {this.dragTranslationHandle(e)});\r\n\t\t\tpickVolume.addEventListener(\"drop\", (e) => {this.dropTranslationHandle(e)});\r\n\t\t}\r\n\t}\r\n\r\n\tinitializeRotationHandles(){\r\n\t\tlet adjust = 0.5;\r\n\t\tlet torusGeometry = new THREE.TorusGeometry(1, adjust * 0.015, 8, 64, Math.PI / 2);\r\n\t\tlet outlineGeometry = new THREE.TorusGeometry(1, adjust * 0.04, 8, 64, Math.PI / 2);\r\n\t\tlet pickGeometry = new THREE.TorusGeometry(1, adjust * 0.1, 6, 4, Math.PI / 2);\r\n\r\n\t\tfor(let handleName of Object.keys(this.rotationHandles)){\r\n\t\t\tlet handle = this.handles[handleName];\r\n\t\t\tlet node = handle.node;\r\n\t\t\tthis.scene.add(node);\r\n\r\n\t\t\tlet material = new THREE.MeshBasicMaterial({\r\n\t\t\t\tcolor: handle.color,\r\n\t\t\t\topacity: 0.4,\r\n\t\t\t\ttransparent: true});\r\n\r\n\t\t\tlet outlineMaterial = new THREE.MeshBasicMaterial({\r\n\t\t\t\tcolor: 0x000000, \r\n\t\t\t\tside: THREE.BackSide,\r\n\t\t\t\topacity: 0.4,\r\n\t\t\t\ttransparent: true});\r\n\r\n\t\t\tlet pickMaterial = new THREE.MeshNormalMaterial({\r\n\t\t\t\topacity: 0.2,\r\n\t\t\t\ttransparent: true,\r\n\t\t\t\tvisible: this.showPickVolumes\r\n\t\t\t});\r\n\r\n\t\t\tlet box = new THREE.Mesh(torusGeometry, material);\r\n\t\t\tbox.name = `${handleName}.handle`;\r\n\t\t\tbox.scale.set(20, 20, 20);\r\n\t\t\tbox.lookAt(new THREE.Vector3(...handle.alignment));\r\n\t\t\tnode.add(box);\r\n\t\t\thandle.translateNode = box;\r\n\r\n\t\t\tlet outline = new THREE.Mesh(outlineGeometry, outlineMaterial);\r\n\t\t\toutline.name = `${handleName}.outline`;\r\n\t\t\toutline.scale.set(1, 1, 1);\r\n\t\t\toutline.renderOrder = 0;\r\n\t\t\tbox.add(outline);\r\n\r\n\t\t\tlet pickVolume = new THREE.Mesh(pickGeometry, pickMaterial);\r\n\t\t\tpickVolume.name = `${handleName}.pick_volume`;\r\n\t\t\tpickVolume.scale.set(1, 1, 1);\r\n\t\t\tpickVolume.handle = handleName;\r\n\t\t\tbox.add(pickVolume);\r\n\t\t\tthis.pickVolumes.push(pickVolume);\r\n\r\n\t\t\tnode.setOpacity = (target) => {\r\n\t\t\t\tlet opacity = {x: material.opacity};\r\n\t\t\t\tlet t = new TWEEN.Tween(opacity).to({x: target}, 100);\r\n\t\t\t\tt.onUpdate(() => {\r\n\t\t\t\t\tbox.visible = opacity.x > 0;\r\n\t\t\t\t\tpickVolume.visible = opacity.x > 0;\r\n\t\t\t\t\tmaterial.opacity = opacity.x;\r\n\t\t\t\t\toutlineMaterial.opacity = opacity.x;\r\n\t\t\t\t\tpickMaterial.opacity = opacity.x * 0.5;\r\n\t\t\t\t});\r\n\t\t\t\tt.start();\r\n\t\t\t};\r\n\r\n\r\n\t\t\t//pickVolume.addEventListener(\"mouseover\", (e) => {\r\n\t\t\t//\t//let a = this.viewer.scene.getActiveCamera().getWorldDirection(new THREE.Vector3()).dot(pickVolume.getWorldDirection(new THREE.Vector3()));\r\n\t\t\t//\tconsole.log(pickVolume.getWorldDirection(new THREE.Vector3()));\r\n\t\t\t//});\r\n\t\t\t\r\n\t\t\tpickVolume.addEventListener(\"drag\", (e) => {this.dragRotationHandle(e)});\r\n\t\t\tpickVolume.addEventListener(\"drop\", (e) => {this.dropRotationHandle(e)});\r\n\t\t}\r\n\t}\r\n\r\n\tdragRotationHandle(e){\r\n\t\tlet drag = e.drag;\r\n\t\tlet handle = this.activeHandle;\r\n\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\r\n\t\tif(!handle){\r\n\t\t\treturn\r\n\t\t};\r\n\r\n\t\tlet localNormal = new THREE.Vector3(...handle.alignment);\r\n\t\tlet n = new THREE.Vector3();\r\n\t\tn.copy(new THREE.Vector4(...localNormal.toArray(), 0).applyMatrix4(handle.node.matrixWorld));\r\n\t\tn.normalize();\r\n\r\n\t\tif (!drag.intersectionStart){\r\n\r\n\t\t\t//this.viewer.scene.scene.remove(this.debug);\r\n\t\t\t//this.debug = new THREE.Object3D();\r\n\t\t\t//this.viewer.scene.scene.add(this.debug);\r\n\t\t\t//Utils.debugSphere(this.debug, drag.location, 3, 0xaaaaaa);\r\n\t\t\t//let debugEnd = drag.location.clone().add(n.clone().multiplyScalar(20));\r\n\t\t\t//Utils.debugLine(this.debug, drag.location, debugEnd, 0xff0000);\r\n\r\n\t\t\tdrag.intersectionStart = drag.location;\r\n\t\t\tdrag.objectStart = drag.object.getWorldPosition(new THREE.Vector3());\r\n\t\t\tdrag.handle = handle;\r\n\r\n\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(n, drag.intersectionStart);\r\n\r\n\t\t\tdrag.dragPlane = plane;\r\n\t\t\tdrag.pivot = drag.intersectionStart;\r\n\t\t}else{\r\n\t\t\thandle = drag.handle;\r\n\t\t}\r\n\r\n\t\tthis.dragging = true;\r\n\r\n\t\tlet mouse = drag.end;\r\n\t\tlet domElement = this.viewer.renderer.domElement;\r\n\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\t\t\r\n\t\tlet I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3());\r\n\r\n\t\tif (I) {\r\n\t\t\tlet center = this.scene.getWorldPosition(new THREE.Vector3());\r\n\t\t\tlet from = drag.pivot;\r\n\t\t\tlet to = I;\r\n\r\n\t\t\tlet v1 = from.clone().sub(center).normalize();\r\n\t\t\tlet v2 = to.clone().sub(center).normalize();\r\n\r\n\t\t\tlet angle = Math.acos(v1.dot(v2));\r\n\t\t\tlet sign = Math.sign(v1.cross(v2).dot(n));\r\n\t\t\tangle = angle * sign;\r\n\t\t\tif (Number.isNaN(angle)) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet normal = new THREE.Vector3(...handle.alignment);\r\n\t\t\tfor (let selection of this.selection) {\r\n\t\t\t\tselection.rotateOnAxis(normal, angle);\r\n\t\t\t\tselection.dispatchEvent({\r\n\t\t\t\t\ttype: \"orientation_changed\",\r\n\t\t\t\t\tobject: selection\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tdrag.pivot = I;\r\n\t\t}\r\n\t}\r\n\r\n\tdropRotationHandle(e){\r\n\t\tthis.dragging = false;\r\n\t\tthis.setActiveHandle(null);\r\n\t}\r\n\r\n\tdragTranslationHandle(e){\r\n\t\tlet drag = e.drag;\r\n\t\tlet handle = this.activeHandle;\r\n\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\t\t\t\r\n\t\tif(!drag.intersectionStart && handle){\r\n\t\t\tdrag.intersectionStart = drag.location;\r\n\t\t\tdrag.objectStart = drag.object.getWorldPosition(new THREE.Vector3());\r\n\r\n\t\t\tlet start = drag.intersectionStart;\r\n\t\t\tlet dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld);\r\n\t\t\tlet end = new THREE.Vector3().addVectors(start, dir);\r\n\t\t\tlet line = new THREE.Line3(start.clone(), end.clone());\r\n\t\t\tdrag.line = line;\r\n\r\n\t\t\tlet camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3());\r\n\t\t\tlet normal = new THREE.Vector3().subVectors(camera.position, camOnLine);\r\n\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart);\r\n\t\t\tdrag.dragPlane = plane;\r\n\t\t\tdrag.pivot = drag.intersectionStart;\r\n\t\t}else{\r\n\t\t\thandle = drag.handle;\r\n\t\t}\r\n\r\n\t\tthis.dragging = true;\r\n\r\n\t\t{\r\n\t\t\tlet mouse = drag.end;\r\n\t\t\tlet domElement = this.viewer.renderer.domElement;\r\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\t\t\tlet I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3());\r\n\r\n\t\t\tif (I) {\r\n\t\t\t\tlet iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3());\r\n\r\n\t\t\t\tlet diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot);\r\n\r\n\t\t\t\tfor (let selection of this.selection) {\r\n\t\t\t\t\tselection.position.add(diff);\r\n\t\t\t\t\tselection.dispatchEvent({\r\n\t\t\t\t\t\ttype: \"position_changed\",\r\n\t\t\t\t\t\tobject: selection\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdrag.pivot = drag.pivot.add(diff);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tdropTranslationHandle(e){\r\n\t\tthis.dragging = false;\r\n\t\tthis.setActiveHandle(null);\r\n\t}\r\n\r\n\tdropScaleHandle(e){\r\n\t\tthis.dragging = false;\r\n\t\tthis.setActiveHandle(null);\r\n\t}\r\n\r\n\tdragScaleHandle(e){\r\n\t\tlet drag = e.drag;\r\n\t\tlet handle = this.activeHandle;\r\n\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\r\n\t\tif(!drag.intersectionStart){\r\n\t\t\tdrag.intersectionStart = drag.location;\r\n\t\t\tdrag.objectStart = drag.object.getWorldPosition(new THREE.Vector3());\r\n\t\t\tdrag.handle = handle;\r\n\r\n\t\t\tlet start = drag.intersectionStart;\r\n\t\t\tlet dir = new THREE.Vector4(...handle.alignment, 0).applyMatrix4(this.scene.matrixWorld);\r\n\t\t\tlet end = new THREE.Vector3().addVectors(start, dir);\r\n\t\t\tlet line = new THREE.Line3(start.clone(), end.clone());\r\n\t\t\tdrag.line = line;\r\n\r\n\t\t\tlet camOnLine = line.closestPointToPoint(camera.position, false, new THREE.Vector3());\r\n\t\t\tlet normal = new THREE.Vector3().subVectors(camera.position, camOnLine);\r\n\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(normal, drag.intersectionStart);\r\n\t\t\tdrag.dragPlane = plane;\r\n\t\t\tdrag.pivot = drag.intersectionStart;\r\n\r\n\t\t\t//Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05);\r\n\t\t}else{\r\n\t\t\thandle = drag.handle;\r\n\t\t}\r\n\r\n\t\tthis.dragging = true;\r\n\r\n\t\t{\r\n\t\t\tlet mouse = drag.end;\r\n\t\t\tlet domElement = this.viewer.renderer.domElement;\r\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\t\t\tlet I = ray.intersectPlane(drag.dragPlane, new THREE.Vector3());\r\n\r\n\t\t\tif (I) {\r\n\t\t\t\tlet iOnLine = drag.line.closestPointToPoint(I, false, new THREE.Vector3());\r\n\t\t\t\tlet direction = handle.alignment.reduce( (a, v) => a + v, 0);\r\n\r\n\t\t\t\tlet toObjectSpace = this.selection[0].matrixWorld.clone().invert();\r\n\t\t\t\tlet iOnLineOS = iOnLine.clone().applyMatrix4(toObjectSpace);\r\n\t\t\t\tlet pivotOS = drag.pivot.clone().applyMatrix4(toObjectSpace);\r\n\t\t\t\tlet diffOS = new THREE.Vector3().subVectors(iOnLineOS, pivotOS);\r\n\t\t\t\tlet dragDirectionOS = diffOS.clone().normalize();\r\n\t\t\t\tif(iOnLine.distanceTo(drag.pivot) === 0){\r\n\t\t\t\t\tdragDirectionOS.set(0, 0, 0);\r\n\t\t\t\t}\r\n\t\t\t\tlet dragDirection = dragDirectionOS.dot(new THREE.Vector3(...handle.alignment));\r\n\r\n\t\t\t\tlet diff = new THREE.Vector3().subVectors(iOnLine, drag.pivot);\r\n\t\t\t\tlet diffScale = new THREE.Vector3(...handle.alignment).multiplyScalar(diff.length() * direction * dragDirection);\r\n\t\t\t\tlet diffPosition = diff.clone().multiplyScalar(0.5);\r\n\r\n\t\t\t\tfor (let selection of this.selection) {\r\n\t\t\t\t\tselection.scale.add(diffScale);\r\n\t\t\t\t\tselection.scale.x = Math.max(0.1, selection.scale.x);\r\n\t\t\t\t\tselection.scale.y = Math.max(0.1, selection.scale.y);\r\n\t\t\t\t\tselection.scale.z = Math.max(0.1, selection.scale.z);\r\n\t\t\t\t\tselection.position.add(diffPosition);\r\n\t\t\t\t\tselection.dispatchEvent({\r\n\t\t\t\t\t\ttype: \"position_changed\",\r\n\t\t\t\t\t\tobject: selection\r\n\t\t\t\t\t});\r\n\t\t\t\t\tselection.dispatchEvent({\r\n\t\t\t\t\t\ttype: \"scale_changed\",\r\n\t\t\t\t\t\tobject: selection\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tdrag.pivot.copy(iOnLine);\r\n\t\t\t\t//Utils.debugSphere(viewer.scene.scene, drag.pivot, 0.05);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tsetActiveHandle(handle){\r\n\t\tif(this.dragging){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this.activeHandle === handle){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.activeHandle = handle;\r\n\r\n\t\tif(handle === null){\r\n\t\t\tfor(let handleName of Object.keys(this.handles)){\r\n\t\t\t\tlet handle = this.handles[handleName];\r\n\t\t\t\thandle.node.setOpacity(0);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor(let handleName of Object.keys(this.focusHandles)){\r\n\t\t\tlet handle = this.focusHandles[handleName];\r\n\r\n\t\t\tif(this.activeHandle === handle){\r\n\t\t\t\thandle.node.setOpacity(1.0);\r\n\t\t\t}else{\r\n\t\t\t\thandle.node.setOpacity(0.4)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor(let handleName of Object.keys(this.translationHandles)){\r\n\t\t\tlet handle = this.translationHandles[handleName];\r\n\r\n\t\t\tif(this.activeHandle === handle){\r\n\t\t\t\thandle.node.setOpacity(1.0);\r\n\t\t\t}else{\r\n\t\t\t\thandle.node.setOpacity(0.4)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor(let handleName of Object.keys(this.rotationHandles)){\r\n\t\t\tlet handle = this.rotationHandles[handleName];\r\n\r\n\t\t\t//if(this.activeHandle === handle){\r\n\t\t\t//\thandle.node.setOpacity(1.0);\r\n\t\t\t//}else{\r\n\t\t\t//\thandle.node.setOpacity(0.4)\r\n\t\t\t//}\r\n\r\n\t\t\thandle.node.setOpacity(0.4);\r\n\t\t}\r\n\r\n\t\tfor(let handleName of Object.keys(this.scaleHandles)){\r\n\t\t\tlet handle = this.scaleHandles[handleName];\r\n\r\n\t\t\tif(this.activeHandle === handle){\r\n\t\t\t\thandle.node.setOpacity(1.0);\r\n\r\n\t\t\t\tlet relatedFocusHandle = this.focusHandles[handle.name.replace(\"scale\", \"focus\")];\r\n\t\t\t\tlet relatedFocusNode = relatedFocusHandle.node;\r\n\t\t\t\trelatedFocusNode.setOpacity(0.4);\r\n\r\n\t\t\t\tfor(let translationHandleName of Object.keys(this.translationHandles)){\r\n\t\t\t\t\tlet translationHandle = this.translationHandles[translationHandleName];\r\n\t\t\t\t\ttranslationHandle.node.setOpacity(0.4);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//let relatedTranslationHandle = this.translationHandles[\r\n\t\t\t\t//\thandle.name.replace(\"scale\", \"translation\").replace(/[+-]/g, \"\")];\r\n\t\t\t\t//let relatedTranslationNode = relatedTranslationHandle.node;\r\n\t\t\t\t//relatedTranslationNode.setOpacity(0.4);\r\n\r\n\r\n\t\t\t}else{\r\n\t\t\t\thandle.node.setOpacity(0.4)\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\r\n\r\n\r\n\r\n\t\tif(handle){\r\n\t\t\thandle.node.setOpacity(1.0);\r\n\t\t}\r\n\r\n\t\t\r\n\t}\r\n\r\n\tupdate () {\r\n\r\n\t\tif(this.selection.length === 1){\r\n\r\n\t\t\tthis.scene.visible = true;\r\n\r\n\t\t\tthis.scene.updateMatrix();\r\n\t\t\tthis.scene.updateMatrixWorld();\r\n\r\n\t\t\tlet selected = this.selection[0];\r\n\t\t\tlet world = selected.matrixWorld;\r\n\t\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\t\t\tlet domElement = this.viewer.renderer.domElement;\r\n\t\t\tlet mouse = this.viewer.inputHandler.mouse;\r\n\r\n\t\t\tlet center = selected.boundingBox.getCenter(new THREE.Vector3()).clone().applyMatrix4(selected.matrixWorld);\r\n\r\n\t\t\tthis.scene.scale.copy(selected.boundingBox.getSize(new THREE.Vector3()).multiply(selected.scale));\r\n\t\t\tthis.scene.position.copy(center);\r\n\t\t\tthis.scene.rotation.copy(selected.rotation);\r\n\r\n\t\t\tthis.scene.updateMatrixWorld();\r\n\r\n\t\t\t{\r\n\t\t\t\t// adjust scale of components\r\n\t\t\t\tfor(let handleName of Object.keys(this.handles)){\r\n\t\t\t\t\tlet handle = this.handles[handleName];\r\n\t\t\t\t\tlet node = handle.node;\r\n\r\n\t\t\t\t\tlet handlePos = node.getWorldPosition(new THREE.Vector3());\r\n\t\t\t\t\tlet distance = handlePos.distanceTo(camera.position);\r\n\t\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight);\r\n\r\n\t\t\t\t\tlet ws = node.parent.getWorldScale(new THREE.Vector3());\r\n\r\n\t\t\t\t\tlet s = (7 / pr);\r\n\t\t\t\t\tlet scale = new THREE.Vector3(s, s, s).divide(ws);\r\n\r\n\t\t\t\t\tlet rot = new THREE.Matrix4().makeRotationFromEuler(node.rotation);\r\n\t\t\t\t\tlet rotInv = rot.clone().invert();\r\n\r\n\t\t\t\t\tscale.applyMatrix4(rotInv);\r\n\t\t\t\t\tscale.x = Math.abs(scale.x);\r\n\t\t\t\t\tscale.y = Math.abs(scale.y);\r\n\t\t\t\t\tscale.z = Math.abs(scale.z);\r\n\r\n\t\t\t\t\tnode.scale.copy(scale);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// adjust rotation handles\r\n\t\t\t\tif(!this.dragging){\r\n\t\t\t\t\tlet tWorld = this.scene.matrixWorld;\r\n\t\t\t\t\tlet tObject = tWorld.clone().invert();\r\n\t\t\t\t\tlet camObjectPos = camera.getWorldPosition(new THREE.Vector3()).applyMatrix4(tObject);\r\n\r\n\t\t\t\t\tlet x = this.rotationHandles[\"rotation.x\"].node.rotation;\r\n\t\t\t\t\tlet y = this.rotationHandles[\"rotation.y\"].node.rotation;\r\n\t\t\t\t\tlet z = this.rotationHandles[\"rotation.z\"].node.rotation;\r\n\r\n\t\t\t\t\tx.order = \"ZYX\";\r\n\t\t\t\t\ty.order = \"ZYX\";\r\n\r\n\t\t\t\t\tlet above = camObjectPos.z > 0;\r\n\t\t\t\t\tlet below = !above;\r\n\t\t\t\t\tlet PI_HALF = Math.PI / 2;\r\n\r\n\t\t\t\t\tif(above){\r\n\t\t\t\t\t\tif(camObjectPos.x > 0 && camObjectPos.y > 0){\r\n\t\t\t\t\t\t\tx.x = 1 * PI_HALF;\r\n\t\t\t\t\t\t\ty.y = 3 * PI_HALF;\r\n\t\t\t\t\t\t\tz.z = 0 * PI_HALF;\r\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y > 0){\r\n\t\t\t\t\t\t\tx.x = 1 * PI_HALF;\r\n\t\t\t\t\t\t\ty.y = 2 * PI_HALF;\r\n\t\t\t\t\t\t\tz.z = 1 * PI_HALF;\r\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y < 0){\r\n\t\t\t\t\t\t\tx.x = 2 * PI_HALF;\r\n\t\t\t\t\t\t\ty.y = 2 * PI_HALF;\r\n\t\t\t\t\t\t\tz.z = 2 * PI_HALF;\r\n\t\t\t\t\t\t}else if(camObjectPos.x > 0 && camObjectPos.y < 0){\r\n\t\t\t\t\t\t\tx.x = 2 * PI_HALF;\r\n\t\t\t\t\t\t\ty.y = 3 * PI_HALF;\r\n\t\t\t\t\t\t\tz.z = 3 * PI_HALF;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}else if(below){\r\n\t\t\t\t\t\tif(camObjectPos.x > 0 && camObjectPos.y > 0){\r\n\t\t\t\t\t\t\tx.x = 0 * PI_HALF;\r\n\t\t\t\t\t\t\ty.y = 0 * PI_HALF;\r\n\t\t\t\t\t\t\tz.z = 0 * PI_HALF;\r\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y > 0){\r\n\t\t\t\t\t\t\tx.x = 0 * PI_HALF;\r\n\t\t\t\t\t\t\ty.y = 1 * PI_HALF;\r\n\t\t\t\t\t\t\tz.z = 1 * PI_HALF;\r\n\t\t\t\t\t\t}else if(camObjectPos.x < 0 && camObjectPos.y < 0){\r\n\t\t\t\t\t\t\tx.x = 3 * PI_HALF;\r\n\t\t\t\t\t\t\ty.y = 1 * PI_HALF;\r\n\t\t\t\t\t\t\tz.z = 2 * PI_HALF;\r\n\t\t\t\t\t\t}else if(camObjectPos.x > 0 && camObjectPos.y < 0){\r\n\t\t\t\t\t\t\tx.x = 3 * PI_HALF;\r\n\t\t\t\t\t\t\ty.y = 0 * PI_HALF;\r\n\t\t\t\t\t\t\tz.z = 3 * PI_HALF;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\t\t\t\t\tlet raycaster = new THREE.Raycaster(ray.origin, ray.direction);\r\n\t\t\t\t\tlet intersects = raycaster.intersectObjects(this.pickVolumes.filter(v => v.visible), true);\r\n\r\n\t\t\t\t\tif(intersects.length > 0){\r\n\t\t\t\t\t\tlet I = intersects[0];\r\n\t\t\t\t\t\tlet handleName = I.object.handle;\r\n\t\t\t\t\t\tthis.setActiveHandle(this.handles[handleName]);\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\tthis.setActiveHandle(null);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// \r\n\t\t\t\tfor(let handleName of Object.keys(this.scaleHandles)){\r\n\t\t\t\t\tlet handle = this.handles[handleName];\r\n\t\t\t\t\tlet node = handle.node;\r\n\t\t\t\t\tlet alignment = handle.alignment;\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}else{\r\n\t\t\tthis.scene.visible = false;\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n};\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Volume, BoxVolume} from \"./Volume.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport { EventDispatcher } from \"../EventDispatcher.js\";\r\n\r\nexport class VolumeTool extends EventDispatcher{\r\n\tconstructor (viewer) {\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\tthis.addEventListener('start_inserting_volume', e => {\r\n\t\t\tthis.viewer.dispatchEvent({\r\n\t\t\t\ttype: 'cancel_insertions'\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tthis.scene = new THREE.Scene();\r\n\t\tthis.scene.name = 'scene_volume';\r\n\r\n\t\tthis.viewer.inputHandler.registerInteractiveScene(this.scene);\r\n\r\n\t\tthis.onRemove = e => {\r\n\t\t\tthis.scene.remove(e.volume);\r\n\t\t};\r\n\r\n\t\tthis.onAdd = e => {\r\n\t\t\tthis.scene.add(e.volume);\r\n\t\t};\r\n\r\n\t\tfor(let volume of viewer.scene.volumes){\r\n\t\t\tthis.onAdd({volume: volume});\r\n\t\t}\r\n\r\n\t\tthis.viewer.inputHandler.addEventListener('delete', e => {\r\n\t\t\tlet volumes = e.selection.filter(e => (e instanceof Volume));\r\n\t\t\tvolumes.forEach(e => this.viewer.scene.removeVolume(e));\r\n\t\t});\r\n\r\n\t\tviewer.addEventListener(\"update\", this.update.bind(this));\r\n\t\tviewer.addEventListener(\"render.pass.scene\", e => this.render(e));\r\n\t\tviewer.addEventListener(\"scene_changed\", this.onSceneChange.bind(this));\r\n\r\n\t\tviewer.scene.addEventListener('volume_added', this.onAdd);\r\n\t\tviewer.scene.addEventListener('volume_removed', this.onRemove);\r\n\t}\r\n\r\n\tonSceneChange(e){\r\n\t\tif(e.oldScene){\r\n\t\t\te.oldScene.removeEventListeners('volume_added', this.onAdd);\r\n\t\t\te.oldScene.removeEventListeners('volume_removed', this.onRemove);\r\n\t\t}\r\n\r\n\t\te.scene.addEventListener('volume_added', this.onAdd);\r\n\t\te.scene.addEventListener('volume_removed', this.onRemove);\r\n\t}\r\n\r\n\tstartInsertion (args = {}) {\r\n\t\tlet volume;\r\n\t\tif(args.type){\r\n\t\t\tvolume = new args.type();\r\n\t\t}else{\r\n\t\t\tvolume = new BoxVolume();\r\n\t\t}\r\n\t\t\r\n\t\tvolume.clip = args.clip || false;\r\n\t\tvolume.name = args.name || 'Volume';\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'start_inserting_volume',\r\n\t\t\tvolume: volume\r\n\t\t});\r\n\r\n\t\tthis.viewer.scene.addVolume(volume);\r\n\t\tthis.scene.add(volume);\r\n\r\n\t\tlet cancel = {\r\n\t\t\tcallback: null\r\n\t\t};\r\n\r\n\t\tlet drag = e => {\r\n\t\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\t\t\t\r\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\r\n\t\t\t\te.drag.end, \r\n\t\t\t\tthis.viewer.scene.getActiveCamera(), \r\n\t\t\t\tthis.viewer, \r\n\t\t\t\tthis.viewer.scene.pointclouds, \r\n\t\t\t\t{pickClipped: false});\r\n\r\n\t\t\tif (I) {\r\n\t\t\t\tvolume.position.copy(I.location);\r\n\r\n\t\t\t\tlet wp = volume.getWorldPosition(new THREE.Vector3()).applyMatrix4(camera.matrixWorldInverse);\r\n\t\t\t\t// let pp = new THREE.Vector4(wp.x, wp.y, wp.z).applyMatrix4(camera.projectionMatrix);\r\n\t\t\t\tlet w = Math.abs((wp.z / 5));\r\n\t\t\t\tvolume.scale.set(w, w, w);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tlet drop = e => {\r\n\t\t\tvolume.removeEventListener('drag', drag);\r\n\t\t\tvolume.removeEventListener('drop', drop);\r\n\r\n\t\t\tcancel.callback();\r\n\t\t};\r\n\r\n\t\tcancel.callback = e => {\r\n\t\t\tvolume.removeEventListener('drag', drag);\r\n\t\t\tvolume.removeEventListener('drop', drop);\r\n\t\t\tthis.viewer.removeEventListener('cancel_insertions', cancel.callback);\r\n\t\t};\r\n\r\n\t\tvolume.addEventListener('drag', drag);\r\n\t\tvolume.addEventListener('drop', drop);\r\n\t\tthis.viewer.addEventListener('cancel_insertions', cancel.callback);\r\n\r\n\t\tthis.viewer.inputHandler.startDragging(volume);\r\n\r\n\t\treturn volume;\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tif (!this.viewer.scene) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t\r\n\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\t\tlet renderAreaSize = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\tlet clientWidth = renderAreaSize.width;\r\n\t\tlet clientHeight = renderAreaSize.height;\r\n\r\n\t\tlet volumes = this.viewer.scene.volumes;\r\n\t\tfor (let volume of volumes) {\r\n\t\t\tlet label = volume.label;\r\n\t\t\t\r\n\t\t\t{\r\n\r\n\t\t\t\tlet distance = label.position.distanceTo(camera.position);\r\n\t\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, clientWidth, clientHeight);\r\n\r\n\t\t\t\tlet scale = (70 / pr);\r\n\t\t\t\tlabel.scale.set(scale, scale, scale);\r\n\t\t\t}\r\n\r\n\t\t\tlet calculatedVolume = volume.getVolume();\r\n\t\t\tcalculatedVolume = calculatedVolume / Math.pow(this.viewer.lengthUnit.unitspermeter, 3) * Math.pow(this.viewer.lengthUnitDisplay.unitspermeter, 3); //convert to cubic meters then to the cubic display unit\r\n\t\t\tlet text = Utils.addCommas(calculatedVolume.toFixed(3)) + ' ' + this.viewer.lengthUnitDisplay.code + '\\u00B3';\r\n\t\t\tlabel.setText(text);\r\n\t\t}\r\n\t}\r\n\r\n\trender(params){\r\n\t\tconst renderer = this.viewer.renderer;\r\n\r\n\t\tconst oldTarget = renderer.getRenderTarget();\r\n\t\t\r\n\t\tif(params.renderTarget){\r\n\t\t\trenderer.setRenderTarget(params.renderTarget);\r\n\t\t}\r\n\t\trenderer.render(this.scene, this.viewer.scene.getActiveCamera());\r\n\t\trenderer.setRenderTarget(oldTarget);\r\n\t}\r\n\r\n}\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nimport {Utils} from \"../utils.js\";\r\n\r\nexport class Compass{\r\n\r\n\tconstructor(viewer){\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.visible = false;\r\n\t\tthis.dom = this.createElement();\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\t\t\tconst direction = viewer.scene.view.direction.clone();\r\n\t\t\tdirection.z = 0;\r\n\t\t\tdirection.normalize();\r\n\r\n\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\r\n\t\t\tconst p1 = camera.getWorldPosition(new THREE.Vector3());\r\n\t\t\tconst p2 = p1.clone().add(direction);\r\n\r\n\t\t\tconst projection = viewer.getProjection();\r\n\t\t\tconst azimuth = Utils.computeAzimuth(p1, p2, projection);\r\n\t\t\t\r\n\t\t\tthis.dom.css(\"transform\", `rotateZ(${-azimuth}rad)`);\r\n\t\t});\r\n\r\n\t\tthis.dom.click( () => {\r\n\t\t\tviewer.setTopView();\r\n\t\t});\r\n\r\n\t\tconst renderArea = $(viewer.renderArea);\r\n\t\trenderArea.append(this.dom);\r\n\r\n\t\tthis.setVisible(this.visible);\r\n\t}\r\n\r\n\tsetVisible(visible){\r\n\t\tthis.visible = visible;\r\n\r\n\t\tconst value = visible ? \"\" : \"none\";\r\n\t\tthis.dom.css(\"display\", value);\r\n\t}\r\n\r\n\tisVisible(){\r\n\t\treturn this.visible;\r\n\t}\r\n\r\n\tcreateElement(){\r\n\t\tconst style = `style=\"position: absolute; top: 10px; right: 10px; z-index: 10000; width: 64px;\"`;\r\n\t\tconst img = $(``);\r\n\r\n\t\treturn img;\r\n\t}\r\n\r\n};","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\n\r\nexport class PotreeRenderer {\r\n\r\n\tconstructor (viewer) {\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\t{\r\n\t\t\tlet dummyScene = new THREE.Scene();\r\n\t\t\tlet geometry = new THREE.SphereGeometry(0.001, 2, 2);\r\n\t\t\tlet mesh = new THREE.Mesh(geometry, new THREE.MeshBasicMaterial());\r\n\t\t\tmesh.position.set(36453, 35163, 764712);\r\n\t\t\tdummyScene.add(mesh);\r\n\r\n\t\t\tthis.dummyMesh = mesh;\r\n\t\t\tthis.dummyScene = dummyScene;\r\n\t\t}\r\n\t}\r\n\r\n\tclearTargets(){\r\n\r\n\t}\r\n\r\n\tclear(){\r\n\t\tlet {viewer, renderer} = this;\r\n\r\n\r\n\t\t// render skybox\r\n\t\tif(viewer.background === \"skybox\"){\r\n\t\t\trenderer.setClearColor(0xff0000, 1);\r\n\t\t}else if(viewer.background === \"gradient\"){\r\n\t\t\trenderer.setClearColor(0x00ff00, 1);\r\n\t\t}else if(viewer.background === \"black\"){\r\n\t\t\trenderer.setClearColor(0x000000, 1);\r\n\t\t}else if(viewer.background === \"white\"){\r\n\t\t\trenderer.setClearColor(0xFFFFFF, 1);\r\n\t\t}else{\r\n\t\t\trenderer.setClearColor(0x000000, 0);\r\n\t\t}\r\n\r\n\t\trenderer.clear();\r\n\t}\r\n \r\n\trender(params){\r\n\t\tlet {viewer, renderer} = this;\r\n\r\n\t\tconst camera = params.camera ? params.camera : viewer.scene.getActiveCamera();\r\n\r\n\t\tviewer.dispatchEvent({type: \"render.pass.begin\",viewer: viewer});\r\n\r\n\t\tconst renderAreaSize = renderer.getSize(new THREE.Vector2());\r\n\t\tconst width = params.viewport ? params.viewport[2] : renderAreaSize.x;\r\n\t\tconst height = params.viewport ? params.viewport[3] : renderAreaSize.y;\r\n\r\n\t\t// render skybox\r\n\t\tif(viewer.background === \"skybox\"){\r\n\t\t\tviewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);\r\n\t\t\tviewer.skybox.camera.fov = viewer.scene.cameraP.fov;\r\n\t\t\tviewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;\r\n\t\t\t\r\n\t\t\tviewer.skybox.parent.rotation.x = 0;\r\n\t\t\tviewer.skybox.parent.updateMatrixWorld();\r\n\r\n\t\t\tviewer.skybox.camera.updateProjectionMatrix();\r\n\t\t\trenderer.render(viewer.skybox.scene, viewer.skybox.camera);\r\n\t\t}else if(viewer.background === \"gradient\"){\r\n\t\t\trenderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG);\r\n\t\t}\r\n\t\t\r\n\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\r\n\t\t\tconst {material} = pointcloud;\r\n\t\t\tmaterial.useEDL = false;\r\n\t\t}\r\n\t\t\r\n\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, null, {\r\n\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof Potree.SphereVolume)),\r\n\t\t});\r\n\t\t\r\n\t\t// render scene\r\n\t\trenderer.render(viewer.scene.scene, camera);\r\n\r\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\",viewer: viewer});\r\n\t\t\r\n\t\tviewer.clippingTool.update();\r\n\t\trenderer.render(viewer.clippingTool.sceneMarker, viewer.scene.cameraScreenSpace); //viewer.scene.cameraScreenSpace);\r\n\t\trenderer.render(viewer.clippingTool.sceneVolume, camera);\r\n\r\n\t\trenderer.render(viewer.controls.sceneControls, camera);\r\n\t\t\r\n\t\trenderer.clearDepth();\r\n\t\t\r\n\t\tviewer.transformationTool.update();\r\n\t\t\r\n\t\tviewer.dispatchEvent({type: \"render.pass.perspective_overlay\",viewer: viewer});\r\n\r\n\t\t// renderer.render(viewer.controls.sceneControls, camera);\r\n\t\t// renderer.render(viewer.clippingTool.sceneVolume, camera);\r\n\t\t// renderer.render(viewer.transformationTool.scene, camera);\r\n\t\t\r\n\t\t// renderer.setViewport(width - viewer.navigationCube.width, \r\n\t\t// \t\t\t\t\t\t\theight - viewer.navigationCube.width, \r\n\t\t// \t\t\t\t\t\t\tviewer.navigationCube.width, viewer.navigationCube.width);\r\n\t\t// renderer.render(viewer.navigationCube, viewer.navigationCube.camera);\t\t\r\n\t\t// renderer.setViewport(0, 0, width, height);\r\n\t\t\r\n\t\tviewer.dispatchEvent({type: \"render.pass.end\",viewer: viewer});\r\n\t}\r\n\r\n}\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {PointCloudSM} from \"../utils/PointCloudSM.js\";\r\nimport {EyeDomeLightingMaterial} from \"../materials/EyeDomeLightingMaterial.js\";\r\nimport {SphereVolume} from \"../utils/Volume.js\";\r\nimport {Utils} from \"../utils.js\";\r\n\r\nexport class EDLRenderer{\r\n\tconstructor(viewer){\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.edlMaterial = null;\r\n\r\n\t\tthis.rtRegular;\r\n\t\tthis.rtEDL;\r\n\r\n\t\tthis.gl = viewer.renderer.getContext();\r\n\r\n\t\tthis.shadowMap = new PointCloudSM(this.viewer.pRenderer);\r\n\t}\r\n\r\n\tinitEDL(){\r\n\t\tif (this.edlMaterial != null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.edlMaterial = new EyeDomeLightingMaterial();\r\n\t\tthis.edlMaterial.depthTest = true;\r\n\t\tthis.edlMaterial.depthWrite = true;\r\n\t\tthis.edlMaterial.transparent = true;\r\n\r\n\t\tthis.rtEDL = new THREE.WebGLRenderTarget(1024, 1024, {\r\n\t\t\tminFilter: THREE.NearestFilter,\r\n\t\t\tmagFilter: THREE.NearestFilter,\r\n\t\t\tformat: THREE.RGBAFormat,\r\n\t\t\ttype: THREE.FloatType,\r\n\t\t\tdepthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType)\r\n\t\t});\r\n\r\n\t\tthis.rtRegular = new THREE.WebGLRenderTarget(1024, 1024, {\r\n\t\t\tminFilter: THREE.NearestFilter,\r\n\t\t\tmagFilter: THREE.NearestFilter,\r\n\t\t\tformat: THREE.RGBAFormat,\r\n\t\t\tdepthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType)\r\n\t\t});\r\n\t};\r\n\r\n\tresize(width, height){\r\n\t\tif(this.screenshot){\r\n\t\t\twidth = this.screenshot.target.width;\r\n\t\t\theight = this.screenshot.target.height;\r\n\t\t}\r\n\r\n\t\tthis.rtEDL.setSize(width , height);\r\n\t\tthis.rtRegular.setSize(width , height);\r\n\t}\r\n\r\n\tmakeScreenshot(camera, size, callback){\r\n\r\n\t\tif(camera === undefined || camera === null){\r\n\t\t\tcamera = this.viewer.scene.getActiveCamera();\r\n\t\t}\r\n\r\n\t\tif(size === undefined || size === null){\r\n\t\t\tsize = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\t}\r\n\r\n\t\tlet {width, height} = size;\r\n\r\n\t\t//let maxTextureSize = viewer.renderer.capabilities.maxTextureSize;\r\n\t\t//if(width * 4 < \r\n\t\twidth = 2 * width;\r\n\t\theight = 2 * height;\r\n\r\n\t\tlet target = new THREE.WebGLRenderTarget(width, height, {\r\n\t\t\tformat: THREE.RGBAFormat,\r\n\t\t});\r\n\r\n\t\tthis.screenshot = {\r\n\t\t\ttarget: target\r\n\t\t};\r\n\r\n\t\t// HACK? removed because of error, was this important?\r\n\t\t//this.viewer.renderer.clearTarget(target, true, true, true);\r\n\r\n\t\tthis.render();\r\n\r\n\t\tlet pixelCount = width * height;\r\n\t\tlet buffer = new Uint8Array(4 * pixelCount);\r\n\r\n\t\tthis.viewer.renderer.readRenderTargetPixels(target, 0, 0, width, height, buffer);\r\n\r\n\t\t// flip vertically\r\n\t\tlet bytesPerLine = width * 4;\r\n\t\tfor(let i = 0; i < parseInt(height / 2); i++){\r\n\t\t\tlet j = height - i - 1;\r\n\r\n\t\t\tlet lineI = buffer.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine);\r\n\t\t\tlet lineJ = buffer.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine);\r\n\t\t\tbuffer.set(lineJ, i * bytesPerLine);\r\n\t\t\tbuffer.set(lineI, j * bytesPerLine);\r\n\t\t}\r\n\r\n\t\tthis.screenshot.target.dispose();\r\n\t\tdelete this.screenshot;\r\n\r\n\t\treturn {\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t\tbuffer: buffer\r\n\t\t};\r\n\t}\r\n\r\n\tclearTargets(){\r\n\t\tconst viewer = this.viewer;\r\n\t\tconst {renderer} = viewer;\r\n\r\n\t\tconst oldTarget = renderer.getRenderTarget();\r\n\r\n\t\trenderer.setRenderTarget( this.rtEDL );\r\n\t\trenderer.clear( true, true, true );\r\n\r\n\t\trenderer.setRenderTarget( this.rtRegular );\r\n\t\trenderer.clear( true, true, false );\r\n\r\n\t\trenderer.setRenderTarget(oldTarget);\r\n\t}\r\n\r\n\tclear(){\r\n\t\tthis.initEDL();\r\n\t\tconst viewer = this.viewer;\r\n\r\n\t\tconst {renderer, background} = viewer;\r\n\r\n\t\tif(background === \"skybox\"){\r\n\t\t\trenderer.setClearColor(0x000000, 0);\r\n\t\t} else if (background === 'gradient') {\r\n\t\t\trenderer.setClearColor(0x000000, 0);\r\n\t\t} else if (background === 'black') {\r\n\t\t\trenderer.setClearColor(0x000000, 1);\r\n\t\t} else if (background === 'white') {\r\n\t\t\trenderer.setClearColor(0xFFFFFF, 1);\r\n\t\t} else {\r\n\t\t\trenderer.setClearColor(0x000000, 0);\r\n\t\t}\r\n\t\t\r\n\t\trenderer.clear();\r\n\r\n\t\tthis.clearTargets();\r\n\t}\r\n\r\n\trenderShadowMap(visiblePointClouds, camera, lights){\r\n\r\n\t\tconst {viewer} = this;\r\n\r\n\t\tconst doShadows = lights.length > 0 && !(lights[0].disableShadowUpdates);\r\n\t\tif(doShadows){\r\n\t\t\tlet light = lights[0];\r\n\r\n\t\t\tthis.shadowMap.setLight(light);\r\n\r\n\t\t\tlet originalAttributes = new Map();\r\n\t\t\tfor(let pointcloud of viewer.scene.pointclouds){\r\n\t\t\t\t// TODO IMPORTANT !!! check\r\n\t\t\t\toriginalAttributes.set(pointcloud, pointcloud.material.activeAttributeName);\r\n\t\t\t\tpointcloud.material.disableEvents();\r\n\t\t\t\tpointcloud.material.activeAttributeName = \"depth\";\r\n\t\t\t\t//pointcloud.material.pointColorType = PointColorType.DEPTH;\r\n\t\t\t}\r\n\r\n\t\t\tthis.shadowMap.render(viewer.scene.scenePointCloud, camera);\r\n\r\n\t\t\tfor(let pointcloud of visiblePointClouds){\r\n\t\t\t\tlet originalAttribute = originalAttributes.get(pointcloud);\r\n\t\t\t\t// TODO IMPORTANT !!! check\r\n\t\t\t\tpointcloud.material.activeAttributeName = originalAttribute;\r\n\t\t\t\tpointcloud.material.enableEvents();\r\n\t\t\t}\r\n\r\n\t\t\tviewer.shadowTestCam.updateMatrixWorld();\r\n\t\t\tviewer.shadowTestCam.matrixWorldInverse.copy(viewer.shadowTestCam.matrixWorld).invert();\r\n\t\t\tviewer.shadowTestCam.updateProjectionMatrix();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\trender(params){\r\n\t\tthis.initEDL();\r\n\r\n\t\tconst viewer = this.viewer;\r\n\t\tlet camera = params.camera ? params.camera : viewer.scene.getActiveCamera();\r\n\t\tconst {width, height} = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\r\n\r\n\t\tviewer.dispatchEvent({type: \"render.pass.begin\",viewer: viewer});\r\n\t\t\r\n\t\tthis.resize(width, height);\r\n\r\n\t\tconst visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible);\r\n\r\n\t\tif(this.screenshot){\r\n\t\t\tlet oldBudget = Potree.pointBudget;\r\n\t\t\tPotree.pointBudget = Math.max(10 * 1000 * 1000, 2 * oldBudget);\r\n\t\t\tlet result = Potree.updatePointClouds(\r\n\t\t\t\tviewer.scene.pointclouds, \r\n\t\t\t\tcamera, \r\n\t\t\t\tviewer.renderer);\r\n\t\t\tPotree.pointBudget = oldBudget;\r\n\t\t}\r\n\r\n\t\tlet lights = [];\r\n\t\tviewer.scene.scene.traverse(node => {\r\n\t\t\tif(node.type === \"SpotLight\"){\r\n\t\t\t\tlights.push(node);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tif(viewer.background === \"skybox\"){\r\n\t\t\tviewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);\r\n\t\t\tviewer.skybox.camera.fov = viewer.scene.cameraP.fov;\r\n\t\t\tviewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;\r\n\r\n\t\t\tviewer.skybox.parent.rotation.x = 0;\r\n\t\t\tviewer.skybox.parent.updateMatrixWorld();\r\n\r\n\t\t\tviewer.skybox.camera.updateProjectionMatrix();\r\n\t\t\tviewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera);\r\n\t\t} else if (viewer.background === 'gradient') {\r\n\t\t\tviewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG);\r\n\t\t} \r\n\r\n\t\t//TODO adapt to multiple lights\r\n\t\tthis.renderShadowMap(visiblePointClouds, camera, lights);\r\n\r\n\t\t{ // COLOR & DEPTH PASS\r\n\t\t\tfor (let pointcloud of visiblePointClouds) {\r\n\t\t\t\tlet octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\r\n\r\n\t\t\t\tlet material = pointcloud.material;\r\n\t\t\t\tmaterial.weighted = false;\r\n\t\t\t\tmaterial.useLogarithmicDepthBuffer = false;\r\n\t\t\t\tmaterial.useEDL = true;\r\n\r\n\t\t\t\tmaterial.screenWidth = width;\r\n\t\t\t\tmaterial.screenHeight = height;\r\n\t\t\t\tmaterial.uniforms.visibleNodes.value = pointcloud.material.visibleNodesTexture;\r\n\t\t\t\tmaterial.uniforms.octreeSize.value = octreeSize;\r\n\t\t\t\tmaterial.spacing = pointcloud.pcoGeometry.spacing; // * Math.max(pointcloud.scale.x, pointcloud.scale.y, pointcloud.scale.z);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// TODO adapt to multiple lights\r\n\t\t\tviewer.renderer.setRenderTarget(this.rtEDL);\r\n\t\t\t\r\n\t\t\tif(lights.length > 0){\r\n\t\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, {\r\n\t\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\r\n\t\t\t\t\tshadowMaps: [this.shadowMap],\r\n\t\t\t\t\ttransparent: false,\r\n\t\t\t\t});\r\n\t\t\t}else{\r\n\r\n\t\t\t\t\r\n\t\t\t\t// let test = camera.clone();\r\n\t\t\t\t// test.matrixAutoUpdate = false;\r\n\r\n\t\t\t\t// //test.updateMatrixWorld = () => {};\r\n\r\n\t\t\t\t// let mat = new THREE.Matrix4().set(\r\n\t\t\t\t// \t1, 0, 0, 0,\r\n\t\t\t\t// \t0, 0, 1, 0,\r\n\t\t\t\t// \t0, -1, 0, 0,\r\n\t\t\t\t// \t0, 0, 0, 1,\r\n\t\t\t\t// );\r\n\t\t\t\t// mat.invert()\r\n\r\n\t\t\t\t// test.matrix.multiplyMatrices(mat, test.matrix);\r\n\t\t\t\t// test.updateMatrixWorld();\r\n\r\n\t\t\t\t//test.matrixWorld.multiplyMatrices(mat, test.matrixWorld);\r\n\t\t\t\t//test.matrixWorld.multiply(mat);\r\n\t\t\t\t//test.matrixWorldInverse.invert(test.matrixWorld);\r\n\t\t\t\t//test.matrixWorldInverse.multiplyMatrices(test.matrixWorldInverse, mat);\r\n\t\t\t\t\r\n\r\n\t\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtEDL, {\r\n\t\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\r\n\t\t\t\t\ttransparent: false,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\", viewer: viewer, renderTarget: this.rtRegular});\r\n\t\tviewer.renderer.setRenderTarget(null);\r\n\t\tviewer.renderer.render(viewer.scene.scene, camera);\r\n\r\n\t\t{ // EDL PASS\r\n\r\n\t\t\tconst uniforms = this.edlMaterial.uniforms;\r\n\r\n\t\t\tuniforms.screenWidth.value = width;\r\n\t\t\tuniforms.screenHeight.value = height;\r\n\r\n\t\t\tlet proj = camera.projectionMatrix;\r\n\t\t\tlet projArray = new Float32Array(16);\r\n\t\t\tprojArray.set(proj.elements);\r\n\r\n\t\t\tuniforms.uNear.value = camera.near;\r\n\t\t\tuniforms.uFar.value = camera.far;\r\n\t\t\tuniforms.uEDLColor.value = this.rtEDL.texture;\r\n\t\t\tuniforms.uEDLDepth.value = this.rtEDL.depthTexture;\r\n\t\t\tuniforms.uProj.value = projArray;\r\n\r\n\t\t\tuniforms.edlStrength.value = viewer.edlStrength;\r\n\t\t\tuniforms.radius.value = viewer.edlRadius;\r\n\t\t\tuniforms.opacity.value = viewer.edlOpacity; // HACK\r\n\t\t\t\r\n\t\t\tUtils.screenPass.render(viewer.renderer, this.edlMaterial);\r\n\r\n\t\t\tif(this.screenshot){\r\n\t\t\t\tUtils.screenPass.render(viewer.renderer, this.edlMaterial, this.screenshot.target);\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\", viewer: viewer});\r\n\r\n\t\tviewer.renderer.clearDepth();\r\n\r\n\t\tviewer.transformationTool.update();\r\n\r\n\t\tviewer.dispatchEvent({type: \"render.pass.perspective_overlay\",viewer: viewer});\r\n\r\n\t\tviewer.renderer.render(viewer.controls.sceneControls, camera);\r\n\t\tviewer.renderer.render(viewer.clippingTool.sceneVolume, camera);\r\n\t\tviewer.renderer.render(viewer.transformationTool.scene, camera);\r\n\t\t\r\n\t\tviewer.dispatchEvent({type: \"render.pass.end\",viewer: viewer});\r\n\r\n\t}\r\n}\r\n\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {NormalizationMaterial} from \"../materials/NormalizationMaterial.js\";\r\nimport {NormalizationEDLMaterial} from \"../materials/NormalizationEDLMaterial.js\";\r\nimport {PointCloudMaterial} from \"../materials/PointCloudMaterial.js\";\r\nimport {PointShape} from \"../defines.js\";\r\nimport {SphereVolume} from \"../utils/Volume.js\";\r\nimport {Utils} from \"../utils.js\";\r\n\r\n\r\nexport class HQSplatRenderer{\r\n\t\r\n\tconstructor(viewer){\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.depthMaterials = new Map();\r\n\t\tthis.attributeMaterials = new Map();\r\n\t\tthis.normalizationMaterial = null;\r\n\r\n\t\tthis.rtDepth = null;\r\n\t\tthis.rtAttribute = null;\r\n\t\tthis.gl = viewer.renderer.getContext();\r\n\r\n\t\tthis.initialized = false;\r\n\t}\r\n\r\n\tinit(){\r\n\t\tif (this.initialized) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.normalizationMaterial = new NormalizationMaterial();\r\n\t\tthis.normalizationMaterial.depthTest = true;\r\n\t\tthis.normalizationMaterial.depthWrite = true;\r\n\t\tthis.normalizationMaterial.transparent = true;\r\n\r\n\t\tthis.normalizationEDLMaterial = new NormalizationEDLMaterial();\r\n\t\tthis.normalizationEDLMaterial.depthTest = true;\r\n\t\tthis.normalizationEDLMaterial.depthWrite = true;\r\n\t\tthis.normalizationEDLMaterial.transparent = true;\r\n\r\n\t\tthis.rtDepth = new THREE.WebGLRenderTarget(1024, 1024, {\r\n\t\t\tminFilter: THREE.NearestFilter,\r\n\t\t\tmagFilter: THREE.NearestFilter,\r\n\t\t\tformat: THREE.RGBAFormat,\r\n\t\t\ttype: THREE.FloatType,\r\n\t\t\tdepthTexture: new THREE.DepthTexture(undefined, undefined, THREE.UnsignedIntType)\r\n\t\t});\r\n\r\n\t\tthis.rtAttribute = new THREE.WebGLRenderTarget(1024, 1024, {\r\n\t\t\tminFilter: THREE.NearestFilter,\r\n\t\t\tmagFilter: THREE.NearestFilter,\r\n\t\t\tformat: THREE.RGBAFormat,\r\n\t\t\ttype: THREE.FloatType,\r\n\t\t\tdepthTexture: this.rtDepth.depthTexture,\r\n\t\t});\r\n\r\n\t\tthis.initialized = true;\r\n\t};\r\n\r\n\tresize(width, height){\r\n\t\tthis.rtDepth.setSize(width, height);\r\n\t\tthis.rtAttribute.setSize(width, height);\r\n\t}\r\n\r\n\tclearTargets(){\r\n\t\tconst viewer = this.viewer;\r\n\t\tconst {renderer} = viewer;\r\n\r\n\t\tconst oldTarget = renderer.getRenderTarget();\r\n\r\n\t\trenderer.setClearColor(0x000000, 0);\r\n\r\n\t\trenderer.setRenderTarget( this.rtDepth );\r\n\t\trenderer.clear( true, true, true );\r\n\r\n\t\trenderer.setRenderTarget( this.rtAttribute );\r\n\t\trenderer.clear( true, true, true );\r\n\r\n\t\trenderer.setRenderTarget(oldTarget);\r\n\t}\r\n\r\n\r\n\tclear(){\r\n\t\tthis.init();\r\n\r\n\t\tconst {renderer, background} = this.viewer;\r\n\r\n\t\tif(background === \"skybox\"){\r\n\t\t\trenderer.setClearColor(0x000000, 0);\r\n\t\t} else if (background === 'gradient') {\r\n\t\t\trenderer.setClearColor(0x000000, 0);\r\n\t\t} else if (background === 'black') {\r\n\t\t\trenderer.setClearColor(0x000000, 1);\r\n\t\t} else if (background === 'white') {\r\n\t\t\trenderer.setClearColor(0xFFFFFF, 1);\r\n\t\t} else {\r\n\t\t\trenderer.setClearColor(0x000000, 0);\r\n\t\t}\r\n\r\n\t\trenderer.clear();\r\n\r\n\t\tthis.clearTargets();\r\n\t}\r\n\r\n\trender (params) {\r\n\t\tthis.init();\r\n\r\n\t\tconst viewer = this.viewer;\r\n\t\tconst camera = params.camera ? params.camera : viewer.scene.getActiveCamera();\r\n\t\tconst {width, height} = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\r\n\t\tviewer.dispatchEvent({type: \"render.pass.begin\",viewer: viewer});\r\n\r\n\t\tthis.resize(width, height);\r\n\r\n\t\tconst visiblePointClouds = viewer.scene.pointclouds.filter(pc => pc.visible);\r\n\t\tconst originalMaterials = new Map();\r\n\r\n\t\tfor(let pointcloud of visiblePointClouds){\r\n\t\t\toriginalMaterials.set(pointcloud, pointcloud.material);\r\n\r\n\t\t\tif(!this.attributeMaterials.has(pointcloud)){\r\n\t\t\t\tlet attributeMaterial = new PointCloudMaterial();\r\n\t\t\t\tthis.attributeMaterials.set(pointcloud, attributeMaterial);\r\n\t\t\t}\r\n\r\n\t\t\tif(!this.depthMaterials.has(pointcloud)){\r\n\t\t\t\tlet depthMaterial = new PointCloudMaterial();\r\n\r\n\t\t\t\tdepthMaterial.setDefine(\"depth_pass\", \"#define hq_depth_pass\");\r\n\t\t\t\tdepthMaterial.setDefine(\"use_edl\", \"#define use_edl\");\r\n\r\n\t\t\t\tthis.depthMaterials.set(pointcloud, depthMaterial);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // DEPTH PASS\r\n\t\t\tfor (let pointcloud of visiblePointClouds) {\r\n\t\t\t\tlet octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\r\n\r\n\t\t\t\tlet material = originalMaterials.get(pointcloud);\r\n\t\t\t\tlet depthMaterial = this.depthMaterials.get(pointcloud);\r\n\r\n\t\t\t\tdepthMaterial.size = material.size;\r\n\t\t\t\tdepthMaterial.minSize = material.minSize;\r\n\t\t\t\tdepthMaterial.maxSize = material.maxSize;\r\n\r\n\t\t\t\tdepthMaterial.pointSizeType = material.pointSizeType;\r\n\t\t\t\tdepthMaterial.visibleNodesTexture = material.visibleNodesTexture;\r\n\t\t\t\tdepthMaterial.weighted = false;\r\n\t\t\t\tdepthMaterial.screenWidth = width;\r\n\t\t\t\tdepthMaterial.shape = PointShape.CIRCLE;\r\n\t\t\t\tdepthMaterial.screenHeight = height;\r\n\t\t\t\tdepthMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture;\r\n\t\t\t\tdepthMaterial.uniforms.octreeSize.value = octreeSize;\r\n\t\t\t\tdepthMaterial.spacing = pointcloud.pcoGeometry.spacing; // * Math.max(...pointcloud.scale.toArray());\r\n\t\t\t\tdepthMaterial.classification = material.classification;\r\n\t\t\t\tdepthMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data;\r\n\t\t\t\tdepthMaterial.classificationTexture.needsUpdate = true;\r\n\r\n\t\t\t\tdepthMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value;\r\n\t\t\t\tdepthMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value;\r\n\t\t\t\tdepthMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value;\r\n\t\t\t\tdepthMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value;\r\n\r\n\t\t\t\tdepthMaterial.clipTask = material.clipTask;\r\n\t\t\t\tdepthMaterial.clipMethod = material.clipMethod;\r\n\t\t\t\tdepthMaterial.setClipBoxes(material.clipBoxes);\r\n\t\t\t\tdepthMaterial.setClipPolygons(material.clipPolygons);\r\n\r\n\t\t\t\tpointcloud.material = depthMaterial;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtDepth, {\r\n\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t{ // ATTRIBUTE PASS\r\n\t\t\tfor (let pointcloud of visiblePointClouds) {\r\n\t\t\t\tlet octreeSize = pointcloud.pcoGeometry.boundingBox.getSize(new THREE.Vector3()).x;\r\n\r\n\t\t\t\tlet material = originalMaterials.get(pointcloud);\r\n\t\t\t\tlet attributeMaterial = this.attributeMaterials.get(pointcloud);\r\n\r\n\t\t\t\tattributeMaterial.size = material.size;\r\n\t\t\t\tattributeMaterial.minSize = material.minSize;\r\n\t\t\t\tattributeMaterial.maxSize = material.maxSize;\r\n\r\n\t\t\t\tattributeMaterial.pointSizeType = material.pointSizeType;\r\n\t\t\t\tattributeMaterial.activeAttributeName = material.activeAttributeName;\r\n\t\t\t\tattributeMaterial.visibleNodesTexture = material.visibleNodesTexture;\r\n\t\t\t\tattributeMaterial.weighted = true;\r\n\t\t\t\tattributeMaterial.screenWidth = width;\r\n\t\t\t\tattributeMaterial.screenHeight = height;\r\n\t\t\t\tattributeMaterial.shape = PointShape.CIRCLE;\r\n\t\t\t\tattributeMaterial.uniforms.visibleNodes.value = material.visibleNodesTexture;\r\n\t\t\t\tattributeMaterial.uniforms.octreeSize.value = octreeSize;\r\n\t\t\t\tattributeMaterial.spacing = pointcloud.pcoGeometry.spacing; // * Math.max(...pointcloud.scale.toArray());\r\n\t\t\t\tattributeMaterial.classification = material.classification;\r\n\t\t\t\tattributeMaterial.uniforms.classificationLUT.value.image.data = material.uniforms.classificationLUT.value.image.data;\r\n\t\t\t\tattributeMaterial.classificationTexture.needsUpdate = true;\r\n\r\n\t\t\t\tattributeMaterial.uniforms.uFilterReturnNumberRange.value = material.uniforms.uFilterReturnNumberRange.value;\r\n\t\t\t\tattributeMaterial.uniforms.uFilterNumberOfReturnsRange.value = material.uniforms.uFilterNumberOfReturnsRange.value;\r\n\t\t\t\tattributeMaterial.uniforms.uFilterGPSTimeClipRange.value = material.uniforms.uFilterGPSTimeClipRange.value;\r\n\t\t\t\tattributeMaterial.uniforms.uFilterPointSourceIDClipRange.value = material.uniforms.uFilterPointSourceIDClipRange.value;\r\n\r\n\t\t\t\tattributeMaterial.elevationGradientRepeat = material.elevationGradientRepeat;\r\n\t\t\t\tattributeMaterial.elevationRange = material.elevationRange;\r\n\t\t\t\tattributeMaterial.gradient = material.gradient;\r\n\t\t\t\tattributeMaterial.matcap = material.matcap;\r\n\r\n\t\t\t\tattributeMaterial.intensityRange = material.intensityRange;\r\n\t\t\t\tattributeMaterial.intensityGamma = material.intensityGamma;\r\n\t\t\t\tattributeMaterial.intensityContrast = material.intensityContrast;\r\n\t\t\t\tattributeMaterial.intensityBrightness = material.intensityBrightness;\r\n\r\n\t\t\t\tattributeMaterial.rgbGamma = material.rgbGamma;\r\n\t\t\t\tattributeMaterial.rgbContrast = material.rgbContrast;\r\n\t\t\t\tattributeMaterial.rgbBrightness = material.rgbBrightness;\r\n\r\n\t\t\t\tattributeMaterial.weightRGB = material.weightRGB;\r\n\t\t\t\tattributeMaterial.weightIntensity = material.weightIntensity;\r\n\t\t\t\tattributeMaterial.weightElevation = material.weightElevation;\r\n\t\t\t\tattributeMaterial.weightRGB = material.weightRGB;\r\n\t\t\t\tattributeMaterial.weightClassification = material.weightClassification;\r\n\t\t\t\tattributeMaterial.weightReturnNumber = material.weightReturnNumber;\r\n\t\t\t\tattributeMaterial.weightSourceID = material.weightSourceID;\r\n\r\n\t\t\t\tattributeMaterial.color = material.color;\r\n\r\n\t\t\t\tattributeMaterial.clipTask = material.clipTask;\r\n\t\t\t\tattributeMaterial.clipMethod = material.clipMethod;\r\n\t\t\t\tattributeMaterial.setClipBoxes(material.clipBoxes);\r\n\t\t\t\tattributeMaterial.setClipPolygons(material.clipPolygons);\r\n\r\n\t\t\t\tpointcloud.material = attributeMaterial;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tlet gl = this.gl;\r\n\r\n\t\t\tviewer.renderer.setRenderTarget(null);\r\n\t\t\tviewer.pRenderer.render(viewer.scene.scenePointCloud, camera, this.rtAttribute, {\r\n\t\t\t\tclipSpheres: viewer.scene.volumes.filter(v => (v instanceof SphereVolume)),\r\n\t\t\t\t//material: this.attributeMaterial,\r\n\t\t\t\tblendFunc: [gl.SRC_ALPHA, gl.ONE],\r\n\t\t\t\t//depthTest: false,\r\n\t\t\t\tdepthWrite: false\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfor(let [pointcloud, material] of originalMaterials){\r\n\t\t\tpointcloud.material = material;\r\n\t\t}\r\n\r\n\t\tviewer.renderer.setRenderTarget(null);\r\n\t\tif(viewer.background === \"skybox\"){\r\n\t\t\tviewer.renderer.setClearColor(0x000000, 0);\r\n\t\t\tviewer.renderer.clear();\r\n\t\t\tviewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);\r\n\t\t\tviewer.skybox.camera.fov = viewer.scene.cameraP.fov;\r\n\t\t\tviewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;\r\n\t\t\t\r\n\t\t\tviewer.skybox.parent.rotation.x = 0;\r\n\t\t\tviewer.skybox.parent.updateMatrixWorld();\r\n\r\n\t\t\tviewer.skybox.camera.updateProjectionMatrix();\r\n\t\t\tviewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera);\r\n\t\t} else if (viewer.background === 'gradient') {\r\n\t\t\tviewer.renderer.setClearColor(0x000000, 0);\r\n\t\t\tviewer.renderer.clear();\r\n\t\t\tviewer.renderer.render(viewer.scene.sceneBG, viewer.scene.cameraBG);\r\n\t\t} else if (viewer.background === 'black') {\r\n\t\t\tviewer.renderer.setClearColor(0x000000, 1);\r\n\t\t\tviewer.renderer.clear();\r\n\t\t} else if (viewer.background === 'white') {\r\n\t\t\tviewer.renderer.setClearColor(0xFFFFFF, 1);\r\n\t\t\tviewer.renderer.clear();\r\n\t\t} else {\r\n\t\t\tviewer.renderer.setClearColor(0x000000, 0);\r\n\t\t\tviewer.renderer.clear();\r\n\t\t}\r\n\r\n\t\t{ // NORMALIZATION PASS\r\n\t\t\tlet normalizationMaterial = this.useEDL ? this.normalizationEDLMaterial : this.normalizationMaterial;\r\n\r\n\t\t\tif(this.useEDL){\r\n\t\t\t\tnormalizationMaterial.uniforms.edlStrength.value = viewer.edlStrength;\r\n\t\t\t\tnormalizationMaterial.uniforms.radius.value = viewer.edlRadius;\r\n\t\t\t\tnormalizationMaterial.uniforms.screenWidth.value = width;\r\n\t\t\t\tnormalizationMaterial.uniforms.screenHeight.value = height;\r\n\t\t\t\tnormalizationMaterial.uniforms.uEDLMap.value = this.rtDepth.texture;\r\n\t\t\t}\r\n\r\n\t\t\tnormalizationMaterial.uniforms.uWeightMap.value = this.rtAttribute.texture;\r\n\t\t\tnormalizationMaterial.uniforms.uDepthMap.value = this.rtAttribute.depthTexture;\r\n\t\t\t\r\n\t\t\tUtils.screenPass.render(viewer.renderer, normalizationMaterial);\r\n\t\t}\r\n\r\n\t\tviewer.renderer.render(viewer.scene.scene, camera);\r\n\r\n\t\tviewer.dispatchEvent({type: \"render.pass.scene\", viewer: viewer});\r\n\r\n\t\tviewer.renderer.clearDepth();\r\n\r\n\t\tviewer.transformationTool.update();\r\n\r\n\t\tviewer.dispatchEvent({type: \"render.pass.perspective_overlay\",viewer: viewer});\r\n\r\n\t\tviewer.renderer.render(viewer.controls.sceneControls, camera);\r\n\t\tviewer.renderer.render(viewer.clippingTool.sceneVolume, camera);\r\n\t\tviewer.renderer.render(viewer.transformationTool.scene, camera);\r\n\r\n\t\tviewer.renderer.setViewport(width - viewer.navigationCube.width, \r\n\t\t\t\t\t\t\t\t\theight - viewer.navigationCube.width, \r\n\t\t\t\t\t\t\t\t\tviewer.navigationCube.width, viewer.navigationCube.width);\r\n\t\tviewer.renderer.render(viewer.navigationCube, viewer.navigationCube.camera);\t\t\r\n\t\tviewer.renderer.setViewport(0, 0, width, height);\r\n\t\t\r\n\t\tviewer.dispatchEvent({type: \"render.pass.end\",viewer: viewer});\r\n\r\n\t}\r\n\r\n}\r\n\r\n","import * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nexport class View{\r\n\tconstructor () {\r\n\t\tthis.position = new THREE.Vector3(0, 0, 0);\r\n\r\n\t\tthis.yaw = Math.PI / 4;\r\n\t\tthis._pitch = -Math.PI / 4;\r\n\t\tthis.radius = 1;\r\n\r\n\t\tthis.maxPitch = Math.PI / 2;\r\n\t\tthis.minPitch = -Math.PI / 2;\r\n\t}\r\n\r\n\tclone () {\r\n\t\tlet c = new View();\r\n\t\tc.yaw = this.yaw;\r\n\t\tc._pitch = this.pitch;\r\n\t\tc.radius = this.radius;\r\n\t\tc.maxPitch = this.maxPitch;\r\n\t\tc.minPitch = this.minPitch;\r\n\r\n\t\treturn c;\r\n\t}\r\n\r\n\tget pitch () {\r\n\t\treturn this._pitch;\r\n\t}\r\n\r\n\tset pitch (angle) {\r\n\t\tthis._pitch = Math.max(Math.min(angle, this.maxPitch), this.minPitch);\r\n\t}\r\n\r\n\tget direction () {\r\n\t\tlet dir = new THREE.Vector3(0, 1, 0);\r\n\r\n\t\tdir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch);\r\n\t\tdir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\r\n\r\n\t\treturn dir;\r\n\t}\r\n\r\n\tset direction (dir) {\r\n\r\n\t\t//if(dir.x === dir.y){\r\n\t\tif(dir.x === 0 && dir.y === 0){\r\n\t\t\tthis.pitch = Math.PI / 2 * Math.sign(dir.z);\r\n\t\t}else{\r\n\t\t\tlet yaw = Math.atan2(dir.y, dir.x) - Math.PI / 2;\r\n\t\t\tlet pitch = Math.atan2(dir.z, Math.sqrt(dir.x * dir.x + dir.y * dir.y));\r\n\r\n\t\t\tthis.yaw = yaw;\r\n\t\t\tthis.pitch = pitch;\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\tlookAt(t){\r\n\t\tlet V;\r\n\t\tif(arguments.length === 1){\r\n\t\t\tV = new THREE.Vector3().subVectors(t, this.position);\r\n\t\t}else if(arguments.length === 3){\r\n\t\t\tV = new THREE.Vector3().subVectors(new THREE.Vector3(...arguments), this.position);\r\n\t\t}\r\n\r\n\t\tlet radius = V.length();\r\n\t\tlet dir = V.normalize();\r\n\r\n\t\tthis.radius = radius;\r\n\t\tthis.direction = dir;\r\n\t}\r\n\r\n\tgetPivot () {\r\n\t\treturn new THREE.Vector3().addVectors(this.position, this.direction.multiplyScalar(this.radius));\r\n\t}\r\n\r\n\tgetSide () {\r\n\t\tlet side = new THREE.Vector3(1, 0, 0);\r\n\t\tside.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\r\n\r\n\t\treturn side;\r\n\t}\r\n\r\n\tpan (x, y) {\r\n\t\tlet dir = new THREE.Vector3(0, 1, 0);\r\n\t\tdir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch);\r\n\t\tdir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\r\n\r\n\t\t// let side = new THREE.Vector3(1, 0, 0);\r\n\t\t// side.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\r\n\r\n\t\tlet side = this.getSide();\r\n\r\n\t\tlet up = side.clone().cross(dir);\r\n\r\n\t\tlet pan = side.multiplyScalar(x).add(up.multiplyScalar(y));\r\n\r\n\t\tthis.position = this.position.add(pan);\r\n\t\t// this.target = this.target.add(pan);\r\n\t}\r\n\r\n\ttranslate (x, y, z) {\r\n\t\tlet dir = new THREE.Vector3(0, 1, 0);\r\n\t\tdir.applyAxisAngle(new THREE.Vector3(1, 0, 0), this.pitch);\r\n\t\tdir.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\r\n\r\n\t\tlet side = new THREE.Vector3(1, 0, 0);\r\n\t\tside.applyAxisAngle(new THREE.Vector3(0, 0, 1), this.yaw);\r\n\r\n\t\tlet up = side.clone().cross(dir);\r\n\r\n\t\tlet t = side.multiplyScalar(x)\r\n\t\t\t.add(dir.multiplyScalar(y))\r\n\t\t\t.add(up.multiplyScalar(z));\r\n\r\n\t\tthis.position = this.position.add(t);\r\n\t}\r\n\r\n\ttranslateWorld (x, y, z) {\r\n\t\tthis.position.x += x;\r\n\t\tthis.position.y += y;\r\n\t\tthis.position.z += z;\r\n\t}\r\n\r\n\tsetView(position, target, duration = 0, callback = null){\r\n\r\n\t\tlet endPosition = null;\r\n\t\tif(position instanceof Array){\r\n\t\t\tendPosition = new THREE.Vector3(...position);\r\n\t\t}else if(position.x != null){\r\n\t\t\tendPosition = position.clone();\r\n\t\t}\r\n\r\n\t\tlet endTarget = null;\r\n\t\tif(target instanceof Array){\r\n\t\t\tendTarget = new THREE.Vector3(...target);\r\n\t\t}else if(target.x != null){\r\n\t\t\tendTarget = target.clone();\r\n\t\t}\r\n\t\t\r\n\t\tconst startPosition = this.position.clone();\r\n\t\tconst startTarget = this.getPivot();\r\n\r\n\t\t//const endPosition = position.clone();\r\n\t\t//const endTarget = target.clone();\r\n\r\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\r\n\r\n\t\tif(duration === 0){\r\n\t\t\tthis.position.copy(endPosition);\r\n\t\t\tthis.lookAt(endTarget);\r\n\t\t}else{\r\n\t\t\tlet value = {x: 0};\r\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, duration);\r\n\t\t\ttween.easing(easing);\r\n\t\t\t//this.tweens.push(tween);\r\n\r\n\t\t\ttween.onUpdate(() => {\r\n\t\t\t\tlet t = value.x;\r\n\r\n\t\t\t\t//console.log(t);\r\n\r\n\t\t\t\tconst pos = new THREE.Vector3(\r\n\t\t\t\t\t(1 - t) * startPosition.x + t * endPosition.x,\r\n\t\t\t\t\t(1 - t) * startPosition.y + t * endPosition.y,\r\n\t\t\t\t\t(1 - t) * startPosition.z + t * endPosition.z,\r\n\t\t\t\t);\r\n\r\n\t\t\t\tconst target = new THREE.Vector3(\r\n\t\t\t\t\t(1 - t) * startTarget.x + t * endTarget.x,\r\n\t\t\t\t\t(1 - t) * startTarget.y + t * endTarget.y,\r\n\t\t\t\t\t(1 - t) * startTarget.z + t * endTarget.z,\r\n\t\t\t\t);\r\n\r\n\t\t\t\tthis.position.copy(pos);\r\n\t\t\t\tthis.lookAt(target);\r\n\r\n\t\t\t});\r\n\r\n\t\t\ttween.start();\r\n\r\n\t\t\ttween.onComplete(() => {\r\n\t\t\t\tif(callback){\r\n\t\t\t\t\tcallback();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Annotation} from \"../Annotation.js\";\r\nimport {CameraMode} from \"../defines.js\";\r\nimport {View} from \"./View.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {EventDispatcher} from \"../EventDispatcher.js\";\r\n\r\n\r\nexport class Scene extends EventDispatcher{\r\n\r\n\tconstructor(){\r\n\t\tsuper();\r\n\r\n\t\tthis.annotations = new Annotation();\r\n\t\t\r\n\t\tthis.scene = new THREE.Scene();\r\n\t\tthis.sceneBG = new THREE.Scene();\r\n\t\tthis.scenePointCloud = new THREE.Scene();\r\n\r\n\t\tthis.cameraP = new THREE.PerspectiveCamera(this.fov, 1, 0.1, 1000*1000);\r\n\t\tthis.cameraO = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 1000*1000);\r\n\t\tthis.cameraVR = new THREE.PerspectiveCamera();\r\n\t\tthis.cameraBG = new THREE.Camera();\r\n\t\tthis.cameraScreenSpace = new THREE.OrthographicCamera(-1, 1, 1, -1, 0.1, 10);\r\n\t\tthis.cameraMode = CameraMode.PERSPECTIVE;\r\n\t\tthis.overrideCamera = null;\r\n\t\tthis.pointclouds = [];\r\n\r\n\t\tthis.measurements = [];\r\n\t\tthis.profiles = [];\r\n\t\tthis.volumes = [];\r\n\t\tthis.polygonClipVolumes = [];\r\n\t\tthis.cameraAnimations = [];\r\n\t\tthis.orientedImages = [];\r\n\t\tthis.images360 = [];\r\n\t\tthis.geopackages = [];\r\n\t\t\r\n\t\tthis.fpControls = null;\r\n\t\tthis.orbitControls = null;\r\n\t\tthis.earthControls = null;\r\n\t\tthis.geoControls = null;\r\n\t\tthis.deviceControls = null;\r\n\t\tthis.inputHandler = null;\r\n\r\n\t\tthis.view = new View();\r\n\r\n\t\tthis.directionalLight = null;\r\n\r\n\t\tthis.initialize();\r\n\t}\r\n\r\n\testimateHeightAt (position) {\r\n\t\tlet height = null;\r\n\t\tlet fromSpacing = Infinity;\r\n\r\n\t\tfor (let pointcloud of this.pointclouds) {\r\n\t\t\tif (pointcloud.root.geometryNode === undefined) {\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet pHeight = null;\r\n\t\t\tlet pFromSpacing = Infinity;\r\n\r\n\t\t\tlet lpos = position.clone().sub(pointcloud.position);\r\n\t\t\tlpos.z = 0;\r\n\t\t\tlet ray = new THREE.Ray(lpos, new THREE.Vector3(0, 0, 1));\r\n\r\n\t\t\tlet stack = [pointcloud.root];\r\n\t\t\twhile (stack.length > 0) {\r\n\t\t\t\tlet node = stack.pop();\r\n\t\t\t\tlet box = node.getBoundingBox();\r\n\r\n\t\t\t\tlet inside = ray.intersectBox(box);\r\n\r\n\t\t\t\tif (!inside) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet h = node.geometryNode.mean.z +\r\n\t\t\t\t\tpointcloud.position.z +\r\n\t\t\t\t\tnode.geometryNode.boundingBox.min.z;\r\n\r\n\t\t\t\tif (node.geometryNode.spacing <= pFromSpacing) {\r\n\t\t\t\t\tpHeight = h;\r\n\t\t\t\t\tpFromSpacing = node.geometryNode.spacing;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor (let index of Object.keys(node.children)) {\r\n\t\t\t\t\tlet child = node.children[index];\r\n\t\t\t\t\tif (child.geometryNode) {\r\n\t\t\t\t\t\tstack.push(node.children[index]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (height === null || pFromSpacing < fromSpacing) {\r\n\t\t\t\theight = pHeight;\r\n\t\t\t\tfromSpacing = pFromSpacing;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn height;\r\n\t}\r\n\t\r\n\tgetBoundingBox(pointclouds = this.pointclouds){\r\n\t\tlet box = new THREE.Box3();\r\n\r\n\t\tthis.scenePointCloud.updateMatrixWorld(true);\r\n\t\tthis.referenceFrame.updateMatrixWorld(true);\r\n\r\n\t\tfor (let pointcloud of pointclouds) {\r\n\t\t\tpointcloud.updateMatrixWorld(true);\r\n\r\n\t\t\tlet pointcloudBox = pointcloud.pcoGeometry.tightBoundingBox ? pointcloud.pcoGeometry.tightBoundingBox : pointcloud.boundingBox;\r\n\t\t\tlet boxWorld = Utils.computeTransformedBoundingBox(pointcloudBox, pointcloud.matrixWorld);\r\n\t\t\tbox.union(boxWorld);\r\n\t\t}\r\n\r\n\t\treturn box;\r\n\t}\r\n\r\n\taddPointCloud (pointcloud) {\r\n\t\tthis.pointclouds.push(pointcloud);\r\n\t\tthis.scenePointCloud.add(pointcloud);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'pointcloud_added',\r\n\t\t\tpointcloud: pointcloud\r\n\t\t});\r\n\t}\r\n\r\n\taddVolume (volume) {\r\n\t\tthis.volumes.push(volume);\r\n\t\tthis.dispatchEvent({\r\n\t\t\t'type': 'volume_added',\r\n\t\t\t'scene': this,\r\n\t\t\t'volume': volume\r\n\t\t});\r\n\t}\r\n\r\n\taddOrientedImages(images){\r\n\t\tthis.orientedImages.push(images);\r\n\t\tthis.scene.add(images.node);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\t'type': 'oriented_images_added',\r\n\t\t\t'scene': this,\r\n\t\t\t'images': images\r\n\t\t});\r\n\t};\r\n\r\n\tremoveOrientedImages(images){\r\n\t\tlet index = this.orientedImages.indexOf(images);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.orientedImages.splice(index, 1);\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\t'type': 'oriented_images_removed',\r\n\t\t\t\t'scene': this,\r\n\t\t\t\t'images': images\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tadd360Images(images){\r\n\t\tthis.images360.push(images);\r\n\t\tthis.scene.add(images.node);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\t'type': '360_images_added',\r\n\t\t\t'scene': this,\r\n\t\t\t'images': images\r\n\t\t});\r\n\t}\r\n\r\n\tremove360Images(images){\r\n\t\tlet index = this.images360.indexOf(images);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.images360.splice(index, 1);\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\t'type': '360_images_removed',\r\n\t\t\t\t'scene': this,\r\n\t\t\t\t'images': images\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\taddGeopackage(geopackage){\r\n\t\tthis.geopackages.push(geopackage);\r\n\t\tthis.scene.add(geopackage.node);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\t'type': 'geopackage_added',\r\n\t\t\t'scene': this,\r\n\t\t\t'geopackage': geopackage\r\n\t\t});\r\n\t};\r\n\r\n\tremoveGeopackage(geopackage){\r\n\t\tlet index = this.geopackages.indexOf(geopackage);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.geopackages.splice(index, 1);\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\t'type': 'geopackage_removed',\r\n\t\t\t\t'scene': this,\r\n\t\t\t\t'geopackage': geopackage\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\tremoveVolume (volume) {\r\n\t\tlet index = this.volumes.indexOf(volume);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.volumes.splice(index, 1);\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\t'type': 'volume_removed',\r\n\t\t\t\t'scene': this,\r\n\t\t\t\t'volume': volume\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\taddCameraAnimation(animation) {\r\n\t\tthis.cameraAnimations.push(animation);\r\n\t\tthis.dispatchEvent({\r\n\t\t\t'type': 'camera_animation_added',\r\n\t\t\t'scene': this,\r\n\t\t\t'animation': animation\r\n\t\t});\r\n\t};\r\n\r\n\tremoveCameraAnimation(animation){\r\n\t\tlet index = this.cameraAnimations.indexOf(volume);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.cameraAnimations.splice(index, 1);\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\t'type': 'camera_animation_removed',\r\n\t\t\t\t'scene': this,\r\n\t\t\t\t'animation': animation\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\r\n\taddPolygonClipVolume(volume){\r\n\t\tthis.polygonClipVolumes.push(volume);\r\n\t\tthis.dispatchEvent({\r\n\t\t\t\"type\": \"polygon_clip_volume_added\",\r\n\t\t\t\"scene\": this,\r\n\t\t\t\"volume\": volume\r\n\t\t});\r\n\t};\r\n\t\r\n\tremovePolygonClipVolume(volume){\r\n\t\tlet index = this.polygonClipVolumes.indexOf(volume);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.polygonClipVolumes.splice(index, 1);\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\t\"type\": \"polygon_clip_volume_removed\",\r\n\t\t\t\t\"scene\": this,\r\n\t\t\t\t\"volume\": volume\r\n\t\t\t});\r\n\t\t}\r\n\t};\r\n\t\r\n\taddMeasurement(measurement){\r\n\t\tmeasurement.lengthUnit = this.lengthUnit;\r\n\t\tmeasurement.lengthUnitDisplay = this.lengthUnitDisplay;\r\n\t\tthis.measurements.push(measurement);\r\n\t\tthis.dispatchEvent({\r\n\t\t\t'type': 'measurement_added',\r\n\t\t\t'scene': this,\r\n\t\t\t'measurement': measurement\r\n\t\t});\r\n\t};\r\n\r\n\tremoveMeasurement (measurement) {\r\n\t\tlet index = this.measurements.indexOf(measurement);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.measurements.splice(index, 1);\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\t'type': 'measurement_removed',\r\n\t\t\t\t'scene': this,\r\n\t\t\t\t'measurement': measurement\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\taddProfile (profile) {\r\n\t\tthis.profiles.push(profile);\r\n\t\tthis.dispatchEvent({\r\n\t\t\t'type': 'profile_added',\r\n\t\t\t'scene': this,\r\n\t\t\t'profile': profile\r\n\t\t});\r\n\t}\r\n\r\n\tremoveProfile (profile) {\r\n\t\tlet index = this.profiles.indexOf(profile);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.profiles.splice(index, 1);\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\t'type': 'profile_removed',\r\n\t\t\t\t'scene': this,\r\n\t\t\t\t'profile': profile\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tremoveAllMeasurements () {\r\n\t\twhile (this.measurements.length > 0) {\r\n\t\t\tthis.removeMeasurement(this.measurements[0]);\r\n\t\t}\r\n\r\n\t\twhile (this.profiles.length > 0) {\r\n\t\t\tthis.removeProfile(this.profiles[0]);\r\n\t\t}\r\n\r\n\t\twhile (this.volumes.length > 0) {\r\n\t\t\tthis.removeVolume(this.volumes[0]);\r\n\t\t}\r\n\t}\r\n\r\n\tremoveAllClipVolumes(){\r\n\t\tlet clipVolumes = this.volumes.filter(volume => volume.clip === true);\r\n\t\tfor(let clipVolume of clipVolumes){\r\n\t\t\tthis.removeVolume(clipVolume);\r\n\t\t}\r\n\r\n\t\twhile(this.polygonClipVolumes.length > 0){\r\n\t\t\tthis.removePolygonClipVolume(this.polygonClipVolumes[0]);\r\n\t\t}\r\n\t}\r\n\r\n\tgetActiveCamera() {\r\n\r\n\t\tif(this.overrideCamera){\r\n\t\t\treturn this.overrideCamera;\r\n\t\t}\r\n\r\n\t\tif(this.cameraMode === CameraMode.PERSPECTIVE){\r\n\t\t\treturn this.cameraP;\r\n\t\t}else if(this.cameraMode === CameraMode.ORTHOGRAPHIC){\r\n\t\t\treturn this.cameraO;\r\n\t\t}else if(this.cameraMode === CameraMode.VR){\r\n\t\t\treturn this.cameraVR;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n\t\r\n\tinitialize(){\r\n\t\t\r\n\t\tthis.referenceFrame = new THREE.Object3D();\r\n\t\tthis.referenceFrame.matrixAutoUpdate = false;\r\n\t\tthis.scenePointCloud.add(this.referenceFrame);\r\n\r\n\t\tthis.cameraP.up.set(0, 0, 1);\r\n\t\tthis.cameraP.position.set(1000, 1000, 1000);\r\n\t\tthis.cameraO.up.set(0, 0, 1);\r\n\t\tthis.cameraO.position.set(1000, 1000, 1000);\r\n\t\t//this.camera.rotation.y = -Math.PI / 4;\r\n\t\t//this.camera.rotation.x = -Math.PI / 6;\r\n\t\tthis.cameraScreenSpace.lookAt(new THREE.Vector3(0, 0, 0), new THREE.Vector3(0, 0, -1), new THREE.Vector3(0, 1, 0));\r\n\t\t\r\n\t\tthis.directionalLight = new THREE.DirectionalLight( 0xffffff, 0.5 );\r\n\t\tthis.directionalLight.position.set( 10, 10, 10 );\r\n\t\tthis.directionalLight.lookAt( new THREE.Vector3(0, 0, 0));\r\n\t\tthis.scenePointCloud.add( this.directionalLight );\r\n\t\t\r\n\t\tlet light = new THREE.AmbientLight( 0x555555 ); // soft white light\r\n\t\tthis.scenePointCloud.add( light );\r\n\r\n\t\t{ // background\r\n\t\t\tlet texture = Utils.createBackgroundTexture(512, 512);\r\n\r\n\t\t\ttexture.minFilter = texture.magFilter = THREE.NearestFilter;\r\n\t\t\ttexture.minFilter = texture.magFilter = THREE.LinearFilter;\r\n\t\t\tlet bg = new THREE.Mesh(\r\n\t\t\t\tnew THREE.PlaneBufferGeometry(2, 2, 1),\r\n\t\t\t\tnew THREE.MeshBasicMaterial({\r\n\t\t\t\t\tmap: texture\r\n\t\t\t\t})\r\n\t\t\t);\r\n\t\t\tbg.material.depthTest = false;\r\n\t\t\tbg.material.depthWrite = false;\r\n\t\t\tthis.sceneBG.add(bg);\r\n\t\t}\r\n\r\n\t\t// { // lights\r\n\t\t// \t{\r\n\t\t// \t\tlet light = new THREE.DirectionalLight(0xffffff);\r\n\t\t// \t\tlight.position.set(10, 10, 1);\r\n\t\t// \t\tlight.target.position.set(0, 0, 0);\r\n\t\t// \t\tthis.scene.add(light);\r\n\t\t// \t}\r\n\r\n\t\t// \t{\r\n\t\t// \t\tlet light = new THREE.DirectionalLight(0xffffff);\r\n\t\t// \t\tlight.position.set(-10, 10, 1);\r\n\t\t// \t\tlight.target.position.set(0, 0, 0);\r\n\t\t// \t\tthis.scene.add(light);\r\n\t\t// \t}\r\n\r\n\t\t// \t{\r\n\t\t// \t\tlet light = new THREE.DirectionalLight(0xffffff);\r\n\t\t// \t\tlight.position.set(0, -10, 20);\r\n\t\t// \t\tlight.target.position.set(0, 0, 0);\r\n\t\t// \t\tthis.scene.add(light);\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\t\r\n\taddAnnotation(position, args = {}){\t\t\r\n\t\tif(position instanceof Array){\r\n\t\t\targs.position = new THREE.Vector3().fromArray(position);\r\n\t\t} else if (position.x != null) {\r\n\t\t\targs.position = position;\r\n\t\t}\r\n\t\tlet annotation = new Annotation(args);\r\n\t\tthis.annotations.add(annotation);\r\n\r\n\t\treturn annotation;\r\n\t}\r\n\r\n\tgetAnnotations () {\r\n\t\treturn this.annotations;\r\n\t};\r\n\r\n\tremoveAnnotation(annotationToRemove) {\r\n\t\tthis.annotations.remove(annotationToRemove);\r\n\t}\r\n};\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\n// http://epsg.io/\r\nproj4.defs([\r\n\t['UTM10N', '+proj=utm +zone=10 +ellps=GRS80 +datum=NAD83 +units=m +no_defs'],\r\n\t['EPSG:6339', '+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:6340', '+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:6341', '+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:6342', '+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:6343', '+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:6344', '+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:6345', '+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:6346', '+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:6347', '+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:6348', '+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs'],\r\n\t['EPSG:26910', '+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n\t['EPSG:26911', '+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n\t['EPSG:26912', '+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n\t['EPSG:26913', '+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n\t['EPSG:26914', '+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n\t['EPSG:26915', '+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n\t['EPSG:26916', '+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n\t['EPSG:26917', '+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n\t['EPSG:26918', '+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n\t['EPSG:26919', '+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs '],\r\n]);\r\n\r\nexport class MapView{\r\n\r\n\tconstructor (viewer) {\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.webMapService = 'WMTS';\r\n\t\tthis.mapProjectionName = 'EPSG:3857';\r\n\t\tthis.mapProjection = proj4.defs(this.mapProjectionName);\r\n\t\tthis.sceneProjection = null;\r\n\r\n\t\tthis.extentsLayer = null;\r\n\t\tthis.cameraLayer = null;\r\n\t\tthis.toolLayer = null;\r\n\t\tthis.sourcesLayer = null;\r\n\t\tthis.sourcesLabelLayer = null;\r\n\t\tthis.images360Layer = null;\r\n\t\tthis.enabled = false;\r\n\r\n\t\tthis.createAnnotationStyle = (text) => {\r\n\t\t\treturn [\r\n\t\t\t\tnew ol.style.Style({\r\n\t\t\t\t\timage: new ol.style.Circle({\r\n\t\t\t\t\t\tradius: 10,\r\n\t\t\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\t\t\tcolor: [255, 255, 255, 0.5],\r\n\t\t\t\t\t\t\twidth: 2\r\n\t\t\t\t\t\t}),\r\n\t\t\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\t\t\tcolor: [0, 0, 0, 0.5]\r\n\t\t\t\t\t\t})\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t];\r\n\t\t};\r\n\r\n\t\tthis.createLabelStyle = (text) => {\r\n\t\t\tlet style = new ol.style.Style({\r\n\t\t\t\timage: new ol.style.Circle({\r\n\t\t\t\t\tradius: 6,\r\n\t\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\t\tcolor: 'white',\r\n\t\t\t\t\t\twidth: 2\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\t\tcolor: 'green'\r\n\t\t\t\t\t})\r\n\t\t\t\t}),\r\n\t\t\t\ttext: new ol.style.Text({\r\n\t\t\t\t\tfont: '12px helvetica,sans-serif',\r\n\t\t\t\t\ttext: text,\r\n\t\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\t\tcolor: '#000'\r\n\t\t\t\t\t}),\r\n\t\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\t\tcolor: '#fff',\r\n\t\t\t\t\t\twidth: 2\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t});\r\n\r\n\t\t\treturn style;\r\n\t\t};\r\n\t}\r\n\r\n\tshowSources (show) {\r\n\t\tthis.sourcesLayer.setVisible(show);\r\n\t\tthis.sourcesLabelLayer.setVisible(show);\r\n\t}\r\n\r\n\tinit () {\r\n\r\n\t\tif(typeof ol === \"undefined\"){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.elMap = $('#potree_map');\r\n\t\tthis.elMap.draggable({ handle: $('#potree_map_header') });\r\n\t\tthis.elMap.resizable();\r\n\r\n\t\tthis.elTooltip = $(`
`);\r\n\t\tthis.elMap.append(this.elTooltip);\r\n\r\n\t\tlet extentsLayer = this.getExtentsLayer();\r\n\t\tlet cameraLayer = this.getCameraLayer();\r\n\t\tthis.getToolLayer();\r\n\t\tlet sourcesLayer = this.getSourcesLayer();\r\n\t\tthis.images360Layer = this.getImages360Layer();\r\n\t\tthis.getSourcesLabelLayer();\r\n\t\tthis.getAnnotationsLayer();\r\n\r\n\t\tlet mousePositionControl = new ol.control.MousePosition({\r\n\t\t\tcoordinateFormat: ol.coordinate.createStringXY(5),\r\n\t\t\tprojection: 'EPSG:4326',\r\n\t\t\tundefinedHTML: ' '\r\n\t\t});\r\n\r\n\t\tlet _this = this;\r\n\t\tlet DownloadSelectionControl = function (optOptions) {\r\n\t\t\tlet options = optOptions || {};\r\n\r\n\t\t\t// TOGGLE TILES\r\n\t\t\tlet btToggleTiles = document.createElement('button');\r\n\t\t\tbtToggleTiles.innerHTML = 'T';\r\n\t\t\tbtToggleTiles.addEventListener('click', () => {\r\n\t\t\t\tlet visible = sourcesLayer.getVisible();\r\n\t\t\t\t_this.showSources(!visible);\r\n\t\t\t}, false);\r\n\t\t\tbtToggleTiles.style.float = 'left';\r\n\t\t\tbtToggleTiles.title = 'show / hide tiles';\r\n\r\n\t\t\t// DOWNLOAD SELECTED TILES\r\n\t\t\tlet link = document.createElement('a');\r\n\t\t\tlink.href = '#';\r\n\t\t\tlink.download = 'list.txt';\r\n\t\t\tlink.style.float = 'left';\r\n\r\n\t\t\tlet button = document.createElement('button');\r\n\t\t\tbutton.innerHTML = 'D';\r\n\t\t\tlink.appendChild(button);\r\n\r\n\t\t\tlet handleDownload = (e) => {\r\n\t\t\t\tlet features = selectedFeatures.getArray();\r\n\r\n\t\t\t\tlet url = [document.location.protocol, '//', document.location.host, document.location.pathname].join('');\r\n\r\n\t\t\t\tif (features.length === 0) {\r\n\t\t\t\t\talert('No tiles were selected. Select area with ctrl + left mouse button!');\r\n\t\t\t\t\te.preventDefault();\r\n\t\t\t\t\te.stopImmediatePropagation();\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t} else if (features.length === 1) {\r\n\t\t\t\t\tlet feature = features[0];\r\n\r\n\t\t\t\t\tif (feature.source) {\r\n\t\t\t\t\t\tlet cloudjsurl = feature.pointcloud.pcoGeometry.url;\r\n\t\t\t\t\t\tlet sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name);\r\n\t\t\t\t\t\tlink.href = sourceurl.href;\r\n\t\t\t\t\t\tlink.download = feature.source.name;\r\n\t\t\t\t\t}\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet content = '';\r\n\t\t\t\t\tfor (let i = 0; i < features.length; i++) {\r\n\t\t\t\t\t\tlet feature = features[i];\r\n\r\n\t\t\t\t\t\tif (feature.source) {\r\n\t\t\t\t\t\t\tlet cloudjsurl = feature.pointcloud.pcoGeometry.url;\r\n\t\t\t\t\t\t\tlet sourceurl = new URL(url + '/../' + cloudjsurl + '/../source/' + feature.source.name);\r\n\t\t\t\t\t\t\tcontent += sourceurl.href + '\\n';\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet uri = 'data:application/octet-stream;base64,' + btoa(content);\r\n\t\t\t\t\tlink.href = uri;\r\n\t\t\t\t\tlink.download = 'list_of_files.txt';\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tbutton.addEventListener('click', handleDownload, false);\r\n\r\n\t\t\t// assemble container\r\n\t\t\tlet element = document.createElement('div');\r\n\t\t\telement.className = 'ol-unselectable ol-control';\r\n\t\t\telement.appendChild(link);\r\n\t\t\telement.appendChild(btToggleTiles);\r\n\t\t\telement.style.bottom = '0.5em';\r\n\t\t\telement.style.left = '0.5em';\r\n\t\t\telement.title = 'Download file or list of selected tiles. Select tile with left mouse button or area using ctrl + left mouse.';\r\n\r\n\t\t\tol.control.Control.call(this, {\r\n\t\t\t\telement: element,\r\n\t\t\t\ttarget: options.target\r\n\t\t\t});\r\n\t\t};\r\n\t\tol.inherits(DownloadSelectionControl, ol.control.Control);\r\n\r\n\t\tthis.map = new ol.Map({\r\n\t\t\tcontrols: ol.control.defaults({\r\n\t\t\t\tattributionOptions: ({\r\n\t\t\t\t\tcollapsible: false\r\n\t\t\t\t})\r\n\t\t\t}).extend([\r\n\t\t\t\t// this.controls.zoomToExtent,\r\n\t\t\t\tnew DownloadSelectionControl(),\r\n\t\t\t\tmousePositionControl\r\n\t\t\t]),\r\n\t\t\tlayers: [\r\n\t\t\t\tnew ol.layer.Tile({source: new ol.source.OSM()}),\r\n\t\t\t\tthis.toolLayer,\r\n\t\t\t\tthis.annotationsLayer,\r\n\t\t\t\tthis.sourcesLayer,\r\n\t\t\t\tthis.sourcesLabelLayer,\r\n\t\t\t\tthis.images360Layer,\r\n\t\t\t\textentsLayer,\r\n\t\t\t\tcameraLayer\r\n\t\t\t],\r\n\t\t\ttarget: 'potree_map_content',\r\n\t\t\tview: new ol.View({\r\n\t\t\t\tcenter: this.olCenter,\r\n\t\t\t\tzoom: 9\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t\t// DRAGBOX / SELECTION\r\n\t\tthis.dragBoxLayer = new ol.layer.Vector({\r\n\t\t\tsource: new ol.source.Vector({}),\r\n\t\t\tstyle: new ol.style.Style({\r\n\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\tcolor: 'rgba(0, 0, 255, 1)',\r\n\t\t\t\t\twidth: 2\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t});\r\n\t\tthis.map.addLayer(this.dragBoxLayer);\r\n\r\n\t\tlet select = new ol.interaction.Select();\r\n\t\tthis.map.addInteraction(select);\r\n\r\n\t\tlet selectedFeatures = select.getFeatures();\r\n\r\n\t\tlet dragBox = new ol.interaction.DragBox({\r\n\t\t\tcondition: ol.events.condition.platformModifierKeyOnly\r\n\t\t});\r\n\r\n\t\tthis.map.addInteraction(dragBox);\r\n\r\n\t\t// this.map.on('pointermove', evt => {\r\n\t\t// \tlet pixel = evt.pixel;\r\n\t\t// \tlet feature = this.map.forEachFeatureAtPixel(pixel, function (feature) {\r\n\t\t// \t\treturn feature;\r\n\t\t// \t});\r\n\r\n\t\t// \t// console.log(feature);\r\n\t\t// \t// this.elTooltip.css(\"display\", feature ? '' : 'none');\r\n\t\t// \tthis.elTooltip.css('display', 'none');\r\n\t\t// \tif (feature && feature.onHover) {\r\n\t\t// \t\tfeature.onHover(evt);\r\n\t\t// \t\t// overlay.setPosition(evt.coordinate);\r\n\t\t// \t\t// tooltip.innerHTML = feature.get('name');\r\n\t\t// \t}\r\n\t\t// });\r\n\r\n\t\tthis.map.on('click', evt => {\r\n\t\t\tlet pixel = evt.pixel;\r\n\t\t\tlet feature = this.map.forEachFeatureAtPixel(pixel, function (feature) {\r\n\t\t\t\treturn feature;\r\n\t\t\t});\r\n\r\n\t\t\tif (feature && feature.onClick) {\r\n\t\t\t\tfeature.onClick(evt);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tdragBox.on('boxend', (e) => {\r\n\t\t\t// features that intersect the box are added to the collection of\r\n\t\t\t// selected features, and their names are displayed in the \"info\"\r\n\t\t\t// div\r\n\t\t\tlet extent = dragBox.getGeometry().getExtent();\r\n\t\t\tthis.getSourcesLayer().getSource().forEachFeatureIntersectingExtent(extent, (feature) => {\r\n\t\t\t\tselectedFeatures.push(feature);\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\t// clear selection when drawing a new box and when clicking on the map\r\n\t\tdragBox.on('boxstart', (e) => {\r\n\t\t\tselectedFeatures.clear();\r\n\t\t});\r\n\t\tthis.map.on('click', () => {\r\n\t\t\tselectedFeatures.clear();\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener('scene_changed', e => {\r\n\t\t\tthis.setScene(e.scene);\r\n\t\t});\r\n\r\n\t\tthis.onPointcloudAdded = e => {\r\n\t\t\tthis.load(e.pointcloud);\r\n\t\t};\r\n\r\n\t\tthis.on360ImagesAdded = e => {\r\n\t\t\tthis.addImages360(e.images);\r\n\t\t};\r\n\r\n\t\tthis.onAnnotationAdded = e => {\r\n\t\t\tif (!this.sceneProjection) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet annotation = e.annotation;\r\n\t\t\tlet position = annotation.position;\r\n\t\t\tlet mapPos = this.toMap.forward([position.x, position.y]);\r\n\t\t\tlet feature = new ol.Feature({\r\n\t\t\t\tgeometry: new ol.geom.Point(mapPos),\r\n\t\t\t\tname: annotation.title\r\n\t\t\t});\r\n\t\t\tfeature.setStyle(this.createAnnotationStyle(annotation.title));\r\n\r\n\t\t\tfeature.onHover = evt => {\r\n\t\t\t\tlet coordinates = feature.getGeometry().getCoordinates();\r\n\t\t\t\tlet p = this.map.getPixelFromCoordinate(coordinates);\r\n\r\n\t\t\t\tthis.elTooltip.html(annotation.title);\r\n\t\t\t\tthis.elTooltip.css('display', '');\r\n\t\t\t\tthis.elTooltip.css('left', `${p[0]}px`);\r\n\t\t\t\tthis.elTooltip.css('top', `${p[1]}px`);\r\n\t\t\t};\r\n\r\n\t\t\tfeature.onClick = evt => {\r\n\t\t\t\tannotation.clickTitle();\r\n\t\t\t};\r\n\r\n\t\t\tthis.getAnnotationsLayer().getSource().addFeature(feature);\r\n\t\t};\r\n\r\n\t\tthis.setScene(this.viewer.scene);\r\n\t}\r\n\r\n\tsetScene (scene) {\r\n\t\tif (this.scene === scene) {\r\n\t\t\treturn;\r\n\t\t};\r\n\r\n\t\tif (this.scene) {\r\n\t\t\tthis.scene.removeEventListener('pointcloud_added', this.onPointcloudAdded);\r\n\t\t\tthis.scene.removeEventListener('360_images_added', this.on360ImagesAdded);\r\n\t\t\tthis.scene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded);\r\n\t\t}\r\n\r\n\t\tthis.scene = scene;\r\n\r\n\t\tthis.scene.addEventListener('pointcloud_added', this.onPointcloudAdded);\r\n\t\tthis.scene.addEventListener('360_images_added', this.on360ImagesAdded);\r\n\t\tthis.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded);\r\n\r\n\t\tfor (let pointcloud of this.viewer.scene.pointclouds) {\r\n\t\t\tthis.load(pointcloud);\r\n\t\t}\r\n\r\n\t\tthis.viewer.scene.annotations.traverseDescendants(annotation => {\r\n\t\t\tthis.onAnnotationAdded({annotation: annotation});\r\n\t\t});\r\n\r\n\t\tfor(let images of this.viewer.scene.images360){\r\n\t\t\tthis.on360ImagesAdded({images: images});\r\n\t\t}\r\n\t}\r\n\r\n\tgetExtentsLayer () {\r\n\t\tif (this.extentsLayer) {\r\n\t\t\treturn this.extentsLayer;\r\n\t\t}\r\n\r\n\t\tthis.gExtent = new ol.geom.LineString([[0, 0], [0, 0]]);\r\n\r\n\t\tlet feature = new ol.Feature(this.gExtent);\r\n\t\tlet featureVector = new ol.source.Vector({\r\n\t\t\tfeatures: [feature]\r\n\t\t});\r\n\r\n\t\tthis.extentsLayer = new ol.layer.Vector({\r\n\t\t\tsource: featureVector,\r\n\t\t\tstyle: new ol.style.Style({\r\n\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\tcolor: 'rgba(255, 255, 255, 0.2)'\r\n\t\t\t\t}),\r\n\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\tcolor: '#0000ff',\r\n\t\t\t\t\twidth: 2\r\n\t\t\t\t}),\r\n\t\t\t\timage: new ol.style.Circle({\r\n\t\t\t\t\tradius: 3,\r\n\t\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\t\tcolor: '#0000ff'\r\n\t\t\t\t\t})\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t\treturn this.extentsLayer;\r\n\t}\r\n\r\n\tgetAnnotationsLayer () {\r\n\t\tif (this.annotationsLayer) {\r\n\t\t\treturn this.annotationsLayer;\r\n\t\t}\r\n\r\n\t\tthis.annotationsLayer = new ol.layer.Vector({\r\n\t\t\tsource: new ol.source.Vector({\r\n\t\t\t}),\r\n\t\t\tstyle: new ol.style.Style({\r\n\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)'\r\n\t\t\t\t}),\r\n\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)',\r\n\t\t\t\t\twidth: 2\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t\treturn this.annotationsLayer;\r\n\t}\r\n\r\n\tgetCameraLayer () {\r\n\t\tif (this.cameraLayer) {\r\n\t\t\treturn this.cameraLayer;\r\n\t\t}\r\n\r\n\t\t// CAMERA LAYER\r\n\t\tthis.gCamera = new ol.geom.LineString([[0, 0], [0, 0], [0, 0], [0, 0]]);\r\n\t\tlet feature = new ol.Feature(this.gCamera);\r\n\t\tlet featureVector = new ol.source.Vector({\r\n\t\t\tfeatures: [feature]\r\n\t\t});\r\n\r\n\t\tthis.cameraLayer = new ol.layer.Vector({\r\n\t\t\tsource: featureVector,\r\n\t\t\tstyle: new ol.style.Style({\r\n\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\tcolor: '#0000ff',\r\n\t\t\t\t\twidth: 2\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t\treturn this.cameraLayer;\r\n\t}\r\n\r\n\tgetToolLayer () {\r\n\t\tif (this.toolLayer) {\r\n\t\t\treturn this.toolLayer;\r\n\t\t}\r\n\r\n\t\tthis.toolLayer = new ol.layer.Vector({\r\n\t\t\tsource: new ol.source.Vector({\r\n\t\t\t}),\r\n\t\t\tstyle: new ol.style.Style({\r\n\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)'\r\n\t\t\t\t}),\r\n\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)',\r\n\t\t\t\t\twidth: 2\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t\treturn this.toolLayer;\r\n\t}\r\n\r\n\tgetImages360Layer(){\r\n\t\tif(this.images360Layer){\r\n\t\t\treturn this.images360Layer;\r\n\t\t}\r\n\r\n\t\tlet style = new ol.style.Style({\r\n\t\t\timage: new ol.style.Circle({\r\n\t\t\t\tradius: 4,\r\n\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\tcolor: [255, 0, 0, 1],\r\n\t\t\t\t\twidth: 2\r\n\t\t\t\t}),\r\n\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\tcolor: [255, 100, 100, 1]\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t});\r\n\t\t\r\n\t\tlet layer = new ol.layer.Vector({\r\n\t\t\tsource: new ol.source.Vector({}),\r\n\t\t\tstyle: style,\r\n\t\t});\r\n\r\n\t\tthis.images360Layer = layer;\r\n\r\n\t\treturn this.images360Layer;\r\n\t}\r\n\r\n\tgetSourcesLayer () {\r\n\t\tif (this.sourcesLayer) {\r\n\t\t\treturn this.sourcesLayer;\r\n\t\t}\r\n\r\n\t\tthis.sourcesLayer = new ol.layer.Vector({\r\n\t\t\tsource: new ol.source.Vector({}),\r\n\t\t\tstyle: new ol.style.Style({\r\n\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\tcolor: 'rgba(0, 0, 150, 0.1)'\r\n\t\t\t\t}),\r\n\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\tcolor: 'rgba(0, 0, 150, 1)',\r\n\t\t\t\t\twidth: 1\r\n\t\t\t\t})\r\n\t\t\t})\r\n\t\t});\r\n\r\n\t\treturn this.sourcesLayer;\r\n\t}\r\n\r\n\tgetSourcesLabelLayer () {\r\n\t\tif (this.sourcesLabelLayer) {\r\n\t\t\treturn this.sourcesLabelLayer;\r\n\t\t}\r\n\r\n\t\tthis.sourcesLabelLayer = new ol.layer.Vector({\r\n\t\t\tsource: new ol.source.Vector({\r\n\t\t\t}),\r\n\t\t\tstyle: new ol.style.Style({\r\n\t\t\t\tfill: new ol.style.Fill({\r\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 0.1)'\r\n\t\t\t\t}),\r\n\t\t\t\tstroke: new ol.style.Stroke({\r\n\t\t\t\t\tcolor: 'rgba(255, 0, 0, 1)',\r\n\t\t\t\t\twidth: 2\r\n\t\t\t\t})\r\n\t\t\t}),\r\n\t\t\tminResolution: 0.01,\r\n\t\t\tmaxResolution: 20\r\n\t\t});\r\n\r\n\t\treturn this.sourcesLabelLayer;\r\n\t}\r\n\r\n\tsetSceneProjection (sceneProjection) {\r\n\t\tthis.sceneProjection = sceneProjection;\r\n\t\tthis.toMap = proj4(this.sceneProjection, this.mapProjection);\r\n\t\tthis.toScene = proj4(this.mapProjection, this.sceneProjection);\r\n\t};\r\n\r\n\tgetMapExtent () {\r\n\t\tlet bb = this.viewer.getBoundingBox();\r\n\r\n\t\tlet bottomLeft = this.toMap.forward([bb.min.x, bb.min.y]);\r\n\t\tlet bottomRight = this.toMap.forward([bb.max.x, bb.min.y]);\r\n\t\tlet topRight = this.toMap.forward([bb.max.x, bb.max.y]);\r\n\t\tlet topLeft = this.toMap.forward([bb.min.x, bb.max.y]);\r\n\r\n\t\tlet extent = {\r\n\t\t\tbottomLeft: bottomLeft,\r\n\t\t\tbottomRight: bottomRight,\r\n\t\t\ttopRight: topRight,\r\n\t\t\ttopLeft: topLeft\r\n\t\t};\r\n\r\n\t\treturn extent;\r\n\t};\r\n\r\n\tgetMapCenter () {\r\n\t\tlet mapExtent = this.getMapExtent();\r\n\r\n\t\tlet mapCenter = [\r\n\t\t\t(mapExtent.bottomLeft[0] + mapExtent.topRight[0]) / 2,\r\n\t\t\t(mapExtent.bottomLeft[1] + mapExtent.topRight[1]) / 2\r\n\t\t];\r\n\r\n\t\treturn mapCenter;\r\n\t};\r\n\r\n\tupdateToolDrawings () {\r\n\t\tthis.toolLayer.getSource().clear();\r\n\r\n\t\tlet profiles = this.viewer.profileTool.profiles;\r\n\t\tfor (let i = 0; i < profiles.length; i++) {\r\n\t\t\tlet profile = profiles[i];\r\n\t\t\tlet coordinates = [];\r\n\r\n\t\t\tfor (let j = 0; j < profile.points.length; j++) {\r\n\t\t\t\tlet point = profile.points[j];\r\n\t\t\t\tlet pointMap = this.toMap.forward([point.x, point.y]);\r\n\t\t\t\tcoordinates.push(pointMap);\r\n\t\t\t}\r\n\r\n\t\t\tlet line = new ol.geom.LineString(coordinates);\r\n\t\t\tlet feature = new ol.Feature(line);\r\n\t\t\tthis.toolLayer.getSource().addFeature(feature);\r\n\t\t}\r\n\r\n\t\tlet measurements = this.viewer.measuringTool.measurements;\r\n\t\tfor (let i = 0; i < measurements.length; i++) {\r\n\t\t\tlet measurement = measurements[i];\r\n\t\t\tlet coordinates = [];\r\n\r\n\t\t\tfor (let j = 0; j < measurement.points.length; j++) {\r\n\t\t\t\tlet point = measurement.points[j].position;\r\n\t\t\t\tlet pointMap = this.toMap.forward([point.x, point.y]);\r\n\t\t\t\tcoordinates.push(pointMap);\r\n\t\t\t}\r\n\r\n\t\t\tif (measurement.closed && measurement.points.length > 0) {\r\n\t\t\t\tcoordinates.push(coordinates[0]);\r\n\t\t\t}\r\n\r\n\t\t\tlet line = new ol.geom.LineString(coordinates);\r\n\t\t\tlet feature = new ol.Feature(line);\r\n\t\t\tthis.toolLayer.getSource().addFeature(feature);\r\n\t\t}\r\n\t}\r\n\r\n\taddImages360(images){\r\n\t\tlet transform = this.toMap.forward;\r\n\t\tlet layer = this.getImages360Layer();\r\n\r\n\t\tfor(let image of images.images){\r\n\r\n\t\t\tlet p = transform([image.position[0], image.position[1]]);\r\n\r\n\t\t\tlet feature = new ol.Feature({\r\n\t\t\t\t'geometry': new ol.geom.Point(p),\r\n\t\t\t});\r\n\r\n\t\t\tfeature.onClick = () => {\r\n\t\t\t\timages.focus(image);\r\n\t\t\t};\r\n\r\n\t\t\tlayer.getSource().addFeature(feature);\r\n\t\t}\r\n\t}\r\n\r\n\tasync load (pointcloud) {\r\n\t\tif (!pointcloud) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!pointcloud.projection) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!this.sceneProjection) {\r\n\t\t\ttry {\r\n\t\t\t\tthis.setSceneProjection(pointcloud.projection);\r\n\t\t\t}catch (e) {\r\n\t\t\t\tconsole.log('Failed projection:', e);\r\n\r\n\t\t\t\tif (pointcloud.fallbackProjection) {\r\n\t\t\t\t\ttry {\r\n\t\t\t\t\t\tconsole.log('Trying fallback projection...');\r\n\t\t\t\t\t\tthis.setSceneProjection(pointcloud.fallbackProjection);\r\n\t\t\t\t\t\tconsole.log('Set projection from fallback');\r\n\t\t\t\t\t}catch (e) {\r\n\t\t\t\t\t\tconsole.log('Failed fallback projection:', e);\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}else{\r\n\t\t\t\t\treturn;\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet mapExtent = this.getMapExtent();\r\n\t\tlet mapCenter = this.getMapCenter();\r\n\r\n\t\tlet view = this.map.getView();\r\n\t\tview.setCenter(mapCenter);\r\n\r\n\t\tthis.gExtent.setCoordinates([\r\n\t\t\tmapExtent.bottomLeft,\r\n\t\t\tmapExtent.bottomRight,\r\n\t\t\tmapExtent.topRight,\r\n\t\t\tmapExtent.topLeft,\r\n\t\t\tmapExtent.bottomLeft\r\n\t\t]);\r\n\r\n\t\tview.fit(this.gExtent, [300, 300], {\r\n\t\t\tconstrainResolution: false\r\n\t\t});\r\n\r\n\t\tif (pointcloud.pcoGeometry.type == 'ept'){ \r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet url = `${pointcloud.pcoGeometry.url}/../sources.json`;\r\n\t\t//let response = await fetch(url);\r\n\r\n\t\tfetch(url).then(async (response) => {\r\n\t\t\tlet data = await response.json();\r\n\t\t\r\n\t\t\tlet sources = data.sources;\r\n\r\n\t\t\tfor (let i = 0; i < sources.length; i++) {\r\n\t\t\t\tlet source = sources[i];\r\n\t\t\t\tlet name = source.name;\r\n\t\t\t\tlet bounds = source.bounds;\r\n\r\n\t\t\t\tlet mapBounds = {\r\n\t\t\t\t\tmin: this.toMap.forward([bounds.min[0], bounds.min[1]]),\r\n\t\t\t\t\tmax: this.toMap.forward([bounds.max[0], bounds.max[1]])\r\n\t\t\t\t};\r\n\t\t\t\tlet mapCenter = [\r\n\t\t\t\t\t(mapBounds.min[0] + mapBounds.max[0]) / 2,\r\n\t\t\t\t\t(mapBounds.min[1] + mapBounds.max[1]) / 2\r\n\t\t\t\t];\r\n\r\n\t\t\t\tlet p1 = this.toMap.forward([bounds.min[0], bounds.min[1]]);\r\n\t\t\t\tlet p2 = this.toMap.forward([bounds.max[0], bounds.min[1]]);\r\n\t\t\t\tlet p3 = this.toMap.forward([bounds.max[0], bounds.max[1]]);\r\n\t\t\t\tlet p4 = this.toMap.forward([bounds.min[0], bounds.max[1]]);\r\n\r\n\t\t\t\t// let feature = new ol.Feature({\r\n\t\t\t\t//\t'geometry': new ol.geom.LineString([p1, p2, p3, p4, p1])\r\n\t\t\t\t// });\r\n\t\t\t\tlet feature = new ol.Feature({\r\n\t\t\t\t\t'geometry': new ol.geom.Polygon([[p1, p2, p3, p4, p1]])\r\n\t\t\t\t});\r\n\t\t\t\tfeature.source = source;\r\n\t\t\t\tfeature.pointcloud = pointcloud;\r\n\t\t\t\tthis.getSourcesLayer().getSource().addFeature(feature);\r\n\r\n\t\t\t\tfeature = new ol.Feature({\r\n\t\t\t\t\tgeometry: new ol.geom.Point(mapCenter),\r\n\t\t\t\t\tname: name\r\n\t\t\t\t});\r\n\t\t\t\tfeature.setStyle(this.createLabelStyle(name));\r\n\t\t\t\tthis.sourcesLabelLayer.getSource().addFeature(feature);\r\n\t\t\t}\r\n\t\t}).catch(() => {\r\n\t\t\t\r\n\t\t});\r\n\r\n\t}\r\n\r\n\ttoggle () {\r\n\t\tif (this.elMap.is(':visible')) {\r\n\t\t\tthis.elMap.css('display', 'none');\r\n\t\t\tthis.enabled = false;\r\n\t\t} else {\r\n\t\t\tthis.elMap.css('display', 'block');\r\n\t\t\tthis.enabled = true;\r\n\t\t}\r\n\t}\r\n\r\n\tupdate (delta) {\r\n\t\tif (!this.sceneProjection) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet pm = $('#potree_map');\r\n\r\n\t\tif (!this.enabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// resize\r\n\t\tlet mapSize = this.map.getSize();\r\n\t\tlet resized = (pm.width() !== mapSize[0] || pm.height() !== mapSize[1]);\r\n\t\tif (resized) {\r\n\t\t\tthis.map.updateSize();\r\n\t\t}\r\n\r\n\t\t//\r\n\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\r\n\t\tlet scale = this.map.getView().getResolution();\r\n\t\tlet campos = camera.position;\r\n\t\tlet camdir = camera.getWorldDirection(new THREE.Vector3());\r\n\t\tlet sceneLookAt = camdir.clone().multiplyScalar(30 * scale).add(campos);\r\n\t\tlet geoPos = camera.position;\r\n\t\tlet geoLookAt = sceneLookAt;\r\n\t\tlet mapPos = new THREE.Vector2().fromArray(this.toMap.forward([geoPos.x, geoPos.y]));\r\n\t\tlet mapLookAt = new THREE.Vector2().fromArray(this.toMap.forward([geoLookAt.x, geoLookAt.y]));\r\n\t\tlet mapDir = new THREE.Vector2().subVectors(mapLookAt, mapPos).normalize();\r\n\r\n\t\tmapLookAt = mapPos.clone().add(mapDir.clone().multiplyScalar(30 * scale));\r\n\t\tlet mapLength = mapPos.distanceTo(mapLookAt);\r\n\t\tlet mapSide = new THREE.Vector2(-mapDir.y, mapDir.x);\r\n\r\n\t\tlet p1 = mapPos.toArray();\r\n\t\tlet p2 = mapLookAt.clone().sub(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray();\r\n\t\tlet p3 = mapLookAt.clone().add(mapSide.clone().multiplyScalar(0.3 * mapLength)).toArray();\r\n\r\n\t\tthis.gCamera.setCoordinates([p1, p2, p3, p1]);\r\n\t}\r\n\r\n\tget sourcesVisible () {\r\n\t\treturn this.getSourcesLayer().getVisible();\r\n\t}\r\n\r\n\tset sourcesVisible (value) {\r\n\t\tthis.getSourcesLayer().setVisible(value);\r\n\t}\r\n\r\n}\r\n","/**\r\n *\r\n * @author roy.mdr / http://...\r\n *\r\n */\r\n\r\nexport class DXFProfileExporter {\r\n\r\n\tstatic toXYZ(points, flatten = false) {\r\n\r\n\t\t/*\r\n\t\tpoints: {\r\n\t\t\t...\r\n\t\t\tdata: {\r\n\t\t\t\tmileage: [0, 1, 2...], -> one per point\r\n\t\t\t\tposition: [0, 0, 0, 1, 1, 1, 2, 2, 2...], -> X, Y, Z\r\n\t\t\t\trgba: [0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2...] -> R, G, B, A\r\n\t\t\t},\r\n\t\t\tnumPoints: Int\r\n\t\t}\r\n\t\t*/\r\n\r\n\t\tconst pointsXYZ = {\r\n\t\t\tx: [],\r\n\t\t\ty: [],\r\n\t\t\tz: [],\r\n\t\t\tminX: Number.MAX_VALUE,\r\n\t\t\tminY: Number.MAX_VALUE,\r\n\t\t\tminZ: Number.MAX_VALUE,\r\n\t\t\tmaxX: -Number.MAX_VALUE,\r\n\t\t\tmaxY: -Number.MAX_VALUE,\r\n\t\t\tmaxZ: -Number.MAX_VALUE,\r\n\t\t\tnumPoints: 0\r\n\t\t};\r\n\r\n\t\tconst pData = points.data;\r\n\t\tconst pMileage = pData.mileage;\r\n\t\tconst pCoords = pData.position;\r\n\t\tconst pColor = pData.rgba;\r\n\r\n\t\tfor (let pIx = 0; pIx < points.numPoints; pIx++) {\r\n\r\n\t\t\tconst poMileage = pMileage[pIx];\r\n\t\t\tconst poCoordX = pCoords[ ((pIx * 3) + 0) ];\r\n\t\t\tconst poCoordY = pCoords[ ((pIx * 3) + 1) ];\r\n\t\t\tconst poCoordZ = pCoords[ ((pIx * 3) + 2) ];\r\n\t\t\t// const poColorR = pColor[ ((pIx * 4) + 0) ];\r\n\t\t\t// const poColorG = pColor[ ((pIx * 4) + 1) ];\r\n\t\t\t// const poColorB = pColor[ ((pIx * 4) + 2) ];\r\n\t\t\t// const poColorA = pColor[ ((pIx * 4) + 3) ];\r\n\r\n\t\t\tif (flatten === true) {\r\n\r\n\t\t\t\tpointsXYZ.x.push(poMileage);\r\n\t\t\t\tpointsXYZ.y.push(0);\r\n\t\t\t\tpointsXYZ.z.push(poCoordZ);\r\n\r\n\t\t\t\t// Get boundaries X\r\n\t\t\t\tif (pointsXYZ.maxX < poMileage) pointsXYZ.maxX = poMileage;\r\n\t\t\t\tif (pointsXYZ.minX > poMileage) pointsXYZ.minX = poMileage;\r\n\r\n\t\t\t\t// Get boundaries Z\r\n\t\t\t\tif (pointsXYZ.maxZ < poCoordZ) pointsXYZ.maxZ = poCoordZ;\r\n\t\t\t\tif (pointsXYZ.minZ > poCoordZ) pointsXYZ.minZ = poCoordZ;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tpointsXYZ.x.push(poCoordX);\r\n\t\t\t\tpointsXYZ.y.push(poCoordY);\r\n\t\t\t\tpointsXYZ.z.push(poCoordZ);\r\n\r\n\t\t\t\t// Get boundaries X\r\n\t\t\t\tif (pointsXYZ.maxX < poCoordX) pointsXYZ.maxX = poCoordX;\r\n\t\t\t\tif (pointsXYZ.minX > poCoordX) pointsXYZ.minX = poCoordX;\r\n\r\n\t\t\t\t// Get boundaries Y\r\n\t\t\t\tif (pointsXYZ.maxY < poCoordY) pointsXYZ.maxY = poCoordY;\r\n\t\t\t\tif (pointsXYZ.minY > poCoordY) pointsXYZ.minY = poCoordY;\r\n\r\n\t\t\t\t// Get boundaries Z\r\n\t\t\t\tif (pointsXYZ.maxZ < poCoordZ) pointsXYZ.maxZ = poCoordZ;\r\n\t\t\t\tif (pointsXYZ.minZ > poCoordZ) pointsXYZ.minZ = poCoordZ;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif (flatten === true) {\r\n\t\t\t// Set boundaries Y\r\n\t\t\tpointsXYZ.maxY = 0;\r\n\t\t\tpointsXYZ.minY = 0;\r\n\t\t}\r\n\r\n\t\tpointsXYZ.numPoints = points.numPoints;\r\n\r\n\t\treturn pointsXYZ;\r\n\t}\r\n\r\n\tstatic plotPCloudPoint(x, y, z) {\r\n\r\n\t\tconst dxfSection = `0\r\nPOINT\r\n8\r\nlayer_pointCloud\r\n10\r\n${x}\r\n20\r\n${y}\r\n30\r\n${z}\r\n`;\r\n\r\n\t\treturn dxfSection;\r\n\t}\r\n\r\n\tstatic toString(points, flatten = false) {\r\n\r\n\t\tconst pCloud = DXFProfileExporter.toXYZ(points, flatten);\r\n\r\n\t\tconst dxfHeader = `999\r\nDXF created from potree\r\n0\r\nSECTION\r\n2\r\nHEADER\r\n9\r\n$ACADVER\r\n1\r\nAC1006\r\n9\r\n$INSBASE\r\n10\r\n0.0\r\n20\r\n0.0\r\n30\r\n0.0\r\n9\r\n$EXTMIN\r\n10\r\n${pCloud.minX}\r\n20\r\n${pCloud.minY}\r\n30\r\n${pCloud.minZ}\r\n9\r\n$EXTMAX\r\n10\r\n${pCloud.maxX}\r\n20\r\n${pCloud.maxY}\r\n30\r\n${pCloud.maxZ}\r\n0\r\nENDSEC\r\n`;\r\n\r\n\t\tlet dxfBody = `0\r\nSECTION\r\n2\r\nENTITIES\r\n`;\r\n\r\n\t\tfor (let i = 0; i < pCloud.numPoints; i++) {\r\n\t\t\tdxfBody += DXFProfileExporter.plotPCloudPoint(pCloud.x[i], pCloud.y[i], pCloud.z[i]);\r\n\t\t}\r\n\r\n\t\tdxfBody += `0\r\nENDSEC\r\n`;\r\n\r\n\t\tconst dxf = dxfHeader + dxfBody + '0\\nEOF';\r\n\r\n\t\treturn dxf;\r\n\t}\r\n\r\n}\r\n","\r\nexport class CSVExporter {\r\n\tstatic toString (points) {\r\n\t\tlet string = '';\r\n\r\n\t\tlet attributes = Object.keys(points.data)\r\n\t\t\t.filter(a => a !== 'normal')\r\n\t\t\t.sort((a, b) => {\r\n\t\t\t\tif (a === 'position') return -1;\r\n\t\t\t\tif (b === 'position') return 1;\r\n\t\t\t\tif (a === 'rgba') return -1;\r\n\t\t\t\tif (b === 'rgba') return 1;\r\n\t\t\t});\r\n\r\n\t\tlet headerValues = [];\r\n\t\tfor (let attribute of attributes) {\r\n\t\t\tlet itemSize = points.data[attribute].length / points.numPoints;\r\n\r\n\t\t\tif (attribute === 'position') {\r\n\t\t\t\theaderValues = headerValues.concat(['x', 'y', 'z']);\r\n\t\t\t} else if (attribute === 'rgba') {\r\n\t\t\t\theaderValues = headerValues.concat(['r', 'g', 'b', 'a']);\r\n\t\t\t} else if (itemSize > 1) {\r\n\t\t\t\tfor (let i = 0; i < itemSize; i++) {\r\n\t\t\t\t\theaderValues.push(`${attribute}_${i}`);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\theaderValues.push(attribute);\r\n\t\t\t}\r\n\t\t}\r\n\t\tstring = headerValues.join(', ') + '\\n';\r\n\r\n\t\tfor (let i = 0; i < points.numPoints; i++) {\r\n\t\t\tlet values = [];\r\n\r\n\t\t\tfor (let attribute of attributes) {\r\n\t\t\t\tlet itemSize = points.data[attribute].length / points.numPoints;\r\n\t\t\t\tlet value = points.data[attribute]\r\n\t\t\t\t\t.subarray(itemSize * i, itemSize * i + itemSize)\r\n\t\t\t\t\t.join(', ');\r\n\t\t\t\tvalues.push(value);\r\n\t\t\t}\r\n\r\n\t\t\tstring += values.join(', ') + '\\n';\r\n\t\t}\r\n\r\n\t\treturn string;\r\n\t}\r\n};\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nexport class LASExporter {\r\n\tstatic toLAS (points) {\r\n\t\t// TODO Unused: let string = '';\r\n\r\n\t\tlet boundingBox = points.boundingBox;\r\n\t\tlet offset = boundingBox.min.clone();\r\n\t\tlet diagonal = boundingBox.min.distanceTo(boundingBox.max);\r\n\t\tlet scale = new THREE.Vector3(0.001, 0.001, 0.001);\r\n\t\tif (diagonal > 1000 * 1000) {\r\n\t\t\tscale = new THREE.Vector3(0.01, 0.01, 0.01);\r\n\t\t} else {\r\n\t\t\tscale = new THREE.Vector3(0.001, 0.001, 0.001);\r\n\t\t}\r\n\r\n\t\tlet setString = function (string, offset, buffer) {\r\n\t\t\tlet view = new Uint8Array(buffer);\r\n\r\n\t\t\tfor (let i = 0; i < string.length; i++) {\r\n\t\t\t\tlet charCode = string.charCodeAt(i);\r\n\t\t\t\tview[offset + i] = charCode;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tlet buffer = new ArrayBuffer(227 + 28 * points.numPoints);\r\n\t\tlet view = new DataView(buffer);\r\n\t\tlet u8View = new Uint8Array(buffer);\r\n\t\t// let u16View = new Uint16Array(buffer);\r\n\r\n\t\tsetString('LASF', 0, buffer);\r\n\t\tu8View[24] = 1;\r\n\t\tu8View[25] = 2;\r\n\r\n\t\t// system identifier o:26 l:32\r\n\r\n\t\t// generating software o:58 l:32\r\n\t\tsetString('Potree 1.7', 58, buffer);\r\n\r\n\t\t// file creation day of year o:90 l:2\r\n\t\t// file creation year o:92 l:2\r\n\r\n\t\t// header size o:94 l:2\r\n\t\tview.setUint16(94, 227, true);\r\n\r\n\t\t// offset to point data o:96 l:4\r\n\t\tview.setUint32(96, 227, true);\r\n\r\n\t\t// number of letiable length records o:100 l:4\r\n\r\n\t\t// point data record format 104 1\r\n\t\tu8View[104] = 2;\r\n\r\n\t\t// point data record length 105 2\r\n\t\tview.setUint16(105, 28, true);\r\n\r\n\t\t// number of point records 107 4\r\n\t\tview.setUint32(107, points.numPoints, true);\r\n\r\n\t\t// number of points by return 111 20\r\n\r\n\t\t// x scale factor 131 8\r\n\t\tview.setFloat64(131, scale.x, true);\r\n\r\n\t\t// y scale factor 139 8\r\n\t\tview.setFloat64(139, scale.y, true);\r\n\r\n\t\t// z scale factor 147 8\r\n\t\tview.setFloat64(147, scale.z, true);\r\n\r\n\t\t// x offset 155 8\r\n\t\tview.setFloat64(155, offset.x, true);\r\n\r\n\t\t// y offset 163 8\r\n\t\tview.setFloat64(163, offset.y, true);\r\n\r\n\t\t// z offset 171 8\r\n\t\tview.setFloat64(171, offset.z, true);\r\n\r\n\t\t// max x 179 8\r\n\t\tview.setFloat64(179, boundingBox.max.x, true);\r\n\r\n\t\t// min x 187 8\r\n\t\tview.setFloat64(187, boundingBox.min.x, true);\r\n\r\n\t\t// max y 195 8\r\n\t\tview.setFloat64(195, boundingBox.max.y, true);\r\n\r\n\t\t// min y 203 8\r\n\t\tview.setFloat64(203, boundingBox.min.y, true);\r\n\r\n\t\t// max z 211 8\r\n\t\tview.setFloat64(211, boundingBox.max.z, true);\r\n\r\n\t\t// min z 219 8\r\n\t\tview.setFloat64(219, boundingBox.min.z, true);\r\n\r\n\t\tlet boffset = 227;\r\n\t\tfor (let i = 0; i < points.numPoints; i++) {\r\n\r\n\t\t\tlet px = points.data.position[3 * i + 0];\r\n\t\t\tlet py = points.data.position[3 * i + 1];\r\n\t\t\tlet pz = points.data.position[3 * i + 2];\r\n\r\n\t\t\tlet ux = parseInt((px - offset.x) / scale.x);\r\n\t\t\tlet uy = parseInt((py - offset.y) / scale.y);\r\n\t\t\tlet uz = parseInt((pz - offset.z) / scale.z);\r\n\r\n\t\t\tview.setUint32(boffset + 0, ux, true);\r\n\t\t\tview.setUint32(boffset + 4, uy, true);\r\n\t\t\tview.setUint32(boffset + 8, uz, true);\r\n\r\n\t\t\tif (points.data.intensity) {\r\n\t\t\t\tview.setUint16(boffset + 12, (points.data.intensity[i]), true);\r\n\t\t\t}\r\n\r\n\t\t\tlet rt = 0;\r\n\t\t\tif (points.data.returnNumber) {\r\n\t\t\t\trt += points.data.returnNumber[i];\r\n\t\t\t}\r\n\t\t\tif (points.data.numberOfReturns) {\r\n\t\t\t\trt += (points.data.numberOfReturns[i] << 3);\r\n\t\t\t}\r\n\t\t\tview.setUint8(boffset + 14, rt);\r\n\r\n\t\t\tif (points.data.classification) {\r\n\t\t\t\tview.setUint8(boffset + 15, points.data.classification[i]);\r\n\t\t\t}\r\n\t\t\t// scan angle rank\r\n\t\t\t// user data\r\n\t\t\t// point source id\r\n\t\t\tif (points.data.pointSourceID) {\r\n\t\t\t\tview.setUint16(boffset + 18, points.data.pointSourceID[i]);\r\n\t\t\t}\r\n\r\n\t\t\tif (points.data.rgba || points.data.color) {\r\n\t\t\t\tlet rgba = points.data.rgba ?? points.data.color;\r\n\t\t\t\tview.setUint16(boffset + 20, (rgba[4 * i + 0] * 255), true);\r\n\t\t\t\tview.setUint16(boffset + 22, (rgba[4 * i + 1] * 255), true);\r\n\t\t\t\tview.setUint16(boffset + 24, (rgba[4 * i + 2] * 255), true);\r\n\t\t\t}\r\n\r\n\t\t\tboffset += 28;\r\n\t\t}\r\n\r\n\t\treturn buffer;\r\n\t}\r\n\t\r\n}\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {Points} from \"../Points.js\";\r\nimport {DXFProfileExporter} from \"../exporter/DXFProfileExporter.js\";\r\nimport {CSVExporter} from \"../exporter/CSVExporter.js\";\r\nimport {LASExporter} from \"../exporter/LASExporter.js\";\r\nimport { EventDispatcher } from \"../EventDispatcher.js\";\r\nimport {PointCloudTree} from \"../PointCloudTree.js\";\r\nimport {Renderer} from \"../PotreeRenderer.js\";\r\nimport {PointCloudMaterial} from \"../materials/PointCloudMaterial.js\";\r\nimport {PointSizeType} from \"../defines.js\";\r\n\r\n\r\nfunction copyMaterial(source, target){\r\n\r\n\tfor(let name of Object.keys(target.uniforms)){\r\n\t\ttarget.uniforms[name].value = source.uniforms[name].value;\r\n\t}\r\n\r\n\ttarget.gradientTexture = source.gradientTexture;\r\n\ttarget.visibleNodesTexture = source.visibleNodesTexture;\r\n\ttarget.classificationTexture = source.classificationTexture;\r\n\ttarget.matcapTexture = source.matcapTexture;\r\n\r\n\ttarget.activeAttributeName = source.activeAttributeName;\r\n\ttarget.ranges = source.ranges;\r\n\r\n\t//target.updateShaderSource();\r\n}\r\n\r\n\r\nclass Batch{\r\n\r\n\tconstructor(geometry, material){\r\n\t\tthis.geometry = geometry;\r\n\t\tthis.material = material;\r\n\r\n\t\tthis.sceneNode = new THREE.Points(geometry, material);\r\n\r\n\t\tthis.geometryNode = {\r\n\t\t\testimatedSpacing: 1.0,\r\n\t\t\tgeometry: geometry,\r\n\t\t};\r\n\t}\r\n\r\n\tgetLevel(){\r\n\t\treturn 0;\r\n\t}\r\n\r\n}\r\n\r\nclass ProfileFakeOctree extends PointCloudTree{\r\n\r\n\tconstructor(octree){\r\n\t\tsuper();\r\n\r\n\t\tthis.trueOctree = octree;\r\n\t\tthis.pcoGeometry = octree.pcoGeometry;\r\n\t\tthis.points = [];\r\n\t\tthis.visibleNodes = [];\r\n\t\t\r\n\t\t//this.material = this.trueOctree.material;\r\n\t\tthis.material = new PointCloudMaterial();\r\n\t\t//this.material.copy(this.trueOctree.material);\r\n\t\tcopyMaterial(this.trueOctree.material, this.material);\r\n\t\tthis.material.pointSizeType = PointSizeType.FIXED;\r\n\r\n\t\tthis.batchSize = 100 * 1000;\r\n\t\tthis.currentBatch = null\r\n\t}\r\n\r\n\tgetAttribute(name){\r\n\t\treturn this.trueOctree.getAttribute(name);\r\n\t}\r\n\r\n\tdispose(){\r\n\t\tfor(let node of this.visibleNodes){\r\n\t\t\tnode.geometry.dispose();\r\n\t\t}\r\n\r\n\t\tthis.visibleNodes = [];\r\n\t\tthis.currentBatch = null;\r\n\t\tthis.points = [];\r\n\t}\r\n\r\n\taddPoints(data){\r\n\t\t// since each call to addPoints can deliver very very few points,\r\n\t\t// we're going to batch them into larger buffers for efficiency.\r\n\r\n\t\tif(this.currentBatch === null){\r\n\t\t\tthis.currentBatch = this.createNewBatch(data);\r\n\t\t}\r\n\r\n\t\tthis.points.push(data);\r\n\r\n\r\n\t\tlet updateRange = {\r\n\t\t\tstart: this.currentBatch.geometry.drawRange.count,\r\n\t\t\tcount: 0\r\n\t\t};\r\n\t\tlet projectedBox = new THREE.Box3();\r\n\r\n\t\tlet truePos = new THREE.Vector3();\r\n\r\n\t\tfor(let i = 0; i < data.numPoints; i++){\r\n\r\n\t\t\tif(updateRange.start + updateRange.count >= this.batchSize){\r\n\t\t\t\t// current batch full, start new batch\r\n\r\n\t\t\t\tfor(let key of Object.keys(this.currentBatch.geometry.attributes)){\r\n\t\t\t\t\tlet attribute = this.currentBatch.geometry.attributes[key];\r\n\t\t\t\t\tattribute.updateRange.offset = updateRange.start;\r\n\t\t\t\t\tattribute.updateRange.count = updateRange.count;\r\n\t\t\t\t\tattribute.needsUpdate = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.currentBatch.geometry.computeBoundingBox();\r\n\t\t\t\tthis.currentBatch.geometry.computeBoundingSphere();\r\n\r\n\t\t\t\tthis.currentBatch = this.createNewBatch(data);\r\n\t\t\t\tupdateRange = {\r\n\t\t\t\t\tstart: 0,\r\n\t\t\t\t\tcount: 0\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\ttruePos.set(\r\n\t\t\t\tdata.data.position[3 * i + 0] + this.trueOctree.position.x,\r\n\t\t\t\tdata.data.position[3 * i + 1] + this.trueOctree.position.y,\r\n\t\t\t\tdata.data.position[3 * i + 2] + this.trueOctree.position.z,\r\n\t\t\t);\r\n\r\n\t\t\tlet x = data.data.mileage[i];\r\n\t\t\tlet y = 0;\r\n\t\t\tlet z = truePos.z;\r\n\r\n\t\t\tprojectedBox.expandByPoint(new THREE.Vector3(x, y, z));\r\n\r\n\t\t\tlet index = updateRange.start + updateRange.count;\r\n\t\t\tlet geometry = this.currentBatch.geometry;\r\n\r\n\t\t\tfor(let attributeName of Object.keys(data.data)){\r\n\t\t\t\tlet source = data.data[attributeName];\r\n\t\t\t\tlet target = geometry.attributes[attributeName];\r\n\t\t\t\tlet numElements = target.itemSize;\r\n\t\t\t\t\r\n\t\t\t\tfor(let item = 0; item < numElements; item++){\r\n\t\t\t\t\ttarget.array[numElements * index + item] = source[numElements * i + item];\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t{\r\n\t\t\t\tlet position = geometry.attributes.position;\r\n\r\n\t\t\t\tposition.array[3 * index + 0] = x;\r\n\t\t\t\tposition.array[3 * index + 1] = y;\r\n\t\t\t\tposition.array[3 * index + 2] = z;\r\n\t\t\t}\r\n\r\n\t\t\tupdateRange.count++;\r\n\t\t\tthis.currentBatch.geometry.drawRange.count++;\r\n\t\t}\r\n\r\n\t\tfor(let key of Object.keys(this.currentBatch.geometry.attributes)){\r\n\t\t\tlet attribute = this.currentBatch.geometry.attributes[key];\r\n\t\t\tattribute.updateRange.offset = updateRange.start;\r\n\t\t\tattribute.updateRange.count = updateRange.count;\r\n\t\t\tattribute.needsUpdate = true;\r\n\t\t}\r\n\r\n\t\tdata.projectedBox = projectedBox;\r\n\r\n\t\tthis.projectedBox = this.points.reduce( (a, i) => a.union(i.projectedBox), new THREE.Box3());\r\n\t}\r\n\r\n\tcreateNewBatch(data){\r\n\t\tlet geometry = new THREE.BufferGeometry();\r\n\r\n\t\t// create new batches with batch_size elements of the same type as the attribute\r\n\t\tfor(let attributeName of Object.keys(data.data)){\r\n\t\t\tlet buffer = data.data[attributeName];\r\n\t\t\tlet numElements = buffer.length / data.numPoints; // 3 for pos, 4 for col, 1 for scalars\r\n\t\t\tlet constructor = buffer.constructor;\r\n\t\t\tlet normalized = false;\r\n\t\t\t\r\n\t\t\tif(this.trueOctree.root.sceneNode){\r\n\t\t\t\tif(this.trueOctree.root.sceneNode.geometry.attributes[attributeName]){\r\n\t\t\t\t\tnormalized = this.trueOctree.root.sceneNode.geometry.attributes[attributeName].normalized;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\r\n\t\t\tlet batchBuffer = new constructor(numElements * this.batchSize);\r\n\r\n\t\t\tlet bufferAttribute = new THREE.BufferAttribute(batchBuffer, numElements, normalized);\r\n\t\t\tbufferAttribute.potree = {\r\n\t\t\t\trange: [0, 1],\r\n\t\t\t};\r\n\r\n\t\t\tgeometry.setAttribute(attributeName, bufferAttribute);\r\n\t\t}\r\n\r\n\t\tgeometry.drawRange.start = 0;\r\n\t\tgeometry.drawRange.count = 0;\r\n\r\n\t\tlet batch = new Batch(geometry, this.material);\r\n\r\n\t\tthis.visibleNodes.push(batch);\r\n\r\n\t\treturn batch;\r\n\t}\r\n\t\r\n\tcomputeVisibilityTextureData(){\r\n\t\tlet data = new Uint8Array(this.visibleNodes.length * 4);\r\n\t\tlet offsets = new Map();\r\n\r\n\t\tfor(let i = 0; i < this.visibleNodes.length; i++){\r\n\t\t\tlet node = this.visibleNodes[i];\r\n\r\n\t\t\toffsets[node] = i;\r\n\t\t}\r\n\r\n\r\n\t\treturn {\r\n\t\t\tdata: data,\r\n\t\t\toffsets: offsets,\r\n\t\t};\r\n\t}\r\n\r\n}\r\n\r\nexport class ProfileWindow extends EventDispatcher {\r\n\tconstructor (viewer) {\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.elRoot = $('#profile_window');\r\n\t\tthis.renderArea = this.elRoot.find('#profileCanvasContainer');\r\n\t\tthis.svg = d3.select('svg#profileSVG');\r\n\t\tthis.mouseIsDown = false;\r\n\r\n\t\tthis.projectedBox = new THREE.Box3();\r\n\t\tthis.pointclouds = new Map();\r\n\t\tthis.numPoints = 0;\r\n\t\tthis.lastAddPointsTimestamp = undefined;\r\n\r\n\t\tthis.mouse = new THREE.Vector2(0, 0);\r\n\t\tthis.scale = new THREE.Vector3(1, 1, 1);\r\n\r\n\t\tthis.autoFitEnabled = true; // completely disable/enable\r\n\t\tthis.autoFit = false; // internal\r\n\r\n\t\tlet cwIcon = `${exports.resourcePath}/icons/arrow_cw.svg`;\r\n\t\t$('#potree_profile_rotate_cw').attr('src', cwIcon);\r\n\r\n\t\tlet ccwIcon = `${exports.resourcePath}/icons/arrow_ccw.svg`;\r\n\t\t$('#potree_profile_rotate_ccw').attr('src', ccwIcon);\r\n\t\t\r\n\t\tlet forwardIcon = `${exports.resourcePath}/icons/arrow_up.svg`;\r\n\t\t$('#potree_profile_move_forward').attr('src', forwardIcon);\r\n\r\n\t\tlet backwardIcon = `${exports.resourcePath}/icons/arrow_down.svg`;\r\n\t\t$('#potree_profile_move_backward').attr('src', backwardIcon);\r\n\r\n\t\tlet dxf2DIcon = `${exports.resourcePath}/icons/file_dxf_2d.svg`;\r\n\t\t$('#potree_download_dxf2D_icon').attr('src', dxf2DIcon);\r\n\r\n\t\tlet dxf3DIcon = `${exports.resourcePath}/icons/file_dxf_3d.svg`;\r\n\t\t$('#potree_download_dxf3D_icon').attr('src', dxf3DIcon);\r\n\r\n\t\tlet csvIcon = `${exports.resourcePath}/icons/file_csv_2d.svg`;\r\n\t\t$('#potree_download_csv_icon').attr('src', csvIcon);\r\n\r\n\t\tlet lasIcon = `${exports.resourcePath}/icons/file_las_3d.svg`;\r\n\t\t$('#potree_download_las_icon').attr('src', lasIcon);\r\n\r\n\t\tlet closeIcon = `${exports.resourcePath}/icons/close.svg`;\r\n\t\t$('#closeProfileContainer').attr(\"src\", closeIcon);\r\n\r\n\t\tthis.initTHREE();\r\n\t\tthis.initSVG();\r\n\t\tthis.initListeners();\r\n\r\n\t\tthis.pRenderer = new Renderer(this.renderer);\r\n\r\n\t\tthis.elRoot.i18n();\r\n\t}\r\n\r\n\tinitListeners () {\r\n\t\t$(window).resize(() => {\r\n\t\t\tif (this.enabled) {\r\n\t\t\tthis.render();\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.renderArea.mousedown(e => {\r\n\t\t\tthis.mouseIsDown = true;\r\n\t\t});\r\n\r\n\t\tthis.renderArea.mouseup(e => {\r\n\t\t\tthis.mouseIsDown = false;\r\n\t\t});\r\n\r\n\t\tlet viewerPickSphereSizeHandler = () => {\r\n\t\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\t\t\tlet domElement = this.viewer.renderer.domElement;\r\n\t\t\tlet distance = this.viewerPickSphere.position.distanceTo(camera.position);\r\n\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, domElement.clientWidth, domElement.clientHeight);\r\n\t\t\tlet scale = (10 / pr);\r\n\t\t\tthis.viewerPickSphere.scale.set(scale, scale, scale);\r\n\t\t};\r\n\r\n\t\tthis.renderArea.mousemove(e => {\r\n\t\t\tif (this.pointclouds.size === 0) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tlet rect = this.renderArea[0].getBoundingClientRect();\r\n\t\t\tlet x = e.clientX - rect.left;\r\n\t\t\tlet y = e.clientY - rect.top;\r\n\r\n\t\t\tlet newMouse = new THREE.Vector2(x, y);\r\n\r\n\t\t\tif (this.mouseIsDown) {\r\n\t\t\t\t// DRAG\r\n\t\t\t\tthis.autoFit = false;\r\n\t\t\t\tthis.lastDrag = new Date().getTime();\r\n\r\n\t\t\t\tlet cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)];\r\n\t\t\t\tlet ncPos = [this.scaleX.invert(newMouse.x), this.scaleY.invert(newMouse.y)];\r\n\r\n\t\t\t\tthis.camera.position.x -= ncPos[0] - cPos[0];\r\n\t\t\t\tthis.camera.position.z -= ncPos[1] - cPos[1];\r\n\r\n\t\t\t\tthis.render();\r\n\t\t\t} else if (this.pointclouds.size > 0) {\r\n\t\t\t\t// FIND HOVERED POINT\r\n\t\t\t\tlet radius = Math.abs(this.scaleX.invert(0) - this.scaleX.invert(40));\r\n\t\t\t\tlet mileage = this.scaleX.invert(newMouse.x);\r\n\t\t\t\tlet elevation = this.scaleY.invert(newMouse.y);\r\n\r\n\t\t\t\tlet closest = this.selectPoint(mileage, elevation, radius);\r\n\r\n\t\t\t\tif (closest) {\r\n\t\t\t\t\tlet point = closest.point;\r\n\r\n\t\t\t\t\tlet position = new Float64Array([\r\n\t\t\t\t\t\tpoint.position[0] + closest.pointcloud.position.x,\r\n\t\t\t\t\t\tpoint.position[1] + closest.pointcloud.position.y,\r\n\t\t\t\t\t\tpoint.position[2] + closest.pointcloud.position.z\r\n\t\t\t\t\t]);\r\n\r\n\t\t\t\t\tthis.elRoot.find('#profileSelectionProperties').fadeIn(200);\r\n\t\t\t\t\tthis.pickSphere.visible = true;\r\n\t\t\t\t\tthis.pickSphere.scale.set(0.5 * radius, 0.5 * radius, 0.5 * radius);\r\n\t\t\t\t\tthis.pickSphere.position.set(point.mileage, 0, position[2]);\r\n\r\n\t\t\t\t\tthis.viewerPickSphere.position.set(...position);\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(!this.viewer.scene.scene.children.includes(this.viewerPickSphere)){\r\n\t\t\t\t\t\tthis.viewer.scene.scene.add(this.viewerPickSphere);\r\n\t\t\t\t\t\tif(!this.viewer.hasEventListener(\"update\", viewerPickSphereSizeHandler)){\r\n\t\t\t\t\t\t\tthis.viewer.addEventListener(\"update\", viewerPickSphereSizeHandler);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tlet info = this.elRoot.find('#profileSelectionProperties');\r\n\t\t\t\t\tlet html = '';\r\n\r\n\t\t\t\t\tfor (let attributeName of Object.keys(point)) {\r\n\r\n\t\t\t\t\t\tlet value = point[attributeName];\r\n\t\t\t\t\t\tlet attribute = closest.pointcloud.getAttribute(attributeName);\r\n\r\n\t\t\t\t\t\tlet transform = value => value;\r\n\t\t\t\t\t\tif(attribute && attribute.type.size > 4){\r\n\t\t\t\t\t\t\tlet range = attribute.initialRange;\r\n\t\t\t\t\t\t\tlet scale = 1 / (range[1] - range[0]);\r\n\t\t\t\t\t\t\tlet offset = range[0];\r\n\t\t\t\t\t\t\ttransform = value => value / scale + offset;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\tif (attributeName === 'position') {\r\n\t\t\t\t\t\t\tlet values = [...position].map(v => Utils.addCommas(v.toFixed(3)));\r\n\t\t\t\t\t\t\thtml += `\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t`;\r\n\t\t\t\t\t\t} else if (attributeName === 'rgba') {\r\n\t\t\t\t\t\t\thtml += `\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t`;\r\n\t\t\t\t\t\t} else if (attributeName === 'normal') {\r\n\t\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t\t} else if (attributeName === 'mileage') {\r\n\t\t\t\t\t\t\thtml += `\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t`;\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\thtml += `\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t`;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\thtml += '
x${values[0]}
y${values[1]}
z${values[2]}
${attributeName}${value.join(', ')}
${attributeName}${value.toFixed(3)}
${attributeName}${transform(value)}
';\r\n\t\t\t\t\tinfo.html(html);\r\n\r\n\t\t\t\t\tthis.selectedPoint = point;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// this.pickSphere.visible = false;\r\n\t\t\t\t\t// this.selectedPoint = null;\r\n\r\n\t\t\t\t\tthis.viewer.scene.scene.add(this.viewerPickSphere);\r\n\r\n\t\t\t\t\tlet index = this.viewer.scene.scene.children.indexOf(this.viewerPickSphere);\r\n\t\t\t\t\tif(index >= 0){\r\n\t\t\t\t\t\tthis.viewer.scene.scene.children.splice(index, 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.viewer.removeEventListener(\"update\", viewerPickSphereSizeHandler);\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t}\r\n\t\t\t\tthis.render();\r\n\t\t\t}\r\n\r\n\t\t\tthis.mouse.copy(newMouse);\r\n\t\t});\r\n\r\n\t\tlet onWheel = e => {\r\n\t\t\tthis.autoFit = false;\r\n\r\n\t\t\tlet delta = 0;\r\n\t\t\tif (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9\r\n\t\t\t\tdelta = e.wheelDelta;\r\n\t\t\t} else if (e.detail !== undefined) { // Firefox\r\n\t\t\t\tdelta = -e.detail;\r\n\t\t\t}\r\n\r\n\t\t\tlet ndelta = Math.sign(delta);\r\n\r\n\t\t\tlet cPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)];\r\n\r\n\t\t\tif (ndelta > 0) {\r\n\t\t\t\t// + 10%\r\n\t\t\t\tthis.scale.multiplyScalar(1.1);\r\n\t\t\t} else {\r\n\t\t\t\t// - 10%\r\n\t\t\t\tthis.scale.multiplyScalar(100 / 110);\r\n\t\t\t}\r\n\r\n\t\t\tthis.updateScales();\r\n\t\t\tlet ncPos = [this.scaleX.invert(this.mouse.x), this.scaleY.invert(this.mouse.y)];\r\n\r\n\t\t\tthis.camera.position.x -= ncPos[0] - cPos[0];\r\n\t\t\tthis.camera.position.z -= ncPos[1] - cPos[1];\r\n\r\n\t\t\tthis.render();\r\n\t\t\tthis.updateScales();\r\n\t\t};\r\n\t\t$(this.renderArea)[0].addEventListener('mousewheel', onWheel, false);\r\n\t\t$(this.renderArea)[0].addEventListener('DOMMouseScroll', onWheel, false); // Firefox\r\n\r\n\t\t$('#closeProfileContainer').click(() => {\r\n\t\t\tthis.hide();\r\n\t\t});\r\n\r\n\t\tlet getProfilePoints = (truePosition) => {\r\n\t\t\tlet points = new Points();\r\n\t\t\t\r\n\t\t\tfor(let [pointcloud, entry] of this.pointclouds){\r\n\t\t\t\tfor(let pointSet of entry.points){\r\n\r\n\t\t\t\t\tlet originPos = pointSet.data.position;\r\n\t\t\t\t\tlet truePointPosition = new Float64Array(originPos);\r\n\t\t\t\t\tfor(let i = 0; i < pointSet.numPoints; i++){\r\n\r\n\t\t\t\t\t\tif (truePosition === true) {\r\n\t\t\t\t\t\t\ttruePointPosition[3 * i + 0] += pointcloud.position.x;\r\n\t\t\t\t\t\t\ttruePointPosition[3 * i + 1] += pointcloud.position.y;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\ttruePointPosition[3 * i + 2] += pointcloud.position.z;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tpointSet.data.position = truePointPosition;\r\n\t\t\t\t\tpoints.add(pointSet);\r\n\t\t\t\t\tpointSet.data.position = originPos;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn points;\r\n\t\t};\r\n\r\n\t\t$('#potree_download_dxf2D_icon').click(() => {\r\n\t\t\t\r\n\t\t\tconst points = getProfilePoints();\r\n\r\n\t\t\tconst string = DXFProfileExporter.toString(points, true);\r\n\r\n\t\t\tconst blob = new Blob([string], {type: \"text/string\"});\r\n\t\t\t$('#potree_download_profile_dxf2D_link').attr('href', URL.createObjectURL(blob));\r\n\t\t});\r\n\r\n\t\t$('#potree_download_dxf3D_icon').click(() => {\r\n\t\t\t\r\n\t\t\tconst points = getProfilePoints(true);\r\n\r\n\t\t\tconst string = DXFProfileExporter.toString(points);\r\n\r\n\t\t\tconst blob = new Blob([string], {type: \"text/string\"});\r\n\t\t\t$('#potree_download_profile_dxf3D_link').attr('href', URL.createObjectURL(blob));\r\n\t\t});\r\n\r\n\t\t$('#potree_download_csv_icon').click(() => {\r\n\t\t\t\r\n\t\t\tlet points = getProfilePoints(true);\r\n\r\n\t\t\tlet string = CSVExporter.toString(points);\r\n\r\n\t\t\tlet blob = new Blob([string], {type: \"text/string\"});\r\n\t\t\t$('#potree_download_profile_ortho_link').attr('href', URL.createObjectURL(blob));\r\n\t\t});\r\n\r\n\t\t$('#potree_download_las_icon').click(() => {\r\n\r\n\t\t\tlet points = getProfilePoints(true);\r\n\r\n\t\t\tlet buffer = LASExporter.toLAS(points);\r\n\r\n\t\t\tlet blob = new Blob([buffer], {type: \"application/octet-binary\"});\r\n\t\t\t$('#potree_download_profile_link').attr('href', URL.createObjectURL(blob));\r\n\t\t});\r\n\t}\r\n\r\n\tselectPoint (mileage, elevation, radius) {\r\n\t\tlet closest = {\r\n\t\t\tdistance: Infinity,\r\n\t\t\tpointcloud: null,\r\n\t\t\tpoints: null,\r\n\t\t\tindex: null\r\n\t\t};\r\n\r\n\t\tlet pointBox = new THREE.Box2(\r\n\t\t\tnew THREE.Vector2(mileage - radius, elevation - radius),\r\n\t\t\tnew THREE.Vector2(mileage + radius, elevation + radius));\r\n\r\n\t\tlet numTested = 0;\r\n\t\tlet numSkipped = 0;\r\n\t\tlet numTestedPoints = 0;\r\n\t\tlet numSkippedPoints = 0;\r\n\r\n\t\tfor (let [pointcloud, entry] of this.pointclouds) {\r\n\t\t\tfor(let points of entry.points){\r\n\r\n\t\t\t\tlet collisionBox = new THREE.Box2(\r\n\t\t\t\t\tnew THREE.Vector2(points.projectedBox.min.x, points.projectedBox.min.z),\r\n\t\t\t\t\tnew THREE.Vector2(points.projectedBox.max.x, points.projectedBox.max.z)\r\n\t\t\t\t);\r\n\r\n\t\t\t\tlet intersects = collisionBox.intersectsBox(pointBox);\r\n\r\n\t\t\t\tif(!intersects){\r\n\t\t\t\t\tnumSkipped++;\r\n\t\t\t\t\tnumSkippedPoints += points.numPoints;\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tnumTested++;\r\n\t\t\t\tnumTestedPoints += points.numPoints\r\n\r\n\t\t\t\tfor (let i = 0; i < points.numPoints; i++) {\r\n\r\n\t\t\t\t\tlet m = points.data.mileage[i] - mileage;\r\n\t\t\t\t\tlet e = points.data.position[3 * i + 2] - elevation + pointcloud.position.z;\r\n\t\t\t\t\tlet r = Math.sqrt(m * m + e * e);\r\n\r\n\t\t\t\t\tconst withinDistance = r < radius && r < closest.distance;\r\n\t\t\t\t\tlet unfilteredClass = true;\r\n\r\n\t\t\t\t\tif(points.data.classification){\r\n\t\t\t\t\t\tconst classification = pointcloud.material.classification;\r\n\r\n\t\t\t\t\t\tconst pointClassID = points.data.classification[i];\r\n\t\t\t\t\t\tconst pointClassValue = classification[pointClassID];\r\n\r\n\t\t\t\t\t\tif(pointClassValue && (!pointClassValue.visible || pointClassValue.color.w === 0)){\r\n\t\t\t\t\t\t\tunfilteredClass = false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif (withinDistance && unfilteredClass) {\r\n\t\t\t\t\t\tclosest = {\r\n\t\t\t\t\t\t\tdistance: r,\r\n\t\t\t\t\t\t\tpointcloud: pointcloud,\r\n\t\t\t\t\t\t\tpoints: points,\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t//console.log(`nodes: ${numTested}, ${numSkipped} || points: ${numTestedPoints}, ${numSkippedPoints}`);\r\n\r\n\t\tif (closest.distance < Infinity) {\r\n\t\t\tlet points = closest.points;\r\n\r\n\t\t\tlet point = {};\r\n\r\n\t\t\tlet attributes = Object.keys(points.data);\r\n\t\t\tfor (let attribute of attributes) {\r\n\t\t\t\tlet attributeData = points.data[attribute];\r\n\t\t\t\tlet itemSize = attributeData.length / points.numPoints;\r\n\t\t\t\tlet value = attributeData.subarray(itemSize * closest.index, itemSize * closest.index + itemSize);\r\n\r\n\t\t\t\tif (value.length === 1) {\r\n\t\t\t\t\tpoint[attribute] = value[0];\r\n\t\t\t\t} else {\r\n\t\t\t\t\tpoint[attribute] = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tclosest.point = point;\r\n\r\n\t\t\treturn closest;\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tinitTHREE () {\r\n\t\tthis.renderer = new THREE.WebGLRenderer({alpha: true, premultipliedAlpha: false});\r\n\t\tthis.renderer.setClearColor(0x000000, 0);\r\n\t\tthis.renderer.setSize(10, 10);\r\n\t\tthis.renderer.autoClear = false;\r\n\t\tthis.renderArea.append($(this.renderer.domElement));\r\n\t\tthis.renderer.domElement.tabIndex = '2222';\r\n\t\t$(this.renderer.domElement).css('width', '100%');\r\n\t\t$(this.renderer.domElement).css('height', '100%');\r\n\r\n\r\n\t\t{\r\n\t\t\tlet gl = this.renderer.getContext();\r\n\r\n\t\t\tif(gl.createVertexArray == null){\r\n\t\t\t\tlet extVAO = gl.getExtension('OES_vertex_array_object');\r\n\r\n\t\t\t\tif(!extVAO){\r\n\t\t\t\t\tthrow new Error(\"OES_vertex_array_object extension not supported\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO);\r\n\t\t\t\tgl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t}\r\n\r\n\t\tthis.camera = new THREE.OrthographicCamera(-1000, 1000, 1000, -1000, -1000, 1000);\r\n\t\tthis.camera.up.set(0, 0, 1);\r\n\t\tthis.camera.rotation.order = \"ZXY\";\r\n\t\tthis.camera.rotation.x = Math.PI / 2.0;\r\n\t\r\n\r\n\t\tthis.scene = new THREE.Scene();\r\n\t\tthis.profileScene = new THREE.Scene();\r\n\r\n\t\tlet sg = new THREE.SphereGeometry(1, 16, 16);\r\n\t\tlet sm = new THREE.MeshNormalMaterial();\r\n\t\tthis.pickSphere = new THREE.Mesh(sg, sm);\r\n\t\tthis.scene.add(this.pickSphere);\r\n\r\n\t\tthis.viewerPickSphere = new THREE.Mesh(sg, sm);\r\n\t}\r\n\r\n\tinitSVG () {\r\n\t\tlet width = this.renderArea[0].clientWidth;\r\n\t\tlet height = this.renderArea[0].clientHeight;\r\n\t\tlet marginLeft = this.renderArea[0].offsetLeft;\r\n\r\n\t\tthis.svg.selectAll('*').remove();\r\n\r\n\t\tthis.scaleX = d3.scale.linear()\r\n\t\t\t.domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x])\r\n\t\t\t.range([0, width]);\r\n\t\tthis.scaleY = d3.scale.linear()\r\n\t\t\t.domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z])\r\n\t\t\t.range([height, 0]);\r\n\r\n\t\tthis.xAxis = d3.svg.axis()\r\n\t\t\t.scale(this.scaleX)\r\n\t\t\t.orient('bottom')\r\n\t\t\t.innerTickSize(-height)\r\n\t\t\t.outerTickSize(1)\r\n\t\t\t.tickPadding(10)\r\n\t\t\t.ticks(width / 50);\r\n\r\n\t\tthis.yAxis = d3.svg.axis()\r\n\t\t\t.scale(this.scaleY)\r\n\t\t\t.orient('left')\r\n\t\t\t.innerTickSize(-width)\r\n\t\t\t.outerTickSize(1)\r\n\t\t\t.tickPadding(10)\r\n\t\t\t.ticks(height / 20);\r\n\r\n\t\tthis.elXAxis = this.svg.append('g')\r\n\t\t\t.attr('class', 'x axis')\r\n\t\t\t.attr('transform', `translate(${marginLeft}, ${height})`)\r\n\t\t\t.call(this.xAxis);\r\n\r\n\t\tthis.elYAxis = this.svg.append('g')\r\n\t\t\t.attr('class', 'y axis')\r\n\t\t\t.attr('transform', `translate(${marginLeft}, 0)`)\r\n\t\t\t.call(this.yAxis);\r\n\t}\r\n\r\n\taddPoints (pointcloud, points) {\r\n\r\n\t\tif(points.numPoints === 0){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet entry = this.pointclouds.get(pointcloud);\r\n\t\tif(!entry){\r\n\t\t\tentry = new ProfileFakeOctree(pointcloud);\r\n\t\t\tthis.pointclouds.set(pointcloud, entry);\r\n\t\t\tthis.profileScene.add(entry);\r\n\r\n\t\t\tlet materialChanged = () => {\r\n\t\t\t\tthis.render();\r\n\t\t\t};\r\n\r\n\t\t\tmaterialChanged();\r\n\r\n\t\t\tpointcloud.material.addEventListener('material_property_changed', materialChanged);\r\n\t\t\tthis.addEventListener(\"on_reset_once\", () => {\r\n\t\t\t\tpointcloud.material.removeEventListener('material_property_changed', materialChanged);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tentry.addPoints(points);\r\n\t\tthis.projectedBox.union(entry.projectedBox);\r\n\r\n\t\tif (this.autoFit && this.autoFitEnabled) { \r\n\t\t\tlet width = this.renderArea[0].clientWidth;\r\n\t\t\tlet height = this.renderArea[0].clientHeight;\r\n\r\n\t\t\tlet size = this.projectedBox.getSize(new THREE.Vector3());\r\n\r\n\t\t\tlet sx = width / size.x;\r\n\t\t\tlet sy = height / size.z;\r\n\t\t\tlet scale = Math.min(sx, sy);\r\n\r\n\t\t\tlet center = this.projectedBox.getCenter(new THREE.Vector3());\r\n\t\t\tthis.scale.set(scale, scale, 1);\r\n\t\t\tthis.camera.position.copy(center);\r\n\r\n\t\t\t//console.log(\"camera: \", this.camera.position.toArray().join(\", \"));\r\n\t\t}\r\n\r\n\t\t//console.log(entry);\r\n\r\n\t\tthis.render();\r\n\r\n\t\tlet numPoints = 0;\r\n\t\tfor (let [key, value] of this.pointclouds.entries()) {\r\n\t\t\tnumPoints += value.points.reduce( (a, i) => a + i.numPoints, 0);\r\n\t\t}\r\n\t\t$(`#profile_num_points`).html(Utils.addCommas(numPoints));\r\n\r\n\t}\r\n\r\n\treset () {\r\n\t\tthis.lastReset = new Date().getTime();\r\n\r\n\t\tthis.dispatchEvent({type: \"on_reset_once\"});\r\n\t\tthis.removeEventListeners(\"on_reset_once\");\r\n\r\n\t\tthis.autoFit = true;\r\n\t\tthis.projectedBox = new THREE.Box3();\r\n\r\n\t\tfor(let [key, entry] of this.pointclouds){\r\n\t\t\tentry.dispose();\r\n\t\t}\r\n\r\n\t\tthis.pointclouds.clear();\r\n\t\tthis.mouseIsDown = false;\r\n\t\tthis.mouse.set(0, 0);\r\n\r\n\t\tif(this.autoFitEnabled){\r\n\t\t\tthis.scale.set(1, 1, 1);\r\n\t\t}\r\n\t\tthis.pickSphere.visible = false;\r\n\r\n\t\tthis.elRoot.find('#profileSelectionProperties').hide();\r\n\r\n\t\tthis.render();\r\n\t}\r\n\r\n\tshow () {\r\n\t\tthis.elRoot.fadeIn();\r\n\t\tthis.enabled = true;\r\n\t}\r\n\r\n\thide () {\r\n\t\tthis.elRoot.fadeOut();\r\n\t\tthis.enabled = false;\r\n\t}\r\n\r\n\tupdateScales () {\r\n\r\n\t\tlet width = this.renderArea[0].clientWidth;\r\n\t\tlet height = this.renderArea[0].clientHeight;\r\n\r\n\t\tlet left = (-width / 2) / this.scale.x;\r\n\t\tlet right = (+width / 2) / this.scale.x;\r\n\t\tlet top = (+height / 2) / this.scale.y;\r\n\t\tlet bottom = (-height / 2) / this.scale.y;\r\n\r\n\t\tthis.camera.left = left;\r\n\t\tthis.camera.right = right;\r\n\t\tthis.camera.top = top;\r\n\t\tthis.camera.bottom = bottom;\r\n\t\tthis.camera.updateProjectionMatrix();\r\n\r\n\t\tthis.scaleX.domain([this.camera.left + this.camera.position.x, this.camera.right + this.camera.position.x])\r\n\t\t\t.range([0, width]);\r\n\t\tthis.scaleY.domain([this.camera.bottom + this.camera.position.z, this.camera.top + this.camera.position.z])\r\n\t\t\t.range([height, 0]);\r\n\r\n\t\tlet marginLeft = this.renderArea[0].offsetLeft;\r\n\r\n\t\tthis.xAxis.scale(this.scaleX)\r\n\t\t\t.orient('bottom')\r\n\t\t\t.innerTickSize(-height)\r\n\t\t\t.outerTickSize(1)\r\n\t\t\t.tickPadding(10)\r\n\t\t\t.ticks(width / 50);\r\n\t\tthis.yAxis.scale(this.scaleY)\r\n\t\t\t.orient('left')\r\n\t\t\t.innerTickSize(-width)\r\n\t\t\t.outerTickSize(1)\r\n\t\t\t.tickPadding(10)\r\n\t\t\t.ticks(height / 20);\r\n\r\n\r\n\t\tthis.elXAxis\r\n\t\t\t.attr('transform', `translate(${marginLeft}, ${height})`)\r\n\t\t\t.call(this.xAxis);\r\n\t\tthis.elYAxis\r\n\t\t\t.attr('transform', `translate(${marginLeft}, 0)`)\r\n\t\t\t.call(this.yAxis);\r\n\t}\r\n\r\n\trequestScaleUpdate(){\r\n\r\n\t\tlet threshold = 100;\r\n\t\tlet allowUpdate = ((this.lastReset === undefined) || (this.lastScaleUpdate === undefined)) \r\n\t\t\t|| ((new Date().getTime() - this.lastReset) > threshold && (new Date().getTime() - this.lastScaleUpdate) > threshold);\r\n\r\n\t\tif(allowUpdate){\r\n\r\n\t\t\tthis.updateScales();\r\n\r\n\t\t\tthis.lastScaleUpdate = new Date().getTime();\r\n\r\n\t\t\t\r\n\r\n\t\t\tthis.scaleUpdatePending = false;\r\n\t\t}else if(!this.scaleUpdatePending) {\r\n\t\t\tsetTimeout(this.requestScaleUpdate.bind(this), 100);\r\n\t\t\tthis.scaleUpdatePending = true;\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\trender () {\r\n\t\tlet width = this.renderArea[0].clientWidth;\r\n\t\tlet height = this.renderArea[0].clientHeight;\r\n\r\n\t\tlet {renderer, pRenderer, camera, profileScene, scene} = this;\r\n\t\tlet {scaleX, pickSphere} = this;\r\n\r\n\t\trenderer.setSize(width, height);\r\n\r\n\t\trenderer.setClearColor(0x000000, 0);\r\n\t\trenderer.clear(true, true, false);\r\n\r\n\t\tfor(let pointcloud of this.pointclouds.keys()){\r\n\t\t\tlet source = pointcloud.material;\r\n\t\t\tlet target = this.pointclouds.get(pointcloud).material;\r\n\t\t\t\r\n\t\t\tcopyMaterial(source, target);\r\n\t\t\ttarget.size = 2;\r\n\t\t}\r\n\t\t\r\n\t\tpRenderer.render(profileScene, camera, null);\r\n\r\n\t\tlet radius = Math.abs(scaleX.invert(0) - scaleX.invert(5));\r\n\r\n\t\tif (radius === 0) {\r\n\t\t\tpickSphere.visible = false;\r\n\t\t} else {\r\n\t\t\tpickSphere.scale.set(radius, radius, radius);\r\n\t\t\tpickSphere.visible = true;\r\n\t\t}\r\n\t\t\r\n\t\trenderer.render(scene, camera);\r\n\r\n\t\tthis.requestScaleUpdate();\r\n\t}\r\n};\r\n\r\nexport class ProfileWindowController {\r\n\tconstructor (viewer) {\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.profileWindow = viewer.profileWindow;\r\n\t\tthis.profile = null;\r\n\t\tthis.numPoints = 0;\r\n\t\tthis.threshold = 60 * 1000;\r\n\t\tthis.rotateAmount = 10;\r\n\r\n\t\tthis.scheduledRecomputeTime = null;\r\n\r\n\t\tthis.enabled = true;\r\n\r\n\t\tthis.requests = [];\r\n\r\n\t\tthis._recompute = () => { this.recompute(); };\r\n\r\n\t\tthis.viewer.addEventListener(\"scene_changed\", e => {\r\n\t\t\te.oldScene.removeEventListener(\"pointcloud_added\", this._recompute);\r\n\t\t\te.scene.addEventListener(\"pointcloud_added\", this._recompute);\r\n\t\t});\r\n\t\tthis.viewer.scene.addEventListener(\"pointcloud_added\", this._recompute);\r\n\r\n\t\t$(\"#potree_profile_rotate_amount\").val(parseInt(this.rotateAmount));\r\n\t\t$(\"#potree_profile_rotate_amount\").on(\"input\", (e) => {\r\n\t\t\tconst str = $(\"#potree_profile_rotate_amount\").val();\r\n\r\n\t\t\tif(!isNaN(str)){\r\n\t\t\t\tconst value = parseFloat(str);\r\n\t\t\t\tthis.rotateAmount = value;\r\n\t\t\t\t$(\"#potree_profile_rotate_amount\").css(\"background-color\", \"\")\r\n\t\t\t}else{\r\n\t\t\t\t$(\"#potree_profile_rotate_amount\").css(\"background-color\", \"#ff9999\")\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tconst rotate = (radians) => {\r\n\t\t\tconst profile = this.profile;\r\n\t\t\tconst points = profile.points;\r\n\t\t\tconst start = points[0];\r\n\t\t\tconst end = points[points.length - 1];\r\n\t\t\tconst center = start.clone().add(end).multiplyScalar(0.5);\r\n\r\n\t\t\tconst mMoveOrigin = new THREE.Matrix4().makeTranslation(-center.x, -center.y, -center.z);\r\n\t\t\tconst mRotate = new THREE.Matrix4().makeRotationZ(radians);\r\n\t\t\tconst mMoveBack = new THREE.Matrix4().makeTranslation(center.x, center.y, center.z);\r\n\t\t\t//const transform = mMoveOrigin.multiply(mRotate).multiply(mMoveBack);\r\n\t\t\tconst transform = mMoveBack.multiply(mRotate).multiply(mMoveOrigin);\r\n\r\n\t\t\tconst rotatedPoints = points.map( point => point.clone().applyMatrix4(transform) );\r\n\r\n\t\t\tthis.profileWindow.autoFitEnabled = false;\r\n\r\n\t\t\tfor(let i = 0; i < points.length; i++){\r\n\t\t\t\tprofile.setPosition(i, rotatedPoints[i]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t$(\"#potree_profile_rotate_cw\").click( () => {\r\n\t\t\tconst radians = THREE.Math.degToRad(this.rotateAmount);\r\n\t\t\trotate(-radians);\r\n\t\t});\r\n\r\n\t\t$(\"#potree_profile_rotate_ccw\").click( () => {\r\n\t\t\tconst radians = THREE.Math.degToRad(this.rotateAmount);\r\n\t\t\trotate(radians);\r\n\t\t});\r\n\r\n\t\t$(\"#potree_profile_move_forward\").click( () => {\r\n\t\t\tconst profile = this.profile;\r\n\t\t\tconst points = profile.points;\r\n\t\t\tconst start = points[0];\r\n\t\t\tconst end = points[points.length - 1];\r\n\r\n\t\t\tconst dir = end.clone().sub(start).normalize();\r\n\t\t\tconst up = new THREE.Vector3(0, 0, 1);\r\n\t\t\tconst forward = up.cross(dir);\r\n\t\t\tconst move = forward.clone().multiplyScalar(profile.width / 2);\r\n\r\n\t\t\tthis.profileWindow.autoFitEnabled = false;\r\n\r\n\t\t\tfor(let i = 0; i < points.length; i++){\r\n\t\t\t\tprofile.setPosition(i, points[i].clone().add(move));\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t$(\"#potree_profile_move_backward\").click( () => {\r\n\t\t\tconst profile = this.profile;\r\n\t\t\tconst points = profile.points;\r\n\t\t\tconst start = points[0];\r\n\t\t\tconst end = points[points.length - 1];\r\n\r\n\t\t\tconst dir = end.clone().sub(start).normalize();\r\n\t\t\tconst up = new THREE.Vector3(0, 0, 1);\r\n\t\t\tconst forward = up.cross(dir);\r\n\t\t\tconst move = forward.clone().multiplyScalar(-profile.width / 2);\r\n\r\n\t\t\tthis.profileWindow.autoFitEnabled = false;\r\n\r\n\t\t\tfor(let i = 0; i < points.length; i++){\r\n\t\t\t\tprofile.setPosition(i, points[i].clone().add(move));\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tsetProfile (profile) {\r\n\t\tif (this.profile !== null && this.profile !== profile) {\r\n\t\t\tthis.profile.removeEventListener('marker_moved', this._recompute);\r\n\t\t\tthis.profile.removeEventListener('marker_added', this._recompute);\r\n\t\t\tthis.profile.removeEventListener('marker_removed', this._recompute);\r\n\t\t\tthis.profile.removeEventListener('width_changed', this._recompute);\r\n\t\t}\r\n\r\n\t\tthis.profile = profile;\r\n\r\n\t\t{\r\n\t\t\tthis.profile.addEventListener('marker_moved', this._recompute);\r\n\t\t\tthis.profile.addEventListener('marker_added', this._recompute);\r\n\t\t\tthis.profile.addEventListener('marker_removed', this._recompute);\r\n\t\t\tthis.profile.addEventListener('width_changed', this._recompute);\r\n\t\t}\r\n\r\n\t\tthis.recompute();\r\n\t}\r\n\r\n\treset () {\r\n\t\tthis.profileWindow.reset();\r\n\r\n\t\tthis.numPoints = 0;\r\n\r\n\t\tif (this.profile) {\r\n\t\t\tfor (let request of this.requests) {\r\n\t\t\t\trequest.cancel();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprogressHandler (pointcloud, progress) {\r\n\t\tfor (let segment of progress.segments) {\r\n\t\t\tthis.profileWindow.addPoints(pointcloud, segment.points);\r\n\t\t\tthis.numPoints += segment.points.numPoints;\r\n\t\t}\r\n\t}\r\n\r\n\tcancel () {\r\n\t\tfor (let request of this.requests) {\r\n\t\t\trequest.cancel();\r\n\t\t\t// request.finishLevelThenCancel();\r\n\t\t}\r\n\r\n\t\tthis.requests = [];\r\n\t};\r\n\r\n\tfinishLevelThenCancel(){\r\n\t\tfor (let request of this.requests) {\r\n\t\t\trequest.finishLevelThenCancel();\r\n\t\t}\r\n\r\n\t\tthis.requests = [];\r\n\t}\r\n\r\n\trecompute () {\r\n\t\tif (!this.profile) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (this.scheduledRecomputeTime !== null && this.scheduledRecomputeTime > new Date().getTime()) {\r\n\t\t\treturn;\r\n\t\t} else {\r\n\t\t\tthis.scheduledRecomputeTime = new Date().getTime() + 100;\r\n\t\t}\r\n\t\tthis.scheduledRecomputeTime = null;\r\n\r\n\t\tthis.reset();\r\n\r\n\t\tfor (let pointcloud of this.viewer.scene.pointclouds.filter(p => p.visible)) {\r\n\t\t\tlet request = pointcloud.getPointsInProfile(this.profile, null, {\r\n\t\t\t\t'onProgress': (event) => {\r\n\t\t\t\t\tif (!this.enabled) {\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.progressHandler(pointcloud, event.points);\r\n\r\n\t\t\t\t\tif (this.numPoints > this.threshold) {\r\n\t\t\t\t\t\tthis.finishLevelThenCancel();\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t'onFinish': (event) => {\r\n\t\t\t\t\tif (!this.enabled) {\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t},\r\n\t\t\t\t'onCancel': () => {\r\n\t\t\t\t\tif (!this.enabled) {\r\n\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.requests.push(request);\r\n\t\t}\r\n\t}\r\n};\r\n","/**\r\n *\r\n * @author sigeom sa / http://sigeom.ch\r\n * @author Ioda-Net Sàrl / https://www.ioda-net.ch/\r\n * @author Markus Schütz / http://potree.org\r\n *\r\n */\r\n\r\nimport {Measure} from \"../utils/Measure.js\";\r\n\r\nexport class GeoJSONExporter{\r\n\r\n\tstatic measurementToFeatures (measurement) {\r\n\t\tlet coords = measurement.points.map(e => e.position.toArray());\r\n\r\n\t\tlet features = [];\r\n\r\n\t\tif (coords.length === 1) {\r\n\t\t\tlet feature = {\r\n\t\t\t\ttype: 'Feature',\r\n\t\t\t\tgeometry: {\r\n\t\t\t\t\ttype: 'Point',\r\n\t\t\t\t\tcoordinates: coords[0]\r\n\t\t\t\t},\r\n\t\t\t\tproperties: {\r\n\t\t\t\t\tname: measurement.name\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tfeatures.push(feature);\r\n\t\t} else if (coords.length > 1 && !measurement.closed) {\r\n\t\t\tlet object = {\r\n\t\t\t\t'type': 'Feature',\r\n\t\t\t\t'geometry': {\r\n\t\t\t\t\t'type': 'LineString',\r\n\t\t\t\t\t'coordinates': coords\r\n\t\t\t\t},\r\n\t\t\t\t'properties': {\r\n\t\t\t\t\tname: measurement.name\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tfeatures.push(object);\r\n\t\t} else if (coords.length > 1 && measurement.closed) {\r\n\t\t\tlet object = {\r\n\t\t\t\t'type': 'Feature',\r\n\t\t\t\t'geometry': {\r\n\t\t\t\t\t'type': 'Polygon',\r\n\t\t\t\t\t'coordinates': [[...coords, coords[0]]]\r\n\t\t\t\t},\r\n\t\t\t\t'properties': {\r\n\t\t\t\t\tname: measurement.name\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tfeatures.push(object);\r\n\t\t}\r\n\r\n\t\tif (measurement.showDistances) {\r\n\t\t\tmeasurement.edgeLabels.forEach((label) => {\r\n\t\t\t\tlet labelPoint = {\r\n\t\t\t\t\ttype: 'Feature',\r\n\t\t\t\t\tgeometry: {\r\n\t\t\t\t\t\ttype: 'Point',\r\n\t\t\t\t\t\tcoordinates: label.position.toArray()\r\n\t\t\t\t\t},\r\n\t\t\t\t\tproperties: {\r\n\t\t\t\t\t\tdistance: label.text\r\n\t\t\t\t\t}\r\n\t\t\t\t};\r\n\t\t\t\tfeatures.push(labelPoint);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tif (measurement.showArea) {\r\n\t\t\tlet point = measurement.areaLabel.position;\r\n\t\t\tlet labelArea = {\r\n\t\t\t\ttype: 'Feature',\r\n\t\t\t\tgeometry: {\r\n\t\t\t\t\ttype: 'Point',\r\n\t\t\t\t\tcoordinates: point.toArray()\r\n\t\t\t\t},\r\n\t\t\t\tproperties: {\r\n\t\t\t\t\tarea: measurement.areaLabel.text\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tfeatures.push(labelArea);\r\n\t\t}\r\n\r\n\t\treturn features;\r\n\t}\r\n\r\n\tstatic toString (measurements) {\r\n\t\tif (!(measurements instanceof Array)) {\r\n\t\t\tmeasurements = [measurements];\r\n\t\t}\r\n\r\n\t\tmeasurements = measurements.filter(m => m instanceof Measure);\r\n\r\n\t\tlet features = [];\r\n\t\tfor (let measure of measurements) {\r\n\t\t\tlet f = GeoJSONExporter.measurementToFeatures(measure);\r\n\r\n\t\t\tfeatures = features.concat(f);\r\n\t\t}\r\n\r\n\t\tlet geojson = {\r\n\t\t\t'type': 'FeatureCollection',\r\n\t\t\t'features': features\r\n\t\t};\r\n\r\n\t\treturn JSON.stringify(geojson, null, '\\t');\r\n\t}\r\n\r\n}\r\n","/**\r\n *\r\n * @author sigeom sa / http://sigeom.ch\r\n * @author Ioda-Net Sàrl / https://www.ioda-net.ch/\r\n * @author Markus Schuetz / http://potree.org\r\n *\r\n */\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Measure} from \"../utils/Measure.js\";\r\n\r\nexport class DXFExporter {\r\n\r\n\tstatic measurementPointSection (measurement) {\r\n\t\tlet position = measurement.points[0].position;\r\n\r\n\t\tif (!position) {\r\n\t\t\treturn '';\r\n\t\t}\r\n\r\n\t\tlet dxfSection = `0\r\nCIRCLE\r\n8\r\nlayer_point\r\n10\r\n${position.x}\r\n20\r\n${position.y}\r\n30\r\n${position.z}\r\n40\r\n1.0\r\n`;\r\n\r\n\t\treturn dxfSection;\r\n\t}\r\n\r\n\tstatic measurementPolylineSection (measurement) {\r\n\t\t// bit code for polygons/polylines:\r\n\t\t// https://www.autodesk.com/techpubs/autocad/acad2000/dxf/polyline_dxf_06.htm\r\n\t\tlet geomCode = 8;\r\n\t\tif (measurement.closed) {\r\n\t\t\tgeomCode += 1;\r\n\t\t}\r\n\r\n\t\tlet dxfSection = `0\r\nPOLYLINE\r\n8\r\nlayer_polyline\r\n62\r\n1\r\n66\r\n1\r\n10\r\n0.0\r\n20\r\n0.0\r\n30\r\n0.0\r\n70\r\n${geomCode}\r\n`;\r\n\r\n\t\tlet xMax = 0.0;\r\n\t\tlet yMax = 0.0;\r\n\t\tlet zMax = 0.0;\r\n\t\tfor (let point of measurement.points) {\r\n\t\t\tpoint = point.position;\r\n\t\t\txMax = Math.max(xMax, point.x);\r\n\t\t\tyMax = Math.max(yMax, point.y);\r\n\t\t\tzMax = Math.max(zMax, point.z);\r\n\r\n\t\t\tdxfSection += `0\r\nVERTEX\r\n8\r\n0\r\n10\r\n${point.x}\r\n20\r\n${point.y}\r\n30\r\n${point.z}\r\n70\r\n32\r\n`;\r\n\t\t}\r\n\t\tdxfSection += `0\r\nSEQEND\r\n`;\r\n\r\n\t\treturn dxfSection;\r\n\t}\r\n\r\n\tstatic measurementSection (measurement) {\r\n\t\t// if(measurement.points.length <= 1){\r\n\t\t//\treturn \"\";\r\n\t\t// }\r\n\r\n\t\tif (measurement.points.length === 0) {\r\n\t\t\treturn '';\r\n\t\t} else if (measurement.points.length === 1) {\r\n\t\t\treturn DXFExporter.measurementPointSection(measurement);\r\n\t\t} else if (measurement.points.length >= 2) {\r\n\t\t\treturn DXFExporter.measurementPolylineSection(measurement);\r\n\t\t}\r\n\t}\r\n\r\n\tstatic toString(measurements){\r\n\t\tif (!(measurements instanceof Array)) {\r\n\t\t\tmeasurements = [measurements];\r\n\t\t}\r\n\t\tmeasurements = measurements.filter(m => m instanceof Measure);\r\n\r\n\t\tlet points = measurements.filter(m => (m instanceof Measure))\r\n\t\t\t.map(m => m.points)\r\n\t\t\t.reduce((a, v) => a.concat(v))\r\n\t\t\t.map(p => p.position);\r\n\r\n\t\tlet min = new THREE.Vector3(Infinity, Infinity, Infinity);\r\n\t\tlet max = new THREE.Vector3(-Infinity, -Infinity, -Infinity);\r\n\t\tfor (let point of points) {\r\n\t\t\tmin.min(point);\r\n\t\t\tmax.max(point);\r\n\t\t}\r\n\r\n\t\tlet dxfHeader = `999\r\nDXF created from potree\r\n0\r\nSECTION\r\n2\r\nHEADER\r\n9\r\n$ACADVER\r\n1\r\nAC1006\r\n9\r\n$INSBASE\r\n10\r\n0.0\r\n20\r\n0.0\r\n30\r\n0.0\r\n9\r\n$EXTMIN\r\n10\r\n${min.x}\r\n20\r\n${min.y}\r\n30\r\n${min.z}\r\n9\r\n$EXTMAX\r\n10\r\n${max.x}\r\n20\r\n${max.y}\r\n30\r\n${max.z}\r\n0\r\nENDSEC\r\n`;\r\n\r\n\t\tlet dxfBody = `0\r\nSECTION\r\n2\r\nENTITIES\r\n`;\r\n\r\n\t\tfor (let measurement of measurements) {\r\n\t\t\tdxfBody += DXFExporter.measurementSection(measurement);\r\n\t\t}\r\n\r\n\t\tdxfBody += `0\r\nENDSEC\r\n`;\r\n\r\n\t\tlet dxf = dxfHeader + dxfBody + '0\\nEOF';\r\n\r\n\t\treturn dxf;\r\n\t}\r\n\r\n}\r\n","\r\n\r\nimport {Utils} from \"../../utils.js\";\r\n\r\nexport class MeasurePanel{\r\n\r\n\tconstructor(viewer, measurement, propertiesPanel){\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.measurement = measurement;\r\n\t\tthis.propertiesPanel = propertiesPanel;\r\n\r\n\t\tthis._update = () => { this.update(); };\r\n\t}\r\n\r\n\tcreateCoordinatesTable(points){\r\n\t\tlet table = $(`\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
xyz
\r\n\t\t`);\r\n\r\n\t\tlet copyIconPath = Potree.resourcePath + '/icons/copy.svg';\r\n\r\n\t\tfor (let point of points) {\r\n\t\t\tlet x = Utils.addCommas(point.x.toFixed(3));\r\n\t\t\tlet y = Utils.addCommas(point.y.toFixed(3));\r\n\t\t\tlet z = Utils.addCommas(point.z.toFixed(3));\r\n\r\n\t\t\tlet row = $(`\r\n\t\t\t\t\r\n\t\t\t\t\t${x}\r\n\t\t\t\t\t${y}\r\n\t\t\t\t\t${z}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t`);\r\n\r\n\t\t\tthis.elCopy = row.find(\"img[name=copy]\");\r\n\t\t\tthis.elCopy.click( () => {\r\n\t\t\t\tlet msg = point.toArray().map(c => c.toFixed(3)).join(\", \");\r\n\t\t\t\tUtils.clipboardCopy(msg);\r\n\r\n\t\t\t\tthis.viewer.postMessage(\r\n\t\t\t\t\t`Copied value to clipboard:
'${msg}'`,\r\n\t\t\t\t\t{duration: 3000});\r\n\t\t\t});\r\n\r\n\t\t\ttable.append(row);\r\n\t\t}\r\n\r\n\t\treturn table;\r\n\t};\r\n\r\n\tcreateAttributesTable(){\r\n\t\tlet elTable = $('
');\r\n\r\n\t\tlet point = this.measurement.points[0];\r\n\t\t\r\n\t\tfor(let attributeName of Object.keys(point)){\r\n\t\t\tif(attributeName === \"position\"){\r\n\t\t\t\r\n\t\t\t}else if(attributeName === \"rgba\"){\r\n\t\t\t\tlet color = point.rgba;\r\n\t\t\t\tlet text = color.join(', ');\r\n\r\n\t\t\t\telTable.append($(`\r\n\t\t\t\t\t\r\n\t\t\t\t\t\trgb\r\n\t\t\t\t\t\t${text}\r\n\t\t\t\t\t\r\n\t\t\t\t`));\r\n\t\t\t}else{\r\n\t\t\t\tlet value = point[attributeName];\r\n\t\t\t\tlet text = value.join(', ');\r\n\r\n\t\t\t\telTable.append($(`\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t${attributeName}\r\n\t\t\t\t\t\t${text}\r\n\t\t\t\t\t\r\n\t\t\t\t`));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn elTable;\r\n\t}\r\n\r\n\tupdate(){\r\n\r\n\t}\r\n};","\r\n\r\nimport {MeasurePanel} from \"./MeasurePanel.js\";\r\nimport {Profile} from \"./../../utils/Profile.js\";\r\n\r\nexport class DistancePanel extends MeasurePanel{\r\n\tconstructor(viewer, measurement, propertiesPanel){\r\n\t\tsuper(viewer, measurement, propertiesPanel);\r\n\r\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\r\n\t\tthis.elContent = $(`\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t`);\r\n\r\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\r\n\t\tthis.elRemove.click( () => {\r\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\r\n\t\t});\r\n\t\t\r\n\t\tthis.elMakeProfile = this.elContent.find(\"input[name=make_profile]\");\r\n\t\tthis.elMakeProfile.click( () => {\r\n\t\t\t//measurement.points;\r\n\t\t\tconst profile = new Profile();\r\n\r\n\t\t\tprofile.name = measurement.name;\r\n\t\t\tprofile.width = measurement.getTotalDistance() / 50;\r\n\r\n\t\t\tfor(const point of measurement.points){\r\n\t\t\t\tprofile.addMarker(point.position.clone());\r\n\t\t\t}\r\n\r\n\t\t\tthis.viewer.scene.addProfile(profile);\r\n\r\n\t\t});\r\n\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\r\n\t\telCoordiantesContainer.empty();\r\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\r\n\r\n\t\tlet positions = this.measurement.points.map(p => p.position);\r\n\t\tlet distances = [];\r\n\t\tfor (let i = 0; i < positions.length - 1; i++) {\r\n\t\t\tlet d = positions[i].distanceTo(positions[i + 1]);\r\n\t\t\tdistances.push(d.toFixed(3));\r\n\t\t}\r\n\r\n\t\tlet totalDistance = this.measurement.getTotalDistance().toFixed(3);\r\n\t\tlet elDistanceTable = this.elContent.find(`#distances_table`);\r\n\t\telDistanceTable.empty();\r\n\r\n\t\tfor (let i = 0; i < distances.length; i++) {\r\n\t\t\tlet label = (i === 0) ? 'Distances: ' : '';\r\n\t\t\tlet distance = distances[i];\r\n\t\t\tlet elDistance = $(`\r\n\t\t\t\t\r\n\t\t\t\t\t${label}\r\n\t\t\t\t\t${distance}\r\n\t\t\t\t`);\r\n\t\t\telDistanceTable.append(elDistance);\r\n\t\t}\r\n\r\n\t\tlet elTotal = $(`\r\n\t\t\t\r\n\t\t\t\tTotal: ${totalDistance}\r\n\t\t\t`);\r\n\t\telDistanceTable.append(elTotal);\r\n\t}\r\n};\r\n","\r\n\r\nimport {MeasurePanel} from \"./MeasurePanel.js\";\r\n\r\nexport class PointPanel extends MeasurePanel{\r\n\tconstructor(viewer, measurement, propertiesPanel){\r\n\t\tsuper(viewer, measurement, propertiesPanel);\r\n\r\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\r\n\t\tthis.elContent = $(`\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t`);\r\n\r\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\r\n\t\tthis.elRemove.click( () => {\r\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\r\n\t\t});\r\n\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\r\n\t\telCoordiantesContainer.empty();\r\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\r\n\r\n\t\tlet elAttributesContainer = this.elContent.find('.attributes_table_container');\r\n\t\telAttributesContainer.empty();\r\n\t\telAttributesContainer.append(this.createAttributesTable());\r\n\t}\r\n};","\r\n\r\nimport {MeasurePanel} from \"./MeasurePanel.js\";\r\n\r\nexport class AreaPanel extends MeasurePanel{\r\n\tconstructor(viewer, measurement, propertiesPanel){\r\n\t\tsuper(viewer, measurement, propertiesPanel);\r\n\r\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\r\n\t\tthis.elContent = $(`\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\tArea: \r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t`);\r\n\r\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\r\n\t\tthis.elRemove.click( () => {\r\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\r\n\t\t});\r\n\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\r\n\t\telCoordiantesContainer.empty();\r\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\r\n\r\n\t\tlet elArea = this.elContent.find(`#measurement_area`);\r\n\t\telArea.html(this.measurement.getArea().toFixed(3));\r\n\t}\r\n};","\r\n\r\nimport {MeasurePanel} from \"./MeasurePanel.js\";\r\n\r\nexport class AnglePanel extends MeasurePanel{\r\n\tconstructor(viewer, measurement, propertiesPanel){\r\n\t\tsuper(viewer, measurement, propertiesPanel);\r\n\r\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\r\n\t\tthis.elContent = $(`\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\\u03b1\\u03b2\\u03b3
\r\n\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t`);\r\n\r\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\r\n\t\tthis.elRemove.click( () => {\r\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\r\n\t\t});\r\n\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\r\n\t\telCoordiantesContainer.empty();\r\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\r\n\r\n\t\tlet angles = [];\r\n\t\tfor(let i = 0; i < this.measurement.points.length; i++){\r\n\t\t\tangles.push(this.measurement.getAngle(i) * (180.0 / Math.PI));\r\n\t\t}\r\n\t\tangles = angles.map(a => a.toFixed(1) + '\\u00B0');\r\n\r\n\t\tlet elAlpha = this.elContent.find(`#angle_cell_alpha`);\r\n\t\tlet elBetta = this.elContent.find(`#angle_cell_betta`);\r\n\t\tlet elGamma = this.elContent.find(`#angle_cell_gamma`);\r\n\r\n\t\telAlpha.html(angles[0]);\r\n\t\telBetta.html(angles[1]);\r\n\t\telGamma.html(angles[2]);\r\n\t}\r\n};","\r\n\r\nimport {MeasurePanel} from \"./MeasurePanel.js\";\r\n\r\nexport class CirclePanel extends MeasurePanel{\r\n\tconstructor(viewer, measurement, propertiesPanel){\r\n\t\tsuper(viewer, measurement, propertiesPanel);\r\n\r\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\r\n\t\tthis.elContent = $(`\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t`);\r\n\r\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\r\n\t\tthis.elRemove.click( () => {\r\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\r\n\t\t});\r\n\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\r\n\t\telCoordiantesContainer.empty();\r\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\r\n\r\n\t\tconst elInfos = this.elContent.find(`#infos_table`);\r\n\r\n\t\tif(this.measurement.points.length !== 3){\r\n\t\t\telInfos.empty();\r\n\t\t\t\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst A = this.measurement.points[0].position;\r\n\t\tconst B = this.measurement.points[1].position;\r\n\t\tconst C = this.measurement.points[2].position;\r\n\r\n\t\tconst center = Potree.Utils.computeCircleCenter(A, B, C);\r\n\t\tconst radius = center.distanceTo(A);\r\n\t\tconst circumference = 2 * Math.PI * radius;\r\n\t\t\r\n\t\tconst format = (number) => {\r\n\t\t\treturn Potree.Utils.addCommas(number.toFixed(3));\r\n\t\t};\r\n\r\n\t\t\r\n\t\tconst txtCenter = `${format(center.x)} ${format(center.y)} ${format(center.z)}`;\r\n\t\tconst txtRadius = format(radius);\r\n\t\tconst txtCircumference = format(circumference);\r\n\r\n\t\tconst thStyle = `style=\"text-align: left\"`;\r\n\t\tconst tdStyle = `style=\"width: 100%; padding: 5px;\"`;\r\n\t\t\r\n\t\telInfos.html(`\r\n\t\t\t\r\n\t\t\t\tCenter: \r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t${txtCenter}\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tRadius: \r\n\t\t\t\t${txtRadius}\r\n\t\t\t\r\n\t\t\t\r\n\t\t\t\tCircumference: \r\n\t\t\t\t${txtCircumference}\r\n\t\t\t\r\n\t\t`);\r\n\t}\r\n};\r\n","\r\n\r\nimport {MeasurePanel} from \"./MeasurePanel.js\";\r\n\r\nexport class HeightPanel extends MeasurePanel{\r\n\tconstructor(viewer, measurement, propertiesPanel){\r\n\t\tsuper(viewer, measurement, propertiesPanel);\r\n\r\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\r\n\t\tthis.elContent = $(`\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\tHeight:
\r\n\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t`);\r\n\r\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\r\n\t\tthis.elRemove.click( () => {\r\n\t\t\tthis.viewer.scene.removeMeasurement(measurement);\r\n\t\t});\r\n\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\r\n\t\telCoordiantesContainer.empty();\r\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points.map(p => p.position)));\r\n\r\n\t\t{\r\n\t\t\tlet points = this.measurement.points;\r\n\r\n\t\t\tlet sorted = points.slice().sort((a, b) => a.position.z - b.position.z);\r\n\t\t\tlet lowPoint = sorted[0].position.clone();\r\n\t\t\tlet highPoint = sorted[sorted.length - 1].position.clone();\r\n\t\t\tlet min = lowPoint.z;\r\n\t\t\tlet max = highPoint.z;\r\n\t\t\tlet height = max - min;\r\n\t\t\theight = height.toFixed(3);\r\n\r\n\t\t\tthis.elHeightLabel = this.elContent.find(`#height_label`);\r\n\t\t\tthis.elHeightLabel.html(`Height: ${height}`);\r\n\t\t}\r\n\t}\r\n};","\r\nimport * as THREE from \"../../../libs/three.js/build/three.module.js\";\r\nimport {Utils} from \"../../utils.js\";\r\nimport {Volume, BoxVolume, SphereVolume} from \"../../utils/Volume.js\";\r\n\r\nimport {MeasurePanel} from \"./MeasurePanel.js\";\r\n\r\nexport class VolumePanel extends MeasurePanel{\r\n\tconstructor(viewer, measurement, propertiesPanel){\r\n\t\tsuper(viewer, measurement, propertiesPanel);\r\n\r\n\t\tlet copyIconPath = Potree.resourcePath + '/icons/copy.svg';\r\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\r\n\r\n\t\tlet lblLengthText = new Map([\r\n\t\t\t[BoxVolume, \"length\"],\r\n\t\t\t[SphereVolume, \"rx\"],\r\n\t\t]).get(measurement.constructor);\r\n\r\n\t\tlet lblWidthText = new Map([\r\n\t\t\t[BoxVolume, \"width\"],\r\n\t\t\t[SphereVolume, \"ry\"],\r\n\t\t]).get(measurement.constructor);\r\n\r\n\t\tlet lblHeightText = new Map([\r\n\t\t\t[BoxVolume, \"height\"],\r\n\t\t\t[SphereVolume, \"rz\"],\r\n\t\t]).get(measurement.constructor);\r\n\r\n\t\tthis.elContent = $(`\r\n\t\t\t
\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\\u03b1\\u03b2\\u03b3
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
${lblLengthText}${lblWidthText}${lblHeightText}
\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\r\n\t\t\t\t
\r\n\t\t\t\tVolume: \r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t
  • \r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\r\n\t\t\t\t
  • \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
  • \r\n\r\n\r\n\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t`);\r\n\r\n\t\t{ // download\r\n\t\t\tthis.elDownloadButton = this.elContent.find(\"input[name=download_volume]\");\r\n\r\n\t\t\tif(this.propertiesPanel.viewer.server){\r\n\t\t\t\tthis.elDownloadButton.click(() => this.download());\r\n\t\t\t} else {\r\n\t\t\t\tthis.elDownloadButton.hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.elCopyRotation = this.elContent.find(\"img[name=copyRotation]\");\r\n\t\tthis.elCopyRotation.click( () => {\r\n\t\t\tlet rotation = this.measurement.rotation.toArray().slice(0, 3);\r\n\t\t\tlet msg = rotation.map(c => c.toFixed(3)).join(\", \");\r\n\t\t\tUtils.clipboardCopy(msg);\r\n\r\n\t\t\tthis.viewer.postMessage(\r\n\t\t\t\t\t`Copied value to clipboard:
    '${msg}'`,\r\n\t\t\t\t\t{duration: 3000});\r\n\t\t});\r\n\r\n\t\tthis.elCopyScale = this.elContent.find(\"img[name=copyScale]\");\r\n\t\tthis.elCopyScale.click( () => {\r\n\t\t\tlet scale = this.measurement.scale.toArray();\r\n\t\t\tlet msg = scale.map(c => c.toFixed(3)).join(\", \");\r\n\t\t\tUtils.clipboardCopy(msg);\r\n\r\n\t\t\tthis.viewer.postMessage(\r\n\t\t\t\t\t`Copied value to clipboard:
    '${msg}'`,\r\n\t\t\t\t\t{duration: 3000});\r\n\t\t});\r\n\r\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\r\n\t\tthis.elRemove.click( () => {\r\n\t\t\tthis.viewer.scene.removeVolume(measurement);\r\n\t\t});\r\n\r\n\t\tthis.elContent.find(\"#volume_reset_orientation\").click(() => {\r\n\t\t\tmeasurement.rotation.set(0, 0, 0);\r\n\t\t});\r\n\r\n\t\tthis.elContent.find(\"#volume_make_uniform\").click(() => {\r\n\t\t\tlet mean = (measurement.scale.x + measurement.scale.y + measurement.scale.z) / 3;\r\n\t\t\tmeasurement.scale.set(mean, mean, mean);\r\n\t\t});\r\n\r\n\t\tthis.elCheckClip = this.elContent.find('#volume_clip');\r\n\t\tthis.elCheckClip.click(event => {\r\n\t\t\tthis.measurement.clip = event.target.checked;\r\n\t\t});\r\n\r\n\t\tthis.elCheckShow = this.elContent.find('#volume_show');\r\n\t\tthis.elCheckShow.click(event => {\r\n\t\t\tthis.measurement.visible = event.target.checked;\r\n\t\t});\r\n\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"position_changed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"orientation_changed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"scale_changed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"clip_changed\", this._update);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tasync download(){\r\n\r\n\t\tlet clipBox = this.measurement;\r\n\r\n\t\tlet regions = [];\r\n\t\t//for(let clipBox of boxes){\r\n\t\t{\r\n\t\t\tlet toClip = clipBox.matrixWorld;\r\n\r\n\t\t\tlet px = new THREE.Vector3(+0.5, 0, 0).applyMatrix4(toClip);\r\n\t\t\tlet nx = new THREE.Vector3(-0.5, 0, 0).applyMatrix4(toClip);\r\n\t\t\tlet py = new THREE.Vector3(0, +0.5, 0).applyMatrix4(toClip);\r\n\t\t\tlet ny = new THREE.Vector3(0, -0.5, 0).applyMatrix4(toClip);\r\n\t\t\tlet pz = new THREE.Vector3(0, 0, +0.5).applyMatrix4(toClip);\r\n\t\t\tlet nz = new THREE.Vector3(0, 0, -0.5).applyMatrix4(toClip);\r\n\r\n\t\t\tlet pxN = new THREE.Vector3().subVectors(nx, px).normalize();\r\n\t\t\tlet nxN = pxN.clone().multiplyScalar(-1);\r\n\t\t\tlet pyN = new THREE.Vector3().subVectors(ny, py).normalize();\r\n\t\t\tlet nyN = pyN.clone().multiplyScalar(-1);\r\n\t\t\tlet pzN = new THREE.Vector3().subVectors(nz, pz).normalize();\r\n\t\t\tlet nzN = pzN.clone().multiplyScalar(-1);\r\n\r\n\t\t\tlet planes = [\r\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(pxN, px),\r\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(nxN, nx),\r\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(pyN, py),\r\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(nyN, ny),\r\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(pzN, pz),\r\n\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(nzN, nz),\r\n\t\t\t];\r\n\r\n\t\t\tlet planeQueryParts = [];\r\n\t\t\tfor(let plane of planes){\r\n\t\t\t\tlet part = [plane.normal.toArray(), plane.constant].join(\",\");\r\n\t\t\t\tpart = `[${part}]`;\r\n\t\t\t\tplaneQueryParts.push(part);\r\n\t\t\t}\r\n\t\t\tlet region = \"[\" + planeQueryParts.join(\",\") + \"]\";\r\n\t\t\tregions.push(region);\r\n\t\t}\r\n\r\n\t\tlet regionsArg = regions.join(\",\");\r\n\r\n\t\tlet pointcloudArgs = [];\r\n\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\r\n\t\t\tif(!pointcloud.visible){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet offset = pointcloud.pcoGeometry.offset.clone();\r\n\t\t\tlet negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray());\r\n\t\t\tlet matrixWorld = pointcloud.matrixWorld;\r\n\r\n\t\t\tlet transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset);\r\n\r\n\t\t\tlet path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`;\r\n\r\n\t\t\tlet arg = {\r\n\t\t\t\tpath: path,\r\n\t\t\t\ttransform: transform.elements,\r\n\t\t\t};\r\n\t\t\tlet argString = JSON.stringify(arg);\r\n\r\n\t\t\tpointcloudArgs.push(argString);\r\n\t\t}\r\n\t\tlet pointcloudsArg = pointcloudArgs.join(\",\");\r\n\r\n\t\tlet elMessage = this.elContent.find(\"div[name=download_message]\");\r\n\r\n\t\tlet error = (message) => {\r\n\t\t\telMessage.html(`
    ERROR: ${message}
    `);\r\n\t\t};\r\n\r\n\t\tlet info = (message) => {\r\n\t\t\telMessage.html(`${message}`);\r\n\t\t};\r\n\r\n\t\tlet handle = null;\r\n\t\t{ // START FILTER\r\n\t\t\tlet url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`;\r\n\t\t\t\r\n\t\t\t//console.log(url);\r\n\r\n\t\t\tinfo(\"estimating results ...\");\r\n\r\n\t\t\tlet response = await fetch(url);\r\n\t\t\tlet jsResponse = await response.json();\r\n\t\t\t//console.log(jsResponse);\r\n\r\n\t\t\tif(!jsResponse.handle){\r\n\t\t\t\terror(jsResponse.message);\r\n\t\t\t\treturn;\r\n\t\t\t}else{\r\n\t\t\t\thandle = jsResponse.handle;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // WAIT, CHECK PROGRESS, HANDLE FINISH\r\n\t\t\tlet url = `${viewer.server}/check_regions_filter?handle=${handle}`;\r\n\r\n\t\t\tlet sleep = (function(duration){\r\n\t\t\t\treturn new Promise( (res, rej) => {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tres();\r\n\t\t\t\t\t}, duration);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tlet handleFiltering = (jsResponse) => {\r\n\t\t\t\tlet {progress, estimate} = jsResponse;\r\n\r\n\t\t\t\tlet progressFract = progress[\"processed points\"] / estimate.points;\r\n\t\t\t\tlet progressPercents = parseInt(progressFract * 100);\r\n\r\n\t\t\t\tinfo(`progress: ${progressPercents}%`);\r\n\t\t\t};\r\n\r\n\t\t\tlet handleFinish = (jsResponse) => {\r\n\t\t\t\tlet message = \"downloads ready:
    \";\r\n\t\t\t\tmessage += \"
      \";\r\n\r\n\t\t\t\tfor(let i = 0; i < jsResponse.pointclouds.length; i++){\r\n\t\t\t\t\tlet url = `${viewer.server}/download_regions_filter_result?handle=${handle}&index=${i}`;\r\n\r\n\t\t\t\t\tmessage += `
    • result_${i}.las
    • \\n`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet reportURL = `${viewer.server}/download_regions_filter_report?handle=${handle}`;\r\n\t\t\t\tmessage += `
    • report.json
    • \\n`;\r\n\t\t\t\tmessage += \"
    \";\r\n\r\n\t\t\t\tinfo(message);\r\n\t\t\t};\r\n\r\n\t\t\tlet handleUnexpected = (jsResponse) => {\r\n\t\t\t\tlet message = `Unexpected Response.
    status: ${jsResponse.status}
    message: ${jsResponse.message}`;\r\n\t\t\t\tinfo(message);\r\n\t\t\t};\r\n\r\n\t\t\tlet handleError = (jsResponse) => {\r\n\t\t\t\tlet message = `ERROR: ${jsResponse.message}`;\r\n\t\t\t\terror(message);\r\n\r\n\t\t\t\tthrow new Error(message);\r\n\t\t\t};\r\n\r\n\t\t\tlet start = Date.now();\r\n\r\n\t\t\twhile(true){\r\n\t\t\t\tlet response = await fetch(url);\r\n\t\t\t\tlet jsResponse = await response.json();\r\n\r\n\t\t\t\tif(jsResponse.status === \"ERROR\"){\r\n\t\t\t\t\thandleError(jsResponse);\r\n\t\t\t\t}else if(jsResponse.status === \"FILTERING\"){\r\n\t\t\t\t\thandleFiltering(jsResponse);\r\n\t\t\t\t}else if(jsResponse.status === \"FINISHED\"){\r\n\t\t\t\t\thandleFinish(jsResponse);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}else{\r\n\t\t\t\t\thandleUnexpected(jsResponse);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet durationS = (Date.now() - start) / 1000;\r\n\t\t\t\tlet sleepAmountMS = durationS < 10 ? 100 : 1000;\r\n\r\n\t\t\t\tawait sleep(sleepAmountMS);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\r\n\t\telCoordiantesContainer.empty();\r\n\t\telCoordiantesContainer.append(this.createCoordinatesTable([this.measurement.position]));\r\n\r\n\t\t{\r\n\t\t\tlet angles = this.measurement.rotation.toVector3();\r\n\t\t\tangles = angles.toArray();\r\n\t\t\t//angles = [angles.z, angles.x, angles.y];\r\n\t\t\tangles = angles.map(v => 180 * v / Math.PI);\r\n\t\t\tangles = angles.map(a => a.toFixed(1) + '\\u00B0');\r\n\r\n\t\t\tlet elAlpha = this.elContent.find(`#angle_cell_alpha`);\r\n\t\t\tlet elBetta = this.elContent.find(`#angle_cell_betta`);\r\n\t\t\tlet elGamma = this.elContent.find(`#angle_cell_gamma`);\r\n\r\n\t\t\telAlpha.html(angles[0]);\r\n\t\t\telBetta.html(angles[1]);\r\n\t\t\telGamma.html(angles[2]);\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tlet dimensions = this.measurement.scale.toArray();\r\n\t\t\tdimensions = dimensions.map(v => Utils.addCommas(v.toFixed(2)));\r\n\r\n\t\t\tlet elLength = this.elContent.find(`#cell_length`);\r\n\t\t\tlet elWidth = this.elContent.find(`#cell_width`);\r\n\t\t\tlet elHeight = this.elContent.find(`#cell_height`);\r\n\r\n\t\t\telLength.html(dimensions[0]);\r\n\t\t\telWidth.html(dimensions[1]);\r\n\t\t\telHeight.html(dimensions[2]);\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tlet elVolume = this.elContent.find(`#measurement_volume`);\r\n\t\t\tlet volume = this.measurement.getVolume();\r\n\t\t\telVolume.html(Utils.addCommas(volume.toFixed(2)));\r\n\t\t}\r\n\r\n\t\tthis.elCheckClip.prop(\"checked\", this.measurement.clip);\r\n\t\tthis.elCheckShow.prop(\"checked\", this.measurement.visible);\r\n\r\n\t}\r\n};","\r\nimport * as THREE from \"../../../libs/three.js/build/three.module.js\";\r\nimport {MeasurePanel} from \"./MeasurePanel.js\";\r\n\r\nexport class ProfilePanel extends MeasurePanel{\r\n\tconstructor(viewer, measurement, propertiesPanel){\r\n\t\tsuper(viewer, measurement, propertiesPanel);\r\n\r\n\t\tlet removeIconPath = Potree.resourcePath + '/icons/remove.svg';\r\n\t\tthis.elContent = $(`\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t\tWidth: \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
  • \r\n\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t
  • \r\n\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t`);\r\n\r\n\t\tthis.elRemove = this.elContent.find(\"img[name=remove]\");\r\n\t\tthis.elRemove.click( () => {\r\n\t\t\tthis.viewer.scene.removeProfile(measurement);\r\n\t\t});\r\n\r\n\t\t{ // download\r\n\t\t\tthis.elDownloadButton = this.elContent.find(`input[name=download_profile]`);\r\n\r\n\t\t\tif(this.propertiesPanel.viewer.server){\r\n\t\t\t\tthis.elDownloadButton.click(() => this.download());\r\n\t\t\t} else {\r\n\t\t\t\tthis.elDownloadButton.hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // width spinner\r\n\t\t\tlet elWidthSlider = this.elContent.find(`#sldProfileWidth`);\r\n\r\n\t\t\telWidthSlider.spinner({\r\n\t\t\t\tmin: 0, max: 10 * 1000 * 1000, step: 0.01,\r\n\t\t\t\tnumberFormat: 'n',\r\n\t\t\t\tstart: () => {},\r\n\t\t\t\tspin: (event, ui) => {\r\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\r\n\t\t\t\t\tmeasurement.setWidth(value);\r\n\t\t\t\t},\r\n\t\t\t\tchange: (event, ui) => {\r\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\r\n\t\t\t\t\tmeasurement.setWidth(value);\r\n\t\t\t\t},\r\n\t\t\t\tstop: (event, ui) => {\r\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\r\n\t\t\t\t\tmeasurement.setWidth(value);\r\n\t\t\t\t},\r\n\t\t\t\tincremental: (count) => {\r\n\t\t\t\t\tlet value = elWidthSlider.spinner('value');\r\n\t\t\t\t\tlet step = elWidthSlider.spinner('option', 'step');\r\n\r\n\t\t\t\t\tlet delta = value * 0.05;\r\n\t\t\t\t\tlet increments = Math.max(1, parseInt(delta / step));\r\n\r\n\t\t\t\t\treturn increments;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\telWidthSlider.spinner('value', measurement.getWidth());\r\n\t\t\telWidthSlider.spinner('widget').css('width', '100%');\r\n\r\n\t\t\tlet widthListener = (event) => {\r\n\t\t\t\tlet value = elWidthSlider.spinner('value');\r\n\t\t\t\tif (value !== measurement.getWidth()) {\r\n\t\t\t\t\telWidthSlider.spinner('value', measurement.getWidth());\r\n\t\t\t\t}\r\n\t\t\t};\r\n\t\t\tthis.propertiesPanel.addVolatileListener(measurement, \"width_changed\", widthListener);\r\n\t\t}\r\n\r\n\t\tlet elShow2DProfile = this.elContent.find(`#show_2d_profile`);\r\n\t\telShow2DProfile.click(() => {\r\n\t\t\tthis.propertiesPanel.viewer.profileWindow.show();\r\n\t\t\tthis.propertiesPanel.viewer.profileWindowController.setProfile(measurement);\r\n\t\t});\r\n\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_added\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_removed\", this._update);\r\n\t\tthis.propertiesPanel.addVolatileListener(measurement, \"marker_moved\", this._update);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tlet elCoordiantesContainer = this.elContent.find('.coordinates_table_container');\r\n\t\telCoordiantesContainer.empty();\r\n\t\telCoordiantesContainer.append(this.createCoordinatesTable(this.measurement.points));\r\n\t}\r\n\r\n\tasync download(){\r\n\r\n\t\tlet profile = this.measurement;\r\n\r\n\t\tlet regions = [];\r\n\t\t{\r\n\t\t\tlet segments = profile.getSegments();\r\n\t\t\tlet width = profile.width;\r\n\t\t\t\r\n\t\t\tfor(let segment of segments){\r\n\t\t\t\tlet start = segment.start.clone().multiply(new THREE.Vector3(1, 1, 0));\r\n\t\t\t\tlet end = segment.end.clone().multiply(new THREE.Vector3(1, 1, 0));\r\n\t\t\t\tlet center = new THREE.Vector3().addVectors(start, end).multiplyScalar(0.5);\r\n\t\t\t\t\r\n\t\t\t\tlet startEndDir = new THREE.Vector3().subVectors(end, start).normalize();\r\n\t\t\t\tlet endStartDir = new THREE.Vector3().subVectors(start, end).normalize();\r\n\t\t\t\tlet upDir = new THREE.Vector3(0, 0, 1);\r\n\t\t\t\tlet rightDir = new THREE.Vector3().crossVectors(startEndDir, upDir);\r\n\t\t\t\tlet leftDir = new THREE.Vector3().crossVectors(endStartDir, upDir);\r\n\t\t\t\t\r\n\t\t\t\tconsole.log(leftDir);\r\n\t\t\t\t\r\n\t\t\t\tlet right = rightDir.clone().multiplyScalar(width * 0.5).add(center);\r\n\t\t\t\tlet left = leftDir.clone().multiplyScalar(width * 0.5).add(center);\r\n\t\t\t\t\r\n\t\t\t\tlet planes = [\r\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(startEndDir, start),\r\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(endStartDir, end),\r\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(leftDir, right),\r\n\t\t\t\t\tnew THREE.Plane().setFromNormalAndCoplanarPoint(rightDir, left),\r\n\t\t\t\t];\r\n\t\t\t\t\r\n\t\t\t\tlet planeQueryParts = [];\r\n\t\t\t\tfor(let plane of planes){\r\n\t\t\t\t\tlet part = [plane.normal.toArray(), plane.constant].join(\",\");\r\n\t\t\t\t\tpart = `[${part}]`;\r\n\t\t\t\t\tplaneQueryParts.push(part);\r\n\t\t\t\t}\r\n\t\t\t\tlet region = \"[\" + planeQueryParts.join(\",\") + \"]\";\r\n\t\t\t\tregions.push(region);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet regionsArg = regions.join(\",\");\r\n\r\n\t\tlet pointcloudArgs = [];\r\n\t\tfor(let pointcloud of this.viewer.scene.pointclouds){\r\n\t\t\tif(!pointcloud.visible){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet offset = pointcloud.pcoGeometry.offset.clone();\r\n\t\t\tlet negateOffset = new THREE.Matrix4().makeTranslation(...offset.multiplyScalar(-1).toArray());\r\n\t\t\tlet matrixWorld = pointcloud.matrixWorld;\r\n\r\n\t\t\tlet transform = new THREE.Matrix4().multiplyMatrices(matrixWorld, negateOffset);\r\n\r\n\t\t\tlet path = `${window.location.pathname}/../${pointcloud.pcoGeometry.url}`;\r\n\r\n\t\t\tlet arg = {\r\n\t\t\t\tpath: path,\r\n\t\t\t\ttransform: transform.elements,\r\n\t\t\t};\r\n\t\t\tlet argString = JSON.stringify(arg);\r\n\r\n\t\t\tpointcloudArgs.push(argString);\r\n\t\t}\r\n\t\tlet pointcloudsArg = pointcloudArgs.join(\",\");\r\n\r\n\t\tlet elMessage = this.elContent.find(\"div[name=download_message]\");\r\n\r\n\t\tlet error = (message) => {\r\n\t\t\telMessage.html(`
    ERROR: ${message}
    `);\r\n\t\t};\r\n\r\n\t\tlet info = (message) => {\r\n\t\t\telMessage.html(`${message}`);\r\n\t\t};\r\n\r\n\t\tlet handle = null;\r\n\t\t{ // START FILTER\r\n\t\t\tlet url = `${viewer.server}/create_regions_filter?pointclouds=[${pointcloudsArg}]®ions=[${regionsArg}]`;\r\n\t\t\t\r\n\t\t\t//console.log(url);\r\n\r\n\t\t\tinfo(\"estimating results ...\");\r\n\r\n\t\t\tlet response = await fetch(url);\r\n\t\t\tlet jsResponse = await response.json();\r\n\t\t\t//console.log(jsResponse);\r\n\r\n\t\t\tif(!jsResponse.handle){\r\n\t\t\t\terror(jsResponse.message);\r\n\t\t\t\treturn;\r\n\t\t\t}else{\r\n\t\t\t\thandle = jsResponse.handle;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // WAIT, CHECK PROGRESS, HANDLE FINISH\r\n\t\t\tlet url = `${viewer.server}/check_regions_filter?handle=${handle}`;\r\n\r\n\t\t\tlet sleep = (function(duration){\r\n\t\t\t\treturn new Promise( (res, rej) => {\r\n\t\t\t\t\tsetTimeout(() => {\r\n\t\t\t\t\t\tres();\r\n\t\t\t\t\t}, duration);\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tlet handleFiltering = (jsResponse) => {\r\n\t\t\t\tlet {progress, estimate} = jsResponse;\r\n\r\n\t\t\t\tlet progressFract = progress[\"processed points\"] / estimate.points;\r\n\t\t\t\tlet progressPercents = parseInt(progressFract * 100);\r\n\r\n\t\t\t\tinfo(`progress: ${progressPercents}%`);\r\n\t\t\t};\r\n\r\n\t\t\tlet handleFinish = (jsResponse) => {\r\n\t\t\t\tlet message = \"downloads ready:
    \";\r\n\t\t\t\tmessage += \"
      \";\r\n\r\n\t\t\t\tfor(let i = 0; i < jsResponse.pointclouds.length; i++){\r\n\t\t\t\t\tlet url = `${viewer.server}/download_regions_filter_result?handle=${handle}&index=${i}`;\r\n\r\n\t\t\t\t\tmessage += `
    • result_${i}.las
    • \\n`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet reportURL = `${viewer.server}/download_regions_filter_report?handle=${handle}`;\r\n\t\t\t\tmessage += `
    • report.json
    • \\n`;\r\n\t\t\t\tmessage += \"
    \";\r\n\r\n\t\t\t\tinfo(message);\r\n\t\t\t};\r\n\r\n\t\t\tlet handleUnexpected = (jsResponse) => {\r\n\t\t\t\tlet message = `Unexpected Response.
    status: ${jsResponse.status}
    message: ${jsResponse.message}`;\r\n\t\t\t\tinfo(message);\r\n\t\t\t};\r\n\r\n\t\t\tlet handleError = (jsResponse) => {\r\n\t\t\t\tlet message = `ERROR: ${jsResponse.message}`;\r\n\t\t\t\terror(message);\r\n\r\n\t\t\t\tthrow new Error(message);\r\n\t\t\t};\r\n\r\n\t\t\tlet start = Date.now();\r\n\r\n\t\t\twhile(true){\r\n\t\t\t\tlet response = await fetch(url);\r\n\t\t\t\tlet jsResponse = await response.json();\r\n\r\n\t\t\t\tif(jsResponse.status === \"ERROR\"){\r\n\t\t\t\t\thandleError(jsResponse);\r\n\t\t\t\t}else if(jsResponse.status === \"FILTERING\"){\r\n\t\t\t\t\thandleFiltering(jsResponse);\r\n\t\t\t\t}else if(jsResponse.status === \"FINISHED\"){\r\n\t\t\t\t\thandleFinish(jsResponse);\r\n\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}else{\r\n\t\t\t\t\thandleUnexpected(jsResponse);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet durationS = (Date.now() - start) / 1000;\r\n\t\t\t\tlet sleepAmountMS = durationS < 10 ? 100 : 1000;\r\n\r\n\t\t\t\tawait sleep(sleepAmountMS);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n};","\r\nimport {Utils} from \"../../utils.js\";\r\n\r\nexport class CameraPanel{\r\n\tconstructor(viewer, propertiesPanel){\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.propertiesPanel = propertiesPanel;\r\n\r\n\t\tthis._update = () => { this.update(); };\r\n\r\n\t\tlet copyIconPath = Potree.resourcePath + '/icons/copy.svg';\r\n\t\tthis.elContent = $(`\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
    position
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    target
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t
    \r\n\t\t`);\r\n\r\n\t\tthis.elCopyPosition = this.elContent.find(\"img[name=copyPosition]\");\r\n\t\tthis.elCopyPosition.click( () => {\r\n\t\t\tlet pos = this.viewer.scene.getActiveCamera().position.toArray();\r\n\t\t\tlet msg = pos.map(c => c.toFixed(3)).join(\", \");\r\n\t\t\tUtils.clipboardCopy(msg);\r\n\r\n\t\t\tthis.viewer.postMessage(\r\n\t\t\t\t\t`Copied value to clipboard:
    '${msg}'`,\r\n\t\t\t\t\t{duration: 3000});\r\n\t\t});\r\n\r\n\t\tthis.elCopyTarget = this.elContent.find(\"img[name=copyTarget]\");\r\n\t\tthis.elCopyTarget.click( () => {\r\n\t\t\tlet pos = this.viewer.scene.view.getPivot().toArray();\r\n\t\t\tlet msg = pos.map(c => c.toFixed(3)).join(\", \");\r\n\t\t\tUtils.clipboardCopy(msg);\r\n\r\n\t\t\tthis.viewer.postMessage(\r\n\t\t\t\t\t`Copied value to clipboard:
    '${msg}'`,\r\n\t\t\t\t\t{duration: 3000});\r\n\t\t});\r\n\r\n\t\tthis.propertiesPanel.addVolatileListener(viewer, \"camera_changed\", this._update);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\t//console.log(\"updating camera panel\");\r\n\r\n\t\tlet camera = this.viewer.scene.getActiveCamera();\r\n\t\tlet view = this.viewer.scene.view;\r\n\r\n\t\tlet pos = camera.position.toArray().map(c => Utils.addCommas(c.toFixed(3)));\r\n\t\tthis.elContent.find(\"#camera_position_x\").html(pos[0]);\r\n\t\tthis.elContent.find(\"#camera_position_y\").html(pos[1]);\r\n\t\tthis.elContent.find(\"#camera_position_z\").html(pos[2]);\r\n\r\n\t\tlet target = view.getPivot().toArray().map(c => Utils.addCommas(c.toFixed(3)));\r\n\t\tthis.elContent.find(\"#camera_target_x\").html(target[0]);\r\n\t\tthis.elContent.find(\"#camera_target_y\").html(target[1]);\r\n\t\tthis.elContent.find(\"#camera_target_z\").html(target[2]);\r\n\t}\r\n};","\r\nimport {Utils} from \"../../utils.js\";\r\n\r\nexport class AnnotationPanel{\r\n\tconstructor(viewer, propertiesPanel, annotation){\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.propertiesPanel = propertiesPanel;\r\n\t\tthis.annotation = annotation;\r\n\r\n\t\tthis._update = () => { this.update(); };\r\n\r\n\t\tlet copyIconPath = `${Potree.resourcePath}/icons/copy.svg`;\r\n\t\tthis.elContent = $(`\r\n\t\t
    \r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\r\n\t\t\t
    position
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\r\n\t\t\t
    \r\n\r\n\t\t\t\t
    Title
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tAnnotation Title\r\n\t\t\t\t
    \r\n\r\n\t\t\t\t
    Description
    \r\n\t\t\t\t
    \r\n\t\t\t\t\tA longer description of this annotation. \r\n\t\t\t\t\t\tCan be multiple lines long. TODO: the user should be able\r\n\t\t\t\t\t\tto modify title and description. \r\n\t\t\t\t
    \r\n\r\n\t\t\t
    \r\n\r\n\t\t
    \r\n\t\t`);\r\n\r\n\t\tthis.elCopyPosition = this.elContent.find(\"img[name=copyPosition]\");\r\n\t\tthis.elCopyPosition.click( () => {\r\n\t\t\tlet pos = this.annotation.position.toArray();\r\n\t\t\tlet msg = pos.map(c => c.toFixed(3)).join(\", \");\r\n\t\t\tUtils.clipboardCopy(msg);\r\n\r\n\t\t\tthis.viewer.postMessage(\r\n\t\t\t\t\t`Copied value to clipboard:
    '${msg}'`,\r\n\t\t\t\t\t{duration: 3000});\r\n\t\t});\r\n\r\n\t\tthis.elTitle = this.elContent.find(\"#annotation_title\").html(annotation.title);\r\n\t\tthis.elDescription = this.elContent.find(\"#annotation_description\").html(annotation.description);\r\n\r\n\t\tthis.elTitle[0].addEventListener(\"input\", () => {\r\n\t\t\tconst title = this.elTitle.html();\r\n\t\t\tannotation.title = title;\r\n\r\n\t\t}, false);\r\n\r\n\t\tthis.elDescription[0].addEventListener(\"input\", () => {\r\n\t\t\tconst description = this.elDescription.html();\r\n\t\t\tannotation.description = description;\r\n\t\t}, false);\r\n\r\n\t\tthis.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\tconst {annotation, elContent, elTitle, elDescription} = this;\r\n\r\n\t\tlet pos = annotation.position.toArray().map(c => Utils.addCommas(c.toFixed(3)));\r\n\t\telContent.find(\"#annotation_position_x\").html(pos[0]);\r\n\t\telContent.find(\"#annotation_position_y\").html(pos[1]);\r\n\t\telContent.find(\"#annotation_position_z\").html(pos[2]);\r\n\r\n\t\telTitle.html(annotation.title);\r\n\t\telDescription.html(annotation.description);\r\n\r\n\r\n\t}\r\n};","\r\nimport {Utils} from \"../../utils.js\";\r\n\r\nexport class CameraAnimationPanel{\r\n\tconstructor(viewer, propertiesPanel, animation){\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.propertiesPanel = propertiesPanel;\r\n\t\tthis.animation = animation;\r\n\r\n\t\tthis.elContent = $(`\r\n\t\t\t
    \r\n\t\t\t\t\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\t\tDuration: \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tTime:
    \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t`);\r\n\r\n\t\tconst elPlay = this.elContent.find(\"input[name=play]\");\r\n\t\telPlay.click( () => {\r\n\t\t\tanimation.play();\r\n\t\t});\r\n\r\n\t\tconst elSlider = this.elContent.find('#sldTime');\r\n\t\telSlider.slider({\r\n\t\t\tvalue: 0,\r\n\t\t\tmin: 0,\r\n\t\t\tmax: 1,\r\n\t\t\tstep: 0.001,\r\n\t\t\tslide: (event, ui) => { \r\n\t\t\t\tanimation.set(ui.value);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet elDuration = this.elContent.find(`input[name=spnDuration]`);\r\n\t\telDuration.spinner({\r\n\t\t\tmin: 0, max: 300, step: 0.01,\r\n\t\t\tnumberFormat: 'n',\r\n\t\t\tstart: () => {},\r\n\t\t\tspin: (event, ui) => {\r\n\t\t\t\tlet value = elDuration.spinner('value');\r\n\t\t\t\tanimation.setDuration(value);\r\n\t\t\t},\r\n\t\t\tchange: (event, ui) => {\r\n\t\t\t\tlet value = elDuration.spinner('value');\r\n\t\t\t\tanimation.setDuration(value);\r\n\t\t\t},\r\n\t\t\tstop: (event, ui) => {\r\n\t\t\t\tlet value = elDuration.spinner('value');\r\n\t\t\t\tanimation.setDuration(value);\r\n\t\t\t},\r\n\t\t\tincremental: (count) => {\r\n\t\t\t\tlet value = elDuration.spinner('value');\r\n\t\t\t\tlet step = elDuration.spinner('option', 'step');\r\n\r\n\t\t\t\tlet delta = value * 0.05;\r\n\t\t\t\tlet increments = Math.max(1, parseInt(delta / step));\r\n\r\n\t\t\t\treturn increments;\r\n\t\t\t}\r\n\t\t});\r\n\t\telDuration.spinner('value', animation.getDuration());\r\n\t\telDuration.spinner('widget').css('width', '100%');\r\n\r\n\t\tconst elKeyframes = this.elContent.find(\"#animation_keyframes\");\r\n\r\n\t\tconst updateKeyframes = () => {\r\n\t\t\telKeyframes.empty();\r\n\r\n\t\t\t//let index = 0;\r\n\r\n\t\t\t// \r\n\t\t\t// \t\t\t\t\r\n\t\t\t// \t\t\t\r\n\r\n\t\t\tconst addNewKeyframeItem = (index) => {\r\n\t\t\t\tlet elNewKeyframe = $(`\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t`);\r\n\r\n\t\t\t\tconst elAdd = elNewKeyframe.find(\"input[name=add]\");\r\n\t\t\t\telAdd.click( () => {\r\n\t\t\t\t\tanimation.createControlPoint(index);\r\n\t\t\t\t});\r\n\r\n\t\t\t\telKeyframes.append(elNewKeyframe);\r\n\t\t\t};\r\n\r\n\t\t\tconst addKeyframeItem = (index) => {\r\n\t\t\t\tlet elKeyframe = $(`\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tkeyframe\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    \r\n\t\t\t\t`);\r\n\r\n\t\t\t\tconst elAssign = elKeyframe.find(\"img[name=assign]\");\r\n\t\t\t\tconst elMove = elKeyframe.find(\"img[name=move]\");\r\n\t\t\t\tconst elDelete = elKeyframe.find(\"img[name=delete]\");\r\n\r\n\t\t\t\telAssign.click( () => {\r\n\t\t\t\t\tconst cp = animation.controlPoints[index];\r\n\r\n\t\t\t\t\tcp.position.copy(viewer.scene.view.position);\r\n\t\t\t\t\tcp.target.copy(viewer.scene.view.getPivot());\r\n\t\t\t\t});\r\n\r\n\t\t\t\telMove.click( () => {\r\n\t\t\t\t\tconst cp = animation.controlPoints[index];\r\n\r\n\t\t\t\t\tviewer.scene.view.position.copy(cp.position);\r\n\t\t\t\t\tviewer.scene.view.lookAt(cp.target);\r\n\t\t\t\t});\r\n\r\n\t\t\t\telDelete.click( () => {\r\n\t\t\t\t\tconst cp = animation.controlPoints[index];\r\n\t\t\t\t\tanimation.removeControlPoint(cp);\r\n\t\t\t\t});\r\n\r\n\t\t\t\telKeyframes.append(elKeyframe);\r\n\t\t\t};\r\n\r\n\t\t\tlet index = 0;\r\n\r\n\t\t\taddNewKeyframeItem(index);\r\n\r\n\t\t\tfor(const cp of animation.controlPoints){\r\n\t\t\t\t\r\n\t\t\t\taddKeyframeItem(index);\r\n\t\t\t\tindex++;\r\n\t\t\t\taddNewKeyframeItem(index);\r\n\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tupdateKeyframes();\r\n\r\n\t\tanimation.addEventListener(\"controlpoint_added\", updateKeyframes);\r\n\t\tanimation.addEventListener(\"controlpoint_removed\", updateKeyframes);\r\n\r\n\r\n\r\n\r\n\t\t// this._update = () => { this.update(); };\r\n\r\n\t\t// this.update();\r\n\t}\r\n\r\n\tupdate(){\r\n\t\t\r\n\t}\r\n};","\r\nimport * as THREE from \"../../../libs/three.js/build/three.module.js\";\r\nimport {Utils} from \"../../utils.js\";\r\nimport {PointCloudTree} from \"../../PointCloudTree.js\";\r\nimport {Annotation} from \"../../Annotation.js\";\r\nimport {Measure} from \"../../utils/Measure.js\";\r\nimport {Profile} from \"../../utils/Profile.js\";\r\nimport {Volume, BoxVolume, SphereVolume} from \"../../utils/Volume.js\";\r\nimport {CameraAnimation} from \"../../modules/CameraAnimation/CameraAnimation.js\";\r\nimport {PointSizeType, PointShape, ElevationGradientRepeat} from \"../../defines.js\";\r\nimport {Gradients} from \"../../materials/Gradients.js\";\r\n\r\nimport {MeasurePanel} from \"./MeasurePanel.js\";\r\nimport {DistancePanel} from \"./DistancePanel.js\";\r\nimport {PointPanel} from \"./PointPanel.js\";\r\nimport {AreaPanel} from \"./AreaPanel.js\";\r\nimport {AnglePanel} from \"./AnglePanel.js\";\r\nimport {CirclePanel} from \"./CirclePanel.js\";\r\nimport {HeightPanel} from \"./HeightPanel.js\";\r\nimport {VolumePanel} from \"./VolumePanel.js\";\r\nimport {ProfilePanel} from \"./ProfilePanel.js\";\r\nimport {CameraPanel} from \"./CameraPanel.js\";\r\nimport {AnnotationPanel} from \"./AnnotationPanel.js\";\r\nimport { CameraAnimationPanel } from \"./CameraAnimationPanel.js\";\r\n\r\nexport class PropertiesPanel{\r\n\r\n\tconstructor(container, viewer){\r\n\t\tthis.container = container;\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.object = null;\r\n\t\tthis.cleanupTasks = [];\r\n\t\tthis.scene = null;\r\n\t}\r\n\r\n\tsetScene(scene){\r\n\t\tthis.scene = scene;\r\n\t}\r\n\r\n\tset(object){\r\n\t\tif(this.object === object){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.object = object;\r\n\t\t\r\n\t\tfor(let task of this.cleanupTasks){\r\n\t\t\ttask();\r\n\t\t}\r\n\t\tthis.cleanupTasks = [];\r\n\t\tthis.container.empty();\r\n\r\n\t\tif(object instanceof PointCloudTree){\r\n\t\t\tthis.setPointCloud(object);\r\n\t\t}else if(object instanceof Measure || object instanceof Profile || object instanceof Volume){\r\n\t\t\tthis.setMeasurement(object);\r\n\t\t}else if(object instanceof THREE.Camera){\r\n\t\t\tthis.setCamera(object);\r\n\t\t}else if(object instanceof Annotation){\r\n\t\t\tthis.setAnnotation(object);\r\n\t\t}else if(object instanceof CameraAnimation){\r\n\t\t\tthis.setCameraAnimation(object);\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\t//\r\n\t// Used for events that should be removed when the property object changes.\r\n\t// This is for listening to materials, scene, point clouds, etc.\r\n\t// not required for DOM listeners, since they are automatically cleared by removing the DOM subtree.\r\n\t//\r\n\taddVolatileListener(target, type, callback){\r\n\t\ttarget.addEventListener(type, callback);\r\n\t\tthis.cleanupTasks.push(() => {\r\n\t\t\ttarget.removeEventListener(type, callback);\r\n\t\t});\r\n\t}\r\n\r\n\tsetPointCloud(pointcloud){\r\n\r\n\t\tlet material = pointcloud.material;\r\n\r\n\t\tlet panel = $(`\r\n\t\t\t
    \r\n\t\t\t\t
      \r\n\r\n\t\t\t\t
    • \r\n\t\t\t\t
      \r\n\t\t\t\t
    • \r\n\t\t\t\t
    • \r\n\t\t\t\t
      \r\n\t\t\t\t
    • \r\n\r\n\t\t\t\t\r\n\t\t\t\t
    • \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
    • \r\n\r\n\t\t\t\t\r\n\t\t\t\t
    • \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\r\n\t\t\t\t
    • \r\n\r\n\t\t\t\t
    • \r\n\t\t\t\t\r\n\t\t\t\t
    • \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
    • :
    • \r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\tAttribute\r\n\t\t\t\t
      \r\n\r\n\t\t\t\t
    • \r\n\t\t\t\t\t\r\n\t\t\t\t
    • \r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tAttribute Weights\r\n\t\t\t\t\t
      \r\n\r\n\t\t\t\t\t
    • RGB:
      \t
    • \r\n\t\t\t\t\t
    • Intensity:
      \t
    • \r\n\t\t\t\t\t
    • Elevation:
      \t
    • \r\n\t\t\t\t\t
    • Classification:
      \t
    • \r\n\t\t\t\t\t
    • Return Number:
      \t
    • \r\n\t\t\t\t\t
    • Source ID:
      \t
    • \r\n\t\t\t\t
      \r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tRGB\r\n\t\t\t\t\t
      \r\n\r\n\t\t\t\t\t
    • Gamma:
      \t
    • \r\n\t\t\t\t\t
    • Brightness:
      \t
    • \r\n\t\t\t\t\t
    • Contrast:
      \t
    • \r\n\t\t\t\t
      \r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tExtra Attribute\r\n\t\t\t\t\t
      \r\n\r\n\t\t\t\t\t
    • :
    • \r\n\r\n\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    • \r\n\r\n\t\t\t\t\t
    • \r\n\t\t\t\t\t\tGradient Scheme:\r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t
    • \r\n\t\t\t\t
      \r\n\t\t\t\t\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tMATCAP\r\n\t\t\t\t\t
      \r\n\r\n\t\t\t\t\t
    • \r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t
    • \r\n\t\t\t\t
      \r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tColor\r\n\t\t\t\t\t
      \r\n\r\n\t\t\t\t\t\r\n\t\t\t\t
      \r\n\r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tElevation\r\n\t\t\t\t\t
      \r\n\r\n\t\t\t\t\t
    • :
      \t
    • \r\n\r\n\t\t\t\t\t
    • \r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
    • \r\n\r\n\t\t\t\t\t
    • \r\n\t\t\t\t\t\tGradient Scheme:\r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t\t
      \r\n\t\t\t\t\t
    • \r\n\t\t\t\t
      \r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tTransition\r\n\t\t\t\t\t
      \r\n\r\n\t\t\t\t\t
    • transition:
      \t
    • \r\n\t\t\t\t
      \r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tIntensity\r\n\t\t\t\t\t
      \r\n\r\n\t\t\t\t\t
    • Range:
      \t
    • \r\n\t\t\t\t\t
    • Gamma:
      \t
    • \r\n\t\t\t\t\t
    • Brightness:
      \t
    • \r\n\t\t\t\t\t
    • Contrast:
      \t
    • \r\n\t\t\t\t
      \r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tGPS Time\r\n\t\t\t\t\t
      \r\n\r\n\t\t\t\t
      \r\n\t\t\t\t\r\n\t\t\t\t
      \r\n\t\t\t\t\t
      \r\n\t\t\t\t\t\tIndices\r\n\t\t\t\t\t
      \r\n\t\t\t\t
      \r\n\r\n\r\n\t\t\t\t
    \r\n\t\t\t
    \r\n\t\t`);\r\n\r\n\t\tpanel.i18n();\r\n\t\tthis.container.append(panel);\r\n\r\n\t\t{ // POINT SIZE\r\n\t\t\tlet sldPointSize = panel.find(`#sldPointSize`);\r\n\t\t\tlet lblPointSize = panel.find(`#lblPointSize`);\r\n\r\n\t\t\tsldPointSize.slider({\r\n\t\t\t\tvalue: material.size,\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tmax: 3,\r\n\t\t\t\tstep: 0.01,\r\n\t\t\t\tslide: function (event, ui) { material.size = ui.value; }\r\n\t\t\t});\r\n\r\n\t\t\tlet update = (e) => {\r\n\t\t\t\tlblPointSize.html(material.size.toFixed(2));\r\n\t\t\t\tsldPointSize.slider({value: material.size});\r\n\t\t\t};\r\n\t\t\tthis.addVolatileListener(material, \"point_size_changed\", update);\r\n\t\t\t\r\n\t\t\tupdate();\r\n\t\t}\r\n\r\n\t\t{ // MINIMUM POINT SIZE\r\n\t\t\tlet sldMinPointSize = panel.find(`#sldMinPointSize`);\r\n\t\t\tlet lblMinPointSize = panel.find(`#lblMinPointSize`);\r\n\r\n\t\t\tsldMinPointSize.slider({\r\n\t\t\t\tvalue: material.size,\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tmax: 3,\r\n\t\t\t\tstep: 0.01,\r\n\t\t\t\tslide: function (event, ui) { material.minSize = ui.value; }\r\n\t\t\t});\r\n\r\n\t\t\tlet update = (e) => {\r\n\t\t\t\tlblMinPointSize.html(material.minSize.toFixed(2));\r\n\t\t\t\tsldMinPointSize.slider({value: material.minSize});\r\n\t\t\t};\r\n\t\t\tthis.addVolatileListener(material, \"point_size_changed\", update);\r\n\t\t\t\r\n\t\t\tupdate();\r\n\t\t}\r\n\r\n\t\t{ // POINT SIZING\r\n\t\t\tlet strSizeType = Object.keys(PointSizeType)[material.pointSizeType];\r\n\r\n\t\t\tlet opt = panel.find(`#optPointSizing`);\r\n\t\t\topt.selectmenu();\r\n\t\t\topt.val(strSizeType).selectmenu('refresh');\r\n\r\n\t\t\topt.selectmenu({\r\n\t\t\t\tchange: (event, ui) => {\r\n\t\t\t\t\tmaterial.pointSizeType = PointSizeType[ui.item.value];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t{ // SHAPE\r\n\t\t\tlet opt = panel.find(`#optShape`);\r\n\r\n\t\t\topt.selectmenu({\r\n\t\t\t\tchange: (event, ui) => {\r\n\t\t\t\t\tlet value = ui.item.value;\r\n\r\n\t\t\t\t\tmaterial.shape = PointShape[value];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet update = () => {\r\n\t\t\t\tlet typename = Object.keys(PointShape)[material.shape];\r\n\r\n\t\t\t\topt.selectmenu().val(typename).selectmenu('refresh');\r\n\t\t\t};\r\n\t\t\tthis.addVolatileListener(material, \"point_shape_changed\", update);\r\n\r\n\t\t\tupdate();\r\n\t\t}\r\n\r\n\t\t{ // BACKFACE CULLING\r\n\t\t\t\r\n\t\t\tlet opt = panel.find(`#set_backface_culling`);\r\n\t\t\topt.click(() => {\r\n\t\t\t\tmaterial.backfaceCulling = opt.prop(\"checked\");\r\n\t\t\t});\r\n\t\t\tlet update = () => {\r\n\t\t\t\tlet value = material.backfaceCulling;\r\n\t\t\t\topt.prop(\"checked\", value);\r\n\t\t\t};\r\n\t\t\tthis.addVolatileListener(material, \"backface_changed\", update);\r\n\t\t\tupdate();\r\n\r\n\t\t\tlet blockBackface = $('#materials_backface_container');\r\n\t\t\tblockBackface.css('display', 'none');\r\n\r\n\t\t\tconst pointAttributes = pointcloud.pcoGeometry.pointAttributes;\r\n\t\t\tconst hasNormals = pointAttributes.hasNormals ? pointAttributes.hasNormals() : false;\r\n\t\t\tif(hasNormals) {\r\n\t\t\t\tblockBackface.css('display', 'block');\r\n\t\t\t}\r\n\t\t\t/*\r\n\t\t\topt.checkboxradio({\r\n\t\t\t\tclicked: (event, ui) => {\r\n\t\t\t\t\t// let value = ui.item.value;\r\n\t\t\t\t\tlet value = ui.item.checked;\r\n\t\t\t\t\tconsole.log(value);\r\n\t\t\t\t\tmaterial.backfaceCulling = value; // $('#set_freeze').prop(\"checked\");\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t\t*/\r\n\t\t}\r\n\r\n\t\t{ // OPACITY\r\n\t\t\tlet sldOpacity = panel.find(`#sldOpacity`);\r\n\t\t\tlet lblOpacity = panel.find(`#lblOpacity`);\r\n\r\n\t\t\tsldOpacity.slider({\r\n\t\t\t\tvalue: material.opacity,\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tmax: 1,\r\n\t\t\t\tstep: 0.001,\r\n\t\t\t\tslide: function (event, ui) { \r\n\t\t\t\t\tmaterial.opacity = ui.value;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet update = (e) => {\r\n\t\t\t\tlblOpacity.html(material.opacity.toFixed(2));\r\n\t\t\t\tsldOpacity.slider({value: material.opacity});\r\n\t\t\t};\r\n\t\t\tthis.addVolatileListener(material, \"opacity_changed\", update);\r\n\r\n\t\t\tupdate();\r\n\t\t}\r\n\r\n\t\t{\r\n\r\n\t\t\tconst attributes = pointcloud.pcoGeometry.pointAttributes.attributes;\r\n\r\n\t\t\tlet options = [];\r\n\r\n\t\t\toptions.push(...attributes.map(a => a.name));\r\n\r\n\t\t\tconst intensityIndex = options.indexOf(\"intensity\");\r\n\t\t\tif(intensityIndex >= 0){\r\n\t\t\t\toptions.splice(intensityIndex + 1, 0, \"intensity gradient\");\r\n\t\t\t}\r\n\r\n\t\t\toptions.push(\r\n\t\t\t\t\"elevation\",\r\n\t\t\t\t\"color\",\r\n\t\t\t\t'matcap',\r\n\t\t\t\t'indices',\r\n\t\t\t\t'level of detail',\r\n\t\t\t\t'composite'\r\n\t\t\t);\r\n\r\n\t\t\tconst blacklist = [\r\n\t\t\t\t\"POSITION_CARTESIAN\",\r\n\t\t\t\t\"position\",\r\n\t\t\t];\r\n\r\n\t\t\toptions = options.filter(o => !blacklist.includes(o));\r\n\r\n\t\t\tlet attributeSelection = panel.find('#optMaterial');\r\n\t\t\tfor(let option of options){\r\n\t\t\t\tlet elOption = $(``);\r\n\t\t\t\tattributeSelection.append(elOption);\r\n\t\t\t}\r\n\r\n\t\t\tlet updateMaterialPanel = (event, ui) => {\r\n\t\t\t\tlet selectedValue = attributeSelection.selectmenu().val();\r\n\t\t\t\tmaterial.activeAttributeName = selectedValue;\r\n\r\n\t\t\t\tlet attribute = pointcloud.getAttribute(selectedValue);\r\n\r\n\t\t\t\tif(selectedValue === \"intensity gradient\"){\r\n\t\t\t\t\tattribute = pointcloud.getAttribute(\"intensity\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst isIntensity = attribute ? [\"intensity\", \"intensity gradient\"].includes(attribute.name) : false;\r\n\r\n\t\t\t\tif(isIntensity){\r\n\t\t\t\t\tif(pointcloud.material.intensityRange[0] === Infinity){\r\n\t\t\t\t\t\tpointcloud.material.intensityRange = attribute.range;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tconst [min, max] = attribute.range;\r\n\r\n\t\t\t\t\tpanel.find('#sldIntensityRange').slider({\r\n\t\t\t\t\t\trange: true,\r\n\t\t\t\t\t\tmin: min, max: max, step: 0.01,\r\n\t\t\t\t\t\tvalues: [min, max],\r\n\t\t\t\t\t\tslide: (event, ui) => {\r\n\t\t\t\t\t\t\tlet min = ui.values[0];\r\n\t\t\t\t\t\t\tlet max = ui.values[1];\r\n\t\t\t\t\t\t\tmaterial.intensityRange = [min, max];\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t});\r\n\t\t\t\t} else if(attribute){\r\n\t\t\t\t\tconst [min, max] = attribute.range;\r\n\r\n\t\t\t\t\tlet selectedRange = material.getRange(attribute.name);\r\n\r\n\t\t\t\t\tif(!selectedRange){\r\n\t\t\t\t\t\tselectedRange = [...attribute.range];\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tlet minMaxAreNumbers = typeof min === \"number\" && typeof max === \"number\";\r\n\r\n\t\t\t\t\tif(minMaxAreNumbers){\r\n\t\t\t\t\t\tpanel.find('#sldExtraRange').slider({\r\n\t\t\t\t\t\t\trange: true,\r\n\t\t\t\t\t\t\tmin: min, \r\n\t\t\t\t\t\t\tmax: max, \r\n\t\t\t\t\t\t\tstep: 0.01,\r\n\t\t\t\t\t\t\tvalues: selectedRange,\r\n\t\t\t\t\t\t\tslide: (event, ui) => {\r\n\t\t\t\t\t\t\t\tlet [a, b] = ui.values;\r\n\r\n\t\t\t\t\t\t\t\tmaterial.setRange(attribute.name, [a, b]);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet blockWeights = $('#materials\\\\.composite_weight_container');\r\n\t\t\t\tlet blockElevation = $('#materials\\\\.elevation_container');\r\n\t\t\t\tlet blockRGB = $('#materials\\\\.rgb_container');\r\n\t\t\t\tlet blockExtra = $('#materials\\\\.extra_container');\r\n\t\t\t\tlet blockColor = $('#materials\\\\.color_container');\r\n\t\t\t\tlet blockIntensity = $('#materials\\\\.intensity_container');\r\n\t\t\t\tlet blockIndex = $('#materials\\\\.index_container');\r\n\t\t\t\tlet blockTransition = $('#materials\\\\.transition_container');\r\n\t\t\t\tlet blockGps = $('#materials\\\\.gpstime_container');\r\n\t\t\t\tlet blockMatcap = $('#materials\\\\.matcap_container');\r\n\r\n\t\t\t\tblockIndex.css('display', 'none');\r\n\t\t\t\tblockIntensity.css('display', 'none');\r\n\t\t\t\tblockElevation.css('display', 'none');\r\n\t\t\t\tblockRGB.css('display', 'none');\r\n\t\t\t\tblockExtra.css('display', 'none');\r\n\t\t\t\tblockColor.css('display', 'none');\r\n\t\t\t\tblockWeights.css('display', 'none');\r\n\t\t\t\tblockTransition.css('display', 'none');\r\n\t\t\t\tblockMatcap.css('display', 'none');\r\n\t\t\t\tblockGps.css('display', 'none');\r\n\r\n\t\t\t\tif (selectedValue === 'composite') {\r\n\t\t\t\t\tblockWeights.css('display', 'block');\r\n\t\t\t\t\tblockElevation.css('display', 'block');\r\n\t\t\t\t\tblockRGB.css('display', 'block');\r\n\t\t\t\t\tblockIntensity.css('display', 'block');\r\n\t\t\t\t} else if (selectedValue === 'elevation') {\r\n\t\t\t\t\tblockElevation.css('display', 'block');\r\n\t\t\t\t} else if (selectedValue === 'RGB and Elevation') {\r\n\t\t\t\t\tblockRGB.css('display', 'block');\r\n\t\t\t\t\tblockElevation.css('display', 'block');\r\n\t\t\t\t} else if (selectedValue === 'rgba') {\r\n\t\t\t\t\tblockRGB.css('display', 'block');\r\n\t\t\t\t} else if (selectedValue === 'color') {\r\n\t\t\t\t\tblockColor.css('display', 'block');\r\n\t\t\t\t} else if (selectedValue === 'intensity') {\r\n\t\t\t\t\tblockIntensity.css('display', 'block');\r\n\t\t\t\t} else if (selectedValue === 'intensity gradient') {\r\n\t\t\t\t\tblockIntensity.css('display', 'block');\r\n\t\t\t\t} else if (selectedValue === \"indices\" ){\r\n\t\t\t\t\tblockIndex.css('display', 'block');\r\n\t\t\t\t} else if (selectedValue === \"matcap\" ){\r\n\t\t\t\t\tblockMatcap.css('display', 'block');\r\n\t\t\t\t} else if (selectedValue === \"classification\" ){\r\n\t\t\t\t\t// add classification color selctor?\r\n\t\t\t\t} else if (selectedValue === \"gps-time\" ){\r\n\t\t\t\t\tblockGps.css('display', 'block');\r\n\t\t\t\t} else if(selectedValue === \"number of returns\"){\r\n\t\t\t\t\t\r\n\t\t\t\t} else if(selectedValue === \"return number\"){\r\n\t\t\t\t\t\r\n\t\t\t\t} else if([\"source id\", \"point source id\"].includes(selectedValue)){\r\n\t\t\t\t\t\r\n\t\t\t\t} else{\r\n\t\t\t\t\tblockExtra.css('display', 'block');\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tattributeSelection.selectmenu({change: updateMaterialPanel});\r\n\r\n\t\t\tlet update = () => {\r\n\t\t\t\tattributeSelection.val(material.activeAttributeName).selectmenu('refresh');\r\n\t\t\t};\r\n\t\t\tthis.addVolatileListener(material, \"point_color_type_changed\", update);\r\n\t\t\tthis.addVolatileListener(material, \"active_attribute_changed\", update);\r\n\r\n\t\t\tupdate();\r\n\t\t\tupdateMaterialPanel();\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tconst schemes = Object.keys(Potree.Gradients).map(name => ({name: name, values: Gradients[name]}));\r\n\r\n\t\t\tlet elSchemeContainers = panel.find(\"div.gradient_scheme\");\r\n\r\n\t\t\tfor(let scheme of schemes){\r\n\t\t\t\telSchemeContainers.each(function(index, container){\r\n\t\t\t\t\tlet elScheme = $(`\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t`);\r\n\r\n\t\t\t\t\tconst svg = Potree.Utils.createSvgGradient(scheme.values);\r\n\t\t\t\t\tsvg.setAttributeNS(null, \"class\", `button-icon`);\r\n\r\n\t\t\t\t\telScheme.append($(svg));\r\n\r\n\t\t\t\t\telScheme.click( () => {\r\n\t\t\t\t\t\tmaterial.gradient = Gradients[scheme.name];\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$(container).append(elScheme);\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tlet matcaps = [\r\n\t\t\t\t{name: \"Normals\", icon: `${Potree.resourcePath}/icons/matcap/check_normal+y.jpg`}, \r\n\t\t\t\t{name: \"Basic 1\", icon: `${Potree.resourcePath}/icons/matcap/basic_1.jpg`}, \r\n\t\t\t\t{name: \"Basic 2\", icon: `${Potree.resourcePath}/icons/matcap/basic_2.jpg`}, \r\n\t\t\t\t{name: \"Basic Dark\", icon: `${Potree.resourcePath}/icons/matcap/basic_dark.jpg`}, \r\n\t\t\t\t{name: \"Basic Side\", icon: `${Potree.resourcePath}/icons/matcap/basic_side.jpg`}, \r\n\t\t\t\t{name: \"Ceramic Dark\", icon: `${Potree.resourcePath}/icons/matcap/ceramic_dark.jpg`}, \r\n\t\t\t\t{name: \"Ceramic Lightbulb\", icon: `${Potree.resourcePath}/icons/matcap/ceramic_lightbulb.jpg`}, \r\n\t\t\t\t{name: \"Clay Brown\", icon: `${Potree.resourcePath}/icons/matcap/clay_brown.jpg`}, \r\n\t\t\t\t{name: \"Clay Muddy\", icon: `${Potree.resourcePath}/icons/matcap/clay_muddy.jpg`}, \r\n\t\t\t\t{name: \"Clay Studio\", icon: `${Potree.resourcePath}/icons/matcap/clay_studio.jpg`}, \r\n\t\t\t\t{name: \"Resin\", icon: `${Potree.resourcePath}/icons/matcap/resin.jpg`}, \r\n\t\t\t\t{name: \"Skin\", icon: `${Potree.resourcePath}/icons/matcap/skin.jpg`}, \r\n\t\t\t\t{name: \"Jade\", icon: `${Potree.resourcePath}/icons/matcap/jade.jpg`}, \r\n\t\t\t\t{name: \"Metal_ Anisotropic\", icon: `${Potree.resourcePath}/icons/matcap/metal_anisotropic.jpg`}, \r\n\t\t\t\t{name: \"Metal Carpaint\", icon: `${Potree.resourcePath}/icons/matcap/metal_carpaint.jpg`}, \r\n\t\t\t\t{name: \"Metal Lead\", icon: `${Potree.resourcePath}/icons/matcap/metal_lead.jpg`}, \r\n\t\t\t\t{name: \"Metal Shiny\", icon: `${Potree.resourcePath}/icons/matcap/metal_shiny.jpg`}, \r\n\t\t\t\t{name: \"Pearl\", icon: `${Potree.resourcePath}/icons/matcap/pearl.jpg`}, \r\n\t\t\t\t{name: \"Toon\", icon: `${Potree.resourcePath}/icons/matcap/toon.jpg`},\r\n\t\t\t\t{name: \"Check Rim Light\", icon: `${Potree.resourcePath}/icons/matcap/check_rim_light.jpg`}, \r\n\t\t\t\t{name: \"Check Rim Dark\", icon: `${Potree.resourcePath}/icons/matcap/check_rim_dark.jpg`}, \r\n\t\t\t\t{name: \"Contours 1\", icon: `${Potree.resourcePath}/icons/matcap/contours_1.jpg`}, \r\n\t\t\t\t{name: \"Contours 2\", icon: `${Potree.resourcePath}/icons/matcap/contours_2.jpg`}, \r\n\t\t\t\t{name: \"Contours 3\", icon: `${Potree.resourcePath}/icons/matcap/contours_3.jpg`}, \r\n\t\t\t\t{name: \"Reflection Check Horizontal\", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_horizontal.jpg`}, \r\n\t\t\t\t{name: \"Reflection Check Vertical\", icon: `${Potree.resourcePath}/icons/matcap/reflection_check_vertical.jpg`}, \r\n\t\t\t];\r\n\r\n\t\t\tlet elMatcapContainer = panel.find(\"#matcap_scheme_selection\");\r\n\r\n\t\t\tfor(let matcap of matcaps){\r\n\t\t\t\tlet elMatcap = $(`\r\n\t\t\t\t\t\t\r\n\t\t\t\t`);\r\n\r\n\t\t\t\telMatcap.click( () => {\r\n\t\t\t\t\tmaterial.matcap = matcap.icon.substring(matcap.icon.lastIndexOf('/'));\r\n\t\t\t\t});\r\n\r\n\t\t\t\telMatcapContainer.append(elMatcap);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tpanel.find('#sldRGBGamma').slider({\r\n\t\t\t\tvalue: material.rgbGamma,\r\n\t\t\t\tmin: 0, max: 4, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.rgbGamma = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldRGBContrast').slider({\r\n\t\t\t\tvalue: material.rgbContrast,\r\n\t\t\t\tmin: -1, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.rgbContrast = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldRGBBrightness').slider({\r\n\t\t\t\tvalue: material.rgbBrightness,\r\n\t\t\t\tmin: -1, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.rgbBrightness = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldExtraGamma').slider({\r\n\t\t\t\tvalue: material.extraGamma,\r\n\t\t\t\tmin: 0, max: 4, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.extraGamma = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldExtraBrightness').slider({\r\n\t\t\t\tvalue: material.extraBrightness,\r\n\t\t\t\tmin: -1, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.extraBrightness = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldExtraContrast').slider({\r\n\t\t\t\tvalue: material.extraContrast,\r\n\t\t\t\tmin: -1, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.extraContrast = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldHeightRange').slider({\r\n\t\t\t\trange: true,\r\n\t\t\t\tmin: 0, max: 1000, step: 0.01,\r\n\t\t\t\tvalues: [0, 1000],\r\n\t\t\t\tslide: (event, ui) => {\r\n\t\t\t\t\tmaterial.heightMin = ui.values[0];\r\n\t\t\t\t\tmaterial.heightMax = ui.values[1];\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldIntensityGamma').slider({\r\n\t\t\t\tvalue: material.intensityGamma,\r\n\t\t\t\tmin: 0, max: 4, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.intensityGamma = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldIntensityContrast').slider({\r\n\t\t\t\tvalue: material.intensityContrast,\r\n\t\t\t\tmin: -1, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.intensityContrast = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldIntensityBrightness').slider({\r\n\t\t\t\tvalue: material.intensityBrightness,\r\n\t\t\t\tmin: -1, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.intensityBrightness = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldWeightRGB').slider({\r\n\t\t\t\tvalue: material.weightRGB,\r\n\t\t\t\tmin: 0, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.weightRGB = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldWeightIntensity').slider({\r\n\t\t\t\tvalue: material.weightIntensity,\r\n\t\t\t\tmin: 0, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.weightIntensity = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldWeightElevation').slider({\r\n\t\t\t\tvalue: material.weightElevation,\r\n\t\t\t\tmin: 0, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.weightElevation = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldWeightClassification').slider({\r\n\t\t\t\tvalue: material.weightClassification,\r\n\t\t\t\tmin: 0, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.weightClassification = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldWeightReturnNumber').slider({\r\n\t\t\t\tvalue: material.weightReturnNumber,\r\n\t\t\t\tmin: 0, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.weightReturnNumber = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find('#sldWeightSourceID').slider({\r\n\t\t\t\tvalue: material.weightSourceID,\r\n\t\t\t\tmin: 0, max: 1, step: 0.01,\r\n\t\t\t\tslide: (event, ui) => {material.weightSourceID = ui.value}\r\n\t\t\t});\r\n\r\n\t\t\tpanel.find(`#materials\\\\.color\\\\.picker`).spectrum({\r\n\t\t\t\tflat: true,\r\n\t\t\t\tshowInput: true,\r\n\t\t\t\tpreferredFormat: 'rgb',\r\n\t\t\t\tcancelText: '',\r\n\t\t\t\tchooseText: 'Apply',\r\n\t\t\t\tcolor: `#${material.color.getHexString()}`,\r\n\t\t\t\tmove: color => {\r\n\t\t\t\t\tlet cRGB = color.toRgb();\r\n\t\t\t\t\tlet tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255);\r\n\t\t\t\t\tmaterial.color = tc;\r\n\t\t\t\t},\r\n\t\t\t\tchange: color => {\r\n\t\t\t\t\tlet cRGB = color.toRgb();\r\n\t\t\t\t\tlet tc = new THREE.Color().setRGB(cRGB.r / 255, cRGB.g / 255, cRGB.b / 255);\r\n\t\t\t\t\tmaterial.color = tc;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.addVolatileListener(material, \"color_changed\", () => {\r\n\t\t\t\tpanel.find(`#materials\\\\.color\\\\.picker`)\r\n\t\t\t\t\t.spectrum('set', `#${material.color.getHexString()}`);\r\n\t\t\t});\r\n\r\n\t\t\tlet updateHeightRange = function () {\r\n\t\t\t\t\r\n\r\n\t\t\t\tlet aPosition = pointcloud.getAttribute(\"position\");\r\n\r\n\t\t\t\tlet bMin, bMax;\r\n\r\n\t\t\t\tif(aPosition){\r\n\t\t\t\t\t// for new format 2.0 and loader that contain precomputed min/max of attributes\r\n\t\t\t\t\tlet min = aPosition.range[0][2];\r\n\t\t\t\t\tlet max = aPosition.range[1][2];\r\n\t\t\t\t\tlet width = max - min;\r\n\r\n\t\t\t\t\tbMin = min - 0.2 * width;\r\n\t\t\t\t\tbMax = max + 0.2 * width;\r\n\t\t\t\t}else{\r\n\t\t\t\t\t// for format up until exlusive 2.0\r\n\t\t\t\t\tlet box = [pointcloud.pcoGeometry.tightBoundingBox, pointcloud.getBoundingBoxWorld()]\r\n\t\t\t\t\t\t.find(v => v !== undefined);\r\n\r\n\t\t\t\t\tpointcloud.updateMatrixWorld(true);\r\n\t\t\t\t\tbox = Utils.computeTransformedBoundingBox(box, pointcloud.matrixWorld);\r\n\r\n\t\t\t\t\tlet bWidth = box.max.z - box.min.z;\r\n\t\t\t\t\tbMin = box.min.z - 0.2 * bWidth;\r\n\t\t\t\t\tbMax = box.max.z + 0.2 * bWidth;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet range = material.elevationRange;\r\n\r\n\t\t\t\tpanel.find('#lblHeightRange').html(`${range[0].toFixed(2)} to ${range[1].toFixed(2)}`);\r\n\t\t\t\tpanel.find('#sldHeightRange').slider({min: bMin, max: bMax, values: range});\r\n\t\t\t};\r\n\r\n\t\t\tlet updateExtraRange = function () {\r\n\r\n\t\t\t\tlet attributeName = material.activeAttributeName;\r\n\t\t\t\tlet attribute = pointcloud.getAttribute(attributeName);\r\n\r\n\t\t\t\tif(attribute == null){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tlet range = material.getRange(attributeName);\r\n\r\n\t\t\t\tif(range == null){\r\n\t\t\t\t\trange = attribute.range;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// currently only supporting scalar ranges.\r\n\t\t\t\t// rgba, normals, positions, etc have vector ranges, however\r\n\t\t\t\tlet isValidRange = (typeof range[0] === \"number\") && (typeof range[1] === \"number\");\r\n\t\t\t\tif(!isValidRange){\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(range){\r\n\t\t\t\t\tlet msg = `${range[0].toFixed(2)} to ${range[1].toFixed(2)}`;\r\n\t\t\t\t\tpanel.find('#lblExtraRange').html(msg);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tpanel.find(\"could not deduce range\");\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tlet updateIntensityRange = function () {\r\n\t\t\t\tlet range = material.intensityRange;\r\n\r\n\t\t\t\tpanel.find('#lblIntensityRange').html(`${parseInt(range[0])} to ${parseInt(range[1])}`);\r\n\t\t\t};\r\n\r\n\t\t\t{\r\n\t\t\t\tupdateHeightRange();\r\n\t\t\t\tpanel.find(`#sldHeightRange`).slider('option', 'min');\r\n\t\t\t\tpanel.find(`#sldHeightRange`).slider('option', 'max');\r\n\t\t\t}\r\n\r\n\t\t\t{\r\n\t\t\t\tlet elGradientRepeat = panel.find(\"#gradient_repeat_option\");\r\n\t\t\t\telGradientRepeat.selectgroup({title: \"Gradient\"});\r\n\r\n\t\t\t\telGradientRepeat.find(\"input\").click( (e) => {\r\n\t\t\t\t\tthis.viewer.setElevationGradientRepeat(ElevationGradientRepeat[e.target.value]);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet current = Object.keys(ElevationGradientRepeat)\r\n\t\t\t\t\t.filter(key => ElevationGradientRepeat[key] === this.viewer.elevationGradientRepeat);\r\n\t\t\t\telGradientRepeat.find(`input[value=${current}]`).trigger(\"click\");\r\n\t\t\t}\r\n\r\n\t\t\t{\r\n\t\t\t\tlet elGradientRepeat = panel.find(\"#extra_gradient_repeat_option\");\r\n\t\t\t\telGradientRepeat.selectgroup({title: \"Gradient\"});\r\n\r\n\t\t\t\telGradientRepeat.find(\"input\").click( (e) => {\r\n\t\t\t\t\tthis.viewer.setElevationGradientRepeat(ElevationGradientRepeat[e.target.value]);\r\n\t\t\t\t});\r\n\r\n\t\t\t\tlet current = Object.keys(ElevationGradientRepeat)\r\n\t\t\t\t\t.filter(key => ElevationGradientRepeat[key] === this.viewer.elevationGradientRepeat);\r\n\t\t\t\telGradientRepeat.find(`input[value=${current}]`).trigger(\"click\");\r\n\t\t\t}\r\n\r\n\t\t\tlet onIntensityChange = () => {\r\n\t\t\t\tlet gamma = material.intensityGamma;\r\n\t\t\t\tlet contrast = material.intensityContrast;\r\n\t\t\t\tlet brightness = material.intensityBrightness;\r\n\r\n\t\t\t\tupdateIntensityRange();\r\n\r\n\t\t\t\tpanel.find('#lblIntensityGamma').html(gamma.toFixed(2));\r\n\t\t\t\tpanel.find('#lblIntensityContrast').html(contrast.toFixed(2));\r\n\t\t\t\tpanel.find('#lblIntensityBrightness').html(brightness.toFixed(2));\r\n\r\n\t\t\t\tpanel.find('#sldIntensityGamma').slider({value: gamma});\r\n\t\t\t\tpanel.find('#sldIntensityContrast').slider({value: contrast});\r\n\t\t\t\tpanel.find('#sldIntensityBrightness').slider({value: brightness});\r\n\t\t\t};\r\n\r\n\t\t\tlet onRGBChange = () => {\r\n\t\t\t\tlet gamma = material.rgbGamma;\r\n\t\t\t\tlet contrast = material.rgbContrast;\r\n\t\t\t\tlet brightness = material.rgbBrightness;\r\n\r\n\t\t\t\tpanel.find('#lblRGBGamma').html(gamma.toFixed(2));\r\n\t\t\t\tpanel.find('#lblRGBContrast').html(contrast.toFixed(2));\r\n\t\t\t\tpanel.find('#lblRGBBrightness').html(brightness.toFixed(2));\r\n\r\n\t\t\t\tpanel.find('#sldRGBGamma').slider({value: gamma});\r\n\t\t\t\tpanel.find('#sldRGBContrast').slider({value: contrast});\r\n\t\t\t\tpanel.find('#sldRGBBrightness').slider({value: brightness});\r\n\t\t\t};\r\n\r\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", updateExtraRange);\r\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", updateHeightRange);\r\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", onIntensityChange);\r\n\t\t\tthis.addVolatileListener(material, \"material_property_changed\", onRGBChange);\r\n\r\n\t\t\tupdateExtraRange();\r\n\t\t\tupdateHeightRange();\r\n\t\t\tonIntensityChange();\r\n\t\t\tonRGBChange();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t\r\n\r\n\tsetMeasurement(object){\r\n\r\n\t\tlet TYPE = {\r\n\t\t\tDISTANCE: {panel: DistancePanel},\r\n\t\t\tAREA: {panel: AreaPanel},\r\n\t\t\tPOINT: {panel: PointPanel},\r\n\t\t\tANGLE: {panel: AnglePanel},\r\n\t\t\tHEIGHT: {panel: HeightPanel},\r\n\t\t\tPROFILE: {panel: ProfilePanel},\r\n\t\t\tVOLUME: {panel: VolumePanel},\r\n\t\t\tCIRCLE: {panel: CirclePanel},\r\n\t\t\tOTHER: {panel: PointPanel},\r\n\t\t};\r\n\r\n\t\tlet getType = (measurement) => {\r\n\t\t\tif (measurement instanceof Measure) {\r\n\t\t\t\tif (measurement.showDistances && !measurement.showArea && !measurement.showAngles) {\r\n\t\t\t\t\treturn TYPE.DISTANCE;\r\n\t\t\t\t} else if (measurement.showDistances && measurement.showArea && !measurement.showAngles) {\r\n\t\t\t\t\treturn TYPE.AREA;\r\n\t\t\t\t} else if (measurement.maxMarkers === 1) {\r\n\t\t\t\t\treturn TYPE.POINT;\r\n\t\t\t\t} else if (!measurement.showDistances && !measurement.showArea && measurement.showAngles) {\r\n\t\t\t\t\treturn TYPE.ANGLE;\r\n\t\t\t\t} else if (measurement.showHeight) {\r\n\t\t\t\t\treturn TYPE.HEIGHT;\r\n\t\t\t\t} else if (measurement.showCircle) {\r\n\t\t\t\t\treturn TYPE.CIRCLE;\r\n\t\t\t\t} else {\r\n\t\t\t\t\treturn TYPE.OTHER;\r\n\t\t\t\t}\r\n\t\t\t} else if (measurement instanceof Profile) {\r\n\t\t\t\treturn TYPE.PROFILE;\r\n\t\t\t} else if (measurement instanceof Volume) {\r\n\t\t\t\treturn TYPE.VOLUME;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\t//this.container.html(\"measurement\");\r\n\r\n\t\tlet type = getType(object);\r\n\t\tlet Panel = type.panel;\r\n\r\n\t\tlet panel = new Panel(this.viewer, object, this);\r\n\t\tthis.container.append(panel.elContent);\r\n\t}\r\n\r\n\tsetCamera(camera){\r\n\t\tlet panel = new CameraPanel(this.viewer, this);\r\n\t\tthis.container.append(panel.elContent);\r\n\t}\r\n\r\n\tsetAnnotation(annotation){\r\n\t\tlet panel = new AnnotationPanel(this.viewer, this, annotation);\r\n\t\tthis.container.append(panel.elContent);\r\n\t}\r\n\r\n\tsetCameraAnimation(animation){\r\n\t\tlet panel = new CameraAnimationPanel(this.viewer, this, animation)\r\n\t\tthis.container.append(panel.elContent);\r\n\t}\r\n\r\n}\r\n","\r\nfunction addCommas(nStr){\r\n\tnStr += '';\r\n\tlet x = nStr.split('.');\r\n\tlet x1 = x[0];\r\n\tlet x2 = x.length > 1 ? '.' + x[1] : '';\r\n\tlet rgx = /(\\d+)(\\d{3})/;\r\n\twhile (rgx.test(x1)) {\r\n\t\tx1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n\t}\r\n\treturn x1 + x2;\r\n};\r\n\r\nfunction format(value){\r\n\treturn addCommas(value.toFixed(3));\r\n};\r\n\r\nexport class HierarchicalSlider{\r\n\r\n\tconstructor(params = {}){\r\n\t\t\r\n\t\tthis.element = document.createElement(\"div\");\r\n\r\n\t\tthis.labels = [];\r\n\t\tthis.sliders = [];\r\n\t\tthis.range = params.range != null ? params.range : [0, 1];\r\n\t\tthis.slide = params.slide != null ? params.slide : null;\r\n\t\tthis.step = params.step != null ? params.step : 0.0001;\r\n\r\n\t\tlet levels = params.levels != null ? params.levels : 1;\r\n\r\n\t\tfor(let level = 0; level < levels; level++){\r\n\t\t\tthis.addLevel();\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tsetRange(range){\r\n\t\tthis.range = [...range];\r\n\r\n\t\t{ // root slider\r\n\t\t\tlet slider = this.sliders[0];\r\n\r\n\t\t\t$(slider).slider({\r\n\t\t\t\tmin: range[0],\r\n\t\t\t\tmax: range[1],\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tfor(let i = 1; i < this.sliders.length; i++){\r\n\t\t\tlet parentSlider = this.sliders[i - 1];\r\n\t\t\tlet slider = this.sliders[i];\r\n\r\n\t\t\tlet parentValues = $(parentSlider).slider(\"option\", \"values\");\r\n\t\t\tlet childRange = [...parentValues];\r\n\r\n\t\t\t$(slider).slider({\r\n\t\t\t\tmin: childRange[0],\r\n\t\t\t\tmax: childRange[1],\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tthis.updateLabels();\r\n\t}\r\n\r\n\tsetValues(values){\r\n\t\tfor(let slider of this.sliders){\r\n\t\t\t$(slider).slider({\r\n\t\t\t\tvalues: [...values],\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.updateLabels();\r\n\t}\r\n\r\n\taddLevel(){\r\n\t\tconst elLevel = document.createElement(\"li\");\r\n\t\tconst elRange = document.createTextNode(\"Range: \");\r\n\t\tconst label = document.createElement(\"span\");\r\n\t\tconst slider = document.createElement(\"div\");\r\n\r\n\t\tlet level = this.sliders.length;\r\n\t\tlet [min, max] = [0, 0];\r\n\r\n\t\tif(this.sliders.length === 0){\r\n\t\t\t[min, max] = this.range;\r\n\t\t}else{\r\n\t\t\tlet parentSlider = this.sliders[this.sliders.length - 1];\r\n\t\t\t[min, max] = $(parentSlider).slider(\"option\", \"values\");\r\n\t\t}\r\n\t\t\r\n\t\t$(slider).slider({\r\n\t\t\trange: true, \r\n\t\t\tmin: min, \r\n\t\t\tmax: max,\r\n\t\t\tstep: this.step,\r\n\t\t\tvalues: [min, max],\r\n\t\t\tslide: (event, ui) => {\r\n\t\t\t\t\r\n\t\t\t\t// set all descendants to same range\r\n\t\t\t\tlet levels = this.sliders.length;\r\n\t\t\t\tfor(let i = level + 1; i < levels; i++){\r\n\t\t\t\t\tlet descendant = this.sliders[i];\r\n\r\n\t\t\t\t\t$(descendant).slider({\r\n\t\t\t\t\t\trange: true,\r\n\t\t\t\t\t\tmin: ui.values[0],\r\n\t\t\t\t\t\tmax: ui.values[1],\r\n\t\t\t\t\t\tvalues: [...ui.values],\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(this.slide){\r\n\t\t\t\t\tlet values = [...ui.values];\r\n\r\n\t\t\t\t\tthis.slide({\r\n\t\t\t\t\t\ttarget: this, \r\n\t\t\t\t\t\trange: this.range,\r\n\t\t\t\t\t\tvalues: values,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.updateLabels();\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\telLevel.append(elRange, label, slider);\r\n\r\n\t\tthis.sliders.push(slider);\r\n\t\tthis.labels.push(label);\r\n\t\tthis.element.append(elLevel);\r\n\r\n\t\tthis.updateLabels();\r\n\t}\r\n\r\n\tremoveLevel(){\r\n\r\n\t}\r\n\r\n\tupdateSliders(){\r\n\r\n\t}\r\n\r\n\tupdateLabels(){\r\n\r\n\t\tlet levels = this.sliders.length;\r\n\r\n\t\tfor(let i = 0; i < levels; i++){\r\n\r\n\t\t\tlet slider = this.sliders[i];\r\n\t\t\tlet label = this.labels[i];\r\n\r\n\t\t\tlet [min, max] = $(slider).slider(\"option\", \"values\");\r\n\t\t\tlet strMin = format(min);\r\n\t\t\tlet strMax = format(max);\r\n\t\t\tlet strLabel = `${strMin} to ${strMax}`;\r\n\r\n\t\t\tlabel.innerHTML = strLabel;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n}\r\n\r\n","\r\nimport * as THREE from \"../../../libs/three.js/build/three.module.js\";\r\nimport {EventDispatcher} from \"../../EventDispatcher.js\";\r\n\r\n \r\nexport class OrientedImageControls extends EventDispatcher{\r\n\t\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\t\t\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\tthis.originalCam = viewer.scene.getActiveCamera();\r\n\t\tthis.shearCam = viewer.scene.getActiveCamera().clone();\r\n\t\tthis.shearCam.rotation.set(this.originalCam.rotation.toArray());\r\n\t\tthis.shearCam.updateProjectionMatrix();\r\n\t\tthis.shearCam.updateProjectionMatrix = () => {\r\n\t\t\treturn this.shearCam.projectionMatrix;\r\n\t\t};\r\n\r\n\t\tthis.image = null;\r\n\r\n\t\tthis.fadeFactor = 20;\r\n\t\tthis.fovDelta = 0;\r\n\r\n\t\tthis.fovMin = 0.1;\r\n\t\tthis.fovMax = 120;\r\n\r\n\t\tthis.shear = [0, 0];\r\n\r\n\t\t// const style = ``;\r\n\t\tthis.elUp = $(``);\r\n\t\tthis.elRight = $(``);\r\n\t\tthis.elDown = $(``);\r\n\t\tthis.elLeft = $(``);\r\n\t\tthis.elExit = $(``);\r\n\r\n\t\tthis.elExit.click( () => {\r\n\t\t\tthis.release();\r\n\t\t});\r\n\r\n\t\tthis.elUp.click(() => {\r\n\t\t\tconst fovY = viewer.getFOV();\r\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\r\n\t\t\tthis.shear[1] += 0.1 * top;\r\n\t\t});\r\n\r\n\t\tthis.elRight.click(() => {\r\n\t\t\tconst fovY = viewer.getFOV();\r\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\r\n\t\t\tthis.shear[0] += 0.1 * top;\r\n\t\t});\r\n\r\n\t\tthis.elDown.click(() => {\r\n\t\t\tconst fovY = viewer.getFOV();\r\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\r\n\t\t\tthis.shear[1] -= 0.1 * top;\r\n\t\t});\r\n\r\n\t\tthis.elLeft.click(() => {\r\n\t\t\tconst fovY = viewer.getFOV();\r\n\t\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\r\n\t\t\tthis.shear[0] -= 0.1 * top;\r\n\t\t});\r\n\r\n\t\tthis.scene = null;\r\n\t\tthis.sceneControls = new THREE.Scene();\r\n\r\n\t\tlet scroll = (e) => {\r\n\t\t\tthis.fovDelta += -e.delta * 1.0;\r\n\t\t};\r\n\r\n\t\tthis.addEventListener('mousewheel', scroll);\r\n\t\t//this.addEventListener(\"mousemove\", onMove);\r\n\t}\r\n\r\n\thasSomethingCaptured(){\r\n\t\treturn this.image !== null;\r\n\t}\r\n\r\n\tcapture(image){\r\n\t\tif(this.hasSomethingCaptured()){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.image = image;\r\n\r\n\t\tthis.originalFOV = this.viewer.getFOV();\r\n\t\tthis.originalControls = this.viewer.getControls();\r\n\r\n\t\tthis.viewer.setControls(this);\r\n\t\tthis.viewer.scene.overrideCamera = this.shearCam;\r\n\r\n\t\tconst elCanvas = this.viewer.renderer.domElement;\r\n\t\tconst elRoot = $(elCanvas.parentElement);\r\n\r\n\t\tthis.shear = [0, 0];\r\n\r\n\r\n\t\telRoot.append(this.elUp);\r\n\t\telRoot.append(this.elRight);\r\n\t\telRoot.append(this.elDown);\r\n\t\telRoot.append(this.elLeft);\r\n\t\telRoot.append(this.elExit);\r\n\t}\r\n\r\n\trelease(){\r\n\t\tthis.image = null;\r\n\r\n\t\tthis.viewer.scene.overrideCamera = null;\r\n\r\n\t\tthis.elUp.detach();\r\n\t\tthis.elRight.detach();\r\n\t\tthis.elDown.detach();\r\n\t\tthis.elLeft.detach();\r\n\t\tthis.elExit.detach();\r\n\r\n\t\tthis.viewer.setFOV(this.originalFOV);\r\n\t\tthis.viewer.setControls(this.originalControls);\r\n\t}\r\n\r\n\tsetScene (scene) {\r\n\t\tthis.scene = scene;\r\n\t}\r\n\r\n\tupdate (delta) {\r\n\t\t// const view = this.scene.view;\r\n\r\n\t\t// let prevTotal = this.shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0);\r\n\r\n\t\t//const progression = Math.min(1, this.fadeFactor * delta);\r\n\t\t//const attenuation = Math.max(0, 1 - this.fadeFactor * delta);\r\n\t\tconst progression = 1;\r\n\t\tconst attenuation = 0;\r\n\r\n\t\tconst oldFov = this.viewer.getFOV();\r\n\t\tlet fovProgression = progression * this.fovDelta;\r\n\t\tlet newFov = oldFov * ((1 + fovProgression / 10));\r\n\r\n\t\tnewFov = Math.max(this.fovMin, newFov);\r\n\t\tnewFov = Math.min(this.fovMax, newFov);\r\n\r\n\t\tlet diff = newFov / oldFov;\r\n\r\n\t\tconst mouse = this.viewer.inputHandler.mouse;\r\n\t\tconst canvasSize = this.viewer.renderer.getSize(new THREE.Vector2());\r\n\t\tconst uv = [\r\n\t\t\t(mouse.x / canvasSize.x),\r\n\t\t\t((canvasSize.y - mouse.y) / canvasSize.y)\r\n\t\t];\r\n\r\n\t\tconst fovY = newFov;\r\n\t\tconst aspect = canvasSize.x / canvasSize.y;\r\n\t\tconst top = Math.tan(THREE.Math.degToRad(fovY / 2));\r\n\t\tconst height = 2 * top;\r\n\t\tconst width = aspect * height;\r\n\r\n\t\tconst shearRangeX = [\r\n\t\t\tthis.shear[0] - 0.5 * width,\r\n\t\t\tthis.shear[0] + 0.5 * width,\r\n\t\t];\r\n\r\n\t\tconst shearRangeY = [\r\n\t\t\tthis.shear[1] - 0.5 * height,\r\n\t\t\tthis.shear[1] + 0.5 * height,\r\n\t\t];\r\n\r\n\t\tconst shx = (1 - uv[0]) * shearRangeX[0] + uv[0] * shearRangeX[1];\r\n\t\tconst shy = (1 - uv[1]) * shearRangeY[0] + uv[1] * shearRangeY[1];\r\n\r\n\t\tconst shu = (1 - diff);\r\n\r\n\t\tconst newShear = [\r\n\t\t\t(1 - shu) * this.shear[0] + shu * shx,\r\n\t\t\t(1 - shu) * this.shear[1] + shu * shy,\r\n\t\t];\r\n\t\t\r\n\t\tthis.shear = newShear;\r\n\t\tthis.viewer.setFOV(newFov);\r\n\t\t\r\n\t\tconst {originalCam, shearCam} = this;\r\n\r\n\t\toriginalCam.fov = newFov;\r\n\t\toriginalCam.updateMatrixWorld()\r\n\t\toriginalCam.updateProjectionMatrix();\r\n\t\tshearCam.copy(originalCam);\r\n\t\tshearCam.rotation.set(...originalCam.rotation.toArray());\r\n\r\n\t\tshearCam.updateMatrixWorld();\r\n\t\tshearCam.projectionMatrix.copy(originalCam.projectionMatrix);\r\n\r\n\t\tconst [sx, sy] = this.shear;\r\n\t\tconst mShear = new THREE.Matrix4().set(\r\n\t\t\t1, 0, sx, 0,\r\n\t\t\t0, 1, sy, 0,\r\n\t\t\t0, 0, 1, 0,\r\n\t\t\t0, 0, 0, 1,\r\n\t\t);\r\n\r\n\t\tconst proj = shearCam.projectionMatrix;\r\n\t\tproj.multiply(mShear);\r\n\t\tshearCam.projectionMatrixInverse.copy(proj).invert();\r\n\r\n\t\tlet total = shearCam.projectionMatrix.elements.reduce( (a, i) => a + i, 0);\r\n\r\n\t\tthis.fovDelta *= attenuation;\r\n\t}\r\n};\r\n","\r\nimport * as THREE from \"../../../libs/three.js/build/three.module.js\";\r\nimport {OrientedImageControls} from \"./OrientedImageControls.js\";\r\nimport { EventDispatcher } from \"../../EventDispatcher.js\";\r\n\r\n// https://support.pix4d.com/hc/en-us/articles/205675256-How-are-yaw-pitch-roll-defined\r\n// https://support.pix4d.com/hc/en-us/articles/202558969-How-are-omega-phi-kappa-defined\r\n\r\nfunction createMaterial(){\r\n\r\n\tlet vertexShader = `\r\n\tuniform float uNear;\r\n\tvarying vec2 vUV;\r\n\tvarying vec4 vDebug;\r\n\t\r\n\tvoid main(){\r\n\t\tvDebug = vec4(0.0, 1.0, 0.0, 1.0);\r\n\t\tvec4 modelViewPosition = modelViewMatrix * vec4(position, 1.0);\r\n\t\t// make sure that this mesh is at least in front of the near plane\r\n\t\tmodelViewPosition.xyz += normalize(modelViewPosition.xyz) * uNear;\r\n\t\tgl_Position = projectionMatrix * modelViewPosition;\r\n\t\tvUV = uv;\r\n\t}\r\n\t`;\r\n\r\n\tlet fragmentShader = `\r\n\tuniform sampler2D tColor;\r\n\tuniform float uOpacity;\r\n\tvarying vec2 vUV;\r\n\tvarying vec4 vDebug;\r\n\tvoid main(){\r\n\t\tvec4 color = texture2D(tColor, vUV);\r\n\t\tgl_FragColor = color;\r\n\t\tgl_FragColor.a = uOpacity;\r\n\t}\r\n\t`;\r\n\tconst material = new THREE.ShaderMaterial( {\r\n\t\tuniforms: {\r\n\t\t\t// time: { value: 1.0 },\r\n\t\t\t// resolution: { value: new THREE.Vector2() }\r\n\t\t\ttColor: {value: new THREE.Texture() },\r\n\t\t\tuNear: {value: 0.0},\r\n\t\t\tuOpacity: {value: 1.0},\r\n\t\t},\r\n\t\tvertexShader: vertexShader,\r\n\t\tfragmentShader: fragmentShader,\r\n\t\tside: THREE.DoubleSide,\r\n\t} );\r\n\r\n\tmaterial.side = THREE.DoubleSide;\r\n\r\n\treturn material;\r\n}\r\n\r\nconst planeGeometry = new THREE.PlaneGeometry(1, 1);\r\nconst lineGeometry = new THREE.Geometry();\r\n\r\nlineGeometry.vertices.push(\r\n\tnew THREE.Vector3(-0.5, -0.5, 0),\r\n\tnew THREE.Vector3( 0.5, -0.5, 0),\r\n\tnew THREE.Vector3( 0.5, 0.5, 0),\r\n\tnew THREE.Vector3(-0.5, 0.5, 0),\r\n\tnew THREE.Vector3(-0.5, -0.5, 0),\r\n);\r\n\r\nexport class OrientedImage{\r\n\r\n\tconstructor(id){\r\n\r\n\t\tthis.id = id;\r\n\t\tthis.fov = 1.0;\r\n\t\tthis.position = new THREE.Vector3();\r\n\t\tthis.rotation = new THREE.Vector3();\r\n\t\tthis.width = 0;\r\n\t\tthis.height = 0;\r\n\t\tthis.fov = 1.0;\r\n\r\n\t\tconst material = createMaterial();\r\n\t\tconst lineMaterial = new THREE.LineBasicMaterial( { color: 0x00ff00 } );\r\n\t\tthis.mesh = new THREE.Mesh(planeGeometry, material);\r\n\t\tthis.line = new THREE.Line(lineGeometry, lineMaterial);\r\n\t\tthis.texture = null;\r\n\r\n\t\tthis.mesh.orientedImage = this;\r\n\t}\r\n\r\n\tset(position, rotation, dimension, fov){\r\n\r\n\t\tlet radians = rotation.map(THREE.Math.degToRad);\r\n\r\n\t\tthis.position.set(...position);\r\n\t\tthis.mesh.position.set(...position);\r\n\r\n\t\tthis.rotation.set(...radians);\r\n\t\tthis.mesh.rotation.set(...radians);\r\n\r\n\t\t[this.width, this.height] = dimension;\r\n\t\tthis.mesh.scale.set(this.width / this.height, 1, 1);\r\n\r\n\t\tthis.fov = fov;\r\n\r\n\t\tthis.updateTransform();\r\n\t}\r\n\r\n\tupdateTransform(){\r\n\t\tlet {mesh, line, fov} = this;\r\n\r\n\t\tmesh.updateMatrixWorld();\r\n\t\tconst dir = mesh.getWorldDirection();\r\n\t\tconst alpha = THREE.Math.degToRad(fov / 2);\r\n\t\tconst d = -0.5 / Math.tan(alpha);\r\n\t\tconst move = dir.clone().multiplyScalar(d);\r\n\t\tmesh.position.add(move);\r\n\r\n\t\tline.position.copy(mesh.position);\r\n\t\tline.scale.copy(mesh.scale);\r\n\t\tline.rotation.copy(mesh.rotation);\r\n\t}\r\n\r\n};\r\n\r\nexport class OrientedImages extends EventDispatcher{\r\n\r\n\tconstructor(){\r\n\t\tsuper();\r\n\r\n\t\tthis.node = null;\r\n\t\tthis.cameraParams = null;\r\n\t\tthis.imageParams = null;\r\n\t\tthis.images = null;\r\n\t\tthis._visible = true;\r\n\t}\r\n\r\n\tset visible(visible){\r\n\t\tif(this._visible === visible){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tfor(const image of this.images){\r\n\t\t\timage.mesh.visible = visible;\r\n\t\t\timage.line.visible = visible;\r\n\t\t}\r\n\r\n\t\tthis._visible = visible;\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"visibility_changed\",\r\n\t\t\timages: this,\r\n\t\t});\r\n\t}\r\n\r\n\tget visible(){\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\r\n};\r\n\r\nexport class OrientedImageLoader{\r\n\r\n\tstatic async loadCameraParams(path){\r\n\t\tconst res = await fetch(path);\r\n\t\tconst text = await res.text();\r\n\r\n\t\tconst parser = new DOMParser();\r\n\t\tconst doc = parser.parseFromString(text, \"application/xml\");\r\n\r\n\t\tconst width = parseInt(doc.getElementsByTagName(\"width\")[0].textContent);\r\n\t\tconst height = parseInt(doc.getElementsByTagName(\"height\")[0].textContent);\r\n\t\tconst f = parseFloat(doc.getElementsByTagName(\"f\")[0].textContent);\r\n\r\n\t\tlet a = (height / 2) / f;\r\n\t\tlet fov = 2 * THREE.Math.radToDeg(Math.atan(a));\r\n\r\n\t\tconst params = {\r\n\t\t\tpath: path,\r\n\t\t\twidth: width,\r\n\t\t\theight: height,\r\n\t\t\tf: f,\r\n\t\t\tfov: fov,\r\n\t\t};\r\n\r\n\t\treturn params;\r\n\t}\r\n\r\n\tstatic async loadImageParams(path){\r\n\r\n\t\tconst response = await fetch(path);\r\n\t\tif(!response.ok){\r\n\t\t\tconsole.error(`failed to load ${path}`);\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tconst content = await response.text();\r\n\t\tconst lines = content.split(/\\r?\\n/);\r\n\t\tconst imageParams = [];\r\n\r\n\t\tfor(let i = 1; i < lines.length; i++){\r\n\t\t\tconst line = lines[i];\r\n\r\n\t\t\tif(line.startsWith(\"#\")){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst tokens = line.split(/\\s+/);\r\n\r\n\t\t\tif(tokens.length < 6){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tconst params = {\r\n\t\t\t\tid: tokens[0],\r\n\t\t\t\tx: Number.parseFloat(tokens[1]),\r\n\t\t\t\ty: Number.parseFloat(tokens[2]),\r\n\t\t\t\tz: Number.parseFloat(tokens[3]),\r\n\t\t\t\tomega: Number.parseFloat(tokens[4]),\r\n\t\t\t\tphi: Number.parseFloat(tokens[5]),\r\n\t\t\t\tkappa: Number.parseFloat(tokens[6]),\r\n\t\t\t};\r\n\r\n\t\t\t// const whitelist = [\"47518.jpg\"];\r\n\t\t\t// if(whitelist.includes(params.id)){\r\n\t\t\t// \timageParams.push(params);\r\n\t\t\t// }\r\n\t\t\timageParams.push(params);\r\n\t\t}\r\n\r\n\t\t// debug\r\n\t\t//return [imageParams[50]];\r\n\r\n\t\treturn imageParams;\r\n\t}\r\n\r\n\tstatic async load(cameraParamsPath, imageParamsPath, viewer){\r\n\r\n\t\tconst tStart = performance.now();\r\n\r\n\t\tconst [cameraParams, imageParams] = await Promise.all([\r\n\t\t\tOrientedImageLoader.loadCameraParams(cameraParamsPath),\r\n\t\t\tOrientedImageLoader.loadImageParams(imageParamsPath),\r\n\t\t]);\r\n\r\n\t\tconst orientedImageControls = new OrientedImageControls(viewer);\r\n\t\tconst raycaster = new THREE.Raycaster();\r\n\r\n\t\tconst tEnd = performance.now();\r\n\t\tconsole.log(tEnd - tStart);\r\n\r\n\t\t// const sp = new THREE.PlaneGeometry(1, 1);\r\n\t\t// const lg = new THREE.Geometry();\r\n\r\n\t\t// lg.vertices.push(\r\n\t\t// \tnew THREE.Vector3(-0.5, -0.5, 0),\r\n\t\t// \tnew THREE.Vector3( 0.5, -0.5, 0),\r\n\t\t// \tnew THREE.Vector3( 0.5, 0.5, 0),\r\n\t\t// \tnew THREE.Vector3(-0.5, 0.5, 0),\r\n\t\t// \tnew THREE.Vector3(-0.5, -0.5, 0),\r\n\t\t// );\r\n\r\n\t\tconst {width, height} = cameraParams;\r\n\t\tconst orientedImages = [];\r\n\t\tconst sceneNode = new THREE.Object3D();\r\n\t\tsceneNode.name = \"oriented_images\";\r\n\r\n\t\tfor(const params of imageParams){\r\n\r\n\t\t\t// const material = createMaterial();\r\n\t\t\t// const lm = new THREE.LineBasicMaterial( { color: 0x00ff00 } );\r\n\t\t\t// const mesh = new THREE.Mesh(sp, material);\r\n\r\n\t\t\tconst {x, y, z, omega, phi, kappa} = params;\r\n\t\t\t// const [rx, ry, rz] = [omega, phi, kappa]\r\n\t\t\t// \t.map(THREE.Math.degToRad);\r\n\t\t\t\r\n\t\t\t// mesh.position.set(x, y, z);\r\n\t\t\t// mesh.scale.set(width / height, 1, 1);\r\n\t\t\t// mesh.rotation.set(rx, ry, rz);\r\n\t\t\t// {\r\n\t\t\t// \tmesh.updateMatrixWorld();\r\n\t\t\t// \tconst dir = mesh.getWorldDirection();\r\n\t\t\t// \tconst alpha = THREE.Math.degToRad(cameraParams.fov / 2);\r\n\t\t\t// \tconst d = -0.5 / Math.tan(alpha);\r\n\t\t\t// \tconst move = dir.clone().multiplyScalar(d);\r\n\t\t\t// \tmesh.position.add(move);\r\n\t\t\t// }\r\n\t\t\t// sceneNode.add(mesh);\r\n\r\n\t\t\t// const line = new THREE.Line(lg, lm);\r\n\t\t\t// line.position.copy(mesh.position);\r\n\t\t\t// line.scale.copy(mesh.scale);\r\n\t\t\t// line.rotation.copy(mesh.rotation);\r\n\t\t\t// sceneNode.add(line);\r\n\r\n\t\t\tlet orientedImage = new OrientedImage(params.id);\r\n\t\t\t// orientedImage.setPosition(x, y, z);\r\n\t\t\t// orientedImage.setRotation(omega, phi, kappa);\r\n\t\t\t// orientedImage.setDimension(width, height);\r\n\t\t\tlet position = [x, y, z];\r\n\t\t\tlet rotation = [omega, phi, kappa];\r\n\t\t\tlet dimension = [width, height];\r\n\t\t\torientedImage.set(position, rotation, dimension, cameraParams.fov);\r\n\r\n\t\t\tsceneNode.add(orientedImage.mesh);\r\n\t\t\tsceneNode.add(orientedImage.line);\r\n\t\t\t\r\n\t\t\torientedImages.push(orientedImage);\r\n\t\t}\r\n\r\n\t\tlet hoveredElement = null;\r\n\t\tlet clipVolume = null;\r\n\r\n\t\tconst onMouseMove = (evt) => {\r\n\t\t\tconst tStart = performance.now();\r\n\t\t\tif(hoveredElement){\r\n\t\t\t\thoveredElement.line.material.color.setRGB(0, 1, 0);\r\n\t\t\t}\r\n\t\t\tevt.preventDefault();\r\n\r\n\t\t\t//var array = getMousePosition( container, evt.clientX, evt.clientY );\r\n\t\t\tconst rect = viewer.renderer.domElement.getBoundingClientRect();\r\n\t\t\tconst [x, y] = [evt.clientX, evt.clientY];\r\n\t\t\tconst array = [ \r\n\t\t\t\t( x - rect.left ) / rect.width, \r\n\t\t\t\t( y - rect.top ) / rect.height \r\n\t\t\t];\r\n\t\t\tconst onClickPosition = new THREE.Vector2(...array);\r\n\t\t\t//const intersects = getIntersects(onClickPosition, scene.children);\r\n\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\t\t\tconst mouse = new THREE.Vector3(\r\n\t\t\t\t+ ( onClickPosition.x * 2 ) - 1, \r\n\t\t\t\t- ( onClickPosition.y * 2 ) + 1 );\r\n\t\t\tconst objects = orientedImages.map(i => i.mesh);\r\n\t\t\traycaster.setFromCamera( mouse, camera );\r\n\t\t\tconst intersects = raycaster.intersectObjects( objects );\r\n\t\t\tlet selectionChanged = false;\r\n\r\n\t\t\tif ( intersects.length > 0){\r\n\t\t\t\t//console.log(intersects);\r\n\t\t\t\tconst intersection = intersects[0];\r\n\t\t\t\tconst orientedImage = intersection.object.orientedImage;\r\n\t\t\t\torientedImage.line.material.color.setRGB(1, 0, 0);\r\n\t\t\t\tselectionChanged = hoveredElement !== orientedImage;\r\n\t\t\t\thoveredElement = orientedImage;\r\n\t\t\t}else{\r\n\t\t\t\thoveredElement = null;\r\n\t\t\t}\r\n\r\n\t\t\tlet shouldRemoveClipVolume = clipVolume !== null && hoveredElement === null;\r\n\t\t\tlet shouldAddClipVolume = clipVolume === null && hoveredElement !== null;\r\n\r\n\t\t\tif(clipVolume !== null && (hoveredElement === null || selectionChanged)){\r\n\t\t\t\t// remove existing\r\n\t\t\t\tviewer.scene.removePolygonClipVolume(clipVolume);\r\n\t\t\t\tclipVolume = null;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(shouldAddClipVolume || selectionChanged){\r\n\t\t\t\tconst img = hoveredElement;\r\n\t\t\t\tconst fov = cameraParams.fov;\r\n\t\t\t\tconst aspect = cameraParams.width / cameraParams.height;\r\n\t\t\t\tconst near = 1.0;\r\n\t\t\t\tconst far = 1000 * 1000;\r\n\t\t\t\tconst camera = new THREE.PerspectiveCamera(fov, aspect, near, far);\r\n\t\t\t\tcamera.rotation.order = viewer.scene.getActiveCamera().rotation.order;\r\n\t\t\t\tcamera.rotation.copy(img.mesh.rotation);\r\n\t\t\t\t{\r\n\t\t\t\t\tconst mesh = img.mesh;\r\n\t\t\t\t\tconst dir = mesh.getWorldDirection();\r\n\t\t\t\t\tconst pos = mesh.position;\r\n\t\t\t\t\tconst alpha = THREE.Math.degToRad(fov / 2);\r\n\t\t\t\t\tconst d = 0.5 / Math.tan(alpha);\r\n\t\t\t\t\tconst newCamPos = pos.clone().add(dir.clone().multiplyScalar(d));\r\n\t\t\t\t\tconst newCamDir = pos.clone().sub(newCamPos);\r\n\t\t\t\t\tconst newCamTarget = new THREE.Vector3().addVectors(\r\n\t\t\t\t\t\tnewCamPos,\r\n\t\t\t\t\t\tnewCamDir.clone().multiplyScalar(viewer.getMoveSpeed()));\r\n\t\t\t\t\tcamera.position.copy(newCamPos);\r\n\t\t\t\t}\r\n\t\t\t\tlet volume = new Potree.PolygonClipVolume(camera);\r\n\t\t\t\tlet m0 = new THREE.Mesh();\r\n\t\t\t\tlet m1 = new THREE.Mesh();\r\n\t\t\t\tlet m2 = new THREE.Mesh();\r\n\t\t\t\tlet m3 = new THREE.Mesh();\r\n\t\t\t\tm0.position.set(-1, -1, 0);\r\n\t\t\t\tm1.position.set( 1, -1, 0);\r\n\t\t\t\tm2.position.set( 1, 1, 0);\r\n\t\t\t\tm3.position.set(-1, 1, 0);\r\n\t\t\t\tvolume.markers.push(m0, m1, m2, m3);\r\n\t\t\t\tvolume.initialized = true;\r\n\t\t\t\t\r\n\t\t\t\tviewer.scene.addPolygonClipVolume(volume);\r\n\t\t\t\tclipVolume = volume;\r\n\t\t\t}\r\n\t\t\tconst tEnd = performance.now();\r\n\t\t\t//console.log(tEnd - tStart);\r\n\t\t};\r\n\r\n\t\tconst moveToImage = (image) => {\r\n\t\t\tconsole.log(\"move to image \" + image.id);\r\n\r\n\t\t\tconst mesh = image.mesh;\r\n\t\t\tconst newCamPos = image.position.clone();\r\n\t\t\tconst newCamTarget = mesh.position.clone();\r\n\r\n\t\t\tviewer.scene.view.setView(newCamPos, newCamTarget, 500, () => {\r\n\t\t\t\torientedImageControls.capture(image);\r\n\t\t\t});\r\n\r\n\t\t\tif(image.texture === null){\r\n\r\n\t\t\t\tconst target = image;\r\n\r\n\t\t\t\tconst tmpImagePath = `${Potree.resourcePath}/images/loading.jpg`;\r\n\t\t\t\tnew THREE.TextureLoader().load(tmpImagePath,\r\n\t\t\t\t\t(texture) => {\r\n\t\t\t\t\t\tif(target.texture === null){\r\n\t\t\t\t\t\t\ttarget.texture = texture;\r\n\t\t\t\t\t\t\ttarget.mesh.material.uniforms.tColor.value = texture;\r\n\t\t\t\t\t\t\tmesh.material.needsUpdate = true;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\r\n\t\t\t\tconst imagePath = `${imageParamsPath}/../${target.id}`;\r\n\t\t\t\tnew THREE.TextureLoader().load(imagePath,\r\n\t\t\t\t\t(texture) => {\r\n\t\t\t\t\t\ttarget.texture = texture;\r\n\t\t\t\t\t\ttarget.mesh.material.uniforms.tColor.value = texture;\r\n\t\t\t\t\t\tmesh.material.needsUpdate = true;\r\n\t\t\t\t\t}\r\n\t\t\t\t);\r\n\t\t\t\t\r\n\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tconst onMouseClick = (evt) => {\r\n\r\n\t\t\tif(orientedImageControls.hasSomethingCaptured()){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(hoveredElement){\r\n\t\t\t\tmoveToImage(hoveredElement);\r\n\t\t\t}\r\n\t\t};\r\n\t\tviewer.renderer.domElement.addEventListener( 'mousemove', onMouseMove, false );\r\n\t\tviewer.renderer.domElement.addEventListener( 'mousedown', onMouseClick, false );\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\r\n\t\t\tfor(const image of orientedImages){\r\n\t\t\t\tconst world = image.mesh.matrixWorld;\r\n\t\t\t\tconst {width, height} = image;\r\n\t\t\t\tconst aspect = width / height;\r\n\r\n\t\t\t\tconst camera = viewer.scene.getActiveCamera();\r\n\r\n\t\t\t\tconst imgPos = image.mesh.getWorldPosition(new THREE.Vector3());\r\n\t\t\t\tconst camPos = camera.position;\r\n\t\t\t\tconst d = camPos.distanceTo(imgPos);\r\n\r\n\t\t\t\tconst minSize = 1; // in degrees of fov\r\n\t\t\t\tconst a = THREE.Math.degToRad(minSize);\r\n\t\t\t\tlet r = d * Math.tan(a);\r\n\t\t\t\tr = Math.max(r, 1);\r\n\r\n\r\n\t\t\t\timage.mesh.scale.set(r * aspect, r, 1);\r\n\t\t\t\timage.line.scale.set(r * aspect, r, 1);\r\n\r\n\t\t\t\timage.mesh.material.uniforms.uNear.value = camera.near;\r\n\r\n\t\t\t}\r\n\r\n\t\t});\r\n\r\n\t\tconst images = new OrientedImages();\r\n\t\timages.node = sceneNode;\r\n\t\timages.cameraParamsPath = cameraParamsPath;\r\n\t\timages.imageParamsPath = imageParamsPath;\r\n\t\timages.cameraParams = cameraParams;\r\n\t\timages.imageParams = imageParams;\r\n\t\timages.images = orientedImages;\r\n\r\n\t\tPotree.debug.moveToImage = moveToImage;\r\n\r\n\t\treturn images;\r\n\t}\r\n}\r\n\r\n","\r\nimport * as THREE from \"../../../libs/three.js/build/three.module.js\";\r\nimport { EventDispatcher } from \"../../EventDispatcher.js\";\r\nimport {TextSprite} from \"../../TextSprite.js\";\r\n\r\nlet sg = new THREE.SphereGeometry(1, 8, 8);\r\nlet sgHigh = new THREE.SphereGeometry(1, 128, 128);\r\n\r\nlet sm = new THREE.MeshBasicMaterial({side: THREE.BackSide});\r\nlet smHovered = new THREE.MeshBasicMaterial({side: THREE.BackSide, color: 0xff0000});\r\n\r\nlet raycaster = new THREE.Raycaster();\r\nlet currentlyHovered = null;\r\n\r\nlet previousView = {\r\n\tcontrols: null,\r\n\tposition: null,\r\n\ttarget: null,\r\n};\r\n\r\nclass Image360{\r\n\r\n\tconstructor(file, time, longitude, latitude, altitude, course, pitch, roll){\r\n\t\tthis.file = file;\r\n\t\tthis.time = time;\r\n\t\tthis.longitude = longitude;\r\n\t\tthis.latitude = latitude;\r\n\t\tthis.altitude = altitude;\r\n\t\tthis.course = course;\r\n\t\tthis.pitch = pitch;\r\n\t\tthis.roll = roll;\r\n\t\tthis.mesh = null;\r\n\t}\r\n};\r\n\r\nexport class Images360 extends EventDispatcher{\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.selectingEnabled = true;\r\n\r\n\t\tthis.images = [];\r\n\t\tthis.node = new THREE.Object3D();\r\n\r\n\t\tthis.sphere = new THREE.Mesh(sgHigh, sm);\r\n\t\tthis.sphere.visible = false;\r\n\t\tthis.sphere.scale.set(1000, 1000, 1000);\r\n\t\tthis.node.add(this.sphere);\r\n\t\tthis._visible = true;\r\n\t\t// this.node.add(label);\r\n\r\n\t\tthis.focusedImage = null;\r\n\r\n\t\tlet elUnfocus = document.createElement(\"input\");\r\n\t\telUnfocus.type = \"button\";\r\n\t\telUnfocus.value = \"unfocus\";\r\n\t\telUnfocus.style.position = \"absolute\";\r\n\t\telUnfocus.style.right = \"10px\";\r\n\t\telUnfocus.style.bottom = \"10px\";\r\n\t\telUnfocus.style.zIndex = \"10000\";\r\n\t\telUnfocus.style.fontSize = \"2em\";\r\n\t\telUnfocus.addEventListener(\"click\", () => this.unfocus());\r\n\t\tthis.elUnfocus = elUnfocus;\r\n\r\n\t\tthis.domRoot = viewer.renderer.domElement.parentElement;\r\n\t\tthis.domRoot.appendChild(elUnfocus);\r\n\t\tthis.elUnfocus.style.display = \"none\";\r\n\r\n\t\tviewer.addEventListener(\"update\", () => {\r\n\t\t\tthis.update(viewer);\r\n\t\t});\r\n\t\tviewer.inputHandler.addInputListener(this);\r\n\r\n\t\tthis.addEventListener(\"mousedown\", () => {\r\n\t\t\tif(currentlyHovered && currentlyHovered.image360){\r\n\t\t\t\tthis.focus(currentlyHovered.image360);\r\n\t\t\t}\r\n\t\t});\r\n\t\t\r\n\t};\r\n\r\n\tset visible(visible){\r\n\t\tif(this._visible === visible){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\r\n\t\tfor(const image of this.images){\r\n\t\t\timage.mesh.visible = visible && (this.focusedImage == null);\r\n\t\t}\r\n\r\n\t\tthis.sphere.visible = visible && (this.focusedImage != null);\r\n\t\tthis._visible = visible;\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: \"visibility_changed\",\r\n\t\t\timages: this,\r\n\t\t});\r\n\t}\r\n\r\n\tget visible(){\r\n\t\treturn this._visible;\r\n\t}\r\n\r\n\tfocus(image360){\r\n\t\tif(this.focusedImage !== null){\r\n\t\t\tthis.unfocus();\r\n\t\t}\r\n\r\n\t\tpreviousView = {\r\n\t\t\tcontrols: this.viewer.controls,\r\n\t\t\tposition: this.viewer.scene.view.position.clone(),\r\n\t\t\ttarget: viewer.scene.view.getPivot(),\r\n\t\t};\r\n\r\n\t\tthis.viewer.setControls(this.viewer.orbitControls);\r\n\t\tthis.viewer.orbitControls.doubleClockZoomEnabled = false;\r\n\r\n\t\tfor(let image of this.images){\r\n\t\t\timage.mesh.visible = false;\r\n\t\t}\r\n\r\n\t\tthis.selectingEnabled = false;\r\n\r\n\t\tthis.sphere.visible = false;\r\n\r\n\t\tthis.load(image360).then( () => {\r\n\t\t\tthis.sphere.visible = true;\r\n\t\t\tthis.sphere.material.map = image360.texture;\r\n\t\t\tthis.sphere.material.needsUpdate = true;\r\n\t\t});\r\n\r\n\t\t{ // orientation\r\n\t\t\tlet {course, pitch, roll} = image360;\r\n\t\t\tthis.sphere.rotation.set(\r\n\t\t\t\tTHREE.Math.degToRad(+roll + 90),\r\n\t\t\t\tTHREE.Math.degToRad(-pitch),\r\n\t\t\t\tTHREE.Math.degToRad(-course + 90),\r\n\t\t\t\t\"ZYX\"\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\tthis.sphere.position.set(...image360.position);\r\n\r\n\t\tlet target = new THREE.Vector3(...image360.position);\r\n\t\tlet dir = target.clone().sub(viewer.scene.view.position).normalize();\r\n\t\tlet move = dir.multiplyScalar(0.000001);\r\n\t\tlet newCamPos = target.clone().sub(move);\r\n\r\n\t\tviewer.scene.view.setView(\r\n\t\t\tnewCamPos, \r\n\t\t\ttarget,\r\n\t\t\t500\r\n\t\t);\r\n\r\n\t\tthis.focusedImage = image360;\r\n\r\n\t\tthis.elUnfocus.style.display = \"\";\r\n\t}\r\n\r\n\tunfocus(){\r\n\t\tthis.selectingEnabled = true;\r\n\r\n\t\tfor(let image of this.images){\r\n\t\t\timage.mesh.visible = true;\r\n\t\t}\r\n\r\n\t\tlet image = this.focusedImage;\r\n\r\n\t\tif(image === null){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\r\n\t\tthis.sphere.material.map = null;\r\n\t\tthis.sphere.material.needsUpdate = true;\r\n\t\tthis.sphere.visible = false;\r\n\r\n\t\tlet pos = viewer.scene.view.position;\r\n\t\tlet target = viewer.scene.view.getPivot();\r\n\t\tlet dir = target.clone().sub(pos).normalize();\r\n\t\tlet move = dir.multiplyScalar(10);\r\n\t\tlet newCamPos = target.clone().sub(move);\r\n\r\n\t\tviewer.orbitControls.doubleClockZoomEnabled = true;\r\n\t\tviewer.setControls(previousView.controls);\r\n\r\n\t\tviewer.scene.view.setView(\r\n\t\t\tpreviousView.position, \r\n\t\t\tpreviousView.target,\r\n\t\t\t500\r\n\t\t);\r\n\r\n\r\n\t\tthis.focusedImage = null;\r\n\r\n\t\tthis.elUnfocus.style.display = \"none\";\r\n\t}\r\n\r\n\tload(image360){\r\n\r\n\t\treturn new Promise(resolve => {\r\n\t\t\tlet texture = new THREE.TextureLoader().load(image360.file, resolve);\r\n\t\t\ttexture.wrapS = THREE.RepeatWrapping;\r\n\t\t\ttexture.repeat.x = -1;\r\n\r\n\t\t\timage360.texture = texture;\r\n\t\t});\r\n\r\n\t}\r\n\r\n\thandleHovering(){\r\n\t\tlet mouse = viewer.inputHandler.mouse;\r\n\t\tlet camera = viewer.scene.getActiveCamera();\r\n\t\tlet domElement = viewer.renderer.domElement;\r\n\r\n\t\tlet ray = Potree.Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\r\n\t\t// let tStart = performance.now();\r\n\t\traycaster.ray.copy(ray);\r\n\t\tlet intersections = raycaster.intersectObjects(this.node.children);\r\n\r\n\t\tif(intersections.length === 0){\r\n\t\t\t// label.visible = false;\r\n\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet intersection = intersections[0];\r\n\t\tcurrentlyHovered = intersection.object;\r\n\t\tcurrentlyHovered.material = smHovered;\r\n\r\n\t\t//label.visible = true;\r\n\t\t//label.setText(currentlyHovered.image360.file);\r\n\t\t//currentlyHovered.getWorldPosition(label.position);\r\n\t}\r\n\r\n\tupdate(){\r\n\r\n\t\tlet {viewer} = this;\r\n\r\n\t\tif(currentlyHovered){\r\n\t\t\tcurrentlyHovered.material = sm;\r\n\t\t\tcurrentlyHovered = null;\r\n\t\t}\r\n\r\n\t\tif(this.selectingEnabled){\r\n\t\t\tthis.handleHovering();\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\n\r\nexport class Images360Loader{\r\n\r\n\tstatic async load(url, viewer, params = {}){\r\n\r\n\t\tif(!params.transform){\r\n\t\t\tparams.transform = {\r\n\t\t\t\tforward: a => a,\r\n\t\t\t};\r\n\t\t}\r\n\t\t\r\n\t\tlet response = await fetch(`${url}/coordinates.txt`);\r\n\t\tlet text = await response.text();\r\n\r\n\t\tlet lines = text.split(/\\r?\\n/);\r\n\t\tlet coordinateLines = lines.slice(1);\r\n\r\n\t\tlet images360 = new Images360(viewer);\r\n\r\n\t\tfor(let line of coordinateLines){\r\n\r\n\t\t\tif(line.trim().length === 0){\r\n\t\t\t\tcontinue;\r\n\t\t\t}\r\n\r\n\t\t\tlet tokens = line.split(/\\t/);\r\n\r\n\t\t\tlet [filename, time, long, lat, alt, course, pitch, roll] = tokens;\r\n\t\t\ttime = parseFloat(time);\r\n\t\t\tlong = parseFloat(long);\r\n\t\t\tlat = parseFloat(lat);\r\n\t\t\talt = parseFloat(alt);\r\n\t\t\tcourse = parseFloat(course);\r\n\t\t\tpitch = parseFloat(pitch);\r\n\t\t\troll = parseFloat(roll);\r\n\r\n\t\t\tfilename = filename.replace(/\"/g, \"\");\r\n\t\t\tlet file = `${url}/${filename}`;\r\n\r\n\t\t\tlet image360 = new Image360(file, time, long, lat, alt, course, pitch, roll);\r\n\r\n\t\t\tlet xy = params.transform.forward([long, lat]);\r\n\t\t\tlet position = [...xy, alt];\r\n\t\t\timage360.position = position;\r\n\r\n\t\t\timages360.images.push(image360);\r\n\t\t}\r\n\r\n\t\tImages360Loader.createSceneNodes(images360, params.transform);\r\n\r\n\t\treturn images360;\r\n\r\n\t}\r\n\r\n\tstatic createSceneNodes(images360, transform){\r\n\r\n\t\tfor(let image360 of images360.images){\r\n\t\t\tlet {longitude, latitude, altitude} = image360;\r\n\t\t\tlet xy = transform.forward([longitude, latitude]);\r\n\r\n\t\t\tlet mesh = new THREE.Mesh(sg, sm);\r\n\t\t\tmesh.position.set(...xy, altitude);\r\n\t\t\tmesh.scale.set(1, 1, 1);\r\n\t\t\tmesh.material.transparent = true;\r\n\t\t\tmesh.material.opacity = 0.75;\r\n\t\t\tmesh.image360 = image360;\r\n\r\n\t\t\t{ // orientation\r\n\t\t\t\tvar {course, pitch, roll} = image360;\r\n\t\t\t\tmesh.rotation.set(\r\n\t\t\t\t\tTHREE.Math.degToRad(+roll + 90),\r\n\t\t\t\t\tTHREE.Math.degToRad(-pitch),\r\n\t\t\t\t\tTHREE.Math.degToRad(-course + 90),\r\n\t\t\t\t\t\"ZYX\"\r\n\t\t\t\t);\r\n\t\t\t}\r\n\r\n\t\t\timages360.node.add(mesh);\r\n\r\n\t\t\timage360.mesh = mesh;\r\n\t\t}\r\n\t}\r\n\r\n\t\r\n\r\n};\r\n\r\n\r\n","// This is a generated file. Do not edit.\r\nvar Space_Separator = /[\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\r\nvar ID_Start = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF19]|\\uD806[\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]/;\r\nvar ID_Continue = /[\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1714\\u1720-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u1810-\\u1819\\u1820-\\u1877\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19D9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1B00-\\u1B4B\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1CD0-\\u1CD2\\u1CD4-\\u1CF9\\u1D00-\\u1DF9\\u1DFB-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099\\u309A\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312E\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEA\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA827\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD\\uA900-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE33\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC6F\\uDC7F-\\uDCBA\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDCA-\\uDDCC\\uDDD0-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB7\\uDEC0-\\uDEC9\\uDF00-\\uDF19\\uDF1D-\\uDF2B\\uDF30-\\uDF39]|\\uD806[\\uDCA0-\\uDCE9\\uDCFF\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE83\\uDE86-\\uDE99\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFEC]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4A\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uDB40[\\uDD00-\\uDDEF]/;\r\n\r\nvar unicode = {\r\n\tSpace_Separator: Space_Separator,\r\n\tID_Start: ID_Start,\r\n\tID_Continue: ID_Continue\r\n};\r\n\r\nvar util = {\r\n isSpaceSeparator (c) {\r\n return typeof c === 'string' && unicode.Space_Separator.test(c)\r\n },\r\n\r\n isIdStartChar (c) {\r\n return typeof c === 'string' && (\r\n (c >= 'a' && c <= 'z') ||\r\n (c >= 'A' && c <= 'Z') ||\r\n (c === '$') || (c === '_') ||\r\n unicode.ID_Start.test(c)\r\n )\r\n },\r\n\r\n isIdContinueChar (c) {\r\n return typeof c === 'string' && (\r\n (c >= 'a' && c <= 'z') ||\r\n (c >= 'A' && c <= 'Z') ||\r\n (c >= '0' && c <= '9') ||\r\n (c === '$') || (c === '_') ||\r\n (c === '\\u200C') || (c === '\\u200D') ||\r\n unicode.ID_Continue.test(c)\r\n )\r\n },\r\n\r\n isDigit (c) {\r\n return typeof c === 'string' && /[0-9]/.test(c)\r\n },\r\n\r\n isHexDigit (c) {\r\n return typeof c === 'string' && /[0-9A-Fa-f]/.test(c)\r\n },\r\n};\r\n\r\nlet source;\r\nlet parseState;\r\nlet stack;\r\nlet pos;\r\nlet line;\r\nlet column;\r\nlet token;\r\nlet key;\r\nlet root;\r\n\r\nvar parse = function parse (text, reviver) {\r\n source = String(text);\r\n parseState = 'start';\r\n stack = [];\r\n pos = 0;\r\n line = 1;\r\n column = 0;\r\n token = undefined;\r\n key = undefined;\r\n root = undefined;\r\n\r\n do {\r\n token = lex();\r\n\r\n // This code is unreachable.\r\n // if (!parseStates[parseState]) {\r\n // throw invalidParseState()\r\n // }\r\n\r\n parseStates[parseState]();\r\n } while (token.type !== 'eof')\r\n\r\n if (typeof reviver === 'function') {\r\n return internalize({'': root}, '', reviver)\r\n }\r\n\r\n return root\r\n};\r\n\r\nfunction internalize (holder, name, reviver) {\r\n const value = holder[name];\r\n if (value != null && typeof value === 'object') {\r\n for (const key in value) {\r\n const replacement = internalize(value, key, reviver);\r\n if (replacement === undefined) {\r\n delete value[key];\r\n } else {\r\n value[key] = replacement;\r\n }\r\n }\r\n }\r\n\r\n return reviver.call(holder, name, value)\r\n}\r\n\r\nlet lexState;\r\nlet buffer;\r\nlet doubleQuote;\r\nlet sign;\r\nlet c;\r\n\r\nfunction lex () {\r\n lexState = 'default';\r\n buffer = '';\r\n doubleQuote = false;\r\n sign = 1;\r\n\r\n for (;;) {\r\n c = peek();\r\n\r\n // This code is unreachable.\r\n // if (!lexStates[lexState]) {\r\n // throw invalidLexState(lexState)\r\n // }\r\n\r\n const token = lexStates[lexState]();\r\n if (token) {\r\n return token\r\n }\r\n }\r\n}\r\n\r\nfunction peek () {\r\n if (source[pos]) {\r\n return String.fromCodePoint(source.codePointAt(pos))\r\n }\r\n}\r\n\r\nfunction read () {\r\n const c = peek();\r\n\r\n if (c === '\\n') {\r\n line++;\r\n column = 0;\r\n } else if (c) {\r\n column += c.length;\r\n } else {\r\n column++;\r\n }\r\n\r\n if (c) {\r\n pos += c.length;\r\n }\r\n\r\n return c\r\n}\r\n\r\nconst lexStates = {\r\n default () {\r\n switch (c) {\r\n case '\\t':\r\n case '\\v':\r\n case '\\f':\r\n case ' ':\r\n case '\\u00A0':\r\n case '\\uFEFF':\r\n case '\\n':\r\n case '\\r':\r\n case '\\u2028':\r\n case '\\u2029':\r\n read();\r\n return\r\n\r\n case '/':\r\n read();\r\n lexState = 'comment';\r\n return\r\n\r\n case undefined:\r\n read();\r\n return newToken('eof')\r\n }\r\n\r\n if (util.isSpaceSeparator(c)) {\r\n read();\r\n return\r\n }\r\n\r\n // This code is unreachable.\r\n // if (!lexStates[parseState]) {\r\n // throw invalidLexState(parseState)\r\n // }\r\n\r\n return lexStates[parseState]()\r\n },\r\n\r\n comment () {\r\n switch (c) {\r\n case '*':\r\n read();\r\n lexState = 'multiLineComment';\r\n return\r\n\r\n case '/':\r\n read();\r\n lexState = 'singleLineComment';\r\n return\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n multiLineComment () {\r\n switch (c) {\r\n case '*':\r\n read();\r\n lexState = 'multiLineCommentAsterisk';\r\n return\r\n\r\n case undefined:\r\n throw invalidChar(read())\r\n }\r\n\r\n read();\r\n },\r\n\r\n multiLineCommentAsterisk () {\r\n switch (c) {\r\n case '*':\r\n read();\r\n return\r\n\r\n case '/':\r\n read();\r\n lexState = 'default';\r\n return\r\n\r\n case undefined:\r\n throw invalidChar(read())\r\n }\r\n\r\n read();\r\n lexState = 'multiLineComment';\r\n },\r\n\r\n singleLineComment () {\r\n switch (c) {\r\n case '\\n':\r\n case '\\r':\r\n case '\\u2028':\r\n case '\\u2029':\r\n read();\r\n lexState = 'default';\r\n return\r\n\r\n case undefined:\r\n read();\r\n return newToken('eof')\r\n }\r\n\r\n read();\r\n },\r\n\r\n value () {\r\n switch (c) {\r\n case '{':\r\n case '[':\r\n return newToken('punctuator', read())\r\n\r\n case 'n':\r\n read();\r\n literal('ull');\r\n return newToken('null', null)\r\n\r\n case 't':\r\n read();\r\n literal('rue');\r\n return newToken('boolean', true)\r\n\r\n case 'f':\r\n read();\r\n literal('alse');\r\n return newToken('boolean', false)\r\n\r\n case '-':\r\n case '+':\r\n if (read() === '-') {\r\n sign = -1;\r\n }\r\n\r\n lexState = 'sign';\r\n return\r\n\r\n case '.':\r\n buffer = read();\r\n lexState = 'decimalPointLeading';\r\n return\r\n\r\n case '0':\r\n buffer = read();\r\n lexState = 'zero';\r\n return\r\n\r\n case '1':\r\n case '2':\r\n case '3':\r\n case '4':\r\n case '5':\r\n case '6':\r\n case '7':\r\n case '8':\r\n case '9':\r\n buffer = read();\r\n lexState = 'decimalInteger';\r\n return\r\n\r\n case 'I':\r\n read();\r\n literal('nfinity');\r\n return newToken('numeric', Infinity)\r\n\r\n case 'N':\r\n read();\r\n literal('aN');\r\n return newToken('numeric', NaN)\r\n\r\n case '\"':\r\n case \"'\":\r\n doubleQuote = (read() === '\"');\r\n buffer = '';\r\n lexState = 'string';\r\n return\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n identifierNameStartEscape () {\r\n if (c !== 'u') {\r\n throw invalidChar(read())\r\n }\r\n\r\n read();\r\n const u = unicodeEscape();\r\n switch (u) {\r\n case '$':\r\n case '_':\r\n break\r\n\r\n default:\r\n if (!util.isIdStartChar(u)) {\r\n throw invalidIdentifier()\r\n }\r\n\r\n break\r\n }\r\n\r\n buffer += u;\r\n lexState = 'identifierName';\r\n },\r\n\r\n identifierName () {\r\n switch (c) {\r\n case '$':\r\n case '_':\r\n case '\\u200C':\r\n case '\\u200D':\r\n buffer += read();\r\n return\r\n\r\n case '\\\\':\r\n read();\r\n lexState = 'identifierNameEscape';\r\n return\r\n }\r\n\r\n if (util.isIdContinueChar(c)) {\r\n buffer += read();\r\n return\r\n }\r\n\r\n return newToken('identifier', buffer)\r\n },\r\n\r\n identifierNameEscape () {\r\n if (c !== 'u') {\r\n throw invalidChar(read())\r\n }\r\n\r\n read();\r\n const u = unicodeEscape();\r\n switch (u) {\r\n case '$':\r\n case '_':\r\n case '\\u200C':\r\n case '\\u200D':\r\n break\r\n\r\n default:\r\n if (!util.isIdContinueChar(u)) {\r\n throw invalidIdentifier()\r\n }\r\n\r\n break\r\n }\r\n\r\n buffer += u;\r\n lexState = 'identifierName';\r\n },\r\n\r\n sign () {\r\n switch (c) {\r\n case '.':\r\n buffer = read();\r\n lexState = 'decimalPointLeading';\r\n return\r\n\r\n case '0':\r\n buffer = read();\r\n lexState = 'zero';\r\n return\r\n\r\n case '1':\r\n case '2':\r\n case '3':\r\n case '4':\r\n case '5':\r\n case '6':\r\n case '7':\r\n case '8':\r\n case '9':\r\n buffer = read();\r\n lexState = 'decimalInteger';\r\n return\r\n\r\n case 'I':\r\n read();\r\n literal('nfinity');\r\n return newToken('numeric', sign * Infinity)\r\n\r\n case 'N':\r\n read();\r\n literal('aN');\r\n return newToken('numeric', NaN)\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n zero () {\r\n switch (c) {\r\n case '.':\r\n buffer += read();\r\n lexState = 'decimalPoint';\r\n return\r\n\r\n case 'e':\r\n case 'E':\r\n buffer += read();\r\n lexState = 'decimalExponent';\r\n return\r\n\r\n case 'x':\r\n case 'X':\r\n buffer += read();\r\n lexState = 'hexadecimal';\r\n return\r\n }\r\n\r\n return newToken('numeric', sign * 0)\r\n },\r\n\r\n decimalInteger () {\r\n switch (c) {\r\n case '.':\r\n buffer += read();\r\n lexState = 'decimalPoint';\r\n return\r\n\r\n case 'e':\r\n case 'E':\r\n buffer += read();\r\n lexState = 'decimalExponent';\r\n return\r\n }\r\n\r\n if (util.isDigit(c)) {\r\n buffer += read();\r\n return\r\n }\r\n\r\n return newToken('numeric', sign * Number(buffer))\r\n },\r\n\r\n decimalPointLeading () {\r\n if (util.isDigit(c)) {\r\n buffer += read();\r\n lexState = 'decimalFraction';\r\n return\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n decimalPoint () {\r\n switch (c) {\r\n case 'e':\r\n case 'E':\r\n buffer += read();\r\n lexState = 'decimalExponent';\r\n return\r\n }\r\n\r\n if (util.isDigit(c)) {\r\n buffer += read();\r\n lexState = 'decimalFraction';\r\n return\r\n }\r\n\r\n return newToken('numeric', sign * Number(buffer))\r\n },\r\n\r\n decimalFraction () {\r\n switch (c) {\r\n case 'e':\r\n case 'E':\r\n buffer += read();\r\n lexState = 'decimalExponent';\r\n return\r\n }\r\n\r\n if (util.isDigit(c)) {\r\n buffer += read();\r\n return\r\n }\r\n\r\n return newToken('numeric', sign * Number(buffer))\r\n },\r\n\r\n decimalExponent () {\r\n switch (c) {\r\n case '+':\r\n case '-':\r\n buffer += read();\r\n lexState = 'decimalExponentSign';\r\n return\r\n }\r\n\r\n if (util.isDigit(c)) {\r\n buffer += read();\r\n lexState = 'decimalExponentInteger';\r\n return\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n decimalExponentSign () {\r\n if (util.isDigit(c)) {\r\n buffer += read();\r\n lexState = 'decimalExponentInteger';\r\n return\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n decimalExponentInteger () {\r\n if (util.isDigit(c)) {\r\n buffer += read();\r\n return\r\n }\r\n\r\n return newToken('numeric', sign * Number(buffer))\r\n },\r\n\r\n hexadecimal () {\r\n if (util.isHexDigit(c)) {\r\n buffer += read();\r\n lexState = 'hexadecimalInteger';\r\n return\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n hexadecimalInteger () {\r\n if (util.isHexDigit(c)) {\r\n buffer += read();\r\n return\r\n }\r\n\r\n return newToken('numeric', sign * Number(buffer))\r\n },\r\n\r\n string () {\r\n switch (c) {\r\n case '\\\\':\r\n read();\r\n buffer += escape();\r\n return\r\n\r\n case '\"':\r\n if (doubleQuote) {\r\n read();\r\n return newToken('string', buffer)\r\n }\r\n\r\n buffer += read();\r\n return\r\n\r\n case \"'\":\r\n if (!doubleQuote) {\r\n read();\r\n return newToken('string', buffer)\r\n }\r\n\r\n buffer += read();\r\n return\r\n\r\n case '\\n':\r\n case '\\r':\r\n throw invalidChar(read())\r\n\r\n case '\\u2028':\r\n case '\\u2029':\r\n separatorChar(c);\r\n break\r\n\r\n case undefined:\r\n throw invalidChar(read())\r\n }\r\n\r\n buffer += read();\r\n },\r\n\r\n start () {\r\n switch (c) {\r\n case '{':\r\n case '[':\r\n return newToken('punctuator', read())\r\n\r\n // This code is unreachable since the default lexState handles eof.\r\n // case undefined:\r\n // return newToken('eof')\r\n }\r\n\r\n lexState = 'value';\r\n },\r\n\r\n beforePropertyName () {\r\n switch (c) {\r\n case '$':\r\n case '_':\r\n buffer = read();\r\n lexState = 'identifierName';\r\n return\r\n\r\n case '\\\\':\r\n read();\r\n lexState = 'identifierNameStartEscape';\r\n return\r\n\r\n case '}':\r\n return newToken('punctuator', read())\r\n\r\n case '\"':\r\n case \"'\":\r\n doubleQuote = (read() === '\"');\r\n lexState = 'string';\r\n return\r\n }\r\n\r\n if (util.isIdStartChar(c)) {\r\n buffer += read();\r\n lexState = 'identifierName';\r\n return\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n afterPropertyName () {\r\n if (c === ':') {\r\n return newToken('punctuator', read())\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n beforePropertyValue () {\r\n lexState = 'value';\r\n },\r\n\r\n afterPropertyValue () {\r\n switch (c) {\r\n case ',':\r\n case '}':\r\n return newToken('punctuator', read())\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n beforeArrayValue () {\r\n if (c === ']') {\r\n return newToken('punctuator', read())\r\n }\r\n\r\n lexState = 'value';\r\n },\r\n\r\n afterArrayValue () {\r\n switch (c) {\r\n case ',':\r\n case ']':\r\n return newToken('punctuator', read())\r\n }\r\n\r\n throw invalidChar(read())\r\n },\r\n\r\n end () {\r\n // This code is unreachable since it's handled by the default lexState.\r\n // if (c === undefined) {\r\n // read()\r\n // return newToken('eof')\r\n // }\r\n\r\n throw invalidChar(read())\r\n },\r\n};\r\n\r\nfunction newToken (type, value) {\r\n return {\r\n type,\r\n value,\r\n line,\r\n column,\r\n }\r\n}\r\n\r\nfunction literal (s) {\r\n for (const c of s) {\r\n const p = peek();\r\n\r\n if (p !== c) {\r\n throw invalidChar(read())\r\n }\r\n\r\n read();\r\n }\r\n}\r\n\r\nfunction escape () {\r\n const c = peek();\r\n switch (c) {\r\n case 'b':\r\n read();\r\n return '\\b'\r\n\r\n case 'f':\r\n read();\r\n return '\\f'\r\n\r\n case 'n':\r\n read();\r\n return '\\n'\r\n\r\n case 'r':\r\n read();\r\n return '\\r'\r\n\r\n case 't':\r\n read();\r\n return '\\t'\r\n\r\n case 'v':\r\n read();\r\n return '\\v'\r\n\r\n case '0':\r\n read();\r\n if (util.isDigit(peek())) {\r\n throw invalidChar(read())\r\n }\r\n\r\n return '\\0'\r\n\r\n case 'x':\r\n read();\r\n return hexEscape()\r\n\r\n case 'u':\r\n read();\r\n return unicodeEscape()\r\n\r\n case '\\n':\r\n case '\\u2028':\r\n case '\\u2029':\r\n read();\r\n return ''\r\n\r\n case '\\r':\r\n read();\r\n if (peek() === '\\n') {\r\n read();\r\n }\r\n\r\n return ''\r\n\r\n case '1':\r\n case '2':\r\n case '3':\r\n case '4':\r\n case '5':\r\n case '6':\r\n case '7':\r\n case '8':\r\n case '9':\r\n throw invalidChar(read())\r\n\r\n case undefined:\r\n throw invalidChar(read())\r\n }\r\n\r\n return read()\r\n}\r\n\r\nfunction hexEscape () {\r\n let buffer = '';\r\n let c = peek();\r\n\r\n if (!util.isHexDigit(c)) {\r\n throw invalidChar(read())\r\n }\r\n\r\n buffer += read();\r\n\r\n c = peek();\r\n if (!util.isHexDigit(c)) {\r\n throw invalidChar(read())\r\n }\r\n\r\n buffer += read();\r\n\r\n return String.fromCodePoint(parseInt(buffer, 16))\r\n}\r\n\r\nfunction unicodeEscape () {\r\n let buffer = '';\r\n let count = 4;\r\n\r\n while (count-- > 0) {\r\n const c = peek();\r\n if (!util.isHexDigit(c)) {\r\n throw invalidChar(read())\r\n }\r\n\r\n buffer += read();\r\n }\r\n\r\n return String.fromCodePoint(parseInt(buffer, 16))\r\n}\r\n\r\nconst parseStates = {\r\n start () {\r\n if (token.type === 'eof') {\r\n throw invalidEOF()\r\n }\r\n\r\n push();\r\n },\r\n\r\n beforePropertyName () {\r\n switch (token.type) {\r\n case 'identifier':\r\n case 'string':\r\n key = token.value;\r\n parseState = 'afterPropertyName';\r\n return\r\n\r\n case 'punctuator':\r\n // This code is unreachable since it's handled by the lexState.\r\n // if (token.value !== '}') {\r\n // throw invalidToken()\r\n // }\r\n\r\n pop();\r\n return\r\n\r\n case 'eof':\r\n throw invalidEOF()\r\n }\r\n\r\n // This code is unreachable since it's handled by the lexState.\r\n // throw invalidToken()\r\n },\r\n\r\n afterPropertyName () {\r\n // This code is unreachable since it's handled by the lexState.\r\n // if (token.type !== 'punctuator' || token.value !== ':') {\r\n // throw invalidToken()\r\n // }\r\n\r\n if (token.type === 'eof') {\r\n throw invalidEOF()\r\n }\r\n\r\n parseState = 'beforePropertyValue';\r\n },\r\n\r\n beforePropertyValue () {\r\n if (token.type === 'eof') {\r\n throw invalidEOF()\r\n }\r\n\r\n push();\r\n },\r\n\r\n beforeArrayValue () {\r\n if (token.type === 'eof') {\r\n throw invalidEOF()\r\n }\r\n\r\n if (token.type === 'punctuator' && token.value === ']') {\r\n pop();\r\n return\r\n }\r\n\r\n push();\r\n },\r\n\r\n afterPropertyValue () {\r\n // This code is unreachable since it's handled by the lexState.\r\n // if (token.type !== 'punctuator') {\r\n // throw invalidToken()\r\n // }\r\n\r\n if (token.type === 'eof') {\r\n throw invalidEOF()\r\n }\r\n\r\n switch (token.value) {\r\n case ',':\r\n parseState = 'beforePropertyName';\r\n return\r\n\r\n case '}':\r\n pop();\r\n }\r\n\r\n // This code is unreachable since it's handled by the lexState.\r\n // throw invalidToken()\r\n },\r\n\r\n afterArrayValue () {\r\n // This code is unreachable since it's handled by the lexState.\r\n // if (token.type !== 'punctuator') {\r\n // throw invalidToken()\r\n // }\r\n\r\n if (token.type === 'eof') {\r\n throw invalidEOF()\r\n }\r\n\r\n switch (token.value) {\r\n case ',':\r\n parseState = 'beforeArrayValue';\r\n return\r\n\r\n case ']':\r\n pop();\r\n }\r\n\r\n // This code is unreachable since it's handled by the lexState.\r\n // throw invalidToken()\r\n },\r\n\r\n end () {\r\n // This code is unreachable since it's handled by the lexState.\r\n // if (token.type !== 'eof') {\r\n // throw invalidToken()\r\n // }\r\n },\r\n};\r\n\r\nfunction push () {\r\n let value;\r\n\r\n switch (token.type) {\r\n case 'punctuator':\r\n switch (token.value) {\r\n case '{':\r\n value = {};\r\n break\r\n\r\n case '[':\r\n value = [];\r\n break\r\n }\r\n\r\n break\r\n\r\n case 'null':\r\n case 'boolean':\r\n case 'numeric':\r\n case 'string':\r\n value = token.value;\r\n break\r\n\r\n // This code is unreachable.\r\n // default:\r\n // throw invalidToken()\r\n }\r\n\r\n if (root === undefined) {\r\n root = value;\r\n } else {\r\n const parent = stack[stack.length - 1];\r\n if (Array.isArray(parent)) {\r\n parent.push(value);\r\n } else {\r\n parent[key] = value;\r\n }\r\n }\r\n\r\n if (value !== null && typeof value === 'object') {\r\n stack.push(value);\r\n\r\n if (Array.isArray(value)) {\r\n parseState = 'beforeArrayValue';\r\n } else {\r\n parseState = 'beforePropertyName';\r\n }\r\n } else {\r\n const current = stack[stack.length - 1];\r\n if (current == null) {\r\n parseState = 'end';\r\n } else if (Array.isArray(current)) {\r\n parseState = 'afterArrayValue';\r\n } else {\r\n parseState = 'afterPropertyValue';\r\n }\r\n }\r\n}\r\n\r\nfunction pop () {\r\n stack.pop();\r\n\r\n const current = stack[stack.length - 1];\r\n if (current == null) {\r\n parseState = 'end';\r\n } else if (Array.isArray(current)) {\r\n parseState = 'afterArrayValue';\r\n } else {\r\n parseState = 'afterPropertyValue';\r\n }\r\n}\r\n\r\n// This code is unreachable.\r\n// function invalidParseState () {\r\n// return new Error(`JSON5: invalid parse state '${parseState}'`)\r\n// }\r\n\r\n// This code is unreachable.\r\n// function invalidLexState (state) {\r\n// return new Error(`JSON5: invalid lex state '${state}'`)\r\n// }\r\n\r\nfunction invalidChar (c) {\r\n if (c === undefined) {\r\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\r\n }\r\n\r\n return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\r\n}\r\n\r\nfunction invalidEOF () {\r\n return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\r\n}\r\n\r\n// This code is unreachable.\r\n// function invalidToken () {\r\n// if (token.type === 'eof') {\r\n// return syntaxError(`JSON5: invalid end of input at ${line}:${column}`)\r\n// }\r\n\r\n// const c = String.fromCodePoint(token.value.codePointAt(0))\r\n// return syntaxError(`JSON5: invalid character '${formatChar(c)}' at ${line}:${column}`)\r\n// }\r\n\r\nfunction invalidIdentifier () {\r\n column -= 5;\r\n return syntaxError(`JSON5: invalid identifier character at ${line}:${column}`)\r\n}\r\n\r\nfunction separatorChar (c) {\r\n console.warn(`JSON5: '${formatChar(c)}' in strings is not valid ECMAScript; consider escaping`);\r\n}\r\n\r\nfunction formatChar (c) {\r\n const replacements = {\r\n \"'\": \"\\\\'\",\r\n '\"': '\\\\\"',\r\n '\\\\': '\\\\\\\\',\r\n '\\b': '\\\\b',\r\n '\\f': '\\\\f',\r\n '\\n': '\\\\n',\r\n '\\r': '\\\\r',\r\n '\\t': '\\\\t',\r\n '\\v': '\\\\v',\r\n '\\0': '\\\\0',\r\n '\\u2028': '\\\\u2028',\r\n '\\u2029': '\\\\u2029',\r\n };\r\n\r\n if (replacements[c]) {\r\n return replacements[c]\r\n }\r\n\r\n if (c < ' ') {\r\n const hexString = c.charCodeAt(0).toString(16);\r\n return '\\\\x' + ('00' + hexString).substring(hexString.length)\r\n }\r\n\r\n return c\r\n}\r\n\r\nfunction syntaxError (message) {\r\n const err = new SyntaxError(message);\r\n err.lineNumber = line;\r\n err.columnNumber = column;\r\n return err\r\n}\r\n\r\nvar stringify = function stringify (value, replacer, space) {\r\n const stack = [];\r\n let indent = '';\r\n let propertyList;\r\n let replacerFunc;\r\n let gap = '';\r\n let quote;\r\n\r\n if (\r\n replacer != null &&\r\n typeof replacer === 'object' &&\r\n !Array.isArray(replacer)\r\n ) {\r\n space = replacer.space;\r\n quote = replacer.quote;\r\n replacer = replacer.replacer;\r\n }\r\n\r\n if (typeof replacer === 'function') {\r\n replacerFunc = replacer;\r\n } else if (Array.isArray(replacer)) {\r\n propertyList = [];\r\n for (const v of replacer) {\r\n let item;\r\n\r\n if (typeof v === 'string') {\r\n item = v;\r\n } else if (\r\n typeof v === 'number' ||\r\n v instanceof String ||\r\n v instanceof Number\r\n ) {\r\n item = String(v);\r\n }\r\n\r\n if (item !== undefined && propertyList.indexOf(item) < 0) {\r\n propertyList.push(item);\r\n }\r\n }\r\n }\r\n\r\n if (space instanceof Number) {\r\n space = Number(space);\r\n } else if (space instanceof String) {\r\n space = String(space);\r\n }\r\n\r\n if (typeof space === 'number') {\r\n if (space > 0) {\r\n space = Math.min(10, Math.floor(space));\r\n gap = ' '.substr(0, space);\r\n }\r\n } else if (typeof space === 'string') {\r\n gap = space.substr(0, 10);\r\n }\r\n\r\n return serializeProperty('', {'': value})\r\n\r\n function serializeProperty (key, holder) {\r\n let value = holder[key];\r\n if (value != null) {\r\n if (typeof value.toJSON5 === 'function') {\r\n value = value.toJSON5(key);\r\n } else if (typeof value.toJSON === 'function') {\r\n value = value.toJSON(key);\r\n }\r\n }\r\n\r\n if (replacerFunc) {\r\n value = replacerFunc.call(holder, key, value);\r\n }\r\n\r\n if (value instanceof Number) {\r\n value = Number(value);\r\n } else if (value instanceof String) {\r\n value = String(value);\r\n } else if (value instanceof Boolean) {\r\n value = value.valueOf();\r\n }\r\n\r\n switch (value) {\r\n case null: return 'null'\r\n case true: return 'true'\r\n case false: return 'false'\r\n }\r\n\r\n if (typeof value === 'string') {\r\n return quoteString(value, false)\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return String(value)\r\n }\r\n\r\n if (typeof value === 'object') {\r\n return Array.isArray(value) ? serializeArray(value) : serializeObject(value)\r\n }\r\n\r\n return undefined\r\n }\r\n\r\n function quoteString (value) {\r\n const quotes = {\r\n \"'\": 0.1,\r\n '\"': 0.2,\r\n };\r\n\r\n const replacements = {\r\n \"'\": \"\\\\'\",\r\n '\"': '\\\\\"',\r\n '\\\\': '\\\\\\\\',\r\n '\\b': '\\\\b',\r\n '\\f': '\\\\f',\r\n '\\n': '\\\\n',\r\n '\\r': '\\\\r',\r\n '\\t': '\\\\t',\r\n '\\v': '\\\\v',\r\n '\\0': '\\\\0',\r\n '\\u2028': '\\\\u2028',\r\n '\\u2029': '\\\\u2029',\r\n };\r\n\r\n let product = '';\r\n\r\n for (let i = 0; i < value.length; i++) {\r\n const c = value[i];\r\n switch (c) {\r\n case \"'\":\r\n case '\"':\r\n quotes[c]++;\r\n product += c;\r\n continue\r\n\r\n case '\\0':\r\n if (util.isDigit(value[i + 1])) {\r\n product += '\\\\x00';\r\n continue\r\n }\r\n }\r\n\r\n if (replacements[c]) {\r\n product += replacements[c];\r\n continue\r\n }\r\n\r\n if (c < ' ') {\r\n let hexString = c.charCodeAt(0).toString(16);\r\n product += '\\\\x' + ('00' + hexString).substring(hexString.length);\r\n continue\r\n }\r\n\r\n product += c;\r\n }\r\n\r\n const quoteChar = quote || Object.keys(quotes).reduce((a, b) => (quotes[a] < quotes[b]) ? a : b);\r\n\r\n product = product.replace(new RegExp(quoteChar, 'g'), replacements[quoteChar]);\r\n\r\n return quoteChar + product + quoteChar\r\n }\r\n\r\n function serializeObject (value) {\r\n if (stack.indexOf(value) >= 0) {\r\n throw TypeError('Converting circular structure to JSON5')\r\n }\r\n\r\n stack.push(value);\r\n\r\n let stepback = indent;\r\n indent = indent + gap;\r\n\r\n let keys = propertyList || Object.keys(value);\r\n let partial = [];\r\n for (const key of keys) {\r\n const propertyString = serializeProperty(key, value);\r\n if (propertyString !== undefined) {\r\n let member = serializeKey(key) + ':';\r\n if (gap !== '') {\r\n member += ' ';\r\n }\r\n member += propertyString;\r\n partial.push(member);\r\n }\r\n }\r\n\r\n let final;\r\n if (partial.length === 0) {\r\n final = '{}';\r\n } else {\r\n let properties;\r\n if (gap === '') {\r\n properties = partial.join(',');\r\n final = '{' + properties + '}';\r\n } else {\r\n let separator = ',\\n' + indent;\r\n properties = partial.join(separator);\r\n final = '{\\n' + indent + properties + ',\\n' + stepback + '}';\r\n }\r\n }\r\n\r\n stack.pop();\r\n indent = stepback;\r\n return final\r\n }\r\n\r\n function serializeKey (key) {\r\n if (key.length === 0) {\r\n return quoteString(key, true)\r\n }\r\n\r\n const firstChar = String.fromCodePoint(key.codePointAt(0));\r\n if (!util.isIdStartChar(firstChar)) {\r\n return quoteString(key, true)\r\n }\r\n\r\n for (let i = firstChar.length; i < key.length; i++) {\r\n if (!util.isIdContinueChar(String.fromCodePoint(key.codePointAt(i)))) {\r\n return quoteString(key, true)\r\n }\r\n }\r\n\r\n return key\r\n }\r\n\r\n function serializeArray (value) {\r\n if (stack.indexOf(value) >= 0) {\r\n throw TypeError('Converting circular structure to JSON5')\r\n }\r\n\r\n stack.push(value);\r\n\r\n let stepback = indent;\r\n indent = indent + gap;\r\n\r\n let partial = [];\r\n for (let i = 0; i < value.length; i++) {\r\n const propertyString = serializeProperty(String(i), value);\r\n partial.push((propertyString !== undefined) ? propertyString : 'null');\r\n }\r\n\r\n let final;\r\n if (partial.length === 0) {\r\n final = '[]';\r\n } else {\r\n if (gap === '') {\r\n let properties = partial.join(',');\r\n final = '[' + properties + ']';\r\n } else {\r\n let separator = ',\\n' + indent;\r\n let properties = partial.join(separator);\r\n final = '[\\n' + indent + properties + ',\\n' + stepback + ']';\r\n }\r\n }\r\n\r\n stack.pop();\r\n indent = stepback;\r\n return final\r\n }\r\n};\r\n\r\nconst JSON5 = {\r\n parse,\r\n stringify,\r\n};\r\n\r\nvar lib = JSON5;\r\n\r\nexport default lib;\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {GeoJSONExporter} from \"../exporter/GeoJSONExporter.js\"\r\nimport {DXFExporter} from \"../exporter/DXFExporter.js\"\r\nimport {Volume, SphereVolume} from \"../utils/Volume.js\"\r\nimport {PolygonClipVolume} from \"../utils/PolygonClipVolume.js\"\r\nimport {PropertiesPanel} from \"./PropertyPanels/PropertiesPanel.js\"\r\nimport {PointCloudTree} from \"../PointCloudTree.js\"\r\nimport {Profile} from \"../utils/Profile.js\"\r\nimport {Measure} from \"../utils/Measure.js\"\r\nimport {Annotation} from \"../Annotation.js\"\r\nimport {CameraMode, ClipTask, ClipMethod} from \"../defines.js\"\r\nimport {ScreenBoxSelectTool} from \"../utils/ScreenBoxSelectTool.js\"\r\nimport {Utils} from \"../utils.js\"\r\nimport {CameraAnimation} from \"../modules/CameraAnimation/CameraAnimation.js\"\r\nimport {HierarchicalSlider} from \"./HierarchicalSlider.js\"\r\nimport {OrientedImage} from \"../modules/OrientedImages/OrientedImages.js\";\r\nimport {Images360} from \"../modules/Images360/Images360.js\";\r\n\r\nimport JSON5 from \"../../libs/json5-2.1.3/json5.mjs\";\r\n\r\nexport class Sidebar{\r\n\r\n\tconstructor(viewer){\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tthis.measuringTool = viewer.measuringTool;\r\n\t\tthis.profileTool = viewer.profileTool;\r\n\t\tthis.volumeTool = viewer.volumeTool;\r\n\r\n\t\tthis.dom = $(\"#sidebar_root\");\r\n\t}\r\n\r\n\tcreateToolIcon(icon, title, callback){\r\n\t\tlet element = $(`\r\n\t\t\t\r\n\t\t`);\r\n\r\n\t\telement.click(callback);\r\n\r\n\t\treturn element;\r\n\t}\r\n\r\n\tinit(){\r\n\r\n\t\tthis.initAccordion();\r\n\t\tthis.initAppearance();\r\n\t\tthis.initToolbar();\r\n\t\tthis.initScene();\r\n\t\tthis.initNavigation();\r\n\t\tthis.initFilters();\r\n\t\tthis.initClippingTool();\r\n\t\tthis.initSettings();\r\n\t\t\r\n\t\t$('#potree_version_number').html(Potree.version.major + \".\" + Potree.version.minor + Potree.version.suffix);\r\n\t}\r\n\r\n\t\t\r\n\r\n\tinitToolbar(){\r\n\r\n\t\t// ANGLE\r\n\t\tlet elToolbar = $('#tools');\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/angle.png',\r\n\t\t\t'[title]tt.angle_measurement',\r\n\t\t\t() => {\r\n\t\t\t\t$('#menu_measurements').next().slideDown();\r\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\r\n\t\t\t\t\tshowDistances: false,\r\n\t\t\t\t\tshowAngles: true,\r\n\t\t\t\t\tshowArea: false,\r\n\t\t\t\t\tclosed: true,\r\n\t\t\t\t\tmaxMarkers: 3,\r\n\t\t\t\t\tname: 'Angle'});\r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// POINT\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/point.svg',\r\n\t\t\t'[title]tt.point_measurement',\r\n\t\t\t() => {\r\n\t\t\t\t$('#menu_measurements').next().slideDown();\r\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\r\n\t\t\t\t\tshowDistances: false,\r\n\t\t\t\t\tshowAngles: false,\r\n\t\t\t\t\tshowCoordinates: true,\r\n\t\t\t\t\tshowArea: false,\r\n\t\t\t\t\tclosed: true,\r\n\t\t\t\t\tmaxMarkers: 1,\r\n\t\t\t\t\tname: 'Point'});\r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// DISTANCE\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/distance.svg',\r\n\t\t\t'[title]tt.distance_measurement',\r\n\t\t\t() => {\r\n\t\t\t\t$('#menu_measurements').next().slideDown();\r\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\r\n\t\t\t\t\tshowDistances: true,\r\n\t\t\t\t\tshowArea: false,\r\n\t\t\t\t\tclosed: false,\r\n\t\t\t\t\tname: 'Distance'});\r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// HEIGHT\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/height.svg',\r\n\t\t\t'[title]tt.height_measurement',\r\n\t\t\t() => {\r\n\t\t\t\t$('#menu_measurements').next().slideDown();\r\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\r\n\t\t\t\t\tshowDistances: false,\r\n\t\t\t\t\tshowHeight: true,\r\n\t\t\t\t\tshowArea: false,\r\n\t\t\t\t\tclosed: false,\r\n\t\t\t\t\tmaxMarkers: 2,\r\n\t\t\t\t\tname: 'Height'});\r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// CIRCLE\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/circle.svg',\r\n\t\t\t'[title]tt.circle_measurement',\r\n\t\t\t() => {\r\n\t\t\t\t$('#menu_measurements').next().slideDown();\r\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\r\n\t\t\t\t\tshowDistances: false,\r\n\t\t\t\t\tshowHeight: false,\r\n\t\t\t\t\tshowArea: false,\r\n\t\t\t\t\tshowCircle: true,\r\n\t\t\t\t\tshowEdges: false,\r\n\t\t\t\t\tclosed: false,\r\n\t\t\t\t\tmaxMarkers: 3,\r\n\t\t\t\t\tname: 'Circle'});\r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// AZIMUTH\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/azimuth.svg',\r\n\t\t\t'Azimuth',\r\n\t\t\t() => {\r\n\t\t\t\t$('#menu_measurements').next().slideDown();\r\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\r\n\t\t\t\t\tshowDistances: false,\r\n\t\t\t\t\tshowHeight: false,\r\n\t\t\t\t\tshowArea: false,\r\n\t\t\t\t\tshowCircle: false,\r\n\t\t\t\t\tshowEdges: false,\r\n\t\t\t\t\tshowAzimuth: true,\r\n\t\t\t\t\tclosed: false,\r\n\t\t\t\t\tmaxMarkers: 2,\r\n\t\t\t\t\tname: 'Azimuth'});\r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// AREA\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/area.svg',\r\n\t\t\t'[title]tt.area_measurement',\r\n\t\t\t() => {\r\n\t\t\t\t$('#menu_measurements').next().slideDown();\r\n\t\t\t\tlet measurement = this.measuringTool.startInsertion({\r\n\t\t\t\t\tshowDistances: true,\r\n\t\t\t\t\tshowArea: true,\r\n\t\t\t\t\tclosed: true,\r\n\t\t\t\t\tname: 'Area'});\r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === measurement.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// VOLUME\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/volume.svg',\r\n\t\t\t'[title]tt.volume_measurement',\r\n\t\t\t() => {\r\n\t\t\t\tlet volume = this.volumeTool.startInsertion(); \r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// SPHERE VOLUME\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/sphere_distances.svg',\r\n\t\t\t'[title]tt.volume_measurement',\r\n\t\t\t() => { \r\n\t\t\t\tlet volume = this.volumeTool.startInsertion({type: SphereVolume}); \r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === volume.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// PROFILE\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/profile.svg',\r\n\t\t\t'[title]tt.height_profile',\r\n\t\t\t() => {\r\n\t\t\t\t$('#menu_measurements').next().slideDown(); ;\r\n\t\t\t\tlet profile = this.profileTool.startInsertion();\r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === profile.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// ANNOTATION\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/annotation.svg',\r\n\t\t\t'[title]tt.annotation',\r\n\t\t\t() => {\r\n\t\t\t\t$('#menu_measurements').next().slideDown(); ;\r\n\t\t\t\tlet annotation = this.viewer.annotationTool.startInsertion();\r\n\r\n\t\t\t\tlet annotationsRoot = $(\"#jstree_scene\").jstree().get_json(\"annotations\");\r\n\t\t\t\tlet jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// REMOVE ALL\r\n\t\telToolbar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/reset_tools.svg',\r\n\t\t\t'[title]tt.remove_all_measurement',\r\n\t\t\t() => {\r\n\t\t\t\tthis.viewer.scene.removeAllMeasurements();\r\n\t\t\t}\r\n\t\t));\r\n\r\n\r\n\t\t{ // SHOW / HIDE Measurements\r\n\t\t\tlet elShow = $(\"#measurement_options_show\");\r\n\t\t\telShow.selectgroup({title: \"Show/Hide labels\"});\r\n\r\n\t\t\telShow.find(\"input\").click( (e) => {\r\n\t\t\t\tconst show = e.target.value === \"SHOW\";\r\n\t\t\t\tthis.measuringTool.showLabels = show;\r\n\t\t\t});\r\n\r\n\t\t\tlet currentShow = this.measuringTool.showLabels ? \"SHOW\" : \"HIDE\";\r\n\t\t\telShow.find(`input[value=${currentShow}]`).trigger(\"click\");\r\n\t\t}\r\n\t}\r\n\r\n\tinitScene(){\r\n\r\n\t\tlet elScene = $(\"#menu_scene\");\r\n\t\tlet elObjects = elScene.next().find(\"#scene_objects\");\r\n\t\tlet elProperties = elScene.next().find(\"#scene_object_properties\");\r\n\t\t\r\n\r\n\t\t{\r\n\t\t\tlet elExport = elScene.next().find(\"#scene_export\");\r\n\r\n\t\t\tlet geoJSONIcon = `${Potree.resourcePath}/icons/file_geojson.svg`;\r\n\t\t\tlet dxfIcon = `${Potree.resourcePath}/icons/file_dxf.svg`;\r\n\t\t\tlet potreeIcon = `${Potree.resourcePath}/icons/file_potree.svg`;\r\n\r\n\t\t\telExport.append(`\r\n\t\t\t\tExport:
    \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t`);\r\n\r\n\t\t\tlet elDownloadJSON = elExport.find(\"img[name=geojson_export_button]\").parent();\r\n\t\t\telDownloadJSON.click( (event) => {\r\n\t\t\t\tlet scene = this.viewer.scene;\r\n\t\t\t\tlet measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes];\r\n\r\n\t\t\t\tif(measurements.length > 0){\r\n\t\t\t\t\tlet geoJson = GeoJSONExporter.toString(measurements);\r\n\r\n\t\t\t\t\tlet url = window.URL.createObjectURL(new Blob([geoJson], {type: 'data:application/octet-stream'}));\r\n\t\t\t\t\telDownloadJSON.attr('href', url);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.viewer.postError(\"no measurements to export\");\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet elDownloadDXF = elExport.find(\"img[name=dxf_export_button]\").parent();\r\n\t\t\telDownloadDXF.click( (event) => {\r\n\t\t\t\tlet scene = this.viewer.scene;\r\n\t\t\t\tlet measurements = [...scene.measurements, ...scene.profiles, ...scene.volumes];\r\n\r\n\t\t\t\tif(measurements.length > 0){\r\n\t\t\t\t\tlet dxf = DXFExporter.toString(measurements);\r\n\r\n\t\t\t\t\tlet url = window.URL.createObjectURL(new Blob([dxf], {type: 'data:application/octet-stream'}));\r\n\t\t\t\t\telDownloadDXF.attr('href', url);\r\n\t\t\t\t}else{\r\n\t\t\t\t\tthis.viewer.postError(\"no measurements to export\");\r\n\t\t\t\t\tevent.preventDefault();\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet elDownloadPotree = elExport.find(\"img[name=potree_export_button]\").parent();\r\n\t\t\telDownloadPotree.click( (event) => {\r\n\r\n\t\t\t\tlet data = Potree.saveProject(this.viewer);\r\n\t\t\t\tlet dataString = JSON5.stringify(data, null, \"\\t\")\r\n\r\n\t\t\t\tlet url = window.URL.createObjectURL(new Blob([dataString], {type: 'data:application/octet-stream'}));\r\n\t\t\t\telDownloadPotree.attr('href', url);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet propertiesPanel = new PropertiesPanel(elProperties, this.viewer);\r\n\t\tpropertiesPanel.setScene(this.viewer.scene);\r\n\t\t\r\n\t\tlocalStorage.removeItem('jstree');\r\n\r\n\t\tlet tree = $(`
    `);\r\n\t\telObjects.append(tree);\r\n\r\n\t\ttree.jstree({\r\n\t\t\t'plugins': [\"checkbox\", \"state\"],\r\n\t\t\t'core': {\r\n\t\t\t\t\"dblclick_toggle\": false,\r\n\t\t\t\t\"state\": {\r\n\t\t\t\t\t\"checked\" : true\r\n\t\t\t\t},\r\n\t\t\t\t'check_callback': true,\r\n\t\t\t\t\"expand_selected_onload\": true\r\n\t\t\t},\r\n\t\t\t\"checkbox\" : {\r\n\t\t\t\t\"keep_selected_style\": true,\r\n\t\t\t\t\"three_state\": false,\r\n\t\t\t\t\"whole_node\": false,\r\n\t\t\t\t\"tie_selection\": false,\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tlet createNode = (parent, text, icon, object) => {\r\n\t\t\tlet nodeID = tree.jstree('create_node', parent, { \r\n\t\t\t\t\t\"text\": text, \r\n\t\t\t\t\t\"icon\": icon,\r\n\t\t\t\t\t\"data\": object\r\n\t\t\t\t}, \r\n\t\t\t\t\"last\", false, false);\r\n\t\t\t\r\n\t\t\tif(object.visible){\r\n\t\t\t\ttree.jstree('check_node', nodeID);\r\n\t\t\t}else{\r\n\t\t\t\ttree.jstree('uncheck_node', nodeID);\r\n\t\t\t}\r\n\r\n\t\t\treturn nodeID;\r\n\t\t}\r\n\r\n\t\tlet pcID = tree.jstree('create_node', \"#\", { \"text\": \"Point Clouds\", \"id\": \"pointclouds\"}, \"last\", false, false);\r\n\t\tlet measurementID = tree.jstree('create_node', \"#\", { \"text\": \"Measurements\", \"id\": \"measurements\" }, \"last\", false, false);\r\n\t\tlet annotationsID = tree.jstree('create_node', \"#\", { \"text\": \"Annotations\", \"id\": \"annotations\" }, \"last\", false, false);\r\n\t\tlet otherID = tree.jstree('create_node', \"#\", { \"text\": \"Other\", \"id\": \"other\" }, \"last\", false, false);\r\n\t\tlet vectorsID = tree.jstree('create_node', \"#\", { \"text\": \"Vectors\", \"id\": \"vectors\" }, \"last\", false, false);\r\n\t\tlet imagesID = tree.jstree('create_node', \"#\", { \"text\": \" Images\", \"id\": \"images\" }, \"last\", false, false);\r\n\r\n\t\ttree.jstree(\"check_node\", pcID);\r\n\t\ttree.jstree(\"check_node\", measurementID);\r\n\t\ttree.jstree(\"check_node\", annotationsID);\r\n\t\ttree.jstree(\"check_node\", otherID);\r\n\t\ttree.jstree(\"check_node\", vectorsID);\r\n\t\ttree.jstree(\"check_node\", imagesID);\r\n\r\n\t\ttree.on('create_node.jstree', (e, data) => {\r\n\t\t\ttree.jstree(\"open_all\");\r\n\t\t});\r\n\r\n\t\ttree.on(\"select_node.jstree\", (e, data) => {\r\n\t\t\tlet object = data.node.data;\r\n\t\t\tpropertiesPanel.set(object);\r\n\r\n\t\t\tthis.viewer.inputHandler.deselectAll();\r\n\r\n\t\t\tif(object instanceof Volume){\r\n\t\t\t\tthis.viewer.inputHandler.toggleSelection(object);\r\n\t\t\t}\r\n\r\n\t\t\t$(this.viewer.renderer.domElement).focus();\r\n\t\t});\r\n\r\n\t\ttree.on(\"deselect_node.jstree\", (e, data) => {\r\n\t\t\tpropertiesPanel.set(null);\r\n\t\t});\r\n\r\n\t\ttree.on(\"delete_node.jstree\", (e, data) => {\r\n\t\t\tpropertiesPanel.set(null);\r\n\t\t});\r\n\r\n\t\ttree.on('dblclick','.jstree-anchor', (e) => {\r\n\r\n\t\t\tlet instance = $.jstree.reference(e.target);\r\n\t\t\tlet node = instance.get_node(e.target);\r\n\t\t\tlet object = node.data;\r\n\r\n\t\t\t// ignore double click on checkbox\r\n\t\t\tif(e.target.classList.contains(\"jstree-checkbox\")){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif(object instanceof PointCloudTree){\r\n\t\t\t\tlet box = this.viewer.getBoundingBox([object]);\r\n\t\t\t\tlet node = new THREE.Object3D();\r\n\t\t\t\tnode.boundingBox = box;\r\n\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\r\n\t\t\t}else if(object instanceof Measure){\r\n\t\t\t\tlet points = object.points.map(p => p.position);\r\n\t\t\t\tlet box = new THREE.Box3().setFromPoints(points);\r\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\r\n\t\t\t\t\tlet node = new THREE.Object3D();\r\n\t\t\t\t\tnode.boundingBox = box;\r\n\t\t\t\t\tthis.viewer.zoomTo(node, 2, 500);\r\n\t\t\t\t}\r\n\t\t\t}else if(object instanceof Profile){\r\n\t\t\t\tlet points = object.points;\r\n\t\t\t\tlet box = new THREE.Box3().setFromPoints(points);\r\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\r\n\t\t\t\t\tlet node = new THREE.Object3D();\r\n\t\t\t\t\tnode.boundingBox = box;\r\n\t\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\r\n\t\t\t\t}\r\n\t\t\t}else if(object instanceof Volume){\r\n\t\t\t\t\r\n\t\t\t\tlet box = object.boundingBox.clone().applyMatrix4(object.matrixWorld);\r\n\r\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\r\n\t\t\t\t\tlet node = new THREE.Object3D();\r\n\t\t\t\t\tnode.boundingBox = box;\r\n\t\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\r\n\t\t\t\t}\r\n\t\t\t}else if(object instanceof Annotation){\r\n\t\t\t\tobject.moveHere(this.viewer.scene.getActiveCamera());\r\n\t\t\t}else if(object instanceof PolygonClipVolume){\r\n\t\t\t\tlet dir = object.camera.getWorldDirection(new THREE.Vector3());\r\n\t\t\t\tlet target;\r\n\r\n\t\t\t\tif(object.camera instanceof THREE.OrthographicCamera){\r\n\t\t\t\t\tdir.multiplyScalar(object.camera.right)\r\n\t\t\t\t\ttarget = new THREE.Vector3().addVectors(object.camera.position, dir);\r\n\t\t\t\t\tthis.viewer.setCameraMode(CameraMode.ORTHOGRAPHIC);\r\n\t\t\t\t}else if(object.camera instanceof THREE.PerspectiveCamera){\r\n\t\t\t\t\tdir.multiplyScalar(this.viewer.scene.view.radius);\r\n\t\t\t\t\ttarget = new THREE.Vector3().addVectors(object.camera.position, dir);\r\n\t\t\t\t\tthis.viewer.setCameraMode(CameraMode.PERSPECTIVE);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tthis.viewer.scene.view.position.copy(object.camera.position);\r\n\t\t\t\tthis.viewer.scene.view.lookAt(target);\r\n\t\t\t}else if(object.type === \"SpotLight\"){\r\n\t\t\t\tlet distance = (object.distance > 0) ? object.distance / 4 : 5 * 1000;\r\n\t\t\t\tlet position = object.position;\r\n\t\t\t\tlet target = new THREE.Vector3().addVectors(\r\n\t\t\t\t\tposition, \r\n\t\t\t\t\tobject.getWorldDirection(new THREE.Vector3()).multiplyScalar(distance));\r\n\r\n\t\t\t\tthis.viewer.scene.view.position.copy(object.position);\r\n\t\t\t\tthis.viewer.scene.view.lookAt(target);\r\n\t\t\t}else if(object instanceof THREE.Object3D){\r\n\t\t\t\tlet box = new THREE.Box3().setFromObject(object);\r\n\r\n\t\t\t\tif(box.getSize(new THREE.Vector3()).length() > 0){\r\n\t\t\t\t\tlet node = new THREE.Object3D();\r\n\t\t\t\t\tnode.boundingBox = box;\r\n\t\t\t\t\tthis.viewer.zoomTo(node, 1, 500);\r\n\t\t\t\t}\r\n\t\t\t}else if(object instanceof OrientedImage){\r\n\t\t\t\t// TODO zoom to images\r\n\r\n\t\t\t\t// let box = new THREE.Box3().setFromObject(object);\r\n\r\n\t\t\t\t// if(box.getSize(new THREE.Vector3()).length() > 0){\r\n\t\t\t\t// \tlet node = new THREE.Object3D();\r\n\t\t\t\t// \tnode.boundingBox = box;\r\n\t\t\t\t// \tthis.viewer.zoomTo(node, 1, 500);\r\n\t\t\t\t// }\r\n\t\t\t}else if(object instanceof Images360){\r\n\t\t\t\t// TODO\r\n\t\t\t}else if(object instanceof Geopackage){\r\n\t\t\t\t// TODO\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\ttree.on(\"uncheck_node.jstree\", (e, data) => {\r\n\t\t\tlet object = data.node.data;\r\n\r\n\t\t\tif(object){\r\n\t\t\t\tobject.visible = false;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\ttree.on(\"check_node.jstree\", (e, data) => {\r\n\t\t\tlet object = data.node.data;\r\n\r\n\t\t\tif(object){\r\n\t\t\t\tobject.visible = true;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\r\n\t\tlet onPointCloudAdded = (e) => {\r\n\t\t\tlet pointcloud = e.pointcloud;\r\n\t\t\tlet cloudIcon = `${Potree.resourcePath}/icons/cloud.svg`;\r\n\t\t\tlet node = createNode(pcID, pointcloud.name, cloudIcon, pointcloud);\r\n\r\n\t\t\tpointcloud.addEventListener(\"visibility_changed\", () => {\r\n\t\t\t\tif(pointcloud.visible){\r\n\t\t\t\t\ttree.jstree('check_node', node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttree.jstree('uncheck_node', node);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tlet onMeasurementAdded = (e) => {\r\n\t\t\tlet measurement = e.measurement;\r\n\t\t\tlet icon = Utils.getMeasurementIcon(measurement);\r\n\t\t\tcreateNode(measurementID, measurement.name, icon, measurement);\r\n\t\t};\r\n\r\n\t\tlet onVolumeAdded = (e) => {\r\n\t\t\tlet volume = e.volume;\r\n\t\t\tlet icon = Utils.getMeasurementIcon(volume);\r\n\t\t\tlet node = createNode(measurementID, volume.name, icon, volume);\r\n\r\n\t\t\tvolume.addEventListener(\"visibility_changed\", () => {\r\n\t\t\t\tif(volume.visible){\r\n\t\t\t\t\ttree.jstree('check_node', node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttree.jstree('uncheck_node', node);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tlet onProfileAdded = (e) => {\r\n\t\t\tlet profile = e.profile;\r\n\t\t\tlet icon = Utils.getMeasurementIcon(profile);\r\n\t\t\tcreateNode(measurementID, profile.name, icon, profile);\r\n\t\t};\r\n\r\n\t\tlet onAnnotationAdded = (e) => {\r\n\t\t\tlet annotation = e.annotation;\r\n\r\n\t\t\tlet annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`;\r\n\t\t\tlet parentID = this.annotationMapping.get(annotation.parent);\r\n\t\t\tlet annotationID = createNode(parentID, annotation.title, annotationIcon, annotation);\r\n\t\t\tthis.annotationMapping.set(annotation, annotationID);\r\n\r\n\t\t\tannotation.addEventListener(\"annotation_changed\", (e) => {\r\n\t\t\t\tlet annotationsRoot = $(\"#jstree_scene\").jstree().get_json(\"annotations\");\r\n\t\t\t\tlet jsonNode = annotationsRoot.children.find(child => child.data.uuid === annotation.uuid);\r\n\t\t\t\t\r\n\t\t\t\t$.jstree.reference(jsonNode.id).rename_node(jsonNode.id, annotation.title);\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tlet onCameraAnimationAdded = (e) => {\r\n\t\t\tconst animation = e.animation;\r\n\r\n\t\t\tconst animationIcon = `${Potree.resourcePath}/icons/camera_animation.svg`;\r\n\t\t\tcreateNode(otherID, \"animation\", animationIcon, animation);\r\n\t\t};\r\n\r\n\t\tlet onOrientedImagesAdded = (e) => {\r\n\t\t\tconst images = e.images;\r\n\r\n\t\t\tconst imagesIcon = `${Potree.resourcePath}/icons/picture.svg`;\r\n\t\t\tconst node = createNode(imagesID, \"images\", imagesIcon, images);\r\n\r\n\t\t\timages.addEventListener(\"visibility_changed\", () => {\r\n\t\t\t\tif(images.visible){\r\n\t\t\t\t\ttree.jstree('check_node', node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttree.jstree('uncheck_node', node);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tlet onImages360Added = (e) => {\r\n\t\t\tconst images = e.images;\r\n\r\n\t\t\tconst imagesIcon = `${Potree.resourcePath}/icons/picture.svg`;\r\n\t\t\tconst node = createNode(imagesID, \"360° images\", imagesIcon, images);\r\n\r\n\t\t\timages.addEventListener(\"visibility_changed\", () => {\r\n\t\t\t\tif(images.visible){\r\n\t\t\t\t\ttree.jstree('check_node', node);\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttree.jstree('uncheck_node', node);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t};\r\n\r\n\t\tconst onGeopackageAdded = (e) => {\r\n\t\t\tconst geopackage = e.geopackage;\r\n\r\n\t\t\tconst geopackageIcon = `${Potree.resourcePath}/icons/triangle.svg`;\r\n\t\t\tconst tree = $(`#jstree_scene`);\r\n\t\t\tconst parentNode = \"vectors\";\r\n\r\n\t\t\tfor(const layer of geopackage.node.children){\r\n\t\t\t\tconst name = layer.name;\r\n\r\n\t\t\t\tlet shpPointsID = tree.jstree('create_node', parentNode, { \r\n\t\t\t\t\t\t\"text\": name, \r\n\t\t\t\t\t\t\"icon\": geopackageIcon,\r\n\t\t\t\t\t\t\"object\": layer,\r\n\t\t\t\t\t\t\"data\": layer,\r\n\t\t\t\t\t}, \r\n\t\t\t\t\t\"last\", false, false);\r\n\t\t\t\ttree.jstree(layer.visible ? \"check_node\" : \"uncheck_node\", shpPointsID);\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t\tthis.viewer.scene.addEventListener(\"pointcloud_added\", onPointCloudAdded);\r\n\t\tthis.viewer.scene.addEventListener(\"measurement_added\", onMeasurementAdded);\r\n\t\tthis.viewer.scene.addEventListener(\"profile_added\", onProfileAdded);\r\n\t\tthis.viewer.scene.addEventListener(\"volume_added\", onVolumeAdded);\r\n\t\tthis.viewer.scene.addEventListener(\"camera_animation_added\", onCameraAnimationAdded);\r\n\t\tthis.viewer.scene.addEventListener(\"oriented_images_added\", onOrientedImagesAdded);\r\n\t\tthis.viewer.scene.addEventListener(\"360_images_added\", onImages360Added);\r\n\t\tthis.viewer.scene.addEventListener(\"geopackage_added\", onGeopackageAdded);\r\n\t\tthis.viewer.scene.addEventListener(\"polygon_clip_volume_added\", onVolumeAdded);\r\n\t\tthis.viewer.scene.annotations.addEventListener(\"annotation_added\", onAnnotationAdded);\r\n\r\n\t\tlet onMeasurementRemoved = (e) => {\r\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.measurement.uuid);\r\n\t\t\t\r\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\r\n\t\t};\r\n\r\n\t\tlet onVolumeRemoved = (e) => {\r\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid);\r\n\t\t\t\r\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\r\n\t\t};\r\n\r\n\t\tlet onPolygonClipVolumeRemoved = (e) => {\r\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.volume.uuid);\r\n\t\t\t\r\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\r\n\t\t};\r\n\r\n\t\tlet onProfileRemoved = (e) => {\r\n\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === e.profile.uuid);\r\n\t\t\t\r\n\t\t\ttree.jstree(\"delete_node\", jsonNode.id);\r\n\t\t};\r\n\r\n\t\tthis.viewer.scene.addEventListener(\"measurement_removed\", onMeasurementRemoved);\r\n\t\tthis.viewer.scene.addEventListener(\"volume_removed\", onVolumeRemoved);\r\n\t\tthis.viewer.scene.addEventListener(\"polygon_clip_volume_removed\", onPolygonClipVolumeRemoved);\r\n\t\tthis.viewer.scene.addEventListener(\"profile_removed\", onProfileRemoved);\r\n\r\n\t\t{\r\n\t\t\tlet annotationIcon = `${Potree.resourcePath}/icons/annotation.svg`;\r\n\t\t\tthis.annotationMapping = new Map(); \r\n\t\t\tthis.annotationMapping.set(this.viewer.scene.annotations, annotationsID);\r\n\t\t\tthis.viewer.scene.annotations.traverseDescendants(annotation => {\r\n\t\t\t\tlet parentID = this.annotationMapping.get(annotation.parent);\r\n\t\t\t\tlet annotationID = createNode(parentID, annotation.title, annotationIcon, annotation);\r\n\t\t\t\tthis.annotationMapping.set(annotation, annotationID);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tconst scene = this.viewer.scene;\r\n\t\tfor(let pointcloud of scene.pointclouds){\r\n\t\t\tonPointCloudAdded({pointcloud: pointcloud});\r\n\t\t}\r\n\r\n\t\tfor(let measurement of scene.measurements){\r\n\t\t\tonMeasurementAdded({measurement: measurement});\r\n\t\t}\r\n\r\n\t\tfor(let volume of [...scene.volumes, ...scene.polygonClipVolumes]){\r\n\t\t\tonVolumeAdded({volume: volume});\r\n\t\t}\r\n\r\n\t\tfor(let animation of scene.cameraAnimations){\r\n\t\t\tonCameraAnimationAdded({animation: animation});\r\n\t\t}\r\n\r\n\t\tfor(let images of scene.orientedImages){\r\n\t\t\tonOrientedImagesAdded({images: images});\r\n\t\t}\r\n\r\n\t\tfor(let images of scene.images360){\r\n\t\t\tonImages360Added({images: images});\r\n\t\t}\r\n\r\n\t\tfor(const geopackage of scene.geopackages){\r\n\t\t\tonGeopackageAdded({geopackage: geopackage});\r\n\t\t}\r\n\r\n\t\tfor(let profile of scene.profiles){\r\n\t\t\tonProfileAdded({profile: profile});\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tcreateNode(otherID, \"Camera\", null, new THREE.Camera());\r\n\t\t}\r\n\r\n\t\tthis.viewer.addEventListener(\"scene_changed\", (e) => {\r\n\t\t\tpropertiesPanel.setScene(e.scene);\r\n\r\n\t\t\te.oldScene.removeEventListener(\"pointcloud_added\", onPointCloudAdded);\r\n\t\t\te.oldScene.removeEventListener(\"measurement_added\", onMeasurementAdded);\r\n\t\t\te.oldScene.removeEventListener(\"profile_added\", onProfileAdded);\r\n\t\t\te.oldScene.removeEventListener(\"volume_added\", onVolumeAdded);\r\n\t\t\te.oldScene.removeEventListener(\"polygon_clip_volume_added\", onVolumeAdded);\r\n\t\t\te.oldScene.removeEventListener(\"measurement_removed\", onMeasurementRemoved);\r\n\r\n\t\t\te.scene.addEventListener(\"pointcloud_added\", onPointCloudAdded);\r\n\t\t\te.scene.addEventListener(\"measurement_added\", onMeasurementAdded);\r\n\t\t\te.scene.addEventListener(\"profile_added\", onProfileAdded);\r\n\t\t\te.scene.addEventListener(\"volume_added\", onVolumeAdded);\r\n\t\t\te.scene.addEventListener(\"polygon_clip_volume_added\", onVolumeAdded);\r\n\t\t\te.scene.addEventListener(\"measurement_removed\", onMeasurementRemoved);\r\n\t\t});\r\n\r\n\t}\r\n\r\n\tinitClippingTool(){\r\n\r\n\r\n\t\tthis.viewer.addEventListener(\"cliptask_changed\", (event) => {\r\n\t\t\tconsole.log(\"TODO\");\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener(\"clipmethod_changed\", (event) => {\r\n\t\t\tconsole.log(\"TODO\");\r\n\t\t});\r\n\r\n\t\t{\r\n\t\t\tlet elClipTask = $(\"#cliptask_options\");\r\n\t\t\telClipTask.selectgroup({title: \"Clip Task\"});\r\n\r\n\t\t\telClipTask.find(\"input\").click( (e) => {\r\n\t\t\t\tthis.viewer.setClipTask(ClipTask[e.target.value]);\r\n\t\t\t});\r\n\r\n\t\t\tlet currentClipTask = Object.keys(ClipTask)\r\n\t\t\t\t.filter(key => ClipTask[key] === this.viewer.clipTask);\r\n\t\t\telClipTask.find(`input[value=${currentClipTask}]`).trigger(\"click\");\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tlet elClipMethod = $(\"#clipmethod_options\");\r\n\t\t\telClipMethod.selectgroup({title: \"Clip Method\"});\r\n\r\n\t\t\telClipMethod.find(\"input\").click( (e) => {\r\n\t\t\t\tthis.viewer.setClipMethod(ClipMethod[e.target.value]);\r\n\t\t\t});\r\n\r\n\t\t\tlet currentClipMethod = Object.keys(ClipMethod)\r\n\t\t\t\t.filter(key => ClipMethod[key] === this.viewer.clipMethod);\r\n\t\t\telClipMethod.find(`input[value=${currentClipMethod}]`).trigger(\"click\");\r\n\t\t}\r\n\r\n\t\tlet clippingToolBar = $(\"#clipping_tools\");\r\n\r\n\t\t// CLIP VOLUME\r\n\t\tclippingToolBar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/clip_volume.svg',\r\n\t\t\t'[title]tt.clip_volume',\r\n\t\t\t() => {\r\n\t\t\t\tlet item = this.volumeTool.startInsertion({clip: true}); \r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t// CLIP POLYGON\r\n\t\tclippingToolBar.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/icons/clip-polygon.svg\",\r\n\t\t\t\"[title]tt.clip_polygon\",\r\n\t\t\t() => {\r\n\t\t\t\tlet item = this.viewer.clippingTool.startInsertion({type: \"polygon\"});\r\n\r\n\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid);\r\n\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\t{// SCREEN BOX SELECT\r\n\t\t\tlet boxSelectTool = new ScreenBoxSelectTool(this.viewer);\r\n\r\n\t\t\tclippingToolBar.append(this.createToolIcon(\r\n\t\t\t\tPotree.resourcePath + \"/icons/clip-screen.svg\",\r\n\t\t\t\t\"[title]tt.screen_clip_box\",\r\n\t\t\t\t() => {\r\n\t\t\t\t\tif(!(this.viewer.scene.getActiveCamera() instanceof THREE.OrthographicCamera)){\r\n\t\t\t\t\t\tthis.viewer.postMessage(`Switch to Orthographic Camera Mode before using the Screen-Box-Select tool.`, \r\n\t\t\t\t\t\t\t{duration: 2000});\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\tlet item = boxSelectTool.startInsertion();\r\n\r\n\t\t\t\t\tlet measurementsRoot = $(\"#jstree_scene\").jstree().get_json(\"measurements\");\r\n\t\t\t\t\tlet jsonNode = measurementsRoot.children.find(child => child.data.uuid === item.uuid);\r\n\t\t\t\t\t$.jstree.reference(jsonNode.id).deselect_all();\r\n\t\t\t\t\t$.jstree.reference(jsonNode.id).select_node(jsonNode.id);\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t\t}\r\n\r\n\t\t{ // REMOVE CLIPPING TOOLS\r\n\t\t\tclippingToolBar.append(this.createToolIcon(\r\n\t\t\t\tPotree.resourcePath + \"/icons/remove.svg\",\r\n\t\t\t\t\"[title]tt.remove_all_clipping_volumes\",\r\n\t\t\t\t() => {\r\n\r\n\t\t\t\t\tthis.viewer.scene.removeAllClipVolumes();\r\n\t\t\t\t}\r\n\t\t\t));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tinitFilters(){\r\n\t\tthis.initClassificationList();\r\n\t\tthis.initReturnFilters();\r\n\t\tthis.initGPSTimeFilters();\r\n\t\tthis.initPointSourceIDFilters();\r\n\r\n\t}\r\n\r\n\tinitReturnFilters(){\r\n\t\tlet elReturnFilterPanel = $('#return_filter_panel');\r\n\r\n\t\t{ // RETURN NUMBER\r\n\t\t\tlet sldReturnNumber = elReturnFilterPanel.find('#sldReturnNumber');\r\n\t\t\tlet lblReturnNumber = elReturnFilterPanel.find('#lblReturnNumber');\r\n\r\n\t\t\tsldReturnNumber.slider({\r\n\t\t\t\trange: true,\r\n\t\t\t\tmin: 0, max: 7, step: 1,\r\n\t\t\t\tvalues: [0, 7],\r\n\t\t\t\tslide: (event, ui) => {\r\n\t\t\t\t\tthis.viewer.setFilterReturnNumberRange(ui.values[0], ui.values[1])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet onReturnNumberChanged = (event) => {\r\n\t\t\t\tlet [from, to] = this.viewer.filterReturnNumberRange;\r\n\r\n\t\t\t\tlblReturnNumber[0].innerHTML = `${from} to ${to}`;\r\n\t\t\t\tsldReturnNumber.slider({values: [from, to]});\r\n\t\t\t};\r\n\r\n\t\t\tthis.viewer.addEventListener('filter_return_number_range_changed', onReturnNumberChanged);\r\n\r\n\t\t\tonReturnNumberChanged();\r\n\t\t}\r\n\r\n\t\t{ // NUMBER OF RETURNS\r\n\t\t\tlet sldNumberOfReturns = elReturnFilterPanel.find('#sldNumberOfReturns');\r\n\t\t\tlet lblNumberOfReturns = elReturnFilterPanel.find('#lblNumberOfReturns');\r\n\r\n\t\t\tsldNumberOfReturns.slider({\r\n\t\t\t\trange: true,\r\n\t\t\t\tmin: 0, max: 7, step: 1,\r\n\t\t\t\tvalues: [0, 7],\r\n\t\t\t\tslide: (event, ui) => {\r\n\t\t\t\t\tthis.viewer.setFilterNumberOfReturnsRange(ui.values[0], ui.values[1])\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet onNumberOfReturnsChanged = (event) => {\r\n\t\t\t\tlet [from, to] = this.viewer.filterNumberOfReturnsRange;\r\n\r\n\t\t\t\tlblNumberOfReturns[0].innerHTML = `${from} to ${to}`;\r\n\t\t\t\tsldNumberOfReturns.slider({values: [from, to]});\r\n\t\t\t};\r\n\r\n\t\t\tthis.viewer.addEventListener('filter_number_of_returns_range_changed', onNumberOfReturnsChanged);\r\n\r\n\t\t\tonNumberOfReturnsChanged();\r\n\t\t}\r\n\t}\r\n\r\n\tinitGPSTimeFilters(){\r\n\r\n\t\tlet elGPSTimeFilterPanel = $('#gpstime_filter_panel');\r\n\r\n\t\t{\r\n\t\t\tlet slider = new HierarchicalSlider({\r\n\t\t\t\tlevels: 4,\r\n\t\t\t\tslide: (event) => {\r\n\t\t\t\t\tthis.viewer.setFilterGPSTimeRange(...event.values);\r\n\t\t\t\t},\r\n\t\t\t});\r\n\r\n\t\t\tlet initialized = false;\r\n\r\n\t\t\tlet initialize = () => {\r\n\t\t\t\t\r\n\t\t\t\tlet elRangeContainer = $(\"#gpstime_multilevel_range_container\");\r\n\t\t\t\telRangeContainer[0].prepend(slider.element);\r\n\r\n\t\t\t\tlet extent = this.viewer.getGpsTimeExtent();\r\n\r\n\t\t\t\tslider.setRange(extent);\r\n\t\t\t\tslider.setValues(extent);\r\n\r\n\r\n\t\t\t\tinitialized = true;\r\n\t\t\t};\r\n\r\n\t\t\tthis.viewer.addEventListener(\"update\", (e) => {\r\n\t\t\t\tlet extent = this.viewer.getGpsTimeExtent();\r\n\t\t\t\tlet gpsTimeAvailable = extent[0] !== Infinity;\r\n\r\n\t\t\t\tif(!initialized && gpsTimeAvailable){\r\n\t\t\t\t\tinitialize();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tslider.setRange(extent);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\r\n\t\t{\r\n\t\t\t\r\n\t\t\tconst txtGpsTime = elGPSTimeFilterPanel.find(\"#txtGpsTime\");\r\n\t\t\tconst btnFindGpsTime = elGPSTimeFilterPanel.find(\"#btnFindGpsTime\");\r\n\r\n\t\t\tlet targetTime = null;\r\n\r\n\t\t\ttxtGpsTime.on(\"input\", (e) => {\r\n\t\t\t\tconst str = txtGpsTime.val();\r\n\r\n\t\t\t\tif(!isNaN(str)){\r\n\t\t\t\t\tconst value = parseFloat(str);\r\n\t\t\t\t\ttargetTime = value;\r\n\r\n\t\t\t\t\ttxtGpsTime.css(\"background-color\", \"\")\r\n\t\t\t\t}else{\r\n\t\t\t\t\ttargetTime = null;\r\n\r\n\t\t\t\t\ttxtGpsTime.css(\"background-color\", \"#ff9999\")\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\tbtnFindGpsTime.click( () => {\r\n\t\t\t\t\r\n\t\t\t\tif(targetTime !== null){\r\n\t\t\t\t\tviewer.moveToGpsTimeVicinity(targetTime);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tinitPointSourceIDFilters() {\r\n\t\tlet elPointSourceIDFilterPanel = $('#pointsourceid_filter_panel');\r\n\r\n\t\t{\r\n\t\t\tlet slider = new HierarchicalSlider({\r\n\t\t\t\tlevels: 4,\r\n\t\t\t\trange: [0, 65535],\r\n\t\t\t\tprecision: 1,\r\n\t\t\t\tslide: (event) => {\r\n\t\t\t\t\tlet values = event.values;\r\n\t\t\t\t\tthis.viewer.setFilterPointSourceIDRange(values[0], values[1]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet initialized = false;\r\n\r\n\t\t\tlet initialize = () => {\r\n\t\t\t\telPointSourceIDFilterPanel[0].prepend(slider.element);\r\n\r\n\t\t\t\tinitialized = true;\r\n\t\t\t};\r\n\r\n\t\t\tthis.viewer.addEventListener(\"update\", (e) => {\r\n\t\t\t\tlet extent = this.viewer.filterPointSourceIDRange;\r\n\r\n\t\t\t\tif(!initialized){\r\n\t\t\t\t\tinitialize();\r\n\r\n\t\t\t\t\tslider.setValues(extent);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// let lblPointSourceID = elPointSourceIDFilterPanel.find(\"#lblPointSourceID\");\r\n\t\t// let elPointSourceID = elPointSourceIDFilterPanel.find(\"#spnPointSourceID\");\r\n\r\n\t\t// let slider = new ZoomableSlider();\r\n\t\t// elPointSourceID[0].appendChild(slider.element);\r\n\t\t// slider.update();\r\n\r\n\t\t// slider.change( () => {\r\n\t\t// \tlet range = slider.chosenRange;\r\n\t\t// \tthis.viewer.setFilterPointSourceIDRange(range[0], range[1]);\r\n\t\t// });\r\n\r\n\t\t// let onPointSourceIDExtentChanged = (event) => {\r\n\t\t// \tlet range = this.viewer.filterPointSourceIDExtent;\r\n\t\t// \tslider.setVisibleRange(range);\r\n\t\t// };\r\n\r\n\t\t// let onPointSourceIDChanged = (event) => {\r\n\t\t// \tlet range = this.viewer.filterPointSourceIDRange;\r\n\r\n\t\t// \tlet precision = 1;\r\n\t\t// \tlet from = `${Utils.addCommas(range[0].toFixed(precision))}`;\r\n\t\t// \tlet to = `${Utils.addCommas(range[1].toFixed(precision))}`;\r\n\t\t// \tlblPointSourceID[0].innerHTML = `${from} to ${to}`;\r\n\r\n\t\t// \tslider.setRange(range);\r\n\t\t// };\r\n\r\n\t\t// this.viewer.addEventListener('filter_point_source_id_range_changed', onPointSourceIDChanged);\r\n\t\t// this.viewer.addEventListener('filter_point_source_id_extent_changed', onPointSourceIDExtentChanged);\r\n\r\n\t}\r\n\r\n\tinitClassificationList(){\r\n\t\tlet elClassificationList = $('#classificationList');\r\n\r\n\t\tlet addClassificationItem = (code, name) => {\r\n\t\t\tconst classification = this.viewer.classifications[code];\r\n\t\t\tconst inputID = 'chkClassification_' + code;\r\n\t\t\tconst colorPickerID = 'colorPickerClassification_' + code;\r\n\r\n\t\t\tconst checked = classification.visible ? \"checked\" : \"\";\r\n\r\n\t\t\tlet element = $(`\r\n\t\t\t\t
  • \r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t`);\r\n\r\n\t\t\tconst elInput = element.find('input');\r\n\t\t\tconst elColorPicker = element.find(`#${colorPickerID}`);\r\n\r\n\t\t\telInput.click(event => {\r\n\t\t\t\tthis.viewer.setClassificationVisibility(code, event.target.checked);\r\n\t\t\t});\r\n\r\n\t\t\tlet defaultColor = classification.color.map(c => c * 255).join(\", \");\r\n\t\t\tdefaultColor = `rgb(${defaultColor})`;\r\n\r\n\r\n\t\t\telColorPicker.spectrum({\r\n\t\t\t\t// flat: true,\r\n\t\t\t\tcolor: defaultColor,\r\n\t\t\t\tshowInput: true,\r\n\t\t\t\tpreferredFormat: 'rgb',\r\n\t\t\t\tcancelText: '',\r\n\t\t\t\tchooseText: 'Apply',\r\n\t\t\t\tmove: color => {\r\n\t\t\t\t\tlet rgb = color.toRgb();\r\n\t\t\t\t\tconst c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1];\r\n\t\t\t\t\tclassification.color = c;\r\n\t\t\t\t},\r\n\t\t\t\tchange: color => {\r\n\t\t\t\t\tlet rgb = color.toRgb();\r\n\t\t\t\t\tconst c = [rgb.r / 255, rgb.g / 255, rgb.b / 255, 1];\r\n\t\t\t\t\tclassification.color = c;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telClassificationList.append(element);\r\n\t\t};\r\n\r\n\t\tconst addToggleAllButton = () => { // toggle all button\r\n\t\t\tconst element = $(`\r\n\t\t\t\t
  • \r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t`);\r\n\r\n\t\t\tlet elInput = element.find('input');\r\n\r\n\t\t\telInput.click(event => {\r\n\t\t\t\tthis.viewer.toggleAllClassificationsVisibility();\r\n\t\t\t});\r\n\r\n\t\t\telClassificationList.append(element);\r\n\t\t}\r\n\r\n\t\tconst addInvertButton = () => { \r\n\t\t\tconst element = $(`\r\n\t\t\t\t
  • \r\n\t\t\t\t\t\r\n\t\t\t\t
  • \r\n\t\t\t`);\r\n\r\n\t\t\tlet elInput = element.find('input');\r\n\r\n\t\t\telInput.click( () => {\r\n\t\t\t\tconst classifications = this.viewer.classifications;\r\n\t\r\n\t\t\t\tfor(let key of Object.keys(classifications)){\r\n\t\t\t\t\tlet value = classifications[key];\r\n\t\t\t\t\tthis.viewer.setClassificationVisibility(key, !value.visible);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\telClassificationList.append(element);\r\n\t\t};\r\n\r\n\t\tconst populate = () => {\r\n\t\t\taddToggleAllButton();\r\n\t\t\tfor (let classID in this.viewer.classifications) {\r\n\t\t\t\taddClassificationItem(classID, this.viewer.classifications[classID].name);\r\n\t\t\t}\r\n\t\t\taddInvertButton();\r\n\t\t};\r\n\r\n\t\tpopulate();\r\n\r\n\t\tthis.viewer.addEventListener(\"classifications_changed\", () => {\r\n\t\t\telClassificationList.empty();\r\n\t\t\tpopulate();\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener(\"classification_visibility_changed\", () => {\r\n\r\n\t\t\t{ // set checked state of classification buttons\r\n\t\t\t\tfor(const classID of Object.keys(this.viewer.classifications)){\r\n\t\t\t\t\tconst classValue = this.viewer.classifications[classID];\r\n\r\n\t\t\t\t\tlet elItem = elClassificationList.find(`#chkClassification_${classID}`);\r\n\t\t\t\t\telItem.prop(\"checked\", classValue.visible);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t{ // set checked state of toggle button based on state of all other buttons\r\n\t\t\t\tlet numVisible = 0;\r\n\t\t\t\tlet numItems = 0;\r\n\t\t\t\tfor(const key of Object.keys(this.viewer.classifications)){\r\n\t\t\t\t\tif(this.viewer.classifications[key].visible){\r\n\t\t\t\t\t\tnumVisible++;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tnumItems++;\r\n\t\t\t\t}\r\n\t\t\t\tconst allVisible = numVisible === numItems;\r\n\r\n\t\t\t\tlet elToggle = elClassificationList.find(\"#toggleClassificationFilters\");\r\n\t\t\t\telToggle.prop(\"checked\", allVisible);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tinitAccordion(){\r\n\t\t$('.accordion > h3').each(function(){\r\n\t\t\tlet header = $(this);\r\n\t\t\tlet content = $(this).next();\r\n\r\n\t\t\t//header.addClass('accordion-header ui-widget');\r\n\t\t\t//content.addClass('accordion-content ui-widget');\r\n\r\n\t\t\tcontent.hide();\r\n\r\n\t\t\theader.click(() => {\r\n\t\t\t\tcontent.slideToggle();\r\n\t\t\t});\r\n\t\t});\r\n\r\n\t\tlet languages = [\r\n\t\t\t[\"EN\", \"en\"],\r\n\t\t\t[\"FR\", \"fr\"],\r\n\t\t\t[\"DE\", \"de\"],\r\n\t\t\t[\"JP\", \"jp\"],\r\n\t\t\t[\"ES\", \"es\"],\r\n\t\t\t[\"SE\", \"se\"],\r\n\t\t\t[\"ZH\", \"zh\"],\r\n\t\t\t[\"IT\", \"it\"],\r\n\t\t\t[\"CA\", \"ca\"]\r\n\t\t];\r\n\r\n\t\tlet elLanguages = $('#potree_languages');\r\n\t\tfor(let i = 0; i < languages.length; i++){\r\n\t\t\tlet [key, value] = languages[i];\r\n\t\t\tlet element = $(`${key}`);\r\n\t\t\telement.click(() => this.viewer.setLanguage(value));\r\n\r\n\t\t\tif(i === 0){\r\n\t\t\t\telement.css(\"margin-left\", \"30px\");\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\telLanguages.append(element);\r\n\r\n\t\t\tif(i < languages.length - 1){\r\n\t\t\t\telLanguages.append($(document.createTextNode(' - ')));\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t// to close all, call\r\n\t\t// $(\".accordion > div\").hide()\r\n\r\n\t\t// to open the, for example, tool menu, call:\r\n\t\t// $(\"#menu_tools\").next().show()\r\n\t}\r\n\r\n\tinitAppearance(){\r\n\r\n\t\tconst sldPointBudget = this.dom.find('#sldPointBudget');\r\n\r\n\t\tsldPointBudget.slider({\r\n\t\t\tvalue: this.viewer.getPointBudget(),\r\n\t\t\tmin: 100 * 1000,\r\n\t\t\tmax: 10 * 1000 * 1000,\r\n\t\t\tstep: 1000,\r\n\t\t\tslide: (event, ui) => { this.viewer.setPointBudget(ui.value); }\r\n\t\t});\r\n\r\n\t\tthis.dom.find('#sldFOV').slider({\r\n\t\t\tvalue: this.viewer.getFOV(),\r\n\t\t\tmin: 20,\r\n\t\t\tmax: 100,\r\n\t\t\tstep: 1,\r\n\t\t\tslide: (event, ui) => { this.viewer.setFOV(ui.value); }\r\n\t\t});\r\n\r\n\t\t$('#sldEDLRadius').slider({\r\n\t\t\tvalue: this.viewer.getEDLRadius(),\r\n\t\t\tmin: 1,\r\n\t\t\tmax: 4,\r\n\t\t\tstep: 0.01,\r\n\t\t\tslide: (event, ui) => { this.viewer.setEDLRadius(ui.value); }\r\n\t\t});\r\n\r\n\t\t$('#sldEDLStrength').slider({\r\n\t\t\tvalue: this.viewer.getEDLStrength(),\r\n\t\t\tmin: 0,\r\n\t\t\tmax: 5,\r\n\t\t\tstep: 0.01,\r\n\t\t\tslide: (event, ui) => { this.viewer.setEDLStrength(ui.value); }\r\n\t\t});\r\n\r\n\t\t$('#sldEDLOpacity').slider({\r\n\t\t\tvalue: this.viewer.getEDLOpacity(),\r\n\t\t\tmin: 0,\r\n\t\t\tmax: 1,\r\n\t\t\tstep: 0.01,\r\n\t\t\tslide: (event, ui) => { this.viewer.setEDLOpacity(ui.value); }\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener('point_budget_changed', (event) => {\r\n\t\t\t$('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget());\r\n\t\t\tsldPointBudget.slider({value: this.viewer.getPointBudget()});\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener('fov_changed', (event) => {\r\n\t\t\t$('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV());\r\n\t\t\t$('#sldFOV').slider({value: this.viewer.getFOV()});\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener('use_edl_changed', (event) => {\r\n\t\t\t$('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled();\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener('edl_radius_changed', (event) => {\r\n\t\t\t$('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1);\r\n\t\t\t$('#sldEDLRadius').slider({value: this.viewer.getEDLRadius()});\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener('edl_strength_changed', (event) => {\r\n\t\t\t$('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1);\r\n\t\t\t$('#sldEDLStrength').slider({value: this.viewer.getEDLStrength()});\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener('background_changed', (event) => {\r\n\t\t\t$(\"input[name=background][value='\" + this.viewer.getBackground() + \"']\").prop('checked', true);\r\n\t\t});\r\n\r\n\t\t$('#lblPointBudget')[0].innerHTML = Utils.addCommas(this.viewer.getPointBudget());\r\n\t\t$('#lblFOV')[0].innerHTML = parseInt(this.viewer.getFOV());\r\n\t\t$('#lblEDLRadius')[0].innerHTML = this.viewer.getEDLRadius().toFixed(1);\r\n\t\t$('#lblEDLStrength')[0].innerHTML = this.viewer.getEDLStrength().toFixed(1);\r\n\t\t$('#chkEDLEnabled')[0].checked = this.viewer.getEDLEnabled();\r\n\t\t\r\n\t\t{\r\n\t\t\tlet elBackground = $(`#background_options`);\r\n\t\t\telBackground.selectgroup();\r\n\r\n\t\t\telBackground.find(\"input\").click( (e) => {\r\n\t\t\t\tthis.viewer.setBackground(e.target.value);\r\n\t\t\t});\r\n\r\n\t\t\tlet currentBackground = this.viewer.getBackground();\r\n\t\t\t$(`input[name=background_options][value=${currentBackground}]`).trigger(\"click\");\r\n\t\t}\r\n\r\n\t\t$('#chkEDLEnabled').click( () => {\r\n\t\t\tthis.viewer.setEDLEnabled($('#chkEDLEnabled').prop(\"checked\"));\r\n\t\t});\r\n\t}\r\n\r\n\tinitNavigation(){\r\n\t\tlet elNavigation = $('#navigation');\r\n\t\tlet sldMoveSpeed = $('#sldMoveSpeed');\r\n\t\tlet lblMoveSpeed = $('#lblMoveSpeed');\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/earth_controls_1.png',\r\n\t\t\t'[title]tt.earth_control',\r\n\t\t\t() => { this.viewer.setControls(this.viewer.earthControls); }\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/fps_controls.svg',\r\n\t\t\t'[title]tt.flight_control',\r\n\t\t\t() => {\r\n\t\t\t\tthis.viewer.setControls(this.viewer.fpControls);\r\n\t\t\t\tthis.viewer.fpControls.lockElevation = false;\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/helicopter_controls.svg',\r\n\t\t\t'[title]tt.heli_control',\r\n\t\t\t() => { \r\n\t\t\t\tthis.viewer.setControls(this.viewer.fpControls);\r\n\t\t\t\tthis.viewer.fpControls.lockElevation = true;\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/orbit_controls.svg',\r\n\t\t\t'[title]tt.orbit_control',\r\n\t\t\t() => { this.viewer.setControls(this.viewer.orbitControls); }\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + '/icons/focus.svg',\r\n\t\t\t'[title]tt.focus_control',\r\n\t\t\t() => { this.viewer.fitToScreen(); }\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/icons/navigation_cube.svg\",\r\n\t\t\t\"[title]tt.navigation_cube_control\",\r\n\t\t\t() => {this.viewer.toggleNavigationCube()}\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/images/compas.svg\",\r\n\t\t\t\"[title]tt.compass\",\r\n\t\t\t() => {\r\n\t\t\t\tconst visible = !this.viewer.compass.isVisible();\r\n\t\t\t\tthis.viewer.compass.setVisible(visible);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/icons/camera_animation.svg\",\r\n\t\t\t\"[title]tt.camera_animation\",\r\n\t\t\t() => {\r\n\t\t\t\tconst animation = CameraAnimation.defaultFromView(this.viewer);\r\n\r\n\t\t\t\tviewer.scene.addCameraAnimation(animation);\r\n\t\t\t}\r\n\t\t));\r\n\r\n\r\n\t\telNavigation.append(\"
    \");\r\n\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/icons/left.svg\",\r\n\t\t\t\"[title]tt.left_view_control\",\r\n\t\t\t() => {this.viewer.setLeftView()}\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/icons/right.svg\",\r\n\t\t\t\"[title]tt.right_view_control\",\r\n\t\t\t() => {this.viewer.setRightView()}\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/icons/front.svg\",\r\n\t\t\t\"[title]tt.front_view_control\",\r\n\t\t\t() => {this.viewer.setFrontView()}\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/icons/back.svg\",\r\n\t\t\t\"[title]tt.back_view_control\",\r\n\t\t\t() => {this.viewer.setBackView()}\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/icons/top.svg\",\r\n\t\t\t\"[title]tt.top_view_control\",\r\n\t\t\t() => {this.viewer.setTopView()}\r\n\t\t));\r\n\r\n\t\telNavigation.append(this.createToolIcon(\r\n\t\t\tPotree.resourcePath + \"/icons/bottom.svg\",\r\n\t\t\t\"[title]tt.bottom_view_control\",\r\n\t\t\t() => {this.viewer.setBottomView()}\r\n\t\t));\r\n\r\n\r\n\r\n\r\n\r\n\t\tlet elCameraProjection = $(`\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t`);\r\n\t\telNavigation.append(elCameraProjection);\r\n\t\telCameraProjection.selectgroup({title: \"Camera Projection\"});\r\n\t\telCameraProjection.find(\"input\").click( (e) => {\r\n\t\t\tthis.viewer.setCameraMode(CameraMode[e.target.value]);\r\n\t\t});\r\n\t\tlet cameraMode = Object.keys(CameraMode)\r\n\t\t\t.filter(key => CameraMode[key] === this.viewer.scene.cameraMode);\r\n\t\telCameraProjection.find(`input[value=${cameraMode}]`).trigger(\"click\");\r\n\r\n\t\tlet speedRange = new THREE.Vector2(1, 10 * 1000);\r\n\r\n\t\tlet toLinearSpeed = (value) => {\r\n\t\t\treturn Math.pow(value, 4) * speedRange.y + speedRange.x;\r\n\t\t};\r\n\r\n\t\tlet toExpSpeed = (value) => {\r\n\t\t\treturn Math.pow((value - speedRange.x) / speedRange.y, 1 / 4);\r\n\t\t};\r\n\r\n\t\tsldMoveSpeed.slider({\r\n\t\t\tvalue: toExpSpeed(this.viewer.getMoveSpeed()),\r\n\t\t\tmin: 0,\r\n\t\t\tmax: 1,\r\n\t\t\tstep: 0.01,\r\n\t\t\tslide: (event, ui) => { this.viewer.setMoveSpeed(toLinearSpeed(ui.value)); }\r\n\t\t});\r\n\r\n\t\tthis.viewer.addEventListener('move_speed_changed', (event) => {\r\n\t\t\tlblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1));\r\n\t\t\tsldMoveSpeed.slider({value: toExpSpeed(this.viewer.getMoveSpeed())});\r\n\t\t});\r\n\r\n\t\tlblMoveSpeed.html(this.viewer.getMoveSpeed().toFixed(1));\r\n\t}\r\n\r\n\r\n\tinitSettings(){\r\n\r\n\t\t{\r\n\t\t\t$('#sldMinNodeSize').slider({\r\n\t\t\t\tvalue: this.viewer.getMinNodeSize(),\r\n\t\t\t\tmin: 0,\r\n\t\t\t\tmax: 1000,\r\n\t\t\t\tstep: 0.01,\r\n\t\t\t\tslide: (event, ui) => { this.viewer.setMinNodeSize(ui.value); }\r\n\t\t\t});\r\n\r\n\t\t\tthis.viewer.addEventListener('minnodesize_changed', (event) => {\r\n\t\t\t\t$('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize()));\r\n\t\t\t\t$('#sldMinNodeSize').slider({value: this.viewer.getMinNodeSize()});\r\n\t\t\t});\r\n\t\t\t$('#lblMinNodeSize').html(parseInt(this.viewer.getMinNodeSize()));\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tlet elSplatQuality = $(\"#splat_quality_options\");\r\n\t\t\telSplatQuality.selectgroup({title: \"Splat Quality\"});\r\n\r\n\t\t\telSplatQuality.find(\"input\").click( (e) => {\r\n\t\t\t\tif(e.target.value === \"standard\"){\r\n\t\t\t\t\tthis.viewer.useHQ = false;\r\n\t\t\t\t}else if(e.target.value === \"hq\"){\r\n\t\t\t\t\tthis.viewer.useHQ = true;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tlet currentQuality = this.viewer.useHQ ? \"hq\" : \"standard\";\r\n\t\t\telSplatQuality.find(`input[value=${currentQuality}]`).trigger(\"click\");\r\n\t\t}\r\n\r\n\t\t$('#show_bounding_box').click(() => {\r\n\t\t\tthis.viewer.setShowBoundingBox($('#show_bounding_box').prop(\"checked\"));\r\n\t\t});\r\n\r\n\t\t$('#set_freeze').click(() => {\r\n\t\t\tthis.viewer.setFreeze($('#set_freeze').prop(\"checked\"));\r\n\t\t});\r\n\t}\r\n\r\n}\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {Annotation} from \"../Annotation.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {CameraMode} from \"../defines.js\";\r\nimport {EventDispatcher} from \"../EventDispatcher.js\";\r\n\r\nexport class AnnotationTool extends EventDispatcher{\r\n\tconstructor (viewer) {\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\tthis.sg = new THREE.SphereGeometry(0.1);\r\n\t\tthis.sm = new THREE.MeshNormalMaterial();\r\n\t\tthis.s = new THREE.Mesh(this.sg, this.sm);\r\n\t}\r\n\r\n\tstartInsertion (args = {}) {\r\n\t\tlet domElement = this.viewer.renderer.domElement;\r\n\r\n\t\tlet annotation = new Annotation({\r\n\t\t\tposition: [589748.270, 231444.540, 753.675],\r\n\t\t\ttitle: \"Annotation Title\",\r\n\t\t\tdescription: `Annotation Description`\r\n\t\t});\r\n\t\tthis.dispatchEvent({type: 'start_inserting_annotation', annotation: annotation});\r\n\r\n\t\tconst annotations = this.viewer.scene.annotations;\r\n\t\tannotations.add(annotation);\r\n\r\n\t\tlet callbacks = {\r\n\t\t\tcancel: null,\r\n\t\t\tfinish: null,\r\n\t\t};\r\n\r\n\t\tlet insertionCallback = (e) => {\r\n\t\t\tif (e.button === THREE.MOUSE.LEFT) {\r\n\t\t\t\tcallbacks.finish();\r\n\t\t\t} else if (e.button === THREE.MOUSE.RIGHT) {\r\n\t\t\t\tcallbacks.cancel();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tcallbacks.cancel = e => {\r\n\t\t\tannotations.remove(annotation);\r\n\r\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\r\n\t\t};\r\n\r\n\t\tcallbacks.finish = e => {\r\n\t\t\tdomElement.removeEventListener('mouseup', insertionCallback, true);\r\n\t\t};\r\n\r\n\t\tdomElement.addEventListener('mouseup', insertionCallback, true);\r\n\r\n\t\tlet drag = (e) => {\r\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\r\n\t\t\t\te.drag.end, \r\n\t\t\t\te.viewer.scene.getActiveCamera(), \r\n\t\t\t\te.viewer, \r\n\t\t\t\te.viewer.scene.pointclouds,\r\n\t\t\t\t{pickClipped: true});\r\n\r\n\t\t\tif (I) {\r\n\t\t\t\tthis.s.position.copy(I.location);\r\n\r\n\t\t\t\tannotation.position.copy(I.location);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tlet drop = (e) => {\r\n\t\t\tviewer.scene.scene.remove(this.s);\r\n\t\t\tthis.s.removeEventListener(\"drag\", drag);\r\n\t\t\tthis.s.removeEventListener(\"drop\", drop);\r\n\t\t};\r\n\r\n\t\tthis.s.addEventListener('drag', drag);\r\n\t\tthis.s.addEventListener('drop', drop);\r\n\r\n\t\tthis.viewer.scene.scene.add(this.s);\r\n\t\tthis.viewer.inputHandler.startDragging(this.s);\r\n\r\n\t\treturn annotation;\r\n\t}\r\n\t\r\n\tupdate(){\r\n\t\t// let camera = this.viewer.scene.getActiveCamera();\r\n\t\t// let domElement = this.renderer.domElement;\r\n\t\t// let measurements = this.viewer.scene.measurements;\r\n\r\n\t\t// const renderAreaSize = this.renderer.getSize(new THREE.Vector2());\r\n\t\t// let clientWidth = renderAreaSize.width;\r\n\t\t// let clientHeight = renderAreaSize.height;\r\n\r\n\t}\r\n\r\n\trender(){\r\n\t\t//this.viewer.renderer.render(this.scene, this.viewer.scene.getActiveCamera());\r\n\t}\r\n};\r\n","/**\r\n * @author mschuetz / http://mschuetz.at\r\n *\r\n *\r\n */\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {KeyCodes} from \"../KeyCodes.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {EventDispatcher} from \"../EventDispatcher.js\";\r\n\r\nexport class InputHandler extends EventDispatcher {\r\n\tconstructor (viewer) {\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\t\tthis.domElement = this.renderer.domElement;\r\n\t\tthis.enabled = true;\r\n\t\t\r\n\t\tthis.scene = null;\r\n\t\tthis.interactiveScenes = [];\r\n\t\tthis.interactiveObjects = new Set();\r\n\t\tthis.inputListeners = [];\r\n\t\tthis.blacklist = new Set();\r\n\r\n\t\tthis.drag = null;\r\n\t\tthis.mouse = new THREE.Vector2(0, 0);\r\n\r\n\t\tthis.selection = [];\r\n\r\n\t\tthis.hoveredElements = [];\r\n\t\tthis.pressedKeys = {};\r\n\r\n\t\tthis.wheelDelta = 0;\r\n\r\n\t\tthis.speed = 1;\r\n\r\n\t\tthis.logMessages = false;\r\n\r\n\t\tif (this.domElement.tabIndex === -1) {\r\n\t\t\tthis.domElement.tabIndex = 2222;\r\n\t\t}\r\n\r\n\t\tthis.domElement.addEventListener('contextmenu', (event) => { event.preventDefault(); }, false);\r\n\t\tthis.domElement.addEventListener('click', this.onMouseClick.bind(this), false);\r\n\t\tthis.domElement.addEventListener('mousedown', this.onMouseDown.bind(this), false);\r\n\t\tthis.domElement.addEventListener('mouseup', this.onMouseUp.bind(this), false);\r\n\t\tthis.domElement.addEventListener('mousemove', this.onMouseMove.bind(this), false);\r\n\t\tthis.domElement.addEventListener('mousewheel', this.onMouseWheel.bind(this), false);\r\n\t\tthis.domElement.addEventListener('DOMMouseScroll', this.onMouseWheel.bind(this), false); // Firefox\r\n\t\tthis.domElement.addEventListener('dblclick', this.onDoubleClick.bind(this));\r\n\t\tthis.domElement.addEventListener('keydown', this.onKeyDown.bind(this));\r\n\t\tthis.domElement.addEventListener('keyup', this.onKeyUp.bind(this));\r\n\t\tthis.domElement.addEventListener('touchstart', this.onTouchStart.bind(this));\r\n\t\tthis.domElement.addEventListener('touchend', this.onTouchEnd.bind(this));\r\n\t\tthis.domElement.addEventListener('touchmove', this.onTouchMove.bind(this));\r\n\t}\r\n\r\n\taddInputListener (listener) {\r\n\t\tthis.inputListeners.push(listener);\r\n\t}\r\n\r\n\tremoveInputListener (listener) {\r\n\t\tthis.inputListeners = this.inputListeners.filter(e => e !== listener);\r\n\t}\r\n\r\n\tgetSortedListeners(){\r\n\t\treturn this.inputListeners.sort( (a, b) => {\r\n\t\t\tlet ia = (a.importance !== undefined) ? a.importance : 0;\r\n\t\t\tlet ib = (b.importance !== undefined) ? b.importance : 0;\r\n\r\n\t\t\treturn ib - ia;\r\n\t\t});\r\n\t}\r\n\r\n\tonTouchStart (e) {\r\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onTouchStart');\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif (e.touches.length === 1) {\r\n\t\t\tlet rect = this.domElement.getBoundingClientRect();\r\n\t\t\tlet x = e.touches[0].pageX - rect.left;\r\n\t\t\tlet y = e.touches[0].pageY - rect.top;\r\n\t\t\tthis.mouse.set(x, y);\r\n\r\n\t\t\tthis.startDragging(null);\r\n\t\t}\r\n\r\n\t\t\r\n\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\ttype: e.type,\r\n\t\t\t\ttouches: e.touches,\r\n\t\t\t\tchangedTouches: e.changedTouches\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tonTouchEnd (e) {\r\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onTouchEnd');\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\ttype: 'drop',\r\n\t\t\t\tdrag: this.drag,\r\n\t\t\t\tviewer: this.viewer\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.drag = null;\r\n\r\n\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\ttype: e.type,\r\n\t\t\t\ttouches: e.touches,\r\n\t\t\t\tchangedTouches: e.changedTouches\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tonTouchMove (e) {\r\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onTouchMove');\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tif (e.touches.length === 1) {\r\n\t\t\tlet rect = this.domElement.getBoundingClientRect();\r\n\t\t\tlet x = e.touches[0].pageX - rect.left;\r\n\t\t\tlet y = e.touches[0].pageY - rect.top;\r\n\t\t\tthis.mouse.set(x, y);\r\n\r\n\t\t\tif (this.drag) {\r\n\t\t\t\tthis.drag.mouse = 1;\r\n\r\n\t\t\t\tthis.drag.lastDrag.x = x - this.drag.end.x;\r\n\t\t\t\tthis.drag.lastDrag.y = y - this.drag.end.y;\r\n\r\n\t\t\t\tthis.drag.end.set(x, y);\r\n\r\n\t\t\t\tif (this.logMessages) console.log(this.constructor.name + ': drag: ');\r\n\t\t\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\t\t\ttype: 'drag',\r\n\t\t\t\t\t\tdrag: this.drag,\r\n\t\t\t\t\t\tviewer: this.viewer\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\ttype: e.type,\r\n\t\t\t\ttouches: e.touches,\r\n\t\t\t\tchangedTouches: e.changedTouches\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\t// DEBUG CODE\r\n\t\t// let debugTouches = [...e.touches, {\r\n\t\t//\tpageX: this.domElement.clientWidth / 2,\r\n\t\t//\tpageY: this.domElement.clientHeight / 2}];\r\n\t\t// for(let inputListener of this.getSortedListeners()){\r\n\t\t//\tinputListener.dispatchEvent({\r\n\t\t//\t\ttype: e.type,\r\n\t\t//\t\ttouches: debugTouches,\r\n\t\t//\t\tchangedTouches: e.changedTouches\r\n\t\t//\t});\r\n\t\t// }\r\n\t}\r\n\r\n\tonKeyDown (e) {\r\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onKeyDown');\r\n\r\n\t\t// DELETE\r\n\t\tif (e.keyCode === KeyCodes.DELETE && this.selection.length > 0) {\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'delete',\r\n\t\t\t\tselection: this.selection\r\n\t\t\t});\r\n\r\n\t\t\tthis.deselectAll();\r\n\t\t}\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'keydown',\r\n\t\t\tkeyCode: e.keyCode,\r\n\t\t\tevent: e\r\n\t\t});\r\n\r\n\t\t// for(let l of this.getSortedListeners()){\r\n\t\t//\tl.dispatchEvent({\r\n\t\t//\t\ttype: \"keydown\",\r\n\t\t//\t\tkeyCode: e.keyCode,\r\n\t\t//\t\tevent: e\r\n\t\t//\t});\r\n\t\t// }\r\n\r\n\t\tthis.pressedKeys[e.keyCode] = true;\r\n\r\n\t\t// e.preventDefault();\r\n\t}\r\n\r\n\tonKeyUp (e) {\r\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onKeyUp');\r\n\r\n\t\tdelete this.pressedKeys[e.keyCode];\r\n\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\tonDoubleClick (e) {\r\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onDoubleClick');\r\n\r\n\t\tlet consumed = false;\r\n\t\tfor (let hovered of this.hoveredElements) {\r\n\t\t\tif (hovered._listeners && hovered._listeners['dblclick']) {\r\n\t\t\t\thovered.object.dispatchEvent({\r\n\t\t\t\t\ttype: 'dblclick',\r\n\t\t\t\t\tmouse: this.mouse,\r\n\t\t\t\t\tobject: hovered.object\r\n\t\t\t\t});\r\n\t\t\t\tconsumed = true;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!consumed) {\r\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\t\ttype: 'dblclick',\r\n\t\t\t\t\tmouse: this.mouse,\r\n\t\t\t\t\tobject: null\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\tonMouseClick (e) {\r\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onMouseClick');\r\n\r\n\t\te.preventDefault();\r\n\t}\r\n\r\n\tonMouseDown (e) {\r\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onMouseDown');\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tlet consumed = false;\r\n\t\tlet consume = () => { return consumed = true; };\r\n\t\tif (this.hoveredElements.length === 0) {\r\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\t\ttype: 'mousedown',\r\n\t\t\t\t\tviewer: this.viewer,\r\n\t\t\t\t\tmouse: this.mouse\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tfor(let hovered of this.hoveredElements){\r\n\t\t\t\tlet object = hovered.object;\r\n\t\t\t\tobject.dispatchEvent({\r\n\t\t\t\t\ttype: 'mousedown',\r\n\t\t\t\t\tviewer: this.viewer,\r\n\t\t\t\t\tconsume: consume\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(consumed){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.drag) {\r\n\t\t\tlet target = this.hoveredElements\r\n\t\t\t\t.find(el => (\r\n\t\t\t\t\tel.object._listeners &&\r\n\t\t\t\t\tel.object._listeners['drag'] &&\r\n\t\t\t\t\tel.object._listeners['drag'].length > 0));\r\n\r\n\t\t\tif (target) {\r\n\t\t\t\tthis.startDragging(target.object, {location: target.point});\r\n\t\t\t} else {\r\n\t\t\t\tthis.startDragging(null);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.scene) {\r\n\t\t\tthis.viewStart = this.scene.view.clone();\r\n\t\t}\r\n\t}\r\n\r\n\tonMouseUp (e) {\r\n\t\tif (this.logMessages) console.log(this.constructor.name + ': onMouseUp');\r\n\r\n\t\te.preventDefault();\r\n\r\n\t\tlet noMovement = this.getNormalizedDrag().length() === 0;\r\n\r\n\t\t\r\n\t\tlet consumed = false;\r\n\t\tlet consume = () => { return consumed = true; };\r\n\t\tif (this.hoveredElements.length === 0) {\r\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\t\ttype: 'mouseup',\r\n\t\t\t\t\tviewer: this.viewer,\r\n\t\t\t\t\tmouse: this.mouse,\r\n\t\t\t\t\tconsume: consume\r\n\t\t\t\t});\r\n\r\n\t\t\t\tif(consumed){\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tlet hovered = this.hoveredElements\r\n\t\t\t\t.map(e => e.object)\r\n\t\t\t\t.find(e => (e._listeners && e._listeners['mouseup']));\r\n\t\t\tif(hovered){\r\n\t\t\t\thovered.dispatchEvent({\r\n\t\t\t\t\ttype: 'mouseup',\r\n\t\t\t\t\tviewer: this.viewer,\r\n\t\t\t\t\tconsume: consume\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.drag) {\r\n\t\t\tif (this.drag.object) {\r\n\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: drop ${this.drag.object.name}`);\r\n\t\t\t\tthis.drag.object.dispatchEvent({\r\n\t\t\t\t\ttype: 'drop',\r\n\t\t\t\t\tdrag: this.drag,\r\n\t\t\t\t\tviewer: this.viewer\r\n\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\t\t\ttype: 'drop',\r\n\t\t\t\t\t\tdrag: this.drag,\r\n\t\t\t\t\t\tviewer: this.viewer\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// check for a click\r\n\t\t\tlet clicked = this.hoveredElements.map(h => h.object).find(v => v === this.drag.object) !== undefined;\r\n\t\t\tif(clicked){\r\n\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: click ${this.drag.object.name}`);\r\n\t\t\t\tthis.drag.object.dispatchEvent({\r\n\t\t\t\t\ttype: 'click',\r\n\t\t\t\t\tviewer: this.viewer,\r\n\t\t\t\t\tconsume: consume,\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis.drag = null;\r\n\t\t}\r\n\r\n\t\tif(!consumed){\r\n\t\t\tif (e.button === THREE.MOUSE.LEFT) {\r\n\t\t\t\tif (noMovement) {\r\n\t\t\t\t\tlet selectable = this.hoveredElements\r\n\t\t\t\t\t\t.find(el => el.object._listeners && el.object._listeners['select']);\r\n\r\n\t\t\t\t\tif (selectable) {\r\n\t\t\t\t\t\tselectable = selectable.object;\r\n\r\n\t\t\t\t\t\tif (this.isSelected(selectable)) {\r\n\t\t\t\t\t\t\tthis.selection\r\n\t\t\t\t\t\t\t\t.filter(e => e !== selectable)\r\n\t\t\t\t\t\t\t\t.forEach(e => this.toggleSelection(e));\r\n\t\t\t\t\t\t} else {\r\n\t\t\t\t\t\t\tthis.deselectAll();\r\n\t\t\t\t\t\t\tthis.toggleSelection(selectable);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\tthis.deselectAll();\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if ((e.button === THREE.MOUSE.RIGHT) && noMovement) {\r\n\t\t\t\tthis.deselectAll();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tonMouseMove (e) {\r\n\t\te.preventDefault();\r\n\r\n\t\tlet rect = this.domElement.getBoundingClientRect();\r\n\t\tlet x = e.clientX - rect.left;\r\n\t\tlet y = e.clientY - rect.top;\r\n\t\tthis.mouse.set(x, y);\r\n\r\n\t\tlet hoveredElements = this.getHoveredElements();\r\n\t\tif(hoveredElements.length > 0){\r\n\t\t\tlet names = hoveredElements.map(h => h.object.name).join(\", \");\r\n\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: onMouseMove; hovered: '${names}'`);\r\n\t\t}\r\n\r\n\t\tif (this.drag) {\r\n\t\t\tthis.drag.mouse = e.buttons;\r\n\r\n\t\t\tthis.drag.lastDrag.x = x - this.drag.end.x;\r\n\t\t\tthis.drag.lastDrag.y = y - this.drag.end.y;\r\n\r\n\t\t\tthis.drag.end.set(x, y);\r\n\r\n\t\t\tif (this.drag.object) {\r\n\t\t\t\tif (this.logMessages) console.log(this.constructor.name + ': drag: ' + this.drag.object.name);\r\n\t\t\t\tthis.drag.object.dispatchEvent({\r\n\t\t\t\t\ttype: 'drag',\r\n\t\t\t\t\tdrag: this.drag,\r\n\t\t\t\t\tviewer: this.viewer\r\n\t\t\t\t});\r\n\t\t\t} else {\r\n\t\t\t\tif (this.logMessages) console.log(this.constructor.name + ': drag: ');\r\n\r\n\t\t\t\tlet dragConsumed = false;\r\n\t\t\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\t\t\ttype: 'drag',\r\n\t\t\t\t\t\tdrag: this.drag,\r\n\t\t\t\t\t\tviewer: this.viewer,\r\n\t\t\t\t\t\tconsume: () => {dragConsumed = true;}\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\tif(dragConsumed){\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}else{\r\n\t\t\tlet curr = hoveredElements.map(a => a.object).find(a => true);\r\n\t\t\tlet prev = this.hoveredElements.map(a => a.object).find(a => true);\r\n\r\n\t\t\tif(curr !== prev){\r\n\t\t\t\tif(curr){\r\n\t\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: mouseover: ${curr.name}`);\r\n\t\t\t\t\tcurr.dispatchEvent({\r\n\t\t\t\t\t\ttype: 'mouseover',\r\n\t\t\t\t\t\tobject: curr,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tif(prev){\r\n\t\t\t\t\tif (this.logMessages) console.log(`${this.constructor.name}: mouseleave: ${prev.name}`);\r\n\t\t\t\t\tprev.dispatchEvent({\r\n\t\t\t\t\t\ttype: 'mouseleave',\r\n\t\t\t\t\t\tobject: prev,\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif(hoveredElements.length > 0){\r\n\t\t\t\tlet object = hoveredElements\r\n\t\t\t\t\t.map(e => e.object)\r\n\t\t\t\t\t.find(e => (e._listeners && e._listeners['mousemove']));\r\n\t\t\t\t\r\n\t\t\t\tif(object){\r\n\t\t\t\t\tobject.dispatchEvent({\r\n\t\t\t\t\t\ttype: 'mousemove',\r\n\t\t\t\t\t\tobject: object\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t\t\r\n\t\t// for (let inputListener of this.getSortedListeners()) {\r\n\t\t// \tinputListener.dispatchEvent({\r\n\t\t// \t\ttype: 'mousemove',\r\n\t\t// \t\tobject: null\r\n\t\t// \t});\r\n\t\t// }\r\n\t\t\r\n\r\n\t\tthis.hoveredElements = hoveredElements;\r\n\t}\r\n\t\r\n\tonMouseWheel(e){\r\n\t\tif(!this.enabled) return;\r\n\r\n\t\tif(this.logMessages) console.log(this.constructor.name + \": onMouseWheel\");\r\n\t\t\r\n\t\te.preventDefault();\r\n\r\n\t\tlet delta = 0;\r\n\t\tif (e.wheelDelta !== undefined) { // WebKit / Opera / Explorer 9\r\n\t\t\tdelta = e.wheelDelta;\r\n\t\t} else if (e.detail !== undefined) { // Firefox\r\n\t\t\tdelta = -e.detail;\r\n\t\t}\r\n\r\n\t\tlet ndelta = Math.sign(delta);\r\n\r\n\t\t// this.wheelDelta += Math.sign(delta);\r\n\r\n\t\tif (this.hoveredElement) {\r\n\t\t\tthis.hoveredElement.object.dispatchEvent({\r\n\t\t\t\ttype: 'mousewheel',\r\n\t\t\t\tdelta: ndelta,\r\n\t\t\t\tobject: this.hoveredElement.object\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tfor (let inputListener of this.getSortedListeners()) {\r\n\t\t\t\tinputListener.dispatchEvent({\r\n\t\t\t\t\ttype: 'mousewheel',\r\n\t\t\t\t\tdelta: ndelta,\r\n\t\t\t\t\tobject: null\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tstartDragging (object, args = null) {\r\n\r\n\t\tlet name = object ? object.name : \"no name\";\r\n\t\tif (this.logMessages) console.log(`${this.constructor.name}: startDragging: '${name}'`);\r\n\r\n\t\tthis.drag = {\r\n\t\t\tstart: this.mouse.clone(),\r\n\t\t\tend: this.mouse.clone(),\r\n\t\t\tlastDrag: new THREE.Vector2(0, 0),\r\n\t\t\tstartView: this.scene.view.clone(),\r\n\t\t\tobject: object\r\n\t\t};\r\n\r\n\t\tif (args) {\r\n\t\t\tfor (let key of Object.keys(args)) {\r\n\t\t\t\tthis.drag[key] = args[key];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tgetMousePointCloudIntersection (mouse) {\r\n\t\treturn Utils.getMousePointCloudIntersection(\r\n\t\t\tthis.mouse, \r\n\t\t\tthis.scene.getActiveCamera(), \r\n\t\t\tthis.viewer, \r\n\t\t\tthis.scene.pointclouds);\r\n\t}\r\n\r\n\ttoggleSelection (object) {\r\n\t\tlet oldSelection = this.selection;\r\n\r\n\t\tlet index = this.selection.indexOf(object);\r\n\r\n\t\tif (index === -1) {\r\n\t\t\tthis.selection.push(object);\r\n\t\t\tobject.dispatchEvent({\r\n\t\t\t\ttype: 'select'\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\tthis.selection.splice(index, 1);\r\n\t\t\tobject.dispatchEvent({\r\n\t\t\t\ttype: 'deselect'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'selection_changed',\r\n\t\t\toldSelection: oldSelection,\r\n\t\t\tselection: this.selection\r\n\t\t});\r\n\t}\r\n\r\n\tdeselect(object){\r\n\r\n\t\tlet oldSelection = this.selection;\r\n\r\n\t\tlet index = this.selection.indexOf(object);\r\n\r\n\t\tif(index >= 0){\r\n\t\t\tthis.selection.splice(index, 1);\r\n\t\t\tobject.dispatchEvent({\r\n\t\t\t\ttype: 'deselect'\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'selection_changed',\r\n\t\t\t\toldSelection: oldSelection,\r\n\t\t\t\tselection: this.selection\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tdeselectAll () {\r\n\t\tfor (let object of this.selection) {\r\n\t\t\tobject.dispatchEvent({\r\n\t\t\t\ttype: 'deselect'\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tlet oldSelection = this.selection;\r\n\r\n\t\tif (this.selection.length > 0) {\r\n\t\t\tthis.selection = [];\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: 'selection_changed',\r\n\t\t\t\toldSelection: oldSelection,\r\n\t\t\t\tselection: this.selection\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tisSelected (object) {\r\n\t\tlet index = this.selection.indexOf(object);\r\n\r\n\t\treturn index !== -1;\r\n\t}\r\n\r\n\tregisterInteractiveObject(object){\r\n\t\tthis.interactiveObjects.add(object);\r\n\t}\r\n\r\n\tremoveInteractiveObject(object){\r\n\t\tthis.interactiveObjects.delete(object);\r\n\t}\r\n\r\n\tregisterInteractiveScene (scene) {\r\n\t\tlet index = this.interactiveScenes.indexOf(scene);\r\n\t\tif (index === -1) {\r\n\t\t\tthis.interactiveScenes.push(scene);\r\n\t\t}\r\n\t}\r\n\r\n\tunregisterInteractiveScene (scene) {\r\n\t\tlet index = this.interactiveScenes.indexOf(scene);\r\n\t\tif (index > -1) {\r\n\t\t\tthis.interactiveScenes.splice(index, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tgetHoveredElement () {\r\n\t\tlet hoveredElements = this.getHoveredElements();\r\n\t\tif (hoveredElements.length > 0) {\r\n\t\t\treturn hoveredElements[0];\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tgetHoveredElements () {\r\n\t\tlet scenes = this.interactiveScenes.concat(this.scene.scene);\r\n\r\n\t\tlet interactableListeners = ['mouseup', 'mousemove', 'mouseover', 'mouseleave', 'drag', 'drop', 'click', 'select', 'deselect'];\r\n\t\tlet interactables = [];\r\n\t\tfor (let scene of scenes) {\r\n\t\t\tscene.traverseVisible(node => {\r\n\t\t\t\tif (node._listeners && node.visible && !this.blacklist.has(node)) {\r\n\t\t\t\t\tlet hasInteractableListener = interactableListeners.filter((e) => {\r\n\t\t\t\t\t\treturn node._listeners[e] !== undefined;\r\n\t\t\t\t\t}).length > 0;\r\n\r\n\t\t\t\t\tif (hasInteractableListener) {\r\n\t\t\t\t\t\tinteractables.push(node);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\t\r\n\t\tlet camera = this.scene.getActiveCamera();\r\n\t\tlet ray = Utils.mouseToRay(this.mouse, camera, this.domElement.clientWidth, this.domElement.clientHeight);\r\n\t\t\r\n\t\tlet raycaster = new THREE.Raycaster();\r\n\t\traycaster.ray.set(ray.origin, ray.direction);\r\n\t\traycaster.params.Line.threshold = 0.2;\r\n\r\n\t\tlet intersections = raycaster.intersectObjects(interactables.filter(o => o.visible), false);\r\n\r\n\t\treturn intersections;\r\n\t}\r\n\r\n\tsetScene (scene) {\r\n\t\tthis.deselectAll();\r\n\r\n\t\tthis.scene = scene;\r\n\t}\r\n\r\n\tupdate (delta) {\r\n\r\n\t}\r\n\r\n\tgetNormalizedDrag () {\r\n\t\tif (!this.drag) {\r\n\t\t\treturn new THREE.Vector2(0, 0);\r\n\t\t}\r\n\r\n\t\tlet diff = new THREE.Vector2().subVectors(this.drag.end, this.drag.start);\r\n\r\n\t\tdiff.x = diff.x / this.domElement.clientWidth;\r\n\t\tdiff.y = diff.y / this.domElement.clientHeight;\r\n\r\n\t\treturn diff;\r\n\t}\r\n\r\n\tgetNormalizedLastDrag () {\r\n\t\tif (!this.drag) {\r\n\t\t\treturn new THREE.Vector2(0, 0);\r\n\t\t}\r\n\r\n\t\tlet lastDrag = this.drag.lastDrag.clone();\r\n\r\n\t\tlastDrag.x = lastDrag.x / this.domElement.clientWidth;\r\n\t\tlastDrag.y = lastDrag.y / this.domElement.clientHeight;\r\n\r\n\t\treturn lastDrag;\r\n\t}\r\n}\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nexport class NavigationCube extends THREE.Object3D {\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tlet createPlaneMaterial = (img) => {\r\n\t\t\tlet material = new THREE.MeshBasicMaterial( {\r\n\t\t\t\tdepthTest: true, \r\n\t\t\t\tdepthWrite: true,\r\n\t\t\t\tside: THREE.DoubleSide\r\n\t\t\t});\r\n\t\t\tnew THREE.TextureLoader().load(\r\n\t\t\t\texports.resourcePath + '/textures/navigation/' + img,\r\n\t\t\t\tfunction(texture) {\r\n\t\t\t\t\ttexture.anisotropy = viewer.renderer.capabilities.getMaxAnisotropy();\r\n\t\t\t\t\tmaterial.map = texture;\r\n\t\t\t\t\tmaterial.needsUpdate = true;\r\n\t\t\t\t});\r\n\t\t\treturn material;\r\n\t\t};\r\n\r\n\t\tlet planeGeometry = new THREE.PlaneGeometry(1, 1);\r\n\r\n\t\tthis.front = new THREE.Mesh(planeGeometry, createPlaneMaterial('F.png'));\r\n\t\tthis.front.position.y = -0.5;\r\n\t\tthis.front.rotation.x = Math.PI / 2.0;\r\n\t\tthis.front.updateMatrixWorld();\r\n\t\tthis.front.name = \"F\";\r\n\t\tthis.add(this.front);\r\n\r\n\t\tthis.back = new THREE.Mesh(planeGeometry, createPlaneMaterial('B.png'));\r\n\t\tthis.back.position.y = 0.5;\r\n\t\tthis.back.rotation.x = Math.PI / 2.0;\r\n\t\tthis.back.updateMatrixWorld();\r\n\t\tthis.back.name = \"B\";\r\n\t\tthis.add(this.back);\r\n\r\n\t\tthis.left = new THREE.Mesh(planeGeometry, createPlaneMaterial('L.png'));\r\n\t\tthis.left.position.x = -0.5;\r\n\t\tthis.left.rotation.y = Math.PI / 2.0;\r\n\t\tthis.left.updateMatrixWorld();\r\n\t\tthis.left.name = \"L\";\r\n\t\tthis.add(this.left);\r\n\r\n\t\tthis.right = new THREE.Mesh(planeGeometry, createPlaneMaterial('R.png'));\r\n\t\tthis.right.position.x = 0.5;\r\n\t\tthis.right.rotation.y = Math.PI / 2.0;\r\n\t\tthis.right.updateMatrixWorld();\r\n\t\tthis.right.name = \"R\";\r\n\t\tthis.add(this.right);\r\n\r\n\t\tthis.bottom = new THREE.Mesh(planeGeometry, createPlaneMaterial('D.png'));\r\n\t\tthis.bottom.position.z = -0.5;\r\n\t\tthis.bottom.updateMatrixWorld();\r\n\t\tthis.bottom.name = \"D\";\r\n\t\tthis.add(this.bottom);\r\n\r\n\t\tthis.top = new THREE.Mesh(planeGeometry, createPlaneMaterial('U.png'));\r\n\t\tthis.top.position.z = 0.5;\r\n\t\tthis.top.updateMatrixWorld();\r\n\t\tthis.top.name = \"U\";\r\n\t\tthis.add(this.top);\r\n\r\n\t\tthis.width = 150; // in px\r\n\r\n\t\tthis.camera = new THREE.OrthographicCamera(-1, 1, 1, -1, -1, 1);\r\n\t\tthis.camera.position.copy(new THREE.Vector3(0, 0, 0));\r\n\t\tthis.camera.lookAt(new THREE.Vector3(0, 1, 0));\r\n\t\tthis.camera.updateMatrixWorld();\r\n\t\tthis.camera.rotation.order = \"ZXY\";\r\n\r\n\t\tlet onMouseDown = (event) => {\r\n\t\t\tif (!this.visible) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tthis.pickedFace = null;\r\n\t\t\tlet mouse = new THREE.Vector2();\r\n\t\t\tmouse.x = event.clientX - (window.innerWidth - this.width);\r\n\t\t\tmouse.y = event.clientY;\r\n\r\n\t\t\tif(mouse.x < 0 || mouse.y > this.width) return;\r\n\r\n\t\t\tmouse.x = (mouse.x / this.width) * 2 - 1;\r\n\t\t\tmouse.y = -(mouse.y / this.width) * 2 + 1;\r\n\r\n\t\t\tlet raycaster = new THREE.Raycaster();\r\n\t\t\traycaster.setFromCamera(mouse, this.camera);\r\n\t\t\traycaster.ray.origin.sub(this.camera.getWorldDirection(new THREE.Vector3()));\r\n\r\n\t\t\tlet intersects = raycaster.intersectObjects(this.children);\r\n\r\n\t\t\tlet minDistance = 1000;\r\n\t\t\tfor (let i = 0; i < intersects.length; i++) {\r\n\t\t\t\tif(intersects[i].distance < minDistance) {\r\n\t\t\t\t\tthis.pickedFace = intersects[i].object.name;\r\n\t\t\t\t\tminDistance = intersects[i].distance;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\tif(this.pickedFace) {\r\n\t\t\t\tthis.viewer.setView(this.pickedFace);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tthis.viewer.renderer.domElement.addEventListener('mousedown', onMouseDown, false);\r\n\t}\r\n\r\n\tupdate(rotation) {\r\n\t\tthis.camera.rotation.copy(rotation);\r\n\t\tthis.camera.updateMatrixWorld();\r\n\t}\r\n\r\n}\r\n","/**\r\n * @author mschuetz / http://mschuetz.at\r\n *\r\n * adapted from THREE.OrbitControls by\r\n *\r\n * @author qiao / https://github.com/qiao\r\n * @author mrdoob / http://mrdoob.com\r\n * @author alteredq / http://alteredqualia.com/\r\n * @author WestLangley / http://github.com/WestLangley\r\n * @author erich666 / http://erichaines.com\r\n *\r\n *\r\n *\r\n */\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {MOUSE} from \"../defines.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {EventDispatcher} from \"../EventDispatcher.js\";\r\n\r\n \r\nexport class OrbitControls extends EventDispatcher{\r\n\t\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\t\t\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\tthis.scene = null;\r\n\t\tthis.sceneControls = new THREE.Scene();\r\n\r\n\t\tthis.rotationSpeed = 5;\r\n\r\n\t\tthis.fadeFactor = 20;\r\n\t\tthis.yawDelta = 0;\r\n\t\tthis.pitchDelta = 0;\r\n\t\tthis.panDelta = new THREE.Vector2(0, 0);\r\n\t\tthis.radiusDelta = 0;\r\n\r\n\t\tthis.doubleClockZoomEnabled = true;\r\n\r\n\t\tthis.tweens = [];\r\n\r\n\t\tlet drag = (e) => {\r\n\t\t\tif (e.drag.object !== null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (e.drag.startHandled === undefined) {\r\n\t\t\t\te.drag.startHandled = true;\r\n\r\n\t\t\t\tthis.dispatchEvent({type: 'start'});\r\n\t\t\t}\r\n\r\n\t\t\tlet ndrag = {\r\n\t\t\t\tx: e.drag.lastDrag.x / this.renderer.domElement.clientWidth,\r\n\t\t\t\ty: e.drag.lastDrag.y / this.renderer.domElement.clientHeight\r\n\t\t\t};\r\n\r\n\t\t\tif (e.drag.mouse === MOUSE.LEFT) {\r\n\t\t\t\tthis.yawDelta += ndrag.x * this.rotationSpeed;\r\n\t\t\t\tthis.pitchDelta += ndrag.y * this.rotationSpeed;\r\n\r\n\t\t\t\tthis.stopTweens();\r\n\t\t\t} else if (e.drag.mouse === MOUSE.RIGHT) {\r\n\t\t\t\tthis.panDelta.x += ndrag.x;\r\n\t\t\t\tthis.panDelta.y += ndrag.y;\r\n\r\n\t\t\t\tthis.stopTweens();\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tlet drop = e => {\r\n\t\t\tthis.dispatchEvent({type: 'end'});\r\n\t\t};\r\n\r\n\t\tlet scroll = (e) => {\r\n\t\t\tlet resolvedRadius = this.scene.view.radius + this.radiusDelta;\r\n\r\n\t\t\tthis.radiusDelta += -e.delta * resolvedRadius * 0.1;\r\n\r\n\t\t\tthis.stopTweens();\r\n\t\t};\r\n\r\n\t\tlet dblclick = (e) => {\r\n\t\t\tif(this.doubleClockZoomEnabled){\r\n\t\t\t\tthis.zoomToLocation(e.mouse);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tlet previousTouch = null;\r\n\t\tlet touchStart = e => {\r\n\t\t\tpreviousTouch = e;\r\n\t\t};\r\n\r\n\t\tlet touchEnd = e => {\r\n\t\t\tpreviousTouch = e;\r\n\t\t};\r\n\r\n\t\tlet touchMove = e => {\r\n\t\t\tif (e.touches.length === 2 && previousTouch.touches.length === 2){\r\n\t\t\t\tlet prev = previousTouch;\r\n\t\t\t\tlet curr = e;\r\n\r\n\t\t\t\tlet prevDX = prev.touches[0].pageX - prev.touches[1].pageX;\r\n\t\t\t\tlet prevDY = prev.touches[0].pageY - prev.touches[1].pageY;\r\n\t\t\t\tlet prevDist = Math.sqrt(prevDX * prevDX + prevDY * prevDY);\r\n\r\n\t\t\t\tlet currDX = curr.touches[0].pageX - curr.touches[1].pageX;\r\n\t\t\t\tlet currDY = curr.touches[0].pageY - curr.touches[1].pageY;\r\n\t\t\t\tlet currDist = Math.sqrt(currDX * currDX + currDY * currDY);\r\n\r\n\t\t\t\tlet delta = currDist / prevDist;\r\n\t\t\t\tlet resolvedRadius = this.scene.view.radius + this.radiusDelta;\r\n\t\t\t\tlet newRadius = resolvedRadius / delta;\r\n\t\t\t\tthis.radiusDelta = newRadius - resolvedRadius;\r\n\r\n\t\t\t\tthis.stopTweens();\r\n\t\t\t}else if(e.touches.length === 3 && previousTouch.touches.length === 3){\r\n\t\t\t\tlet prev = previousTouch;\r\n\t\t\t\tlet curr = e;\r\n\r\n\t\t\t\tlet prevMeanX = (prev.touches[0].pageX + prev.touches[1].pageX + prev.touches[2].pageX) / 3;\r\n\t\t\t\tlet prevMeanY = (prev.touches[0].pageY + prev.touches[1].pageY + prev.touches[2].pageY) / 3;\r\n\r\n\t\t\t\tlet currMeanX = (curr.touches[0].pageX + curr.touches[1].pageX + curr.touches[2].pageX) / 3;\r\n\t\t\t\tlet currMeanY = (curr.touches[0].pageY + curr.touches[1].pageY + curr.touches[2].pageY) / 3;\r\n\r\n\t\t\t\tlet delta = {\r\n\t\t\t\t\tx: (currMeanX - prevMeanX) / this.renderer.domElement.clientWidth,\r\n\t\t\t\t\ty: (currMeanY - prevMeanY) / this.renderer.domElement.clientHeight\r\n\t\t\t\t};\r\n\r\n\t\t\t\tthis.panDelta.x += delta.x;\r\n\t\t\t\tthis.panDelta.y += delta.y;\r\n\r\n\t\t\t\tthis.stopTweens();\r\n\t\t\t}\r\n\r\n\t\t\tpreviousTouch = e;\r\n\t\t};\r\n\r\n\t\tthis.addEventListener('touchstart', touchStart);\r\n\t\tthis.addEventListener('touchend', touchEnd);\r\n\t\tthis.addEventListener('touchmove', touchMove);\r\n\t\tthis.addEventListener('drag', drag);\r\n\t\tthis.addEventListener('drop', drop);\r\n\t\tthis.addEventListener('mousewheel', scroll);\r\n\t\tthis.addEventListener('dblclick', dblclick);\r\n\t}\r\n\r\n\tsetScene (scene) {\r\n\t\tthis.scene = scene;\r\n\t}\r\n\r\n\tstop(){\r\n\t\tthis.yawDelta = 0;\r\n\t\tthis.pitchDelta = 0;\r\n\t\tthis.radiusDelta = 0;\r\n\t\tthis.panDelta.set(0, 0);\r\n\t}\r\n\t\r\n\tzoomToLocation(mouse){\r\n\t\tlet camera = this.scene.getActiveCamera();\r\n\t\t\r\n\t\tlet I = Utils.getMousePointCloudIntersection(\r\n\t\t\tmouse,\r\n\t\t\tcamera,\r\n\t\t\tthis.viewer,\r\n\t\t\tthis.scene.pointclouds,\r\n\t\t\t{pickClipped: true});\r\n\r\n\t\tif (I === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet targetRadius = 0;\r\n\t\t{\r\n\t\t\tlet minimumJumpDistance = 0.2;\r\n\r\n\t\t\tlet domElement = this.renderer.domElement;\r\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\r\n\t\t\tlet nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray);\r\n\t\t\tlet lastNode = nodes[nodes.length - 1];\r\n\t\t\tlet radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius;\r\n\t\t\ttargetRadius = Math.min(this.scene.view.radius, radius);\r\n\t\t\ttargetRadius = Math.max(minimumJumpDistance, targetRadius);\r\n\t\t}\r\n\r\n\t\tlet d = this.scene.view.direction.multiplyScalar(-1);\r\n\t\tlet cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius));\r\n\t\t// TODO Unused: let controlsTargetPosition = I.location;\r\n\r\n\t\tlet animationDuration = 600;\r\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\r\n\r\n\t\t{ // animate\r\n\t\t\tlet value = {x: 0};\r\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, animationDuration);\r\n\t\t\ttween.easing(easing);\r\n\t\t\tthis.tweens.push(tween);\r\n\r\n\t\t\tlet startPos = this.scene.view.position.clone();\r\n\t\t\tlet targetPos = cameraTargetPosition.clone();\r\n\t\t\tlet startRadius = this.scene.view.radius;\r\n\t\t\tlet targetRadius = cameraTargetPosition.distanceTo(I.location);\r\n\r\n\t\t\ttween.onUpdate(() => {\r\n\t\t\t\tlet t = value.x;\r\n\t\t\t\tthis.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x;\r\n\t\t\t\tthis.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y;\r\n\t\t\t\tthis.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z;\r\n\r\n\t\t\t\tthis.scene.view.radius = (1 - t) * startRadius + t * targetRadius;\r\n\t\t\t\tthis.viewer.setMoveSpeed(this.scene.view.radius);\r\n\t\t\t});\r\n\r\n\t\t\ttween.onComplete(() => {\r\n\t\t\t\tthis.tweens = this.tweens.filter(e => e !== tween);\r\n\t\t\t});\r\n\r\n\t\t\ttween.start();\r\n\t\t}\r\n\t}\r\n\r\n\tstopTweens () {\r\n\t\tthis.tweens.forEach(e => e.stop());\r\n\t\tthis.tweens = [];\r\n\t}\r\n\r\n\tupdate (delta) {\r\n\t\tlet view = this.scene.view;\r\n\r\n\t\t{ // apply rotation\r\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\r\n\r\n\t\t\tlet yaw = view.yaw;\r\n\t\t\tlet pitch = view.pitch;\r\n\t\t\tlet pivot = view.getPivot();\r\n\r\n\t\t\tyaw -= progression * this.yawDelta;\r\n\t\t\tpitch -= progression * this.pitchDelta;\r\n\r\n\t\t\tview.yaw = yaw;\r\n\t\t\tview.pitch = pitch;\r\n\r\n\t\t\tlet V = this.scene.view.direction.multiplyScalar(-view.radius);\r\n\t\t\tlet position = new THREE.Vector3().addVectors(pivot, V);\r\n\r\n\t\t\tview.position.copy(position);\r\n\t\t}\r\n\r\n\t\t{ // apply pan\r\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\r\n\t\t\tlet panDistance = progression * view.radius * 3;\r\n\r\n\t\t\tlet px = -this.panDelta.x * panDistance;\r\n\t\t\tlet py = this.panDelta.y * panDistance;\r\n\r\n\t\t\tview.pan(px, py);\r\n\t\t}\r\n\r\n\t\t{ // apply zoom\r\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\r\n\r\n\t\t\t// let radius = view.radius + progression * this.radiusDelta * view.radius * 0.1;\r\n\t\t\tlet radius = view.radius + progression * this.radiusDelta;\r\n\r\n\t\t\tlet V = view.direction.multiplyScalar(-radius);\r\n\t\t\tlet position = new THREE.Vector3().addVectors(view.getPivot(), V);\r\n\t\t\tview.radius = radius;\r\n\r\n\t\t\tview.position.copy(position);\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tlet speed = view.radius;\r\n\t\t\tthis.viewer.setMoveSpeed(speed);\r\n\t\t}\r\n\r\n\t\t{ // decelerate over time\r\n\t\t\tlet progression = Math.min(1, this.fadeFactor * delta);\r\n\t\t\tlet attenuation = Math.max(0, 1 - this.fadeFactor * delta);\r\n\r\n\t\t\tthis.yawDelta *= attenuation;\r\n\t\t\tthis.pitchDelta *= attenuation;\r\n\t\t\tthis.panDelta.multiplyScalar(attenuation);\r\n\t\t\t// this.radiusDelta *= attenuation;\r\n\t\t\tthis.radiusDelta -= progression * this.radiusDelta;\r\n\t\t}\r\n\t}\r\n};\r\n","/**\r\n * @author mschuetz / http://mschuetz.at\r\n *\r\n * adapted from THREE.OrbitControls by\r\n *\r\n * @author qiao / https://github.com/qiao\r\n * @author mrdoob / http://mrdoob.com\r\n * @author alteredq / http://alteredqualia.com/\r\n * @author WestLangley / http://github.com/WestLangley\r\n * @author erich666 / http://erichaines.com\r\n *\r\n *\r\n *\r\n */\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {MOUSE} from \"../defines.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {EventDispatcher} from \"../EventDispatcher.js\";\r\n\r\n\r\nexport class FirstPersonControls extends EventDispatcher {\r\n\tconstructor (viewer) {\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\tthis.scene = null;\r\n\t\tthis.sceneControls = new THREE.Scene();\r\n\r\n\t\tthis.rotationSpeed = 200;\r\n\t\tthis.moveSpeed = 10;\r\n\t\tthis.lockElevation = false;\r\n\r\n\t\tthis.keys = {\r\n\t\t\tFORWARD: ['W'.charCodeAt(0), 38],\r\n\t\t\tBACKWARD: ['S'.charCodeAt(0), 40],\r\n\t\t\tLEFT: ['A'.charCodeAt(0), 37],\r\n\t\t\tRIGHT: ['D'.charCodeAt(0), 39],\r\n\t\t\tUP: ['R'.charCodeAt(0), 33],\r\n\t\t\tDOWN: ['F'.charCodeAt(0), 34]\r\n\t\t};\r\n\r\n\t\tthis.fadeFactor = 50;\r\n\t\tthis.yawDelta = 0;\r\n\t\tthis.pitchDelta = 0;\r\n\t\tthis.translationDelta = new THREE.Vector3(0, 0, 0);\r\n\t\tthis.translationWorldDelta = new THREE.Vector3(0, 0, 0);\r\n\r\n\t\tthis.tweens = [];\r\n\r\n\t\tlet drag = (e) => {\r\n\t\t\tif (e.drag.object !== null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (e.drag.startHandled === undefined) {\r\n\t\t\t\te.drag.startHandled = true;\r\n\r\n\t\t\t\tthis.dispatchEvent({type: 'start'});\r\n\t\t\t}\r\n\r\n\t\t\tlet moveSpeed = this.viewer.getMoveSpeed();\r\n\r\n\t\t\tlet ndrag = {\r\n\t\t\t\tx: e.drag.lastDrag.x / this.renderer.domElement.clientWidth,\r\n\t\t\t\ty: e.drag.lastDrag.y / this.renderer.domElement.clientHeight\r\n\t\t\t};\r\n\r\n\t\t\tif (e.drag.mouse === MOUSE.LEFT) {\r\n\t\t\t\tthis.yawDelta += ndrag.x * this.rotationSpeed;\r\n\t\t\t\tthis.pitchDelta += ndrag.y * this.rotationSpeed;\r\n\t\t\t} else if (e.drag.mouse === MOUSE.RIGHT) {\r\n\t\t\t\tthis.translationDelta.x -= ndrag.x * moveSpeed * 100;\r\n\t\t\t\tthis.translationDelta.z += ndrag.y * moveSpeed * 100;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tlet drop = e => {\r\n\t\t\tthis.dispatchEvent({type: 'end'});\r\n\t\t};\r\n\r\n\t\tlet scroll = (e) => {\r\n\t\t\tlet speed = this.viewer.getMoveSpeed();\r\n\r\n\t\t\tif (e.delta < 0) {\r\n\t\t\t\tspeed = speed * 0.9;\r\n\t\t\t} else if (e.delta > 0) {\r\n\t\t\t\tspeed = speed / 0.9;\r\n\t\t\t}\r\n\r\n\t\t\tspeed = Math.max(speed, 0.1);\r\n\r\n\t\t\tthis.viewer.setMoveSpeed(speed);\r\n\t\t};\r\n\r\n\t\tlet dblclick = (e) => {\r\n\t\t\tthis.zoomToLocation(e.mouse);\r\n\t\t};\r\n\r\n\t\tthis.addEventListener('drag', drag);\r\n\t\tthis.addEventListener('drop', drop);\r\n\t\tthis.addEventListener('mousewheel', scroll);\r\n\t\tthis.addEventListener('dblclick', dblclick);\r\n\t}\r\n\r\n\tsetScene (scene) {\r\n\t\tthis.scene = scene;\r\n\t}\r\n\r\n\tstop(){\r\n\t\tthis.yawDelta = 0;\r\n\t\tthis.pitchDelta = 0;\r\n\t\tthis.translationDelta.set(0, 0, 0);\r\n\t}\r\n\t\r\n\tzoomToLocation(mouse){\r\n\t\tlet camera = this.scene.getActiveCamera();\r\n\t\t\r\n\t\tlet I = Utils.getMousePointCloudIntersection(\r\n\t\t\tmouse,\r\n\t\t\tcamera,\r\n\t\t\tthis.viewer,\r\n\t\t\tthis.scene.pointclouds);\r\n\r\n\t\tif (I === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet targetRadius = 0;\r\n\t\t{\r\n\t\t\tlet minimumJumpDistance = 0.2;\r\n\r\n\t\t\tlet domElement = this.renderer.domElement;\r\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\r\n\t\t\tlet nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray);\r\n\t\t\tlet lastNode = nodes[nodes.length - 1];\r\n\t\t\tlet radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius;\r\n\t\t\ttargetRadius = Math.min(this.scene.view.radius, radius);\r\n\t\t\ttargetRadius = Math.max(minimumJumpDistance, targetRadius);\r\n\t\t}\r\n\r\n\t\tlet d = this.scene.view.direction.multiplyScalar(-1);\r\n\t\tlet cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius));\r\n\t\t// TODO Unused: let controlsTargetPosition = I.location;\r\n\r\n\t\tlet animationDuration = 600;\r\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\r\n\r\n\t\t{ // animate\r\n\t\t\tlet value = {x: 0};\r\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, animationDuration);\r\n\t\t\ttween.easing(easing);\r\n\t\t\tthis.tweens.push(tween);\r\n\r\n\t\t\tlet startPos = this.scene.view.position.clone();\r\n\t\t\tlet targetPos = cameraTargetPosition.clone();\r\n\t\t\tlet startRadius = this.scene.view.radius;\r\n\t\t\tlet targetRadius = cameraTargetPosition.distanceTo(I.location);\r\n\r\n\t\t\ttween.onUpdate(() => {\r\n\t\t\t\tlet t = value.x;\r\n\t\t\t\tthis.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x;\r\n\t\t\t\tthis.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y;\r\n\t\t\t\tthis.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z;\r\n\r\n\t\t\t\tthis.scene.view.radius = (1 - t) * startRadius + t * targetRadius;\r\n\t\t\t\tthis.viewer.setMoveSpeed(this.scene.view.radius / 2.5);\r\n\t\t\t});\r\n\r\n\t\t\ttween.onComplete(() => {\r\n\t\t\t\tthis.tweens = this.tweens.filter(e => e !== tween);\r\n\t\t\t});\r\n\r\n\t\t\ttween.start();\r\n\t\t}\r\n\t}\r\n\r\n\tupdate (delta) {\r\n\t\tlet view = this.scene.view;\r\n\r\n\t\t{ // cancel move animations on user input\r\n\t\t\tlet changes = [ this.yawDelta,\r\n\t\t\t\tthis.pitchDelta,\r\n\t\t\t\tthis.translationDelta.length(),\r\n\t\t\t\tthis.translationWorldDelta.length() ];\r\n\t\t\tlet changeHappens = changes.some(e => Math.abs(e) > 0.001);\r\n\t\t\tif (changeHappens && this.tweens.length > 0) {\r\n\t\t\t\tthis.tweens.forEach(e => e.stop());\r\n\t\t\t\tthis.tweens = [];\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // accelerate while input is given\r\n\t\t\tlet ih = this.viewer.inputHandler;\r\n\r\n\t\t\tlet moveForward = this.keys.FORWARD.some(e => ih.pressedKeys[e]);\r\n\t\t\tlet moveBackward = this.keys.BACKWARD.some(e => ih.pressedKeys[e]);\r\n\t\t\tlet moveLeft = this.keys.LEFT.some(e => ih.pressedKeys[e]);\r\n\t\t\tlet moveRight = this.keys.RIGHT.some(e => ih.pressedKeys[e]);\r\n\t\t\tlet moveUp = this.keys.UP.some(e => ih.pressedKeys[e]);\r\n\t\t\tlet moveDown = this.keys.DOWN.some(e => ih.pressedKeys[e]);\r\n\r\n\t\t\tif(this.lockElevation){\r\n\t\t\t\tlet dir = view.direction;\r\n\t\t\t\tdir.z = 0;\r\n\t\t\t\tdir.normalize();\r\n\r\n\t\t\t\tif (moveForward && moveBackward) {\r\n\t\t\t\t\tthis.translationWorldDelta.set(0, 0, 0);\r\n\t\t\t\t} else if (moveForward) {\r\n\t\t\t\t\tthis.translationWorldDelta.copy(dir.multiplyScalar(this.viewer.getMoveSpeed()));\r\n\t\t\t\t} else if (moveBackward) {\r\n\t\t\t\t\tthis.translationWorldDelta.copy(dir.multiplyScalar(-this.viewer.getMoveSpeed()));\r\n\t\t\t\t}\r\n\t\t\t}else{\r\n\t\t\t\tif (moveForward && moveBackward) {\r\n\t\t\t\t\tthis.translationDelta.y = 0;\r\n\t\t\t\t} else if (moveForward) {\r\n\t\t\t\t\tthis.translationDelta.y = this.viewer.getMoveSpeed();\r\n\t\t\t\t} else if (moveBackward) {\r\n\t\t\t\t\tthis.translationDelta.y = -this.viewer.getMoveSpeed();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (moveLeft && moveRight) {\r\n\t\t\t\tthis.translationDelta.x = 0;\r\n\t\t\t} else if (moveLeft) {\r\n\t\t\t\tthis.translationDelta.x = -this.viewer.getMoveSpeed();\r\n\t\t\t} else if (moveRight) {\r\n\t\t\t\tthis.translationDelta.x = this.viewer.getMoveSpeed();\r\n\t\t\t}\r\n\r\n\t\t\tif (moveUp && moveDown) {\r\n\t\t\t\tthis.translationWorldDelta.z = 0;\r\n\t\t\t} else if (moveUp) {\r\n\t\t\t\tthis.translationWorldDelta.z = this.viewer.getMoveSpeed();\r\n\t\t\t} else if (moveDown) {\r\n\t\t\t\tthis.translationWorldDelta.z = -this.viewer.getMoveSpeed();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{ // apply rotation\r\n\t\t\tlet yaw = view.yaw;\r\n\t\t\tlet pitch = view.pitch;\r\n\r\n\t\t\tyaw -= this.yawDelta * delta;\r\n\t\t\tpitch -= this.pitchDelta * delta;\r\n\r\n\t\t\tview.yaw = yaw;\r\n\t\t\tview.pitch = pitch;\r\n\t\t}\r\n\r\n\t\t{ // apply translation\r\n\t\t\tview.translate(\r\n\t\t\t\tthis.translationDelta.x * delta,\r\n\t\t\t\tthis.translationDelta.y * delta,\r\n\t\t\t\tthis.translationDelta.z * delta\r\n\t\t\t);\r\n\r\n\t\t\tview.translateWorld(\r\n\t\t\t\tthis.translationWorldDelta.x * delta,\r\n\t\t\t\tthis.translationWorldDelta.y * delta,\r\n\t\t\t\tthis.translationWorldDelta.z * delta\r\n\t\t\t);\r\n\t\t}\r\n\r\n\t\t{ // set view target according to speed\r\n\t\t\tview.radius = 3 * this.viewer.getMoveSpeed();\r\n\t\t}\r\n\r\n\t\t{ // decelerate over time\r\n\t\t\tlet attenuation = Math.max(0, 1 - this.fadeFactor * delta);\r\n\t\t\tthis.yawDelta *= attenuation;\r\n\t\t\tthis.pitchDelta *= attenuation;\r\n\t\t\tthis.translationDelta.multiplyScalar(attenuation);\r\n\t\t\tthis.translationWorldDelta.multiplyScalar(attenuation);\r\n\t\t}\r\n\t}\r\n};\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {MOUSE} from \"../defines.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {EventDispatcher} from \"../EventDispatcher.js\";\r\n\r\nexport class EarthControls extends EventDispatcher {\r\n\tconstructor (viewer) {\r\n\t\tsuper(viewer);\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\tthis.scene = null;\r\n\t\tthis.sceneControls = new THREE.Scene();\r\n\r\n\t\tthis.rotationSpeed = 10;\r\n\r\n\t\tthis.fadeFactor = 20;\r\n\t\tthis.wheelDelta = 0;\r\n\t\tthis.zoomDelta = new THREE.Vector3();\r\n\t\tthis.camStart = null;\r\n\r\n\t\tthis.tweens = [];\r\n\r\n\t\t{\r\n\t\t\tlet sg = new THREE.SphereGeometry(1, 16, 16);\r\n\t\t\tlet sm = new THREE.MeshNormalMaterial();\r\n\t\t\tthis.pivotIndicator = new THREE.Mesh(sg, sm);\r\n\t\t\tthis.pivotIndicator.visible = false;\r\n\t\t\tthis.sceneControls.add(this.pivotIndicator);\r\n\t\t}\r\n\r\n\t\tlet drag = (e) => {\r\n\t\t\tif (e.drag.object !== null) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this.pivot) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\tif (e.drag.startHandled === undefined) {\r\n\t\t\t\te.drag.startHandled = true;\r\n\r\n\t\t\t\tthis.dispatchEvent({type: 'start'});\r\n\t\t\t}\r\n\r\n\t\t\tlet camStart = this.camStart;\r\n\t\t\tlet camera = this.scene.getActiveCamera();\r\n\t\t\tlet view = this.viewer.scene.view;\r\n\r\n\t\t\t// let camera = this.viewer.scene.camera;\r\n\t\t\tlet mouse = e.drag.end;\r\n\t\t\tlet domElement = this.viewer.renderer.domElement;\r\n\r\n\t\t\tif (e.drag.mouse === MOUSE.LEFT) {\r\n\r\n\t\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\t\t\t\tlet plane = new THREE.Plane().setFromNormalAndCoplanarPoint(\r\n\t\t\t\t\tnew THREE.Vector3(0, 0, 1),\r\n\t\t\t\t\tthis.pivot);\r\n\r\n\t\t\t\tlet distanceToPlane = ray.distanceToPlane(plane);\r\n\r\n\t\t\t\tif (distanceToPlane > 0) {\r\n\t\t\t\t\tlet I = new THREE.Vector3().addVectors(\r\n\t\t\t\t\t\tcamStart.position,\r\n\t\t\t\t\t\tray.direction.clone().multiplyScalar(distanceToPlane));\r\n\r\n\t\t\t\t\tlet movedBy = new THREE.Vector3().subVectors(\r\n\t\t\t\t\t\tI, this.pivot);\r\n\r\n\t\t\t\t\tlet newCamPos = camStart.position.clone().sub(movedBy);\r\n\r\n\t\t\t\t\tview.position.copy(newCamPos);\r\n\r\n\t\t\t\t\t{\r\n\t\t\t\t\t\tlet distance = newCamPos.distanceTo(this.pivot);\r\n\t\t\t\t\t\tview.radius = distance;\r\n\t\t\t\t\t\tlet speed = view.radius / 2.5;\r\n\t\t\t\t\t\tthis.viewer.setMoveSpeed(speed);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t} else if (e.drag.mouse === MOUSE.RIGHT) {\r\n\t\t\t\tlet ndrag = {\r\n\t\t\t\t\tx: e.drag.lastDrag.x / this.renderer.domElement.clientWidth,\r\n\t\t\t\t\ty: e.drag.lastDrag.y / this.renderer.domElement.clientHeight\r\n\t\t\t\t};\r\n\r\n\t\t\t\tlet yawDelta = -ndrag.x * this.rotationSpeed * 0.5;\r\n\t\t\t\tlet pitchDelta = -ndrag.y * this.rotationSpeed * 0.2;\r\n\r\n\t\t\t\tlet originalPitch = view.pitch;\r\n\t\t\t\tlet tmpView = view.clone();\r\n\t\t\t\ttmpView.pitch = tmpView.pitch + pitchDelta;\r\n\t\t\t\tpitchDelta = tmpView.pitch - originalPitch;\r\n\r\n\t\t\t\tlet pivotToCam = new THREE.Vector3().subVectors(view.position, this.pivot);\r\n\t\t\t\tlet pivotToCamTarget = new THREE.Vector3().subVectors(view.getPivot(), this.pivot);\r\n\t\t\t\tlet side = view.getSide();\r\n\r\n\t\t\t\tpivotToCam.applyAxisAngle(side, pitchDelta);\r\n\t\t\t\tpivotToCamTarget.applyAxisAngle(side, pitchDelta);\r\n\r\n\t\t\t\tpivotToCam.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta);\r\n\t\t\t\tpivotToCamTarget.applyAxisAngle(new THREE.Vector3(0, 0, 1), yawDelta);\r\n\r\n\t\t\t\tlet newCam = new THREE.Vector3().addVectors(this.pivot, pivotToCam);\r\n\t\t\t\t// TODO: Unused: let newCamTarget = new THREE.Vector3().addVectors(this.pivot, pivotToCamTarget);\r\n\r\n\t\t\t\tview.position.copy(newCam);\r\n\t\t\t\tview.yaw += yawDelta;\r\n\t\t\t\tview.pitch += pitchDelta;\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tlet onMouseDown = e => {\r\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\r\n\t\t\t\te.mouse, \r\n\t\t\t\tthis.scene.getActiveCamera(), \r\n\t\t\t\tthis.viewer, \r\n\t\t\t\tthis.scene.pointclouds, \r\n\t\t\t\t{pickClipped: false});\r\n\r\n\t\t\tif (I) {\r\n\t\t\t\tthis.pivot = I.location;\r\n\t\t\t\tthis.camStart = this.scene.getActiveCamera().clone();\r\n\t\t\t\tthis.pivotIndicator.visible = true;\r\n\t\t\t\tthis.pivotIndicator.position.copy(I.location);\r\n\t\t\t}\r\n\t\t};\r\n\r\n\t\tlet drop = e => {\r\n\t\t\tthis.dispatchEvent({type: 'end'});\r\n\t\t};\r\n\r\n\t\tlet onMouseUp = e => {\r\n\t\t\tthis.camStart = null;\r\n\t\t\tthis.pivot = null;\r\n\t\t\tthis.pivotIndicator.visible = false;\r\n\t\t};\r\n\r\n\t\tlet scroll = (e) => {\r\n\t\t\tthis.wheelDelta += e.delta;\r\n\t\t};\r\n\r\n\t\tlet dblclick = (e) => {\r\n\t\t\tthis.zoomToLocation(e.mouse);\r\n\t\t};\r\n\r\n\t\tthis.addEventListener('drag', drag);\r\n\t\tthis.addEventListener('drop', drop);\r\n\t\tthis.addEventListener('mousewheel', scroll);\r\n\t\tthis.addEventListener('mousedown', onMouseDown);\r\n\t\tthis.addEventListener('mouseup', onMouseUp);\r\n\t\tthis.addEventListener('dblclick', dblclick);\r\n\t}\r\n\r\n\tsetScene (scene) {\r\n\t\tthis.scene = scene;\r\n\t}\r\n\r\n\tstop(){\r\n\t\tthis.wheelDelta = 0;\r\n\t\tthis.zoomDelta.set(0, 0, 0);\r\n\t}\r\n\t\r\n\tzoomToLocation(mouse){\r\n\t\tlet camera = this.scene.getActiveCamera();\r\n\t\t\r\n\t\tlet I = Utils.getMousePointCloudIntersection(\r\n\t\t\tmouse,\r\n\t\t\tcamera,\r\n\t\t\tthis.viewer,\r\n\t\t\tthis.scene.pointclouds);\r\n\r\n\t\tif (I === null) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet targetRadius = 0;\r\n\t\t{\r\n\t\t\tlet minimumJumpDistance = 0.2;\r\n\r\n\t\t\tlet domElement = this.renderer.domElement;\r\n\t\t\tlet ray = Utils.mouseToRay(mouse, camera, domElement.clientWidth, domElement.clientHeight);\r\n\r\n\t\t\tlet nodes = I.pointcloud.nodesOnRay(I.pointcloud.visibleNodes, ray);\r\n\t\t\tlet lastNode = nodes[nodes.length - 1];\r\n\t\t\tlet radius = lastNode.getBoundingSphere(new THREE.Sphere()).radius;\r\n\t\t\ttargetRadius = Math.min(this.scene.view.radius, radius);\r\n\t\t\ttargetRadius = Math.max(minimumJumpDistance, targetRadius);\r\n\t\t}\r\n\r\n\t\tlet d = this.scene.view.direction.multiplyScalar(-1);\r\n\t\tlet cameraTargetPosition = new THREE.Vector3().addVectors(I.location, d.multiplyScalar(targetRadius));\r\n\t\t// TODO Unused: let controlsTargetPosition = I.location;\r\n\r\n\t\tlet animationDuration = 600;\r\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\r\n\r\n\t\t{ // animate\r\n\t\t\tlet value = {x: 0};\r\n\t\t\tlet tween = new TWEEN.Tween(value).to({x: 1}, animationDuration);\r\n\t\t\ttween.easing(easing);\r\n\t\t\tthis.tweens.push(tween);\r\n\r\n\t\t\tlet startPos = this.scene.view.position.clone();\r\n\t\t\tlet targetPos = cameraTargetPosition.clone();\r\n\t\t\tlet startRadius = this.scene.view.radius;\r\n\t\t\tlet targetRadius = cameraTargetPosition.distanceTo(I.location);\r\n\r\n\t\t\ttween.onUpdate(() => {\r\n\t\t\t\tlet t = value.x;\r\n\t\t\t\tthis.scene.view.position.x = (1 - t) * startPos.x + t * targetPos.x;\r\n\t\t\t\tthis.scene.view.position.y = (1 - t) * startPos.y + t * targetPos.y;\r\n\t\t\t\tthis.scene.view.position.z = (1 - t) * startPos.z + t * targetPos.z;\r\n\r\n\t\t\t\tthis.scene.view.radius = (1 - t) * startRadius + t * targetRadius;\r\n\t\t\t\tthis.viewer.setMoveSpeed(this.scene.view.radius / 2.5);\r\n\t\t\t});\r\n\r\n\t\t\ttween.onComplete(() => {\r\n\t\t\t\tthis.tweens = this.tweens.filter(e => e !== tween);\r\n\t\t\t});\r\n\r\n\t\t\ttween.start();\r\n\t\t}\r\n\t}\r\n\r\n\tupdate (delta) {\r\n\t\tlet view = this.scene.view;\r\n\t\tlet fade = Math.pow(0.5, this.fadeFactor * delta);\r\n\t\tlet progression = 1 - fade;\r\n\t\tlet camera = this.scene.getActiveCamera();\r\n\t\t\r\n\t\t// compute zoom\r\n\t\tif (this.wheelDelta !== 0) {\r\n\t\t\tlet I = Utils.getMousePointCloudIntersection(\r\n\t\t\t\tthis.viewer.inputHandler.mouse, \r\n\t\t\t\tthis.scene.getActiveCamera(), \r\n\t\t\t\tthis.viewer, \r\n\t\t\t\tthis.scene.pointclouds);\r\n\r\n\t\t\tif (I) {\r\n\t\t\t\tlet resolvedPos = new THREE.Vector3().addVectors(view.position, this.zoomDelta);\r\n\t\t\t\tlet distance = I.location.distanceTo(resolvedPos);\r\n\t\t\t\tlet jumpDistance = distance * 0.2 * this.wheelDelta;\r\n\t\t\t\tlet targetDir = new THREE.Vector3().subVectors(I.location, view.position);\r\n\t\t\t\ttargetDir.normalize();\r\n\r\n\t\t\t\tresolvedPos.add(targetDir.multiplyScalar(jumpDistance));\r\n\t\t\t\tthis.zoomDelta.subVectors(resolvedPos, view.position);\r\n\r\n\t\t\t\t{\r\n\t\t\t\t\tlet distance = resolvedPos.distanceTo(I.location);\r\n\t\t\t\t\tview.radius = distance;\r\n\t\t\t\t\tlet speed = view.radius / 2.5;\r\n\t\t\t\t\tthis.viewer.setMoveSpeed(speed);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// apply zoom\r\n\t\tif (this.zoomDelta.length() !== 0) {\r\n\t\t\tlet p = this.zoomDelta.clone().multiplyScalar(progression);\r\n\r\n\t\t\tlet newPos = new THREE.Vector3().addVectors(view.position, p);\r\n\t\t\tview.position.copy(newPos);\r\n\t\t}\r\n\r\n\t\tif (this.pivotIndicator.visible) {\r\n\t\t\tlet distance = this.pivotIndicator.position.distanceTo(view.position);\r\n\t\t\tlet pixelwidth = this.renderer.domElement.clientwidth;\r\n\t\t\tlet pixelHeight = this.renderer.domElement.clientHeight;\r\n\t\t\tlet pr = Utils.projectedRadius(1, camera, distance, pixelwidth, pixelHeight);\r\n\t\t\tlet scale = (10 / pr);\r\n\t\t\tthis.pivotIndicator.scale.set(scale, scale, scale);\r\n\t\t}\r\n\r\n\t\t// decelerate over time\r\n\t\t{\r\n\t\t\tthis.zoomDelta.multiplyScalar(fade);\r\n\t\t\tthis.wheelDelta = 0;\r\n\t\t}\r\n\t}\r\n};\r\n","/**\r\n * @author chrisl / Geodan\r\n *\r\n * adapted from Potree.FirstPersonControls by\r\n *\r\n * @author mschuetz / http://mschuetz.at\r\n *\r\n * and THREE.DeviceOrientationControls by\r\n *\r\n * @author richt / http://richt.me\r\n * @author WestLangley / http://github.com/WestLangley\r\n *\r\n *\r\n *\r\n */\r\n\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {EventDispatcher} from \"../EventDispatcher.js\";\r\n\r\nexport class DeviceOrientationControls extends EventDispatcher{\r\n\tconstructor(viewer){\r\n\t\tsuper();\r\n\r\n\t\tthis.viewer = viewer;\r\n\t\tthis.renderer = viewer.renderer;\r\n\r\n\t\tthis.scene = null;\r\n\t\tthis.sceneControls = new THREE.Scene();\r\n\r\n\t\tthis.screenOrientation = window.orientation || 0;\r\n\r\n\t\tlet deviceOrientationChange = e => {\r\n\t\t\tthis.deviceOrientation = e;\r\n\t\t};\r\n\r\n\t\tlet screenOrientationChange = e => {\r\n\t\t\tthis.screenOrientation = window.orientation || 0;\r\n\t\t};\r\n\r\n\t\tif ('ondeviceorientationabsolute' in window) {\r\n\t\t\twindow.addEventListener('deviceorientationabsolute', deviceOrientationChange);\r\n\t\t} else if ('ondeviceorientation' in window) {\r\n\t\t\twindow.addEventListener('deviceorientation', deviceOrientationChange);\r\n\t\t} else {\r\n\t\t\tconsole.warn(\"No device orientation found.\");\r\n\t\t}\r\n\t\t// window.addEventListener('deviceorientation', deviceOrientationChange);\r\n\t\twindow.addEventListener('orientationchange', screenOrientationChange);\r\n\t}\r\n\r\n\tsetScene (scene) {\r\n\t\tthis.scene = scene;\r\n\t}\r\n\r\n\tupdate (delta) {\r\n\t\tlet computeQuaternion = function (alpha, beta, gamma, orient) {\r\n\t\t\tlet quaternion = new THREE.Quaternion();\r\n\r\n\t\t\tlet zee = new THREE.Vector3(0, 0, 1);\r\n\t\t\tlet euler = new THREE.Euler();\r\n\t\t\tlet q0 = new THREE.Quaternion();\r\n\r\n\t\t\teuler.set(beta, gamma, alpha, 'ZXY');\r\n\t\t\tquaternion.setFromEuler(euler);\r\n\t\t\tquaternion.multiply(q0.setFromAxisAngle(zee, -orient));\r\n\r\n\t\t\treturn quaternion;\r\n\t\t};\r\n\r\n\t\tif (typeof this.deviceOrientation !== 'undefined') {\r\n\t\t\tlet alpha = this.deviceOrientation.alpha ? THREE.Math.degToRad(this.deviceOrientation.alpha) : 0;\r\n\t\t\tlet beta = this.deviceOrientation.beta ? THREE.Math.degToRad(this.deviceOrientation.beta) : 0;\r\n\t\t\tlet gamma = this.deviceOrientation.gamma ? THREE.Math.degToRad(this.deviceOrientation.gamma) : 0;\r\n\t\t\tlet orient = this.screenOrientation ? THREE.Math.degToRad(this.screenOrientation) : 0;\r\n\r\n\t\t\tlet quaternion = computeQuaternion(alpha, beta, gamma, orient);\r\n\t\t\tviewer.scene.cameraP.quaternion.set(quaternion.x, quaternion.y, quaternion.z, quaternion.w);\r\n\t\t}\r\n\t}\r\n};\r\n","import {\r\n\tAnimationClip,\r\n\tBone,\r\n\tBox3,\r\n\tBufferAttribute,\r\n\tBufferGeometry,\r\n\tCanvasTexture,\r\n\tClampToEdgeWrapping,\r\n\tColor,\r\n\tDirectionalLight,\r\n\tDoubleSide,\r\n\tFileLoader,\r\n\tFrontSide,\r\n\tGroup,\r\n\tImageBitmapLoader,\r\n\tInterleavedBuffer,\r\n\tInterleavedBufferAttribute,\r\n\tInterpolant,\r\n\tInterpolateDiscrete,\r\n\tInterpolateLinear,\r\n\tLine,\r\n\tLineBasicMaterial,\r\n\tLineLoop,\r\n\tLineSegments,\r\n\tLinearFilter,\r\n\tLinearMipmapLinearFilter,\r\n\tLinearMipmapNearestFilter,\r\n\tLoader,\r\n\tLoaderUtils,\r\n\tMaterial,\r\n\tMathUtils,\r\n\tMatrix4,\r\n\tMesh,\r\n\tMeshBasicMaterial,\r\n\tMeshPhysicalMaterial,\r\n\tMeshStandardMaterial,\r\n\tMirroredRepeatWrapping,\r\n\tNearestFilter,\r\n\tNearestMipmapLinearFilter,\r\n\tNearestMipmapNearestFilter,\r\n\tNumberKeyframeTrack,\r\n\tObject3D,\r\n\tOrthographicCamera,\r\n\tPerspectiveCamera,\r\n\tPointLight,\r\n\tPoints,\r\n\tPointsMaterial,\r\n\tPropertyBinding,\r\n\tQuaternionKeyframeTrack,\r\n\tRGBFormat,\r\n\tRepeatWrapping,\r\n\tSkeleton,\r\n\tSkinnedMesh,\r\n\tSphere,\r\n\tSpotLight,\r\n\tTangentSpaceNormalMap,\r\n\tTextureLoader,\r\n\tTriangleFanDrawMode,\r\n\tTriangleStripDrawMode,\r\n\tVector2,\r\n\tVector3,\r\n\tVectorKeyframeTrack,\r\n\tsRGBEncoding\r\n} from '../build/three.module.js';\r\n\r\nvar GLTFLoader = ( function () {\r\n\r\n\tfunction GLTFLoader( manager ) {\r\n\r\n\t\tLoader.call( this, manager );\r\n\r\n\t\tthis.dracoLoader = null;\r\n\t\tthis.ddsLoader = null;\r\n\t\tthis.ktx2Loader = null;\r\n\t\tthis.meshoptDecoder = null;\r\n\r\n\t\tthis.pluginCallbacks = [];\r\n\r\n\t\tthis.register( function ( parser ) {\r\n\r\n\t\t\treturn new GLTFMaterialsClearcoatExtension( parser );\r\n\r\n\t\t} );\r\n\r\n\t\tthis.register( function ( parser ) {\r\n\r\n\t\t\treturn new GLTFTextureBasisUExtension( parser );\r\n\r\n\t\t} );\r\n\r\n\t\tthis.register( function ( parser ) {\r\n\r\n\t\t\treturn new GLTFTextureWebPExtension( parser );\r\n\r\n\t\t} );\r\n\r\n\t\tthis.register( function ( parser ) {\r\n\r\n\t\t\treturn new GLTFMaterialsTransmissionExtension( parser );\r\n\r\n\t\t} );\r\n\r\n\t\tthis.register( function ( parser ) {\r\n\r\n\t\t\treturn new GLTFLightsExtension( parser );\r\n\r\n\t\t} );\r\n\r\n\t\tthis.register( function ( parser ) {\r\n\r\n\t\t\treturn new GLTFMeshoptCompression( parser );\r\n\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\tGLTFLoader.prototype = Object.assign( Object.create( Loader.prototype ), {\r\n\r\n\t\tconstructor: GLTFLoader,\r\n\r\n\t\tload: function ( url, onLoad, onProgress, onError ) {\r\n\r\n\t\t\tvar scope = this;\r\n\r\n\t\t\tvar resourcePath;\r\n\r\n\t\t\tif ( this.resourcePath !== '' ) {\r\n\r\n\t\t\t\tresourcePath = this.resourcePath;\r\n\r\n\t\t\t} else if ( this.path !== '' ) {\r\n\r\n\t\t\t\tresourcePath = this.path;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tresourcePath = LoaderUtils.extractUrlBase( url );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Tells the LoadingManager to track an extra item, which resolves after\r\n\t\t\t// the model is fully loaded. This means the count of items loaded will\r\n\t\t\t// be incorrect, but ensures manager.onLoad() does not fire early.\r\n\t\t\tthis.manager.itemStart( url );\r\n\r\n\t\t\tvar _onError = function ( e ) {\r\n\r\n\t\t\t\tif ( onError ) {\r\n\r\n\t\t\t\t\tonError( e );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tconsole.error( e );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tscope.manager.itemError( url );\r\n\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t};\r\n\r\n\t\t\tvar loader = new FileLoader( this.manager );\r\n\r\n\t\t\tloader.setPath( this.path );\r\n\t\t\tloader.setResponseType( 'arraybuffer' );\r\n\t\t\tloader.setRequestHeader( this.requestHeader );\r\n\t\t\tloader.setWithCredentials( this.withCredentials );\r\n\r\n\t\t\tloader.load( url, function ( data ) {\r\n\r\n\t\t\t\ttry {\r\n\r\n\t\t\t\t\tscope.parse( data, resourcePath, function ( gltf ) {\r\n\r\n\t\t\t\t\t\tonLoad( gltf );\r\n\r\n\t\t\t\t\t\tscope.manager.itemEnd( url );\r\n\r\n\t\t\t\t\t}, _onError );\r\n\r\n\t\t\t\t} catch ( e ) {\r\n\r\n\t\t\t\t\t_onError( e );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}, onProgress, _onError );\r\n\r\n\t\t},\r\n\r\n\t\tsetDRACOLoader: function ( dracoLoader ) {\r\n\r\n\t\t\tthis.dracoLoader = dracoLoader;\r\n\t\t\treturn this;\r\n\r\n\t\t},\r\n\r\n\t\tsetDDSLoader: function ( ddsLoader ) {\r\n\r\n\t\t\tthis.ddsLoader = ddsLoader;\r\n\t\t\treturn this;\r\n\r\n\t\t},\r\n\r\n\t\tsetKTX2Loader: function ( ktx2Loader ) {\r\n\r\n\t\t\tthis.ktx2Loader = ktx2Loader;\r\n\t\t\treturn this;\r\n\r\n\t\t},\r\n\r\n\t\tsetMeshoptDecoder: function ( meshoptDecoder ) {\r\n\r\n\t\t\tthis.meshoptDecoder = meshoptDecoder;\r\n\t\t\treturn this;\r\n\r\n\t\t},\r\n\r\n\t\tregister: function ( callback ) {\r\n\r\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) === - 1 ) {\r\n\r\n\t\t\t\tthis.pluginCallbacks.push( callback );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\r\n\t\t},\r\n\r\n\t\tunregister: function ( callback ) {\r\n\r\n\t\t\tif ( this.pluginCallbacks.indexOf( callback ) !== - 1 ) {\r\n\r\n\t\t\t\tthis.pluginCallbacks.splice( this.pluginCallbacks.indexOf( callback ), 1 );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\r\n\t\t},\r\n\r\n\t\tparse: function ( data, path, onLoad, onError ) {\r\n\r\n\t\t\tvar content;\r\n\t\t\tvar extensions = {};\r\n\t\t\tvar plugins = {};\r\n\r\n\t\t\tif ( typeof data === 'string' ) {\r\n\r\n\t\t\t\tcontent = data;\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tvar magic = LoaderUtils.decodeText( new Uint8Array( data, 0, 4 ) );\r\n\r\n\t\t\t\tif ( magic === BINARY_EXTENSION_HEADER_MAGIC ) {\r\n\r\n\t\t\t\t\ttry {\r\n\r\n\t\t\t\t\t\textensions[ EXTENSIONS.KHR_BINARY_GLTF ] = new GLTFBinaryExtension( data );\r\n\r\n\t\t\t\t\t} catch ( error ) {\r\n\r\n\t\t\t\t\t\tif ( onError ) onError( error );\r\n\t\t\t\t\t\treturn;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tcontent = extensions[ EXTENSIONS.KHR_BINARY_GLTF ].content;\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tcontent = LoaderUtils.decodeText( new Uint8Array( data ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar json = JSON.parse( content );\r\n\r\n\t\t\tif ( json.asset === undefined || json.asset.version[ 0 ] < 2 ) {\r\n\r\n\t\t\t\tif ( onError ) onError( new Error( 'THREE.GLTFLoader: Unsupported asset. glTF versions >=2.0 are supported.' ) );\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar parser = new GLTFParser( json, {\r\n\r\n\t\t\t\tpath: path || this.resourcePath || '',\r\n\t\t\t\tcrossOrigin: this.crossOrigin,\r\n\t\t\t\tmanager: this.manager,\r\n\t\t\t\tktx2Loader: this.ktx2Loader,\r\n\t\t\t\tmeshoptDecoder: this.meshoptDecoder\r\n\r\n\t\t\t} );\r\n\r\n\t\t\tparser.fileLoader.setRequestHeader( this.requestHeader );\r\n\r\n\t\t\tfor ( var i = 0; i < this.pluginCallbacks.length; i ++ ) {\r\n\r\n\t\t\t\tvar plugin = this.pluginCallbacks[ i ]( parser );\r\n\t\t\t\tplugins[ plugin.name ] = plugin;\r\n\r\n\t\t\t\t// Workaround to avoid determining as unknown extension\r\n\t\t\t\t// in addUnknownExtensionsToUserData().\r\n\t\t\t\t// Remove this workaround if we move all the existing\r\n\t\t\t\t// extension handlers to plugin system\r\n\t\t\t\textensions[ plugin.name ] = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( json.extensionsUsed ) {\r\n\r\n\t\t\t\tfor ( var i = 0; i < json.extensionsUsed.length; ++ i ) {\r\n\r\n\t\t\t\t\tvar extensionName = json.extensionsUsed[ i ];\r\n\t\t\t\t\tvar extensionsRequired = json.extensionsRequired || [];\r\n\r\n\t\t\t\t\tswitch ( extensionName ) {\r\n\r\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_UNLIT:\r\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsUnlitExtension();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS:\r\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMaterialsPbrSpecularGlossinessExtension();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase EXTENSIONS.KHR_DRACO_MESH_COMPRESSION:\r\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFDracoMeshCompressionExtension( json, this.dracoLoader );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase EXTENSIONS.MSFT_TEXTURE_DDS:\r\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureDDSExtension( this.ddsLoader );\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase EXTENSIONS.KHR_TEXTURE_TRANSFORM:\r\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFTextureTransformExtension();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tcase EXTENSIONS.KHR_MESH_QUANTIZATION:\r\n\t\t\t\t\t\t\textensions[ extensionName ] = new GLTFMeshQuantizationExtension();\r\n\t\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\t\tdefault:\r\n\r\n\t\t\t\t\t\t\tif ( extensionsRequired.indexOf( extensionName ) >= 0 && plugins[ extensionName ] === undefined ) {\r\n\r\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Unknown extension \"' + extensionName + '\".' );\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tparser.setExtensions( extensions );\r\n\t\t\tparser.setPlugins( plugins );\r\n\t\t\tparser.parse( onLoad, onError );\r\n\r\n\t\t}\r\n\r\n\t} );\r\n\r\n\t/* GLTFREGISTRY */\r\n\r\n\tfunction GLTFRegistry() {\r\n\r\n\t\tvar objects = {};\r\n\r\n\t\treturn\t{\r\n\r\n\t\t\tget: function ( key ) {\r\n\r\n\t\t\t\treturn objects[ key ];\r\n\r\n\t\t\t},\r\n\r\n\t\t\tadd: function ( key, object ) {\r\n\r\n\t\t\t\tobjects[ key ] = object;\r\n\r\n\t\t\t},\r\n\r\n\t\t\tremove: function ( key ) {\r\n\r\n\t\t\t\tdelete objects[ key ];\r\n\r\n\t\t\t},\r\n\r\n\t\t\tremoveAll: function () {\r\n\r\n\t\t\t\tobjects = {};\r\n\r\n\t\t\t}\r\n\r\n\t\t};\r\n\r\n\t}\r\n\r\n\t/*********************************/\r\n\t/********** EXTENSIONS ***********/\r\n\t/*********************************/\r\n\r\n\tvar EXTENSIONS = {\r\n\t\tKHR_BINARY_GLTF: 'KHR_binary_glTF',\r\n\t\tKHR_DRACO_MESH_COMPRESSION: 'KHR_draco_mesh_compression',\r\n\t\tKHR_LIGHTS_PUNCTUAL: 'KHR_lights_punctual',\r\n\t\tKHR_MATERIALS_CLEARCOAT: 'KHR_materials_clearcoat',\r\n\t\tKHR_MATERIALS_PBR_SPECULAR_GLOSSINESS: 'KHR_materials_pbrSpecularGlossiness',\r\n\t\tKHR_MATERIALS_TRANSMISSION: 'KHR_materials_transmission',\r\n\t\tKHR_MATERIALS_UNLIT: 'KHR_materials_unlit',\r\n\t\tKHR_TEXTURE_BASISU: 'KHR_texture_basisu',\r\n\t\tKHR_TEXTURE_TRANSFORM: 'KHR_texture_transform',\r\n\t\tKHR_MESH_QUANTIZATION: 'KHR_mesh_quantization',\r\n\t\tEXT_TEXTURE_WEBP: 'EXT_texture_webp',\r\n\t\tEXT_MESHOPT_COMPRESSION: 'EXT_meshopt_compression',\r\n\t\tMSFT_TEXTURE_DDS: 'MSFT_texture_dds'\r\n\t};\r\n\r\n\t/**\r\n\t * DDS Texture Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/MSFT_texture_dds\r\n\t *\r\n\t */\r\n\tfunction GLTFTextureDDSExtension( ddsLoader ) {\r\n\r\n\t\tif ( ! ddsLoader ) {\r\n\r\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Attempting to load .dds texture without importing DDSLoader' );\r\n\r\n\t\t}\r\n\r\n\t\tthis.name = EXTENSIONS.MSFT_TEXTURE_DDS;\r\n\t\tthis.ddsLoader = ddsLoader;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Punctual Lights Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_lights_punctual\r\n\t */\r\n\tfunction GLTFLightsExtension( parser ) {\r\n\r\n\t\tthis.parser = parser;\r\n\t\tthis.name = EXTENSIONS.KHR_LIGHTS_PUNCTUAL;\r\n\r\n\t\t// Object3D instance caches\r\n\t\tthis.cache = { refs: {}, uses: {} };\r\n\r\n\t}\r\n\r\n\tGLTFLightsExtension.prototype._markDefs = function () {\r\n\r\n\t\tvar parser = this.parser;\r\n\t\tvar nodeDefs = this.parser.json.nodes || [];\r\n\r\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\r\n\r\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\r\n\r\n\t\t\tif ( nodeDef.extensions\r\n\t\t\t\t&& nodeDef.extensions[ this.name ]\r\n\t\t\t\t&& nodeDef.extensions[ this.name ].light !== undefined ) {\r\n\r\n\t\t\t\tparser._addNodeRef( this.cache, nodeDef.extensions[ this.name ].light );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGLTFLightsExtension.prototype._loadLight = function ( lightIndex ) {\r\n\r\n\t\tvar parser = this.parser;\r\n\t\tvar cacheKey = 'light:' + lightIndex;\r\n\t\tvar dependency = parser.cache.get( cacheKey );\r\n\r\n\t\tif ( dependency ) return dependency;\r\n\r\n\t\tvar json = parser.json;\r\n\t\tvar extensions = ( json.extensions && json.extensions[ this.name ] ) || {};\r\n\t\tvar lightDefs = extensions.lights || [];\r\n\t\tvar lightDef = lightDefs[ lightIndex ];\r\n\t\tvar lightNode;\r\n\r\n\t\tvar color = new Color( 0xffffff );\r\n\r\n\t\tif ( lightDef.color !== undefined ) color.fromArray( lightDef.color );\r\n\r\n\t\tvar range = lightDef.range !== undefined ? lightDef.range : 0;\r\n\r\n\t\tswitch ( lightDef.type ) {\r\n\r\n\t\t\tcase 'directional':\r\n\t\t\t\tlightNode = new DirectionalLight( color );\r\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\r\n\t\t\t\tlightNode.add( lightNode.target );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'point':\r\n\t\t\t\tlightNode = new PointLight( color );\r\n\t\t\t\tlightNode.distance = range;\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tcase 'spot':\r\n\t\t\t\tlightNode = new SpotLight( color );\r\n\t\t\t\tlightNode.distance = range;\r\n\t\t\t\t// Handle spotlight properties.\r\n\t\t\t\tlightDef.spot = lightDef.spot || {};\r\n\t\t\t\tlightDef.spot.innerConeAngle = lightDef.spot.innerConeAngle !== undefined ? lightDef.spot.innerConeAngle : 0;\r\n\t\t\t\tlightDef.spot.outerConeAngle = lightDef.spot.outerConeAngle !== undefined ? lightDef.spot.outerConeAngle : Math.PI / 4.0;\r\n\t\t\t\tlightNode.angle = lightDef.spot.outerConeAngle;\r\n\t\t\t\tlightNode.penumbra = 1.0 - lightDef.spot.innerConeAngle / lightDef.spot.outerConeAngle;\r\n\t\t\t\tlightNode.target.position.set( 0, 0, - 1 );\r\n\t\t\t\tlightNode.add( lightNode.target );\r\n\t\t\t\tbreak;\r\n\r\n\t\t\tdefault:\r\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unexpected light type: ' + lightDef.type );\r\n\r\n\t\t}\r\n\r\n\t\t// Some lights (e.g. spot) default to a position other than the origin. Reset the position\r\n\t\t// here, because node-level parsing will only override position if explicitly specified.\r\n\t\tlightNode.position.set( 0, 0, 0 );\r\n\r\n\t\tlightNode.decay = 2;\r\n\r\n\t\tif ( lightDef.intensity !== undefined ) lightNode.intensity = lightDef.intensity;\r\n\r\n\t\tlightNode.name = parser.createUniqueName( lightDef.name || ( 'light_' + lightIndex ) );\r\n\r\n\t\tdependency = Promise.resolve( lightNode );\r\n\r\n\t\tparser.cache.add( cacheKey, dependency );\r\n\r\n\t\treturn dependency;\r\n\r\n\t};\r\n\r\n\tGLTFLightsExtension.prototype.createNodeAttachment = function ( nodeIndex ) {\r\n\r\n\t\tvar self = this;\r\n\t\tvar parser = this.parser;\r\n\t\tvar json = parser.json;\r\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\r\n\t\tvar lightDef = ( nodeDef.extensions && nodeDef.extensions[ this.name ] ) || {};\r\n\t\tvar lightIndex = lightDef.light;\r\n\r\n\t\tif ( lightIndex === undefined ) return null;\r\n\r\n\t\treturn this._loadLight( lightIndex ).then( function ( light ) {\r\n\r\n\t\t\treturn parser._getNodeRef( self.cache, lightIndex, light );\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Unlit Materials Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_unlit\r\n\t */\r\n\tfunction GLTFMaterialsUnlitExtension() {\r\n\r\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_UNLIT;\r\n\r\n\t}\r\n\r\n\tGLTFMaterialsUnlitExtension.prototype.getMaterialType = function () {\r\n\r\n\t\treturn MeshBasicMaterial;\r\n\r\n\t};\r\n\r\n\tGLTFMaterialsUnlitExtension.prototype.extendParams = function ( materialParams, materialDef, parser ) {\r\n\r\n\t\tvar pending = [];\r\n\r\n\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\r\n\t\tmaterialParams.opacity = 1.0;\r\n\r\n\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness;\r\n\r\n\t\tif ( metallicRoughness ) {\r\n\r\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\r\n\r\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\r\n\r\n\t\t\t\tmaterialParams.color.fromArray( array );\r\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\r\n\r\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn Promise.all( pending );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Clearcoat Materials Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_clearcoat\r\n\t */\r\n\tfunction GLTFMaterialsClearcoatExtension( parser ) {\r\n\r\n\t\tthis.parser = parser;\r\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_CLEARCOAT;\r\n\r\n\t}\r\n\r\n\tGLTFMaterialsClearcoatExtension.prototype.getMaterialType = function ( materialIndex ) {\r\n\r\n\t\tvar parser = this.parser;\r\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\r\n\r\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\r\n\r\n\t\treturn MeshPhysicalMaterial;\r\n\r\n\t};\r\n\r\n\tGLTFMaterialsClearcoatExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\r\n\r\n\t\tvar parser = this.parser;\r\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\r\n\r\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\r\n\r\n\t\t\treturn Promise.resolve();\r\n\r\n\t\t}\r\n\r\n\t\tvar pending = [];\r\n\r\n\t\tvar extension = materialDef.extensions[ this.name ];\r\n\r\n\t\tif ( extension.clearcoatFactor !== undefined ) {\r\n\r\n\t\t\tmaterialParams.clearcoat = extension.clearcoatFactor;\r\n\r\n\t\t}\r\n\r\n\t\tif ( extension.clearcoatTexture !== undefined ) {\r\n\r\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatMap', extension.clearcoatTexture ) );\r\n\r\n\t\t}\r\n\r\n\t\tif ( extension.clearcoatRoughnessFactor !== undefined ) {\r\n\r\n\t\t\tmaterialParams.clearcoatRoughness = extension.clearcoatRoughnessFactor;\r\n\r\n\t\t}\r\n\r\n\t\tif ( extension.clearcoatRoughnessTexture !== undefined ) {\r\n\r\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatRoughnessMap', extension.clearcoatRoughnessTexture ) );\r\n\r\n\t\t}\r\n\r\n\t\tif ( extension.clearcoatNormalTexture !== undefined ) {\r\n\r\n\t\t\tpending.push( parser.assignTexture( materialParams, 'clearcoatNormalMap', extension.clearcoatNormalTexture ) );\r\n\r\n\t\t\tif ( extension.clearcoatNormalTexture.scale !== undefined ) {\r\n\r\n\t\t\t\tvar scale = extension.clearcoatNormalTexture.scale;\r\n\r\n\t\t\t\tmaterialParams.clearcoatNormalScale = new Vector2( scale, scale );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn Promise.all( pending );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Transmission Materials Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_transmission\r\n\t * Draft: https://github.com/KhronosGroup/glTF/pull/1698\r\n\t */\r\n\tfunction GLTFMaterialsTransmissionExtension( parser ) {\r\n\r\n\t\tthis.parser = parser;\r\n\t\tthis.name = EXTENSIONS.KHR_MATERIALS_TRANSMISSION;\r\n\r\n\t}\r\n\r\n\tGLTFMaterialsTransmissionExtension.prototype.getMaterialType = function ( materialIndex ) {\r\n\r\n\t\tvar parser = this.parser;\r\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\r\n\r\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) return null;\r\n\r\n\t\treturn MeshPhysicalMaterial;\r\n\r\n\t};\r\n\r\n\tGLTFMaterialsTransmissionExtension.prototype.extendMaterialParams = function ( materialIndex, materialParams ) {\r\n\r\n\t\tvar parser = this.parser;\r\n\t\tvar materialDef = parser.json.materials[ materialIndex ];\r\n\r\n\t\tif ( ! materialDef.extensions || ! materialDef.extensions[ this.name ] ) {\r\n\r\n\t\t\treturn Promise.resolve();\r\n\r\n\t\t}\r\n\r\n\t\tvar pending = [];\r\n\r\n\t\tvar extension = materialDef.extensions[ this.name ];\r\n\r\n\t\tif ( extension.transmissionFactor !== undefined ) {\r\n\r\n\t\t\tmaterialParams.transmission = extension.transmissionFactor;\r\n\r\n\t\t}\r\n\r\n\t\tif ( extension.transmissionTexture !== undefined ) {\r\n\r\n\t\t\tpending.push( parser.assignTexture( materialParams, 'transmissionMap', extension.transmissionTexture ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn Promise.all( pending );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * BasisU Texture Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_basisu\r\n\t */\r\n\tfunction GLTFTextureBasisUExtension( parser ) {\r\n\r\n\t\tthis.parser = parser;\r\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_BASISU;\r\n\r\n\t}\r\n\r\n\tGLTFTextureBasisUExtension.prototype.loadTexture = function ( textureIndex ) {\r\n\r\n\t\tvar parser = this.parser;\r\n\t\tvar json = parser.json;\r\n\r\n\t\tvar textureDef = json.textures[ textureIndex ];\r\n\r\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ this.name ] ) {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\tvar extension = textureDef.extensions[ this.name ];\r\n\t\tvar source = json.images[ extension.source ];\r\n\t\tvar loader = parser.options.ktx2Loader;\r\n\r\n\t\tif ( ! loader ) {\r\n\r\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\r\n\r\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setKTX2Loader must be called before loading KTX2 textures' );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\t// Assumes that the extension is optional and that a fallback texture is present\r\n\t\t\t\treturn null;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn parser.loadTextureImage( textureIndex, source, loader );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * WebP Texture Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_texture_webp\r\n\t */\r\n\tfunction GLTFTextureWebPExtension( parser ) {\r\n\r\n\t\tthis.parser = parser;\r\n\t\tthis.name = EXTENSIONS.EXT_TEXTURE_WEBP;\r\n\t\tthis.isSupported = null;\r\n\r\n\t}\r\n\r\n\tGLTFTextureWebPExtension.prototype.loadTexture = function ( textureIndex ) {\r\n\r\n\t\tvar name = this.name;\r\n\t\tvar parser = this.parser;\r\n\t\tvar json = parser.json;\r\n\r\n\t\tvar textureDef = json.textures[ textureIndex ];\r\n\r\n\t\tif ( ! textureDef.extensions || ! textureDef.extensions[ name ] ) {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t\tvar extension = textureDef.extensions[ name ];\r\n\t\tvar source = json.images[ extension.source ];\r\n\t\tvar loader = source.uri ? parser.options.manager.getHandler( source.uri ) : parser.textureLoader;\r\n\r\n\t\treturn this.detectSupport().then( function ( isSupported ) {\r\n\r\n\t\t\tif ( isSupported ) return parser.loadTextureImage( textureIndex, source, loader );\r\n\r\n\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( name ) >= 0 ) {\r\n\r\n\t\t\t\tthrow new Error( 'THREE.GLTFLoader: WebP required by asset but unsupported.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Fall back to PNG or JPEG.\r\n\t\t\treturn parser.loadTexture( textureIndex );\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\tGLTFTextureWebPExtension.prototype.detectSupport = function () {\r\n\r\n\t\tif ( ! this.isSupported ) {\r\n\r\n\t\t\tthis.isSupported = new Promise( function ( resolve ) {\r\n\r\n\t\t\t\tvar image = new Image();\r\n\r\n\t\t\t\t// Lossy test image. Support for lossy images doesn't guarantee support for all\r\n\t\t\t\t// WebP images, unfortunately.\r\n\t\t\t\timage.src = 'data:image/webp;base64,UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA';\r\n\r\n\t\t\t\timage.onload = image.onerror = function () {\r\n\r\n\t\t\t\t\tresolve( image.height === 1 );\r\n\r\n\t\t\t\t};\r\n\r\n\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t\treturn this.isSupported;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t* meshopt BufferView Compression Extension\r\n\t*\r\n\t* Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Vendor/EXT_meshopt_compression\r\n\t*/\r\n\tfunction GLTFMeshoptCompression( parser ) {\r\n\r\n\t\tthis.name = EXTENSIONS.EXT_MESHOPT_COMPRESSION;\r\n\t\tthis.parser = parser;\r\n\r\n\t}\r\n\r\n\tGLTFMeshoptCompression.prototype.loadBufferView = function ( index ) {\r\n\r\n\t\tvar json = this.parser.json;\r\n\t\tvar bufferView = json.bufferViews[ index ];\r\n\r\n\t\tif ( bufferView.extensions && bufferView.extensions[ this.name ] ) {\r\n\r\n\t\t\tvar extensionDef = bufferView.extensions[ this.name ];\r\n\r\n\t\t\tvar buffer = this.parser.getDependency( 'buffer', extensionDef.buffer );\r\n\t\t\tvar decoder = this.parser.options.meshoptDecoder;\r\n\r\n\t\t\tif ( ! decoder || ! decoder.supported ) {\r\n\r\n\t\t\t\tif ( json.extensionsRequired && json.extensionsRequired.indexOf( this.name ) >= 0 ) {\r\n\r\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: setMeshoptDecoder must be called before loading compressed files' );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// Assumes that the extension is optional and that fallback buffer data is present\r\n\t\t\t\t\treturn null;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn Promise.all( [ buffer, decoder.ready ] ).then( function ( res ) {\r\n\r\n\t\t\t\tvar byteOffset = extensionDef.byteOffset || 0;\r\n\t\t\t\tvar byteLength = extensionDef.byteLength || 0;\r\n\r\n\t\t\t\tvar count = extensionDef.count;\r\n\t\t\t\tvar stride = extensionDef.byteStride;\r\n\r\n\t\t\t\tvar result = new ArrayBuffer( count * stride );\r\n\t\t\t\tvar source = new Uint8Array( res[ 0 ], byteOffset, byteLength );\r\n\r\n\t\t\t\tdecoder.decodeGltfBuffer( new Uint8Array( result ), count, stride, source, extensionDef.mode, extensionDef.filter );\r\n\t\t\t\treturn result;\r\n\r\n\t\t\t} );\r\n\r\n\t\t} else {\r\n\r\n\t\t\treturn null;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\t/* BINARY EXTENSION */\r\n\tvar BINARY_EXTENSION_HEADER_MAGIC = 'glTF';\r\n\tvar BINARY_EXTENSION_HEADER_LENGTH = 12;\r\n\tvar BINARY_EXTENSION_CHUNK_TYPES = { JSON: 0x4E4F534A, BIN: 0x004E4942 };\r\n\r\n\tfunction GLTFBinaryExtension( data ) {\r\n\r\n\t\tthis.name = EXTENSIONS.KHR_BINARY_GLTF;\r\n\t\tthis.content = null;\r\n\t\tthis.body = null;\r\n\r\n\t\tvar headerView = new DataView( data, 0, BINARY_EXTENSION_HEADER_LENGTH );\r\n\r\n\t\tthis.header = {\r\n\t\t\tmagic: LoaderUtils.decodeText( new Uint8Array( data.slice( 0, 4 ) ) ),\r\n\t\t\tversion: headerView.getUint32( 4, true ),\r\n\t\t\tlength: headerView.getUint32( 8, true )\r\n\t\t};\r\n\r\n\t\tif ( this.header.magic !== BINARY_EXTENSION_HEADER_MAGIC ) {\r\n\r\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported glTF-Binary header.' );\r\n\r\n\t\t} else if ( this.header.version < 2.0 ) {\r\n\r\n\t\t\tthrow new Error( 'THREE.GLTFLoader: Legacy binary file detected.' );\r\n\r\n\t\t}\r\n\r\n\t\tvar chunkView = new DataView( data, BINARY_EXTENSION_HEADER_LENGTH );\r\n\t\tvar chunkIndex = 0;\r\n\r\n\t\twhile ( chunkIndex < chunkView.byteLength ) {\r\n\r\n\t\t\tvar chunkLength = chunkView.getUint32( chunkIndex, true );\r\n\t\t\tchunkIndex += 4;\r\n\r\n\t\t\tvar chunkType = chunkView.getUint32( chunkIndex, true );\r\n\t\t\tchunkIndex += 4;\r\n\r\n\t\t\tif ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.JSON ) {\r\n\r\n\t\t\t\tvar contentArray = new Uint8Array( data, BINARY_EXTENSION_HEADER_LENGTH + chunkIndex, chunkLength );\r\n\t\t\t\tthis.content = LoaderUtils.decodeText( contentArray );\r\n\r\n\t\t\t} else if ( chunkType === BINARY_EXTENSION_CHUNK_TYPES.BIN ) {\r\n\r\n\t\t\t\tvar byteOffset = BINARY_EXTENSION_HEADER_LENGTH + chunkIndex;\r\n\t\t\t\tthis.body = data.slice( byteOffset, byteOffset + chunkLength );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// Clients must ignore chunks with unknown types.\r\n\r\n\t\t\tchunkIndex += chunkLength;\r\n\r\n\t\t}\r\n\r\n\t\tif ( this.content === null ) {\r\n\r\n\t\t\tthrow new Error( 'THREE.GLTFLoader: JSON content not found.' );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * DRACO Mesh Compression Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_draco_mesh_compression\r\n\t */\r\n\tfunction GLTFDracoMeshCompressionExtension( json, dracoLoader ) {\r\n\r\n\t\tif ( ! dracoLoader ) {\r\n\r\n\t\t\tthrow new Error( 'THREE.GLTFLoader: No DRACOLoader instance provided.' );\r\n\r\n\t\t}\r\n\r\n\t\tthis.name = EXTENSIONS.KHR_DRACO_MESH_COMPRESSION;\r\n\t\tthis.json = json;\r\n\t\tthis.dracoLoader = dracoLoader;\r\n\t\tthis.dracoLoader.preload();\r\n\r\n\t}\r\n\r\n\tGLTFDracoMeshCompressionExtension.prototype.decodePrimitive = function ( primitive, parser ) {\r\n\r\n\t\tvar json = this.json;\r\n\t\tvar dracoLoader = this.dracoLoader;\r\n\t\tvar bufferViewIndex = primitive.extensions[ this.name ].bufferView;\r\n\t\tvar gltfAttributeMap = primitive.extensions[ this.name ].attributes;\r\n\t\tvar threeAttributeMap = {};\r\n\t\tvar attributeNormalizedMap = {};\r\n\t\tvar attributeTypeMap = {};\r\n\r\n\t\tfor ( var attributeName in gltfAttributeMap ) {\r\n\r\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\r\n\r\n\t\t\tthreeAttributeMap[ threeAttributeName ] = gltfAttributeMap[ attributeName ];\r\n\r\n\t\t}\r\n\r\n\t\tfor ( attributeName in primitive.attributes ) {\r\n\r\n\t\t\tvar threeAttributeName = ATTRIBUTES[ attributeName ] || attributeName.toLowerCase();\r\n\r\n\t\t\tif ( gltfAttributeMap[ attributeName ] !== undefined ) {\r\n\r\n\t\t\t\tvar accessorDef = json.accessors[ primitive.attributes[ attributeName ] ];\r\n\t\t\t\tvar componentType = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\r\n\r\n\t\t\t\tattributeTypeMap[ threeAttributeName ] = componentType;\r\n\t\t\t\tattributeNormalizedMap[ threeAttributeName ] = accessorDef.normalized === true;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn parser.getDependency( 'bufferView', bufferViewIndex ).then( function ( bufferView ) {\r\n\r\n\t\t\treturn new Promise( function ( resolve ) {\r\n\r\n\t\t\t\tdracoLoader.decodeDracoFile( bufferView, function ( geometry ) {\r\n\r\n\t\t\t\t\tfor ( var attributeName in geometry.attributes ) {\r\n\r\n\t\t\t\t\t\tvar attribute = geometry.attributes[ attributeName ];\r\n\t\t\t\t\t\tvar normalized = attributeNormalizedMap[ attributeName ];\r\n\r\n\t\t\t\t\t\tif ( normalized !== undefined ) attribute.normalized = normalized;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tresolve( geometry );\r\n\r\n\t\t\t\t}, threeAttributeMap, attributeTypeMap );\r\n\r\n\t\t\t} );\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Texture Transform Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_texture_transform\r\n\t */\r\n\tfunction GLTFTextureTransformExtension() {\r\n\r\n\t\tthis.name = EXTENSIONS.KHR_TEXTURE_TRANSFORM;\r\n\r\n\t}\r\n\r\n\tGLTFTextureTransformExtension.prototype.extendTexture = function ( texture, transform ) {\r\n\r\n\t\ttexture = texture.clone();\r\n\r\n\t\tif ( transform.offset !== undefined ) {\r\n\r\n\t\t\ttexture.offset.fromArray( transform.offset );\r\n\r\n\t\t}\r\n\r\n\t\tif ( transform.rotation !== undefined ) {\r\n\r\n\t\t\ttexture.rotation = transform.rotation;\r\n\r\n\t\t}\r\n\r\n\t\tif ( transform.scale !== undefined ) {\r\n\r\n\t\t\ttexture.repeat.fromArray( transform.scale );\r\n\r\n\t\t}\r\n\r\n\t\tif ( transform.texCoord !== undefined ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV sets in \"' + this.name + '\" extension not yet supported.' );\r\n\r\n\t\t}\r\n\r\n\t\ttexture.needsUpdate = true;\r\n\r\n\t\treturn texture;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specular-Glossiness Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_materials_pbrSpecularGlossiness\r\n\t */\r\n\r\n\t/**\r\n\t * A sub class of StandardMaterial with some of the functionality\r\n\t * changed via the `onBeforeCompile` callback\r\n\t * @pailhead\r\n\t */\r\n\r\n\tfunction GLTFMeshStandardSGMaterial( params ) {\r\n\r\n\t\tMeshStandardMaterial.call( this );\r\n\r\n\t\tthis.isGLTFSpecularGlossinessMaterial = true;\r\n\r\n\t\t//various chunks that need replacing\r\n\t\tvar specularMapParsFragmentChunk = [\r\n\t\t\t'#ifdef USE_SPECULARMAP',\r\n\t\t\t'\tuniform sampler2D specularMap;',\r\n\t\t\t'#endif'\r\n\t\t].join( '\\n' );\r\n\r\n\t\tvar glossinessMapParsFragmentChunk = [\r\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\r\n\t\t\t'\tuniform sampler2D glossinessMap;',\r\n\t\t\t'#endif'\r\n\t\t].join( '\\n' );\r\n\r\n\t\tvar specularMapFragmentChunk = [\r\n\t\t\t'vec3 specularFactor = specular;',\r\n\t\t\t'#ifdef USE_SPECULARMAP',\r\n\t\t\t'\tvec4 texelSpecular = texture2D( specularMap, vUv );',\r\n\t\t\t'\ttexelSpecular = sRGBToLinear( texelSpecular );',\r\n\t\t\t'\t// reads channel RGB, compatible with a glTF Specular-Glossiness (RGBA) texture',\r\n\t\t\t'\tspecularFactor *= texelSpecular.rgb;',\r\n\t\t\t'#endif'\r\n\t\t].join( '\\n' );\r\n\r\n\t\tvar glossinessMapFragmentChunk = [\r\n\t\t\t'float glossinessFactor = glossiness;',\r\n\t\t\t'#ifdef USE_GLOSSINESSMAP',\r\n\t\t\t'\tvec4 texelGlossiness = texture2D( glossinessMap, vUv );',\r\n\t\t\t'\t// reads channel A, compatible with a glTF Specular-Glossiness (RGBA) texture',\r\n\t\t\t'\tglossinessFactor *= texelGlossiness.a;',\r\n\t\t\t'#endif'\r\n\t\t].join( '\\n' );\r\n\r\n\t\tvar lightPhysicalFragmentChunk = [\r\n\t\t\t'PhysicalMaterial material;',\r\n\t\t\t'material.diffuseColor = diffuseColor.rgb * ( 1. - max( specularFactor.r, max( specularFactor.g, specularFactor.b ) ) );',\r\n\t\t\t'vec3 dxy = max( abs( dFdx( geometryNormal ) ), abs( dFdy( geometryNormal ) ) );',\r\n\t\t\t'float geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );',\r\n\t\t\t'material.specularRoughness = max( 1.0 - glossinessFactor, 0.0525 ); // 0.0525 corresponds to the base mip of a 256 cubemap.',\r\n\t\t\t'material.specularRoughness += geometryRoughness;',\r\n\t\t\t'material.specularRoughness = min( material.specularRoughness, 1.0 );',\r\n\t\t\t'material.specularColor = specularFactor;',\r\n\t\t].join( '\\n' );\r\n\r\n\t\tvar uniforms = {\r\n\t\t\tspecular: { value: new Color().setHex( 0xffffff ) },\r\n\t\t\tglossiness: { value: 1 },\r\n\t\t\tspecularMap: { value: null },\r\n\t\t\tglossinessMap: { value: null }\r\n\t\t};\r\n\r\n\t\tthis._extraUniforms = uniforms;\r\n\r\n\t\tthis.onBeforeCompile = function ( shader ) {\r\n\r\n\t\t\tfor ( var uniformName in uniforms ) {\r\n\r\n\t\t\t\tshader.uniforms[ uniformName ] = uniforms[ uniformName ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tshader.fragmentShader = shader.fragmentShader\r\n\t\t\t\t.replace( 'uniform float roughness;', 'uniform vec3 specular;' )\r\n\t\t\t\t.replace( 'uniform float metalness;', 'uniform float glossiness;' )\r\n\t\t\t\t.replace( '#include ', specularMapParsFragmentChunk )\r\n\t\t\t\t.replace( '#include ', glossinessMapParsFragmentChunk )\r\n\t\t\t\t.replace( '#include ', specularMapFragmentChunk )\r\n\t\t\t\t.replace( '#include ', glossinessMapFragmentChunk )\r\n\t\t\t\t.replace( '#include ', lightPhysicalFragmentChunk );\r\n\r\n\t\t};\r\n\r\n\t\tObject.defineProperties( this, {\r\n\r\n\t\t\tspecular: {\r\n\t\t\t\tget: function () {\r\n\r\n\t\t\t\t\treturn uniforms.specular.value;\r\n\r\n\t\t\t\t},\r\n\t\t\t\tset: function ( v ) {\r\n\r\n\t\t\t\t\tuniforms.specular.value = v;\r\n\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tspecularMap: {\r\n\t\t\t\tget: function () {\r\n\r\n\t\t\t\t\treturn uniforms.specularMap.value;\r\n\r\n\t\t\t\t},\r\n\t\t\t\tset: function ( v ) {\r\n\r\n\t\t\t\t\tuniforms.specularMap.value = v;\r\n\r\n\t\t\t\t\tif ( v ) {\r\n\r\n\t\t\t\t\t\tthis.defines.USE_SPECULARMAP = ''; // USE_UV is set by the renderer for specular maps\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tdelete this.defines.USE_SPECULARMAP;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tglossiness: {\r\n\t\t\t\tget: function () {\r\n\r\n\t\t\t\t\treturn uniforms.glossiness.value;\r\n\r\n\t\t\t\t},\r\n\t\t\t\tset: function ( v ) {\r\n\r\n\t\t\t\t\tuniforms.glossiness.value = v;\r\n\r\n\t\t\t\t}\r\n\t\t\t},\r\n\r\n\t\t\tglossinessMap: {\r\n\t\t\t\tget: function () {\r\n\r\n\t\t\t\t\treturn uniforms.glossinessMap.value;\r\n\r\n\t\t\t\t},\r\n\t\t\t\tset: function ( v ) {\r\n\r\n\t\t\t\t\tuniforms.glossinessMap.value = v;\r\n\r\n\t\t\t\t\tif ( v ) {\r\n\r\n\t\t\t\t\t\tthis.defines.USE_GLOSSINESSMAP = '';\r\n\t\t\t\t\t\tthis.defines.USE_UV = '';\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tdelete this.defines.USE_GLOSSINESSMAP;\r\n\t\t\t\t\t\tdelete this.defines.USE_UV;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\r\n\t\tdelete this.metalness;\r\n\t\tdelete this.roughness;\r\n\t\tdelete this.metalnessMap;\r\n\t\tdelete this.roughnessMap;\r\n\r\n\t\tthis.setValues( params );\r\n\r\n\t}\r\n\r\n\tGLTFMeshStandardSGMaterial.prototype = Object.create( MeshStandardMaterial.prototype );\r\n\tGLTFMeshStandardSGMaterial.prototype.constructor = GLTFMeshStandardSGMaterial;\r\n\r\n\tGLTFMeshStandardSGMaterial.prototype.copy = function ( source ) {\r\n\r\n\t\tMeshStandardMaterial.prototype.copy.call( this, source );\r\n\t\tthis.specularMap = source.specularMap;\r\n\t\tthis.specular.copy( source.specular );\r\n\t\tthis.glossinessMap = source.glossinessMap;\r\n\t\tthis.glossiness = source.glossiness;\r\n\t\tdelete this.metalness;\r\n\t\tdelete this.roughness;\r\n\t\tdelete this.metalnessMap;\r\n\t\tdelete this.roughnessMap;\r\n\t\treturn this;\r\n\r\n\t};\r\n\r\n\tfunction GLTFMaterialsPbrSpecularGlossinessExtension() {\r\n\r\n\t\treturn {\r\n\r\n\t\t\tname: EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS,\r\n\r\n\t\t\tspecularGlossinessParams: [\r\n\t\t\t\t'color',\r\n\t\t\t\t'map',\r\n\t\t\t\t'lightMap',\r\n\t\t\t\t'lightMapIntensity',\r\n\t\t\t\t'aoMap',\r\n\t\t\t\t'aoMapIntensity',\r\n\t\t\t\t'emissive',\r\n\t\t\t\t'emissiveIntensity',\r\n\t\t\t\t'emissiveMap',\r\n\t\t\t\t'bumpMap',\r\n\t\t\t\t'bumpScale',\r\n\t\t\t\t'normalMap',\r\n\t\t\t\t'normalMapType',\r\n\t\t\t\t'displacementMap',\r\n\t\t\t\t'displacementScale',\r\n\t\t\t\t'displacementBias',\r\n\t\t\t\t'specularMap',\r\n\t\t\t\t'specular',\r\n\t\t\t\t'glossinessMap',\r\n\t\t\t\t'glossiness',\r\n\t\t\t\t'alphaMap',\r\n\t\t\t\t'envMap',\r\n\t\t\t\t'envMapIntensity',\r\n\t\t\t\t'refractionRatio',\r\n\t\t\t],\r\n\r\n\t\t\tgetMaterialType: function () {\r\n\r\n\t\t\t\treturn GLTFMeshStandardSGMaterial;\r\n\r\n\t\t\t},\r\n\r\n\t\t\textendParams: function ( materialParams, materialDef, parser ) {\r\n\r\n\t\t\t\tvar pbrSpecularGlossiness = materialDef.extensions[ this.name ];\r\n\r\n\t\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\r\n\t\t\t\tmaterialParams.opacity = 1.0;\r\n\r\n\t\t\t\tvar pending = [];\r\n\r\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.diffuseFactor ) ) {\r\n\r\n\t\t\t\t\tvar array = pbrSpecularGlossiness.diffuseFactor;\r\n\r\n\t\t\t\t\tmaterialParams.color.fromArray( array );\r\n\t\t\t\t\tmaterialParams.opacity = array[ 3 ];\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( pbrSpecularGlossiness.diffuseTexture !== undefined ) {\r\n\r\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', pbrSpecularGlossiness.diffuseTexture ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmaterialParams.emissive = new Color( 0.0, 0.0, 0.0 );\r\n\t\t\t\tmaterialParams.glossiness = pbrSpecularGlossiness.glossinessFactor !== undefined ? pbrSpecularGlossiness.glossinessFactor : 1.0;\r\n\t\t\t\tmaterialParams.specular = new Color( 1.0, 1.0, 1.0 );\r\n\r\n\t\t\t\tif ( Array.isArray( pbrSpecularGlossiness.specularFactor ) ) {\r\n\r\n\t\t\t\t\tmaterialParams.specular.fromArray( pbrSpecularGlossiness.specularFactor );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( pbrSpecularGlossiness.specularGlossinessTexture !== undefined ) {\r\n\r\n\t\t\t\t\tvar specGlossMapDef = pbrSpecularGlossiness.specularGlossinessTexture;\r\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'glossinessMap', specGlossMapDef ) );\r\n\t\t\t\t\tpending.push( parser.assignTexture( materialParams, 'specularMap', specGlossMapDef ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn Promise.all( pending );\r\n\r\n\t\t\t},\r\n\r\n\t\t\tcreateMaterial: function ( materialParams ) {\r\n\r\n\t\t\t\tvar material = new GLTFMeshStandardSGMaterial( materialParams );\r\n\t\t\t\tmaterial.fog = true;\r\n\r\n\t\t\t\tmaterial.color = materialParams.color;\r\n\r\n\t\t\t\tmaterial.map = materialParams.map === undefined ? null : materialParams.map;\r\n\r\n\t\t\t\tmaterial.lightMap = null;\r\n\t\t\t\tmaterial.lightMapIntensity = 1.0;\r\n\r\n\t\t\t\tmaterial.aoMap = materialParams.aoMap === undefined ? null : materialParams.aoMap;\r\n\t\t\t\tmaterial.aoMapIntensity = 1.0;\r\n\r\n\t\t\t\tmaterial.emissive = materialParams.emissive;\r\n\t\t\t\tmaterial.emissiveIntensity = 1.0;\r\n\t\t\t\tmaterial.emissiveMap = materialParams.emissiveMap === undefined ? null : materialParams.emissiveMap;\r\n\r\n\t\t\t\tmaterial.bumpMap = materialParams.bumpMap === undefined ? null : materialParams.bumpMap;\r\n\t\t\t\tmaterial.bumpScale = 1;\r\n\r\n\t\t\t\tmaterial.normalMap = materialParams.normalMap === undefined ? null : materialParams.normalMap;\r\n\t\t\t\tmaterial.normalMapType = TangentSpaceNormalMap;\r\n\r\n\t\t\t\tif ( materialParams.normalScale ) material.normalScale = materialParams.normalScale;\r\n\r\n\t\t\t\tmaterial.displacementMap = null;\r\n\t\t\t\tmaterial.displacementScale = 1;\r\n\t\t\t\tmaterial.displacementBias = 0;\r\n\r\n\t\t\t\tmaterial.specularMap = materialParams.specularMap === undefined ? null : materialParams.specularMap;\r\n\t\t\t\tmaterial.specular = materialParams.specular;\r\n\r\n\t\t\t\tmaterial.glossinessMap = materialParams.glossinessMap === undefined ? null : materialParams.glossinessMap;\r\n\t\t\t\tmaterial.glossiness = materialParams.glossiness;\r\n\r\n\t\t\t\tmaterial.alphaMap = null;\r\n\r\n\t\t\t\tmaterial.envMap = materialParams.envMap === undefined ? null : materialParams.envMap;\r\n\t\t\t\tmaterial.envMapIntensity = 1.0;\r\n\r\n\t\t\t\tmaterial.refractionRatio = 0.98;\r\n\r\n\t\t\t\treturn material;\r\n\r\n\t\t\t},\r\n\r\n\t\t};\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Mesh Quantization Extension\r\n\t *\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/extensions/2.0/Khronos/KHR_mesh_quantization\r\n\t */\r\n\tfunction GLTFMeshQuantizationExtension() {\r\n\r\n\t\tthis.name = EXTENSIONS.KHR_MESH_QUANTIZATION;\r\n\r\n\t}\r\n\r\n\t/*********************************/\r\n\t/********** INTERPOLATION ********/\r\n\t/*********************************/\r\n\r\n\t// Spline Interpolation\r\n\t// Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#appendix-c-spline-interpolation\r\n\tfunction GLTFCubicSplineInterpolant( parameterPositions, sampleValues, sampleSize, resultBuffer ) {\r\n\r\n\t\tInterpolant.call( this, parameterPositions, sampleValues, sampleSize, resultBuffer );\r\n\r\n\t}\r\n\r\n\tGLTFCubicSplineInterpolant.prototype = Object.create( Interpolant.prototype );\r\n\tGLTFCubicSplineInterpolant.prototype.constructor = GLTFCubicSplineInterpolant;\r\n\r\n\tGLTFCubicSplineInterpolant.prototype.copySampleValue_ = function ( index ) {\r\n\r\n\t\t// Copies a sample value to the result buffer. See description of glTF\r\n\t\t// CUBICSPLINE values layout in interpolate_() function below.\r\n\r\n\t\tvar result = this.resultBuffer,\r\n\t\t\tvalues = this.sampleValues,\r\n\t\t\tvalueSize = this.valueSize,\r\n\t\t\toffset = index * valueSize * 3 + valueSize;\r\n\r\n\t\tfor ( var i = 0; i !== valueSize; i ++ ) {\r\n\r\n\t\t\tresult[ i ] = values[ offset + i ];\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t};\r\n\r\n\tGLTFCubicSplineInterpolant.prototype.beforeStart_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\r\n\r\n\tGLTFCubicSplineInterpolant.prototype.afterEnd_ = GLTFCubicSplineInterpolant.prototype.copySampleValue_;\r\n\r\n\tGLTFCubicSplineInterpolant.prototype.interpolate_ = function ( i1, t0, t, t1 ) {\r\n\r\n\t\tvar result = this.resultBuffer;\r\n\t\tvar values = this.sampleValues;\r\n\t\tvar stride = this.valueSize;\r\n\r\n\t\tvar stride2 = stride * 2;\r\n\t\tvar stride3 = stride * 3;\r\n\r\n\t\tvar td = t1 - t0;\r\n\r\n\t\tvar p = ( t - t0 ) / td;\r\n\t\tvar pp = p * p;\r\n\t\tvar ppp = pp * p;\r\n\r\n\t\tvar offset1 = i1 * stride3;\r\n\t\tvar offset0 = offset1 - stride3;\r\n\r\n\t\tvar s2 = - 2 * ppp + 3 * pp;\r\n\t\tvar s3 = ppp - pp;\r\n\t\tvar s0 = 1 - s2;\r\n\t\tvar s1 = s3 - pp + p;\r\n\r\n\t\t// Layout of keyframe output values for CUBICSPLINE animations:\r\n\t\t// [ inTangent_1, splineVertex_1, outTangent_1, inTangent_2, splineVertex_2, ... ]\r\n\t\tfor ( var i = 0; i !== stride; i ++ ) {\r\n\r\n\t\t\tvar p0 = values[ offset0 + i + stride ]; // splineVertex_k\r\n\t\t\tvar m0 = values[ offset0 + i + stride2 ] * td; // outTangent_k * (t_k+1 - t_k)\r\n\t\t\tvar p1 = values[ offset1 + i + stride ]; // splineVertex_k+1\r\n\t\t\tvar m1 = values[ offset1 + i ] * td; // inTangent_k+1 * (t_k+1 - t_k)\r\n\r\n\t\t\tresult[ i ] = s0 * p0 + s1 * m0 + s2 * p1 + s3 * m1;\r\n\r\n\t\t}\r\n\r\n\t\treturn result;\r\n\r\n\t};\r\n\r\n\t/*********************************/\r\n\t/********** INTERNALS ************/\r\n\t/*********************************/\r\n\r\n\t/* CONSTANTS */\r\n\r\n\tvar WEBGL_CONSTANTS = {\r\n\t\tFLOAT: 5126,\r\n\t\t//FLOAT_MAT2: 35674,\r\n\t\tFLOAT_MAT3: 35675,\r\n\t\tFLOAT_MAT4: 35676,\r\n\t\tFLOAT_VEC2: 35664,\r\n\t\tFLOAT_VEC3: 35665,\r\n\t\tFLOAT_VEC4: 35666,\r\n\t\tLINEAR: 9729,\r\n\t\tREPEAT: 10497,\r\n\t\tSAMPLER_2D: 35678,\r\n\t\tPOINTS: 0,\r\n\t\tLINES: 1,\r\n\t\tLINE_LOOP: 2,\r\n\t\tLINE_STRIP: 3,\r\n\t\tTRIANGLES: 4,\r\n\t\tTRIANGLE_STRIP: 5,\r\n\t\tTRIANGLE_FAN: 6,\r\n\t\tUNSIGNED_BYTE: 5121,\r\n\t\tUNSIGNED_SHORT: 5123\r\n\t};\r\n\r\n\tvar WEBGL_COMPONENT_TYPES = {\r\n\t\t5120: Int8Array,\r\n\t\t5121: Uint8Array,\r\n\t\t5122: Int16Array,\r\n\t\t5123: Uint16Array,\r\n\t\t5125: Uint32Array,\r\n\t\t5126: Float32Array\r\n\t};\r\n\r\n\tvar WEBGL_FILTERS = {\r\n\t\t9728: NearestFilter,\r\n\t\t9729: LinearFilter,\r\n\t\t9984: NearestMipmapNearestFilter,\r\n\t\t9985: LinearMipmapNearestFilter,\r\n\t\t9986: NearestMipmapLinearFilter,\r\n\t\t9987: LinearMipmapLinearFilter\r\n\t};\r\n\r\n\tvar WEBGL_WRAPPINGS = {\r\n\t\t33071: ClampToEdgeWrapping,\r\n\t\t33648: MirroredRepeatWrapping,\r\n\t\t10497: RepeatWrapping\r\n\t};\r\n\r\n\tvar WEBGL_TYPE_SIZES = {\r\n\t\t'SCALAR': 1,\r\n\t\t'VEC2': 2,\r\n\t\t'VEC3': 3,\r\n\t\t'VEC4': 4,\r\n\t\t'MAT2': 4,\r\n\t\t'MAT3': 9,\r\n\t\t'MAT4': 16\r\n\t};\r\n\r\n\tvar ATTRIBUTES = {\r\n\t\tPOSITION: 'position',\r\n\t\tNORMAL: 'normal',\r\n\t\tTANGENT: 'tangent',\r\n\t\tTEXCOORD_0: 'uv',\r\n\t\tTEXCOORD_1: 'uv2',\r\n\t\tCOLOR_0: 'color',\r\n\t\tWEIGHTS_0: 'skinWeight',\r\n\t\tJOINTS_0: 'skinIndex',\r\n\t};\r\n\r\n\tvar PATH_PROPERTIES = {\r\n\t\tscale: 'scale',\r\n\t\ttranslation: 'position',\r\n\t\trotation: 'quaternion',\r\n\t\tweights: 'morphTargetInfluences'\r\n\t};\r\n\r\n\tvar INTERPOLATION = {\r\n\t\tCUBICSPLINE: undefined, // We use a custom interpolant (GLTFCubicSplineInterpolation) for CUBICSPLINE tracks. Each\r\n\t\t // keyframe track will be initialized with a default interpolation type, then modified.\r\n\t\tLINEAR: InterpolateLinear,\r\n\t\tSTEP: InterpolateDiscrete\r\n\t};\r\n\r\n\tvar ALPHA_MODES = {\r\n\t\tOPAQUE: 'OPAQUE',\r\n\t\tMASK: 'MASK',\r\n\t\tBLEND: 'BLEND'\r\n\t};\r\n\r\n\t/* UTILITY FUNCTIONS */\r\n\r\n\tfunction resolveURL( url, path ) {\r\n\r\n\t\t// Invalid URL\r\n\t\tif ( typeof url !== 'string' || url === '' ) return '';\r\n\r\n\t\t// Host Relative URL\r\n\t\tif ( /^https?:\\/\\//i.test( path ) && /^\\//.test( url ) ) {\r\n\r\n\t\t\tpath = path.replace( /(^https?:\\/\\/[^\\/]+).*/i, '$1' );\r\n\r\n\t\t}\r\n\r\n\t\t// Absolute URL http://,https://,//\r\n\t\tif ( /^(https?:)?\\/\\//i.test( url ) ) return url;\r\n\r\n\t\t// Data URI\r\n\t\tif ( /^data:.*,.*$/i.test( url ) ) return url;\r\n\r\n\t\t// Blob URL\r\n\t\tif ( /^blob:.*$/i.test( url ) ) return url;\r\n\r\n\t\t// Relative URL\r\n\t\treturn path + url;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#default-material\r\n\t */\r\n\tfunction createDefaultMaterial( cache ) {\r\n\r\n\t\tif ( cache[ 'DefaultMaterial' ] === undefined ) {\r\n\r\n\t\t\tcache[ 'DefaultMaterial' ] = new MeshStandardMaterial( {\r\n\t\t\t\tcolor: 0xFFFFFF,\r\n\t\t\t\temissive: 0x000000,\r\n\t\t\t\tmetalness: 1,\r\n\t\t\t\troughness: 1,\r\n\t\t\t\ttransparent: false,\r\n\t\t\t\tdepthTest: true,\r\n\t\t\t\tside: FrontSide\r\n\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t\treturn cache[ 'DefaultMaterial' ];\r\n\r\n\t}\r\n\r\n\tfunction addUnknownExtensionsToUserData( knownExtensions, object, objectDef ) {\r\n\r\n\t\t// Add unknown glTF extensions to an object's userData.\r\n\r\n\t\tfor ( var name in objectDef.extensions ) {\r\n\r\n\t\t\tif ( knownExtensions[ name ] === undefined ) {\r\n\r\n\t\t\t\tobject.userData.gltfExtensions = object.userData.gltfExtensions || {};\r\n\t\t\t\tobject.userData.gltfExtensions[ name ] = objectDef.extensions[ name ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @param {Object3D|Material|BufferGeometry} object\r\n\t * @param {GLTF.definition} gltfDef\r\n\t */\r\n\tfunction assignExtrasToUserData( object, gltfDef ) {\r\n\r\n\t\tif ( gltfDef.extras !== undefined ) {\r\n\r\n\t\t\tif ( typeof gltfDef.extras === 'object' ) {\r\n\r\n\t\t\t\tObject.assign( object.userData, gltfDef.extras );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Ignoring primitive type .extras, ' + gltfDef.extras );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#morph-targets\r\n\t *\r\n\t * @param {BufferGeometry} geometry\r\n\t * @param {Array} targets\r\n\t * @param {GLTFParser} parser\r\n\t * @return {Promise}\r\n\t */\r\n\tfunction addMorphTargets( geometry, targets, parser ) {\r\n\r\n\t\tvar hasMorphPosition = false;\r\n\t\tvar hasMorphNormal = false;\r\n\r\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\r\n\r\n\t\t\tvar target = targets[ i ];\r\n\r\n\t\t\tif ( target.POSITION !== undefined ) hasMorphPosition = true;\r\n\t\t\tif ( target.NORMAL !== undefined ) hasMorphNormal = true;\r\n\r\n\t\t\tif ( hasMorphPosition && hasMorphNormal ) break;\r\n\r\n\t\t}\r\n\r\n\t\tif ( ! hasMorphPosition && ! hasMorphNormal ) return Promise.resolve( geometry );\r\n\r\n\t\tvar pendingPositionAccessors = [];\r\n\t\tvar pendingNormalAccessors = [];\r\n\r\n\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\r\n\r\n\t\t\tvar target = targets[ i ];\r\n\r\n\t\t\tif ( hasMorphPosition ) {\r\n\r\n\t\t\t\tvar pendingAccessor = target.POSITION !== undefined\r\n\t\t\t\t\t? parser.getDependency( 'accessor', target.POSITION )\r\n\t\t\t\t\t: geometry.attributes.position;\r\n\r\n\t\t\t\tpendingPositionAccessors.push( pendingAccessor );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( hasMorphNormal ) {\r\n\r\n\t\t\t\tvar pendingAccessor = target.NORMAL !== undefined\r\n\t\t\t\t\t? parser.getDependency( 'accessor', target.NORMAL )\r\n\t\t\t\t\t: geometry.attributes.normal;\r\n\r\n\t\t\t\tpendingNormalAccessors.push( pendingAccessor );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn Promise.all( [\r\n\t\t\tPromise.all( pendingPositionAccessors ),\r\n\t\t\tPromise.all( pendingNormalAccessors )\r\n\t\t] ).then( function ( accessors ) {\r\n\r\n\t\t\tvar morphPositions = accessors[ 0 ];\r\n\t\t\tvar morphNormals = accessors[ 1 ];\r\n\r\n\t\t\tif ( hasMorphPosition ) geometry.morphAttributes.position = morphPositions;\r\n\t\t\tif ( hasMorphNormal ) geometry.morphAttributes.normal = morphNormals;\r\n\t\t\tgeometry.morphTargetsRelative = true;\r\n\r\n\t\t\treturn geometry;\r\n\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @param {Mesh} mesh\r\n\t * @param {GLTF.Mesh} meshDef\r\n\t */\r\n\tfunction updateMorphTargets( mesh, meshDef ) {\r\n\r\n\t\tmesh.updateMorphTargets();\r\n\r\n\t\tif ( meshDef.weights !== undefined ) {\r\n\r\n\t\t\tfor ( var i = 0, il = meshDef.weights.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tmesh.morphTargetInfluences[ i ] = meshDef.weights[ i ];\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// .extras has user-defined data, so check that .extras.targetNames is an array.\r\n\t\tif ( meshDef.extras && Array.isArray( meshDef.extras.targetNames ) ) {\r\n\r\n\t\t\tvar targetNames = meshDef.extras.targetNames;\r\n\r\n\t\t\tif ( mesh.morphTargetInfluences.length === targetNames.length ) {\r\n\r\n\t\t\t\tmesh.morphTargetDictionary = {};\r\n\r\n\t\t\t\tfor ( var i = 0, il = targetNames.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tmesh.morphTargetDictionary[ targetNames[ i ] ] = i;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Invalid extras.targetNames length. Ignoring names.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tfunction createPrimitiveKey( primitiveDef ) {\r\n\r\n\t\tvar dracoExtension = primitiveDef.extensions && primitiveDef.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ];\r\n\t\tvar geometryKey;\r\n\r\n\t\tif ( dracoExtension ) {\r\n\r\n\t\t\tgeometryKey = 'draco:' + dracoExtension.bufferView\r\n\t\t\t\t+ ':' + dracoExtension.indices\r\n\t\t\t\t+ ':' + createAttributesKey( dracoExtension.attributes );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tgeometryKey = primitiveDef.indices + ':' + createAttributesKey( primitiveDef.attributes ) + ':' + primitiveDef.mode;\r\n\r\n\t\t}\r\n\r\n\t\treturn geometryKey;\r\n\r\n\t}\r\n\r\n\tfunction createAttributesKey( attributes ) {\r\n\r\n\t\tvar attributesKey = '';\r\n\r\n\t\tvar keys = Object.keys( attributes ).sort();\r\n\r\n\t\tfor ( var i = 0, il = keys.length; i < il; i ++ ) {\r\n\r\n\t\t\tattributesKey += keys[ i ] + ':' + attributes[ keys[ i ] ] + ';';\r\n\r\n\t\t}\r\n\r\n\t\treturn attributesKey;\r\n\r\n\t}\r\n\r\n\t/* GLTF PARSER */\r\n\r\n\tfunction GLTFParser( json, options ) {\r\n\r\n\t\tthis.json = json || {};\r\n\t\tthis.extensions = {};\r\n\t\tthis.plugins = {};\r\n\t\tthis.options = options || {};\r\n\r\n\t\t// loader object cache\r\n\t\tthis.cache = new GLTFRegistry();\r\n\r\n\t\t// associations between Three.js objects and glTF elements\r\n\t\tthis.associations = new Map();\r\n\r\n\t\t// BufferGeometry caching\r\n\t\tthis.primitiveCache = {};\r\n\r\n\t\t// Object3D instance caches\r\n\t\tthis.meshCache = { refs: {}, uses: {} };\r\n\t\tthis.cameraCache = { refs: {}, uses: {} };\r\n\t\tthis.lightCache = { refs: {}, uses: {} };\r\n\r\n\t\t// Track node names, to ensure no duplicates\r\n\t\tthis.nodeNamesUsed = {};\r\n\r\n\t\t// Use an ImageBitmapLoader if imageBitmaps are supported. Moves much of the\r\n\t\t// expensive work of uploading a texture to the GPU off the main thread.\r\n\t\tif ( typeof createImageBitmap !== 'undefined' && /Firefox/.test( navigator.userAgent ) === false ) {\r\n\r\n\t\t\tthis.textureLoader = new ImageBitmapLoader( this.options.manager );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tthis.textureLoader = new TextureLoader( this.options.manager );\r\n\r\n\t\t}\r\n\r\n\t\tthis.textureLoader.setCrossOrigin( this.options.crossOrigin );\r\n\r\n\t\tthis.fileLoader = new FileLoader( this.options.manager );\r\n\t\tthis.fileLoader.setResponseType( 'arraybuffer' );\r\n\r\n\t\tif ( this.options.crossOrigin === 'use-credentials' ) {\r\n\r\n\t\t\tthis.fileLoader.setWithCredentials( true );\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tGLTFParser.prototype.setExtensions = function ( extensions ) {\r\n\r\n\t\tthis.extensions = extensions;\r\n\r\n\t};\r\n\r\n\tGLTFParser.prototype.setPlugins = function ( plugins ) {\r\n\r\n\t\tthis.plugins = plugins;\r\n\r\n\t};\r\n\r\n\tGLTFParser.prototype.parse = function ( onLoad, onError ) {\r\n\r\n\t\tvar parser = this;\r\n\t\tvar json = this.json;\r\n\t\tvar extensions = this.extensions;\r\n\r\n\t\t// Clear the loader cache\r\n\t\tthis.cache.removeAll();\r\n\r\n\t\t// Mark the special nodes/meshes in json for efficient parse\r\n\t\tthis._invokeAll( function ( ext ) {\r\n\r\n\t\t\treturn ext._markDefs && ext._markDefs();\r\n\r\n\t\t} );\r\n\r\n\t\tPromise.all( [\r\n\r\n\t\t\tthis.getDependencies( 'scene' ),\r\n\t\t\tthis.getDependencies( 'animation' ),\r\n\t\t\tthis.getDependencies( 'camera' ),\r\n\r\n\t\t] ).then( function ( dependencies ) {\r\n\r\n\t\t\tvar result = {\r\n\t\t\t\tscene: dependencies[ 0 ][ json.scene || 0 ],\r\n\t\t\t\tscenes: dependencies[ 0 ],\r\n\t\t\t\tanimations: dependencies[ 1 ],\r\n\t\t\t\tcameras: dependencies[ 2 ],\r\n\t\t\t\tasset: json.asset,\r\n\t\t\t\tparser: parser,\r\n\t\t\t\tuserData: {}\r\n\t\t\t};\r\n\r\n\t\t\taddUnknownExtensionsToUserData( extensions, result, json );\r\n\r\n\t\t\tassignExtrasToUserData( result, json );\r\n\r\n\t\t\tonLoad( result );\r\n\r\n\t\t} ).catch( onError );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Marks the special nodes/meshes in json for efficient parse.\r\n\t */\r\n\tGLTFParser.prototype._markDefs = function () {\r\n\r\n\t\tvar nodeDefs = this.json.nodes || [];\r\n\t\tvar skinDefs = this.json.skins || [];\r\n\t\tvar meshDefs = this.json.meshes || [];\r\n\r\n\t\t// Nothing in the node definition indicates whether it is a Bone or an\r\n\t\t// Object3D. Use the skins' joint references to mark bones.\r\n\t\tfor ( var skinIndex = 0, skinLength = skinDefs.length; skinIndex < skinLength; skinIndex ++ ) {\r\n\r\n\t\t\tvar joints = skinDefs[ skinIndex ].joints;\r\n\r\n\t\t\tfor ( var i = 0, il = joints.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tnodeDefs[ joints[ i ] ].isBone = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Iterate over all nodes, marking references to shared resources,\r\n\t\t// as well as skeleton joints.\r\n\t\tfor ( var nodeIndex = 0, nodeLength = nodeDefs.length; nodeIndex < nodeLength; nodeIndex ++ ) {\r\n\r\n\t\t\tvar nodeDef = nodeDefs[ nodeIndex ];\r\n\r\n\t\t\tif ( nodeDef.mesh !== undefined ) {\r\n\r\n\t\t\t\tthis._addNodeRef( this.meshCache, nodeDef.mesh );\r\n\r\n\t\t\t\t// Nothing in the mesh definition indicates whether it is\r\n\t\t\t\t// a SkinnedMesh or Mesh. Use the node's mesh reference\r\n\t\t\t\t// to mark SkinnedMesh if node has skin.\r\n\t\t\t\tif ( nodeDef.skin !== undefined ) {\r\n\r\n\t\t\t\t\tmeshDefs[ nodeDef.mesh ].isSkinnedMesh = true;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( nodeDef.camera !== undefined ) {\r\n\r\n\t\t\t\tthis._addNodeRef( this.cameraCache, nodeDef.camera );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Counts references to shared node / Object3D resources. These resources\r\n\t * can be reused, or \"instantiated\", at multiple nodes in the scene\r\n\t * hierarchy. Mesh, Camera, and Light instances are instantiated and must\r\n\t * be marked. Non-scenegraph resources (like Materials, Geometries, and\r\n\t * Textures) can be reused directly and are not marked here.\r\n\t *\r\n\t * Example: CesiumMilkTruck sample model reuses \"Wheel\" meshes.\r\n\t */\r\n\tGLTFParser.prototype._addNodeRef = function ( cache, index ) {\r\n\r\n\t\tif ( index === undefined ) return;\r\n\r\n\t\tif ( cache.refs[ index ] === undefined ) {\r\n\r\n\t\t\tcache.refs[ index ] = cache.uses[ index ] = 0;\r\n\r\n\t\t}\r\n\r\n\t\tcache.refs[ index ] ++;\r\n\r\n\t};\r\n\r\n\t/** Returns a reference to a shared resource, cloning it if necessary. */\r\n\tGLTFParser.prototype._getNodeRef = function ( cache, index, object ) {\r\n\r\n\t\tif ( cache.refs[ index ] <= 1 ) return object;\r\n\r\n\t\tvar ref = object.clone();\r\n\r\n\t\tref.name += '_instance_' + ( cache.uses[ index ] ++ );\r\n\r\n\t\treturn ref;\r\n\r\n\t};\r\n\r\n\tGLTFParser.prototype._invokeOne = function ( func ) {\r\n\r\n\t\tvar extensions = Object.values( this.plugins );\r\n\t\textensions.push( this );\r\n\r\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\r\n\r\n\t\t\tvar result = func( extensions[ i ] );\r\n\r\n\t\t\tif ( result ) return result;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\tGLTFParser.prototype._invokeAll = function ( func ) {\r\n\r\n\t\tvar extensions = Object.values( this.plugins );\r\n\t\textensions.unshift( this );\r\n\r\n\t\tvar pending = [];\r\n\r\n\t\tfor ( var i = 0; i < extensions.length; i ++ ) {\r\n\r\n\t\t\tvar result = func( extensions[ i ] );\r\n\r\n\t\t\tif ( result ) pending.push( result );\r\n\r\n\t\t}\r\n\r\n\t\treturn pending;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Requests the specified dependency asynchronously, with caching.\r\n\t * @param {string} type\r\n\t * @param {number} index\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.getDependency = function ( type, index ) {\r\n\r\n\t\tvar cacheKey = type + ':' + index;\r\n\t\tvar dependency = this.cache.get( cacheKey );\r\n\r\n\t\tif ( ! dependency ) {\r\n\r\n\t\t\tswitch ( type ) {\r\n\r\n\t\t\t\tcase 'scene':\r\n\t\t\t\t\tdependency = this.loadScene( index );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'node':\r\n\t\t\t\t\tdependency = this.loadNode( index );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'mesh':\r\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\r\n\r\n\t\t\t\t\t\treturn ext.loadMesh && ext.loadMesh( index );\r\n\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'accessor':\r\n\t\t\t\t\tdependency = this.loadAccessor( index );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'bufferView':\r\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\r\n\r\n\t\t\t\t\t\treturn ext.loadBufferView && ext.loadBufferView( index );\r\n\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'buffer':\r\n\t\t\t\t\tdependency = this.loadBuffer( index );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'material':\r\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\r\n\r\n\t\t\t\t\t\treturn ext.loadMaterial && ext.loadMaterial( index );\r\n\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'texture':\r\n\t\t\t\t\tdependency = this._invokeOne( function ( ext ) {\r\n\r\n\t\t\t\t\t\treturn ext.loadTexture && ext.loadTexture( index );\r\n\r\n\t\t\t\t\t} );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'skin':\r\n\t\t\t\t\tdependency = this.loadSkin( index );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'animation':\r\n\t\t\t\t\tdependency = this.loadAnimation( index );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase 'camera':\r\n\t\t\t\t\tdependency = this.loadCamera( index );\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tthrow new Error( 'Unknown type: ' + type );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tthis.cache.add( cacheKey, dependency );\r\n\r\n\t\t}\r\n\r\n\t\treturn dependency;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Requests all dependencies of the specified type asynchronously, with caching.\r\n\t * @param {string} type\r\n\t * @return {Promise>}\r\n\t */\r\n\tGLTFParser.prototype.getDependencies = function ( type ) {\r\n\r\n\t\tvar dependencies = this.cache.get( type );\r\n\r\n\t\tif ( ! dependencies ) {\r\n\r\n\t\t\tvar parser = this;\r\n\t\t\tvar defs = this.json[ type + ( type === 'mesh' ? 'es' : 's' ) ] || [];\r\n\r\n\t\t\tdependencies = Promise.all( defs.map( function ( def, index ) {\r\n\r\n\t\t\t\treturn parser.getDependency( type, index );\r\n\r\n\t\t\t} ) );\r\n\r\n\t\t\tthis.cache.add( type, dependencies );\r\n\r\n\t\t}\r\n\r\n\t\treturn dependencies;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\r\n\t * @param {number} bufferIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadBuffer = function ( bufferIndex ) {\r\n\r\n\t\tvar bufferDef = this.json.buffers[ bufferIndex ];\r\n\t\tvar loader = this.fileLoader;\r\n\r\n\t\tif ( bufferDef.type && bufferDef.type !== 'arraybuffer' ) {\r\n\r\n\t\t\tthrow new Error( 'THREE.GLTFLoader: ' + bufferDef.type + ' buffer type is not supported.' );\r\n\r\n\t\t}\r\n\r\n\t\t// If present, GLB container is required to be the first buffer.\r\n\t\tif ( bufferDef.uri === undefined && bufferIndex === 0 ) {\r\n\r\n\t\t\treturn Promise.resolve( this.extensions[ EXTENSIONS.KHR_BINARY_GLTF ].body );\r\n\r\n\t\t}\r\n\r\n\t\tvar options = this.options;\r\n\r\n\t\treturn new Promise( function ( resolve, reject ) {\r\n\r\n\t\t\tloader.load( resolveURL( bufferDef.uri, options.path ), resolve, undefined, function () {\r\n\r\n\t\t\t\treject( new Error( 'THREE.GLTFLoader: Failed to load buffer \"' + bufferDef.uri + '\".' ) );\r\n\r\n\t\t\t} );\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#buffers-and-buffer-views\r\n\t * @param {number} bufferViewIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadBufferView = function ( bufferViewIndex ) {\r\n\r\n\t\tvar bufferViewDef = this.json.bufferViews[ bufferViewIndex ];\r\n\r\n\t\treturn this.getDependency( 'buffer', bufferViewDef.buffer ).then( function ( buffer ) {\r\n\r\n\t\t\tvar byteLength = bufferViewDef.byteLength || 0;\r\n\t\t\tvar byteOffset = bufferViewDef.byteOffset || 0;\r\n\t\t\treturn buffer.slice( byteOffset, byteOffset + byteLength );\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#accessors\r\n\t * @param {number} accessorIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadAccessor = function ( accessorIndex ) {\r\n\r\n\t\tvar parser = this;\r\n\t\tvar json = this.json;\r\n\r\n\t\tvar accessorDef = this.json.accessors[ accessorIndex ];\r\n\r\n\t\tif ( accessorDef.bufferView === undefined && accessorDef.sparse === undefined ) {\r\n\r\n\t\t\t// Ignore empty accessors, which may be used to declare runtime\r\n\t\t\t// information about attributes coming from another source (e.g. Draco\r\n\t\t\t// compression extension).\r\n\t\t\treturn Promise.resolve( null );\r\n\r\n\t\t}\r\n\r\n\t\tvar pendingBufferViews = [];\r\n\r\n\t\tif ( accessorDef.bufferView !== undefined ) {\r\n\r\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.bufferView ) );\r\n\r\n\t\t} else {\r\n\r\n\t\t\tpendingBufferViews.push( null );\r\n\r\n\t\t}\r\n\r\n\t\tif ( accessorDef.sparse !== undefined ) {\r\n\r\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.indices.bufferView ) );\r\n\t\t\tpendingBufferViews.push( this.getDependency( 'bufferView', accessorDef.sparse.values.bufferView ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn Promise.all( pendingBufferViews ).then( function ( bufferViews ) {\r\n\r\n\t\t\tvar bufferView = bufferViews[ 0 ];\r\n\r\n\t\t\tvar itemSize = WEBGL_TYPE_SIZES[ accessorDef.type ];\r\n\t\t\tvar TypedArray = WEBGL_COMPONENT_TYPES[ accessorDef.componentType ];\r\n\r\n\t\t\t// For VEC3: itemSize is 3, elementBytes is 4, itemBytes is 12.\r\n\t\t\tvar elementBytes = TypedArray.BYTES_PER_ELEMENT;\r\n\t\t\tvar itemBytes = elementBytes * itemSize;\r\n\t\t\tvar byteOffset = accessorDef.byteOffset || 0;\r\n\t\t\tvar byteStride = accessorDef.bufferView !== undefined ? json.bufferViews[ accessorDef.bufferView ].byteStride : undefined;\r\n\t\t\tvar normalized = accessorDef.normalized === true;\r\n\t\t\tvar array, bufferAttribute;\r\n\r\n\t\t\t// The buffer is not interleaved if the stride is the item size in bytes.\r\n\t\t\tif ( byteStride && byteStride !== itemBytes ) {\r\n\r\n\t\t\t\t// Each \"slice\" of the buffer, as defined by 'count' elements of 'byteStride' bytes, gets its own InterleavedBuffer\r\n\t\t\t\t// This makes sure that IBA.count reflects accessor.count properly\r\n\t\t\t\tvar ibSlice = Math.floor( byteOffset / byteStride );\r\n\t\t\t\tvar ibCacheKey = 'InterleavedBuffer:' + accessorDef.bufferView + ':' + accessorDef.componentType + ':' + ibSlice + ':' + accessorDef.count;\r\n\t\t\t\tvar ib = parser.cache.get( ibCacheKey );\r\n\r\n\t\t\t\tif ( ! ib ) {\r\n\r\n\t\t\t\t\tarray = new TypedArray( bufferView, ibSlice * byteStride, accessorDef.count * byteStride / elementBytes );\r\n\r\n\t\t\t\t\t// Integer parameters to IB/IBA are in array elements, not bytes.\r\n\t\t\t\t\tib = new InterleavedBuffer( array, byteStride / elementBytes );\r\n\r\n\t\t\t\t\tparser.cache.add( ibCacheKey, ib );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbufferAttribute = new InterleavedBufferAttribute( ib, itemSize, ( byteOffset % byteStride ) / elementBytes, normalized );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif ( bufferView === null ) {\r\n\r\n\t\t\t\t\tarray = new TypedArray( accessorDef.count * itemSize );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tarray = new TypedArray( bufferView, byteOffset, accessorDef.count * itemSize );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbufferAttribute = new BufferAttribute( array, itemSize, normalized );\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#sparse-accessors\r\n\t\t\tif ( accessorDef.sparse !== undefined ) {\r\n\r\n\t\t\t\tvar itemSizeIndices = WEBGL_TYPE_SIZES.SCALAR;\r\n\t\t\t\tvar TypedArrayIndices = WEBGL_COMPONENT_TYPES[ accessorDef.sparse.indices.componentType ];\r\n\r\n\t\t\t\tvar byteOffsetIndices = accessorDef.sparse.indices.byteOffset || 0;\r\n\t\t\t\tvar byteOffsetValues = accessorDef.sparse.values.byteOffset || 0;\r\n\r\n\t\t\t\tvar sparseIndices = new TypedArrayIndices( bufferViews[ 1 ], byteOffsetIndices, accessorDef.sparse.count * itemSizeIndices );\r\n\t\t\t\tvar sparseValues = new TypedArray( bufferViews[ 2 ], byteOffsetValues, accessorDef.sparse.count * itemSize );\r\n\r\n\t\t\t\tif ( bufferView !== null ) {\r\n\r\n\t\t\t\t\t// Avoid modifying the original ArrayBuffer, if the bufferView wasn't initialized with zeroes.\r\n\t\t\t\t\tbufferAttribute = new BufferAttribute( bufferAttribute.array.slice(), bufferAttribute.itemSize, bufferAttribute.normalized );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor ( var i = 0, il = sparseIndices.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tvar index = sparseIndices[ i ];\r\n\r\n\t\t\t\t\tbufferAttribute.setX( index, sparseValues[ i * itemSize ] );\r\n\t\t\t\t\tif ( itemSize >= 2 ) bufferAttribute.setY( index, sparseValues[ i * itemSize + 1 ] );\r\n\t\t\t\t\tif ( itemSize >= 3 ) bufferAttribute.setZ( index, sparseValues[ i * itemSize + 2 ] );\r\n\t\t\t\t\tif ( itemSize >= 4 ) bufferAttribute.setW( index, sparseValues[ i * itemSize + 3 ] );\r\n\t\t\t\t\tif ( itemSize >= 5 ) throw new Error( 'THREE.GLTFLoader: Unsupported itemSize in sparse BufferAttribute.' );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn bufferAttribute;\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#textures\r\n\t * @param {number} textureIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadTexture = function ( textureIndex ) {\r\n\r\n\t\tvar parser = this;\r\n\t\tvar json = this.json;\r\n\t\tvar options = this.options;\r\n\r\n\t\tvar textureDef = json.textures[ textureIndex ];\r\n\r\n\t\tvar textureExtensions = textureDef.extensions || {};\r\n\r\n\t\tvar source;\r\n\r\n\t\tif ( textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ] ) {\r\n\r\n\t\t\tsource = json.images[ textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].source ];\r\n\r\n\t\t} else {\r\n\r\n\t\t\tsource = json.images[ textureDef.source ];\r\n\r\n\t\t}\r\n\r\n\t\tvar loader;\r\n\r\n\t\tif ( source.uri ) {\r\n\r\n\t\t\tloader = options.manager.getHandler( source.uri );\r\n\r\n\t\t}\r\n\r\n\t\tif ( ! loader ) {\r\n\r\n\t\t\tloader = textureExtensions[ EXTENSIONS.MSFT_TEXTURE_DDS ]\r\n\t\t\t\t? parser.extensions[ EXTENSIONS.MSFT_TEXTURE_DDS ].ddsLoader\r\n\t\t\t\t: this.textureLoader;\r\n\r\n\t\t}\r\n\r\n\t\treturn this.loadTextureImage( textureIndex, source, loader );\r\n\r\n\t};\r\n\r\n\tGLTFParser.prototype.loadTextureImage = function ( textureIndex, source, loader ) {\r\n\r\n\t\tvar parser = this;\r\n\t\tvar json = this.json;\r\n\t\tvar options = this.options;\r\n\r\n\t\tvar textureDef = json.textures[ textureIndex ];\r\n\r\n\t\tvar URL = self.URL || self.webkitURL;\r\n\r\n\t\tvar sourceURI = source.uri;\r\n\t\tvar isObjectURL = false;\r\n\t\tvar hasAlpha = true;\r\n\r\n\t\tif ( source.mimeType === 'image/jpeg' ) hasAlpha = false;\r\n\r\n\t\tif ( source.bufferView !== undefined ) {\r\n\r\n\t\t\t// Load binary image data from bufferView, if provided.\r\n\r\n\t\t\tsourceURI = parser.getDependency( 'bufferView', source.bufferView ).then( function ( bufferView ) {\r\n\r\n\t\t\t\tif ( source.mimeType === 'image/png' ) {\r\n\r\n\t\t\t\t\t// Inspect the PNG 'IHDR' chunk to determine whether the image could have an\r\n\t\t\t\t\t// alpha channel. This check is conservative — the image could have an alpha\r\n\t\t\t\t\t// channel with all values == 1, and the indexed type (colorType == 3) only\r\n\t\t\t\t\t// sometimes contains alpha.\r\n\t\t\t\t\t//\r\n\t\t\t\t\t// https://en.wikipedia.org/wiki/Portable_Network_Graphics#File_header\r\n\t\t\t\t\tvar colorType = new DataView( bufferView, 25, 1 ).getUint8( 0, false );\r\n\t\t\t\t\thasAlpha = colorType === 6 || colorType === 4 || colorType === 3;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tisObjectURL = true;\r\n\t\t\t\tvar blob = new Blob( [ bufferView ], { type: source.mimeType } );\r\n\t\t\t\tsourceURI = URL.createObjectURL( blob );\r\n\t\t\t\treturn sourceURI;\r\n\r\n\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t\treturn Promise.resolve( sourceURI ).then( function ( sourceURI ) {\r\n\r\n\t\t\treturn new Promise( function ( resolve, reject ) {\r\n\r\n\t\t\t\tvar onLoad = resolve;\r\n\r\n\t\t\t\tif ( loader.isImageBitmapLoader === true ) {\r\n\r\n\t\t\t\t\tonLoad = function ( imageBitmap ) {\r\n\r\n\t\t\t\t\t\tresolve( new CanvasTexture( imageBitmap ) );\r\n\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tloader.load( resolveURL( sourceURI, options.path ), onLoad, undefined, reject );\r\n\r\n\t\t\t} );\r\n\r\n\t\t} ).then( function ( texture ) {\r\n\r\n\t\t\t// Clean up resources and configure Texture.\r\n\r\n\t\t\tif ( isObjectURL === true ) {\r\n\r\n\t\t\t\tURL.revokeObjectURL( sourceURI );\r\n\r\n\t\t\t}\r\n\r\n\t\t\ttexture.flipY = false;\r\n\r\n\t\t\tif ( textureDef.name ) texture.name = textureDef.name;\r\n\r\n\t\t\t// When there is definitely no alpha channel in the texture, set RGBFormat to save space.\r\n\t\t\tif ( ! hasAlpha ) texture.format = RGBFormat;\r\n\r\n\t\t\tvar samplers = json.samplers || {};\r\n\t\t\tvar sampler = samplers[ textureDef.sampler ] || {};\r\n\r\n\t\t\ttexture.magFilter = WEBGL_FILTERS[ sampler.magFilter ] || LinearFilter;\r\n\t\t\ttexture.minFilter = WEBGL_FILTERS[ sampler.minFilter ] || LinearMipmapLinearFilter;\r\n\t\t\ttexture.wrapS = WEBGL_WRAPPINGS[ sampler.wrapS ] || RepeatWrapping;\r\n\t\t\ttexture.wrapT = WEBGL_WRAPPINGS[ sampler.wrapT ] || RepeatWrapping;\r\n\r\n\t\t\tparser.associations.set( texture, {\r\n\t\t\t\ttype: 'textures',\r\n\t\t\t\tindex: textureIndex\r\n\t\t\t} );\r\n\r\n\t\t\treturn texture;\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Asynchronously assigns a texture to the given material parameters.\r\n\t * @param {Object} materialParams\r\n\t * @param {string} mapName\r\n\t * @param {Object} mapDef\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.assignTexture = function ( materialParams, mapName, mapDef ) {\r\n\r\n\t\tvar parser = this;\r\n\r\n\t\treturn this.getDependency( 'texture', mapDef.index ).then( function ( texture ) {\r\n\r\n\t\t\t// Materials sample aoMap from UV set 1 and other maps from UV set 0 - this can't be configured\r\n\t\t\t// However, we will copy UV set 0 to UV set 1 on demand for aoMap\r\n\t\t\tif ( mapDef.texCoord !== undefined && mapDef.texCoord != 0 && ! ( mapName === 'aoMap' && mapDef.texCoord == 1 ) ) {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Custom UV set ' + mapDef.texCoord + ' for texture ' + mapName + ' not yet supported.' );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] ) {\r\n\r\n\t\t\t\tvar transform = mapDef.extensions !== undefined ? mapDef.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ] : undefined;\r\n\r\n\t\t\t\tif ( transform ) {\r\n\r\n\t\t\t\t\tvar gltfReference = parser.associations.get( texture );\r\n\t\t\t\t\ttexture = parser.extensions[ EXTENSIONS.KHR_TEXTURE_TRANSFORM ].extendTexture( texture, transform );\r\n\t\t\t\t\tparser.associations.set( texture, gltfReference );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmaterialParams[ mapName ] = texture;\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Assigns final material to a Mesh, Line, or Points instance. The instance\r\n\t * already has a material (generated from the glTF material options alone)\r\n\t * but reuse of the same glTF material may require multiple threejs materials\r\n\t * to accomodate different primitive types, defines, etc. New materials will\r\n\t * be created if necessary, and reused from a cache.\r\n\t * @param {Object3D} mesh Mesh, Line, or Points instance.\r\n\t */\r\n\tGLTFParser.prototype.assignFinalMaterial = function ( mesh ) {\r\n\r\n\t\tvar geometry = mesh.geometry;\r\n\t\tvar material = mesh.material;\r\n\r\n\t\tvar useVertexTangents = geometry.attributes.tangent !== undefined;\r\n\t\tvar useVertexColors = geometry.attributes.color !== undefined;\r\n\t\tvar useFlatShading = geometry.attributes.normal === undefined;\r\n\t\tvar useSkinning = mesh.isSkinnedMesh === true;\r\n\t\tvar useMorphTargets = Object.keys( geometry.morphAttributes ).length > 0;\r\n\t\tvar useMorphNormals = useMorphTargets && geometry.morphAttributes.normal !== undefined;\r\n\r\n\t\tif ( mesh.isPoints ) {\r\n\r\n\t\t\tvar cacheKey = 'PointsMaterial:' + material.uuid;\r\n\r\n\t\t\tvar pointsMaterial = this.cache.get( cacheKey );\r\n\r\n\t\t\tif ( ! pointsMaterial ) {\r\n\r\n\t\t\t\tpointsMaterial = new PointsMaterial();\r\n\t\t\t\tMaterial.prototype.copy.call( pointsMaterial, material );\r\n\t\t\t\tpointsMaterial.color.copy( material.color );\r\n\t\t\t\tpointsMaterial.map = material.map;\r\n\t\t\t\tpointsMaterial.sizeAttenuation = false; // glTF spec says points should be 1px\r\n\r\n\t\t\t\tthis.cache.add( cacheKey, pointsMaterial );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmaterial = pointsMaterial;\r\n\r\n\t\t} else if ( mesh.isLine ) {\r\n\r\n\t\t\tvar cacheKey = 'LineBasicMaterial:' + material.uuid;\r\n\r\n\t\t\tvar lineMaterial = this.cache.get( cacheKey );\r\n\r\n\t\t\tif ( ! lineMaterial ) {\r\n\r\n\t\t\t\tlineMaterial = new LineBasicMaterial();\r\n\t\t\t\tMaterial.prototype.copy.call( lineMaterial, material );\r\n\t\t\t\tlineMaterial.color.copy( material.color );\r\n\r\n\t\t\t\tthis.cache.add( cacheKey, lineMaterial );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmaterial = lineMaterial;\r\n\r\n\t\t}\r\n\r\n\t\t// Clone the material if it will be modified\r\n\t\tif ( useVertexTangents || useVertexColors || useFlatShading || useSkinning || useMorphTargets ) {\r\n\r\n\t\t\tvar cacheKey = 'ClonedMaterial:' + material.uuid + ':';\r\n\r\n\t\t\tif ( material.isGLTFSpecularGlossinessMaterial ) cacheKey += 'specular-glossiness:';\r\n\t\t\tif ( useSkinning ) cacheKey += 'skinning:';\r\n\t\t\tif ( useVertexTangents ) cacheKey += 'vertex-tangents:';\r\n\t\t\tif ( useVertexColors ) cacheKey += 'vertex-colors:';\r\n\t\t\tif ( useFlatShading ) cacheKey += 'flat-shading:';\r\n\t\t\tif ( useMorphTargets ) cacheKey += 'morph-targets:';\r\n\t\t\tif ( useMorphNormals ) cacheKey += 'morph-normals:';\r\n\r\n\t\t\tvar cachedMaterial = this.cache.get( cacheKey );\r\n\r\n\t\t\tif ( ! cachedMaterial ) {\r\n\r\n\t\t\t\tcachedMaterial = material.clone();\r\n\r\n\t\t\t\tif ( useSkinning ) cachedMaterial.skinning = true;\r\n\t\t\t\tif ( useVertexTangents ) cachedMaterial.vertexTangents = true;\r\n\t\t\t\tif ( useVertexColors ) cachedMaterial.vertexColors = true;\r\n\t\t\t\tif ( useFlatShading ) cachedMaterial.flatShading = true;\r\n\t\t\t\tif ( useMorphTargets ) cachedMaterial.morphTargets = true;\r\n\t\t\t\tif ( useMorphNormals ) cachedMaterial.morphNormals = true;\r\n\r\n\t\t\t\tthis.cache.add( cacheKey, cachedMaterial );\r\n\r\n\t\t\t\tthis.associations.set( cachedMaterial, this.associations.get( material ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmaterial = cachedMaterial;\r\n\r\n\t\t}\r\n\r\n\t\t// workarounds for mesh and geometry\r\n\r\n\t\tif ( material.aoMap && geometry.attributes.uv2 === undefined && geometry.attributes.uv !== undefined ) {\r\n\r\n\t\t\tgeometry.setAttribute( 'uv2', geometry.attributes.uv );\r\n\r\n\t\t}\r\n\r\n\t\t// https://github.com/mrdoob/three.js/issues/11438#issuecomment-507003995\r\n\t\tif ( material.normalScale && ! useVertexTangents ) {\r\n\r\n\t\t\tmaterial.normalScale.y = - material.normalScale.y;\r\n\r\n\t\t}\r\n\r\n\t\tif ( material.clearcoatNormalScale && ! useVertexTangents ) {\r\n\r\n\t\t\tmaterial.clearcoatNormalScale.y = - material.clearcoatNormalScale.y;\r\n\r\n\t\t}\r\n\r\n\t\tmesh.material = material;\r\n\r\n\t};\r\n\r\n\tGLTFParser.prototype.getMaterialType = function ( /* materialIndex */ ) {\r\n\r\n\t\treturn MeshStandardMaterial;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#materials\r\n\t * @param {number} materialIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadMaterial = function ( materialIndex ) {\r\n\r\n\t\tvar parser = this;\r\n\t\tvar json = this.json;\r\n\t\tvar extensions = this.extensions;\r\n\t\tvar materialDef = json.materials[ materialIndex ];\r\n\r\n\t\tvar materialType;\r\n\t\tvar materialParams = {};\r\n\t\tvar materialExtensions = materialDef.extensions || {};\r\n\r\n\t\tvar pending = [];\r\n\r\n\t\tif ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ] ) {\r\n\r\n\t\t\tvar sgExtension = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ];\r\n\t\t\tmaterialType = sgExtension.getMaterialType();\r\n\t\t\tpending.push( sgExtension.extendParams( materialParams, materialDef, parser ) );\r\n\r\n\t\t} else if ( materialExtensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ] ) {\r\n\r\n\t\t\tvar kmuExtension = extensions[ EXTENSIONS.KHR_MATERIALS_UNLIT ];\r\n\t\t\tmaterialType = kmuExtension.getMaterialType();\r\n\t\t\tpending.push( kmuExtension.extendParams( materialParams, materialDef, parser ) );\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// Specification:\r\n\t\t\t// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#metallic-roughness-material\r\n\r\n\t\t\tvar metallicRoughness = materialDef.pbrMetallicRoughness || {};\r\n\r\n\t\t\tmaterialParams.color = new Color( 1.0, 1.0, 1.0 );\r\n\t\t\tmaterialParams.opacity = 1.0;\r\n\r\n\t\t\tif ( Array.isArray( metallicRoughness.baseColorFactor ) ) {\r\n\r\n\t\t\t\tvar array = metallicRoughness.baseColorFactor;\r\n\r\n\t\t\t\tmaterialParams.color.fromArray( array );\r\n\t\t\t\tmaterialParams.opacity = array[ 3 ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( metallicRoughness.baseColorTexture !== undefined ) {\r\n\r\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'map', metallicRoughness.baseColorTexture ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmaterialParams.metalness = metallicRoughness.metallicFactor !== undefined ? metallicRoughness.metallicFactor : 1.0;\r\n\t\t\tmaterialParams.roughness = metallicRoughness.roughnessFactor !== undefined ? metallicRoughness.roughnessFactor : 1.0;\r\n\r\n\t\t\tif ( metallicRoughness.metallicRoughnessTexture !== undefined ) {\r\n\r\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'metalnessMap', metallicRoughness.metallicRoughnessTexture ) );\r\n\t\t\t\tpending.push( parser.assignTexture( materialParams, 'roughnessMap', metallicRoughness.metallicRoughnessTexture ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tmaterialType = this._invokeOne( function ( ext ) {\r\n\r\n\t\t\t\treturn ext.getMaterialType && ext.getMaterialType( materialIndex );\r\n\r\n\t\t\t} );\r\n\r\n\t\t\tpending.push( Promise.all( this._invokeAll( function ( ext ) {\r\n\r\n\t\t\t\treturn ext.extendMaterialParams && ext.extendMaterialParams( materialIndex, materialParams );\r\n\r\n\t\t\t} ) ) );\r\n\r\n\t\t}\r\n\r\n\t\tif ( materialDef.doubleSided === true ) {\r\n\r\n\t\t\tmaterialParams.side = DoubleSide;\r\n\r\n\t\t}\r\n\r\n\t\tvar alphaMode = materialDef.alphaMode || ALPHA_MODES.OPAQUE;\r\n\r\n\t\tif ( alphaMode === ALPHA_MODES.BLEND ) {\r\n\r\n\t\t\tmaterialParams.transparent = true;\r\n\r\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/17706\r\n\t\t\tmaterialParams.depthWrite = false;\r\n\r\n\t\t} else {\r\n\r\n\t\t\tmaterialParams.transparent = false;\r\n\r\n\t\t\tif ( alphaMode === ALPHA_MODES.MASK ) {\r\n\r\n\t\t\t\tmaterialParams.alphaTest = materialDef.alphaCutoff !== undefined ? materialDef.alphaCutoff : 0.5;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( materialDef.normalTexture !== undefined && materialType !== MeshBasicMaterial ) {\r\n\r\n\t\t\tpending.push( parser.assignTexture( materialParams, 'normalMap', materialDef.normalTexture ) );\r\n\r\n\t\t\tmaterialParams.normalScale = new Vector2( 1, 1 );\r\n\r\n\t\t\tif ( materialDef.normalTexture.scale !== undefined ) {\r\n\r\n\t\t\t\tmaterialParams.normalScale.set( materialDef.normalTexture.scale, materialDef.normalTexture.scale );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( materialDef.occlusionTexture !== undefined && materialType !== MeshBasicMaterial ) {\r\n\r\n\t\t\tpending.push( parser.assignTexture( materialParams, 'aoMap', materialDef.occlusionTexture ) );\r\n\r\n\t\t\tif ( materialDef.occlusionTexture.strength !== undefined ) {\r\n\r\n\t\t\t\tmaterialParams.aoMapIntensity = materialDef.occlusionTexture.strength;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( materialDef.emissiveFactor !== undefined && materialType !== MeshBasicMaterial ) {\r\n\r\n\t\t\tmaterialParams.emissive = new Color().fromArray( materialDef.emissiveFactor );\r\n\r\n\t\t}\r\n\r\n\t\tif ( materialDef.emissiveTexture !== undefined && materialType !== MeshBasicMaterial ) {\r\n\r\n\t\t\tpending.push( parser.assignTexture( materialParams, 'emissiveMap', materialDef.emissiveTexture ) );\r\n\r\n\t\t}\r\n\r\n\t\treturn Promise.all( pending ).then( function () {\r\n\r\n\t\t\tvar material;\r\n\r\n\t\t\tif ( materialType === GLTFMeshStandardSGMaterial ) {\r\n\r\n\t\t\t\tmaterial = extensions[ EXTENSIONS.KHR_MATERIALS_PBR_SPECULAR_GLOSSINESS ].createMaterial( materialParams );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tmaterial = new materialType( materialParams );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( materialDef.name ) material.name = materialDef.name;\r\n\r\n\t\t\t// baseColorTexture, emissiveTexture, and specularGlossinessTexture use sRGB encoding.\r\n\t\t\tif ( material.map ) material.map.encoding = sRGBEncoding;\r\n\t\t\tif ( material.emissiveMap ) material.emissiveMap.encoding = sRGBEncoding;\r\n\r\n\t\t\tassignExtrasToUserData( material, materialDef );\r\n\r\n\t\t\tparser.associations.set( material, { type: 'materials', index: materialIndex } );\r\n\r\n\t\t\tif ( materialDef.extensions ) addUnknownExtensionsToUserData( extensions, material, materialDef );\r\n\r\n\t\t\treturn material;\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/** When Object3D instances are targeted by animation, they need unique names. */\r\n\tGLTFParser.prototype.createUniqueName = function ( originalName ) {\r\n\r\n\t\tvar sanitizedName = PropertyBinding.sanitizeNodeName( originalName || '' );\r\n\r\n\t\tvar name = sanitizedName;\r\n\r\n\t\tfor ( var i = 1; this.nodeNamesUsed[ name ]; ++ i ) {\r\n\r\n\t\t\tname = sanitizedName + '_' + i;\r\n\r\n\t\t}\r\n\r\n\t\tthis.nodeNamesUsed[ name ] = true;\r\n\r\n\t\treturn name;\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * @param {BufferGeometry} geometry\r\n\t * @param {GLTF.Primitive} primitiveDef\r\n\t * @param {GLTFParser} parser\r\n\t */\r\n\tfunction computeBounds( geometry, primitiveDef, parser ) {\r\n\r\n\t\tvar attributes = primitiveDef.attributes;\r\n\r\n\t\tvar box = new Box3();\r\n\r\n\t\tif ( attributes.POSITION !== undefined ) {\r\n\r\n\t\t\tvar accessor = parser.json.accessors[ attributes.POSITION ];\r\n\r\n\t\t\tvar min = accessor.min;\r\n\t\t\tvar max = accessor.max;\r\n\r\n\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\r\n\r\n\t\t\tif ( min !== undefined && max !== undefined ) {\r\n\r\n\t\t\t\tbox.set(\r\n\t\t\t\t\tnew Vector3( min[ 0 ], min[ 1 ], min[ 2 ] ),\r\n\t\t\t\t\tnew Vector3( max[ 0 ], max[ 1 ], max[ 2 ] ) );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\r\n\r\n\t\t\t\treturn;\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tvar targets = primitiveDef.targets;\r\n\r\n\t\tif ( targets !== undefined ) {\r\n\r\n\t\t\tvar maxDisplacement = new Vector3();\r\n\t\t\tvar vector = new Vector3();\r\n\r\n\t\t\tfor ( var i = 0, il = targets.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tvar target = targets[ i ];\r\n\r\n\t\t\t\tif ( target.POSITION !== undefined ) {\r\n\r\n\t\t\t\t\tvar accessor = parser.json.accessors[ target.POSITION ];\r\n\t\t\t\t\tvar min = accessor.min;\r\n\t\t\t\t\tvar max = accessor.max;\r\n\r\n\t\t\t\t\t// glTF requires 'min' and 'max', but VRM (which extends glTF) currently ignores that requirement.\r\n\r\n\t\t\t\t\tif ( min !== undefined && max !== undefined ) {\r\n\r\n\t\t\t\t\t\t// we need to get max of absolute components because target weight is [-1,1]\r\n\t\t\t\t\t\tvector.setX( Math.max( Math.abs( min[ 0 ] ), Math.abs( max[ 0 ] ) ) );\r\n\t\t\t\t\t\tvector.setY( Math.max( Math.abs( min[ 1 ] ), Math.abs( max[ 1 ] ) ) );\r\n\t\t\t\t\t\tvector.setZ( Math.max( Math.abs( min[ 2 ] ), Math.abs( max[ 2 ] ) ) );\r\n\r\n\t\t\t\t\t\t// Note: this assumes that the sum of all weights is at most 1. This isn't quite correct - it's more conservative\r\n\t\t\t\t\t\t// to assume that each target can have a max weight of 1. However, for some use cases - notably, when morph targets\r\n\t\t\t\t\t\t// are used to implement key-frame animations and as such only two are active at a time - this results in very large\r\n\t\t\t\t\t\t// boxes. So for now we make a box that's sometimes a touch too small but is hopefully mostly of reasonable size.\r\n\t\t\t\t\t\tmaxDisplacement.max( vector );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing min/max properties for accessor POSITION.' );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// As per comment above this box isn't conservative, but has a reasonable size for a very large number of morph targets.\r\n\t\t\tbox.expandByVector( maxDisplacement );\r\n\r\n\t\t}\r\n\r\n\t\tgeometry.boundingBox = box;\r\n\r\n\t\tvar sphere = new Sphere();\r\n\r\n\t\tbox.getCenter( sphere.center );\r\n\t\tsphere.radius = box.min.distanceTo( box.max ) / 2;\r\n\r\n\t\tgeometry.boundingSphere = sphere;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @param {BufferGeometry} geometry\r\n\t * @param {GLTF.Primitive} primitiveDef\r\n\t * @param {GLTFParser} parser\r\n\t * @return {Promise}\r\n\t */\r\n\tfunction addPrimitiveAttributes( geometry, primitiveDef, parser ) {\r\n\r\n\t\tvar attributes = primitiveDef.attributes;\r\n\r\n\t\tvar pending = [];\r\n\r\n\t\tfunction assignAttributeAccessor( accessorIndex, attributeName ) {\r\n\r\n\t\t\treturn parser.getDependency( 'accessor', accessorIndex )\r\n\t\t\t\t.then( function ( accessor ) {\r\n\r\n\t\t\t\t\tgeometry.setAttribute( attributeName, accessor );\r\n\r\n\t\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t\tfor ( var gltfAttributeName in attributes ) {\r\n\r\n\t\t\tvar threeAttributeName = ATTRIBUTES[ gltfAttributeName ] || gltfAttributeName.toLowerCase();\r\n\r\n\t\t\t// Skip attributes already provided by e.g. Draco extension.\r\n\t\t\tif ( threeAttributeName in geometry.attributes ) continue;\r\n\r\n\t\t\tpending.push( assignAttributeAccessor( attributes[ gltfAttributeName ], threeAttributeName ) );\r\n\r\n\t\t}\r\n\r\n\t\tif ( primitiveDef.indices !== undefined && ! geometry.index ) {\r\n\r\n\t\t\tvar accessor = parser.getDependency( 'accessor', primitiveDef.indices ).then( function ( accessor ) {\r\n\r\n\t\t\t\tgeometry.setIndex( accessor );\r\n\r\n\t\t\t} );\r\n\r\n\t\t\tpending.push( accessor );\r\n\r\n\t\t}\r\n\r\n\t\tassignExtrasToUserData( geometry, primitiveDef );\r\n\r\n\t\tcomputeBounds( geometry, primitiveDef, parser );\r\n\r\n\t\treturn Promise.all( pending ).then( function () {\r\n\r\n\t\t\treturn primitiveDef.targets !== undefined\r\n\t\t\t\t? addMorphTargets( geometry, primitiveDef.targets, parser )\r\n\t\t\t\t: geometry;\r\n\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @param {BufferGeometry} geometry\r\n\t * @param {Number} drawMode\r\n\t * @return {BufferGeometry}\r\n\t */\r\n\tfunction toTrianglesDrawMode( geometry, drawMode ) {\r\n\r\n\t\tvar index = geometry.getIndex();\r\n\r\n\t\t// generate index if not present\r\n\r\n\t\tif ( index === null ) {\r\n\r\n\t\t\tvar indices = [];\r\n\r\n\t\t\tvar position = geometry.getAttribute( 'position' );\r\n\r\n\t\t\tif ( position !== undefined ) {\r\n\r\n\t\t\t\tfor ( var i = 0; i < position.count; i ++ ) {\r\n\r\n\t\t\t\t\tindices.push( i );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tgeometry.setIndex( indices );\r\n\t\t\t\tindex = geometry.getIndex();\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Undefined position attribute. Processing not possible.' );\r\n\t\t\t\treturn geometry;\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t//\r\n\r\n\t\tvar numberOfTriangles = index.count - 2;\r\n\t\tvar newIndices = [];\r\n\r\n\t\tif ( drawMode === TriangleFanDrawMode ) {\r\n\r\n\t\t\t// gl.TRIANGLE_FAN\r\n\r\n\t\t\tfor ( var i = 1; i <= numberOfTriangles; i ++ ) {\r\n\r\n\t\t\t\tnewIndices.push( index.getX( 0 ) );\r\n\t\t\t\tnewIndices.push( index.getX( i ) );\r\n\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\t// gl.TRIANGLE_STRIP\r\n\r\n\t\t\tfor ( var i = 0; i < numberOfTriangles; i ++ ) {\r\n\r\n\t\t\t\tif ( i % 2 === 0 ) {\r\n\r\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\r\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\r\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\r\n\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tnewIndices.push( index.getX( i + 2 ) );\r\n\t\t\t\t\tnewIndices.push( index.getX( i + 1 ) );\r\n\t\t\t\t\tnewIndices.push( index.getX( i ) );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tif ( ( newIndices.length / 3 ) !== numberOfTriangles ) {\r\n\r\n\t\t\tconsole.error( 'THREE.GLTFLoader.toTrianglesDrawMode(): Unable to generate correct amount of triangles.' );\r\n\r\n\t\t}\r\n\r\n\t\t// build final geometry\r\n\r\n\t\tvar newGeometry = geometry.clone();\r\n\t\tnewGeometry.setIndex( newIndices );\r\n\r\n\t\treturn newGeometry;\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#geometry\r\n\t *\r\n\t * Creates BufferGeometries from primitives.\r\n\t *\r\n\t * @param {Array} primitives\r\n\t * @return {Promise>}\r\n\t */\r\n\tGLTFParser.prototype.loadGeometries = function ( primitives ) {\r\n\r\n\t\tvar parser = this;\r\n\t\tvar extensions = this.extensions;\r\n\t\tvar cache = this.primitiveCache;\r\n\r\n\t\tfunction createDracoPrimitive( primitive ) {\r\n\r\n\t\t\treturn extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ]\r\n\t\t\t\t.decodePrimitive( primitive, parser )\r\n\t\t\t\t.then( function ( geometry ) {\r\n\r\n\t\t\t\t\treturn addPrimitiveAttributes( geometry, primitive, parser );\r\n\r\n\t\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t\tvar pending = [];\r\n\r\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\r\n\r\n\t\t\tvar primitive = primitives[ i ];\r\n\t\t\tvar cacheKey = createPrimitiveKey( primitive );\r\n\r\n\t\t\t// See if we've already created this geometry\r\n\t\t\tvar cached = cache[ cacheKey ];\r\n\r\n\t\t\tif ( cached ) {\r\n\r\n\t\t\t\t// Use the cached geometry if it exists\r\n\t\t\t\tpending.push( cached.promise );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tvar geometryPromise;\r\n\r\n\t\t\t\tif ( primitive.extensions && primitive.extensions[ EXTENSIONS.KHR_DRACO_MESH_COMPRESSION ] ) {\r\n\r\n\t\t\t\t\t// Use DRACO geometry if available\r\n\t\t\t\t\tgeometryPromise = createDracoPrimitive( primitive );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\t// Otherwise create a new geometry\r\n\t\t\t\t\tgeometryPromise = addPrimitiveAttributes( new BufferGeometry(), primitive, parser );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// Cache this geometry\r\n\t\t\t\tcache[ cacheKey ] = { primitive: primitive, promise: geometryPromise };\r\n\r\n\t\t\t\tpending.push( geometryPromise );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\treturn Promise.all( pending );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/blob/master/specification/2.0/README.md#meshes\r\n\t * @param {number} meshIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadMesh = function ( meshIndex ) {\r\n\r\n\t\tvar parser = this;\r\n\t\tvar json = this.json;\r\n\t\tvar extensions = this.extensions;\r\n\r\n\t\tvar meshDef = json.meshes[ meshIndex ];\r\n\t\tvar primitives = meshDef.primitives;\r\n\r\n\t\tvar pending = [];\r\n\r\n\t\tfor ( var i = 0, il = primitives.length; i < il; i ++ ) {\r\n\r\n\t\t\tvar material = primitives[ i ].material === undefined\r\n\t\t\t\t? createDefaultMaterial( this.cache )\r\n\t\t\t\t: this.getDependency( 'material', primitives[ i ].material );\r\n\r\n\t\t\tpending.push( material );\r\n\r\n\t\t}\r\n\r\n\t\tpending.push( parser.loadGeometries( primitives ) );\r\n\r\n\t\treturn Promise.all( pending ).then( function ( results ) {\r\n\r\n\t\t\tvar materials = results.slice( 0, results.length - 1 );\r\n\t\t\tvar geometries = results[ results.length - 1 ];\r\n\r\n\t\t\tvar meshes = [];\r\n\r\n\t\t\tfor ( var i = 0, il = geometries.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tvar geometry = geometries[ i ];\r\n\t\t\t\tvar primitive = primitives[ i ];\r\n\r\n\t\t\t\t// 1. create Mesh\r\n\r\n\t\t\t\tvar mesh;\r\n\r\n\t\t\t\tvar material = materials[ i ];\r\n\r\n\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLES ||\r\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ||\r\n\t\t\t\t\tprimitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ||\r\n\t\t\t\t\tprimitive.mode === undefined ) {\r\n\r\n\t\t\t\t\t// .isSkinnedMesh isn't in glTF spec. See ._markDefs()\r\n\t\t\t\t\tmesh = meshDef.isSkinnedMesh === true\r\n\t\t\t\t\t\t? new SkinnedMesh( geometry, material )\r\n\t\t\t\t\t\t: new Mesh( geometry, material );\r\n\r\n\t\t\t\t\tif ( mesh.isSkinnedMesh === true && ! mesh.geometry.attributes.skinWeight.normalized ) {\r\n\r\n\t\t\t\t\t\t// we normalize floating point skin weight array to fix malformed assets (see #15319)\r\n\t\t\t\t\t\t// it's important to skip this for non-float32 data since normalizeSkinWeights assumes non-normalized inputs\r\n\t\t\t\t\t\tmesh.normalizeSkinWeights();\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tif ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_STRIP ) {\r\n\r\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleStripDrawMode );\r\n\r\n\t\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.TRIANGLE_FAN ) {\r\n\r\n\t\t\t\t\t\tmesh.geometry = toTrianglesDrawMode( mesh.geometry, TriangleFanDrawMode );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINES ) {\r\n\r\n\t\t\t\t\tmesh = new LineSegments( geometry, material );\r\n\r\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_STRIP ) {\r\n\r\n\t\t\t\t\tmesh = new Line( geometry, material );\r\n\r\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.LINE_LOOP ) {\r\n\r\n\t\t\t\t\tmesh = new LineLoop( geometry, material );\r\n\r\n\t\t\t\t} else if ( primitive.mode === WEBGL_CONSTANTS.POINTS ) {\r\n\r\n\t\t\t\t\tmesh = new Points( geometry, material );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Primitive mode unsupported: ' + primitive.mode );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( Object.keys( mesh.geometry.morphAttributes ).length > 0 ) {\r\n\r\n\t\t\t\t\tupdateMorphTargets( mesh, meshDef );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tmesh.name = parser.createUniqueName( meshDef.name || ( 'mesh_' + meshIndex ) );\r\n\r\n\t\t\t\tassignExtrasToUserData( mesh, meshDef );\r\n\r\n\t\t\t\tif ( primitive.extensions ) addUnknownExtensionsToUserData( extensions, mesh, primitive );\r\n\r\n\t\t\t\tparser.assignFinalMaterial( mesh );\r\n\r\n\t\t\t\tmeshes.push( mesh );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( meshes.length === 1 ) {\r\n\r\n\t\t\t\treturn meshes[ 0 ];\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar group = new Group();\r\n\r\n\t\t\tfor ( var i = 0, il = meshes.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tgroup.add( meshes[ i ] );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn group;\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#cameras\r\n\t * @param {number} cameraIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadCamera = function ( cameraIndex ) {\r\n\r\n\t\tvar camera;\r\n\t\tvar cameraDef = this.json.cameras[ cameraIndex ];\r\n\t\tvar params = cameraDef[ cameraDef.type ];\r\n\r\n\t\tif ( ! params ) {\r\n\r\n\t\t\tconsole.warn( 'THREE.GLTFLoader: Missing camera parameters.' );\r\n\t\t\treturn;\r\n\r\n\t\t}\r\n\r\n\t\tif ( cameraDef.type === 'perspective' ) {\r\n\r\n\t\t\tcamera = new PerspectiveCamera( MathUtils.radToDeg( params.yfov ), params.aspectRatio || 1, params.znear || 1, params.zfar || 2e6 );\r\n\r\n\t\t} else if ( cameraDef.type === 'orthographic' ) {\r\n\r\n\t\t\tcamera = new OrthographicCamera( - params.xmag, params.xmag, params.ymag, - params.ymag, params.znear, params.zfar );\r\n\r\n\t\t}\r\n\r\n\t\tif ( cameraDef.name ) camera.name = this.createUniqueName( cameraDef.name );\r\n\r\n\t\tassignExtrasToUserData( camera, cameraDef );\r\n\r\n\t\treturn Promise.resolve( camera );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#skins\r\n\t * @param {number} skinIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadSkin = function ( skinIndex ) {\r\n\r\n\t\tvar skinDef = this.json.skins[ skinIndex ];\r\n\r\n\t\tvar skinEntry = { joints: skinDef.joints };\r\n\r\n\t\tif ( skinDef.inverseBindMatrices === undefined ) {\r\n\r\n\t\t\treturn Promise.resolve( skinEntry );\r\n\r\n\t\t}\r\n\r\n\t\treturn this.getDependency( 'accessor', skinDef.inverseBindMatrices ).then( function ( accessor ) {\r\n\r\n\t\t\tskinEntry.inverseBindMatrices = accessor;\r\n\r\n\t\t\treturn skinEntry;\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#animations\r\n\t * @param {number} animationIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadAnimation = function ( animationIndex ) {\r\n\r\n\t\tvar json = this.json;\r\n\r\n\t\tvar animationDef = json.animations[ animationIndex ];\r\n\r\n\t\tvar pendingNodes = [];\r\n\t\tvar pendingInputAccessors = [];\r\n\t\tvar pendingOutputAccessors = [];\r\n\t\tvar pendingSamplers = [];\r\n\t\tvar pendingTargets = [];\r\n\r\n\t\tfor ( var i = 0, il = animationDef.channels.length; i < il; i ++ ) {\r\n\r\n\t\t\tvar channel = animationDef.channels[ i ];\r\n\t\t\tvar sampler = animationDef.samplers[ channel.sampler ];\r\n\t\t\tvar target = channel.target;\r\n\t\t\tvar name = target.node !== undefined ? target.node : target.id; // NOTE: target.id is deprecated.\r\n\t\t\tvar input = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.input ] : sampler.input;\r\n\t\t\tvar output = animationDef.parameters !== undefined ? animationDef.parameters[ sampler.output ] : sampler.output;\r\n\r\n\t\t\tpendingNodes.push( this.getDependency( 'node', name ) );\r\n\t\t\tpendingInputAccessors.push( this.getDependency( 'accessor', input ) );\r\n\t\t\tpendingOutputAccessors.push( this.getDependency( 'accessor', output ) );\r\n\t\t\tpendingSamplers.push( sampler );\r\n\t\t\tpendingTargets.push( target );\r\n\r\n\t\t}\r\n\r\n\t\treturn Promise.all( [\r\n\r\n\t\t\tPromise.all( pendingNodes ),\r\n\t\t\tPromise.all( pendingInputAccessors ),\r\n\t\t\tPromise.all( pendingOutputAccessors ),\r\n\t\t\tPromise.all( pendingSamplers ),\r\n\t\t\tPromise.all( pendingTargets )\r\n\r\n\t\t] ).then( function ( dependencies ) {\r\n\r\n\t\t\tvar nodes = dependencies[ 0 ];\r\n\t\t\tvar inputAccessors = dependencies[ 1 ];\r\n\t\t\tvar outputAccessors = dependencies[ 2 ];\r\n\t\t\tvar samplers = dependencies[ 3 ];\r\n\t\t\tvar targets = dependencies[ 4 ];\r\n\r\n\t\t\tvar tracks = [];\r\n\r\n\t\t\tfor ( var i = 0, il = nodes.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tvar node = nodes[ i ];\r\n\t\t\t\tvar inputAccessor = inputAccessors[ i ];\r\n\t\t\t\tvar outputAccessor = outputAccessors[ i ];\r\n\t\t\t\tvar sampler = samplers[ i ];\r\n\t\t\t\tvar target = targets[ i ];\r\n\r\n\t\t\t\tif ( node === undefined ) continue;\r\n\r\n\t\t\t\tnode.updateMatrix();\r\n\t\t\t\tnode.matrixAutoUpdate = true;\r\n\r\n\t\t\t\tvar TypedKeyframeTrack;\r\n\r\n\t\t\t\tswitch ( PATH_PROPERTIES[ target.path ] ) {\r\n\r\n\t\t\t\t\tcase PATH_PROPERTIES.weights:\r\n\r\n\t\t\t\t\t\tTypedKeyframeTrack = NumberKeyframeTrack;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase PATH_PROPERTIES.rotation:\r\n\r\n\t\t\t\t\t\tTypedKeyframeTrack = QuaternionKeyframeTrack;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t\tcase PATH_PROPERTIES.position:\r\n\t\t\t\t\tcase PATH_PROPERTIES.scale:\r\n\t\t\t\t\tdefault:\r\n\r\n\t\t\t\t\t\tTypedKeyframeTrack = VectorKeyframeTrack;\r\n\t\t\t\t\t\tbreak;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar targetName = node.name ? node.name : node.uuid;\r\n\r\n\t\t\t\tvar interpolation = sampler.interpolation !== undefined ? INTERPOLATION[ sampler.interpolation ] : InterpolateLinear;\r\n\r\n\t\t\t\tvar targetNames = [];\r\n\r\n\t\t\t\tif ( PATH_PROPERTIES[ target.path ] === PATH_PROPERTIES.weights ) {\r\n\r\n\t\t\t\t\t// Node may be a Group (glTF mesh with several primitives) or a Mesh.\r\n\t\t\t\t\tnode.traverse( function ( object ) {\r\n\r\n\t\t\t\t\t\tif ( object.isMesh === true && object.morphTargetInfluences ) {\r\n\r\n\t\t\t\t\t\t\ttargetNames.push( object.name ? object.name : object.uuid );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\ttargetNames.push( targetName );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar outputArray = outputAccessor.array;\r\n\r\n\t\t\t\tif ( outputAccessor.normalized ) {\r\n\r\n\t\t\t\t\tvar scale;\r\n\r\n\t\t\t\t\tif ( outputArray.constructor === Int8Array ) {\r\n\r\n\t\t\t\t\t\tscale = 1 / 127;\r\n\r\n\t\t\t\t\t} else if ( outputArray.constructor === Uint8Array ) {\r\n\r\n\t\t\t\t\t\tscale = 1 / 255;\r\n\r\n\t\t\t\t\t} else if ( outputArray.constructor == Int16Array ) {\r\n\r\n\t\t\t\t\t\tscale = 1 / 32767;\r\n\r\n\t\t\t\t\t} else if ( outputArray.constructor === Uint16Array ) {\r\n\r\n\t\t\t\t\t\tscale = 1 / 65535;\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tthrow new Error( 'THREE.GLTFLoader: Unsupported output accessor component type.' );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tvar scaled = new Float32Array( outputArray.length );\r\n\r\n\t\t\t\t\tfor ( var j = 0, jl = outputArray.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\t\tscaled[ j ] = outputArray[ j ] * scale;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\toutputArray = scaled;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfor ( var j = 0, jl = targetNames.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\tvar track = new TypedKeyframeTrack(\r\n\t\t\t\t\t\ttargetNames[ j ] + '.' + PATH_PROPERTIES[ target.path ],\r\n\t\t\t\t\t\tinputAccessor.array,\r\n\t\t\t\t\t\toutputArray,\r\n\t\t\t\t\t\tinterpolation\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\t// Override interpolation with custom factory method.\r\n\t\t\t\t\tif ( sampler.interpolation === 'CUBICSPLINE' ) {\r\n\r\n\t\t\t\t\t\ttrack.createInterpolant = function InterpolantFactoryMethodGLTFCubicSpline( result ) {\r\n\r\n\t\t\t\t\t\t\t// A CUBICSPLINE keyframe in glTF has three output values for each input value,\r\n\t\t\t\t\t\t\t// representing inTangent, splineVertex, and outTangent. As a result, track.getValueSize()\r\n\t\t\t\t\t\t\t// must be divided by three to get the interpolant's sampleSize argument.\r\n\r\n\t\t\t\t\t\t\treturn new GLTFCubicSplineInterpolant( this.times, this.values, this.getValueSize() / 3, result );\r\n\r\n\t\t\t\t\t\t};\r\n\r\n\t\t\t\t\t\t// Mark as CUBICSPLINE. `track.getInterpolation()` doesn't support custom interpolants.\r\n\t\t\t\t\t\ttrack.createInterpolant.isInterpolantFactoryMethodGLTFCubicSpline = true;\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttracks.push( track );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tvar name = animationDef.name ? animationDef.name : 'animation_' + animationIndex;\r\n\r\n\t\t\treturn new AnimationClip( name, undefined, tracks );\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#nodes-and-hierarchy\r\n\t * @param {number} nodeIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadNode = function ( nodeIndex ) {\r\n\r\n\t\tvar json = this.json;\r\n\t\tvar extensions = this.extensions;\r\n\t\tvar parser = this;\r\n\r\n\t\tvar nodeDef = json.nodes[ nodeIndex ];\r\n\r\n\t\t// reserve node's name before its dependencies, so the root has the intended name.\r\n\t\tvar nodeName = nodeDef.name ? parser.createUniqueName( nodeDef.name ) : '';\r\n\r\n\t\treturn ( function () {\r\n\r\n\t\t\tvar pending = [];\r\n\r\n\t\t\tif ( nodeDef.mesh !== undefined ) {\r\n\r\n\t\t\t\tpending.push( parser.getDependency( 'mesh', nodeDef.mesh ).then( function ( mesh ) {\r\n\r\n\t\t\t\t\tvar node = parser._getNodeRef( parser.meshCache, nodeDef.mesh, mesh );\r\n\r\n\t\t\t\t\t// if weights are provided on the node, override weights on the mesh.\r\n\t\t\t\t\tif ( nodeDef.weights !== undefined ) {\r\n\r\n\t\t\t\t\t\tnode.traverse( function ( o ) {\r\n\r\n\t\t\t\t\t\t\tif ( ! o.isMesh ) return;\r\n\r\n\t\t\t\t\t\t\tfor ( var i = 0, il = nodeDef.weights.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\t\t\t\to.morphTargetInfluences[ i ] = nodeDef.weights[ i ];\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn node;\r\n\r\n\t\t\t\t} ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( nodeDef.camera !== undefined ) {\r\n\r\n\t\t\t\tpending.push( parser.getDependency( 'camera', nodeDef.camera ).then( function ( camera ) {\r\n\r\n\t\t\t\t\treturn parser._getNodeRef( parser.cameraCache, nodeDef.camera, camera );\r\n\r\n\t\t\t\t} ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\tparser._invokeAll( function ( ext ) {\r\n\r\n\t\t\t\treturn ext.createNodeAttachment && ext.createNodeAttachment( nodeIndex );\r\n\r\n\t\t\t} ).forEach( function ( promise ) {\r\n\r\n\t\t\t\tpending.push( promise );\r\n\r\n\t\t\t} );\r\n\r\n\t\t\treturn Promise.all( pending );\r\n\r\n\t\t}() ).then( function ( objects ) {\r\n\r\n\t\t\tvar node;\r\n\r\n\t\t\t// .isBone isn't in glTF spec. See ._markDefs\r\n\t\t\tif ( nodeDef.isBone === true ) {\r\n\r\n\t\t\t\tnode = new Bone();\r\n\r\n\t\t\t} else if ( objects.length > 1 ) {\r\n\r\n\t\t\t\tnode = new Group();\r\n\r\n\t\t\t} else if ( objects.length === 1 ) {\r\n\r\n\t\t\t\tnode = objects[ 0 ];\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tnode = new Object3D();\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( node !== objects[ 0 ] ) {\r\n\r\n\t\t\t\tfor ( var i = 0, il = objects.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\tnode.add( objects[ i ] );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tif ( nodeDef.name ) {\r\n\r\n\t\t\t\tnode.userData.name = nodeDef.name;\r\n\t\t\t\tnode.name = nodeName;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tassignExtrasToUserData( node, nodeDef );\r\n\r\n\t\t\tif ( nodeDef.extensions ) addUnknownExtensionsToUserData( extensions, node, nodeDef );\r\n\r\n\t\t\tif ( nodeDef.matrix !== undefined ) {\r\n\r\n\t\t\t\tvar matrix = new Matrix4();\r\n\t\t\t\tmatrix.fromArray( nodeDef.matrix );\r\n\t\t\t\tnode.applyMatrix4( matrix );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tif ( nodeDef.translation !== undefined ) {\r\n\r\n\t\t\t\t\tnode.position.fromArray( nodeDef.translation );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( nodeDef.rotation !== undefined ) {\r\n\r\n\t\t\t\t\tnode.quaternion.fromArray( nodeDef.rotation );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( nodeDef.scale !== undefined ) {\r\n\r\n\t\t\t\t\tnode.scale.fromArray( nodeDef.scale );\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\tparser.associations.set( node, { type: 'nodes', index: nodeIndex } );\r\n\r\n\t\t\treturn node;\r\n\r\n\t\t} );\r\n\r\n\t};\r\n\r\n\t/**\r\n\t * Specification: https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#scenes\r\n\t * @param {number} sceneIndex\r\n\t * @return {Promise}\r\n\t */\r\n\tGLTFParser.prototype.loadScene = function () {\r\n\r\n\t\t// scene node hierachy builder\r\n\r\n\t\tfunction buildNodeHierachy( nodeId, parentObject, json, parser ) {\r\n\r\n\t\t\tvar nodeDef = json.nodes[ nodeId ];\r\n\r\n\t\t\treturn parser.getDependency( 'node', nodeId ).then( function ( node ) {\r\n\r\n\t\t\t\tif ( nodeDef.skin === undefined ) return node;\r\n\r\n\t\t\t\t// build skeleton here as well\r\n\r\n\t\t\t\tvar skinEntry;\r\n\r\n\t\t\t\treturn parser.getDependency( 'skin', nodeDef.skin ).then( function ( skin ) {\r\n\r\n\t\t\t\t\tskinEntry = skin;\r\n\r\n\t\t\t\t\tvar pendingJoints = [];\r\n\r\n\t\t\t\t\tfor ( var i = 0, il = skinEntry.joints.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\t\tpendingJoints.push( parser.getDependency( 'node', skinEntry.joints[ i ] ) );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\treturn Promise.all( pendingJoints );\r\n\r\n\t\t\t\t} ).then( function ( jointNodes ) {\r\n\r\n\t\t\t\t\tnode.traverse( function ( mesh ) {\r\n\r\n\t\t\t\t\t\tif ( ! mesh.isMesh ) return;\r\n\r\n\t\t\t\t\t\tvar bones = [];\r\n\t\t\t\t\t\tvar boneInverses = [];\r\n\r\n\t\t\t\t\t\tfor ( var j = 0, jl = jointNodes.length; j < jl; j ++ ) {\r\n\r\n\t\t\t\t\t\t\tvar jointNode = jointNodes[ j ];\r\n\r\n\t\t\t\t\t\t\tif ( jointNode ) {\r\n\r\n\t\t\t\t\t\t\t\tbones.push( jointNode );\r\n\r\n\t\t\t\t\t\t\t\tvar mat = new Matrix4();\r\n\r\n\t\t\t\t\t\t\t\tif ( skinEntry.inverseBindMatrices !== undefined ) {\r\n\r\n\t\t\t\t\t\t\t\t\tmat.fromArray( skinEntry.inverseBindMatrices.array, j * 16 );\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tboneInverses.push( mat );\r\n\r\n\t\t\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\t\t\tconsole.warn( 'THREE.GLTFLoader: Joint \"%s\" could not be found.', skinEntry.joints[ j ] );\r\n\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tmesh.bind( new Skeleton( bones, boneInverses ), mesh.matrixWorld );\r\n\r\n\t\t\t\t\t} );\r\n\r\n\t\t\t\t\treturn node;\r\n\r\n\t\t\t\t} );\r\n\r\n\t\t\t} ).then( function ( node ) {\r\n\r\n\t\t\t\t// build node hierachy\r\n\r\n\t\t\t\tparentObject.add( node );\r\n\r\n\t\t\t\tvar pending = [];\r\n\r\n\t\t\t\tif ( nodeDef.children ) {\r\n\r\n\t\t\t\t\tvar children = nodeDef.children;\r\n\r\n\t\t\t\t\tfor ( var i = 0, il = children.length; i < il; i ++ ) {\r\n\r\n\t\t\t\t\t\tvar child = children[ i ];\r\n\t\t\t\t\t\tpending.push( buildNodeHierachy( child, node, json, parser ) );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn Promise.all( pending );\r\n\r\n\t\t\t} );\r\n\r\n\t\t}\r\n\r\n\t\treturn function loadScene( sceneIndex ) {\r\n\r\n\t\t\tvar json = this.json;\r\n\t\t\tvar extensions = this.extensions;\r\n\t\t\tvar sceneDef = this.json.scenes[ sceneIndex ];\r\n\t\t\tvar parser = this;\r\n\r\n\t\t\t// Loader returns Group, not Scene.\r\n\t\t\t// See: https://github.com/mrdoob/three.js/issues/18342#issuecomment-578981172\r\n\t\t\tvar scene = new Group();\r\n\t\t\tif ( sceneDef.name ) scene.name = parser.createUniqueName( sceneDef.name );\r\n\r\n\t\t\tassignExtrasToUserData( scene, sceneDef );\r\n\r\n\t\t\tif ( sceneDef.extensions ) addUnknownExtensionsToUserData( extensions, scene, sceneDef );\r\n\r\n\t\t\tvar nodeIds = sceneDef.nodes || [];\r\n\r\n\t\t\tvar pending = [];\r\n\r\n\t\t\tfor ( var i = 0, il = nodeIds.length; i < il; i ++ ) {\r\n\r\n\t\t\t\tpending.push( buildNodeHierachy( nodeIds[ i ], scene, json, parser ) );\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn Promise.all( pending ).then( function () {\r\n\r\n\t\t\t\treturn scene;\r\n\r\n\t\t\t} );\r\n\r\n\t\t};\r\n\r\n\t}();\r\n\r\n\treturn GLTFLoader;\r\n\r\n} )();\r\n\r\nexport { GLTFLoader };\r\n","/**\r\n * @webxr-input-profiles/motion-controllers 1.0.0 https://github.com/immersive-web/webxr-input-profiles\r\n */\r\n\r\nconst Constants = {\r\n Handedness: Object.freeze({\r\n NONE: 'none',\r\n LEFT: 'left',\r\n RIGHT: 'right'\r\n }),\r\n\r\n ComponentState: Object.freeze({\r\n DEFAULT: 'default',\r\n TOUCHED: 'touched',\r\n PRESSED: 'pressed'\r\n }),\r\n\r\n ComponentProperty: Object.freeze({\r\n BUTTON: 'button',\r\n X_AXIS: 'xAxis',\r\n Y_AXIS: 'yAxis',\r\n STATE: 'state'\r\n }),\r\n\r\n ComponentType: Object.freeze({\r\n TRIGGER: 'trigger',\r\n SQUEEZE: 'squeeze',\r\n TOUCHPAD: 'touchpad',\r\n THUMBSTICK: 'thumbstick',\r\n BUTTON: 'button'\r\n }),\r\n\r\n ButtonTouchThreshold: 0.05,\r\n\r\n AxisTouchThreshold: 0.1,\r\n\r\n VisualResponseProperty: Object.freeze({\r\n TRANSFORM: 'transform',\r\n VISIBILITY: 'visibility'\r\n })\r\n};\r\n\r\n/**\r\n * @description Static helper function to fetch a JSON file and turn it into a JS object\r\n * @param {string} path - Path to JSON file to be fetched\r\n */\r\nasync function fetchJsonFile(path) {\r\n const response = await fetch(path);\r\n if (!response.ok) {\r\n throw new Error(response.statusText);\r\n } else {\r\n return response.json();\r\n }\r\n}\r\n\r\nasync function fetchProfilesList(basePath) {\r\n if (!basePath) {\r\n throw new Error('No basePath supplied');\r\n }\r\n\r\n const profileListFileName = 'profilesList.json';\r\n const profilesList = await fetchJsonFile(`${basePath}/${profileListFileName}`);\r\n return profilesList;\r\n}\r\n\r\nasync function fetchProfile(xrInputSource, basePath, defaultProfile = null, getAssetPath = true) {\r\n if (!xrInputSource) {\r\n throw new Error('No xrInputSource supplied');\r\n }\r\n\r\n if (!basePath) {\r\n throw new Error('No basePath supplied');\r\n }\r\n\r\n // Get the list of profiles\r\n const supportedProfilesList = await fetchProfilesList(basePath);\r\n\r\n // Find the relative path to the first requested profile that is recognized\r\n let match;\r\n xrInputSource.profiles.some((profileId) => {\r\n const supportedProfile = supportedProfilesList[profileId];\r\n if (supportedProfile) {\r\n match = {\r\n profileId,\r\n profilePath: `${basePath}/${supportedProfile.path}`,\r\n deprecated: !!supportedProfile.deprecated\r\n };\r\n }\r\n return !!match;\r\n });\r\n\r\n if (!match) {\r\n if (!defaultProfile) {\r\n throw new Error('No matching profile name found');\r\n }\r\n\r\n const supportedProfile = supportedProfilesList[defaultProfile];\r\n if (!supportedProfile) {\r\n throw new Error(`No matching profile name found and default profile \"${defaultProfile}\" missing.`);\r\n }\r\n\r\n match = {\r\n profileId: defaultProfile,\r\n profilePath: `${basePath}/${supportedProfile.path}`,\r\n deprecated: !!supportedProfile.deprecated\r\n };\r\n }\r\n\r\n const profile = await fetchJsonFile(match.profilePath);\r\n\r\n let assetPath;\r\n if (getAssetPath) {\r\n let layout;\r\n if (xrInputSource.handedness === 'any') {\r\n layout = profile.layouts[Object.keys(profile.layouts)[0]];\r\n } else {\r\n layout = profile.layouts[xrInputSource.handedness];\r\n }\r\n if (!layout) {\r\n throw new Error(\r\n `No matching handedness, ${xrInputSource.handedness}, in profile ${match.profileId}`\r\n );\r\n }\r\n\r\n if (layout.assetPath) {\r\n assetPath = match.profilePath.replace('profile.json', layout.assetPath);\r\n }\r\n }\r\n\r\n return { profile, assetPath };\r\n}\r\n\r\n/** @constant {Object} */\r\nconst defaultComponentValues = {\r\n xAxis: 0,\r\n yAxis: 0,\r\n button: 0,\r\n state: Constants.ComponentState.DEFAULT\r\n};\r\n\r\n/**\r\n * @description Converts an X, Y coordinate from the range -1 to 1 (as reported by the Gamepad\r\n * API) to the range 0 to 1 (for interpolation). Also caps the X, Y values to be bounded within\r\n * a circle. This ensures that thumbsticks are not animated outside the bounds of their physical\r\n * range of motion and touchpads do not report touch locations off their physical bounds.\r\n * @param {number} x The original x coordinate in the range -1 to 1\r\n * @param {number} y The original y coordinate in the range -1 to 1\r\n */\r\nfunction normalizeAxes(x = 0, y = 0) {\r\n let xAxis = x;\r\n let yAxis = y;\r\n\r\n // Determine if the point is outside the bounds of the circle\r\n // and, if so, place it on the edge of the circle\r\n const hypotenuse = Math.sqrt((x * x) + (y * y));\r\n if (hypotenuse > 1) {\r\n const theta = Math.atan2(y, x);\r\n xAxis = Math.cos(theta);\r\n yAxis = Math.sin(theta);\r\n }\r\n\r\n // Scale and move the circle so values are in the interpolation range. The circle's origin moves\r\n // from (0, 0) to (0.5, 0.5). The circle's radius scales from 1 to be 0.5.\r\n const result = {\r\n normalizedXAxis: (xAxis * 0.5) + 0.5,\r\n normalizedYAxis: (yAxis * 0.5) + 0.5\r\n };\r\n return result;\r\n}\r\n\r\n/**\r\n * Contains the description of how the 3D model should visually respond to a specific user input.\r\n * This is accomplished by initializing the object with the name of a node in the 3D model and\r\n * property that need to be modified in response to user input, the name of the nodes representing\r\n * the allowable range of motion, and the name of the input which triggers the change. In response\r\n * to the named input changing, this object computes the appropriate weighting to use for\r\n * interpolating between the range of motion nodes.\r\n */\r\nclass VisualResponse {\r\n constructor(visualResponseDescription) {\r\n this.componentProperty = visualResponseDescription.componentProperty;\r\n this.states = visualResponseDescription.states;\r\n this.valueNodeName = visualResponseDescription.valueNodeName;\r\n this.valueNodeProperty = visualResponseDescription.valueNodeProperty;\r\n\r\n if (this.valueNodeProperty === Constants.VisualResponseProperty.TRANSFORM) {\r\n this.minNodeName = visualResponseDescription.minNodeName;\r\n this.maxNodeName = visualResponseDescription.maxNodeName;\r\n }\r\n\r\n // Initializes the response's current value based on default data\r\n this.value = 0;\r\n this.updateFromComponent(defaultComponentValues);\r\n }\r\n\r\n /**\r\n * Computes the visual response's interpolation weight based on component state\r\n * @param {Object} componentValues - The component from which to update\r\n * @param {number} xAxis - The reported X axis value of the component\r\n * @param {number} yAxis - The reported Y axis value of the component\r\n * @param {number} button - The reported value of the component's button\r\n * @param {string} state - The component's active state\r\n */\r\n updateFromComponent({\r\n xAxis, yAxis, button, state\r\n }) {\r\n const { normalizedXAxis, normalizedYAxis } = normalizeAxes(xAxis, yAxis);\r\n switch (this.componentProperty) {\r\n case Constants.ComponentProperty.X_AXIS:\r\n this.value = (this.states.includes(state)) ? normalizedXAxis : 0.5;\r\n break;\r\n case Constants.ComponentProperty.Y_AXIS:\r\n this.value = (this.states.includes(state)) ? normalizedYAxis : 0.5;\r\n break;\r\n case Constants.ComponentProperty.BUTTON:\r\n this.value = (this.states.includes(state)) ? button : 0;\r\n break;\r\n case Constants.ComponentProperty.STATE:\r\n if (this.valueNodeProperty === Constants.VisualResponseProperty.VISIBILITY) {\r\n this.value = (this.states.includes(state));\r\n } else {\r\n this.value = this.states.includes(state) ? 1.0 : 0.0;\r\n }\r\n break;\r\n default:\r\n throw new Error(`Unexpected visualResponse componentProperty ${this.componentProperty}`);\r\n }\r\n }\r\n}\r\n\r\nclass Component {\r\n /**\r\n * @param {Object} componentId - Id of the component\r\n * @param {Object} componentDescription - Description of the component to be created\r\n */\r\n constructor(componentId, componentDescription) {\r\n if (!componentId\r\n || !componentDescription\r\n || !componentDescription.visualResponses\r\n || !componentDescription.gamepadIndices\r\n || Object.keys(componentDescription.gamepadIndices).length === 0) {\r\n throw new Error('Invalid arguments supplied');\r\n }\r\n\r\n this.id = componentId;\r\n this.type = componentDescription.type;\r\n this.rootNodeName = componentDescription.rootNodeName;\r\n this.touchPointNodeName = componentDescription.touchPointNodeName;\r\n\r\n // Build all the visual responses for this component\r\n this.visualResponses = {};\r\n Object.keys(componentDescription.visualResponses).forEach((responseName) => {\r\n const visualResponse = new VisualResponse(componentDescription.visualResponses[responseName]);\r\n this.visualResponses[responseName] = visualResponse;\r\n });\r\n\r\n // Set default values\r\n this.gamepadIndices = Object.assign({}, componentDescription.gamepadIndices);\r\n\r\n this.values = {\r\n state: Constants.ComponentState.DEFAULT,\r\n button: (this.gamepadIndices.button !== undefined) ? 0 : undefined,\r\n xAxis: (this.gamepadIndices.xAxis !== undefined) ? 0 : undefined,\r\n yAxis: (this.gamepadIndices.yAxis !== undefined) ? 0 : undefined\r\n };\r\n }\r\n\r\n get data() {\r\n const data = { id: this.id, ...this.values };\r\n return data;\r\n }\r\n\r\n /**\r\n * @description Poll for updated data based on current gamepad state\r\n * @param {Object} gamepad - The gamepad object from which the component data should be polled\r\n */\r\n updateFromGamepad(gamepad) {\r\n // Set the state to default before processing other data sources\r\n this.values.state = Constants.ComponentState.DEFAULT;\r\n\r\n // Get and normalize button\r\n if (this.gamepadIndices.button !== undefined\r\n && gamepad.buttons.length > this.gamepadIndices.button) {\r\n const gamepadButton = gamepad.buttons[this.gamepadIndices.button];\r\n this.values.button = gamepadButton.value;\r\n this.values.button = (this.values.button < 0) ? 0 : this.values.button;\r\n this.values.button = (this.values.button > 1) ? 1 : this.values.button;\r\n\r\n // Set the state based on the button\r\n if (gamepadButton.pressed || this.values.button === 1) {\r\n this.values.state = Constants.ComponentState.PRESSED;\r\n } else if (gamepadButton.touched || this.values.button > Constants.ButtonTouchThreshold) {\r\n this.values.state = Constants.ComponentState.TOUCHED;\r\n }\r\n }\r\n\r\n // Get and normalize x axis value\r\n if (this.gamepadIndices.xAxis !== undefined\r\n && gamepad.axes.length > this.gamepadIndices.xAxis) {\r\n this.values.xAxis = gamepad.axes[this.gamepadIndices.xAxis];\r\n this.values.xAxis = (this.values.xAxis < -1) ? -1 : this.values.xAxis;\r\n this.values.xAxis = (this.values.xAxis > 1) ? 1 : this.values.xAxis;\r\n\r\n // If the state is still default, check if the xAxis makes it touched\r\n if (this.values.state === Constants.ComponentState.DEFAULT\r\n && Math.abs(this.values.xAxis) > Constants.AxisTouchThreshold) {\r\n this.values.state = Constants.ComponentState.TOUCHED;\r\n }\r\n }\r\n\r\n // Get and normalize Y axis value\r\n if (this.gamepadIndices.yAxis !== undefined\r\n && gamepad.axes.length > this.gamepadIndices.yAxis) {\r\n this.values.yAxis = gamepad.axes[this.gamepadIndices.yAxis];\r\n this.values.yAxis = (this.values.yAxis < -1) ? -1 : this.values.yAxis;\r\n this.values.yAxis = (this.values.yAxis > 1) ? 1 : this.values.yAxis;\r\n\r\n // If the state is still default, check if the yAxis makes it touched\r\n if (this.values.state === Constants.ComponentState.DEFAULT\r\n && Math.abs(this.values.yAxis) > Constants.AxisTouchThreshold) {\r\n this.values.state = Constants.ComponentState.TOUCHED;\r\n }\r\n }\r\n\r\n // Update the visual response weights based on the current component data\r\n Object.values(this.visualResponses).forEach((visualResponse) => {\r\n visualResponse.updateFromComponent(this.values);\r\n });\r\n }\r\n}\r\n\r\n/**\r\n * @description Builds a motion controller with components and visual responses based on the\r\n * supplied profile description. Data is polled from the xrInputSource's gamepad.\r\n * @author Nell Waliczek / https://github.com/NellWaliczek\r\n*/\r\nclass MotionController {\r\n /**\r\n * @param {Object} xrInputSource - The XRInputSource to build the MotionController around\r\n * @param {Object} profile - The best matched profile description for the supplied xrInputSource\r\n * @param {Object} assetUrl\r\n */\r\n constructor(xrInputSource, profile, assetUrl) {\r\n if (!xrInputSource) {\r\n throw new Error('No xrInputSource supplied');\r\n }\r\n\r\n if (!profile) {\r\n throw new Error('No profile supplied');\r\n }\r\n\r\n this.xrInputSource = xrInputSource;\r\n this.assetUrl = assetUrl;\r\n this.id = profile.profileId;\r\n\r\n // Build child components as described in the profile description\r\n this.layoutDescription = profile.layouts[xrInputSource.handedness];\r\n this.components = {};\r\n Object.keys(this.layoutDescription.components).forEach((componentId) => {\r\n const componentDescription = this.layoutDescription.components[componentId];\r\n this.components[componentId] = new Component(componentId, componentDescription);\r\n });\r\n\r\n // Initialize components based on current gamepad state\r\n this.updateFromGamepad();\r\n }\r\n\r\n get gripSpace() {\r\n return this.xrInputSource.gripSpace;\r\n }\r\n\r\n get targetRaySpace() {\r\n return this.xrInputSource.targetRaySpace;\r\n }\r\n\r\n /**\r\n * @description Returns a subset of component data for simplified debugging\r\n */\r\n get data() {\r\n const data = [];\r\n Object.values(this.components).forEach((component) => {\r\n data.push(component.data);\r\n });\r\n return data;\r\n }\r\n\r\n /**\r\n * @description Poll for updated data based on current gamepad state\r\n */\r\n updateFromGamepad() {\r\n Object.values(this.components).forEach((component) => {\r\n component.updateFromGamepad(this.xrInputSource.gamepad);\r\n });\r\n }\r\n}\r\n\r\nexport { Constants, MotionController, fetchProfile, fetchProfilesList };\r\n","import {\r\n\tMesh,\r\n\tMeshBasicMaterial,\r\n\tObject3D,\r\n\tQuaternion,\r\n\tSphereBufferGeometry,\r\n} from '../build/three.module.js';\r\n\r\nimport { GLTFLoader } from '../loaders/GLTFLoader.js';\r\n\r\nimport {\r\n\tConstants as MotionControllerConstants,\r\n\tfetchProfile,\r\n\tMotionController\r\n} from '../libs/motion-controllers.module.js';\r\n\r\nconst DEFAULT_PROFILES_PATH = 'https://cdn.jsdelivr.net/npm/@webxr-input-profiles/assets@1.0/dist/profiles';\r\nconst DEFAULT_PROFILE = 'generic-trigger';\r\n\r\nfunction XRControllerModel( ) {\r\n\r\n\tObject3D.call( this );\r\n\r\n\tthis.motionController = null;\r\n\tthis.envMap = null;\r\n\r\n}\r\n\r\nXRControllerModel.prototype = Object.assign( Object.create( Object3D.prototype ), {\r\n\r\n\tconstructor: XRControllerModel,\r\n\r\n\tsetEnvironmentMap: function ( envMap ) {\r\n\r\n\t\tif ( this.envMap == envMap ) {\r\n\r\n\t\t\treturn this;\r\n\r\n\t\t}\r\n\r\n\t\tthis.envMap = envMap;\r\n\t\tthis.traverse( ( child ) => {\r\n\r\n\t\t\tif ( child.isMesh ) {\r\n\r\n\t\t\t\tchild.material.envMap = this.envMap;\r\n\t\t\t\tchild.material.needsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\r\n\t\treturn this;\r\n\r\n\t},\r\n\r\n\t/**\r\n\t * Polls data from the XRInputSource and updates the model's components to match\r\n\t * the real world data\r\n\t */\r\n\tupdateMatrixWorld: function ( force ) {\r\n\r\n\t\tObject3D.prototype.updateMatrixWorld.call( this, force );\r\n\r\n\t\tif ( ! this.motionController ) return;\r\n\r\n\t\t// Cause the MotionController to poll the Gamepad for data\r\n\t\tthis.motionController.updateFromGamepad();\r\n\r\n\t\t// Update the 3D model to reflect the button, thumbstick, and touchpad state\r\n\t\tObject.values( this.motionController.components ).forEach( ( component ) => {\r\n\r\n\t\t\t// Update node data based on the visual responses' current states\r\n\t\t\tObject.values( component.visualResponses ).forEach( ( visualResponse ) => {\r\n\r\n\t\t\t\tconst { valueNode, minNode, maxNode, value, valueNodeProperty } = visualResponse;\r\n\r\n\t\t\t\t// Skip if the visual response node is not found. No error is needed,\r\n\t\t\t\t// because it will have been reported at load time.\r\n\t\t\t\tif ( ! valueNode ) return;\r\n\r\n\t\t\t\t// Calculate the new properties based on the weight supplied\r\n\t\t\t\tif ( valueNodeProperty === MotionControllerConstants.VisualResponseProperty.VISIBILITY ) {\r\n\r\n\t\t\t\t\tvalueNode.visible = value;\r\n\r\n\t\t\t\t} else if ( valueNodeProperty === MotionControllerConstants.VisualResponseProperty.TRANSFORM ) {\r\n\r\n\t\t\t\t\tQuaternion.slerp(\r\n\t\t\t\t\t\tminNode.quaternion,\r\n\t\t\t\t\t\tmaxNode.quaternion,\r\n\t\t\t\t\t\tvalueNode.quaternion,\r\n\t\t\t\t\t\tvalue\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tvalueNode.position.lerpVectors(\r\n\t\t\t\t\t\tminNode.position,\r\n\t\t\t\t\t\tmaxNode.position,\r\n\t\t\t\t\t\tvalue\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t} );\r\n\r\n\t\t} );\r\n\r\n\t}\r\n\r\n} );\r\n\r\n/**\r\n * Walks the model's tree to find the nodes needed to animate the components and\r\n * saves them to the motionContoller components for use in the frame loop. When\r\n * touchpads are found, attaches a touch dot to them.\r\n */\r\nfunction findNodes( motionController, scene ) {\r\n\r\n\t// Loop through the components and find the nodes needed for each components' visual responses\r\n\tObject.values( motionController.components ).forEach( ( component ) => {\r\n\r\n\t\tconst { type, touchPointNodeName, visualResponses } = component;\r\n\r\n\t\tif ( type === MotionControllerConstants.ComponentType.TOUCHPAD ) {\r\n\r\n\t\t\tcomponent.touchPointNode = scene.getObjectByName( touchPointNodeName );\r\n\t\t\tif ( component.touchPointNode ) {\r\n\r\n\t\t\t\t// Attach a touch dot to the touchpad.\r\n\t\t\t\tconst sphereGeometry = new SphereBufferGeometry( 0.001 );\r\n\t\t\t\tconst material = new MeshBasicMaterial( { color: 0x0000FF } );\r\n\t\t\t\tconst sphere = new Mesh( sphereGeometry, material );\r\n\t\t\t\tcomponent.touchPointNode.add( sphere );\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconsole.warn( `Could not find touch dot, ${component.touchPointNodeName}, in touchpad component ${component.id}` );\r\n\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t// Loop through all the visual responses to be applied to this component\r\n\t\tObject.values( visualResponses ).forEach( ( visualResponse ) => {\r\n\r\n\t\t\tconst { valueNodeName, minNodeName, maxNodeName, valueNodeProperty } = visualResponse;\r\n\r\n\t\t\t// If animating a transform, find the two nodes to be interpolated between.\r\n\t\t\tif ( valueNodeProperty === MotionControllerConstants.VisualResponseProperty.TRANSFORM ) {\r\n\r\n\t\t\t\tvisualResponse.minNode = scene.getObjectByName( minNodeName );\r\n\t\t\t\tvisualResponse.maxNode = scene.getObjectByName( maxNodeName );\r\n\r\n\t\t\t\t// If the extents cannot be found, skip this animation\r\n\t\t\t\tif ( ! visualResponse.minNode ) {\r\n\r\n\t\t\t\t\tconsole.warn( `Could not find ${minNodeName} in the model` );\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ( ! visualResponse.maxNode ) {\r\n\r\n\t\t\t\t\tconsole.warn( `Could not find ${maxNodeName} in the model` );\r\n\t\t\t\t\treturn;\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t// If the target node cannot be found, skip this animation\r\n\t\t\tvisualResponse.valueNode = scene.getObjectByName( valueNodeName );\r\n\t\t\tif ( ! visualResponse.valueNode ) {\r\n\r\n\t\t\t\tconsole.warn( `Could not find ${valueNodeName} in the model` );\r\n\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\r\n\t} );\r\n\r\n}\r\n\r\nfunction addAssetSceneToControllerModel( controllerModel, scene ) {\r\n\r\n\t// Find the nodes needed for animation and cache them on the motionController.\r\n\tfindNodes( controllerModel.motionController, scene );\r\n\r\n\t// Apply any environment map that the mesh already has set.\r\n\tif ( controllerModel.envMap ) {\r\n\r\n\t\tscene.traverse( ( child ) => {\r\n\r\n\t\t\tif ( child.isMesh ) {\r\n\r\n\t\t\t\tchild.material.envMap = controllerModel.envMap;\r\n\t\t\t\tchild.material.needsUpdate = true;\r\n\r\n\t\t\t}\r\n\r\n\t\t} );\r\n\r\n\t}\r\n\r\n\t// Add the glTF scene to the controllerModel.\r\n\tcontrollerModel.add( scene );\r\n\r\n}\r\n\r\nvar XRControllerModelFactory = ( function () {\r\n\r\n\tfunction XRControllerModelFactory( gltfLoader = null ) {\r\n\r\n\t\tthis.gltfLoader = gltfLoader;\r\n\t\tthis.path = DEFAULT_PROFILES_PATH;\r\n\t\tthis._assetCache = {};\r\n\r\n\t\t// If a GLTFLoader wasn't supplied to the constructor create a new one.\r\n\t\tif ( ! this.gltfLoader ) {\r\n\r\n\t\t\tthis.gltfLoader = new GLTFLoader();\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tXRControllerModelFactory.prototype = {\r\n\r\n\t\tconstructor: XRControllerModelFactory,\r\n\r\n\t\tcreateControllerModel: function ( controller ) {\r\n\r\n\t\t\tconst controllerModel = new XRControllerModel();\r\n\t\t\tlet scene = null;\r\n\r\n\t\t\tcontroller.addEventListener( 'connected', ( event ) => {\r\n\r\n\t\t\t\tconst xrInputSource = event.data;\r\n\r\n\t\t\t\tif ( xrInputSource.targetRayMode !== 'tracked-pointer' || ! xrInputSource.gamepad ) return;\r\n\r\n\t\t\t\tfetchProfile( xrInputSource, this.path, DEFAULT_PROFILE ).then( ( { profile, assetPath } ) => {\r\n\r\n\t\t\t\t\tcontrollerModel.motionController = new MotionController(\r\n\t\t\t\t\t\txrInputSource,\r\n\t\t\t\t\t\tprofile,\r\n\t\t\t\t\t\tassetPath\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tconst cachedAsset = this._assetCache[ controllerModel.motionController.assetUrl ];\r\n\t\t\t\t\tif ( cachedAsset ) {\r\n\r\n\t\t\t\t\t\tscene = cachedAsset.scene.clone();\r\n\r\n\t\t\t\t\t\taddAssetSceneToControllerModel( controllerModel, scene );\r\n\r\n\t\t\t\t\t} else {\r\n\r\n\t\t\t\t\t\tif ( ! this.gltfLoader ) {\r\n\r\n\t\t\t\t\t\t\tthrow new Error( 'GLTFLoader not set.' );\r\n\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tthis.gltfLoader.setPath( '' );\r\n\t\t\t\t\t\tthis.gltfLoader.load( controllerModel.motionController.assetUrl, ( asset ) => {\r\n\r\n\t\t\t\t\t\t\tthis._assetCache[ controllerModel.motionController.assetUrl ] = asset;\r\n\r\n\t\t\t\t\t\t\tscene = asset.scene.clone();\r\n\r\n\t\t\t\t\t\t\taddAssetSceneToControllerModel( controllerModel, scene );\r\n\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\tnull,\r\n\t\t\t\t\t\t() => {\r\n\r\n\t\t\t\t\t\t\tthrow new Error( `Asset ${controllerModel.motionController.assetUrl} missing or malformed.` );\r\n\r\n\t\t\t\t\t\t} );\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t} ).catch( ( err ) => {\r\n\r\n\t\t\t\t\tconsole.warn( err );\r\n\r\n\t\t\t\t} );\r\n\r\n\t\t\t} );\r\n\r\n\t\t\tcontroller.addEventListener( 'disconnected', () => {\r\n\r\n\t\t\t\tcontrollerModel.motionController = null;\r\n\t\t\t\tcontrollerModel.remove( scene );\r\n\t\t\t\tscene = null;\r\n\r\n\t\t\t} );\r\n\r\n\t\t\treturn controllerModel;\r\n\r\n\t\t}\r\n\r\n\t};\r\n\r\n\treturn XRControllerModelFactory;\r\n\r\n} )();\r\n\r\nexport { XRControllerModelFactory };\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {EventDispatcher} from \"../EventDispatcher.js\";\r\nimport { XRControllerModelFactory } from '../../libs/three.js/webxr/XRControllerModelFactory.js';\r\nimport {Line2} from \"../../libs/three.js/lines/Line2.js\";\r\nimport {LineGeometry} from \"../../libs/three.js/lines/LineGeometry.js\";\r\nimport {LineMaterial} from \"../../libs/three.js/lines/LineMaterial.js\";\r\n\r\nlet fakeCam = new THREE.PerspectiveCamera();\r\n\r\nfunction toScene(vec, ref){\r\n\tlet node = ref.clone();\r\n\tnode.updateMatrix();\r\n\tnode.updateMatrixWorld();\r\n\r\n\tlet result = vec.clone().applyMatrix4(node.matrix);\r\n\tresult.z -= 0.8 * node.scale.x;\r\n\r\n\treturn result;\r\n};\r\n\r\nfunction computeMove(vrControls, controller){\r\n\r\n\tif(!controller || !controller.inputSource || !controller.inputSource.gamepad){\r\n\t\treturn null;\r\n\t}\r\n\r\n\tlet pad = controller.inputSource.gamepad;\r\n\r\n\tlet axes = pad.axes;\r\n\t// [0,1] are for touchpad, [2,3] for thumbsticks?\r\n\tlet y = 0;\r\n\tif(axes.length === 2){\r\n\t\ty = axes[1];\r\n\t}else if(axes.length === 4){\r\n\t\ty = axes[3];\r\n\t}\r\n\r\n\ty = Math.sign(y) * (2 * y) ** 2;\r\n\r\n\tlet maxSize = 0;\r\n\tfor(let pc of viewer.scene.pointclouds){\r\n\t\tlet size = pc.boundingBox.min.distanceTo(pc.boundingBox.max);\r\n\t\tmaxSize = Math.max(maxSize, size);\r\n\t}\r\n\tlet multiplicator = Math.pow(maxSize, 0.5) / 2;\r\n\r\n\tlet scale = vrControls.node.scale.x;\r\n\tlet moveSpeed = viewer.getMoveSpeed();\r\n\tlet amount = multiplicator * y * (moveSpeed ** 0.5) / scale;\r\n\r\n\r\n\tlet rotation = new THREE.Quaternion().setFromEuler(controller.rotation);\r\n\tlet dir = new THREE.Vector3(0, 0, -1);\r\n\tdir.applyQuaternion(rotation);\r\n\r\n\tlet move = dir.clone().multiplyScalar(amount);\r\n\r\n\tlet p1 = vrControls.toScene(controller.position);\r\n\tlet p2 = vrControls.toScene(controller.position.clone().add(move));\r\n\r\n\tmove = p2.clone().sub(p1);\r\n\t\r\n\treturn move;\r\n};\r\n\r\n\r\nclass FlyMode{\r\n\r\n\tconstructor(vrControls){\r\n\t\tthis.moveFactor = 1;\r\n\t\tthis.dbgLabel = null;\r\n\t}\r\n\r\n\tstart(vrControls){\r\n\t\tif(!this.dbgLabel){\r\n\t\t\tthis.dbgLabel = new Potree.TextSprite(\"abc\");\r\n\t\t\tthis.dbgLabel.name = \"debug label\";\r\n\t\t\tvrControls.viewer.sceneVR.add(this.dbgLabel);\r\n\t\t\tthis.dbgLabel.visible = false;\r\n\t\t}\r\n\t}\r\n\t\r\n\tend(){\r\n\r\n\t}\r\n\r\n\tupdate(vrControls, delta){\r\n\r\n\t\tlet primary = vrControls.cPrimary;\r\n\t\tlet secondary = vrControls.cSecondary;\r\n\r\n\t\tlet move1 = computeMove(vrControls, primary);\r\n\t\tlet move2 = computeMove(vrControls, secondary);\r\n\r\n\r\n\t\tif(!move1){\r\n\t\t\tmove1 = new THREE.Vector3();\r\n\t\t}\r\n\r\n\t\tif(!move2){\r\n\t\t\tmove2 = new THREE.Vector3();\r\n\t\t}\r\n\r\n\t\tlet move = move1.clone().add(move2);\r\n\r\n\t\tmove.multiplyScalar(-delta * this.moveFactor);\r\n\t\tvrControls.node.position.add(move);\r\n\t\t\r\n\r\n\t\tlet scale = vrControls.node.scale.x;\r\n\r\n\t\tlet camVR = vrControls.viewer.renderer.xr.getCamera(fakeCam);\r\n\t\t\r\n\t\tlet vrPos = camVR.getWorldPosition(new THREE.Vector3());\r\n\t\tlet vrDir = camVR.getWorldDirection(new THREE.Vector3());\r\n\t\tlet vrTarget = vrPos.clone().add(vrDir.multiplyScalar(scale));\r\n\r\n\t\tlet scenePos = toScene(vrPos, vrControls.node);\r\n\t\tlet sceneDir = toScene(vrPos.clone().add(vrDir), vrControls.node).sub(scenePos);\r\n\t\tsceneDir.normalize().multiplyScalar(scale);\r\n\t\tlet sceneTarget = scenePos.clone().add(sceneDir);\r\n\r\n\t\tvrControls.viewer.scene.view.setView(scenePos, sceneTarget);\r\n\r\n\t\tif(Potree.debug.message){\r\n\t\t\tthis.dbgLabel.visible = true;\r\n\t\t\tthis.dbgLabel.setText(Potree.debug.message);\r\n\t\t\tthis.dbgLabel.scale.set(0.1, 0.1, 0.1);\r\n\t\t\tthis.dbgLabel.position.copy(primary.position);\r\n\t\t}\r\n\t}\r\n};\r\n\r\nclass TranslationMode{\r\n\r\n\tconstructor(){\r\n\t\tthis.controller = null;\r\n\t\tthis.startPos = null;\r\n\t\tthis.debugLine = null;\r\n\t}\r\n\r\n\tstart(vrControls){\r\n\t\tthis.controller = vrControls.triggered.values().next().value;\r\n\t\tthis.startPos = vrControls.node.position.clone();\r\n\t}\r\n\t\r\n\tend(vrControls){\r\n\r\n\t}\r\n\r\n\tupdate(vrControls, delta){\r\n\r\n\t\tlet start = this.controller.start.position;\r\n\t\tlet end = this.controller.position;\r\n\r\n\t\tstart = vrControls.toScene(start);\r\n\t\tend = vrControls.toScene(end);\r\n\r\n\t\tlet diff = end.clone().sub(start);\r\n\t\tdiff.set(-diff.x, -diff.y, -diff.z);\r\n\r\n\t\tlet pos = new THREE.Vector3().addVectors(this.startPos, diff);\r\n\r\n\t\tvrControls.node.position.copy(pos);\r\n\t}\r\n\r\n};\r\n\r\nclass RotScaleMode{\r\n\r\n\tconstructor(){\r\n\t\tthis.line = null;\r\n\t\tthis.startState = null;\r\n\t}\r\n\r\n\tstart(vrControls){\r\n\t\tif(!this.line){\r\n\t\t\tthis.line = Potree.Utils.debugLine(\r\n\t\t\t\tvrControls.viewer.sceneVR, \r\n\t\t\t\tnew THREE.Vector3(0, 0, 0),\r\n\t\t\t\tnew THREE.Vector3(0, 0, 0),\r\n\t\t\t\t0xffff00,\r\n\t\t\t);\r\n\r\n\t\t\tthis.dbgLabel = new Potree.TextSprite(\"abc\");\r\n\t\t\tthis.dbgLabel.scale.set(0.1, 0.1, 0.1);\r\n\t\t\tvrControls.viewer.sceneVR.add(this.dbgLabel);\r\n\t\t}\r\n\r\n\t\tthis.line.node.visible = true;\r\n\r\n\t\tthis.startState = vrControls.node.clone();\r\n\t}\r\n\r\n\tend(vrControls){\r\n\t\tthis.line.node.visible = false;\r\n\t\tthis.dbgLabel.visible = false;\r\n\t}\r\n\r\n\tupdate(vrControls, delta){\r\n\r\n\t\tlet start_c1 = vrControls.cPrimary.start.position.clone();\r\n\t\tlet start_c2 = vrControls.cSecondary.start.position.clone();\r\n\t\tlet start_center = start_c1.clone().add(start_c2).multiplyScalar(0.5);\r\n\t\tlet start_c1_c2 = start_c2.clone().sub(start_c1);\r\n\t\tlet end_c1 = vrControls.cPrimary.position.clone();\r\n\t\tlet end_c2 = vrControls.cSecondary.position.clone();\r\n\t\tlet end_center = end_c1.clone().add(end_c2).multiplyScalar(0.5);\r\n\t\tlet end_c1_c2 = end_c2.clone().sub(end_c1);\r\n\r\n\t\tlet d1 = start_c1_c2.length();\r\n\t\tlet d2 = end_c1_c2.length();\r\n\r\n\t\tlet angleStart = new THREE.Vector2(start_c1_c2.x, start_c1_c2.z).angle();\r\n\t\tlet angleEnd = new THREE.Vector2(end_c1_c2.x, end_c1_c2.z).angle();\r\n\t\tlet angleDiff = angleEnd - angleStart;\r\n\t\t\r\n\t\tlet scale = d2 / d1;\r\n\r\n\t\tlet node = this.startState.clone();\r\n\t\tnode.updateMatrix();\r\n\t\tnode.matrixAutoUpdate = false;\r\n\r\n\t\tlet mToOrigin = new THREE.Matrix4().makeTranslation(...toScene(start_center, this.startState).multiplyScalar(-1).toArray());\r\n\t\tlet mToStart = new THREE.Matrix4().makeTranslation(...toScene(start_center, this.startState).toArray());\r\n\t\tlet mRotate = new THREE.Matrix4().makeRotationZ(angleDiff);\r\n\t\tlet mScale = new THREE.Matrix4().makeScale(1 / scale, 1 / scale, 1 / scale);\r\n\r\n\t\tnode.applyMatrix4(mToOrigin);\r\n\t\tnode.applyMatrix4(mRotate);\r\n\t\tnode.applyMatrix4(mScale);\r\n\t\tnode.applyMatrix4(mToStart);\r\n\r\n\t\tlet oldScenePos = toScene(start_center, this.startState);\r\n\t\tlet newScenePos = toScene(end_center, node);\r\n\t\tlet toNew = oldScenePos.clone().sub(newScenePos);\r\n\t\tlet mToNew = new THREE.Matrix4().makeTranslation(...toNew.toArray());\r\n\t\tnode.applyMatrix4(mToNew);\r\n\r\n\t\tnode.matrix.decompose(node.position, node.quaternion, node.scale );\r\n\r\n\t\tvrControls.node.position.copy(node.position);\r\n\t\tvrControls.node.quaternion.copy(node.quaternion);\r\n\t\tvrControls.node.scale.copy(node.scale);\r\n\t\tvrControls.node.updateMatrix();\r\n\r\n\t\t{\r\n\t\t\tlet scale = vrControls.node.scale.x;\r\n\t\t\tlet camVR = vrControls.viewer.renderer.xr.getCamera(fakeCam);\r\n\t\t\t\r\n\t\t\tlet vrPos = camVR.getWorldPosition(new THREE.Vector3());\r\n\t\t\tlet vrDir = camVR.getWorldDirection(new THREE.Vector3());\r\n\t\t\tlet vrTarget = vrPos.clone().add(vrDir.multiplyScalar(scale));\r\n\r\n\t\t\tlet scenePos = toScene(vrPos, this.startState);\r\n\t\t\tlet sceneDir = toScene(vrPos.clone().add(vrDir), this.startState).sub(scenePos);\r\n\t\t\tsceneDir.normalize().multiplyScalar(scale);\r\n\t\t\tlet sceneTarget = scenePos.clone().add(sceneDir);\r\n\r\n\t\t\tvrControls.viewer.scene.view.setView(scenePos, sceneTarget);\r\n\t\t\tvrControls.viewer.setMoveSpeed(scale);\r\n\t\t}\r\n\r\n\t\t{ // update \"GUI\"\r\n\t\t\tthis.line.set(end_c1, end_c2);\r\n\r\n\t\t\tlet scale = vrControls.node.scale.x;\r\n\t\t\tthis.dbgLabel.visible = true;\r\n\t\t\tthis.dbgLabel.position.copy(end_center);\r\n\t\t\tthis.dbgLabel.setText(`scale: 1 : ${scale.toFixed(2)}`);\r\n\t\t\tthis.dbgLabel.scale.set(0.05, 0.05, 0.05);\r\n\t\t}\r\n\r\n\t}\r\n\r\n};\r\n\r\n\r\nexport class VRControls extends EventDispatcher{\r\n\r\n\tconstructor(viewer){\r\n\t\tsuper(viewer);\r\n\r\n\t\tthis.viewer = viewer;\r\n\r\n\t\tviewer.addEventListener(\"vr_start\", this.onStart.bind(this));\r\n\t\tviewer.addEventListener(\"vr_end\", this.onEnd.bind(this));\r\n\r\n\t\tthis.node = new THREE.Object3D();\r\n\t\tthis.node.up.set(0, 0, 1);\r\n\t\tthis.triggered = new Set();\r\n\r\n\t\tlet xr = viewer.renderer.xr;\r\n\r\n\t\t{ // lights\r\n\t\t\t\r\n\t\t\tconst light = new THREE.PointLight( 0xffffff, 5, 0, 1 );\r\n\t\t\tlight.position.set(0, 2, 0);\r\n\t\t\tthis.viewer.sceneVR.add(light)\r\n\t\t}\r\n\r\n\t\tthis.menu = null;\r\n\r\n\t\tconst controllerModelFactory = new XRControllerModelFactory();\r\n\r\n\t\tlet sg = new THREE.SphereGeometry(1, 32, 32);\r\n\t\tlet sm = new THREE.MeshNormalMaterial();\r\n\r\n\t\t{ // setup primary controller\r\n\t\t\tlet controller = xr.getController(0);\r\n\r\n\t\t\tlet grip = xr.getControllerGrip(0);\r\n\t\t\tgrip.name = \"grip(0)\";\r\n\r\n\t\t\t// ADD CONTROLLERMODEL\r\n\t\t\tgrip.add( controllerModelFactory.createControllerModel( grip ) );\r\n\t\t\tthis.viewer.sceneVR.add(grip);\r\n\r\n\t\t\t// ADD SPHERE\r\n\t\t\tlet sphere = new THREE.Mesh(sg, sm);\r\n\t\t\tsphere.scale.set(0.005, 0.005, 0.005);\r\n\r\n\t\t\tcontroller.add(sphere);\r\n\t\t\tcontroller.visible = true;\r\n\t\t\tthis.viewer.sceneVR.add(controller);\r\n\r\n\t\t\t{ // ADD LINE\r\n\t\t\t\t\r\n\t\t\t\tlet lineGeometry = new LineGeometry();\r\n\r\n\t\t\t\tlineGeometry.setPositions([\r\n\t\t\t\t\t0, 0, -0.15,\r\n\t\t\t\t\t0, 0, 0.05,\r\n\t\t\t\t]);\r\n\r\n\t\t\t\tlet lineMaterial = new LineMaterial({ \r\n\t\t\t\t\tcolor: 0xff0000, \r\n\t\t\t\t\tlinewidth: 2, \r\n\t\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst line = new Line2(lineGeometry, lineMaterial);\r\n\t\t\t\t\r\n\t\t\t\tcontroller.add(line);\r\n\t\t\t}\r\n\r\n\r\n\t\t\tcontroller.addEventListener( 'connected', function ( event ) {\r\n\t\t\t\tconst xrInputSource = event.data;\r\n\t\t\t\tcontroller.inputSource = xrInputSource;\r\n\t\t\t\t// initInfo(controller);\r\n\t\t\t});\r\n\r\n\t\t\tcontroller.addEventListener( 'selectstart', () => {this.onTriggerStart(controller)});\r\n\t\t\tcontroller.addEventListener( 'selectend', () => {this.onTriggerEnd(controller)});\r\n\r\n\t\t\tthis.cPrimary = controller;\r\n\r\n\t\t}\r\n\r\n\t\t{ // setup secondary controller\r\n\t\t\tlet controller = xr.getController(1);\r\n\r\n\t\t\tlet grip = xr.getControllerGrip(1);\r\n\r\n\t\t\t// ADD CONTROLLER MODEL\r\n\t\t\tlet model = controllerModelFactory.createControllerModel( grip );\r\n\t\t\tgrip.add(model);\r\n\t\t\tthis.viewer.sceneVR.add( grip );\r\n\r\n\t\t\t// ADD SPHERE\r\n\t\t\tlet sphere = new THREE.Mesh(sg, sm);\r\n\t\t\tsphere.scale.set(0.005, 0.005, 0.005);\r\n\t\t\tcontroller.add(sphere);\r\n\t\t\tcontroller.visible = true;\r\n\t\t\tthis.viewer.sceneVR.add(controller);\r\n\r\n\t\t\t{ // ADD LINE\r\n\t\t\t\t\r\n\t\t\t\tlet lineGeometry = new LineGeometry();\r\n\r\n\t\t\t\tlineGeometry.setPositions([\r\n\t\t\t\t\t0, 0, -0.15,\r\n\t\t\t\t\t0, 0, 0.05,\r\n\t\t\t\t]);\r\n\r\n\t\t\t\tlet lineMaterial = new LineMaterial({ \r\n\t\t\t\t\tcolor: 0xff0000, \r\n\t\t\t\t\tlinewidth: 2, \r\n\t\t\t\t\tresolution: new THREE.Vector2(1000, 1000),\r\n\t\t\t\t});\r\n\r\n\t\t\t\tconst line = new Line2(lineGeometry, lineMaterial);\r\n\t\t\t\t\r\n\t\t\t\tcontroller.add(line);\r\n\t\t\t}\r\n\r\n\t\t\tcontroller.addEventListener( 'connected', (event) => {\r\n\t\t\t\tconst xrInputSource = event.data;\r\n\t\t\t\tcontroller.inputSource = xrInputSource;\r\n\t\t\t\tthis.initMenu(controller);\r\n\t\t\t});\r\n\r\n\t\t\tcontroller.addEventListener( 'selectstart', () => {this.onTriggerStart(controller)});\r\n\t\t\tcontroller.addEventListener( 'selectend', () => {this.onTriggerEnd(controller)});\r\n\r\n\t\t\tthis.cSecondary = controller;\r\n\t\t}\r\n\r\n\t\tthis.mode_fly = new FlyMode();\r\n\t\tthis.mode_translate = new TranslationMode();\r\n\t\tthis.mode_rotScale = new RotScaleMode();\r\n\t\tthis.setMode(this.mode_fly);\r\n\t}\r\n\r\n\tcreateSlider(label, min, max){\r\n\r\n\t\tlet sg = new THREE.SphereGeometry(1, 8, 8);\r\n\t\tlet cg = new THREE.CylinderGeometry(1, 1, 1, 8);\r\n\t\tlet matHandle = new THREE.MeshBasicMaterial({color: 0xff0000});\r\n\t\tlet matScale = new THREE.MeshBasicMaterial({color: 0xff4444});\r\n\t\tlet matValue = new THREE.MeshNormalMaterial();\r\n\r\n\t\tlet node = new THREE.Object3D(\"slider\");\r\n\t\tlet nLabel = new Potree.TextSprite(`${label}: 0`);\r\n\t\tlet nMax = new THREE.Mesh(sg, matHandle);\r\n\t\tlet nMin = new THREE.Mesh(sg, matHandle);\r\n\t\tlet nValue = new THREE.Mesh(sg, matValue);\r\n\t\tlet nScale = new THREE.Mesh(cg, matScale);\r\n\r\n\t\tnLabel.scale.set(0.2, 0.2, 0.2);\r\n\t\tnLabel.position.set(0, 0.35, 0);\r\n\r\n\t\tnMax.scale.set(0.02, 0.02, 0.02);\r\n\t\tnMax.position.set(0, 0.25, 0);\r\n\r\n\t\tnMin.scale.set(0.02, 0.02, 0.02);\r\n\t\tnMin.position.set(0, -0.25, 0);\r\n\r\n\t\tnValue.scale.set(0.02, 0.02, 0.02);\r\n\t\tnValue.position.set(0, 0, 0);\r\n\r\n\t\tnScale.scale.set(0.005, 0.5, 0.005);\r\n\r\n\t\tnode.add(nLabel);\r\n\t\tnode.add(nMax);\r\n\t\tnode.add(nMin);\r\n\t\tnode.add(nValue);\r\n\t\tnode.add(nScale);\r\n\r\n\t\treturn node;\r\n\t}\r\n\r\n\tcreateInfo(){ \r\n\r\n\t\tlet texture = new THREE.TextureLoader().load(`${Potree.resourcePath}/images/vr_controller_help.jpg`);\r\n\t\tlet plane = new THREE.PlaneBufferGeometry(1, 1, 1, 1);\r\n\t\tlet infoMaterial = new THREE.MeshBasicMaterial({map: texture});\r\n\t\tlet infoNode = new THREE.Mesh(plane, infoMaterial);\r\n\r\n\t\treturn infoNode;\r\n\t}\r\n\r\n\tinitMenu(controller){\r\n\r\n\t\tif(this.menu){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet node = new THREE.Object3D(\"vr menu\");\r\n\r\n\t\t// let nSlider = this.createSlider(\"speed\", 0, 1);\r\n\t\t// let nInfo = this.createInfo();\r\n\r\n\t\t// // node.add(nSlider);\r\n\t\t// node.add(nInfo);\r\n\r\n\t\t// {\r\n\t\t// \tnode.rotation.set(-1.5, 0, 0)\r\n\t\t// \tnode.scale.set(0.3, 0.3, 0.3);\r\n\t\t// \tnode.position.set(-0.2, -0.002, -0.1)\r\n\r\n\t\t// \t// nInfo.position.set(0.5, 0, 0);\r\n\t\t// \tnInfo.scale.set(0.8, 0.6, 0);\r\n\r\n\t\t// \t// controller.add(node);\r\n\t\t// }\r\n\r\n\t\t// node.position.set(-0.3, 1.2, 0.2);\r\n\t\t// node.scale.set(0.3, 0.2, 0.3);\r\n\t\t// node.lookAt(new THREE.Vector3(0, 1.5, 0.1));\r\n\r\n\t\t// this.viewer.sceneVR.add(node);\r\n\r\n\t\tthis.menu = node;\r\n\r\n\t\t// window.vrSlider = nSlider;\r\n\t\twindow.vrMenu = node;\r\n\r\n\t}\r\n\r\n\r\n\ttoScene(vec){\r\n\t\tlet camVR = this.getCamera();\r\n\r\n\t\tlet mat = camVR.matrixWorld;\r\n\t\tlet result = vec.clone().applyMatrix4(mat);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\ttoVR(vec){\r\n\t\tlet camVR = this.getCamera();\r\n\r\n\t\tlet mat = camVR.matrixWorld.clone();\r\n\t\tmat.invert();\r\n\t\tlet result = vec.clone().applyMatrix4(mat);\r\n\r\n\t\treturn result;\r\n\t}\r\n\r\n\tsetMode(mode){\r\n\r\n\t\tif(this.mode === mode){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(this.mode){\r\n\t\t\tthis.mode.end(this);\r\n\t\t}\r\n\r\n\t\tfor(let controller of [this.cPrimary, this.cSecondary]){\r\n\r\n\t\t\tlet start = {\r\n\t\t\t\tposition: controller.position.clone(),\r\n\t\t\t\trotation: controller.rotation.clone(),\r\n\t\t\t};\r\n\r\n\t\t\tcontroller.start = start;\r\n\t\t}\r\n\t\t\r\n\t\tthis.mode = mode;\r\n\t\tthis.mode.start(this);\r\n\t}\r\n\r\n\tonTriggerStart(controller){\r\n\t\tthis.triggered.add(controller);\r\n\r\n\t\tif(this.triggered.size === 0){\r\n\t\t\tthis.setMode(this.mode_fly);\r\n\t\t}else if(this.triggered.size === 1){\r\n\t\t\tthis.setMode(this.mode_translate);\r\n\t\t}else if(this.triggered.size === 2){\r\n\t\t\tthis.setMode(this.mode_rotScale);\r\n\t\t}\r\n\t}\r\n\r\n\tonTriggerEnd(controller){\r\n\t\tthis.triggered.delete(controller);\r\n\r\n\t\tif(this.triggered.size === 0){\r\n\t\t\tthis.setMode(this.mode_fly);\r\n\t\t}else if(this.triggered.size === 1){\r\n\t\t\tthis.setMode(this.mode_translate);\r\n\t\t}else if(this.triggered.size === 2){\r\n\t\t\tthis.setMode(this.mode_rotScale);\r\n\t\t}\r\n\t}\r\n\r\n\tonStart(){\r\n\r\n\t\tlet position = this.viewer.scene.view.position.clone();\r\n\t\tlet direction = this.viewer.scene.view.direction;\r\n\t\tdirection.multiplyScalar(-1);\r\n\r\n\t\tlet target = position.clone().add(direction);\r\n\t\ttarget.z = position.z;\r\n\r\n\t\tlet scale = this.viewer.getMoveSpeed();\r\n\r\n\t\tthis.node.position.copy(position);\r\n\t\tthis.node.lookAt(target);\r\n\t\tthis.node.scale.set(scale, scale, scale);\r\n\t\tthis.node.updateMatrix();\r\n\t\tthis.node.updateMatrixWorld();\r\n\t}\r\n\r\n\tonEnd(){\r\n\t\t\r\n\t}\r\n\r\n\r\n\tsetScene(scene){\r\n\t\tthis.scene = scene;\r\n\t}\r\n\r\n\tgetCamera(){\r\n\t\tlet reference = this.viewer.scene.getActiveCamera();\r\n\t\tlet camera = new THREE.PerspectiveCamera();\r\n\r\n\t\t// let scale = this.node.scale.x;\r\n\t\tlet scale = this.viewer.getMoveSpeed();\r\n\t\t//camera.near = 0.01 / scale;\r\n\t\tcamera.near = 0.1;\r\n\t\tcamera.far = 1000;\r\n\t\t// camera.near = reference.near / scale;\r\n\t\t// camera.far = reference.far / scale;\r\n\t\tcamera.up.set(0, 0, 1);\r\n\t\tcamera.lookAt(new THREE.Vector3(0, -1, 0));\r\n\t\tcamera.updateMatrix();\r\n\t\tcamera.updateMatrixWorld();\r\n\r\n\t\tcamera.position.copy(this.node.position);\r\n\t\tcamera.rotation.copy(this.node.rotation);\r\n\t\tcamera.scale.set(scale, scale, scale);\r\n\t\tcamera.updateMatrix();\r\n\t\tcamera.updateMatrixWorld();\r\n\t\tcamera.matrixAutoUpdate = false;\r\n\t\tcamera.parent = camera;\r\n\r\n\t\treturn camera;\r\n\t}\r\n\r\n\tupdate(delta){\r\n\r\n\t\t\r\n\r\n\t\t// if(this.mode === this.mode_fly){\r\n\t\t// \tlet ray = new THREE.Ray(origin, direction);\r\n\t\t\t\r\n\t\t// \tfor(let object of this.selectables){\r\n\r\n\t\t// \t\tif(object.intersectsRay(ray)){\r\n\t\t// \t\t\tobject.onHit(ray);\r\n\t\t// \t\t}\r\n\r\n\t\t// \t}\r\n\r\n\t\t// }\r\n\r\n\t\tthis.mode.update(this, delta);\r\n\r\n\t\t\r\n\r\n\t}\r\n};","\r\n// Adapted from three.js VRButton\r\n\r\n\r\nclass VRButton {\r\n\r\n\tconstructor(){\r\n\t\tthis.onStartListeners = [];\r\n\t\tthis.onEndListeners = [];\r\n\t\tthis.element = null;\r\n\t}\r\n\r\n\tonStart(callback){\r\n\t\tthis.onStartListeners.push(callback);\r\n\t}\r\n\r\n\tonEnd(callback){\r\n\t\tthis.onEndListeners.push(callback);\r\n\t}\r\n\r\n\tstatic async createButton( renderer, options ) {\r\n\r\n\t\tif ( options ) {\r\n\r\n\t\t\tconsole.error( 'THREE.VRButton: The \"options\" parameter has been removed. Please set the reference space type via renderer.xr.setReferenceSpaceType() instead.' );\r\n\r\n\t\t}\r\n\r\n\t\tconst button = new VRButton();\r\n\t\tconst element = document.createElement( 'button' );\r\n\r\n\t\tbutton.element = element;\r\n\r\n\t\tfunction setEnter(){\r\n\t\t\tbutton.element.innerHTML = `\r\n\t\t\t\t
    ENTER
    \r\n\t\t\t\t
    VR
    \r\n\t\t\t`;\r\n\t\t}\r\n\r\n\t\tfunction setExit(){\r\n\t\t\tbutton.element.innerHTML = `\r\n\t\t\t\t
    EXIT
    \r\n\t\t\t\t
    VR
    \r\n\t\t\t`;\r\n\t\t}\r\n\r\n\t\tfunction showEnterVR( /*device*/ ) {\r\n\r\n\t\t\tlet currentSession = null;\r\n\r\n\t\t\tfunction onSessionStarted( session ) {\r\n\r\n\t\t\t\tsession.addEventListener( 'end', onSessionEnded );\r\n\r\n\t\t\t\tfor(let listener of button.onStartListeners){\r\n\t\t\t\t\tlistener();\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\trenderer.xr.setSession( session );\r\n\t\t\t\tsetExit();\r\n\r\n\t\t\t\tcurrentSession = session;\r\n\r\n\t\t\t}\r\n\r\n\t\t\tfunction onSessionEnded( /*event*/ ) {\r\n\r\n\t\t\t\tcurrentSession.removeEventListener( 'end', onSessionEnded );\r\n\r\n\t\t\t\tfor(let listener of button.onEndListeners){\r\n\t\t\t\t\tlistener();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsetEnter();\r\n\r\n\t\t\t\tcurrentSession = null;\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//\r\n\r\n\t\t\tbutton.element.style.display = '';\r\n\r\n\t\t\tbutton.element.style.cursor = 'pointer';\r\n\r\n\t\t\tsetEnter();\r\n\r\n\t\t\tbutton.element.onmouseenter = function () {\r\n\r\n\t\t\t\tbutton.element.style.opacity = '1.0';\r\n\r\n\t\t\t};\r\n\r\n\t\t\tbutton.element.onmouseleave = function () {\r\n\r\n\t\t\t\tbutton.element.style.opacity = '0.7';\r\n\r\n\t\t\t};\r\n\r\n\t\t\tbutton.element.onclick = function () {\r\n\r\n\t\t\t\tif ( currentSession === null ) {\r\n\r\n\t\t\t\t\t// WebXR's requestReferenceSpace only works if the corresponding feature\r\n\t\t\t\t\t// was requested at session creation time. For simplicity, just ask for\r\n\t\t\t\t\t// the interesting ones as optional features, but be aware that the\r\n\t\t\t\t\t// requestReferenceSpace call will fail if it turns out to be unavailable.\r\n\t\t\t\t\t// ('local' is always available for immersive sessions and doesn't need to\r\n\t\t\t\t\t// be requested separately.)\r\n\r\n\t\t\t\t\tconst sessionInit = { optionalFeatures: [ 'local-floor', 'bounded-floor', 'hand-tracking' ] };\r\n\t\t\t\t\tnavigator.xr.requestSession( 'immersive-vr', sessionInit ).then( onSessionStarted );\r\n\r\n\t\t\t\t} else {\r\n\r\n\t\t\t\t\tcurrentSession.end();\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t};\r\n\r\n\t\t}\r\n\r\n\t\tfunction stylizeElement( element ) {\r\n\r\n\t\t\telement.style.position = 'absolute';\r\n\t\t\telement.style.bottom = '20px';\r\n\t\t\telement.style.padding = '12px 6px';\r\n\t\t\telement.style.border = '1px solid #fff';\r\n\t\t\telement.style.borderRadius = '4px';\r\n\t\t\telement.style.background = 'rgba(0,0,0,0.1)';\r\n\t\t\telement.style.color = '#fff';\r\n\t\t\telement.style.font = 'normal 13px sans-serif';\r\n\t\t\telement.style.textAlign = 'center';\r\n\t\t\telement.style.opacity = '0.7';\r\n\t\t\telement.style.outline = 'none';\r\n\t\t\telement.style.zIndex = '999';\r\n\r\n\t\t}\r\n\r\n\t\tif ( 'xr' in navigator ) {\r\n\r\n\t\t\tbutton.element.id = 'VRButton';\r\n\t\t\tbutton.element.style.display = 'none';\r\n\r\n\t\t\tstylizeElement( button.element );\r\n\r\n\t\t\tlet supported = await navigator.xr.isSessionSupported( 'immersive-vr' );\r\n\r\n\t\t\tif(supported){\r\n\t\t\t\tshowEnterVR();\r\n\r\n\t\t\t\treturn button;\r\n\t\t\t}else{\r\n\t\t\t\treturn null;\r\n\t\t\t}\r\n\r\n\t\t} else {\r\n\r\n\t\t\tif ( window.isSecureContext === false ) {\r\n\r\n\t\t\t\tconsole.log(\"WEBXR NEEDS HTTPS\");\r\n\r\n\t\t\t} else {\r\n\r\n\t\t\t\tconsole.log(\"WEBXR not available\");\r\n\r\n\t\t\t}\r\n\r\n\t\t\treturn null;\r\n\r\n\r\n\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\nexport { VRButton };\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\nimport {ClipTask, ClipMethod, CameraMode, LengthUnits, ElevationGradientRepeat} from \"../defines.js\";\r\nimport {Renderer} from \"../PotreeRenderer.js\";\r\nimport {PotreeRenderer} from \"./PotreeRenderer.js\";\r\nimport {EDLRenderer} from \"./EDLRenderer.js\";\r\nimport {HQSplatRenderer} from \"./HQSplatRenderer.js\";\r\nimport {Scene} from \"./Scene.js\";\r\nimport {ClippingTool} from \"../utils/ClippingTool.js\";\r\nimport {TransformationTool} from \"../utils/TransformationTool.js\";\r\nimport {Utils} from \"../utils.js\";\r\nimport {MapView} from \"./map.js\";\r\nimport {ProfileWindow, ProfileWindowController} from \"./profile.js\";\r\nimport {BoxVolume} from \"../utils/Volume.js\";\r\nimport {Features} from \"../Features.js\";\r\nimport {Message} from \"../utils/Message.js\";\r\nimport {Sidebar} from \"./sidebar.js\";\r\n\r\nimport {AnnotationTool} from \"../utils/AnnotationTool.js\";\r\nimport {MeasuringTool} from \"../utils/MeasuringTool.js\";\r\nimport {ProfileTool} from \"../utils/ProfileTool.js\";\r\nimport {VolumeTool} from \"../utils/VolumeTool.js\";\r\n\r\nimport {InputHandler} from \"../navigation/InputHandler.js\";\r\nimport {NavigationCube} from \"./NavigationCube.js\";\r\nimport {Compass} from \"../utils/Compass.js\";\r\nimport {OrbitControls} from \"../navigation/OrbitControls.js\";\r\nimport {FirstPersonControls} from \"../navigation/FirstPersonControls.js\";\r\nimport {EarthControls} from \"../navigation/EarthControls.js\";\r\nimport {DeviceOrientationControls} from \"../navigation/DeviceOrientationControls.js\";\r\nimport {VRControls} from \"../navigation/VRControls.js\";\r\nimport { EventDispatcher } from \"../EventDispatcher.js\";\r\nimport { ClassificationScheme } from \"../materials/ClassificationScheme.js\";\r\nimport { VRButton } from '../../libs/three.js/extra/VRButton.js';\r\n\r\nimport JSON5 from \"../../libs/json5-2.1.3/json5.mjs\";\r\n\r\n\r\nexport class Viewer extends EventDispatcher{\r\n\t\r\n\tconstructor(domElement, args = {}){\r\n\t\tsuper();\r\n\r\n\t\tthis.renderArea = domElement;\r\n\t\tthis.guiLoaded = false;\r\n\t\tthis.guiLoadTasks = [];\r\n\r\n\t\tthis.onVrListeners = [];\r\n\r\n\t\tthis.messages = [];\r\n\t\tthis.elMessages = $(`\r\n\t\t
    \r\n\t\t
    `);\r\n\t\t$(domElement).append(this.elMessages);\r\n\t\t\r\n\t\ttry{\r\n\r\n\t\t{ // generate missing dom hierarchy\r\n\t\t\tif ($(domElement).find('#potree_map').length === 0) {\r\n\t\t\t\tlet potreeMap = $(`\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t`);\r\n\t\t\t\t$(domElement).append(potreeMap);\r\n\t\t\t}\r\n\r\n\t\t\tif ($(domElement).find('#potree_description').length === 0) {\r\n\t\t\t\tlet potreeDescription = $(`
    `);\r\n\t\t\t\t$(domElement).append(potreeDescription);\r\n\t\t\t}\r\n\r\n\t\t\tif ($(domElement).find('#potree_annotations').length === 0) {\r\n\t\t\t\tlet potreeAnnotationContainer = $(`\r\n\t\t\t\t\t
    `);\r\n\t\t\t\t$(domElement).append(potreeAnnotationContainer);\r\n\t\t\t}\r\n\r\n\t\t\tif ($(domElement).find('#potree_quick_buttons').length === 0) {\r\n\t\t\t\tlet potreeMap = $(`\r\n\t\t\t\t\t
    \r\n\t\t\t\t\t
    \r\n\t\t\t\t`);\r\n\r\n\t\t\t\t// {\r\n\t\t\t\t// \tlet imgMenuToggle = document.createElement('img');\r\n\t\t\t\t// \timgMenuToggle.src = new URL(Potree.resourcePath + '/icons/menu_button.svg').href;\r\n\t\t\t\t// \timgMenuToggle.onclick = this.toggleSidebar;\r\n\t\t\t\t// \t// imgMenuToggle.classList.add('potree_menu_toggle');\r\n\r\n\t\t\t\t// \tpotreeMap.append(imgMenuToggle);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\t// {\r\n\t\t\t\t// \tlet imgMenuToggle = document.createElement('img');\r\n\t\t\t\t// \timgMenuToggle.src = new URL(Potree.resourcePath + '/icons/menu_button.svg').href;\r\n\t\t\t\t// \timgMenuToggle.onclick = this.toggleSidebar;\r\n\t\t\t\t// \t// imgMenuToggle.classList.add('potree_menu_toggle');\r\n\r\n\t\t\t\t// \tpotreeMap.append(imgMenuToggle);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\t// {\r\n\t\t\t\t// \tlet imgMenuToggle = document.createElement('img');\r\n\t\t\t\t// \timgMenuToggle.src = new URL(Potree.resourcePath + '/icons/menu_button.svg').href;\r\n\t\t\t\t// \timgMenuToggle.onclick = this.toggleSidebar;\r\n\t\t\t\t// \t// imgMenuToggle.classList.add('potree_menu_toggle');\r\n\r\n\t\t\t\t// \tpotreeMap.append(imgMenuToggle);\r\n\t\t\t\t// }\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t\t$(domElement).append(potreeMap);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.pointCloudLoadedCallback = args.onPointCloudLoaded || function () {};\r\n\r\n\t\t// if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {\r\n\t\t//\tdefaultSettings.navigation = \"Orbit\";\r\n\t\t// }\r\n\r\n\t\tthis.server = null;\r\n\r\n\t\tthis.fov = 60;\r\n\t\tthis.isFlipYZ = false;\r\n\t\tthis.useDEMCollisions = false;\r\n\t\tthis.generateDEM = false;\r\n\t\tthis.minNodeSize = 30;\r\n\t\tthis.edlStrength = 1.0;\r\n\t\tthis.edlRadius = 1.4;\r\n\t\tthis.edlOpacity = 1.0;\r\n\t\tthis.useEDL = false;\r\n\t\tthis.description = \"\";\r\n\r\n\t\tthis.classifications = ClassificationScheme.DEFAULT;\r\n\r\n\t\tthis.moveSpeed = 10;\r\n\r\n\t\tthis.lengthUnit = LengthUnits.METER;\r\n\t\tthis.lengthUnitDisplay = LengthUnits.METER;\r\n\r\n\t\tthis.showBoundingBox = false;\r\n\t\tthis.showAnnotations = true;\r\n\t\tthis.freeze = false;\r\n\t\tthis.clipTask = ClipTask.HIGHLIGHT;\r\n\t\tthis.clipMethod = ClipMethod.INSIDE_ANY;\r\n\r\n\t\tthis.elevationGradientRepeat = ElevationGradientRepeat.CLAMP;\r\n\r\n\t\tthis.filterReturnNumberRange = [0, 7];\r\n\t\tthis.filterNumberOfReturnsRange = [0, 7];\r\n\t\tthis.filterGPSTimeRange = [-Infinity, Infinity];\r\n\t\tthis.filterPointSourceIDRange = [0, 65535];\r\n\r\n\t\tthis.potreeRenderer = null;\r\n\t\tthis.edlRenderer = null;\r\n\t\tthis.renderer = null;\r\n\t\tthis.pRenderer = null;\r\n\r\n\t\tthis.scene = null;\r\n\t\tthis.sceneVR = null;\r\n\t\tthis.overlay = null;\r\n\t\tthis.overlayCamera = null;\r\n\r\n\t\tthis.inputHandler = null;\r\n\t\tthis.controls = null;\r\n\r\n\t\tthis.clippingTool = null;\r\n\t\tthis.transformationTool = null;\r\n\t\tthis.navigationCube = null;\r\n\t\tthis.compass = null;\r\n\t\t\r\n\t\tthis.skybox = null;\r\n\t\tthis.clock = new THREE.Clock();\r\n\t\tthis.background = null;\r\n\r\n\t\tthis.initThree();\r\n\r\n\t\tif(args.noDragAndDrop){\r\n\t\t\t\r\n\t\t}else{\r\n\t\t\tthis.initDragAndDrop();\r\n\t\t}\r\n\r\n\t\tif(typeof Stats !== \"undefined\"){\r\n\t\t\tthis.stats = new Stats();\r\n\t\t\tthis.stats.showPanel( 0 ); // 0: fps, 1: ms, 2: mb, 3+: custom\r\n\t\t\tdocument.body.appendChild( this.stats.dom );\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tlet canvas = this.renderer.domElement;\r\n\t\t\tcanvas.addEventListener(\"webglcontextlost\", (e) => {\r\n\t\t\t\tconsole.log(e);\r\n\t\t\t\tthis.postMessage(\"WebGL context lost. \\u2639\");\r\n\r\n\t\t\t\tlet gl = this.renderer.getContext();\r\n\t\t\t\tlet error = gl.getError();\r\n\t\t\t\tconsole.log(error);\r\n\t\t\t}, false);\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tthis.overlay = new THREE.Scene();\r\n\t\t\tthis.overlayCamera = new THREE.OrthographicCamera(\r\n\t\t\t\t0, 1,\r\n\t\t\t\t1, 0,\r\n\t\t\t\t-1000, 1000\r\n\t\t\t);\r\n\t\t}\r\n\t\t\r\n\t\tthis.pRenderer = new Renderer(this.renderer);\r\n\t\t\r\n\t\t{\r\n\t\t\tlet near = 2.5;\r\n\t\t\tlet far = 10.0;\r\n\t\t\tlet fov = 90;\r\n\t\t\t\r\n\t\t\tthis.shadowTestCam = new THREE.PerspectiveCamera(90, 1, near, far);\r\n\t\t\tthis.shadowTestCam.position.set(3.50, -2.80, 8.561);\r\n\t\t\tthis.shadowTestCam.lookAt(new THREE.Vector3(0, 0, 4.87));\r\n\t\t}\r\n\t\t\r\n\r\n\t\tlet scene = new Scene(this.renderer);\r\n\t\t\r\n\t\t{ // create VR scene\r\n\t\t\tthis.sceneVR = new THREE.Scene();\r\n\r\n\t\t\t// let texture = new THREE.TextureLoader().load(`${Potree.resourcePath}/images/vr_controller_help.jpg`);\r\n\r\n\t\t\t// let plane = new THREE.PlaneBufferGeometry(1, 1, 1, 1);\r\n\t\t\t// let infoMaterial = new THREE.MeshBasicMaterial({map: texture});\r\n\t\t\t// let infoNode = new THREE.Mesh(plane, infoMaterial);\r\n\t\t\t// infoNode.position.set(-0.5, 1, 0);\r\n\t\t\t// infoNode.scale.set(0.4, 0.3, 1);\r\n\t\t\t// infoNode.lookAt(0, 1, 0)\r\n\t\t\t// this.sceneVR.add(infoNode);\r\n\r\n\t\t\t// window.infoNode = infoNode;\r\n\t\t}\r\n\r\n\t\tthis.setScene(scene);\r\n\r\n\t\t{\r\n\t\t\tthis.inputHandler = new InputHandler(this);\r\n\t\t\tthis.inputHandler.setScene(this.scene);\r\n\r\n\t\t\tthis.clippingTool = new ClippingTool(this);\r\n\t\t\tthis.transformationTool = new TransformationTool(this);\r\n\t\t\tthis.navigationCube = new NavigationCube(this);\r\n\t\t\tthis.navigationCube.visible = false;\r\n\r\n\t\t\tthis.compass = new Compass(this);\r\n\t\t\t\r\n\t\t\tthis.createControls();\r\n\r\n\t\t\tthis.clippingTool.setScene(this.scene);\r\n\t\t\t\r\n\t\t\tlet onPointcloudAdded = (e) => {\r\n\t\t\t\tif (this.scene.pointclouds.length === 1) {\r\n\t\t\t\t\tlet speed = e.pointcloud.boundingBox.getSize(new THREE.Vector3()).length();\r\n\t\t\t\t\tspeed = speed / 5;\r\n\t\t\t\t\tthis.setMoveSpeed(speed);\r\n\t\t\t\t}\r\n\t\t\t};\r\n\r\n\t\t\tlet onVolumeRemoved = (e) => {\r\n\t\t\t\tthis.inputHandler.deselect(e.volume);\r\n\t\t\t};\r\n\r\n\t\t\tthis.addEventListener('scene_changed', (e) => {\r\n\t\t\t\tthis.inputHandler.setScene(e.scene);\r\n\t\t\t\tthis.clippingTool.setScene(this.scene);\r\n\t\t\t\t\r\n\t\t\t\tif(!e.scene.hasEventListener(\"pointcloud_added\", onPointcloudAdded)){\r\n\t\t\t\t\te.scene.addEventListener(\"pointcloud_added\", onPointcloudAdded);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif(!e.scene.hasEventListener(\"volume_removed\", onPointcloudAdded)){\r\n\t\t\t\t\te.scene.addEventListener(\"volume_removed\", onVolumeRemoved);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t});\r\n\r\n\t\t\tthis.scene.addEventListener(\"volume_removed\", onVolumeRemoved);\r\n\t\t\tthis.scene.addEventListener('pointcloud_added', onPointcloudAdded);\r\n\t\t}\r\n\r\n\t\t{ // set defaults\r\n\t\t\tthis.setFOV(60);\r\n\t\t\tthis.setEDLEnabled(false);\r\n\t\t\tthis.setEDLRadius(1.4);\r\n\t\t\tthis.setEDLStrength(0.4);\r\n\t\t\tthis.setEDLOpacity(1.0);\r\n\t\t\tthis.setClipTask(ClipTask.HIGHLIGHT);\r\n\t\t\tthis.setClipMethod(ClipMethod.INSIDE_ANY);\r\n\t\t\tthis.setPointBudget(1*1000*1000);\r\n\t\t\tthis.setShowBoundingBox(false);\r\n\t\t\tthis.setFreeze(false);\r\n\t\t\tthis.setControls(this.orbitControls);\r\n\t\t\tthis.setBackground('gradient');\r\n\r\n\t\t\tthis.scaleFactor = 1;\r\n\r\n\t\t\tthis.loadSettingsFromURL();\r\n\t\t}\r\n\r\n\t\t// start rendering!\r\n\t\t//if(args.useDefaultRenderLoop === undefined || args.useDefaultRenderLoop === true){\r\n\t\t\t//requestAnimationFrame(this.loop.bind(this));\r\n\t\t//}\r\n\r\n\t\tthis.renderer.setAnimationLoop(this.loop.bind(this));\r\n\r\n\t\tthis.loadGUI = this.loadGUI.bind(this);\r\n\r\n\t\tthis.annotationTool = new AnnotationTool(this);\r\n\t\tthis.measuringTool = new MeasuringTool(this);\r\n\t\tthis.profileTool = new ProfileTool(this);\r\n\t\tthis.volumeTool = new VolumeTool(this);\r\n\r\n\t\t}catch(e){\r\n\t\t\tthis.onCrash(e);\r\n\t\t}\r\n\t}\r\n\r\n\tonCrash(error){\r\n\r\n\t\t$(this.renderArea).empty();\r\n\r\n\t\tif ($(this.renderArea).find('#potree_failpage').length === 0) {\r\n\t\t\tlet elFailPage = $(`\r\n\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t\t

    Potree Encountered An Error

    \r\n\r\n\t\t\t\t

    \r\n\t\t\t\tThis may happen if your browser or graphics card is not supported.\r\n\t\t\t\t
    \r\n\t\t\t\tWe recommend to use \r\n\t\t\t\tChrome\r\n\t\t\t\tor \r\n\t\t\t\tFirefox.\r\n\t\t\t\t

    \r\n\r\n\t\t\t\t

    \r\n\t\t\t\tPlease also visit webglreport.com and \r\n\t\t\t\tcheck whether your system supports WebGL.\r\n\t\t\t\t

    \r\n\t\t\t\t

    \r\n\t\t\t\tIf you are already using one of the recommended browsers and WebGL is enabled, \r\n\t\t\t\tconsider filing an issue report at github,
    \r\n\t\t\t\tincluding your operating system, graphics card, browser and browser version, as well as the \r\n\t\t\t\terror message below.
    \r\n\t\t\t\tPlease do not report errors on unsupported browsers.\r\n\t\t\t\t

    \r\n\r\n\t\t\t\t
    \r\n\t\t\t\t\r\n\t\t\t
    `);\r\n\r\n\t\t\tlet elErrorMessage = elFailPage.find('#potree_error_console');\r\n\t\t\telErrorMessage.html(error.stack);\r\n\r\n\t\t\t$(this.renderArea).append(elFailPage);\r\n\t\t}\r\n\r\n\t\tthrow error;\r\n\t}\r\n\r\n\t// ------------------------------------------------------------------------------------\r\n\t// Viewer API\r\n\t// ------------------------------------------------------------------------------------\r\n\r\n\tsetScene (scene) {\r\n\t\tif (scene === this.scene) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet oldScene = this.scene;\r\n\t\tthis.scene = scene;\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'scene_changed',\r\n\t\t\toldScene: oldScene,\r\n\t\t\tscene: scene\r\n\t\t});\r\n\r\n\t\t{ // Annotations\r\n\t\t\t$('.annotation').detach();\r\n\r\n\t\t\t// for(let annotation of this.scene.annotations){\r\n\t\t\t//\tthis.renderArea.appendChild(annotation.domElement[0]);\r\n\t\t\t// }\r\n\r\n\t\t\tthis.scene.annotations.traverse(annotation => {\r\n\t\t\t\tthis.renderArea.appendChild(annotation.domElement[0]);\r\n\t\t\t});\r\n\r\n\t\t\tif (!this.onAnnotationAdded) {\r\n\t\t\t\tthis.onAnnotationAdded = e => {\r\n\t\t\t\t// console.log(\"annotation added: \" + e.annotation.title);\r\n\r\n\t\t\t\t\te.annotation.traverse(node => {\r\n\r\n\t\t\t\t\t\t$(\"#potree_annotation_container\").append(node.domElement);\r\n\t\t\t\t\t\t//this.renderArea.appendChild(node.domElement[0]);\r\n\t\t\t\t\t\tnode.scene = this.scene;\r\n\t\t\t\t\t});\r\n\t\t\t\t};\r\n\t\t\t}\r\n\r\n\t\t\tif (oldScene) {\r\n\t\t\t\toldScene.annotations.removeEventListener('annotation_added', this.onAnnotationAdded);\r\n\t\t\t}\r\n\t\t\tthis.scene.annotations.addEventListener('annotation_added', this.onAnnotationAdded);\r\n\t\t}\r\n\t};\r\n\r\n\tsetControls(controls){\r\n\t\tif (controls !== this.controls) {\r\n\t\t\tif (this.controls) {\r\n\t\t\t\tthis.controls.enabled = false;\r\n\t\t\t\tthis.inputHandler.removeInputListener(this.controls);\r\n\t\t\t}\r\n\r\n\t\t\tthis.controls = controls;\r\n\t\t\tthis.controls.enabled = true;\r\n\t\t\tthis.inputHandler.addInputListener(this.controls);\r\n\t\t}\r\n\t}\r\n\r\n\tgetControls () {\r\n\r\n\t\tif(this.renderer.xr.isPresenting){\r\n\t\t\treturn this.vrControls;\r\n\t\t}else{\r\n\t\t\treturn this.controls;\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\tgetMinNodeSize () {\r\n\t\treturn this.minNodeSize;\r\n\t};\r\n\r\n\tsetMinNodeSize (value) {\r\n\t\tif (this.minNodeSize !== value) {\r\n\t\t\tthis.minNodeSize = value;\r\n\t\t\tthis.dispatchEvent({'type': 'minnodesize_changed', 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tgetBackground () {\r\n\t\treturn this.background;\r\n\t}\r\n\r\n\tsetBackground(bg){\r\n\t\tif (this.background === bg) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif(bg === \"skybox\"){\r\n\t\t\tthis.skybox = Utils.loadSkybox(new URL(Potree.resourcePath + '/textures/skybox2/').href);\r\n\t\t}\r\n\r\n\t\tthis.background = bg;\r\n\t\tthis.dispatchEvent({'type': 'background_changed', 'viewer': this});\r\n\t}\r\n\r\n\tsetDescription (value) {\r\n\t\tthis.description = value;\r\n\t\t\r\n\t\t$('#potree_description').html(value);\r\n\t\t//$('#potree_description').text(value);\r\n\t}\r\n\r\n\tgetDescription(){\r\n\t\treturn this.description;\r\n\t}\r\n\r\n\tsetShowBoundingBox (value) {\r\n\t\tif (this.showBoundingBox !== value) {\r\n\t\t\tthis.showBoundingBox = value;\r\n\t\t\tthis.dispatchEvent({'type': 'show_boundingbox_changed', 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tgetShowBoundingBox () {\r\n\t\treturn this.showBoundingBox;\r\n\t};\r\n\r\n\tsetMoveSpeed (value) {\r\n\t\tif (this.moveSpeed !== value) {\r\n\t\t\tthis.moveSpeed = value;\r\n\t\t\tthis.dispatchEvent({'type': 'move_speed_changed', 'viewer': this, 'speed': value});\r\n\t\t}\r\n\t};\r\n\r\n\tgetMoveSpeed () {\r\n\t\treturn this.moveSpeed;\r\n\t};\r\n\r\n\tsetWeightClassification (w) {\r\n\t\tfor (let i = 0; i < this.scene.pointclouds.length; i++) {\r\n\t\t\tthis.scene.pointclouds[i].material.weightClassification = w;\r\n\t\t\tthis.dispatchEvent({'type': 'attribute_weights_changed' + i, 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tsetFreeze (value) {\r\n\t\tvalue = Boolean(value);\r\n\t\tif (this.freeze !== value) {\r\n\t\t\tthis.freeze = value;\r\n\t\t\tthis.dispatchEvent({'type': 'freeze_changed', 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tgetFreeze () {\r\n\t\treturn this.freeze;\r\n\t};\r\n\r\n\tgetClipTask(){\r\n\t\treturn this.clipTask;\r\n\t}\r\n\r\n\tgetClipMethod(){\r\n\t\treturn this.clipMethod;\r\n\t}\r\n\r\n\tsetClipTask(value){\r\n\t\tif(this.clipTask !== value){\r\n\r\n\t\t\tthis.clipTask = value;\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: \"cliptask_changed\", \r\n\t\t\t\tviewer: this});\t\t\r\n\t\t}\r\n\t}\r\n\r\n\tsetClipMethod(value){\r\n\t\tif(this.clipMethod !== value){\r\n\r\n\t\t\tthis.clipMethod = value;\r\n\t\t\t\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: \"clipmethod_changed\",\r\n\t\t\t\tviewer: this});\r\n\t\t}\r\n\t}\r\n\r\n\tsetElevationGradientRepeat(value){\r\n\t\tif(this.elevationGradientRepeat !== value){\r\n\r\n\t\t\tthis.elevationGradientRepeat = value;\r\n\r\n\t\t\tthis.dispatchEvent({\r\n\t\t\t\ttype: \"elevation_gradient_repeat_changed\", \r\n\t\t\t\tviewer: this});\r\n\t\t}\r\n\t}\r\n\r\n\tsetPointBudget (value) {\r\n\t\tif (Potree.pointBudget !== value) {\r\n\t\t\tPotree.pointBudget = parseInt(value);\r\n\t\t\tthis.dispatchEvent({'type': 'point_budget_changed', 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tgetPointBudget () {\r\n\t\treturn Potree.pointBudget;\r\n\t};\r\n\r\n\tsetShowAnnotations (value) {\r\n\t\tif (this.showAnnotations !== value) {\r\n\t\t\tthis.showAnnotations = value;\r\n\t\t\tthis.dispatchEvent({'type': 'show_annotations_changed', 'viewer': this});\r\n\t\t}\r\n\t}\r\n\r\n\tgetShowAnnotations () {\r\n\t\treturn this.showAnnotations;\r\n\t}\r\n\t\r\n\tsetDEMCollisionsEnabled(value){\r\n\t\tif(this.useDEMCollisions !== value){\r\n\t\t\tthis.useDEMCollisions = value;\r\n\t\t\tthis.dispatchEvent({'type': 'use_demcollisions_changed', 'viewer': this});\r\n\t\t};\r\n\t};\r\n\r\n\tgetDEMCollisionsEnabled () {\r\n\t\treturn this.useDEMCollisions;\r\n\t};\r\n\r\n\tsetEDLEnabled (value) {\r\n\t\tvalue = Boolean(value) && Features.SHADER_EDL.isSupported();\r\n\r\n\t\tif (this.useEDL !== value) {\r\n\t\t\tthis.useEDL = value;\r\n\t\t\tthis.dispatchEvent({'type': 'use_edl_changed', 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tgetEDLEnabled () {\r\n\t\treturn this.useEDL;\r\n\t};\r\n\r\n\tsetEDLRadius (value) {\r\n\t\tif (this.edlRadius !== value) {\r\n\t\t\tthis.edlRadius = value;\r\n\t\t\tthis.dispatchEvent({'type': 'edl_radius_changed', 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tgetEDLRadius () {\r\n\t\treturn this.edlRadius;\r\n\t};\r\n\r\n\tsetEDLStrength (value) {\r\n\t\tif (this.edlStrength !== value) {\r\n\t\t\tthis.edlStrength = value;\r\n\t\t\tthis.dispatchEvent({'type': 'edl_strength_changed', 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tgetEDLStrength () {\r\n\t\treturn this.edlStrength;\r\n\t};\r\n\r\n\tsetEDLOpacity (value) {\r\n\t\tif (this.edlOpacity !== value) {\r\n\t\t\tthis.edlOpacity = value;\r\n\t\t\tthis.dispatchEvent({'type': 'edl_opacity_changed', 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tgetEDLOpacity () {\r\n\t\treturn this.edlOpacity;\r\n\t};\r\n\r\n\tsetFOV (value) {\r\n\t\tif (this.fov !== value) {\r\n\t\t\tthis.fov = value;\r\n\t\t\tthis.dispatchEvent({'type': 'fov_changed', 'viewer': this});\r\n\t\t}\r\n\t};\r\n\r\n\tgetFOV () {\r\n\t\treturn this.fov;\r\n\t};\r\n\r\n\tdisableAnnotations () {\r\n\t\tthis.scene.annotations.traverse(annotation => {\r\n\t\t\tannotation.domElement.css('pointer-events', 'none');\r\n\r\n\t\t\t// return annotation.visible;\r\n\t\t});\r\n\t};\r\n\r\n\tenableAnnotations () {\r\n\t\tthis.scene.annotations.traverse(annotation => {\r\n\t\t\tannotation.domElement.css('pointer-events', 'auto');\r\n\r\n\t\t\t// return annotation.visible;\r\n\t\t});\r\n\t}\r\n\r\n\tsetClassifications(classifications){\r\n\t\tthis.classifications = classifications;\r\n\r\n\t\tthis.dispatchEvent({'type': 'classifications_changed', 'viewer': this});\r\n\t}\r\n\r\n\tsetClassificationVisibility (key, value) {\r\n\t\tif (!this.classifications[key]) {\r\n\t\t\tthis.classifications[key] = {visible: value, name: 'no name'};\r\n\t\t\tthis.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this});\r\n\t\t} else if (this.classifications[key].visible !== value) {\r\n\t\t\tthis.classifications[key].visible = value;\r\n\t\t\tthis.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this});\r\n\t\t}\r\n\t}\r\n\r\n\ttoggleAllClassificationsVisibility(){\r\n\r\n\t\tlet numVisible = 0;\r\n\t\tlet numItems = 0;\r\n\t\tfor(const key of Object.keys(this.classifications)){\r\n\t\t\tif(this.classifications[key].visible){\r\n\t\t\t\tnumVisible++;\r\n\t\t\t}\r\n\t\t\tnumItems++;\r\n\t\t}\r\n\r\n\t\tlet visible = true;\r\n\t\tif(numVisible === numItems){\r\n\t\t\tvisible = false;\r\n\t\t}\r\n\r\n\t\tlet somethingChanged = false;\r\n\r\n\t\tfor(const key of Object.keys(this.classifications)){\r\n\t\t\tif(this.classifications[key].visible !== visible){\r\n\t\t\t\tthis.classifications[key].visible = visible;\r\n\t\t\t\tsomethingChanged = true;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif(somethingChanged){\r\n\t\t\tthis.dispatchEvent({'type': 'classification_visibility_changed', 'viewer': this});\r\n\t\t}\r\n\t}\r\n\r\n\tsetFilterReturnNumberRange(from, to){\r\n\t\tthis.filterReturnNumberRange = [from, to];\r\n\t\tthis.dispatchEvent({'type': 'filter_return_number_range_changed', 'viewer': this});\r\n\t}\r\n\r\n\tsetFilterNumberOfReturnsRange(from, to){\r\n\t\tthis.filterNumberOfReturnsRange = [from, to];\r\n\t\tthis.dispatchEvent({'type': 'filter_number_of_returns_range_changed', 'viewer': this});\r\n\t}\r\n\r\n\tsetFilterGPSTimeRange(from, to){\r\n\t\tthis.filterGPSTimeRange = [from, to];\r\n\t\tthis.dispatchEvent({'type': 'filter_gps_time_range_changed', 'viewer': this});\r\n\t}\r\n\r\n\tsetFilterPointSourceIDRange(from, to){\r\n\t\tthis.filterPointSourceIDRange = [from, to]\r\n\t\tthis.dispatchEvent({'type': 'filter_point_source_id_range_changed', 'viewer': this});\r\n\t}\r\n\r\n\tsetLengthUnit (value) {\r\n\t\tswitch (value) {\r\n\t\t\tcase 'm':\r\n\t\t\t\tthis.lengthUnit = LengthUnits.METER;\r\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.METER;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'ft':\r\n\t\t\t\tthis.lengthUnit = LengthUnits.FEET;\r\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.FEET;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'in':\r\n\t\t\t\tthis.lengthUnit = LengthUnits.INCH;\r\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.INCH;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: value});\r\n\t};\r\n\r\n\tsetLengthUnitAndDisplayUnit(lengthUnitValue, lengthUnitDisplayValue) {\r\n\t\tswitch (lengthUnitValue) {\r\n\t\t\tcase 'm':\r\n\t\t\t\tthis.lengthUnit = LengthUnits.METER;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'ft':\r\n\t\t\t\tthis.lengthUnit = LengthUnits.FEET;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'in':\r\n\t\t\t\tthis.lengthUnit = LengthUnits.INCH;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tswitch (lengthUnitDisplayValue) {\r\n\t\t\tcase 'm':\r\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.METER;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'ft':\r\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.FEET;\r\n\t\t\t\tbreak;\r\n\t\t\tcase 'in':\r\n\t\t\t\tthis.lengthUnitDisplay = LengthUnits.INCH;\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\r\n\t\tthis.dispatchEvent({ 'type': 'length_unit_changed', 'viewer': this, value: lengthUnitValue });\r\n\t};\r\n\r\n\tzoomTo(node, factor, animationDuration = 0){\r\n\t\tlet view = this.scene.view;\r\n\r\n\t\tlet camera = this.scene.cameraP.clone();\r\n\t\tcamera.rotation.copy(this.scene.cameraP.rotation);\r\n\t\tcamera.rotation.order = \"ZXY\";\r\n\t\tcamera.rotation.x = Math.PI / 2 + view.pitch;\r\n\t\tcamera.rotation.z = view.yaw;\r\n\t\tcamera.updateMatrix();\r\n\t\tcamera.updateMatrixWorld();\r\n\t\tcamera.zoomTo(node, factor);\r\n\r\n\t\tlet bs;\r\n\t\tif (node.boundingSphere) {\r\n\t\t\tbs = node.boundingSphere;\r\n\t\t} else if (node.geometry && node.geometry.boundingSphere) {\r\n\t\t\tbs = node.geometry.boundingSphere;\r\n\t\t} else {\r\n\t\t\tbs = node.boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t\t}\r\n\t\tbs = bs.clone().applyMatrix4(node.matrixWorld); \r\n\r\n\t\tlet startPosition = view.position.clone();\r\n\t\tlet endPosition = camera.position.clone();\r\n\t\tlet startTarget = view.getPivot();\r\n\t\tlet endTarget = bs.center;\r\n\t\tlet startRadius = view.radius;\r\n\t\tlet endRadius = endPosition.distanceTo(endTarget);\r\n\r\n\t\tlet easing = TWEEN.Easing.Quartic.Out;\r\n\r\n\t\t{ // animate camera position\r\n\t\t\tlet pos = startPosition.clone();\r\n\t\t\tlet tween = new TWEEN.Tween(pos).to(endPosition, animationDuration);\r\n\t\t\ttween.easing(easing);\r\n\r\n\t\t\ttween.onUpdate(() => {\r\n\t\t\t\tview.position.copy(pos);\r\n\t\t\t});\r\n\r\n\t\t\ttween.start();\r\n\t\t}\r\n\r\n\t\t{ // animate camera target\r\n\t\t\tlet target = startTarget.clone();\r\n\t\t\tlet tween = new TWEEN.Tween(target).to(endTarget, animationDuration);\r\n\t\t\ttween.easing(easing);\r\n\t\t\ttween.onUpdate(() => {\r\n\t\t\t\tview.lookAt(target);\r\n\t\t\t});\r\n\t\t\ttween.onComplete(() => {\r\n\t\t\t\tview.lookAt(target);\r\n\t\t\t\tthis.dispatchEvent({type: 'focusing_finished', target: this});\r\n\t\t\t});\r\n\r\n\t\t\tthis.dispatchEvent({type: 'focusing_started', target: this});\r\n\t\t\ttween.start();\r\n\t\t}\r\n\t};\r\n\r\n\tmoveToGpsTimeVicinity(time){\r\n\t\tconst result = Potree.Utils.findClosestGpsTime(time, viewer);\r\n\r\n\t\tconst box = result.node.pointcloud.deepestNodeAt(result.position).getBoundingBox();\r\n\t\tconst diameter = box.min.distanceTo(box.max);\r\n\r\n\t\tconst camera = this.scene.getActiveCamera();\r\n\t\tconst offset = camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(diameter);\r\n\t\tconst newCamPos = result.position.clone().sub(offset);\r\n\r\n\t\tthis.scene.view.position.copy(newCamPos);\r\n\t\tthis.scene.view.lookAt(result.position);\r\n\t}\r\n\r\n\tshowAbout () {\r\n\t\t$(function () {\r\n\t\t\t$('#about-panel').dialog();\r\n\t\t});\r\n\t};\r\n\r\n\tgetBoundingBox (pointclouds) {\r\n\t\treturn this.scene.getBoundingBox(pointclouds);\r\n\t};\r\n\r\n\tgetGpsTimeExtent(){\r\n\t\tconst range = [Infinity, -Infinity];\r\n\r\n\t\tfor(const pointcloud of this.scene.pointclouds){\r\n\t\t\tconst attributes = pointcloud.pcoGeometry.pointAttributes.attributes;\r\n\t\t\tconst aGpsTime = attributes.find(a => a.name === \"gps-time\");\r\n\r\n\t\t\tif(aGpsTime){\r\n\t\t\t\trange[0] = Math.min(range[0], aGpsTime.range[0]);\r\n\t\t\t\trange[1] = Math.max(range[1], aGpsTime.range[1]);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn range;\r\n\t}\r\n\r\n\tfitToScreen (factor = 1, animationDuration = 0) {\r\n\t\tlet box = this.getBoundingBox(this.scene.pointclouds);\r\n\r\n\t\tlet node = new THREE.Object3D();\r\n\t\tnode.boundingBox = box;\r\n\r\n\t\tthis.zoomTo(node, factor, animationDuration);\r\n\t\tthis.controls.stop();\r\n\t};\r\n\r\n\ttoggleNavigationCube() {\r\n\t\tthis.navigationCube.visible = !this.navigationCube.visible;\r\n\t}\r\n\r\n\tsetView(view) {\r\n\t\tif(!view) return;\r\n\r\n\t\tswitch(view) {\r\n\t\t\tcase \"F\":\r\n\t\t\t\tthis.setFrontView();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"B\":\r\n\t\t\t\tthis.setBackView();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"L\":\r\n\t\t\t\tthis.setLeftView();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"R\":\r\n\t\t\t\tthis.setRightView();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"U\":\r\n\t\t\t\tthis.setTopView();\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"D\":\r\n\t\t\t\tthis.setBottomView();\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\t\r\n\tsetTopView(){\r\n\t\tthis.scene.view.yaw = 0;\r\n\t\tthis.scene.view.pitch = -Math.PI / 2;\r\n\r\n\t\tthis.fitToScreen();\r\n\t};\r\n\t\r\n\tsetBottomView(){\r\n\t\tthis.scene.view.yaw = -Math.PI;\r\n\t\tthis.scene.view.pitch = Math.PI / 2;\r\n\t\t\r\n\t\tthis.fitToScreen();\r\n\t};\r\n\r\n\tsetFrontView(){\r\n\t\tthis.scene.view.yaw = 0;\r\n\t\tthis.scene.view.pitch = 0;\r\n\r\n\t\tthis.fitToScreen();\r\n\t};\r\n\t\r\n\tsetBackView(){\r\n\t\tthis.scene.view.yaw = Math.PI;\r\n\t\tthis.scene.view.pitch = 0;\r\n\t\t\r\n\t\tthis.fitToScreen();\r\n\t};\r\n\r\n\tsetLeftView(){\r\n\t\tthis.scene.view.yaw = -Math.PI / 2;\r\n\t\tthis.scene.view.pitch = 0;\r\n\r\n\t\tthis.fitToScreen();\r\n\t};\r\n\r\n\tsetRightView () {\r\n\t\tthis.scene.view.yaw = Math.PI / 2;\r\n\t\tthis.scene.view.pitch = 0;\r\n\r\n\t\tthis.fitToScreen();\r\n\t};\r\n\r\n\tflipYZ () {\r\n\t\tthis.isFlipYZ = !this.isFlipYZ;\r\n\r\n\t\t// TODO flipyz\r\n\t\tconsole.log('TODO');\r\n\t}\r\n\t\r\n\tsetCameraMode(mode){\r\n\t\tthis.scene.cameraMode = mode;\r\n\r\n\t\tfor(let pointcloud of this.scene.pointclouds) {\r\n\t\t\tpointcloud.material.useOrthographicCamera = mode == CameraMode.ORTHOGRAPHIC;\r\n\t\t}\r\n\t}\r\n\r\n\tgetProjection(){\r\n\t\tconst pointcloud = this.scene.pointclouds[0];\r\n\r\n\t\tif(pointcloud){\r\n\t\t\treturn pointcloud.projection;\r\n\t\t}else{\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\tasync loadProject(url){\r\n\r\n\t\tconst response = await fetch(url);\r\n\t\r\n\t\tconst text = await response.text();\r\n\t\tconst json = JSON5.parse(text);\r\n\t\t// const json = JSON.parse(text);\r\n\r\n\t\tif(json.type === \"Potree\"){\r\n\t\t\tPotree.loadProject(viewer, json);\r\n\t\t}\r\n\r\n\t\t//Potree.loadProject(this, url);\r\n\t}\r\n\r\n\tsaveProject(){\r\n\t\treturn Potree.saveProject(this);\r\n\t}\r\n\t\r\n\tloadSettingsFromURL(){\r\n\t\tif(Utils.getParameterByName(\"pointSize\")){\r\n\t\t\tthis.setPointSize(parseFloat(Utils.getParameterByName(\"pointSize\")));\r\n\t\t}\r\n\t\t\r\n\t\tif(Utils.getParameterByName(\"FOV\")){\r\n\t\t\tthis.setFOV(parseFloat(Utils.getParameterByName(\"FOV\")));\r\n\t\t}\r\n\t\t\r\n\t\tif(Utils.getParameterByName(\"opacity\")){\r\n\t\t\tthis.setOpacity(parseFloat(Utils.getParameterByName(\"opacity\")));\r\n\t\t}\r\n\t\t\r\n\t\tif(Utils.getParameterByName(\"edlEnabled\")){\r\n\t\t\tlet enabled = Utils.getParameterByName(\"edlEnabled\") === \"true\";\r\n\t\t\tthis.setEDLEnabled(enabled);\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('edlRadius')) {\r\n\t\t\tthis.setEDLRadius(parseFloat(Utils.getParameterByName('edlRadius')));\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('edlStrength')) {\r\n\t\t\tthis.setEDLStrength(parseFloat(Utils.getParameterByName('edlStrength')));\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('pointBudget')) {\r\n\t\t\tthis.setPointBudget(parseFloat(Utils.getParameterByName('pointBudget')));\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('showBoundingBox')) {\r\n\t\t\tlet enabled = Utils.getParameterByName('showBoundingBox') === 'true';\r\n\t\t\tif (enabled) {\r\n\t\t\t\tthis.setShowBoundingBox(true);\r\n\t\t\t} else {\r\n\t\t\t\tthis.setShowBoundingBox(false);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('material')) {\r\n\t\t\tlet material = Utils.getParameterByName('material');\r\n\t\t\tthis.setMaterial(material);\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('pointSizing')) {\r\n\t\t\tlet sizing = Utils.getParameterByName('pointSizing');\r\n\t\t\tthis.setPointSizing(sizing);\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('quality')) {\r\n\t\t\tlet quality = Utils.getParameterByName('quality');\r\n\t\t\tthis.setQuality(quality);\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('position')) {\r\n\t\t\tlet value = Utils.getParameterByName('position');\r\n\t\t\tvalue = value.replace('[', '').replace(']', '');\r\n\t\t\tlet tokens = value.split(';');\r\n\t\t\tlet x = parseFloat(tokens[0]);\r\n\t\t\tlet y = parseFloat(tokens[1]);\r\n\t\t\tlet z = parseFloat(tokens[2]);\r\n\r\n\t\t\tthis.scene.view.position.set(x, y, z);\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('target')) {\r\n\t\t\tlet value = Utils.getParameterByName('target');\r\n\t\t\tvalue = value.replace('[', '').replace(']', '');\r\n\t\t\tlet tokens = value.split(';');\r\n\t\t\tlet x = parseFloat(tokens[0]);\r\n\t\t\tlet y = parseFloat(tokens[1]);\r\n\t\t\tlet z = parseFloat(tokens[2]);\r\n\r\n\t\t\tthis.scene.view.lookAt(new THREE.Vector3(x, y, z));\r\n\t\t}\r\n\r\n\t\tif (Utils.getParameterByName('background')) {\r\n\t\t\tlet value = Utils.getParameterByName('background');\r\n\t\t\tthis.setBackground(value);\r\n\t\t}\r\n\r\n\t\t// if(Utils.getParameterByName(\"elevationRange\")){\r\n\t\t//\tlet value = Utils.getParameterByName(\"elevationRange\");\r\n\t\t//\tvalue = value.replace(\"[\", \"\").replace(\"]\", \"\");\r\n\t\t//\tlet tokens = value.split(\";\");\r\n\t\t//\tlet x = parseFloat(tokens[0]);\r\n\t\t//\tlet y = parseFloat(tokens[1]);\r\n\t\t//\r\n\t\t//\tthis.setElevationRange(x, y);\r\n\t\t//\t//this.scene.view.target.set(x, y, z);\r\n\t\t// }\r\n\t};\r\n\r\n\t// ------------------------------------------------------------------------------------\r\n\t// Viewer Internals\r\n\t// ------------------------------------------------------------------------------------\r\n\r\n\tcreateControls () {\r\n\t\t{ // create FIRST PERSON CONTROLS\r\n\t\t\tthis.fpControls = new FirstPersonControls(this);\r\n\t\t\tthis.fpControls.enabled = false;\r\n\t\t\tthis.fpControls.addEventListener('start', this.disableAnnotations.bind(this));\r\n\t\t\tthis.fpControls.addEventListener('end', this.enableAnnotations.bind(this));\r\n\t\t}\r\n\r\n\t\t// { // create GEO CONTROLS\r\n\t\t//\tthis.geoControls = new GeoControls(this.scene.camera, this.renderer.domElement);\r\n\t\t//\tthis.geoControls.enabled = false;\r\n\t\t//\tthis.geoControls.addEventListener(\"start\", this.disableAnnotations.bind(this));\r\n\t\t//\tthis.geoControls.addEventListener(\"end\", this.enableAnnotations.bind(this));\r\n\t\t//\tthis.geoControls.addEventListener(\"move_speed_changed\", (event) => {\r\n\t\t//\t\tthis.setMoveSpeed(this.geoControls.moveSpeed);\r\n\t\t//\t});\r\n\t\t// }\r\n\r\n\t\t{ // create ORBIT CONTROLS\r\n\t\t\tthis.orbitControls = new OrbitControls(this);\r\n\t\t\tthis.orbitControls.enabled = false;\r\n\t\t\tthis.orbitControls.addEventListener('start', this.disableAnnotations.bind(this));\r\n\t\t\tthis.orbitControls.addEventListener('end', this.enableAnnotations.bind(this));\r\n\t\t}\r\n\r\n\t\t{ // create EARTH CONTROLS\r\n\t\t\tthis.earthControls = new EarthControls(this);\r\n\t\t\tthis.earthControls.enabled = false;\r\n\t\t\tthis.earthControls.addEventListener('start', this.disableAnnotations.bind(this));\r\n\t\t\tthis.earthControls.addEventListener('end', this.enableAnnotations.bind(this));\r\n\t\t}\r\n\r\n\t\t{ // create DEVICE ORIENTATION CONTROLS\r\n\t\t\tthis.deviceControls = new DeviceOrientationControls(this);\r\n\t\t\tthis.deviceControls.enabled = false;\r\n\t\t\tthis.deviceControls.addEventListener('start', this.disableAnnotations.bind(this));\r\n\t\t\tthis.deviceControls.addEventListener('end', this.enableAnnotations.bind(this));\r\n\t\t}\r\n\r\n\t\t{ // create VR CONTROLS\r\n\t\t\tthis.vrControls = new VRControls(this);\r\n\t\t\tthis.vrControls.enabled = false;\r\n\t\t\tthis.vrControls.addEventListener('start', this.disableAnnotations.bind(this));\r\n\t\t\tthis.vrControls.addEventListener('end', this.enableAnnotations.bind(this));\r\n\t\t}\r\n\r\n\r\n\t};\r\n\r\n\ttoggleSidebar () {\r\n\t\tlet renderArea = $('#potree_render_area');\r\n\t\tlet isVisible = renderArea.css('left') !== '0px';\r\n\r\n\t\tif (isVisible) {\r\n\t\t\trenderArea.css('left', '0px');\r\n\t\t} else {\r\n\t\t\trenderArea.css('left', '300px');\r\n\t\t}\r\n\t};\r\n\r\n\ttoggleMap () {\r\n\t\t// let map = $('#potree_map');\r\n\t\t// map.toggle(100);\r\n\r\n\t\tif (this.mapView) {\r\n\t\t\tthis.mapView.toggle();\r\n\t\t}\r\n\t};\r\n\r\n\tonGUILoaded(callback){\r\n\t\tif(this.guiLoaded){\r\n\t\t\tcallback();\r\n\t\t}else{\r\n\t\t\tthis.guiLoadTasks.push(callback);\r\n\t\t}\r\n\t}\r\n\r\n\tpromiseGuiLoaded(){\r\n\t\treturn new Promise( resolve => {\r\n\r\n\t\t\tif(this.guiLoaded){\r\n\t\t\t\tresolve();\r\n\t\t\t}else{\r\n\t\t\t\tthis.guiLoadTasks.push(resolve);\r\n\t\t\t}\r\n\t\t\r\n\t\t});\r\n\t}\r\n\r\n\tloadGUI(callback){\r\n\r\n\t\tif(callback){\r\n\t\t\tthis.onGUILoaded(callback);\r\n\t\t}\r\n\r\n\t\tlet viewer = this;\r\n\t\tlet sidebarContainer = $('#potree_sidebar_container');\r\n\t\tsidebarContainer.load(new URL(Potree.scriptPath + '/sidebar.html').href, () => {\r\n\t\t\tsidebarContainer.css('width', '300px');\r\n\t\t\tsidebarContainer.css('height', '100%');\r\n\r\n\t\t\tlet imgMenuToggle = document.createElement('img');\r\n\t\t\timgMenuToggle.src = new URL(Potree.resourcePath + '/icons/menu_button.svg').href;\r\n\t\t\timgMenuToggle.onclick = this.toggleSidebar;\r\n\t\t\timgMenuToggle.classList.add('potree_menu_toggle');\r\n\r\n\t\t\tlet imgMapToggle = document.createElement('img');\r\n\t\t\timgMapToggle.src = new URL(Potree.resourcePath + '/icons/map_icon.png').href;\r\n\t\t\timgMapToggle.style.display = 'none';\r\n\t\t\timgMapToggle.onclick = e => { this.toggleMap(); };\r\n\t\t\timgMapToggle.id = 'potree_map_toggle';\r\n\r\n\t\t\t\r\n\r\n\t\t\tlet elButtons = $(\"#potree_quick_buttons\").get(0);\r\n\r\n\t\t\telButtons.append(imgMenuToggle);\r\n\t\t\telButtons.append(imgMapToggle);\r\n\r\n\r\n\t\t\tVRButton.createButton(this.renderer).then(vrButton => {\r\n\r\n\t\t\t\tif(vrButton == null){\r\n\t\t\t\t\tconsole.log(\"VR not supported or active.\");\r\n\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.renderer.xr.enabled = true;\r\n\r\n\t\t\t\tlet element = vrButton.element;\r\n\r\n\t\t\t\telement.style.position = \"\";\r\n\t\t\t\telement.style.bottom = \"\";\r\n\t\t\t\telement.style.left = \"\";\r\n\t\t\t\telement.style.margin = \"4px\";\r\n\t\t\t\telement.style.fontSize = \"100%\";\r\n\t\t\t\telement.style.width = \"2.5em\";\r\n\t\t\t\telement.style.height = \"2.5em\";\r\n\t\t\t\telement.style.padding = \"0\";\r\n\t\t\t\telement.style.textShadow = \"black 2px 2px 2px\";\r\n\t\t\t\telement.style.display = \"block\";\r\n\r\n\t\t\t\telButtons.append(element);\r\n\r\n\t\t\t\tvrButton.onStart(() => {\r\n\t\t\t\t\tthis.dispatchEvent({type: \"vr_start\"});\r\n\t\t\t\t});\r\n\r\n\t\t\t\tvrButton.onEnd(() => {\r\n\t\t\t\t\tthis.dispatchEvent({type: \"vr_end\"});\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tthis.mapView = new MapView(this);\r\n\t\t\tthis.mapView.init();\r\n\r\n\t\t\ti18n.init({\r\n\t\t\t\tlng: 'en',\r\n\t\t\t\tresGetPath: Potree.resourcePath + '/lang/__lng__/__ns__.json',\r\n\t\t\t\tpreload: ['en', 'fr', 'de', 'jp', 'se', 'es', 'zh', 'it','ca'],\r\n\t\t\t\tgetAsync: true,\r\n\t\t\t\tdebug: false\r\n\t\t\t}, function (t) {\r\n\t\t\t\t// Start translation once everything is loaded\r\n\t\t\t\t$('body').i18n();\r\n\t\t\t});\r\n\r\n\t\t\t$(() => {\r\n\t\t\t\t//initSidebar(this);\r\n\t\t\t\tlet sidebar = new Sidebar(this);\r\n\t\t\t\tsidebar.init();\r\n\r\n\t\t\t\tthis.sidebar = sidebar;\r\n\r\n\t\t\t\t//if (callback) {\r\n\t\t\t\t//\t$(callback);\r\n\t\t\t\t//}\r\n\r\n\t\t\t\tlet elProfile = $('
    ').load(new URL(Potree.scriptPath + '/profile.html').href, () => {\r\n\t\t\t\t\t$(document.body).append(elProfile.children());\r\n\t\t\t\t\tthis.profileWindow = new ProfileWindow(this);\r\n\t\t\t\t\tthis.profileWindowController = new ProfileWindowController(this);\r\n\r\n\t\t\t\t\t$('#profile_window').draggable({\r\n\t\t\t\t\t\thandle: $('#profile_titlebar'),\r\n\t\t\t\t\t\tcontainment: $(document.body)\r\n\t\t\t\t\t});\r\n\t\t\t\t\t$('#profile_window').resizable({\r\n\t\t\t\t\t\tcontainment: $(document.body),\r\n\t\t\t\t\t\thandles: 'n, e, s, w'\r\n\t\t\t\t\t});\r\n\r\n\t\t\t\t\t$(() => {\r\n\t\t\t\t\t\tthis.guiLoaded = true;\r\n\t\t\t\t\t\tfor(let task of this.guiLoadTasks){\r\n\t\t\t\t\t\t\ttask();\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t});\r\n\t\t\t\t});\r\n\r\n\t\t\t\t\r\n\r\n\t\t\t});\r\n\r\n\t\t\t\r\n\t\t});\r\n\r\n\t\treturn this.promiseGuiLoaded();\r\n\t}\r\n\r\n\tsetLanguage (lang) {\r\n\t\ti18n.setLng(lang);\r\n\t\t$('body').i18n();\r\n\t}\r\n\r\n\tsetServer (server) {\r\n\t\tthis.server = server;\r\n\t}\r\n\r\n\tinitDragAndDrop(){\r\n\t\tfunction allowDrag(e) {\r\n\t\t\te.dataTransfer.dropEffect = 'copy';\r\n\t\t\te.preventDefault();\r\n\t\t}\r\n\r\n\t\tlet dropHandler = async (event) => {\r\n\t\t\tconsole.log(event);\r\n\t\t\tevent.preventDefault();\r\n\r\n\t\t\tfor(const item of event.dataTransfer.items){\r\n\t\t\t\tconsole.log(item);\r\n\r\n\t\t\t\tif(item.kind !== \"file\"){\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst file = item.getAsFile();\r\n\r\n\t\t\t\tconst isJson5 = file.name.toLowerCase().endsWith(\".json5\");\r\n\t\t\t\tconst isGeoPackage = file.name.toLowerCase().endsWith(\".gpkg\");\r\n\r\n\t\t\t\tif(isJson5){\r\n\t\t\t\t\ttry{\r\n\r\n\t\t\t\t\t\tconst text = await file.text();\r\n\t\t\t\t\t\tconst json = JSON5.parse(text);\r\n\r\n\t\t\t\t\t\tif(json.type === \"Potree\"){\r\n\t\t\t\t\t\t\tPotree.loadProject(viewer, json);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}catch(e){\r\n\t\t\t\t\t\tconsole.error(\"failed to parse the dropped file as JSON\");\r\n\t\t\t\t\t\tconsole.error(e);\r\n\t\t\t\t\t}\r\n\t\t\t\t}else if(isGeoPackage){\r\n\t\t\t\t\tconst hasPointcloud = viewer.scene.pointclouds.length > 0;\r\n\r\n\t\t\t\t\tif(!hasPointcloud){\r\n\t\t\t\t\t\tlet msg = \"At least one point cloud is needed that specifies the \";\r\n\t\t\t\t\t\tmsg += \"coordinate reference system before loading vector data.\";\r\n\t\t\t\t\t\tconsole.error(msg);\r\n\t\t\t\t\t}else{\r\n\r\n\t\t\t\t\t\tproj4.defs(\"WGS84\", \"+proj=longlat +ellps=WGS84 +datum=WGS84 +no_defs\");\r\n\t\t\t\t\t\tproj4.defs(\"pointcloud\", this.getProjection());\r\n\t\t\t\t\t\tlet transform = proj4(\"WGS84\", \"pointcloud\");\r\n\r\n\t\t\t\t\t\tconst buffer = await file.arrayBuffer();\r\n\r\n\t\t\t\t\t\tconst params = {\r\n\t\t\t\t\t\t\ttransform: transform,\r\n\t\t\t\t\t\t\tsource: file.name,\r\n\t\t\t\t\t\t};\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tconst geo = await Potree.GeoPackageLoader.loadBuffer(buffer, params);\r\n\t\t\t\t\t\tviewer.scene.addGeopackage(geo);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t};\r\n\r\n\r\n\t\t$(\"body\")[0].addEventListener(\"dragenter\", allowDrag);\r\n\t\t$(\"body\")[0].addEventListener(\"dragover\", allowDrag);\r\n\t\t$(\"body\")[0].addEventListener(\"drop\", dropHandler);\r\n\t}\r\n\r\n\tinitThree () {\r\n\r\n\t\tconsole.log(`initializing three.js ${THREE.REVISION}`);\r\n\r\n\t\tlet width = this.renderArea.clientWidth;\r\n\t\tlet height = this.renderArea.clientHeight;\r\n\r\n\t\tlet contextAttributes = {\r\n\t\t\talpha: true,\r\n\t\t\tdepth: true,\r\n\t\t\tstencil: false,\r\n\t\t\tantialias: false,\r\n\t\t\t//premultipliedAlpha: _premultipliedAlpha,\r\n\t\t\tpreserveDrawingBuffer: true,\r\n\t\t\tpowerPreference: \"high-performance\",\r\n\t\t};\r\n\r\n\t\t// let contextAttributes = {\r\n\t\t// \talpha: false,\r\n\t\t// \tpreserveDrawingBuffer: true,\r\n\t\t// };\r\n\r\n\t\t// let contextAttributes = {\r\n\t\t// \talpha: false,\r\n\t\t// \tpreserveDrawingBuffer: true,\r\n\t\t// };\r\n\r\n\t\tlet canvas = document.createElement(\"canvas\");\r\n\r\n\t\tlet context = canvas.getContext('webgl', contextAttributes );\r\n\r\n\t\tthis.renderer = new THREE.WebGLRenderer({\r\n\t\t\talpha: true, \r\n\t\t\tpremultipliedAlpha: false,\r\n\t\t\tcanvas: canvas,\r\n\t\t\tcontext: context});\r\n\t\tthis.renderer.sortObjects = false;\r\n\t\tthis.renderer.setSize(width, height);\r\n\t\tthis.renderer.autoClear = false;\r\n\t\tthis.renderArea.appendChild(this.renderer.domElement);\r\n\t\tthis.renderer.domElement.tabIndex = '2222';\r\n\t\tthis.renderer.domElement.style.position = 'absolute';\r\n\t\tthis.renderer.domElement.addEventListener('mousedown', () => {\r\n\t\t\tthis.renderer.domElement.focus();\r\n\t\t});\r\n\t\t//this.renderer.domElement.focus();\r\n\r\n\t\t// NOTE: If extension errors occur, pass the string into this.renderer.extensions.get(x) before enabling\r\n\t\t// enable frag_depth extension for the interpolation shader, if available\r\n\t\tlet gl = this.renderer.getContext();\r\n\t\tgl.getExtension('EXT_frag_depth');\r\n\t\tgl.getExtension('WEBGL_depth_texture');\r\n\t\tgl.getExtension('WEBGL_color_buffer_float'); \t// Enable explicitly for more portability, EXT_color_buffer_float is the proper name in WebGL 2\r\n\t\t\r\n\t\tif(gl.createVertexArray == null){\r\n\t\t\tlet extVAO = gl.getExtension('OES_vertex_array_object');\r\n\r\n\t\t\tif(!extVAO){\r\n\t\t\t\tthrow new Error(\"OES_vertex_array_object extension not supported\");\r\n\t\t\t}\r\n\r\n\t\t\tgl.createVertexArray = extVAO.createVertexArrayOES.bind(extVAO);\r\n\t\t\tgl.bindVertexArray = extVAO.bindVertexArrayOES.bind(extVAO);\r\n\t\t}\r\n\t\t\r\n\t}\r\n\r\n\tupdateAnnotations () {\r\n\r\n\t\tif(!this.visibleAnnotations){\r\n\t\t\tthis.visibleAnnotations = new Set();\r\n\t\t}\r\n\r\n\t\tthis.scene.annotations.updateBounds();\r\n\t\tthis.scene.cameraP.updateMatrixWorld();\r\n\t\tthis.scene.cameraO.updateMatrixWorld();\r\n\t\t\r\n\t\tlet distances = [];\r\n\r\n\t\tlet renderAreaSize = this.renderer.getSize(new THREE.Vector2());\r\n\r\n\t\tlet viewer = this;\r\n\r\n\t\tlet visibleNow = [];\r\n\t\tthis.scene.annotations.traverse(annotation => {\r\n\r\n\t\t\tif (annotation === this.scene.annotations) {\r\n\t\t\t\treturn true;\r\n\t\t\t}\r\n\r\n\t\t\tif (!annotation.visible) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tannotation.scene = this.scene;\r\n\r\n\t\t\tlet element = annotation.domElement;\r\n\r\n\t\t\tlet position = annotation.position.clone();\r\n\t\t\tposition.add(annotation.offset);\r\n\t\t\tif (!position) {\r\n\t\t\t\tposition = annotation.boundingBox.getCenter(new THREE.Vector3());\r\n\t\t\t}\r\n\r\n\t\t\tlet distance = viewer.scene.cameraP.position.distanceTo(position);\r\n\t\t\tlet radius = annotation.boundingBox.getBoundingSphere(new THREE.Sphere()).radius;\r\n\r\n\t\t\tlet screenPos = new THREE.Vector3();\r\n\t\t\tlet screenSize = 0;\r\n\r\n\t\t\t{\r\n\t\t\t\t// SCREEN POS\r\n\t\t\t\tscreenPos.copy(position).project(this.scene.getActiveCamera());\r\n\t\t\t\tscreenPos.x = renderAreaSize.x * (screenPos.x + 1) / 2;\r\n\t\t\t\tscreenPos.y = renderAreaSize.y * (1 - (screenPos.y + 1) / 2);\r\n\r\n\r\n\t\t\t\t// SCREEN SIZE\r\n\t\t\t\tif(viewer.scene.cameraMode == CameraMode.PERSPECTIVE) {\r\n\t\t\t\t\tlet fov = Math.PI * viewer.scene.cameraP.fov / 180;\r\n\t\t\t\t\tlet slope = Math.tan(fov / 2.0);\r\n\t\t\t\t\tlet projFactor = 0.5 * renderAreaSize.y / (slope * distance);\r\n\t\t\t\t\tscreenSize = radius * projFactor;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tscreenSize = Utils.projectedRadiusOrtho(radius, viewer.scene.cameraO.projectionMatrix, renderAreaSize.x, renderAreaSize.y);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\telement.css(\"left\", screenPos.x + \"px\");\r\n\t\t\telement.css(\"top\", screenPos.y + \"px\");\r\n\t\t\t//element.css(\"display\", \"block\");\r\n\r\n\t\t\tlet zIndex = 10000000 - distance * (10000000 / this.scene.cameraP.far);\r\n\t\t\tif(annotation.descriptionVisible){\r\n\t\t\t\tzIndex += 10000000;\r\n\t\t\t}\r\n\t\t\telement.css(\"z-index\", parseInt(zIndex));\r\n\r\n\t\t\tif(annotation.children.length > 0){\r\n\t\t\t\tlet expand = screenSize > annotation.collapseThreshold || annotation.boundingBox.containsPoint(this.scene.getActiveCamera().position);\r\n\t\t\t\tannotation.expand = expand;\r\n\r\n\t\t\t\tif (!expand) {\r\n\t\t\t\t\t//annotation.display = (screenPos.z >= -1 && screenPos.z <= 1);\r\n\t\t\t\t\tlet inFrustum = (screenPos.z >= -1 && screenPos.z <= 1);\r\n\t\t\t\t\tif(inFrustum){\r\n\t\t\t\t\t\tvisibleNow.push(annotation);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn expand;\r\n\t\t\t} else {\r\n\t\t\t\t//annotation.display = (screenPos.z >= -1 && screenPos.z <= 1);\r\n\t\t\t\tlet inFrustum = (screenPos.z >= -1 && screenPos.z <= 1);\r\n\t\t\t\tif(inFrustum){\r\n\t\t\t\t\tvisibleNow.push(annotation);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t\r\n\t\t});\r\n\r\n\t\tlet notVisibleAnymore = new Set(this.visibleAnnotations);\r\n\t\tfor(let annotation of visibleNow){\r\n\t\t\tannotation.display = true;\r\n\t\t\t\r\n\t\t\tnotVisibleAnymore.delete(annotation);\r\n\t\t}\r\n\t\tthis.visibleAnnotations = visibleNow;\r\n\r\n\t\tfor(let annotation of notVisibleAnymore){\r\n\t\t\tannotation.display = false;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tupdateMaterialDefaults(pointcloud){\r\n\t\t// PROBLEM STATEMENT:\r\n\t\t// * [min, max] of intensity, source id, etc. are computed as point clouds are loaded\r\n\t\t// * the point cloud material won't know the range it should use until some data is loaded\r\n\t\t// * users can modify the range at runtime, but sensible default ranges should be \r\n\t\t// applied even if no GUI is present\r\n\t\t// * display ranges shouldn't suddenly change even if the actual range changes over time.\r\n\t\t// e.g. the root node has intensity range [1, 478]. One of the descendants increases range to \r\n\t\t// [0, 2047]. We should not automatically change to the new range because that would result\r\n\t\t// in sudden and drastic changes of brightness. We should adjust the min/max of the sidebar slider.\r\n\r\n\t\tconst material = pointcloud.material;\r\n\r\n\t\tconst attIntensity = pointcloud.getAttribute(\"intensity\");\r\n\t\t\r\n\t\tif(attIntensity != null && material.intensityRange[0] === Infinity){\r\n\t\t\tmaterial.intensityRange = [...attIntensity.range];\r\n\t\t}\r\n\r\n\t\t// const attIntensity = pointcloud.getAttribute(\"intensity\");\r\n\t\t// if(attIntensity && material.intensityRange[0] === Infinity){\r\n\t\t// \tmaterial.intensityRange = [...attIntensity.range];\r\n\t\t// }\r\n\r\n\t\t// let attributes = pointcloud.getAttributes();\r\n\r\n\t\t// for(let attribute of attributes.attributes){\r\n\t\t// \tif(attribute.range){\r\n\t\t// \t\tlet range = [...attribute.range];\r\n\t\t// \t\tmaterial.computedRange.set(attribute.name, range);\r\n\t\t// \t\t//material.setRange(attribute.name, range);\r\n\t\t// \t}\r\n\t\t// }\r\n\r\n\r\n\t}\r\n\r\n\tupdate(delta, timestamp){\r\n\r\n\t\tif(Potree.measureTimings) performance.mark(\"update-start\");\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'update_start',\r\n\t\t\tdelta: delta,\r\n\t\t\ttimestamp: timestamp});\r\n\r\n\t\t\r\n\t\tconst scene = this.scene;\r\n\t\tconst camera = scene.getActiveCamera();\r\n\t\tconst visiblePointClouds = this.scene.pointclouds.filter(pc => pc.visible)\r\n\t\t\r\n\t\tPotree.pointLoadLimit = Potree.pointBudget * 2;\r\n\r\n\t\tconst lTarget = camera.position.clone().add(camera.getWorldDirection(new THREE.Vector3()).multiplyScalar(1000));\r\n\t\tthis.scene.directionalLight.position.copy(camera.position);\r\n\t\tthis.scene.directionalLight.lookAt(lTarget);\r\n\r\n\r\n\t\tfor (let pointcloud of visiblePointClouds) {\r\n\r\n\t\t\tpointcloud.showBoundingBox = this.showBoundingBox;\r\n\t\t\tpointcloud.generateDEM = this.generateDEM;\r\n\t\t\tpointcloud.minimumNodePixelSize = this.minNodeSize;\r\n\r\n\t\t\tlet material = pointcloud.material;\r\n\r\n\t\t\tmaterial.uniforms.uFilterReturnNumberRange.value = this.filterReturnNumberRange;\r\n\t\t\tmaterial.uniforms.uFilterNumberOfReturnsRange.value = this.filterNumberOfReturnsRange;\r\n\t\t\tmaterial.uniforms.uFilterGPSTimeClipRange.value = this.filterGPSTimeRange;\r\n\t\t\tmaterial.uniforms.uFilterPointSourceIDClipRange.value = this.filterPointSourceIDRange;\r\n\r\n\t\t\tmaterial.classification = this.classifications;\r\n\t\t\tmaterial.recomputeClassification();\r\n\r\n\t\t\tthis.updateMaterialDefaults(pointcloud);\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tif(this.showBoundingBox){\r\n\t\t\t\tlet bbRoot = this.scene.scene.getObjectByName(\"potree_bounding_box_root\");\r\n\t\t\t\tif(!bbRoot){\r\n\t\t\t\t\tlet node = new THREE.Object3D();\r\n\t\t\t\t\tnode.name = \"potree_bounding_box_root\";\r\n\t\t\t\t\tthis.scene.scene.add(node);\r\n\t\t\t\t\tbbRoot = node;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet visibleBoxes = [];\r\n\t\t\t\tfor(let pointcloud of this.scene.pointclouds){\r\n\t\t\t\t\tfor(let node of pointcloud.visibleNodes.filter(vn => vn.boundingBoxNode !== undefined)){\r\n\t\t\t\t\t\tlet box = node.boundingBoxNode;\r\n\t\t\t\t\t\tvisibleBoxes.push(box);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbbRoot.children = visibleBoxes;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!this.freeze) {\r\n\t\t\tlet result = Potree.updatePointClouds(scene.pointclouds, camera, this.renderer);\r\n\r\n\r\n\t\t\t// DEBUG - ONLY DISPLAY NODES THAT INTERSECT MOUSE\r\n\t\t\t//if(false){ \r\n\r\n\t\t\t//\tlet renderer = viewer.renderer;\r\n\t\t\t//\tlet mouse = viewer.inputHandler.mouse;\r\n\r\n\t\t\t//\tlet nmouse = {\r\n\t\t\t//\t\tx: (mouse.x / renderer.domElement.clientWidth) * 2 - 1,\r\n\t\t\t//\t\ty: -(mouse.y / renderer.domElement.clientHeight) * 2 + 1\r\n\t\t\t//\t};\r\n\r\n\t\t\t//\tlet pickParams = {};\r\n\r\n\t\t\t//\t//if(params.pickClipped){\r\n\t\t\t//\t//\tpickParams.pickClipped = params.pickClipped;\r\n\t\t\t//\t//}\r\n\r\n\t\t\t//\tpickParams.x = mouse.x;\r\n\t\t\t//\tpickParams.y = renderer.domElement.clientHeight - mouse.y;\r\n\r\n\t\t\t//\tlet raycaster = new THREE.Raycaster();\r\n\t\t\t//\traycaster.setFromCamera(nmouse, camera);\r\n\t\t\t//\tlet ray = raycaster.ray;\r\n\r\n\t\t\t//\tfor(let pointcloud of scene.pointclouds){\r\n\t\t\t//\t\tlet nodes = pointcloud.nodesOnRay(pointcloud.visibleNodes, ray);\r\n\t\t\t//\t\tpointcloud.visibleNodes = nodes;\r\n\r\n\t\t\t//\t}\r\n\t\t\t//}\r\n\r\n\t\t\t// const tStart = performance.now();\r\n\t\t\t// const worldPos = new THREE.Vector3();\r\n\t\t\t// const camPos = viewer.scene.getActiveCamera().getWorldPosition(new THREE.Vector3());\r\n\t\t\t// let lowestDistance = Infinity;\r\n\t\t\t// let numNodes = 0;\r\n\r\n\t\t\t// viewer.scene.scene.traverse(node => {\r\n\t\t\t// \tnode.getWorldPosition(worldPos);\r\n\r\n\t\t\t// \tconst distance = worldPos.distanceTo(camPos);\r\n\r\n\t\t\t// \tlowestDistance = Math.min(lowestDistance, distance);\r\n\r\n\t\t\t// \tnumNodes++;\r\n\r\n\t\t\t// \tif(Number.isNaN(distance)){\r\n\t\t\t// \t\tconsole.error(\":(\");\r\n\t\t\t// \t}\r\n\t\t\t// });\r\n\t\t\t// const duration = (performance.now() - tStart).toFixed(2);\r\n\r\n\t\t\t// Potree.debug.computeNearDuration = duration;\r\n\t\t\t// Potree.debug.numNodes = numNodes;\r\n\r\n\t\t\t//console.log(lowestDistance.toString(2), duration);\r\n\r\n\t\t\tconst tStart = performance.now();\r\n\t\t\tconst campos = camera.position;\r\n\t\t\tlet closestImage = Infinity;\r\n\t\t\tfor(const images of this.scene.orientedImages){\r\n\t\t\t\tfor(const image of images.images){\r\n\t\t\t\t\tconst distance = image.mesh.position.distanceTo(campos);\r\n\r\n\t\t\t\t\tclosestImage = Math.min(closestImage, distance);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconst tEnd = performance.now();\r\n\r\n\t\t\tif(result.lowestSpacing !== Infinity){\r\n\t\t\t\tlet near = result.lowestSpacing * 10.0;\r\n\t\t\t\tlet far = -this.getBoundingBox().applyMatrix4(camera.matrixWorldInverse).min.z;\r\n\r\n\t\t\t\tfar = Math.max(far * 1.5, 10000);\r\n\t\t\t\tnear = Math.min(100.0, Math.max(0.01, near));\r\n\t\t\t\tnear = Math.min(near, closestImage);\r\n\t\t\t\tfar = Math.max(far, near + 10000);\r\n\r\n\t\t\t\tif(near === Infinity){\r\n\t\t\t\t\tnear = 0.1;\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tcamera.near = near;\r\n\t\t\t\tcamera.far = far;\r\n\t\t\t}else{\r\n\t\t\t\t// don't change near and far in this case\r\n\t\t\t}\r\n\r\n\t\t\tif(this.scene.cameraMode == CameraMode.ORTHOGRAPHIC) {\r\n\t\t\t\tcamera.near = -camera.far;\r\n\t\t\t}\r\n\t\t} \r\n\t\t\r\n\t\tthis.scene.cameraP.fov = this.fov;\r\n\t\t\r\n\t\tlet controls = this.getControls();\r\n\t\tif (controls === this.deviceControls) {\r\n\t\t\tthis.controls.setScene(scene);\r\n\t\t\tthis.controls.update(delta);\r\n\r\n\t\t\tthis.scene.cameraP.position.copy(scene.view.position);\r\n\t\t\tthis.scene.cameraO.position.copy(scene.view.position);\r\n\t\t} else if (controls !== null) {\r\n\t\t\tcontrols.setScene(scene);\r\n\t\t\tcontrols.update(delta);\r\n\r\n\t\t\tif(typeof debugDisabled === \"undefined\" ){\r\n\t\t\t\tthis.scene.cameraP.position.copy(scene.view.position);\r\n\t\t\t\tthis.scene.cameraP.rotation.order = \"ZXY\";\r\n\t\t\t\tthis.scene.cameraP.rotation.x = Math.PI / 2 + this.scene.view.pitch;\r\n\t\t\t\tthis.scene.cameraP.rotation.z = this.scene.view.yaw;\r\n\t\t\t}\r\n\r\n\t\t\tthis.scene.cameraO.position.copy(scene.view.position);\r\n\t\t\tthis.scene.cameraO.rotation.order = \"ZXY\";\r\n\t\t\tthis.scene.cameraO.rotation.x = Math.PI / 2 + this.scene.view.pitch;\r\n\t\t\tthis.scene.cameraO.rotation.z = this.scene.view.yaw;\r\n\t\t}\r\n\t\t\r\n\t\tcamera.updateMatrix();\r\n\t\tcamera.updateMatrixWorld();\r\n\t\tcamera.matrixWorldInverse.copy(camera.matrixWorld).invert();\r\n\r\n\t\t{\r\n\t\t\tif(this._previousCamera === undefined){\r\n\t\t\t\tthis._previousCamera = this.scene.getActiveCamera().clone();\r\n\t\t\t\tthis._previousCamera.rotation.copy(this.scene.getActiveCamera().rotation);\r\n\t\t\t}\r\n\r\n\t\t\tif(!this._previousCamera.matrixWorld.equals(camera.matrixWorld)){\r\n\t\t\t\tthis.dispatchEvent({\r\n\t\t\t\t\ttype: \"camera_changed\",\r\n\t\t\t\t\tprevious: this._previousCamera,\r\n\t\t\t\t\tcamera: camera\r\n\t\t\t\t});\r\n\t\t\t}else if(!this._previousCamera.projectionMatrix.equals(camera.projectionMatrix)){\r\n\t\t\t\tthis.dispatchEvent({\r\n\t\t\t\t\ttype: \"camera_changed\",\r\n\t\t\t\t\tprevious: this._previousCamera,\r\n\t\t\t\t\tcamera: camera\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._previousCamera = this.scene.getActiveCamera().clone();\r\n\t\t\tthis._previousCamera.rotation.copy(this.scene.getActiveCamera().rotation);\r\n\r\n\t\t}\r\n\r\n\t\t{ // update clip boxes\r\n\t\t\tlet boxes = [];\r\n\t\t\t\r\n\t\t\t// volumes with clipping enabled\r\n\t\t\t//boxes.push(...this.scene.volumes.filter(v => (v.clip)));\r\n\t\t\tboxes.push(...this.scene.volumes.filter(v => (v.clip && v instanceof BoxVolume)));\r\n\r\n\t\t\t// profile segments\r\n\t\t\tfor(let profile of this.scene.profiles){\r\n\t\t\t\tboxes.push(...profile.boxes);\r\n\t\t\t}\r\n\t\t\t\r\n\t\t\t// Needed for .getInverse(), pre-empt a determinant of 0, see #815 / #816\r\n\t\t\tlet degenerate = (box) => box.matrixWorld.determinant() !== 0;\r\n\t\t\t\r\n\t\t\tlet clipBoxes = boxes.filter(degenerate).map( box => {\r\n\t\t\t\tbox.updateMatrixWorld();\r\n\t\t\t\t\r\n\t\t\t\tlet boxInverse = box.matrixWorld.clone().invert();\r\n\t\t\t\tlet boxPosition = box.getWorldPosition(new THREE.Vector3());\r\n\r\n\t\t\t\treturn {box: box, inverse: boxInverse, position: boxPosition};\r\n\t\t\t});\r\n\r\n\t\t\tlet clipPolygons = this.scene.polygonClipVolumes.filter(vol => vol.initialized);\r\n\t\t\t\r\n\t\t\t// set clip volumes in material\r\n\t\t\tfor(let pointcloud of visiblePointClouds){\r\n\t\t\t\tpointcloud.material.setClipBoxes(clipBoxes);\r\n\t\t\t\tpointcloud.material.setClipPolygons(clipPolygons, this.clippingTool.maxPolygonVertices);\r\n\t\t\t\tpointcloud.material.clipTask = this.clipTask;\r\n\t\t\t\tpointcloud.material.clipMethod = this.clipMethod;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t{\r\n\t\t\tfor(let pointcloud of visiblePointClouds){\r\n\t\t\t\tpointcloud.material.elevationGradientRepeat = this.elevationGradientRepeat;\r\n\t\t\t}\r\n\t\t}\r\n\t\t\r\n\t\t{ // update navigation cube\r\n\t\t\tthis.navigationCube.update(camera.rotation);\r\n\t\t}\r\n\r\n\t\tthis.updateAnnotations();\r\n\t\t\r\n\t\tif(this.mapView){\r\n\t\t\tthis.mapView.update(delta);\r\n\t\t\tif(this.mapView.sceneProjection){\r\n\t\t\t\t$( \"#potree_map_toggle\" ).css(\"display\", \"block\");\r\n\t\t\t\t\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tTWEEN.update(timestamp);\r\n\r\n\t\tthis.dispatchEvent({\r\n\t\t\ttype: 'update',\r\n\t\t\tdelta: delta,\r\n\t\t\ttimestamp: timestamp});\r\n\t\t\t\r\n\t\tif(Potree.measureTimings) {\r\n\t\t\tperformance.mark(\"update-end\");\r\n\t\t\tperformance.measure(\"update\", \"update-start\", \"update-end\");\r\n\t\t}\r\n\t}\r\n\r\n\tgetPRenderer(){\r\n\t\tif(this.useHQ){\r\n\t\t\tif (!this.hqRenderer) {\r\n\t\t\t\tthis.hqRenderer = new HQSplatRenderer(this);\r\n\t\t\t}\r\n\t\t\tthis.hqRenderer.useEDL = this.useEDL;\r\n\r\n\t\t\treturn this.hqRenderer;\r\n\t\t}else{\r\n\t\t\tif (this.useEDL && Features.SHADER_EDL.isSupported()) {\r\n\t\t\t\tif (!this.edlRenderer) {\r\n\t\t\t\t\tthis.edlRenderer = new EDLRenderer(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.edlRenderer;\r\n\t\t\t} else {\r\n\t\t\t\tif (!this.potreeRenderer) {\r\n\t\t\t\t\tthis.potreeRenderer = new PotreeRenderer(this);\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn this.potreeRenderer;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\trenderVR(){\r\n\r\n\t\tlet renderer = this.renderer;\r\n\r\n\t\trenderer.setClearColor(0x550000, 0);\r\n\t\trenderer.clear();\r\n\r\n\t\tlet xr = renderer.xr;\r\n\t\tlet dbg = new THREE.PerspectiveCamera();\r\n\t\tlet xrCameras = xr.getCamera(dbg);\r\n\r\n\t\tif(xrCameras.cameras.length !== 2){\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet makeCam = this.vrControls.getCamera.bind(this.vrControls);\r\n\r\n\t\t{ // clear framebuffer\r\n\t\t\tif(viewer.background === \"skybox\"){\r\n\t\t\t\trenderer.setClearColor(0xff0000, 1);\r\n\t\t\t}else if(viewer.background === \"gradient\"){\r\n\t\t\t\trenderer.setClearColor(0x112233, 1);\r\n\t\t\t}else if(viewer.background === \"black\"){\r\n\t\t\t\trenderer.setClearColor(0x000000, 1);\r\n\t\t\t}else if(viewer.background === \"white\"){\r\n\t\t\t\trenderer.setClearColor(0xFFFFFF, 1);\r\n\t\t\t}else{\r\n\t\t\t\trenderer.setClearColor(0x000000, 0);\r\n\t\t\t}\r\n\r\n\t\t\trenderer.clear();\r\n\t\t}\r\n\r\n\t\t// render background\r\n\t\tif(this.background === \"skybox\"){\r\n\t\t\tlet {skybox} = this;\r\n\r\n\t\t\tlet cam = makeCam();\r\n\t\t\tskybox.camera.rotation.copy(cam.rotation);\r\n\t\t\tskybox.camera.fov = cam.fov;\r\n\t\t\tskybox.camera.aspect = cam.aspect;\r\n\t\t\t\r\n\t\t\t// let dbg = new THREE.Object3D();\r\n\t\t\tlet dbg = skybox.parent;\r\n\t\t\t// dbg.up.set(0, 0, 1);\r\n\t\t\tdbg.rotation.x = Math.PI / 2;\r\n\r\n\t\t\t// skybox.camera.parent = dbg;\r\n\t\t\t// dbg.children.push(skybox.camera);\r\n\r\n\t\t\tdbg.updateMatrix();\r\n\t\t\tdbg.updateMatrixWorld();\r\n\r\n\t\t\tskybox.camera.updateMatrix();\r\n\t\t\tskybox.camera.updateMatrixWorld();\r\n\t\t\tskybox.camera.updateProjectionMatrix();\r\n\r\n\t\t\trenderer.render(skybox.scene, skybox.camera);\r\n\t\t\t// renderer.render(skybox.scene, cam);\r\n\t\t}else if(this.background === \"gradient\"){\r\n\t\t\t// renderer.render(this.scene.sceneBG, this.scene.cameraBG);\r\n\t\t}\r\n\r\n\t\tthis.renderer.xr.getSession().updateRenderState({\r\n\t\t\tdepthNear: 0.1,\r\n\t\t\tdepthFar: 10000\r\n\t\t});\r\n\t\t\r\n\t\tlet cam = null;\r\n\t\tlet view = null;\r\n\r\n\t\t{ // render world scene\r\n\t\t\tcam = makeCam();\r\n\t\t\tcam.position.z -= 0.8 * cam.scale.x;\r\n\t\t\tcam.parent = null;\r\n\t\t\t// cam.near = 0.05;\r\n\t\t\tcam.near = viewer.scene.getActiveCamera().near;\r\n\t\t\tcam.far = viewer.scene.getActiveCamera().far;\r\n\t\t\tcam.updateMatrix();\r\n\t\t\tcam.updateMatrixWorld();\r\n\r\n\t\t\tthis.scene.scene.updateMatrix();\r\n\t\t\tthis.scene.scene.updateMatrixWorld();\r\n\t\t\tthis.scene.scene.matrixAutoUpdate = false;\r\n\r\n\t\t\tlet camWorld = cam.matrixWorld.clone();\r\n\t\t\tview = camWorld.clone().invert();\r\n\t\t\tthis.scene.scene.matrix.copy(view);\r\n\t\t\tthis.scene.scene.matrixWorld.copy(view);\r\n\r\n\t\t\tcam.matrix.identity();\r\n\t\t\tcam.matrixWorld.identity();\r\n\t\t\tcam.matrixWorldInverse.identity();\r\n\r\n\t\t\trenderer.render(this.scene.scene, cam);\r\n\r\n\t\t\tthis.scene.scene.matrixWorld.identity();\r\n\r\n\t\t}\r\n\t\t\r\n\t\tfor(let pointcloud of this.scene.pointclouds){\r\n\r\n\t\t\tlet viewport = xrCameras.cameras[0].viewport;\r\n\r\n\t\t\tpointcloud.material.useEDL = false;\r\n\t\t\tpointcloud.screenHeight = viewport.height;\r\n\t\t\tpointcloud.screenWidth = viewport.width;\r\n\r\n\t\t\t// automatically switch to paraboloids because they cause far less flickering in VR, \r\n\t\t\t// when point sizes are larger than around 2 pixels\r\n\t\t\t// if(Features.SHADER_INTERPOLATION.isSupported()){\r\n\t\t\t// \tpointcloud.material.shape = Potree.PointShape.PARABOLOID;\r\n\t\t\t// }\r\n\t\t}\r\n\t\t\r\n\t\t// render point clouds\r\n\t\tfor(let xrCamera of xrCameras.cameras){\r\n\r\n\t\t\tlet v = xrCamera.viewport;\r\n\t\t\trenderer.setViewport(v.x, v.y, v.width, v.height);\r\n\r\n\t\t\t// xrCamera.fov = 90;\r\n\r\n\t\t\t{ // estimate VR fov\r\n\t\t\t\tlet proj = xrCamera.projectionMatrix;\r\n\t\t\t\tlet inv = proj.clone().invert();\r\n\r\n\t\t\t\tlet p1 = new THREE.Vector4(0, 1, -1, 1).applyMatrix4(inv);\r\n\t\t\t\tlet rad = p1.y\r\n\t\t\t\tlet fov = 180 * (rad / Math.PI);\r\n\r\n\t\t\t\txrCamera.fov = fov;\r\n\t\t\t}\r\n\r\n\t\t\tfor(let pointcloud of this.scene.pointclouds){\r\n\t\t\t\tconst {material} = pointcloud;\r\n\t\t\t\tmaterial.useEDL = false;\r\n\t\t\t}\r\n\r\n\t\t\tlet vrWorld = view.clone().invert();\r\n\t\t\tvrWorld.multiply(xrCamera.matrixWorld);\r\n\t\t\tlet vrView = vrWorld.clone().invert();\r\n\r\n\t\t\tthis.pRenderer.render(this.scene.scenePointCloud, xrCamera, null, {\r\n\t\t\t\tviewOverride: vrView,\r\n\t\t\t});\r\n\r\n\t\t}\r\n\r\n\t\t{ // render VR scene\r\n\t\t\tlet cam = makeCam();\r\n\t\t\tcam.parent = null;\r\n\r\n\t\t\trenderer.render(this.sceneVR, cam);\r\n\t\t}\r\n\r\n\t\trenderer.resetState();\r\n\r\n\t}\r\n\r\n\trenderDefault(){\r\n\t\tlet pRenderer = this.getPRenderer();\r\n\r\n\t\t{ // resize\r\n\t\t\tconst width = this.scaleFactor * this.renderArea.clientWidth;\r\n\t\t\tconst height = this.scaleFactor * this.renderArea.clientHeight;\r\n\r\n\t\t\tthis.renderer.setSize(width, height);\r\n\t\t\tconst pixelRatio = this.renderer.getPixelRatio();\r\n\t\t\tconst aspect = width / height;\r\n\r\n\t\t\tconst scene = this.scene;\r\n\r\n\t\t\tscene.cameraP.aspect = aspect;\r\n\t\t\tscene.cameraP.updateProjectionMatrix();\r\n\r\n\t\t\tlet frustumScale = this.scene.view.radius;\r\n\t\t\tscene.cameraO.left = -frustumScale;\r\n\t\t\tscene.cameraO.right = frustumScale;\r\n\t\t\tscene.cameraO.top = frustumScale * 1 / aspect;\r\n\t\t\tscene.cameraO.bottom = -frustumScale * 1 / aspect;\r\n\t\t\tscene.cameraO.updateProjectionMatrix();\r\n\r\n\t\t\tscene.cameraScreenSpace.top = 1/aspect;\r\n\t\t\tscene.cameraScreenSpace.bottom = -1/aspect;\r\n\t\t\tscene.cameraScreenSpace.updateProjectionMatrix();\r\n\t\t}\r\n\r\n\t\tpRenderer.clear();\r\n\r\n\t\tpRenderer.render(this.renderer);\r\n\t\tthis.renderer.render(this.overlay, this.overlayCamera);\r\n\t}\r\n\t\r\n\trender(){\r\n\t\tif(Potree.measureTimings) performance.mark(\"render-start\");\r\n\r\n\t\ttry{\r\n\r\n\t\t\tconst vrActive = this.renderer.xr.isPresenting;\r\n\r\n\t\t\tif(vrActive){\r\n\t\t\t\tthis.renderVR();\r\n\t\t\t}else{\r\n\t\t\t\tthis.renderDefault();\r\n\t\t\t}\r\n\r\n\t\t}catch(e){\r\n\t\t\tthis.onCrash(e);\r\n\t\t}\r\n\t\t\r\n\t\tif(Potree.measureTimings){\r\n\t\t\tperformance.mark(\"render-end\");\r\n\t\t\tperformance.measure(\"render\", \"render-start\", \"render-end\");\r\n\t\t}\r\n\t}\r\n\r\n\tresolveTimings(timestamp){\r\n\t\tif(Potree.measureTimings){\r\n\t\t\tif(!this.toggle){\r\n\t\t\t\tthis.toggle = timestamp;\r\n\t\t\t}\r\n\t\t\tlet duration = timestamp - this.toggle;\r\n\t\t\tif(duration > 1000.0){\r\n\t\t\t\r\n\t\t\t\tlet measures = performance.getEntriesByType(\"measure\");\r\n\t\t\t\t\r\n\t\t\t\tlet names = new Set();\r\n\t\t\t\tfor(let measure of measures){\r\n\t\t\t\t\tnames.add(measure.name);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tlet groups = new Map();\r\n\t\t\t\tfor(let name of names){\r\n\t\t\t\t\tgroups.set(name, {\r\n\t\t\t\t\t\tmeasures: [],\r\n\t\t\t\t\t\tsum: 0,\r\n\t\t\t\t\t\tn: 0,\r\n\t\t\t\t\t\tmin: Infinity,\r\n\t\t\t\t\t\tmax: -Infinity\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tfor(let measure of measures){\r\n\t\t\t\t\tlet group = groups.get(measure.name);\r\n\t\t\t\t\tgroup.measures.push(measure);\r\n\t\t\t\t\tgroup.sum += measure.duration;\r\n\t\t\t\t\tgroup.n++;\r\n\t\t\t\t\tgroup.min = Math.min(group.min, measure.duration);\r\n\t\t\t\t\tgroup.max = Math.max(group.max, measure.duration);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet glQueries = Potree.resolveQueries(this.renderer.getContext());\r\n\t\t\t\tfor(let [key, value] of glQueries){\r\n\r\n\t\t\t\t\tlet group = {\r\n\t\t\t\t\t\tmeasures: value.map(v => {return {duration: v}}),\r\n\t\t\t\t\t\tsum: value.reduce( (a, i) => a + i, 0),\r\n\t\t\t\t\t\tn: value.length,\r\n\t\t\t\t\t\tmin: Math.min(...value),\r\n\t\t\t\t\t\tmax: Math.max(...value)\r\n\t\t\t\t\t};\r\n\r\n\t\t\t\t\tlet groupname = `[tq] ${key}`;\r\n\t\t\t\t\tgroups.set(groupname, group);\r\n\t\t\t\t\tnames.add(groupname);\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tfor(let [name, group] of groups){\r\n\t\t\t\t\tgroup.mean = group.sum / group.n;\r\n\t\t\t\t\tgroup.measures.sort( (a, b) => a.duration - b.duration );\r\n\t\t\t\t\t\r\n\t\t\t\t\tif(group.n === 1){\r\n\t\t\t\t\t\tgroup.median = group.measures[0].duration;\r\n\t\t\t\t\t}else if(group.n > 1){\r\n\t\t\t\t\t\tgroup.median = group.measures[parseInt(group.n / 2)].duration;\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tlet cn = Array.from(names).reduce( (a, i) => Math.max(a, i.length), 0) + 5;\r\n\t\t\t\tlet cmin = 10;\r\n\t\t\t\tlet cmed = 10;\r\n\t\t\t\tlet cmax = 10;\r\n\t\t\t\tlet csam = 6;\r\n\t\t\t\t\r\n\t\t\t\tlet message = ` ${\"NAME\".padEnd(cn)} |` \r\n\t\t\t\t\t+ ` ${\"MIN\".padStart(cmin)} |`\r\n\t\t\t\t\t+ ` ${\"MEDIAN\".padStart(cmed)} |`\r\n\t\t\t\t\t+ ` ${\"MAX\".padStart(cmax)} |`\r\n\t\t\t\t\t+ ` ${\"SAMPLES\".padStart(csam)} \\n`;\r\n\t\t\t\tmessage += ` ${\"-\".repeat(message.length) }\\n`;\r\n\t\t\t\t\r\n\t\t\t\tnames = Array.from(names).sort();\r\n\t\t\t\tfor(let name of names){\r\n\t\t\t\t\tlet group = groups.get(name);\r\n\t\t\t\t\tlet min = group.min.toFixed(3);\r\n\t\t\t\t\tlet median = group.median.toFixed(3);\r\n\t\t\t\t\tlet max = group.max.toFixed(3);\r\n\t\t\t\t\tlet n = group.n;\r\n\t\t\t\t\t\r\n\t\t\t\t\tmessage += ` ${name.padEnd(cn)} |`\r\n\t\t\t\t\t\t+ ` ${min.padStart(cmin)} |`\r\n\t\t\t\t\t\t+ ` ${median.padStart(cmed)} |`\r\n\t\t\t\t\t\t+ ` ${max.padStart(cmax)} |`\r\n\t\t\t\t\t\t+ ` ${n.toString().padStart(csam)}\\n`;\r\n\t\t\t\t}\r\n\t\t\t\tmessage += `\\n`;\r\n\t\t\t\tconsole.log(message);\r\n\t\t\t\t\r\n\t\t\t\tperformance.clearMarks();\r\n\t\t\t\tperformance.clearMeasures();\r\n\t\t\t\tthis.toggle = timestamp;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tloop(timestamp){\r\n\r\n\t\tif(this.stats){\r\n\t\t\tthis.stats.begin();\r\n\t\t}\r\n\r\n\t\tif(Potree.measureTimings){\r\n\t\t\tperformance.mark(\"loop-start\");\r\n\t\t}\r\n\r\n\t\tthis.update(this.clock.getDelta(), timestamp);\r\n\t\tthis.render();\r\n\r\n\t\t// let vrActive = viewer.renderer.xr.isPresenting;\r\n\t\t// if(vrActive){\r\n\t\t// \tthis.update(this.clock.getDelta(), timestamp);\r\n\t\t// \tthis.render();\r\n\t\t// }else{\r\n\r\n\t\t// \tthis.update(this.clock.getDelta(), timestamp);\r\n\t\t// \tthis.render();\r\n\t\t// }\r\n\r\n\r\n\t\tif(Potree.measureTimings){\r\n\t\t\tperformance.mark(\"loop-end\");\r\n\t\t\tperformance.measure(\"loop\", \"loop-start\", \"loop-end\");\r\n\t\t}\r\n\t\t\r\n\t\tthis.resolveTimings(timestamp);\r\n\r\n\t\tPotree.framenumber++;\r\n\r\n\t\tif(this.stats){\r\n\t\t\tthis.stats.end();\r\n\t\t}\r\n\t}\r\n\r\n\tpostError(content, params = {}){\r\n\t\tlet message = this.postMessage(content, params);\r\n\r\n\t\tmessage.element.addClass(\"potree_message_error\");\r\n\r\n\t\treturn message;\r\n\t}\r\n\r\n\tpostMessage(content, params = {}){\r\n\t\tlet message = new Message(content);\r\n\r\n\t\tlet animationDuration = 100;\r\n\r\n\t\tmessage.element.css(\"display\", \"none\");\r\n\t\tmessage.elClose.click( () => {\r\n\t\t\tmessage.element.slideToggle(animationDuration);\r\n\r\n\t\t\tlet index = this.messages.indexOf(message);\r\n\t\t\tif(index >= 0){\r\n\t\t\t\tthis.messages.splice(index, 1);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.elMessages.prepend(message.element);\r\n\r\n\t\tmessage.element.slideToggle(animationDuration);\r\n\r\n\t\tthis.messages.push(message);\r\n\r\n\t\tif(params.duration !== undefined){\r\n\t\t\tlet fadeDuration = 500;\r\n\t\t\tlet slideOutDuration = 200;\r\n\t\t\tsetTimeout(() => {\r\n\t\t\t\tmessage.element.animate({\r\n\t\t\t\t\topacity: 0\t\r\n\t\t\t\t}, fadeDuration);\r\n\t\t\t\tmessage.element.slideToggle(slideOutDuration);\r\n\t\t\t}, params.duration)\r\n\t\t}\r\n\r\n\t\treturn message;\r\n\t}\r\n};\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nTHREE.OrthographicCamera.prototype.zoomTo = function( node, factor = 1){\r\n\r\n\tif ( !node.geometry && !node.boundingBox) {\r\n\t\treturn;\r\n\t}\r\n\r\n\t// TODO\r\n\r\n\t//let minWS = new THREE.Vector4(node.boundingBox.min.x, node.boundingBox.min.y, node.boundingBox.min.z, 1);\r\n\t//let minVS = minWS.applyMatrix4(this.matrixWorldInverse);\r\n\r\n\t//let right = node.boundingBox.max.x;\r\n\t//let bottom\t= node.boundingBox.min.y;\r\n\t//let top = node.boundingBox.max.y;\r\n\r\n\tthis.updateProjectionMatrix();\t\r\n};","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nTHREE.PerspectiveCamera.prototype.zoomTo = function (node, factor) {\r\n\tif (!node.geometry && !node.boundingSphere && !node.boundingBox) {\r\n\t\treturn;\r\n\t}\r\n\r\n\tif (node.geometry && node.geometry.boundingSphere === null) {\r\n\t\tnode.geometry.computeBoundingSphere();\r\n\t}\r\n\r\n\tnode.updateMatrixWorld();\r\n\r\n\tlet bs;\r\n\r\n\tif (node.boundingSphere) {\r\n\t\tbs = node.boundingSphere;\r\n\t} else if (node.geometry && node.geometry.boundingSphere) {\r\n\t\tbs = node.geometry.boundingSphere;\r\n\t} else {\r\n\t\tbs = node.boundingBox.getBoundingSphere(new THREE.Sphere());\r\n\t}\r\n\r\n\tlet _factor = factor || 1;\r\n\r\n\tbs = bs.clone().applyMatrix4(node.matrixWorld);\r\n\tlet radius = bs.radius;\r\n\tlet fovr = this.fov * Math.PI / 180;\r\n\r\n\tif (this.aspect < 1) {\r\n\t\tfovr = fovr * this.aspect;\r\n\t}\r\n\r\n\tlet distanceFactor = Math.abs(radius / Math.sin(fovr / 2)) * _factor;\r\n\r\n\tlet offset = this.getWorldDirection(new THREE.Vector3()).multiplyScalar(-distanceFactor);\r\n\tthis.position.copy(bs.center.clone().add(offset));\r\n};\r\n","\r\nimport * as THREE from \"../../libs/three.js/build/three.module.js\";\r\n\r\nTHREE.Ray.prototype.distanceToPlaneWithNegative = function (plane) {\r\n\tlet denominator = plane.normal.dot(this.direction);\r\n\tif (denominator === 0) {\r\n\t\t// line is coplanar, return origin\r\n\t\tif (plane.distanceToPoint(this.origin) === 0) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\r\n\t\t// Null is preferable to undefined since undefined means.... it is undefined\r\n\t\treturn null;\r\n\t}\r\n\tlet t = -(this.origin.dot(plane.normal) + plane.constant) / denominator;\r\n\r\n\treturn t;\r\n};\r\n","\r\nexport * from \"./Actions.js\";\r\nexport * from \"./AnimationPath.js\";\r\nexport * from \"./Annotation.js\";\r\nexport * from \"./defines.js\";\r\nexport * from \"./Enum.js\";\r\nexport * from \"./EventDispatcher.js\";\r\nexport * from \"./Features.js\";\r\nexport * from \"./KeyCodes.js\";\r\nexport * from \"./LRU.js\";\r\nexport * from \"./PointCloudEptGeometry.js\";\r\nexport * from \"./PointCloudOctree.js\";\r\nexport * from \"./PointCloudOctreeGeometry.js\";\r\nexport * from \"./PointCloudTree.js\";\r\nexport * from \"./Points.js\";\r\nexport * from \"./Potree_update_visibility.js\";\r\nexport * from \"./PotreeRenderer.js\";\r\nexport * from \"./ProfileRequest.js\";\r\nexport * from \"./TextSprite.js\";\r\nexport * from \"./utils.js\";\r\nexport * from \"./Version.js\";\r\nexport * from \"./WorkerPool.js\";\r\nexport * from \"./XHRFactory.js\";\r\nexport * from \"./viewer/SaveProject.js\";\r\nexport * from \"./viewer/LoadProject.js\";\r\n\r\nexport * from \"./materials/ClassificationScheme.js\";\r\nexport * from \"./materials/EyeDomeLightingMaterial.js\";\r\nexport * from \"./materials/Gradients.js\";\r\nexport * from \"./materials/NormalizationEDLMaterial.js\";\r\nexport * from \"./materials/NormalizationMaterial.js\";\r\nexport * from \"./materials/PointCloudMaterial.js\";\r\n\r\nexport * from \"./loader/POCLoader.js\";\r\nexport * from \"./modules/loader/2.0/OctreeLoader.js\";\r\nexport * from \"./loader/EptLoader.js\";\r\nexport * from \"./loader/ept/BinaryLoader.js\";\r\nexport * from \"./loader/ept/LaszipLoader.js\";\r\nexport * from \"./loader/ept/ZstandardLoader.js\";\r\nexport * from \"./loader/PointAttributes.js\";\r\nexport * from \"./loader/ShapefileLoader.js\";\r\nexport * from \"./loader/GeoPackageLoader.js\";\r\n\r\nexport * from \"./utils/Box3Helper.js\";\r\nexport * from \"./utils/ClippingTool.js\";\r\nexport * from \"./utils/ClipVolume.js\";\r\nexport * from \"./utils/GeoTIFF.js\";\r\nexport * from \"./utils/Measure.js\";\r\nexport * from \"./utils/MeasuringTool.js\";\r\nexport * from \"./utils/Message.js\";\r\nexport * from \"./utils/PointCloudSM.js\";\r\nexport * from \"./utils/PolygonClipVolume.js\";\r\nexport * from \"./utils/Profile.js\";\r\nexport * from \"./utils/ProfileTool.js\";\r\nexport * from \"./utils/ScreenBoxSelectTool.js\";\r\nexport * from \"./utils/SpotLightHelper.js\";\r\nexport * from \"./utils/TransformationTool.js\";\r\nexport * from \"./utils/Volume.js\";\r\nexport * from \"./utils/VolumeTool.js\";\r\nexport * from \"./utils/Compass.js\";\r\n\r\nexport * from \"./viewer/viewer.js\";\r\nexport * from \"./viewer/Scene.js\";\r\nexport * from \"./viewer/HierarchicalSlider.js\";\r\n\r\nexport * from \"./modules/OrientedImages/OrientedImages.js\";\r\nexport * from \"./modules/Images360/Images360.js\";\r\nexport * from \"./modules/CameraAnimation/CameraAnimation.js\";\r\n\r\nexport * from \"./modules/loader/2.0/OctreeLoader.js\";\r\n\r\nexport {OrbitControls} from \"./navigation/OrbitControls.js\";\r\nexport {FirstPersonControls} from \"./navigation/FirstPersonControls.js\";\r\nexport {EarthControls} from \"./navigation/EarthControls.js\";\r\nexport {DeviceOrientationControls} from \"./navigation/DeviceOrientationControls.js\";\r\nexport {VRControls} from \"./navigation/VRControls.js\";\r\n\r\nimport \"./extensions/OrthographicCamera.js\";\r\nimport \"./extensions/PerspectiveCamera.js\";\r\nimport \"./extensions/Ray.js\";\r\n\r\nimport {LRU} from \"./LRU.js\";\r\nimport {OctreeLoader} from \"./modules/loader/2.0/OctreeLoader.js\";\r\nimport {POCLoader} from \"./loader/POCLoader.js\";\r\nimport {CopcLoader, EptLoader} from \"./loader/EptLoader.js\";\r\nimport {PointCloudOctree} from \"./PointCloudOctree.js\";\r\nimport {WorkerPool} from \"./WorkerPool.js\";\r\n\r\nexport const workerPool = new WorkerPool();\r\n\r\nexport const version = {\r\n\tmajor: 1,\r\n\tminor: 8,\r\n\tsuffix: '.0'\r\n};\r\n\r\nexport let lru = new LRU();\r\n\r\nconsole.log('Potree ' + version.major + '.' + version.minor + version.suffix);\r\n\r\nexport let pointBudget = 1 * 1000 * 1000;\r\nexport let framenumber = 0;\r\nexport let numNodesLoading = 0;\r\nexport let maxNodesLoading = 4;\r\n\r\nexport const debug = {};\r\n\r\nlet scriptPath = \"\";\r\n\r\nif (document.currentScript && document.currentScript.src) {\r\n\tscriptPath = new URL(document.currentScript.src + '/..').href;\r\n\tif (scriptPath.slice(-1) === '/') {\r\n\t\tscriptPath = scriptPath.slice(0, -1);\r\n\t}\r\n} else if(import.meta){\r\n\tscriptPath = new URL(import.meta.url + \"/..\").href;\r\n\tif (scriptPath.slice(-1) === '/') {\r\n\t\tscriptPath = scriptPath.slice(0, -1);\r\n\t}\r\n}else {\r\n\tconsole.error('Potree was unable to find its script path using document.currentScript. Is Potree included with a script tag? Does your browser support this function?');\r\n}\r\n\r\nlet resourcePath = scriptPath + '/resources';\r\n\r\n// scriptPath: build/potree\r\n// resourcePath:build/potree/resources\r\nexport {scriptPath, resourcePath};\r\n\r\n\r\nexport function loadPointCloud(path, name, callback){\r\n\tlet loaded = function(e){\r\n\t\te.pointcloud.name = name;\r\n\t\tcallback(e);\r\n\t};\r\n\r\n\tlet promise = new Promise( resolve => {\r\n\r\n\t\t// load pointcloud\r\n\t\tif (!path){\r\n\t\t\t// TODO: callback? comment? Hello? Bueller? Anyone?\r\n\t\t} else if (path.includes('ept.json')) {\r\n\t\t\tEptLoader.load(path, function(geometry) {\r\n\t\t\t\tif (!geometry) {\r\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\r\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (path.includes('.copc.laz')) {\r\n\t\t\tCopcLoader.load(path, function(geometry) {\r\n\t\t\t\tif (!geometry) {\r\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\r\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (path.indexOf('cloud.js') > 0) {\r\n\t\t\tPOCLoader.load(path, function (geometry) {\r\n\t\t\t\tif (!geometry) {\r\n\t\t\t\t\t//callback({type: 'loading_failed'});\r\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\r\n\t\t\t\t\t// loaded(pointcloud);\r\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (path.indexOf('metadata.json') > 0) {\r\n\t\t\tPotree.OctreeLoader.load(path).then(e => {\r\n\t\t\t\tlet geometry = e.geometry;\r\n\r\n\t\t\t\tif(!geometry){\r\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\r\n\t\t\t\t}else{\r\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\r\n\r\n\t\t\t\t\tlet aPosition = pointcloud.getAttribute(\"position\");\r\n\r\n\t\t\t\t\tlet material = pointcloud.material;\r\n\t\t\t\t\tmaterial.elevationRange = [\r\n\t\t\t\t\t\taPosition.range[0][2],\r\n\t\t\t\t\t\taPosition.range[1][2],\r\n\t\t\t\t\t];\r\n\r\n\t\t\t\t\t// loaded(pointcloud);\r\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tOctreeLoader.load(path, function (geometry) {\r\n\t\t\t\tif (!geometry) {\r\n\t\t\t\t\t//callback({type: 'loading_failed'});\r\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet pointcloud = new PointCloudOctree(geometry);\r\n\t\t\t\t\t// loaded(pointcloud);\r\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else if (path.indexOf('.vpc') > 0) {\r\n\t\t\tPointCloudArena4DGeometry.load(path, function (geometry) {\r\n\t\t\t\tif (!geometry) {\r\n\t\t\t\t\t//callback({type: 'loading_failed'});\r\n\t\t\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\r\n\t\t\t\t} else {\r\n\t\t\t\t\tlet pointcloud = new PointCloudArena4D(geometry);\r\n\t\t\t\t\t// loaded(pointcloud);\r\n\t\t\t\t\tresolve({type: 'pointcloud_loaded', pointcloud: pointcloud});\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t} else {\r\n\t\t\t//callback({'type': 'loading_failed'});\r\n\t\t\tconsole.error(new Error(`failed to load point cloud from URL: ${path}`));\r\n\t\t}\r\n\t});\r\n\r\n\tif(callback){\r\n\t\tpromise.then(pointcloud => {\r\n\t\t\tloaded(pointcloud);\r\n\t\t});\r\n\t}else{\r\n\t\treturn promise;\r\n\t}\r\n};\r\n\r\n\r\n// add selectgroup\r\n(function($){\r\n\t$.fn.extend({\r\n\t\tselectgroup: function(args = {}){\r\n\r\n\t\t\tlet elGroup = $(this);\r\n\t\t\tlet rootID = elGroup.prop(\"id\");\r\n\t\t\tlet groupID = `${rootID}`;\r\n\t\t\tlet groupTitle = (args.title !== undefined) ? args.title : \"\";\r\n\r\n\t\t\tlet elButtons = [];\r\n\t\t\telGroup.find(\"option\").each((index, value) => {\r\n\t\t\t\tlet buttonID = $(value).prop(\"id\");\r\n\t\t\t\tlet label = $(value).html();\r\n\t\t\t\tlet optionValue = $(value).prop(\"value\");\r\n\r\n\t\t\t\tlet elButton = $(`\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t`);\r\n\t\t\t\tlet elLabel = elButton.find(\"label\");\r\n\t\t\t\tlet elInput = elButton.find(\"input\");\r\n\r\n\t\t\t\telInput.change( () => {\r\n\t\t\t\t\telGroup.find(\"label\").removeClass(\"ui-state-active\");\r\n\t\t\t\t\telGroup.find(\"label\").addClass(\"ui-state-default\");\r\n\t\t\t\t\tif(elInput.is(\":checked\")){\r\n\t\t\t\t\t\telLabel.addClass(\"ui-state-active\");\r\n\t\t\t\t\t}else{\r\n\t\t\t\t\t\t//elLabel.addClass(\"ui-state-default\");\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\telButtons.push(elButton);\r\n\t\t\t});\r\n\r\n\t\t\tlet elFieldset = $(`\r\n\t\t\t\t
    \r\n\t\t\t\t\t${groupTitle}\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t
    \r\n\t\t\t`);\r\n\r\n\t\t\tlet elButtonContainer = elFieldset.find(\"span\");\r\n\t\t\tfor(let elButton of elButtons){\r\n\t\t\t\telButtonContainer.append(elButton);\r\n\t\t\t}\r\n\r\n\t\t\telButtonContainer.find(\"label\").each( (index, value) => {\r\n\t\t\t\t$(value).css(\"margin\", \"0px\");\r\n\t\t\t\t$(value).css(\"border-radius\", \"0px\");\r\n\t\t\t\t$(value).css(\"border\", \"1px solid black\");\r\n\t\t\t\t$(value).css(\"border-left\", \"none\");\r\n\t\t\t});\r\n\t\t\telButtonContainer.find(\"label:first\").each( (index, value) => {\r\n\t\t\t\t$(value).css(\"border-radius\", \"4px 0px 0px 4px\");\r\n\r\n\t\t\t});\r\n\t\t\telButtonContainer.find(\"label:last\").each( (index, value) => {\r\n\t\t\t\t$(value).css(\"border-radius\", \"0px 4px 4px 0px\");\r\n\t\t\t\t$(value).css(\"border-left\", \"none\");\r\n\t\t\t});\r\n\r\n\t\t\telGroup.empty();\r\n\t\t\telGroup.append(elFieldset);\r\n\r\n\r\n\r\n\t\t}\r\n\t});\r\n})(jQuery);\r\n"],"names":["UnsignedInt248Type","RGBA_S3TC_DXT1_Format","RGBA_S3TC_DXT5_Format","EventDispatcher","THREE.CatmullRomCurve3","THREE.Geometry","THREE.Vector3","THREE.Object3D","THREE.Texture","THREE.LinearFilter","THREE.SpriteMaterial","THREE.Sprite","THREE.BoxGeometry","Vector3","THREE.MeshBasicMaterial","THREE.Mesh","THREE.LineSegments","THREE.LineBasicMaterial","THREE.Sphere","THREE.SphereGeometry","THREE.Color","THREE.MeshLambertMaterial","THREE.VertexColors","THREE.Line","THREE.Vector2","THREE.MeshNormalMaterial","THREE.Matrix4","THREE.PlaneHelper","THREE.Box3","THREE.PerspectiveCamera","THREE.Scene","THREE.BackSide","THREE.TextureLoader","THREE.CubeGeometry","THREE.LinePieces","THREE.DataTexture","THREE.RGBFormat","THREE.Raycaster","THREE.Ray","THREE.OrthographicCamera","THREE.Vector4","THREE.RGBAFormat","THREE.NearestFilter","THREE.PlaneBufferGeometry","THREE.Camera","THREE.Math","MOUSE","PointCloudMaterial","THREE.RawShaderMaterial","THREE.NoBlending","THREE.LessEqualDepth","THREE.AdditiveBlending","THREE.AlwaysDepth","THREE.CanvasTexture","THREE.RepeatWrapping","THREE.Points","THREE.Line3","THREE.Box2","THREE.WebGLRenderTarget","Points","Box3Helper","THREE.BufferGeometry","THREE.BufferAttribute","THREE.Frustum","THREE.Plane","THREE.PointCloud","PointCloudArena4D","THREE.ClampToEdgeWrapping","THREE.MirroredRepeatWrapping","THREE.NearestMipMapNearestFilter","THREE.NearestMipMapLinearFilter","THREE.LinearMipMapNearestFilter","THREE.LinearMipMapLinearFilter","THREE.UnsignedByteType","THREE.UnsignedShort4444Type","THREE.UnsignedShort5551Type","THREE.UnsignedShort565Type","THREE.ByteType","THREE.ShortType","THREE.UnsignedShortType","THREE.IntType","THREE.UnsignedIntType","THREE.FloatType","THREE.HalfFloatType","THREE.AlphaFormat","THREE.LuminanceFormat","THREE.LuminanceAlphaFormat","THREE.DepthFormat","THREE.DepthStencilFormat","THREE.AddEquation","THREE.SubtractEquation","THREE.ReverseSubtractEquation","THREE.ZeroFactor","THREE.OneFactor","THREE.SrcColorFactor","THREE.OneMinusSrcColorFactor","THREE.SrcAlphaFactor","THREE.OneMinusSrcAlphaFactor","THREE.DstAlphaFactor","THREE.OneMinusDstAlphaFactor","THREE.DstColorFactor","THREE.OneMinusDstColorFactor","THREE.SrcAlphaSaturateFactor","THREE.RGB_S3TC_DXT1_Format","THREE.RGBA_S3TC_DXT3_Format","THREE.RGBA_S3TC_DXT1_Format","THREE.RGBA_S3TC_DXT5_Format","THREE.RGB_PVRTC_4BPPV1_Format","THREE.RGB_PVRTC_2BPPV1_Format","THREE.RGBA_PVRTC_4BPPV1_Format","THREE.RGBA_PVRTC_2BPPV1_Format","THREE.RGB_ETC1_Format","THREE.MinEquation","THREE.MaxEquation","Geopackage","THREE.CylinderGeometry","THREE.MOUSE","THREE.PointLight","THREE.DepthTexture","SpotLightHelper","THREE.Quaternion","THREE.PlaneGeometry","THREE.TorusGeometry","Scene","THREE.DirectionalLight","THREE.AmbientLight","THREE.WebGLRenderer","THREE.ShaderMaterial","THREE.DoubleSide","sign","escape","JSON5","THREE.Euler","MotionControllerConstants","THREE.Clock","THREE.REVISION","scriptPath","loadPointCloud"],"mappings":"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,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;CACrE,EAAE,MAAM,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC;AACrE;CACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;CACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC1D,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CAC1D,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AAC3D;CACA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AK,MAAM,CAAC;CACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;CACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;AACnI;CACA,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,GAAG,GAAG,MAAM,CAAC;CACzB,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;CACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,MAAM,CAAC;CACnI,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,G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SAAS,EAAE,KAAK;CAClB,EAAE,UAAU,EAAE,KAAK;AACnB;CACA,EAAE,EAAE,CAAC;AACL;CACA,CAAC,OAAO,cAAc,CAAC;AACvB;CACA,CAAC;AACD;CACA,SAAS,sBAAsB,GAAG;AAClC;CACA,CAAC,iBAAiB,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH;CACA,CAAC;AACD;CACA,SAAS,aAAa,GAAG;AACzB;CACA,CAAC,iBAAiB,CAAC;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,CAAC;AACH;CACA,CAAC;AACD;CACA,SAAS,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,GAAG;AAC3D;CACA,CAAC,OAAO,CAAC,IAAI,EAAE,sEAAsE,EAAE,CAAC;CACxF,CAAC,OAAO,IAAI,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,aAA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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;AACH;CACA,CAAC,cAAc;CACf,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,CAAC;CACH,CAAC,CAAC;AACF;CACA,IAAI,YAAY,GAAG,WAAW,UAAU,GAAG;AAC3C;CACA,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE;AAC5B;CACA,EAAE,IAAI,EAAE,cAAc;AACtB;CACA,EAAE,QAAQ,EAAE,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE;AAC/D;CACA,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,YAAY;CAChD,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC,cAAc;AACpD;CACA,EAAE,QAAQ,EAAE,IAAI;AAChB;CACA,EAAE,EAAE,CAAC;AACL;CACA,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;AACrB;CACA,CAAC,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE;AAChC;CACA,EAAE,KA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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,kBAAkB,CAAC,GAAG,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;CACA,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,sBAAsB,CAAC,GAAG,CAAC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;AACF;CACA,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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7C,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;CACnC,GAAG;CACH;CACA,EAAE;AACF;CACA;CACA;CACA;CACA;CACA;CACA,CAAC,mBAAmB,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC;CAC5C,EAAE,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;CAC1C,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM;CAC/B,GAAG,MAAM,CAAC,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;CAC9C,GAAG,CAAC,CAAC;CACL,EAAE;AACF;CACA,CAAC,aAAa,CAAC,UAAU,CAAC;AAC1B;CACA,EAAE,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;AACrC;CACA,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;A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"}